:root{--bg-0: #070b16;--bg-1: #0e1626;--surface: rgba(20, 28, 47, .72);--surface-solid: #131b2e;--surface-2: #1b2438;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--fg: #eef2ff;--muted: #93a1bd;--accent: #3b82f6;--accent-2: #22d3ee;--accent-grad: linear-gradient(135deg, #3b82f6, #22d3ee);--danger: #ef4444;--gold: #fbbf24;--silver: #cbd5e1;--bronze: #d98a5a;--shadow: 0 14px 40px rgba(0, 0, 0, .5);--shadow-sm: 0 4px 14px rgba(0, 0, 0, .35);--radius: 18px;--radius-sm: 11px;color-scheme:dark}*{box-sizing:border-box}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:rgba(59,130,246,.55) transparent}}::-webkit-scrollbar{width:9px;height:9px;background:transparent}::-webkit-scrollbar-track{background:transparent;margin-block:6px;margin-inline:6px}::-webkit-scrollbar-thumb{background-image:var(--accent-grad);background-clip:padding-box;border:2px solid transparent;border-radius:999px}::-webkit-scrollbar-thumb:hover{background-image:linear-gradient(135deg,#549bfb,#4fe0f5);background-clip:padding-box}::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-button{display:none;width:0;height:0}html,body,#root{margin:0;height:100%;height:100dvh;color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden;-webkit-font-smoothing:antialiased}html.ios-fs-nudge,html.ios-fs-nudge body,html.ios-fs-nudge #root{height:100lvh;overflow:auto}body{background:radial-gradient(1100px 700px at 12% -10%,rgba(59,130,246,.2),transparent 55%),radial-gradient(1000px 700px at 95% 110%,rgba(34,211,238,.14),transparent 55%),linear-gradient(180deg,var(--bg-1),var(--bg-0))}h1,h2,h3{margin:0;letter-spacing:-.02em}p{margin:0}.center{height:100dvh;display:grid;align-content:safe center;justify-content:center;gap:1rem;text-align:center;padding:1.25rem;color:var(--muted);overflow-y:auto;-webkit-overflow-scrolling:touch}.card{background:var(--surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.6rem 1.5rem;width:min(93vw,400px);display:flex;flex-direction:column;align-items:stretch;gap:.85rem;text-align:center;color:var(--fg);position:relative;animation:rise .35s ease both;max-height:100%;overflow-y:auto}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.install-banner{background:var(--surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1.1rem;width:min(93vw,400px);display:flex;flex-direction:column;align-items:center;gap:.6rem;text-align:center;color:var(--fg);animation:rise .35s ease both}.install-banner p{color:var(--muted);font-size:.9rem}.install-steps{margin:0;padding:0 0 0 1.1rem;text-align:left;color:var(--muted);font-size:.9rem;display:flex;flex-direction:column;gap:.35rem}.install-banner-actions{display:flex;gap:.6rem}.install-banner-actions button{min-height:38px;padding:.5rem 1rem}h1{font-size:clamp(1.9rem,6vw,2.4rem);font-weight:800;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;color:transparent}.tagline{color:var(--muted);margin-top:-.35rem;font-size:.95rem}button{font:inherit;font-weight:600;padding:.7rem 1.1rem;min-height:46px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--fg);cursor:pointer;transition:transform .12s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}button:hover:not(:disabled){border-color:#ffffff52;transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)}button:focus-visible{outline:none;box-shadow:0 0 0 3px #3b82f68c}button.primary{background-image:var(--accent-grad);border-color:transparent;color:#04121f;font-weight:700;box-shadow:0 8px 22px #2284ee59}button.primary:hover:not(:disabled){box-shadow:0 12px 28px #2284ee73}button.danger{background:#ef444429;border-color:#ef444466;color:#fecaca}button.danger:hover:not(:disabled){background:#ef444442}button:disabled{opacity:.5;cursor:not-allowed}.link{background:none;border:none;color:var(--accent-2);padding:.25rem .35rem;min-height:0;font-weight:600;cursor:pointer}.link:hover{text-decoration:underline;transform:none}input,select{font:inherit;color:var(--fg);background:#080c16b3;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.65rem .85rem}input:focus-visible,select:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #3b82f64d}input:disabled,select:disabled{opacity:.5;cursor:not-allowed}.card input,.card select{width:100%}input[type=range]{padding:0;accent-color:var(--accent-2)}.err{color:#fca5a5}.hint{color:var(--muted);font-size:.9rem}.muted{color:var(--muted)}.game{position:relative;height:100dvh;width:100%}.pano-wrap{position:absolute;inset:0}.rotate-lock{display:none;position:fixed;inset:0;z-index:9999;background:#05070d;color:var(--fg);flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center;padding:2rem;font-weight:700;font-size:1.1rem}@media(orientation:portrait)and (max-width:900px)and (pointer:coarse)and (hover:none){.rotate-lock:not(.dismissed){display:flex}}.rotate-lock-ignore{background:none;border:none;color:var(--muted);font-weight:600;font-size:.9rem;text-decoration:underline;padding:.5rem}.reconnect-banner{position:fixed;top:max(5.4rem,calc(env(safe-area-inset-top) + 5.4rem));left:50%;transform:translate(-50%);z-index:60;background:#040812d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border-strong);color:var(--fg);font-weight:700;font-size:.85rem;padding:.45rem 1rem;border-radius:999px;box-shadow:var(--shadow-sm);pointer-events:none;animation:reconnect-pulse 1.6s ease-in-out infinite}@keyframes reconnect-pulse{0%,to{opacity:1}50%{opacity:.55}}@media(prefers-reduced-motion:reduce){.reconnect-banner{animation:none}}.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:1.25rem;background:#040812b8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:modal-fade .15s ease both;pointer-events:auto}@keyframes modal-fade{0%{opacity:0}}.modal-card{background:var(--surface-solid);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem;width:min(92vw,380px);display:flex;flex-direction:column;gap:.7rem;text-align:center}.modal-actions{display:flex;gap:.6rem;margin-top:.4rem}.modal-actions button{flex:1}.low-time-border{position:absolute;inset:0;z-index:20;pointer-events:none;box-shadow:inset 0 0 0 6px #dc2626e6;animation:low-time-flash 1s ease-in-out infinite}@keyframes low-time-flash{0%,to{opacity:1}50%{opacity:.25}}@media(prefers-reduced-motion:reduce){.low-time-border{animation:none}}.pano{position:absolute;inset:0;width:100%;height:100%}.map,.pano{width:100%;height:100%}.tunnel-vision{position:absolute;inset:0;z-index:9;pointer-events:none;background:radial-gradient(circle at 50% 50%,transparent 0,transparent 16vmin,rgba(2,4,10,.6) 26vmin,rgba(2,4,10,.98) 38vmin)}.topbar{position:absolute;top:0;left:0;right:0;z-index:15;padding-top:max(.6rem,env(safe-area-inset-top));padding-left:.85rem;padding-right:max(.85rem,env(safe-area-inset-right));padding-bottom:.7rem;background:linear-gradient(to bottom,rgba(4,8,18,.7),transparent);pointer-events:none}.topbar-group{display:flex;align-items:center;gap:.35rem}.brand{font-weight:700;letter-spacing:.01em;background:#04081280;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:.3rem .7rem;border-radius:999px;border:1px solid var(--border)}.topbar.spread{display:flex;justify-content:space-between;align-items:center}.fullscreen-btn,.abandon-btn,.back-btn{z-index:30;width:2.2rem;height:2.2rem;min-height:0;padding:0;display:grid;place-items:center;font-size:1.1rem;line-height:1;border-radius:999px;background:#04081280;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);color:var(--fg)}.fullscreen-btn,.abandon-btn{position:fixed;top:max(.7rem,env(safe-area-inset-top))}.fullscreen-btn{right:max(.7rem,env(safe-area-inset-right))}.abandon-btn{left:max(.7rem,env(safe-area-inset-left));color:var(--danger)}.back-btn{position:absolute;top:.9rem;left:.9rem}.icon-pill{display:grid;place-items:center;pointer-events:auto;min-height:0;height:34px}.icon-pill.abandon-icon{color:var(--danger)}.timer{font-variant-numeric:tabular-nums;font-weight:800;color:var(--fg);background:#0408128c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);padding:.3rem .8rem;border-radius:999px}.guesspanel{position:absolute;left:0;right:0;bottom:0;z-index:10}.panel-toggle{position:absolute;left:max(.85rem,env(safe-area-inset-left));bottom:max(1rem,env(safe-area-inset-bottom));z-index:11;border-radius:999px;padding:.55rem 1.2rem}.map-wrap{height:0;overflow:hidden;border-radius:var(--radius);box-shadow:var(--shadow-sm)}.guesspanel.open{inset:0}.guesspanel.open .map-wrap{position:absolute;inset:0;height:100%;border-radius:0}.submit-float{position:absolute;right:max(.85rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));z-index:11;white-space:nowrap}.join-row{display:flex;gap:.5rem;align-items:center}.join-row input{min-width:0;flex:1;text-transform:uppercase;letter-spacing:.25em;text-align:center;font-weight:700}.code{font-family:ui-monospace,SF Mono,monospace;letter-spacing:.28em;font-weight:800;font-size:1.35rem;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;color:transparent;padding-left:.28em}.players{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.players li{display:flex;align-items:center;gap:.55rem;background:#080c1680;border:1px solid var(--border);padding:.5rem .8rem;border-radius:999px;text-align:left}.tag{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;background:var(--accent-grad);color:#04121f;padding:.1rem .45rem;border-radius:999px;margin-left:auto}.setup{display:flex;flex-direction:column;gap:.75rem;text-align:left}.section-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:#080c1666;overflow:hidden}.section-card-header{padding:.4rem .85rem;background:linear-gradient(135deg,#3b82f638,#22d3ee38);border-bottom:1px solid rgba(34,211,238,.25);color:#dff3ff;font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.section-card-body{display:flex;flex-direction:column;gap:.3rem;text-align:left;padding:.6rem .85rem}.check{position:relative;display:flex;align-items:center;gap:.55rem;padding:.2rem 0;cursor:pointer;-webkit-tap-highlight-color:transparent}.check:has(input:disabled){opacity:.5;cursor:not-allowed}.check:has(input:disabled) .box{cursor:not-allowed}.check input[type=checkbox]{position:absolute;inset:0;width:1.3rem;height:1.3rem;margin:0;opacity:0;cursor:pointer}.check .box{flex:0 0 auto;width:1.3rem;height:1.3rem;border-radius:7px;border:1px solid var(--border-strong);background:#080c16b3;display:grid;place-items:center;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .12s ease}.check:hover .box{border-color:#ffffff52}.check:active .box{transform:scale(.92)}.check input:focus-visible~.box{outline:none;box-shadow:0 0 0 3px #3b82f68c}.check input:checked~.box{background-image:var(--accent-grad);border-color:transparent;box-shadow:0 4px 14px #2284ee59}.check .box:after{content:"";width:.34rem;height:.62rem;border:solid #04121f;border-width:0 .16rem .16rem 0;transform:rotate(45deg) scale(0);transition:transform .15s cubic-bezier(.34,1.56,.64,1);margin-top:-.1rem}.check input:checked~.box:after{transform:rotate(45deg) scale(1)}.check.selectall{border-bottom:1px solid var(--border);margin-bottom:.35rem;padding-bottom:.4rem;font-weight:600}.check-options{display:flex;flex-wrap:wrap;gap:.2rem 1.1rem}.matchcount{color:var(--accent-2);font-weight:600;margin:0}.field{display:flex;flex-direction:column;gap:.3rem;text-align:left}.field input[type=number]{width:100px}.round-timer{display:flex;align-items:flex-end;flex-wrap:wrap;gap:.5rem 1.2rem}.reveal-screen{height:100dvh;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto}@media(min-width:900px),(orientation:landscape){.reveal-screen{grid-template-columns:1fr clamp(240px,30vw,360px);grid-template-rows:1fr}.reveal-side{border-top:none;border-left:1px solid var(--border)}}.reveal-map{min-height:0}.reveal-map .map{height:100%;width:100%}.reveal-side{padding:1rem 1.1rem max(1rem,env(safe-area-inset-bottom));background:var(--surface-solid);border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.75rem;overflow:auto}.standings{list-style:none;padding:0;margin:0;counter-reset:rank;display:flex;flex-direction:column;gap:.4rem}.standings li{counter-increment:rank;display:grid;grid-template-columns:1.6rem 1fr auto;align-items:center;gap:.7rem;padding:.55rem .75rem;background:#080c1680;border:1px solid var(--border);border-radius:var(--radius-sm);text-align:left}.standings li:before{content:counter(rank);display:grid;place-items:center;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--surface-2);color:var(--muted);font-weight:700;font-size:.85rem}.standings li:nth-child(1):before{background:var(--gold);color:#3a2a05}.standings li:nth-child(2):before{background:var(--silver);color:#1e293b}.standings li:nth-child(3):before{background:var(--bronze);color:#2a1608}.standings li.you{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.standings li span:last-child{font-weight:700;font-variant-numeric:tabular-nums}.standings.wide li{grid-template-columns:1.6rem auto 1fr auto}.round-results{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.round-results li{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:.6rem;padding:.5rem .75rem;background:#080c1680;border:1px solid var(--border);border-radius:var(--radius-sm);text-align:left}.round-results li.you{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.rr-name{display:flex;align-items:center;gap:.4rem;min-width:0;font-weight:600;overflow:hidden}.rr-name-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rr-team-pill{flex:0 0 auto;font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.45);padding:.1rem .45rem;border-radius:999px;white-space:nowrap}.rr-distance{color:var(--muted);font-size:.85rem;white-space:nowrap}.guess-pin{width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 4px #0009}.guess-pin.mine{width:18px;height:18px}.avatar-sm{width:30px;height:30px;border-radius:50%;object-fit:cover;vertical-align:middle;background:var(--surface-2);border:1px solid var(--border)}.placeholder{display:inline-grid;place-items:center;color:var(--muted);font-weight:800}.modeselect{display:grid;grid-template-columns:1fr 1fr;gap:.35rem}.modeselect button{min-height:40px;padding:.45rem .5rem;font-size:.9rem}.modeselect button.active{background-image:var(--accent-grad);border-color:transparent;color:#04121f}.mode-summary{display:flex;flex-direction:column;align-items:center;gap:.45rem}.mode-badges{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:center}.tag.mode{background:var(--accent-grad)}.tag.mode-big{background:var(--accent-grad);font-size:.85rem;padding:.35rem 1rem;margin-left:0}.tag.mod{background:var(--surface-2);color:var(--fg);margin-left:0}.teampanel{display:flex;flex-direction:column;gap:.6rem}.teams-grid{display:grid;grid-template-columns:repeat(2,minmax(130px,1fr));gap:.5rem}.team-col{border:1px solid var(--border);border-top-width:3px;border-radius:var(--radius-sm);padding:.5rem;background:#080c1666;display:flex;flex-direction:column;gap:.4rem}.team-col.full-span{grid-column:1 / -1}.team-col.mine{border-color:var(--team-color, var(--accent));box-shadow:0 0 0 1px var(--team-color, var(--accent)) inset}.team-head{display:flex;align-items:center;gap:.3rem}.team-head input{flex:1;padding:.3rem .45rem;font-weight:700}.team-members{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem;min-height:1.5rem}.team-members li{display:flex;align-items:center;gap:.35rem;font-size:.9rem}.pano-error{position:absolute;inset:0;z-index:7;background:#05070d;display:grid;place-items:center;gap:.9rem;color:var(--fg);text-align:center;padding:1rem}.flash-cover{position:absolute;inset:0;z-index:6;background:#05070d;display:grid;place-items:center;color:var(--fg);font-weight:700;font-size:1.1rem;text-align:center;padding:1rem}.dmg-popup{position:absolute;top:4.5rem;left:50%;transform:translate(-50%);z-index:15;padding:.6rem 1.1rem;border-radius:999px;background:linear-gradient(180deg,#b91c1c,#7f1d1d);color:#fff;font-weight:800;font-size:1.05rem;letter-spacing:.01em;box-shadow:0 6px 24px #b91c1c80;white-space:nowrap;pointer-events:none;animation:dmg-popup 4s ease forwards}@keyframes dmg-popup{0%{opacity:0;transform:translate(-50%,-12px) scale(.9)}10%{opacity:1;transform:translate(-50%) scale(1)}85%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-8px) scale(1)}}@media(prefers-reduced-motion:reduce){.dmg-popup{animation:none}}.hp-overlay{position:absolute;top:3.6rem;left:.6rem;z-index:15;display:flex;flex-direction:column;gap:.25rem;padding:.45rem .55rem;max-width:46vw;width:15rem;border-radius:.7rem;background:#05070d9e;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:.82rem;pointer-events:none}.hp-row{display:flex;align-items:center;gap:.45rem}.hp-row.out{opacity:.5}.hp-row.mine .hp-name{font-weight:800;color:var(--accent, #4aa3ff)}.hp-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff}.hp-mini{flex:0 0 3.6rem;height:.42rem;border-radius:999px;background:#ffffff29;overflow:hidden}.hp-mini-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#22c55e,#86efac);transition:width .4s ease}.hp-num{flex:0 0 auto;min-width:2.4rem;text-align:right;font-variant-numeric:tabular-nums;color:#fff}.guesspanel.spectating{text-align:center}.spectate-note{margin:0;font-weight:700;color:var(--fg);position:absolute;top:max(4.5rem,calc(env(safe-area-inset-top) + 4rem));left:50%;transform:translate(-50%);z-index:11;white-space:nowrap;background:#0408128c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);padding:.4rem .9rem;border-radius:999px}.team-bars{display:flex;flex-direction:column;gap:.6rem}.team-bar{position:relative;display:flex;flex-direction:column;gap:.2rem}.team-bar.out{opacity:.5}.team-bar-head{display:flex;justify-content:space-between;align-items:baseline}.team-bar-head strong{display:inline-flex;align-items:center;gap:.4rem}.team-dot{width:.6rem;height:.6rem;border-radius:50%;flex:0 0 auto}.hpbar{position:relative;height:10px;border-radius:999px;background:#ffffff1a;overflow:hidden}.hpghost,.hpfill{position:absolute;left:0;top:0;height:100%;border-radius:999px}.hpghost{z-index:1;background:#f87171;box-shadow:0 0 8px #f87171d9;transition:width .7s cubic-bezier(.4,0,.2,1) .15s}.hpfill{z-index:2;background:linear-gradient(90deg,#16a34a,#4ade80);transition:width .25s ease-out}.team-bar.hit .hpbar{animation:hp-shake .4s ease}@keyframes hp-shake{0%,to{transform:translate(0)}20%{transform:translate(-3px)}40%{transform:translate(3px)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}.dmg-float{position:absolute;right:.25rem;top:1.6rem;color:#fca5a5;font-weight:800;font-size:.98rem;text-shadow:0 1px 4px rgba(0,0,0,.7);pointer-events:none;animation:dmg-float 1.1s ease-out forwards}@keyframes dmg-float{0%{opacity:0;transform:translateY(4px) scale(.9)}15%{opacity:1;transform:translateY(0) scale(1.15)}40%{opacity:1;transform:translateY(-6px) scale(1)}to{opacity:0;transform:translateY(-24px) scale(1)}}@media(prefers-reduced-motion:reduce){.hpghost,.hpfill{transition:none}.team-bar.hit .hpbar{animation:none}.dmg-float{animation:none;opacity:1}}.elim{color:var(--gold);font-weight:600}.winner{font-size:1.15rem;font-weight:800;color:var(--accent-2)}.standings li.out{opacity:.5}.standings li.out span:first-of-type{text-decoration:line-through}.team-pin{width:22px;height:22px;border-radius:50%;background:#f59e0b;border:2px solid #fff;color:#3a2a05;font-weight:800;font-size:.72rem;display:grid;place-items:center;box-shadow:0 1px 5px #00000080}@media(prefers-reduced-motion:reduce){.card{animation:none}button{transition:none}}
