:root{--bg:#111a26;--panel:#111a26eb;--line:#ffffff1f;--text:#eef3f8;--muted:#9aa8b8;--me:#4b9bff;--opp:#ff6b5b;--accent:#ffd54a;--good:#3ccf7a}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--text);-webkit-user-select:none;user-select:none;touch-action:none;overscroll-behavior:none;margin:0;font-family:system-ui,-apple-system,Segoe UI,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;overflow:hidden}#app,#app canvas{touch-action:none;display:block;position:fixed;inset:0}#hud,#touch{pointer-events:none;position:fixed;inset:0}#scoreboard{top:max(10px, env(safe-area-inset-top));border:1px solid var(--line);white-space:nowrap;background:#0a1018b8;border-radius:999px;align-items:center;gap:10px;padding:6px 16px;font-size:15px;display:flex;position:absolute;left:50%;transform:translate(-50%)}#scoreboard b{font-variant-numeric:tabular-nums;margin:0 8px;font-size:26px}#scoreboard small{background:#ffffff1f;border-radius:6px;margin-left:6px;padding:1px 6px;font-size:12px}#scoreboard .opp small{margin:0 6px 0 0}#scoreboard .me b{color:var(--me)}#scoreboard .opp b{color:var(--opp)}#scoreboard .nm{text-overflow:ellipsis;vertical-align:middle;max-width:7.5em;display:inline-block;overflow:hidden}#scoreboard .sep{color:var(--muted)}#scoreboard .dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:8px;height:8px;margin:0 6px;display:inline-block}#pauseBtn{top:max(10px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));border:1px solid var(--line);width:42px;height:42px;color:var(--text);pointer-events:auto;cursor:pointer;background:#0a1018b8;border-radius:12px;font-size:14px;position:absolute}#meter{border:2px solid #ffffffd9;border-radius:7px;width:14px;height:120px;display:none;position:absolute;overflow:visible;transform:translateY(-50%);box-shadow:0 2px 10px #00000080}#meter .fill{background:#fff;border-radius:2px;height:4px;margin-bottom:-2px;position:absolute;left:-7px;right:-7px;box-shadow:0 0 6px #fff}#banner{opacity:0;text-align:center;letter-spacing:2px;text-shadow:0 3px 14px #000000b3;font-size:44px;font-weight:800;transition:opacity .18s,transform .18s;position:absolute;top:26%;left:50%;transform:translate(-50%,-50%)scale(.9)}#banner.show{opacity:1;transform:translate(-50%,-50%)scale(1)}#banner .sub{margin-top:4px;font-size:18px;font-weight:600}#banner.win .sub{color:var(--me)}#banner.lose .sub{color:var(--opp)}.float{white-space:nowrap;text-shadow:0 2px 6px #000c;font-size:18px;font-weight:800;animation:1.1s ease-out forwards floatUp;position:absolute;transform:translate(-50%,-100%)}.float.me{color:#bcdcff}.float.opp{color:#ffc4bc}.float.mate{color:#d9ecff;opacity:.85;font-size:15px}.float.miss{color:#ccc}@keyframes floatUp{0%{opacity:0;transform:translate(-50%,-80%)scale(.8)}15%{opacity:1;transform:translate(-50%,-100%)scale(1.05)}to{opacity:0;transform:translate(-50%,-260%)scale(1)}}.stick-base,.action-ring{opacity:.55;background:#ffffff0d;border:2px solid #ffffff38;border-radius:50%;width:120px;height:120px;margin:-60px 0 0 -60px;display:none;position:absolute}.stick-base.active,.action-ring.active{opacity:1}.stick-knob{background:#ffffff59;border-radius:50%;width:52px;height:52px;margin:-26px 0 0 -26px;position:absolute;top:50%;left:50%}.action-ring{--charge:0deg;background:conic-gradient(#ffd54abf var(--charge), #ffffff0d 0);width:190px;height:190px;margin:-95px 0 0 -95px;-webkit-mask:radial-gradient(circle,#0000 84px,#000 85px);mask:radial-gradient(circle,#0000 84px,#000 85px)}.action-zones{pointer-events:none;opacity:.5;width:190px;height:190px;margin:-95px 0 0 -95px;display:none;position:absolute}.action-zones.active{opacity:1}.action-zones svg{width:100%;height:100%;overflow:visible}.action-zones .z{stroke:#ffffff4d;stroke-width:1.5px}.action-zones .z-up{fill:#78beff1f}.action-zones .z-side{fill:#ffd54a1a}.action-zones .z-down{fill:#78e6961f}.action-zones .z-tap{fill:#ffffff14;stroke-dasharray:4 4}.action-zones .z-up.on{fill:#78beff8c}.action-zones .z-side.on{fill:#ffd54a80}.action-zones .z-down.on{fill:#78e6968c}.action-zones .z-tap.on{fill:#fff6}.action-zones text{fill:#fff;text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:#0009;stroke-width:4px;font-size:17px;font-weight:800}.action-zones .t-tap{opacity:.85;font-size:13px}.overlay{touch-action:pan-y;background:radial-gradient(#111a2699,#05090ee6);justify-content:center;align-items:center;padding:16px;display:none;position:fixed;inset:0;overflow-y:auto}.overlay.show{display:flex}.panel{background:var(--panel);border:1px solid var(--line);-webkit-user-select:text;user-select:text;border-radius:18px;width:min(460px,100%);max-height:100%;padding:22px 24px;overflow-y:auto;box-shadow:0 20px 60px #00000080}.panel.small{text-align:center;width:min(320px,100%)}h1{letter-spacing:1px;margin:0;font-size:30px}h1 span{color:var(--accent)}h2{margin:0 0 14px}.tag{color:var(--muted);margin:4px 0 16px}.row{justify-content:space-between;align-items:center;gap:12px;margin:10px 0;display:flex}.row label{color:var(--muted);white-space:nowrap;font-size:14px}.seg{border:1px solid var(--line);border-radius:10px;display:flex;overflow:hidden}.seg button{color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;padding:7px 12px;font-size:14px}.seg button.on{background:var(--me);color:#fff}.seg.wrap{flex-wrap:wrap;flex:0 272px}.seg.wrap button{white-space:nowrap;flex:1 0 25%;padding:7px 6px}.panel>button,.panel.small button{border:1px solid var(--line);width:100%;color:var(--text);font:inherit;cursor:pointer;background:#ffffff0f;border-radius:12px;margin-top:10px;padding:12px;font-size:16px;display:block}.panel button.primary{background:var(--accent);color:#1a1a1a;border:0;margin-top:18px;font-weight:700}.panel button:disabled{opacity:.45;cursor:default}.howto{color:var(--muted);margin-top:14px;font-size:14px}.howto summary{cursor:pointer;color:var(--text)}.howto h3{color:var(--text);margin:12px 0 4px;font-size:14px}.howto ul{margin:0;padding-left:18px;line-height:1.6}.howto b{color:var(--text)}#resultScore{color:var(--muted);font-size:18px}@media (orientation:portrait){#banner{font-size:36px}}@media (height<=420px){#banner{font-size:34px}.panel{padding:16px 18px}.row{margin:6px 0}}.action-ring.pop{animation:.28s ease-out ringPop}@keyframes ringPop{0%{filter:brightness(2.2);transform:scale(.72)}55%{transform:scale(1.1)}to{filter:none;transform:scale(1)}}.press-ripple{pointer-events:none;border:3px solid #ffd54af2;border-radius:50%;width:120px;height:120px;margin:-60px 0 0 -60px;animation:.42s ease-out forwards ripple;position:absolute}@keyframes ripple{0%{opacity:1;transform:scale(.35)}to{opacity:0;transform:scale(1.45)}}.float.perfect{color:#ffe27a;text-shadow:0 0 10px #ffd54ab3,0 2px 6px #000c}.float.jump{color:#8ff7ff;text-shadow:0 0 12px #5ff3ffcc,0 2px 6px #000c;font-size:24px}.float.miss{font-size:16px}.press-ripple.jump{border-color:#5ff3fff2}.action-ring.jump{background:conic-gradient(#5ff3ffd9 var(--charge), #5ff3ff1f 0)}.action-ring.smash{background:#ff5a4652;border-color:#ff6e5af2;box-shadow:0 0 16px #ff5a4680}.section-title{color:var(--muted);letter-spacing:1px;margin:14px 0 6px;font-size:13px}.cards{scrollbar-width:thin;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.card{border:1px solid var(--line);width:92px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:#ffffff0a;border-radius:12px;flex:none;padding:8px}.card.on{border-color:var(--accent);background:#ffd54a1f}.card .swatch{border:2px solid #fff9;border-radius:50%;width:26px;height:26px;margin-bottom:6px}.card b{font-size:15px;display:block}.card small{color:var(--accent);font-size:11px;display:block}.card span{color:var(--muted);margin-top:4px;font-size:11px;line-height:1.35;display:block}.cards.rackets .card{width:104px}.kit-summary{flex-wrap:wrap;gap:4px;min-height:20px;margin-top:8px;display:flex}.kit-summary i{background:#ffffff14;border-radius:999px;padding:2px 7px;font-size:12px;font-style:normal}.kit-summary i.up{color:#7dffb0}.kit-summary i.down{color:#ff9a8a}#scoreboard .opp em{color:var(--muted);margin-left:4px;font-size:12px;font-style:normal}.drill-list{gap:8px;display:grid}.drill-item{border:1px solid var(--line);color:var(--text);font:inherit;text-align:left;cursor:pointer;background:#ffffff0a;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.drill-item b{font-size:16px}.drill-item span{color:var(--muted);margin-top:2px;font-size:12px;display:block}.drill-item .stars{color:var(--accent);letter-spacing:1px;white-space:nowrap;font-size:18px}.drill-item .stars .off{color:#ffffff2e}#banner.rep{font-size:30px}#banner.rep.win{color:#8dffb8}#banner.rep.lose{color:#ffb3a8}#drillGoal{top:calc(max(10px, env(safe-area-inset-top)) + 58px);text-align:center;background:#0a1018b8;border-radius:10px;max-width:92vw;padding:6px 12px;font-size:13px;display:none;position:absolute;left:50%;transform:translate(-50%)}.tour-stop{border:1px solid var(--line);background:#ffffff08;border-radius:14px;margin:12px 0;padding:10px 12px}.tour-stop.locked{opacity:.45}.tour-stop h3{margin:0 0 8px;font-size:16px}.tour-opp{border:1px solid var(--line);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:#ffffff0a;border-radius:10px;align-items:center;gap:10px;margin-top:6px;padding:8px 10px;display:flex}.tour-opp:disabled{cursor:default;opacity:.5}.tour-opp.boss{border-color:#ffd54a80}.tour-opp .swatch{border:2px solid #fff9;border-radius:50%;flex:0 0 22px;height:22px}.tour-opp b{font-size:14px}.tour-opp span{color:var(--muted);font-size:11px;display:block}.tour-opp .state{margin-left:auto;font-size:16px}#banner.intro{color:var(--accent);width:min(92vw,520px);font-size:30px}#banner.intro .sub{color:var(--text);white-space:pre-line;max-width:86vw;margin:4px auto 0}.pad-label{color:#c8f5d0;white-space:nowrap;pointer-events:none;background:#0a1018cc;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:700;display:none;position:absolute;transform:translate(-50%,-50%)}.pad-label.over{color:#8ff7ff}.bars{gap:3px;margin-top:6px;display:grid}.bar{grid-template-columns:74px 1fr 40px;align-items:center;gap:6px;font-size:12px;display:grid}.bars.mini .bar{grid-template-columns:12px 1fr;gap:4px;font-size:10px}.bar label{color:var(--muted)}.bar .track{background:#ffffff14;border-radius:4px;height:7px;position:relative;overflow:hidden}.bars.mini .bar .track{height:5px}.bar .mid{background:#ffffff59;width:1px;position:absolute;top:0;bottom:0;left:50%}.bar .fill{background:#7f93ad;border-radius:4px;height:100%}.bar.up .fill{background:linear-gradient(90deg,#3a9e6a,#7dffb0)}.bar.down .fill{background:linear-gradient(90deg,#a2463a,#ff9a8a)}.bar em{text-align:right;color:var(--muted);font-size:11px;font-style:normal}.bar.up em{color:#7dffb0}.bar.down em{color:#ff9a8a}.kit-summary{background:#ffffff0a;border-radius:12px;margin-top:10px;padding:8px 10px;display:block}.kit-title{margin-bottom:2px;font-size:13px;font-weight:700}.card{width:104px}.card .thumb{background:radial-gradient(at 50% 85%,#ffffff29,#ffffff08 70%);border-radius:9px;height:104px;margin:-2px -2px 4px;position:relative;overflow:hidden}.card .thumb img{object-fit:contain;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.card .thumb img:not([src]),.card .thumb img[src=""]{visibility:hidden}.card.on .thumb{background:radial-gradient(at 50% 85%,#ffd54a4d,#ffd54a0a 70%)}:is(body:has(#setup.show) #a2hsTip,body:has(#settings.show) #a2hsTip){display:none}.panel.wide{width:min(460px,100%)}.setup-grid .field{margin-bottom:4px}.setup-grid .section-title{margin:10px 0 5px}.seg.fill{width:100%}.seg.fill button{white-space:nowrap;flex:1 1 0;padding:8px 4px}.seg.wrap4{flex-wrap:wrap}.seg.wrap4 button{flex:1 0 25%}.seg.diff button[data-v=extreme].on{background:#e8862a}.seg.diff button[data-v=hell].on{background:#c8222a}.setup-grid .hint-line{min-height:1.5em;margin:5px 0 0}.swatches{flex-wrap:wrap;gap:7px;display:flex}.swatch-btn{background:var(--c);color:#fff;width:34px;height:34px;font:inherit;cursor:pointer;text-shadow:0 1px 2px #000c;border:2px solid #ffffff40;border-radius:50%;padding:0;font-size:11px;font-weight:700;position:relative}.swatch-btn.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.swatch-btn.on:after{content:"✓";place-items:center;font-size:15px;display:grid;position:absolute;inset:0}.swatch-btn.light.on:after{color:#1a1a1a;text-shadow:none}.swatch-btn.text{border-radius:17px;width:auto;padding:0 10px}.swatch-btn.text.on:after{content:none}.swatches .swatch-btn:disabled{opacity:.25;cursor:default}.swatch-btn:disabled:before{content:"";background:#ffffffd9;width:2px;position:absolute;top:3px;bottom:3px;left:50%;transform:rotate(45deg)}.panel button.primary.big{letter-spacing:2px;padding:15px;font-size:19px}@media (width>=700px) and (orientation:landscape){.panel.wide{width:min(760px,100%)}.setup-grid{grid-template-columns:1fr 1fr;align-items:start;column-gap:22px;display:grid}}.stick-base.armed{border-color:#ff963cf2;box-shadow:0 0 18px #ff963c8c}.stick-base.auto-pad:after{content:"↑↓ 前後　←→ 撲";color:#ffbe78e6;white-space:nowrap;font-size:13px;font-weight:700;position:absolute;top:-24px;left:50%;transform:translate(-50%)}.press-ripple.dive{border-color:#ff963ce6}.join-row{gap:8px;margin-top:10px;display:flex}.join-row input{min-width:0;color:inherit;letter-spacing:6px;text-align:center;text-transform:uppercase;background:#ffffff14;border:1px solid #fff3;border-radius:10px;flex:1;padding:12px;font-size:20px}.join-row button{width:auto;margin:0;padding:0 20px}.room-code-label{color:var(--muted);text-align:center;font-size:12px}.room-code{letter-spacing:12px;text-align:center;color:#ffd54a;margin:2px 0 10px;font-size:44px;font-weight:800}.room-status{text-align:center;min-height:1.4em;color:var(--muted);font-size:14px}.room-status.ok{color:#7dff9a}.room-status.error{color:#ff7a7a}#netInfo{right:10px;bottom:calc(6px + env(safe-area-inset-bottom));color:#ffffff8c;pointer-events:none;font-size:11px;position:absolute}.hint-line{color:var(--muted);margin:-2px 0 8px;font-size:12px;line-height:1.5}#tutCard{top:calc(max(10px, env(safe-area-inset-top)) + 58px);pointer-events:auto;background:#0a1018db;border:1px solid #ffd54a59;border-radius:14px;width:min(92vw,460px);padding:12px 14px;font-size:14px;line-height:1.55;display:none;position:absolute;left:50%;transform:translate(-50%)}.tut-head{justify-content:space-between;align-items:baseline;margin-bottom:4px;display:flex}.tut-head b{color:#ffd54a;font-size:17px}.tut-head span{color:var(--muted);font-size:12px}#tutText b{color:#fff}.tut-retry{color:#ff9a8a;font-weight:700}.tut-btns{gap:8px;margin-top:8px;display:flex}.tut-btns button{color:#1a1a1a;background:#ffd54a;border:0;border-radius:10px;flex:1;margin:0;padding:10px;font-size:15px;font-weight:700}.tut-btns button.ghost{color:inherit;background:#ffffff1f}#tutPrompt{color:#ffd54a;white-space:nowrap;text-align:center;pointer-events:none;background:#0a1018d1;border:2px solid #ffd54a;border-radius:14px;max-width:94vw;padding:12px 18px;font-size:22px;font-weight:800;animation:.9s ease-in-out infinite tutPulse;display:none;position:absolute;top:46%;left:50%;transform:translate(-50%,-50%)}#tutPrompt.show{display:block}@keyframes tutPulse{0%,to{transform:translate(-50%,-50%)scale(1)}50%{transform:translate(-50%,-50%)scale(1.06)}}.tut-ring{pointer-events:none;border:3px solid #ffd54a;border-radius:50%;animation:.9s ease-in-out infinite hlPulse;display:none;position:absolute;box-shadow:0 0 18px #ffd54ab3}@keyframes hlPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.12)}}#tutCard.compact #tutText,#tutCard.compact .tut-btns{display:none}#tutCard.compact{width:auto;padding:6px 12px}#tutCard.compact .tut-head{gap:12px;margin:0}#tutCard.quick.compact #tutText{display:block}#tutCard.quick.compact{width:min(92vw,460px);padding:8px 14px}#tutCard.quick .tut-head>*{white-space:nowrap}#tutCard.quick #tutText{font-size:16px;font-weight:700}.tut-skip{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:1px solid #ffffff40;border-radius:999px;margin-left:auto;padding:3px 10px;font-size:12px;display:none}#tutCard.quick .tut-skip{display:inline-block}#tutCard.quick .tut-head{gap:10px}.gesture-hint{pointer-events:none;width:0;height:0;display:none;position:absolute}.gh-finger{background:#ffd54ad9;border:3px solid #fff;border-radius:50%;width:32px;height:32px;animation:1.3s ease-in-out infinite ghUp;position:absolute;top:-16px;left:-16px;box-shadow:0 0 14px #ffd54acc}.gesture-hint[data-g=down] .gh-finger{animation-name:ghDown}.gesture-hint[data-g=side] .gh-finger{animation-name:ghSide}.gesture-hint[data-g=tap] .gh-finger{animation-name:ghTap;animation-duration:1s}.gesture-hint:after{color:#ffd54a;text-shadow:0 1px 6px #000c;font-size:30px;font-weight:900;line-height:1;position:absolute;transform:translate(-50%,-50%)}.gesture-hint[data-g=up]:after{content:"↑";top:-112px;left:0}.gesture-hint[data-g=down]:after{content:"↓";top:112px;left:0}.gesture-hint[data-g=side]:after{content:"→";top:0;left:112px}@keyframes ghUp{0%{opacity:0;transform:translate(0)scale(.7)}15%{opacity:1;transform:translate(0)scale(1)}70%{opacity:1;transform:translateY(-80px)}to{opacity:0;transform:translateY(-80px)}}@keyframes ghDown{0%{opacity:0;transform:translate(0)scale(.7)}15%{opacity:1;transform:translate(0)scale(1)}70%{opacity:1;transform:translateY(80px)}to{opacity:0;transform:translateY(80px)}}@keyframes ghSide{0%{opacity:0;transform:translate(0)scale(.7)}15%{opacity:1;transform:translate(0)scale(1)}70%{opacity:1;transform:translate(80px)}to{opacity:0;transform:translate(80px)}}@keyframes ghTap{0%,to{opacity:.6;transform:scale(1)}20%{opacity:1;transform:scale(.7)}45%{opacity:.9;transform:scale(1.25)}}.action-zones .z.hint{animation:.9s ease-in-out infinite zoneHint}@keyframes zoneHint{0%,to{fill:#ffd54a1f}50%{fill:#ffd54a99}}@media (prefers-reduced-motion:reduce){.gh-finger,.action-zones .z.hint{animation-duration:2.4s}}#updateBar{left:50%;bottom:calc(14px + env(safe-area-inset-bottom));z-index:50;color:#1a1a1a;background:#ffd54a;border:0;border-radius:999px;padding:10px 18px;font-size:15px;font-weight:700;display:none;position:fixed;transform:translate(-50%);box-shadow:0 4px 18px #0006}#updateBar.show{display:block}.gl-note{z-index:60;text-align:center;background:#05090eeb;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.gl-note .panel{width:min(360px,100%)}.gl-note p{color:var(--muted);line-height:1.6}#a2hsTip{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));z-index:40;background:#0a1018eb;border:1px solid #ffd54a66;border-radius:12px;width:min(92vw,460px);padding:10px 34px 10px 14px;font-size:13px;line-height:1.5;display:none;position:fixed;transform:translate(-50%)}body.in-menu #a2hsTip.show{display:block}#a2hsTip .x{width:26px;height:26px;color:var(--muted);background:0 0;border:0;font-size:18px;position:absolute;top:4px;right:6px}#a2hsTip .install{color:#1a1a1a;background:#ffd54a;border:0;border-radius:8px;margin-top:6px;padding:8px 12px;font-weight:700;display:block}#guide .panel{max-height:88vh;overflow-y:auto}.guide-timing{background:#5dff8a14;border:1px solid #5dff8a40;border-radius:10px;padding:8px 10px;font-size:13px;line-height:1.55}.guide-shot{border-bottom:1px solid #ffffff14;padding:8px 0}.guide-shot h4{color:#ffd54a;margin:0 0 2px;font-size:15px}.guide-shot p{margin:2px 0;font-size:13px;line-height:1.5}.guide-shot .when{color:var(--muted)}#timingFb{left:50%;top:calc(max(10px, env(safe-area-inset-top)) + 58px);pointer-events:none;text-align:center;background:#0a1018c7;border-radius:12px;width:min(78vw,300px);padding:6px 10px 8px;display:none;position:absolute;transform:translate(-50%)}#timingFb.show{animation:.18s ease-out tfbIn;display:block}#timingFb.low{top:calc(max(10px, env(safe-area-inset-top)) + 100px)}@keyframes tfbIn{0%{opacity:0;transform:translate(-50%)translateY(-6px)}}.tfb-label{margin-bottom:4px;font-size:17px;font-weight:800}#timingFb.perfect .tfb-label{color:#5dff8a}#timingFb.near .tfb-label{color:#ffd54a}#timingFb.far .tfb-label,#timingFb.miss .tfb-label{color:#ff7a6a}#timingFb.only .tfb-bar{display:none}.tfb-bar{color:#ffffffbf;border-radius:8px;height:16px;font-size:9px;line-height:16px;display:flex;position:relative;overflow:hidden}.tfb-bar i{background:#ff7a6a59;flex:1;font-style:normal}.tfb-bar i:nth-child(2),.tfb-bar i:nth-child(4){background:#ffd54a59}.tfb-bar i.p{color:#fff;background:#5dff8a66;flex:1.2}.tfb-mark{background:#fff;border-radius:2px;width:4px;height:20px;margin-left:-2px;position:absolute;top:-2px;box-shadow:0 0 6px #fff}#notice{white-space:nowrap;pointer-events:none;background:#0a1018e0;border:1px solid #ffd54a80;border-radius:12px;padding:12px 18px;font-size:16px;font-weight:700;display:none;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}#notice.show{display:block}.join-row{margin-top:14px}.join-row input{letter-spacing:10px;height:64px;padding:0 12px;font-size:32px;font-weight:800}.join-row input::placeholder{letter-spacing:2px;font-size:18px;font-weight:400}.join-row button{min-width:96px;font-size:18px;font-weight:700}.nick-row{white-space:nowrap;align-items:center;gap:10px;margin:0 0 12px;font-size:14px;display:flex}.nick-row input{min-width:0;color:inherit;font:inherit;background:#ffffff14;border:1px solid #fff3;border-radius:10px;flex:1;margin:0;padding:9px 12px;font-size:16px}.setup-picker{margin-bottom:8px;display:none}.setup-picker.show{display:block}input,textarea{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default;touch-action:manipulation}.join-row{flex-direction:column}.join-row input{color:#fff;-webkit-text-fill-color:#fff;caret-color:#ffd54a;opacity:1;background:#ffffff1f;border:2px solid #ffd54a8c;width:100%}.join-row input:focus{background:#ffffff29;border-color:#ffd54a;outline:none}.join-row button{width:100%;height:48px}.music-pick-ctl{gap:8px;min-width:0;display:flex}.music-pick select{border:1px solid var(--line);min-width:0;max-width:190px;color:var(--text);font:inherit;background:#ffffff0f;border-radius:10px;padding:7px 10px;font-size:14px}.music-pick select option{color:var(--text);background:#1b2533}.music-pick .music-try{border:1px solid var(--line);color:var(--text);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border-radius:10px;flex:none;padding:7px 10px;font-size:14px}.music-pick .music-try:active{background:var(--me)}.music-hint{margin-top:-4px}.float.off{color:#ffb0a0}.panel button.rejoin{background:#3ccf7a;margin-top:14px}.panel button.hero{border-radius:16px;flex-direction:column;align-items:center;gap:2px;margin-top:14px;padding:14px 12px 12px;display:flex;box-shadow:0 6px 22px #ffd54a40}.panel button.hero b{letter-spacing:4px;font-size:26px;line-height:1.15}.panel button.hero small{opacity:.75;font-size:13px;font-weight:600}.panel button.hero.online-hero{color:#fff;background:#2f7fd0;border:0;margin-top:10px;font-weight:700;box-shadow:0 6px 22px #2f7fd047}.menu-row,.menu-more{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:grid}.menu-more{grid-template-columns:1fr 1fr 1fr;margin-top:14px}.menu-row button,.menu-more button{border:1px solid var(--line);min-width:0;color:var(--text);font:inherit;cursor:pointer;background:#ffffff0f;border-radius:12px;margin:0;padding:10px 8px;font-size:15px}.menu-row button{background:#ffffff1a;flex-direction:column;align-items:center;gap:2px;display:flex}.menu-row button small{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--muted);font-size:12px;overflow:hidden}.menu-more button{padding:9px 6px;font-size:14px}#offer .tag{white-space:pre-line;line-height:1.6}.panel.small button.ghost-link{color:var(--muted);background:0 0;border:0;margin-top:6px;padding:6px;font-size:14px}.panel.small.result-panel{width:min(380px,100%)}#resultScore{margin:4px 0 10px}.result-stats{margin:0 0 10px;font-size:14px;display:none}.result-stats.show{display:block}.result-stats table{border-collapse:collapse;width:100%}.result-stats th,.result-stats td{font-variant-numeric:tabular-nums;border-bottom:1px solid #ffffff12;padding:4px 6px}.result-stats th{color:var(--muted);font-size:12px;font-weight:600}.result-stats th:first-child,.result-stats td:first-child{text-align:left;color:var(--muted)}.result-stats td.me{color:#8fc4ff;font-weight:700}.result-stats td.opp{color:#ffaaa0}.result-stats td.mate{color:#c6d8ee}.result-stats td.best{color:#ffd54a}.result-stats .rally{color:var(--muted);margin-top:6px;font-size:13px}.result-tip{text-align:left;background:#ffd54a1a;border:1px solid #ffd54a59;border-radius:12px;align-items:center;gap:8px;padding:9px 10px;font-size:14px;line-height:1.45;display:none}.result-tip.show{display:flex}.result-tip span{flex:1}.result-tip span:before{content:"建議下一步：";color:#ffd54a;font-size:11px;display:block}.panel.small .result-tip button{background:var(--accent);color:#1a1a1a;white-space:nowrap;border:0;border-radius:10px;flex:none;width:auto;margin:0;padding:7px 10px;font-size:13px;font-weight:700;display:none}.panel.small .result-tip button.show{display:block}.result-row{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:grid}.panel.small .result-row button{margin:0}.result-row.one{grid-template-columns:1fr}.panel.small .result-diff{margin-top:8px;display:none}.panel.small .result-diff.show{display:flex}.panel.small .result-diff button{background:0 0;border:0;border-radius:0;width:auto;margin:0;padding:9px 2px;font-size:14px;display:block}.panel.small .result-diff button.on{background:var(--me);color:#fff}.panel.small .result-diff button[data-v=extreme].on{background:#e8862a}.panel.small .result-diff button[data-v=hell].on{background:#c8222a}.result-toast{color:#7dff9a;min-height:1.2em;margin:8px 0 0;font-size:13px}.seg.wrap3{flex-wrap:wrap}.seg.wrap3 button{white-space:nowrap;flex:1 0 30%;padding:7px 4px}#quadLobby{text-align:left;margin-top:12px}.quad-teams{grid-template-columns:1fr 1fr;gap:8px;display:grid}.quad-team-title{text-align:center;margin-bottom:4px;font-size:13px;font-weight:800}.quad-team[data-team="0"] .quad-team-title{color:#7cc4ff}.quad-team[data-team="1"] .quad-team-title{color:#ff9a8a}.quad-seat{border:1px solid var(--line);background:#ffffff0d;border-radius:12px;min-height:92px;margin-bottom:8px;padding:8px;font-size:13px;line-height:1.35;overflow:hidden}.quad-seat.me{border-color:var(--accent);background:#ffd54a1a}.quad-seat.empty{color:var(--muted);border-style:dashed}.quad-seat .nm{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:800;display:block;overflow:hidden}.quad-seat .tags{flex-wrap:wrap;gap:3px;margin:2px 0;display:flex}.quad-seat .tg{background:#ffffff1f;border-radius:6px;padding:0 5px;font-size:11px}.quad-seat .tg.ok{color:#9dffc3;background:#3ccf7a4d}.quad-seat .tg.off{color:#ffb3b3;background:#e5484d4d}.quad-seat .sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;display:block;overflow:hidden}.panel.small .quad-seat button{border-radius:8px;width:100%;margin-top:6px;padding:6px 4px;font-size:13px;display:block}.quad-cfg{color:var(--muted);text-align:center;margin:4px 0 0;font-size:12px}.panel.small #quadLobby>button{margin-top:10px}#netWait{z-index:30}#netWait h2{margin-bottom:8px}.net-wait-code{color:var(--muted);justify-content:center;align-items:baseline;gap:8px;margin:6px 0 2px;font-size:13px;display:flex}.net-wait-code b{letter-spacing:8px;color:#ffd54a;font-size:30px}#netWaitText{white-space:pre-line}#replay{--rp-bar:clamp(46px, 12vh, 120px);pointer-events:none;cursor:pointer;display:none;position:fixed;inset:0}#replay.show{pointer-events:auto;display:block}.rp-bar{height:var(--rp-bar);padding:0 max(18px, env(safe-area-inset-left)) 0 max(18px, env(safe-area-inset-left));background:#000;align-items:center;gap:12px;display:flex;position:absolute;left:0;right:0}.rp-bar.top{height:calc(var(--rp-bar) + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);animation:.35s cubic-bezier(.2,.8,.2,1) both rpTop;top:0}.rp-bar.bottom{height:calc(var(--rp-bar) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);justify-content:space-between;animation:.35s cubic-bezier(.2,.8,.2,1) both rpBottom;bottom:0}@keyframes rpTop{0%{transform:translateY(-100%)}}@keyframes rpBottom{0%{transform:translateY(100%)}}.rp-tag{color:var(--accent);letter-spacing:4px;border:1px solid #ffd54a8c;border-radius:6px;align-items:center;gap:8px;padding:5px 12px 5px 10px;font-size:15px;font-weight:800;animation:.45s ease-out .15s both rpIn;display:flex}.rp-tag i{background:#ff4b4b;border-radius:50%;width:9px;height:9px;animation:1s steps(2,jump-none) infinite rpBlink;box-shadow:0 0 8px #ff4b4b}@keyframes rpBlink{50%{opacity:.2}}.rp-shot{align-items:baseline;gap:10px;min-width:0;animation:.45s ease-out .25s both rpIn;display:flex}.rp-shot b{letter-spacing:1px;color:#fff;white-space:nowrap;text-shadow:0 0 14px #4b9bff8c;font-size:clamp(18px,3.4vh,28px);font-weight:800}#replay.opp .rp-shot b{text-shadow:0 0 14px #ff6b5b8c}.rp-shot span{color:var(--me);white-space:nowrap;font-size:14px;font-weight:700}#replay.opp .rp-shot span{color:var(--opp)}.rp-skip{color:var(--muted);white-space:nowrap;flex:none;font-size:13px;animation:.45s ease-out .6s both rpIn}@keyframes rpIn{0%{opacity:0;transform:translateY(6px)}}.rp-prog{background:#ffffff1a;height:2px;position:absolute;top:0;left:0;right:0}.rp-prog i{background:var(--accent);width:0;height:100%;display:block}@media (orientation:portrait){#replay{--rp-bar:clamp(60px, 13vh, 150px)}.rp-bar.bottom{flex-wrap:wrap;align-content:center;row-gap:4px}.rp-shot{flex-direction:column;gap:2px}}body.replaying #hud,body.replaying #touch{visibility:hidden!important}#replayFade{opacity:0;pointer-events:none;background:#000;position:fixed;inset:0}#replayFade.go{animation:.38s ease-out both rpFade}@keyframes rpFade{0%{opacity:1}to{opacity:0}}.room-spec{text-align:center;min-height:1.2em;color:var(--muted);margin:-4px 0 6px;font-size:13px}.lobby-list{text-align:left;flex-direction:column;gap:8px;margin-top:6px;display:flex}.lobby-room{border:1px solid var(--line);background:#ffffff0d;border-radius:12px;grid-template-columns:auto 1fr auto;grid-template-areas:"code main acts""code sub acts";align-items:center;gap:4px 12px;padding:10px 12px;font-size:13px;line-height:1.4;display:grid}.lobby-room.playing{border-color:#ffd54a73}.lobby-room .code{letter-spacing:3px;color:#ffd54a;font-variant-numeric:tabular-nums;grid-area:code;font-size:22px;font-weight:800}.lobby-room .main{white-space:nowrap;text-overflow:ellipsis;grid-area:main;min-width:0;font-size:14px;font-weight:700;overflow:hidden}.lobby-room .sub{min-width:0;color:var(--muted);grid-area:sub;font-size:12px;line-height:1.6}.lobby-room .st{background:#ffffff1f;border-radius:6px;margin-right:6px;padding:0 6px;font-size:11px;font-weight:700;display:inline-block}.lobby-room .st.play{color:#ffe08a;background:#ffd54a40}.lobby-room .st.wait{color:#9dffc3;background:#3ccf7a40}.lobby-room .st.over{color:var(--muted)}.lobby-room .acts{flex-direction:column;grid-area:acts;gap:6px;display:flex}.panel .lobby-room .acts button{white-space:nowrap;border-radius:9px;width:auto;min-width:68px;margin:0;padding:7px 10px;font-size:13px}.panel .lobby-room .acts button.primary{margin:0;padding:7px 10px}.lobby-empty{text-align:center;color:var(--muted);padding:18px 8px;font-size:14px}@media (width<=420px){.lobby-room{grid-template-columns:auto 1fr;grid-template-areas:"code main""code sub""acts acts"}.lobby-room .acts{flex-direction:row}.panel .lobby-room .acts button{flex:1}}#specBadge{top:calc(max(10px, env(safe-area-inset-top)) + 50px);left:max(12px, env(safe-area-inset-left));border:1px solid var(--line);color:#ffffffd9;background:#0a1018b8;border-radius:999px;padding:3px 9px;font-size:12px;display:none;position:absolute}#specBadge.show{display:block}#specBar{top:max(10px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));pointer-events:auto;align-items:center;gap:6px;display:none;position:absolute}body.spectating #specBar{display:flex}body.spectating #pauseBtn{display:none}#specBar .sp-tag{border:1px solid var(--line);background:#0a1018b8;border-radius:12px;align-items:center;gap:6px;height:42px;padding:0 12px;font-size:13px;font-weight:700;display:flex}#specBar .sp-tag i{background:#ff5a5a;border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite sp-blink;box-shadow:0 0 8px #ff5a5a}@keyframes sp-blink{50%{opacity:.35}}#specBar button{border:1px solid var(--line);height:42px;color:var(--text);font:inherit;cursor:pointer;background:#0a1018b8;border-radius:12px;padding:0 12px;font-size:13px}#specBar button:active{background:var(--me)}@media (width<=600px){#specBar{top:calc(max(10px, env(safe-area-inset-top)) + 58px)}#specBar .sp-tag,#specBar button{height:34px;padding:0 9px;font-size:12px}body.spectating #specBadge{display:none}}.pad-editor{z-index:80;touch-action:none;-webkit-user-select:none;user-select:none;background:#080e16b8;position:fixed;inset:0}.pad-editor-bar{left:50%;top:max(12px, env(safe-area-inset-top));color:#e8eef7;text-align:center;background:#141c28f2;border-radius:14px;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;width:min(92vw,520px);padding:10px 12px;font-size:14px;display:flex;position:absolute;transform:translate(-50%)}.pad-editor-bar span{flex:100%}.pad-editor-bar button{color:#e8eef7;background:#2b3a50;border:0;border-radius:999px;padding:8px 18px;font-weight:700}.pad-editor-bar button.primary{color:#1b2433;background:#ffd54a}.pad-ghost{color:#fff;text-shadow:0 1px 4px #000c;pointer-events:none;background:#ffffff1f;border:2px dashed #ffffffd9;border-radius:50%;justify-content:center;align-items:center;font-size:15px;font-weight:800;display:flex;position:absolute}.pad-ghost.on{background:#ffd54a38;border-color:#ffd54a}.chat-feed{left:max(12px, env(safe-area-inset-left));top:calc(max(10px, env(safe-area-inset-top)) + 104px);z-index:12;pointer-events:none;flex-direction:column;gap:4px;max-width:min(72vw,360px);display:flex;position:fixed}.chat-line{color:#e8eef7;overflow-wrap:anywhere;background:#0a1018a8;border-radius:10px;padding:4px 10px;font-size:13px;line-height:1.35;transition:opacity .8s;animation:.25s ease-out chat-in}.chat-line b{color:#ffd54a;font-weight:700}.chat-line.spec b{color:#8fd3ff}.chat-line b.tap{pointer-events:auto;cursor:pointer;text-underline-offset:3px;-webkit-text-decoration:underline dotted #ffffff59;text-decoration:underline dotted #ffffff59}.chat-line.sys{color:#9fb3c8;font-style:italic}.chat-menu{z-index:30;background:#0e1621f7;border:1px solid #ffffff2e;border-radius:12px;flex-direction:column;min-width:150px;padding:6px;display:flex;position:fixed;box-shadow:0 8px 24px #00000073}.chat-menu-title{color:#ffd54a;text-overflow:ellipsis;white-space:nowrap;max-width:200px;padding:4px 8px 6px;font-size:13px;font-weight:700;overflow:hidden}.chat-menu button{color:#e8eef7;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:9px 10px;font-size:14px}.chat-menu button:hover,.chat-menu button:active{background:#ffffff14}.chat-menu button.ghost{color:#9fb3c8}.chat-line.fade{opacity:0}@keyframes chat-in{0%{opacity:0;transform:translate(-10px)}}.chat-bar{left:50%;bottom:max(12px, env(safe-area-inset-bottom));z-index:12;flex-direction:column;gap:6px;width:min(94vw,520px);display:none;position:fixed;transform:translate(-50%)}.chat-bar.show{display:flex}.chat-quick{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.chat-quick button,.chat-row button{color:#e8eef7;font:inherit;cursor:pointer;background:#0a1018c7;border:1px solid #ffffff2e;border-radius:999px;padding:7px 12px;font-size:13px}.chat-row{gap:6px;display:flex}.chat-row input{color:#fff;min-width:0;font:inherit;background:#0a1018d9;border:1px solid #ffffff38;border-radius:999px;flex:1;padding:9px 12px;font-size:15px}.chat-row button{color:#1b2433;background:#ffd54a;font-weight:700}.chat-bar.cool button{opacity:.45}body.in-plaza #pauseBtn{display:none}.plaza-ui{z-index:14;pointer-events:none;font-size:14px;position:fixed;inset:0}.plaza-ui button{pointer-events:auto;font:inherit;cursor:pointer}.pz-exit{top:max(10px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));color:#e8eef7;background:#0a1018b8;border:1px solid #ffffff38;border-radius:12px;padding:9px 14px;position:absolute}.pz-drunk{top:max(12px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right));color:#ffe2a0;background:#0a1018b8;border-radius:999px;padding:7px 12px;font-weight:700;position:absolute}.pz-drunk:empty{display:none}.pz-drunk.s3,.pz-drunk.s4{color:#ff9b7a;animation:1.6s ease-in-out infinite pz-wobble}@keyframes pz-wobble{50%{transform:rotate(-4deg)translate(-3px)}}.pz-act{right:max(28px, calc(env(safe-area-inset-right) + 16px));bottom:max(40px, calc(env(safe-area-inset-bottom) + 28px));color:#fff;background:#0a1018c7;border:2px solid #ffd54ad9;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:112px;height:112px;animation:1.4s ease-in-out infinite pz-pulse;display:none;position:absolute;box-shadow:0 0 0 6px #ffd54a26}.pz-act.show{display:flex}.pz-act b{font-size:34px;line-height:1}.pz-act span{font-size:14px;font-weight:700}.pz-act:active{transform:scale(.94)}@keyframes pz-pulse{50%{box-shadow:0 0 0 12px #ffd54a0d}}.pz-practice{top:calc(max(10px, env(safe-area-inset-top)) + 52px);align-items:center;gap:8px;width:max-content;max-width:calc(100vw - 24px);display:none;position:absolute;left:50%;transform:translate(-50%)}.plaza-ui.practicing .pz-practice{display:flex}.plaza-ui.practicing .pz-exit,.plaza-ui.practicing .pz-act,.plaza-ui.practicing .pz-hint,.plaza-ui.practicing .pz-people{display:none}.pz-seg{border:1px solid #ffffff38;border-radius:999px;display:flex;overflow:hidden}.pz-seg button,.pz-leave{color:#e8eef7;white-space:nowrap;background:#0a1018c7;border:0;padding:8px 14px}@media (width<=420px){.pz-seg button,.pz-leave{padding:8px 11px}}.pz-seg button.on{color:#1b2433;background:#ffd54a;font-weight:700}.pz-leave{border:1px solid #ffffff38;border-radius:999px}.pz-toast{color:#fff;white-space:nowrap;opacity:0;background:#0a1018cc;border-radius:14px;padding:10px 18px;font-size:18px;font-weight:700;transition:opacity .3s,transform .3s;position:absolute;top:30%;left:50%;transform:translate(-50%,-8px)}.pz-toast.show{opacity:1;transform:translate(-50%)}.pz-hint{left:50%;bottom:max(14px, env(safe-area-inset-bottom));color:#e8eef7;text-align:center;background:#0a1018a8;border-radius:12px;width:min(92vw,560px);padding:8px 12px;font-size:13px;transition:opacity 1s;position:absolute;transform:translate(-50%)}.pz-hint.fade{opacity:0}.chat-toggle{top:calc(max(10px, env(safe-area-inset-top)) + 46px);right:max(12px, env(safe-area-inset-right));z-index:15;cursor:pointer;background:#0a1018b8;border:1px solid #ffffff38;border-radius:12px;width:42px;height:42px;font-size:20px;display:none;position:fixed}.chat-toggle.show{display:block}.chat-bar.plaza{z-index:15;bottom:calc(max(12px, env(safe-area-inset-bottom)) + 160px)}.chat-feed.plaza{top:calc(max(10px, env(safe-area-inset-top)) + 54px)}.pz-labels{z-index:11;pointer-events:none;position:fixed;inset:0;overflow:hidden}.pz-tag{will-change:transform;flex-direction:column;align-items:center;gap:3px;display:flex;position:absolute;top:0;left:0}.pz-name{color:#fff;white-space:nowrap;background:#0a101899;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700}.pz-speech{z-index:11;pointer-events:none;position:fixed;inset:0;overflow:hidden}.pz-say{color:#1b2433;overflow-wrap:anywhere;will-change:translate;max-width:min(230px,64vw);transform-origin:var(--tail,50%) 100%;background:#fff;border-radius:13px;padding:6px 11px;font-size:15px;font-weight:500;line-height:1.35;animation:.26s ease-out say-pop;position:absolute;top:0;left:0;box-shadow:0 2px 10px #0000004d}.pz-say:after{content:"";left:var(--tail,50%);background:#fff;border-radius:2px;width:12px;height:12px;margin-left:-6px;position:absolute;bottom:-6px;transform:rotate(45deg)}.pz-say.sticker{padding:2px 8px;font-size:32px;line-height:1.15}@keyframes say-pop{0%{scale:.5}70%{scale:1.08}to{scale:1}}.chat-feed.plaza{max-width:min(64vw,300px)}.chat-feed.plaza .chat-line{padding:3px 9px;font-size:12px}.pz-count{color:#fff;text-shadow:0 2px 10px #0009;flex-direction:column;align-items:center;gap:4px;display:none;position:absolute;top:22%;left:50%;transform:translate(-50%)}.pz-count.show{display:flex}.pz-count b{color:#ffd54a;font-size:72px;line-height:1}.pz-count span{background:#0a1018b3;border-radius:12px;padding:6px 14px;font-size:15px;font-weight:700}.pz-people{top:calc(max(10px, env(safe-area-inset-top)) + 8px);left:calc(max(12px, env(safe-area-inset-left)) + 128px);color:#e8eef7;white-space:nowrap;background:#0a101899;border-radius:999px;padding:5px 12px;font-size:12px;position:absolute}.pz-people:empty,.plaza-ui.matching .pz-exit,.plaza-ui.matching .pz-act,.plaza-ui.matching .pz-hint,.plaza-ui.matching .pz-people,.menu-picker{display:none}.pz-rematch{color:#fff;text-align:center;pointer-events:auto;background:#0a1018e0;border:1px solid #ffffff2e;border-radius:16px;flex-direction:column;align-items:center;gap:8px;width:min(88vw,340px);padding:14px 16px;display:none;position:absolute;top:34%;left:50%;transform:translate(-50%)}.pz-rematch.show{display:flex}.pz-rematch b{font-size:20px}.pz-rematch span{color:#c9d3e0;font-size:13px}.pz-rematch-btns{gap:8px;width:100%;display:flex}.pz-rematch-btns button{color:#fff;background:#ffffff14;border:1px solid #ffffff38;border-radius:12px;flex:1;padding:10px 8px;font-size:15px}.pz-rematch-btns button.primary{color:#1b2433;background:#ffd54a;border:0;font-weight:700}.pz-rematch-btns button:disabled{opacity:.45}.chat-bar.player{z-index:15;top:calc(max(10px, env(safe-area-inset-top)) + 56px);bottom:auto}.chat-bar.player .chat-quick button{padding:6px 11px;font-size:15px}.head-bubbles{z-index:11;pointer-events:none;position:fixed;inset:0;overflow:hidden}.head-bubble{transform-origin:0 0;color:#1b2433;overflow-wrap:anywhere;background:#fff;border-radius:12px;max-width:200px;padding:5px 10px;font-size:14px;line-height:1.3;position:absolute;top:0;left:0;transform:translate(-50%,-100%);box-shadow:0 2px 8px #00000040}.head-bubble.sticker{padding:2px 8px;font-size:34px;line-height:1.15}.head-bubble.pop{animation:.28s ease-out head-pop}@keyframes head-pop{0%{scale:.4}70%{scale:1.12}to{scale:1}}.pz-cheer{top:calc(max(10px, env(safe-area-inset-top)) + 232px);right:max(12px, env(safe-area-inset-right));color:#fff;white-space:nowrap;background:#0a1018c7;border:1px solid #ffffff29;border-radius:14px;flex-direction:column;align-items:stretch;gap:6px;max-width:9.5em;padding:7px;font-size:13px;display:none;position:absolute}.pz-cheer.show{display:flex}.pz-cheer button{text-overflow:ellipsis;color:#1b2433;min-width:0;max-width:8.5em;font:inherit;cursor:pointer;background:#ffd54a;border:0;border-radius:999px;flex:0 auto;padding:6px 12px;font-weight:700;overflow:hidden}.pz-cheer button.hit{animation:.35s ease-out cheer-hit}.pz-cheer button.wait{animation:.6s ease-out cheer-wait}@keyframes cheer-hit{50%{scale:1.15}}@keyframes cheer-wait{0%{opacity:.4}}.plaza-ui.matching .pz-cheer{display:none}.pz-cheers{right:max(12px, env(safe-area-inset-right));pointer-events:none;flex-direction:column;align-items:flex-end;gap:4px;display:flex;position:absolute;top:34%}.pz-cheers div{color:#e8eef7;background:#0a1018b3;border-radius:999px;padding:4px 10px;font-size:13px;animation:3.2s ease-out forwards cheer-float}.pz-cheers div.mine{color:#1b2433;background:#ffd54aeb;font-weight:700}@keyframes cheer-float{0%{opacity:0;translate:0 14px}12%{opacity:1;translate:0}75%{opacity:1}to{opacity:0;translate:0 -18px}}.setup-nick{margin:0 0 14px}.pz-view{right:max(28px, calc(env(safe-area-inset-right) + 16px));bottom:max(166px, calc(env(safe-area-inset-bottom) + 154px));color:#fff;cursor:pointer;background:#0a1018c7;border:1px solid #ffffff40;border-radius:999px;width:112px;padding:9px 0;font-size:14px;display:none;position:absolute}.pz-view.show{display:block}.picker-top{flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 8px;display:flex}.sex-seg{width:max-content;margin:0}.picker-top .sex-seg{margin:0}.dress-open{border:1px solid var(--accent);color:var(--accent);font:inherit;cursor:pointer;background:#ffd54a1f;border-radius:10px;padding:6px 14px;font-size:14px;font-weight:700}.dress-panel{gap:12px;width:min(880px,100%);display:grid}.dress-head{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.dress-head h2{margin:0}.dress-who{color:var(--muted);font-size:14px}.dress-body{grid-template-columns:minmax(0,300px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.dress-stage{border:1px solid var(--line);background:linear-gradient(#22304a 0%,#1a2638 70%,#152030 100%);border-radius:14px;height:min(440px,62vh);position:relative;overflow:hidden}.dress-stage canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block}.dress-hint{text-align:center;color:var(--muted);pointer-events:none;margin:0;font-size:12px;position:absolute;bottom:8px;left:0;right:0}.dress-side{gap:10px;min-width:0;display:grid}.dress-lock{color:var(--muted);margin:0;font-size:13px}.dress-tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;padding-bottom:8px;display:flex}.dress-tabs button{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:6px 12px;font-size:15px;font-weight:700}.dress-tabs button.on{background:var(--accent);color:#1a1a1a}.dress-opts{gap:14px;min-height:150px;display:grid}.dress-group{gap:7px;display:grid}.dress-label{color:var(--muted);font-size:13px;font-weight:700}.dress-chips{flex-wrap:wrap;gap:6px;display:flex}.dress-chips button,.dress-num button{border:1px solid var(--line);color:var(--text);font:inherit;cursor:pointer;background:#ffffff0f;border-radius:10px;padding:6px 11px;font-size:14px}.dress-chips button.on{background:var(--accent);border-color:var(--accent);color:#1a1a1a;font-weight:700}.dress-fx{gap:4px;font-size:14px;display:grid}.dress-fx>div{background:#ffffff0a;border-radius:8px;justify-content:space-between;gap:12px;padding:3px 10px;display:flex}.dress-fx b{font-variant-numeric:tabular-nums;color:var(--muted)}.dress-fx .up b{color:var(--good)}.dress-fx .down b{color:#ff8a7a}.dress-num{align-items:center;gap:10px;display:flex}.dress-num b{text-align:center;font-variant-numeric:tabular-nums;min-width:2.2em;font-size:20px}.dress-num button{width:40px;padding:4px 0;font-size:18px}.dress-btns{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.dress-btns button{border:1px solid var(--line);color:var(--text);font:inherit;cursor:pointer;background:#ffffff0f;border-radius:12px;padding:10px 16px;font-size:15px}.dress-panel .dress-btns button.primary{background:var(--accent);color:#1a1a1a;border:0;min-width:96px;margin-top:0;font-weight:700}@media (width<=680px){.dress-body{grid-template-columns:minmax(0,1fr)}.dress-stage{height:min(300px,40vh)}.dress-btns{justify-content:stretch}.dress-btns button{flex:auto}}.sex-seg button{padding:6px 18px}.pz-cheer>span{text-align:center;font-weight:700}@media (height<=520px){.pz-cheer{top:auto;bottom:max(44px, calc(env(safe-area-inset-bottom) + 32px));right:calc(max(28px, calc(env(safe-area-inset-right) + 16px)) + 124px);border-radius:999px;flex-direction:row;align-items:center;max-width:none;padding:5px 6px 5px 12px}.pz-cheer button{max-width:6.5em}}.pz-travel{z-index:90;color:#fff;text-shadow:0 2px 8px #0006;opacity:0;pointer-events:none;background:linear-gradient(#f7c6d3f0,#a0506ef5);flex-direction:column;justify-content:center;align-items:center;gap:8px;transition:opacity .45s;display:flex;position:fixed;inset:0;overflow:hidden}.pz-travel.show{opacity:1;pointer-events:auto}.pz-travel b{font-size:28px}.pz-travel span{font-size:15px}.pz-travel i{border-radius:60% 40%;width:14px;height:10px;animation:linear forwards pz-petal;position:absolute;top:-20px}@keyframes pz-petal{to{transform:translate(var(--dx), 110vh) rotate(540deg)}}@media (prefers-reduced-motion:reduce){.pz-travel{transition:none}}.pz-map{top:calc(max(10px, env(safe-area-inset-top)) + 96px);right:max(12px, env(safe-area-inset-right));pointer-events:auto;border:1px solid #ffffff38;border-radius:10px;line-height:0;position:absolute;overflow:hidden;box-shadow:0 2px 10px #00000040}.pz-map canvas{cursor:pointer;display:block}.pz-map-btn{cursor:pointer;background:#0a1018b8;border:0;width:42px;height:42px;font-size:20px;display:none}.pz-map.closed{border-radius:12px}.pz-map.closed canvas{display:none}.pz-map.closed .pz-map-btn{display:block}.plaza-ui.practicing .pz-map,.plaza-ui.matching .pz-map{display:none}@media (height<=520px){.pz-map{top:calc(max(10px, env(safe-area-inset-top)) + 46px);right:calc(max(12px, env(safe-area-inset-right)) + 52px)}}.pz-act.pz-act2{right:max(152px, calc(env(safe-area-inset-right) + 140px));bottom:max(48px, calc(env(safe-area-inset-bottom) + 36px));width:88px;height:88px;animation:none}.pz-act.pz-act2 b{font-size:26px}.pz-act.pz-act2 span{font-size:13px}:root{--go-board:min(40vw, calc(100vh - 190px), 560px)}@media (orientation:portrait){:root{--go-board:min(86vw, calc(100vh - 400px), 520px)}}.go-panel{z-index:16;left:max(12px, env(safe-area-inset-left));top:calc(max(10px, env(safe-area-inset-top)) + 54px);color:#e8eef7;width:var(--go-board);box-sizing:content-box;background:#0c121adb;border:1px solid #ffffff24;border-radius:16px;flex-direction:column;gap:6px;padding:10px;font-size:14px;display:none;position:fixed}.go-panel.show{display:flex}@media (orientation:portrait){.go-panel{left:50%;top:calc(max(10px, env(safe-area-inset-top)) + 122px);transform:translate(-50%)}body.go-open .pz-map{display:none}}.go-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.go-head b{white-space:nowrap;font-size:15px}.go-head span{color:#b9c6d6;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.go-status{color:#cfd9e6;font-weight:700}.go-status.turn{color:#ffd54a}.go-board{width:var(--go-board);height:var(--go-board);touch-action:none;cursor:pointer;border-radius:6px;box-shadow:0 2px 10px #00000059}.go-btns{gap:8px;display:flex}.go-btns button{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff38;border-radius:12px;flex:1;padding:9px 8px;font-size:15px}.go-btns button.primary{color:#1b2433;background:#ffd54a;border:0;font-weight:700}.go-note{color:#9fb3c8;font-size:12px}.go-note:empty{display:none}@media (orientation:landscape){body.go-open .chat-feed{left:calc(var(--go-board) + 46px)}}.pz-friends{top:calc(max(10px, env(safe-area-inset-top)) + 46px);right:calc(max(12px, env(safe-area-inset-right)) + 50px);z-index:15;cursor:pointer;background:#0a1018b8;border:1px solid #ffffff38;border-radius:12px;justify-content:center;align-items:center;width:42px;height:42px;font-size:20px;display:none;position:fixed}body.in-plaza[data-mode=plaza] .pz-friends.ready{display:flex}body.has-ticker .pz-friends{top:calc(max(10px, env(safe-area-inset-top)) + 70px)}body.go-open .pz-friends{display:none!important}.pz-friends.has-rq:after,#friendsBtn.has-rq:after{content:attr(data-rq);color:#fff;text-align:center;background:#e8402f;border-radius:9px;min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:700;line-height:18px;position:absolute;top:-6px;right:-6px}#friendsBtn{position:relative}.friends .panel{max-height:calc(100vh - 32px);overflow-y:auto}.fr-mine{flex-wrap:wrap;align-items:center;gap:10px;font-size:14px;display:flex}.fr-code{letter-spacing:2px;color:#ffd54a;font-variant-numeric:tabular-nums;font-size:22px}.panel button.fr-copy{width:auto;margin:0;padding:6px 12px;font-size:14px}.fr-add{gap:8px;margin-top:8px;display:flex}.fr-add input,.fr-pw input,#setup input.setup-input{box-sizing:border-box;color:#fff;-webkit-text-fill-color:#fff;caret-color:#ffd54a;width:100%;min-width:0;font:inherit;background:#ffffff1a;border:1px solid #ffffff38;border-radius:10px;flex:1;padding:10px 12px;font-size:16px}.panel .fr-add button,.panel .fr-row button,.panel .fr-pw button{white-space:nowrap;width:auto;margin:0;padding:8px 12px;font-size:14px}.fr-list{flex-direction:column;gap:6px;margin-top:10px;display:flex}.fr-row{background:#ffffff0d;border-radius:12px;align-items:center;gap:8px;padding:8px 10px;display:flex}.fr-row.on{background:#50c8781a}.fr-info{flex-direction:column;flex:1;min-width:0;display:flex}.fr-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:700;overflow:hidden}.fr-where{color:var(--muted,#9fb3c8);font-size:13px}.fr-empty{color:var(--muted,#9fb3c8);padding:4px 2px;font-size:13px}.fr-pw{gap:8px;display:flex}.panel button.fr-del{padding:8px 10px}.pz-invite{z-index:14;top:calc(max(10px, env(safe-area-inset-top)) + 40px);left:calc(max(12px, env(safe-area-inset-left)) + 128px);color:#ffd54a;cursor:pointer;background:#0a1018b3;border:1px solid #ffd54a80;border-radius:999px;padding:4px 10px;font-size:12px;display:none;position:fixed}body.in-plaza[data-mode=plaza] .pz-invite.show{display:block}body.has-ticker .pz-invite{top:calc(max(10px, env(safe-area-inset-top)) + 64px)}body.go-open .pz-invite{display:none!important}.panel .fr-row button.ghost,.panel .fr-copy{color:#e8eef7;cursor:pointer;background:#ffffff12;border:1px solid #fff3;border-radius:10px}.fr-row .fr-info{text-align:left}.panel.small.online-panel{width:min(400px,100%)}.online-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:4px;display:grid}.panel.small .online-grid button.og{border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:96px;margin:0;padding:12px 8px;display:flex}.online-grid .og b{white-space:nowrap;font-size:17px}.online-grid .og small{opacity:.78;font-size:12px;font-weight:500;line-height:1.35}.join-row.go-row{margin-top:16px}.join-row.go-row input{letter-spacing:8px;font-size:30px}.join-row.go-row input::placeholder{letter-spacing:1px;font-size:17px}.join-row.go-row button{margin-top:8px}#codePickTitle{color:#ffd54a;letter-spacing:3px}.code-pick{text-align:left}.cp-card{border:1px solid var(--line);background:#ffffff0d;border-radius:12px;margin-top:6px;padding:10px 12px}.cp-card+.cp-card,.cp-why+.cp-card,button+.cp-card{margin-top:16px}.cp-kind{color:var(--muted);font-size:12px}.cp-main{overflow-wrap:anywhere;margin-top:2px;font-size:16px;font-weight:700}.cp-sub{color:var(--muted);margin-top:2px;font-size:13px}.cp-why{color:var(--muted);text-align:center;margin:6px 0 0;font-size:12px;line-height:1.5}.cp-none{text-align:center;margin:6px 0;font-size:18px;font-weight:700}.cp-wait{text-align:center;color:var(--muted);padding:18px 0}.panel.small .code-pick button.primary{margin-top:12px}.setup-quick{background:#ffd54a1a;border:1px solid #ffd54a59;border-radius:12px;align-items:center;gap:10px;margin:0 0 12px;padding:10px 12px;display:flex}.setup-quick span{overflow-wrap:anywhere;flex:1;min-width:0;font-size:13px;line-height:1.45}.panel .setup-quick button.primary{font:inherit;white-space:nowrap;cursor:pointer;border-radius:10px;flex:none;margin:0;padding:10px 14px;font-size:15px;font-weight:700}.lobby-room.plaza-row .code{letter-spacing:0;text-align:center;width:36px;font-size:26px}@media (width<=420px){.lobby-room.plaza-row{grid-template-columns:auto 1fr auto;grid-template-areas:"code main acts""code sub acts"}.panel .lobby-room.plaza-row .acts button{flex:none}}.lobby-sep{letter-spacing:1px;color:var(--muted);margin:8px 2px 0;font-size:12px}.setup-grid.plaza-new{margin:-6px 0 10px}.pz-setup{z-index:12;top:calc(max(10px, env(safe-area-inset-top)) + 100px);color:#e8eef7;-webkit-user-select:none;user-select:none;background:#0a1018db;border:1px solid #ffffff2e;border-radius:14px;width:min(400px,100vw - 24px);padding:10px 12px;font-size:13px;line-height:1.4;display:none;position:fixed;left:50%;transform:translate(-50%)}.pz-setup.show{display:block}.pzs-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.pzs-head b{font-size:14px}.pzs-head span,.pzs-row>span,.pzs-foot span{color:#9aa8b8;font-size:12px}.pzs-seg{flex-wrap:wrap;gap:4px;display:flex}.pzs-seg button{color:#e8eef7;font:inherit;white-space:nowrap;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff38;border-radius:999px;flex:auto;padding:6px 8px;font-size:12px}.pzs-seg button.on{color:#fff;background:#2f7fe0;border-color:#2f7fe0}.pzs-seg.diff button[data-v=extreme].on{background:#e8862a;border-color:#e8862a}.pzs-seg.diff button[data-v=hell].on{background:#c8222a;border-color:#c8222a}.pzs-row{align-items:center;gap:6px;margin-top:6px;display:flex}.pzs-row>span{flex:none}.pzs-row .pzs-seg{flex:1;min-width:0}.pzs-mode{margin:0;font-weight:700}.pzs-note{color:#ffb0a0;margin:4px 0}.pzs-line{background:#ffffff0d;border-radius:10px;gap:2px;margin-top:8px;padding:6px 8px;display:grid}.pzs-line div{gap:8px;min-width:0;display:flex}.pzs-line b{flex:none;font-size:12px}.pzs-line span{overflow-wrap:anywhere;min-width:0}.pzs-line .south b{color:#7cc0ff}.pzs-line .north b{color:#ffb07a}.pzs-foot{align-items:center;gap:10px;margin-top:8px;display:flex}.pzs-foot span{line-height:1.35}.pzs-foot button.pzs-ready{color:#1a1a1a;font:inherit;white-space:nowrap;cursor:pointer;background:#ffd54a;border:0;border-radius:10px;flex:none;padding:8px 14px;font-size:14px;font-weight:700}.pzs-foot button.pzs-ready.on{background:#3ccf7a}.pzs-foot button.pzs-ready:disabled{opacity:.55;cursor:default}body.pz-setting .pz-map,body.pz-setting .pz-map-btn,body.pz-setting .pz-cheer{display:none}body.pz-setting .pz-count{top:52%}.pz-slots{z-index:11;pointer-events:none;position:fixed;inset:0;overflow:hidden}.pz-slot{color:#fff;white-space:nowrap;will-change:transform;background:#2f7fe0db;border-radius:8px;padding:2px 7px;font-size:11px;font-weight:700;position:absolute;top:0;left:0}.pz-slot.t1{background:#e17428e0}.pz-slot.ai{background:#545e6edb}.pz-slot.me{box-shadow:0 0 0 2px #ffd54a}@media (height<=500px){.pz-setup{top:calc(max(8px, env(safe-area-inset-top)) + 48px);left:auto;right:calc(max(12px, env(safe-area-inset-right)) + 112px);width:min(380px,56vw);max-height:calc(100vh - 64px);padding:8px 10px;overflow-y:auto;transform:none}.pzs-row,.pzs-foot,.pzs-line{margin-top:5px}}#setup input.setup-input{font-size:16px}#setupMsg:empty{display:none}#setupMsg{margin:-4px 0 10px}body.in-plaza[data-pz-panel] .plaza-ui,body.in-plaza[data-pz-panel] .pz-setup,body.in-plaza[data-pz-panel] .go-panel,body.in-plaza[data-pz-panel] .chat-feed,body.in-plaza[data-pz-panel] .chat-bar,body.in-plaza[data-pz-panel] .chat-toggle,body.in-plaza[data-pz-panel] .chat-menu,body.in-plaza[data-pz-panel] .pz-friends,body.in-plaza[data-pz-panel] .pz-invite,body.in-plaza[data-pz-panel] .pz-labels,body.in-plaza[data-pz-panel] .pz-speech,body.in-plaza[data-pz-panel] .pz-slots,body.in-plaza[data-pz-panel] .head-bubbles{display:none!important}body.pz-setting .chat-feed.plaza .chat-line:not(:last-child){display:none}.market-pick{margin-bottom:4px}.market-opts{grid-template-columns:1fr 1fr;gap:6px;display:grid}.market-opt{border:1px solid var(--line);border-radius:10px;min-width:0;display:flex;overflow:hidden}.market-opt button{color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;font-size:14px}.market-opt .market-name{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;padding:8px 10px;overflow:hidden}.market-opt .market-play{border-left:1px solid var(--line);flex:none;width:40px}.market-opt.on .market-name{background:var(--me);color:#fff}.market-opt.playing .market-play{color:#ffd54a;background:#ffd54a38}.market-hint{margin-top:6px}.pz-tag.ai .pz-name{color:#d9fbff;background:#124a54c7;box-shadow:0 0 0 1px #78e6f08c}.pzs-npc-eta{color:#9fe8f0}.pzs-foot button.pzs-cancel{color:#e8eef7;font:inherit;cursor:pointer;background:0 0;border:1px solid #ffffff40;border-radius:10px;flex:none;margin-left:auto;padding:7px 10px;font-size:12px}.pzs-call{color:#d9fbff;width:100%;font:inherit;cursor:pointer;background:#124a5459;border:1px dashed #78e6f099;border-radius:10px;margin-top:8px;padding:7px 10px;font-size:12px}.legal-links{flex-wrap:wrap;justify-content:center;gap:2px 6px;margin-top:14px;font-size:12px;line-height:1.6;display:flex}.legal-links a+a:before{content:"・";color:var(--muted);opacity:.6;margin-right:6px;display:inline-block}.legal-links a{padding:4px 2px}.legal-links a,.legal-note a{color:var(--muted);text-underline-offset:2px;-webkit-text-decoration:underline #9aa8b873;text-decoration:underline #9aa8b873}.legal-links a:hover,.legal-note a:hover{color:var(--text)}.legal-note{color:var(--muted);margin:-6px 0 10px;font-size:12px;line-height:1.5}#setupNickRow[style*=none]+.legal-note{display:none}
