:root {
    --bg: #f6f7f8;
    --surface: #ffffff;
    --text: #20242a;
    --muted: #667085;
    --line: #d7dce2;
    --accent: #1f4f7a;
    --a-bg: #dff3df;
    --a-border: #86bf86;
    --b-bg: #fff3c4;
    --b-border: #d8ba55;
    --c-bg: #f8d7d7;
    --c-border: #d78a8a;
    --other-bg: #eef1f4;
}

* { box-sizing: border-box; }
html { color-scheme: light; }
body {
    margin: 0;
    background: var(--bg);
    color: var(--text);
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    line-height: 1.4;
}
a { color: #145ea8; }

.site-header {
    background: var(--surface);
    border-bottom: 1px solid var(--line);
    position: sticky;
    top: 0;
    z-index: 20;
}
.header-inner, .page {
    width: min(1400px, calc(100% - 32px));
    margin: 0 auto;
}
.header-inner {
    min-height: 64px;
    display: flex;
    align-items: center;
    gap: 24px;
}
.brand { font-weight: 750; font-size: 1.15rem; white-space: nowrap; }
.nav { display: flex; gap: 8px; flex-wrap: wrap; }
.nav a {
    text-decoration: none;
    color: var(--text);
    padding: 7px 10px;
    border-radius: 7px;
}
.nav a.active, .nav a:hover { background: #edf2f7; }
.userbar { margin-left: auto; display: flex; gap: 12px; align-items: center; color: var(--muted); }

.page { padding: 24px 0 48px; }
.page-title { margin: 0 0 4px; font-size: clamp(1.55rem, 3vw, 2.1rem); }
.page-subtitle { color: var(--muted); margin: 0 0 20px; }

.filters {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 16px;
    margin-bottom: 18px;
}
.filter-grid {
    display: grid;
    grid-template-columns: minmax(150px, .8fr) minmax(250px, 1.4fr) minmax(230px, 1.1fr) minmax(160px, .8fr);
    gap: 14px 20px;
    align-items: end;
}
.filter-group { min-width: 0; }
.filter-label { display: block; font-weight: 700; margin-bottom: 7px; }
.check-row { display: flex; gap: 12px; flex-wrap: wrap; }
.check-row label { white-space: nowrap; }
input[type="checkbox"] { transform: translateY(1px); }
input[type="number"] {
    width: 100%;
    min-height: 38px;
    padding: 7px 9px;
    border: 1px solid #bfc7d0;
    border-radius: 6px;
    background: #fff;
    font: inherit;
}
.range { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 7px; }
.filter-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 14px; }
.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    border: 1px solid #aeb7c2;
    border-radius: 7px;
    padding: 7px 13px;
    background: #fff;
    color: var(--text);
    text-decoration: none;
    font: inherit;
    cursor: pointer;
}
.button.primary { background: #253b53; border-color: #253b53; color: #fff; }

.summary { color: var(--muted); margin: 0 0 10px; }
.alert { border: 1px solid #d79a9a; background: #fff0f0; padding: 12px 14px; border-radius: 8px; margin-bottom: 16px; }
.empty { background: var(--surface); border: 1px solid var(--line); padding: 24px; text-align: center; border-radius: 10px; color: var(--muted); }

.earnings-list { display: grid; gap: 10px; }
.earning-row {
    display: grid;
    grid-template-columns: 160px 85px minmax(250px, .9fr) minmax(500px, 1.7fr);
    border: 1px solid var(--line);
    border-left-width: 6px;
    border-radius: 9px;
    overflow: hidden;
    background: var(--surface);
}
.earning-row.cat-A { background: var(--a-bg); border-left-color: var(--a-border); }
.earning-row.cat-B { background: var(--b-bg); border-left-color: var(--b-border); }
.earning-row.cat-C { background: var(--c-bg); border-left-color: var(--c-border); }
.earning-row.cat-OTHER { background: var(--other-bg); border-left-color: #aab2bd; }
.cell { padding: 12px 14px; border-right: 1px solid rgba(80,90,100,.22); }
.cell:last-child { border-right: 0; }
.date-main { font-weight: 750; font-size: 1.05rem; }
.session { margin-top: 2px; color: #3c4652; }
.confirmed { font-weight: 800; font-size: 1.1rem; }
.confirmed.no { color: #7b4b00; }
.symbol { font-size: 1.16rem; font-weight: 800; }
.name { margin-top: 2px; }
.meta { margin-top: 5px; color: #4f5965; font-size: .92rem; }
.price { font-weight: 800; font-size: 1.08rem; }
.asof { color: #5d6671; font-size: .85rem; margin-top: 2px; }
.detail-link { margin-top: 8px; display: inline-block; }

.legend { display: flex; gap: 14px; flex-wrap: wrap; margin: 10px 0 16px; font-size: .9rem; color: var(--muted); }
.legend span::before { content: ""; display: inline-block; width: 12px; height: 12px; border: 1px solid #888; margin-right: 5px; vertical-align: -1px; }
.legend .a::before { background: var(--a-bg); }
.legend .b::before { background: var(--b-bg); }
.legend .c::before { background: var(--c-bg); }

@media (max-width: 1000px) {
    .filter-grid { grid-template-columns: 1fr 1fr; }
    .earning-row { grid-template-columns: 145px 80px minmax(220px, 1fr); }
    .earning-row .market { grid-column: 1 / -1; border-top: 1px solid rgba(80,90,100,.22); }
}
@media (max-width: 680px) {
    .header-inner { align-items: flex-start; padding: 12px 0; flex-wrap: wrap; gap: 8px 14px; }
    .userbar { width: 100%; margin-left: 0; }
    .filter-grid { grid-template-columns: 1fr; }
    .earning-row { grid-template-columns: 1fr; }
    .cell { border-right: 0; border-bottom: 1px solid rgba(80,90,100,.22); }
    .cell:last-child { border-bottom: 0; }
}


.market-head { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; }
.market-close { text-align: right; font-size: .92rem; color: #44505d; }
.stats-title { margin-top: 10px; font-weight: 800; font-size: .9rem; }
.sigma-grid {
    display: grid;
    grid-template-columns: 92px 1fr 1fr;
    gap: 4px 12px;
    margin-top: 5px;
    font-size: .88rem;
    line-height: 1.3;
}
.sigma-label { font-weight: 800; white-space: nowrap; }
.sigma-wide { grid-column: span 2; }
.stats-empty { margin-top: 10px; color: var(--muted); font-size: .9rem; }

@media (max-width: 1180px) {
    .earning-row { grid-template-columns: 145px 80px minmax(220px, 1fr); }
    .earning-row .market { grid-column: 1 / -1; border-top: 1px solid rgba(80,90,100,.22); }
}
@media (max-width: 720px) {
    .sigma-grid { grid-template-columns: 1fr; }
    .sigma-wide { grid-column: auto; }
    .market-head { flex-direction: column; gap: 2px; }
    .market-close { text-align: left; }
}

/* Phase 8.4 - Earnings detail analysis */
.detail-page { width: min(1560px, calc(100% - 32px)); }
.detail-titlebar { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.stock-picker { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; margin-bottom: 16px; }
.stock-picker select { min-width: min(440px, 100%); min-height: 38px; padding: 7px 9px; border: 1px solid #bfc7d0; border-radius: 6px; background: #fff; font: inherit; }
.detail-card { background: var(--surface); border: 1px solid var(--line); border-radius: 10px; padding: 16px; }
.detail-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.detail-symbol { font-size: 1.65rem; font-weight: 850; }
.detail-company { color: var(--muted); margin-top: 2px; }
.category-pill { padding: 5px 9px; border-radius: 999px; font-size: .86rem; font-weight: 750; border: 1px solid var(--line); }
.cat-pill-A { background: var(--a-bg); border-color: var(--a-border); }
.cat-pill-B { background: var(--b-bg); border-color: var(--b-border); }
.cat-pill-C { background: var(--c-bg); border-color: var(--c-border); }
.keep-lowercase { text-transform: none;}
.master-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin: 12px 0 0; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.master-grid > div { padding: 9px 11px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); min-width: 0; }
.master-grid dt { font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); font-weight: 750; }
.master-grid dd { margin: 3px 0 0; font-weight: 620; overflow-wrap: anywhere; }
.master-grid .span-2 { grid-column: span 2; }
.status-chip { display: inline-block; margin-left: 6px; padding: 2px 6px; border-radius: 999px; font-size: .75rem; font-weight: 700; }
.status-chip.ok { background: #dff3df; color: #245c24; }
.status-chip.pending { background: #fff3c4; color: #735900; }
.muted { color: var(--muted); font-size: .88em; font-weight: 400; }
.detail-links { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 12px; }
.stats-panels { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 14px 0; }
.stats-card h2, .history-card h2 { margin: 0 0 10px; font-size: 1.08rem; }
.count-badge { color: var(--muted); font-size: .78rem; font-weight: 650; }
.stat-table-wrap, .history-table-wrap { overflow-x: auto; }
.stat-table, .history-table { width: 100%; border-collapse: collapse; }
.stat-table th, .stat-table td { padding: 7px 8px; border-bottom: 1px solid var(--line); text-align: right; white-space: nowrap; }
.stat-table th:first-child { text-align: left; }
.stat-table th:last-child { text-transform: none; }
.stat-table thead th { color: var(--muted); font-size: .78rem; text-transform: uppercase; }
.history-head p { margin: -4px 0 10px; color: var(--muted); }
.history-table { min-width: 1380px; font-size: .84rem; }
.history-table th, .history-table td { padding: 6px 7px; border: 1px solid var(--line); text-align: right; white-space: nowrap; }
.history-table thead th { background: #f2f4f6; font-weight: 800; }
.history-table td:first-child, .history-table th:first-child { text-align: left; }
.history-table tbody tr:nth-child(even) { background: #fafbfc; }

@media (max-width: 1100px) {
    .master-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .stats-panels { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
    .detail-titlebar { flex-direction: column; }
    .stock-picker { align-items: stretch; }
    .stock-picker select { min-width: 0; width: 100%; }
    .master-grid { grid-template-columns: 1fr; }
    .master-grid .span-2 { grid-column: auto; }
    .detail-card-head { flex-direction: column; }
}

/* Phase 8.6 - Global footer / disclaimer */
body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}
main.page {
    flex: 1 0 auto;
}
.site-footer {
    margin-top: 28px;
    border-top: 1px solid var(--line);
    background: #f7f8fa;
    color: var(--muted);
    font-size: .82rem;
}
.site-footer-inner {
    width: min(1420px, calc(100% - 32px));
    margin: 0 auto;
    padding: 14px 0 18px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px 24px;
}
.site-footer-legal {
    display: inline-flex;
    gap: 14px;
    flex: 0 0 auto;
}
.site-footer-legal a {
    color: inherit;
    text-underline-offset: 2px;
}

/* Phase 8.6 - Glossary */
.glossary-page {
    max-width: 1180px;
}
.glossary-card {
    margin-top: 14px;
}
.glossary-filter {
    display: grid;
    grid-template-columns: minmax(260px, 1.5fr) minmax(220px, 1fr) auto;
    align-items: end;
    gap: 14px;
    margin-top: 18px;
    padding: 18px;
}
.glossary-filter label {
    display: grid;
    gap: 6px;
    font-weight: 750;
}
.glossary-filter input,
.glossary-filter select {
    width: 100%;
}
.glossary-filter-actions {
    display: flex;
    gap: 8px;
}
.glossary-result-summary {
    margin: 12px 2px -2px;
    color: var(--muted);
    font-size: .92rem;
}
.glossary-card h2 {
    margin: 0 0 10px;
    font-size: 1.08rem;
}
.glossary-list {
    margin: 0;
    border-top: 1px solid var(--line);
}
.glossary-list > div {
    display: grid;
    grid-template-columns: minmax(190px, 280px) 1fr;
    gap: 18px;
    padding: 12px 6px;
    border-bottom: 1px solid var(--line);
}
.glossary-list dt {
    font-weight: 800;
}
.glossary-category {
    display: table;
    margin-top: 5px;
    padding: 3px 8px;
    border-radius: 999px;
    background: #edf1f5;
    color: var(--muted);
    font-size: .72rem;
    font-weight: 750;
    line-height: 1.2;
}
.glossary-list dd {
    margin: 0;
    color: #3f4a56;
    line-height: 1.5;
}
.glossary-disclaimer {
    margin: 16px 2px 0;
    color: var(--muted);
    font-size: .88rem;
}

@media (max-width: 680px) {
    .glossary-filter {
        grid-template-columns: 1fr;
    }
    .glossary-filter-actions {
        flex-wrap: wrap;
    }
    .glossary-list > div {
        grid-template-columns: 1fr;
        gap: 5px;
    }
    .site-footer-inner {
        width: min(100% - 24px, 1420px);
        align-items: flex-start;
        flex-direction: column;
        gap: 6px;
    }
}

/* Phase 9.1e - NYSE status integrated into header */
.header-market-clock-wrap {
    width: min(1400px, calc(100% - 32px));
    margin: -2px auto 0;
    padding: 0 0 10px;
}

.market-clock {
    min-height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin: 0;
    padding: 7px 12px;
    border-top: 1px solid #edf0f3;
    color: var(--text);
    white-space: nowrap;
    text-align: center;
}

.market-clock-status {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 750;
}

.market-dot {
    flex: 0 0 auto;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #8b949e;
    box-shadow: 0 0 0 4px rgba(139,148,158,.10);
}

.market-clock.is-open .market-dot {
    background: #2e8b57;
    box-shadow: 0 0 0 4px rgba(46,139,87,.10);
}

.market-clock-time {
    font-variant-numeric: tabular-nums;
    font-size: 1rem;
    letter-spacing: .025em;
}

.market-clock-time::before,
.market-clock-detail::before {
    content: "·";
    margin-right: 8px;
    color: #a0a8b2;
    font-weight: 400;
}

.market-clock-detail {
    color: var(--muted);
    font-size: .82rem;
}

.market-clock.loading {
    opacity: .72;
}

@media (max-width: 760px) {
    .header-market-clock-wrap {
        width: min(100% - 24px, 1400px);
        padding-bottom: 8px;
    }

    .market-clock {
        flex-wrap: wrap;
        gap: 4px 7px;
        padding: 7px 4px;
        white-space: normal;
        line-height: 1.25;
    }

    .market-clock-detail {
        flex-basis: 100%;
    }

    .market-clock-detail::before {
        content: "";
        margin-right: 0;
    }
}

/* Phase 9.1b - Live Earnings Trade */
.live-earnings { margin: 0 0 22px; padding: 16px; border: 1px solid var(--line); border-radius: 9px; background: #fbfcfd; }
.live-section-head { display: flex; justify-content: space-between; gap: 20px; align-items: flex-start; margin-bottom: 12px; }
.live-section-head h2 { margin: 0 0 3px; font-size: 1.05rem; }
.live-section-head p { margin: 0; color: var(--muted); font-size: .86rem; }
.live-state { text-align: right; font-size: .8rem; color: var(--muted); white-space: nowrap; }
.live-state strong { display: block; color: #2e7d52; }
.live-state span { display: block; margin-top: 2px; }
.live-content { display: grid; gap: 10px; }
.live-card { border: 1px solid var(--line); border-radius: 8px; background: var(--surface); overflow: hidden; }
.live-card-head { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.live-symbol { font-size: 1.08rem; font-weight: 850; text-decoration: none; }
.live-name { margin-left: 9px; color: var(--muted); font-size: .84rem; }
.live-event { font-weight: 700; font-size: .84rem; }
.live-price-row { display: grid; grid-template-columns: repeat(2, minmax(180px, 1fr)); border-bottom: 1px solid var(--line); }
.live-price-row > div { padding: 10px 12px; display: grid; grid-template-columns: auto auto; gap: 1px 12px; align-items: baseline; }
.live-price-row > div:first-child { border-right: 1px solid var(--line); }
.live-price-row span { color: var(--muted); font-size: .78rem; text-transform: uppercase; font-weight: 700; }
.live-price-row strong { text-align: right; font-size: 1.08rem; }
.live-price-row small { grid-column: 1 / -1; color: var(--muted); font-size: .76rem; }
.live-metrics { display: grid; grid-template-columns: repeat(2, minmax(280px, 1fr)); }
.live-metric { padding: 10px 12px; display: grid; gap: 3px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: .82rem; }
.live-metric:nth-child(2n) { border-right: 0; }
.live-metric:nth-last-child(-n+2) { border-bottom: 0; }
.live-metric strong { font-size: .83rem; }
.live-metric small, .muted { color: var(--muted); }
.live-empty { padding: 12px; color: var(--muted); }
@media (max-width: 760px) {
    .live-section-head, .live-card-head { flex-direction: column; gap: 6px; }
    .live-state { text-align: left; }
    .live-price-row, .live-metrics { grid-template-columns: 1fr; }
    .live-price-row > div:first-child, .live-metric { border-right: 0; border-bottom: 1px solid var(--line); }
    .live-metric:last-child { border-bottom: 0; }
}


/* Phase 9.1c - Dedicated Live Earnings page */
.live-page { max-width: 1420px; }
.live-titlebar { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; margin-bottom: 14px; }
.live-page-status { text-align: right; color: var(--muted); font-size: .82rem; white-space: nowrap; }
.live-page-status strong { display: block; color: #2e7d52; }
.live-page-status span { display: block; margin-top: 3px; }
.live-workspace { display: grid; gap: 12px; }
.live-workspace-note { display: flex; gap: 12px; align-items: baseline; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: #f7f8fa; font-size: .84rem; }
.live-workspace-note span { color: var(--muted); }
.live-meta { margin-top: 3px; color: var(--muted); font-size: .76rem; }
@media (max-width: 760px) {
    .live-titlebar { flex-direction: column; gap: 8px; }
    .live-page-status { text-align: left; }
    .live-workspace-note { flex-direction: column; gap: 3px; }
}

/* Phase 9.1d - Footer fixed to viewport bottom */
:root {
    --site-footer-height: 58px;
}
body {
    padding-bottom: var(--site-footer-height);
}
.site-footer {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1000;
    margin-top: 0;
    min-height: var(--site-footer-height);
    box-shadow: 0 -2px 8px rgba(20, 30, 40, .05);
}
@media (max-width: 680px) {
    :root { --site-footer-height: 104px; }
}


/* Phase 10.1a - Administration */
.admin-page { max-width: 1400px; }
.admin-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}
.admin-card h2 { margin: 0 0 8px; font-size: 1.08rem; }
.admin-card p { margin: 0 0 12px; color: var(--muted); }
.admin-status {
    display: inline-block;
    padding: 4px 8px;
    border-radius: 999px;
    background: #eef1f4;
    color: #5d6671;
    font-size: .78rem;
    font-weight: 700;
}
@media (max-width: 760px) {
    .admin-grid { grid-template-columns: 1fr; }
}

/* Phase 10.1b - Admin stock management */
.admin-titlebar {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18px;
    margin-bottom: 14px;
}
.admin-stock-filters { margin-bottom: 14px; }
.admin-filter-row {
    display: grid;
    grid-template-columns: minmax(260px, 1.2fr) minmax(180px, .5fr) auto;
    gap: 14px;
    align-items: end;
}
.admin-search input[type="search"],
.admin-edit-form input,
.admin-edit-form select,
.admin-stock-filters select {
    width: 100%;
    min-height: 38px;
    padding: 7px 9px;
    border: 1px solid #bfc7d0;
    border-radius: 6px;
    background: #fff;
    color: var(--text);
    font: inherit;
}
.admin-filter-actions { margin: 0; align-self: end; }
.admin-table-wrap {
    overflow-x: auto;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 10px;
}
.admin-table {
    width: 100%;
    min-width: 1180px;
    border-collapse: collapse;
    font-size: .86rem;
}
.admin-table th,
.admin-table td {
    padding: 9px 10px;
    border-bottom: 1px solid var(--line);
    text-align: left;
    vertical-align: middle;
}
.admin-table thead th {
    background: #f3f5f7;
    color: var(--muted);
    font-size: .76rem;
    text-transform: uppercase;
    letter-spacing: .025em;
}
.admin-table tbody tr:last-child td { border-bottom: 0; }
.admin-table tbody tr.is-inactive { opacity: .6; background: #fafafa; }
.admin-actions { display: flex; gap: 6px; align-items: center; white-space: nowrap; }
.admin-actions form { margin: 0; }
.button.small { min-height: 32px; padding: 5px 9px; font-size: .82rem; }
.button.danger { border-color: #c78686; color: #8a2e2e; background: #fff8f8; }
.admin-pill {
    display: inline-block;
    padding: 3px 7px;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 750;
}
.admin-pill.ok { background: #dff3df; color: #245c24; }
.admin-pill.off { background: #eceff2; color: #626b75; }
.admin-empty { text-align: center !important; color: var(--muted); padding: 22px !important; }
.admin-notice {
    margin: 0 0 14px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
}
.admin-notice.success { background: #eef8ee; border-color: #a8cfa8; color: #245c24; }
.admin-notice.error { background: #fff0f0; border-color: #d79a9a; color: #8a2e2e; }
.admin-notice.pending { background: #fff8e8; border-color: #d8bd75; color: #664d0a; }
.admin-edit-form { max-width: 1100px; }
.admin-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 18px;
}
.admin-form-grid label > span {
    display: block;
    margin-bottom: 6px;
    font-size: .82rem;
    font-weight: 750;
    color: var(--muted);
}
.admin-form-grid .span-2 { grid-column: span 2; }
.admin-checks {
    display: flex;
    gap: 22px;
    flex-wrap: wrap;
    margin-top: 16px;
}
.admin-form-actions {
    display: flex;
    gap: 8px;
    margin-top: 18px;
}
@media (max-width: 760px) {
    .admin-titlebar { flex-direction: column; }
    .admin-filter-row { grid-template-columns: 1fr; }
    .admin-form-grid { grid-template-columns: 1fr; }
    .admin-form-grid .span-2 { grid-column: auto; }
}
\n\n/* Phase 10.1b.1 - Admin audit log */\n.admin-title-actions {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n    justify-content: flex-end;\n}\n.audit-filter-row {\n    grid-template-columns: minmax(260px, 1.1fr) minmax(210px, .55fr) minmax(100px, .25fr) auto;\n}\n.audit-table { min-width: 1120px; }\n.audit-time, .audit-ip { white-space: nowrap; color: var(--muted); }\n.audit-action { background: #e8eef5; color: #334e68; white-space: nowrap; }\n.audit-change-list { display: grid; gap: 5px; }\n.audit-change {\n    display: grid;\n    grid-template-columns: minmax(120px, .7fr) minmax(100px, 1fr) auto minmax(100px, 1fr);\n    gap: 7px;\n    align-items: baseline;\n}\n.audit-change strong { font-size: .8rem; }\n.audit-old { color: #8a2e2e; overflow-wrap: anywhere; }\n.audit-new { color: #245c24; overflow-wrap: anywhere; }\n.audit-arrow { color: var(--muted); }\n@media (max-width: 760px) {\n    .admin-title-actions { justify-content: flex-start; }\n    .audit-filter-row { grid-template-columns: 1fr; }\n}\n

/* Phase 10.1c - TwelveData assisted stock creation */
.admin-lookup-row {
    display: grid;
    grid-template-columns: minmax(220px, 420px) auto;
    gap: 10px;
    align-items: end;
    margin-bottom: 16px;
}
.admin-lookup-row label > span { display: block; margin-bottom: 5px; font-weight: 700; }
.admin-reference-box {
    display: flex;
    gap: 10px 18px;
    flex-wrap: wrap;
    padding: 11px 12px;
    margin-bottom: 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f7f9fb;
    color: var(--muted);
    font-size: .86rem;
}
.admin-reference-box strong { color: var(--text); }
@media (max-width: 680px) {
    .admin-lookup-row { grid-template-columns: 1fr; }
}


/* Phase 10.2a - Earnings administration */
.admin-earnings-filter-row {
    grid-template-columns: minmax(280px, 1.4fr) minmax(170px, .6fr) minmax(140px, .45fr) auto;
}
.admin-earning-edit {
    max-width: 900px;
}
.admin-pill.pending {
    background: #fff3c4;
    color: #735900;
}
@media (max-width: 900px) {
    .admin-earnings-filter-row {
        grid-template-columns: 1fr 1fr;
    }
}
@media (max-width: 680px) {
    .admin-earnings-filter-row {
        grid-template-columns: 1fr;
    }
}


/* Phase 10.2a.1 - vergangene Earnings in der Admin-Pflege */
.admin-table tr.is-past-earning {
    background: #fff8f0;
}
.admin-pill.past {
    margin-left: 7px;
    background: #f3e2cf;
    color: #7a4a18;
}


/* Phase 10.2a.2 - alle aktiven Aktien in der Earnings-Pflege */
.admin-earnings-filter-row {
    grid-template-columns: minmax(320px, 1.6fr) minmax(190px, .6fr) auto;
}
.admin-table tr.is-missing-earning {
    background: #fafbfc;
}
.admin-pill.missing {
    background: #eef1f4;
    color: #5f6975;
}
@media (max-width: 760px) {
    .admin-earnings-filter-row {
        grid-template-columns: 1fr;
    }
}

/* Phase 10.2b - read-only TradingView Earnings comparison */
.admin-tv-date strong {
    display: block;
}
.admin-tv-time {
    display: block;
    margin-top: 2px;
    font-size: .78rem;
    color: var(--muted);
}
.admin-tv-date .admin-pill {
    margin-top: 5px;
}
.admin-compare {
    display: inline-block;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: .76rem;
    font-weight: 700;
    white-space: nowrap;
}
.admin-compare-ok {
    background: #dff3e7;
    color: #21643a;
}
.admin-compare-neutral {
    background: #eef1f4;
    color: #5f6975;
}
.admin-compare-attention {
    background: #fff3c4;
    color: #735900;
}
.admin-compare-danger {
    background: #fde2df;
    color: #8a2d24;
}

/* Phase 10.2b.1 - daily TradingView snapshot */
.admin-inline-form {
    margin: 0;
}
.admin-tv-snapshot-status {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    align-items: baseline;
    padding: 9px 12px;
    margin: 0 0 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f7f9fb;
    font-size: .84rem;
}


/* Phase 10.2c - TradingView Review Workflow */
.admin-row-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.admin-inline-check {
    min-height: 42px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
}
.admin-inline-check input {
    width: auto;
}
.admin-tv-review-box {
    display: grid;
    gap: 10px;
}
.admin-tv-review-data {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    align-items: center;
}
.admin-tv-review-note {
    margin: 0;
}

/* Phase 10.2d - direct TradingView adoption */
.admin-row-actions .admin-inline-form { margin: 0; display: inline-flex; }


/* Branding 1.0.1 - MuW Invest */
.brand {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    text-decoration: none;
    line-height: 1;
}
.brand img {
    display: block;
    width: auto;
    height: 52px;
    max-width: 190px;
    object-fit: contain;
}
@media (max-width: 760px) {
    .brand img { height: 44px; max-width: 162px; }
}

/* Phase 10.4a - Cron-/Systemstatus */
.system-summary-grid,
.system-job-grid {
    display: grid;
    gap: 16px;
    margin: 0 0 18px;
}
.system-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.system-job-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.system-summary-card,
.system-job-card { display: grid; gap: 10px; }
.system-kicker {
    color: var(--muted);
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.system-big-value { font-size: 1.55rem; line-height: 1.1; }
.system-job-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
}
.system-job-head h2 { margin: 0 0 4px; font-size: 1.05rem; }
.system-job-head p { margin: 0; color: var(--muted); font-size: .82rem; }
.system-state {
    flex: 0 0 auto;
    display: inline-flex;
    padding: 5px 9px;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 700;
}
.system-state-ok { background: #dff3e7; color: #21643a; }
.system-state-running { background: #e3efff; color: #245b91; }
.system-state-neutral { background: #eef1f4; color: #5f6975; }
.system-state-error { background: #fde2df; color: #8a2d24; }
.system-metrics { margin: 0; display: grid; gap: 0; }
.system-metrics > div {
    display: grid;
    grid-template-columns: minmax(105px, .8fr) minmax(0, 1.2fr);
    gap: 12px;
    padding: 8px 0;
    border-bottom: 1px solid var(--line);
}
.system-metrics dt { color: var(--muted); font-size: .78rem; }
.system-metrics dd { margin: 0; font-weight: 650; text-align: right; }
.system-metrics dd small { display: block; margin-top: 2px; color: var(--muted); font-weight: 400; }
.system-job-message { margin: 0; font-size: .82rem; }
.system-last-error { font-size: .8rem; }
.system-last-error summary { cursor: pointer; color: #8a2d24; }
.system-last-error p { margin: 8px 0 3px; color: #8a2d24; }
.system-hint { color: var(--muted); font-size: .82rem; }
@media (max-width: 1050px) {
    .system-job-grid { grid-template-columns: 1fr; }
}
@media (max-width: 700px) {
    .system-summary-grid { grid-template-columns: 1fr; }
    .system-job-head { flex-direction: column; }
}


/* Phase 10.4b - Admin data quality */
.dq-summary-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:12px; margin-bottom:16px; }
.dq-summary { display:flex; flex-direction:column; gap:4px; }
.dq-summary span { color:var(--muted); font-weight:700; font-size:.86rem; }
.dq-summary strong { font-size:1.75rem; }
.dq-filters { display:flex; gap:10px; align-items:end; }
.dq-filters label { min-width:min(420px,100%); }
.dq-filters select { width:100%; min-height:38px; padding:7px 9px; border:1px solid #bfc7d0; border-radius:6px; background:#fff; font:inherit; }
.dq-list { display:grid; gap:10px; }
.dq-row { display:grid; grid-template-columns:220px minmax(300px,1fr) auto; gap:18px; align-items:center; }
.dq-stock { display:flex; flex-direction:column; }
.dq-stock strong { font-size:1.15rem; }
.dq-stock span,.dq-stock small { color:var(--muted); }
.dq-issues { display:flex; flex-wrap:wrap; gap:7px; }
.dq-issue { display:inline-flex; padding:5px 9px; border-radius:999px; font-size:.82rem; font-weight:700; border:1px solid #d7b66b; background:#fff3c4; color:#684f00; }
.dq-issue.earning { border-color:#d79a9a; background:#fff0f0; color:#7b3030; }
.dq-actions { display:flex; flex-wrap:wrap; gap:7px; justify-content:flex-end; }
@media (max-width:1100px) { .dq-summary-grid { grid-template-columns:repeat(3,1fr); } .dq-row { grid-template-columns:180px 1fr; } .dq-actions { grid-column:1/-1; justify-content:flex-start; } }
@media (max-width:680px) { .dq-summary-grid { grid-template-columns:1fr 1fr; } .dq-filters { flex-direction:column; align-items:stretch; } .dq-row { grid-template-columns:1fr; } .dq-actions { grid-column:auto; } }


/* Phase 10.5a - Invitations / registration */
.invite-create-card { margin-bottom: 16px; }
.invite-create-card h2, .detail-card > h2 { margin-top: 0; }
.invite-form { display:flex; gap:10px; align-items:end; flex-wrap:wrap; }
.invite-form label { flex:1 1 360px; }
.invite-form input, .invite-link-box input, .registration-card input {
    width:100%; min-height:40px; padding:8px 10px; border:1px solid #bfc7d0; border-radius:7px; background:#fff; font:inherit;
}
.invite-link-box { margin-top:16px; padding:14px; border:1px solid #b9d7b9; background:#f0faf0; border-radius:8px; }
.invite-link-box p { color:var(--muted); margin:5px 0 9px; }
.invite-link-box small { display:block; margin-top:6px; color:var(--muted); }
.admin-table-wrap { overflow-x:auto; }
.admin-table { width:100%; border-collapse:collapse; }
.admin-table th,.admin-table td { padding:9px 10px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; }
.admin-table th { color:var(--muted); font-size:.8rem; text-transform:uppercase; }
.auth-page { min-height:100vh; display:grid; place-items:center; padding:24px; }
.auth-card { width:min(500px,100%); background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:24px; box-shadow:0 12px 32px rgba(0,0,0,.06); }
.auth-logo { display:block; width:180px; max-width:60%; height:auto; margin:0 0 18px; }
.registration-card label { display:block; font-weight:700; margin:13px 0 0; }
.registration-card label input { display:block; margin-top:6px; font-weight:400; }
.auth-submit { width:100%; margin-top:10px; }
.admin-notice.success { border:1px solid #a8d0a8; background:#eef9ee; color:#245c24; }


/* Phase 10.5b / 19.22 - User administration */
.user-action-row { display:flex; flex-wrap:wrap; gap:7px; }
.user-action-row form { margin:0; }
.button.small { min-height:32px; padding:5px 9px; font-size:.9rem; }
.user-admin-table td:last-child { min-width:145px; }
.user-action-menu { width:100%; max-width:270px; }
.user-action-menu > summary {
    display:inline-flex;
    align-items:center;
    gap:7px;
    cursor:pointer;
    list-style:none;
    user-select:none;
}
.user-action-menu > summary::-webkit-details-marker { display:none; }
.user-action-menu > summary::after { content:'▾'; font-size:.78em; transition:transform .15s ease; }
.user-action-menu[open] > summary::after { transform:rotate(180deg); }
.user-action-menu-panel {
    display:grid;
    gap:6px;
    width:270px;
    margin-top:7px;
    padding:9px;
    border:1px solid var(--line);
    border-radius:8px;
    background:#f8fafc;
}
.user-action-menu-panel form { margin:0; }
.user-action-menu-panel .button { width:100%; justify-content:flex-start; text-align:left; }
.user-action-menu-panel .muted { padding:4px 5px; }
.user-action-menu-panel .user-action-danger {
    margin-top:4px;
    padding-top:9px;
    border-top:1px solid #dfb0b0;
}
.admin-card-actions { display:flex; gap:8px; flex-wrap:wrap; }


/* Phase 10.5c - Password management */
.password-card { max-width:720px; }
.password-card form { display:grid; gap:12px; }
.password-card input, .auth-card input {
    width:100%; min-height:40px; padding:8px 10px;
    border:1px solid #bfc7d0; border-radius:7px; background:#fff; font:inherit;
}
.auth-check { display:flex; align-items:center; gap:8px; margin-top:10px; font-weight:500; }
.auth-check input { width:auto; min-height:auto; }
.auth-help { margin-top:14px; }


/* Phase 10.5c.2 - Self-service profile */
.profile-card { max-width:760px; }
.profile-card form { display:grid; gap:14px; }
.profile-card input { width:100%; min-height:40px; padding:8px 10px; border:1px solid #bfc7d0; border-radius:7px; background:#fff; font:inherit; }
.profile-security-note { padding:12px 14px; border:1px solid var(--line); background:#f7f9fb; border-radius:8px; }
.profile-security-note p { margin:4px 0 0; color:var(--muted); }
.profile-password-link { max-width:760px; margin-top:14px; display:flex; justify-content:space-between; gap:16px; align-items:center; }
.profile-password-link p { margin:3px 0 0; }
@media (max-width:680px) { .profile-password-link { align-items:flex-start; flex-direction:column; } }


/* Phase 10.5c.3 - Admin e-mail bootstrap for legacy accounts */
.user-email-edit { margin-top:5px; }
.user-email-edit summary { cursor:pointer; color:#145ea8; font-size:.82rem; }
.user-email-form { display:flex; gap:6px; margin-top:6px; min-width:280px; }
.user-email-form input {
    flex:1 1 210px; min-width:180px; min-height:32px; padding:5px 7px;
    border:1px solid #bfc7d0; border-radius:6px; background:#fff; font:inherit; font-size:.9rem;
}
.user-reset-unavailable { display:inline-block; padding:5px 0; }


/* Phase 10.5c.4 - Privacy: mask e-mail addresses in admin views */
.private-email {
    display:inline-grid;
    align-items:center;
    cursor:help;
    max-width:100%;
}
.private-email-masked,
.private-email-full {
    grid-area:1 / 1;
    white-space:nowrap;
}
.private-email-full {
    visibility:hidden;
}
.private-email:hover .private-email-masked,
.private-email:focus .private-email-masked,
.private-email:focus-within .private-email-masked {
    visibility:hidden;
}
.private-email:hover .private-email-full,
.private-email:focus .private-email-full,
.private-email:focus-within .private-email-full {
    visibility:visible;
}


/* Phase 11.1a - Portfolio basic configuration */
.portfolio-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-bottom:16px; }
.portfolio-card.is-inactive { opacity:.72; }
.portfolio-card-head { display:flex; justify-content:space-between; gap:14px; align-items:flex-start; }
.portfolio-card h2, .portfolio-form-card h2 { margin:0 0 5px; }
.portfolio-meta { color:var(--muted); }
.portfolio-badges { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.portfolio-details { display:grid; grid-template-columns:1fr 1fr; gap:0; margin:14px 0; border-top:1px solid var(--line); border-left:1px solid var(--line); }
.portfolio-details div { padding:9px 10px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.portfolio-details dt { color:var(--muted); font-size:.78rem; text-transform:uppercase; font-weight:700; }
.portfolio-details dd { margin:3px 0 0; font-weight:700; }
.portfolio-actions { display:flex; gap:7px; flex-wrap:wrap; }
.portfolio-actions form { margin:0; }
.portfolio-form-card { max-width:900px; }
.portfolio-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.portfolio-form input[type="text"] { width:100%; min-height:40px; padding:8px 10px; border:1px solid #bfc7d0; border-radius:7px; background:#fff; font:inherit; }
.portfolio-primary-check { grid-column:1/-1; display:flex; align-items:center; gap:8px; }
.portfolio-primary-check input { width:auto; }
.portfolio-form-actions { grid-column:1/-1; display:flex; gap:8px; flex-wrap:wrap; }
@media (max-width:800px) {
    .portfolio-grid { grid-template-columns:1fr; }
    .portfolio-form { grid-template-columns:1fr; }
    .portfolio-primary-check,.portfolio-form-actions { grid-column:auto; }
}


/* Phase 11.1a.1 - Mask broker account identifiers */
.private-account {
    display:inline-grid;
    align-items:center;
    cursor:help;
    max-width:100%;
}
.private-account-masked,
.private-account-full {
    grid-area:1 / 1;
    white-space:nowrap;
}
.private-account-full { visibility:hidden; }
.private-account:hover .private-account-masked,
.private-account:focus .private-account-masked,
.private-account:focus-within .private-account-masked { visibility:hidden; }
.private-account:hover .private-account-full,
.private-account:focus .private-account-full,
.private-account:focus-within .private-account-full { visibility:visible; }


/* Phase 11.1b - Current portfolio holdings snapshot */
.portfolio-holdings-page { width:min(1550px,calc(100% - 32px)); }
.portfolio-readonly-note {
    display:flex; gap:10px 18px; align-items:center; flex-wrap:wrap;
    border:1px solid #bfd2e4; background:#eef5fb; border-radius:9px;
    padding:11px 14px; margin-bottom:14px;
}
.portfolio-readonly-note span { color:var(--muted); }
.portfolio-summary-grid {
    display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
    gap:12px; margin-bottom:14px;
}
.portfolio-summary-grid .detail-card { display:flex; flex-direction:column; gap:5px; }
.portfolio-asof { font-size:1.05rem; }
.portfolio-section { margin-bottom:14px; }
.portfolio-section-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:8px; }
.portfolio-section-head h2 { margin:0; font-size:1.1rem; }
.portfolio-section-head span { color:var(--muted); font-size:.9rem; }
@media (max-width:900px) {
    .portfolio-summary-grid { grid-template-columns:1fr 1fr; }
}
@media (max-width:560px) {
    .portfolio-summary-grid { grid-template-columns:1fr; }
}


/* Phase 11.2a - IBKR FlexQuery read-only preview */
.flex-run-card { margin-bottom:14px; }
.flex-run-card h2 { margin-top:0; }
.flex-run-card p { color:var(--muted); }
.flex-summary { margin-top:14px; }
button:disabled { opacity:.55; cursor:not-allowed; }

/* Phase 11.2a.1 */
.portfolio-form-section-title {grid-column:1/-1;margin-top:4px;padding-top:14px;border-top:1px solid var(--line);font-weight:800}
.portfolio-form input[type="password"],.portfolio-form input[type="number"] {width:100%;min-height:40px;padding:8px 10px;border:1px solid #bfc7d0;border-radius:7px;background:#fff;font:inherit}

/* Phase 11.3b.1 */
.portfolio-help-links{display:flex;gap:14px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:720px){.portfolio-help-links{justify-content:flex-start}}


/* Phase 12.1 - Earnings trade history */
.earnings-assignment-card { margin-top:16px; }
.earnings-select-table input[type="checkbox"] { transform:scale(1.15); }
.earnings-create-grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:12px;
    margin:16px 0 10px;
}
.earnings-create-grid select,
.earnings-create-grid input[type="date"],
.earnings-create-grid input[type="text"] {
    width:100%;
    min-height:40px;
    padding:8px 10px;
    border:1px solid #bfc7d0;
    border-radius:7px;
    background:#fff;
    font:inherit;
}
.earnings-notes { grid-column:1/-1; }
.earnings-status-value { font-size:1rem; }
@media(max-width:800px) {
    .earnings-create-grid { grid-template-columns:1fr; }
    .earnings-notes { grid-column:auto; }
}

/* Phase 12.2 - Earnings lifecycle */
.earnings-lifecycle-card { margin-top:16px; }
.earnings-leg-lifecycle { padding:14px 0; border-top:1px solid var(--line); }
.earnings-leg-lifecycle:first-of-type { border-top:0; }
.earnings-leg-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.earnings-leg-head strong { display:block; }
.earnings-leg-head span { color:var(--muted); }
.earnings-leg-progress { margin:8px 0; color:var(--muted); }
.earnings-close-form { display:flex; gap:10px; align-items:end; flex-wrap:wrap; margin-top:10px; }
.earnings-close-form label { flex:1 1 520px; }
.earnings-close-form select { width:100%; min-height:40px; padding:8px 10px; border:1px solid #bfc7d0; border-radius:7px; background:#fff; font:inherit; }
.earnings-expire-form { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:10px; }


/* Phase 12.3 - automatic Earnings trade suggestions */
.earnings-suggestions-card { margin-bottom:16px; }
.earnings-suggestion-list { display:grid; gap:12px; }
.earnings-suggestion {
    border:1px solid var(--line);
    border-radius:9px;
    overflow:hidden;
    background:#fff;
}
.earnings-suggestion-head {
    display:flex;
    justify-content:space-between;
    gap:18px;
    padding:14px 16px;
    background:#f8fafb;
    border-bottom:1px solid var(--line);
}
.earnings-suggestion-symbol { font-size:1.25rem; font-weight:850; }
.earnings-suggestion-meta { margin-top:3px; color:var(--muted); }
.earnings-suggestion-side { text-align:right; display:flex; flex-direction:column; gap:2px; }
.earnings-suggestion-side span { color:var(--muted); font-size:.88rem; }
.earnings-suggestion-legs {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
}
.earnings-suggestion-leg {
    padding:12px 16px;
    display:flex;
    flex-direction:column;
    gap:3px;
    border-right:1px solid var(--line);
    border-bottom:1px solid var(--line);
}
.earnings-suggestion-leg span { color:var(--muted); font-size:.9rem; }
.earnings-suggestion-footer {
    padding:12px 16px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
}
.earnings-suggestion-footer > div {
    display:flex;
    gap:18px;
    flex-wrap:wrap;
    color:var(--muted);
    font-size:.9rem;
}
.earnings-suggestion-footer strong { color:var(--text); }
@media(max-width:760px) {
    .earnings-suggestion-head,
    .earnings-suggestion-footer { flex-direction:column; align-items:flex-start; }
    .earnings-suggestion-side { text-align:left; }
}


/* Phase 12.4a - Earnings Performance */
.performance-kpi-grid {
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:12px;
    margin-bottom:12px;
}
.performance-kpi { display:flex; flex-direction:column; gap:4px; }
.performance-secondary-grid,
.performance-breakdown-grid {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin-bottom:12px;
}
.performance-secondary-grid h2 { margin:0 0 10px; font-size:1.08rem; }
.performance-definition-list { margin:0; display:grid; gap:0; }
.performance-definition-list > div {
    display:flex;
    justify-content:space-between;
    gap:16px;
    padding:8px 0;
    border-bottom:1px solid var(--line);
}
.performance-definition-list > div:last-child { border-bottom:0; }
.performance-definition-list dt { color:var(--muted); }
.performance-definition-list dd { margin:0; font-weight:750; text-align:right; }
.performance-positive { color:#24713a; font-weight:800; }
.performance-negative { color:#a33232; font-weight:800; }
.performance-history { margin-top:12px; }
.performance-filter-links {
    display:flex;
    gap:6px;
    flex-wrap:wrap;
}
.performance-filter-links a {
    text-decoration:none;
    padding:5px 9px;
    border:1px solid var(--line);
    border-radius:999px;
    background:#fff;
    color:var(--text);
    font-size:.88rem;
}
.performance-filter-links a.active {
    background:#253b53;
    border-color:#253b53;
    color:#fff;
}
@media(max-width:1000px) {
    .performance-kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .performance-breakdown-grid { grid-template-columns:1fr; }
}
@media(max-width:680px) {
    .performance-kpi-grid,
    .performance-secondary-grid { grid-template-columns:1fr; }
}


/* Phase 13.1 - common personal navigation and portfolio separation */
.userbar { position:relative; }
.user-menu { position:relative; }
.user-menu > summary {
    list-style:none;
    cursor:pointer;
    padding:7px 10px;
    border-radius:7px;
    color:var(--muted);
    user-select:none;
}
.user-menu > summary::-webkit-details-marker { display:none; }
.user-menu > summary::after {
    content:"▾";
    display:inline-block;
    margin-left:7px;
    font-size:.72em;
}
.user-menu[open] > summary,
.user-menu > summary:hover { background:#edf2f7; color:var(--text); }
.user-menu-panel {
    position:absolute;
    right:0;
    top:calc(100% + 7px);
    min-width:210px;
    padding:6px;
    border:1px solid var(--line);
    border-radius:9px;
    background:#fff;
    box-shadow:0 12px 30px rgba(22,34,46,.14);
    z-index:50;
}
.user-menu-panel a {
    display:block;
    padding:9px 11px;
    border-radius:6px;
    color:var(--text);
    text-decoration:none;
    white-space:nowrap;
}
.user-menu-panel a:hover { background:#edf2f7; }
.user-menu-panel a:last-child {
    margin-top:5px;
    border-top:1px solid var(--line);
    border-radius:0 0 6px 6px;
}
.portfolio-working-actions { align-items:center; }
.portfolio-overview-grid .portfolio-card { min-height:0; }

@media(max-width:680px) {
    .user-menu-panel { left:0; right:auto; }
}


/* Phase 13.3 - LIVE / PAPER portfolio type */
.admin-status.live {
    background:#e7f5eb;
    color:#27683b;
}
.admin-status.paper {
    background:#fff3d8;
    color:#805b08;
}


/* Phase 13.4 - capital & risk capacity */
.portfolio-capital-section { margin-top:14px; }
.capital-kpi-grid {
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:12px;
    margin:12px 0;
}
.capital-kpi {
    border:1px solid var(--line);
    border-radius:10px;
    padding:14px 16px;
    background:#fff;
    min-width:0;
}
.capital-kpi span {
    display:block;
    color:var(--muted);
    text-transform:uppercase;
    letter-spacing:.04em;
    font-size:.78rem;
    font-weight:700;
}
.capital-kpi strong {
    display:block;
    margin-top:5px;
    font-size:1.45rem;
    line-height:1.1;
}
.capital-kpi small { display:block; margin-top:5px; color:var(--muted); }
.capital-breakdown {
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    border:1px solid var(--line);
    border-radius:9px;
    overflow:hidden;
    margin:0;
}
.capital-breakdown > div { padding:11px 14px; border-right:1px solid var(--line); }
.capital-breakdown > div:last-child { border-right:0; }
.capital-breakdown dt { color:var(--muted); font-size:.82rem; }
.capital-breakdown dd { margin:4px 0 0; font-weight:700; }
.capital-model-note { margin:10px 2px 0; }

.live-capital-strip {
    border:1px solid var(--line);
    border-radius:10px;
    background:#fff;
    margin:0 0 14px;
    overflow:hidden;
}
.live-capital-strip-head {
    display:flex;
    align-items:center;
    gap:9px;
    padding:10px 14px;
    border-bottom:1px solid var(--line);
    color:var(--muted);
}
.live-capital-strip-head strong { color:var(--text); }
.live-capital-kpis {
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
}
.live-capital-kpis > div { padding:11px 14px; border-right:1px solid var(--line); }
.live-capital-kpis > div:last-child { border-right:0; }
.live-capital-kpis span { display:block; color:var(--muted); font-size:.78rem; text-transform:uppercase; font-weight:700; }
.live-capital-kpis strong { display:block; margin-top:3px; font-size:1.1rem; }
.live-capital-caption { padding:7px 14px; border-top:1px solid var(--line); color:var(--muted); font-size:.78rem; }
.live-capital-caption.error { color:#8a2f2f; }

@media(max-width:900px) {
    .capital-kpi-grid, .capital-breakdown, .live-capital-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .capital-breakdown > div:nth-child(2), .live-capital-kpis > div:nth-child(2) { border-right:0; }
    .capital-breakdown > div:nth-child(-n+2), .live-capital-kpis > div:nth-child(-n+2) { border-bottom:1px solid var(--line); }
}
@media(max-width:560px) {
    .capital-kpi-grid, .capital-breakdown, .live-capital-kpis { grid-template-columns:1fr; }
    .capital-breakdown > div, .live-capital-kpis > div { border-right:0; border-bottom:1px solid var(--line); }
    .capital-breakdown > div:last-child, .live-capital-kpis > div:last-child { border-bottom:0; }
    .live-capital-strip-head { flex-wrap:wrap; }
}

/* Phase 13.4a: secondary trading-currency values */
.capital-kpi small,
.capital-breakdown dd small,
.live-capital-kpis small {
    display: block;
    margin-top: .25rem;
    font-size: .82rem;
    font-weight: 500;
    color: var(--muted, #667085);
}


/* Phase 13.5 - FlexQuery help */
.portfolio-form-section-title-with-help {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
}
.portfolio-form-section-title-with-help a,
.field-help-link {
    font-size:.84rem;
    font-weight:600;
    text-decoration:none;
}
.flex-help-jump {
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin:0 0 14px;
}
.help-content {
    margin-bottom:14px;
}
.help-content h2 {
    margin-top:0;
}
.help-content h3 {
    margin:22px 0 8px;
}
.help-content li {
    margin:5px 0;
}
.help-section-heading {
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:18px;
    margin-bottom:10px;
}
.help-section-heading h2 {
    margin:3px 0 0;
}
.flex-help-fields {
    display:flex;
    flex-wrap:wrap;
    gap:7px;
    margin:10px 0 12px;
}
.flex-help-fields span {
    padding:6px 9px;
    border:1px solid var(--line);
    border-radius:999px;
    background:#f6f8fa;
    font-size:.88rem;
    font-weight:600;
}
@media(max-width:680px) {
    .portfolio-form-section-title-with-help,
    .help-section-heading {
        align-items:flex-start;
        flex-direction:column;
    }
}


/* Phase 13.6.1 - invitation management */
.invite-list-head {
    align-items:flex-start;
}
.invite-list-head > div > h2 {
    margin-bottom:3px;
}
.invite-list-head > div > span {
    color:var(--muted);
    font-size:.9rem;
}
.invite-row-actions {
    display:flex;
    align-items:center;
    gap:6px;
    flex-wrap:wrap;
}
.invite-row-actions form {
    margin:0;
}
.button.danger {
    border-color:#d8b5b5;
    color:#8b3030;
    background:#fff;
}
.button.danger:hover {
    background:#fff1f1;
    border-color:#c98f8f;
}
@media(max-width:760px) {
    .invite-list-head {
        flex-direction:column;
    }
}


/* Phase 13.7a - TOTP MFA */
.mfa-status-card {
    display:flex;
    justify-content:space-between;
    gap:18px;
    align-items:flex-start;
}
.mfa-status-card h2 { margin:10px 0 4px; }
.mfa-secret-box {
    margin:14px 0 8px;
    padding:14px;
    border:1px solid var(--line);
    border-radius:8px;
    background:#f7f9fb;
}
.mfa-secret-box span {
    display:block;
    color:var(--muted);
    font-size:.82rem;
    font-weight:700;
    margin-bottom:6px;
}
.mfa-secret-box code {
    display:block;
    font-size:1.12rem;
    font-weight:750;
    letter-spacing:.09em;
    overflow-wrap:anywhere;
    user-select:all;
}
.mfa-uri-details {
    margin:12px 0 22px;
}
.mfa-uri-details code {
    display:block;
    margin-top:8px;
    padding:10px;
    background:#f7f9fb;
    border:1px solid var(--line);
    border-radius:7px;
    overflow-wrap:anywhere;
    user-select:all;
}
.mfa-confirm-form,
.mfa-inline-form {
    display:flex;
    gap:12px;
    align-items:flex-end;
    flex-wrap:wrap;
}
.mfa-confirm-form label { width:190px; }
.mfa-inline-form label { width:min(360px, 100%); }
.mfa-confirm-form input,
.mfa-inline-form input {
    width:100%;
    min-height:38px;
    padding:7px 9px;
    border:1px solid #bfc7d0;
    border-radius:6px;
    background:#fff;
    font:inherit;
}
.mfa-confirm-form input {
    font-size:1.2rem;
    letter-spacing:.15em;
    font-variant-numeric:tabular-nums;
}
.mfa-restart-form { margin-top:14px; }
.mfa-recovery-card {
    border-color:#d8ba55;
    background:#fffdf4;
    margin-bottom:16px;
}
.mfa-recovery-card h2 { margin-top:0; }
.mfa-recovery-grid {
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:8px;
    max-width:520px;
    margin:14px 0;
}
.mfa-recovery-grid code {
    display:block;
    padding:9px 11px;
    border:1px solid #e2d39b;
    border-radius:6px;
    background:#fff;
    font-size:1rem;
    letter-spacing:.06em;
    user-select:all;
}
@media(max-width:680px) {
    .mfa-recovery-grid { grid-template-columns:1fr; }
}


/* Phase 13.7a1 - local MFA QR code */
.mfa-qr-layout {
    display:grid;
    grid-template-columns:minmax(250px, 320px) minmax(280px, 1fr);
    gap:26px;
    align-items:start;
    margin:16px 0 22px;
}
.mfa-qr-layout h3 {
    margin-top:0;
}
.mfa-qr-box {
    width:min(280px, 100%);
    aspect-ratio:1;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:14px;
    border:1px solid var(--line);
    border-radius:10px;
    background:#fff;
    color:var(--muted);
    font-size:.88rem;
    text-align:center;
}
.mfa-qr-box svg {
    display:block;
    width:100%;
    height:100%;
}
.mfa-qr-box.has-error {
    background:#fff5f5;
}
@media(max-width:760px) {
    .mfa-qr-layout {
        grid-template-columns:1fr;
    }
}


/* Phase 13.7b - MFA login challenge */
.mfa-challenge-card { max-width:460px; }
.mfa-challenge-input {
    width:100%;
    min-height:44px;
    padding:8px 10px;
    border:1px solid #bfc7d0;
    border-radius:6px;
    background:#fff;
    font:inherit;
    font-size:1.15rem;
    font-variant-numeric:tabular-nums;
    letter-spacing:.08em;
}
.mfa-login-help {
    margin:18px 0 0;
    padding-top:14px;
    border-top:1px solid var(--line);
    color:var(--muted);
    font-size:.9rem;
}
.mfa-login-help summary { cursor:pointer; color:var(--text); font-weight:650; }
.mfa-login-help code { white-space:nowrap; }
.mfa-cancel-form { margin-top:16px; }

/* Phase 19.2 - independent stock backfills */
.admin-stock-imports{margin-top:18px}.admin-import-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.admin-import-heading h2,.admin-import-card h3{margin-top:0}.admin-import-heading p,.admin-import-card p{color:var(--muted)}.admin-import-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.admin-import-card{display:flex;flex-direction:column;align-items:flex-start;padding:16px;border:1px solid var(--line);border-radius:9px;background:#fafbfc}.admin-import-card p{min-height:52px;margin-top:0}.admin-import-card textarea{width:100%;min-height:176px;margin:0 0 14px;padding:10px 12px;border:1px solid var(--line);border-radius:7px;background:#fff;font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;resize:vertical}.admin-import-card .button{margin-top:auto}@media(max-width:800px){.admin-import-grid{grid-template-columns:1fr}.admin-import-card p{min-height:0}.admin-import-heading{flex-direction:column}}

/* Phase 19.3 - next earnings in stock workflow */
.admin-next-earning-card{margin-top:18px}.admin-next-earning-form{display:grid;grid-template-columns:minmax(180px,1fr) minmax(230px,1fr) auto auto;gap:14px;align-items:end}.admin-next-earning-form label>span{display:block;margin-bottom:6px;font-weight:700}.admin-next-earning-form input[type=date],.admin-next-earning-form select{width:100%}.admin-next-earning-confirm{display:flex!important;align-items:center;gap:8px;min-height:42px;white-space:nowrap}.admin-next-earning-confirm>span{display:inline!important;margin:0!important}.admin-next-earning-ir{margin:14px 0 0}@media(max-width:960px){.admin-next-earning-form{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.admin-next-earning-form{grid-template-columns:1fr}.admin-next-earning-confirm{min-height:0}}

/* Phase 19.5 - initial Activity Flex snapshot onboarding */
.portfolio-onboarding-notice{display:flex;align-items:center;justify-content:space-between;gap:18px}.portfolio-onboarding-notice>div{display:grid;gap:3px}.portfolio-onboarding-notice .button{flex:0 0 auto}@media(max-width:700px){.portfolio-onboarding-notice{align-items:flex-start;flex-direction:column}}

/* Phase 15.5a - Historical Earnings Trade Discovery */
.historical-discovery-form{display:grid;gap:14px;max-width:780px}.historical-discovery-form input[type=file]{display:block;margin-top:6px}.historical-discovery-form fieldset{display:flex;gap:18px;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;padding:12px 14px}.historical-discovery-form legend{padding:0 6px;font-weight:700}.historical-discovery-summary{margin:16px 0}.historical-discovery-list{display:grid;gap:12px}.historical-discovery-item{border:1px solid var(--line);border-radius:9px;padding:14px;background:#fff}.historical-discovery-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:12px}.historical-discovery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.historical-discovery-grid>div{padding:10px 12px;border:1px solid #e2e7ec;border-radius:7px;background:#fafbfc}.historical-discovery-grid strong,.historical-discovery-grid small{display:block}.historical-discovery-grid small{margin-top:3px;color:var(--muted)}@media(max-width:760px){.historical-discovery-grid{grid-template-columns:1fr}.historical-discovery-head{flex-direction:column}}

/* Phase 19.12 - manual earnings mapping for historical symbol changes */
.historical-manual-mapping{margin-top:12px;padding:12px;border:1px solid #d8bd75;border-radius:8px;background:#fffaf0}.historical-manual-mapping>label{font-weight:700}.historical-manual-mapping-grid{display:grid;grid-template-columns:minmax(170px,.7fr) minmax(150px,.6fr) minmax(260px,1.5fr);gap:12px;margin-top:10px}.historical-manual-mapping-grid label>span{display:block;margin-bottom:5px}.historical-manual-mapping-grid input,.historical-manual-mapping-grid select{width:100%}@media(max-width:850px){.historical-manual-mapping-grid{grid-template-columns:1fr}}

/* Phase 19.16 - grouped historical import preview */
.historical-discovery-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.historical-discovery-filters input{position:absolute;opacity:0;pointer-events:none}.historical-discovery-filters label{padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;font-weight:700}.historical-discovery-filters label strong{display:inline-block;min-width:1.4em;margin-left:4px;text-align:center}.historical-discovery-filters input:checked+label{background:#233e59;color:#fff;border-color:#233e59}.historical-discovery-group-heading{display:flex;justify-content:space-between;align-items:center;padding:8px 2px 3px;color:var(--muted)}.historical-discovery-group-heading strong{color:var(--text);font-size:1.05rem}.historical-discovery-import-form:has(#hed-filter-review:checked) [data-candidate-group]:not([data-candidate-group="review"]),.historical-discovery-import-form:has(#hed-filter-ready:checked) [data-candidate-group]:not([data-candidate-group="ready"]),.historical-discovery-import-form:has(#hed-filter-locked:checked) [data-candidate-group]:not([data-candidate-group="locked"]){display:none}

/* Phase 19.13 - assignment stock hedge reconstruction */
.historical-stock-hedge{display:grid;gap:3px;margin-top:12px;padding:12px;border:1px solid #9fc9ad;border-radius:8px;background:#f4fbf6}.historical-stock-hedge span,.historical-stock-hedge small{color:var(--muted)}

/* Phase 19.14a - persistent assignment review inbox */
.assignment-review-list{display:grid;gap:12px}.assignment-review-item{border:1px solid var(--line);border-radius:9px;padding:14px;background:#fafbfc}.assignment-review-item p{margin:8px 0;color:var(--muted)}.assignment-review-meta{display:flex;gap:8px 18px;flex-wrap:wrap;font-size:.92rem}

/* Phase 19.14a.1 - batch closing assignment */
.earnings-close-selection{display:grid;gap:7px;min-width:0;margin:0;padding:10px 12px;border:1px solid var(--line);border-radius:7px}.earnings-close-selection legend{padding:0 5px;font-weight:700}.earnings-close-selection label{display:flex;align-items:flex-start;gap:8px}.earnings-close-selection input{margin-top:3px}

/* Phase 19.17 - reset portfolio data while preserving configuration */
.portfolio-reset-card{margin-top:18px;border-color:#e2a2a2;background:#fff8f8}.portfolio-reset-card h2{margin-top:0;color:#8e2424}.portfolio-reset-card p{max-width:920px}.portfolio-reset-form{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-top:16px}.portfolio-reset-form label{flex:1 1 420px}.portfolio-reset-form input[type=text]{width:100%;margin-top:6px}.button.danger{background:#a52b2b;border-color:#a52b2b;color:#fff}.button.danger:hover{background:#862222;border-color:#862222}

/* Phase 19.18 - bulk select ready historical candidates */
.historical-discovery-group-heading>span{display:flex;align-items:center;gap:14px}.historical-select-all{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-weight:700;cursor:pointer}

/* Phase 19.19 - performance period presets */
.performance-period-controls{display:grid;grid-template-columns:minmax(310px,.7fr) minmax(520px,1.3fr);gap:12px;margin-bottom:14px}.performance-period-controls .filters{margin:0}.performance-preset-filter{display:flex;align-items:flex-end;gap:10px}.performance-preset-filter label{flex:1}.performance-preset-filter select{width:100%}@media(max-width:900px){.performance-period-controls{grid-template-columns:1fr}}

/* Phase 17.1 - Help center */
.help-center-page{max-width:1240px}.help-intro{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr);gap:18px;align-items:stretch;margin-bottom:16px}.help-intro-main h2,.help-safety h2{margin-top:0}.help-start-list{display:grid;gap:10px;margin:14px 0 0;padding:0;list-style:none;counter-reset:help-step}.help-start-list li{counter-increment:help-step;display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start}.help-start-list li::before{content:counter(help-step);display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#253b53;color:#fff;font-weight:800}.help-start-list strong,.help-start-list span{display:block}.help-start-list span{margin-top:2px;color:var(--muted);font-size:.92rem}.help-safety{background:#f5f8fb}.help-safety ul{margin-bottom:0;padding-left:20px}.help-topic-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.help-topic-card{display:flex;flex-direction:column}.help-topic-card h2{margin:0 0 7px;font-size:1.08rem}.help-topic-card p{margin:0 0 14px;color:var(--muted);flex:1}.help-topic-links{display:flex;gap:8px;flex-wrap:wrap}.help-topic-card.is-upcoming{background:#fafbfc}.help-topic-card.is-upcoming .admin-status{align-self:flex-start;margin-bottom:9px}.help-existing-note{margin-top:16px}.help-existing-note h2{margin-top:0}@media(max-width:960px){.help-topic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.help-intro{grid-template-columns:1fr}}@media(max-width:620px){.help-topic-grid{grid-template-columns:1fr}}

/* Phase 17.2 - Earnings help */
.help-article-page{max-width:1120px}.help-article-lead{font-size:1.02rem}.help-mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0}.help-mode-card{border:1px solid var(--line);border-radius:8px;padding:14px;background:#fafbfc}.help-mode-card h3{margin:0 0 7px}.help-definition-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line);margin:12px 0}.help-definition-grid>div{padding:11px 12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.help-definition-grid dt{font-weight:800}.help-definition-grid dd{margin:4px 0 0;color:var(--muted)}.help-reading-list{display:grid;gap:10px;padding:0;list-style:none}.help-reading-list li{border-left:4px solid #253b53;padding:4px 0 4px 12px}.help-reading-list strong,.help-reading-list span{display:block}.help-reading-list span{color:var(--muted);margin-top:2px}.help-workflow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;counter-reset:workflow;margin:14px 0}.help-workflow>div{counter-increment:workflow;border:1px solid var(--line);border-radius:8px;padding:12px;background:#fff}.help-workflow>div::before{content:counter(workflow);display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:#253b53;color:#fff;font-weight:800;margin-bottom:8px}.help-workflow strong,.help-workflow span{display:block}.help-workflow span{color:var(--muted);font-size:.9rem;margin-top:3px}.help-callout{padding:12px 14px;border:1px solid #e2d39b;border-radius:8px;background:#fff9e8}.help-callout strong{display:block;margin-bottom:4px}@media(max-width:900px){.help-workflow{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.help-mode-grid,.help-definition-grid,.help-workflow{grid-template-columns:1fr}}

/* Phase 19.23 - portfolio setup and Activity FlexQuery status */
.portfolio-flex-warning{display:grid;gap:3px;margin:14px 0;padding:11px 13px;border:1px solid #dfbd65;border-radius:8px;background:#fff8e5;color:#684b08}.portfolio-flex-warning span{font-size:.92rem}.portfolio-flex-warning a{color:inherit;font-weight:700;text-decoration:underline}.portfolio-history-import-card{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:18px}.portfolio-history-import-card h2{margin:0 0 6px}.portfolio-history-import-card p{max-width:900px;margin:0;color:var(--muted)}.portfolio-history-import-card .button{flex:0 0 auto}@media(max-width:760px){.portfolio-history-import-card{align-items:flex-start;flex-direction:column}}

/* Phase 19.24 - actionable assignment review inbox */
.assignment-review-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:13px;padding-top:12px;border-top:1px solid var(--line)}.assignment-review-actions form{margin:0}

/* Phase 19.25 - visible open assignment reviews */
.button.has-review-count{display:inline-flex;align-items:center;gap:7px;border-color:#d39a24}.review-count-badge{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#b77908;color:#fff;font-size:.78rem;font-weight:800;line-height:1}

/* Phase 20.5a - guided onboarding */
.onboarding-entry-notice{margin-bottom:18px;padding:14px 16px;border:1px solid #9dbbd2;border-radius:9px;background:#f1f7fb}.onboarding-entry-notice span{color:var(--muted)}
.onboarding-page{max-width:1120px}.onboarding-progress{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:16px}.onboarding-progress strong,.onboarding-progress span{display:block}.onboarding-progress span{margin-top:4px;color:var(--muted)}.onboarding-progress progress{width:min(360px,40%);height:18px;accent-color:#287443}
.onboarding-step-list{display:grid;gap:12px}.onboarding-step{display:grid;grid-template-columns:42px minmax(0,1fr);gap:14px;align-items:start}.onboarding-step h2{margin:0 0 6px;font-size:1.12rem}.onboarding-step h2 small{color:var(--muted);font-size:.78rem;font-weight:600}.onboarding-step p{margin:0 0 12px;color:var(--muted)}.onboarding-step-state{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#253b53;color:#fff;font-weight:800}.onboarding-step.is-complete .onboarding-step-state{background:#287443}.onboarding-step.is-complete{border-color:#a9d0b5;background:#f7fcf8}.onboarding-portfolios{margin-top:16px}.onboarding-portfolios h2{margin-top:0}.onboarding-page>.help-callout{margin-top:16px}
@media(max-width:700px){.onboarding-progress{align-items:flex-start;flex-direction:column}.onboarding-progress progress{width:100%}.onboarding-step{grid-template-columns:34px minmax(0,1fr)}.onboarding-step-state{width:30px;height:30px}}

/* Phase 21.3 - remembered device management */
.remembered-devices-card{max-width:960px;margin-top:14px}.remembered-devices-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.remembered-devices-heading p{margin:4px 0 0}.remembered-device-list{display:grid;gap:10px;margin-top:16px}.remembered-device-item{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 14px;border:1px solid var(--line);border-radius:8px;background:#fafbfc}.remembered-device-item strong{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.remembered-device-item dl{display:flex;gap:12px 24px;flex-wrap:wrap;margin:8px 0 0}.remembered-device-item dl div{display:grid;gap:2px}.remembered-device-item dt{color:var(--muted);font-size:.8rem}.remembered-device-item dd{margin:0;font-size:.9rem}.remembered-device-item form{margin:0;flex:0 0 auto}@media(max-width:720px){.remembered-device-item{align-items:flex-start;flex-direction:column}.remembered-device-item form,.remembered-device-item .button{width:100%}}

/* Phase 21.3b - revoke all other remembered devices */
.remembered-devices-revoke-others{display:flex;justify-content:flex-end;margin:14px 0 0}
@media(max-width:720px){.remembered-devices-revoke-others .button{width:100%}}

/* Phase 21.4a - portfolio plausibility traffic light */
.portfolio-health-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--text);font-size:.78rem;font-weight:750;text-decoration:none}.portfolio-health-dot{display:inline-block;width:11px;height:11px;border-radius:50%;background:#87919d;box-shadow:0 0 0 3px rgba(135,145,157,.14)}.severity-ok .portfolio-health-dot,.portfolio-health-dot.severity-ok{background:#2f8a4c;box-shadow:0 0 0 3px rgba(47,138,76,.14)}.severity-warning .portfolio-health-dot,.portfolio-health-dot.severity-warning{background:#c18413;box-shadow:0 0 0 3px rgba(193,132,19,.16)}.severity-critical .portfolio-health-dot,.portfolio-health-dot.severity-critical{background:#b52c2c;box-shadow:0 0 0 3px rgba(181,44,44,.14)}.portfolio-health-page{max-width:1200px}.portfolio-health-summary{display:flex;align-items:center;gap:18px;margin-bottom:14px}.portfolio-health-summary>.portfolio-health-dot{width:20px;height:20px;flex:0 0 auto}.portfolio-health-summary h2{margin:2px 0 3px}.portfolio-health-summary p{margin:0;color:var(--muted)}.portfolio-health-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px}.portfolio-health-check h2{margin:0;font-size:1.05rem}.portfolio-health-check p{color:var(--muted);min-height:42px}.portfolio-health-check-head,.portfolio-health-check-head>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.portfolio-health-check-head>div{justify-content:flex-start}.portfolio-health-check.severity-critical{border-color:#dda9a9}.portfolio-health-check.severity-warning{border-color:#dfc37c}.portfolio-health-check.severity-ok{border-color:#abd0b5}@media(max-width:760px){.portfolio-health-checks{grid-template-columns:1fr}.portfolio-health-check p{min-height:0}}

/* Phase 21.4b - concrete plausibility findings */
.portfolio-health-findings{display:grid;gap:7px;margin:12px 0;padding-top:11px;border-top:1px solid var(--line)}.portfolio-health-finding{display:grid;grid-template-columns:minmax(190px,1fr) minmax(190px,1.2fr) auto;gap:10px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:7px;background:#fafbfc;font-size:.88rem}.portfolio-health-finding>div{display:grid;gap:2px}.portfolio-health-finding>div span,.portfolio-health-finding>span{color:var(--muted);overflow-wrap:anywhere}.portfolio-health-finding .button{white-space:nowrap}.portfolio-health-more{min-height:0!important;margin:8px 0!important;font-size:.85rem}@media(max-width:820px){.portfolio-health-finding{grid-template-columns:1fr}.portfolio-health-finding .button{width:100%}}

/* Phase 21.5a - dispatcher run history and details */
.job-run-section-head,.job-run-output-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.job-run-section-head h2,.job-run-output-head h2{margin:0}.job-run-output-head span{color:var(--muted);font-size:.84rem}.job-run-filter-card{margin-bottom:14px}.job-run-filters{display:grid;grid-template-columns:minmax(210px,1.4fr) minmax(170px,.8fr) minmax(150px,.7fr) minmax(150px,.7fr) auto auto;gap:10px;align-items:end}.job-run-filters select,.job-run-filters input{width:100%}.job-run-status{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef1f4;font-size:.8rem;font-weight:750}.job-run-status.status-success{background:#e0f3e6;color:#236b3a}.job-run-status.status-error,.job-run-status.status-timeout{background:#fde4e2;color:#982b25}.job-run-status.status-running{background:#fff2ce;color:#765207}.job-run-detail-page{max-width:1200px}.job-run-metrics{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}.job-run-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.job-run-details>div{padding:10px 12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.job-run-details dt{color:var(--muted);font-size:.8rem;font-weight:700;text-transform:uppercase}.job-run-details dd{margin:4px 0 0;overflow-wrap:anywhere}.job-run-output{margin-top:14px}.job-run-output pre{max-height:520px;overflow:auto;margin:14px 0 0;padding:14px;border:1px solid #26394e;border-radius:8px;background:#172536;color:#ecf2f7;white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}@media(max-width:1050px){.job-run-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.job-run-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.job-run-filters,.job-run-metrics,.job-run-details{grid-template-columns:1fr}.job-run-section-head,.job-run-output-head{align-items:flex-start;flex-direction:column}}
.import-filter-form{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.import-filter-form label{display:grid;gap:6px;min-width:220px}.import-filter-form select{min-height:42px;padding:8px 10px;border:1px solid #b8c4d1;border-radius:8px;background:#fff}.table-subline{display:block;margin-top:3px;color:#66738a;font-weight:400;white-space:nowrap}

/* Phase 21.6b - compact import history */
.import-filter-form input{min-height:42px;padding:8px 10px;border:1px solid #b8c4d1;border-radius:8px;background:#fff}.import-count-summary{display:flex;flex-wrap:wrap;gap:5px}.import-count-summary span{padding:4px 7px;border-radius:6px;background:#f0f3f6;color:var(--muted);font-size:.78rem;white-space:nowrap}.import-count-summary strong{color:var(--text)}.import-history-table td{vertical-align:middle}.import-run-message{margin-top:14px}@media(max-width:760px){.import-filter-form label{min-width:100%;width:100%}.import-filter-form .button{width:100%}.import-count-summary{min-width:240px}}

/* Phase 21.6c - large data usability */
.list-filter-card{margin-bottom:14px}.large-list-filters{display:grid;grid-template-columns:minmax(190px,1.4fr) repeat(5,minmax(125px,.7fr)) auto auto;gap:10px;align-items:end}.large-list-filters label,.portfolio-jump-form label{display:grid;gap:5px;color:var(--muted);font-size:.82rem;font-weight:700}.large-list-filters input,.large-list-filters select,.portfolio-jump-form select{width:100%;min-height:42px}.list-filter-hint{margin:9px 0 0}.large-list-toolbar{display:flex;justify-content:flex-end;margin-bottom:10px}.portfolio-jump-form{display:flex;gap:8px;align-items:end}.portfolio-jump-form label{min-width:270px}.compact-data-table th,.compact-data-table td{padding-top:8px;padding-bottom:8px}.compact-data-table{font-size:.9rem}.list-pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:14px}.list-pagination span{color:var(--muted);font-size:.88rem}@media(max-width:1180px){.large-list-filters{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:720px){.large-list-filters{grid-template-columns:1fr}.large-list-toolbar,.portfolio-jump-form{display:grid;grid-template-columns:1fr;width:100%}.portfolio-jump-form label{min-width:0}.large-list-filters .button,.portfolio-jump-form .button{width:100%}.list-pagination{flex-wrap:wrap}}

/* Phase 21.7a - release and schema status */
.release-status-card{margin-bottom:16px}.release-status-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.release-status-head h2{margin:4px 0 0}.release-component-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px}.release-component{display:grid;gap:4px;padding:12px;border:1px solid var(--line);border-radius:8px;background:#fafbfc}.release-component span,.release-component small{color:var(--muted)}.release-component strong{font-size:1.05rem;overflow-wrap:anywhere}.release-state-ok{color:#28723e!important}.release-state-missing,.release-state-mismatch,.release-state-stale{color:#9a5b08!important}.release-warning{margin:14px 0 0}.release-warning ul{margin:7px 0 0;padding-left:20px}.release-ok{margin:13px 0 0;color:#28723e}@media(max-width:900px){.release-component-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.release-status-head{align-items:flex-start;flex-direction:column}.release-component-grid{grid-template-columns:1fr}}
