/* FiscalOS console — "ledger" direction.
   Ink sidebar, paper-grey workspace, white ledgers; Malta red is reserved for the
   EXO seal and irreversible actions; Geist for UI, Geist Mono (tabular) for every
   number, document number and hash. The hash chain is drawn as linked blocks. */
:root{
  --bg:#f2f3ef;--panel:#fff;--panel2:#f8f9f6;--ink:#101b22;--ink2:#34424b;--mut:#687680;--line:#e1e4de;--line2:#eceee9;
  --side:#0e1a21;--side2:#13232c;--sideink:#d3dce0;--sidemut:#7f9199;--sideline:rgba(255,255,255,.07);
  --red:#c8102e;--redbg:#fbe9ec;--ok:#17794f;--okbg:#e4f2eb;--warn:#9a5b08;--warnbg:#fbf0dc;--bad:#b42318;--badbg:#fdeceb;
  --c1:#1f4a63;--c2:#9dbdcc;--c3:#c8102e;--c4:#17794f;
  --btn:#101b22;--btnink:#fff;--hover:#f4f6f2;
  --sh:0 1px 2px rgba(16,27,34,.04),0 10px 30px -18px rgba(16,27,34,.28);
  --r:16px;
  --mono:'Geist Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){
  --bg:#0a1216;--panel:#10191f;--panel2:#0d161b;--ink:#e6ecef;--ink2:#c1ccd1;--mut:#87959c;--line:#1c2a32;--line2:#16232a;
  --side:#070e12;--side2:#0d181e;--sideline:rgba(255,255,255,.06);
  --red:#f0485f;--redbg:rgba(240,72,95,.13);--ok:#4cc38a;--okbg:rgba(76,195,138,.12);--warn:#e7a94d;--warnbg:rgba(231,169,77,.12);--bad:#f07167;--badbg:rgba(240,113,103,.12);
  --c1:#86b9d0;--c2:#2d5263;--c3:#f0485f;--c4:#4cc38a;--btn:#e6ecef;--btnink:#0a1216;--hover:#132028;
  --sh:0 1px 2px rgba(0,0,0,.3),0 12px 30px -18px rgba(0,0,0,.7);color-scheme:dark}}
:root[data-theme=dark]{
  --bg:#0a1216;--panel:#10191f;--panel2:#0d161b;--ink:#e6ecef;--ink2:#c1ccd1;--mut:#87959c;--line:#1c2a32;--line2:#16232a;
  --side:#070e12;--side2:#0d181e;--sideline:rgba(255,255,255,.06);
  --red:#f0485f;--redbg:rgba(240,72,95,.13);--ok:#4cc38a;--okbg:rgba(76,195,138,.12);--warn:#e7a94d;--warnbg:rgba(231,169,77,.12);--bad:#f07167;--badbg:rgba(240,113,103,.12);
  --c1:#86b9d0;--c2:#2d5263;--c3:#f0485f;--c4:#4cc38a;--btn:#e6ecef;--btnink:#0a1216;--hover:#132028;
  --sh:0 1px 2px rgba(0,0,0,.3),0 12px 30px -18px rgba(0,0,0,.7);color-scheme:dark}

*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 Geist,system-ui,-apple-system,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--c1);outline-offset:2px;border-radius:6px}
.mono,.num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.num{font-feature-settings:"tnum"}
.i{width:1em;height:1em;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;display:block}
[hidden]{display:none!important}

/* ── shell ── */
.shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;background:var(--side);color:var(--sideink);display:flex;flex-direction:column;padding:18px 14px}
.brand{display:flex;align-items:center;gap:11px;padding:4px 8px 20px}
.brand b{font-weight:650;font-size:17px;letter-spacing:-.02em;color:#fff}
.brand small{display:block;font:500 10.5px var(--mono);color:var(--sidemut);letter-spacing:.06em;margin-top:1px}
.seal{width:36px;height:36px;flex:none}
.nav{display:flex;flex-direction:column;gap:2px}
.nav .h{font:500 10.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--sidemut);padding:16px 10px 6px}
.nav a{display:flex;align-items:center;gap:11px;height:38px;padding:0 10px;border-radius:10px;font-weight:500;color:#b7c3c9;transition:background .15s,color .15s}
.nav a .i{font-size:17px;color:#7f9199}
.nav a:hover{background:var(--side2);color:#fff}
.nav a.on{background:rgba(255,255,255,.08);color:#fff;box-shadow:inset 0 0 0 1px var(--sideline)}
.nav a.on .i{color:#fff}
.nav a .ct{margin-left:auto;font:500 11px var(--mono);color:var(--sidemut)}
.side .foot{margin-top:auto;display:flex;flex-direction:column;gap:10px}
.mode{border-radius:12px;padding:11px 12px;background:rgba(240,72,95,.1);box-shadow:inset 0 0 0 1px rgba(240,72,95,.25);font-size:12px;line-height:1.4;color:#f3c3ca}
.mode b{display:flex;align-items:center;gap:7px;color:#ff8d9c;font:600 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;margin-bottom:3px}
.mode.live{background:rgba(76,195,138,.1);box-shadow:inset 0 0 0 1px rgba(76,195,138,.25);color:#bfe7d2}.mode.live b{color:#6fd6a3}
.who{display:flex;align-items:center;gap:10px;padding:8px 8px 2px;border-top:1px solid var(--sideline);font-size:12.5px;color:var(--sidemut)}
.who .av{width:30px;height:30px;border-radius:9px;background:var(--side2);display:grid;place-items:center;color:#fff;font:600 12px Geist}
.who button{background:none;border:0;padding:0;cursor:pointer;margin-left:auto;color:var(--sidemut);display:flex;align-items:center;gap:6px;font-size:12px}
.who button:hover{color:#fff}

.main{min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:14px 28px;background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line2)}
.top h1{margin:0;font-size:20px;font-weight:650;letter-spacing:-.025em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .crumb{font:500 11px var(--mono);color:var(--mut);letter-spacing:.04em;display:block;margin-bottom:1px}
.top .tt{min-width:0;margin-right:auto}
.top .ctl{display:flex;align-items:center;gap:8px}
.sel,.inp{height:38px;border-radius:10px;border:1px solid var(--line);background:var(--panel);padding:0 12px;outline:0;min-width:0}
.sel{padding-right:30px;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23687680' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:14px}
.sel:focus,.inp:focus{border-color:var(--c1)}
.search{position:relative}
.search .i{position:absolute;left:11px;top:11px;font-size:16px;color:var(--mut)}
.search .inp{padding-left:34px;width:240px}
.search kbd{position:absolute;right:9px;top:9px;font:500 10.5px var(--mono);color:var(--mut);border:1px solid var(--line);border-radius:6px;padding:1px 6px;background:var(--panel2)}
.content{padding:24px 28px 80px;max-width:1360px;width:100%}

/* ── primitives ── */
.btn{height:38px;padding:0 15px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:550;white-space:nowrap;transition:filter .15s,background .15s,transform .1s}
.btn .i{font-size:16px}
.btn:active{transform:translateY(1px)}
.btn.pri{background:var(--btn);color:var(--btnink)}
.btn.pri:hover{filter:brightness(1.15)}
.btn.gh{border:1px solid var(--line);background:var(--panel)}
.btn.gh:hover{background:var(--hover)}
.btn.red{background:var(--red);color:#fff}
.btn.sm{height:32px;padding:0 11px;font-size:13px;border-radius:9px}
.btn:disabled{opacity:.45;pointer-events:none}
.card{background:var(--panel);border-radius:var(--r);box-shadow:var(--sh),inset 0 0 0 1px var(--line)}
.card>.hd{display:flex;align-items:center;gap:10px;padding:16px 18px 0}
.card>.hd h2{margin:0;font-size:14px;font-weight:600;letter-spacing:-.01em}
.card>.hd .sub{font-size:12.5px;color:var(--mut)}
.card>.hd .r{margin-left:auto;display:flex;align-items:center;gap:8px}
.card>.bd{padding:16px 18px 18px}
.lnk{color:var(--c1);font-weight:550;font-size:13px;display:inline-flex;align-items:center;gap:4px}
.lnk:hover{text-decoration:underline}
.eyebrow{font:500 10.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
.muted{color:var(--mut)}
.grid{display:grid;gap:16px}
.pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:6px;font:500 11px var(--mono);letter-spacing:.02em;white-space:nowrap}
.pill.inv{background:color-mix(in srgb,var(--c1) 12%,transparent);color:var(--c1)}
.pill.rct{background:var(--okbg);color:var(--ok)}
.pill.crn{background:var(--redbg);color:var(--red)}
.pill.ok{background:var(--okbg);color:var(--ok)}
.pill.warn{background:var(--warnbg);color:var(--warn)}
.pill.bad{background:var(--badbg);color:var(--bad)}
.pill.gray{background:var(--line2);color:var(--mut)}
.pill .i{font-size:12px}
.dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex:none}
.empty{padding:36px 18px;text-align:center;color:var(--mut)}
.empty b{display:block;color:var(--ink);font-weight:600;margin-bottom:3px}

/* alerts */
.alerts{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.alert{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:12px;font-size:13px}
.alert .i{font-size:18px;margin-top:1px}
.alert b{display:block;font-weight:600}
.alert span{color:inherit;opacity:.85}
.alert.warn{background:var(--warnbg);color:var(--warn)}
.alert.bad{background:var(--badbg);color:var(--bad)}
.alert .btn{margin-left:auto;flex:none}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px}
.kpi{padding:16px 18px 14px;display:flex;flex-direction:column;gap:6px;min-width:0}
.kpi .v{font:600 27px/1.1 var(--mono);letter-spacing:-.04em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .v small{font-size:15px;color:var(--mut);font-weight:500;margin-left:1px}
.kpi .f{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--mut);min-height:22px}
.dl{display:inline-flex;align-items:center;gap:3px;font:500 11.5px var(--mono);padding:2px 6px;border-radius:6px}
.dl.up{background:var(--okbg);color:var(--ok)}.dl.dn{background:var(--badbg);color:var(--bad)}.dl.eq{background:var(--line2);color:var(--mut)}
.spark{margin-left:auto;width:84px;height:26px}

/* chart */
.chart{width:100%;height:240px;display:block}
.chart text{font:500 10.5px var(--mono);fill:var(--mut)}
.chart .gl{stroke:var(--line2)}
.chart .bar{fill:var(--c1)}
.chart .bar.neg{fill:var(--c3)}
.chart .bar:hover{opacity:.8}
.chart .ln{fill:none;stroke:var(--c4);stroke-width:2}
.legend{display:flex;gap:14px;font-size:12px;color:var(--mut)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.tip{position:fixed;z-index:90;pointer-events:none;background:var(--ink);color:var(--bg);padding:7px 10px;border-radius:9px;font:500 12px var(--mono);white-space:nowrap;box-shadow:0 8px 24px -8px rgba(0,0,0,.4)}

/* rate bars */
.rates{display:flex;flex-direction:column;gap:14px}
.rate .t{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:13px}
.rate .t b{font:600 13px var(--mono)}
.rate .t span{font:500 12px var(--mono);color:var(--mut)}
.rate .tr{height:8px;border-radius:8px;background:var(--line2);margin-top:6px;overflow:hidden}
.rate .tr i{display:block;height:100%;border-radius:8px;background:var(--c1)}

/* donut */
.mix{display:flex;align-items:center;gap:18px}
.mix svg{width:118px;height:118px;flex:none}
.mix ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;flex:1;min-width:0}
.mix li{display:flex;align-items:center;gap:8px;font-size:13px}
.mix li b{margin-left:auto;font:500 12.5px var(--mono)}

/* tables */
.tw{overflow-x:auto}
table.t{width:100%;border-collapse:collapse;font-size:13px}
.t th{text-align:left;font:500 10.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mut);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--panel)}
.t td{padding:11px 12px;border-bottom:1px solid var(--line2);white-space:nowrap;vertical-align:middle}
.t tr:last-child td{border-bottom:0}
.t td.r,.t th.r{text-align:right}
.t tbody tr{cursor:pointer;transition:background .12s}
.t tbody tr:hover{background:var(--hover)}
.t .no{font:500 12.5px var(--mono);color:var(--ink)}
.t .amt{font:500 13px var(--mono);font-variant-numeric:tabular-nums}
.t .neg{color:var(--red)}
.t .cu{max-width:220px;overflow:hidden;text-overflow:ellipsis}
.t .sm{font-size:12px;color:var(--mut)}
.mini{display:flex;flex-direction:column}
.mini a{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line2);font-size:13px}
.mini a:first-child{border-top:0}
.mini a .no{font:500 12.5px var(--mono)}
.mini a .amt{margin-left:auto;font:500 13px var(--mono)}
.mini a:hover .no{color:var(--c1);text-decoration:underline}
.t tfoot td{border-top:1px solid var(--line);font-weight:600;background:var(--panel2)}

/* chain */
.chain{display:flex;align-items:center;gap:0;overflow-x:auto;padding:4px 2px 6px}
.blk{flex:none;width:118px;border-radius:11px;padding:9px 10px;background:var(--panel2);box-shadow:inset 0 0 0 1px var(--line);display:flex;flex-direction:column;gap:3px;transition:box-shadow .15s}
.blk:hover{box-shadow:inset 0 0 0 1.5px var(--c1)}
.blk .n{font:500 10.5px var(--mono);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.blk .h{font:400 10px var(--mono);color:var(--mut)}
.blk .h b{color:var(--ok);font-weight:500}
.blk.bad{box-shadow:inset 0 0 0 1.5px var(--bad);background:var(--badbg)}
.blk.gen{width:auto;padding:9px 12px;align-items:center;justify-content:center;color:var(--mut);font:500 10.5px var(--mono)}
.lk{flex:none;width:22px;height:2px;background:var(--ok);position:relative}
.lk::after{content:"";position:absolute;right:-1px;top:-3px;border:4px solid transparent;border-left:5px solid var(--ok);border-right:0}
.lk.bad{background:var(--bad)}.lk.bad::after{border-left-color:var(--bad)}

/* entities */
.ents{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.ent{padding:18px;display:flex;flex-direction:column;gap:14px;transition:box-shadow .15s}
.ent:hover{box-shadow:var(--sh),inset 0 0 0 1.5px var(--c1)}
.ent .h{display:flex;align-items:flex-start;gap:12px}
.ent .h b{display:block;font-size:15px;font-weight:600;letter-spacing:-.01em}
.ent .h small{display:block;font:500 11.5px var(--mono);color:var(--mut);margin-top:2px}
.ent .h .pill{margin-left:auto}
.kv{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;padding-top:12px;border-top:1px dashed var(--line)}
.kv div span{display:block;font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut)}
.kv div b{display:block;font:600 14px var(--mono);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pfx{width:44px;height:44px;border-radius:12px;flex:none;display:grid;place-items:center;font:600 11.5px var(--mono);letter-spacing:.02em;background:var(--side);color:#fff}
.stamp{flex:none;display:inline-grid;place-items:center;text-align:center;width:86px;height:86px;border-radius:50%;border:2px solid var(--red);color:var(--red);font:600 9.5px/1.15 var(--mono);letter-spacing:.08em;text-transform:uppercase;transform:rotate(-8deg);box-shadow:inset 0 0 0 4px var(--panel),inset 0 0 0 5px var(--red);padding:10px}
.stamp.ok{border-color:var(--ok);color:var(--ok);box-shadow:inset 0 0 0 4px var(--panel),inset 0 0 0 5px var(--ok)}

/* definition lists */
.dlist{display:grid;grid-template-columns:max-content 1fr;gap:9px 18px;font-size:13px;margin:0}
.dlist dt{color:var(--mut)}
.dlist dd{margin:0;min-width:0;overflow-wrap:anywhere}
.hash{font:400 11.5px/1.5 var(--mono);color:var(--ink2);word-break:break-all}
.copy{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:7px;color:var(--mut);vertical-align:middle}
.copy:hover{background:var(--hover);color:var(--ink)}

/* document paper */
.docframe{display:block;width:100%;min-height:760px;border:0;border-radius:6px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08),0 22px 50px -26px rgba(16,27,34,.45)}
.paper{background:#fff;color:#111;border-radius:6px;box-shadow:0 1px 2px rgba(0,0,0,.08),0 22px 50px -26px rgba(16,27,34,.45);padding:34px 36px 30px;position:relative;overflow:hidden;font-size:12.5px}
.paper .ph{display:flex;justify-content:space-between;gap:20px;padding-bottom:16px;border-bottom:2px solid #101b22}
.paper .co{font-size:17px;font-weight:650;letter-spacing:-.02em}
.paper .sm{color:#5d6970;font-size:11.5px;line-height:1.45}
.paper .dt{text-align:right}
.paper .dt .ty{font:600 12px var(--mono);letter-spacing:.16em;color:#101b22}
.paper .dt .no{font:600 15px var(--mono);margin-top:3px}
.paper .pp{display:flex;gap:28px;margin:18px 0 6px}
.paper .pp .l{font:500 9.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#8a959b;margin-bottom:3px}
.paper table{width:100%;border-collapse:collapse;margin-top:12px}
.paper th{font:500 9.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#6c777d;text-align:left;padding:7px 6px;border-bottom:1px solid #d8dcd8}
.paper td{padding:8px 6px;border-bottom:1px solid #eceee9;font-variant-numeric:tabular-nums}
.paper td.r,.paper th.r{text-align:right}
.paper .tot{margin:14px 0 0 auto;width:250px;font-variant-numeric:tabular-nums}
.paper .tot div{display:flex;justify-content:space-between;padding:4px 0}
.paper .tot .g{border-top:2px solid #101b22;margin-top:6px;padding-top:8px;font-size:15px;font-weight:650}
.paper .pf{margin-top:22px;padding-top:10px;border-top:1px dashed #b9c0bd;font:400 9.5px/1.5 var(--mono);color:#7b868b;word-break:break-all}
.paper .seal2{position:absolute;right:36px;top:128px;transform:rotate(-12deg);border:2.5px solid #c8102e;color:#c8102e;border-radius:10px;padding:5px 12px;font:600 12px var(--mono);letter-spacing:.14em;opacity:.85}
.paper .seal2.ok{border-color:#17794f;color:#17794f}
.paper .ref{margin-top:8px;padding:8px 10px;border-radius:6px;background:#fbe9ec;color:#8e0d22;font-size:11.5px}

/* forms */
.form{display:grid;gap:14px}
.fld{display:flex;flex-direction:column;gap:6px;min-width:0}
.fld>span{font-size:12.5px;font-weight:550;color:var(--ink2)}
.fld>small{font-size:12px;color:var(--mut)}
.fld .inp,.fld .sel,.fld textarea{width:100%}
textarea.inp{height:auto;padding:10px 12px;resize:vertical;min-height:70px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.seg{display:inline-flex;padding:3px;border-radius:11px;background:var(--line2);gap:2px}
.seg button{height:32px;padding:0 14px;border-radius:8px;font-weight:550;font-size:13px;color:var(--mut)}
.seg button.on{background:var(--panel);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08),inset 0 0 0 1px var(--line)}
.lines{width:100%;border-collapse:separate;border-spacing:0 6px}
.lines th{font:500 10.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mut);text-align:left;padding:0 4px}
.lines td{padding:0 4px}
.lines .inp,.lines .sel{width:100%;height:38px}
.lines td.amt{font:500 13px var(--mono);text-align:right;white-space:nowrap;padding-right:6px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{height:32px;padding:0 12px;border-radius:9px;border:1px solid var(--line);background:var(--panel);font-size:13px;font-weight:500;display:inline-flex;align-items:center;gap:6px;color:var(--ink2)}
.chip.on{background:var(--btn);color:var(--btnink);border-color:var(--btn)}
.sum{display:flex;flex-direction:column;gap:8px;font-size:13px}
.sum div{display:flex;justify-content:space-between;gap:10px}
.sum div b{font:500 13px var(--mono)}
.sum .g{border-top:1px solid var(--line);padding-top:10px;margin-top:4px;font-size:15px;font-weight:600}
.sum .g b{font:600 18px var(--mono)}
.warnbox{display:flex;gap:10px;padding:12px 14px;border-radius:12px;background:var(--warnbg);color:var(--warn);font-size:12.5px;line-height:1.45}
.warnbox .i{font-size:17px;margin-top:1px}

/* filter bar */
.fbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px}
.fbar .search .inp{width:280px}
.tots{display:flex;flex-wrap:wrap;gap:22px;padding:14px 18px;border-bottom:1px solid var(--line2)}
.tots div span{display:block;font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut)}
.tots div b{font:600 16px var(--mono)}
.pager{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 18px;border-top:1px solid var(--line2);font-size:12.5px;color:var(--mut)}

/* timeline */
.tl{list-style:none;margin:0;padding:0;position:relative}
.tl li{position:relative;padding:0 0 16px 22px;font-size:13px}
.tl li::before{content:"";position:absolute;left:5px;top:8px;bottom:-4px;width:1px;background:var(--line)}
.tl li:last-child::before{display:none}
.tl li::after{content:"";position:absolute;left:1px;top:5px;width:9px;height:9px;border-radius:50%;background:var(--panel);box-shadow:inset 0 0 0 2px var(--c1)}
.tl li b{font-weight:600}
.tl li small{display:block;font:400 11.5px var(--mono);color:var(--mut)}

/* two-column page layouts */
.cols{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:16px;align-items:start}
.cols.doc{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
.stack{display:flex;flex-direction:column;gap:16px;min-width:0}

/* modal + toast */
.scrim{position:fixed;inset:0;z-index:80;background:rgba(7,14,18,.45);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px;animation:fIn .15s ease}
.modal{width:100%;max-width:560px;max-height:calc(100vh - 40px);overflow:auto;background:var(--panel);border-radius:20px;box-shadow:0 30px 80px -20px rgba(0,0,0,.5),inset 0 0 0 1px var(--line);animation:mIn .2s cubic-bezier(.2,.8,.3,1)}
.modal .mh{display:flex;align-items:center;gap:10px;padding:18px 20px 0}
.modal .mh h3{margin:0;font-size:17px;font-weight:650;letter-spacing:-.02em}
.modal .mh button{margin-left:auto;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:var(--mut)}
.modal .mh button:hover{background:var(--hover)}
.modal .mb{padding:16px 20px}
.modal .mf{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px 18px;border-top:1px solid var(--line2)}
.toast{position:fixed;z-index:95;right:24px;bottom:24px;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:12px;background:var(--ink);color:var(--bg);font-weight:500;box-shadow:0 18px 40px -16px rgba(0,0,0,.5);animation:mIn .2s ease}
.toast .i{font-size:17px}
.toast.bad{background:var(--bad);color:#fff}
@keyframes fIn{from{opacity:0}}
@keyframes mIn{from{opacity:0;transform:translateY(8px) scale(.98)}}
.skel{border-radius:10px;background:linear-gradient(90deg,var(--line2),var(--panel2),var(--line2));background-size:200% 100%;animation:sk 1.2s linear infinite}
@keyframes sk{from{background-position:100% 0}to{background-position:-100% 0}}

/* mobile tab bar (shown under 900px) */
.tabs{display:none}
@media (max-width:1180px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.cols,.cols.doc{grid-template-columns:minmax(0,1fr)}}
@media (max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{display:none}
  .top{padding:12px 16px;flex-wrap:wrap}
  .top .ctl{width:100%;order:3}
  .top .ctl .sel{flex:1}
  .top .search{display:none}
  .top .new{display:none}
  .content{padding:16px 16px 110px}
  .tabs{display:flex;position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:40;height:62px;border-radius:20px;background:var(--side);box-shadow:0 18px 40px -14px rgba(0,0,0,.55);padding:0 6px;align-items:center;justify-content:space-around}
  .tabs a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10.5px;font-weight:500;color:#8a9ba2}
  .tabs a .i{font-size:20px}
  .tabs a.on{color:#fff}
  .tabs a.plus .p{width:44px;height:44px;border-radius:14px;background:var(--red);color:#fff;display:grid;place-items:center;margin-top:-4px}
  .kpi .v{font-size:22px}
  .alert{flex-wrap:wrap}
  .alert .btn{margin-left:30px}
  .row2,.row3{grid-template-columns:1fr}
  .fbar .search .inp{width:100%}
  .fbar .search{flex:1 1 100%}
  .paper{padding:22px 18px}
  .paper .pp{flex-direction:column;gap:12px}
  .toast{left:16px;right:16px;bottom:88px}
  .mob-hide{display:none}
}
@media (max-width:560px){.kpis{grid-template-columns:minmax(0,1fr)}.ents{grid-template-columns:minmax(0,1fr)}}
@media print{.side,.top,.tabs,.noprint{display:none!important}.shell{display:block}.content{padding:0}.card{box-shadow:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ── Saul chat (S6): one thread component (.sc) for the #/saul page and the floating drawer ── */
.vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.sc{display:flex;flex-direction:column;gap:10px;min-height:0;height:100%}
.sc-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sc-top .sc-ent{flex:1;min-width:0}
.sc-help{font-size:12.5px;white-space:nowrap}
.sc-card{min-width:min(320px,100%);padding:11px 13px;border-radius:14px;background:var(--panel);box-shadow:inset 0 0 0 1px var(--line);border-bottom-left-radius:4px}
.sc-card-h{display:flex;align-items:flex-start;gap:10px;justify-content:space-between;font-size:13.5px}
.sc-card-h .pill{flex:none}
.sc-card-s{margin-top:8px;font-size:12.5px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink)}
.sc-card-f{margin-top:8px;font:500 10.5px var(--mono);color:var(--mut)}
.sh-t{padding:8px 0;border-top:1px solid var(--line2)}
.sh-th{display:flex;align-items:center;gap:8px;font-size:13.5px}
.sh-d{font-size:13px;color:var(--mut);margin:2px 0 4px}
.sh-ex{font-size:12.5px;color:var(--c1);padding:0;text-align:left;background:none;border:0;cursor:pointer}
.sh-ex:hover{text-decoration:underline}
.sc-ent{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sc-ent .sel{flex:1;min-width:180px}
.sc-log{flex:1;min-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:12px;background:var(--panel2);box-shadow:inset 0 0 0 1px var(--line2)}
.sc-page .sc-log{height:min(58vh,560px);flex:none}
.sc-empty{margin:auto;max-width:360px;text-align:center;color:var(--mut);font-size:13px}
.sc-msg{display:flex;flex-direction:column;max-width:82%}
.sc-msg.me{align-self:flex-end;align-items:flex-end}
.sc-msg.saul{align-self:flex-start;align-items:flex-start}
.sc-b{padding:9px 12px;border-radius:14px;font-size:13.5px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.sc-msg.me .sc-b{background:var(--btn);color:var(--btnink);border-bottom-right-radius:4px}
.sc-msg.saul .sc-b{background:var(--panel);box-shadow:inset 0 0 0 1px var(--line);border-bottom-left-radius:4px}
.sc-msg.err .sc-b{color:var(--bad);background:var(--badbg);box-shadow:none}
.sc-msg.pending .sc-b{color:var(--mut);font-style:italic}
.sc-src{font:500 10.5px var(--mono);letter-spacing:.04em;color:var(--mut);margin-top:3px;padding:0 4px}
.sc-note{font-size:12.5px;color:var(--warn)}
.sc-in{display:flex;gap:8px;align-items:center}
.sc-in .inp{flex:1}
.sc-tools{display:contents}
.sc-ic{width:38px;height:38px;flex:none;border-radius:10px;display:grid;place-items:center;border:1px solid var(--line);background:var(--panel);color:var(--ink)}
.sc-ic:hover{background:var(--hover)}
.sc-ic .i{font-size:18px}
.sc-ic.on{background:var(--red);border-color:var(--red);color:#fff;animation:scPulse 1.4s ease-in-out infinite}
.sc-ic:disabled{opacity:.45}
@keyframes scPulse{50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--red) 25%,transparent)}}
.sc-ctl{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sc-tg{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}
.saul-fab{position:fixed;right:24px;bottom:24px;z-index:45;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--side);color:#fff;box-shadow:0 14px 34px -12px rgba(0,0,0,.55),inset 0 0 0 1px rgba(255,255,255,.08);transition:transform .15s}
.saul-fab:hover{transform:translateY(-2px)}
.saul-fab:focus-visible{outline:3px solid var(--c1);outline-offset:3px;border-radius:50%}
.saul-fab .i{font-size:24px}
.saul-fab[hidden],.saul-drawer[hidden]{display:none}
.saul-drawer{position:fixed;top:0;right:0;bottom:0;z-index:44;width:min(420px,100vw);display:flex;flex-direction:column;background:var(--panel);box-shadow:-20px 0 50px -24px rgba(0,0,0,.45),inset 1px 0 0 var(--line)}
.sd-h{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line2)}
.sd-h h2{margin:0;font-size:16px;letter-spacing:-.01em}
.sd-h .lnk{margin-left:auto}
.sd-b{flex:1;min-height:0;padding:14px 18px 92px;display:flex;flex-direction:column}
@media (max-width:900px){
  .saul-fab{right:16px;bottom:calc(86px + env(safe-area-inset-bottom))}
  .saul-drawer{width:100vw}
  .sd-b{padding-bottom:calc(160px + env(safe-area-inset-bottom))}
  .sc-page .sc-log{height:52vh}
  .sc-msg{max-width:92%}
}
@media (prefers-reduced-motion:reduce){.sc-ic.on{animation:none}.saul-fab{transition:none}}
