*{box-sizing:border-box}html{overflow-x:hidden}body{margin:0;background:#f5f6ee;color:#193440;font:16px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #f6bf70;outline-offset:3px}.shell{max-width:1190px;margin:auto;padding:clamp(18px,4vw,43px) clamp(13px,3vw,32px) 70px}.eyebrow{font-size:.73rem;font-weight:900;letter-spacing:.15em;color:#328b87}h1{font-size:clamp(3.2rem,8vw,6rem);line-height:1.04;letter-spacing:-.075em;margin:8px 0}h1 em{color:#ed8866;font-family:Georgia,serif;font-weight:400}header p{font-size:1.13rem;color:#687a79;margin:8px 0 24px}.layout{display:grid;grid-template-columns:minmax(0,790px) minmax(250px,1fr);gap:20px;align-items:start}.play{min-width:0;background:#163b47;color:#fff;border-radius:24px;padding:clamp(13px,2.7vw,23px);box-shadow:0 19px 35px #153d4630}.scoreboard{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-bottom:12px}.scoreboard div{padding:7px 10px;background:#255b60;border:1px solid #548f88;border-radius:12px}.scoreboard small{display:block;color:#d2eddd;font-size:.6rem;font-weight:900;letter-spacing:.05em}.scoreboard strong{font-size:1.35rem}.court-wrap{position:relative;border:4px solid #b3d2b1;border-radius:17px;overflow:hidden;background:#247d73}.board-top{display:flex;justify-content:space-between;padding:7px 11px;background:#153f50;font-size:.72rem;font-weight:900;letter-spacing:.07em;color:#e5efbb}canvas{display:block;width:100%;height:auto;aspect-ratio:10/7;touch-action:none;user-select:none;-webkit-user-select:none}.overlay{position:absolute;top:42%;left:50%;transform:translate(-50%,-50%);min-width:53%;max-width:90%;padding:18px 22px;text-align:center;border-radius:17px;border:3px solid #f5d99d;background:#163949e9;color:#fff;font-size:clamp(1.4rem,4vw,2rem);font-weight:900;box-shadow:0 12px 36px #0e2b39a6}.overlay[hidden],[hidden]{display:none!important}.control-pad{display:flex;gap:10px;margin-top:12px}.move-controls{display:flex;gap:8px;flex:1}.control-pad button{min-height:65px;border-radius:12px;border:2px solid #8cbaa6;background:#28626b;color:#fff;font-size:1.35rem;font-weight:900;touch-action:none;user-select:none}.move-controls button{width:50%;font-size:1.8rem}.control-pad .hit{width:36%;background:#ec9a6d;border-color:#ffd09d;color:#21333d}.aim{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:9px}.aim button{min-height:44px;background:#2e6670;color:#fff;border:2px solid #77a9a0;border-radius:10px;font-size:.83rem;font-weight:850}.aim button[aria-pressed=true]{background:#e9e699;color:#243b42;border-color:#f9f6be}.energy{display:flex;align-items:center;gap:9px;margin:14px 0 4px;color:#d5e9d7;font-size:.7rem;font-weight:900;letter-spacing:.05em}.energy>div{flex:1;background:#3e7880;border-radius:30px;height:12px;overflow:hidden}.energy i{display:block;width:0;height:100%;background:linear-gradient(90deg,#b4f093,#f7db7e);transition:width .15s}.message{text-align:center;min-height:2.5em;color:#e3eeea;font-weight:750;margin:13px 0}.actions{display:flex;justify-content:center;flex-wrap:wrap;gap:8px}.actions button{min-height:45px;border:2px solid #7aa69f;border-radius:11px;padding:8px 13px;background:#326873;color:#fff;font-weight:850}.actions .primary{background:#f6be7f;border-color:#ffe0a9;color:#263c43}.actions button:disabled{opacity:.5;cursor:default}aside{background:#fff;border:1px solid #d9e5dc;border-radius:20px;padding:24px}aside h2{font-size:1.8rem;margin:8px 0}aside p{color:#667778}aside strong{color:#2b7d7d}.quiet{font-size:.88rem}.foot{color:#68807d}.foot a{color:#287c7f;font-weight:850}@media(max-width:950px){.layout{grid-template-columns:1fr}aside{max-width:790px}}@media(max-width:560px){.scoreboard{gap:3px}.scoreboard div{padding:5px}.scoreboard small{font-size:.46rem}.scoreboard strong{font-size:.94rem}.control-pad button{min-height:58px}.aim button{font-size:.69rem;padding:3px}.board-top{font-size:.58rem}.play{border-radius:17px}}
.overlay{touch-action:manipulation}.overlay:not([hidden]):active{transform:translate(-50%,-50%) scale(.98)}
