:root{
  --bg:#dde1e6;--hi:#f3f5f8;--lo:#b4bac3;--ink:#1f242b;--muted:#59626e;
  --cy:#0b7285;--link:#2b4fa8;--phos:#2f6b45;--scr:#0b1710;--scr-ink:#6ee79a;
  --raise:6px 6px 14px var(--lo),-6px -6px 14px var(--hi);
  --raise-s:3px 3px 8px var(--lo),-3px -3px 8px var(--hi);
  --inset:inset 4px 4px 9px var(--lo),inset -4px -4px 9px var(--hi);
  --serif:"Newsreader",Georgia,"Times New Roman",serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#23272d;--hi:#31363d;--lo:#15181c;--ink:#e6e9ee;--muted:#9aa3af;--cy:#5ad8e8;--link:#8fa6f2;--phos:#7fc58c}}
:root[data-theme="dark"]{--bg:#23272d;--hi:#31363d;--lo:#15181c;--ink:#e6e9ee;--muted:#9aa3af;--cy:#5ad8e8;--link:#8fa6f2;--phos:#7fc58c}
html{scroll-padding-top:calc(76px + env(safe-area-inset-top,0px));scroll-behavior:smooth}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.6;min-height:100dvh}
body.booting{overflow:hidden}
/* ---------- boot ---------- */
#boot{position:fixed;inset:0;z-index:50;background:#020503;color:#22c55e;font:12px/1.4 var(--mono);
  display:flex;flex-direction:column;padding:14px;padding-top:calc(14px + env(safe-area-inset-top,0px));
  padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))}
#boot::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(rgba(10,26,14,0) 50%,rgba(0,10,3,.45) 50%);background-size:100% 3px;box-shadow:inset 0 0 100px rgba(0,0,0,.85)}
#boot.out{opacity:0;filter:blur(8px);transform:scale(1.02);pointer-events:none}
#boot[hidden]{display:none}
#boot header{border-bottom:1px solid #052e16;padding-bottom:8px;color:#4ade80}
#log{flex:1;overflow-y:auto;margin:10px 0}
#log div{white-space:pre-wrap}
#log .ok b{color:#4ade80;font-weight:500}
#banner{text-align:center;border-top:1px solid #052e16;margin-top:14px;padding-top:12px;color:#86efac}
#banner pre{display:inline-block;text-align:left;margin:0 0 8px;font:inherit;line-height:1.25}
#boot footer{border-top:1px solid #052e16;padding-top:8px;display:flex;justify-content:space-between;color:#15803d}
#boot footer span:first-child{color:#4ade80}

#boot header{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
#boot .dots{display:inline-flex;gap:6px;margin-right:10px;vertical-align:middle}
#boot .dots i{width:10px;height:10px;border-radius:50%;border:1px solid #166534;background:#052e16}
#boot .dots i:last-child{background:#16a34a;border:0}
.cur{display:inline-block;width:9px;height:15px;background:#22c55e;vertical-align:middle;margin-left:5px;animation:bl .75s steps(1) infinite}
@keyframes bl{50%{opacity:0}}
#bstatus{color:#86efac}
#log .ok i{color:#047857;font-style:normal;font-weight:700}
#log .ok b{color:#4ade80}#log .ok span{color:#6ee7b7}
#log .hi{color:#34d399;font-weight:700}#log .dim{color:#166534}
#banner{overflow-x:auto}
#banner pre{font-size:clamp(6px,1.75vw,12px)}
.w1{font-weight:700;letter-spacing:.12em;color:#6ee7b7;font-size:14px}
.w2{color:#22c55e;font-size:11px;margin-top:4px}
.w3{color:#15803d;font-size:11px;padding-top:4px}


/* ---------- page ---------- */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;background:var(--bg);border-bottom:2px dotted var(--lo);
  display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px clamp(16px,3vw,44px)}
.brand{display:flex;align-items:center;gap:12px;font-weight:700;font-size:20px}
.mark{width:42px;height:42px;border-radius:50%;box-shadow:var(--raise-s);display:grid;place-items:center;font:500 14px var(--mono);color:var(--cy)}
nav{display:flex;gap:26px}nav a{color:var(--muted);text-decoration:none}nav a:hover{color:var(--ink)}
.btn{font:500 13px var(--mono);color:var(--ink);background:var(--bg);border:0;border-radius:12px;padding:10px 16px;box-shadow:var(--raise-s);cursor:pointer;text-decoration:none;display:inline-block}
.btn:active{box-shadow:var(--inset)}
.btn:focus-visible,.item:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--cy);outline-offset:3px}
.stage{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(18px,2.4vw,36px);padding:clamp(16px,3vw,44px);align-items:start}
.card{background:var(--bg);border-radius:24px;box-shadow:var(--raise)}
.doc{padding:clamp(24px,3.4vw,52px)}
.chip{display:inline-flex;gap:10px;align-items:center;padding:7px 14px;border-radius:12px;box-shadow:var(--inset);font:12px var(--mono);color:var(--phos);margin-bottom:24px;max-width:100%;overflow-wrap:anywhere}
.led{width:9px;height:9px;flex:none;border-radius:50%;background:var(--cy);box-shadow:0 0 8px var(--cy);animation:pl 2s ease-in-out infinite}
@keyframes pl{50%{opacity:.35}}
h1{font-size:clamp(46px,7.4vw,120px);line-height:.98;letter-spacing:-.03em;margin:0 0 10px;font-weight:700}
.tag{font:500 clamp(14px,1.4vw,18px) var(--mono);color:var(--cy);margin:0 0 26px}
.doc p{max-width:40em;margin:0 0 14px;font-size:clamp(18px,1.5vw,22px)}
hr{border:0;border-top:2px dotted var(--lo);margin:34px 0 26px}
h2{font-size:clamp(26px,2.6vw,36px);margin:0 0 22px;line-height:1.15}
.links{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:22px}
.item{background:var(--bg);border:0;border-radius:18px;padding:18px 20px;text-align:left;font:inherit;color:inherit;cursor:pointer;box-shadow:var(--raise-s)}
.item .ref{font:12px var(--mono);color:var(--cy)}
.item h3{margin:2px 0 6px;font-size:21px;color:var(--link);text-decoration:underline;text-underline-offset:3px}
.item p{margin:0;font-size:15px;line-height:1.45;color:var(--muted)}
.item.sel{box-shadow:var(--inset)}
.term{position:sticky;top:calc(76px + env(safe-area-inset-top,0px));height:calc(100dvh - 110px);min-height:420px;display:flex;flex-direction:column;padding:18px}
.tbar{display:flex;align-items:center;gap:10px;font:500 13px var(--mono);color:var(--muted);margin-bottom:14px}
.screen{flex:1;min-height:0;background:var(--scr);color:var(--scr-ink);text-shadow:0 0 4px rgba(110,231,154,.4);font:14px/1.55 var(--mono);
  white-space:pre-wrap;overflow-y:auto;padding:18px;border-radius:16px;box-shadow:var(--inset);
  background-image:repeating-linear-gradient(rgba(0,0,0,.28) 0 1px,transparent 1px 3px)}
.entry{display:flex;gap:10px;align-items:center;margin-top:16px}
.entry label{font:500 14px var(--mono);color:var(--phos)}
.entry input{flex:1;min-width:0;border:0;background:var(--bg);color:var(--ink);font:14px var(--mono);padding:11px 14px;border-radius:12px;box-shadow:var(--inset)}
.quick{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}
footer.end{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:center;border-top:2px dotted var(--lo);padding:20px clamp(16px,3vw,44px) 28px;font:12px var(--mono);color:var(--muted)}
footer.end a{color:var(--link)}
@media (max-width:960px){.stage{grid-template-columns:1fr}.term{position:static;height:560px}nav{display:none}}
@media (prefers-reduced-motion:reduce){#boot{transition:none}html{scroll-behavior:auto}.led,.cur{animation:none}}

#boot.vt{background:#000}
#boot.vt::after{display:none}
#boot.vt>header,#boot.vt>#log,#boot.vt>footer{visibility:hidden}
#boot.vt::before{content:"_";position:absolute;left:14px;top:calc(14px + env(safe-area-inset-top,0px));z-index:21;color:#d4d4d4;font:16px/1 var(--mono);animation:bl .55s steps(1) infinite}
@keyframes resync{0%{opacity:0}18%{opacity:1}34%{opacity:.15}52%{opacity:1}68%{opacity:.6}84%{opacity:1}}
body.popin .top,body.popin .stage,body.popin footer.end{animation:resync .32s steps(1) 1}
@media (prefers-reduced-motion:reduce){body.popin .top,body.popin .stage,body.popin footer.end{animation:none}}
.ctl{display:flex;gap:12px}

a.item{display:block;text-decoration:none;color:inherit}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--bg);color:var(--ink);padding:10px 16px;border-radius:12px;box-shadow:var(--raise-s);font:500 13px var(--mono)}
.skip:focus{top:calc(10px + env(safe-area-inset-top,0px))}
.note{color:var(--muted);margin:-8px 0 20px;font-size:16px}
.docs details{border-radius:16px;box-shadow:var(--raise-s);padding:14px 20px;margin-bottom:18px}
.docs summary{cursor:pointer;font-weight:600;font-size:19px}
.docs ul{margin:12px 0 8px;padding-left:20px;font-size:16px;line-height:1.5}
.docs li{margin-bottom:6px}
.docs p{margin:6px 0 0;font:12px var(--mono);overflow-wrap:anywhere}
.docs a{color:var(--link)}
footer.end nav{display:flex;gap:18px;flex-wrap:wrap}
footer.end nav a{color:var(--link)}
