:root{--bg:#05060a;--panel:#0c101ad1;--panel-solid:#0b0f18;--line:#7cffb229;--line-soft:#96aac824;--accent:#7cffb2;--accent-dim:#46b783;--gold:#ffd166;--danger:#ff4d6d;--ice:#7fd8ff;--violet:#b98bff;--text:#e8f0ff;--dim:#8296b4;--mono:"Chakra Petch", ui-monospace, SFMono-Regular, Menlo, monospace;--sans:"Noto Sans SC", "Chakra Petch", system-ui, sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;margin:0;padding:0;overflow:hidden}#app{position:fixed;top:0;bottom:0;left:0;right:0}#app canvas{display:block}#boot{text-align:center;z-index:50;background:radial-gradient(circle at 50% 45%,#101a2c 0%,#05060a 70%);place-content:center;gap:14px;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}#boot.hide{display:none}.boot-mark{font-family:var(--mono);letter-spacing:.42em;color:var(--accent);text-shadow:0 0 26px #7cffb273;font-size:44px}.boot-sub{color:var(--dim);letter-spacing:.28em;font-size:13px}#ui{pointer-events:none;z-index:20;position:absolute;top:0;bottom:0;left:0;right:0}#ui>*{pointer-events:auto}.pass{pointer-events:none!important}.screen{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:radial-gradient(circle at 50% 32%,#0c162699 0%,#05060ae6 66%);place-items:center;padding:24px;animation:.22s ease-out fadeIn;display:grid;position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:auto}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.title-screen{-webkit-backdrop-filter:none;backdrop-filter:none;background:radial-gradient(at 50% 34%,#08101c47 0%,#040509c7 72%)}.title-screen .title-wrap>*{position:relative}.title-screen .best-line,.title-screen .hint-keys{text-shadow:0 2px 10px #04060c}h1.logo{font-family:var(--mono);letter-spacing:.34em;color:var(--accent);text-shadow:0 0 8px #7cffb28c,0 0 34px #7cffb247,0 0 80px #7cffb224;margin:0 0 2px;font-size:clamp(38px,8vw,86px)}.subtitle{font-family:var(--mono);letter-spacing:.5em;color:var(--dim);text-transform:uppercase;margin:0 0 26px;font-size:12px}h2.ttl{font-family:var(--mono);letter-spacing:.24em;color:var(--accent);margin:0 0 4px;font-size:20px}.dim{color:var(--dim)}.gold{color:var(--gold)}.ice{color:var(--ice)}.danger{color:var(--danger)}.accent{color:var(--accent)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.panel.wide{width:min(900px,94vw)}.panel{background:var(--panel);border:1px solid var(--line-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:14px;padding:22px 24px;box-shadow:0 24px 60px #0009,inset 0 1px #ffffff0a}.stack{gap:14px;display:grid}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.center{text-align:center}.wrap{width:100%;max-width:1080px}.btn{font-family:var(--mono);letter-spacing:.16em;color:var(--text);border:1px solid var(--line-soft);cursor:pointer;text-transform:uppercase;background:#ffffff0a;border-radius:9px;padding:12px 26px;font-size:14px;transition:transform .12s,background .16s,border-color .16s,box-shadow .16s}.btn:hover{background:#7cffb21a;border-color:#7cffb280;transform:translateY(-1px);box-shadow:0 0 22px #7cffb229}.btn:active{transform:translateY(0)}.btn.primary{color:#d8ffe9;background:linear-gradient(#7cffb238,#7cffb212);border-color:#7cffb28c;font-weight:700}.btn.primary:hover{box-shadow:0 0 34px #7cffb24d}.btn.ghost{background:0 0}.btn:disabled{opacity:.35;cursor:not-allowed;transform:none}.btn.sm{padding:8px 14px;font-size:12px}.title-wrap{text-align:center;justify-items:center;gap:4px;display:grid}.menu{gap:10px;min-width:320px;margin-top:20px;display:grid}.menu .btn{width:100%}.seed-row{align-items:center;gap:8px;margin-top:8px;display:flex}.seed-row input{border:1px solid var(--line-soft);min-width:200px;color:var(--text);font-family:var(--mono);letter-spacing:.1em;background:#00000073;border-radius:8px;outline:none;flex:1;padding:10px 12px}.seed-row input:focus{border-color:#7cffb280}.best-line{letter-spacing:.08em;margin-top:16px;font-size:13px}.hint-keys{max-width:720px;color:var(--dim);grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:8px 20px;margin-top:22px;font-size:12px;display:grid}.hint-keys b{color:var(--text);font-family:var(--mono)}kbd{font-family:var(--mono);border:1px solid var(--line-soft);color:var(--text);background:#ffffff0d;border-bottom-width:2px;border-radius:5px;padding:2px 6px;font-size:11px}#hud{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.hud-top{background:linear-gradient(#03050ad9,#03050a00);justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 16px;display:flex;position:absolute;top:0;left:0;right:0}.hud-top>.cluster{flex:none;min-width:0}.hud-top>.cluster.mid{flex:auto}.cluster .row{flex-wrap:nowrap}.depth-title,.depth-name,.enemy-count{white-space:nowrap}.hud-bottom{gap:6px;padding:0 16px 10px;display:grid;position:absolute;bottom:0;left:0;right:0}.cluster{gap:6px;display:grid}.cluster.right{justify-items:end}.cluster.mid{justify-items:center}.chip{white-space:nowrap;border:1px solid var(--line-soft);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#060910b8;border-radius:8px;flex-wrap:nowrap;align-items:center;gap:8px;padding:5px 10px;font-size:13px;display:flex}.chip .lbl{color:var(--dim);letter-spacing:.14em;font-size:11px}.chip .val{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:15px}.hearts{gap:3px;display:flex}.heart{background:var(--danger);width:15px;height:15px;clip-path:path("M7.5 14 1 7.6C-1 5 1 1 4 1c1.7 0 3 1.2 3.5 2.4C8 2.2 9.3 1 11 1c3 0 5 4 3 6.6z");box-shadow:0 0 8px #ff4d6d99}.heart.empty{box-shadow:none;background:#ffffff21}.heart.shield{background:var(--ice);box-shadow:0 0 10px #7fd8ffb3}.bar{background:#ffffff14;border:1px solid #ffffff0f;border-radius:99px;width:150px;height:7px;overflow:hidden}.bar>i{background:linear-gradient(90deg, var(--accent-dim), var(--accent));height:100%;transition:width .22s;display:block;box-shadow:0 0 12px #7cffb280}.bar.xp{width:100%;height:6px}.bar.hp{width:116px}.bar.hp>i{background:linear-gradient(90deg, #b3244a, var(--danger));box-shadow:0 0 12px #ff4d6d80}.bar.xp>i{background:linear-gradient(90deg, #3b7fd4, var(--ice));box-shadow:0 0 12px #7fd8ff8c}.bar.dash>i{background:linear-gradient(90deg, #6a4bb8, var(--violet));box-shadow:0 0 12px #b98bff8c}.bar.dash.ready>i{background:linear-gradient(90deg, var(--accent-dim), var(--accent))}.relic-strip{flex-wrap:wrap;gap:5px;max-width:46vw;display:flex}.relic-pip{width:26px;height:26px;color:var(--gold);background:#ffd1661a;border:1px solid #ffd16666;border-radius:7px;place-items:center;font-size:13px;display:grid;position:relative}.relic-pip[data-r="2"]{color:var(--ice);background:#7fd8ff1a;border-color:#7fd8ff73}.relic-pip[data-r="3"]{color:var(--violet);background:#b98bff21;border-color:#b98bff8c}.relic-pip:hover:after{content:attr(data-name);background:var(--panel-solid);border:1px solid var(--line-soft);white-space:nowrap;color:var(--text);letter-spacing:.06em;z-index:5;border-radius:7px;padding:5px 9px;font-size:11px;position:absolute;bottom:130%;left:50%;transform:translate(-50%)}.depth-title{font-family:var(--mono);letter-spacing:.3em;color:var(--dim);font-size:13px}.depth-name{letter-spacing:.18em;color:var(--ice);font-size:14px}.enemy-count{color:var(--dim);letter-spacing:.1em;font-size:11px}.compass{color:var(--danger);letter-spacing:.08em;background:#ff4d6d12;border:1px solid #ff4d6d4d;border-radius:6px;align-items:center;gap:5px;padding:1px 7px;font-size:11px;display:inline-flex}.compass .arrow{line-height:1;display:inline-block}.compass .cd{font-family:var(--mono);color:var(--text)}.compass.boss{color:var(--gold);background:#ffd16614;border-color:#ffd16666}.tip{color:var(--dim);letter-spacing:.1em;font-size:11px}#banner{text-align:center;pointer-events:none;opacity:0;position:absolute;top:26%;left:0;right:0}#banner .bt{font-family:var(--mono);letter-spacing:.28em;text-shadow:0 0 26px,0 4px 22px #000;font-size:clamp(24px,4vw,44px)}#banner .bs{letter-spacing:.4em;color:var(--dim);margin-top:6px;font-size:14px}#banner.show{animation:2.6s ease-out forwards bannerIn}@keyframes bannerIn{0%{opacity:0;transform:translateY(14px)scale(.96)}14%{opacity:1;transform:translateY(0)scale(1)}72%{opacity:1}to{opacity:0;transform:translateY(-12px)}}.modal-bg{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#03050abd;place-items:center;padding:20px;animation:.16s ease-out fadeIn;display:grid;position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:auto}.cards{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-top:18px;display:grid}.card{border:1px solid var(--line-soft);cursor:pointer;background:linear-gradient(#141c2cf2,#0a0e18f2);border-radius:13px;align-content:start;gap:8px;min-height:148px;padding:20px 18px;transition:transform .14s,border-color .16s,box-shadow .16s;display:grid;position:relative}.card:hover,.card.sel{border-color:#7cffb299;transform:translateY(-4px);box-shadow:0 0 34px #7cffb22e,0 18px 40px #00000080}.card .ico{color:var(--accent);font-size:26px;line-height:1}.card .nm{letter-spacing:.08em;font-size:17px;font-weight:700}.card .ds{color:var(--dim);font-size:13px;line-height:1.6}.card .key{font-family:var(--mono);color:var(--dim);border:1px solid var(--line-soft);border-radius:5px;padding:1px 6px;font-size:11px;position:absolute;top:10px;right:12px}.card .lvl{color:var(--gold);letter-spacing:.1em;font-size:11px}.result-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin:18px 0 22px;display:grid}.stat{border:1px solid var(--line-soft);background:#ffffff09;border-radius:10px;gap:3px;padding:12px;display:grid}.stat .k{color:var(--dim);letter-spacing:.16em;font-size:11px}.stat .v{font-family:var(--mono);color:var(--text);font-size:22px}.stat.big .v{color:var(--gold);font-size:30px}.grid-b{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;display:grid}.node{border:1px solid var(--line-soft);background:#ffffff09;border-radius:11px;align-content:start;gap:8px;padding:14px;display:grid}.node .top{align-items:center;gap:9px;display:flex}.node .ico{color:var(--gold);font-size:19px}.node .nm{letter-spacing:.06em;font-size:15px;font-weight:700}.node .ds{color:var(--dim);font-size:12px;line-height:1.55}.pips{flex-wrap:wrap;gap:3px;display:flex}.pips i{background:#ffffff24;border-radius:2px;width:11px;height:5px}.pips i.on{background:var(--gold);box-shadow:0 0 7px #ffd16699}.node.locked .nm,.node.locked .ico{color:var(--dim)}.node.owned{border-color:#7cffb259}.echoes{font-family:var(--mono);color:var(--gold);letter-spacing:.12em;white-space:nowrap;background:#ffd16614;border:1px solid #ffd16659;border-radius:99px;padding:6px 14px;font-size:13px}.codex-tabs{flex-wrap:wrap;gap:8px;margin:14px 0;display:flex}.codex-list{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px;display:grid}.entry{border:1px solid var(--line-soft);background:#ffffff08;border-radius:10px;align-items:flex-start;gap:12px;padding:12px;display:flex}.entry .sw{border-radius:8px;flex:none;place-items:center;width:30px;height:30px;font-size:16px;display:grid}.entry .tx{gap:3px;display:grid}.entry .nm{letter-spacing:.06em;font-size:14px;font-weight:700}.entry .ds{color:var(--dim);font-size:12px;line-height:1.55}.entry.locked{opacity:.4}.entry.locked .nm{color:var(--dim)}.settings-row{border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;gap:16px;padding:9px 0;font-size:14px;display:flex}.toggle{font-family:var(--mono);letter-spacing:.12em;border:1px solid var(--line-soft);cursor:pointer;background:#ffffff0a;border-radius:7px;min-width:74px;padding:6px 14px;font-size:12px}.toggle.on{color:var(--accent);background:#7cffb21a;border-color:#7cffb28c}kbd-help{color:var(--dim);gap:6px;font-size:12.5px;display:grid}kbd-help div{justify-content:space-between;gap:18px;display:flex}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:#ffffff08}::-webkit-scrollbar-thumb{background:#7cffb238;border-radius:9px}::-webkit-scrollbar-thumb:hover{background:#7cffb266}@media (max-width:720px){.hint-keys{display:none}.bar{width:120px}}.link{color:var(--dim);white-space:nowrap;border-bottom:1px solid #96aac847;text-decoration:none;transition:color .16s,border-color .16s}.link:hover{color:var(--accent);border-color:#7cffb299}.foot-links{letter-spacing:.08em;font-size:11.5px;font-family:var(--mono);justify-content:center;align-items:center;gap:18px;margin-top:18px;display:flex}.foot-links .dot{color:#96aac84d}
