html,body,#app{width:100%;height:100%;margin:0;touch-action:none;overscroll-behavior:none}:root{color-scheme:dark}body{overflow:hidden;overscroll-behavior:none;background:#111;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;user-select:none;-webkit-user-select:none}button,input,select{font:inherit}.hidden{display:none!important}canvas{display:block;touch-action:none}.debug,.controls{position:fixed;z-index:5;padding:10px 12px;color:#f4f4f4;background:#000000ad;border:1px solid rgba(255,255,255,.08);border-radius:8px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.debug{position:fixed;top:44px;left:max(12px,env(safe-area-inset-left));max-width:min(560px,calc(100vw - 24px));font-size:12px;line-height:1.5;white-space:pre-wrap;pointer-events:none}.debug.collapsed{display:none}.controls{z-index:12;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));width:min(320px,calc(100vw - 48px));max-height:calc(100vh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto;font-size:12px}.controls-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.controls-title{font-weight:700;font-size:14px}.collapse-button,.hud-button,.wide-control-button,.buttons button{color:#f5f5f5;background:#ffffff14;border:1px solid rgba(255,255,255,.14);border-radius:7px}.collapse-button{padding:4px 8px}.wide-control-button{width:100%;margin:0;padding:8px 10px}.gate-action-buttons{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:-2px 0 10px}.gate-action-buttons .wide-control-button:disabled{opacity:.42}.gate-source-link{display:flex;align-items:center;justify-content:center;box-sizing:border-box;text-decoration:none;text-align:center}.gate-source-link.hidden{display:none}.controls-body{margin-top:10px}.controls.collapsed{width:auto}.controls.collapsed .controls-body{display:none}.controls label{display:block;margin-bottom:5px}.controls select{display:block;width:100%;margin-top:5px;padding:7px;color:#f5f5f5;background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:6px}.profile-note{margin:0 0 10px;color:#bdbdbd;line-height:1.4}.calibration-settings{margin:0 0 12px;padding:8px;border:1px solid rgba(255,255,255,.13);border-radius:9px;background:#ffffff09}.calibration-settings summary{padding:2px 0;cursor:pointer;color:#f1f1f1;font-weight:700;touch-action:manipulation}.calibration-settings[open] summary{margin-bottom:8px}.calibration-device-note{margin-bottom:8px;font-size:10px}.calibration-settings label{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:8px;margin-bottom:2px}.calibration-settings label span{color:#fff;font-variant-numeric:tabular-nums}.calibration-settings input[type=range]{grid-column:1 / -1;margin:2px 0 7px}.calibration-preview-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:3px 0 7px}.calibration-preview-buttons button{min-width:0;padding:7px 3px;color:#f5f5f5;background:#ffffff14;border:1px solid rgba(255,255,255,.14);border-radius:7px;font-size:9px;touch-action:manipulation}.controls input[type=range]{width:100%;margin:0 0 12px}.buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.buttons button{padding:8px 7px}.buttons button:disabled{opacity:.42;cursor:default}.buttons.secondary{margin-top:8px}#camera-drag.active,.camera-view-option.active,#elevation-toggle.active,#move-balls.active,#chat-toggle.active{background:#67a8ff42;border-color:#8bbfff8c}canvas.move-balls{cursor:grab}canvas.dragging-ball{cursor:grabbing}#camera-reset{grid-column:auto}.camera-view-group{display:inline-grid;grid-template-columns:repeat(3,36px);flex:0 0 auto;align-items:stretch;gap:2px;padding:3px;border:1px solid rgba(220,231,224,.12);border-radius:8px;background:#0000002e}.camera-view-option{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:40px;padding:2px 0;color:#f5f7f4;border:1px solid transparent;border-radius:6px;background:transparent;line-height:1;touch-action:manipulation}.camera-view-option span{font-size:17px}.camera-view-option small{font-size:8px;font-weight:800;letter-spacing:-.2px}.slow-motion{margin-top:10px}.game-top-bar{display:flex;align-items:flex-start;justify-content:center;gap:8px;flex:0 0 auto}.mechanical-scoreboard{position:relative;box-sizing:border-box;width:clamp(210px,23vw,274px);padding:7px;color:#f7ead3;background:linear-gradient(90deg,rgba(255,255,255,.14),transparent 12%,transparent 88%,rgba(0,0,0,.2)),repeating-linear-gradient(7deg,#ffffff09 0 1px,#46231209 1px 4px),linear-gradient(145deg,#b17a55,#75462e 58%,#9b6847);border:1px solid #c99a73;border-radius:3px;box-shadow:inset 0 0 0 2px #411f1159,inset 0 0 0 4px #f4cda71f,0 8px 24px #00000061;transition:width .16s ease}.mechanical-scoreboard.compact-score{width:164px;padding:5px}.mechanical-scoreboard[data-feedback=score]{animation:scoreboard-score .72s ease-out}.mechanical-scoreboard[data-feedback=turn]{animation:scoreboard-turn .62s ease-out}.mechanical-scoreboard[data-feedback=foul]{animation:scoreboard-foul .72s ease-out}@keyframes scoreboard-score{0%,to{transform:translateY(0);filter:brightness(1)}35%{transform:translateY(-3px) scale(1.035);filter:brightness(1.35)}}@keyframes scoreboard-turn{0%,to{transform:translate(0)}35%{transform:translate(3px)}65%{transform:translate(-2px)}}@keyframes scoreboard-foul{0%,to{transform:translate(0);filter:none}25%{transform:translate(-3px);filter:saturate(1.7)}55%{transform:translate(3px);filter:saturate(1.7)}}.shot-feedback{position:fixed;z-index:8;top:clamp(92px,18vh,180px);left:50%;display:grid;min-width:min(280px,calc(100vw - 40px));padding:13px 24px 15px;box-sizing:border-box;transform:translate(-50%,-14px) scale(.94);opacity:0;pointer-events:none;text-align:center;color:#fff;background:linear-gradient(135deg,#090c0ed6,#16191bb3);border:1px solid rgba(255,255,255,.16);border-radius:14px;box-shadow:0 16px 42px #0000005c;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}.shot-feedback.visible{animation:shot-feedback-in 1.85s ease both}.shot-feedback-eyebrow{font-size:10px;font-weight:700;letter-spacing:.18em;opacity:.72}.shot-feedback-title{margin:2px 0;font-family:system-ui,-apple-system,sans-serif;font-size:30px;line-height:1;text-shadow:0 3px 18px currentColor}.shot-feedback-detail{font-size:11px;opacity:.78}.shot-feedback-score{color:#ffd57b;border-color:#ffce6373}.shot-feedback-turn{color:#d9e7f0;border-color:#b3d7eb52}.shot-feedback-foul{color:#ff917d;border-color:#ff6f5775}@keyframes shot-feedback-in{0%{opacity:0;transform:translate(-50%,-14px) scale(.94)}14%,72%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,7px) scale(.985)}}.phase12-home-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.feature-overlay{position:fixed;inset:0;z-index:110;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));box-sizing:border-box;overflow:auto;color:var(--ui-ivory);background:radial-gradient(circle at 50% 16%,rgba(31,105,87,.24),transparent 42%),#050b0de6;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);touch-action:pan-y}.feature-card{width:min(680px,100%);max-height:min(780px,100%);overflow:auto;box-sizing:border-box;padding:26px;border:1px solid rgba(224,190,128,.28);border-radius:22px;background:linear-gradient(145deg,#1b2d2afa,#0b1818fa);box-shadow:0 28px 90px #00000085,inset 0 1px #ffffff0a;touch-action:pan-y}.feature-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:18px;border-bottom:1px solid rgba(224,190,128,.15)}.feature-kicker{color:var(--ui-gold-soft);font-size:10px;font-weight:900;letter-spacing:.18em}.feature-card h2{margin:5px 0 0;font:800 clamp(25px,5vw,36px)/1.05 Georgia,serif;letter-spacing:-.035em}.feature-close,.feature-card button{min-height:42px;padding:9px 13px;color:var(--ui-ivory);background:#fff1;border:1px solid rgba(224,190,128,.22);border-radius:10px;font-weight:800;cursor:pointer}.feature-card button:disabled{opacity:.38;cursor:default}.feature-close{flex:0 0 42px;width:42px;padding:0}.help-step{min-height:280px;padding:30px 6px 22px;color:var(--ui-text);font:500 15px/1.75 system-ui,-apple-system,sans-serif;user-select:text;-webkit-user-select:text}.help-step h3{margin:0 0 17px;color:var(--ui-ivory);font:800 23px/1.2 Georgia,serif}.help-step p{margin:0 0 14px}.help-step ul{margin:0;padding-left:21px}.help-step li+li{margin-top:7px}.help-visual{margin:0 0 22px;overflow:hidden;border:1px solid rgba(224,190,128,.22);border-radius:16px;background:radial-gradient(circle at 50% 0,rgba(141,217,189,.12),transparent 50%),#030d0c94;box-shadow:inset 0 1px #ffffff0a,0 14px 38px #0000003d}.help-visual svg{display:block;width:100%;height:auto}.help-visual figcaption{padding:11px 15px 13px;color:#f5ecd8c7;border-top:1px solid rgba(224,190,128,.13);background:#ffffff06;font-size:12px;line-height:1.5}.help-visual svg text{fill:#f7efdc;font-family:Inter,Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;pointer-events:none;-webkit-user-select:none;user-select:none}.help-arrow-head{fill:#e5c36c}.help-table-rail{fill:#5a3827;stroke:#c59858;stroke-width:3}.help-table-bed{fill:#176f57;stroke:#dcf4e647;stroke-width:2}.help-table-center{stroke:#ffffff29;stroke-width:2;stroke-dasharray:6 8}.help-ball{stroke:#050a09b8;stroke-width:3}.help-ball-white{fill:#f3efe2}.help-ball-yellow{fill:#f1cf4c}.help-ball-red{fill:#c8493f}.help-callout-line{fill:none;stroke:#efd292b8;stroke-width:2}.help-label-chip rect{fill:#04120fe0;stroke:#8dd9bd7a}.help-label-chip-gold rect{stroke:#e5c36c9e}.help-label-chip text,.help-svg-label,.help-svg-kicker,.help-device text,.help-room-code text,.help-reconnect-chip text,.help-replay-controls text{text-anchor:middle;font-size:14px;font-weight:800}.help-svg-small{text-anchor:middle;fill:#ebf1ebb8!important;font-size:11px;font-weight:700}.help-svg-kicker{fill:#e5c36c!important;font-size:11px;letter-spacing:.12em}.help-cue{stroke:#cf9b60;stroke-width:12;stroke-linecap:round}.help-aim-line{stroke:#ffffffc2;stroke-width:3;stroke-dasharray:9 8}.help-ghost-ball{fill:#ffffff14;stroke:#ffffffb8;stroke-width:3;stroke-dasharray:6 5}.help-contact-line{stroke:#e5c36c;stroke-width:3}.help-contact-dot{fill:#fff2b3;stroke:#7d5321;stroke-width:2}.help-dimension-line{stroke:#e5c36c;stroke-width:2}.help-spin-limit{fill:none;stroke:#db8d43;stroke-width:7;stroke-dasharray:8 7}.help-ball-axis{stroke:#27312d3d;stroke-width:2}.help-tip-dot{fill:#de543f;stroke:#fff3d6;stroke-width:4}.help-spin-arrow{fill:none;stroke:#e5c36c;stroke-width:4}.help-control-track{fill:#051411db;stroke:#8dd9bd61;stroke-width:2}.help-control-line{stroke:#fff3;stroke-width:8;stroke-linecap:round}.help-control-handle{fill:#d6ad67;stroke:#f3da9f;stroke-width:3}.help-control-handle-ghost{fill:#d6ad6724;stroke-dasharray:5 5}.help-stroke-down{stroke:#91c8e6;stroke-width:4}.help-stroke-up,.help-speed-line{stroke:#e5c36c;stroke-width:5}.help-speed-meter rect:first-of-type{fill:#ffffff1a}.help-speed-meter rect:nth-of-type(2){fill:#d7b55f}.help-speed-meter text{fill:#f5ecd8b8;font-size:11px}.help-camera-card>rect{fill:#ffffff0b;stroke:#d0e4d82e;stroke-width:2}.help-camera-card-active>rect{fill:#26a67d2e;stroke:#8dd9bd94}.help-person-icon{fill:#e5c36c;stroke:#fff1c4;stroke-width:1.5}.help-mini-table{fill:#1b765d!important;stroke:#c59858!important;stroke-width:4!important}.help-compass{fill:#e5c36c;stroke:#fff1c4;stroke-width:2}.help-replay-path{fill:none;stroke:#f1dc9c;stroke-width:3;stroke-dasharray:7 5}.help-replay-controls rect{fill:#04120feb;stroke:#e5c36c6b}.help-replay-controls text{font-size:13px}.help-device>rect:first-of-type{fill:#111d1b;stroke:#b98954;stroke-width:3}.help-device>rect:nth-of-type(2){fill:#176f57;stroke:#dcf4e638}.help-device>text{fill:#f5ecd8d1;font-size:12px}.help-network-line{fill:none;stroke:#8dd9bdb8;stroke-width:3;stroke-dasharray:8 7}.help-room-code rect{fill:#102d26;stroke:#e5c36c9e;stroke-width:2}.help-room-code text:last-child{fill:#fff0be;font-size:18px;font-weight:900;letter-spacing:.12em}.help-reconnect-chip rect{fill:#b5513638;stroke:#ff917680}.help-reconnect-chip text{fill:#ffd8ca;font-size:12px}.help-reconnect-arrow{fill:none;stroke:#e5c36c;stroke-width:3}.help-warning{margin-top:18px;padding:15px 17px;border-left:3px solid var(--ui-gold);border-radius:5px 12px 12px 5px;background:#d2a5551a;color:#f5e9cf}.help-warning strong{display:block;margin-bottom:4px;color:#ffe3a9}.help-footer{display:grid;grid-template-columns:100px 1fr 100px;align-items:center;gap:12px;padding-top:18px;border-top:1px solid rgba(224,190,128,.15)}.help-progress{color:var(--ui-muted);text-align:center;font-size:12px;font-weight:800}.replay-library-card{width:min(820px,100%)}.replay-library-toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.replay-library-toolbar button:first-child{color:#10261f;background:linear-gradient(180deg,#e8c987,#c99b53);border-color:#f0d99f}.feature-status{min-height:18px;margin:12px 2px;color:var(--ui-muted);font-size:11px}.feature-status.error{color:#ff9b8f}.replay-library-list{display:grid;gap:9px}.replay-library-empty{display:grid;place-items:center;min-height:190px;padding:20px;border:1px dashed rgba(224,190,128,.22);border-radius:14px;color:var(--ui-muted);text-align:center;line-height:1.6}.replay-library-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px;border:1px solid rgba(224,190,128,.16);border-radius:14px;background:#ffffff09}.replay-library-item.incompatible{border-color:#e17b6047}.replay-library-copy{display:grid;min-width:0;gap:4px}.replay-library-copy strong,.replay-library-copy span,.replay-library-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.replay-library-copy strong{color:var(--ui-ivory);font-size:14px}.replay-library-copy span{color:var(--ui-text);font-size:11px}.replay-library-copy small{color:#83d7ab;font-size:9px}.replay-library-item.incompatible small{color:#ff9b8f}.replay-library-actions{display:grid;grid-template-columns:repeat(3,auto);gap:6px}.replay-library-actions button{min-height:38px;padding:7px 10px;font-size:10px}.replay-controller{position:fixed;z-index:28;bottom:max(18px,env(safe-area-inset-bottom));left:50%;display:grid;grid-template-columns:minmax(150px,1fr) auto;align-items:center;gap:14px;width:min(920px,calc(100vw - 28px));padding:12px;box-sizing:border-box;transform:translate(-50%);color:var(--ui-ivory);border:1px solid rgba(224,190,128,.32);border-radius:16px;background:linear-gradient(145deg,#132e27f5,#05120ff7);box-shadow:0 18px 54px #00000080,inset 0 1px #ffffff0d;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.replay-controller-copy{display:grid;min-width:0;gap:2px;padding-inline:4px}.replay-controller-copy span{color:var(--ui-gold-soft);font-size:8px;font-weight:900;letter-spacing:.16em}.replay-controller-copy strong,.replay-controller-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.replay-controller-copy strong{font-size:14px}.replay-controller-copy small{color:var(--ui-muted);font-size:10px}.replay-controller-actions{display:grid;grid-template-columns:repeat(6,auto);gap:6px}.replay-controller button{min-height:40px;padding:8px 11px;color:var(--ui-text);border:1px solid rgba(208,228,216,.18);border-radius:9px;background:#ffffff12;font-size:10px;font-weight:800;white-space:nowrap;cursor:pointer}.replay-controller button:first-child,.replay-controller button.active{color:#f9e8bb;border-color:#e5c36c6b;background:#b5873a2e}@media(hover:hover){.feature-card button:not(:disabled):hover{border-color:#ebcc8f85;background:#ebcc8f21}.replay-library-toolbar button:first-child:not(:disabled):hover{background:#ebcd8d}.replay-controller button:hover{border-color:#ebcc8f85;background:#ebcc8f21}}@media(max-width:760px){.feature-overlay{place-items:stretch;padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}.feature-card{width:100%;max-height:none;min-height:100%;padding:18px 15px;border-radius:17px}.help-step{min-height:0;padding:24px 3px;font-size:14px}.help-visual{margin-bottom:18px;border-radius:13px}.help-visual figcaption{padding:9px 11px 11px;font-size:11px}.help-footer{grid-template-columns:82px 1fr 82px;position:sticky;bottom:0;padding-bottom:2px;background:#102421}.replay-library-item{grid-template-columns:1fr;gap:11px}.replay-library-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.replay-library-actions button{width:100%;min-height:42px}.replay-controller{bottom:max(8px,env(safe-area-inset-bottom));grid-template-columns:1fr;gap:8px;width:calc(100vw - 16px);padding:10px;border-radius:13px}.replay-controller-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.replay-controller button{width:100%;min-height:42px;padding:7px 5px}}@media(max-width:380px){.phase12-home-tools,.replay-library-toolbar{grid-template-columns:1fr}.feature-card-header{padding-bottom:14px}.feature-card h2{font-size:25px}}@media(prefers-reduced-motion:reduce){.shot-feedback.visible,.mechanical-scoreboard[data-feedback]{animation-duration:1ms}}.compact-score .scoreboard-top-bay{box-sizing:border-box;height:32px;padding:2px 7px;cursor:default}.compact-score .scoreboard-rack,.compact-score .scoreboard-bottom-bay{display:none}.scoreboard-top-bay{position:relative;display:flex;align-items:center;width:100%;height:27px;padding:2px 22px 2px 7px;color:#f7ead3;background:linear-gradient(180deg,#0003,#ffffff09),#4a2e21;border:1px solid rgba(38,18,10,.82);border-radius:1px;box-shadow:inset 0 3px 7px #0000006b,0 1px #ffffff24;cursor:pointer;touch-action:manipulation}.scoreboard-brand{display:inline-grid;place-items:center;min-width:36px;height:15px;padding:0 5px;color:#fff7ef;background:linear-gradient(#e45f55,#b72d2c);border:1px solid rgba(255,229,217,.78);border-radius:50%;box-shadow:0 1px 2px #0000006b;font-family:Georgia,serif;font-size:7px;font-weight:700;letter-spacing:.35px}.scoreboard-readout{display:flex;align-items:center;justify-content:center;gap:5px;margin-left:auto;font-variant-numeric:tabular-nums}.scoreboard-readout strong{min-width:13px;color:#fff8e9;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;line-height:1;text-align:center;text-shadow:0 1px 2px #000}.score-divider{color:#fff0dc7a}.score-player-ball{width:8px;height:8px;border-radius:50%;box-shadow:inset -2px -2px 3px #00000038,0 0 0 1px #ffffff2e}.score-player-white{background:#f2eee2}.score-player-yellow{background:#f4cb35}.score-player-ball.active{box-shadow:inset -2px -2px 3px #00000038,0 0 0 2px #f26a32,0 0 8px #ff7436d9}.scoreboard-chevron{position:absolute;right:6px;top:7px;color:#fff4e280;font-size:10px;transition:transform .16s ease}.scoreboard-rack{position:relative;display:grid;gap:2px;margin-top:5px;padding:6px 4px;overflow:hidden;background:radial-gradient(ellipse at 50% 0,rgba(255,255,255,.07),transparent 65%),#3f281e;border:1px solid rgba(35,16,9,.78);box-shadow:inset 0 7px 12px #00000080,inset 0 -2px 4px #ffffff0d}.scoreboard-row{position:relative;display:flex;align-items:center;justify-content:center;height:13px}.scoreboard-row.active:after{content:"";position:absolute;inset:-1px 0;border:1px solid rgba(244,103,45,.5);box-shadow:inset 0 0 7px #f4672d29;pointer-events:none}.scoreboard-rod{position:absolute;z-index:0;left:2px;right:2px;top:50%;height:1px;background:linear-gradient(180deg,#f1eee6,#747270);box-shadow:0 1px 1px #000000a6}.scoreboard-beads{position:relative;z-index:1;display:flex;width:86%;height:11px}.score-bead{flex:1 1 0;min-width:0;height:100%;border-radius:42%;box-shadow:inset 1px 0 #ffffff6b,inset -1px 0 #0000002e,0 1px 1px #00000061;transition:transform .15s ease}.score-bead.counted{transform:translate(-7px)}.score-bead.uncounted{transform:translate(7px)}.score-bead-white{background:linear-gradient(90deg,#aaa89f,#fffefa 46%,#c7c5bc)}.score-bead-orange{background:linear-gradient(90deg,#a32c12,#f25b22 46%,#b83613)}.scoreboard-bottom-bay{height:14px;margin-top:5px;display:grid;place-items:center;color:#f1dabe80;background:#2c1810a6;border:1px solid rgba(37,17,10,.72);box-shadow:inset 0 3px 6px #0000005c;font-size:6px;letter-spacing:1.2px}.mechanical-scoreboard.collapsed{width:190px}.mechanical-scoreboard.collapsed .scoreboard-rack,.mechanical-scoreboard.collapsed .scoreboard-bottom-bay{display:none}.mechanical-scoreboard.collapsed .scoreboard-chevron{transform:rotate(180deg)}.undo-shot-button{flex:0 0 auto;min-width:48px;min-height:44px;background:#080808c7;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.quick-controls{position:fixed;z-index:9;top:max(8px,env(safe-area-inset-top));left:50%;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;box-sizing:border-box;width:max-content;max-width:calc(100vw - 24px);padding:8px;transform:translate(-50%);color:#f4f4f4;background:#080808c2;border:1px solid rgba(255,255,255,.14);border-radius:14px;box-shadow:0 8px 24px #00000047;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.quick-button,.quick-step{min-height:48px;padding:0 15px;color:#f5f5f5;background:#ffffff17;border:1px solid rgba(255,255,255,.16);border-radius:10px;white-space:nowrap;touch-action:manipulation}.quick-controls>.quick-button{display:grid;place-items:center;padding:0 10px;font-size:28px;line-height:1}.chat-toggle,.taunt-replay-button{position:relative}.taunt-replay-button.charged{border-color:#ff7058ad;background:#9c2c2657;box-shadow:0 0 18px #ff4e3b38}.taunt-replay-charge{position:absolute;top:-5px;right:-5px;display:grid;place-items:center;width:17px;height:17px;color:#fff;background:#d94937;border:2px solid rgba(8,8,8,.94);border-radius:50%;font:800 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace;pointer-events:none;opacity:.28}.taunt-replay-button.charged .taunt-replay-charge,.taunt-replay-button.armed .taunt-replay-charge{opacity:1}.taunt-replay-button.armed{border-color:#ffce54c7;background:#7e561066;box-shadow:0 0 20px #ffc9463d}.taunt-replay-button.armed .taunt-replay-charge{width:auto;min-width:22px;padding:0 4px;border-radius:999px;background:#c98b18}.chat-unread-badge{position:absolute;top:-5px;right:-5px;display:grid;place-items:center;min-width:17px;height:17px;padding:0 4px;box-sizing:border-box;color:#fff;background:#e74c3c;border:2px solid rgba(8,8,8,.94);border-radius:999px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;font-weight:800;line-height:1;pointer-events:none}.chat-panel{position:fixed;z-index:20;top:max(70px,calc(env(safe-area-inset-top) + 60px));left:50%;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:8px;width:min(430px,calc(100vw - 28px));height:min(360px,42dvh);padding:10px;box-sizing:border-box;transform:translate(-50%);color:#f7fbff;background:#0a1015eb;border:1px solid rgba(145,202,237,.24);border-radius:16px;box-shadow:0 18px 48px #0000007a;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.chat-panel.input-focused{top:max(8px,env(safe-area-inset-top));bottom:max(8px,env(safe-area-inset-bottom));height:auto;max-height:none}.chat-header{display:flex;align-items:center;justify-content:space-between;min-height:32px;padding:0 2px 3px}.chat-header strong{font-size:14px}.chat-header button,.chat-form button,.chat-quick-row button{color:#f8fbfd;background:#ffffff17;border:1px solid rgba(255,255,255,.14);border-radius:9px;touch-action:manipulation}.chat-header button{width:32px;height:32px;padding:0}.chat-messages{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:4px 2px 8px;scrollbar-width:thin}.chat-message{display:flex;flex-direction:column;align-items:flex-start;gap:2px;margin:5px 0}.chat-message.mine{align-items:flex-end}.chat-message-label{padding:0 5px;color:#e2f1fa8f;font-size:9px}.chat-message-bubble{max-width:82%;padding:7px 10px;white-space:pre-wrap;overflow-wrap:anywhere;color:#edf8ff;background:#538aab3d;border:1px solid rgba(131,191,226,.2);border-radius:12px 12px 12px 4px;font-size:12px;line-height:1.35}.chat-message.mine .chat-message-bubble{color:#fff8dd;background:#daae3238;border-color:#eecc613d;border-radius:12px 12px 4px}.chat-quick-row{display:flex;gap:5px;overflow-x:auto;padding-bottom:1px;scrollbar-width:none}.chat-quick-row::-webkit-scrollbar{display:none}.chat-quick-row button{flex:0 0 auto;min-height:32px;padding:0 10px;font-size:11px}.chat-form{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:6px}.chat-form input{min-width:0;height:40px;padding:0 11px;box-sizing:border-box;color:#fff;background:#ffffff14;border:1px solid rgba(255,255,255,.16);border-radius:10px;outline:none;font-size:16px}.chat-form input:focus{border-color:#6bc9ffa8}.chat-form button{height:40px;padding:0;font-size:18px}.taunt-replay-overlay{position:fixed;z-index:18;top:max(112px,calc(env(safe-area-inset-top) + 98px));left:50%;display:grid;justify-items:center;gap:3px;min-width:min(270px,calc(100vw - 40px));padding:12px 20px 14px;box-sizing:border-box;transform:translate(-50%);color:#fff4ed;background:linear-gradient(135deg,#450a0ee8,#140b14db);border:1px solid rgba(255,113,82,.52);border-radius:16px;box-shadow:0 16px 46px #0000006b,0 0 34px #ff48361f;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);pointer-events:none}.taunt-replay-kicker{color:#ffbaa3c7;font-size:9px;font-weight:900;letter-spacing:.22em}.taunt-replay-overlay strong{font-size:20px;line-height:1.1;text-shadow:0 2px 15px rgba(255,75,58,.34)}.taunt-replay-overlay span{font-size:10px;opacity:.72}.taunt-replay-overlay.result strong{transform:scale(1.08)}.cue-hud.taunt-replay-locked{opacity:.28;pointer-events:none}.chat-toast{position:fixed;z-index:19;top:max(72px,calc(env(safe-area-inset-top) + 62px));left:50%;max-width:min(340px,calc(100vw - 32px));padding:8px 12px;transform:translate(-50%);overflow:hidden;color:#eef9ff;background:#0b1922e6;border:1px solid rgba(121,197,238,.3);border-radius:11px;box-shadow:0 8px 24px #00000057;text-overflow:ellipsis;white-space:nowrap;font-size:11px;pointer-events:none}.game-mode-selectors{display:flex;align-items:stretch;gap:8px}.game-menu{position:absolute;top:calc(100% + 8px);left:50%;box-sizing:border-box;width:min(340px,calc(100vw - 24px));padding:10px;transform:translate(-50%);color:#f4f4f4;background:#0f0f0ff5;border:1px solid rgba(255,255,255,.16);border-radius:14px;box-shadow:0 14px 36px #0000007a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);max-height:min(680px,calc(100dvh - 94px));overflow-y:auto;overscroll-behavior:contain}.game-menu .game-mode-selectors{display:grid;grid-template-columns:1fr;gap:7px}.game-menu .mode-selector,.game-menu .rule-selector{grid-template-columns:72px minmax(0,1fr)}.menu-button{width:100%;min-height:42px;margin-top:7px;color:#f5f5f5;background:#ffffff17;border:1px solid rgba(255,255,255,.16);border-radius:10px;touch-action:manipulation}.menu-button:disabled{opacity:.42;cursor:default}.game-options-panel{display:grid;gap:8px}.game-options-panel.hidden{display:none}.game-options-title{padding:2px 2px 4px;color:#f4f4f4;font-size:13px;font-weight:800}.game-options-note{margin:1px 4px 0;color:#ebf2eead;font-size:10px;line-height:1.35}.game-options-apply{color:#fff5c8;border-color:#f4d73561;background:#f4d73524}.game-option-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:0 12px;color:#f5f5f5;background:#ffffff12;border:1px solid rgba(255,255,255,.14);border-radius:10px}.game-option-row input[type=checkbox]{width:22px;height:22px;margin:0;accent-color:#f4d735}.game-option-row select{min-width:138px;max-width:168px;padding:7px 28px 7px 9px}.multiplayer-menu-panel{margin-top:9px;padding:9px;background:#427aa41a;border:1px solid rgba(125,190,236,.22);border-radius:11px}.multiplayer-menu-title{margin-bottom:7px;color:#d9efff;font-size:11px;font-weight:700}.multiplayer-room-actions{display:grid;grid-template-columns:1fr 92px 58px;gap:5px}.multiplayer-session-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px}.multiplayer-room-actions .menu-button,.multiplayer-session-actions .menu-button{min-height:38px;margin-top:0}#multiplayer-room-code{box-sizing:border-box;min-width:0;padding:0 8px;color:#fff;background:#20262a;border:1px solid rgba(255,255,255,.18);border-radius:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.multiplayer-session-actions{margin-top:5px}.multiplayer-status{min-height:28px;margin-top:7px;color:#e1f2fcc7;font-size:10px;line-height:1.4}.multiplayer-game-status{position:fixed;z-index:7;top:max(78px,calc(env(safe-area-inset-top) + 66px));left:50%;display:flex;align-items:center;justify-content:center;gap:7px;box-sizing:border-box;width:max-content;max-width:calc(100vw - 28px);padding:6px 7px 6px 12px;transform:translate(-50%);color:#dff3ff;background:#0c202dc7;border:1px solid rgba(125,190,236,.3);border-radius:999px;box-shadow:0 7px 22px #0000004d;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font-size:10px;line-height:1.25;text-align:center;pointer-events:none}.multiplayer-game-status-text{min-width:0;overflow:hidden;text-overflow:ellipsis}.multiplayer-game-status.hidden{display:none}.connection-recovery-panel{position:fixed;z-index:22;top:50%;left:50%;box-sizing:border-box;width:min(430px,calc(100vw - 28px));padding:20px;transform:translate(-50%,-50%);color:#f6f0df;background:#091915f5;border:1px solid rgba(211,174,92,.48);border-radius:18px;box-shadow:0 24px 70px #0000008f;text-align:center}.connection-recovery-panel.hidden{display:none}.connection-recovery-kicker{color:#d7b56c;font-size:10px;font-weight:900;letter-spacing:.16em}.connection-recovery-panel strong{display:block;margin-top:8px;font-size:21px}.connection-recovery-panel p{margin:10px 0 0;color:#f6f0dfb8;font-size:13px;line-height:1.55}.connection-recovery-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.connection-recovery-actions.hidden{display:none}.connection-recovery-actions button{min-height:44px;border-radius:11px}.connection-recovery-actions button:first-child{grid-column:1 / -1}.phase12-resume-card{display:grid;gap:8px;margin:14px 0 18px;padding:14px;color:#f4ecd8;background:#d3ae5c17;border:1px solid rgba(211,174,92,.34);border-radius:14px;text-align:left}.phase12-resume-card span,.phase12-resume-card strong{display:block}.phase12-resume-card span{color:#d7b56c;font-size:10px;font-weight:900;letter-spacing:.12em}.phase12-resume-card strong{margin-top:3px;font-size:16px}.phase12-resume-card small{color:#f4ecd8b8}.phase12-resume-card em{color:#f4ecd88f;font-size:10px;font-style:normal}.phase12-resume-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.phase12-resume-actions button:first-child{grid-column:1 / -1}.opponent-aim-badge{position:fixed;z-index:8;top:max(118px,calc(env(safe-area-inset-top) + 104px));right:max(10px,env(safe-area-inset-right));display:flex;align-items:center;gap:7px;padding:6px 9px 6px 6px;color:#ddf7ff;background:#071f2bb8;border:1px solid rgba(101,216,255,.32);border-radius:999px;box-shadow:0 7px 20px #00000047;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);pointer-events:none}.opponent-aim-badge.hidden{display:none}.opponent-tip-ball{position:relative;flex:0 0 36px;width:36px;height:36px;border-radius:50%;background:radial-gradient(circle at 38% 30%,#fff 0 9%,#eee8d7 54%,#aaa28a);border:1px solid rgba(255,255,255,.7);box-shadow:inset -4px -5px 8px #00000029}.opponent-tip-ball.yellow-cue{background:radial-gradient(circle at 38% 30%,#fff6b4 0 9%,#e8c43e 54%,#99701b);border-color:#ffe77bbf}.opponent-tip-cross{position:absolute;background:#23404a38}.opponent-tip-cross-x{left:15%;right:15%;top:50%;height:1px}.opponent-tip-cross-y{top:15%;bottom:15%;left:50%;width:1px}.opponent-tip-dot{position:absolute;left:50%;top:50%;width:7px;height:7px;transform:translate(-50%,-50%);border-radius:50%;background:#65d8ff;border:1px solid rgba(4,56,76,.86);box-shadow:0 0 0 1px #ffffffb8}.opponent-aim-copy{display:grid;gap:1px;min-width:76px}.opponent-aim-copy strong{font-size:9px;letter-spacing:.04em}.opponent-aim-copy span{color:#ddf7ffc7;font-size:8px;white-space:nowrap}.mode-selector{display:grid;grid-template-columns:auto minmax(112px,1fr);align-items:center;gap:7px;min-height:46px;padding:0 10px;color:#ffffffad;background:#ffffff12;border:1px solid rgba(255,255,255,.14);border-radius:10px;font-size:10px;white-space:nowrap}.mode-selector select{min-width:0;padding:7px 24px 7px 8px;color:#fff;background:#262626;border:1px solid rgba(255,255,255,.18);border-radius:7px}.rule-selector{grid-template-columns:auto minmax(160px,1fr)}.quick-button:disabled,.quick-step:disabled{opacity:.4}.quick-elevation{position:absolute;top:calc(100% + 8px);left:50%;display:flex;align-items:center;gap:8px;box-sizing:border-box;padding:10px;transform:translate(-50%);color:#f4f4f4;background:#0f0f0ff5;border:1px solid rgba(255,255,255,.16);border-radius:14px;box-shadow:0 14px 36px #0000007a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.quick-elevation.hidden{display:none}.quick-elevation-slider{display:grid;grid-template-columns:auto auto;align-items:center;column-gap:8px;min-width:250px;font-size:12px;white-space:nowrap}.quick-elevation-slider strong{text-align:right;font-size:14px}.quick-elevation-slider input[type=range]{grid-column:1 / -1;width:250px;height:28px;margin:0;touch-action:pan-x}.cue-hud{position:fixed;z-index:6;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));display:flex;align-items:flex-end;justify-content:space-between;gap:18px;pointer-events:none}.cue-hud.hidden{display:none}.cue-hud.multiplayer-input-locked .tip-panel,.cue-hud.multiplayer-input-locked .stroke-panel{opacity:.42;filter:grayscale(.45)}.ball-hud-target-readout{min-height:15px;margin:-2px 0 5px;color:#e7f2f7bd;font-size:10px;text-align:center}.ball-hud-row{display:flex;align-items:center;gap:8px}.ball-hud-stage{position:relative;flex:0 0 360px;width:360px;height:124px;margin:0;overflow:hidden}.ball-hud-object{--object-separation: 0;position:absolute;z-index:1;left:calc(120px + var(--object-separation) * 120px);top:2px;width:120px;height:120px;box-sizing:border-box;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 36% 30%,#fff7ad 0 8%,#f0c539 25%,#bd861b);border:2px solid rgba(255,231,123,.72);box-shadow:inset -14px -16px 24px #0000002e,0 3px 12px #00000052}.ball-hud-object.red-target{background:radial-gradient(circle at 36% 30%,#ffdada 0 8%,#c93636 25%,#781818);border-color:#ffb1b1c2}.ball-hud-object.white-target{background:radial-gradient(circle at 38% 30%,#fff 0 9%,#eee8d7 55%,#aaa28a);border-color:#ffffffc2}.ball-hud-object.actual-thickness-ghost{z-index:3;opacity:.34;border-style:dashed;box-shadow:none;filter:saturate(.86) brightness(1.08)}.ball-hud-object.hidden{display:none}.tip-panel,.stroke-panel{pointer-events:auto;background:#080808bd;border:1px solid rgba(255,255,255,.13);border-radius:14px;padding:10px;box-shadow:0 10px 30px #00000047;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.tip-panel{width:440px;background:transparent;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.stroke-panel{width:176px}.hud-label{margin-bottom:7px;font-size:12px;color:#f4f4f4;text-align:center}.tip-ball{position:absolute;z-index:2;left:120px;top:2px;width:120px;height:120px;box-sizing:border-box;margin:0;border-radius:50%;touch-action:none;background-color:#eee8d7;background-image:radial-gradient(circle at 38% 30%,#fffffffa 0 9%,#fff0 10%),radial-gradient(circle at 42% 37%,#fffdf2 0 18%,#e9e3cf 58%,#aaa28a);box-shadow:inset -14px -16px 24px #00000029,0 3px 12px #00000059;border:2px solid rgba(255,255,255,.6)}.tip-ball.yellow-cue{background-color:#e9c539;background-image:radial-gradient(circle at 38% 30%,#fffac2fa 0 9%,#fff0 10%),radial-gradient(circle at 42% 37%,#ffe978 0 18%,#d9aa25 58%,#8d6517);border-color:#ffe77bb8}.tip-cross{position:absolute;background:#2828282e;pointer-events:none}.tip-cross-x{left:12%;right:12%;top:50%;height:1px}.tip-cross-y{top:12%;bottom:12%;left:50%;width:1px}.tip-guide-rings,.tip-guide-rings i{position:absolute;border-radius:50%;pointer-events:none}.tip-guide-rings{inset:0}.tip-guide-rings i{border:1px solid rgba(39,48,52,.13)}.tip-guide-rings i[data-tip-ring="1"]{inset:39.25%}.tip-guide-rings i[data-tip-ring="2"]{inset:28.5%}.tip-guide-rings i[data-tip-ring="3"]{inset:17.75%}.tip-guide-rings i[data-tip-ring="4"]{inset:7%;border-color:#27303433}.tip-miscue-ring{position:absolute;inset:18.4%;border:1px dashed rgba(154,67,33,.46);border-radius:50%;pointer-events:none}.tip-dot{position:absolute;left:50%;top:50%;width:16px;height:16px;border-radius:50%;transform:translate(-50%,-50%);background:#f4d735;border:3px solid #3648a8;box-shadow:0 0 0 2px #fffc,0 2px 8px #0006;pointer-events:none}.tip-dot.miscue-zone{background:#f07a42;border-color:#8f241f;box-shadow:0 0 0 2px #ffe0bde6,0 2px 9px #69120c85}.tip-actions{display:flex;flex:0 0 72px;width:72px;flex-direction:column;align-items:stretch;justify-content:center;gap:6px}.tip-actions .hud-button{flex:0 0 auto}.hud-button{width:100%;padding:7px}.tip-joystick{position:relative;display:none;flex:0 0 72px;width:72px;height:72px;border-radius:50%;touch-action:none;background:radial-gradient(circle,#ffffff17,#ffffff06);border:1px solid rgba(255,255,255,.18);box-shadow:inset 0 0 18px #00000057}.tip-joystick-cross{position:absolute;pointer-events:none;background:#ffffff24}.tip-joystick-cross-x{left:15%;right:15%;top:50%;height:1px}.tip-joystick-cross-y{top:15%;bottom:15%;left:50%;width:1px}.tip-joystick-knob{position:absolute;left:50%;top:50%;width:24px;height:24px;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;background:#f4d735;border:2px solid #3648a8;box-shadow:0 0 0 2px #ffffffb8,0 3px 8px #00000061}.tip-joystick-knob.miscue-zone{background:#f07a42;border-color:#8f241f}.stroke-pad{position:relative;width:150px;height:235px;margin:0 auto;overflow:hidden;touch-action:none;border-radius:12px;background:linear-gradient(180deg,#ffffff14,#ffffff06);border:1px solid rgba(255,255,255,.12)}.mobile-cue-speed-readout,.mobile-precision-readout,.mobile-fine-controls{display:none}.stroke-pad:before{content:"";position:absolute;left:50%;top:18px;bottom:18px;width:7px;transform:translate(-50%);border-radius:10px;background:#bc894f59}.stroke-zero{position:absolute;left:22px;right:22px;top:38%;height:1px;background:#ffffff42}.stroke-handle{position:absolute;left:50%;top:38%;width:68px;height:30px;display:grid;place-items:center;transform:translate(-50%);border-radius:15px;color:#fff;background:linear-gradient(180deg,#a77545,#6d462b);border:1px solid rgba(255,255,255,.28);box-shadow:0 4px 12px #0000005c;pointer-events:none;will-change:transform}.stroke-pad.active .stroke-handle{box-shadow:0 0 0 2px #ffffff2e,0 4px 12px #0000005c}.stroke-pad.multiplayer-turn-ready{border-color:#7dcdffb8;box-shadow:0 0 0 3px #50aae629,0 0 24px #3ca0e133}.stroke-guide{position:absolute;right:8px;bottom:8px;color:#ffffff6b;font-size:10px;line-height:1.25;text-align:right;pointer-events:none}@media(max-width:760px){.debug{max-width:calc(100vw - 24px);font-size:10px}.phase12-scene-badge{display:none}.multiplayer-game-status{top:max(62px,calc(env(safe-area-inset-top) + 52px));width:calc(100vw - 24px);max-width:430px;min-height:38px;padding:4px 5px 4px 10px;gap:5px;font-size:9px}.multiplayer-game-status-text{flex:1 1 auto;white-space:nowrap}.phase12-room-copy{min-height:30px;padding:4px 9px;font-size:8px}.controls{top:auto;bottom:calc(max(6px,env(safe-area-inset-bottom)) + 160px);width:min(280px,calc(100vw - 24px));font-size:11px}.controls:not(.collapsed){max-height:44vh}.quick-controls{top:max(8px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));width:auto;max-width:none;display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:3px;padding:5px;transform:none}.game-top-bar{display:contents}.mechanical-scoreboard{flex:1 1 auto;min-width:72px;width:auto;max-width:none;padding:4px}.mechanical-scoreboard.compact-score{flex:1 1 auto;min-width:72px;width:auto;max-width:none}.compact-score .scoreboard-top-bay{height:31px;padding:2px 6px}.scoreboard-top-bay{height:21px;padding-left:4px}.scoreboard-brand{min-width:27px;height:11px;padding:0 3px;font-size:5px}.scoreboard-readout{gap:3px}.scoreboard-readout strong{min-width:9px;font-size:10px}.score-player-ball{width:6px;height:6px}.scoreboard-chevron{top:4px}.scoreboard-rack{display:none}.scoreboard-row{height:9px}.scoreboard-beads{height:8px;width:90%}.scoreboard-bottom-bay{height:13px;margin-top:3px;font-size:7px;letter-spacing:.35px}.mechanical-scoreboard.collapsed{width:min(235px,calc(100vw - 112px))}.undo-shot-button{flex:0 0 clamp(32px,9.5vw,38px);width:clamp(32px,9.5vw,38px);min-width:0;min-height:40px;padding:0}.quick-button,.quick-step{min-width:0;min-height:40px;padding:0 6px;font-size:11px}.quick-controls>.quick-button{flex:0 0 clamp(32px,9.5vw,38px);width:clamp(32px,9.5vw,38px);padding:0;font-size:24px;line-height:1}.chat-unread-badge{top:-4px;right:-4px;min-width:16px;height:16px;padding:0 3px;font-size:8px}.chat-panel{top:max(61px,calc(env(safe-area-inset-top) + 53px));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));width:auto;height:min(38dvh,330px);transform:none}.chat-panel.input-focused{top:max(6px,env(safe-area-inset-top));bottom:max(6px,env(safe-area-inset-bottom));height:auto}.chat-toast{top:max(62px,calc(env(safe-area-inset-top) + 54px))}.game-mode-selectors{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.game-menu{left:0;right:0;width:auto;transform:none}.game-menu .game-mode-selectors{grid-template-columns:1fr}.mode-selector{grid-template-columns:auto minmax(0,1fr);min-height:40px;padding:0 7px}.mode-selector select{width:100%;padding:7px 22px 7px 7px}.rule-selector{grid-column:1 / -1}.quick-elevation{left:0;right:0;display:grid;grid-template-columns:48px minmax(0,1fr) 48px;gap:6px;width:100%;transform:none}.quick-elevation-slider{min-width:0;width:100%;font-size:10px}.quick-elevation-slider input[type=range]{width:100%;min-width:0}.cue-hud{left:max(4px,env(safe-area-inset-left));right:max(4px,env(safe-area-inset-right));bottom:max(6px,env(safe-area-inset-bottom));align-items:flex-end;justify-content:flex-start;gap:4px}.tip-panel{flex:0 0 260px;width:260px;min-height:92px;padding:0;box-sizing:border-box}.tip-panel .hud-label{margin-bottom:1px;line-height:1;font-size:8px}#tip-readout{display:inline;margin-left:2px;font-size:7px}.ball-hud-target-readout{min-height:10px;margin:0 0 1px;font-size:7px}.ball-hud-row{gap:4px}.ball-hud-stage{flex-basis:198px;width:198px;height:68px}.tip-ball,.ball-hud-object{width:66px;height:66px;top:1px}.tip-ball{left:66px}.ball-hud-object{left:calc(66px + var(--object-separation) * 66px)}.tip-dot{width:11px;height:11px;border-width:2px}.tip-actions{flex:0 0 50px;width:50px;gap:3px}.tip-panel .hud-button{min-height:24px;padding:2px;font-size:7px;line-height:1}.tip-joystick{display:block;flex:0 0 46px;width:46px;height:46px;align-self:center}.tip-joystick-knob{width:18px;height:18px}.stroke-panel{flex:0 0 80px;width:80px;height:146px;margin-left:auto;padding:4px;box-sizing:border-box}.stroke-panel .hud-label{margin-bottom:3px;font-size:8px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#stroke-readout{font-size:6.5px}.mobile-cue-speed-readout{position:fixed;z-index:8;top:max(62px,calc(env(safe-area-inset-top) + 52px));right:max(12px,env(safe-area-inset-right));display:grid;place-items:center;min-width:76px;min-height:30px;padding:0 10px;box-sizing:border-box;color:#fff;background:#081319d1;border:1px solid rgba(146,211,242,.32);border-radius:999px;box-shadow:0 6px 18px #0000004d;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font:800 12px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.01em;white-space:nowrap;pointer-events:none}.multiplayer-game-status:not(.hidden)+.mobile-cue-speed-readout{top:max(106px,calc(env(safe-area-inset-top) + 96px))}.stroke-pad{width:70px;height:120px;margin:0 auto}.stroke-pad:before{inset:10px auto 10px 50%;width:6px;height:auto;transform:translate(-50%)}.stroke-zero{inset:38% 10px auto;width:auto;height:1px}.stroke-handle{left:50%;top:38%;width:44px;height:28px;font-size:8px;transform:translate(-50%)}.stroke-guide{left:auto;right:4px;bottom:3px;font-size:7px;text-align:right;line-height:1.15;white-space:normal}.stroke-guide:after{content:none}.hud-label{font-size:8px}}@media(max-height:620px)and (orientation:landscape){.controls{bottom:calc(max(3px,env(safe-area-inset-bottom)) + 132px)}.controls:not(.collapsed){max-height:calc(100vh - 156px);width:260px}.cue-hud{bottom:max(3px,env(safe-area-inset-bottom))}.tip-panel{flex-basis:232px;width:232px;min-height:82px;padding:0}.ball-hud-row{gap:3px}.ball-hud-stage{flex-basis:180px;width:180px;height:62px}.tip-ball,.ball-hud-object{width:60px;height:60px}.tip-ball{left:60px}.ball-hud-object{left:calc(60px + var(--object-separation) * 60px)}.tip-actions{flex-basis:44px;width:44px;gap:2px}.tip-panel .hud-button{min-height:20px;padding:1px;font-size:6px}.tip-joystick{flex-basis:44px;width:44px;height:44px}.tip-joystick-knob{width:16px;height:16px}#tip-readout{font-size:6px}.stroke-panel{flex-basis:72px;width:72px;height:122px;padding:3px}.stroke-pad{width:64px;height:100px}.stroke-handle{width:40px;height:24px;font-size:7px}}.game-menu .game-mode-selectors,.game-menu .multiplayer-menu-panel{display:none}.phase12-scene-badge{position:fixed;top:max(10px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:28;max-width:46vw;padding:7px 11px;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:#081219b8;color:#f0f8fbeb;font-size:11px;font-weight:800;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}.phase12-room-copy{position:static;flex:0 0 auto;min-height:30px;padding:5px 10px;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:#0c3a52eb;color:#f5fbff;font:inherit;font-size:9px;font-weight:800;cursor:pointer;box-shadow:0 4px 12px #0003;pointer-events:auto}.phase12-room-copy.hidden{display:none}.phase12-flow{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));background:#050b11db;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#f6fbff;overflow:auto}.phase12-flow.hidden{display:none}.phase12-card{width:min(560px,100%);max-height:100%;overflow:auto;padding:28px;border:1px solid rgba(255,255,255,.14);border-radius:24px;background:#0c1923f5;box-shadow:0 24px 80px #0000007a;text-align:center}.phase12-card h1{margin:2px 0 8px;font-size:clamp(48px,11vw,84px);letter-spacing:-.06em}.phase12-card h2{margin:6px 0 20px;font-size:clamp(26px,5vw,38px)}.phase12-card p{color:#ebf5fab8}.phase12-kicker{font-size:11px;font-weight:800;letter-spacing:.18em;color:#a7ddefdb}.phase12-main-actions,.phase12-mode-grid,.phase12-footer-actions{display:grid;gap:12px;margin-top:22px}.phase12-main-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.phase12-mode-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.phase12-footer-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.phase12-card button,.phase12-card input[type=text]{min-height:52px;border:1px solid rgba(255,255,255,.14);border-radius:14px;font:inherit}.phase12-card button{padding:11px 14px;background:#3397b9eb;color:#fff;font-weight:800;cursor:pointer}.phase12-card button:disabled{opacity:.42;cursor:default}.phase12-card button.phase12-secondary{background:#ffffff12}.phase12-wide{width:100%;margin-top:8px}.phase12-room-divider{display:flex;align-items:center;gap:10px;margin:18px 0 2px;color:#ebf5fa80;font-size:11px;font-weight:700}.phase12-room-divider:before,.phase12-room-divider:after{content:"";flex:1;height:1px;background:#ffffff1a}.phase12-room-join{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin-top:14px}.phase12-room-join input{min-width:0;padding:0 15px;background:#00000040;color:#fff;text-transform:uppercase;letter-spacing:.12em}.phase12-online-actions{margin-top:10px}.phase12-public-status{margin:24px 0;padding:22px 14px;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:#00000029}.phase12-public-list{display:grid;gap:9px;margin-top:16px}.phase12-public-list button{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;text-align:left}.phase12-public-list button small{color:#eff5f194;font-variant-numeric:tabular-nums;letter-spacing:.08em}.phase12-public-list button strong{color:var(--ui-gold-soft)}.phase12-handi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.phase12-handi-player{display:grid;gap:8px;padding:16px;border-radius:18px;background:#ffffff0e;border:1px solid rgba(255,255,255,.08)}.phase12-handi-player.mine{border-color:#60d2f299}.phase12-handi-player>strong{font-size:24px}.phase12-handi-player>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}.phase12-handi-player>div button{min-height:42px;padding:4px;font-size:22px}.phase12-handi-player em{color:#8fe2ba;font-style:normal;font-size:12px;font-weight:800}.phase12-handi-player small{color:#ffffff8c}.phase12-rules{display:grid;gap:10px;margin-top:18px;padding:16px;border-radius:16px;background:#0003;text-align:left}.phase12-check{display:flex;align-items:center;gap:10px;min-height:36px;font-size:15px}.phase12-check input{width:21px;height:21px}.phase12-note{margin:14px 0 0;font-size:12px;line-height:1.5}.phase12-final-score{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0}.phase12-final-score>div{display:grid;gap:5px;padding:18px;border-radius:18px;background:#ffffff0f}.phase12-final-score strong{font-size:48px}.phase12-spinner{width:42px;height:42px;margin:4px auto 18px;border:4px solid rgba(255,255,255,.16);border-top-color:#6ad3f0f2;border-radius:50%;animation:phase12-spin .8s linear infinite}@keyframes phase12-spin{to{transform:rotate(360deg)}}@media(max-width:700px){.phase12-card{padding:20px 16px;border-radius:20px}.phase12-mode-grid{grid-template-columns:1fr}.phase12-handi-grid{grid-template-columns:1fr 1fr;gap:8px}.phase12-handi-player{padding:12px 8px}.phase12-handi-player>strong{font-size:19px}.phase12-main-actions button,.phase12-mode-grid button{min-height:58px}}:root{--ui-ink: #050907;--ui-felt-deep: #071b15;--ui-felt: #0d3b2d;--ui-felt-bright: #17664e;--ui-walnut: #5e3a24;--ui-brass: #c9a45b;--ui-ivory: #f4edda;--ui-panel: rgba(6, 17, 14, .94);--ui-panel-soft: rgba(10, 34, 27, .88);--ui-line: rgba(221, 229, 218, .16);--ui-line-strong: rgba(201, 164, 91, .52);--ui-text: #f3f4ef;--ui-muted: rgba(222, 228, 220, .64);--ui-mint: #94d7bb;--ui-green: #146149;--ui-green-bright: #208d69;--ui-gold: var(--ui-brass);--ui-gold-soft: #ead59e;--ui-danger: #e66b5b;color-scheme:dark}body{color:var(--ui-text);background:radial-gradient(ellipse at 50% -12%,rgba(33,103,77,.46),transparent 47%),linear-gradient(155deg,#07130f,#030605 60%,#090604);font-family:Inter,Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,select,input{transition:color .14s ease,background-color .14s ease,border-color .14s ease,box-shadow .14s ease,transform .14s ease,opacity .14s ease}button:not(:disabled){cursor:pointer}button:not(:disabled):active{transform:translateY(1px) scale(.985)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--ui-gold);outline-offset:2px}.debug,.controls,.quick-controls,.game-menu,.chat-panel,.multiplayer-game-status,.mobile-cue-speed-readout{border-color:var(--ui-line);background-color:var(--ui-panel);box-shadow:0 16px 40px #0006,inset 0 1px #ffffff0a;backdrop-filter:blur(18px) saturate(1.08);-webkit-backdrop-filter:blur(18px) saturate(1.08)}.controls{border-radius:16px;background:linear-gradient(150deg,#102a24f0,#05110ff0)}.controls-title{color:var(--ui-gold-soft);letter-spacing:-.02em}.profile-note{color:var(--ui-muted)}.calibration-settings{border-color:var(--ui-line);background:#ffffff09}.collapse-button,.hud-button,.wide-control-button,.buttons button,.quick-button,.quick-step,.menu-button,.chat-header button,.chat-form button,.chat-quick-row button{color:var(--ui-text);border-color:#d0e4d82b;background:linear-gradient(180deg,#ffffff1a,#ffffff0b)}@media(hover:hover){.collapse-button:not(:disabled):hover,.hud-button:not(:disabled):hover,.wide-control-button:not(:disabled):hover,.buttons button:not(:disabled):hover,.quick-button:not(:disabled):hover,.quick-step:not(:disabled):hover,.menu-button:not(:disabled):hover,.chat-header button:not(:disabled):hover,.chat-form button:not(:disabled):hover,.chat-quick-row button:not(:disabled):hover{color:#fff;border-color:#e5c36c75;background:linear-gradient(180deg,#e5c36c33,#8dd9bd1a);box-shadow:0 8px 18px #0003}}.quick-controls{top:max(12px,env(safe-area-inset-top));flex-wrap:nowrap;align-items:stretch;gap:6px;padding:6px;border:1px solid rgba(221,229,218,.16);border-radius:12px;background:linear-gradient(90deg,rgba(94,58,36,.3),transparent 10% 90%,rgba(94,58,36,.3)),linear-gradient(180deg,#0c1f19f7,#040c0af5);box-shadow:0 12px 34px #00000075,inset 0 1px #ffffff0d}.game-top-bar{display:contents}.quick-controls>.quick-button,.undo-shot-button{flex:0 0 48px;width:48px;min-width:48px;min-height:48px;padding:0;color:#f5f7f4;border-color:#dce7e029;background:radial-gradient(circle at 50% 15%,rgba(255,255,255,.12),transparent 48%),#ffffff0b;border-radius:8px;box-shadow:inset 0 1px #ffffff0b,0 3px 8px #00000038}#game-menu-toggle{color:var(--ui-gold-soft)}.camera-view-option.active,#elevation-toggle.active,#move-balls.active,#chat-toggle.active{color:#eafff7;border-color:#8dd9bd8a;background:linear-gradient(180deg,#26a67d57,#18765d38);box-shadow:0 0 20px #26a67d2b,inset 0 1px #ffffff14}.mechanical-scoreboard{flex:0 0 242px;width:242px;min-width:242px;align-self:stretch;padding:5px;color:#fff8e8;border-color:#9b7443;border-radius:8px;background:linear-gradient(90deg,rgba(255,255,255,.1),transparent 15%,transparent 85%,rgba(0,0,0,.24)),repeating-linear-gradient(4deg,#ffffff06 0 1px,#30160a09 1px 5px),linear-gradient(145deg,#765035,#3d261b 58%,#66432c);box-shadow:inset 0 0 0 2px #22120a7a,inset 0 0 0 4px #efcd9714,0 10px 28px #0000006b}.mechanical-scoreboard.compact-score{width:242px}.compact-score .scoreboard-top-bay{height:36px}.scoreboard-top-bay{color:#fff8e8;border-color:#140b07d9;background:radial-gradient(circle at 50% 0,rgba(229,195,108,.1),transparent 65%),linear-gradient(180deg,#281b15,#170f0c)}.scoreboard-brand{color:#2a1a0f;border-color:#f6dfa2;background:linear-gradient(180deg,#f1d88e,#b98334);border-radius:999px;box-shadow:inset 0 1px #ffffff8c,0 2px 5px #0006}.scoreboard-readout strong{color:#fffdf3;text-shadow:0 0 10px rgba(245,216,139,.24)}.score-player-ball.active{box-shadow:inset -2px -2px 3px #00000038,0 0 0 2px var(--ui-gold),0 0 10px var(--ui-gold)}.scoreboard-bottom-bay{color:#f6dcb29e}.game-menu{top:calc(100% + 10px);left:0;transform:none;padding:12px;border-radius:12px;background:linear-gradient(155deg,#0e2721fa,#040f0dfa)}.quick-elevation{top:calc(100% + 10px);right:0;left:auto;transform:none;border-radius:12px;border-color:var(--ui-line);background:linear-gradient(155deg,#0c231cfa,#040e0cfa)}.menu-button{border-radius:12px;font-weight:700}.game-option-row,.mode-selector{border-color:var(--ui-line);background:#ffffff0b}.game-options-title,.multiplayer-menu-title{color:var(--ui-gold-soft)}.game-option-row input[type=checkbox]{accent-color:var(--ui-green-bright)}.multiplayer-menu-panel{border-color:#8dd9bd3b;background:#26a67d13}.multiplayer-game-status{color:#e9fff7;border-color:#8dd9bd4f;background:linear-gradient(135deg,#0a2d25e0,#051714e0)}.phase12-room-copy{color:#173128;border-color:#fff5d0ad;background:linear-gradient(180deg,var(--ui-gold-soft),#c99d49);box-shadow:0 5px 14px #0000003d}.mobile-cue-speed-readout{color:var(--ui-gold-soft);border-color:#e5c36c52;background:linear-gradient(135deg,#241d0de6,#081612e0)}.opponent-aim-badge{color:#e5fff7;border-color:#8dd9bd4f;background:#061f1ad1}.chat-panel{border-color:#8dd9bd3d;background:linear-gradient(155deg,#0c251ff7,#04100ef7)}.chat-header{padding-bottom:7px;border-bottom:1px solid rgba(216,232,222,.09)}.chat-header strong{color:var(--ui-gold-soft);letter-spacing:.03em}.chat-message-bubble{color:#ecfff8;border-color:#8dd9bd2e;background:#247e6233}.chat-message.mine .chat-message-bubble{color:#fff9e7;border-color:#e5c36c3b;background:#ac7f2b38}.chat-form input{color:var(--ui-text);border-color:var(--ui-line);background:#00000038}.chat-form input:focus{border-color:#8dd9bda8;box-shadow:0 0 0 3px #26a67d1a}.chat-toast{color:#effff9;border-color:#8dd9bd47;background:#07231deb}.taunt-replay-button.charged{border-color:#e5c36cb8;background:linear-gradient(180deg,#c28b2661,#5b351257);box-shadow:0 0 22px #e5c36c3b}.taunt-replay-button.armed{border-color:#f4775cc2;background:linear-gradient(180deg,#ae372a66,#4b18155c);box-shadow:0 0 24px #f4563f40}.taunt-replay-overlay{color:#fff7e5;border-color:#e5c36c7a;background:linear-gradient(135deg,#4b1f14f0,#0a1f1aeb);box-shadow:0 20px 58px #0000007a,0 0 40px #e5c36c1a}.taunt-replay-kicker{color:var(--ui-gold)}.tip-panel,.stroke-panel{border-color:#d0e4d82b;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.tip-panel{background:linear-gradient(180deg,#0a1d184d,#030c0a38);box-shadow:0 8px 20px #00000024,inset 0 1px #ffffff09}.stroke-panel{background:linear-gradient(180deg,#0a1d1875,#030c0a57);box-shadow:0 8px 22px #0000002e,inset 0 1px #ffffff0a}.cue-hud{display:grid;grid-template-columns:minmax(380px,460px) 176px;align-items:end;justify-content:space-between}.tip-panel{box-sizing:border-box;width:100%;border-radius:16px}.stroke-panel{box-sizing:border-box;border-radius:16px}.hud-label{color:var(--ui-gold-soft);font-weight:750;letter-spacing:.04em}.ball-hud-target-readout{color:var(--ui-muted)}.tip-joystick{border-color:#8dd9bd4d;background:radial-gradient(circle,#26a67d24,#ffffff06)}.stroke-pad{border-color:#e5c36c26;background:linear-gradient(180deg,#e5c36c0e,#ffffff03);box-shadow:inset 0 8px 18px #00000014}.stroke-handle{color:#fff9ec;border-color:#ffefc457;background:linear-gradient(180deg,#b8864d,#644126);box-shadow:inset 0 1px #ffffff21,0 5px 14px #0006}.stroke-pad.multiplayer-turn-ready{border-color:#8dd9bdc2;box-shadow:0 0 0 3px #26a67d24,0 0 28px #26a67d33}.shot-feedback{border-color:#e5c36c40;background:linear-gradient(145deg,#091f1aeb,#050f0de0);box-shadow:0 18px 52px #0000006b,inset 0 1px #ffffff0f}.shot-feedback-title{font-weight:850;letter-spacing:-.04em}.phase12-flow{background:radial-gradient(ellipse at 50% 20%,rgba(31,105,78,.34),transparent 42%),linear-gradient(90deg,transparent 49.85%,rgba(201,164,91,.08) 50%,transparent 50.15%),radial-gradient(circle at 12% 90%,rgba(94,58,36,.26),transparent 34%),linear-gradient(145deg,#020a08ed,#020504fa);backdrop-filter:blur(18px) saturate(1.05);-webkit-backdrop-filter:blur(18px) saturate(1.05)}.phase12-card{position:relative;box-sizing:border-box;width:min(600px,100%);padding:34px;overflow:auto;border-color:#c9a45b4d;border-radius:18px;background:linear-gradient(90deg,rgba(94,58,36,.22),transparent 8% 92%,rgba(94,58,36,.22)),radial-gradient(ellipse at 50% 0,rgba(42,125,94,.18),transparent 52%),linear-gradient(160deg,#0c231cfb,#030c0afc);box-shadow:0 32px 100px #0000009e,inset 0 1px #ffffff0e,inset 0 0 0 5px #40271829;scrollbar-width:thin}.phase12-card:before{content:"";position:absolute;top:0;left:28px;right:28px;height:2px;background:linear-gradient(90deg,transparent,var(--ui-brass),transparent);opacity:.72}.phase12-home-card{width:min(540px,100%);padding:48px 42px 42px}.phase12-language-select{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:18px;color:var(--ui-muted);font-size:13px;font-weight:700}.phase12-language-select select{min-height:38px;padding:6px 32px 6px 12px;color:var(--ui-ivory);border:1px solid rgba(214,230,220,.2);border-radius:9px;background:#ffffff12;font:inherit}.phase12-card h1{color:var(--ui-ivory);font-weight:900;line-height:.96;text-shadow:0 7px 36px rgba(201,164,91,.18)}.phase12-card h2{color:#f8fbf7;font-weight:850;letter-spacing:-.045em}.phase12-card p{color:var(--ui-muted)}.phase12-kicker{color:var(--ui-gold);letter-spacing:.28em}.phase12-main-actions,.phase12-mode-grid,.phase12-footer-actions{align-items:stretch;gap:10px}.phase12-card button{border-color:#b7e2cf40;border-radius:10px;background:linear-gradient(180deg,rgba(255,255,255,.07),transparent 42%),linear-gradient(145deg,#176c51,#0b4635);box-shadow:inset 0 1px #ffffff1a,0 7px 18px #00000040;text-shadow:0 1px 2px rgba(0,0,0,.22)}.phase12-card button.phase12-secondary{color:#f1f7f3c7;border-color:#d6e6dc24;background:#ffffff0e;box-shadow:none}.phase12-card>.phase12-secondary{display:block;width:100%;margin-top:12px}@media(hover:hover){.phase12-card button:not(:disabled):hover{border-color:#f4de9c80;background:linear-gradient(145deg,#2aa27f,#176d57);box-shadow:0 12px 28px #00000047,0 0 24px #26a67d21;transform:translateY(-2px)}.phase12-card button.phase12-secondary:not(:disabled):hover{background:#ffffff1a}}.phase12-handi-player{grid-template-rows:auto auto 44px auto;align-content:start;border-color:#cfe5d71f;background:linear-gradient(155deg,#fff1,#ffffff06);box-shadow:inset 0 1px #ffffff09}.phase12-handi-player>strong{min-height:29px;font-variant-numeric:tabular-nums}.phase12-handi-player>div{align-self:end}.phase12-handi-player.mine{border-color:#8dd9bd94;box-shadow:0 0 0 1px #26a67d1f,0 12px 28px #0000002e}.phase12-handi-player>strong{color:var(--ui-gold-soft)}.phase12-handi-player em{color:var(--ui-mint)}.phase12-rules{border:1px solid rgba(205,226,213,.1);background:#0000002e}.phase12-room-join{align-items:stretch}.phase12-room-join input{box-sizing:border-box;border-color:#c9a45b3d;background:#00000047;outline:none}.phase12-room-join input:focus{border-color:var(--ui-brass);box-shadow:0 0 0 3px #c9a45b1a}.phase12-check input{accent-color:var(--ui-green-bright)}.phase12-final-score>div{border:1px solid rgba(206,228,214,.11);background:linear-gradient(145deg,#ffffff13,#ffffff07)}.phase12-final-score strong{color:var(--ui-gold-soft);text-shadow:0 4px 22px rgba(229,195,108,.15)}.phase12-result-card{border-color:#e5c36c57;background:radial-gradient(circle at 50% 10%,rgba(229,195,108,.17),transparent 43%),linear-gradient(155deg,#1d291cfa,#06120ffa)}.phase12-spinner{border-color:#ffffff1f;border-top-color:var(--ui-gold)}@media(max-width:1024px)and (pointer:coarse){.quick-controls,.game-menu,.chat-panel,.multiplayer-game-status,.mobile-cue-speed-readout,.tip-panel,.stroke-panel{backdrop-filter:none;-webkit-backdrop-filter:none}}@media(max-width:760px){.quick-controls{top:max(8px,env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));width:auto;max-width:none;align-items:stretch;gap:4px;padding:4px;transform:none;border-radius:10px;background:linear-gradient(90deg,rgba(94,58,36,.22),transparent 12% 88%,rgba(94,58,36,.22)),linear-gradient(180deg,#091b16f5,#030c0af2)}.quick-controls>.quick-button,.undo-shot-button{flex:0 0 clamp(36px,10vw,42px);width:clamp(36px,10vw,42px);min-width:0;min-height:42px;border-radius:7px;font-size:22px}.camera-view-group{grid-template-columns:repeat(3,clamp(25px,7.4vw,30px));gap:1px;padding:2px}.camera-view-option{min-height:36px;padding-inline:0}.camera-view-option span{font-size:14px}.camera-view-option small{font-size:7px}.mechanical-scoreboard,.mechanical-scoreboard.compact-score{flex:1 1 110px;width:auto;min-width:92px;max-width:none;padding:3px;border-radius:6px}.compact-score .scoreboard-top-bay{height:34px;padding:2px 6px}.scoreboard-brand{min-width:26px;height:14px;font-size:5px}.scoreboard-readout strong{min-width:10px;font-size:11px}.game-menu{top:calc(100% + 7px);left:0;right:0;width:auto;transform:none;border-radius:10px}.quick-elevation{top:calc(100% + 7px);left:0;right:0;width:100%;transform:none}.chat-panel{border-radius:18px}.mobile-precision-readout{position:fixed;z-index:31;display:block;max-width:min(250px,calc(100vw - 20px));padding:7px 11px;transform:translate(-50%,-100%);border:1px solid rgba(240,202,122,.42);border-radius:999px;background:#04110eeb;color:#fff8e9;box-shadow:0 6px 18px #00000057;font-size:11px;font-weight:800;white-space:nowrap;pointer-events:none}.mobile-fine-controls{position:fixed;z-index:30;left:50%;bottom:calc(max(6px,env(safe-area-inset-bottom)) + 154px);display:flex;align-items:center;gap:5px;min-height:46px;padding:4px 5px 4px 10px;transform:translate(-50%);border:1px solid rgba(240,202,122,.3);border-radius:999px;background:#04110ecc;color:#fff8e9;box-shadow:0 8px 22px #00000047}.mobile-fine-controls strong{max-width:116px;overflow:hidden;color:#fff8e9db;font-size:8px;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.mobile-tip-nudges,.mobile-aim-nudges{display:flex;gap:3px}.mobile-fine-controls button{min-width:42px;min-height:42px;padding:0 8px;border:1px solid rgba(255,255,255,.13);border-radius:50%;background:#ffffff13;color:#fff;font-size:17px;font-weight:900;touch-action:none}.mobile-aim-nudges button{min-width:78px;border-radius:999px;font-size:10px}.cue-hud{display:grid;grid-template-columns:minmax(0,1fr) 80px;align-items:end;gap:5px}.tip-panel{width:auto;min-width:0;padding:4px;border-radius:14px;filter:none}.stroke-panel{border-radius:15px}}@media(max-width:700px){.phase12-flow{padding:max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}.phase12-card{width:100%;max-height:calc(100dvh - max(20px,env(safe-area-inset-top)) - max(20px,env(safe-area-inset-bottom)));padding:22px 16px;border-radius:16px;box-shadow:0 24px 72px #00000085,inset 0 1px #ffffff0e}.phase12-home-card{padding:38px 20px 28px}.phase12-card h1{margin-top:8px;font-size:clamp(52px,18vw,72px)}.phase12-card h2{margin-bottom:16px}.phase12-card button{border-radius:9px}.phase12-card>.phase12-secondary{margin-top:10px}.phase12-main-actions,.phase12-mode-grid,.phase12-footer-actions{margin-top:16px;gap:8px}.phase12-handi-grid{gap:8px}.phase12-handi-player{grid-template-rows:auto auto 42px auto}.phase12-rules{margin-top:12px;padding:12px}.phase12-check{min-height:40px}.phase12-room-join{grid-template-columns:minmax(0,1fr) 104px;gap:8px}.phase12-room-join input{font-size:16px}.phase12-final-score{margin:16px 0;gap:8px}.phase12-final-score>div{padding:14px 8px}.phase12-final-score strong{font-size:42px}}@media(max-width:380px){.quick-controls{left:max(5px,env(safe-area-inset-left));right:max(5px,env(safe-area-inset-right));gap:3px;padding:3px}.quick-controls>.quick-button,.undo-shot-button{flex-basis:clamp(34px,9.8vw,38px);width:clamp(34px,9.8vw,38px);min-height:40px;font-size:20px}.camera-view-group{grid-template-columns:repeat(3,24px)}.mechanical-scoreboard,.mechanical-scoreboard.compact-score{min-width:86px}.compact-score .scoreboard-top-bay{height:32px;padding:2px 4px}.scoreboard-brand,.mobile-fine-controls strong{display:none}.cue-hud{grid-template-columns:minmax(0,1fr) 76px;gap:3px}.tip-panel{padding:3px}.ball-hud-stage{flex-basis:174px;width:174px;height:60px}.tip-ball,.ball-hud-object{width:58px;height:58px}.tip-ball{left:58px}.ball-hud-object{left:calc(58px + var(--object-separation) * 58px)}.tip-actions{flex-basis:44px;width:44px}.tip-joystick{flex-basis:44px;width:44px;height:44px}.stroke-panel{width:76px;padding:3px}}@media(max-height:620px){.phase12-flow{align-items:start}.phase12-card{padding-block:18px}.phase12-home-card{padding-block:26px}.mobile-fine-controls{bottom:calc(max(3px,env(safe-area-inset-bottom)) + 126px)}}@media(prefers-reduced-motion:reduce){button,select,input{transition-duration:1ms}}
