:root{--bg: #0b0b0c;--gold: #d4af37;--ink: #ece8dc;--dim: #6b675c}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:ui-monospace,SF Mono,Menlo,Consolas,Noto Sans Mono CJK JP,monospace;background-image:linear-gradient(rgba(212,175,55,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(212,175,55,.04) 1px,transparent 1px);background-size:32px 32px;touch-action:manipulation}.screen{min-height:100%;max-width:480px;margin:0 auto;padding:24px 20px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:14px}.center{justify-content:center;text-align:center}h1{font-size:3.4rem;letter-spacing:.5em;margin:0 -.5em 0 0;font-weight:400}h2{font-weight:400;letter-spacing:.15em;color:var(--gold)}.jp{color:var(--gold);font-size:1.6rem;letter-spacing:.3em}.tag{color:var(--gold);margin:6px 0 0}.meaning{color:var(--ink);opacity:.75;font-style:italic;max-width:32ch;line-height:1.5}.stack{display:flex;flex-direction:column;gap:10px;width:100%}.btn{background:transparent;color:var(--ink);border:1px solid var(--gold);padding:14px 16px;font:inherit;font-size:1.05rem;letter-spacing:.1em;cursor:pointer;display:flex;flex-direction:column;gap:4px;align-items:center;min-height:56px;justify-content:center}.btn small{color:var(--dim);font-size:.75rem;letter-spacing:.05em}.btn:hover:not(:disabled){background:#d4af371a}.btn:disabled{border-color:#2a2a2a;color:#444;cursor:not-allowed}.cta{color:var(--gold);text-decoration:none;border-bottom:1px solid var(--gold);padding-bottom:2px;margin-top:8px}.link{background:none;border:0;color:var(--dim);font:inherit;cursor:pointer;padding:8px}.disclaimer{margin-top:auto;font-size:.65rem;letter-spacing:.15em;color:var(--dim);text-align:center}.levels{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;width:100%}.level span{font-size:1.4rem}.stats{display:flex;gap:32px;margin:0}.stats div{display:flex;flex-direction:column;gap:4px}.stats dt{font-size:.7rem;letter-spacing:.1em;color:var(--dim);text-transform:uppercase}.stats dd{margin:0;font-size:2rem;color:var(--gold)}.hud{display:flex;justify-content:space-between;width:100%;font-size:.85rem;letter-spacing:.08em}.runtitle{margin:0;color:var(--dim);font-size:.75rem;letter-spacing:.2em;text-transform:uppercase}.path{display:flex;gap:8px}.path i{width:22px;height:3px;background:#2a2a2a}.path i.done{background:var(--gold)}.path i.now{background:var(--ink)}.torii{width:min(78vw,300px);transition:filter .12s}.torii .beam{fill:#3a3830;transition:fill .12s}.torii .veil{fill:transparent;transition:fill .12s}.torii.flicker .beam{fill:#5a5232}.torii.open .beam{fill:var(--gold)}.torii.open .veil{fill:#d4af3747}.torii.open{filter:drop-shadow(0 0 18px rgba(212,175,55,.7))}.torii.block .beam{fill:#8a2f2f}.torii.pass .beam{fill:var(--ink)}.state{font-size:1.5rem;letter-spacing:.4em;margin:0 -.4em 0 0;color:var(--dim)}.state.open{color:var(--gold)}.msg{margin:0;min-height:1.4em;font-style:italic;opacity:.7}.actions{display:grid;grid-template-columns:1fr 2fr;gap:10px;width:100%;margin-top:auto}.step{background:#d4af371f;min-height:84px;-webkit-user-select:none;user-select:none;touch-action:none}.wait{min-height:84px}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;background:repeating-linear-gradient(0deg,rgba(0,0,0,.28) 0 1px,transparent 1px 3px),radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.65));animation:flick 6s infinite}@keyframes flick{0%,96%,to{opacity:1}97%{opacity:.82}98%{opacity:1}99%{opacity:.9}}.glitch{position:relative;text-shadow:0 0 14px rgba(212,175,55,.35)}.glitch:before,.glitch:after{content:attr(data-t);position:absolute;top:0;right:0;bottom:0;left:0;opacity:.7}.glitch:before{color:#3ff;transform:translate(-2px);clip-path:inset(0 0 60% 0);animation:gl 3.2s infinite steps(1)}.glitch:after{color:#f3a;transform:translate(2px);clip-path:inset(60% 0 0 0);animation:gl 2.7s infinite steps(1) reverse}@keyframes gl{0%,90%,to{opacity:0}92%{opacity:.7;transform:translate(-4px)}95%{opacity:.7;transform:translate(3px)}}.btn,.card,.modal,.nav{clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}.btn{font-size:.9rem;text-transform:uppercase;letter-spacing:.18em;background:#d4af370a}.chip{margin:0;font-size:.7rem;letter-spacing:.2em;color:#7fe;border:1px solid rgba(127,255,238,.35);padding:3px 10px;text-transform:uppercase}.dimtxt{color:var(--dim);font-size:.7rem;letter-spacing:.08em}.screen{padding-bottom:80px}.screen.play{padding-bottom:16px}.back{align-self:flex-start;background:none;border:1px solid #333;color:var(--ink);font:inherit;padding:8px 12px;cursor:pointer;min-height:40px}.hud .back{align-self:auto;padding:4px 12px;font-size:1.2rem}.hud{align-items:center;gap:8px;border-bottom:1px solid #222;padding-bottom:8px}.term{align-self:stretch;text-align:left;min-height:130px;color:#7fe;font-size:.78rem}.term p{margin:3px 0}.bar{width:100%;height:4px;background:#222}.bar b{display:block;height:100%;background:var(--gold);box-shadow:0 0 8px var(--gold);transition:width .35s}.card{width:100%;border:1px solid #333;padding:18px;display:flex;flex-direction:column;gap:10px;background:#ffffff05}.rank{font-size:1.8rem;letter-spacing:.25em;color:var(--gold);text-transform:uppercase}.stats.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;width:100%}.stats.grid dd{font-size:1.4rem}.nav{position:fixed;left:50%;bottom:0;transform:translate(-50%);width:min(480px,100%);display:flex;background:#0b0b0ceb;border-top:1px solid var(--gold);z-index:20;padding-bottom:env(safe-area-inset-bottom);clip-path:none}.nav button{flex:1;background:none;border:0;color:var(--dim);font:inherit;font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;padding:16px 0;cursor:pointer}.nav button.on{color:var(--gold);box-shadow:inset 0 2px 0 var(--gold)}.blurred{filter:blur(6px) brightness(.5);pointer-events:none;transition:filter .25s}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:20px;background:#00000073;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:fade .25s}@keyframes fade{0%{opacity:0}}.modal{width:min(420px,100%);background:#0e0e0feb;border:1px solid var(--gold);padding:24px;display:flex;flex-direction:column;gap:14px;box-shadow:0 0 40px #d4af3733;max-height:90vh;overflow:auto}.modal h2{margin:0;text-align:center}.modal ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;font-size:.85rem;line-height:1.5}.modal li span{color:var(--gold);margin-right:10px}.modal .disclaimer{margin-top:0}
