:root{--paper:#0c0f0c;--ink:#f4f6f0;--muted:#a3ad9d;--coral:#ff725b;--lime:#baff32;--line:#333a30;--surface:#171c16;color-scheme:dark;font-family:Arial,-apple-system,BlinkMacSystemFont,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;color:inherit;border:0;background:none;touch-action:manipulation}button:disabled{cursor:default;opacity:.45}button:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid var(--lime);outline-offset:4px}a{color:inherit}h1,h2,p{margin:0}svg{width:24px;height:24px;flex-shrink:0}small{font-size:12px}h1{font-weight:900;letter-spacing:-.055em}h2{font-size:24px;letter-spacing:-.035em}.shell{max-width:1040px;margin:auto;padding:0 36px}.header{height:94px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:8px;padding:0;font-family:Impact,Arial Black,Arial,sans-serif;font-size:38px;font-style:italic;font-weight:900;letter-spacing:-1.5px;line-height:1}.brand-dot{color:var(--lime)}.brand svg{color:var(--lime);width:29px;height:29px}.icon-button{width:44px;height:44px;border:1px solid var(--line);border-radius:7px;display:grid;place-items:center}.icon-button:hover{background:#282f23}.back-arrow{font-family:Arial,sans-serif;font-size:23px;font-style:normal;margin-right:5px}.home-title{display:flex;align-items:flex-end;justify-content:space-between;padding:30px 0 20px}.home-title h1{font-size:68px;line-height:1}.home-title h1 span{color:var(--lime)}.home-title>span{font-size:12px;letter-spacing:3px;color:var(--muted);padding-bottom:5px}.sport-switch{display:flex;border-bottom:1px solid var(--line);gap:25px;margin-bottom:28px}.sport-switch button{padding:15px 14px 14px;font-size:15px;font-weight:800;min-height:50px;border-bottom:3px solid transparent;flex:1}.sport-switch button[aria-pressed=true]{color:var(--lime);border-color:var(--lime)}.sport-switch button:not([aria-pressed=true]):hover{background:var(--surface)}.home-layout{display:grid;grid-template-columns:1.04fr 1fr;gap:40px;align-items:center}.home-art{position:relative;background:#121810;border:1px solid var(--line);overflow:hidden;min-width:0}.sport-label{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:2px;font-weight:800;position:absolute;top:20px;left:20px;right:20px;z-index:2}.tiny-ball{width:7px;height:7px;background:var(--lime);border-radius:50%}.sport-number{margin-left:auto;color:var(--muted);letter-spacing:0}.table-art{height:370px;position:relative;display:grid;place-items:center;overflow:hidden}.hero-number{position:absolute;left:8px;top:25px;font-family:Impact,Arial Black,sans-serif;font-size:240px;line-height:1;color:#252d20;opacity:.7;font-style:italic}.art-orbit{position:absolute;right:-70px;top:-30px;width:170px;height:600px;transform:rotate(38deg);background:repeating-linear-gradient(90deg,var(--lime) 0 8px,transparent 8px 16px);opacity:.17}.orbit-two{left:-65px;top:90px;width:60px;opacity:.08}.mini-table{width:205px;height:265px;background:#183e2b;border:6px solid #45632d;box-shadow:14px 18px #040704;border-radius:3px;transform:rotate(-19deg);position:relative;isolation:isolate}.mini-table:before{content:"";position:absolute;inset:9px;border:1px solid #baff32aa}.mini-midline{position:absolute;left:50%;top:9px;bottom:9px;width:1px;background:#baff3244}.mini-net{position:absolute;left:-12px;right:-12px;top:48%;height:4px;background:var(--lime);box-shadow:0 4px #030803}.art-racket{position:absolute;width:76px;height:88px;border-radius:50%;background:var(--coral);box-shadow:5px 9px #050a0777;border:2px solid #ffb0a0}.art-racket:after{content:"";width:15px;height:43px;background:#afb3a5;position:absolute;top:77px;left:29px;border-radius:0 0 4px 4px;z-index:-1}.own{bottom:7px;right:-23px;transform:rotate(-25deg)}.opponent{width:60px;height:69px;top:9px;left:8px;background:var(--lime);border-color:#dcffa0;transform:rotate(153deg)}.opponent:after{top:59px;left:21px}.art-ball{position:absolute;width:19px;height:19px;background:#fff;border-radius:50%;left:41%;top:58%;box-shadow:4px 7px #0b160f66;animation:float 3s ease-in-out infinite}.ball-trace{position:absolute;top:39%;left:25%;width:55px;height:43px;border-right:2px dashed #baff3277;border-radius:50%;transform:rotate(15deg)}.art-star{display:none}.art-caption{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;font-weight:700;padding:16px 18px;background:#0b100ad9;border-top:1px solid var(--line)}.capsule{font-size:11px;font-weight:600;border:1px solid var(--line);padding:6px 9px;border-radius:4px;white-space:nowrap}.art-badminton .mini-table{background:#3b314d;border-color:#685279}.art-badminton .art-racket{background:repeating-linear-gradient(0deg,transparent 0 6px,#d4eac4 6px 7px),repeating-linear-gradient(90deg,transparent 0 6px,#d4eac4 6px 7px);border:4px solid var(--lime);box-shadow:none}.art-air-hockey .mini-table{background:#29322c;border-color:#56654d}.art-air-hockey .mini-net{height:1px;left:8px;right:8px;background:#fff5;box-shadow:none}.art-air-hockey .mini-table:after{content:"";position:absolute;left:30%;right:30%;top:35%;height:30%;border:2px solid #baff3255;border-radius:50%}.art-air-hockey .art-racket{height:62px;border-radius:50%;background:var(--coral)}.art-air-hockey .opponent{background:var(--lime)}.art-air-hockey .art-racket:after{width:25px;height:25px;left:30%;top:23%;border-radius:50%;background:#fff4;z-index:auto}.art-air-hockey .art-ball{background:#eaffc4}.mode-panel{display:grid;grid-template-columns:1fr 1fr;gap:12px;min-width:0}.eyebrow{font-size:11px;color:var(--muted);letter-spacing:2px;font-weight:700;grid-column:1/-1}.mode-title{font-size:34px;font-weight:900;grid-column:1/-1;margin:0 0 4px}.rule-select{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;grid-column:1/-1}.rule-select button{border:1px solid #424b3a;border-radius:6px;min-height:74px;padding:9px 3px;display:flex;flex-direction:column;align-items:center;gap:4px;background:#131810}.rule-select button[aria-pressed=true]{border:2px solid var(--lime);padding:8px 2px;background:#26341a}.rule-select span{font-size:20px;line-height:1;color:var(--lime)}.rule-select strong{font-size:12px;white-space:nowrap}.rule-select small{font-size:9px;color:var(--muted);line-height:1.5}.mode-button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:17px 12px;border:1px solid #48513f;border-radius:6px;background:var(--surface);min-width:0;transition:background .15s,transform .1s}.mode-button:active{transform:scale(.98)}.mode-button:hover{border-color:#a9b89b}.mode-button>svg{width:18px;margin-left:auto}.mode-icon{display:grid;place-items:center;flex-shrink:0}.mode-icon svg{width:24px;height:24px}.mode-button strong{display:block;font-size:15px;font-weight:800;white-space:nowrap}.mode-button small{display:none}.primary{grid-column:1/-1;background:var(--lime);border-color:var(--lime);color:#11180a;min-height:65px;padding:16px 18px;gap:14px}.primary:hover{background:#caff67;border-color:#caff67}.primary strong{font-size:21px}.primary small{display:block;color:#3d512a;font-size:10px;margin-top:4px;font-weight:600}.primary .mode-icon{padding-right:13px;border-right:1px solid #18230d44}.primary .mode-icon svg{width:27px;height:27px}.primary>svg{width:26px;height:26px}.difficulty-row{grid-column:1/-1;display:flex;gap:7px}.difficulty-row button{flex:1;min-height:36px;border:1px solid var(--line);border-radius:4px;font-size:11px;color:var(--muted)}.difficulty-row button[aria-pressed=true]{border-color:#778768;color:var(--ink);background:#2b3423}.challenge-button{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px;font-weight:700;text-align:left}.challenge-button span:last-child{color:var(--muted);font-size:10px;font-weight:400}.home-note{grid-column:1/-1;color:var(--muted);font-size:10px;display:flex;align-items:center;gap:7px}.note-dot{width:5px;height:5px;background:var(--lime);border-radius:50%}.arcade-shelf{margin-top:38px}.shelf-heading{display:flex;align-items:center;gap:15px;margin-bottom:16px}.shelf-heading h2{font-size:18px;font-weight:900}.shelf-heading:after{content:"";height:1px;flex:1;background:var(--line)}.shelf-heading>span{display:none}.arcade-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.arcade-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;overflow:hidden;border:1px solid var(--line);border-radius:6px;padding:20px;text-align:left;background:#151c11;min-width:0;transition:border-color .15s,transform .15s}.arcade-card:hover{border-color:var(--lime);transform:translateY(-2px)}.arcade-card:before{content:"";position:absolute;width:90px;height:180px;right:-30px;top:-70px;background:repeating-linear-gradient(90deg,#baff321c 0 8px,transparent 8px 15px);transform:rotate(35deg);pointer-events:none}.arcade-symbol{display:grid;place-items:center;width:62px;height:62px;font-size:48px;color:var(--lime);font-weight:900;line-height:1}.arcade-basketball{background:#201b13}.arcade-basketball .arcade-symbol{color:#ff9256}.arcade-reflex{background:#152119}.arcade-reflex .arcade-symbol{color:#8af0bc}.arcade-card strong{font-size:17px;margin:12px 0 7px}.arcade-card small{font-size:11px;color:var(--muted)}.footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:22px 0;margin-top:34px;font-size:10px;color:#88927e;letter-spacing:2px}.narrow{max-width:560px}.friends-panel{max-width:390px;margin:30px auto 60px}.friend-emblem{width:62px;height:62px;border-radius:7px;border:1px solid var(--lime);display:grid;place-items:center;color:var(--lime);margin-bottom:24px}.friend-emblem svg{width:30px;height:30px}.friends-panel .eyebrow{margin-bottom:12px}.friends-panel h1{font-size:34px;margin-bottom:12px}.room-rule{color:var(--lime);font-size:14px;margin-bottom:12px}.muted{color:var(--muted);font-size:13px;line-height:1.8}.friends-panel label{display:block;font-size:13px;font-weight:600;margin:26px 0 10px}input{border:1px solid #48513f;border-radius:5px;width:100%;background:#161b13;color:var(--ink);padding:16px;font-size:16px;min-height:54px}input::placeholder{color:#818b77}.solid-button{display:flex;align-items:center;justify-content:center;gap:12px;background:var(--lime);color:#14200b;border-radius:6px;min-height:54px;padding:15px 18px;font-weight:800;width:100%;font-size:16px}.solid-button:hover{background:#ceff7a}.friends-panel>.solid-button{margin-top:16px;justify-content:space-between}.divider{display:flex;align-items:center;gap:14px;margin:30px 0 18px;color:var(--muted);font-size:12px}.divider:before,.divider:after{content:"";height:1px;background:var(--line);flex:1}.join-row{display:flex;gap:9px}.code-input{letter-spacing:4px;min-width:0}.join{width:80px;flex-shrink:0}.small-note{font-size:12px;color:var(--muted);text-align:center;margin-top:20px;line-height:1.8}.connection-status{color:var(--coral);font-size:13px;line-height:1.7;min-height:22px;margin-top:16px}.text-button{font-size:13px;min-height:44px;padding:10px 4px;color:var(--ink);text-decoration:underline;text-underline-offset:4px}.game-shell{max-width:570px;margin:auto;padding:0 22px env(safe-area-inset-bottom)}.game-shell .header{height:70px;border:0}.game-shell .brand{font-size:30px}.game-main{display:flex;flex-direction:column;height:calc(100svh - 70px - env(safe-area-inset-bottom));min-height:610px;max-height:970px;padding-bottom:8px}.match-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:26px}.timer{font-family:Arial,sans-serif;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}.scoreboard{display:flex;align-items:center;justify-content:center;gap:26px;padding-top:12px}.player{display:grid;grid-template-columns:7px auto;align-items:center;gap:7px;max-width:43%}.player span:nth-child(2){font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.player strong{grid-column:1/3;font-family:Impact,Arial Black,sans-serif;font-size:62px;font-weight:900;line-height:1;text-align:center;font-variant-numeric:tabular-nums}.score-separator{font-size:35px;color:#647158;font-weight:800;padding-top:22px}.player-dot{width:7px;height:7px;border-radius:50%}.coral{background:var(--coral)}.lime{background:var(--lime)}.match-status{text-align:center;color:var(--muted);font-size:10px;min-height:25px;padding:5px 0}.match-point{color:var(--lime);font-weight:800;letter-spacing:.5px}.variant-status{text-align:center;color:var(--lime);font-size:12px;font-weight:700;min-height:29px;padding:4px 5px;background:#1d2816;border:1px solid #4d633a;border-radius:4px;font-variant-numeric:tabular-nums}.variant-status[hidden]{display:none}.variant-status.urgent{color:#ff9a86;border-color:#ba614d;background:#351d18}.court-wrap{position:relative;width:100%;flex:1;min-height:230px}.court-wrap canvas{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none;outline-offset:-4px}.game-overlay{position:absolute;inset:9% 7% 18%;display:none;align-items:center;justify-content:center;pointer-events:none;z-index:3}.game-overlay.visible{display:flex}.overlay-card{padding:25px 20px;text-align:center;background:#10160ff5;border:1px solid #63784c;border-radius:9px;box-shadow:0 10px 40px #0009;width:100%;max-width:330px;pointer-events:auto}.overlay-card h2{font-size:28px;letter-spacing:-.045em;font-weight:900}.overlay-card p{font-size:13px;color:#bcc6b2;line-height:1.8;margin-top:10px}.overlay-card .solid-button{margin-top:18px;font-size:14px;min-height:48px}.overlay-card .text-button{margin-top:7px}.game-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:3px 8px;min-height:28px;padding:3px 0;font-size:10px;color:var(--muted)}#rally-count{font-size:10px;letter-spacing:1px;white-space:nowrap}#rally-count b{color:var(--ink);font-size:16px;margin-left:3px}#hint{font-size:10px;text-align:right;max-width:65%;line-height:1.5}#network-quality{font-variant-numeric:tabular-nums;white-space:nowrap}#network-quality.slow{color:#ff9c85}.invite-strip,.local-actions{border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:42px;font-size:11px;margin-top:6px}.invite-strip b{font-size:15px;letter-spacing:2px;margin-left:3px}.invite-strip .text-button{font-size:11px;padding:9px 2px;white-space:nowrap}.local-actions .text-button{font-size:12px}.series-line{text-align:center;min-height:21px;font-size:10px;color:var(--muted);padding:2px 0 4px}.emote-controls{display:flex;justify-content:space-between;gap:5px;padding-top:5px}.emote-controls button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:23px;min-width:39px;min-height:49px;flex:1;border:1px solid #3a4433;border-radius:5px;background:#1c2418;transition:transform .1s,background .1s}.emote-controls small{font-size:9px;color:#c3cdb9}.emote-controls button:active{transform:scale(.89);background:#394d25}.emote-bubble{position:absolute;border:1px solid #8d9a7e;border-radius:5px;background:#121b11ed;color:var(--ink);padding:8px 10px;font-size:12px;pointer-events:none;opacity:0;box-shadow:0 3px 10px #0006;z-index:2}.their-emote{right:5%;top:16%}.my-emote{left:5%;bottom:24%}.emote-bubble.show{animation:emote 2.3s ease-out both}.point-pop,.combo-pop,.arcade-pop{position:absolute;text-align:center;pointer-events:none;opacity:0;color:var(--lime);font-family:Arial Black,Arial,sans-serif;font-weight:900;font-style:italic;letter-spacing:.5px;text-shadow:0 2px 8px #061005}.point-pop{inset:44% 0 auto;font-size:28px}.combo-pop{top:30%;width:100%;font-size:20px}.point-pop.pop,.combo-pop.pop,.arcade-pop.pop{animation:point .85s ease-out both}.settings-dialog{border:1px solid #647852;border-radius:9px;padding:26px;max-width:360px;width:calc(100% - 40px);color:var(--ink);background:var(--paper)}dialog::backdrop{background:#000a}.settings-dialog h2{margin-bottom:22px;font-size:25px}.setting-row{display:flex;align-items:center;gap:10px;padding:14px 0;font-size:15px}.setting-row small{font-size:11px;color:var(--muted)}.setting-row input{min-height:24px;width:24px;height:24px;margin-left:auto;accent-color:var(--lime)}.settings-dialog .solid-button{margin-top:18px}#toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%,15px);background:var(--lime);color:#16220c;padding:13px 18px;border-radius:5px;opacity:0;pointer-events:none;transition:.2s;font-size:13px;font-weight:700;max-width:90vw;text-align:center;z-index:10}#toast.shown{opacity:1;transform:translate(-50%)}.sr-only{position:absolute!important;width:1px;height:1px;padding:0!important;margin:-1px!important;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.arcade-scorebar{display:flex;justify-content:space-between;padding:15px 10px 10px;gap:10px}.arcade-scorebar>div{display:flex;flex-direction:column;align-items:center;gap:4px}.arcade-scorebar span{font-size:10px;color:var(--muted)}.arcade-scorebar strong{font-family:Impact,Arial Black,sans-serif;font-size:36px;font-variant-numeric:tabular-nums}.arcade-wrap{position:relative;flex:1;min-height:330px}.arcade-wrap canvas{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none}.arcade-wrap .game-overlay{inset:12% 6%}.arcade-help{text-align:center;font-size:11px;color:var(--muted);padding:10px 3px 2px;line-height:1.6}.arcade-pop{inset:16% 0 auto;font-size:23px}.arcade-shell .local-actions{margin-top:3px}@keyframes float{50%{transform:translate(4px,-12px)}}@keyframes point{0%{opacity:0;transform:translateY(10px) scale(.88)}20%{opacity:1;transform:translateY(0) scale(1.08)}to{opacity:0;transform:translateY(-24px) scale(1)}}@keyframes emote{0%{opacity:0;transform:translateY(7px) scale(.8)}10%,80%{opacity:1;transform:none}to{opacity:0;transform:translateY(-7px)}}@media(max-width:750px){.shell{max-width:490px;padding:0 20px}.header{height:73px}.brand{font-size:34px}.home-title{padding:23px 0 15px}.home-title h1{font-size:50px}.home-title>span{font-size:10px}.sport-switch{gap:0;margin-bottom:16px}.sport-switch button{font-size:13px;padding:10px 7px 11px;min-height:46px}.home-layout{display:flex;flex-direction:column;gap:17px}.home-art{width:100%}.table-art{height:172px}.hero-number{font-size:174px;left:10px;top:10px}.mini-table{width:118px;height:154px;border-width:4px;transform:rotate(-20deg) translate(30px,4px);box-shadow:10px 12px #030703}.art-racket{width:52px;height:61px}.art-racket:after{width:10px;height:28px;top:52px;left:20px}.opponent{width:42px;height:48px;top:4px;left:3px}.opponent:after{top:41px;left:14px}.own{bottom:2px;right:-15px}.art-ball{width:13px;height:13px}.ball-trace{width:35px;height:30px;top:36%}.sport-label{left:13px;right:13px;top:12px;font-size:9px}.art-caption{font-size:11px;padding:10px 13px}.art-caption .capsule{font-size:9px;padding:4px 6px}.art-air-hockey .art-racket{height:44px}.art-air-hockey .art-racket:after{width:18px;height:18px;left:28%;top:22%}.art-orbit{right:-10px;top:-140px;width:90px;opacity:.22}.mode-panel{width:100%;gap:9px}.mode-panel>.eyebrow,.mode-title{display:none}.rule-select button{min-height:67px}.rule-select strong{font-size:11px}.rule-select small{font-size:8px}.primary{min-height:63px}.primary strong{font-size:20px}.mode-button:not(.primary){min-height:53px;padding:12px 10px;gap:8px}.mode-button:not(.primary) strong{font-size:13px}.mode-button:not(.primary)>svg{width:14px}.mode-button:not(.primary) .mode-icon svg{width:20px}.difficulty-row button{min-height:34px}.home-note{font-size:9px;margin-top:2px}.arcade-shelf{margin-top:28px}.shelf-heading{margin-bottom:12px}.arcade-cards{gap:8px}.arcade-card{padding:12px 9px}.arcade-symbol{width:42px;height:45px;font-size:37px}.arcade-card strong{font-size:12px;margin:8px 0 5px}.arcade-card small{font-size:9px;line-height:1.6}.footer{margin-top:25px;font-size:9px;padding:19px 0}.game-shell{padding-left:13px;padding-right:13px}.game-shell .header{height:58px}.game-shell .brand{font-size:27px}.game-shell .icon-button{width:37px;height:37px}.game-main{height:calc(100svh - 58px - env(safe-area-inset-bottom));min-height:567px}.scoreboard{padding-top:8px;gap:25px}.player strong{font-size:50px}.capsule{font-size:10px;padding:5px 7px}.match-meta .capsule{max-width:84%;overflow:hidden;text-overflow:ellipsis}.score-separator{font-size:30px}.court-wrap{min-height:219px}.overlay-card{padding:21px 15px}.overlay-card h2{font-size:24px}.emote-controls button{min-height:46px;font-size:21px}.game-bottom{min-height:25px}.invite-strip .text-button{font-size:10px}.arcade-scorebar strong{font-size:33px}.arcade-wrap{min-height:300px}}@media(max-width:360px){.shell{padding:0 15px}.home-title h1{font-size:45px}.sport-switch button{font-size:12px}.rule-select strong{font-size:10px}.rule-select small{font-size:7px}.rule-select{gap:5px}.primary strong{font-size:19px}.mode-button:not(.primary) strong{font-size:12px}.mode-button:not(.primary) .mode-icon svg{width:17px}.challenge-button{font-size:11px}.challenge-button span:last-child{font-size:9px}.arcade-card strong{font-size:10px}.arcade-card small{font-size:8px}.invite-strip b{font-size:13px;letter-spacing:1px}.game-shell{padding-left:9px;padding-right:9px}.emote-controls{gap:4px}#hint{font-size:9px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.emote-bubble.show,.point-pop.pop,.combo-pop.pop,.arcade-pop.pop{animation:quiet-pop 2s linear both!important}}@keyframes quiet-pop{0%,85%{opacity:1}to{opacity:0}}.arcade-cards{grid-template-columns:repeat(4,1fr)}.arcade-free-kick{background:#152218}.arcade-free-kick .arcade-symbol{font-size:40px}.arcade-free-kick:before{background:repeating-linear-gradient(90deg,#baff3220 0 8px,transparent 8px 15px)}@media(max-width:750px){.arcade-cards{grid-template-columns:repeat(2,1fr)}.arcade-card{min-height:140px;padding:14px}.arcade-card strong{font-size:14px}.arcade-card small{font-size:10px}.arcade-symbol{height:53px;font-size:44px}}#app[data-duel=true] .rule-select,#app[data-duel=true] #practice,#app[data-duel=true] #challenge{display:none}#app[data-duel=true] #cpu{grid-column:1/-1}.duel-inputs{position:absolute;left:7%;right:7%;bottom:9%;display:flex;gap:8px;z-index:1}.duel-inputs[hidden]{display:none}.duel-inputs button{min-height:43px;flex:1;background:#baff32;color:#142208;border-radius:5px;font-size:13px;font-weight:800;touch-action:none}.duel-inputs button:active{background:#efffd4}.duel-inputs button:disabled{opacity:.28}.sport-switch{gap:4px}.sport-switch button{font-size:13px;padding-left:8px;padding-right:8px}.art-basketball .mini-table{background:#342c20;border-color:#7f6645}.art-penalty .mini-table{background:#153d25;border-color:#456b35}@media(max-width:750px){.sport-switch{display:grid;grid-template-columns:repeat(5,1fr);gap:0}.sport-switch button{font-size:10px;padding:9px 2px;min-width:0}.sport-switch button[data-sport=badminton]{font-size:9px}}.sport-hero{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.home-art .table-art{height:375px}.hero-number{z-index:1;left:12px;top:5%;font-size:190px;color:#f5fff1;opacity:.11;pointer-events:none}.hero-title{position:absolute;bottom:17px;left:18px;font-size:34px;font-style:italic;font-weight:900;letter-spacing:-2px;text-shadow:0 3px 16px #000,0 1px 2px #000}.sport-label{background:#060b06c9;top:0;left:0;right:0;padding:12px 14px}.arcade-shelf summary{cursor:pointer;list-style:none;min-height:44px}.arcade-shelf summary::-webkit-details-marker{display:none}.arcade-shelf summary>span{display:inline;color:var(--muted);font-size:11px;order:2}.arcade-cards{grid-template-columns:repeat(3,1fr)}@media(max-width:750px){.home-art .table-art{height:196px}.hero-title{font-size:25px;left:13px;bottom:14px}.hero-number{font-size:148px;top:10%;left:9px}.sport-label{font-size:9px;padding:9px 12px}.art-caption{font-size:10px}.arcade-card strong{font-size:11px}.arcade-card{padding:12px 8px}.arcade-card small{font-size:9px}.arcade-symbol{font-size:38px}.arcade-card{min-height:128px}}@font-face{font-family:RallyDisplay;src:url(/fonts/display.ttf) format("truetype");font-style:normal;font-weight:900;font-display:swap}@font-face{font-family:RallyDisplay;src:url(/fonts/display-italic.ttf) format("truetype");font-style:italic;font-weight:900;font-display:swap}.brand{font-family:RallyDisplay,Arial Black,sans-serif;font-size:45px;letter-spacing:-1px}.player strong,.arcade-scorebar strong{font-family:RallyDisplay,Arial Black,sans-serif}.player strong{font-size:70px}.hero-number{font-family:RallyDisplay,Arial Black,sans-serif}.game-shell .brand{font-size:33px}.game-shell .scoreboard{padding-top:5px}.scoreboard .player strong{line-height:.9}.sport-switch button{font-weight:800}@media(max-width:750px){.header .brand{font-size:39px}.game-shell .header .brand{font-size:31px}.player strong{font-size:59px}.sport-switch{grid-template-columns:minmax(44px,.85fr) minmax(66px,1.5fr) minmax(57px,1.2fr) minmax(46px,.9fr) minmax(44px,.65fr)}.sport-switch button,.sport-switch button[data-sport=badminton]{font-size:11px}.home-title{padding-top:21px}}#app[data-sport=table-tennis] .court-wrap{border:1px solid #384534;border-radius:12px;overflow:hidden;background:#0b130e}.match-stats{display:flex;justify-content:center;gap:24px;margin:12px 0 18px;font-size:12px;color:var(--muted)}.match-stats b{font-size:22px;color:var(--ink);margin-left:5px}#app[data-sport=table-tennis] .combo-pop{top:62%;color:#c5ff50;text-shadow:0 2px 12px #000;font-family:RallyDisplay,sans-serif;font-size:29px;letter-spacing:1px}.game-bottom{height:32px;min-height:32px;flex:none;flex-wrap:nowrap}#hint{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:67%}.match-status{height:26px;flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-overlay.countdown .overlay-card{pointer-events:none;background:#101a10df;padding:15px 18px;max-width:265px}.game-overlay.countdown h2{font-family:RallyDisplay,sans-serif;font-size:48px;line-height:1}.game-overlay.countdown p{margin-top:5px}.shot-feedback{position:absolute;bottom:17%;left:50%;transform:translate(-50%);font-size:11px;font-weight:700;white-space:nowrap;color:#d7f5a4;padding:5px 9px;border-radius:4px;background:#0a170aeb;border:1px solid #75904e;pointer-events:none}.shot-feedback:empty{display:none}#target-practice[aria-pressed=true]{color:var(--lime);text-decoration-thickness:2px}.invite-landing .join-row{flex-direction:column}.invite-landing .join-row input,.invite-landing .join-row .join{width:100%;min-height:48px}.invite-landing #create{width:100%;margin-top:14px}#app[data-sport=badminton] .court-wrap{border:1px solid #384534;border-radius:12px;overflow:hidden;background:#0b130e}.opponent-pop{position:absolute;right:5%;top:17%;padding:6px 9px;border:1px solid #d2c4b26b;border-radius:5px;background:#131813e8;color:#f0d2bc;font-size:12px;font-weight:800;pointer-events:none;opacity:0}.opponent-pop.pop{animation:point 1.1s ease-out both}.duel-inputs button.aimed{background:#baff32;color:#10160c;border-color:#e1ffad;box-shadow:0 0 0 2px #baff3240}.court-wrap.double-points{box-shadow:inset 0 0 0 2px #baff3290}.court-wrap.double-points:after{content:"得点 ×2";position:absolute;left:5%;top:17%;padding:5px 7px;border-radius:4px;background:#baff32;color:#10160c;font-size:11px;font-weight:900;pointer-events:none}.game-main{height:auto;min-height:0;max-height:none;padding-bottom:14px}.court-wrap{flex:none;align-self:center;width:min(100%,max(280px,calc((100svh - 215px)*.8)));height:auto;min-height:0;aspect-ratio:4/5}.game-shell .header{height:50px}.game-shell .scoreboard{padding-top:3px}.game-shell .player strong{font-size:54px}.game-shell .match-meta{min-height:24px}.game-shell .match-status{height:24px;min-height:24px;padding:4px 0}@media(min-width:751px){.game-shell .header{height:58px}.game-shell .player strong{font-size:64px}}.emote-bubble{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:60px;border-radius:18px;background:#111a10e8;padding:7px 10px;font-size:10px;font-weight:800;box-shadow:0 4px 18px #0007}.emote-symbol{font-size:33px;line-height:1.1}.my-emote{--float-y:-80px;--float-x:20px;left:7%;bottom:20%;border-color:#ffb683}.their-emote{--float-y:85px;--float-x:-24px;right:7%;top:18%;border-color:#c7ff6b}.emote-bubble.show{animation:emote-float 2.6s linear both}@keyframes emote-float{0%{opacity:1;transform:translate(0) rotate(-8deg) scale(.9)}15%{opacity:1;transform:translate(12px,calc(var(--float-y)*.17)) rotate(7deg) scale(1.08)}38%{opacity:1;transform:translate(-7px,calc(var(--float-y)*.4)) rotate(-5deg) scale(1)}65%{opacity:1;transform:translate(var(--float-x),calc(var(--float-y)*.7)) rotate(6deg)}85%{opacity:1;transform:translate(4px,calc(var(--float-y)*.88)) rotate(-4deg)}to{opacity:0;transform:translate(var(--float-x),var(--float-y)) rotate(3deg)}}.game-shell .scoreboard{gap:12px;min-height:51px;padding:3px 0}.game-shell .scoreboard .player{grid-template-columns:6px minmax(25px,64px) auto;gap:5px;max-width:45%}.game-shell .scoreboard .player strong{grid-column:3;grid-row:1;font-size:46px;line-height:1}.game-shell .scoreboard .other{grid-template-columns:auto minmax(25px,64px) 6px}.game-shell .scoreboard .other strong{grid-column:1}.game-shell .scoreboard .other .player-dot{grid-column:3;grid-row:1}.game-shell .scoreboard .other span:nth-child(2){grid-column:2;grid-row:1}.game-shell .score-separator{padding:0;font-size:25px}#app[data-variant=bomb] .match-status,#app[data-variant=co-op] .match-status{display:none}.quick-emote{display:none;flex:none;width:44px;height:44px;border:1px solid #586943;border-radius:12px;background:#1a2814;color:#d6ff94;font-size:29px;line-height:1}.quick-emote[aria-expanded=true]{background:#baff32;color:#132008}@media(max-height:799px){.game-bottom:has(.quick-emote){height:44px;min-height:44px}.quick-emote{display:block}.game-bottom:has(.quick-emote) #hint{max-width:49%}}.emote-controls.floating{position:absolute;bottom:4%;left:3%;right:3%;z-index:6;padding:9px;background:#0a130af5;border:1px solid #758e57;border-radius:10px;box-shadow:0 6px 24px #0009;gap:3px}.emote-controls.floating button{min-width:0;font-size:22px}.emote-bubble{z-index:5}.game-overlay.visible~.my-emote{left:12px;bottom:10%;--float-x:3px;--float-y:-110px}.game-overlay.visible~.their-emote{right:16px;top:11%;--float-x:-3px;--float-y:110px}.basketball-webgl{pointer-events:none!important}#app[data-sport=basketball] .point-pop{inset:16% auto auto 5%;width:42%;font-size:18px;text-align:left}#app[data-sport=basketball] .opponent-pop{top:16%;right:5%;max-width:42%;padding:3px 6px}.arcade-shell[data-arcade=basketball] .arcade-wrap{flex:none;align-self:center;width:min(100%,max(280px,calc((100svh - 215px)*.8)));height:auto;min-height:0;aspect-ratio:4/5}.arcade-shell[data-arcade=basketball] .arcade-pop{top:9%;font-size:22px}.court-wrap,.arcade-shell[data-arcade=basketball] .arcade-wrap{width:min(100%,max(240px,calc((100svh - 285px - env(safe-area-inset-bottom))*.8)))}@media(max-height:799px){.emote-controls:not(.floating){display:none}.invite-strip{margin-top:2px}.series-line{min-height:17px;padding-bottom:0}}#app[data-sport=penalty] .game-bottom{position:relative}#app[data-sport=penalty] .game-bottom .emote-bubble{top:5px;bottom:auto;min-width:0;max-width:calc((100% - 92px)/2);height:28px;padding:3px 7px;flex-direction:row;gap:4px;white-space:nowrap;--float-y:-3px;--float-x:2px}#app[data-sport=penalty] .my-emote{left:0;right:auto}#app[data-sport=penalty] .their-emote{left:auto;right:88px}#app[data-sport=penalty] .emote-symbol{font-size:22px}#app[data-sport=penalty] .game-bottom:has(.emote-bubble.show) #rally-count,#app[data-sport=penalty] .game-bottom:has(.emote-bubble.show) #hint,#app[data-sport=penalty] .game-bottom:has(.emote-bubble.show) #network-quality{visibility:hidden}#app[data-sport=penalty] .emote-controls.floating{inset:100% 0 auto}.match-tip{font-size:11px!important;line-height:1.6!important;color:#d1e8b3!important;margin:9px 0 0!important}.bomb-rules{grid-column:1/-1;padding:13px 14px;border:1px solid #526441;border-left:3px solid var(--lime);border-radius:5px;background:#192013;text-align:left}.bomb-rules[hidden]{display:none}.bomb-rules>strong{font-size:15px}.bomb-rules ol{padding-left:19px;margin:9px 0;font-size:12px;line-height:1.9;color:#e0e8d8}.bomb-rules b{color:var(--lime)}.bomb-rules p{font-size:11px;line-height:1.7;color:var(--muted)}#app[data-variant=bomb] .variant-status{position:relative;flex:none;height:24px;min-height:24px;padding:0 7px;margin:0;text-align:left;color:#dceacb;background:#172013}.bomb-clock{display:flex;align-items:center;justify-content:space-between;gap:8px;height:22px}.bomb-clock>span{display:flex;align-items:baseline;gap:5px;white-space:nowrap}.bomb-clock b{font-family:RallyDisplay,Impact,sans-serif;font-size:22px;line-height:1}.bomb-clock small{font-size:10px;color:#b6c6a7}.bomb-clock>strong{font-size:11px;white-space:nowrap}.bomb-fuse{position:absolute;left:0;right:0;bottom:0;height:2px;background:#ffffff16;border-radius:4px;overflow:hidden;margin:0}.bomb-fuse i{display:block;height:100%;background:var(--lime);transform-origin:left;will-change:transform}.variant-status.aftermath .bomb-clock small,.variant-status.aftermath .bomb-fuse,.variant-status.finished .bomb-clock>span,.variant-status.finished .bomb-fuse{visibility:hidden}.variant-status.finished .bomb-clock{justify-content:center}.variant-status.finished .bomb-clock>span{display:none}.variant-status.finished .bomb-clock>strong{font-size:15px}.variant-status.aftermath .bomb-clock{color:#ffb991}.scoreboard .player.bomb-conceded{outline:2px solid #f37c59;outline-offset:5px;border-radius:4px;background:#472216;box-shadow:0 0 14px #ff643447}.overlay-card .bomb-final-reason{font-size:13px;font-weight:800;color:#ffc2a2;margin:8px 0}.variant-status.aftermath .bomb-clock small{display:none}#app[data-variant=bomb] .variant-status.mine .bomb-clock>strong{color:#ffac8f}#app[data-variant=bomb] .variant-status.urgent{border-color:#de7350;background:#2c1b15}.variant-status.urgent .bomb-clock b{color:#ffac8f}.variant-status.urgent .bomb-fuse i{background:#ff7751}#app[data-variant=bomb] #hint{flex:1;max-width:none;white-space:pre-line;line-height:1.25;text-align:center}#app[data-variant=bomb] #network-quality{display:none}#app[data-variant=bomb] .point-pop{inset:auto 12% 23%;font-family:inherit;font-size:18px;font-style:normal;white-space:pre-line;line-height:1.45;color:#fff0dc;text-shadow:0 2px 4px #000;z-index:2;border-radius:6px;background:#24170fea;padding:8px;border:1px solid #a46b4d;letter-spacing:0}#app[data-variant=bomb] .point-pop.pop{animation:bomb-result 1.1s ease-out both}#app[data-variant=bomb] .court-wrap.bomb-danger{animation:bomb-danger 1s ease-in-out infinite;border-color:#d16c4d}#app[data-variant=bomb] .court-wrap.bomb-blast{animation:bomb-shake .32s ease-out;border-color:#ff9f6d;box-shadow:0 0 24px #ff612b60}@keyframes bomb-danger{0%,to{box-shadow:inset 0 0 0 1px #e5795340,0 0 8px #ff683018}50%{box-shadow:inset 0 0 0 2px #e5795390,0 0 15px #ff683038}}@keyframes bomb-shake{0%{transform:translate(0)}18%{transform:translate(-4px,2px)}37%{transform:translate(4px,-2px)}58%{transform:translate(-2px,1px)}80%{transform:translate(1px)}to{transform:translate(0)}}@keyframes bomb-result{0%{opacity:0;transform:translateY(5px) scale(.95)}12%,83%{opacity:1;transform:none}to{opacity:0;transform:none}}@media(prefers-reduced-motion:reduce){#app[data-variant=bomb] .point-pop.pop{animation:quiet-pop 1.1s linear both!important}#app[data-variant=bomb] .court-wrap.bomb-blast{box-shadow:none}}.spin-meter{position:absolute;top:5.9%;left:4%;right:4%;height:20px;display:flex;align-items:center;justify-content:space-between;gap:6px;pointer-events:none;font-size:12px;line-height:1;z-index:1;color:#aebfa7;font-variant-numeric:tabular-nums;white-space:nowrap}.spin-meter>b{font-size:10px;font-weight:600;color:#d7e1cf}.spin-meter>span{padding:4px 5px;border-radius:4px;background:#071109b8}.spin-meter>span.ready{color:#d4ff80;background:#2b3f1c;box-shadow:inset 0 0 0 1px #7b9d44}#spin-theirs.ready{color:#ffc3ac;background:#402a21;box-shadow:inset 0 0 0 1px #ae7056}#app[data-sport=squash] .rule-select,#app[data-sport=squash] #practice,#app[data-sport=squash] #challenge{display:none}#app[data-sport=squash] #cpu{grid-column:1/-1}#app[data-sport=squash] .court-wrap{border:1px solid #485a3d;border-radius:12px;overflow:hidden;background:#090e0b}@media(max-width:750px){.sport-switch{grid-template-columns:repeat(3,minmax(0,1fr))}.sport-switch button,.sport-switch button[data-sport=badminton]{font-size:12px;min-height:40px;padding:8px 3px}}.control-help{margin-top:16px;padding-top:14px;border-top:1px solid #4a5940;text-align:left}.control-help h3{margin:0 0 8px;font-size:14px}.control-help p{font-size:12px;line-height:1.8;margin:5px 0;color:#d8e5ca}.control-help small{display:block;margin-top:9px;font-size:11px;line-height:1.7;color:#bdccad}.settings-dialog{max-height:calc(100svh - 36px);overflow-y:auto}.game-bottom .shot-feedback{position:static;transform:none;inset:auto;flex:1;min-width:0;max-width:none;font-size:10px;line-height:1.4;padding:4px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-bottom:has(.shot-feedback:not(:empty)) #hint{display:none}#app[data-sport=dodgeball] .court-wrap{border:1px solid #485a3d;border-radius:12px;overflow:hidden;background:#090e0b}#app[data-sport=dodgeball] .match-status{font-size:12px;color:#c7d4bb}.dodge-actions{position:absolute;left:6%;right:6%;bottom:7%;display:flex;gap:8px;z-index:1}.dodge-actions button{flex:1;min-width:0;min-height:44px;border:1px solid #62784e;border-radius:7px;background:#20311b;color:#e7f1df;font-size:13px;font-weight:800;touch-action:manipulation}.dodge-actions button:first-child,.dodge-actions button.charged{background:var(--lime);color:#112008;border-color:var(--lime)}.dodge-actions button:active{transform:scale(.96)}.dodge-actions button:disabled{opacity:1;background:#172116;color:#91a081;border-color:#35462b}@media(max-width:750px){.sport-switch button[data-sport=dodgeball]{grid-column:1/-1;min-height:36px}.art-dodgeball .art-caption{font-size:11px}.art-dodgeball .capsule{font-size:9px}}.dodge-actions button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;overflow:hidden;padding:4px 3px}.dodge-actions strong{font-size:12px;white-space:nowrap}.dodge-actions small{font-size:10px;font-weight:600;min-height:12px}.dodge-actions button:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background:currentColor;transform-origin:left;transform:scaleX(var(--ready,1));opacity:.7}.dodge-actions button.catching{background:#ddffb2;color:#172d0c;border-color:#f0ffdc;box-shadow:0 0 13px #baff3270}@media(max-height:600px){.game-main{padding-bottom:6px}}.sound-level input[type=range]{flex:1;min-width:0;width:auto;height:44px;margin-left:4px}.sound-level output{min-width:36px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums}.sound-preview{display:block;min-height:44px;margin:0 0 4px auto}.sound-preview:disabled{opacity:.4}.game-shell{padding-top:env(safe-area-inset-top);padding-left:max(6px,env(safe-area-inset-left));padding-right:max(6px,env(safe-area-inset-right))}.game-shell .header{height:44px;border-bottom:0;gap:8px}.game-shell .header .brand{font-size:26px;min-height:44px;gap:5px}.game-shell .back-arrow{font-size:22px;margin-right:1px}.match-controls{display:flex;align-items:center;gap:3px}.game-shell .icon-button{width:44px;height:44px;flex:none;border:0;border-radius:7px}.game-shell .invite-button{font-size:12px;font-weight:800;color:var(--lime);background:#1c2815}.game-shell .scoreboard{min-height:44px;height:44px;padding:3px 0;gap:10px}.game-shell .scoreboard .player strong{font-size:38px}.game-shell .match-meta{height:24px;min-height:24px}.game-shell .match-meta .capsule{padding:3px 6px}.game-shell .game-main{padding-bottom:6px}.game-shell .court-wrap{width:min(100%,max(240px,calc((100svh - 188px - env(safe-area-inset-top) - env(safe-area-inset-bottom))*.8)))}.game-shell .variant-status{height:24px;min-height:24px;padding:2px 5px;overflow:hidden}.game-shell .game-bottom{height:44px;min-height:44px;padding:0 2px;gap:5px}.game-shell .quick-emote{display:block}.game-shell .emote-controls:not(.floating){display:none}.game-shell .emote-controls.floating{display:grid;grid-template-columns:repeat(3,minmax(44px,1fr));gap:5px}.game-shell .emote-controls.floating button{min-height:44px;flex-direction:row;gap:6px}#app[data-sport=penalty] .court-wrap .emote-controls.floating,#app[data-sport=dodgeball] .court-wrap .emote-controls.floating{top:3%;bottom:auto}#target-practice{flex:none;min-height:44px;padding:0 7px;font-size:11px}.game-bottom:has(#target-practice) #hint{display:none}.invite-dialog h2{margin-bottom:12px}.invite-dialog .muted{font-size:12px;line-height:1.6}.invite-code-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:22px 0 8px}.invite-code-row>span{font-size:12px;color:var(--muted)}.invite-code-row>b{font-size:27px;letter-spacing:3px;color:var(--lime)}.invite-dialog .text-button{display:block;width:100%;min-height:44px}.invite-dialog .series-line{padding:12px 0 6px;min-height:0}.invite-dialog .invite-close{border-top:1px solid var(--line);margin-top:8px}.curling-controls{position:absolute;bottom:7px;left:9px;right:9px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:0 8px;padding:4px 8px;background:#102632f2;border:1px solid #6092a4;border-radius:8px;color:#e6f6ff;font-size:14px}.curling-controls input{width:100%;min-width:0;min-height:44px;height:44px;padding:0;border:0;background:transparent;margin:0;accent-color:#84e6f8;touch-action:pan-x}.curling-controls label{font-size:14px;margin:0}.curling-controls label>span{display:flex;justify-content:space-between;gap:4px;line-height:18px}.curling-controls output{text-align:right;font-variant-numeric:tabular-nums;font-size:14px}.curling-controls button{grid-column:1/-1;min-height:44px;background:#baff32;color:#122b32;font-weight:800;border-radius:5px;font-size:14px}.curling-controls button:disabled{background:#334a51;color:#b7cbd3}.curling-controls>span{grid-column:1/-1;text-align:center;font-size:12px;line-height:18px;color:#c4dde6}#app[data-sport=curling] .court-wrap{background:#0b1d2b;border:1px solid #426b7f}#app[data-sport=curling] .match-status{font-size:14px;color:#d0f4ff}#app[data-sport=curling] .court-wrap .emote-controls.floating{top:3%;bottom:auto}.art-curling .sport-hero{object-fit:contain;opacity:1}.art-curling .hero-title{left:5%;bottom:8%;font-size:clamp(24px,5vw,52px)}.native-app{overscroll-behavior:none;-webkit-text-size-adjust:100%}.native-app .shell:not(.game-shell){padding-top:env(safe-area-inset-top);padding-bottom:max(20px,env(safe-area-inset-bottom));padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.native-app .settings-dialog{max-height:calc(100svh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 32px);overflow-y:auto}.native-invite{display:block;text-align:center;min-height:44px;margin-top:12px}.information-links{display:flex;justify-content:center;gap:16px;flex-wrap:wrap}.information-links button{min-height:44px}.information-dialog{line-height:1.75}.information-dialog section{margin:24px 0}.information-dialog h3{font-size:17px}.information-dialog p{font-size:14px;overflow-wrap:anywhere}.information-dialog a{color:inherit}.information-close{min-height:44px}.game-shell{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.game-shell input:not([type=range]),.game-shell textarea,.game-shell [contenteditable=true],.game-shell .invite-code-row{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.game-shell #invite-code{-webkit-user-select:all;user-select:all;-webkit-touch-callout:default}.game-shell .match-status,.game-shell .scoreboard,.game-shell .game-bottom{touch-action:manipulation}.curling-controls{grid-template-columns:repeat(4,minmax(0,1fr))}.curling-controls label{grid-column:span 2}.curling-controls button{grid-column:auto;font-size:13px;padding:0 2px}.curling-controls button[data-curling-preset]{background:#163542;color:#e6f6ff;border:1px solid #6092a4}.curling-controls button[data-curling-preset][aria-pressed=true]{background:#235568;border-color:#b7f2ff;color:#fff}.curling-controls button[data-curling-preset]:disabled{opacity:.45}.curling-controls output{font-size:13px}.legal-links{display:flex;justify-content:space-between;gap:12px;margin:14px 0}.information-toolbar{position:sticky;top:0;background:var(--paper);z-index:1;text-align:right}.information-toolbar .information-close{padding:10px}.third-party-notices{margin-top:24px}.third-party-notices summary{min-height:44px;padding:10px 0;font-size:14px}.third-party-notices pre{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.6 monospace;margin-top:16px}#app[data-sport=penalty] .court-wrap{border:1px solid #52664c;border-radius:12px;overflow:hidden}#app[data-sport=penalty] #point-pop,#app[data-sport=penalty] #opponent-pop{display:none}.pk-ui{position:absolute;inset:0;pointer-events:none;--pk-accent:#ffb35d;--pk-panel:#231b13}.pk-ui[data-role=keeper]{--pk-accent:#baff32;--pk-panel:#142516}.pk-heading{position:absolute;top:0;left:0;right:0;padding:10px 14px 9px;background:linear-gradient(var(--pk-panel),#0c160fee);border-bottom:1px solid #efffd226}.pk-role-line{display:flex;align-items:center;gap:7px;color:var(--pk-accent);font-size:12px;font-weight:800;line-height:1.4}.pk-icon{font-size:20px;line-height:1}.pk-turn{margin-left:auto;color:#c8d4c0}.pk-heading h2{font-size:clamp(21px,5.8vw,27px);line-height:1.35;margin:4px 0 0;letter-spacing:0}.pk-heading p{font-size:16px;font-weight:700;line-height:1.4;color:#edf2e7}.pk-panel{position:absolute;bottom:0;left:0;right:0;padding:7px 12px 8px;background:linear-gradient(#0b160ef2,var(--pk-panel));border-top:1px solid #efffd226;pointer-events:auto}#pk-state{font-size:14px;font-weight:800;min-height:20px;line-height:1.4;margin-bottom:5px;color:#f4f6f0}.pk-lanes{display:flex;gap:7px}.pk-lanes button{flex:1;min-width:0;min-height:44px;display:flex;align-items:center;justify-content:center;gap:9px;border:1px solid #adbd9a;background:#142218;border-radius:24px;color:#e6edde;touch-action:manipulation}.pk-lanes b{font-size:25px;line-height:1}.pk-lanes span{font-size:13px}.pk-ui[data-role=keeper] .pk-lanes button{border-radius:6px;border-style:dashed}.pk-lanes button[aria-pressed=true]{background:var(--pk-accent);border:2px solid #fff;color:#12200e;box-shadow:inset 0 0 0 2px #14220e}.pk-lanes button:disabled{opacity:.65}#pk-confirm{margin-top:7px;width:100%;min-height:44px;border-radius:6px;background:var(--pk-accent);color:#182013;font-size:16px;font-weight:900;padding:7px 4px;touch-action:manipulation}#pk-confirm:disabled{background:#273128;color:#cfdbc5;opacity:1}#pk-detail{font-size:12px;line-height:1.5;margin-top:5px;color:#ccd8c3;min-height:18px}#pk-history{font-size:12px;line-height:1.4;color:#aabc9e;margin-top:3px;overflow-wrap:anywhere}.pk-result{position:absolute;left:4%;right:4%;top:37%;padding:12px 8px;background:#09150ef2;border:2px solid #a7b69d;border-radius:9px;text-align:center;z-index:2}.pk-result[hidden]{display:none}.pk-result[data-success=true]{border-color:var(--pk-accent)}.pk-result strong,.pk-result span,.pk-result b{display:block}.pk-result strong{font-size:clamp(25px,7vw,34px);line-height:1.2;color:var(--pk-accent)}.pk-result span{font-size:13px;margin-top:7px}.pk-result b{font-size:15px;margin-top:8px}@media(max-height:650px){.pk-heading{padding:6px 10px}.pk-heading h2{margin-top:2px;font-size:21px}.pk-heading p{font-size:14px}.pk-panel{padding:5px 9px}.pk-result{top:30%;padding:8px 5px}#pk-history{margin-top:0}.pk-result strong{font-size:25px}.pk-result span{margin-top:3px}.pk-result b{margin-top:4px}}
