/* =========================================================================
   USSGL Explorer — design system
   Federal/Treasury palette · light + dark · high-contrast · keyboard-first
   ========================================================================= */
:root {
    --navy-900:#0c2740; --navy-800:#12395f; --navy-700:#184b7e; --navy-600:#1f5f9e;
    --gold-500:#e8b23a; --gold-600:#c9922a;
    --ink:#16202b; --ink-soft:#3f5164; --muted:#6b7c8f;
    --line:#dbe3ec; --line-soft:#eaeff5;
    --bg:#f4f7fb; --surface:#ffffff; --surface-2:#f8fafc;
    --debit:#1f5f9e;  --debit-bg:#e8f1fb;
    --credit:#1f8a5b; --credit-bg:#e6f5ee;
    --danger:#c0392b; --danger-bg:#fbeae7;
    --warn:#b9770a;   --warn-bg:#fdf3e0;
    --ok:#1f8a5b;     --ok-bg:#e6f5ee;
    --radius:10px; --radius-sm:7px; --radius-lg:16px;
    --shadow:0 1px 2px rgba(16,32,48,.06),0 4px 16px rgba(16,32,48,.06);
    --shadow-lg:0 8px 30px rgba(12,39,64,.16);
    --focus:0 0 0 3px rgba(31,95,158,.45);
    --mono:"SFMono-Regular",ui-monospace,"Cascadia Mono","Consolas",monospace;
    --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    --maxw:1200px;
}
@media (prefers-color-scheme: dark) {
    :root {
        --ink:#e8eef5; --ink-soft:#b7c4d3; --muted:#8798a9;
        --line:#26374a; --line-soft:#1d2c3c;
        --bg:#0b1622; --surface:#132234; --surface-2:#0f1c2b;
        --debit-bg:#12304c; --credit-bg:#123528; --danger-bg:#3a1d18;
        --warn-bg:#39290f; --ok-bg:#123528;
        --shadow:0 1px 2px rgba(0,0,0,.4),0 4px 18px rgba(0,0,0,.35);
        --shadow-lg:0 10px 34px rgba(0,0,0,.5);
    }
}
* { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
body {
    margin:0; font-family:var(--sans); color:var(--ink); background:var(--bg);
    font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased;
}
a { color:var(--navy-600); text-decoration:none; }
a:hover { text-decoration:underline; }
h1,h2,h3 { line-height:1.2; color:var(--ink); margin:0 0 .4em; font-weight:680; letter-spacing:-.01em; }
h1 { font-size:1.6rem; } h2 { font-size:1.2rem; } h3 { font-size:1rem; }
p { margin:0 0 1em; }
.container { max-width:var(--maxw); margin:0 auto; padding:0 20px; }
.muted { color:var(--muted); }
.mono { font-family:var(--mono); font-variant-numeric:tabular-nums; }
.visually-hidden { position:absolute!important; width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap; }
:focus-visible { outline:none; box-shadow:var(--focus); border-radius:4px; }
/* Respect users who prefer reduced motion. */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}
/* Screen-reader-only utility (alias of visually-hidden). */
.sr-only { position:absolute!important; width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap; }
.skip-link { position:absolute; left:-999px; top:0; background:var(--navy-800); color:#fff; padding:10px 16px; z-index:100; border-radius:0 0 8px 0; }
.skip-link:focus { left:0; }

/* ---------- top bar ---------- */
.topbar { background:linear-gradient(180deg,var(--navy-800),var(--navy-900)); color:#fff; position:sticky; top:0; z-index:40; box-shadow:var(--shadow); }
.topbar-inner { display:flex; align-items:center; gap:20px; height:60px; }
.brand { display:flex; align-items:center; gap:10px; color:#fff; font-weight:750; letter-spacing:-.02em; }
.brand:hover { text-decoration:none; }
.brand-mark { display:grid; place-items:center; width:32px; height:32px; background:var(--gold-500); color:var(--navy-900); border-radius:8px; font-size:22px; font-weight:800; }
.brand-text { font-size:1.12rem; }
.brand-sub { color:var(--gold-500); margin-left:2px; }
.mainnav { display:flex; gap:4px; margin-left:auto; }
.mainnav a { color:#cfe0f0; padding:8px 12px; border-radius:8px; font-weight:560; font-size:.94rem; }
.mainnav a:hover { background:rgba(255,255,255,.1); color:#fff; text-decoration:none; }
.mainnav a.is-active { background:rgba(255,255,255,.16); color:#fff; }

/* ---------- global search ---------- */
.globalsearch { position:relative; flex:1; max-width:560px; }
.gs-icon { position:absolute; left:12px; top:50%; transform:translateY(-50%); width:18px; height:18px; fill:none; stroke:var(--muted); stroke-width:2; stroke-linecap:round; }
.globalsearch input { width:100%; height:40px; padding:0 40px 0 38px; border:1px solid transparent; border-radius:10px; background:rgba(255,255,255,.96); color:var(--ink); font-size:.96rem; }
.globalsearch input::placeholder { color:var(--muted); }
.globalsearch input:focus { box-shadow:0 0 0 3px rgba(232,178,58,.55); border-color:var(--gold-500); }
.gs-hint { position:absolute; right:10px; top:50%; transform:translateY(-50%); font-family:var(--mono); font-size:.72rem; color:var(--muted); background:var(--surface-2); border:1px solid var(--line); border-radius:5px; padding:1px 6px; }
.gs-results { position:absolute; top:calc(100% + 8px); left:0; right:0; background:var(--surface); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-lg); overflow:hidden; max-height:min(70vh,460px); overflow-y:auto; z-index:60; }
.gs-item { display:flex; align-items:center; gap:12px; padding:10px 14px; cursor:pointer; border-bottom:1px solid var(--line-soft); color:var(--ink); }
.gs-item:last-child { border-bottom:0; }
.gs-item.is-active, .gs-item:hover { background:var(--surface-2); text-decoration:none; }
.gs-item .gs-label { font-weight:560; }
.gs-item .gs-sub { color:var(--muted); font-size:.8rem; }
.gs-badge { font-size:.62rem; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--navy-700); background:var(--debit-bg); border-radius:5px; padding:2px 6px; flex:none; }
.gs-badge.attribute { color:var(--warn); background:var(--warn-bg); }
.gs-badge.transaction { color:var(--credit); background:var(--credit-bg); }
.gs-badge.validation, .gs-badge.edit { color:var(--danger); background:var(--danger-bg); }
.gs-badge.statement { color:var(--credit); background:var(--credit-bg); }
.gs-badge.glossary { color:var(--gold-600); background:var(--warn-bg); }
.gs-badge.scenario { color:var(--gold-600); background:var(--warn-bg); }
.gs-empty { padding:16px; color:var(--muted); }

/* ---------- page scaffold ---------- */
main.container { padding-top:24px; padding-bottom:56px; }
.breadcrumbs { display:flex; flex-wrap:wrap; gap:6px; align-items:center; font-size:.85rem; color:var(--muted); margin-bottom:14px; }
.breadcrumbs a { color:var(--muted); }
.breadcrumbs a:hover { color:var(--navy-600); }
.breadcrumbs .sep { opacity:.5; }
.pagehead { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:18px; }
.pagehead .lede { color:var(--ink-soft); max-width:65ch; }

/* ---------- cards / tiles ---------- */
.card { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); }
.card-pad { padding:20px 22px; }
.tiles { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; margin:18px 0 26px; }
.tile { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; box-shadow:var(--shadow); }
.tile .num { font-size:1.9rem; font-weight:740; letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.tile .lbl { color:var(--muted); font-size:.82rem; text-transform:uppercase; letter-spacing:.04em; }
.tile.accent { background:linear-gradient(180deg,var(--navy-800),var(--navy-900)); border-color:transparent; color:#fff; }
.tile.accent .num { color:#fff; } .tile.accent .lbl { color:#bcd2e8; }

/* ---------- badges ---------- */
.badge { display:inline-flex; align-items:center; gap:5px; font-size:.74rem; font-weight:640; padding:2px 9px; border-radius:999px; border:1px solid transparent; white-space:nowrap; }
.badge.debit  { color:var(--debit);  background:var(--debit-bg); }
.badge.credit { color:var(--credit); background:var(--credit-bg); }
.badge.budgetary   { color:var(--navy-700); background:var(--debit-bg); }
.badge.proprietary { color:var(--credit); background:var(--credit-bg); }
.badge.both  { color:var(--warn); background:var(--warn-bg); }
.badge.other { color:var(--muted); background:var(--surface-2); border-color:var(--line); }
.badge.ghost { color:var(--ink-soft); background:var(--surface-2); border-color:var(--line); }

/* ---------- buttons ---------- */
.btn { display:inline-flex; align-items:center; gap:7px; height:38px; padding:0 15px; border-radius:9px; border:1px solid var(--line); background:var(--surface); color:var(--ink); font-weight:560; font-size:.9rem; cursor:pointer; }
.btn:hover { border-color:var(--navy-600); text-decoration:none; }
.btn.primary { background:var(--navy-700); border-color:var(--navy-700); color:#fff; }
.btn.primary:hover { background:var(--navy-800); }
.btn.small { height:32px; padding:0 11px; font-size:.82rem; }

/* ---------- toolbar / filters ---------- */
.toolbar { display:flex; flex-wrap:wrap; gap:10px; align-items:end; padding:14px 16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:16px; }
.field { display:flex; flex-direction:column; gap:4px; }
.field label { font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:640; }
.field input, .field select { height:38px; padding:0 10px; border:1px solid var(--line); border-radius:8px; background:var(--surface-2); color:var(--ink); font-size:.9rem; font-family:inherit; }
.field.grow { flex:1; min-width:200px; }
.field.grow input { width:100%; }
.toolbar-actions { margin-left:auto; display:flex; gap:8px; align-items:end; }
.result-count { color:var(--muted); font-size:.85rem; }

/* ---------- data table ---------- */
.tablewrap { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); overflow-x:auto; }
table.data { width:100%; border-collapse:collapse; font-size:.9rem; }
table.data th, table.data td { text-align:left; padding:10px 14px; border-bottom:1px solid var(--line-soft); white-space:nowrap; }
table.data thead th { position:sticky; top:0; background:var(--surface-2); color:var(--ink-soft); font-size:.74rem; text-transform:uppercase; letter-spacing:.04em; font-weight:700; z-index:2; border-bottom:1px solid var(--line); }
table.data thead th a { color:inherit; display:inline-flex; align-items:center; gap:4px; }
table.data thead th .arrow { color:var(--navy-600); }
table.data tbody tr:hover { background:var(--surface-2); }
table.data td.num, table.data th.num { font-family:var(--mono); font-variant-numeric:tabular-nums; }
table.data td .acctlink { font-family:var(--mono); font-weight:640; }
table.data td.wrap { white-space:normal; min-width:280px; }
.tbl-empty { padding:40px; text-align:center; color:var(--muted); }
/* column show/hide */
.colmenu { position:relative; }
.colmenu > summary { list-style:none; cursor:pointer; }
.colmenu > summary::-webkit-details-marker { display:none; }
.colmenu-pop { position:absolute; right:0; top:calc(100% + 6px); background:var(--surface); border:1px solid var(--line); border-radius:10px; box-shadow:var(--shadow-lg); padding:8px; z-index:30; min-width:170px; }
.colmenu-item { display:flex; gap:8px; align-items:center; padding:6px 8px; border-radius:6px; font-size:.88rem; cursor:pointer; }
.colmenu-item:hover { background:var(--surface-2); }
#acct-table.hide-nb .col-nb, #acct-table.hide-type .col-type, #acct-table.hide-class .col-class,
#acct-table.hide-be .col-be, #acct-table.hide-dc .col-dc { display:none; }

/* ---------- pagination ---------- */
.pager { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:16px; flex-wrap:wrap; }
.pager .pages { display:flex; gap:6px; align-items:center; }
.pager a, .pager span.cur { min-width:36px; height:36px; padding:0 8px; display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--line); border-radius:8px; background:var(--surface); font-size:.85rem; }
.pager span.cur { background:var(--navy-700); border-color:var(--navy-700); color:#fff; font-weight:640; }
.pager a[aria-disabled=true] { opacity:.4; pointer-events:none; }

/* ---------- account detail ---------- */
.detail-grid { display:grid; grid-template-columns:2fr 1fr; gap:20px; align-items:start; }
@media (max-width:820px){ .detail-grid { grid-template-columns:1fr; } }
.acct-hero { display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-bottom:6px; }
.acct-number { font-family:var(--mono); font-size:2rem; font-weight:750; letter-spacing:.01em; }
.dl { display:grid; grid-template-columns:auto 1fr; gap:0; }
.dl dt { color:var(--muted); font-size:.85rem; padding:9px 16px 9px 0; border-bottom:1px solid var(--line-soft); }
.dl dd { margin:0; padding:9px 0; border-bottom:1px solid var(--line-soft); font-weight:520; }
.section-title { display:flex; align-items:center; gap:10px; margin:28px 0 12px; }
.section-title h2 { margin:0; }
.chiprow { display:flex; flex-wrap:wrap; gap:6px; }
.chip { font-family:var(--mono); font-size:.8rem; background:var(--surface-2); border:1px solid var(--line); border-radius:6px; padding:2px 8px; }

/* attributes on detail */
.attr-list { display:grid; grid-template-columns:1fr; gap:0; }
.attr-row { display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; padding:11px 0; border-bottom:1px solid var(--line-soft); }
.attr-row .aname { font-weight:580; }
.attr-row .agroup { font-size:.72rem; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; }
.attr-row .avals { display:flex; flex-wrap:wrap; gap:5px; justify-content:flex-end; }

/* ---------- T-accounts / journal entries ---------- */
.entry-block { margin-bottom:18px; }
.entry-block > h3 { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.entry-tag { font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; font-weight:700; padding:2px 8px; border-radius:5px; }
.entry-tag.budg { color:var(--navy-700); background:var(--debit-bg); }
.entry-tag.prop { color:var(--credit); background:var(--credit-bg); }
.taccount { border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:var(--surface); box-shadow:var(--shadow); }
.taccount-head { display:grid; grid-template-columns:1fr 1fr; background:var(--surface-2); border-bottom:2px solid var(--ink-soft); }
.taccount-head span { padding:8px 14px; font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; font-weight:700; color:var(--ink-soft); }
.taccount-head span:first-child { border-right:2px solid var(--ink-soft); color:var(--debit); }
.taccount-head span:last-child { color:var(--credit); }
.taccount-body { display:grid; grid-template-columns:1fr 1fr; }
.taccount-body .tcol { padding:6px 0; }
.taccount-body .tcol:first-child { border-right:2px solid var(--line); }
.tline { display:flex; gap:8px; align-items:baseline; padding:7px 14px; }
.tline .tnum { font-family:var(--mono); font-weight:640; flex:none; }
.tline .ttitle { color:var(--ink-soft); font-size:.86rem; }
.tline.empty { color:var(--muted); font-style:italic; padding:10px 14px; }
.tline:hover { background:var(--surface-2); }
@media (max-width:640px){
    .taccount-head, .taccount-body { grid-template-columns:1fr; }
    .taccount-body .tcol:first-child { border-right:0; border-bottom:2px solid var(--line); }
    .taccount-head span:first-child { border-right:0; border-bottom:1px solid var(--line); }
}
.tc-catbadge { font-family:var(--mono); font-weight:700; }
.txn-comment { line-height:1.6; }
.txn-comment a { font-family:var(--mono); font-weight:600; }

/* ---------- misc ---------- */
.notice { padding:14px 16px; border-radius:var(--radius); border:1px solid var(--line); background:var(--surface-2); }
.notice.info { border-color:var(--navy-600); background:var(--debit-bg); }
.provenance { font-size:.8rem; color:var(--muted); margin-top:8px; }
.provenance code { font-family:var(--mono); background:var(--surface-2); padding:1px 5px; border-radius:4px; border:1px solid var(--line); }
.emptybox { text-align:center; padding:56px 24px; color:var(--muted); }
.emptybox .big { font-size:2.4rem; margin-bottom:6px; }

/* ---------- workbench / validation report ---------- */
.wb-grid { display:grid; grid-template-columns:1fr; gap:18px; }
.wb-input textarea { width:100%; min-height:190px; font-family:var(--mono); font-size:.84rem; line-height:1.6; padding:12px 14px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface-2); color:var(--ink); resize:vertical; }
.wb-actions { display:flex; gap:10px; flex-wrap:wrap; margin-top:12px; align-items:center; }
.kpirow { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin-bottom:18px; }
.kpi { border:1px solid var(--line); border-radius:var(--radius); padding:14px 16px; background:var(--surface); box-shadow:var(--shadow); }
.kpi .kn { font-size:1.6rem; font-weight:750; font-variant-numeric:tabular-nums; }
.kpi .kl { color:var(--muted); font-size:.78rem; text-transform:uppercase; letter-spacing:.04em; }
.kpi.good { border-color:var(--ok); background:var(--ok-bg); } .kpi.good .kn { color:var(--ok); }
.kpi.bad { border-color:var(--danger); background:var(--danger-bg); } .kpi.bad .kn { color:var(--danger); }
.issue { display:flex; gap:10px; padding:9px 12px; border-radius:8px; margin-bottom:6px; font-size:.9rem; align-items:baseline; }
.issue .ic { flex:none; font-weight:700; font-size:.7rem; text-transform:uppercase; letter-spacing:.04em; padding:2px 7px; border-radius:5px; }
.issue.error { background:var(--danger-bg); } .issue.error .ic { color:var(--danger); background:#fff3; border:1px solid var(--danger); }
.issue.warn  { background:var(--warn-bg); }   .issue.warn .ic  { color:var(--warn);  border:1px solid var(--warn); }
.issue.info  { background:var(--surface-2); } .issue.info .ic  { color:var(--muted); border:1px solid var(--line); }
.finding { display:flex; justify-content:space-between; gap:12px; padding:10px 12px; border:1px solid var(--danger); background:var(--danger-bg); border-radius:8px; margin-bottom:8px; flex-wrap:wrap; }
.finding .fmeta { font-size:.82rem; color:var(--ink-soft); }
.tp-row { display:grid; grid-template-columns:auto 1fr auto; gap:12px; align-items:center; padding:11px 14px; border-bottom:1px solid var(--line-soft); }
.tp-row .tp-status { font-weight:700; font-size:.72rem; text-transform:uppercase; padding:3px 9px; border-radius:5px; }
.tp-row .tp-status.pass { color:var(--ok); background:var(--ok-bg); } .tp-row .tp-status.fail { color:var(--danger); background:var(--danger-bg); }
.tp-row .tp-sums { font-family:var(--mono); font-size:.82rem; color:var(--ink-soft); }
.pill { font-size:.7rem; font-weight:700; padding:2px 8px; border-radius:999px; text-transform:uppercase; letter-spacing:.03em; }
.pill.tie { color:var(--gold-600); background:var(--warn-bg); }

/* truth table */
.truth { width:100%; border-collapse:collapse; font-size:.86rem; }
.truth th, .truth td { padding:7px 12px; border:1px solid var(--line-soft); text-align:left; }
.truth th { background:var(--surface-2); font-size:.72rem; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-soft); }
.truth td.res-Pass { color:var(--ok); font-weight:640; } .truth td.res-Fail { color:var(--danger); font-weight:640; }
.truth tr:hover td { background:var(--surface-2); }

/* ---------- command palette (Cmd/Ctrl-K) ---------- */
.cmdk-overlay { position:fixed; inset:0; background:rgba(9,20,33,.55); backdrop-filter:blur(2px); z-index:100; display:none; align-items:flex-start; justify-content:center; padding-top:12vh; }
.cmdk-overlay.open { display:flex; }
.cmdk { width:min(640px,92vw); background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow-lg); overflow:hidden; animation:cmdkin .14s ease; }
@keyframes cmdkin { from { opacity:0; transform:translateY(-8px) scale(.98);} to { opacity:1; transform:none;} }
.cmdk-inp { display:flex; align-items:center; gap:10px; padding:14px 16px; border-bottom:1px solid var(--line); }
.cmdk-inp svg { width:18px; height:18px; fill:none; stroke:var(--muted); stroke-width:2; stroke-linecap:round; flex:none; }
.cmdk-inp input { flex:1; border:0; background:transparent; color:var(--ink); font-size:1.05rem; outline:none; }
.cmdk-inp kbd { font-family:var(--mono); font-size:.7rem; color:var(--muted); background:var(--surface-2); border:1px solid var(--line); border-radius:5px; padding:2px 6px; }
.cmdk-list { max-height:min(56vh,440px); overflow-y:auto; padding:6px; }
.cmdk-group { font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); font-weight:700; padding:8px 12px 4px; }
.cmdk-item { display:flex; align-items:center; gap:12px; padding:9px 12px; border-radius:9px; cursor:pointer; color:var(--ink); }
.cmdk-item.active, .cmdk-item:hover { background:var(--surface-2); text-decoration:none; }
.cmdk-item .cmdk-ico { width:26px; height:26px; border-radius:7px; background:var(--debit-bg); color:var(--navy-700); display:grid; place-items:center; font-weight:700; font-size:.8rem; flex:none; }
.cmdk-item .cmdk-lbl { font-weight:540; }
.cmdk-item .cmdk-sub { color:var(--muted); font-size:.8rem; }
.cmdk-item .cmdk-tag { margin-left:auto; font-size:.62rem; text-transform:uppercase; letter-spacing:.04em; font-weight:700; color:var(--muted); background:var(--surface-2); border:1px solid var(--line); border-radius:5px; padding:2px 6px; }
.cmdk-empty { padding:24px; text-align:center; color:var(--muted); }
.cmdk-foot { display:flex; gap:14px; padding:8px 14px; border-top:1px solid var(--line); font-size:.74rem; color:var(--muted); }
.cmdk-foot kbd { font-family:var(--mono); background:var(--surface-2); border:1px solid var(--line); border-radius:4px; padding:1px 5px; }

/* ---------- scenario step-through player ---------- */
.scn-stepper { display:flex; gap:0; overflow-x:auto; padding-bottom:6px; margin-bottom:18px; }
.scn-dot { flex:1; min-width:96px; text-align:center; position:relative; cursor:pointer; padding-top:22px; color:var(--muted); font-size:.76rem; }
.scn-dot::before { content:""; position:absolute; top:8px; left:0; right:0; height:3px; background:var(--line); }
.scn-dot:first-child::before { left:50%; } .scn-dot:last-child::before { right:50%; }
.scn-dot .pip { position:absolute; top:2px; left:50%; transform:translateX(-50%); width:15px; height:15px; border-radius:50%; background:var(--line); border:2px solid var(--surface); z-index:1; }
.scn-dot.done .pip, .scn-dot.active .pip { background:var(--navy-600); }
.scn-dot.done::before, .scn-dot.active::before { background:var(--navy-600); }
.scn-dot.active { color:var(--ink); font-weight:640; }
.scn-dot.active .pip { background:var(--gold-500); box-shadow:0 0 0 4px rgba(232,178,58,.3); }
.scn-step { display:none; }
.scn-step.active { display:block; animation:scnfade .35s ease; }
@keyframes scnfade { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }
.scn-evhead { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:6px; }
.scn-evnum { width:34px; height:34px; border-radius:9px; background:var(--navy-700); color:#fff; display:grid; place-items:center; font-weight:740; flex:none; }
.scn-grid { display:grid; grid-template-columns:1.3fr 1fr; gap:20px; align-items:start; margin-top:14px; }
@media (max-width:880px){ .scn-grid { grid-template-columns:1fr; } }
.scn-controls { display:flex; align-items:center; gap:10px; margin:18px 0; flex-wrap:wrap; }
.scn-controls .spacer { flex:1; }
.scn-tb table { width:100%; border-collapse:collapse; font-size:.84rem; }
.scn-tb th, .scn-tb td { padding:5px 10px; border-bottom:1px solid var(--line-soft); text-align:right; }
.scn-tb th:first-child, .scn-tb td:first-child, .scn-tb th:nth-child(2), .scn-tb td:nth-child(2) { text-align:left; }
.scn-tb thead th { font-size:.7rem; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-soft); background:var(--surface-2); }
.scn-tb .grp td { background:var(--surface-2); font-weight:700; font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-soft); text-align:left; }
.scn-tb tfoot td { font-weight:700; border-top:2px solid var(--ink-soft); }
.scn-tb .mono { font-family:var(--mono); font-variant-numeric:tabular-nums; }
.scn-tb .num { font-family:var(--mono); font-variant-numeric:tabular-nums; }
.scn-balrow { display:flex; justify-content:space-between; padding:8px 10px; margin-top:8px; border-radius:8px; background:var(--ok-bg); color:var(--ok); font-weight:640; font-size:.85rem; }

/* ---------- financial statements ---------- */
.stmt { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); overflow:hidden; }
.stmt-row { display:grid; grid-template-columns:64px 1fr auto; gap:12px; padding:8px 16px; border-bottom:1px solid var(--line-soft); align-items:baseline; }
.stmt-row.section { background:var(--surface-2); font-weight:700; grid-template-columns:1fr; color:var(--ink); text-transform:uppercase; font-size:.76rem; letter-spacing:.05em; }
.stmt-row.line .sno { font-family:var(--mono); color:var(--muted); font-size:.82rem; }
.stmt-row.line .slabel { color:var(--ink); }
.stmt-row.line .samt { font-family:var(--mono); font-variant-numeric:tabular-nums; font-weight:640; text-align:right; }
.stmt-row.line.hasamt { cursor:pointer; }
.stmt-row.line.hasamt:hover { background:var(--surface-2); }
.stmt-row .samt.zero { color:var(--muted); font-weight:400; }
.drill { grid-column:1 / -1; margin-top:6px; padding:8px 12px; background:var(--surface-2); border-radius:8px; font-size:.84rem; }
.drill .dline { display:flex; justify-content:space-between; gap:12px; padding:3px 0; }
.drill .dline .mono { font-weight:600; }
details.stmt-block { margin-bottom:16px; }
details.stmt-block > summary { cursor:pointer; padding:12px 16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); font-weight:640; display:flex; justify-content:space-between; align-items:center; gap:10px; }
details.stmt-block > summary:hover { border-color:var(--navy-600); }
details.stmt-block[open] > summary { border-radius:var(--radius) var(--radius) 0 0; border-bottom:0; }
.stmt-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:14px; }
.stmt-card { display:block; padding:16px 18px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }
.stmt-card:hover { border-color:var(--navy-600); text-decoration:none; }
.stmt-card .sc-name { font-weight:640; color:var(--ink); }
.stmt-card .sc-meta { color:var(--muted); font-size:.82rem; margin-top:4px; }

/* ---------- footer ---------- */
.sitefoot { border-top:1px solid var(--line); background:var(--surface); margin-top:40px; }
.sitefoot-inner { padding:22px 20px; font-size:.85rem; color:var(--ink-soft); }
.sitefoot .muted { font-size:.8rem; }

/* ---------- home ---------- */
.hero { background:linear-gradient(160deg,var(--navy-800),var(--navy-900) 70%); color:#fff; border-radius:var(--radius-lg); padding:34px 34px 30px; box-shadow:var(--shadow-lg); position:relative; overflow:hidden; }
.hero h1 { color:#fff; font-size:2rem; }
.hero p { color:#cfe0f0; max-width:60ch; }
.hero .hero-cta { display:flex; gap:10px; flex-wrap:wrap; margin-top:16px; }
.hero .btn { background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.25); color:#fff; }
.hero .btn.primary { background:var(--gold-500); border-color:var(--gold-500); color:var(--navy-900); }
.hero .btn.primary:hover { background:var(--gold-600); }
.classgrid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:12px; }
.classcard { display:flex; align-items:center; gap:14px; padding:14px 16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); }
.classcard:hover { border-color:var(--navy-600); text-decoration:none; }
.classcard .digit { width:40px; height:40px; border-radius:9px; display:grid; place-items:center; font-family:var(--mono); font-weight:740; font-size:1.15rem; background:var(--debit-bg); color:var(--navy-700); flex:none; }
.classcard .cc-name { font-weight:600; color:var(--ink); }
.classcard .cc-n { color:var(--muted); font-size:.82rem; }

/* ---------- print (PDF via browser) ---------- */
@media print {
    .topbar, .sitefoot, .toolbar, .wb-actions, .pager, .breadcrumbs, form.wb-input .field label, .btn { display:none !important; }
    body { background:#fff; color:#000; font-size:11pt; }
    main.container { padding:0; max-width:100%; }
    .card, .tablewrap, .stmt, details.stmt-block { box-shadow:none; border-color:#bbb; break-inside:avoid; }
    details.stmt-block[open] > summary { background:#f2f2f2; }
    details.stmt-block { break-inside:avoid; }
    a { color:#000; text-decoration:none; }
    .kpi, .tile { border:1px solid #bbb; }
    table.data thead th { position:static; }
}
