:root{--bg:#070b10;--surface:#0e141b;--surface2:#121a22;--input:#0a1016;--ink:#e9eef3;--mut:#93a1ae;--line:#1e2833;--line2:#2a3644;
--a:#ff7a4d;--a2:#ff5a45;--k:#3fd6b8;--cyan:#8be9ff;--ok:#3fd6b8;--okb:rgba(63,214,184,.14);--warn:#f2b84b;--warnb:rgba(242,184,75,.14);--bad:#ff6b57;--badb:rgba(255,90,69,.15);
--grad-a:linear-gradient(135deg,#ff7a4d,#ff5a45);--grad-k:linear-gradient(135deg,#3fd6b8,#2bb59b);--card:linear-gradient(180deg,#0f161e,#0b1117);
--shadow:0 20px 60px rgba(0,0,0,.45);--glow:0 0 0 1px rgba(63,214,184,.05);color-scheme:dark}
[data-theme=light]{--bg:#f4f6f8;--surface:#fff;--surface2:#f7f9fb;--input:#fff;--ink:#121820;--mut:#5d6670;--line:#e1e5ea;--line2:#cfd6de;
--a:#e2572c;--a2:#d9432a;--k:#0f8f78;--cyan:#1b8fb0;--ok:#17703a;--okb:#e3f6ea;--warn:#8a5a00;--warnb:#fff3d6;--bad:#a32020;--badb:#fde6e6;
--grad-k:linear-gradient(135deg,#14a58a,#0f8f78);--card:#fff;--shadow:0 10px 30px rgba(16,24,32,.06);--glow:none;color-scheme:light}
*{box-sizing:border-box}
body{margin:0;font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;min-height:100vh}
body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 60% 40% at 85% -5%,rgba(63,214,184,.10),transparent 70%),radial-gradient(ellipse 50% 35% at 0% 0%,rgba(255,122,77,.07),transparent 70%)}
[data-theme=light] body:before{opacity:.5}
a{color:var(--a);text-decoration-color:rgba(255,122,77,.35);text-underline-offset:3px}a:hover{color:var(--ink);text-decoration-color:currentColor}
header{position:sticky;top:0;z-index:20;background:rgba(7,11,16,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(255,255,255,.06)}
[data-theme=light] header{background:rgba(255,255,255,.8);border-bottom-color:var(--line)}
.bar{max-width:1240px;margin:0 auto;padding:12px 24px;display:flex;gap:26px;align-items:center}
.brand{font-weight:800;font-size:19px;color:var(--ink);text-decoration:none;display:flex;gap:10px;align-items:center;letter-spacing:-.01em}.brand:hover{color:var(--ink)}
.brand i{width:22px;height:22px;border-radius:6px;background:var(--grad-a);box-shadow:0 0 18px rgba(255,122,77,.5)}
nav{display:flex;gap:4px}
nav a{color:var(--mut);text-decoration:none;font-size:14px;padding:6px 11px;border-radius:8px;transition:color .15s,background .15s}
nav a:hover{color:var(--ink);background:rgba(255,255,255,.05)}[data-theme=light] nav a:hover{background:rgba(0,0,0,.04)}
nav a.on{color:var(--ink);background:rgba(63,214,184,.10);box-shadow:inset 0 0 0 1px rgba(63,214,184,.22)}
.right{margin-left:auto;display:flex;gap:12px;align-items:center;font-size:13.5px;color:var(--mut)}.right a{color:var(--mut);text-decoration:none}.right a.btn{color:#fff}
main{max-width:1240px;margin:0 auto;padding:34px 24px 80px}
h1{font-size:clamp(26px,3vw,34px);line-height:1.15;margin:0 0 8px;letter-spacing:-.025em}
h2{font-size:20px;margin:34px 0 12px;letter-spacing:-.015em}h3{font-size:16px;margin:0 0 6px;letter-spacing:-.01em}
.mut{color:var(--mut)}.small{font-size:13px}
.grad{background:linear-gradient(90deg,var(--k),var(--cyan) 45%,var(--a));-webkit-background-clip:text;background-clip:text;color:transparent}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px 22px;margin-bottom:18px;box-shadow:var(--shadow),var(--glow);transition:border-color .25s}
.card:hover{border-color:var(--line2)}
.card>h2:first-child,.card>h3:first-child{margin-top:0}
.grid{display:grid;gap:18px}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g5{grid-template-columns:repeat(5,1fr)}
.grid>.card{margin-bottom:0}.grid+.grid,.grid+.card,.card+.grid{margin-top:18px}
.stat{position:relative;overflow:hidden}.stat b{display:block;font-size:34px;letter-spacing:-.03em;line-height:1.15;margin-top:4px;font-variant-numeric:tabular-nums}
.stat:after{content:"";position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(90deg,var(--k),var(--cyan) 50%,transparent)}
.btn{display:inline-block;background:var(--grad-a);color:#fff;border:0;border-radius:10px;padding:10px 17px;font-weight:700;font-size:14px;cursor:pointer;text-decoration:none;box-shadow:0 8px 24px rgba(255,90,69,.25);transition:transform .15s,box-shadow .15s,filter .15s}
.btn:hover{color:#fff;transform:translateY(-1px);box-shadow:0 12px 30px rgba(255,90,69,.38)}
.btn.sec{background:rgba(255,255,255,.04);color:var(--ink);border:1px solid rgba(255,255,255,.14);box-shadow:none}.btn.sec:hover{background:rgba(255,255,255,.08);color:var(--ink)}
[data-theme=light] .btn.sec{background:#fff;border-color:var(--line2)}[data-theme=light] .btn.sec:hover{background:var(--surface2)}
.btn.k{background:var(--grad-k);box-shadow:0 8px 24px rgba(63,214,184,.22)}.btn.k:hover{box-shadow:0 12px 30px rgba(63,214,184,.34)}
.btn.sm{padding:6px 12px;font-size:13px;border-radius:8px}
.linkbtn{background:none;border:0;color:var(--mut);cursor:pointer;font-size:13.5px;padding:0;font-family:inherit}.linkbtn:hover{color:var(--ink)}
input,select,textarea{font:inherit;padding:9px 12px;border:1px solid var(--line2);border-radius:10px;width:100%;background:var(--input);color:var(--ink);transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:rgba(63,214,184,.6);box-shadow:0 0 0 3px rgba(63,214,184,.15)}
input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--k)}input[type=file]{padding:7px}
textarea{min-height:76px}label{font-size:13px;font-weight:600;display:block;margin:12px 0 5px;color:#c3ced8}[data-theme=light] label{color:var(--ink)}
form.inline{display:inline}.row{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.row>*{flex:1}
table{width:100%;border-collapse:collapse;background:transparent}
th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top;font-size:14px}
th{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--mut);font-weight:700}
tbody tr,table tr:not(:first-child){transition:background .15s}table tr:hover td{background:rgba(255,255,255,.02)}[data-theme=light] table tr:hover td{background:var(--surface2)}
.pill{display:inline-block;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:99px;background:rgba(255,255,255,.06);color:var(--mut);white-space:nowrap;letter-spacing:.02em;text-transform:none}
[data-theme=light] .pill{background:var(--surface2);box-shadow:inset 0 0 0 1px var(--line)}
.ok{background:var(--okb);color:var(--ok)}.warn{background:var(--warnb);color:var(--warn)}.bad{background:var(--badb);color:var(--bad)}
.pill.ok,.pill.warn,.pill.bad{box-shadow:none}
.flash{padding:11px 15px;border-radius:12px;margin-bottom:16px;background:var(--okb);color:var(--ok);border:1px solid rgba(63,214,184,.25)}.flash.error{background:var(--badb);color:var(--bad);border-color:rgba(255,90,69,.3)}
.inject{border-left:3px solid var(--a);padding:12px 16px;background:var(--surface2);border-radius:0 12px 12px 0;margin-bottom:10px;border-top:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.inject.cur{border-left-color:var(--k);box-shadow:0 10px 30px rgba(0,0,0,.35),0 0 0 1px rgba(63,214,184,.18);animation:pop .45s cubic-bezier(.2,.9,.3,1.3) both}
[data-theme=light] .inject.cur{box-shadow:0 6px 20px rgba(0,0,0,.08)}
@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
.hash{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:#6f7d8a;word-break:break-all}
.progress{height:8px;background:var(--line);border-radius:99px;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--k),var(--cyan));border-radius:99px;box-shadow:0 0 12px rgba(63,214,184,.5)}
details>summary{cursor:pointer;font-weight:600;color:var(--ink)}details>summary:hover{color:var(--k)}details[open]>summary{margin-bottom:6px}
.item{border-top:1px solid var(--line);padding:16px 0}.item:first-child{border-top:0}
.auth{max-width:440px;margin:60px auto;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:30px 32px;box-shadow:var(--shadow),var(--glow)}
.auth h1{font-size:28px}.auth .btn{width:100%;padding:12px;margin-top:6px}
.hero{padding:50px 0;max-width:760px}.hero h1{font-size:44px;line-height:1.08}
.print-only{display:none}
.toasts{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:8px;z-index:50}
.toast{background:var(--surface2);color:var(--ink);border:1px solid var(--line2);padding:12px 16px;border-radius:12px;box-shadow:0 14px 40px rgba(0,0,0,.45);font-size:14px;animation:tin .25s ease-out;max-width:360px}
.toast.error{border-color:rgba(255,90,69,.5);color:var(--bad)}.toast.celebrate{border-color:rgba(63,214,184,.5);color:var(--ok)}
@keyframes tin{from{transform:translateY(10px);opacity:0}to{transform:none;opacity:1}}
.celebrate-banner{background:linear-gradient(90deg,rgba(63,214,184,.16),rgba(139,233,255,.06) 60%,transparent);border:1px solid rgba(63,214,184,.3);border-radius:14px;padding:16px 18px;margin-bottom:18px;display:flex;gap:14px;align-items:center}
.celebrate-banner .tick{width:38px;height:38px;border-radius:50%;background:var(--grad-k);color:#052019;display:grid;place-items:center;font-weight:800;box-shadow:0 0 20px rgba(63,214,184,.45)}
.steps li{list-style:none;padding:6px 0;display:flex;gap:10px;align-items:center}.steps{padding:0;margin:8px 0 0}
.dot{width:20px;height:20px;border-radius:50%;border:2px solid var(--line2);display:inline-grid;place-items:center;font-size:12px;flex:none}.dot.done{background:var(--k);border-color:var(--k);color:#052019;box-shadow:0 0 10px rgba(63,214,184,.4)}
.empty{text-align:center;padding:30px 12px;color:var(--mut)}.empty b{display:block;color:var(--ink);font-size:16px;margin-bottom:4px}
.why{background:rgba(63,214,184,.06);border:1px solid rgba(63,214,184,.14);border-radius:10px;padding:9px 13px;font-size:13px;color:var(--mut);margin-bottom:8px}
[data-theme=light] .why{background:var(--surface2);border-color:var(--line)}
.kbd{font-family:ui-monospace,Menlo,monospace;border:1px solid var(--line2);border-bottom-width:2px;border-radius:5px;padding:0 5px;font-size:12px;background:var(--surface2)}
a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--k);outline-offset:2px}
.hello{font-size:15px;color:var(--mut);margin:0 0 22px}
.theme-btn{background:rgba(255,255,255,.04);border:1px solid var(--line2);border-radius:8px;color:var(--mut);cursor:pointer;padding:5px 10px;font-size:12.5px;font-family:inherit}.theme-btn:hover{color:var(--ink)}
::selection{background:rgba(63,214,184,.3)}
/* Charts render with light-theme colours (app/core/charts.py); remap them for the dark theme. */
@media screen{:root:not([data-theme=light]) svg [fill="#1b1f24"]{fill:#e9eef3}:root:not([data-theme=light]) svg [fill="#5d6670"]{fill:#93a1ae}}
@media screen{:root:not([data-theme=light]) svg [stroke="#e3e6ea"]{stroke:#243040}:root:not([data-theme=light]) svg [fill="#e3e6ea"]{fill:#243040}:root:not([data-theme=light]) svg [stroke="#fff"]{stroke:#0e141b}}
@media screen{:root:not([data-theme=light]) svg [fill="#0f5c4d"],:root:not([data-theme=light]) svg [fill="#17703a"]{fill:#3fd6b8}:root:not([data-theme=light]) svg [stroke="#0f5c4d"],:root:not([data-theme=light]) svg [stroke="#17703a"]{stroke:#3fd6b8}}
@media screen{:root:not([data-theme=light]) svg [stroke="#b4421b"]{stroke:#ff7a4d}:root:not([data-theme=light]) svg [fill="#b4421b"]{fill:#ff7a4d}}
@media screen{:root:not([data-theme=light]) svg [fill="#c98a00"]{fill:#f2b84b}:root:not([data-theme=light]) svg [fill="#a32020"]{fill:#ff5a45}:root:not([data-theme=light]) svg [stroke="#a32020"]{stroke:#ff5a45}}
@media(max-width:1020px){.bar{flex-wrap:wrap;gap:12px 18px}nav{order:3;width:100%;overflow-x:auto;white-space:nowrap;padding-bottom:2px}}
@media(max-width:820px){.g2,.g3,.g4,.g5{grid-template-columns:1fr}main{padding:24px 16px 60px}.bar{padding:12px 16px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{
 :root,[data-theme=dark],[data-theme=light]{--bg:#fff;--surface:#fff;--surface2:#fff;--input:#fff;--ink:#1b1f24;--mut:#5d6670;--line:#e3e6ea;--line2:#d0d6dc;--card:#fff;--ok:#17703a;--okb:#e3f6ea;--warn:#8a5a00;--warnb:#fff3d6;--bad:#a32020;--badb:#fde6e6;--shadow:none;--glow:none;color-scheme:light}
 header,.no-print,form{display:none!important}body{background:#fff}body:before{display:none}.card{border:0;padding:0;box-shadow:none}.print-only{display:block}main{padding:0}.stat:after{display:none}
}
.scn{padding:10px 0;border-top:1px solid var(--line)}.scn:first-of-type{border-top:0;padding-top:0}.scn p{margin:4px 0}
