/* ══════════════════════════════════════════════
   Lobbying Signals — Editorial dashboard
   ══════════════════════════════════════════════ */

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

:root {
    /* Surfaces */
    --bg:        #f6f3ea;
    --paper:    #fffdf7;
    --paper-2:   #faf7ef;
    --line:     #ded7c6;
    --line-2:   #c9c1ab;

    /* Ink */
    --ink:        #1b2433;
    --ink-2:     #44506b;
    --ink-3:     #6e6a5a;
    --ink-4:     #a29a84;

    /* Accents */
    --accent:        #1e3a5f;          /* federal navy — primary signal */
    --accent-soft:    rgba(30,58,95,0.07);
    --accent-line:    rgba(30,58,95,0.22);

    --up:           #23664a;
    --up-soft:      rgba(35,102,74,0.10);
    --down:         #8f2a2a;
    --down-soft:    rgba(143,42,42,0.08);

    /* Category hues */
    --cat-topic:        #1f3a5f;
    --cat-topic-soft:    rgba(31,58,95,0.07);
    --cat-entity:        #4a5568;
    --cat-entity-soft:    rgba(74,85,104,0.08);
    --cat-bill:        #6e2536;
    --cat-bill-soft:    rgba(110,37,54,0.07);
    --cat-org:        #6b5426;
    --cat-org-soft:    rgba(107,84,38,0.08);
    --cat-filing:        #4a4a4a;
    --cat-filing-soft:   rgba(74,74,74,0.06);

    /* Type */
    --serif:    'Source Serif 4', 'Iowan Old Style', 'Charter', Georgia, serif;
    --sans:    'Public Sans', -apple-system, system-ui, 'Segoe UI', sans-serif;
    --mono:    'IBM Plex Mono', 'SF Mono', ui-monospace, monospace;

    --radius:    4px;
    --radius-lg:    8px;
    --radius-pill:    999px;

    --shadow-sm:    0 1px 2px rgba(20,20,20,0.03);
    --shadow:    0 4px 16px rgba(20,20,20,0.04), 0 1px 2px rgba(20,20,20,0.03);
    --shadow-lg:    0 24px 60px rgba(20,20,20,0.11), 0 4px 16px rgba(20,20,20,0.06);

    --ease:    cubic-bezier(0.22, 0.1, 0.25, 1);
    --max-w:    1080px;
}

@media (prefers-color-scheme: dark) {
    :root {
        --bg:        #12151c;
        --paper:    #191d27;
        --paper-2:    #1f2430;
        --line:        #2a3040;
        --line-2:        #39415a;

        --ink:        #e9e5d8;
        --ink-2:    #b8b2a0;
        --ink-3:    #8d8875;
        --ink-4:    #5f5c4e;

        --accent:        #8fb0d6;
        --accent-soft:    rgba(143,176,214,0.10);
        --accent-line:    rgba(143,176,214,0.28);

        --up:        #5fae85;
        --up-soft:    rgba(95,174,133,0.10);
        --down:        #cf7a72;
        --down-soft:    rgba(207,122,114,0.10);

        --cat-topic:        #93b8e0;
        --cat-topic-soft:    rgba(147,184,224,0.10);
        --cat-entity:        #a9b4c7;
        --cat-entity-soft:    rgba(169,180,199,0.10);
        --cat-bill:        #c48a93;
        --cat-bill-soft:    rgba(196,138,147,0.10);
        --cat-org:        #d6b066;
        --cat-org-soft:    rgba(214,176,102,0.10);
        --cat-filing:        #b8b2a0;
        --cat-filing-soft:    rgba(184,178,160,0.08);

        --shadow-sm:    0 1px 2px rgba(0,0,0,0.21);
        --shadow:    0 4px 16px rgba(0,0,0,0.21), 0 1px 2px rgba(0,0,0,0.14);
        --shadow-lg:    0 24px 60px rgba(0,0,0,0.35), 0 4px 16px rgba(0,0,0,0.21);
    }
}

html { color-scheme: light dark; }

body {
    position: relative;
    background: var(--bg);
    color: var(--ink);
    font-family: var(--sans);
    font-size: 15px;
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    min-height: 100vh;
}

/* Paper grain — a faint fixed noise overlay for the archival-paper light
   theme. Off in dark mode, where the ink surfaces don't read as paper. */
body::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: 0.022;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-repeat: repeat;
}

@media (prefers-color-scheme: dark) {
    body::before { display: none; }
}

a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }

button { font: inherit; color: inherit; cursor: pointer; background: none; border: none; }
input { font: inherit; color: inherit; }

/* ─── Top bar ─── */

.topbar {
    position: sticky;
    top: 0;
    z-index: 50;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 24px;
    padding: 14px 24px 12px;
    background: rgba(246,243,234,0.88);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-bottom: 3px double var(--line-2);
}

@media (prefers-color-scheme: dark) {
    .topbar { background: rgba(18,21,28,0.88); }
}

.brand {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ink);
    text-decoration: none;
    font-family: var(--serif);
    font-size: 1.05rem;
    font-weight: 500;
    letter-spacing: -0.01em;
}

.brand:hover { text-decoration: none; color: var(--accent); }

.brand-mark { width: 18px; height: 18px; color: var(--accent); flex-shrink: 0; }

.search-trigger {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
    padding: 9px 14px;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius-pill);
    color: var(--ink-3);
    font-size: 0.88rem;
    transition: border-color 0.15s var(--ease), background 0.15s var(--ease);
}

.search-trigger:hover {
    border-color: var(--line-2);
    background: var(--paper-2);
    color: var(--ink-2);
}

.search-icon { width: 14px; height: 14px; flex-shrink: 0; color: var(--ink-3); }
.search-trigger-label {
    flex: 1;
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.search-trigger-kbd, kbd {
    font-family: var(--mono);
    font-size: 0.7rem;
    color: var(--ink-3);
    background: var(--paper-2);
    border: 1px solid var(--line);
    border-radius: 4px;
    padding: 1px 6px;
}

.topbar-meta {
    font-family: var(--mono);
    font-size: 0.72rem;
    color: var(--ink-3);
    white-space: nowrap;
    text-align: right;
}

/* ─── Page layout ─── */

.page {
    max-width: var(--max-w);
    margin: 0 auto;
    padding: 0 24px 80px;
}

/* ─── Hero ─── */

.hero {
    padding: 28px 0 22px;
    border-bottom: 1px solid var(--line);
}

.hero-eyebrow {
    font-family: var(--mono);
    font-size: 0.66rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ink-3);
    margin-bottom: 8px;
}

.hero-headline {
    font-family: var(--serif);
    font-size: clamp(1.25rem, 2.4vw, 1.65rem);
    font-weight: 400;
    line-height: 1.28;
    letter-spacing: -0.012em;
    color: var(--ink);
    max-width: 60ch;
}

.hero-headline em {
    font-style: italic;
    color: var(--accent);
    font-weight: 500;
}

.hero-stats {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--line-2);
}

.hero-stats li {
    flex: 1;
    min-width: 150px;
    padding: 6px 24px;
    border-right: 1px solid var(--line-2);
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.hero-stats li:first-child { padding-left: 0; }
.hero-stats li:last-child { border-right: none; padding-right: 0; }

.hero-stats .stat-value {
    display: block;
    font-family: var(--sans);
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--ink);
    letter-spacing: -0.005em;
    line-height: 1.2;
}

.hero-stats .stat-label {
    display: block;
    font-size: 0.76rem;
    color: var(--ink-3);
    line-height: 1.45;
}

.hero-stats .stat-trend.up { color: var(--up); }
.hero-stats .stat-trend.down { color: var(--down); }

/* ─── Movers ─── */

.movers {
    padding: 24px 0 24px;
}

.movers-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 12px;
    padding-top: 14px;
    border-top: 1px solid var(--line-2);
}

.movers-title h2 {
    font-family: var(--mono);
    font-size: 0.82rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: var(--ink-2);
}

.movers-sub {
    font-size: 0.78rem;
    color: var(--ink-3);
    margin-top: 2px;
}

.movers-controls {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.seg {
    display: inline-flex;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius-pill);
    padding: 3px;
}

.seg-btn {
    padding: 6px 14px;
    border-radius: var(--radius-pill);
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--ink-3);
    transition: all 0.12s var(--ease);
    white-space: nowrap;
}

.seg-btn:hover { color: var(--ink); }

.seg-btn.active {
    background: var(--ink);
    color: var(--bg);
}

.seg-btn:disabled {
    color: var(--ink-4);
    opacity: 0.55;
    cursor: not-allowed;
}
.seg-btn:disabled:hover { color: var(--ink-4); }

/* On Recent filings the frame toggle doesn't apply — it stays in place,
   dimmed, so controls never move or vanish between tabs. */
.seg.seg-disabled {
    opacity: 0.4;
    pointer-events: none;
}

@media (prefers-color-scheme: dark) {
    .seg-btn.active { background: var(--ink); color: var(--bg); }
}

/* ─── Category pills ─── */

.cat-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
    margin-bottom: 14px;
}

.cat-pill {
    padding: 6px 12px;
    background: transparent;
    border: 1px solid var(--line);
    border-radius: var(--radius-pill);
    font-size: 0.8rem;
    color: var(--ink-2);
    transition: all 0.12s var(--ease);
}

.cat-pill:hover {
    border-color: var(--line-2);
    color: var(--ink);
}

.cat-pill.active {
    background: var(--ink);
    color: var(--bg);
    border-color: var(--ink);
}

.cat-pill.ghost {
    background: transparent;
    border-style: dashed;
    color: var(--ink-3);
}

.cat-pill.ghost.active {
    background: var(--accent);
    color: white;
    border-color: var(--accent);
    border-style: solid;
}

.cat-row-sep {
    flex: 0 0 1px;
    height: 18px;
    background: var(--line);
    margin: 0 6px;
}

/* ─── Mover cards ─── */

.mover-list {
    list-style: none;
    display: grid;
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    overflow: hidden;
}

/* Section headers inside the "Everything" digest */
.mover-section-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 16px 18px 8px;
    background: var(--bg);
    border-top: 1px solid var(--line-2);
}

.mover-section-title {
    font-family: var(--mono);
    font-size: 0.7rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: var(--ink-3);
}

.mover-see-all {
    font-size: 0.78rem;
    color: var(--ink-3);
    transition: color 0.12s var(--ease);
}

.mover-see-all:hover { color: var(--accent); }

.mover {
    background: var(--paper);
    padding: 12px 18px;
    cursor: pointer;
    display: grid;
    grid-template-columns: auto 1fr 200px 24px;
    gap: 18px;
    align-items: center;
    transition: background 0.12s var(--ease);
    position: relative;
}

.mover:hover { background: var(--paper-2); }

.mover:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.mover-main { min-width: 0; }

.cat-tag {
    font-family: var(--mono);
    font-size: 0.6rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: 2px 7px;
    border-radius: 3px;
    line-height: 1.5;
    white-space: nowrap;
}

.mover .cat-tag {
    align-self: center;
    min-width: 56px;
    text-align: center;
}

.cat-tag.topics       { color: var(--cat-topic);    background: var(--cat-topic-soft); }
.cat-tag.entities     { color: var(--cat-entity);   background: var(--cat-entity-soft); }
.cat-tag.legislation  { color: var(--cat-bill);     background: var(--cat-bill-soft); }
.cat-tag.filing       { color: var(--cat-filing);   background: var(--cat-filing-soft); }
.cat-tag.client,
.cat-tag.clients      { color: var(--cat-org);       background: var(--cat-org-soft); }

.cat-tag-label {
    /* Used for the "Topic" "Agency" etc. label inside the colored tag */
}

.mover-name {
    font-family: var(--serif);
    font-size: 1.02rem;
    font-weight: 500;
    color: var(--ink);
    letter-spacing: -0.003em;
    line-height: 1.25;
    margin: 0 0 3px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mover-headline {
    font-size: 0.82rem;
    color: var(--ink-2);
    margin-bottom: 2px;
    line-height: 1.4;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mover-headline strong {
    font-weight: 600;
    color: var(--ink);
}

/* Delta token: color & weight scale with magnitude */
.delta {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.delta-up         { color: var(--up); }
.delta-down       { color: var(--down); }
.delta-flat       { color: var(--ink-3); font-weight: 500; }

.delta-up-mild    { color: color-mix(in srgb, var(--up) 65%, var(--ink-3)); font-weight: 500; }
.delta-down-mild  { color: color-mix(in srgb, var(--down) 65%, var(--ink-3)); font-weight: 500; }

.delta-up-strong  { color: color-mix(in srgb, var(--up) 100%, black 12%); font-weight: 700; }
.delta-down-strong{ color: color-mix(in srgb, var(--down) 100%, black 18%); font-weight: 700; }

.delta-up-x       {
    color: #ffffff;
    background: var(--up);
    font-weight: 700;
    padding: 1px 7px;
    border-radius: var(--radius-pill);
    letter-spacing: 0.01em;
    font-size: 0.78rem;
}
.delta-down-x     {
    color: #ffffff;
    background: color-mix(in srgb, var(--down) 100%, black 18%);
    font-weight: 700;
    padding: 1px 7px;
    border-radius: var(--radius-pill);
    letter-spacing: 0.01em;
    font-size: 0.78rem;
}

@media (prefers-color-scheme: dark) {
    .delta-up-strong   { color: color-mix(in srgb, var(--up) 100%, white 14%); }
    .delta-down-strong { color: color-mix(in srgb, var(--down) 100%, white 14%); }
    .delta-up-x        { color: #0e1410; background: color-mix(in srgb, var(--up) 100%, white 8%); }
    .delta-down-x      { color: #1c0e0e; background: color-mix(in srgb, var(--down) 100%, white 8%); }
}

.mover-clients {
    font-size: 0.75rem;
    color: var(--ink-3);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 1.3;
}

.mover-clients .pivot {
    color: var(--ink-2);
    border-bottom: 1px dotted var(--line-2);
    cursor: pointer;
}

.mover-clients .pivot:hover {
    color: var(--accent);
    border-bottom-color: var(--accent);
}

.mover-spark {
    width: 100%;
    height: 28px;
    align-self: center;
}

.mover-trend {
    width: 100%;
    align-self: center;
    overflow: visible;
}

.trend-svg {
    width: 100%;
    height: 48px;
    display: block;
    overflow: visible;
}

/* Subtle pulse on the latest-value halo */
@keyframes trend-pulse {
    0%, 100% { transform: scale(1); opacity: 0.18; }
    50%      { transform: scale(1.4); opacity: 0.32; }
}
.trend-svg circle:nth-of-type(1) {
    transform-origin: center;
    transform-box: fill-box;
    animation: trend-pulse 2.6s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
    .trend-svg circle:nth-of-type(1) { animation: none; }
}

.mover-arrow {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    color: var(--ink-4);
    font-size: 1rem;
    transition: transform 0.15s var(--ease), color 0.15s var(--ease);
}

.mover:hover .mover-arrow { transform: translateX(3px); color: var(--accent); }

/* Recent filing card variant */
.mover.filing-card {
    grid-template-columns: auto 1fr 100px 24px;
}

.mover.filing-card .mover-name { font-size: 0.96rem; }

.mover-meta {
    font-family: var(--mono);
    font-size: 0.74rem;
    color: var(--ink-3);
    text-align: right;
}

.mover-meta-line { display: block; }

/* Empty / loading states */

.mover-empty, .mover-loading {
    background: var(--paper);
    padding: 60px 40px;
    text-align: center;
    color: var(--ink-3);
    font-size: 0.92rem;
    border-radius: var(--radius-lg);
    border: 1px dashed var(--line);
}

.mover-empty button {
    color: var(--accent);
    margin-top: 8px;
    text-decoration: underline;
}

.mover-more {
    display: block;
    width: 100%;
    padding: 14px;
    margin-top: 4px;
    text-align: center;
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--ink-2);
    background: var(--paper);
    border: 1px dashed var(--line);
    border-radius: var(--radius-lg);
    cursor: pointer;
    transition: color 0.12s var(--ease), border-color 0.12s var(--ease);
}

.mover-more:hover {
    color: var(--accent);
    border-color: var(--accent);
}

/* ─── Footnote ─── */

.footnote {
    margin-top: 64px;
    padding-top: 24px;
    border-top: 1px solid var(--line);
    font-size: 0.8rem;
    color: var(--ink-3);
    line-height: 1.6;
    max-width: 75ch;
}

.footnote a {
    color: var(--ink-2);
    border-bottom: 1px solid var(--line-2);
}

.footnote a:hover {
    color: var(--accent);
    border-bottom-color: var(--accent);
    text-decoration: none;
}

.footnote-link {
    color: var(--ink-2);
    border-bottom: 1px solid var(--line-2);
    cursor: pointer;
    font: inherit;
}

.footnote-link:hover {
    color: var(--accent);
    border-bottom-color: var(--accent);
}

/* ─── Official record links ─── */

.official-link {
    font-family: var(--mono);
    font-size: 0.72rem;
    color: var(--accent);
    white-space: nowrap;
}

.official-link:hover { text-decoration: underline; }

.official-link.block {
    display: inline-block;
    margin-top: 4px;
}

.filing-row-right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    flex-shrink: 0;
}

/* ─── About-the-data modal ─── */

.about {
    position: fixed;
    inset: 0;
    z-index: 220;
    display: none;
}

.about[aria-hidden="false"] { display: block; }

.about-scrim {
    position: absolute;
    inset: 0;
    background: rgba(20,20,20,0.36);
    backdrop-filter: blur(2px);
    animation: scrim-in 0.15s var(--ease);
}

.about-card {
    position: absolute;
    top: 10vh;
    left: 50%;
    transform: translateX(-50%);
    width: min(640px, 92vw);
    max-height: 78vh;
    overflow-y: auto;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    animation: palette-in 0.2s var(--ease);
}

.about-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 24px 0;
}

.about-head h2 {
    font-family: var(--serif);
    font-size: 1.3rem;
    font-weight: 600;
}

.about-body {
    padding: 12px 24px 26px;
    font-size: 0.88rem;
    line-height: 1.65;
    color: var(--ink-2);
}

.about-body p { margin-top: 12px; }

.about-body strong { color: var(--ink); }

.about-body a {
    color: var(--accent);
    border-bottom: 1px solid var(--accent-soft);
}

/* ─── Drawer ─── */

.drawer {
    position: fixed;
    inset: 0;
    z-index: 100;
    pointer-events: none;
    visibility: hidden;
}

.drawer[aria-hidden="false"] {
    visibility: visible;
    pointer-events: auto;
}

.drawer-scrim {
    position: absolute;
    inset: 0;
    background: rgba(20,20,20,0.32);
    opacity: 0;
    transition: opacity 0.22s var(--ease);
}

.drawer[aria-hidden="false"] .drawer-scrim { opacity: 1; }

.drawer-card {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 560px;
    max-width: 92vw;
    background: var(--paper);
    box-shadow: var(--shadow-lg);
    transform: translateX(100%);
    transition: transform 0.28s var(--ease);
    display: flex;
    flex-direction: column;
}

.drawer[aria-hidden="false"] .drawer-card { transform: translateX(0); }

.drawer-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 20px;
    border-bottom: 1px solid var(--line);
    flex-shrink: 0;
    background: var(--paper);
}

.drawer-trail {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.78rem;
    color: var(--ink-3);
    overflow: hidden;
    flex: 1;
    min-width: 0;
}

.drawer-trail-step {
    color: var(--ink-3);
    cursor: pointer;
    background: none;
    border: none;
    padding: 0;
    font-size: inherit;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 200px;
}

.drawer-trail-step:hover { color: var(--accent); }

.drawer-trail-step.current {
    color: var(--ink);
    cursor: default;
    font-weight: 500;
}

.drawer-trail-step.current:hover { color: var(--ink); }

.drawer-trail-sep {
    color: var(--ink-4);
    flex-shrink: 0;
}

.drawer-close {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--ink-2);
    transition: background 0.12s var(--ease), color 0.12s var(--ease);
    flex-shrink: 0;
}

.drawer-close:hover {
    background: var(--paper-2);
    color: var(--ink);
}

.drawer-close svg { width: 16px; height: 16px; }

.drawer-body {
    flex: 1;
    overflow-y: auto;
    padding: 20px 24px 32px;
}

/* Drawer content */

.detail-eyebrow {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.detail-conf {
    font-family: var(--mono);
    font-size: 0.6rem;
    color: var(--ink-3);
    border: 1px solid var(--line-2);
    border-radius: var(--radius-pill);
    padding: 1px 8px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.detail-conf.high   { color: var(--up); border-color: var(--up); }
.detail-conf.low    { color: var(--down); border-color: var(--down); }

.detail-name {
    font-family: var(--serif);
    font-size: 1.4rem;
    font-weight: 500;
    line-height: 1.22;
    letter-spacing: -0.008em;
    color: var(--ink);
}

.detail-sub {
    font-size: 0.78rem;
    color: var(--ink-3);
    margin-top: 4px;
}

.detail-summary {
    font-size: 0.92rem;
    color: var(--ink-2);
    line-height: 1.5;
    margin-top: 14px;
    padding: 12px 14px;
    background: var(--paper-2);
    border-radius: var(--radius);
    border-left: 3px solid var(--accent);
}

.detail-summary strong { color: var(--ink); font-weight: 600; }

.detail-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
    gap: 0;
    margin-top: 16px;
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
}

.detail-stat {
    padding: 10px 12px;
    border-right: 1px solid var(--line);
}

.detail-stat:last-child { border-right: none; }

.detail-stat-value {
    display: block;
    font-family: var(--sans);
    font-size: 1rem;
    font-weight: 600;
    color: var(--ink);
    letter-spacing: -0.005em;
}

.detail-stat-value.up { color: var(--up); }
.detail-stat-value.down { color: var(--down); }

.detail-stat-label {
    display: block;
    font-size: 0.66rem;
    color: var(--ink-3);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-top: 2px;
}

.detail-section {
    margin-top: 22px;
}

.detail-section-title {
    font-family: var(--mono);
    font-size: 0.72rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ink-3);
    margin-bottom: 12px;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
}

.detail-section-title .count {
    color: var(--ink-4);
    font-weight: 400;
}

.detail-chart-box {
    background: var(--paper-2);
    border-radius: var(--radius);
    padding: 16px 12px 8px;
}

.detail-chart-box svg {
    width: 100%;
    display: block;
}

.detail-chart-note {
    font-size: 0.78rem;
    color: var(--ink-3);
    margin-top: 8px;
}

.detail-list {
    list-style: none;
    display: flex;
    flex-direction: column;
}

.detail-list-item {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--line);
    cursor: pointer;
    transition: color 0.12s var(--ease);
}

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

.detail-list-item:hover { color: var(--accent); }

.detail-list-item-name {
    font-size: 0.92rem;
    color: var(--ink);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
}

.detail-list-item:hover .detail-list-item-name { color: var(--accent); }

.detail-list-item-meta {
    font-family: var(--mono);
    font-size: 0.72rem;
    color: var(--ink-3);
    flex-shrink: 0;
}

.detail-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.detail-tag {
    font-family: var(--mono);
    font-size: 0.7rem;
    padding: 4px 10px;
    border-radius: var(--radius-pill);
    background: var(--paper-2);
    border: 1px solid var(--line);
    color: var(--ink-2);
    transition: all 0.12s var(--ease);
    line-height: 1.4;
}

.detail-tag:hover {
    border-color: var(--accent-line);
    color: var(--accent);
    background: var(--accent-soft);
}

.detail-empty {
    color: var(--ink-3);
    font-size: 0.88rem;
    padding: 20px 0;
}

/* Filing detail-specific */
.filing-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid var(--line);
    cursor: pointer;
    transition: background 0.12s var(--ease);
    margin: 0 -8px;
    padding-left: 8px;
    padding-right: 8px;
    border-radius: 4px;
}

.filing-row:last-child { border-bottom: none; }
.filing-row:hover { background: var(--paper-2); }

.filing-row-client {
    font-size: 0.92rem;
    font-weight: 500;
    color: var(--ink);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.filing-row-registrant {
    font-size: 0.78rem;
    color: var(--ink-3);
    margin-top: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.filing-row-date {
    font-family: var(--mono);
    font-size: 0.72rem;
    color: var(--ink-3);
    text-align: right;
    flex-shrink: 0;
}

.filing-row-income {
    font-family: var(--mono);
    font-size: 0.72rem;
    color: var(--ink-2);
}

/* ─── Command palette ─── */

.palette {
    position: fixed;
    inset: 0;
    z-index: 200;
    display: none;
}

.palette[aria-hidden="false"] { display: block; }

.palette-scrim {
    position: absolute;
    inset: 0;
    background: rgba(20,20,20,0.36);
    backdrop-filter: blur(2px);
    animation: scrim-in 0.15s var(--ease);
}

@keyframes scrim-in { from { opacity: 0; } to { opacity: 1; } }

.palette-card {
    position: absolute;
    top: 14vh;
    left: 50%;
    transform: translateX(-50%);
    width: min(620px, 92vw);
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    overflow: hidden;
    animation: palette-in 0.2s var(--ease);
}

@keyframes palette-in {
    from { opacity: 0; transform: translate(-50%, -8px); }
    to   { opacity: 1; transform: translate(-50%, 0); }
}

.palette-input-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 18px;
    border-bottom: 1px solid var(--line);
}

.palette-icon {
    width: 16px;
    height: 16px;
    color: var(--ink-3);
    flex-shrink: 0;
}

#palette-input {
    flex: 1;
    border: none;
    outline: none;
    background: transparent;
    font-size: 1rem;
    color: var(--ink);
}

#palette-input::placeholder { color: var(--ink-3); }

.palette-kbd {
    font-family: var(--mono);
    font-size: 0.7rem;
    color: var(--ink-3);
    background: var(--paper-2);
    border: 1px solid var(--line);
    border-radius: 4px;
    padding: 1px 6px;
    flex-shrink: 0;
}

.palette-results {
    max-height: 56vh;
    overflow-y: auto;
}

.palette-group-label {
    font-family: var(--mono);
    font-size: 0.66rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ink-3);
    padding: 12px 18px 6px;
    background: var(--paper-2);
}

.palette-result {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 12px;
    padding: 10px 18px;
    cursor: pointer;
    transition: background 0.08s var(--ease);
}

.palette-result.focused { background: var(--accent-soft); }

.palette-result-name {
    font-size: 0.92rem;
    color: var(--ink);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.palette-result.focused .palette-result-name { color: var(--accent); }

.palette-result-name mark {
    background: transparent;
    color: var(--accent);
    font-weight: 600;
}

.palette-result-meta {
    font-family: var(--mono);
    font-size: 0.7rem;
    color: var(--ink-3);
    flex-shrink: 0;
}

.palette-empty {
    padding: 28px 18px;
    text-align: center;
    color: var(--ink-3);
    font-size: 0.88rem;
}

.palette-foot {
    display: flex;
    gap: 18px;
    padding: 10px 18px;
    background: var(--paper-2);
    border-top: 1px solid var(--line);
    font-size: 0.74rem;
    color: var(--ink-3);
}

.palette-foot kbd {
    margin-right: 4px;
    padding: 0 5px;
    font-size: 0.66rem;
}

/* ─── Scrollbar ─── */

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--line); border-radius: 10px; border: 2px solid var(--bg); }
::-webkit-scrollbar-thumb:hover { background: var(--line-2); }

/* ─── Responsive ─── */

@media (max-width: 720px) {
    .topbar {
        grid-template-columns: 1fr auto;
        gap: 12px;
        padding: 12px 16px;
    }
    .search-trigger {
        grid-column: 1 / -1;
        order: 3;
        max-width: none;
    }
    .topbar-meta { display: none; }

    .page { padding: 0 16px 60px; }
    .hero { padding: 36px 0 28px; }
    .movers { padding: 36px 0 24px; }

    .hero-stats li {
        flex: 0 0 50%;
        min-width: 0;
        padding: 8px 16px 8px 0;
        border-right: none;
        border-bottom: 1px solid var(--line-2);
    }
    .hero-stats li:nth-last-child(-n+2) { border-bottom: none; }

    .mover {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 16px;
    }
    /* Single-column grid stretches items; keep the category pill its natural width */
    .mover .cat-tag { justify-self: start; }

    .mover-spark { height: 32px; max-width: 100%; }
    .mover-arrow { display: none; }
    .mover-meta { text-align: left; }

    .drawer-card { width: 100%; max-width: 100%; }
    .drawer-body { padding: 22px 18px 30px; }

    .palette-card { top: 8vh; }
}

@media (max-width: 480px) {
    .movers-controls { width: 100%; }
    .seg, .cat-pill { font-size: 0.74rem; }
    .seg-btn { padding: 5px 10px; }

    .hero-headline { font-size: 1.6rem; }
    .detail-name { font-size: 1.4rem; }
    .detail-stats { grid-template-columns: repeat(2, 1fr); }
    .detail-stat:nth-child(2n) { border-right: none; }
    .detail-stat { border-bottom: 1px solid var(--line); }
}

/* ─── Focus ─── */

button:focus-visible,
.search-trigger:focus-visible,
.cat-pill:focus-visible,
.seg-btn:focus-visible,
.detail-tag:focus-visible,
.detail-list-item:focus-visible,
.filing-row:focus-visible,
.mover:focus-visible,
.palette-result:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
    }
}
