:root{--ink: #ffffff;--muted: #c9d6f5;--panel: rgba(20, 30, 70, .72);--panel-solid: rgba(22, 30, 72, .92);--line: rgba(255, 255, 255, .22);--rift: #a855f7;--pink: #ff4fd8;--cyan: #5ee7ff;--gold: #ffd166;--red: #ff3b5c;--green: #6bff9e;--safe-top: 0px;--safe-bottom: 0px}html,body{margin:0;height:100%;overflow:hidden;background:#a9dcff;touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink)}[hidden]{display:none!important}#stage{position:fixed;inset:0}#stage canvas{display:block;width:100%;height:100%}#floaters{position:fixed;inset:0;pointer-events:none;overflow:hidden}#hud{position:fixed;inset:0;pointer-events:none}#hud .top{position:absolute;top:calc(var(--safe-top) + 10px);left:12px;right:12px;display:flex;justify-content:space-between;align-items:center}.player-card{display:flex;align-items:center;gap:8px;padding:5px 12px 5px 5px;background:var(--panel);border:1px solid var(--line);border-radius:999px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 4px 16px #0a143c40}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:900;font-size:14px;letter-spacing:-.5px;background:radial-gradient(circle at 35% 30%,#6a7fd6,#26336e);border:2px solid var(--gold)}.hp{position:relative;width:132px;height:16px;border-radius:999px;background:#0006;overflow:hidden}.hp-fill{height:100%;width:100%;border-radius:999px;background:linear-gradient(180deg,#8cff7a,#3fcf4f);transition:width .15s ease}.hp-fill.low{background:linear-gradient(180deg,#ff7a8c,#ff3b5c)}.hp-text{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;font-weight:800;text-shadow:0 1px 2px rgba(0,0,0,.6)}.gems{display:flex;align-items:center;gap:7px;padding:7px 14px 7px 10px;background:var(--panel);border:1px solid var(--line);border-radius:999px;font-size:17px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.gem{width:16px;height:16px;background:linear-gradient(135deg,#e3b6ff,var(--rift));transform:rotate(45deg) scale(.85);border-radius:3px;box-shadow:0 0 10px #a855f7cc}.rift-chip{position:absolute;top:calc(var(--safe-top) + 64px);left:12px;display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--panel);border:1px solid var(--line);border-radius:12px;font-weight:800;font-size:14px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.rift-dot{width:10px;height:10px;border-radius:50%;background:var(--pink);box-shadow:0 0 10px var(--pink);animation:pulse 1.2s ease-in-out infinite}.sep{width:1px;height:14px;background:var(--line)}@keyframes pulse{50%{opacity:.35}}#banner{position:absolute;top:28%;left:0;right:0;text-align:center;font-size:30px;font-weight:900;letter-spacing:.5px;text-shadow:0 3px 0 rgba(40,20,90,.6),0 0 24px rgba(168,85,247,.9);opacity:0}#banner.show{animation:banner 1.5s ease forwards}@keyframes banner{0%{opacity:0;transform:scale(1.4)}12%{opacity:1;transform:scale(1)}75%{opacity:1}to{opacity:0;transform:translateY(-10px)}}#hint{position:absolute;left:50%;bottom:calc(var(--safe-bottom) + 210px);transform:translate(-50%);width:min(86vw,360px);padding:8px 12px;border-radius:12px;background:#141e468c;font-size:13px;font-weight:600;text-align:center;transition:opacity .6s ease}#hint.hidden{opacity:0}#stick{position:absolute;left:92px;top:calc(100% - var(--safe-bottom) - 120px);width:112px;height:112px;margin:-56px 0 0 -56px;border-radius:50%;background:radial-gradient(circle,#ffffff14,#ffffff2e);border:2px solid rgba(255,255,255,.45);box-shadow:0 4px 18px #0a143c40;opacity:.55;transition:opacity .15s}#stick.active{opacity:1;transition:none}#knob{position:absolute;left:50%;top:50%;width:50px;height:50px;margin:-25px 0 0 -25px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#fff,#d8e2ff);box-shadow:0 3px 10px #0a143c59}.btn{position:absolute;pointer-events:auto;touch-action:none;border-radius:50%;border:3px solid rgba(255,255,255,.85);color:#fff;display:grid;place-items:center;padding:0;font:inherit;--cd: 0;box-shadow:0 6px 18px #0a143c59,inset 0 2px #ffffff40;transition:transform .08s ease}.btn:after{content:"";position:absolute;inset:-3px;border-radius:50%;background:conic-gradient(rgba(10,15,40,.62) calc(var(--cd) * 360deg),transparent 0)}.btn svg{width:46%;height:46%;fill:currentColor;position:relative;top:-5px}.btn .name{position:absolute;bottom:12%;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.4px}.btn .cd{position:absolute;z-index:1;font-size:20px;font-weight:900;text-shadow:0 2px 4px rgba(0,0,0,.6)}.btn.pressed{transform:scale(.9)}.btn.ready{border-color:#fff}.btn.dash{right:18px;bottom:calc(var(--safe-bottom) + 70px);width:92px;height:92px;background:radial-gradient(circle at 40% 30%,#4a6be0,#22307a)}.btn.dash.ready{box-shadow:0 0 22px #5ee7ffb3,0 6px 18px #0a143c59}.btn.skill{right:118px;bottom:calc(var(--safe-bottom) + 34px);width:70px;height:70px;background:radial-gradient(circle at 40% 30%,#c06cff,#6a22b8)}.btn.skill.ready{box-shadow:0 0 22px #ff4fd8b3,0 6px 18px #0a143c59}.dmg{position:absolute;transform:translate(-50%,-50%);font-weight:900;font-size:17px;color:#fff;text-shadow:0 2px 0 rgba(30,20,70,.8),0 0 6px rgba(0,0,0,.4);animation:float-up .7s ease-out forwards;white-space:nowrap}.dmg.crit{color:var(--gold);font-size:24px}.dmg.hurt{color:var(--red);font-size:22px}.dmg.heal{color:var(--green);font-size:21px}.dmg.stun{color:var(--gold);font-size:14px;letter-spacing:1px}@keyframes float-up{0%{opacity:0;transform:translate(-50%,-50%) scale(1.5)}15%{opacity:1;transform:translate(-50%,-60%) scale(1)}to{opacity:0;transform:translate(-50%,-190%) scale(.95)}}.ebar{position:absolute;left:0;top:0;width:46px;height:6px;border-radius:4px;background:#140f28a6;overflow:hidden;box-shadow:0 0 0 1px #00000059}.ebar.charger{width:64px;height:7px}.ebar i{display:block;height:100%;width:100%;background:linear-gradient(180deg,#ff6b7d,var(--red))}.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;background:radial-gradient(ellipse at 50% 40%,#a855f733,#0e1232b8 70%);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .25s ease}.overlay.show{opacity:1;pointer-events:auto}.panel{width:min(360px,100%);background:var(--panel-solid);border:1px solid rgba(255,255,255,.2);border-radius:20px;padding:22px 20px 18px;box-sizing:border-box;box-shadow:0 20px 60px #00000073,inset 0 1px #ffffff14;text-align:center;transform:translateY(8px) scale(.98);transition:transform .25s ease}.overlay.show .panel{transform:none}.title{font-size:28px;font-weight:900;letter-spacing:.5px}.title.win{color:var(--cyan);text-shadow:0 0 18px rgba(94,231,255,.6)}.title.lose{color:var(--pink);text-shadow:0 0 18px rgba(255,79,216,.5)}.sub{color:var(--muted);font-size:14px;margin:6px 0 16px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}.stat{background:#ffffff0f;border-radius:12px;padding:10px 8px}.stat b{display:block;font-size:20px}.stat span{font-size:12px;color:var(--muted)}.weapons{display:flex;gap:8px;margin-bottom:12px}.weapons button{flex:1;padding:10px;border-radius:12px;border:1px solid rgba(255,255,255,.25);background:#ffffff0d;color:var(--ink);font:inherit;font-weight:800}.weapons button.sel{border-color:var(--gold);color:var(--gold);box-shadow:0 0 14px #ffd1664d}button.primary{width:100%;padding:14px;border-radius:14px;border:0;font:inherit;font-size:17px;font-weight:900;color:#fff;background:linear-gradient(180deg,#c06cff,#7b2ff0);box-shadow:0 6px 24px #a855f773}button:active{transform:scale(.98)}#timer{font-variant-numeric:tabular-nums;min-width:38px}#timer.danger{color:#ff8a9a;animation:pulse .6s ease-in-out infinite}#pressure{font-variant-numeric:tabular-nums}#pressure[data-level=mid]{color:var(--gold)}#pressure[data-level=high]{color:#ff8a9a;text-shadow:0 0 10px rgba(255,59,92,.7)}#portal-status{position:absolute;top:calc(var(--safe-top) + 104px);left:12px;padding:5px 11px;border-radius:10px;font-size:13px;font-weight:800;background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#portal-status.wait{color:var(--muted)}#portal-status.open{color:#fff;background:#7c3aedd9;border-color:#d8b4fe;box-shadow:0 0 18px #a855f7b3;animation:pulse .9s ease-in-out infinite}#portal-status.last{color:#2a1a00;background:linear-gradient(180deg,#ffe08a,#ffc23d);border-color:#fff3c4;box-shadow:0 0 18px #ffc23db3;animation:pulse .7s ease-in-out infinite}#portal-status.danger{color:#fff;background:#ff3b5cd9}.inv{position:absolute;top:calc(var(--safe-top) + 64px);right:12px;display:grid;grid-template-columns:repeat(4,26px);gap:4px;padding:5px;border-radius:12px;background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.inv.full{border-color:#ff8a9a}.inv.bump{animation:bump .25s ease}@keyframes bump{40%{transform:scale(1.08)}}.inv .slot{width:26px;height:26px;border-radius:7px;background:#ffffff12;display:grid;place-items:center;font-style:normal;font-size:13px;color:#fff}.inv .slot[style]{background:color-mix(in srgb,var(--rc) 35%,rgba(20,24,60,.6));box-shadow:inset 0 0 0 1.5px var(--rc),0 0 8px color-mix(in srgb,var(--rc) 60%,transparent)}#portal-arrow{position:absolute;left:0;top:0;width:54px;height:54px;border-radius:50%;background:#7c3aedd9;border:2px solid #e9d5ff;box-shadow:0 0 18px #a855f7cc;display:none;place-items:center}#portal-arrow.show{display:grid}#portal-arrow.last{background:#ffc23de6;border-color:#fff3c4}#portal-arrow i{width:0;height:0;border-left:16px solid #fff;border-top:10px solid transparent;border-bottom:10px solid transparent;margin-left:4px}#banner.pressure{color:var(--gold)}#banner.portal{color:#f0d4ff}#banner.last{color:var(--gold);text-shadow:0 3px 0 rgba(90,50,0,.6),0 0 24px rgba(255,194,61,.9)}#banner.danger{color:#ff8a9a;text-shadow:0 3px 0 rgba(80,0,20,.6),0 0 24px rgba(255,59,92,.9)}#banner.muted{color:var(--muted);font-size:22px}.dmg.loot{font-size:15px;color:var(--rc, #fff)}.dmg.loot.common{color:#e3e8f2}.dmg.loot.rare{color:#7cc0ff}.dmg.loot.epic{color:#d4a3ff;font-size:17px}.dmg.loot.legendary{color:#ffd166;font-size:21px}.loot-list{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:-4px 0 14px}.loot-list.lost .item-chip{opacity:.55;filter:grayscale(.5);text-decoration:line-through}.item-chip{padding:6px 9px;border-radius:10px;background:color-mix(in srgb,var(--rc) 22%,rgba(255,255,255,.04));border:1px solid color-mix(in srgb,var(--rc) 70%,transparent);text-align:left;line-height:1.15}.item-chip b{display:block;font-size:13px}.item-chip span{font-size:10.5px;color:var(--rc);font-weight:700}.item-chip.legendary{box-shadow:0 0 14px #ffc23d80}.stash-line{color:var(--muted);font-size:12px;margin:-6px 0 12px}body.mode-hub #hud{display:none}.hub{position:fixed;inset:0;display:flex;flex-direction:column;pointer-events:none;opacity:0;transition:opacity .3s ease}.hub.show{opacity:1}.hub.show>*{pointer-events:auto}.hub-top{display:flex;justify-content:space-between;align-items:center;padding:calc(var(--safe-top) + 10px) 12px 0}.hub-name{display:flex;flex-direction:column;line-height:1.15;padding-right:6px}.hub-name b{font-size:15px}.hub-name span{font-size:11.5px;color:var(--muted)}.hub-title{margin:14px auto 0;text-align:center;text-shadow:0 2px 8px rgba(20,20,70,.6);pointer-events:none!important}.hub-title b{display:block;font-size:22px;font-weight:900;letter-spacing:.3px}.hub-title span{font-size:13px;color:#eef3ff;opacity:.9}.hub-sheet{margin-top:auto;padding:14px 14px calc(var(--safe-bottom) + 14px);background:linear-gradient(180deg,#161e48d1,#101438f5);border-top:1px solid rgba(255,255,255,.18);border-radius:22px 22px 0 0;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 -10px 40px #0a0f3259}.sheet-head{display:flex;align-items:center;gap:8px;width:100%;margin:0 0 10px;padding:2px 0 4px;border:0;background:none;color:#fff;font:inherit;font-size:16px;text-align:left}.sheet-head .chev{margin-left:auto;width:10px;height:10px;border-right:2.5px solid #fff;border-bottom:2.5px solid #fff;transform:rotate(-135deg) translate(-2px,-2px);transition:transform .2s ease}.hub-sheet.open .sheet-head .chev{transform:rotate(45deg)}.hub-sheet:not(.open) .stash-grid{display:none}.sheet-head .count{font-size:12px;font-weight:800;padding:2px 8px;border-radius:999px;background:#a855f759}.stash-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:82px;gap:8px;max-height:34vh;overflow-y:auto;padding:2px;margin-bottom:12px;touch-action:pan-y}.stash-empty{grid-column:1 / -1;color:var(--muted);font-size:13px;text-align:center;padding:18px 8px}.tile{height:82px;min-width:0;border-radius:12px;border:1.5px solid var(--rc);background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--rc) 40%,transparent),#14183cb3 75%);color:#fff;font:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px;overflow:hidden}.tile i{font-style:normal;font-size:22px;line-height:1;text-shadow:0 0 10px var(--rc)}.tile span{font-size:9.5px;font-weight:700;line-height:1.1;text-align:center;color:#e8ecff}.tile.legendary{box-shadow:0 0 14px #ffc23d8c}.tile.epic{box-shadow:0 0 10px #b56cff73}.hub-weapons{margin-bottom:10px}button.go{font-size:19px;padding:16px;letter-spacing:.5px}.item-card{z-index:20}.item-panel{border-color:color-mix(in srgb,var(--rc, #fff) 60%,transparent)}.ic-icon{width:84px;height:84px;margin:0 auto 10px;border-radius:22px;display:grid;place-items:center;font-size:42px;border:2px solid var(--rc);background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--rc) 55%,transparent),#14183ccc 75%);box-shadow:0 0 26px color-mix(in srgb,var(--rc) 60%,transparent)}.item-card .title{color:var(--rc);font-size:24px}.chron-head{text-align:left;font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin:4px 0 6px}.chronicle{list-style:none;margin:0 0 16px;padding:0;text-align:left}.chronicle li{position:relative;padding:7px 0 7px 18px;font-size:13.5px;border-bottom:1px solid rgba(255,255,255,.07)}.chronicle li:before{content:"";position:absolute;left:2px;top:13px;width:7px;height:7px;border-radius:2px;transform:rotate(45deg);background:var(--rc)}.ic-actions,.ov-actions{display:flex;gap:8px}.ic-actions button,.ov-actions button{flex:1}button.ghost{padding:14px;border-radius:14px;border:1px solid rgba(255,255,255,.28);background:#ffffff0f;color:#fff;font:inherit;font-weight:800;font-size:15px}.toast{position:fixed;left:50%;top:calc(var(--safe-top) + 70px);z-index:50;max-width:min(88vw,360px);padding:10px 14px;border-radius:14px;background:#141a42eb;border:1px solid rgba(255,255,255,.2);font-size:14px;font-weight:700;text-align:center;transform:translate(-50%,-12px);opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease}.toast.show{opacity:1;transform:translate(-50%)}.beacon-btn{width:100%;margin-bottom:8px;padding:13px;border-radius:14px;border:0;font:inherit;font-size:16px;font-weight:900;color:#2a1400;background:linear-gradient(180deg,#ffd27a,#ff8a3d);box-shadow:0 6px 22px #ff8a3d73}.beacon-btn:disabled{opacity:.85}.rescue-line{margin:-4px 0 12px;font-size:13.5px;font-weight:700}.rescue-line.ok{color:var(--green)}.rescue-line.fail{color:#ff9aa9}.rescue-card{margin:12px 12px 0;padding:14px;border-radius:18px;background:linear-gradient(180deg,#3c1a14eb,#1e1028f0);border:1.5px solid #ff8a3d;box-shadow:0 0 26px #ff8a3d66}.rc-head{display:flex;align-items:center;gap:8px;font-size:17px;margin-bottom:6px}.rc-sos{font-size:11px;font-weight:900;padding:3px 7px;border-radius:6px;background:#ff8a3d;color:#2a1400;animation:pulse .9s ease-in-out infinite}.rc-sub{font-size:13px;color:#ffe1cc;margin-bottom:10px}.rescue-card .loot-list{justify-content:flex-start;margin:0 0 12px}button.rescue-go{background:linear-gradient(180deg,#ffd27a,#ff8a3d);color:#2a1400}.chronicle li.item-id{color:var(--muted);font-size:11px;font-family:ui-monospace,Menlo,monospace}.chronicle li.item-id:before{display:none}.stash-line.error{color:#ff9aa9;font-weight:700}
