/* ==========================================================
   The Morning Hog Wallow - TradingView Dark Theme
   ========================================================== */

:root {
    --bg-primary: #131722;
    --bg-secondary: #1e222d;
    --bg-tertiary: #1a1a2e;
    --bg-hover: #2a2a3e;
    --grid-color: #363c4e;
    --text-primary: #d1d4dc;
    --text-secondary: #787b86;
    --color-up: #26a69a;
    --color-down: #ef5350;
    --border-color: #363c4e;
    --accent: #2962ff;
}

/* Reset */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body.tv-dark {
    background-color: var(--bg-primary);
    color: var(--text-primary);
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    font-size: 14px;
    line-height: 1.5;
}

/* ==========================================================
   LOGIN PAGE
   ========================================================== */

.login-container {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 1rem;
}

.login-card {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 2.5rem;
    width: 100%;
    max-width: 400px;
}

.login-title {
    color: var(--text-primary);
    font-size: 1.5rem;
    font-weight: bold;
    text-align: center;
    margin-bottom: 0.25rem;
}

.login-subtitle {
    color: var(--text-secondary);
    font-size: 0.85rem;
    text-align: center;
    margin-bottom: 1.5rem;
}

.login-error {
    background-color: rgba(239, 83, 80, 0.15);
    border: 1px solid var(--color-down);
    border-radius: 4px;
    color: var(--color-down);
    font-size: 0.85rem;
    padding: 0.75rem;
    margin-bottom: 1rem;
}

.login-form {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.login-form-title {
    color: var(--text-primary);
    font-size: 1.1rem;
    text-align: center;
    margin-bottom: 0.25rem;
}

.login-input {
    width: 100%;
    padding: 0.6rem 0.75rem;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.95rem;
    outline: none;
    transition: border-color 0.2s;
    box-sizing: border-box;
}

.login-input:focus {
    border-color: var(--accent);
}

.login-password-wrap {
    position: relative;
    width: 100%;
}
.login-password-wrap .login-input {
    padding-right: 2.5rem;
}
.login-eye {
    position: absolute;
    right: 0.6rem;
    top: 50%;
    transform: translateY(-50%);
    cursor: pointer;
    color: var(--text-secondary);
    opacity: 0.5;
    transition: opacity 0.15s;
    line-height: 0;
}
.login-eye:hover {
    opacity: 0.8;
}
.login-eye.active {
    opacity: 1;
    color: var(--accent);
}

.login-btn {
    width: 100%;
    padding: 0.7rem;
    background-color: var(--accent);
    border: none;
    border-radius: 4px;
    color: #fff;
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
    transition: opacity 0.2s;
}

.login-btn:hover {
    opacity: 0.85;
}

.login-toggle {
    text-align: center;
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin-top: 0.25rem;
}

.login-toggle a {
    color: var(--accent);
    text-decoration: none;
}

.login-toggle a:hover {
    text-decoration: underline;
}

.form-group {
    margin-bottom: 1rem;
}

.form-group label {
    display: block;
    color: var(--text-secondary);
    font-size: 0.85rem;
    margin-bottom: 0.25rem;
}

.form-group input {
    width: 100%;
    padding: 0.6rem 0.75rem;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.95rem;
    outline: none;
    transition: border-color 0.2s;
}

.form-group input:focus {
    border-color: var(--accent);
}

.btn-primary {
    width: 100%;
    padding: 0.7rem;
    background-color: var(--accent);
    border: none;
    border-radius: 4px;
    color: #fff;
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
    transition: opacity 0.2s;
    margin-top: 0.5rem;
}

.btn-primary:hover {
    opacity: 0.9;
}

.form-switch {
    text-align: center;
    color: var(--text-secondary);
    font-size: 0.85rem;
    margin-top: 1rem;
}

.form-switch a {
    color: var(--accent);
    text-decoration: none;
}

.form-switch a:hover {
    text-decoration: underline;
}

/* ==========================================================
   MAIN APP LAYOUT
   ========================================================== */

#app-container {
    display: flex;
    height: 100vh;
    overflow: hidden;
}

/* Sidebar */
#sidebar {
    width: 280px;
    min-width: 280px;
    background-color: var(--bg-secondary);
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    overflow-y: auto;
}

.sidebar-header {
    padding: 1rem 1rem 0.5rem;
    border-bottom: 1px solid var(--border-color);
}

.sidebar-header h1 {
    font-size: 1.1rem;
    color: var(--text-primary);
    margin-bottom: 0.15rem;
}

.sidebar-header .subtitle {
    font-size: 0.75rem;
    color: var(--text-secondary);
}

/* Products dropdown menu */
.products-menu {
    position: relative;
    margin-top: 0.5rem;
}

.products-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 0.45rem 0.6rem;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.15s;
}

.products-toggle:hover {
    border-color: var(--text-secondary);
}

.products-toggle.open {
    border-color: var(--accent);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.products-arrow {
    font-size: 0.7rem;
    color: var(--text-secondary);
    transition: transform 0.15s;
}

.products-toggle.open .products-arrow {
    transform: rotate(180deg);
}

.products-dropdown {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background-color: var(--bg-primary);
    border: 1px solid var(--accent);
    border-top: none;
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
    z-index: 200;
    max-height: 300px;
    overflow-y: auto;
}

.products-dropdown.open {
    display: block;
}

.products-item {
    display: block;
    padding: 0.5rem 0.75rem;
    color: var(--text-primary);
    text-decoration: none;
    font-size: 0.85rem;
    transition: background-color 0.1s;
    cursor: pointer;
}

.products-item:hover {
    background-color: var(--bg-hover);
}

.products-item.active {
    color: var(--color-up);
    background-color: rgba(38, 166, 154, 0.1);
    border-left: 3px solid var(--color-up);
    padding-left: calc(0.75rem - 3px);
}

.products-item.disabled {
    color: var(--text-secondary);
    cursor: default;
    opacity: 0.5;
}

.products-item.disabled:hover {
    background-color: transparent;
}

/* User profile avatar + dropdown */
.user-profile-area {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--border-color);
    position: relative;
}

.user-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background-color: var(--color-up);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    transition: opacity 0.15s;
}

.user-avatar:hover { opacity: 0.85; }

.avatar-initial {
    font-size: 0.85rem;
    font-weight: 700;
    color: #fff;
    line-height: 1;
}

.user-avatar-name {
    font-size: 0.8rem;
    color: var(--text-secondary);
    cursor: pointer;
}

.user-dropdown {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    width: 200px;
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5);
    z-index: 1000;
    overflow: hidden;
}

.user-dropdown-header {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.75rem;
}

.user-avatar-lg {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background-color: var(--color-up);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.user-avatar-lg span {
    font-size: 0.95rem;
    font-weight: 700;
    color: #fff;
}

.user-dropdown-name {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--text-primary);
}

.user-dropdown-divider {
    height: 1px;
    background: var(--border-color);
}

.user-dropdown-item {
    display: block;
    padding: 0.5rem 0.75rem;
    font-size: 0.8rem;
    color: var(--text-primary);
    text-decoration: none;
    transition: background-color 0.1s;
}

.user-dropdown-item:hover {
    background-color: var(--bg-hover);
}

.user-dropdown-logout {
    color: var(--color-down);
}

/* Profile questionnaire modal */
.profile-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
}

.profile-modal {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    width: 90%;
    max-width: 620px;
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.6);
}

.profile-modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--border-color);
}

.profile-modal-header h2 {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0;
}

.profile-modal-close {
    background: none;
    border: none;
    color: var(--text-secondary);
    font-size: 1.4rem;
    cursor: pointer;
    padding: 0 0.25rem;
    line-height: 1;
}

.profile-modal-close:hover { color: var(--text-primary); }

.profile-modal-body {
    padding: 1rem 1.25rem;
    overflow-y: auto;
    flex: 1;
}

.profile-question {
    margin-bottom: 1.25rem;
}

.profile-question label {
    display: block;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 0.5rem;
}

.profile-hint {
    font-weight: 400;
    color: var(--text-secondary);
    font-size: 0.7rem;
}

.profile-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.profile-pill {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--border-color);
    border-radius: 16px;
    padding: 0.3rem 0.7rem;
    font-size: 0.75rem;
    color: var(--text-secondary);
    cursor: pointer;
    transition: all 0.15s;
}

.profile-pill:hover {
    background: rgba(255, 255, 255, 0.1);
    color: var(--text-primary);
}

.profile-pill.selected {
    background: rgba(41, 98, 255, 0.25);
    border-color: rgba(41, 98, 255, 0.5);
    color: #fff;
}

.profile-textarea {
    width: 100%;
    background: var(--bg-secondary, #1e222d);
    border: 1px solid var(--border-color, #363a45);
    border-radius: 6px;
    color: #d1d4dc;
    padding: 0.6rem 0.75rem;
    font-size: 0.8rem;
    font-family: inherit;
    line-height: 1.5;
    resize: vertical;
}
.profile-textarea:focus {
    outline: none;
    border-color: rgba(41, 98, 255, 0.5);
}
.profile-textarea::placeholder {
    color: #636363;
}
.profile-select {
    width: 100%;
    padding: 0.5rem 0.75rem;
    background: var(--bg-secondary, #1e222d);
    color: #d1d4dc;
    border: 1px solid var(--border-color, #363a45);
    border-radius: 6px;
    font-size: 0.8rem;
    font-family: inherit;
}
.profile-select:focus {
    outline: none;
    border-color: rgba(41, 98, 255, 0.5);
}

.profile-modal-footer {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1.25rem;
    border-top: 1px solid var(--border-color);
}

.profile-save-msg {
    font-size: 0.75rem;
}

.profile-save-msg.success { color: var(--color-up); }
.profile-save-msg.error { color: var(--color-down); }

/* ===== Subscription Modal ===== */
.sub-loading {
    color: var(--text-secondary);
    font-size: 0.85rem;
    padding: 1rem 0;
}

.sub-detail {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.6rem 0;
    border-bottom: 1px solid var(--border-color);
}

.sub-detail:last-child { border-bottom: none; }

.sub-detail-label {
    font-size: 0.8rem;
    color: var(--text-secondary);
}

.sub-detail-value {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--text-primary);
}

.sub-cancelled-banner {
    background: rgba(239, 83, 80, 0.12);
    border: 1px solid rgba(239, 83, 80, 0.3);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    margin-top: 0.75rem;
    font-size: 0.8rem;
    color: var(--color-down);
    line-height: 1.5;
}

/* ===== Feedback Forms (Bug Report / Tool Request) ===== */
.feedback-form-group {
    margin-bottom: 1rem;
}

.feedback-label {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    margin-bottom: 0.4rem;
}

.feedback-input {
    width: 100%;
    padding: 0.5rem 0.6rem;
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.85rem;
    box-sizing: border-box;
}

.feedback-input:focus,
.feedback-textarea:focus {
    outline: none;
    border-color: rgba(41, 98, 255, 0.5);
}

.feedback-textarea {
    width: 100%;
    padding: 0.5rem 0.6rem;
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.85rem;
    resize: vertical;
    font-family: inherit;
    box-sizing: border-box;
}

/* ===== Button Danger Variant ===== */
.btn-danger {
    background: rgba(239, 83, 80, 0.15);
    border: 1px solid rgba(239, 83, 80, 0.4);
    color: var(--color-down);
    padding: 0.35rem 0.6rem;
    font-size: 0.8rem;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.15s;
}

.btn-danger:hover {
    background: rgba(239, 83, 80, 0.25);
}

/* ===== Login Preview Button & Modal ===== */
.login-preview-btn {
    display: block;
    margin: 1rem auto 0;
    background: none;
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    padding: 0.4rem 1rem;
    border-radius: 4px;
    font-size: 0.8rem;
    cursor: pointer;
    transition: color 0.15s, border-color 0.15s;
}
.login-preview-btn:hover {
    color: var(--text-primary);
    border-color: var(--text-secondary);
}

.preview-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
}
.preview-overlay.hidden { display: none; }

.preview-modal {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    width: 92%;
    max-width: 900px;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.6);
}

.preview-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.5rem;
    border-bottom: 1px solid var(--border-color);
}
.preview-header h2 {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0;
}
.preview-close {
    background: none;
    border: none;
    color: var(--text-secondary);
    font-size: 1.5rem;
    cursor: pointer;
    line-height: 1;
    padding: 0 0.25rem;
}
.preview-close:hover { color: var(--text-primary); }

.preview-body {
    overflow-y: auto;
    padding: 1rem 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.preview-card {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.75rem;
    background: var(--bg-primary);
}
.preview-card-img {
    flex-shrink: 0;
    width: 280px;
    border-radius: 4px;
    overflow: hidden;
    border: 1px solid var(--border-color);
}
.preview-card-img img {
    width: 100%;
    height: auto;
    display: block;
}
.preview-card-info {
    flex: 1;
    min-width: 0;
}
.preview-card-info h3 {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 0.35rem;
}
.preview-card-info p {
    font-size: 0.82rem;
    color: var(--text-secondary);
    line-height: 1.5;
    margin: 0;
}

/* ==========================================================
   ONBOARDING FLOW (first-time user Terms + Profile setup)
   ========================================================== */

#onboarding-overlay {
    position: fixed;
    inset: 0;
    background: var(--bg-primary);
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
}

.onboarding-step {
    display: none;
    width: 100%;
    height: 100%;
    align-items: center;
    justify-content: center;
}

.onboarding-step.active {
    display: flex;
}

.onboarding-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    width: 90%;
    max-width: 640px;
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.6);
}

.onboarding-header {
    padding: 1.5rem 1.5rem 1rem;
    border-bottom: 1px solid var(--border-color);
}

.onboarding-header h2 {
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 0.5rem 0;
}

.onboarding-subtitle {
    font-size: 0.8rem;
    color: var(--text-secondary);
    line-height: 1.5;
    margin: 0;
}

.onboarding-terms-body {
    padding: 1.25rem 1.5rem;
    overflow-y: auto;
    flex: 1;
    max-height: 50vh;
}

.terms-content {
    font-size: 0.8rem;
    color: var(--text-secondary);
    line-height: 1.7;
}

.terms-content h3 {
    color: var(--text-primary);
    font-size: 0.85rem;
    margin: 1.25rem 0 0.5rem;
}

.terms-content p {
    margin-bottom: 0.75rem;
}

.terms-final {
    margin-top: 1.5rem;
    color: var(--text-primary);
    font-size: 0.75rem;
}

.onboarding-profile-body {
    padding: 1rem 1.25rem;
    overflow-y: auto;
    flex: 1;
}

.onboarding-footer {
    padding: 1rem 1.5rem;
    border-top: 1px solid var(--border-color);
    text-align: center;
}

.onboarding-scroll-hint {
    font-size: 0.75rem;
    color: var(--text-secondary);
    margin-bottom: 0.75rem;
    transition: opacity 0.3s;
}

.onboarding-scroll-hint.hidden {
    opacity: 0;
}

.onboarding-btn {
    max-width: 300px;
    margin: 0 auto;
}

.onboarding-btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

/* ===== Onboarding Walkthrough (Step 3) ===== */
.walkthrough-card {
    max-width: 900px;
    max-height: 96vh;
    overflow: hidden;
}

.walkthrough-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

.walkthrough-skip {
    background: none;
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    padding: 0.35rem 0.75rem;
    border-radius: 4px;
    font-size: 0.75rem;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
}

.walkthrough-skip:hover {
    color: var(--text-primary);
    border-color: var(--text-secondary);
}

.walkthrough-body {
    padding: 1rem 1.5rem;
}

.walkthrough-slide {
    display: none;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.75rem;
    width: 100%;
}

.walkthrough-slide.active {
    display: flex;
}

.walkthrough-slide-icon {
    font-size: 3rem;
}

.walkthrough-slide-screenshot {
    width: 100%;
    border-radius: 6px;
    border: 1px solid var(--border-color);
    overflow: hidden;
}
.walkthrough-slide-screenshot img {
    width: 100%;
    max-height: 48vh;
    object-fit: contain;
    display: block;
}

.walkthrough-slide-title {
    font-size: 1.3rem;
    font-weight: 600;
    color: var(--text-primary);
}

.walkthrough-slide-desc {
    font-size: 0.95rem;
    color: var(--text-secondary);
    line-height: 1.6;
    width: 100%;
}

.walkthrough-slide-tip {
    font-size: 0.9rem;
    color: var(--accent-color);
    background: rgba(41, 98, 255, 0.08);
    padding: 0.5rem 0.75rem;
    border-radius: 6px;
    margin-top: 0.25rem;
}

/* Navigation tutorial slide */
.walkthrough-nav-content {
    text-align: left;
    width: 100%;
}

.walkthrough-nav-content h3 {
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 0.75rem;
    text-align: center;
}

.walkthrough-nav-content p {
    font-size: 0.95rem;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 0.5rem;
}

.walkthrough-nav-content strong {
    color: var(--text-primary);
}

.walkthrough-nav-mockup {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.5rem 0.75rem;
    margin: 0.75rem 0;
    font-size: 0.75rem;
    color: var(--text-secondary);
    font-family: monospace;
    text-align: center;
}

.walkthrough-nav-mockup .plus-btn {
    color: var(--accent-color);
    font-weight: bold;
}

/* Progress dots */
.walkthrough-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.walkthrough-dots {
    display: flex;
    gap: 6px;
}

.walkthrough-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--border-color);
    transition: background 0.2s;
}

.walkthrough-dot.active {
    background: var(--accent-color);
}

/* Favorites selection slide (onboarding walkthrough) */
.walkthrough-fav-intro {
    text-align: center;
    margin-bottom: 0.75rem;
}
.walkthrough-fav-intro h3 {
    font-size: 1rem;
    margin: 0 0 0.5rem;
    color: var(--text-primary);
}
.walkthrough-fav-intro p {
    font-size: 0.78rem;
    color: var(--text-secondary);
    line-height: 1.5;
    max-width: 400px;
    margin: 0 auto;
}
.walkthrough-fav-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.4rem;
    max-height: 200px;
    overflow-y: auto;
    padding: 0.25rem;
    width: 100%;
}
.walkthrough-fav-item {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.5rem;
    border: 1px solid var(--border-color);
    border-radius: 4px;
    font-size: 0.75rem;
    color: var(--text-primary);
}
.walkthrough-fav-icon {
    font-size: 0.9rem;
    flex-shrink: 0;
}
.walkthrough-fav-name {
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.walkthrough-fav-star {
    cursor: pointer;
    font-size: 0.85rem;
    opacity: 0.4;
    transition: opacity 0.15s;
    flex-shrink: 0;
}
.walkthrough-fav-star:hover {
    opacity: 0.8;
}
.walkthrough-fav-star.active {
    opacity: 1;
    color: #ffc107;
}

/* ===== Technical Analysis Advisor Panel ===== */
.advisor-panel {
    position: absolute;
    top: 0; right: 0; bottom: 0;
    width: 840px;
    background: #1e222d;
    border-left: 1px solid #363a45;
    z-index: 50;
    display: flex;
    flex-direction: column;
    animation: advisorSlideIn 0.2s ease-out;
}
.advisor-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #363a45;
    font-size: 0.9rem;
    font-weight: 600;
    color: #d1d4dc;
}
.advisor-close {
    background: none;
    border: none;
    color: #636363;
    font-size: 1.4rem;
    cursor: pointer;
    padding: 0 4px;
    line-height: 1;
}
.advisor-close:hover { color: #d1d4dc; }
.advisor-body {
    flex: 1;
    overflow-y: auto;
    padding: 1rem;
    font-size: 1.025rem;
    line-height: 1.7;
    color: #d1d4dc;
}
.advisor-body h2 {
    font-size: 1.19rem;
    font-weight: 600;
    color: #fff;
    margin: 1rem 0 0.4rem;
    padding-bottom: 4px;
    border-bottom: 1px solid #2a2e39;
}
.advisor-body h2:first-child { margin-top: 0; }
.advisor-body h3 {
    font-size: 1.1rem;
    font-weight: 600;
    color: #e0e0e0;
    margin: 0.8rem 0 0.3rem;
}
.advisor-body strong { color: #fff; }
.advisor-body em { color: #a0a4b0; }
.advisor-loading {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: #636363;
    font-size: 0.82rem;
    padding: 1rem;
}
.advisor-spinner {
    width: 16px; height: 16px;
    border: 2px solid #363a45;
    border-top-color: #2962ff;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}
#btn-pork-advisor.advisor-active {
    opacity: 1;
    background: rgba(41, 98, 255, 0.3);
    border-color: rgba(41, 98, 255, 0.6);
}
@keyframes advisorSlideIn {
    from { transform: translateX(100%); }
    to { transform: translateX(0); }
}
@keyframes spin {
    to { transform: rotate(360deg); }
}

/* Summary Panel Cards (shared across all summary slide-outs) */
.summary-section {
    margin-bottom: 1.25rem;
}
.summary-section h3 {
    font-size: 0.85rem;
    font-weight: 600;
    color: #8b8f9a;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin: 0 0 0.5rem;
}
.summary-metric-card {
    background: #262b36;
    border: 1px solid #363a45;
    border-radius: 6px;
    padding: 0.75rem 1rem;
    margin-bottom: 0.5rem;
}
.summary-metric-card .metric-label {
    font-size: 0.75rem;
    color: #8b8f9a;
    margin-bottom: 0.25rem;
}
.summary-metric-card .metric-value {
    font-size: 1.4rem;
    font-weight: 700;
    color: #d1d4dc;
}
.summary-metric-card .metric-change {
    font-size: 0.85rem;
    margin-top: 0.15rem;
}
.summary-metric-card .metric-change.positive { color: #26a69a; }
.summary-metric-card .metric-change.negative { color: #ef5350; }
.summary-metric-card .metric-change.neutral  { color: #8b8f9a; }
.summary-chip-grid {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-top: 0.5rem;
}
.summary-chip {
    background: #2a2e39;
    border: 1px solid #363a45;
    border-radius: 4px;
    padding: 0.3rem 0.6rem;
    font-size: 0.78rem;
    color: #d1d4dc;
}
.summary-chip .chip-val {
    color: #8b8f9a;
    font-size: 0.7rem;
    margin-left: 0.25rem;
}
.summary-metric-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
}
/* Grains sidebar commodity list */
.grains-commodity-item {
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    border-radius: 4px;
    font-size: 0.85rem;
    color: #d1d4dc;
    transition: background 0.15s;
}
.grains-commodity-item:hover { background: #2a2e39; }
.grains-commodity-item.active {
    background: #2962ff22;
    color: #5b9cf6;
    font-weight: 600;
}

/* Change Password form in sidebar */
#change-password-form {
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--border-color);
}

.change-pw-row {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 0.4rem;
}

.change-pw-row input {
    flex: 1;
    padding: 0.4rem 0.5rem;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.8rem;
    outline: none;
}

.change-pw-row input:focus {
    border-color: var(--accent);
}

.pw-message {
    font-size: 0.75rem;
    padding: 0.3rem 0.5rem;
    border-radius: 4px;
    margin-top: 0.25rem;
}

.pw-error {
    color: var(--color-down);
    background-color: rgba(239, 83, 80, 0.15);
}

.pw-success {
    color: var(--color-up);
    background-color: rgba(38, 166, 154, 0.15);
}

/* Login success message */
.login-success {
    background-color: rgba(38, 166, 154, 0.15);
    border: 1px solid var(--color-up);
    border-radius: 4px;
    color: var(--color-up);
    font-size: 0.85rem;
    padding: 0.75rem;
    margin-bottom: 1rem;
}

/* Google sign-in button */
.btn-google {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    width: 100%;
    padding: 0.7rem;
    background-color: #fff;
    border: 1px solid #dadce0;
    border-radius: 4px;
    color: #3c4043;
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none;
    transition: background-color 0.2s, box-shadow 0.2s;
    margin-top: 0.5rem;
}

.btn-google:hover {
    background-color: #f7f8f8;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}

.google-icon {
    flex-shrink: 0;
}

.sidebar-section {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--border-color);
}

.sidebar-section h3 {
    font-size: 0.75rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.5rem;
}

/* Views section */
.views-row {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.views-row .btn-sm {
    flex: 1;
}

/* Save view modal */
.save-view-row {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.save-view-row input {
    flex: 1;
    padding: 0.4rem 0.5rem;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.85rem;
    outline: none;
}

.save-view-row input:focus {
    border-color: var(--accent);
}

/* Dropdowns and selects */
select {
    width: 100%;
    padding: 0.5rem;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.85rem;
    cursor: pointer;
    outline: none;
}

select:focus {
    border-color: var(--accent);
}

/* Buttons */
.btn-sm {
    padding: 0.35rem 0.6rem;
    background-color: var(--bg-tertiary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.8rem;
    cursor: pointer;
    transition: background-color 0.15s;
}

.btn-sm:hover {
    background-color: var(--bg-hover);
}

.btn-sm.btn-danger {
    color: var(--color-down);
}

.btn-sm.btn-danger:hover {
    background-color: rgba(239, 83, 80, 0.15);
}

.btn-sm.btn-confirm {
    background-color: var(--accent);
    border-color: var(--accent);
    color: #fff;
}

/* Watchlist */
.watchlist-group {
    margin-bottom: 0.25rem;
}

.watchlist-group-header {
    display: flex;
    align-items: center;
    padding: 0.4rem 0;
    cursor: pointer;
    color: var(--text-secondary);
    font-size: 0.8rem;
    font-weight: 600;
    user-select: none;
}

.watchlist-group-header:hover {
    color: var(--text-primary);
}

.watchlist-group-header .arrow {
    margin-right: 0.4rem;
    font-size: 0.65rem;
    transition: transform 0.15s;
}

.watchlist-group-header .arrow.open {
    transform: rotate(90deg);
}

.watchlist-group-items {
    display: none;
}

.watchlist-group-items.open {
    display: block;
}

.watchlist-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 0.5rem 0.5rem 1.2rem;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.15s;
}

.watchlist-item:hover {
    background-color: var(--bg-hover);
}

.watchlist-item.selected {
    background-color: var(--bg-hover);
    border-left: 3px solid var(--color-up);
    padding-left: calc(1.2rem - 3px);
}

.watchlist-item .cut-name {
    font-size: 0.8rem;
    color: var(--text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 140px;
}

.watchlist-item .cut-price {
    text-align: right;
    font-size: 0.75rem;
}

.watchlist-item .cut-price .price {
    color: var(--text-primary);
}

.watchlist-item .cut-price .change {
    font-size: 0.7rem;
}

.price-up { color: var(--color-up); }
.price-down { color: var(--color-down); }

/* ==========================================================
   MAIN CONTENT AREA
   ========================================================== */

#main-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* Tab Bar */
#tab-bar {
    display: flex;
    align-items: stretch;
    background-color: var(--bg-secondary);
    border-bottom: 1px solid var(--border-color);
    min-height: 38px;
    overflow-x: auto;
}

.tab {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0 1rem;
    background: transparent;
    color: var(--text-secondary);
    border: none;
    border-bottom: 2px solid transparent;
    font-size: 0.85rem;
    cursor: pointer;
    white-space: nowrap;
    transition: color 0.15s, border-color 0.15s;
}

.tab:hover {
    color: var(--text-primary);
}

.tab.active {
    color: var(--text-primary);
    border-bottom-color: var(--color-up);
}

.tab .close-tab {
    font-size: 0.7rem;
    opacity: 0.4;
    padding: 2px;
    border-radius: 2px;
}

.tab .close-tab:hover {
    opacity: 1;
    background-color: rgba(255, 255, 255, 0.1);
}

#add-tab {
    padding: 0 0.75rem;
    background: transparent;
    border: none;
    color: var(--text-secondary);
    font-size: 1.1rem;
    cursor: pointer;
    display: flex;
    align-items: center;
}

#add-tab:hover {
    color: var(--text-primary);
}

#tab-limit-msg {
    display: flex;
    align-items: center;
    padding: 0 0.75rem;
    font-size: 0.78rem;
    color: #ef5350;
    white-space: nowrap;
    animation: tab-limit-fade 3s ease-out forwards;
}

@keyframes tab-limit-fade {
    0%, 70% { opacity: 1; }
    100% { opacity: 0; }
}

/* Chart Controls */
#chart-controls,
#beef-controls,
#hedge-controls,
#cold-storage-controls,
#fertilizer-controls,
#live-production-controls,
#cot-controls,
#global-maps-controls,
#geo-controls,
#macro-controls,
#cutout-controls,
#beef-cutout-controls,
#otc-swap-controls,
#feedstuff-controls,
#farm-subsidies-controls,
#swine-health-controls,
#wasde-controls,
#freight-controls,
#grains-controls,
#rma-insurance-controls,
#drought-controls,
#snap-controls,
#food-service-controls,
#company-profile-controls,
#news-controls,
#feeder-cattle-controls,
#auctions-controls,
#lean-point-controls,
#ais-controls,
#workflow-controls {
    display: flex;
    gap: 0.6rem;
    padding: 0.35rem 0.75rem;
    background-color: var(--bg-secondary);
    border-bottom: 1px solid var(--border-color);
    align-items: flex-end;
    flex-wrap: wrap;
}

.control-group {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.control-group label {
    font-size: 0.6rem;
    color: var(--text-secondary);
    text-transform: uppercase;
}

.control-group select {
    width: auto;
    min-width: 80px;
    padding: 0.25rem 0.4rem;
    font-size: 0.78rem;
}

/* Multi-select dropdown for indicators */
.multiselect {
    position: relative;
    min-width: 200px;
}

.multiselect-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.25rem 0.4rem;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.78rem;
    cursor: pointer;
    min-height: 26px;
    gap: 0.5rem;
}

.multiselect-toggle:hover {
    border-color: var(--text-secondary);
}

.multiselect.open .multiselect-toggle {
    border-color: var(--accent);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.multiselect-label {
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.multiselect-label.placeholder {
    color: var(--text-secondary);
}

.multiselect-arrow {
    font-size: 0.7rem;
    color: var(--text-secondary);
    transition: transform 0.15s;
}

.multiselect.open .multiselect-arrow {
    transform: rotate(180deg);
}

.multiselect-dropdown {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background-color: var(--bg-primary);
    border: 1px solid var(--accent);
    border-top: none;
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
    z-index: 100;
    max-height: 250px;
    overflow-y: auto;
}

.multiselect.open .multiselect-dropdown {
    display: block;
}

.multiselect-option {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.6rem;
    cursor: pointer;
    font-size: 0.85rem;
    color: var(--text-primary);
    transition: background-color 0.1s;
}

.multiselect-option:hover {
    background-color: var(--bg-hover);
}

.multiselect-option input[type="checkbox"] {
    accent-color: var(--color-up);
    width: 14px;
    height: 14px;
    cursor: pointer;
    flex-shrink: 0;
}

.multiselect-option label {
    cursor: pointer;
    font-size: 0.85rem;
    text-transform: none;
    color: var(--text-primary);
}

/* Forecast toggle */
.forecast-toggle {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    padding-bottom: 0.15rem;
}

.forecast-toggle input[type="checkbox"] {
    accent-color: var(--color-up);
    width: 14px;
    height: 14px;
    cursor: pointer;
}

.forecast-toggle label {
    font-size: 0.75rem;
    color: var(--text-primary);
    cursor: pointer;
}

/* Chart Container */
#chart-area {
    flex: 1;
    position: relative;
    overflow: hidden;
}

#chart-container {
    width: 100%;
    height: 100%;
}

/* Full-page loading screen (shown during init, removed after) */
#app-loading {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #131722;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 9999;
}

/* Chart-area loading overlay (shown during tab switches) */
.loading-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(19, 23, 34, 0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
}

.loading-overlay.hidden {
    display: none;
}

.loading-spinner {
    width: 40px;
    height: 40px;
    border: 3px solid var(--border-color);
    border-top-color: var(--color-up);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* Error message */
.chart-error {
    text-align: center;
    color: var(--text-secondary);
    padding: 2rem;
}

/* ==========================================================
   SCROLLBAR STYLING
   ========================================================== */

::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background: var(--grid-color);
    border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
    background: var(--text-secondary);
}

/* ==========================================================
   TRADING SIMULATOR
   ========================================================== */

/* Trade form in sidebar */
.sim-form-group {
    margin-bottom: 0.6rem;
}

.sim-form-group label {
    display: block;
    font-size: 0.7rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    margin-bottom: 0.15rem;
}

.sim-form-group input,
.sim-form-group select {
    width: 100%;
    padding: 0.4rem 0.5rem;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.85rem;
    outline: none;
}

.sim-form-group input:focus,
.sim-form-group select:focus {
    border-color: var(--accent);
}

.sim-form-group input[readonly] {
    color: var(--text-secondary);
    cursor: default;
}

.sim-calculated {
    display: block;
    font-size: 0.85rem;
    color: var(--text-primary);
    padding: 0.35rem 0;
}

/* Portfolio summary in sidebar */
.sim-summary-row {
    display: flex;
    justify-content: space-between;
    padding: 0.25rem 0;
    font-size: 0.85rem;
}

.sim-summary-row span:first-child {
    color: var(--text-secondary);
}

.sim-summary-row.total-row {
    border-top: 1px solid var(--border-color);
    margin-top: 0.25rem;
    padding-top: 0.5rem;
    font-weight: 600;
}

#sim-disclaimer {
    padding: 0.4rem 1.25rem;
    background-color: #2a2316;
    border-bottom: 1px solid #5c4a1e;
    color: #d4a937;
    font-size: 0.78rem;
    text-align: center;
}

/* Main content toolbar */
#sim-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.75rem 1.25rem;
    background-color: var(--bg-secondary);
    border-bottom: 1px solid var(--border-color);
}

#sim-toolbar h2 {
    font-size: 1rem;
    color: var(--text-primary);
    font-weight: 600;
}

.sim-filters {
    display: flex;
    gap: 0.5rem;
}

.sim-filter-btn.active {
    background-color: var(--accent);
    border-color: var(--accent);
    color: #fff;
}

/* Trades table */
#sim-table-container {
    flex: 1;
    overflow: auto;
    padding: 0.5rem;
}

#sim-trades-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}

#sim-trades-table th {
    text-align: left;
    padding: 0.6rem 0.5rem;
    color: var(--text-secondary);
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
    position: sticky;
    top: 0;
    background-color: var(--bg-primary);
}

#sim-trades-table td {
    padding: 0.55rem 0.5rem;
    border-bottom: 1px solid rgba(54, 60, 78, 0.4);
    white-space: nowrap;
    color: var(--text-primary);
}

#sim-trades-table tr:hover td {
    background-color: var(--bg-hover);
}

/* Trade type badges */
.sim-badge {
    display: inline-block;
    padding: 0.15rem 0.4rem;
    border-radius: 3px;
    font-size: 0.75rem;
    font-weight: 600;
}

.sim-badge-spot {
    background-color: rgba(41, 98, 255, 0.2);
    color: var(--accent);
}

.sim-badge-fwd {
    background-color: rgba(156, 39, 176, 0.2);
    color: #ce93d8;
}

/* Direction labels */
.sim-dir-buy {
    color: var(--color-up);
    font-weight: 600;
}

.sim-dir-sell {
    color: var(--color-down);
    font-weight: 600;
}

/* Status badges */
.sim-status {
    display: inline-block;
    padding: 0.15rem 0.4rem;
    border-radius: 3px;
    font-size: 0.75rem;
    font-weight: 600;
}

.sim-status-open {
    background-color: rgba(41, 98, 255, 0.2);
    color: var(--accent);
}

.sim-status-closed {
    background-color: rgba(120, 123, 134, 0.2);
    color: var(--text-secondary);
}

.sim-status-ready {
    background-color: rgba(255, 193, 7, 0.2);
    color: #ffc107;
}

/* Action buttons in table */
.sim-actions {
    display: flex;
    gap: 0.3rem;
}

.sim-actions .btn-sm {
    padding: 0.2rem 0.4rem;
    font-size: 0.75rem;
}

.btn-close-trade {
    color: var(--color-up) !important;
}

.btn-settle-trade {
    color: #ffc107 !important;
}

/* ==========================================================
   LANDING PAGE (New Tab)
   ========================================================== */

#landing-page {
    flex: 1;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    background-color: var(--bg-primary);
    overflow-y: auto;
}

.landing-content {
    text-align: center;
    max-width: 900px;
    padding: 2rem;
    margin: auto 0;
}

.landing-title {
    font-size: 1.5rem;
    color: var(--text-primary);
    margin-bottom: 0.25rem;
}

.landing-subtitle {
    font-size: 0.9rem;
    color: var(--text-secondary);
    margin-bottom: 2rem;
}

/* Favorites section */
#landing-favorites {
    margin-bottom: 1.5rem;
    text-align: left;
}

.landing-favorites-title {
    font-size: 0.8rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.5rem;
    text-align: left;
}

.landing-favorites-cards {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.landing-fav-card {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    transition: border-color 0.2s, background-color 0.2s;
    font-size: 0.82rem;
    color: var(--text-primary);
}

.landing-fav-card:hover {
    border-color: var(--accent);
    background-color: var(--bg-hover);
}

.landing-fav-card .fav-icon {
    font-size: 1.1rem;
}

.landing-fav-card .fav-remove {
    font-size: 0.7rem;
    color: var(--text-secondary);
    cursor: pointer;
    margin-left: 0.25rem;
}

.landing-fav-card .fav-remove:hover {
    color: #ef5350;
}

#fav-limit-msg {
    display: flex;
    align-items: center;
    padding: 0.4rem 0.75rem;
    font-size: 0.78rem;
    color: #ef5350;
    white-space: nowrap;
    animation: tab-limit-fade 3s ease-out forwards;
}

.landing-cards {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
}

.landing-card {
    position: relative;
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1.5rem 1rem;
    text-align: center;
    transition: border-color 0.2s, background-color 0.2s;
}

.landing-card.enabled {
    cursor: pointer;
}

.landing-card.enabled:hover {
    border-color: var(--accent);
    background-color: var(--bg-hover);
}

.landing-card.disabled {
    opacity: 0.4;
    cursor: default;
}

.landing-card-icon {
    font-size: 2rem;
    margin-bottom: 0.5rem;
}

.landing-card-title {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 0.25rem;
}

.landing-card-desc {
    font-size: 0.75rem;
    color: var(--text-secondary);
}

.landing-card-star {
    position: absolute;
    top: 6px;
    right: 6px;
    font-size: 0.9rem;
    cursor: pointer;
    opacity: 0.3;
    transition: opacity 0.15s;
    line-height: 1;
}

.landing-card:hover .landing-card-star {
    opacity: 0.6;
}

.landing-card-star:hover {
    opacity: 1 !important;
}

.landing-card-star.active {
    opacity: 1;
    color: #ffc107;
}

/* Simulator sidebar container */
#sim-sidebar {
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    flex: 1;
}

/* ==========================================================
   ESTIMATED MEAT COST
   ========================================================== */

#composite-sidebar {
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    flex: 1;
}

#composite-controls {
    display: flex;
    gap: 1rem;
    padding: 0.5rem 1rem;
    background-color: var(--bg-secondary);
    border-bottom: 1px solid var(--border-color);
    align-items: flex-end;
    flex-wrap: wrap;
}

.composite-hint {
    font-size: 0.75rem;
    color: var(--text-secondary);
    margin-bottom: 0.5rem;
}

/* Primal group headers (collapsible) */
.composite-primal-group {
    margin-bottom: 0.25rem;
}

.composite-primal-header {
    display: flex;
    align-items: center;
    padding: 0.4rem 0;
    cursor: pointer;
    color: var(--text-secondary);
    font-size: 0.8rem;
    font-weight: 600;
    user-select: none;
}

.composite-primal-header:hover {
    color: var(--text-primary);
}

.composite-primal-header .arrow {
    margin-right: 0.4rem;
    font-size: 0.65rem;
    transition: transform 0.15s;
}

.composite-primal-header .arrow.open {
    transform: rotate(90deg);
}

/* Style items within each primal group */
.composite-primal-items {
    display: none;
    padding-left: 0.5rem;
}

.composite-primal-items.open {
    display: block;
}

.composite-style-option {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
    padding: 0.3rem 0.25rem;
    font-size: 0.75rem;
    color: var(--text-primary);
    cursor: pointer;
    border-radius: 3px;
    transition: background-color 0.1s;
}

.composite-style-option:hover {
    background-color: var(--bg-hover);
}

.composite-style-option input[type="checkbox"] {
    accent-color: var(--color-up);
    width: 14px;
    height: 14px;
    cursor: pointer;
    flex-shrink: 0;
    margin-top: 1px;
}

.composite-style-option span {
    line-height: 1.3;
}

/* ==========================================================
   COMPOSITE CARCASS DIAGRAM
   ========================================================== */

.carcass-region {
    cursor: pointer;
    transition: fill 0.2s ease, stroke-width 0.15s ease;
}

.carcass-region:hover {
    filter: brightness(1.3);
}

/* ==========================================================
   SIMULATOR TOOLBAR & LEADERBOARD MODAL
   ========================================================== */

.sim-toolbar-spacer {
    flex: 1;
}

.btn-leaderboard {
    background-color: rgba(255, 193, 7, 0.15) !important;
    color: #ffc107 !important;
    border-color: rgba(255, 193, 7, 0.3) !important;
}

.btn-leaderboard:hover {
    background-color: rgba(255, 193, 7, 0.25) !important;
}

/* Modal overlay */
.sim-modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
}

.sim-modal {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    width: 90%;
    max-width: 700px;
    max-height: 80vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
}

.sim-modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--border-color);
}

.sim-modal-header h3 {
    margin: 0;
    color: var(--text-primary);
    font-size: 1rem;
}

.sim-modal-close {
    background: none;
    border: none;
    color: var(--text-secondary);
    font-size: 1.4rem;
    cursor: pointer;
    padding: 0 0.25rem;
    line-height: 1;
}

.sim-modal-close:hover {
    color: var(--text-primary);
}

.sim-modal-body {
    padding: 1rem 1.25rem;
    overflow-y: auto;
}

/* Leaderboard table */
#leaderboard-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}

#leaderboard-table th {
    text-align: left;
    padding: 0.5rem 0.5rem;
    color: var(--text-secondary);
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
}

#leaderboard-table td {
    padding: 0.55rem 0.5rem;
    border-bottom: 1px solid rgba(54, 60, 78, 0.4);
    white-space: nowrap;
    color: var(--text-primary);
}

#leaderboard-table tr:hover td {
    background-color: var(--bg-hover);
}

.lb-rank {
    font-weight: 700;
    color: var(--text-secondary);
}

.lb-rank-1 { color: #ffd700; }
.lb-rank-2 { color: #c0c0c0; }
.lb-rank-3 { color: #cd7f32; }

/* Hedge Analysis Modal */
.hedge-section {
    padding: 0.75rem 0;
    border-bottom: 1px solid rgba(54, 60, 78, 0.4);
}
.hedge-section:last-child { border-bottom: none; }
.hedge-section h4 {
    margin: 0 0 0.6rem 0;
    color: var(--text-primary);
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.hedge-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.4rem 1.5rem;
}
.hedge-stat {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 0.2rem 0;
}
.hedge-stat-label {
    color: var(--text-secondary);
    font-size: 0.78rem;
}
.hedge-stat-value {
    color: var(--text-primary);
    font-size: 0.82rem;
    font-weight: 500;
    text-align: right;
}
.hedge-detail {
    color: var(--text-secondary);
    font-size: 0.72rem;
}
.hedge-contracts-table,
.hedge-pnl-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
    margin-top: 0.5rem;
}
.hedge-contracts-table th,
.hedge-pnl-table th {
    text-align: left;
    padding: 0.4rem 0.5rem;
    color: var(--text-secondary);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
}
.hedge-contracts-table td,
.hedge-pnl-table td {
    padding: 0.4rem 0.5rem;
    border-bottom: 1px solid rgba(54, 60, 78, 0.3);
    white-space: nowrap;
    color: var(--text-primary);
}
.hedge-pnl-total td {
    border-top: 2px solid var(--border-color);
    padding-top: 0.6rem;
}
.hedge-pnl-unhedged td {
    color: var(--text-secondary);
    font-style: italic;
}
.hedge-coverage {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
}
.hedge-coverage-chip {
    background: rgba(38, 166, 154, 0.15);
    color: #26a69a;
    padding: 0.2rem 0.5rem;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 500;
}
.hedge-coverage-total {
    color: var(--text-secondary);
    font-size: 0.75rem;
    margin-left: 0.5rem;
}
.btn-hedge-trade {
    background: rgba(38, 166, 154, 0.15);
    color: #26a69a;
    border: 1px solid rgba(38, 166, 154, 0.3);
    border-radius: 3px;
    cursor: pointer;
    font-size: 0.75rem;
    padding: 0.15rem 0.35rem;
}
.btn-hedge-trade:hover {
    background: rgba(38, 166, 154, 0.3);
}
.btn-hedge-wholehog {
    background: rgba(38, 166, 154, 0.15);
    color: #26a69a;
    border: 1px solid rgba(38, 166, 154, 0.3);
}
.btn-hedge-wholehog:hover {
    background: rgba(38, 166, 154, 0.3);
}

/* Forecast badge for MTM column (amber "F" indicator) */
.sim-badge-forecast {
    background-color: rgba(255, 193, 7, 0.2);
    color: #ffc107;
    font-size: 0.65rem;
    padding: 0.1rem 0.25rem;
    border-radius: 3px;
    margin-left: 0.25rem;
    vertical-align: super;
    cursor: help;
}

/* Lean Hog badge for LH MTM column (blue "LH" indicator) */
.sim-badge-lh {
    background-color: rgba(41, 98, 255, 0.2);
    color: #4da6ff;
    font-size: 0.65rem;
    padding: 0.1rem 0.25rem;
    border-radius: 3px;
    margin-left: 0.25rem;
    vertical-align: super;
    cursor: help;
}

/* ==========================================================
   RETAIL DASHBOARD
   ========================================================== */

#retail-sidebar {
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    flex: 1;
}

#retail-controls {
    display: flex;
    gap: 1rem;
    padding: 0.5rem 1rem;
    background-color: var(--bg-secondary);
    border-bottom: 1px solid var(--border-color);
    align-items: flex-end;
    flex-wrap: wrap;
}

/* Retail item list (reuses composite primal group styles) */
.retail-item-option {
    padding: 0.3rem 0.5rem;
    font-size: 0.75rem;
    color: var(--text-primary);
    cursor: pointer;
    border-radius: 3px;
    transition: background-color 0.1s;
}

.retail-item-option:hover {
    background-color: var(--bg-hover);
}

.retail-item-option.selected {
    background-color: rgba(41, 98, 255, 0.2);
    color: #fff;
}

/* Live production category list */
.lp-category-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.45rem 0.6rem;
    font-size: 0.8rem;
    color: var(--text-primary);
    cursor: pointer;
    border-radius: 4px;
    margin-bottom: 2px;
    transition: background-color 0.15s;
}

.lp-category-item:hover:not(.disabled) {
    background-color: var(--bg-hover);
}

.lp-category-item.selected {
    background-color: rgba(41, 98, 255, 0.2);
    color: #fff;
    font-weight: 600;
}

.lp-category-item.disabled {
    opacity: 0.4;
    cursor: default;
}

.lp-category-divider {
    border-top: 1px solid var(--border-color, #333);
    margin: 6px 0;
}

.lp-series-checkbox {
    margin: 0 4px 0 0;
    accent-color: #2962ff;
    cursor: pointer;
}

.lp-multi-select.checked {
    background-color: rgba(41, 98, 255, 0.15);
}

.lp-cat-icon {
    font-size: 0.9rem;
    flex-shrink: 0;
    width: 1.2rem;
    text-align: center;
}

.lp-cat-label {
    flex: 1;
}

.lp-cat-badge {
    font-size: 0.6rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-secondary);
    background: rgba(255, 255, 255, 0.06);
    padding: 1px 5px;
    border-radius: 3px;
    font-weight: 600;
}

/* Summary cards */
#retail-summary {
    padding: 0.75rem 1rem;
    background-color: var(--bg-primary);
    border-bottom: 1px solid var(--border-color);
}

.retail-summary-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.75rem;
}

.retail-summary-card {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    overflow: hidden;
}

.retail-summary-header {
    padding: 0.4rem 0.6rem;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.retail-summary-header.up {
    background-color: rgba(38, 166, 154, 0.15);
    color: var(--color-up);
    border-bottom: 2px solid var(--color-up);
}

.retail-summary-header.down {
    background-color: rgba(239, 83, 80, 0.15);
    color: var(--color-down);
    border-bottom: 2px solid var(--color-down);
}

.retail-summary-items {
    padding: 0.25rem 0;
}

.retail-summary-item {
    display: flex;
    align-items: center;
    padding: 0.25rem 0.6rem;
    font-size: 0.75rem;
    gap: 0.5rem;
}

.retail-summary-item.clickable {
    cursor: pointer;
}

.retail-summary-item.clickable:hover {
    background-color: var(--bg-hover);
}

.retail-summary-name {
    flex: 1;
    color: var(--text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.retail-summary-value {
    color: var(--text-secondary);
    font-size: 0.7rem;
    white-space: nowrap;
}

.retail-summary-change {
    font-weight: 600;
    font-size: 0.7rem;
    white-space: nowrap;
}

.retail-summary-change.up {
    color: var(--color-up);
}

.retail-summary-change.down {
    color: var(--color-down);
}

.retail-summary-empty {
    padding: 0.5rem 0.6rem;
    font-size: 0.75rem;
    color: var(--text-secondary);
    font-style: italic;
}

/* Crosswalk table */
.crosswalk-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
}

.crosswalk-table th {
    text-align: left;
    padding: 0.45rem 0.5rem;
    color: var(--text-secondary);
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
}

.crosswalk-table td {
    padding: 0.35rem 0.5rem;
    border-bottom: 1px solid rgba(54, 60, 78, 0.3);
    color: var(--text-primary);
}

.crosswalk-table tr:hover td {
    background-color: var(--bg-hover);
}

/* Responsive: stack summary cards on narrow screens */
@media (max-width: 1200px) {
    .retail-summary-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ==========================================================
   Cutout Breakdown Dashboard
   ========================================================== */

.cutout-dashboard {
    padding: 1rem;
    overflow-y: auto;
    height: 100%;
}

.cutout-section {
    margin-bottom: 1.5rem;
}

.cutout-section-title {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 0.75rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid var(--border-color);
}

.cutout-date-label {
    font-size: 0.75rem;
    font-weight: 400;
    color: var(--text-secondary);
    margin-left: 0.5rem;
}

/* Pie chart grid: 4 columns */
.cutout-pies-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.5rem;
}

.cutout-pie-cell {
    min-height: 200px;
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    overflow: hidden;
}

.cutout-pie-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: var(--text-secondary);
    font-size: 0.8rem;
    text-align: center;
}

/* Volatility table */
.cutout-vol-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
}

.cutout-vol-table th {
    background-color: var(--bg-secondary);
    color: var(--text-secondary);
    padding: 0.5rem 0.75rem;
    text-align: left;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-bottom: 2px solid var(--border-color);
}

.cutout-vol-table td {
    padding: 0.4rem 0.75rem;
    border-bottom: 1px solid var(--border-color);
    color: var(--text-primary);
}

.cutout-vol-table tr:hover {
    background-color: var(--bg-hover);
}

.cutout-change.up {
    color: var(--color-up);
}

.cutout-change.down {
    color: var(--color-down);
}

/* Sidebar legend */
.cutout-legend {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.cutout-legend-item {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.75rem;
    color: var(--text-secondary);
}

.cutout-legend-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* Detail panel for pie chart drill-down */
.cutout-detail-panel {
    background: #1e222d;
    border: 1px solid #2a2e39;
    border-radius: 8px;
    margin-top: 12px;
    padding: 12px 16px;
    animation: cutout-slide-in 0.2s ease-out;
}

@keyframes cutout-slide-in {
    from { opacity: 0; transform: translateY(-8px); }
    to   { opacity: 1; transform: translateY(0); }
}

.cutout-detail-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
    font-size: 14px;
    font-weight: 600;
    color: #d1d4dc;
}

.cutout-detail-close {
    background: none;
    border: none;
    color: #9598a1;
    font-size: 20px;
    cursor: pointer;
    padding: 0 4px;
    line-height: 1;
}

.cutout-detail-close:hover {
    color: #ef5350;
}

/* Responsive: 2 columns on narrow screens */
@media (max-width: 1200px) {
    .cutout-pies-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ========== BEEF CATEGORY TOGGLE ========== */

.beef-category-toggle {
    display: flex;
    gap: 4px;
}

.beef-cat-btn {
    flex: 1;
    padding: 6px 0;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
    color: var(--text-secondary);
    cursor: pointer;
    font-size: 0.75rem;
    border-radius: 4px;
    transition: all 0.15s ease;
}

.beef-cat-btn:hover {
    background: var(--bg-hover);
    color: var(--text-primary);
}

.beef-cat-btn.active {
    background: var(--accent-color);
    color: #fff;
    border-color: var(--accent-color);
}

#beef-category-section {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--border-color);
}

/* ========== DROUGHT MONITOR SIDEBAR ========== */

.drought-state-item {
    padding: 4px 8px;
    cursor: pointer;
    border-radius: 4px;
    font-size: 0.8rem;
    color: var(--text-primary);
}
.drought-state-item:hover {
    background: var(--bg-hover);
}
.drought-state-item.selected {
    background: var(--accent-color);
    color: #fff;
}

/* ========== BEEF CUTOUT BREAKDOWN STYLES ========== */

.beef-cutout-kpi-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

.beef-cutout-kpi-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    text-align: center;
}

.beef-cutout-kpi-label {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--text-secondary);
    margin-bottom: 0.25rem;
}

.beef-cutout-kpi-value {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--text-primary);
}

.beef-cutout-kpi-change {
    font-size: 0.75rem;
    font-weight: 500;
    margin-top: 0.15rem;
}

.beef-cutout-kpi-change.up {
    color: var(--color-up);
}

.beef-cutout-kpi-change.down {
    color: var(--color-down);
}

.beef-cutout-split-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.beef-cutout-sub-title {
    font-size: 0.8rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

@media (max-width: 1200px) {
    .beef-cutout-kpi-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .beef-cutout-split-grid {
        grid-template-columns: 1fr;
    }
}

/* ========== FEEDER CATTLE DASHBOARD ========== */

.fc-kpi-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

.fc-kpi-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    text-align: center;
}

.fc-kpi-label {
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--text-secondary);
    margin-bottom: 0.25rem;
}

.fc-kpi-value {
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--text-primary);
}

.fc-kpi-change {
    font-size: 0.7rem;
    font-weight: 500;
    margin-top: 0.15rem;
}

.fc-kpi-change.up { color: var(--color-up); }
.fc-kpi-change.down { color: var(--color-down); }

.fc-kpi-sub {
    font-size: 0.65rem;
    color: var(--text-secondary);
    margin-top: 0.1rem;
}

.fc-quad-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.fc-quad-cell {
    min-height: 260px;
}

.fc-quad-title {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-secondary);
    margin-bottom: 0.5rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

@media (max-width: 1200px) {
    .fc-kpi-grid {
        grid-template-columns: repeat(3, 1fr);
    }
    .fc-quad-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 768px) {
    .fc-kpi-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ========== WORKFLOW VIEWER STYLES ========== */

#workflow-graph {
    width: 100%;
    height: 100%;
    min-height: 500px;
}

/* Legend */
.workflow-legend-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 0;
    font-size: 0.75rem;
    color: #d1d4dc;
    transition: opacity 0.15s;
}

.workflow-legend-item:hover {
    opacity: 0.8;
}

.workflow-legend-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* Attribute table */
.workflow-attr-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.7rem;
}

.workflow-attr-table th {
    text-align: left;
    padding: 4px 6px;
    border-bottom: 1px solid #2a2e39;
    color: #9598a1;
    font-weight: 600;
}

.workflow-attr-table td {
    padding: 3px 6px;
    border-bottom: 1px solid #1e222d;
    color: #d1d4dc;
    vertical-align: top;
}

.workflow-attr-table code {
    color: #42a5f5;
    font-size: 0.7rem;
    background: #1a2744;
    padding: 1px 4px;
    border-radius: 3px;
}

/* Relationship items */
.workflow-rel-item {
    padding: 6px 0;
    border-bottom: 1px solid #1e222d;
    font-size: 0.75rem;
}

.workflow-rel-item:last-child {
    border-bottom: none;
}

.workflow-rel-card {
    font-size: 0.65rem;
    color: #9598a1;
    background: #2a2e39;
    padding: 1px 5px;
    border-radius: 3px;
    margin-left: 4px;
}

.workflow-rel-desc {
    color: #9598a1;
    font-size: 0.7rem;
    margin-top: 2px;
    line-height: 1.3;
}

.workflow-link-target {
    color: #42a5f5;
    text-decoration: none;
    cursor: pointer;
}

.workflow-link-target:hover {
    color: #90caf9;
    text-decoration: underline;
}

.workflow-empty {
    color: #9598a1;
    font-size: 0.75rem;
    font-style: italic;
    padding: 4px 0;
}

.workflow-protein-section {
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid var(--border-color);
}

.workflow-protein-section h4 {
    font-size: 0.75rem;
    margin-bottom: 6px;
    color: var(--text-primary);
}

.workflow-protein-btns {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.workflow-protein-btn {
    font-size: 0.7rem;
    padding: 2px 8px;
    border-radius: 3px;
    cursor: pointer;
    background: var(--bg-primary);
    color: var(--text-secondary);
    border: 1px solid var(--border-color);
}

.workflow-protein-btn.active {
    background: #3a4e69;
    color: #d1d4dc;
    border-color: var(--accent-color);
}

/* ========== MACRO REPORTS OVERVIEW ========== */

.macro-overview {
    padding: 16px 20px;
    height: 100%;
    overflow-y: auto;
}

/* Alerts banner */
.macro-alerts {
    background: rgba(239, 83, 80, 0.08);
    border: 1px solid rgba(239, 83, 80, 0.3);
    border-radius: 6px;
    padding: 12px 16px;
    margin-bottom: 16px;
}

.macro-alerts-header {
    font-size: 0.8rem;
    font-weight: 600;
    color: #ef5350;
    margin-bottom: 8px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.macro-alert-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 0;
    font-size: 0.78rem;
}

.macro-alert-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #ef5350;
    flex-shrink: 0;
}

.macro-alert-cat {
    color: #9598a1;
    font-size: 0.7rem;
    min-width: 130px;
    flex-shrink: 0;
}

.macro-alert-msg {
    color: #ef5350;
}

/* Category cards grid */
.macro-cards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 12px;
}

.macro-card {
    background: #1e222d;
    border: 1px solid #2a2e39;
    border-radius: 6px;
    padding: 14px 16px;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
}

.macro-card:hover {
    border-color: #3a3e4a;
    background: #252933;
}

.macro-card-header {
    font-size: 0.85rem;
    font-weight: 600;
    color: #d1d4dc;
    margin-bottom: 3px;
}

.macro-card-desc {
    font-size: 0.68rem;
    color: #636363;
    margin-bottom: 10px;
    line-height: 1.3;
}

.macro-card-series {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.macro-series-row {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 3px 0;
    font-size: 0.75rem;
    border-bottom: 1px solid #2a2e39;
}

.macro-series-row:last-child {
    border-bottom: none;
}

.macro-series-row.macro-big-move {
    background: rgba(255, 152, 0, 0.06);
    border-radius: 3px;
    padding: 3px 4px;
}

.macro-series-name {
    color: #9598a1;
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.macro-series-val {
    color: #d1d4dc;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
    text-align: right;
    min-width: 55px;
}

.macro-series-chg {
    font-size: 0.7rem;
    font-variant-numeric: tabular-nums;
    text-align: right;
    min-width: 52px;
}

.macro-chg-up { color: #26a69a; }
.macro-chg-down { color: #ef5350; }
.macro-chg-flat { color: #636363; }

.macro-card-date {
    font-size: 0.62rem;
    color: #4a4e59;
    margin-top: 8px;
    text-align: right;
}

/* Sidebar selected state for category headers */
.macro-cat-header.selected {
    background: rgba(41, 98, 255, 0.12);
    color: #2962ff;
}

/* ========== FUTURES TICKER BOARD ========== */

.ticker-board {
    padding: 24px 32px;
    height: 100%;
    display: flex;
    flex-direction: column;
}

.ticker-board-header {
    margin-bottom: 20px;
}

.ticker-board-header h2 {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 2px 0;
}

.ticker-board-subtitle {
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.ticker-board-table {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.ticker-row {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1.2fr 0.8fr 1fr 1.8fr 140px;
    align-items: center;
    padding: 0 12px;
    gap: 12px;
}

.ticker-header-row {
    padding-bottom: 8px;
    border-bottom: 1px solid var(--border-color);
    margin-bottom: 4px;
}

.ticker-header-row span {
    font-size: 0.7rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 600;
}

.ticker-data-row {
    padding-top: 14px;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(54, 60, 78, 0.4);
    cursor: pointer;
    transition: background-color 0.15s;
    border-radius: 4px;
}

.ticker-data-row:hover {
    background-color: var(--bg-hover);
}

.ticker-col-name {
    display: flex;
    flex-direction: column;
    gap: 1px;
}

.ticker-symbol {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--text-primary);
    letter-spacing: 0.02em;
}

.ticker-commodity {
    font-size: 0.72rem;
    color: var(--text-secondary);
}

.ticker-col-price {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-primary);
    font-variant-numeric: tabular-nums;
    text-align: right;
}

.ticker-col-prev {
    font-size: 0.88rem;
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
    text-align: right;
}

.ticker-col-change,
.ticker-col-pct {
    font-size: 0.88rem;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
    text-align: right;
}

.ticker-up { color: var(--color-up); }
.ticker-down { color: var(--color-down); }

.ticker-col-volume {
    font-size: 0.82rem;
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
    text-align: right;
}

.ticker-col-range {
    display: flex;
    align-items: center;
}

.ticker-range-bar {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
}

.ticker-range-label {
    font-size: 0.65rem;
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    min-width: 32px;
}

.ticker-range-label:first-child { text-align: right; }
.ticker-range-label:last-child { text-align: left; }

.ticker-range-track {
    flex: 1;
    height: 4px;
    background: var(--bg-hover);
    border-radius: 2px;
    position: relative;
}

.ticker-range-fill {
    height: 100%;
    border-radius: 2px;
    background: linear-gradient(90deg, var(--color-down), var(--color-up));
    opacity: 0.5;
}

.ticker-range-marker {
    position: absolute;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--text-primary);
    border: 1.5px solid var(--bg-primary);
}

.ticker-col-sparkline {
    display: flex;
    align-items: center;
    justify-content: center;
}

.ticker-sparkline-svg {
    display: block;
}

.ticker-board-footer {
    display: flex;
    justify-content: space-between;
    padding-top: 12px;
    margin-top: 8px;
    border-top: 1px solid var(--border-color);
    font-size: 0.7rem;
    color: var(--text-secondary);
}

@media (max-width: 1100px) {
    .ticker-row {
        grid-template-columns: 1.5fr 1fr 1fr 0.8fr 1fr;
    }
    .ticker-col-prev,
    .ticker-col-range,
    .ticker-col-sparkline,
    .ticker-header-row .ticker-col-prev,
    .ticker-header-row .ticker-col-range,
    .ticker-header-row .ticker-col-sparkline {
        display: none;
    }
}

/* ========== TOGGLE LABEL (for checkbox controls) ========== */

.toggle-label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    font-size: 0.85rem;
    color: var(--text-primary);
    white-space: nowrap;
}
.toggle-label input[type="checkbox"] {
    accent-color: #ff9800;
    width: 16px;
    height: 16px;
    cursor: pointer;
}

/* ========== ESTIMATED LH INDEX PANEL ========== */

.lh-index-panel {
    margin-top: 16px;
    padding: 16px 20px;
    background: #1a1e2e;
    border: 1px solid var(--border-color);
    border-radius: 8px;
}
.lh-index-header {
    margin-bottom: 12px;
}
.lh-index-header h3 {
    margin: 0 0 4px 0;
    font-size: 1rem;
    color: var(--text-primary);
}
.lh-index-badge {
    display: inline-block;
    font-size: 0.65rem;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 4px;
    background: rgba(255, 152, 0, 0.2);
    color: #ff9800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    vertical-align: middle;
    margin-left: 6px;
}
.lh-index-disclaimer {
    display: block;
    font-size: 0.7rem;
    color: var(--text-secondary);
    font-style: italic;
}
.lh-index-stats {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 10px;
    margin-bottom: 12px;
}
.lh-index-stat {
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 8px 10px;
    text-align: center;
}
.lh-index-stat-label {
    font-size: 0.65rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.3px;
    margin-bottom: 4px;
}
.lh-index-stat-value {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-primary);
}
.lh-index-stat-value small {
    font-size: 0.7rem;
    font-weight: 400;
    color: var(--text-secondary);
}
.lh-index-chart-container {
    width: 100%;
    height: 200px;
    border-radius: 6px;
    overflow: hidden;
}

@media (max-width: 1200px) {
    .lh-index-stats {
        grid-template-columns: repeat(3, 1fr);
    }
}
@media (max-width: 768px) {
    .lh-index-stats {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ========== OTC SWAP TABLE ========== */

.swap-table-wrap {
    overflow: auto;
    max-height: calc(100vh - 140px);
    margin: 0;
}

#swap-trades-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
}

#swap-trades-table th {
    text-align: left;
    padding: 0.6rem 0.5rem;
    color: var(--text-secondary);
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
    position: sticky;
    top: 0;
    background-color: var(--bg-primary);
    cursor: pointer;
    user-select: none;
}

#swap-trades-table th:hover {
    color: var(--text-primary);
}

#swap-trades-table th.sorted-asc::after {
    content: ' \25B2';
    font-size: 0.6rem;
}

#swap-trades-table th.sorted-desc::after {
    content: ' \25BC';
    font-size: 0.6rem;
}

#swap-trades-table td {
    padding: 0.45rem 0.5rem;
    border-bottom: 1px solid rgba(54, 60, 78, 0.3);
    white-space: nowrap;
    color: var(--text-primary);
}

#swap-trades-table tr:hover td {
    background-color: var(--bg-hover);
}

/* Swap badge styles */
.swap-badge {
    display: inline-block;
    padding: 0.1rem 0.35rem;
    border-radius: 3px;
    font-size: 0.7rem;
    font-weight: 600;
}

.swap-badge-swap {
    background-color: rgba(41, 98, 255, 0.2);
    color: #5b8def;
}

.swap-badge-exotic {
    background-color: rgba(255, 152, 0, 0.2);
    color: #ffb74d;
}

.swap-badge-option {
    background-color: rgba(171, 71, 188, 0.2);
    color: #ce93d8;
}

.swap-badge-index {
    background-color: rgba(38, 166, 154, 0.2);
    color: #4db6ac;
}

.swap-badge-cleared {
    background-color: rgba(38, 166, 154, 0.15);
    color: #4db6ac;
}

.swap-badge-uncleared {
    background-color: rgba(120, 123, 134, 0.15);
    color: var(--text-secondary);
}

.swap-table-footer {
    padding: 0.5rem 0.5rem;
    font-size: 0.7rem;
    color: var(--text-secondary);
    text-align: right;
}

/* ========== VALUE AT RISK ========== */

.var-section-group {
    margin-bottom: 0.5rem;
}

.var-section-header {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-secondary);
    padding: 0.4rem 0.6rem 0.2rem;
    border-bottom: 1px solid var(--border-color);
    margin-bottom: 0.15rem;
}

.var-stat-value {
    padding: 0.6rem;
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text-primary);
    text-align: center;
}

#var-risk-controls .btn-primary {
    padding: 0.4rem 1rem;
    white-space: nowrap;
}

@media (max-width: 1200px) {
    #var-summary-cards {
        grid-template-columns: repeat(3, 1fr) !important;
    }
}

@media (max-width: 768px) {
    #var-summary-cards {
        grid-template-columns: repeat(2, 1fr) !important;
    }
}

/* ===== Market Report Article Styles ===== */
.report-container {
    max-width: 100%;
    margin: 0 auto;
    padding: 32px 48px;
    color: #d1d4dc;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    line-height: 1.75;
    overflow-y: auto;
    height: 100%;
}
.report-container h1 {
    font-size: 28px;
    font-weight: 700;
    margin: 32px 0 16px;
    color: #fff;
    border-bottom: 1px solid #363a45;
    padding-bottom: 10px;
}
.report-container h2 {
    font-size: 22px;
    font-weight: 600;
    margin: 28px 0 12px;
    color: #90caf9;
}
.report-container h3 {
    font-size: 18px;
    font-weight: 600;
    margin: 20px 0 8px;
    color: #b0bec5;
}
.report-container p {
    margin: 12px 0;
    font-size: 15px;
}
.report-container ul, .report-container ol {
    margin: 12px 0;
    padding-left: 24px;
}
.report-container li {
    margin: 6px 0;
}
.report-container strong {
    color: #fff;
    font-weight: 600;
}
.report-container em {
    color: #b0bec5;
    font-style: italic;
}
.report-container code {
    background: #2a2e39;
    padding: 2px 6px;
    border-radius: 3px;
    font-size: 13px;
    color: #26a69a;
}
.report-container hr {
    border: none;
    border-top: 1px solid #363a45;
    margin: 24px 0;
}

/* Inline chart containers */
.report-chart-container {
    margin: 24px 0;
    background: #1e222d;
    border: 1px solid #363a45;
    border-radius: 8px;
    padding: 12px;
    overflow: hidden;
}
.report-chart-loading {
    text-align: center;
    padding: 40px 20px;
    color: #666;
    font-size: 13px;
}
.report-chart-error {
    text-align: center;
    padding: 20px;
    color: #ef5350;
    font-size: 13px;
}

/* Generate Report button */
.report-generate-btn {
    width: 100%;
    padding: 12px;
    background: #2962ff;
    color: white;
    border: none;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    margin-top: 12px;
    transition: background 0.2s;
}
.report-generate-btn:hover {
    background: #1e88e5;
}
.report-generate-btn:disabled {
    background: #444;
    color: #888;
    cursor: not-allowed;
}

/* Loading state */
.report-loading {
    text-align: center;
    padding: 80px 20px;
    color: #999;
}
.report-loading p {
    margin: 8px 0;
    font-size: 16px;
}
.report-loading-hint {
    font-size: 13px !important;
    color: #666 !important;
}

/* CSS Spinner */
.report-spinner {
    width: 40px;
    height: 40px;
    border: 3px solid #363a45;
    border-top-color: #2962ff;
    border-radius: 50%;
    margin: 0 auto 16px;
    animation: report-spin 0.8s linear infinite;
}
@keyframes report-spin {
    to { transform: rotate(360deg); }
}

/* Error state */
.report-error {
    text-align: center;
    padding: 60px 20px;
    color: #ef5350;
}
.report-error h2 {
    color: #ef5350;
    margin-bottom: 12px;
}
.report-error p {
    color: #999;
    font-size: 14px;
}

/* Sidebar hint text */
.sidebar-hint {
    font-size: 12px;
    color: #888;
    margin: 8px 0;
    line-height: 1.4;
}

/* Report History List */
.report-history-list {
    overflow-y: auto;
    max-height: calc(100vh - 350px);
    margin-top: 8px;
}
.report-history-item {
    padding: 10px 12px;
    border-radius: 6px;
    cursor: pointer;
    margin-bottom: 4px;
    border: 1px solid transparent;
    transition: background 0.15s, border-color 0.15s;
}
.report-history-item:hover {
    background: rgba(255, 255, 255, 0.05);
}
.report-history-item.active {
    background: rgba(41, 98, 255, 0.15);
    border-color: rgba(41, 98, 255, 0.3);
}
.report-history-title {
    font-size: 13px;
    font-weight: 500;
    color: #d1d4dc;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.report-history-date {
    font-size: 11px;
    color: #666;
    margin-top: 2px;
}

/* ========== Company Profile Sidebar ========== */
.cp-sector-group {
    margin-bottom: 6px;
}
.cp-sector-header {
    font-size: 10px;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 8px 8px 3px;
    margin-top: 2px;
}
.cp-company-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 12px;
    cursor: pointer;
    border-radius: 4px;
    transition: background 0.15s;
}
.cp-company-item:hover {
    background: var(--bg-hover);
}
.cp-company-item.active {
    background: rgba(41, 98, 255, 0.25);
    border-left: 3px solid #2962ff;
}
.cp-ticker {
    font-weight: 600;
    font-size: 11px;
    min-width: 48px;
    color: #2962ff;
}
.cp-company-item.active .cp-ticker {
    color: #6fa0ff;
}
.cp-name {
    font-size: 11px;
    color: var(--text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ========== Cold Storage YoY Controls ========== */
.cs-yoy-controls {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px 15px;
    background: #1c2030;
    border-top: 1px solid #363a45;
}
.cs-control-row {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.cs-row-label {
    font-size: 0.75rem;
    color: #787b86;
    margin-right: 4px;
}
.cs-zoom-btn, .cs-band-btn, .cs-year-btn {
    padding: 3px 10px;
    font-size: 0.7rem;
    border: 1px solid #363a45;
    background: transparent;
    color: #787b86;
    border-radius: 3px;
    cursor: pointer;
    transition: all 0.15s;
}
.cs-zoom-btn:hover, .cs-band-btn:hover, .cs-year-btn:hover {
    border-color: #2962ff;
    color: #d1d4dc;
}
.cs-zoom-btn.active, .cs-band-btn.active {
    background: rgba(41, 98, 255, 0.2);
    border-color: #2962ff;
    color: #2962ff;
}
.cs-year-btn.active {
    /* Colors set via inline styles to match chart line colors */
}
.cs-toggle-sep {
    color: #363a45;
    margin: 0 4px;
}

/* ========== Cold Storage Data Table ========== */
.cs-data-table {
    padding: 10px 15px;
    background: #1c2030;
    border-top: 1px solid #363a45;
}
.cs-data-table table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
}
.cs-data-table th {
    text-align: left;
    padding: 6px 10px;
    color: #787b86;
    border-bottom: 1px solid #363a45;
    font-weight: 500;
}
.cs-data-table td {
    padding: 6px 10px;
    color: #d1d4dc;
    border-bottom: 1px solid rgba(54, 58, 69, 0.5);
}
.cs-up { color: #4caf50; }
.cs-down { color: #ef5350; }

/* ===== Fertilizer Markets ===== */
.fert-metric-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
    padding: 12px 0;
    margin-bottom: 8px;
}
.fert-metric-card {
    background: #1e222d;
    border: 1px solid #363a45;
    border-radius: 6px;
    padding: 14px 16px;
    text-align: center;
}
.fert-metric-label {
    color: #787b86;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 4px;
}
.fert-metric-value {
    color: #d1d4dc;
    font-size: 1.5rem;
    font-weight: 600;
    line-height: 1.3;
}
.fert-metric-change {
    font-size: 0.85rem;
    margin-top: 2px;
}
.fert-metric-change.fert-up { color: #4caf50; }
.fert-metric-change.fert-down { color: #ef5350; }
.fert-metric-date {
    color: #787b86;
    font-size: 0.7rem;
    margin-top: 2px;
}

/* ==========================================================
   WASDE SUMMARY TABLE
   ========================================================== */

#wasde-summary {
    overflow-y: auto;
    flex: 1;
}

#freight-summary {
    overflow-y: auto;
    flex: 1;
}

.wasde-header-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.6rem 0.75rem;
    background: var(--bg-secondary);
    border-bottom: 1px solid var(--border-color);
    font-size: 0.85rem;
    color: #9ca3af;
}
.wasde-header-bar .report-id {
    font-weight: 600;
    color: #d1d4dc;
}

.wasde-summary-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}
.wasde-summary-table th,
.wasde-summary-table td {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--border-color);
    text-align: right;
    white-space: nowrap;
}
.wasde-summary-table th {
    background-color: var(--bg-secondary);
    color: #9ca3af;
    font-weight: 600;
    position: sticky;
    top: 0;
    z-index: 1;
}
.wasde-summary-table td:first-child,
.wasde-summary-table th:first-child {
    text-align: left;
    font-weight: 500;
    color: #d1d4dc;
}
.wasde-summary-table tbody tr:hover {
    background-color: rgba(41, 98, 255, 0.08);
}
.wasde-flag {
    font-size: 0.7rem;
    color: #787b86;
    margin-left: 3px;
}
.wasde-up { color: #26a69a; }
.wasde-down { color: #ef5350; }
.wasde-mom {
    font-size: 0.8rem;
    font-weight: 500;
}

/* WASDE sidebar commodity list */
.wasde-group-header {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0;
    cursor: pointer;
    color: #9ca3af;
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: 1px solid var(--border-color);
    user-select: none;
}
.wasde-group-header:hover { color: #d1d4dc; }
.wasde-group-header .arrow { transition: transform 0.15s; }
.wasde-group-header.collapsed .arrow { transform: rotate(-90deg); }

.wasde-group-items {
    padding: 0.2rem 0 0.4rem 0;
}
.wasde-group-items.hidden { display: none; }

.wasde-commodity-item {
    padding: 0.35rem 0.5rem;
    cursor: pointer;
    border-radius: 4px;
    font-size: 0.85rem;
    color: #d1d4dc;
}
.wasde-commodity-item:hover { background: rgba(255,255,255,0.06); }
.wasde-commodity-item.active {
    background: rgba(41, 98, 255, 0.2);
    color: #2962ff;
    font-weight: 600;
}

/* ── RMA Insurance Module ── */
.rma-overview-section {
    padding: 12px 20px 0;
}
.rma-edu-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}
.rma-edu-card {
    background: #1e222d;
    border: 1px solid #363a45;
    border-radius: 6px;
    padding: 14px 16px;
}
.rma-edu-card h4 {
    color: #d1d4dc;
    font-size: 0.9rem;
    margin: 0 0 6px;
}
.rma-edu-card p {
    color: #9ca3af;
    font-size: 0.8rem;
    line-height: 1.5;
    margin: 0;
}
.rma-metric-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
    padding: 0 20px 12px;
}
.rma-metric-card {
    background: #1e222d;
    border: 1px solid #363a45;
    border-radius: 6px;
    padding: 14px 16px;
    text-align: center;
}
.rma-metric-label {
    color: #787b86;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 4px;
}
.rma-metric-value {
    color: #d1d4dc;
    font-size: 1.5rem;
    font-weight: 600;
    line-height: 1.3;
}
.rma-metric-sub {
    color: #787b86;
    font-size: 0.75rem;
}
.rma-metric-detail {
    color: #2962ff;
    font-size: 0.9rem;
    font-weight: 500;
    margin-top: 2px;
}
.rma-metric-date {
    color: #787b86;
    font-size: 0.7rem;
    margin-top: 2px;
}
/* Calculator */
.rma-calculator {
    padding: 20px;
    max-width: 1200px;
}
.rma-calc-form {
    background: #1e222d;
    border: 1px solid #363a45;
    border-radius: 6px;
    padding: 16px;
    margin-bottom: 20px;
}
.rma-calc-row {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    align-items: flex-end;
}
.rma-calc-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.rma-calc-field label {
    font-size: 0.7rem;
    color: #787b86;
    text-transform: uppercase;
}
.rma-calc-field select,
.rma-calc-field input {
    background: #131722;
    border: 1px solid #363a45;
    border-radius: 4px;
    color: #d1d4dc;
    padding: 6px 8px;
    font-size: 0.85rem;
}
.rma-calc-field .btn-primary {
    background: #2962ff;
    color: #fff;
    border: none;
    border-radius: 4px;
    padding: 7px 16px;
    font-size: 0.85rem;
    cursor: pointer;
}
.rma-calc-field .btn-primary:hover {
    background: #1e50d6;
}
/* Results */
.rma-results-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 12px;
}
.rma-result-card {
    background: #1e222d;
    border: 1px solid #363a45;
    border-radius: 6px;
    padding: 16px;
}
.rma-result-header {
    color: #d1d4dc;
    font-weight: 600;
    font-size: 0.95rem;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 1px solid #363a45;
}
.rma-result-row {
    display: flex;
    justify-content: space-between;
    padding: 4px 0;
    font-size: 0.85rem;
    color: #9ca3af;
}
.rma-result-row.highlight {
    color: #d1d4dc;
    font-weight: 600;
}
.rma-result-row.highlight span:last-child {
    color: #26a69a;
}
.rma-result-divider {
    border-top: 1px solid #363a45;
    margin: 8px 0;
}

/* ========== NEWS AGGREGATOR ========== */

.news-feed-wrapper {
    padding: 1rem;
    max-width: 900px;
    margin: 0 auto;
    overflow-y: auto;
    height: 100%;
}

.news-feed-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--border-color);
}

.news-feed-header h2 {
    font-size: 1.1rem;
    color: var(--text-primary);
    margin: 0;
}

.news-total {
    font-size: 0.75rem;
    color: var(--text-secondary);
}

.news-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.8rem 1rem;
    margin-bottom: 0.6rem;
    transition: border-color 0.15s;
}

.news-card:hover {
    border-color: #505460;
}

.news-card__header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.4rem;
}

.news-card__date {
    font-size: 0.7rem;
    color: var(--text-secondary);
}

.news-card__title {
    font-size: 0.85rem;
    font-weight: 600;
    margin: 0 0 0.3rem 0;
    line-height: 1.3;
}

.news-card__title a {
    color: var(--text-primary);
    text-decoration: none;
}

.news-card__title a:hover {
    color: #2962ff;
    text-decoration: underline;
}

.news-card__summary {
    font-size: 0.78rem;
    color: #26a69a;
    margin: 0 0 0.4rem 0;
    line-height: 1.4;
    font-style: italic;
}

.news-card__content {
    font-size: 0.75rem;
    color: var(--text-secondary);
    margin: 0 0 0.4rem 0;
    line-height: 1.4;
}

.news-card__actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 0.3rem;
}

.news-card__link {
    font-size: 0.7rem;
    color: #2962ff;
    text-decoration: none;
}

.news-card__link:hover {
    text-decoration: underline;
}

/* Source badges */
.news-source-badge {
    font-size: 0.6rem;
    padding: 1px 6px;
    border-radius: 3px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.news-cat-general { background: #363a45; color: #d1d4dc; }
.news-cat-beef { background: #4a2020; color: #ef5350; }
.news-cat-pork { background: #2a3a20; color: #66bb6a; }
.news-cat-processing { background: #20303a; color: #42a5f5; }
.news-cat-grains { background: #3a3520; color: #d4a937; }
.news-cat-live_cattle { background: #3a2820; color: #c77b4f; }
.news-cat-live_hogs { background: #2a3a20; color: #66bb6a; }
.news-cat-retail { background: #2a2040; color: #ab7ae0; }
.news-cat-foodservice { background: #3a2035; color: #e07aab; }

/* Sidebar date navigator */
.news-date-group {
    font-size: 0.65rem;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.4px;
    padding: 0.5rem 0.5rem 0.2rem;
    margin-top: 0.3rem;
}

.news-date-group:first-child {
    margin-top: 0;
}

.news-date-item {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.3rem 0.5rem;
    cursor: pointer;
    font-size: 0.73rem;
    border-radius: 3px;
    color: var(--text-secondary);
    transition: background 0.12s;
}

.news-date-item:hover {
    background: var(--bg-hover);
}

.news-date-item.selected {
    background: var(--bg-hover);
    color: var(--text-primary);
    font-weight: 600;
}

.news-date-item.today .news-date-label {
    color: #2962ff;
}

.news-date-label {
    flex: 1;
}

.news-date-count {
    font-size: 0.6rem;
    color: var(--text-secondary);
    opacity: 0.7;
    min-width: 1.2rem;
    text-align: right;
}

/* View toggle buttons */
.news-view-toggle {
    display: flex;
    gap: 0;
}

.news-toggle-btn {
    background: var(--bg-primary);
    color: var(--text-secondary);
    border: 1px solid var(--border-color);
    padding: 3px 10px;
    font-size: 0.7rem;
    cursor: pointer;
    transition: all 0.12s;
}

.news-toggle-btn:first-child {
    border-radius: 3px 0 0 3px;
}

.news-toggle-btn:last-child {
    border-radius: 0 3px 3px 0;
    border-left: none;
}

.news-toggle-btn.active {
    background: #2962ff;
    color: #fff;
    border-color: #2962ff;
}

/* Load more */
.news-load-more {
    display: block;
    width: 100%;
    background: var(--bg-secondary);
    color: var(--text-primary);
    border: 1px solid var(--border-color);
    padding: 8px;
    border-radius: 4px;
    font-size: 0.8rem;
    cursor: pointer;
    margin-top: 0.5rem;
    transition: border-color 0.15s;
}

.news-load-more:hover {
    border-color: #2962ff;
}

.news-empty {
    text-align: center;
    color: var(--text-secondary);
    padding: 3rem 1rem;
    font-size: 0.85rem;
}

.news-empty code {
    display: inline-block;
    margin-top: 0.5rem;
    background: var(--bg-primary);
    padding: 4px 10px;
    border-radius: 3px;
    font-size: 0.8rem;
}

/* Executive Summary */
.summary-meta {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    padding: 0.5rem 0;
    margin-bottom: 0.8rem;
    border-bottom: 1px solid var(--border-color);
    font-size: 0.7rem;
    color: var(--text-secondary);
}

.summary-generated-at {
    color: var(--text-secondary);
}

.summary-content {
    font-size: 0.82rem;
    line-height: 1.6;
    color: var(--text-primary);
}

.summary-content h3 {
    font-size: 0.95rem;
    font-weight: 600;
    margin: 1.2rem 0 0.5rem 0;
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 0.3rem;
}

.summary-content ul {
    margin: 0.3rem 0 0.8rem 1.2rem;
    padding: 0;
}

.summary-content li {
    margin-bottom: 0.4rem;
    line-height: 1.5;
}

.summary-content strong {
    color: #f0b90b;
}

.summary-content .summary-executive {
    background: var(--bg-secondary);
    border-left: 3px solid #2962ff;
    padding: 0.8rem 1rem;
    margin-bottom: 1rem;
    border-radius: 0 4px 4px 0;
    font-size: 0.85rem;
    line-height: 1.5;
}

.summary-content .summary-outlook {
    background: var(--bg-secondary);
    border-left: 3px solid #26a69a;
    padding: 0.8rem 1rem;
    margin-top: 1rem;
    border-radius: 0 4px 4px 0;
    font-size: 0.82rem;
    font-style: italic;
}

/* ===== LEAN POINT DASHBOARD ===== */

.lp-kpi-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.lp-kpi-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.75rem;
    text-align: center;
}

.lp-kpi-label {
    font-size: 0.65rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    margin-bottom: 0.3rem;
}

.lp-kpi-value {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text-primary);
}

.lp-kpi-sub {
    font-size: 0.7rem;
    color: var(--text-secondary);
    margin-top: 0.2rem;
}

.lp-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
}

.lp-table th {
    background-color: var(--bg-secondary);
    color: var(--text-secondary);
    padding: 0.5rem 0.75rem;
    text-align: left;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-bottom: 2px solid var(--border-color);
    position: sticky;
    top: 0;
    z-index: 1;
}

.lp-table td {
    padding: 0.4rem 0.75rem;
    border-bottom: 1px solid var(--border-color);
    color: var(--text-primary);
}

.lp-table tr:hover {
    background-color: var(--bg-hover, rgba(255,255,255,0.03));
}

.lp-table .lp-discount {
    color: #26a69a;
    font-weight: 600;
}

.lp-table .lp-premium {
    color: #ef5350;
    font-weight: 600;
}

.lp-table .lp-no-price {
    color: var(--text-secondary);
    font-style: italic;
}

.lp-primal-badge {
    display: inline-block;
    font-size: 0.65rem;
    padding: 0.1rem 0.4rem;
    border-radius: 3px;
    background: var(--bg-tertiary, #2a2e39);
    color: var(--text-secondary);
    margin-left: 0.3rem;
}

.lp-analysis-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

@media (max-width: 1200px) {
    .lp-kpi-grid {
        grid-template-columns: repeat(3, 1fr);
    }
    .lp-analysis-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 768px) {
    .lp-kpi-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
