/* Blindfloor 2D pages (app, ledger, docs, proof, 404). Local vars map to tokens.css when present. */
:root{
  --a-bg:var(--bg,#050608);
  --a-panel:var(--panel,#0b0d12);
  --a-line:var(--line,#1c2029);
  --a-text:var(--text,#D9DEE6);
  --a-dim:var(--text-dim,#8a93a3);
  --a-accent:var(--accent,#8B7CFF);
  --a-hot:var(--hot,#FFFFFF);
  --a-head:var(--font-head,'Michroma','Syncopate',system-ui,sans-serif);
  --a-mono:var(--font-mono,'Red Hat Mono',ui-monospace,SFMono-Regular,Menlo,monospace);
  --a-body:var(--font-body,'Red Hat Mono',ui-monospace,SFMono-Regular,Menlo,monospace);
}
*{box-sizing:border-box}
html{background:var(--a-bg);color:var(--a-text);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--a-bg);color:var(--a-text);font:400 14px/1.6 var(--a-body);min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}
a{color:var(--a-accent);text-decoration:underline;text-underline-offset:3px}
a:hover{color:var(--a-hot)}
:focus-visible{outline:2px solid var(--a-accent);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.bar{display:flex;align-items:center;gap:20px;padding:14px 20px;border-bottom:1px solid var(--a-line);flex-wrap:wrap}
.brand{font:400 13px var(--a-head);letter-spacing:.08em;text-transform:uppercase;color:var(--a-text);text-decoration:none}
.bar nav{display:flex;gap:16px;flex-wrap:wrap;flex:1}
.bar nav a{color:var(--a-dim);text-decoration:none;font-size:13px;padding:4px 0}
.bar nav a[aria-current=page],.bar nav a:hover{color:var(--a-text)}
main{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:32px 20px 56px}
h1{font:400 clamp(20px,4.6vw,30px)/1.25 var(--a-head);letter-spacing:.08em;text-transform:uppercase;margin:0 0 12px}
h2{font:400 15px/1.3 var(--a-head);letter-spacing:.08em;text-transform:uppercase;margin:40px 0 12px}
h3{font:500 14px var(--a-mono);margin:22px 0 6px;color:var(--a-text)}
p{margin:0 0 12px}
.lede{color:var(--a-dim);max-width:62ch}
.dim{color:var(--a-dim)}
.mono,code,pre,.hash{font-family:var(--a-mono)}
code{background:var(--a-panel);border:1px solid var(--a-line);padding:1px 5px;border-radius:3px;font-size:12.5px;word-break:break-word}
pre{background:var(--a-panel);border:1px solid var(--a-line);padding:12px 14px;overflow-x:auto;font-size:12.5px;line-height:1.55;margin:8px 0 16px;border-radius:4px}
pre code{background:none;border:0;padding:0;word-break:normal}
.card{background:var(--a-panel);border:1px solid var(--a-line);border-radius:6px;padding:18px;margin:0 0 18px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:760px){.grid2{grid-template-columns:1fr}}
button,.btn{font:500 13px var(--a-mono);background:transparent;color:var(--a-text);border:1px solid var(--a-accent);border-radius:4px;padding:9px 14px;cursor:pointer;min-height:40px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}
button:hover:not(:disabled){background:var(--a-accent);color:#050608}
button.primary{background:var(--a-accent);color:#050608}
button.primary:hover:not(:disabled){background:var(--a-hot)}
button:disabled{opacity:.4;cursor:not-allowed;border-color:var(--a-line)}
button.link{border:0;padding:4px 6px;min-height:32px;text-decoration:underline;color:var(--a-accent)}
button.link:hover:not(:disabled){background:none;color:var(--a-hot)}
label,.lbl{display:block;font-size:12px;color:var(--a-dim);margin:0 0 6px;letter-spacing:.04em;text-transform:uppercase}
input[type=text],input[type=file],select{width:100%;background:var(--a-bg);color:var(--a-text);border:1px solid var(--a-line);border-radius:4px;padding:10px 12px;font:400 14px var(--a-mono);min-height:42px}
input[type=text]:focus,select:focus{border-color:var(--a-accent)}
.field{margin:0 0 18px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{position:relative}
.chip input{position:absolute;opacity:0;inset:0;cursor:pointer;margin:0}
.chip span{display:block;border:1px solid var(--a-line);border-radius:4px;padding:8px 12px;font:500 13px var(--a-mono);min-width:56px;text-align:center;color:var(--a-text)}
.chip input:checked+span{border-color:var(--a-accent);background:rgba(139,124,255,.16);color:var(--a-hot)}
.chip input:focus-visible+span{outline:2px solid var(--a-accent);outline-offset:2px}
.radio{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--a-line);border-radius:4px;margin:0 0 8px;cursor:pointer;text-transform:none;letter-spacing:0;font-size:13px;color:var(--a-text)}
.radio input{margin-top:4px;accent-color:var(--a-accent)}
.radio small{display:block;color:var(--a-dim);font-size:12px}
.row{display:flex;gap:10px;align-items:stretch}
.row>input{flex:1}
.note{border-left:2px solid var(--a-accent);padding:6px 12px;margin:0 0 12px;color:var(--a-text);background:rgba(139,124,255,.07);font-size:13px}
.note.warn{border-left-color:var(--a-hot);background:rgba(255,255,255,.06)}
.banner{border:1px solid var(--a-accent);padding:10px 14px;border-radius:4px;margin:0 0 16px;font-size:13px;background:rgba(139,124,255,.08)}
.steps{list-style:none;margin:0 0 14px;padding:0;counter-reset:s}
.steps li{display:flex;gap:10px;align-items:baseline;padding:6px 0;border-bottom:1px dashed var(--a-line);font-size:13px;color:var(--a-dim)}
.steps li::before{counter-increment:s;content:counter(s);font-family:var(--a-mono);width:20px;color:var(--a-dim)}
.steps li.on{color:var(--a-text)}
.steps li.on::after{content:"in progress";margin-left:auto;color:var(--a-accent);font-size:12px}
.steps li.done{color:var(--a-text)}
.steps li.done::after{content:"done";margin-left:auto;color:var(--a-dim);font-size:12px}
.steps li.fail::after{content:"failed";margin-left:auto;color:var(--a-hot);font-size:12px}
.steps li .tx{margin-left:6px}
.msg{min-height:20px;font-size:13px;margin:10px 0 0}
.msg.err{color:var(--a-hot)}
.tablewrap{overflow-x:auto;border:1px solid var(--a-line);border-radius:6px}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--a-line);white-space:nowrap;vertical-align:top}
th{font:500 11px var(--a-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--a-dim)}
tr:last-child td{border-bottom:0}
td.wrap{white-space:normal;min-width:200px}
.tag{display:inline-block;border:1px solid var(--a-line);border-radius:3px;padding:1px 7px;font-size:12px}
.tag.armed{border-color:var(--a-accent);color:var(--a-accent)}
.tag.fired{border-color:var(--a-hot);color:var(--a-hot)}
.filters{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}
.filters div{min-width:150px}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;font-size:13px}
.kv dt{color:var(--a-dim)}.kv dd{margin:0;word-break:break-all}
.toc{display:flex;flex-wrap:wrap;gap:6px 14px;margin:16px 0 8px;font-size:13px}
footer{border-top:1px solid var(--a-line);padding:22px 20px 30px;color:var(--a-dim);font-size:12px}
footer .in{max-width:1040px;margin:0 auto}
footer p{max-width:90ch}
footer nav{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px}
.stale{opacity:.55}
.big404{font:400 clamp(48px,14vw,120px)/1 var(--a-head);letter-spacing:.08em;margin:30px 0 10px;color:var(--a-dim)}
@media(max-width:560px){.bar{gap:10px;padding:12px 16px}main{padding:24px 16px 48px}th,td{padding:8px 9px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
[hidden]{display:none!important}
input.sr[type=file]{width:1px;min-height:0;padding:0;border:0;left:0;top:0}
