:root{color-scheme:dark;--ink:#0b0c1e;--panel:#171a32;--line:#424664;--cream:#fff0c9;--muted:#a1a5c1;--yellow:#ffcf5b;--blue:#70b6f9;--red:#fa6969;--green:#93dfa4}
*{box-sizing:border-box}body{margin:0;background:#0b0c1b;color:var(--cream);font-family:var(--arcade-font-family);font-size:14px;line-height:1.5;background-image:radial-gradient(#25273b 1px,transparent 1px);background-size:16px 16px}button,input,select{font:inherit}button,a,select,input{-webkit-tap-highlight-color:transparent}button,select,input{border:2px solid #525773;border-radius:0;background:#22253e;color:var(--cream);padding:10px 13px}button{font-weight:700;cursor:pointer;box-shadow:3px 3px 0 #080916;transition:background .1s}button:hover{background:#343954;border-color:var(--cream)}button:active{transform:translate(2px,2px);box-shadow:1px 1px 0 #080916}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:var(--yellow);color:#262035;border-color:#ffe8a2}button.primary:hover{background:#ffe49a}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid var(--blue);outline-offset:4px}[hidden]{display:none!important}
.site-bar{max-width:1180px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:18px 24px;color:#d0d2e3}.home-link{font-weight:700}.home-link span{font-size:11px;color:var(--muted);margin-left:12px}.account{display:flex;gap:10px;align-items:center;font-size:12px;max-width:40%}.account span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account img{width:28px;height:28px;object-fit:cover;border:2px solid var(--line)}
.cabinet{max-width:1120px;margin:6px auto 40px;border:3px solid #535775;box-shadow:0 0 0 5px #101224,0 0 0 7px #292b43,12px 12px 0 #060712;background:var(--ink);padding:24px 32px 0;position:relative}.game-header{position:relative;text-align:center;padding:6px 0 24px}.header-mark{display:flex;align-items:center;justify-content:center;gap:12px;font-size:10px;letter-spacing:3px;color:var(--muted)}.tiny-capsule{display:inline-block;width:26px;height:12px;background:linear-gradient(90deg,var(--red) 50%,var(--blue) 50%);border:2px solid var(--cream);box-shadow:2px 2px 0 #2f344f}h1{font-size:76px;letter-spacing:7px;line-height:1;margin:18px 0 13px;color:var(--yellow);font-weight:900;text-shadow:3px 0 #bd723d,0 3px #bd723d,3px 3px #bd723d,6px 6px #422f47}h1 span{font-size:16px;vertical-align:top;letter-spacing:0}.game-header p{font-weight:700;font-size:12px;letter-spacing:2px;margin:0}.game-header p span{color:var(--red);margin:0 9px}.sound-button{position:absolute;right:0;top:0;font-size:9px;padding:7px 9px;color:var(--muted);border-color:#343850}
.mode-tabs{display:flex;border-bottom:3px solid var(--line);gap:8px;margin-bottom:18px}.mode-tabs button{flex:1;box-shadow:none;border-bottom:0;background:#13162b;color:#777e9b;font-size:12px;padding:15px 10px}.mode-tabs button span{color:#cbd0e2;margin-left:8px}.mode-tabs .selected{background:#30334d;border-color:var(--yellow);color:var(--yellow);box-shadow:inset 0 3px 0 var(--yellow)}.mode-tabs .selected span{color:var(--yellow)}
.control-bar{display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap;background:#16192f;border:1px solid #343951;padding:15px 18px;margin-bottom:15px}.control-group{display:flex;flex-direction:column;gap:6px}.control-group label{font-size:9px;font-weight:700;letter-spacing:1px;color:var(--muted)}.control-group select{min-width:150px;padding:9px}.control-bar>button{margin-left:auto}#joinForm{display:flex;gap:8px;align-items:center}#roomCodeInput{width:134px;text-transform:uppercase;letter-spacing:3px}.room-info{display:flex;align-items:center;gap:12px;border:2px dashed #526278;padding:12px;margin-bottom:15px;font-size:12px}.room-info strong{color:var(--yellow);letter-spacing:4px;font-size:20px;margin-left:6px}.room-info button{font-size:10px}.room-info button:last-child{margin-left:auto}.match-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;letter-spacing:1px;padding:0 4px 12px;color:var(--muted)}#modeLabel{color:var(--yellow);font-weight:700}#leaveButton{font-size:9px;padding:6px 8px;color:var(--red)}.notice{padding:12px 16px;color:var(--yellow);border:2px solid #78633c;background:#332b24;margin-bottom:15px;font-size:12px;line-height:1.6}
.arena{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:30px;align-items:start;position:relative}.arena.versus{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:38px}.player-panel{border:2px solid #3f4760;background:#131629;padding:14px 16px 12px;min-width:0;box-shadow:4px 4px 0 #050615}.player-heading{display:flex;align-items:center;gap:8px;border-bottom:1px solid #343951;padding-bottom:12px;margin-bottom:18px;font-size:12px}.player-number{padding:4px 6px;background:var(--yellow);color:#252234;font-weight:900}.player-heading img{width:24px;height:24px;border:1px solid #606680;object-fit:cover}.player-heading strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.badge{margin-left:auto;font-size:8px;color:var(--green);letter-spacing:1px}.opponent .player-number{background:var(--blue)}.opponent{border-color:#3d5070}.play-layout{display:grid;grid-template-columns:96px minmax(0,1fr);gap:17px;align-items:start}.hud{padding-top:23px}.hud-box{border:2px solid #535877;background:#0b0d1e;padding:10px 8px;margin-bottom:16px;box-shadow:2px 2px 0 #050615}.hud-box>span{font-size:10px;letter-spacing:1px;color:var(--muted);display:block;margin-bottom:8px}.hud-box strong{font-size:21px;letter-spacing:1px;display:block;color:var(--yellow);font-variant-numeric:tabular-nums}.hud-box:first-child strong{font-size:17px}.next-box{padding-bottom:0}.next-box canvas{width:100%;height:auto;display:block;image-rendering:pixelated}.attack-counter{font-size:10px;color:var(--muted);text-align:center;line-height:1.6}.attack-counter.incoming{color:var(--red);animation:blink 1s steps(2) infinite}
.bottle-wrap{position:relative;padding-top:24px;max-width:276px;width:100%;margin:auto}.bottle-neck{position:absolute;top:0;left:calc(50% - 41px);width:82px;height:27px;background:#070916;border:5px solid #d0d8e8;border-bottom:0;box-shadow:inset 3px 0 #67718d,inset -3px 0 #67718d}.bottle{border:6px solid #cbd5e9;border-top-width:7px;background:#050714;box-shadow:inset 0 0 0 3px #616d89,4px 4px 0 #030410;position:relative}.bottle:before{content:"";position:absolute;top:-7px;left:calc(50% - 36px);width:72px;height:7px;background:#070916;z-index:1}.bottle canvas{width:100%;height:auto;display:block;image-rendering:pixelated;outline-offset:10px}.bottle.danger{border-color:var(--red)}.board-overlay{position:absolute;inset:0;display:flex;flex-direction:column;gap:20px;align-items:center;justify-content:center;text-align:center;background:#080b1cbb;padding:10px;pointer-events:none}.board-overlay strong{font-size:19px;font-weight:900;letter-spacing:1px;color:var(--yellow);line-height:1.5;text-shadow:2px 2px #48416c}.board-overlay span{font-size:9px;color:#c1c6de;line-height:2}.player-footer{margin-top:16px;display:flex;justify-content:space-between;gap:10px;font-size:8px;color:var(--muted);line-height:1.5}.player-footer span:first-child{color:var(--green)}.versus-marker{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--red);font-size:19px;font-weight:900;text-shadow:2px 2px #423d60;z-index:2}
.retro-guide{padding:24px 25px;background:#14172b;border:2px solid #343b55;min-height:550px}.guide-label{color:var(--blue);font-size:10px;letter-spacing:3px;font-weight:700}.retro-guide canvas{max-width:100%;width:300px;height:auto;display:block;margin:4px auto 8px;image-rendering:pixelated}.retro-guide h2{font-size:26px;line-height:1.25;letter-spacing:1px;color:var(--yellow);margin:5px 0 12px}.retro-guide p{font-size:12px;line-height:1.8;color:#bbc0d8;margin:0 0 18px}.key-guide{display:grid;grid-template-columns:65px 1fr;gap:10px 14px;align-items:center;border-top:1px dashed #414862;border-bottom:1px dashed #414862;padding:16px 0;margin:8px 0 20px;font-size:10px}kbd{border:2px solid #747d9c;background:#22263d;box-shadow:3px 3px 0 #050714;padding:5px 8px;text-align:center;font-size:17px;color:var(--cream)}.guide-note{display:grid;grid-template-columns:100px 1fr;gap:8px;font-size:11px}.guide-note strong{color:var(--blue);line-height:1.8}.guide-note p{font-size:11px;margin:0;line-height:1.7}.insert-coin{display:block;text-align:center;color:#78819e;font-size:9px;letter-spacing:1px;margin-top:24px}.bottom-hint{text-align:center;color:#a5adc7;font-size:10px;line-height:1.8;letter-spacing:1px;margin:24px 0}.bottom-hint span{color:#65708e;margin-left:12px}.touch-controls{display:none;justify-content:center;gap:14px;margin-top:24px}.touch-controls button{min-width:54px;font-size:24px;padding:12px;touch-action:none;user-select:none}
.cabinet-footer{border-top:2px solid #343b54;padding:15px 0;display:flex;justify-content:space-between;gap:10px;font-size:8px;letter-spacing:1px;color:#77829f}.top-view{min-height:500px;padding:18px 10px}.top-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}.top-heading h2{font-size:22px;margin:12px 0;color:var(--yellow)}#ownRank{padding:14px;border:2px dashed #444d67;color:var(--green);line-height:1.8}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}th{text-align:left;font-size:10px;letter-spacing:1px;color:var(--muted);border-bottom:2px solid #525b79;padding:15px 10px}td{border-bottom:1px solid #29334c;padding:15px 10px}td:nth-child(3){color:var(--yellow);font-weight:700}.rank-player{display:flex;align-items:center;gap:10px}.rank-player img{width:28px;height:28px;object-fit:cover;border:1px solid #626f90}.my-row{background:#1c2b36}.top-note{color:var(--muted);font-size:11px;line-height:1.8;margin-top:20px}@keyframes blink{50%{opacity:.5}}
@media(min-width:1200px){.cabinet{max-width:1100px}.bottle-wrap{max-width:264px}.play-layout{grid-template-columns:96px minmax(0,1fr)}}
@media(max-width:1000px){.cabinet{margin:5px 15px 30px;padding:22px 20px 0}.arena,.arena.versus{gap:22px}.play-layout{grid-template-columns:76px minmax(0,1fr);gap:10px}.hud-box{padding:8px 6px;margin-bottom:12px}.hud-box strong{font-size:18px}.hud-box:first-child strong{font-size:13px}.retro-guide{padding:20px 18px;min-height:0}.retro-guide h2{font-size:22px}.player-panel{padding:12px 10px}.guide-note{grid-template-columns:80px 1fr}.sound-button{position:static;margin-top:17px}h1{font-size:64px}.game-header{padding-bottom:18px}}
@media(max-width:700px){.site-bar{padding:15px}.home-link span{display:none}.cabinet{padding:18px 12px 0;margin:2px 9px 25px}.header-mark{font-size:8px;letter-spacing:1px}h1{font-size:48px;letter-spacing:3px;margin-top:15px}.game-header p{font-size:9px;letter-spacing:0}.game-header p span{margin:0 3px}.mode-tabs{gap:4px}.mode-tabs button{font-size:9px;padding:12px 4px}.mode-tabs button span{margin-left:0;display:block;margin-top:5px}.control-bar{padding:12px;gap:10px}.control-group{flex:1}.control-group select{min-width:0;width:100%;font-size:12px}.control-bar>button{font-size:12px}.arena{grid-template-columns:1fr}.retro-guide{display:none}.arena:not(.versus) .player-panel{max-width:405px;width:100%;margin:auto}.play-layout{grid-template-columns:88px minmax(0,1fr);gap:12px}.arena.versus{gap:12px}.arena.versus .player-panel{padding:10px 5px}.arena.versus .play-layout{grid-template-columns:1fr;gap:0}.arena.versus .hud{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding-top:0;order:2;margin-top:12px}.arena.versus .hud-box{margin:0;padding:5px 2px;border-width:1px;text-align:center}.arena.versus .hud-box>span{font-size:7px;margin-bottom:5px;letter-spacing:0}.arena.versus .hud-box strong{font-size:11px;letter-spacing:0}.arena.versus .next-box{grid-column:1/3;display:flex;align-items:center;justify-content:space-around;height:38px}.arena.versus .next-box canvas{width:56px;height:auto}.arena.versus .attack-counter{font-size:8px;align-self:center}.arena.versus .player-heading{gap:4px;font-size:9px;margin-bottom:10px;flex-wrap:wrap;min-height:42px}.arena.versus .player-heading strong{max-width:95px}.arena.versus .player-heading img{width:18px;height:18px}.arena.versus .badge{width:100%;text-align:right;font-size:7px}.arena.versus .player-number{padding:3px;font-size:9px}.arena.versus .bottle{border-width:4px}.arena.versus .bottle-neck{border-width:4px;width:52px;left:calc(50% - 26px)}.arena.versus .bottle:before{width:44px;left:calc(50% - 22px);top:-4px;height:4px}.arena.versus .bottle-wrap{padding-top:22px}.arena.versus .board-overlay strong{font-size:12px}.arena.versus .board-overlay span{font-size:7px;line-height:1.6}.versus-marker{font-size:12px}.touch-controls{display:flex}.bottom-hint{font-size:8px;letter-spacing:0}.bottom-hint span{display:none}.match-strip{font-size:8px;letter-spacing:0;flex-wrap:wrap}.room-info{flex-wrap:wrap;gap:8px}.room-info button{font-size:9px}.room-info strong{font-size:17px}.room-info button:last-child{margin-left:0}#joinForm{width:100%}#roomCodeInput{flex:1}#joinForm button{font-size:11px}.cabinet-footer{font-size:7px;letter-spacing:0}.top-heading{align-items:start;flex-direction:column}.top-heading h2{font-size:17px}table{font-size:10px}th,td{padding:12px 7px}.top-view{padding:12px 0}.player-footer{font-size:7px}}
h1{font-family:var(--arcade-font-family);font-size:48px;letter-spacing:4px;font-weight:400;line-height:1.3}h1 span{font:700 10px var(--arcade-font-family);margin-left:6px;color:var(--blue);text-shadow:none}.guide-label,.hud-box>span,.insert-coin{font-family:var(--arcade-font-family);font-size:8px;letter-spacing:0}.hud-box strong{font-family:var(--arcade-font-family);font-size:17px;font-weight:400}.hud-box:first-child strong{font-size:10px;letter-spacing:0}.board-overlay strong{font-family:inherit;font-size:18px;line-height:1.5}.versus-marker{font-family:var(--arcade-font-family);font-size:15px}
.sound-button,.control-group label,.player-footer{font-size:11px}.mode-tabs button{font-size:13px}.board-overlay span{font-size:12px;line-height:1.7}.key-guide{font-size:12px}.bottom-hint{font-size:11px}
@media(max-width:1000px){h1{font-size:40px}.hud-box strong{font-size:14px}.hud-box:first-child strong{font-size:9px}}
@media(max-width:700px){h1{font-size:30px;letter-spacing:1px}h1 span{font-size:6px}.mode-tabs button{font-size:11px}.arena.versus .hud-box strong{font:700 11px var(--arcade-font-family)}.arena.versus .hud-box:first-child strong{font-size:10px}.arena.versus .hud-box>span{font-size:6px}.arena.versus .board-overlay strong{font-size:13px}.arena.versus .board-overlay span{font-size:10px}.player-footer{font-size:9px}.versus-marker{font-size:10px}.bottom-hint{font-size:10px}}
@media(prefers-reduced-motion:reduce){.attack-counter.incoming{animation:none}button{transition:none}}
.bottle canvas,.next-box canvas,.retro-guide canvas{image-rendering:auto}
.player-heading{display:grid;grid-template-columns:auto 28px minmax(0,1fr) auto}.player-heading strong{min-width:0;max-width:none}.player-heading .badge{white-space:nowrap}.player-avatar{position:relative;width:28px;height:28px;flex-shrink:0;display:grid;place-items:center;border:1px solid #606680;border-radius:50%;overflow:hidden;background:#294675;color:#fff}.avatar-fallback{grid-area:1/1;font-size:14px;font-weight:700}.player-heading .player-avatar>img,.arena.versus .player-heading .player-avatar>img{position:absolute;inset:0;display:block;width:100%;height:100%;border:0;border-radius:inherit;object-fit:cover}
@media(max-width:700px){.arena.versus .player-heading{grid-template-columns:auto 24px minmax(0,1fr)}.arena.versus .player-avatar{width:24px;height:24px}.arena.versus .player-heading strong{min-width:0;max-width:none}.arena.versus .player-heading .badge{grid-column:1/-1;justify-self:end;width:auto;margin-left:0}}
.cabinet{max-width:1400px}
.cabinet .arcade-ranking{--ranking-panel:#171a2d;--ranking-row:#1c2136;--ranking-border:#65607a}
.mode-tabs button{min-width:0}
@media(max-width:700px){.mode-tabs button{padding-inline:4px;font-size:10px}.mode-tabs button span{display:block;margin-left:0}.control-bar #practiceSpeedControl{flex:1}.control-bar #practiceSpeed{width:100%}}
@media(min-width:1051px) and (max-width:1250px){.arcade-game-layout:not(.is-versus) .arena{grid-template-columns:1fr}.arcade-game-layout:not(.is-versus) .retro-guide{display:none}.arcade-game-layout:not(.is-versus) .player-panel{max-width:460px;width:100%;margin:auto}}
@media (min-width: 1000px) and (min-height: 600px) {
    .site-bar { height: 42px; padding: 8px 24px; }
    .cabinet { width: calc(100% - 32px); height: calc(100dvh - 62px); margin: 6px auto 12px; padding: 12px 18px 0; display: flex; flex-direction: column; }
    .game-header { flex-shrink: 0; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 0 8px; }
    .header-mark { font-size: 8px; line-height: 1.2; letter-spacing: 1px; }
    h1 { font-size: 28px; line-height: 1.15; margin: 0; }
    h1 span { font-size: 9px; }
    .game-header p { display: none; }
    .sound-button { position: static; font-size: 9px; }
    .mode-tabs { flex-shrink: 0; margin-bottom: 6px; }
    .mode-tabs button { padding: 6px 10px; font-size: 11px; line-height: 1.3; }
    .arcade-game-layout { flex: 1; }
    #gameView { display: flex; flex-direction: column; min-height: 0; }
    .control-bar { flex-shrink: 0; align-items: center; padding: 5px 10px; margin-bottom: 6px; gap: 12px; }
    .control-group { flex-direction: row; align-items: center; gap: 7px; }
    .control-group > span { font-size: 11px; }
    .control-group select { min-width: 125px; padding: 4px 6px; font-size: 11px; line-height: 1.3; }
    .control-bar button { padding: 5px 8px; font-size: 11px; line-height: 1.3; }
    .match-strip { flex-shrink: 0; padding-bottom: 6px; font-size: 9px; line-height: 1.3; }
    .match-strip button { font-size: 9px; padding: 5px 8px; }
    .room-info { flex-shrink: 0; padding: 7px 10px; margin-bottom: 8px; }
    .room-info strong { font-size: 16px; }
    .room-info button { padding: 6px 8px; }
    .arena { flex: 1; min-height: 310px; gap: 18px; align-items: stretch; }
    .arcade-game-layout:not(.is-versus) .arena { grid-template-columns: minmax(0, 1fr) 230px; }
    .arena.versus { gap: 30px; }
    .player-panel { height: 100%; min-height: 0; container-type: size; display: grid; grid-template-columns: 110px minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr) auto; column-gap: 12px; padding: 10px 12px 8px; --capsule-board-width: min(calc((100cqh - 64px) / 2), calc(100cqw - 134px)); }
    .arcade-game-layout:not(.is-versus) .player-panel { height: 100%; width: 100%; margin: 0 auto; }
    .player-heading, .arena.versus .player-heading { grid-column: 1; grid-row: 1; align-self: start; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 6px; padding-bottom: 8px; margin-bottom: 0; font-size: 11px; }
    .player-heading strong { grid-column: 1 / -1; max-width: 100%; }
    .player-heading .badge, .arena.versus .player-heading .badge { grid-column: 1 / -1; justify-self: start; margin-left: 0; }
    .play-layout { display: contents; }
    .bottle-wrap, .arena.versus .bottle-wrap { grid-column: 2; grid-row: 1 / span 2; align-self: center; justify-self: center; max-width: none; width: calc(var(--capsule-board-width) + 12px); margin: 0; padding-top: 24px; }
    .hud { grid-column: 1; grid-row: 2; align-self: start; padding-top: 10px; }
    .hud-box { padding: 4px 6px; margin-bottom: 6px; }
    .hud-box > span { margin-bottom: 2px; font-size: 7px; line-height: 1.3; }
    .hud-box strong { font-size: 13px; line-height: 1.2; }
    .hud-box:first-child strong { font-size: 13px; }
    .next-box canvas { display: block; max-width: 48px; margin: auto; }
    .attack-counter { font-size: 8px; line-height: 1.3; }
    .player-footer { grid-column: 1 / -1; grid-row: 3; margin-top: 8px; font-size: 9px; }
    .retro-guide { height: 100%; min-height: 0; padding: 12px 16px; overflow-y: auto; }
    .retro-guide canvas { width: 160px; margin: 3px auto 7px; }
    .retro-guide h2 { font-size: 18px; margin-bottom: 8px; }
    .retro-guide p { font-size: 11px; line-height: 1.5; margin-bottom: 8px; }
    .key-guide { grid-template-columns: 48px 1fr; gap: 6px 10px; padding: 8px 0; margin: 8px 0 10px; }
    .key-guide kbd { font-size: 12px; padding: 3px 5px; }
    .guide-note { grid-template-columns: 75px 1fr; gap: 6px; font-size: 10px; }
    .guide-note p { font-size: 10px; margin: 0; }
    .insert-coin { margin-top: 12px; font-size: 7px; }
    .bottom-hint { flex-shrink: 0; margin: 6px 0; font-size: 8px; line-height: 1.4; letter-spacing: .5px; }
    .arcade-game-layout:not(.is-versus) .bottom-hint { display: none; }
    .cabinet > .cabinet-footer { flex-shrink: 0; padding: 6px 0; font-size: 7px; line-height: 1.4; }
}
@media (min-width: 1000px) and (max-width: 1250px) and (min-height: 600px) {
    .arcade-game-layout:not(.is-versus) .arena { grid-template-columns: 1fr; }
    .arcade-game-layout:not(.is-versus) .retro-guide { display: none; }
    .arcade-game-layout:not(.is-versus) .player-panel { max-width: none; width: 100%; }
}
