:root{--bg:#0b0b10;--fg:#f4f4f6;--muted:#9a9aa8;--accent:#ffc400;--ok:#00e676;--bad:#ff5252;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);margin:0}.app{max-width:1400px;margin:0 auto;padding:16px}.header h1{letter-spacing:.08em;margin:0;font-size:clamp(28px,5vw,44px)}.instruction{margin:4px 0;font-size:18px}.target{color:var(--muted);margin:0 0 16px}.pose-select{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0;display:flex}.pose-select-label{color:var(--muted);letter-spacing:.06em;font-weight:700}.pose-option{font:inherit;letter-spacing:.06em;color:var(--fg);cursor:pointer;background:#15151d;border:2px solid #3a3a48;border-radius:8px;padding:8px 16px;font-weight:700}.pose-option.active{border-color:var(--accent);background:var(--accent);color:#111}.hidden{display:none!important}.intro,.error{text-align:center;flex-direction:column;align-items:center;gap:16px;padding:48px 16px;display:flex}.big-button{font:inherit;letter-spacing:.08em;background:var(--accent);color:#111;cursor:pointer;border:none;border-radius:12px;padding:20px 48px;font-size:clamp(20px,3vw,28px);font-weight:800}.big-button.small{padding:12px 28px;font-size:18px}.big-button:disabled{opacity:.5;cursor:progress}.privacy{color:var(--muted);font-size:14px}.error p{color:var(--bad);white-space:pre-wrap;max-width:640px}.workspace{align-items:flex-start;gap:16px;display:flex}.reference{background:#15151d;border-radius:12px;flex:0 0 min(28%,340px);padding:8px}.reference img{border-radius:8px;width:100%;display:block}.reference p{color:var(--muted);margin:6px 2px 0;font-size:12px}@media (width<=800px){.workspace{flex-direction:column}.reference{flex-basis:auto;width:min(100%,340px)}}.viewer{flex:auto;min-width:0;position:relative}.stage{aspect-ratio:16/9;background:#000;border-radius:12px;width:100%;position:relative;overflow:hidden;transform:scaleX(-1)}.stage video,.stage canvas{object-fit:fill;width:100%;height:100%;position:absolute;inset:0}.hud{pointer-events:none;flex-direction:column;align-items:center;padding:12px;display:flex;position:absolute;inset:0}.hud-top{flex-wrap:wrap;align-self:stretch;gap:8px;display:flex}.chip{font-variant-numeric:tabular-nums;background:#0009;border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600}.chip[data-status=tracking]{color:var(--ok)}.chip[data-status=lost],.chip[data-status=no-person]{color:var(--bad)}.chip[data-state=MATCHING]{color:var(--accent)}.chip[data-state=CONFIRMED],.chip[data-state=WAITING_FOR_RELEASE]{color:var(--ok)}.status{text-align:center;background:#000000a6;border-radius:10px;margin-top:auto;padding:8px 20px;font-size:clamp(20px,3.5vw,34px);font-weight:800}.status.hold{color:var(--accent)}.status.matched{color:var(--ok)}.status.release{color:var(--muted)}.progress{background:#0009;border:2px solid #fff6;border-radius:999px;width:min(480px,80%);height:14px;margin-top:10px;overflow:hidden}.progress-fill{background:var(--accent);width:0;height:100%}.progress-fill[data-state=CONFIRMED]{background:var(--ok)}.matched-banner{letter-spacing:.06em;color:var(--ok);text-shadow:0 0 24px #00e676cc,0 4px #000;font-size:clamp(36px,8vw,88px);font-weight:900;animation:.35s ease-out pop;position:absolute;top:40%}@keyframes pop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.debug{background:#15151d;border-radius:10px;margin-top:12px;padding:8px 12px}.debug summary{cursor:pointer;color:var(--muted)}.debug pre{margin:8px 0 0;font-size:13px;line-height:1.45;overflow-x:auto}body[data-mode=game] .debug-only,body[data-mode=debug] .game-only{display:none!important}.title-row{align-items:baseline;gap:16px;display:flex}.mode-link{color:var(--muted);font-size:14px}body[data-mode=game] .workspace{align-items:stretch}body[data-mode=game] .viewer{flex:0 0 min(38%,520px);align-self:flex-start}body[data-mode=game] .hud .status,body[data-mode=game] .hud .progress,body[data-mode=game] .hud .matched-banner,body[data-mode=game] #state-chip,body[data-mode=game] #count-chip{display:none!important}.game-panel{background:#15151d;border-radius:12px;flex-direction:column;flex:auto;align-items:center;gap:10px;min-width:0;padding:16px;display:flex}.game-kicker{letter-spacing:.12em;color:var(--muted);margin:0;font-weight:800}.game-card{border-radius:12px;justify-content:center;width:100%;transition:transform .15s ease-out,box-shadow .15s ease-out;display:flex}.game-card img{object-fit:contain;background:#0b0b10;border-radius:10px;max-width:100%;height:min(56vh,560px);display:block}.game-card[data-phase=TARGET_CONFIRMED]{box-shadow:0 0 0 4px var(--ok), 0 0 32px #00e67699;transform:scale(1.03)}.game-card[data-phase=TRANSITION]{opacity:.6}.game-ref-fallback{text-align:center;border:2px dashed #3a3a48;border-radius:10px;justify-content:center;align-items:center;height:min(40vh,400px);padding:24px;font-size:clamp(20px,2.5vw,30px);font-weight:700;display:flex}.game-pose-name{letter-spacing:.08em;margin:0;font-size:clamp(28px,4vw,48px)}.game-progress{width:min(560px,90%);height:18px;margin-top:0}.progress-fill[data-phase=TARGET_CONFIRMED]{background:var(--ok)}.game-status{letter-spacing:.04em;font-size:clamp(24px,3.5vw,40px);font-weight:900}.game-status[data-phase=TARGET_MATCHING]{color:var(--accent)}.game-status[data-phase=TARGET_CONFIRMED]{color:var(--ok)}.game-status[data-phase=TRANSITION]{color:var(--muted)}.game-status[data-phase=PAUSED]{color:var(--bad)}.game-hint{min-height:1.4em;color:var(--muted);font-size:18px}.game-hits{font-variant-numeric:tabular-nums;letter-spacing:.06em;font-size:20px;font-weight:800}@media (width<=800px){body[data-mode=game] .viewer{flex-basis:auto;width:100%}}.arena{z-index:0;position:fixed;inset:0}.arena canvas{width:100%;height:100%;display:block}.arena-error{color:var(--muted);justify-content:center;align-items:center;display:flex}.arena-flash{z-index:1;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 55%,#ffdc8c8c,#ffdc8c00 60%);position:fixed;inset:0}.arena-flash.flash{animation:.28s ease-out arena-flash}@keyframes arena-flash{0%{opacity:1}to{opacity:0}}.combat-debug{z-index:3;pointer-events:none;background:#000000a6;border-radius:8px;margin:0;padding:8px 12px;font-size:12px;line-height:1.4;position:fixed;top:64px;right:12px}body[data-mode=game]{overflow:hidden}body[data-mode=game] .app{z-index:2;pointer-events:none;max-width:none;position:relative}body[data-mode=game] .app button,body[data-mode=game] .app a{pointer-events:auto}body[data-mode=game] .header h1{text-shadow:0 2px 8px #000;font-size:clamp(20px,2.4vw,30px)}body[data-mode=game] .instruction{text-shadow:0 2px 6px #000}body[data-mode=game] .intro,body[data-mode=game] .error{background:#0b0b10d1;border-radius:16px;max-width:560px;margin:12vh auto 0}body[data-mode=game] .game-panel{background:#0b0b10d1;gap:6px;width:min(300px,30vw);padding:12px;position:fixed;bottom:16px;left:16px}body[data-mode=game] .game-card img{height:min(30vh,300px)}body[data-mode=game] .game-ref-fallback{height:auto;min-height:120px;font-size:18px}body[data-mode=game] .game-pose-name,body[data-mode=game] .game-status{font-size:clamp(20px,2.2vw,30px)}body[data-mode=game] .game-hint{text-align:center;font-size:14px}body[data-mode=game] .game-hits{font-size:16px}body[data-mode=game] .viewer{border-radius:12px;width:min(300px,26vw);position:fixed;bottom:16px;right:16px;box-shadow:0 4px 24px #0009}body[data-mode=game] .hud{padding:6px}body[data-mode=game] .chip{font-size:11px}@media (width<=800px){body[data-mode=game] .game-panel{width:46vw}body[data-mode=game] .viewer{width:44vw}}.damage-flash{z-index:1;pointer-events:none;opacity:0;background:radial-gradient(circle,#78000000 45%,#96000a8c 100%);position:fixed;inset:0}.damage-flash.flash{animation:.35s ease-out arena-flash}.survival-bar{z-index:3;letter-spacing:.05em;font-variant-numeric:tabular-nums;pointer-events:none;background:#0b0b10c7;border-radius:12px;align-items:center;gap:18px;padding:8px 16px;font-weight:800;display:flex;position:fixed;top:12px;right:16px}.survival-bar.hit{animation:.3s ease-out bar-hit}@keyframes bar-hit{30%{transform:translate(4px)}60%{transform:translate(-3px)}}.health{align-items:center;gap:8px;display:flex}.health-label{color:var(--muted);font-size:13px}.health-track{background:#2a1418;border:1px solid #fff3;border-radius:999px;width:min(240px,22vw);height:14px;overflow:hidden}.health-fill{background:var(--ok);width:100%;height:100%;transition:width .2s ease-out}.health-fill[data-level=mid]{background:var(--accent)}.health-fill[data-level=low]{background:var(--bad)}.health-text{min-width:70px;font-size:13px}.stat{font-size:16px}.stat-muted{color:var(--muted)}.survival-banner{z-index:3;letter-spacing:.08em;text-shadow:0 4px 20px #000;pointer-events:none;white-space:nowrap;font-size:clamp(36px,6vw,72px);font-weight:900;position:fixed;top:26%;left:50%;transform:translate(-50%)}.survival-banner[data-kind=complete]{color:var(--ok)}.survival-banner[data-kind=paused]{color:var(--bad);font-size:clamp(28px,4.5vw,54px)}.center-panel{z-index:4;text-align:center;background:#0b0b10e0;border-radius:16px;flex-direction:column;align-items:center;gap:10px;width:min(440px,90vw);padding:24px;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-55%);box-shadow:0 8px 40px #0009}.center-panel h2{letter-spacing:.1em;margin:0}.center-panel p{margin:0}.panel-hint{color:var(--muted);font-size:14px}.gameover-title{color:var(--bad);font-size:clamp(32px,5vw,52px)}.gameover-line{font-variant-numeric:tabular-nums;font-size:22px;font-weight:800}.audio-controls{z-index:3;letter-spacing:.06em;color:var(--muted);background:#0b0b10b8;border-radius:10px;align-items:center;gap:12px;padding:6px 12px;font-size:11px;font-weight:700;display:flex;position:fixed;top:64px;right:16px}.audio-mute{font:inherit;color:var(--fg);cursor:pointer;background:0 0;border:1px solid #ffffff40;border-radius:6px;padding:3px 8px}.audio-mute.muted{color:var(--bad);border-color:var(--bad)}.audio-slider{align-items:center;gap:6px;display:flex}.audio-slider input{width:72px;accent-color:var(--accent)}.audio-controls.is-muted .audio-slider{opacity:.45}@media (width<=800px){.audio-slider input{width:48px}}
