@font-face{font-family:KenneyPixel;src:url(./Kenney-Pixel-Square-BGJbmVgp.ttf)format("truetype");font-display:block}@font-face{font-family:KenneyFuture;src:url(./Kenney-Future-DEf4eE_G.ttf)format("truetype");font-display:block}:root{--ink:#f2ead8;--dim:#9aa0b0;--bg:#12151c;--panel:#232936;--panel-hi:#2e3648;--line:#0b0d12;--gold:#ffcf4d;--hp:#e5484d;--cool:#7fd9ff;--good:#6ee06e;--pad:clamp(8px, 2vmin, 18px);--mx:0px;--my:40px;--mw:100vw;--mh:60vh}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);width:100%;height:100%;color:var(--ink);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;font-family:KenneyPixel,system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif;overflow:hidden}#screen{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;display:block;position:fixed;inset:0}.hidden{display:none!important}.screen{justify-content:center;align-items:center;gap:var(--pad);padding:max(var(--pad), env(safe-area-inset-top)) var(--pad) max(var(--pad), env(safe-area-inset-bottom));z-index:20;background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0;overflow-y:auto}.screen.overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:30;background:#080a0fd6}.logo{letter-spacing:.12em;color:var(--gold);text-shadow:0 4px #8a5a10,0 8px 24px #0009;text-align:center;font-family:KenneyFuture,system-ui,sans-serif;font-size:clamp(26px,8vmin,62px)}.tagline{color:var(--dim);letter-spacing:.08em;text-align:center;font-size:clamp(12px,2.6vmin,17px)}h2{letter-spacing:.06em;font-size:clamp(17px,3.6vmin,26px)}.hint{color:var(--dim);text-align:center;font-size:clamp(11px,2.2vmin,15px);line-height:1.7}button{font:inherit;color:var(--ink);background:var(--panel);border:3px solid var(--line);box-shadow:0 4px 0 var(--line);cursor:pointer;letter-spacing:.05em;padding:.55em 1.1em;font-size:clamp(13px,2.6vmin,18px);transition:transform 60ms,background .12s}button:hover{background:var(--panel-hi)}button:active{box-shadow:0 0 0 var(--line);transform:translateY(4px)}button:disabled{opacity:.42;cursor:not-allowed;box-shadow:0 4px 0 var(--line)}button.primary{background:#2f6d3a}button.primary:hover{background:#3c8a4a}button.ghost{background:0 0;box-shadow:0 4px #000}button.small{box-shadow:0 3px 0 var(--line);padding:.4em .7em;font-size:clamp(11px,2.1vmin,14px)}.row{gap:var(--pad);flex-wrap:wrap;justify-content:center;align-items:center;display:flex}.col{gap:var(--pad);flex-direction:column;align-items:center;display:flex}.spr{image-rendering:pixelated;background-repeat:no-repeat;flex:none;display:block}#topbar{height:max(var(--my), 30px);padding:0 8px max(0px, env(safe-area-inset-top));z-index:10;pointer-events:none;font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:clamp(8px,2.5vw,22px);display:flex;position:fixed;top:0;left:0;right:0}#topbar>*{pointer-events:auto}#topbar .stat{align-items:center;gap:5px;font-size:clamp(15px,3.4vmin,23px);display:flex}#topbar .stat.lives b{color:var(--good)}#topbar .stat.gold b{color:var(--gold)}#topbar .stat.wave{color:var(--dim);font-size:clamp(11px,2.4vmin,16px)}#topbar .stat.low b{color:var(--hp)}#speedbtn,#pausebtn{box-shadow:0 3px 0 var(--line);padding:.3em .55em;font-size:clamp(11px,2.2vmin,15px)}#speedbtn.fast{background:#6b4a12}#botbar{left:0;right:0;top:calc(var(--my) + var(--mh));padding:5px 6px max(5px, env(safe-area-inset-bottom));z-index:10;pointer-events:none;flex-direction:column;align-items:center;gap:5px;display:flex;position:fixed;bottom:0;overflow:hidden}#botbar>*{pointer-events:auto}#wavebar{width:min(var(--mw), 96vw);border:2px solid var(--line);cursor:pointer;background:#0c0f16;flex:none;height:20px;position:relative}#wavebar>i{background:linear-gradient(#4a90c8,#2d6a99);width:0%;height:100%;transition:width .1s linear;display:block}#wavebar.prep>i{background:linear-gradient(#7bc86a,#4c9440)}#wavebar:hover{border-color:var(--cool)}#wavebar>span{letter-spacing:.06em;text-shadow:0 0 3px #000,0 1px #000;justify-content:center;align-items:center;font-size:clamp(10px,2vmin,13px);display:flex;position:absolute;inset:0}#towerbar{flex-wrap:wrap;justify-content:center;gap:4px;max-width:98vw;display:flex}.tbtn{background:var(--panel);border:3px solid var(--line);width:clamp(52px,17vmin,74px);box-shadow:0 3px 0 var(--line);cursor:pointer;font:inherit;color:var(--ink);flex-direction:column;align-items:center;gap:1px;padding:4px 2px 3px;display:flex;position:relative}.tbtn:hover{background:var(--panel-hi)}.tbtn.sel{border-color:var(--good);background:#3a4a2e}.tbtn.poor{opacity:.45}.tbtn .key{color:var(--dim);font-size:9px;position:absolute;top:1px;left:2px}.tbtn .nm{font-size:clamp(9px,1.9vmin,12px);line-height:1.1}.tbtn .cost{color:var(--gold);font-size:clamp(10px,2vmin,13px)}.tbtn.poor .cost{color:var(--hp)}.tipline{color:var(--dim);text-align:center;min-height:1.2em;max-width:min(var(--mw), 96vw);font-size:clamp(10px,2.1vmin,14px);line-height:1.4}.tipline.warn{color:#ffb04d}#tpanel{background:var(--panel);border:3px solid var(--line);box-shadow:0 3px 0 var(--line);max-width:min(var(--mw), 98vw);flex:none;align-items:center;gap:8px;padding:5px 8px;display:flex}#tpanel .txt{flex-direction:column;gap:1px;display:flex}#tpanel .txt b{font-size:clamp(11px,2.2vmin,15px)}#tpanel .txt small{color:var(--dim);font-size:clamp(9px,1.9vmin,12px)}#tpanel .lvl{color:var(--gold)}#debug{color:#7fe08a;text-align:right;white-space:pre;text-shadow:0 0 3px #000;z-index:12;font-size:11px;position:fixed;top:30%;right:6px}.loadbar{border:2px solid var(--line);background:#0c0f16;width:min(320px,70vw);height:14px}.loadbar>i{background:var(--gold);width:0%;height:100%;transition:width .15s;display:block}#grid{grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:8px;width:min(760px,96vw);display:grid}.lv{background:var(--panel);border:3px solid var(--line);box-shadow:0 4px 0 var(--line);cursor:pointer;flex-direction:column;align-items:center;gap:2px;padding:8px 6px;display:flex}.lv:hover{background:var(--panel-hi)}.lv.locked{opacity:.45;cursor:not-allowed}.lv .no{color:var(--gold);font-size:clamp(15px,3vmin,20px)}.lv .nm{font-size:clamp(11px,2.1vmin,14px)}.lv .stars{color:var(--gold);letter-spacing:2px;font-size:clamp(12px,2.3vmin,16px)}.lv .stars .off{color:#4b5468}.lv .new{color:var(--cool);font-size:clamp(9px,1.8vmin,12px)}.lv .tags{gap:3px;display:flex}.lv .tags b{color:#ffc178;background:#3b2b1c;border:1px solid #6b4a2a;padding:0 3px;font-size:clamp(9px,1.8vmin,12px);font-weight:400}#shop .items{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;width:min(880px,96vw);display:grid}.item{background:var(--panel);border:3px solid var(--line);box-shadow:0 4px 0 var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px;display:grid}.item .txt b{font-size:clamp(13px,2.5vmin,16px);display:block}.item .txt small{color:var(--dim);font-size:clamp(10px,2vmin,12px)}.item .pips{gap:2px;margin-top:3px;display:flex}.item .pips i{background:#4b5468;width:8px;height:8px}.item .pips i.on{background:var(--good)}.item button{padding:.5em .7em;font-size:clamp(11px,2.2vmin,14px)}.purse{color:var(--gold);align-items:center;gap:8px;font-size:clamp(15px,3vmin,21px);display:flex}.verdict{letter-spacing:.1em;font-family:KenneyFuture,system-ui,sans-serif;font-size:clamp(24px,6.5vmin,50px)}.verdict.win{color:var(--gold)}.verdict.lose{color:var(--hp)}.bigstars{color:var(--gold);letter-spacing:6px;font-size:clamp(28px,8vmin,54px)}.bigstars .off{color:#3b4252}.stats{grid-template-columns:auto auto;gap:5px 22px;font-size:clamp(12px,2.5vmin,17px);display:grid}.stats span:nth-child(odd){color:var(--dim)}.stats span:nth-child(2n){text-align:right;font-variant-numeric:tabular-nums}.earn{color:var(--gold);font-size:clamp(14px,3.2vmin,21px)}.best{color:var(--good);font-size:clamp(12px,2.4vmin,15px)}.btable{border:3px solid var(--line);background:var(--panel);width:min(560px,96vw);box-shadow:0 4px 0 var(--line);font-variant-numeric:tabular-nums}.bhead,.brow{grid-template-columns:2.6em minmax(0,1fr) 5em 4.4em;align-items:center;gap:8px;padding:7px 10px;font-size:clamp(12px,2.5vmin,16px);display:grid}.bhead{color:var(--dim);letter-spacing:.08em;border-bottom:2px solid var(--line);font-size:clamp(10px,2vmin,13px)}.brow+.brow{border-top:1px solid #ffffff0f}.brow:nth-child(2n){background:#ffffff06}.brow .bi{color:var(--dim);text-align:right}.brow .bn{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.brow.top3 .bi{color:var(--gold)}.brow.me{border-bottom:2px solid var(--good);background:#3a4a2e;border-top:2px solid var(--good)!important}.brow.me .bn{color:var(--good)}.upload{flex-direction:column;align-items:center;gap:8px;min-height:2.2em;display:flex}.upload .rank{color:var(--gold);letter-spacing:.04em;font-size:clamp(14px,3vmin,20px)}.invite{opacity:.55;gap:6px;transition:opacity .15s}.invite:hover,.invite:focus-within{opacity:1}.invite input{width:min(140px,34vw);padding:.4em .6em;font-size:clamp(11px,2.2vmin,14px)}.upload input,#menu input,#board input{font:inherit;color:var(--ink);border:3px solid var(--line);text-align:center;background:#0c0f16;width:min(220px,46vw);padding:.5em .7em;font-size:clamp(13px,2.6vmin,17px)}.upload input:focus{border-color:var(--good);outline:none}.dex{flex-wrap:wrap;justify-content:center;gap:6px;width:min(760px,96vw);display:flex}.dex .d{background:var(--panel);border:2px solid var(--line);align-items:center;gap:6px;padding:5px 8px;font-size:clamp(10px,2vmin,13px);display:flex}.dex .d.locked{opacity:.4}
