@font-face{font-family:SwarmDisplay;src:local("Bahnschrift"),local("DIN Alternate"),local("Oswald"),local("Impact");font-display:swap}:root{--bg: #05070c;--ink: #e7f0ff;--ink-dim: #8fa3c0;--ink-faint: #55667e;--line: rgba(120, 170, 255, .16);--line-hot: rgba(120, 190, 255, .45);--panel: rgba(9, 14, 24, .86);--panel-solid: #0a1018;--accent: #46d8ff;--accent-dim: #1d6d86;--ore: #7fd9ff;--essence: #b47cff;--relic: #ffcc55;--danger: #ff4f5e;--warn: #ffb347;--good: #5cf2a0;--ui-font: "SwarmDisplay", "Segoe UI", system-ui, sans-serif;--mono: "JetBrains Mono", "Cascadia Mono", Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--ui-font);-webkit-font-smoothing:antialiased;user-select:none;cursor:default}#app{position:fixed;inset:0}#stage{position:absolute;inset:0;width:100%;height:100%;display:block;image-rendering:auto;cursor:none}#ui{position:absolute;inset:0;pointer-events:none;font-size:14px;letter-spacing:.02em}#ui>*{pointer-events:auto}.panel{background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(12px) saturate(1.2);box-shadow:0 18px 50px #0009,inset 0 1px #ffffff0d}.clip-corner{clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}.label{font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-faint)}.btn{font-family:var(--ui-font);font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);background:linear-gradient(180deg,#46d8ff24,#46d8ff0a);border:1px solid var(--line-hot);padding:12px 26px;cursor:pointer;transition:background .12s ease,transform .12s ease,box-shadow .16s ease;clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px)}.btn:hover{background:linear-gradient(180deg,#46d8ff4d,#46d8ff1a);box-shadow:0 0 24px #46d8ff47}.btn:active{transform:translateY(1px)}.btn.ghost{background:#ffffff08;border-color:var(--line)}.btn.ghost:hover{background:#ffffff14;box-shadow:none}.btn.danger{border-color:#ff4f5e80;color:#ffd4d8}.btn.danger:hover{background:#ff4f5e2e;box-shadow:0 0 24px #ff4f5e40}.btn[disabled]{opacity:.35;pointer-events:none}.screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:safe center;gap:26px;padding-block:24px;background:radial-gradient(120% 90% at 50% 40%,#080e1ad1,#020408f7);animation:fade-in .26s ease both;overflow-y:auto;overflow-x:hidden}.screen.opaque{background:radial-gradient(120% 90% at 50% 30%,#0a1424,#02040a 75%)}.confirm-overlay{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;padding:16px;background:#020408c7;animation:fade-in .16s ease both}.confirm-box{width:min(420px,100%);padding:22px;display:flex;flex-direction:column;gap:18px;background:#080d16;border:1px solid rgba(255,79,94,.45);box-shadow:0 0 40px #ff4f5e26}.confirm-box p{margin:0;font-size:14px;line-height:1.6;color:var(--ink-dim);text-align:center}.confirm-box .row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.confirm-box .row .btn{flex:1 1 120px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.screen .stack{display:flex;flex-direction:column;align-items:center;gap:26px;animation:rise .38s cubic-bezier(.2,.8,.2,1) both}.title{font-size:clamp(56px,13vw,148px);line-height:.84;letter-spacing:.14em;margin:0;font-weight:700;background:linear-gradient(180deg,#fff 10%,#6fd8ff,#1c6f92);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 42px rgba(70,216,255,.4))}.subtitle{margin:0;font-size:12px;letter-spacing:.5em;text-transform:uppercase;color:var(--ink-dim);text-indent:.5em}.screen h2{margin:0;font-size:clamp(26px,5vw,44px);letter-spacing:.16em;text-transform:uppercase}.screen .flavor{max-width:620px;text-align:center;color:var(--ink-dim);font-size:14px;line-height:1.7}.menu-col{display:flex;flex-direction:column;gap:10px;width:300px}.row{display:flex;gap:12px;align-items:center}.hint-bar{color:var(--ink-faint);font-size:11px;letter-spacing:.22em;text-transform:uppercase;text-align:center;padding:0 20px}kbd{font-family:var(--mono);font-size:11px;padding:2px 7px;border:1px solid var(--line-hot);border-bottom-width:2px;border-radius:3px;background:#46d8ff14;color:var(--ink)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);width:min(760px,88vw)}.stat-grid .cell{background:var(--panel-solid);padding:16px 18px}.stat-grid .cell .v{font-size:26px;font-variant-numeric:tabular-nums}.stat-grid .cell .v.accent{color:var(--accent)}.card-row{display:flex;gap:20px;flex-wrap:wrap;justify-content:center}.tech-card{width:250px;min-height:300px;padding:22px;display:flex;flex-direction:column;gap:12px;background:linear-gradient(170deg,#142236f2,#070b13f2);border:1px solid var(--line);cursor:pointer;transition:transform .16s cubic-bezier(.2,.8,.2,1),border-color .16s,box-shadow .2s;clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);animation:rise .42s cubic-bezier(.2,.8,.2,1) both}.tech-card:nth-child(2){animation-delay:70ms}.tech-card:nth-child(3){animation-delay:.14s}.tech-card:hover{transform:translateY(-8px);border-color:var(--line-hot);box-shadow:0 24px 60px #0009,0 0 40px #46d8ff2e}.tech-card .glyph{font-size:40px;line-height:1;filter:drop-shadow(0 0 16px currentColor)}.tech-card h3{margin:0;font-size:17px;letter-spacing:.1em;text-transform:uppercase}.tech-card p{margin:0;font-size:13px;line-height:1.6;color:var(--ink-dim);flex:1}.tech-card .rarity{font-size:10px;letter-spacing:.24em;text-transform:uppercase}.enemy-list{display:grid;gap:12px;width:min(760px,92vw);grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.enemy-panel{display:flex;gap:14px;align-items:flex-start;text-align:left;padding:14px;border:1px solid var(--line);background:#ffffff08}.enemy-panel canvas{flex:none}.enemy-panel.boss{border-color:#ff4f5e73}.enemy-panel.unknown{opacity:.55}.enemy-panel h3{margin:0;font-size:15px;letter-spacing:.08em;text-transform:uppercase}.enemy-body{min-width:0}.enemy-traits{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.enemy-trait{font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:2px 7px;border:1px solid var(--line);color:var(--accent)}.enemy-panel.boss .enemy-trait{color:#ff8090}.enemy-desc{margin:8px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-dim)}.enemy-counter-label{margin-top:10px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--good)}.enemy-counter{margin:3px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink)}.synergy-summary{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.synergy-chip{font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border:1px solid var(--line);color:var(--ink-dim)}.synergy-chip.on{border-color:var(--syn);color:var(--syn)}.synergy-line{margin-top:4px;padding:8px 10px;border-left:2px solid var(--syn);background:#ffffff08;text-align:left}.synergy-line .synergy-tag{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--syn)}.synergy-line .synergy-text{font-size:12px;line-height:1.45;color:var(--ink-dim);margin-top:2px}.synergy-line.completes{background:#ffffff12;box-shadow:inset 0 0 0 1px var(--syn)}.synergy-line.completes .synergy-text{color:var(--ink);font-weight:600}.r-common{color:var(--ink-dim)}.r-rare{color:var(--accent)}.r-epic{color:var(--essence)}.ach-wrap{width:min(900px,92vw);max-height:62vh;overflow-y:auto;padding-right:6px}.ach-wrap::-webkit-scrollbar{width:8px}.ach-wrap::-webkit-scrollbar-thumb{background:var(--line-hot)}.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}.ach{display:flex;gap:14px;padding:14px;border:1px solid var(--line);background:#0a101ab3;align-items:flex-start}.ach.locked{opacity:.42}.ach.unlocked{border-color:#5cf2a059;background:#0e1e1899}.ach .icon{font-size:26px;line-height:1}.ach .name{font-size:13px;letter-spacing:.08em;text-transform:uppercase}.ach .desc{font-size:12px;color:var(--ink-dim);margin-top:3px;line-height:1.5}.ach .perk{font-size:11px;color:var(--good);margin-top:6px;letter-spacing:.04em}.ach .bar{height:3px;background:#ffffff14;margin-top:8px}.ach .bar>i{display:block;height:100%;background:var(--accent)}#toasts{position:absolute;top:96px;right:22px;display:flex;flex-direction:column;gap:10px;align-items:flex-end;pointer-events:none}.toast{display:flex;gap:12px;align-items:center;padding:12px 18px 12px 14px;background:linear-gradient(90deg,#0a142080,#0c1826f0);border:1px solid rgba(92,242,160,.4);border-left-width:3px;animation:toast-in .4s cubic-bezier(.2,.9,.2,1) both;max-width:340px}.toast.out{animation:toast-out .42s ease forwards}.toast .icon{font-size:22px}.toast .t{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--good)}.toast .s{font-size:12px;color:var(--ink-dim);margin-top:2px}@keyframes toast-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translate(40px)}}#boot{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#02040a;z-index:50;transition:opacity .5s ease}#boot .bar{width:260px;height:2px;background:#ffffff1a;overflow:hidden}#boot .bar>i{display:block;height:100%;width:40%;background:var(--accent);animation:sweep 1.1s ease-in-out infinite}@keyframes sweep{0%{transform:translate(-100%)}to{transform:translate(300%)}}.fade-out{opacity:0!important;pointer-events:none}.relic-bar{display:flex;align-items:baseline;gap:12px;padding:12px 22px;border:1px solid rgba(255,204,85,.35);background:linear-gradient(90deg,#ffcc551a,#0a1018e6);clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}.relic-bar .amount{font-size:30px;font-variant-numeric:tabular-nums;color:var(--relic);line-height:1}.relic-bar .sub{font-size:11px;color:var(--ink-dim);letter-spacing:.06em}.shop-wrap{width:min(1000px,94vw);max-height:58vh;overflow-y:auto;padding-right:8px}.shop-wrap::-webkit-scrollbar{width:8px}.shop-wrap::-webkit-scrollbar-thumb{background:var(--line-hot)}.shop-cat{margin:0 0 8px}.shop-cat+.shop-cat{margin-top:22px}.shop-cat h4{margin:0 0 2px;font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent)}.shop-cat .blurb{font-size:11px;color:var(--ink-faint);margin-bottom:10px}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:9px}.up{display:flex;gap:13px;padding:13px 15px;align-items:flex-start;border:1px solid var(--line);background:#0a101ab8;transition:border-color .14s,background .14s}.up.affordable{border-color:#fc56}.up.maxed{border-color:#5cf2a066;background:#0e1e1899}.up .icon{font-size:24px;line-height:1}.up .body{flex:1;min-width:0}.up .name{font-size:13px;letter-spacing:.06em;text-transform:uppercase}.up .desc{font-size:11.5px;color:var(--ink-dim);margin-top:3px;line-height:1.5}.up .effect{font-size:11px;color:var(--good);margin-top:5px}.up .pips{display:flex;gap:4px;margin-top:8px}.up .pips i{width:16px;height:4px;background:#ffffff21;display:block}.up .pips i.on{background:var(--relic)}.up .buy{font-family:var(--ui-font);font-size:12px;letter-spacing:.08em;min-width:74px;padding:9px 10px;cursor:pointer;color:var(--ink);background:#ffcc5524;border:1px solid rgba(255,204,85,.45);transition:background .12s;white-space:nowrap}.up .buy:hover{background:#ffcc554d}.up .buy[disabled]{opacity:.32;pointer-events:none}.up .buy.done{background:#5cf2a01f;border-color:#5cf2a066;color:var(--good);pointer-events:none}html,body{overscroll-behavior:none;touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none}body.touch #ui{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}body.touch #stage{cursor:auto}body.touch .btn{padding:16px 26px;font-size:15px;letter-spacing:.12em}body.touch .menu-col{width:min(360px,82vw)}body.touch .screen,body.touch .screen .stack{gap:16px}body.touch .title{font-size:clamp(44px,11vw,96px)}body.touch .screen h2{font-size:clamp(22px,5vw,34px)}body.touch .screen .flavor{font-size:13px;line-height:1.6;max-width:560px}body.touch .stat-grid{width:min(760px,94vw)}body.touch .stat-grid .cell{padding:11px 13px}body.touch .stat-grid .cell .v{font-size:20px}body.touch .tech-card{width:min(230px,44vw);min-height:0;padding:16px}body.touch .tech-card .glyph{font-size:30px}body.touch .tech-card p{font-size:12px}body.touch .ach-wrap,body.touch .shop-wrap{max-height:50vh}body.touch .up{padding:11px 12px}body.touch .up .buy{min-width:82px;padding:13px 10px}body.touch .hint-bar{display:none}body.touch .screen{justify-content:flex-start;padding:14px 0 18px}#rotate{position:fixed;inset:0;z-index:100;display:none;flex-direction:column;align-items:center;justify-content:center;gap:22px;background:#05070c;text-align:center}body.portrait-block #rotate{display:flex}#rotate .phone{width:66px;height:112px;border:3px solid var(--accent);border-radius:12px;position:relative;animation:tilt 2.1s ease-in-out infinite}#rotate .phone:after{content:"";position:absolute;bottom:7px;left:50%;transform:translate(-50%);width:22px;height:3px;background:var(--accent);border-radius:2px}@keyframes tilt{0%,40%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}#rotate .msg{font-size:17px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink)}#rotate .sub{font-size:12px;letter-spacing:.12em;color:var(--ink-faint)}#crash-overlay{position:fixed;inset:0;z-index:999;display:flex;align-items:center;justify-content:center;padding:24px;background:#020408e0;backdrop-filter:blur(6px)}.crash-panel{width:min(560px,100%);background:var(--panel-solid);border:1px solid var(--danger);box-shadow:0 0 60px #ff4f5e33,0 18px 50px #0009;padding:28px 30px;display:flex;flex-direction:column;gap:14px}.crash-title{font-family:var(--ui-font);font-size:20px;letter-spacing:.06em;text-transform:uppercase;color:var(--danger)}.crash-sub{margin:0;font-size:13.5px;line-height:1.6;color:var(--ink-dim)}.crash-details{width:100%;height:120px;resize:vertical;background:#02040a;border:1px solid var(--line);color:var(--ink-faint);font-family:var(--mono);font-size:11px;line-height:1.5;padding:10px}.crash-actions{display:flex;gap:12px;justify-content:flex-end}@media(max-height:540px){body.touch .screen{gap:10px;padding:10px 0}body.touch .screen .stack{gap:10px}body.touch .title{font-size:clamp(30px,7vw,48px)}body.touch .subtitle{font-size:10px;letter-spacing:.34em}body.touch .screen h2{font-size:clamp(18px,4vw,26px)}body.touch .flavor.pitch{display:none}body.touch .screen .flavor{font-size:12px;line-height:1.5}body.touch .menu-col{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:min(600px,94vw)}body.touch .btn{padding:15px 12px;font-size:12px;letter-spacing:.07em}body.touch .title-stack{display:grid;grid-template-columns:minmax(170px,240px) auto;grid-auto-rows:min-content;align-items:center;justify-items:center;gap:8px 26px;width:min(760px,96vw)}body.touch .title-stack>.title{grid-column:2;grid-row:1}body.touch .title-stack>.subtitle{grid-column:2;grid-row:2}body.touch .title-stack>.menu-col{grid-column:2;grid-row:3}body.touch .title-stack>.campaign-progress{grid-column:1;grid-row:1;align-self:end}body.touch .title-stack>.stat-grid.title-stats{grid-column:1;grid-row:2 / 4;align-self:start;width:100%;grid-template-columns:repeat(2,1fr)}body.touch .card-row{gap:10px}body.touch .tech-card{width:min(190px,30vw);padding:12px}body.touch .tech-card .glyph{font-size:24px}body.touch .tech-card h3{font-size:13px}body.touch .tech-card p{font-size:11px}body.touch .ach-wrap,body.touch .shop-wrap{max-height:40vh}body.touch .stat-grid .cell{padding:8px 10px}body.touch .stat-grid .cell .v{font-size:16px}body.touch .relic-bar{padding:8px 16px}body.touch .relic-bar .amount{font-size:22px}}.rec-table{display:grid;grid-template-columns:2.4em minmax(4.5em,1fr) 3.2em 4em 3.6em minmax(6em,1.6fr);gap:6px 14px;align-items:baseline;width:min(640px,90vw);padding:14px 18px;font-size:13px;font-variant-numeric:tabular-nums;background:var(--panel-solid);border:1px solid var(--line)}.rec-table .h{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}.rec-table .score{color:var(--accent);font-size:15px}.rec-table .dim{color:var(--ink-dim)}.rec-table .gold{color:var(--relic)}.rec-table .empty{grid-column:1 / -1;text-align:center;color:var(--ink-faint);padding:8px 0}.tab-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.tab-row .btn{padding:8px 16px}.tab-row .btn.active{border-color:var(--accent);color:var(--accent)}.mut-list{display:flex;flex-direction:column;gap:8px;width:min(560px,90vw)}.mut-row{display:flex;align-items:center;gap:14px;padding:10px 14px;text-align:left;color:var(--ink);background:#ffffff08;border:1px solid var(--line);font:inherit}.mut-row .icon{font-size:22px;width:1.6em;text-align:center}.mut-row .body{flex:1;min-width:0}.mut-row .name{font-size:13px;letter-spacing:.08em;text-transform:uppercase}.mut-row .desc{font-size:12px;color:var(--ink-dim);margin-top:2px}.mut-row .heat{color:var(--relic);font-size:12px;white-space:nowrap}button.mut-row{cursor:pointer}button.mut-row:hover{background:#ffffff14}button.mut-row.on{border-color:var(--relic);background:#ffcc5514}.mut-row.locked{opacity:.45;cursor:not-allowed}.rank-strip{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;background:none;border:0;color:inherit;font:inherit}.rank-strip .line{color:var(--accent)}.rank-bar{width:170px;height:4px;background:var(--line)}.rank-bar i{display:block;height:100%;background:var(--accent);box-shadow:0 0 8px var(--accent)}.rank-list{display:flex;flex-direction:column;gap:4px;width:min(560px,90vw)}.rank-row{display:grid;grid-template-columns:3em 8em 1fr;gap:12px;align-items:baseline;padding:8px 14px;background:#ffffff08;border:1px solid transparent;font-size:13px}.rank-row .n{color:var(--ink-faint)}.rank-row.reached .n,.rank-row.reached .t{color:var(--accent)}.rank-row.current{border-color:var(--accent);background:#46d8ff14}.rank-row .perk{color:var(--ink-dim);font-size:12px}.rank-row:not(.reached){opacity:.55}.result-box{display:flex;flex-direction:column;gap:4px;align-items:center;padding:12px 22px;background:var(--panel-solid);border:1px solid var(--line);text-align:center}.result-box .score{font-size:34px;color:var(--accent);font-variant-numeric:tabular-nums}.result-box .sub{font-size:12px;color:var(--ink-dim)}.mut-list.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));width:min(780px,92vw);gap:8px}.mut-list.grid .mut-row{padding:8px 12px}
