:root{--bg:#0f1b2d;--si:#1b2c47;--si2:#243a5c;--cu:#d08a4e;--ag:#c9d1dc;--ok:#5bc8a0;--bad:#e5584f;--warn:#e8b94a;--px:4px}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--ag);font:15px/1.55 "Courier New",Courier,monospace}
body::after{content:"";position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.16) 0 1px,transparent 1px 3px);z-index:9}
.cabinet{max-width:720px;margin:0 auto;padding:1.2rem 1rem 3rem}
h1{margin:0;font-size:2.2rem;letter-spacing:.12em;color:var(--cu);text-shadow:var(--px) var(--px) 0 #000}
h2{margin:1.4rem 0 .5rem;font-size:1.1rem;color:var(--cu)}
header p{margin:.3rem 0 1rem;max-width:56ch}
button,input{font:inherit}
.tabs{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.5rem}
.tabs button{background:var(--si);color:var(--ag);border:var(--px) solid var(--si2);padding:.4rem .8rem;cursor:pointer}
.tabs button[aria-selected=true]{background:var(--cu);color:#1a1209;border-color:#fff;font-weight:bold}
.pane[hidden]{display:none}
.plain{margin:0;padding-left:1.4rem}
.plain li{margin-bottom:.3rem}
.search{display:block;font-size:.85rem}
input[type=search]{width:100%;background:var(--si);color:#fff;border:var(--px) solid var(--si2);padding:.5rem;margin:.3rem 0}
#count{margin:.2rem 0 .6rem;font-size:.85rem;opacity:.8}
details{background:var(--si);border:var(--px) solid var(--si2);margin-bottom:.5rem;padding:.2rem .8rem}
summary{cursor:pointer;padding:.4rem 0;color:#fff;font-weight:bold}
summary small{color:var(--cu);margin-left:.5rem;font-weight:normal}
details .sym{margin:.2rem 0;opacity:.85}
details ol{margin:.4rem 0 .8rem;padding-left:1.4rem}
details li{margin-bottom:.25rem}
details li.core::marker{color:var(--ok);font-weight:bold}
.legend{font-size:.8rem;opacity:.75}
.hud{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin:.8rem 0}
.hud div{background:var(--si);border:var(--px) solid var(--si2);padding:.3rem .5rem;text-align:center}
.hud span{display:block;font-size:.72rem;opacity:.8}
.hud b{color:#fff;font-size:1.2rem}
.meter{display:block;font-size:.8rem;margin-bottom:.8rem}
.bar{display:block;height:14px;background:var(--si);border:var(--px) solid var(--si2);margin-top:.2rem}
.bar u{display:block;height:100%;width:100%;background:var(--ok);transition:width .2s}
.screen{position:relative;min-height:320px;padding:1rem;background:#070d18;border:var(--px) solid var(--ag);box-shadow:0 0 0 var(--px) var(--bg),0 0 0 calc(var(--px)*2) var(--cu),inset 0 0 40px rgba(91,200,160,.12)}
.ticket small{color:var(--warn)}
.ticket h2{margin:.2rem 0;color:#fff}
.hint{font-size:.8rem;opacity:.75}
.seq{list-style:none;margin:.6rem 0;padding:0;display:grid;gap:.3rem}
.seq li{border:2px dashed var(--si2);padding:.3rem .6rem;min-height:2.2rem;font-size:.85rem}
.seq li.filled{border:2px solid var(--ok);color:var(--ok);background:rgba(91,200,160,.08)}
.hand{display:grid;gap:.4rem}
.card{background:var(--si);color:var(--ag);border:var(--px) solid var(--cu);padding:.5rem .7rem;text-align:left;cursor:pointer;box-shadow:var(--px) var(--px) 0 #000}
.card:active{transform:translate(var(--px),var(--px));box-shadow:none}
.card.used{opacity:.35;cursor:default;border-color:var(--si2);box-shadow:none}
.card.wrong{border-color:var(--bad);opacity:.55;text-decoration:line-through}
#fb{min-height:3em;margin:.6rem 0}
#fb.good{color:var(--ok)}#fb.bad{color:var(--bad)}#fb.warn{color:var(--warn)}
.row{display:flex;gap:.5rem;flex-wrap:wrap}
.primary{background:var(--cu);color:#1a1209;font-weight:bold;border:var(--px) solid #fff;padding:.5rem 1rem;cursor:pointer;box-shadow:var(--px) var(--px) 0 #000}
.ghost{background:none;color:var(--ag);border:var(--px) solid var(--ag);padding:.5rem 1rem;cursor:pointer}
.primary[hidden],.ghost[hidden]{display:none}
.overlay{position:absolute;inset:0;background:rgba(7,13,24,.95);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:1.2rem;gap:.4rem}
.overlay[hidden]{display:none}
.overlay p{margin:0 0 .8rem;max-width:42ch}
.tasks,.log{list-style:none;margin:0;padding:0}
.tasks li{display:flex;gap:.8rem;align-items:center;background:var(--si);padding:.6rem .9rem;margin-bottom:.4rem;border-left:var(--px) solid var(--ok)}
.tasks li.due{border-color:var(--warn)}.tasks li.over{border-color:var(--bad)}
.tasks .n{flex:1}.tasks small{display:block;opacity:.8}
.tasks button{background:var(--cu);color:#1a1209;border:0;padding:.4rem .7rem;font-weight:bold;cursor:pointer}
.log{margin-top:.6rem}
.log li{padding:.3rem 0;border-bottom:1px solid var(--si2);font-size:.85rem}
.log time{color:var(--cu);margin-right:.6rem}
:focus-visible{outline:3px solid var(--warn);outline-offset:2px}
@media(max-width:520px){.hud{grid-template-columns:repeat(2,1fr)}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}