@font-face{font-family:Archivo;src:url(../fonts/archivo.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:Manrope;src:url(../fonts/manrope.woff2) format("woff2");font-weight:200 800;font-display:swap}
@font-face{font-family:JBMono;src:url(../fonts/jbmono.woff2) format("woff2");font-weight:100 800;font-display:swap}
:root{
  --navy-0:#040914;--navy-1:#070f22;--navy-2:#0a1530;--navy-3:#0d1c3d;--navy-4:#12274f;--hair-d:#1a2c52;
  --blue:#2b7fff;--blue-d:#1e6bff;--blue-dd:#1558d6;--cyan:#48c6ff;
  --paper:#eef1f6;--panel:#f7f8fb;--hair:#d5dbe6;--ink:#0a1530;--ink-2:#3a4866;--muted:#5f6f8f;
  --ok:#17804a;--ok-bg:#e1f0e7;--warn:#9a5b00;--warn-bg:#f6ecd8;--off:#5f6f8f;--off-bg:#e3e7ee;--due:#a12a2a;--due-bg:#f5e1e1;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font:15px/1.55 Manrope,system-ui,sans-serif}
a{color:var(--blue-d)}
.mono{font-family:JBMono,monospace;text-transform:uppercase;letter-spacing:.2em;font-size:11px}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}

/* ---------- portal shell ---------- */
.shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
aside.nav{background:var(--navy-1);color:#c3d2ee;display:flex;flex-direction:column;border-right:1px solid var(--hair-d);position:sticky;top:0;height:100vh}
aside .brand{padding:22px 22px 20px;border-bottom:1px solid var(--hair-d)}
aside .brand img{height:30px;display:block}
aside .brand .mono{color:#8698bf;margin-top:10px;display:block;font-size:10px}
aside nav{padding:14px 10px;flex:1;overflow-y:auto}
aside nav a{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;color:#c3d2ee;text-decoration:none;font-weight:600;font-size:14px;border-radius:2px}
aside nav a svg{width:18px;height:18px;flex:none}
aside nav a:hover{color:#fff;background:var(--navy-3)}
aside nav a.on{background:var(--navy-4);color:#fff}
aside nav .grp{display:block;color:#5f7099;padding:18px 12px 6px}
aside .who{padding:16px 22px;border-top:1px solid var(--hair-d);font-size:13px}
aside .who b{display:block;color:#eaf1ff}
aside .who form button{margin-top:10px;background:none;border:1px solid var(--hair-d);color:#c3d2ee;font:600 12.5px Manrope,sans-serif;padding:8px 12px;border-radius:2px;cursor:pointer;min-height:36px}
aside .who form button:hover{color:#fff;border-color:#2a4478}
.mbar{display:none}
main{padding:0 40px 48px;min-width:0}
.top{display:flex;justify-content:space-between;align-items:center;padding:22px 0;border-bottom:1px solid var(--hair);gap:12px;flex-wrap:wrap}
.top .mono{color:var(--muted)}
.top .acct{display:flex;gap:10px;align-items:center;font-size:13px;color:var(--ink-2)}
.pill{display:inline-block;font-family:JBMono,monospace;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;padding:3px 8px;border-radius:2px;white-space:nowrap;line-height:1.5}
.p-ok{background:var(--ok-bg);color:var(--ok)}.p-warn{background:var(--warn-bg);color:var(--warn)}.p-off{background:var(--off-bg);color:var(--off)}.p-due{background:var(--due-bg);color:var(--due)}
.hello{padding:30px 0 26px;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
h1{font-family:Archivo,sans-serif;font-weight:800;font-size:30px;letter-spacing:-.01em;line-height:1.15}
.hello p,.lede{color:var(--ink-2);margin-top:6px;max-width:62ch}
.facts{display:flex;border:1px solid var(--hair);background:var(--panel)}
.facts div{padding:12px 20px;border-left:1px solid var(--hair)}
.facts div:first-child{border-left:0}
.facts b{display:block;font-family:Archivo,sans-serif;font-size:22px;font-weight:700}
.facts .mono{color:var(--muted);font-size:10px}
.cols{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start}
.sec-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px;gap:12px;flex-wrap:wrap}
.sec-h h2{font-family:Archivo,sans-serif;font-size:17px;font-weight:700}
.sec-h .mono{color:var(--muted)}
.svc{background:var(--panel);border:1px solid var(--hair);display:grid;grid-template-columns:52px minmax(0,1fr) 150px 196px;align-items:center;gap:18px;padding:18px 20px;margin-bottom:-1px}
.svc .ic{width:52px;height:52px;background:var(--navy-2);display:grid;place-items:center;border-radius:2px}
.svc .ic svg{width:24px;height:24px}
.svc.off .ic{background:var(--off-bg)}
.svc h3{font-family:Archivo,sans-serif;font-size:17px;font-weight:700;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.svc p{color:var(--ink-2);font-size:13.5px;margin-top:2px}
.svc .meta{font-size:13px;color:var(--ink-2)}
.svc .meta .mono{display:block;color:var(--muted);font-size:10px;margin-bottom:2px}
.svc .note{font-size:11px;color:var(--muted);margin-top:6px;text-align:center}
.btn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;font:700 13.5px Manrope,sans-serif;border-radius:2px;text-decoration:none;border:1px solid transparent;cursor:pointer;width:100%}
.btn svg{width:15px;height:15px}
.b-pri{background:var(--blue-d);color:#fff}
.b-pri:hover{background:var(--blue-dd)}
.b-sec{background:transparent;border-color:#b9c3d6;color:var(--ink)}
.b-sec:hover{border-color:var(--ink-2)}
.btn[disabled]{opacity:.6;cursor:progress}
.box{background:var(--panel);border:1px solid var(--hair);margin-bottom:22px}
.box>header{padding:14px 18px;border-bottom:1px solid var(--hair);display:flex;justify-content:space-between;align-items:center;gap:10px}
.box>header h2{font-family:Archivo,sans-serif;font-size:15px;font-weight:700}
.box .body{padding:14px 18px}
.box .foot{padding:12px 18px;border-top:1px solid var(--hair);font-size:13px}
.box .foot a{font-weight:700;text-decoration:none}
.inv{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:12px 18px;border-bottom:1px solid var(--hair);font-size:13.5px}
.inv:last-child{border-bottom:0}
.inv .no{font-family:JBMono,monospace;font-size:12px}
.inv .amt{font-weight:700;text-align:right}
.inv .d{color:var(--muted);font-size:12.5px}
.inv .pill{justify-self:end}
.rows div{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--hair);font-size:13.5px}
.rows div:last-child{border-bottom:0}
.empty{padding:18px;color:var(--ink-2);font-size:13.5px}
.flash{border:1px solid #b7d9c5;background:var(--ok-bg);color:#0f5c34;padding:12px 16px;margin:20px 0 0;font-size:14px}
.flash.err{border-color:#e3b9b9;background:var(--due-bg);color:#7d1e1e}

/* skeleton */
.sk{display:block;height:12px;background:linear-gradient(90deg,#e3e7ee 0,#eef1f6 50%,#e3e7ee 100%);background-size:200% 100%;animation:sk 1.2s linear infinite;border-radius:2px}
.sk+.sk{margin-top:8px}
@keyframes sk{from{background-position:200% 0}to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.sk{animation:none}}

/* tables */
table.t{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--hair);font-size:14px}
table.t th{text-align:left;font-family:JBMono,monospace;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:500;padding:12px 16px;border-bottom:1px solid var(--hair)}
table.t td{padding:12px 16px;border-bottom:1px solid var(--hair);vertical-align:middle}
table.t tr:last-child td{border-bottom:0}
table.t .num{text-align:right;font-variant-numeric:tabular-nums}
.scroll{overflow-x:auto}

/* forms */
.field{margin-bottom:16px}
.field label{display:block;font-weight:700;font-size:13.5px;margin-bottom:6px}
.field .hint{font-size:12.5px;color:var(--muted);margin-top:5px}
.field .error{font-size:12.5px;color:var(--due);margin-top:5px}
input[type=text],input[type=email],input[type=password],input[type=tel],textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid #b9c3d6;background:#fbfcfd;color:var(--ink);font:15px Manrope,sans-serif;border-radius:2px}
input:focus,textarea:focus{outline:2px solid var(--blue);outline-offset:0;border-color:var(--blue)}
input.code{font-family:JBMono,monospace;font-size:22px;letter-spacing:.4em;text-align:center}
.check{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:var(--ink-2)}
.check input{width:18px;height:18px;margin-top:2px;flex:none}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}

/* ---------- auth shell ---------- */
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,520px)}
.auth .side{background:var(--navy-1);color:#c3d2ee;padding:44px 48px;display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid var(--hair-d)}
.auth .side img{height:34px;width:auto;align-self:flex-start}
.auth .side h2{font-family:Archivo,sans-serif;color:#eaf1ff;font-size:34px;line-height:1.15;font-weight:800;max-width:16ch}
.auth .side p{margin-top:14px;max-width:44ch;color:#8698bf}
.auth .side ol{list-style:none;margin-top:30px;border-top:1px solid var(--hair-d)}
.auth .side li{display:grid;grid-template-columns:44px 1fr;padding:14px 0;border-bottom:1px solid var(--hair-d);font-size:14px}
.auth .side li .mono{color:var(--cyan)}
.auth .side .fine{font-size:12.5px;color:#5f7099}
.auth .side .fine a{color:#8698bf}
.auth .form{padding:56px 48px;display:flex;flex-direction:column;justify-content:center}
.auth .form h1{font-size:26px}
.auth .form .lede{margin-bottom:26px}
.auth .form .alt{margin-top:18px;font-size:13.5px;color:var(--ink-2)}
.qr{background:#fff;border:1px solid var(--hair);padding:14px;display:inline-block;margin:6px 0 14px}
.qr svg{display:block;width:180px;height:180px}
.secret{font-family:JBMono,monospace;font-size:12.5px;background:var(--panel);border:1px solid var(--hair);padding:8px 10px;word-break:break-all;margin-bottom:18px}

/* legal / plain pages */
.plain{max-width:760px;margin:0 auto;padding:40px 20px 60px}
.plain h1{margin:18px 0 6px}
.plain h2{font-family:Archivo,sans-serif;font-size:18px;margin:26px 0 8px}
.plain p,.plain li{color:var(--ink-2);margin-bottom:10px}
.plain ul{padding-left:20px}
.plain .brandbar{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--hair);padding-bottom:16px}
.plain .brandbar img{height:28px}

@media (max-width:1100px){.cols{grid-template-columns:1fr}}
@media (max-width:900px){.auth{grid-template-columns:1fr}.auth .side{padding:28px 20px}.auth .side ol,.auth .side p{display:none}.auth .side h2{font-size:24px;margin-top:18px}.auth .form{padding:28px 20px 40px}}
@media (max-width:760px){
  .shell{grid-template-columns:1fr}
  aside.nav{position:fixed;inset:0 25% 0 0;z-index:20;transform:translateX(-100%);transition:transform .2s}
  body.nav-open aside.nav{transform:none}
  .mbar{display:flex;justify-content:space-between;align-items:center;background:var(--navy-1);padding:10px 16px;position:sticky;top:0;z-index:10}
  .mbar img{height:24px}
  .mbar button{background:none;border:1px solid var(--hair-d);color:#eaf1ff;min-width:44px;min-height:44px;border-radius:2px}
  main{padding:0 16px 32px}
  h1{font-size:25px}
  .svc{grid-template-columns:44px minmax(0,1fr);gap:12px}.svc .ic{width:44px;height:44px}
  .svc .meta,.svc .act{grid-column:1/-1}
  .facts{width:100%}.facts div{flex:1;padding:10px 12px}.facts b{font-size:19px}
  .grid2{grid-template-columns:1fr}
}
