:root{--color-bg:#F6F2E9;--color-surface:#FFFCF6;--color-text:#232323;--color-muted:#68625A;--color-border:#837A70;--color-accent:#A52B3F;--color-focus:#232323;font-family:system-ui,-apple-system,Segoe UI,Microsoft YaHei,sans-serif;color:var(--color-text);background:var(--color-bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button{font:inherit;font-size:16px;font-weight:600;line-height:1.5;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;min-width:44px;min-height:44px;padding:8px 14px;cursor:pointer}button:active{background:#e5ddcf}button:focus-visible,summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}@media(hover:hover)and (pointer:fine){button:hover{background:#eee8dc}}.game{--arena-width:min( calc(100vw - 24px) ,calc((100dvh - 242px)*2/3));width:100%;max-width:1440px;height:max(420px,100dvh);margin:0 auto;padding:12px;display:flex;flex-direction:column;gap:12px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding-bottom:10px;border-bottom:2px solid var(--color-text)}h1{font-family:Songti SC,SimSun,serif;font-size:24px;line-height:1.15;margin:0;white-space:nowrap}h1 span{display:none;font-family:Georgia,serif;font-size:20px}.toolbar{display:flex;gap:6px}.toolbar button{font-size:14px;padding:8px 10px}.play-layout{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:86px minmax(0,1fr);grid-template-areas:"score gain" "arena arena";gap:10px 16px;align-items:center}.score-panel{grid-area:score}.gain-panel{grid-area:gain}.score-panel,.gain-panel{container-type:inline-size;min-width:0}.score-label{display:block;font-size:14px;color:var(--color-muted);margin-bottom:4px}#score,#gain-total{display:block;font-size:clamp(32px,26cqw,88px);font-weight:700;line-height:1.05;font-variant-numeric:tabular-nums;letter-spacing:-.04em;transform-origin:left center}#score[data-long=true],#gain-total[data-long=true]{font-size:clamp(20px,12cqw,48px)}#gain-total{color:var(--color-accent)}.score-caption{display:none}.score-feedback{display:flex;flex-wrap:wrap;gap:4px 10px;min-height:0}.score-gain{font-size:18px;font-weight:600;color:var(--color-accent);font-variant-numeric:tabular-nums}#status{margin:4px 0 0;font-size:12px;line-height:1.4;min-height:17px}.ready-meter{height:3px;display:block;margin-top:6px;background:#d8d0c4;overflow:hidden}.ready-meter i{display:block;height:100%;background:var(--color-accent);transform-origin:left center;transform:scaleX(1)}.arena-shell{grid-area:arena;position:relative;width:var(--arena-width);aspect-ratio:2/3;justify-self:center;align-self:center;max-width:100%;min-width:0}canvas{width:100%;height:100%;display:block;border:2px solid var(--color-text);background:var(--color-surface);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;outline:none}canvas:focus-visible:not([data-input=pointer]){outline:2px solid var(--color-focus);outline-offset:3px}canvas[data-aiming=true]{border-color:var(--color-accent)}.arena-message{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;background:#f6f2e9e6;pointer-events:none}.arena-message strong{font-size:clamp(28px,7vw,48px);line-height:1.1}.arena-message span{font-size:16px;line-height:1.5}#controls{font-size:12px;line-height:1.4;margin:0;text-align:center;color:var(--color-muted)}#score[data-pulse=a],.gain-panel[data-pulse=a] #gain-total{animation:score-pop-a .24s cubic-bezier(.23,1,.32,1)}#score[data-pulse=b],.gain-panel[data-pulse=b] #gain-total{animation:score-pop-b .24s cubic-bezier(.23,1,.32,1)}@keyframes score-pop-a{0%{transform:scale(1.16);color:var(--color-accent)}to{transform:scale(1)}}@keyframes score-pop-b{0%{transform:scale(1.16);color:var(--color-accent)}to{transform:scale(1)}}details{position:fixed;bottom:8px;left:8px;z-index:3;max-width:320px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px}summary{cursor:pointer;min-height:44px;padding:12px;font-size:12px}.debug-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px}.debug-buttons button{font-size:14px}[hidden]{display:none!important}@media(min-width:760px){.game{--arena-width:min(600px,calc((100dvh - 144px)*2/3), calc(100vw - 336px) );padding:16px 24px;gap:16px;height:max(360px,100dvh)}.topbar{min-height:56px}h1{font-size:28px}h1 span{display:inline}.toolbar{gap:8px}.toolbar button{font-size:16px;padding:8px 16px}.play-layout{grid-template-columns:minmax(120px,1fr) var(--arena-width) minmax(120px,1fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"score arena gain";gap:16px}.score-panel,.gain-panel{padding:24px 8px;border-top:2px solid var(--color-text);border-bottom:1px solid var(--color-border)}.score-label{font-size:16px;margin-bottom:16px}.score-caption{display:block;margin-top:24px;font-size:14px;color:var(--color-muted)}.score-feedback{margin-top:20px;min-height:32px}.score-gain{font-size:24px}#status{font-size:14px;margin-top:24px;min-height:40px}.ready-meter{margin-top:12px;height:4px}#controls{font-size:14px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(max-width:759px){.score-panel,.gain-panel{align-self:start}.gain-panel #status{position:absolute;width:1px;height:1px;min-height:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.score-feedback{flex-wrap:nowrap;overflow-x:auto;white-space:nowrap}.score-gain{flex-shrink:0}}.picker{max-width:1050px;margin:0 auto;padding:32px 24px;min-height:100dvh;display:flex;flex-direction:column;gap:24px}.picker header{border-bottom:2px solid var(--color-text);padding-bottom:20px}.picker h1{font-size:32px;white-space:normal}.picker p{font-size:14px;line-height:1.5;color:var(--color-muted);margin:10px 0 0}.team-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.team-grid button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:16px 8px;min-height:122px;font-size:14px}.team-grid img{object-fit:contain;width:64px;height:64px}.team-grid button[aria-pressed=true]{border:2px solid var(--color-accent);background:#eee5da;padding:15px 7px}.picker footer{border-top:1px solid var(--color-border);padding-top:20px}.picker #start{background:var(--color-accent);color:#fff;min-width:180px}.picker #start:disabled{opacity:.45;cursor:default}.picker small{display:block;font-size:12px;color:var(--color-muted);margin-top:12px}.favorite{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:16px;padding:6px;font-size:14px}.favorite img{object-fit:contain;flex-shrink:0}.favorite span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.disclaimer{font-size:11px}.game{--arena-width:min( calc(100vw - 24px) ,calc((100dvh - 298px)*2/3))}.play-layout{grid-template-rows:128px minmax(0,1fr)}.toolbar button{padding:8px}.favorite{margin-top:4px;min-height:36px}.favorite img{width:22px;height:22px}@media(min-width:760px){.game{--arena-width:min(600px,calc((100dvh - 164px)*2/3), calc(100vw - 336px) )}.play-layout{grid-template-rows:minmax(0,1fr)}.favorite{margin-top:24px;min-height:44px}.favorite img{width:28px;height:28px}.toolbar button{padding:8px 16px}.disclaimer{font-size:12px}}@media(max-width:759px){.picker{padding:24px 12px;gap:18px}.picker h1{font-size:26px}.team-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.team-grid button{min-height:102px;padding:10px 4px;font-size:12px}.team-grid button[aria-pressed=true]{padding:9px 3px}.team-grid img{width:48px;height:48px}.picker #start{width:100%}h1{font-size:22px}.topbar{gap:6px;flex-wrap:wrap}.toolbar{margin-left:auto}.toolbar{gap:4px}.toolbar button{font-size:13px}}.disclaimer{font-size:14px}.game{--arena-width:min( calc(100vw - 24px) ,calc((100dvh - 318px)*2/3))}.favorite{min-height:44px}.toolbar button{font-size:14px}@media(min-width:760px){.game{--arena-width:min(600px,calc((100dvh - 174px)*2/3), calc(100vw - 336px) )}}.hub-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 10px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text);font-size:14px;font-weight:600;line-height:1.5;text-decoration:none;white-space:nowrap}.hub-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.hub-link:active{background:#e5ddcf}@media(hover:hover)and (pointer:fine){.hub-link:hover{background:#eee8dc}}.picker header>.hub-link{margin-bottom:16px}.score-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px}.favorite-target{display:inline-flex;align-items:center;gap:4px;font-size:14px}.favorite-target img{object-fit:contain;flex-shrink:0}.side-nav{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.side-nav>*{flex:1;min-width:72px;font-size:14px;padding:8px 4px;white-space:nowrap}@media(min-width:760px){.side-nav{margin-top:24px}}.team-grid img{width:80px;height:80px}@media(max-width:759px){.team-grid img{width:64px;height:64px}}.next-preview{display:flex;align-items:center;gap:12px;margin-top:16px;padding-top:12px;border-top:1px solid var(--color-border)}.next-ball{width:64px;height:64px;display:grid;place-items:center;flex-shrink:0}.next-ball img{width:min(64px,calc(var(--next-diameter)*1px));height:min(64px,calc(var(--next-diameter)*1px));object-fit:contain}.next-preview .score-label{display:block;font-size:12px;margin-bottom:4px}.next-preview strong{font-size:16px}.next-preview #next-level{font-size:12px;color:var(--color-muted);margin-left:6px}@media(max-width:759px){.play-layout{grid-template-rows:176px minmax(0,1fr)}.game{--arena-width:min( calc(100vw - 24px) ,calc((100dvh - 374px)*2/3))}.next-preview{gap:8px;margin-top:8px;padding-top:4px}.next-ball{width:48px;height:48px}.next-ball img{width:min(48px,calc(var(--next-diameter)*.75px));height:min(48px,calc(var(--next-diameter)*.75px))}.next-preview .score-label{margin-bottom:2px}.next-preview strong{font-size:14px}}.score-feedback{margin:0 0 12px;min-height:28px;gap:0;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap}.score-gain{flex-shrink:0}.gain-summary{border-top:1px solid var(--color-border);padding-top:10px}.gain-summary .score-label{margin-bottom:4px}.final-choice{position:fixed;inset:0;z-index:10;background:#f6f2e9d9;display:flex;align-items:center;justify-content:center;padding:16px}.final-card{width:min(420px,100%);padding:28px;background:var(--color-surface);border:2px solid var(--color-text);border-radius:4px;text-align:center}.final-card img{object-fit:contain;width:96px;height:96px}.final-card h2{font-family:Songti SC,SimSun,serif;font-size:28px;margin:16px 0 8px}.final-card p{color:var(--color-muted);margin:0 0 24px}.final-actions{display:flex;gap:12px}.final-actions button{flex:1}.final-actions button:first-child{background:var(--color-accent);color:#fff}button:disabled{cursor:default;opacity:.5}@media(max-width:759px){.gain-summary{padding-top:4px}.score-feedback{min-height:24px;margin-bottom:4px}.score-gain{font-size:18px}.gain-summary .score-label{font-size:12px}.gain-summary #gain-total{font-size:30px}}.toolbar{flex-wrap:wrap}.toolbar #music-version{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.music-normal,.music-child{color:var(--color-muted);font-weight:600}.music-divider{color:var(--color-muted)}#music-version[aria-pressed=false] .music-normal,#music-version[aria-pressed=true] .music-child{color:var(--color-accent);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}.toolbar #sound{display:inline-flex;align-items:center;justify-content:center;width:44px;padding:8px;flex-shrink:0}#sound svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}#sound[aria-pressed=true] .sound-off,#sound[aria-pressed=false] .sound-waves{display:none}@media(max-width:759px){.toolbar button{padding:8px 6px}.toolbar #music-version{padding:8px 3px;gap:1px}}
