:root{--bg: #10160f;--panel: rgba(18, 26, 18, .92);--line: rgba(255, 255, 255, .14);--text: #eef3ea;--muted: #9aa896;--accent: #7bc96f;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:ui-rounded,SF Pro Rounded,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overscroll-behavior:none;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}.hidden{display:none!important}#hud{position:fixed;inset:0;pointer-events:none}#minimap{position:absolute;top:calc(12px + var(--safe-top));right:calc(12px + var(--safe-right));border-radius:50%;border:2px solid rgba(255,255,255,.25);background:#0a120a73;backdrop-filter:blur(2px)}.stick{position:absolute;width:132px;height:132px;margin:-66px 0 0 -66px;border-radius:50%;border:2px solid rgba(255,255,255,.3);background:#ffffff14;transition:opacity .15s ease}.stick-knob{position:absolute;left:50%;top:50%;width:58px;height:58px;margin:-29px 0 0 -29px;border-radius:50%;background:#ffffff8c;border:2px solid rgba(255,255,255,.8)}.chat{position:absolute;top:calc(10px + var(--safe-top));left:calc(10px + var(--safe-left));width:min(340px,46vw);display:flex;flex-direction:column;gap:6px;align-items:flex-start}.chat-toggle{width:36px;height:36px;flex:none;border-radius:50%;border:1px solid var(--line);background:#0006;font-size:16px;line-height:1;padding:0;pointer-events:auto;position:relative}.chat-toggle.unread:after{content:"";position:absolute;top:1px;right:1px;width:9px;height:9px;border-radius:50%;background:var(--accent);border:1.5px solid rgba(0,0,0,.55)}.chat-log{display:flex;flex-direction:column;gap:3px;width:fit-content;max-width:100%;max-height:34vh;overflow:hidden;border-radius:10px;padding:5px 8px;background:#0a100a57;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);pointer-events:none}.chat-log:empty{display:none}.chat.open .chat-log{width:100%;overflow-y:auto;pointer-events:auto;padding:7px 9px;background:#0a100ab8;border:1px solid var(--line);-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.28) transparent}.chat.open .chat-log::-webkit-scrollbar{width:8px}.chat.open .chat-log::-webkit-scrollbar-track{background:transparent}.chat.open .chat-log::-webkit-scrollbar-thumb{background:#ffffff38;border-radius:999px}.chat.open .chat-log::-webkit-scrollbar-thumb:hover{background:#ffffff61}.chat-line{font-size:12.5px;line-height:1.35;color:#eaf1e6;text-shadow:0 1px 2px rgba(0,0,0,.9);word-wrap:break-word;transition:opacity .6s ease;padding-left:11px;text-indent:-11px}.chat-mark{color:var(--muted)}.chat.open .chat-line{text-shadow:none}.chat:not(.open) .chat-line.beyond{display:none}.chat-line.dim{opacity:.62}.chat.open .chat-line.dim{opacity:1}.chat-line.system{color:#a9c69c;font-style:italic}.chat-name{font-weight:600}.chat-form{display:flex;gap:6px;width:100%;pointer-events:auto}.chat-form input{flex:1;min-width:0;padding:8px 10px;border-radius:9px;border:1px solid var(--line);background:#080e08eb;color:var(--text);font-family:inherit;font-size:16px;user-select:text;-webkit-user-select:text}.chat-form button{padding:8px 12px;border-radius:9px;border:none;background:var(--accent);color:#10200c;font:600 14px/1 inherit;font-family:inherit}.debug{position:absolute;bottom:calc(12px + var(--safe-bottom));left:calc(12px + var(--safe-left));padding:8px 10px;border-radius:10px;background:#00000080;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre;color:#cfe6c8}.debug-toggle{position:absolute;bottom:calc(12px + var(--safe-bottom));right:calc(12px + var(--safe-right));width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#00000059;color:var(--muted);font:italic 600 15px/1 serif;pointer-events:auto}.bombs{position:absolute;bottom:calc(56px + var(--safe-bottom));right:calc(12px + var(--safe-right));display:flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid rgba(255,226,150,.55);background:linear-gradient(180deg,#7e580cf2,#4e3406f2);color:#ffeec2;font:700 15px/1 inherit;pointer-events:auto;box-shadow:0 0 18px #ffbe3c59;animation:effect-in .26s cubic-bezier(.2,1.4,.4,1) both}.bombs:active{transform:scale(.94)}.bombs-count{font-size:18px;font-variant-numeric:tabular-nums}.bombs-hint{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;opacity:.75}@media(prefers-reduced-motion:reduce){.bombs{animation:none}}.topcenter{position:fixed;top:calc(10px + var(--safe-top));left:50%;transform:translate(-50%);z-index:26;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;max-width:calc(100vw - 24px)}.mission{min-width:250px;padding:8px 14px 10px;border-radius:14px;background:#0a100abd;border:1px solid var(--line);text-align:center}.mission-head{display:flex;align-items:baseline;justify-content:center;gap:12px}.mission-name{font-size:14px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.mission-timer{font:600 19px/1 ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-numeric:tabular-nums;color:#ffe9a8}.mission-timer.urgent{color:#ff9b7a}.mission-progress{margin-top:2px;font-size:12px;color:var(--muted)}.mission-teams{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:5px;font-size:21px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}.mission-teams .team-score{padding:1px 9px;border-radius:7px;background:#00000047}.mission-teams .team-score.mine{box-shadow:inset 0 0 0 2px currentColor}.mission-teams .team-dash{color:var(--muted);font-size:15px;font-weight:500}.mission-scores{list-style:none;margin:7px 0 0;padding:0;display:flex;justify-content:center;gap:12px;font-size:12.5px}.mission-scores li{display:flex;align-items:center;gap:4px}.mission-scores .rank{color:var(--muted);font-size:11px}.mission-scores .who{font-weight:600}.mission-scores .score{font-variant-numeric:tabular-nums}.mission-result{position:relative;padding:10px 22px;border-radius:999px;background:linear-gradient(180deg,#f0c85af2,#d6a030f2);color:#241a03;font-size:18px;font-weight:700;text-align:center;box-shadow:0 6px 20px #00000059}.mission-result.win{display:flex;align-items:center;gap:10px;padding:12px 26px;font-size:21px;overflow:hidden;border:2px solid rgba(255,244,205,.85);box-shadow:0 8px 30px #00000073,0 0 26px #ffcd5a8c;animation:result-pop .62s cubic-bezier(.2,1.5,.35,1) both}.mission-result.win:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.6) 50%,transparent 65%);transform:translate(-100%);animation:result-shine 2.2s ease-in-out .4s infinite}.mission-result .trophy{font-size:24px;animation:trophy-wobble .9s ease-in-out .5s 3}.mission-result .winner{text-shadow:0 1px 0 rgba(255,255,255,.45)}.mission-result .points{font-variant-numeric:tabular-nums}@keyframes result-pop{0%{opacity:0;transform:scale(.4) translateY(-14px)}60%{opacity:1;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes result-shine{0%{transform:translate(-100%)}55%,to{transform:translate(100%)}}@keyframes trophy-wobble{0%,to{transform:rotate(0) scale(1)}25%{transform:rotate(-16deg) scale(1.15)}75%{transform:rotate(16deg) scale(1.15)}}@media(prefers-reduced-motion:reduce){.mission-result.win,.mission-result.win:after,.mission-result .trophy{animation:none}.mission-result.win:after{display:none}}.countdown{position:fixed;top:28%;left:50%;transform:translate(-50%,-50%);z-index:25;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}.countdown-label{font-size:14px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:#ffe9a8;text-shadow:0 2px 10px rgba(0,0,0,.85)}.countdown-value{position:relative;font:800 88px/1 ui-rounded,SF Pro Rounded,-apple-system,sans-serif;font-variant-numeric:tabular-nums;color:#fff8e6;text-shadow:0 0 16px rgba(255,205,100,.9),0 0 52px rgba(255,150,40,.65),0 4px 14px rgba(0,0,0,.75);transition:color .3s ease}.countdown-value:before{content:"";position:absolute;top:50%;left:50%;width:150px;height:150px;margin:-75px 0 0 -75px;border-radius:50%;border:2px solid rgba(255,210,120,.85);opacity:0}.countdown.soon .countdown-value{color:#ffd88a}.countdown.final .countdown-value{font-size:150px;color:#fff;text-shadow:0 0 22px rgba(255,120,60,.95),0 0 70px rgba(255,60,20,.7),0 4px 18px rgba(0,0,0,.8)}.countdown.final .countdown-label{color:#ffb08a}.countdown-value.pop{animation:countdown-pop .64s cubic-bezier(.15,1.5,.4,1) both}.countdown-value.pop:before{animation:countdown-ring .64s ease-out both}@keyframes countdown-pop{0%{transform:scale(1.75);opacity:.15}40%{transform:scale(.94);opacity:1}to{transform:scale(1);opacity:1}}@keyframes countdown-ring{0%{transform:scale(.35);opacity:.9}to{transform:scale(1.9);opacity:0}}@media(prefers-reduced-motion:reduce){.countdown-value.pop,.countdown-value.pop:before{animation:none}}.confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:24}.connection{padding:7px 15px;border-radius:999px;background:#b43c28eb;font-size:13px;max-width:100%;text-align:center;transition:opacity .4s ease}.connection.fading{opacity:0}.effect{display:flex;align-items:center;gap:7px;padding:6px 14px;border-radius:999px;font-size:14px;font-weight:700;border:1px solid rgba(255,255,255,.25);animation:effect-in .26s cubic-bezier(.2,1.4,.4,1) both}.effect .left{font-variant-numeric:tabular-nums;opacity:.85}.effect.slow{background:#a82216f0;color:#ffe4de}.effect.boost{background:#186aa8f0;color:#dff0ff}.effect.stun{background:#7a4408f5;color:#ffe6b0;border-color:#ffc85a99}.effect.swamp{background:#344a26f0;color:#dfeec8}.effect.ending{animation:effect-blink .7s steps(2,end) infinite}@keyframes effect-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes effect-blink{0%,to{opacity:1}50%{opacity:.45}}@media(prefers-reduced-motion:reduce){.effect,.effect.ending{animation:none}}.flash{position:fixed;inset:0;pointer-events:none;z-index:30;opacity:0;background:radial-gradient(circle at 50% 55%,rgba(255,244,205,.15) 0%,rgba(255,214,120,.5) 40%,rgba(255,190,70,.12) 72%,transparent 100%)}.flash.on{animation:pickup-flash .34s ease-out}.flash.slow{background:radial-gradient(circle at 50% 55%,rgba(255,120,96,.12) 0%,rgba(214,40,24,.55) 40%,rgba(150,20,10,.14) 72%,transparent 100%);animation-duration:.52s}.flash.boost{background:radial-gradient(circle at 50% 55%,rgba(190,234,255,.14) 0%,rgba(58,168,255,.5) 40%,rgba(30,110,210,.12) 72%,transparent 100%);animation-duration:.52s}.flash.boom{background:radial-gradient(circle at 50% 55%,rgba(255,250,235,.85) 0%,rgba(255,168,40,.7) 38%,rgba(190,70,10,.3) 74%,transparent 100%);animation-duration:.62s}@keyframes pickup-flash{0%{opacity:0}14%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){.flash.on{animation-duration:.12s}}.screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(16px + var(--safe-top)) calc(16px + var(--safe-right)) calc(16px + var(--safe-bottom)) calc(16px + var(--safe-left));background:radial-gradient(circle at 50% 30%,#24361f,#0d120c 70%);z-index:10;overflow-y:auto}.lobby-inner{width:min(560px,100%);background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:22px;text-align:center}h1{margin:0 0 4px;font-size:30px;letter-spacing:.5px}.tagline{margin:0 0 16px;color:var(--muted);font-size:14px}.preview{width:100%;height:190px;display:block;border-radius:14px;background:linear-gradient(180deg,#2b3f26,#16200f);margin-bottom:16px}.field{display:block;text-align:left;margin-bottom:16px}.field>span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:7px}#name-input,#code-input{width:100%;padding:11px 13px;border-radius:11px;border:1px solid var(--line);background:#0000004d;color:var(--text);font-size:16px;font-family:inherit;user-select:text;-webkit-user-select:text}#code-input{text-transform:uppercase;letter-spacing:.12em}.character-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(94px,1fr));gap:8px}.character-list button{padding:11px 6px;border-radius:11px;border:1px solid var(--line);background:#ffffff0d;color:var(--text);font:inherit;font-size:13px}.character-list button[aria-pressed=true]{border-color:var(--accent);background:#7bc96f2e}.color-list{display:flex;flex-wrap:wrap;gap:10px}.color-list button{width:42px;height:42px;border-radius:50%;border:3px solid transparent;padding:0}.color-list button[aria-pressed=true]{border-color:#fff;box-shadow:0 0 0 2px #0006}.join{width:100%;padding:15px;border-radius:13px;border:none;background:var(--accent);color:#10200c;font:600 17px/1 inherit;font-family:inherit}.join:disabled{opacity:.5}.status{min-height:18px;margin:10px 0 0;font-size:13px;color:#ff9c8a}.loading-inner{text-align:center;color:var(--muted)}.spinner{width:34px;height:34px;margin:0 auto 14px;border:3px solid rgba(255,255,255,.15);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}
