@font-face{font-family:Orbit;src:url(./assets/cartridge-pixel.ttf) format("truetype");font-display:swap}
:root{color-scheme:dark;--bg:#112437;--panel:#203746;--edge:#527d83;--gold:#ffd6a4;--text:#fff1df;--muted:#cce2e4;--pink:#fda8a4;--aqua:#9de7dc;--pixel:Orbit,"Courier New",monospace;--body:"Courier New",monospace}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;min-height:100dvh;background:radial-gradient(ellipse at 76% 2%,#43505b,#203849 40%,#112437 85%);color:var(--text);font:14px/1.32 var(--body)}
img{display:block;image-rendering:pixelated}
a,button{-webkit-tap-highlight-color:transparent}
a{color:inherit;text-decoration:none}
button{min-width:44px;min-height:44px;border:1px solid var(--edge);border-radius:0;padding:5px 7px;background:#32505a;color:var(--text);font:700 13px/1.16 var(--body);cursor:pointer;touch-action:manipulation}
button:disabled{background:#263f4a;color:#aabcc3;cursor:default}
button:not(:disabled):active{background:#466875}
button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--aqua);outline-offset:-3px}
button.primary{background:var(--gold);border-color:#fff0ca;color:#29343e;box-shadow:inset 0 -4px #c6837d}
button.primary:active{background:#ffb996}
button small{display:block;margin-top:3px;font:11px/1.12 var(--body)}
h1,h2,p{margin:0}
h1,h2{font:400 19px/1.1 var(--pixel)}
p{color:var(--muted)}
.wrap{width:min(100%,1060px);margin:auto;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))}
.site{display:flex;justify-content:space-between;align-items:center;gap:8px}
.site a{display:flex;align-items:center;gap:8px;min-height:44px;font:14px var(--pixel)}
.site img{border:1px solid var(--edge)}
.site p{font-size:12px;display:none}
.foot{padding:8px 0;font:9px var(--pixel);color:var(--muted)}
#cabinet{border:1px solid var(--edge);background:var(--panel);margin-top:5px;box-shadow:0 0 0 2px #122738,0 14px 38px #111c2bb0}
.bar{min-height:44px;display:flex;align-items:center;justify-content:space-between;padding-left:8px;background:#35535c;border-bottom:1px solid var(--edge);font:11px var(--pixel);color:var(--gold)}
.bar button{background:#294852;border-width:0 0 0 1px;padding:0}
.bar svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;vertical-align:middle}
#screen{min-height:0;outline:0}
.tools{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--edge);background:#2b4854}
.tools button{background:#2b4854;border-width:0 1px 0 0}
.tools button:last-child{border-right:0}
.tools button[aria-pressed=false]{color:var(--pink)}
.cover{position:relative;isolation:isolate;overflow:hidden;min-height:166px;aspect-ratio:1.58;background:#172b3d}
.cover img,.cover canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
.cover::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#172c43a6,transparent 75%),linear-gradient(0deg,#1a293fe5,transparent 56%);pointer-events:none}
.title-copy{position:absolute;z-index:1;left:11px;bottom:10px}
.title-copy h1{color:#ffe0ac;font-size:clamp(32px,10vw,67px);line-height:.96;text-shadow:3px 3px #a65b74,5px 4px #24314a}
.title-copy p{color:#fff1d6;margin-top:7px;font-weight:700;font-size:12px}
.menu{display:grid;gap:5px;padding:7px;border-top:1px solid var(--edge);background:#2a4555}
.menu>.primary{min-height:49px}
.row{display:flex;flex-wrap:wrap;gap:5px}
.row button{flex:1}
.panel,.playing{display:grid;gap:7px;padding:7px}
.playfield,.controls,.receipt{display:grid;gap:4px;min-width:0;align-content:start}
#court{display:block;width:100%;height:auto;aspect-ratio:352/192;background:#153046;image-rendering:pixelated;border:1px solid var(--edge);touch-action:none}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px}
.stats>div{display:grid;min-width:0;text-align:center;line-height:1.12;border:1px solid #557881;padding:3px 1px;background:#304b59}
.stats span{font-size:10px;color:var(--muted)}
.stats strong,.stats strong span{font-size:14px;color:var(--gold)}
.status{font-size:11px;min-height:17px;color:#ccebe2}
.ball-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.ball{display:flex;align-items:center;justify-content:center;gap:4px}
.ball img{width:18px;height:18px}
.ball[aria-pressed=true]{background:#476677;border-color:var(--aqua);box-shadow:inset 0 -3px #75b9b1}
.aim{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:3px}
.aim label{display:grid;grid-template-columns:1fr auto;gap:0 4px;align-content:center;padding:3px 6px;font-size:11px;background:#2c4555;border:1px solid #52747e;color:var(--muted)}
.aim output{color:var(--gold)}
.aim input{grid-column:1/-1;width:100%;min-width:0;height:19px;margin:0;accent-color:var(--aqua);touch-action:none}
.court-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.court-grid article{display:grid;gap:3px;align-content:start}
.court-grid img{width:100%;height:57px;object-fit:cover;border:1px solid var(--edge)}
.practice{font-size:11px}
.records{display:grid;gap:4px}
.record{text-align:left}
.result-art{width:100%;height:clamp(80px,24vw,145px);object-fit:cover;border:1px solid var(--edge)}
.receipt h2{color:var(--gold)}
.receipt>p{font-size:12px}
dialog{color:var(--text);background:#304f5c;border:1px solid #8ab2ae;padding:11px;width:min(480px,calc(100vw - 24px));max-height:calc(100dvh - 22px);overflow:auto}
dialog::backdrop{background:#102234c9}
dialog h2,dialog p{margin-bottom:8px}
body.lock{overflow:hidden}
#cabinet.expanded,#cabinet:fullscreen{position:fixed;inset:0;width:100%;height:100dvh;margin:0;z-index:10;display:grid;grid-template-rows:auto minmax(0,1fr) auto;padding:env(safe-area-inset-top) max(2px,env(safe-area-inset-right)) env(safe-area-inset-bottom) env(safe-area-inset-left);border:0}
.expanded #screen,#cabinet:fullscreen #screen{overflow:auto;overscroll-behavior:contain}
.expanded .cover{min-height:0;max-height:calc(100dvh - 239px)}
@media(max-width:420px) and (orientation:portrait){
  .playing{padding:4px;gap:4px}
  .playfield,.controls{gap:3px}
  .status{font-size:10px}
}
@media(min-width:550px){
  .site p{display:block}
  .title-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(172px,1fr)}
  .menu{align-content:center;border-top:0;border-left:1px solid var(--edge);padding:12px}
  .title-copy{left:16px;bottom:13px}
  .playing{grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:8px}
  .result{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}
  .result-art{height:100%;min-height:115px}
}
@media(min-width:780px){.wrap{padding-top:16px}.title-copy p{font-size:15px}.playing,.panel{padding:12px}.controls{gap:7px}}
@media(orientation:landscape) and (max-height:445px){
  .site{display:none}
  .wrap{padding-top:max(4px,env(safe-area-inset-top))}
  #cabinet{margin:0;height:calc(100dvh - max(4px,env(safe-area-inset-top)) - max(8px,env(safe-area-inset-bottom)));display:grid;grid-template-rows:auto minmax(0,1fr) auto}
  #screen{overflow:auto;overscroll-behavior:contain}
  .title-layout{min-height:100%}
  .cover,.expanded .cover{min-height:0;max-height:none;aspect-ratio:auto}
  .title-copy h1{font-size:clamp(30px,7vw,54px)}
  .menu,.playing,.panel{padding:5px}
  #court{max-height:calc(100dvh - 156px)}
  .controls,.playfield{gap:3px}
}
@media(max-width:420px) and (orientation:portrait){
  .wrap:has(.playing){padding-top:max(3px,env(safe-area-inset-top))}
  .wrap:has(.playing)>.site{display:none}
  .wrap:has(.playing) #cabinet{margin-top:0}
  .wrap:has(.playing) #court{max-height:calc(100dvh - 340px)}
}
