@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff)format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/dm-sans-latin-ext-600-normal-4vooXBpG.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-600-normal-DRtaDpgU.woff)format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2)format("woff2"),url(/assets/dm-sans-latin-400-normal-BwCSEQnW.woff)format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/dm-sans-latin-600-normal-Aqo67rzb.woff2)format("woff2"),url(/assets/dm-sans-latin-600-normal-BmdmIIQ2.woff)format("woff")}@font-face{font-family:Tiny5;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/tiny5-latin-ext-400-normal-_SHQDGOK.woff2)format("woff2"),url(/assets/tiny5-latin-ext-400-normal-BksQzalU.woff)format("woff")}@font-face{font-family:Tiny5;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/tiny5-latin-400-normal-BsIaeAHC.woff2)format("woff2"),url(/assets/tiny5-latin-400-normal-DyAV0xrX.woff)format("woff")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#fff;--ink:#294a3d;--muted:#7a8274;--line:#e3e8df;--green-soft:#f0f3ec;--error:#9e3d2c;--radius:6px;--font:"DM Sans",sans-serif;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{color:var(--ink);font:400 14px/1.5 var(--font);-webkit-font-smoothing:antialiased;background:#fff}button,input{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}button:focus-visible,input:focus-visible{outline-offset:3px;outline:2px solid #b77d65}.icon{flex:none;width:19px;height:19px}.button{justify-content:center;align-items:center;gap:var(--space-3);min-height:46px;padding:var(--space-3) var(--space-5);border-radius:var(--radius);color:var(--ink);overflow-wrap:anywhere;background:0 0;border:1px solid #0000;font-size:12px;font-weight:600;line-height:1.4;transition:background .15s,transform .15s;display:inline-flex}.button:hover:not(:disabled){background:var(--green-soft)}.button:active{transform:translateY(1px)}.button:disabled{cursor:default;opacity:.4;transform:none}.button--primary{color:#fff;background:var(--ink)}.button--primary:hover:not(:disabled){background:#42624f}.button--secondary{border-color:var(--line)}.button--text{font-weight:400}.button--icon{width:44px;min-width:44px;min-height:44px;padding:var(--space-3)}.button--full{width:100%}.button--inline{white-space:nowrap;overflow-wrap:normal;flex-shrink:0}.button[aria-busy=true]{opacity:.65;cursor:wait}.world{width:100%;height:100%;position:relative}.court-stage{position:absolute;inset:0}.court-stage canvas{width:100%;height:100%;image-rendering:pixelated;display:block}.scoreboard{top:max(env(safe-area-inset-top),var(--space-6));align-items:center;gap:var(--space-4);padding:var(--space-2) var(--space-4);border-radius:var(--radius);pointer-events:none;white-space:nowrap;background:#ffffffed;display:flex;position:absolute;left:50%;transform:translate(-50%)}.score-team{align-items:center;gap:var(--space-3);display:flex;position:relative}.score-team--coral{--score-accent:#cf6b53}.score-team--green{--score-accent:#528067}.score-name{letter-spacing:1px;text-transform:uppercase;color:var(--muted);font-size:10px}.score-team .score-value{color:var(--ink)}.score-value{place-items:center;min-width:24px;height:32px;font-weight:600;line-height:1;display:grid}.score-number{grid-area:1/1;display:block}.score-number--previous{opacity:0}.score-divider{color:var(--muted);font-size:14px}.score-team--point .score-value{animation:1.2s ease-out score-point}.score-team--point .score-number--current{animation:.65s steps(7,end) score-arrive}.score-team--point .score-number--previous{animation:.35s steps(5,end) score-depart}.score-gain{color:var(--score-accent);opacity:0;font:600 12px monospace;position:absolute;top:100%;left:50%;transform:translate(-50%)}.score-team--point .score-gain{animation:1.3s ease-out score-gain}@keyframes score-point{0%,70%{color:var(--score-accent)}30%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes score-arrive{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes score-depart{0%{opacity:.7;transform:translateY(0)}to{opacity:0;transform:translateY(-18px)}}@keyframes score-gain{0%{opacity:0;translate:0 -4px}20%,65%{opacity:1;translate:0 2px}to{opacity:0;translate:0 6px}}.stage-loading{color:var(--muted);background:#fff;justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;inset:0}.spinner{border:2px solid var(--line);border-top-color:var(--ink);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}.player-label{font:600 8px var(--font);letter-spacing:.6px;color:var(--ink);pointer-events:none;z-index:1;background:#ffffffed;border-radius:3px;padding:3px 5px;position:absolute;transform:translate(-50%,-100%)}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.dialog{color:var(--ink);border:1px solid var(--line);padding:var(--space-6) var(--space-8) var(--space-8);background:#fff;border-radius:12px;width:min(430px,100vw - 32px);max-height:calc(100dvh - 40px);overflow:auto;box-shadow:0 24px 100px #263e3318}.dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#263b3526}.dialog-header{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}h2{letter-spacing:-.8px;margin:var(--space-3) 0 var(--space-4);font-size:25px;font-weight:600;line-height:1.2}.dialog-copy{color:var(--muted);margin:0 0 var(--space-6);font-size:12px;line-height:1.8}.field-label{letter-spacing:1px;margin-bottom:var(--space-2);color:var(--muted);font-size:9px;font-weight:600;display:block}.input{width:100%;min-width:0;height:48px;padding:var(--space-3) var(--space-4);border:1px solid var(--line);color:var(--ink);border-radius:var(--radius);background:#fafbf8;font-size:16px;transition:border-color .15s}.input:hover{border-color:#b0baa6}.input::placeholder{color:#a3a996}.input--code{text-transform:uppercase;letter-spacing:4px;font-weight:600}#create-room{margin-top:var(--space-4)}.divider-label{align-items:center;gap:var(--space-3);color:var(--muted);margin:var(--space-6) 0;font-size:10px;display:flex}.divider-label:before,.divider-label:after{content:"";background:var(--line);flex:1;height:1px}.join-row{gap:var(--space-3);display:flex}.join-row .input{flex:1}.format-picker{gap:var(--space-1);margin:0 0 var(--space-5);padding:var(--space-1);border:1px solid var(--line);border-radius:var(--radius);background:var(--green-soft);display:flex}.format-option{cursor:pointer;text-align:center;flex:1;position:relative}.format-option input{opacity:0;width:1px;height:1px;position:absolute}.format-option span{padding:var(--space-2) var(--space-3);border-radius:var(--radius);color:var(--muted);font-size:12px;font-weight:600;display:block}.format-option:hover span{color:var(--ink)}.format-option input:checked+span{color:var(--ink);background:#fff}.format-option input:focus-visible+span{outline-offset:2px;outline:2px solid #b77d65}.format-option input:disabled+span{opacity:.4;cursor:default}.form-error{color:var(--error);padding:var(--space-3);border-radius:var(--radius);margin-top:var(--space-4);background:#f8e9df;font-size:11px;line-height:1.6}.room-share{padding:var(--space-4) 0;border-bottom:1px solid var(--line)}.code-row{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.code-row strong{letter-spacing:7px;font-size:30px;font-weight:600}.helper{color:var(--muted);margin:var(--space-3) 0 0;font-size:10px;line-height:1.7;display:block}.player-slots{gap:var(--space-3);padding:var(--space-5) 0;display:grid}.player-slot{align-items:center;gap:var(--space-3);min-width:0;font-size:12px;display:flex}.player-slot-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.player-slot-detail{color:var(--muted);font-size:9px}.team-dot{border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.team-dot--coral{background:#cf6b53}.team-dot--green{background:#528067}#start-match{margin-top:var(--space-5)}.dialog--compact{text-align:center;padding:var(--space-8)}.toast{z-index:10;width:max-content;max-width:calc(100vw - 32px);padding:var(--space-3) var(--space-5);border:1px solid var(--line);color:var(--ink);border-radius:var(--radius);background:#fff;font-size:12px;position:fixed;bottom:80px;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #294a3d0a}.touch-controls{left:0;right:0;bottom:max(env(safe-area-inset-bottom),70px);padding:var(--space-4) max(env(safe-area-inset-left),24px);justify-content:space-between;align-items:center;gap:var(--space-6);pointer-events:none;display:none;position:absolute}.touch-controls>*{pointer-events:auto}.joystick-zone{touch-action:none;width:44vw;position:fixed;top:18vh;bottom:0;left:0}.joystick{touch-action:none;opacity:.55;background:#eef2ea99;border:1px solid #d8ddcd;border-radius:50%;flex:none;width:104px;height:104px;transition:opacity .25s,transform .18s ease-out;position:relative;pointer-events:none!important}.joystick.is-active{opacity:1;transition:opacity .1s}.joystick-cross:before,.joystick-cross:after{content:"";background:#cdd5bf;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.joystick-cross:before{width:52px;height:1px}.joystick-cross:after{width:1px;height:52px}.joystick-thumb{pointer-events:none;background:#d2d9c3cc;border:1px solid #c2ccb2;border-radius:50%;width:42px;height:42px;position:absolute;top:30px;left:30px}.touch-shots{align-items:center;gap:var(--space-4);display:flex}.button--shot{width:70px;min-height:70px;padding:var(--space-3);color:#fff;touch-action:none;-webkit-user-select:none;user-select:none;background:#466451d9;border-radius:50%}.button--shot:hover{background:#3c604d}.button--shot:active,.button--shot.is-pressed{background:#527a61;transform:scale(.96)}.button--lob{width:54px;min-height:54px;color:var(--ink);border-color:var(--line);background:#eef2ead9;font-size:24px;line-height:1}.button--lob:hover{color:#fff}@keyframes spin{to{transform:rotate(360deg)}}@media (pointer:coarse),(width<=760px){.touch-controls{display:flex}.dialog{padding:var(--space-5) var(--space-6) var(--space-6)}}@media (height<=540px) and (orientation:landscape){.touch-controls{bottom:max(env(safe-area-inset-bottom),20px)}.joystick{width:88px;height:88px}.joystick-thumb{top:22px;left:22px}.button--shot{width:60px;min-height:60px}.button--lob{width:50px;min-height:50px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation-duration:.01ms!important}}@media (width<=400px),(height<=540px){.scoreboard{top:max(env(safe-area-inset-top),var(--space-3));gap:var(--space-3)}.score-team{gap:var(--space-2)}.score-number{width:auto;height:21px}.score-value{height:28px}}body[data-native=true] #fullscreen{display:none}.court-dock{z-index:4;left:50%;bottom:max(env(safe-area-inset-bottom),var(--space-5));gap:var(--space-1);padding:var(--space-1);border-radius:var(--radius);opacity:.6;background:#ffffffed;transition:opacity .25s;display:flex;position:absolute;transform:translate(-50%)}.court-dock:hover,.court-dock:focus-within{opacity:1}.court-dock .button{color:#7a8e7d}body[data-mode=menu] .court-dock{opacity:.85}body[data-paused=true] .court-dock{visibility:hidden}.menu{z-index:2;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.menu-title{letter-spacing:-.6px;margin:0;font-size:24px;font-weight:400;line-height:1.2}.menu-title--brand{top:max(env(safe-area-inset-top),var(--space-8));letter-spacing:1px;color:var(--ink);font:400 28px/1 Tiny5,monospace;position:absolute}.menu--pause{z-index:5;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);pointer-events:auto;background:#ffffffd9}.pause-content{justify-items:center;gap:var(--space-3);max-width:100%;padding:var(--space-6);display:grid}.menu-kicker{letter-spacing:2px;color:var(--muted);margin:0;font-size:9px}.menu-score{color:var(--muted);text-align:center;margin:0;font-size:12px}.menu-actions{justify-content:center;gap:var(--space-1);margin-top:var(--space-3);display:flex}.settings{display:grid}.setting{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:48px;padding:var(--space-3) var(--space-2);border-radius:var(--radius);color:var(--ink);text-align:left;background:0 0;border:0;font-size:13px;display:flex}.setting:hover{background:var(--green-soft)}.setting:active{background:var(--line)}.setting:disabled{opacity:.4;cursor:default}.setting small{color:var(--muted);font-size:10px;line-height:1.5;display:block}.switch{background:#d9ded3;border-radius:999px;flex:none;width:38px;height:22px;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:3px;left:3px}.setting[aria-checked=true] .switch{background:var(--ink)}.setting[aria-checked=true] .switch:after{transform:translate(16px)}.dialog--settings{width:min(360px,100vw - 32px)}.room-format{justify-content:space-between;align-items:center;gap:var(--space-3);margin:0 0 var(--space-4);display:flex}body[data-native=true] [data-web-only]{display:none}.rotate-hint{left:50%;bottom:calc(max(env(safe-area-inset-bottom),70px) + 150px);padding:var(--space-2) var(--space-4);color:var(--muted);white-space:nowrap;pointer-events:none;margin:0;font-size:11px;display:none;position:absolute;transform:translate(-50%)}@media (pointer:coarse),(width<=760px){.court-dock{bottom:max(env(safe-area-inset-bottom),var(--space-3));opacity:.7}}@media (orientation:portrait) and (width<=600px){body[data-mode=practice] .rotate-hint,body[data-mode=online] .rotate-hint{display:block}}@media (height<=540px){.menu-title--brand{top:max(env(safe-area-inset-top),var(--space-4));font-size:24px}}html,body{overscroll-behavior:none}.court-stage canvas{touch-action:none}.dialog-actions{gap:var(--space-3);margin-top:var(--space-6);display:grid}.appearance-options{gap:var(--space-2);border:0;margin:0;padding:0;display:flex}.appearance-option{cursor:pointer;flex:1;min-width:0;position:relative}.appearance-option input{opacity:0;width:1px;height:1px;position:absolute}.appearance-choice{align-content:center;justify-items:center;gap:var(--space-2);min-height:96px;padding:var(--space-3) var(--space-2);border-radius:var(--radius);color:var(--muted);overflow-wrap:anywhere;background:0 0;font-size:11px;display:grid}.appearance-option:hover .appearance-choice{background:var(--green-soft)}.appearance-option:active .appearance-choice{background:var(--line)}.appearance-option input:checked+.appearance-choice{background:var(--green-soft);color:var(--ink)}.appearance-option input:focus-visible+.appearance-choice{outline-offset:3px;outline:2px solid #b77d65}.appearance-option input:disabled+.appearance-choice{opacity:.4;cursor:default}.appearance-preview{justify-content:center;align-items:center;width:48px;height:48px;display:flex}.appearance-preview svg{max-width:100%;height:40px;display:block}.dialog--appearance::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none;background:#263b3514}@media (orientation:portrait) and (width<=600px){.dialog--appearance{top:auto;bottom:calc(max(env(safe-area-inset-bottom),var(--space-3)) + 72px);margin:0 auto;position:fixed}}.appearance-tabs{gap:var(--space-1);margin-bottom:var(--space-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.button--tab{min-width:0;min-height:40px;padding:var(--space-2);font-size:12px;font-weight:400}.button--tab[aria-selected=true]{background:var(--green-soft);color:var(--ink)}.wardrobe-layout{gap:var(--space-4);grid-template-columns:128px minmax(0,1fr);align-items:center;display:grid}.wardrobe-controls{min-width:0}.character-preview{width:128px;height:184px;margin:0 auto}.character-preview canvas{image-rendering:pixelated;display:block}.dialog--wardrobe{width:min(580px,100vw - 32px)}.appearance-options--courts .appearance-preview{width:64px;height:56px}.appearance-options--courts .appearance-preview svg{width:72px;max-width:none;height:56px}@media (width<=600px) and (orientation:portrait){.wardrobe-layout{gap:var(--space-2);grid-template-columns:1fr}.character-preview{height:160px}}@media (display-mode:standalone){#fullscreen{display:none}}
