/* API Lumo — dark neon design system. Self-hosted only (CSP style-src 'self'): system fonts, no inline styles. */
:root{
  color-scheme:dark;
  --bg:#0a0d14;--surface:#111723;--surface-2:#161e2d;--surface-3:#1c2638;
  --border:#232e44;--border-strong:#34425e;
  --text:#eef2f8;--text-2:#b6c1d4;--text-3:#8e9bb3;
  --accent:#34e5c8;--accent-hover:#7af2de;--accent-ink:#03140f;--accent-soft:#34e5c81a;--accent-line:#34e5c859;
  --pink:#f05bd8;--pink-soft:#f05bd81a;
  --warn:#f5c84b;--warn-soft:#f5c84b17;--danger:#ff6b81;--danger-soft:#ff6b8117;
  --grad:linear-gradient(90deg,#34e5c8,#7aa8ff 50%,#f05bd8);
  --sans:Inter,"Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"JetBrains Mono","SF Mono","Cascadia Code",Menlo,Consolas,"Liberation Mono",monospace;
  --r:12px;--r-sm:8px;
  /* legacy names used by old views */
  --ink:var(--text);--muted:var(--text-2);--line:var(--border);--panel:var(--surface);--soft:var(--surface-2);--good:var(--accent);--bad:var(--danger)
}
*{box-sizing:border-box}
html{background:var(--bg);scroll-behavior:smooth}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--text);font:15px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
body>main,body>#workspace,body>#landing{flex:1}
h1,h2,h3,p{margin:0}
h1{font-size:28px;line-height:1.2;font-weight:650;letter-spacing:-.02em}
h2{font-size:20px;line-height:1.3;font-weight:600;letter-spacing:-.01em}
h3{font-size:15px;line-height:1.4;font-weight:600}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
::selection{background:var(--accent);color:var(--accent-ink)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
[hidden]{display:none!important}
.muted{color:var(--text-2)}
.small{font-size:13px}
.wrap{width:100%;max-width:1160px;margin:0 auto;padding:0 24px}
code,pre,.mono{font-family:var(--mono)}

/* ---------- buttons ---------- */
button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:8px 14px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text);font:500 14px/1.2 var(--sans);text-decoration:none;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,box-shadow .15s,color .15s}
button:hover,.button:hover{background:var(--surface-3);border-color:#46577a;text-decoration:none}
button:disabled{opacity:.5;cursor:wait}
button svg,.button svg{width:16px;height:16px;flex:none}
.primary,a.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600;box-shadow:0 0 0 1px #34e5c833,0 6px 24px -6px #34e5c880}
.primary:hover,a.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink)}
.ghost{background:transparent;border-color:var(--border)}
.ghost:hover{background:var(--surface-2)}
.danger{color:var(--danger)}
.danger:hover{border-color:var(--danger);background:var(--danger-soft)}
.lg{min-height:46px;padding:12px 20px;font-size:15px}
.icon{min-height:34px;width:34px;padding:0;background:transparent;border-color:transparent;color:var(--text-2)}
.icon:hover{color:var(--text);background:var(--surface-3);border-color:var(--border)}
.icon.ok{color:var(--accent)}

/* ---------- header ---------- */
.top{position:sticky;top:0;z-index:30;background:#0a0d14d9;backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.top:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--grad);opacity:.55}
.top-inner{max-width:1160px;margin:0 auto;padding:0 24px;height:64px;display:flex;align-items:center;gap:14px}
.brand{display:flex;align-items:center;gap:10px;color:var(--text);font-weight:700;font-size:17px;letter-spacing:-.01em}
.brand:hover{text-decoration:none}
.mark{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#34e5c8,#2bb5ff 55%,#f05bd8);color:#071019;font:800 16px/1 var(--sans);box-shadow:0 0 18px -4px #34e5c8aa}
.mark.sm{width:20px;height:20px;border-radius:6px;font-size:11px;vertical-align:-4px;margin-right:6px}
.top-spacer{flex:1}
.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-2);font-size:12.5px;font-weight:500;line-height:1.5;white-space:nowrap}
.badge.good{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}
.badge.good:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.badge.warn{color:var(--warn);border-color:#f5c84b55;background:var(--warn-soft)}
.badge.bad{color:var(--danger);border-color:#ff6b8155;background:var(--danger-soft)}
#mode{color:#f7a3ea;border-color:#f05bd855;background:var(--pink-soft)}
#notice{position:sticky;top:64px;z-index:25;padding:12px 24px;text-align:center;background:#122a2a;border-bottom:1px solid var(--accent-line);color:#d6fff7;font-size:14px}

/* ---------- tabs (app navigation) ---------- */
.tabbar{border-bottom:1px solid var(--border);background:#0c1019}
.tabbar nav{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
.tabbar nav::-webkit-scrollbar{display:none}
.tabbar nav button{position:relative;min-height:50px;padding:0 14px;border:0;border-radius:0;background:transparent;color:var(--text-2);font-weight:500}
.tabbar nav button:hover{color:var(--text);background:transparent}
.tabbar nav button.active{color:var(--text)}
.tabbar nav button.active:after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;border-radius:2px;background:var(--accent);box-shadow:0 0 12px var(--accent)}

/* ---------- page ---------- */
#content{padding-top:32px;padding-bottom:56px;display:grid;gap:20px;align-content:start}
.heading{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.heading p{margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.eyebrow,.kicker{font-size:13px;font-weight:600;color:var(--accent);letter-spacing:.02em;margin-bottom:10px}

/* ---------- cards ---------- */
.panel,.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);min-width:0}
.panel{overflow:hidden}
.panel-title{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}
.panel-title h3{font-size:15px}
.panel-body{padding:20px}
.panel-body p+p{margin-top:12px}
.panel>p{padding:0 20px 18px}
.balance-card>p{padding:0}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.stat{padding:18px 20px}
.stat>p:first-child{font-size:13px;color:var(--text-2)}
.stat-value{margin:6px 0 4px;font:600 24px/1.25 var(--sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.columns{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}
.stack{display:grid;gap:20px}
.section-gap{margin-top:16px}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}

/* hero balance */
.account-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:20px}
.balance-card{position:relative;padding:24px;background:radial-gradient(120% 140% at 0 0,#34e5c814,transparent 55%),radial-gradient(100% 120% at 100% 100%,#f05bd810,transparent 50%),var(--surface)}
.balance-card:before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:var(--grad)}
.label{font-size:13px;color:var(--text-2)}
.balance{margin:8px 0 2px;font:600 44px/1.1 var(--sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text)}
.balance span{font-size:18px;font-weight:500;color:var(--text-2);letter-spacing:0}
meter{display:block;width:100%;height:8px;margin:18px 0 8px;border:0;border-radius:99px;background:var(--surface-3);-webkit-appearance:none;appearance:none}
meter::-webkit-meter-bar{height:8px;border:0;border-radius:99px;background:var(--surface-3)}
meter::-webkit-meter-optimum-value,meter::-webkit-meter-suboptimum-value{border-radius:99px;background:linear-gradient(90deg,#34e5c8,#7aa8ff);box-shadow:0 0 12px #34e5c866}
meter::-webkit-meter-even-less-good-value{border-radius:99px;background:var(--danger)}
meter::-moz-meter-bar{border-radius:99px;background:linear-gradient(90deg,#34e5c8,#7aa8ff)}
.meter-legend{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--text-2)}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}
.fact{padding:12px 14px;border-radius:var(--r-sm);background:#ffffff06;border:1px solid var(--border)}
.fact b{display:block;font-weight:600;margin-top:2px}

/* fields */
label{display:grid;gap:6px;margin:0 0 16px;font-size:13px;font-weight:500;color:var(--text-2)}
input,textarea,select{width:100%;min-width:0;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:#0b1019;color:var(--text);font:15px/1.4 var(--sans)}
input:focus,textarea:focus,select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px #34e5c826}
input[readonly]{font:13.5px/1.4 var(--mono);color:var(--text)}
textarea{resize:vertical;min-height:110px}
.field{display:flex;align-items:center;gap:2px;padding:3px 3px 3px 0;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:#0b1019}
.field:focus-within{border-color:var(--accent)}
.field input{border:0;background:transparent;box-shadow:none!important;padding:8px 12px}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.key-row{display:flex;gap:8px}
.key-row input{flex:1}

/* steps */
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;counter-reset:s}
.steps li{counter-increment:s;position:relative;padding:20px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}
.steps li:before{content:counter(s);display:grid;place-items:center;width:30px;height:30px;margin-bottom:14px;border-radius:50%;border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:14px}
.steps li h3{margin-bottom:4px}
.steps li p{font-size:14px}
.steps li button{margin-top:14px}

/* callout */
.callout{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}
.callout.warn{border-color:#f5c84b55;background:var(--warn-soft)}
.callout h3{margin-bottom:2px}
.callout p{font-size:14px;color:var(--text-2)}
.callout .badge{margin-left:auto}
.notice{padding:14px 18px;border:1px solid #f5c84b55;border-radius:var(--r);background:var(--warn-soft);color:#fbe7a8}

/* tables */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}
th{padding:11px 18px;font-size:12.5px;font-weight:500;color:var(--text-3);white-space:nowrap;background:#0d121c;border-bottom:1px solid var(--border)}
td{padding:13px 18px;border-bottom:1px solid var(--border);vertical-align:middle}
tbody tr:hover{background:#ffffff05}
tr:last-child td{border-bottom:0}
td.numeric,th.numeric{font-family:var(--mono);font-size:13.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
td code{font-size:13px;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:2px 7px}
td .small{margin-top:2px}
.table-actions{display:flex;flex-wrap:wrap;gap:6px;min-width:165px}
.table-actions button{min-height:30px;padding:5px 10px;font-size:13px}
.good{color:var(--accent)}
.hl{color:var(--accent)}
.coef-cell{display:flex;align-items:center;gap:10px}
.coef-cell b{min-width:46px;font-weight:600}
meter.coef{width:90px;height:6px;margin:0}
meter.coef::-webkit-meter-bar{height:6px}
.toolbar{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--border)}
.toolbar input{max-width:320px}
.empty{padding:48px 24px;text-align:center}
.empty h3{margin-bottom:6px}

/* code */
pre{margin:0;padding:18px 20px;white-space:pre-wrap;overflow-wrap:anywhere;background:#070a10;border:1px solid var(--border);border-radius:var(--r-sm);font-size:13.5px;line-height:1.75;color:#d7e3f4}
.answer{min-height:85px}
.client-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:20px;align-items:start}
.client-list{display:grid;gap:6px}
.client-list button{justify-content:flex-start;min-height:44px;background:var(--surface);border-color:var(--border)}
.client-list button[aria-selected="true"]{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent)}
.code-card .panel-title{padding:12px 12px 12px 20px}
.guide{list-style:none;margin:0;padding:8px 20px 20px;counter-reset:g}
.guide li{counter-increment:g;position:relative;padding:16px 0 4px 46px}
.guide li+li{border-top:1px solid var(--border)}
.guide li:before{content:counter(g);position:absolute;left:0;top:15px;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:14px}
.guide li h3{margin-bottom:2px}
.guide li p{font-size:14px;margin-bottom:10px}
.snippet{position:relative}
.snippet pre{padding-right:52px;min-height:0}
.snippet .icon{position:absolute;top:8px;right:8px;background:var(--surface-2);border-color:var(--border)}
.seg{display:inline-flex;padding:3px;border:1px solid var(--border);border-radius:var(--r-sm);background:#0b1019}
.seg button{min-height:30px;padding:4px 10px;border:0;background:transparent;color:var(--text-2);font-size:13px}
.seg button[aria-pressed="true"]{background:var(--surface-3);color:var(--text)}

.rate-line{display:flex;justify-content:space-between;gap:15px;padding:11px 0;border-bottom:1px solid var(--border)}
.rate-line:last-child{border:0}
.rate-line span:last-child,.rate-line strong{font-family:var(--mono);font-variant-numeric:tabular-nums}
.wrap-any{overflow-wrap:anywhere}

/* ---------- landing ---------- */
.hero{position:relative;overflow:hidden;padding:88px 0 72px;border-bottom:1px solid var(--border);
  background:radial-gradient(60% 70% at 85% 10%,#f05bd81f,transparent 60%),radial-gradient(55% 70% at 5% 90%,#34e5c81a,transparent 60%)}
.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(#ffffff07 1px,transparent 1px) 0 0/44px 44px,linear-gradient(90deg,#ffffff07 1px,transparent 1px) 0 0/44px 44px;-webkit-mask-image:radial-gradient(70% 80% at 50% 30%,#000,transparent);mask-image:radial-gradient(70% 80% at 50% 30%,#000,transparent);pointer-events:none}
.hero-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:48px;align-items:center}
.display{font-size:52px;line-height:1.06;font-weight:700;letter-spacing:-.035em;margin-bottom:20px}
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{font-size:18px;color:var(--text-2);max-width:540px;margin-bottom:30px}
.terminal{border:1px solid var(--border-strong);border-radius:14px;background:#070a10;box-shadow:0 30px 80px -30px #000,0 0 0 1px #34e5c80f,0 0 60px -20px #34e5c855;overflow:hidden}
.terminal-bar{display:flex;align-items:center;gap:7px;padding:12px 16px;border-bottom:1px solid var(--border);background:#0d121c}
.terminal-bar i{width:11px;height:11px;border-radius:50%;background:#2b3548}
.terminal-bar i:first-child{background:#ff6b81}.terminal-bar i:nth-child(2){background:#f5c84b}.terminal-bar i:nth-child(3){background:#34e5c8}
.terminal-bar span{margin-left:8px;font:12px var(--mono);color:var(--text-3)}
.terminal pre{border:0;border-radius:0;background:transparent;padding:20px 22px;font-size:14px;line-height:1.9}
.t-dim{color:var(--text-3)}.t-acc{color:var(--accent)}.t-pink{color:var(--pink)}
.section{padding-top:72px}
.section-head{margin-bottom:24px}
.section-head h2{font-size:28px;letter-spacing:-.02em;margin-bottom:6px}
.features{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.feature{padding:22px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}
.feature h3{margin-bottom:8px}
.feature p{font-size:14px;color:var(--text-2)}
.feature:before{content:"";display:block;width:28px;height:3px;margin-bottom:18px;border-radius:2px;background:var(--grad)}
.groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.group{display:flex;flex-direction:column;gap:8px;padding:22px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);transition:border-color .2s,transform .2s}
.group:hover{border-color:var(--accent-line);transform:translateY(-2px)}
.group p{font-size:14px;flex:1}
.count{font:13px var(--mono);color:var(--accent)}
.faq{display:grid;gap:10px;max-width:820px}
details{border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}
summary{padding:16px 20px;cursor:pointer;font-weight:600;list-style:none;display:flex;justify-content:space-between;gap:12px}
summary::-webkit-details-marker{display:none}
summary:after{content:"+";color:var(--accent);font-weight:400;font-size:20px;line-height:1}
details[open] summary:after{content:"−"}
details p{padding:0 20px 18px;color:var(--text-2)}
#landing{padding-bottom:80px}

/* ---------- login ---------- */
.login{display:grid;place-items:center;padding:64px 20px;background:radial-gradient(50% 60% at 50% 0,#34e5c814,transparent 70%)}
.login-card{width:100%;max-width:440px;padding:36px 32px;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:0 30px 80px -40px #000}
.login-card h1{margin-bottom:10px}
.login form{margin:26px 0 18px}
.login form button{width:100%}

/* ---------- dialogs ---------- */
dialog{width:min(540px,calc(100% - 32px));max-height:90vh;overflow:auto;padding:24px;border:1px solid var(--border-strong);border-radius:16px;background:var(--surface);color:var(--text);box-shadow:0 30px 90px #000c}
dialog::backdrop{background:#04060bcc;backdrop-filter:blur(4px)}
.dialog-title,.dialog-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}
.dialog-title{margin-bottom:18px}
.dialog-title .icon{font-size:22px}
.dialog-actions{justify-content:flex-end;margin-top:20px}
.error{min-height:18px;margin-top:8px;font-size:13px;color:var(--danger)}
dialog label{margin-top:14px}

footer{border-top:1px solid var(--border);padding:22px 0;font-size:13px}
.foot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center;font-weight:600}
.foot .muted{font-weight:400}

@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* ---------- responsive ---------- */
@media(max-width:1000px){
  .columns,.account-grid,.hero-grid{grid-template-columns:1fr}
  .features,.groups{grid-template-columns:1fr 1fr}
  .display{font-size:40px}
  .client-layout{grid-template-columns:1fr}
  .client-list{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:680px){
  .wrap,.top-inner{padding:0 16px}
  .top-inner{height:58px;gap:10px}
  #notice{top:58px}
  #role-label{display:none}
  #mode{max-width:40vw;overflow:hidden;text-overflow:ellipsis}
  h1{font-size:24px}
  #content{padding-top:22px;gap:16px}
  .stats,.steps,.features,.groups,.facts{grid-template-columns:1fr}
  .stats{gap:10px}
  .balance{font-size:34px}
  .panel-title,.panel-body{padding:14px 16px}
  .toolbar{padding:12px 16px}
  .toolbar input{max-width:none}
  td,th{padding:11px 12px}
  .field-row{grid-template-columns:1fr;gap:0}
  .client-list{grid-template-columns:1fr 1fr}
  button,.button{min-height:44px}
  .icon{min-height:40px;width:40px}
  .tabbar nav button{min-height:48px}
  .table-actions button{min-height:38px}
  input,textarea,select{font-size:16px}
  .hero{padding:52px 0 44px}
  .display{font-size:32px}
  .lead{font-size:16px}
  .section{padding-top:52px}
  .section-head h2{font-size:23px}
  .login-card{padding:28px 20px}
  .callout{flex-wrap:wrap}
  .callout .badge{margin-left:0}
  .guide{padding:4px 16px 16px}
  .guide li{padding-left:0}
  .guide li:before{position:static;margin-bottom:10px}
  .panel-title{flex-wrap:wrap}
  .seg button{min-height:36px}
  #top-login{padding:8px 12px;font-size:14px}
}
