@import"https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap";:root{--bg: #f5f5f4;--card: #ffffff;--text: #1c1917;--muted: #6b7280;--line: #e5e7eb;--primary: #b91c1c;--primary-text: #ffffff;--ok: #15803d;--warn: #b45309;--bad: #b91c1c;--team: #374151;font-family:system-ui,-apple-system,PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%}*{box-sizing:border-box}body{margin:0;background:var(--bg);line-height:1.5}h1,h2,h3{margin:0 0 .5em;line-height:1.25}h1{font-size:1.6rem}h2{font-size:1.3rem}h3{font-size:1.1rem}p{margin:.4em 0}a{color:var(--primary)}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.4em;min-height:48px;padding:0 18px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--text);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}button:disabled{opacity:.45;cursor:not-allowed}button.primary,.button.primary{background:var(--primary);color:var(--primary-text);border-color:var(--primary)}button.danger{background:var(--bad);color:#fff;border-color:var(--bad)}button.big{width:100%;min-height:56px;font-size:1.1rem;margin-top:8px}button.small{min-height:36px;padding:0 12px;font-size:.9rem}button.link{background:none;border:none;color:var(--primary);padding:0;min-height:40px;font-weight:500;text-decoration:underline}input,select,textarea{font:inherit;width:100%;min-height:44px;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:var(--text)}input[type=checkbox]{width:22px;height:22px;min-height:0;vertical-align:middle}label{display:block;margin:10px 0;font-weight:600}label>input,label>select,label>textarea{margin-top:4px;font-weight:400}label.check{display:flex;gap:10px;align-items:center;font-weight:500}.page{max-width:1100px;margin:0 auto;padding:16px}.page.narrow{max-width:520px}.center{text-align:center}.stack{display:flex;flex-direction:column;gap:10px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.row.end{justify-content:flex-end}.spread{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.muted{color:var(--muted)}.warn{color:var(--warn);font-weight:600}.bad{color:var(--bad);font-weight:600}.ok{color:var(--ok);font-weight:600}.mono{font-family:ui-monospace,Menlo,Consolas,monospace;letter-spacing:.08em}.num{font-variant-numeric:tabular-nums}.big-text{font-size:1.2rem}.card{background:var(--card);border-radius:14px;padding:16px;margin:12px 0;box-shadow:0 1px 2px #0000000f}details.card summary{cursor:pointer;font-weight:600;min-height:32px}.badge{display:inline-block;padding:2px 10px;border-radius:999px;color:#fff;font-weight:700;font-size:.9rem;text-shadow:0 1px 1px rgba(0,0,0,.25)}.banner{position:sticky;top:0;z-index:10;background:var(--warn);color:#fff;padding:10px 16px;text-align:center;font-weight:600}.qr{background:#fff;padding:8px;border-radius:8px;max-width:100%;height:auto}.pill{display:inline-block;padding:2px 10px;border-radius:999px;background:#e5e7eb;font-size:.85rem;font-weight:600}.pill.live,.pill.active{background:#dcfce7;color:#166534}.pill.locked,.pill.paused{background:#fef3c7;color:#92400e}.pill.revealed,.pill.closed{background:#e0e7ff;color:#3730a3}table{width:100%;border-collapse:collapse;font-size:.95rem}th,td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--muted);font-weight:600;font-size:.85rem}.table-wrap{overflow-x:auto}.tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:12px 0}.tabs button{border:none;border-bottom:3px solid transparent;border-radius:0;background:none;min-height:44px}.tabs button.on{border-bottom-color:var(--primary);color:var(--primary)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal-box{background:#fff;border-radius:14px;padding:20px;max-width:420px;width:100%}.modal-text{font-size:1.1rem;margin-bottom:16px;white-space:pre-line}.modal-box .row{justify-content:flex-end}.play{max-width:560px;margin:0 auto;padding:0 12px 40px}.play-head{display:flex;justify-content:space-between;align-items:center;padding:14px 4px;border-bottom:4px solid var(--team);margin-bottom:4px}.play-head .name{font-size:1.3rem;font-weight:800}.play-head .right{text-align:right;display:flex;flex-direction:column;gap:4px;align-items:flex-end}.play-head .table{font-weight:700}.card.win{border:3px solid #f59e0b;background:#fffbeb}.card.win.claimed{border-color:var(--line);background:#f9fafb}.waiting{padding:32px 16px}.game-head{display:flex;justify-content:space-between;align-items:center}.timer{font-size:2rem;font-weight:800;font-variant-numeric:tabular-nums;min-width:2.5ch;text-align:right}.timer.hot{color:var(--bad)}.question{font-size:1.35rem}.q-img{width:100%;border-radius:10px;margin-bottom:10px}.options{display:flex;flex-direction:column;gap:10px;margin:12px 0}.option{justify-content:flex-start;text-align:left;min-height:60px;padding:10px 14px;font-size:1.1rem;font-weight:600;border:2px solid var(--line);position:relative}.option:disabled{opacity:1;cursor:default}.option.chosen{border-color:var(--team);background:color-mix(in srgb,var(--team) 14%,white)}.option.correct{border-color:var(--ok);background:#dcfce7}.opt-key{display:inline-flex;width:32px;height:32px;border-radius:50%;background:#f3f4f6;align-items:center;justify-content:center;flex:none}.opt-text{flex:1}.opt-mark{color:var(--ok);font-size:.9rem}.opt-pct{color:var(--muted);font-variant-numeric:tabular-nums}.status-line{min-height:1.6em;font-weight:700;text-align:center;font-size:1.1rem}.groups{display:flex;flex-direction:column;gap:8px;margin-top:8px}.group-row{display:grid;grid-template-columns:minmax(70px,auto) 1fr 4ch;gap:8px;align-items:center}.group-row.mine .g-name{outline:2px solid var(--text);border-radius:999px}.bar{height:14px;background:#f3f4f6;border-radius:7px;overflow:hidden;display:block}.bar>span{display:block;height:100%;border-radius:7px;transition:width .6s ease}.scanner video{width:100%;max-height:50vh;border-radius:12px;background:#000;object-fit:cover}.result{border-radius:14px;padding:18px;margin:12px 0;color:#fff;text-align:center}.result.green{background:var(--ok)}.result.yellow{background:#ca8a04}.result.red{background:var(--bad)}.result .r-title{font-size:1.6rem;font-weight:800}.result .r-name{font-size:1.4rem;font-weight:700}.list-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.stage{min-height:100vh;background:#0b0b10;color:#fff;padding:3vh 4vw;display:flex;flex-direction:column}.stage h1{font-size:4.5vh}.stage .muted{color:#a1a1aa}.stage-top{display:flex;justify-content:space-between;align-items:baseline;font-size:2.4vh;color:#a1a1aa}.stage-main{flex:1;display:flex;flex-direction:column;justify-content:center}.stage-q{font-size:6vh;font-weight:800;margin:2vh 0;line-height:1.2}.stage-timer{font-size:12vh;font-weight:900;font-variant-numeric:tabular-nums;text-align:center}.stage-timer.hot{color:#f87171}.stage-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(38vw,1fr));gap:2vh 2vw}.stage-opt{background:#1f1f2a;border-radius:16px;padding:2.2vh 2vw;font-size:3.6vh;font-weight:700;position:relative;overflow:hidden}.stage-opt .fill{position:absolute;inset:0 auto 0 0;background:#ffffff1f;transition:width .8s ease}.stage-opt .content{position:relative;display:flex;justify-content:space-between;gap:1vw}.stage-opt.correct{outline:6px solid #22c55e}.stage-big{font-size:3vh}.stage-groups{display:flex;flex-direction:column;gap:2.5vh}.stage-group{display:grid;grid-template-columns:22vw 1fr 10vw;gap:2vw;align-items:center;font-size:4vh;font-weight:800}.stage-group .bar{height:5vh;border-radius:2.5vh;background:#1f1f2a}.stage-group .bar>span{border-radius:2.5vh}.stage-lists{display:grid;grid-template-columns:1fr 1fr;gap:4vw;margin-top:4vh;font-size:2.6vh}.stage-lists ol{margin:0;padding-left:1.4em}.stage-prize{font-size:7vh;font-weight:900;text-align:center;color:#fbbf24}.stage-winners{display:grid;grid-template-columns:repeat(auto-fit,minmax(22vw,1fr));gap:2vh 2vw;margin-top:4vh}.stage-winner{background:#1f1f2a;border-radius:16px;padding:2.5vh;text-align:center;font-size:4vh;font-weight:800;border-top:1vh solid var(--team, #fbbf24);animation:pop .5s ease both}.stage-winner .muted{font-size:2.4vh;font-weight:500}.stage-winner.forfeited{opacity:.35;text-decoration:line-through}.roll{font-size:9vh;font-weight:900;text-align:center;margin-top:6vh;color:#e5e7eb;letter-spacing:.1em}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.host-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px}@media (max-width: 900px){.host-grid{grid-template-columns:1fr}}.stat{display:inline-block;margin-right:18px}.stat b{font-size:1.4rem;display:block;font-variant-numeric:tabular-nums}.game-item{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px;border-radius:10px;border:1px solid var(--line);margin:6px 0}.game-item.current{border:2px solid var(--primary);background:#fef2f2}.preview{width:100%;aspect-ratio:16/9;border:0;border-radius:10px;background:#000}.kiosk-main{flex:1;display:flex;align-items:center;justify-content:center;gap:5vw;flex-wrap:wrap}.kiosk-qr{background:#fff;padding:2vh;border-radius:16px}.kiosk-qr .qr{width:min(60vh,80vw);height:auto;display:block}.kiosk-text{max-width:40vw;min-width:280px}.kiosk-text h1{font-size:6vh;margin:0 0 2vh}.kiosk-text ol{font-size:3.2vh;line-height:1.7;padding-left:1.2em}.kiosk-bar{height:10px;background:#27272a;border-radius:5px;overflow:hidden;margin:2vh 0 1vh}.kiosk-bar span{display:block;height:100%;background:#22c55e;transition:width .5s linear}.stage-here{color:#22c55e}.mc .big{width:100%;font-size:1.25rem;padding:18px}.md{display:grid;grid-template-columns:minmax(320px,1fr) minmax(380px,1.25fr);gap:16px;align-items:start}.md>.card{margin:0}.md-detail{position:sticky;top:8px;max-height:calc(100vh - 16px);overflow:auto}.md-scroll{max-height:calc(100vh - 260px);overflow:auto;padding-right:4px}@media (max-width: 860px){.md{grid-template-columns:1fr}.md-detail{position:static;max-height:none}.md-scroll{max-height:none}}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 8px}.chip{min-height:32px;padding:2px 12px;border-radius:999px;font-size:.9rem}.chip.on{background:var(--text);color:#fff;border-color:var(--text)}.pill.tbc{background:#fef3c7;color:#92400e}.clickable{cursor:pointer}.clickable:hover{background:#fafaf9}fieldset.plain{border:none;padding:0;margin:0;min-width:0}.sticky-actions{position:sticky;bottom:-16px;background:var(--card);padding:10px 0 4px;border-top:1px solid var(--line);margin-top:10px}.subtabs{display:flex;gap:6px;margin:4px 0 8px}tr.sel td{background:#fef9c3}.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:8px}.swatch{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:middle;margin-right:4px}.link-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:10px}.link-tile{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--text);background:#fafaf9}.link-tile:hover{border-color:var(--primary)}.link-tile .muted{font-size:.8rem}.staff-app{padding-bottom:76px}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:flex;background:#fff;border-top:1px solid var(--line);z-index:40;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav button{flex:1;border:none;border-radius:0;min-height:60px;font-size:1.05rem;background:#fff}.bottom-nav button.on{color:var(--primary);font-weight:700;box-shadow:inset 0 3px 0 var(--primary)}.px{--px-bg: #0d0b1e;--px-bg2: #16123a;--px-panel: #1d1846;--px-line: #e9e4ff;--px-ink: #000;--px-text: #f5f3ff;--px-muted: #a59fd0;--px-yellow: #f5c518;--px-green: #22c55e;--px-red: #ef4444;--px-gold: #ffd84a;--px-font: "Press Start 2P", "Zpix", ui-monospace, monospace;--team: #6b7280;position:relative;min-height:100vh;min-height:100dvh;max-width:560px;margin:0 auto;padding:0 14px calc(90px + env(safe-area-inset-bottom));color:var(--px-text);background:linear-gradient(transparent 0 calc(100% - 1px),#ffffff09 0) 0 0 / 100% 8px,linear-gradient(90deg,transparent 0 calc(100% - 1px),rgba(255,255,255,.035) 0) 0 0 / 8px 100%,radial-gradient(ellipse at 50% -10%,#2a1f6b 0,var(--px-bg) 60%);font-size:18px;line-height:1.5;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;overflow-x:hidden}body:has(.px){background:#0d0b1e}.px *{box-sizing:border-box}.px p{margin:.3em 0}.px-pixel{font-family:var(--px-font);letter-spacing:.04em;line-height:1.4}.px-center{text-align:center}.px-center-col{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px}.px-stack{display:flex;flex-direction:column;gap:14px}.px-main{padding-top:10px}.px-muted{color:var(--px-muted);font-size:.95rem}.px-big{font-size:1.25rem;font-weight:800}.px-small{font-size:.85rem}.px-dim{color:#4b4670}.px-label{font-family:var(--px-font);font-size:.62rem;color:var(--px-muted);letter-spacing:.1em;margin-bottom:6px}.px-small-cap{font-size:.75rem;opacity:.85}.px-ok-text{color:var(--px-green);font-weight:900}.px-warn-text{color:var(--px-gold);font-weight:800}.px-blink{animation:px-blink 1s steps(2,start) infinite}@keyframes px-blink{to{visibility:hidden}}.px.px-center{display:flex;align-items:center;justify-content:center;padding:16px}.px-window{background:var(--px-panel);border:3px solid var(--px-line);box-shadow:0 0 0 3px var(--px-ink),6px 6px 0 3px var(--px-ink);padding:16px;margin:6px 6px 14px 3px}.px-title{font-family:var(--px-font);font-size:1.05rem;color:var(--px-yellow);margin:0 0 10px;text-shadow:3px 3px 0 #000;line-height:1.5}.px-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:64px;padding:10px 16px;margin:10px 0 4px;font:inherit;font-size:1.25rem;font-weight:900;color:#1a1300;background:var(--px-yellow);border:3px solid var(--px-ink);box-shadow:inset -4px -4px #00000040,inset 4px 4px #ffffff59,4px 4px 0 var(--px-ink);border-radius:0;cursor:pointer;touch-action:manipulation}.px-btn:active:not(:disabled){transform:translate(3px,3px);box-shadow:inset -4px -4px #00000040,1px 1px 0 var(--px-ink)}.px-btn:disabled{opacity:.45}.px-btn.ghost{background:transparent;color:var(--px-text);border-color:var(--px-line);box-shadow:4px 4px 0 var(--px-ink);font-size:1rem;min-height:52px}.px-btn.px-mega{min-height:140px;font-size:1.6rem;background:var(--team);color:#111}.px-chip{display:inline-block;padding:3px 8px;border:2px solid var(--px-line);font-size:.85rem;font-weight:800;background:#000;white-space:nowrap}.px-chip.team{background:var(--team);color:#111;border-color:#000}.px-chip.gold{background:var(--px-gold);color:#1a1300;border-color:#000}.px-hud{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:8px;margin:0 -14px;padding:10px 14px;background:#0d0b1ef0;border-bottom:4px solid var(--team)}.px-hud-name{font-size:1.3rem;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.px-hud-right{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.px-netbar{position:sticky;top:0;z-index:40;margin:0 -14px;padding:8px 14px;background:#b45309;color:#fff;font-weight:800;text-align:center}.px-announce{margin:10px 0 0;padding:10px 12px;background:var(--px-gold);color:#1a1300;border:3px solid #000;box-shadow:4px 4px #000;display:flex;flex-direction:column;font-size:1.05rem}.px-announce b{font-size:1.15rem}.px-countdown{margin:10px 0 0;padding:8px 12px;display:flex;justify-content:space-between;align-items:center;background:#000;border:3px solid var(--px-line);font-weight:800}.px-countdown b{font-size:1.2rem;color:var(--px-yellow)}.px-countdown.hot b{color:var(--px-red)}.px-toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:90;background:#000;color:#fff;border:3px solid var(--px-line);padding:10px 16px;font-weight:800;max-width:90vw;text-align:center}.px-spot-bar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--px-gold);color:#1a1300;font-weight:900;text-align:center;padding:12px;border-top:3px solid #000}.px-full{min-height:100vh;min-height:100dvh;margin:-10px -14px 0;padding:24px 18px}.px-screen-checkin,.px-screen-watch,.px-screen-connect,.px-screen-lightstick,.px-screen-unlock,.px-screen-offline,.px-screen-logout{padding-bottom:0}.px-screen-checkin .px-full,.px-screen-watch .px-full,.px-screen-connect .px-full,.px-screen-unlock .px-full,.px-screen-offline .px-full,.px-screen-logout .px-full{padding-bottom:calc(24px + env(safe-area-inset-bottom))}.px-black{background:#000}.px-team-bg{background:var(--team);color:#111;background-image:repeating-linear-gradient(45deg,rgba(0,0,0,.06) 0 8px,transparent 8px 16px)}.px-team-bg .px-window{color:var(--px-text)}.px-huge-name{font-size:2.8rem;font-weight:900;line-height:1.15;word-break:break-all;text-shadow:3px 3px 0 rgba(0,0,0,.35)}.px-team-bg .px-huge-name{text-shadow:3px 3px 0 rgba(255,255,255,.35)}.px-block{display:inline-block;background:#000;color:#fff;padding:8px 14px;font-size:1.5rem;font-weight:900;border:3px solid #fff;margin:4px}.px-block b{color:var(--px-yellow);font-size:2rem}.px-checkin-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.px-card{--c: var(--team);margin:6px 6px 4px 3px;padding:14px;background:var(--px-bg2);border:4px solid var(--c);box-shadow:0 0 0 3px #000,6px 6px 0 3px #000,inset 0 0 0 4px #ffffff0d;text-align:center}.px-card-top{display:flex;justify-content:space-between;font-family:var(--px-font);font-size:.6rem;color:var(--c)}.px-avatar{width:112px;height:112px;margin:10px auto;background:#000;border:3px solid var(--c);display:flex;align-items:center;justify-content:center;image-rendering:pixelated}.px-card-name{font-size:2.2rem;font-weight:900;line-height:1.2}.px-card-meta{display:flex;gap:8px;justify-content:center;margin-top:8px}.px-next-text{font-size:1.15rem}.px-next-text b{color:var(--px-yellow)}.px-lights{display:flex;flex-direction:column;gap:10px}.px-light-row{--c: #888;display:grid;grid-template-columns:4.2em 1fr 4ch;align-items:center;gap:8px;font-weight:900}.px-light-row.mine .px-light-name:after{content:" ◀";color:var(--c)}.px-light-name{color:var(--c)}.px-bar{height:22px;background:#000;border:2px solid var(--px-line);display:block;position:relative;overflow:hidden}.px-bar>span{display:block;height:100%;background:var(--c);background-image:repeating-linear-gradient(90deg,transparent 0 10px,rgba(0,0,0,.25) 10px 12px);transition:width .8s steps(12)}.px-num{font-family:var(--px-font);font-size:.8rem;text-align:right}.px-sealed{text-align:center;color:var(--px-muted);font-size:.9rem;border:2px dashed var(--px-muted);padding:6px}.px-lights.compact .px-light-row{grid-template-columns:3.6em 1fr 4ch}.px-screen-watch,.px-screen-offline{background:#000}.px-watch-dot{width:10px;height:10px;background:#7f1d1d;animation:px-blink 2s steps(2,start) infinite}.px-connect{background:radial-gradient(circle at 50% 45%,#1f1a4f 0,#000 70%)}.px-connect-btn{width:min(72vw,300px);aspect-ratio:1;border-radius:0;margin:18px auto;font:900 3rem/1 system-ui,sans-serif;color:#111;cursor:pointer;touch-action:manipulation;background:var(--team);border:6px solid #fff;box-shadow:0 0 0 6px #000,0 0 40px 10px color-mix(in srgb,var(--team) 60%,transparent),inset -10px -10px #00000040;clip-path:polygon(12% 0,88% 0,100% 12%,100% 88%,88% 100%,12% 100%,0 88%,0 12%);animation:px-pulse 1.6s ease-in-out infinite}.px-connect-btn:active{transform:scale(.96)}.px-connect.done .px-connect-btn{background:#fff}.px-connect.offline{background:#111;filter:grayscale(1)}.px-connect.offline .px-connect-btn{background:#444;color:#999;animation:px-jitter .25s steps(2) infinite;box-shadow:0 0 0 6px #000}.px-connect.weak .px-connect-btn{animation:px-jitter .08s steps(2) infinite}@keyframes px-pulse{50%{box-shadow:0 0 0 6px #000,0 0 70px 24px color-mix(in srgb,var(--team) 70%,transparent),inset -10px -10px #00000040}}@keyframes px-jitter{0%{transform:translate(-2px,1px)}50%{transform:translate(2px,-1px)}}.px-flash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;pointer-events:none;animation:px-flash 1.4s steps(7) forwards;background:conic-gradient(from 0deg,var(--px-yellow),var(--px-green),var(--px-yellow),var(--px-green),var(--px-yellow))}@keyframes px-flash{0%{opacity:1;filter:brightness(2)}30%{opacity:1}to{opacity:0}}.px-glitch-text{display:inline-block;font-family:var(--px-font)}.px-glitch .px-main,.px-glitch .px-hud{filter:grayscale(1) contrast(1.3);animation:px-jitter .3s steps(2) infinite}.px-glitch:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:60;background:repeating-linear-gradient(0deg,rgba(255,255,255,.06) 0 2px,transparent 2px 4px);animation:px-scan .4s steps(4) infinite}@keyframes px-scan{to{background-position:0 8px}}.px-offline{position:relative;overflow:hidden}.px-noise{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.12;pointer-events:none;background:repeating-linear-gradient(0deg,#fff 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,#888 0 2px,transparent 2px 5px);animation:px-scan .2s steps(3) infinite}.px-weak-signal{display:flex;gap:6px;align-items:flex-end;height:30px}.px-weak-signal span{width:8px;background:#333}.px-weak-signal span:nth-child(1){height:10px;background:#22c55e;animation:px-blink 1.4s steps(2,start) infinite}.px-weak-signal span:nth-child(2){height:20px}.px-weak-signal span:nth-child(3){height:30px}.px-screen-lightstick{padding:0;max-width:none}.px-lightstick{background:var(--team);position:relative;overflow:hidden;animation:px-breathe 2.4s ease-in-out infinite;margin:0;min-height:100dvh}.px-lightstick-glow{position:absolute;top:-20%;right:-20%;bottom:-20%;left:-20%;background:radial-gradient(circle,#fff 0,transparent 60%);opacity:.55;animation:px-breathe-glow 2.4s ease-in-out infinite}.px-lightstick-label{position:absolute;bottom:24px;left:0;right:0;text-align:center;font-weight:900;color:#00000059;font-size:1.2rem}@keyframes px-breathe{50%{filter:brightness(.7)}}@keyframes px-breathe-glow{50%{opacity:.15;transform:scale(.85)}}.px-core{width:140px;height:140px;transform:rotate(45deg);background:#222;border:6px solid #444;display:flex;align-items:center;justify-content:center;transition:all .6s steps(6);margin:40px}.px-core-inner{transform:rotate(-45deg);font-family:var(--px-font);font-size:2.4rem;color:#555}.px-core.lit{background:var(--px-gold);border-color:#fff;box-shadow:0 0 0 6px #000;filter:drop-shadow(0 0 24px rgba(255,216,74,.8));animation:px-spin-glow 2s ease-in-out infinite}.px-core.lit .px-core-inner{color:#1a1300}@keyframes px-spin-glow{50%{filter:drop-shadow(0 0 44px rgba(255,216,74,1))}}.px-light-slots{display:flex;gap:8px}.px-slot{width:22px;height:22px;background:#222;border:3px solid #444;transform:rotate(45deg)}.px-slot.on{background:var(--px-gold);border-color:#fff}.px-slot.now.on{animation:px-blink .5s steps(2,start) 4}.px-unlock-title{font-size:1.4rem;font-weight:900}.px-unlock-name{font-size:2.4rem;font-weight:900;color:var(--px-gold);text-shadow:3px 3px 0 #000}.px-game-head{display:flex;align-items:center;gap:10px;justify-content:space-between;font-weight:900;margin:4px 0 8px}.px-game-head .px-pixel{font-size:.7rem;color:var(--px-yellow)}.px-waiting{min-height:220px}.px-status{text-align:center;font-weight:800;font-size:1.1rem;min-height:1.6em;margin-top:10px}.px-timer{font-family:var(--px-font);font-size:1.6rem;color:var(--px-yellow)}.px-timer.hot{color:var(--px-red);animation:px-blink .5s steps(2,start) infinite}.px-cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.px-bigcard{aspect-ratio:2/3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:#f4efe0;color:#1a1300;font:inherit;border:4px solid #000;box-shadow:4px 4px #000,inset 0 0 0 4px #c9a64a;cursor:pointer;padding:6px;touch-action:manipulation}.px-bigcard.chosen{background:var(--team);transform:translateY(-8px);box-shadow:4px 12px #000,inset 0 0 0 4px #fff}.px-bigcard:disabled{opacity:.55}.px-bigcard.chosen:disabled{opacity:1}.px-card-icon{font-size:2.4rem;line-height:1}.px-card-title{font-size:1.5rem;font-weight:900}.px-card-sub{font-size:.8rem;font-weight:700;opacity:.7}.px-flipcard{min-width:120px;padding:18px 20px;background:#f4efe0;color:#1a1300;border:4px solid #000;box-shadow:4px 4px #000;font-size:2.2rem;font-weight:900;display:flex;flex-direction:column;align-items:center;animation:px-flip .5s steps(5)}.px-flipcard.small{font-size:2.6rem;padding:6px 22px;font-family:var(--px-font)}@keyframes px-flip{0%{transform:scaleX(0)}}.px-numgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:10px}.px-num-btn{min-height:72px;margin:0;font-family:var(--px-font);font-size:1.3rem;background:#f4efe0}.px-num-btn.chosen{background:var(--team);box-shadow:inset 0 0 0 4px #fff,4px 4px #000}.px-num-btn.chosen:disabled{opacity:1}.px-out{filter:grayscale(.8)}.px-clear{border-color:var(--px-gold)}.px-winner{color:var(--px-gold);font-size:1.1rem;text-shadow:3px 3px 0 #000}.px-dodge-sign{min-height:360px}.px-dq-text{font-size:1.4rem;font-weight:900;text-align:center;margin-bottom:12px}.px-dq-sides{display:grid;grid-template-columns:1fr 1fr;gap:10px}.px-dq-side{background:#000;border:3px solid var(--px-line);padding:16px 8px;text-align:center;font-size:1.3rem;font-weight:900;display:flex;flex-direction:column;gap:6px}.px-dq-side .px-side-tag{font-size:.85rem;color:var(--px-muted)}.px-dq-side.right{background:#14532d;border-color:var(--px-green)}.px-dq-side.right:after{content:"✓ 正確";color:var(--px-green);font-size:1rem}.px-dq-side.wrong{opacity:.4;text-decoration:line-through}.px-cheer{position:relative;min-height:110px;font-size:1.8rem;background:var(--team);overflow:visible}.px-cheer-pop{position:absolute;left:50%;top:0;font-family:var(--px-font);font-size:1rem;color:#fff;text-shadow:2px 2px 0 #000;animation:px-pop-up 1s steps(8) forwards;pointer-events:none}@keyframes px-pop-up{to{transform:translate(calc(-50% + 30px),-70px);opacity:0}}.px-boss{background:#2a0a2e;border:3px solid #a855f7;box-shadow:0 0 0 3px #000,6px 6px 0 3px #000;padding:12px;margin:6px 6px 0 3px}.px-hp{position:relative;height:28px;background:#000;border:3px solid #fff}.px-hp>span{display:block;height:100%;background:linear-gradient(#f87171,#b91c1c);transition:width .8s steps(10)}.px-hp>b{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.65rem;text-shadow:2px 2px 0 #000}.px-damage{font-family:var(--px-font);font-size:2.6rem;color:var(--px-red);text-shadow:4px 4px 0 #000;animation:px-flip .4s steps(4)}.px-damage.gold{color:var(--px-gold)}.px-question{font-size:1.45rem;font-weight:900;margin:6px 0 12px;line-height:1.35}.px-options{display:flex;flex-direction:column;gap:10px}.px-options.two{display:grid;grid-template-columns:1fr 1fr}.px-options.two .px-opt{min-height:150px;flex-direction:column;justify-content:center;text-align:center;font-size:1.4rem;background:var(--c, #f4efe0)}.px-opt{--c: #f4efe0;display:flex;align-items:center;gap:10px;text-align:left;width:100%;min-height:68px;padding:10px 12px;font:inherit;font-size:1.2rem;font-weight:900;color:#1a1300;background:#f4efe0;border:3px solid #000;box-shadow:4px 4px #000;cursor:pointer;touch-action:manipulation;border-radius:0}.px-opt:disabled{opacity:.55}.px-opt.chosen{background:var(--team);outline:4px solid #fff;outline-offset:-8px;opacity:1}.px-opt.correct{background:var(--px-green);opacity:1}.px-opt-key{font-family:var(--px-font);font-size:.9rem;background:#000;color:#fff;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;flex:none}.px-opt-text{flex:1}.px-opt-mark{font-size:.9rem}.px-opt-pct{font-family:var(--px-font);font-size:.75rem}.px-tug{-webkit-user-select:none;user-select:none;touch-action:manipulation}.px-judge-area{height:96px;display:flex;align-items:center;justify-content:center}.px-judge{text-align:center;animation:px-judge-in .35s steps(4)}.px-judge-label{font-family:var(--px-font);font-size:2.4rem;text-shadow:4px 4px 0 #000}.px-judge-label.small{font-family:inherit;font-size:1.2rem;font-weight:800;color:var(--px-muted);text-shadow:none}.px-judge-time{font-family:var(--px-font);font-size:.9rem;color:var(--px-muted);margin-top:6px}.px-judge.exact .px-judge-label{color:var(--px-gold);font-size:3.4rem;animation:px-gold .6s steps(3) 2}.px-judge.perfect .px-judge-label{color:#a7f3d0}.px-judge.early .px-judge-label{color:#93c5fd}.px-judge.late .px-judge-label{color:#fdba74}.px-judge.miss .px-judge-label{color:#9ca3af}@keyframes px-judge-in{0%{transform:scale(1.6);opacity:0}}@keyframes px-gold{50%{color:#fff;text-shadow:0 0 20px var(--px-gold),4px 4px 0 #000}}.px-tug-btn{display:block;width:min(68vw,270px);aspect-ratio:1;margin:6px auto 22px;border-radius:50%;font:900 3.2rem/1 system-ui,sans-serif;color:#111;cursor:pointer;background:var(--team);border:8px solid #fff;box-shadow:0 0 0 8px #000,0 14px 0 8px #000,inset -14px -14px #00000038,inset 14px 14px #ffffff4d;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.px-tug-btn.down{transform:translateY(10px);box-shadow:0 0 0 8px #000,0 4px 0 8px #000,inset -14px -14px #00000038}.px-tug-btn:disabled{filter:grayscale(.7) brightness(.7)}.px-beats{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;margin:8px 0}.px-beat{aspect-ratio:1;background:#000;border:2px solid #3b3566}.px-beat.exact{background:var(--px-gold);border-color:#fff}.px-beat.perfect{background:var(--px-green)}.px-beat.early{background:#3b82f6}.px-beat.late{background:#f97316}.px-beat.miss{background:#6b7280}.px-result-hidden{background:#000}.px-seal{width:140px;height:140px;display:flex;align-items:center;justify-content:center;font-family:var(--px-font);font-size:4rem;color:var(--px-gold);border:6px solid var(--px-gold);background:repeating-linear-gradient(45deg,#1a1300 0,#1a1300 10px,#000 10px,#000 20px);animation:px-jitter 1.2s steps(2) infinite}.px-result.won{background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--c) 70%,#000) 0,#000 75%)}.px-result.won .px-huge-name{color:var(--c)}.px-result.lost{background:radial-gradient(circle at 50% 30%,#1d1846 0,#000 75%)}.px-crown{animation:px-flip .6s steps(6),px-bob 1.2s steps(2) .6s infinite}@keyframes px-bob{50%{transform:translateY(-6px)}}.px-logout{background:linear-gradient(#0d0b1e,#1d1846)}.px-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#05040ff0;display:flex;flex-direction:column;align-items:stretch;justify-content:center;padding:16px;overflow-y:auto}.px-prize-sheet{justify-content:flex-start}.px-prize-scroll{max-width:520px;width:100%;margin:0 auto}.px-prize{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;border-color:var(--px-gold)}.px-prize.claimed{border-color:#555;opacity:.8}.px-chest-wrap{position:relative;animation:px-flip .5s steps(5)}.px-sparks{position:absolute;top:-20px;right:-20px;bottom:-20px;left:-20px;background:radial-gradient(circle,rgba(255,216,74,.5) 0,transparent 60%);animation:px-breathe-glow 1.5s infinite;pointer-events:none}.px-prize-title{font-size:1.6rem;font-weight:900;color:var(--px-gold)}.px-amount{font-family:var(--px-font);font-size:1.3rem;color:#fff;background:#000;padding:8px 12px;border:3px solid var(--px-gold)}.px-qr{background:#fff;padding:10px;border:4px solid #000;box-shadow:4px 4px #000;margin:8px 0}.px-qr img{display:block;border-radius:0;padding:0}.px-code{font-family:var(--px-font);font-size:.85rem;letter-spacing:.15em}.px-claim-tip{font-size:1.1rem;font-weight:800;background:#000;padding:8px 10px;border:2px dashed var(--px-gold)}.px-claim-tip b{color:var(--px-gold)}.px-sheet-close{max-width:520px;margin:4px auto 0}.px-prize-fab{position:fixed;right:12px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:35;display:flex;align-items:center;gap:6px;padding:8px 12px;font:inherit;font-weight:900;color:#1a1300;background:var(--px-gold);border:3px solid #000;box-shadow:4px 4px #000;cursor:pointer;border-radius:0}.px-prize-fab.hot{animation:px-bob 1s steps(2) infinite}.px-urgent{z-index:85;background:#3c0000f2;justify-content:center}.px-urgent .px-window{border-color:var(--px-red)}.px-alert{color:var(--px-red);font-size:.8rem;animation:px-blink .6s steps(2,start) infinite}.px-spotlight{z-index:75;background:#000;align-items:center;overflow:hidden}.px-spot-beam{position:absolute;top:-20%;left:50%;width:140%;height:140%;transform:translate(-50%);background:conic-gradient(from 160deg at 50% 0,transparent 0deg,rgba(255,240,180,.35) 20deg,transparent 40deg);pointer-events:none;animation:px-breathe-glow 2s infinite}.px-stage-call{font-size:3rem;font-weight:900;color:var(--px-gold);text-shadow:4px 4px 0 #000;animation:px-bob .8s steps(2) infinite}.px-screen-lightstick .px-main{padding-top:0}.px-now-text{font-size:1.3rem;font-weight:900;color:var(--px-text);margin-bottom:4px}.px-mission{display:flex;flex-direction:column;gap:10px;align-items:flex-start;font-size:1.2rem;font-weight:800;color:#6b6890}.px-mission-row{display:flex;gap:14px;align-items:center}
