/* The client portal (Surfaces V1, 20 Oct 2026): the house style of DESIGN_BLUEPRINT_2026-10-18 §1 (flat dark, the
   panel colour, one thin border, the accent as a ring, white glyphs) in the palette of the portal wireframe
   (getback-client docs/design/wireframes/portal-options.py). Mobile first: the nav is a bottom sheet under 900px. */
:root{
  --bg:#0b0a10;--panel:#1b1722;--table:#141019;--line:#5c4d6b;--line2:rgba(92,77,107,.4);
  --text:#ffffff;--muted:rgba(255,255,255,.62);--accent:#ff9b4a;--gold:#ffd66b;--ok:#55d08a;--warn:#ffd66b;--bad:#ff6b6b;
  --radius:14px;--r2:10px;--top:60px;--navw:230px;
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 Inter,-apple-system,system-ui,"Segoe UI",Roboto,sans-serif;min-height:100dvh}
a{color:var(--gold);text-decoration:none}
a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
.skip{position:absolute;left:-999px;top:0;background:var(--accent);color:#1b1722;padding:8px 12px;z-index:100}
.skip:focus{left:8px;top:8px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* top bar */
.top{position:sticky;top:0;z-index:30;height:var(--top);display:flex;align-items:center;gap:14px;padding:0 16px;background:var(--bg);border-bottom:1px solid var(--line2)}
.wm{font-size:16px;font-weight:900;letter-spacing:.01em;white-space:nowrap;color:#fff}
.wm b{font-weight:900}.wm i{font-style:normal;color:var(--accent)}
.wm small{font-weight:600;opacity:.6;font-size:11px;margin-left:8px;letter-spacing:.1em;display:none}
.brandpill{height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:rgba(27,23,34,.92);display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:12px;white-space:nowrap;min-width:0;flex:0 1 auto;overflow:hidden}
.brandpill>span{overflow:hidden;text-overflow:ellipsis}
.brandpill .env{opacity:.65;font-weight:600}
.brandpill select.switch{height:26px;border:0;background:transparent;padding:0 18px 0 0;font-weight:700;font-size:12px;color:#fff;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23ff9b4a' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 2px center;max-width:46vw;text-overflow:ellipsis}
.brandpill select.switch option{background:#1b1722;color:#fff}
.brandpill:has(select.switch:not([hidden])) .env,.brandpill:has(select.switch:not([hidden])) #brandName{display:none}
.dot{width:8px;height:8px;border-radius:50%;background:#777;display:inline-block;flex:none}
.dot.operational{background:var(--ok)}.dot.degraded{background:var(--warn)}.dot.outage{background:var(--bad)}
.sp{flex:1}
.user{font-size:12px;opacity:.75;letter-spacing:.04em;white-space:nowrap;display:none}
.user b{color:#fff;opacity:1;margin-left:4px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:rgba(27,23,34,.92);color:#fff;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;white-space:nowrap}
.btn:hover{border-color:var(--accent);text-decoration:none}
.btn.p{background:var(--accent);border-color:var(--accent);color:#1b1722}
.btn.danger{border-color:var(--bad);color:var(--bad)}
.btn:disabled{opacity:.45;cursor:default}
.btn.sm{height:28px;padding:0 10px;font-size:10px}
.menu{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:transparent;display:flex;flex-direction:column;justify-content:center;gap:4px;align-items:center;cursor:pointer;padding:0}
.menu span{display:block;width:16px;height:2px;background:#fff;border-radius:2px}

/* nav: a bottom sheet on a phone, a left column on a desktop */
.nav{position:fixed;left:0;right:0;bottom:0;z-index:40;transform:translateY(105%);visibility:hidden;transition:transform .22s ease,visibility 0s .22s;max-height:85dvh;overflow:auto;border-top:1px solid var(--line);background:var(--panel);border-radius:18px 18px 0 0}
.nav.open{transform:none;visibility:visible;transition:transform .22s ease}
.nav[hidden]{display:none}
.navinner{padding:10px 12px 24px}
.navhead{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 10px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.x{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:transparent;color:#fff;font-size:18px;line-height:1;cursor:pointer}
.nav a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;font-weight:600;color:#fff;opacity:.78;border:1px solid transparent}
.nav a:hover{opacity:1;text-decoration:none}
.nav a i{width:16px;height:16px;border-radius:50%;border:1px solid var(--line);display:block;flex:none}
.nav a.on{background:#241e2d;border-color:var(--line);opacity:1;color:var(--gold)}
.nav a.on i{border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--panel),inset 0 0 0 8px var(--accent)}
.grp{font-size:10px;letter-spacing:.16em;text-transform:uppercase;opacity:.5;padding:14px 14px 6px;font-weight:700}
.navfoot{font-size:11px;color:var(--muted);padding:14px 14px 0}
.navfoot a{color:#fff;text-decoration:underline}
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:35}
.scrim[hidden]{display:none}

/* main */
.main{padding:16px 16px 48px;max-width:1240px}
h1{font-size:20px;margin:4px 0 2px;font-weight:800}
h2{font-size:11px;letter-spacing:.16em;text-transform:uppercase;opacity:.6;margin:22px 0 10px;font-weight:800}
.sub{color:var(--muted);font-size:12.5px;margin:0 0 14px}
.sub a,p a,.kpi a{text-decoration:underline}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.kpi{border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);padding:12px 14px;min-width:0}
.kpi small{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.6;font-weight:700;margin-bottom:6px;color:var(--text)}
.kpi b{display:block;font-size:20px;font-weight:800;line-height:1.15;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.kpi b .cur{font-size:12px;font-weight:600;opacity:.7;margin-left:3px}
.kpi b .n{white-space:nowrap}
.kpi .l{display:block;font-size:11.5px;opacity:.7;margin-top:4px;line-height:1.35;color:var(--text)}
.kpi.ok b{color:var(--ok)}.kpi.warn b{color:var(--warn)}.kpi.bad b{color:var(--bad)}
.kpi b.ns,.kpi b .ns{display:inline;border:0;padding:0;background:none;font-size:13px;color:var(--muted);font-weight:600}
.panel{border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);padding:14px}
.tw{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--table);-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;min-width:100%}
th{text-align:left;font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.6;padding:10px 12px;border-bottom:1px solid var(--line2);font-weight:800;white-space:nowrap;background:var(--table);position:sticky;top:0}
td{padding:10px 12px;border-bottom:1px solid rgba(92,77,107,.25);font-variant-numeric:tabular-nums;vertical-align:middle;white-space:nowrap}
tr:last-child td{border-bottom:0}
td.num,th.num{text-align:right}
td.wrap{white-space:normal;min-width:200px}
th:first-child,td:first-child{position:sticky;left:0;background:var(--table);z-index:1}
th:first-child{z-index:2}
tbody tr:hover td{background:#1a1521}
tbody tr:hover td:first-child{background:#1a1521}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}
.muted{color:var(--muted)}
.ok{color:var(--ok)}.bad{color:var(--bad)}.warn{color:var(--warn)}
.chip{display:inline-block;padding:2px 8px;border-radius:999px;border:1px solid var(--line);font-size:10px;letter-spacing:.1em;font-weight:800;text-transform:uppercase;opacity:.9;vertical-align:middle}
.chip.ok{border-color:var(--ok);color:var(--ok)}.chip.w{border-color:var(--warn);color:var(--warn)}.chip.bad{border-color:var(--bad);color:var(--bad)}.chip.dim{opacity:.5}
.acts a,.acts button{margin-right:10px}
.acts{white-space:nowrap}
.link{background:none;border:0;padding:0;color:var(--gold);cursor:pointer;font-size:13px}
.link:hover{text-decoration:underline}
.tg{width:44px;height:26px;border-radius:999px;background:#3a3344;position:relative;display:inline-block;vertical-align:middle;border:0;cursor:pointer;padding:0;flex:none}
.tg i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .15s}
.tg[aria-checked="true"]{background:var(--accent)}.tg[aria-checked="true"] i{left:21px}
.tg:disabled{opacity:.5;cursor:default}
select,input,textarea{height:34px;padding:0 10px;border-radius:8px;border:1px solid var(--line);background:#141019;color:#fff;min-width:0;max-width:100%}
textarea{height:auto;padding:8px 10px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;width:100%}
select.sm,input.sm{height:30px;font-size:12px}
label.f{display:flex;flex-direction:column;gap:4px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-weight:700;min-width:0}
label.f>*{text-transform:none;letter-spacing:0;font-weight:400;opacity:1}
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end}
.form .wide{grid-column:1/-1}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.msg{padding:10px 12px;border-radius:var(--r2);background:#241e2d;border:1px solid var(--line);margin:10px 0;font-size:13px}
.msg.bad{border-color:var(--bad)}.msg.ok{border-color:var(--ok)}
.err{border-radius:var(--radius);background:var(--panel);border:1px solid var(--bad);padding:18px;margin:12px 0}
.err h3{margin:0 0 6px;font-size:16px}
.err .code{font-family:ui-monospace,Menlo,monospace;font-size:12px;opacity:.75;margin-top:8px}
.ns{border-radius:var(--radius);background:var(--panel);border:1px dashed var(--line);padding:14px;color:var(--muted);font-size:13px}
.ns b{color:#fff}
.loading{opacity:.6;font-size:13px;padding:14px 0}
pre{background:#0e0c13;border:1px solid var(--line2);border-radius:8px;padding:10px;overflow:auto;font-size:11.5px;line-height:1.4;margin:8px 0;max-height:60dvh}
code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;font-size:13px}
.kv dt{opacity:.6;font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;padding-top:2px}
.kv dd{margin:0;overflow-wrap:anywhere}
.sig{font-size:11.5px;color:var(--muted);line-height:1.5}
.sig code{overflow-wrap:anywhere;white-space:normal}
.stack{display:flex;flex-direction:column;gap:10px}
.pager{display:flex;gap:8px;margin-top:10px;align-items:center;font-size:12px;color:var(--muted)}

/* sign-in, the invitation and the reset */
.signin .hint{font-size:11.5px;color:var(--muted);border-top:1px solid var(--line2);padding-top:10px;margin:4px 0 0}
.scopebox{display:flex;flex-wrap:wrap;gap:8px 14px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#141019}
.scopebox label{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;text-transform:none;letter-spacing:0;font-weight:500}
.scopebox input{height:auto;width:16px;accent-color:var(--accent)}
.orgtree{display:flex;flex-wrap:wrap;gap:8px}
.orgtree .node{border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--panel);font-size:12.5px}
.orgtree .node b{display:block;font-size:13px}
.linkbox{display:flex;flex-direction:column;gap:8px}
.linkbox code{display:block;padding:10px;border-radius:8px;background:#0e0c13;border:1px solid var(--line2);overflow-wrap:anywhere;white-space:normal;font-size:12px;user-select:all}
.signin{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.signin form{width:100%;max-width:380px;border-radius:18px;background:var(--panel);border:1px solid var(--line);padding:24px;display:flex;flex-direction:column;gap:12px}
.signin .wm{font-size:20px;margin-bottom:6px}
.signin .wm small{display:inline}
.signin input{height:40px}

/* modal */
.modal{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.6);display:flex;align-items:flex-end;justify-content:center}
.modal[hidden]{display:none}
.modalbox{background:var(--panel);border:1px solid var(--line);border-radius:18px 18px 0 0;width:100%;max-width:980px;max-height:92dvh;display:flex;flex-direction:column}
.modalbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line2);font-size:14px}
.modalbody{padding:14px 16px;overflow:auto}

@media (max-width:599px){.top{gap:8px;padding:0 10px}.brandpill .env{display:none}.top .btn{padding:0 10px;font-size:10px;height:30px}}
@media (min-width:600px){
  .wm small{display:inline}
  .user{display:inline}
  .tiles{grid-template-columns:repeat(3,minmax(0,1fr))}
  .form{grid-template-columns:repeat(3,minmax(0,1fr))}
  .main{padding:20px 24px 60px}
  .modal{align-items:center;padding:20px}
  .modalbox{border-radius:18px}
}
@media (min-width:900px){
  .menu,.navhead,.scrim{display:none!important}
  .nav{position:fixed;top:var(--top);left:0;bottom:0;right:auto;width:var(--navw);transform:none;visibility:visible;transition:none;border-top:0;border-right:1px solid var(--line2);background:var(--bg);border-radius:0;max-height:none}
  .navinner{padding:16px 12px}
  .main{margin-left:var(--navw);padding:24px 28px 60px}
  .tiles{grid-template-columns:repeat(5,minmax(0,1fr))}
  .form{grid-template-columns:repeat(4,minmax(0,1fr))}
  .kpi b{font-size:19px}
}
@media (prefers-reduced-motion:reduce){.nav,.tg i{transition:none}}
