:root{color-scheme:dark;font-family:Inter,"Segoe UI","Noto Sans JP",system-ui,sans-serif;color:#eef3fc;background:#090e19;font-synthesis:none;--muted:#8f9db3;--border:#ffffff18;--cyan:#7ce7ff;--pink:#dea8ff}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #8deeff;outline-offset:4px}button{border:0}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.app{height:100dvh;display:grid;grid-template-rows:94px minmax(0,1fr) 112px}.topbar{padding:0 32px;display:flex;gap:34px;align-items:center;border-bottom:1px solid var(--border);position:relative;z-index:2;background:#0c1220}.logo{display:flex;align-items:center;gap:12px;white-space:nowrap}.logo small{font-size:8px;letter-spacing:.23em;color:#9aa7bf;font-weight:600}.logo h1{font-size:23px;letter-spacing:-1px;margin:2px 0 0;font-weight:850}.logo h1 b{background:linear-gradient(90deg,#a9eeff,#b0b9ff,#ebb3ff);background-clip:text;color:transparent}.logo-mark{position:relative;display:block;width:29px;height:37px}.logo-mark span{position:absolute;width:27px;height:12px;border-radius:50%;border:2px solid;left:0;background:#0c1220}.logo-mark span:nth-child(1){top:20px;border-color:#dda9ff}.logo-mark span:nth-child(2){top:11px;border-color:#a7bbff}.logo-mark span:nth-child(3){top:2px;border-color:#8ce9ef}.scoreboard{display:flex;gap:31px;align-items:center;flex:1}.scoreboard small{display:block;color:var(--muted);font-size:9px;letter-spacing:.1em;margin-bottom:5px}.scoreboard strong{font-size:22px;line-height:1;font-variant-numeric:tabular-nums;font-weight:650}.scoreboard strong span{font-size:10px;margin-left:5px;color:var(--muted)}.scoreboard .score-main strong{font-size:32px;color:#f5e6ab;font-weight:800}.topbar nav{display:flex;gap:9px}.subtle{background:#161f30;border:1px solid var(--border);border-radius:9px;padding:10px 12px;font-size:12px;white-space:nowrap}.subtle span{margin-left:4px;font-size:10px}.subtle:hover{background:#263049}.playfield{position:relative;min-height:0;overflow:hidden;background:radial-gradient(ellipse,#172234,#090e19)}#scene{position:absolute;inset:0}#scene canvas{display:block;width:100%;height:100%;touch-action:none}.field-heading{position:absolute;top:20px;left:28px;right:28px;display:flex;justify-content:space-between;pointer-events:none;font-size:9px;font-weight:650;letter-spacing:.15em;color:#a5b5c9}#mode-badge{color:#9bddef}.live-indicator{color:#7e9c90}.timer-wrap{position:absolute;right:28px;top:54px;width:130px;text-align:right}.timer-wrap small{font-size:9px;letter-spacing:.13em;color:var(--muted)}.timer-wrap strong{display:block;font-size:30px;font-weight:800;font-variant-numeric:tabular-nums}.timer-track{height:3px;background:#ffffff15;margin-top:7px;border-radius:4px}.timer-track i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#b0a5ff,#8bf4ee)}.field-bottom{position:absolute;bottom:14px;left:28px;right:28px;display:flex;gap:20px;justify-content:space-between;pointer-events:none;font-size:10px;color:#99aabd;letter-spacing:.03em}#refill-info{font-size:8px;letter-spacing:.18em}.tower-label{position:absolute;padding:5px 9px;border-radius:7px;transform:translate(-50%,-100%);background:#0e1726da;border:1px solid #ffffff20;pointer-events:auto;color:#d4deec;font-size:9px;white-space:nowrap;box-shadow:0 6px 22px #0003}.tower-label b{display:block;font-size:9px;font-weight:600}.tower-label i{display:block;height:2px;background:#79e1fa;margin-top:4px;max-width:100%;transition:width .15s}.tower-label.target{border-color:#a9d6ee70;background:#183046ed}.tower-label.feeding{color:#b4a7df}.welcome{position:absolute;inset:0;display:flex;align-items:center;padding:4vw;background:linear-gradient(90deg,#080d17dc 0%,#080d17ae 29%,transparent 80%);transition:opacity .3s}.welcome.closed{display:none}.welcome-card{max-width:410px;padding:23px 25px;background:#0b1422c9;border:1px solid #ffffff20;border-radius:18px;backdrop-filter:blur(14px);box-shadow:0 20px 65px #0004}.pill{font-size:8px;font-weight:650;letter-spacing:.14em;color:#99d7e8}.welcome h2{font-size:36px;line-height:1.38;letter-spacing:-1.7px;margin:16px 0 12px}.welcome em{font-style:normal;background:linear-gradient(90deg,#e4c5ff,#8df4ff,#f5ecb0);background-clip:text;color:transparent}.welcome p{font-size:12px;line-height:1.9;color:#aab7c9;margin:0 0 18px}.mode-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mode-options button{padding:12px 9px;border-radius:9px;border:1px solid #ffffff18;background:#172030;text-align:left}.mode-options button[aria-pressed=true]{background:#243448;border-color:#8ddbee7a}.mode-options b{font-size:11px;display:block}.mode-options small{font-size:8px;display:block;color:#98a9bd;margin-top:5px}.primary{display:inline-flex;align-items:center;justify-content:center;gap:12px;background:linear-gradient(100deg,#b9ecf4,#c4baff,#e9bded);color:#172030;font-weight:800;border-radius:9px;padding:12px 18px;font-size:12px;cursor:pointer}.primary:hover{filter:brightness(1.08)}#play{margin-top:14px;width:100%;height:44px;justify-content:space-between;font-size:15px;letter-spacing:.15em}.welcome .mini-note{font-size:9px;text-align:center;margin:10px 0 0;color:#7e94a9}.dock{display:flex;align-items:center;gap:35px;padding:14px 32px;border-top:1px solid var(--border);background:#0d1422}.launch-controls{display:flex;gap:8px;flex:0 0 535px}.launcher-button{flex:1;border:1px solid #79bccc55;border-radius:12px;padding:13px 18px;text-align:left;background:linear-gradient(150deg,#213b47,#192536);box-shadow:inset 0 1px 0 #ffffff13}.launcher-button.right{background:linear-gradient(150deg,#332845,#192536);border-color:#a293c355}.launcher-button small{font-size:8px;letter-spacing:.15em;color:#9ab4c6;display:block;margin-bottom:5px}.launcher-button strong{font-size:17px;font-weight:700;display:flex;justify-content:space-between;gap:10px}.launcher-button.left strong span{color:var(--cyan)}.launcher-button.right strong span{color:var(--pink)}.launcher-button.down,.both-button.down{transform:translateY(2px);background:#425f72}.both-button{min-width:78px;border:1px solid #ffffff20;border-radius:12px;background:#202c3f;padding:8px 14px}.both-button span{font-size:20px;display:block;color:#f1e8af}.both-button b{display:block;font-size:11px}.both-button small{font-size:8px;color:var(--muted)}.dock-extras{flex:1}.utility-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.utility-row button{font-size:10px;background:#1b2435;padding:8px 9px;border-radius:6px;color:#b8c8d9}.utility-row button[aria-pressed=true]{color:#a8f0ed;background:#1c3c41}.dock-extras p{color:#8292a8;font-size:9px;margin:10px 0 0;line-height:1.8}.dock-extras p button{color:#b6c7de;background:none;font-size:9px;text-decoration:underline;padding:0 0 0 8px}.volume-label{font-size:9px;color:#8da0b4;display:flex;align-items:center;gap:6px}.volume-label input{width:62px;accent-color:#9bdde9}.secondary{background:#1e2a3d;border:1px solid #ffffff20;color:#d8e4f3;border-radius:9px;padding:12px 15px;cursor:pointer;text-align:center;font-size:12px}.secondary:hover{background:#2c3d55}#celebration{position:absolute;inset:0;pointer-events:none;opacity:0}#celebration.active{animation:celebrate 1.9s ease-out both}.win-title{position:absolute;top:15%;left:0;right:0;text-align:center;transform:rotate(-3deg);text-shadow:0 3px 10px #070b18,0 0 25px #9d73ff}.win-title small{font-size:11px;color:#fff;letter-spacing:.3em;font-weight:800}.win-title strong{display:block;font-size:clamp(35px,6vw,77px);font-weight:950;font-style:italic;letter-spacing:-3px;background:linear-gradient(100deg,#fff 10%,#f5b5d5 28%,#fbdf99 40%,#c5fca9 55%,#9aeeff 70%,#d0b5ff 90%);background-clip:text;color:transparent;filter:drop-shadow(0 3px 0 #132035)}.win-title b{font-size:26px;color:#ffeeb1}.rainbow-aura{position:absolute;inset:-35%;background:conic-gradient(from 80deg,#fa3b8260,#ffbb4a20,#ffeb4b20,#63ff9330,#61dfff40,#9d83ff40,#fa3b8260);mask-image:radial-gradient(ellipse,transparent 25%,#0009 65%);animation:auraspin 5s linear infinite}.speed-rays{position:absolute;inset:0;background:repeating-conic-gradient(from 15deg at 50% 55%,transparent 0deg 11deg,#b6d4f21a 12deg 13deg,transparent 14deg 23deg);mask-image:radial-gradient(ellipse,transparent 28%,black 98%)}@keyframes celebrate{0%{opacity:0;transform:scale(.97)}10%{opacity:1;transform:scale(1.02)}25%{transform:scale(1)}65%{opacity:1}100%{opacity:0}}@keyframes auraspin{to{transform:rotate(60deg)}}body.low-fx .speed-rays{display:none}body.low-fx .rainbow-aura{opacity:.3}#pause-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#070d17a0;backdrop-filter:blur(3px);pointer-events:none}#pause-overlay strong{font-size:45px;letter-spacing:.2em}#pause-overlay span{font-size:12px;color:var(--muted);margin-top:12px}#error-panel{position:absolute;inset:30px;padding:30px;background:#172537;border:1px solid #f78686;border-radius:14px;z-index:20;white-space:pre-wrap}dialog{width:min(480px,calc(100vw - 28px));max-height:85dvh;background:#121d2d;color:#edf4fc;border:1px solid #ffffff28;padding:24px;border-radius:20px;box-shadow:0 30px 100px #0009}dialog::backdrop{background:#060b16bf;backdrop-filter:blur(6px)}.dialog-top{display:flex;gap:12px;align-items:center;justify-content:space-between}.dialog-top small{font-size:8px;color:#9ec6d5;letter-spacing:.15em}.dialog-top h2{font-size:22px;margin:5px 0 0;letter-spacing:-.8px}.dialog-top button{border-radius:8px;font-size:23px;background:#25354b;width:32px;height:32px;flex:0 0 32px}.dialog-note,dialog p{font-size:12px;color:#99aec5;line-height:1.9}.result-score{margin:25px 0 17px;text-align:center}.result-score small{font-size:10px;color:#92bdcb;letter-spacing:.2em}.result-score strong{display:block;font-size:60px;font-weight:850;color:#e9e3bd;letter-spacing:-3px;font-variant-numeric:tabular-nums}.result-stats{display:flex;justify-content:center;gap:17px;font-size:11px;color:#a9bcd1;margin-bottom:25px}form label{display:block;font-size:11px;color:#afc2d8;margin-bottom:8px}form>div{display:flex;gap:8px}form input{width:0;flex:1;background:#0c1420;border:1px solid #ffffff20;border-radius:9px;padding:12px;color:white;min-width:0;font-size:11px}#save-status{min-height:22px;margin:8px 0;font-size:11px}.result-actions{display:flex;gap:8px;margin-top:10px}.result-actions>*{flex:1}#rank-list{list-style:none;margin:20px 0;padding:0;counter-reset:rank}#rank-list li{display:grid;grid-template-columns:24px 1fr auto;gap:11px;align-items:center;padding:12px 0;border-bottom:1px solid #ffffff10;counter-increment:rank}#rank-list li::before{content:counter(rank,decimal-leading-zero);font-size:11px;color:#7f94ae}#rank-list li:first-child::before{color:#ffe5a5}#rank-list b{font-size:12px;font-weight:600}#rank-list small{display:block;font-size:9px;color:#7f93ac;margin-top:3px}#rank-list strong{font-size:17px;color:#e3e9bd}#rank-status{font-size:12px;color:#a9bdd1;line-height:1.8}#rank-refresh{width:100%}dl{display:grid;grid-template-columns:1fr auto;font-size:12px;gap:15px;padding:17px;background:#0b1523;border-radius:10px}dd{margin:0;color:#e6ddb2}
.win-title strong{text-shadow:none}
@media(min-width:1600px){.app{grid-template-rows:100px minmax(0,1fr) 120px}.topbar,.dock{padding-left:48px;padding-right:48px}.logo h1{font-size:27px}.launch-controls{flex-basis:640px}.launcher-button{padding:16px 24px}.welcome-card{max-width:450px;padding:30px}}
@media(max-width:1050px){.topbar{padding:0 20px;gap:20px}.scoreboard{gap:18px}.topbar nav span{display:none}.launch-controls{flex-basis:440px}.dock{padding:12px 20px;gap:20px}.volume-label{display:none}.welcome-card{max-width:345px}.welcome h2{font-size:31px}.logo h1{font-size:21px}}
@media(max-width:700px){.app{grid-template-rows:108px minmax(0,1fr) 163px}.topbar{flex-wrap:wrap;align-content:center;gap:12px;padding:12px 16px}.logo{flex:1}.logo h1{font-size:19px}.logo small{font-size:6px}.logo-mark{transform:scale(.8);width:23px}.scoreboard{order:3;flex-basis:100%;gap:26px}.scoreboard small{font-size:8px;margin-bottom:3px}.scoreboard strong{font-size:17px}.scoreboard .score-main strong{font-size:23px}.topbar nav{gap:5px}.subtle{padding:8px}.field-heading{top:13px;left:15px;right:15px;font-size:7px}.live-indicator{display:none}.timer-wrap{top:12px;right:15px;width:95px}.timer-wrap strong{font-size:21px}.timer-wrap small{font-size:7px}.field-bottom{bottom:10px;left:14px;right:14px;font-size:9px}#refill-info{display:none}.tower-label{font-size:7px;padding:4px 5px}.tower-label b{font-size:7px}.welcome{justify-content:center;padding:16px;background:#090e1960}.welcome-card{width:100%;max-width:335px;padding:19px}.welcome h2{font-size:28px;line-height:1.3;margin:10px 0}.welcome p{font-size:10px;margin-bottom:10px}.pill{font-size:7px}.mode-options button{padding:9px}.mode-options small{font-size:7px}.mode-options b{font-size:10px}#play{height:38px;margin-top:10px}.dock{padding:11px 13px;display:block}.launch-controls{width:100%;gap:6px}.launcher-button{padding:10px 11px}.launcher-button small{font-size:6px}.launcher-button strong{font-size:14px}.both-button{min-width:60px;padding:7px 9px}.utility-row{justify-content:center;gap:5px;margin-top:9px}.utility-row button{font-size:9px;padding:7px}.dock-extras p{font-size:7px;margin-top:7px;text-align:center}.win-title{top:22%}.win-title strong{font-size:38px;letter-spacing:-2px}.win-title small{font-size:8px}.win-title b{font-size:22px}.result-score strong{font-size:50px}.result-stats{gap:10px;font-size:10px}}
@media(max-height:600px) and (min-width:701px){.app{grid-template-rows:68px minmax(0,1fr) 85px}.topbar{padding:0 20px}.welcome-card{padding:15px;max-width:340px}.welcome h2{font-size:25px;margin:7px 0}.welcome p{font-size:10px;margin-bottom:8px}.pill{font-size:7px}.mode-options button{padding:8px}#play{height:36px;margin-top:8px}.dock{padding:8px 20px}.launcher-button{padding:9px 15px}.field-bottom{font-size:9px}}
@media(prefers-reduced-motion:reduce){.rainbow-aura{animation:none}.speed-rays{display:none}#celebration.active{animation:celebrate 1.2s ease-out both}}

/* v3: portrait-first controls, front-facing cabinet and arcade celebrations. */
.app{grid-template-rows:94px minmax(0,1fr) 148px}
.topbar nav span{display:inline}
.topbar nav .subtle{min-height:44px;display:flex;align-items:center;gap:4px}
.dock{display:grid;grid-template-columns:minmax(420px,580px) 1fr;grid-template-rows:44px 70px;grid-template-areas:"targets extras" "launch extras";gap:7px 24px;padding:12px 32px}
.target-controls{grid-area:targets;display:flex;align-items:center;gap:6px}
.target-controls>small{font-size:10px;white-space:nowrap;color:#91a4ba}
.target-controls button{position:relative;flex:1;min-height:44px;padding:8px 4px;background:#18273a;color:#adbed4;border:1px solid #ffffff18;border-radius:8px;font-size:10px;overflow:hidden}
.target-controls button[aria-pressed=true]{color:#f8f4d1;background:#354248;border-color:#ffdf747a}
.target-controls button i{position:absolute;bottom:0;left:0;height:3px;background:linear-gradient(90deg,#77e6ff,#c9a1ff,#ffe395);width:0}
.target-controls button:disabled{cursor:default;opacity:.5}
.launch-controls{grid-area:launch;flex:auto;width:100%;height:70px}
.launcher-button{touch-action:none;min-height:64px}
.both-button{touch-action:none;min-width:90px}
.dock-extras{grid-area:extras;align-self:center;min-width:0}
.utility-row button{min-height:44px;padding:10px 12px;font-size:11px}
.rules-link{font-size:9px;color:#99b2d0;text-decoration:underline;background:none;padding:4px 0}
.dock-extras p{margin:5px 0 0;font-size:10px}
.arcade-marquee{position:absolute;top:43px;left:50%;transform:translateX(-50%);text-align:center;pointer-events:none;line-height:1;color:#f6eab9;opacity:.85}
.arcade-marquee>span{font-size:9px;letter-spacing:.38em;color:#9baac1}
.arcade-marquee>b{display:block;font-size:28px;letter-spacing:-1px;margin-top:4px;background:linear-gradient(90deg,#fde29a,#ffa6ce,#c0adff,#96e9ff);background-clip:text;color:transparent}
.arcade-marquee>small{display:block;margin-top:7px;font-size:9px;letter-spacing:.12em;color:#a1b7ce}
#chance-banner{position:absolute;left:50%;top:126px;transform:translateX(-50%);pointer-events:none;text-align:center;padding:7px 19px;background:#362029e6;border:1px solid #f8aa6170;border-radius:10px;box-shadow:0 0 28px #ff84272a}
#chance-banner small{font-size:8px;letter-spacing:.22em;color:#ffbd74;display:block}
#chance-banner strong{font-size:19px;letter-spacing:.1em;color:#ffe2a8;text-shadow:0 2px 0 #7e392b}
#celebration.active{animation:jackpot-show 2.4s ease-out both}
.win-title{top:12%;transform:rotate(-3deg);filter:drop-shadow(0 8px 25px #0a061b)}
.win-title strong{font-size:clamp(58px,9vw,115px);font-weight:950;font-style:normal;letter-spacing:-.09em;line-height:1.2;background:linear-gradient(180deg,#fffbd4 8%,#ffe577 34%,#f9ae49 56%,#fff4b0 75%,#d58920 96%);background-clip:text;-webkit-text-stroke:1px #ffd575;filter:drop-shadow(3px 3px 0 #77391a) drop-shadow(-2px -2px 0 #ffffff) drop-shadow(0 0 22px #ff964d90);transform-origin:50% 60%}
.active .win-title strong{animation:jackpot-punch .65s cubic-bezier(.15,1.5,.3,1) both}
.win-title small{font-size:13px;letter-spacing:.2em;color:#e4d2ff}
.win-title b{display:block;font-size:37px;letter-spacing:-1px;color:#fff7cd;text-shadow:0 3px 0 #6f3d1d,0 0 20px #ffbd34}
.win-title>span{display:block;margin-top:4px;font-size:13px;letter-spacing:.09em;color:#f6ebff}
.jackpot-border{position:absolute;inset:8px;border:4px solid transparent;border-radius:14px;background:linear-gradient(#0000,#0000) padding-box,linear-gradient(125deg,#ff487d,#ffc93b,#81ffe7,#6971ff,#f777ff) border-box;mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);mask-composite:exclude;opacity:.7;box-shadow:0 0 25px #b27aff}
.active .speed-rays{animation:rays-expand 1s ease-out both}
.rainbow-aura{background:conic-gradient(from 80deg,#fa3b8270,#ffbb4a45,#ffeb4b45,#63ff9345,#61dfff55,#9d83ff55,#fa3b8270)}
@keyframes jackpot-show{0%{opacity:0;transform:scale(.95)}8%{opacity:1;transform:scale(1.01)}20%{transform:scale(1)}75%{opacity:1}100%{opacity:0}}
@keyframes jackpot-punch{0%{transform:scale(.3) rotate(-7deg)}38%{transform:scale(1.15) rotate(2deg)}70%{transform:scale(.97)}100%{transform:scale(1)}}
@keyframes rays-expand{from{transform:scale(.7);opacity:.2}to{transform:scale(1.12);opacity:.9}}
.rank-columns{display:flex;justify-content:space-between;color:#94adc6;font-size:10px;padding:8px 0;border-bottom:1px solid #ffffff20;margin-top:13px}
#rank-list{margin-top:8px}#rank-play{width:100%;margin-top:9px;min-height:44px}
#rank-list li::before{font-weight:800;font-size:14px}#rank-list li:first-child::before{content:'♛';font-size:20px}#rank-list li:nth-child(2)::before{color:#c6d5e8}#rank-list li:nth-child(3)::before{color:#dab597}
#rank-list li:first-child{background:linear-gradient(90deg,#efd3720d,#efd37200)}
.settings-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:14px 0;border-bottom:1px solid #ffffff13;font-size:12px}
.settings-row input{width:55%;accent-color:#8cecde}.settings-row button{min-width:78px;min-height:44px}
#sound-preview{width:100%;margin-top:18px;min-height:44px}
.welcome-card{z-index:1}.welcome h2{font-size:32px}.welcome p{font-size:11px}
@media(max-width:1050px) and (min-width:701px){.dock{grid-template-columns:minmax(350px,480px) 1fr;gap:7px 14px;padding-left:20px;padding-right:20px}.utility-row button{font-size:10px;padding:8px}}
@media(max-width:700px){
  .app{grid-template-rows:calc(146px + env(safe-area-inset-top)) minmax(0,1fr) calc(216px + env(safe-area-inset-bottom))}
  .topbar{display:grid;grid-template-columns:1fr;grid-template-areas:"brand" "score" "nav";gap:6px;padding:calc(8px + env(safe-area-inset-top)) 14px 8px;align-content:center}
  .logo{grid-area:brand;justify-content:center;gap:7px}.logo small{font-size:6px}.logo h1{font-size:19px}.logo-mark{height:28px}
  .scoreboard{grid-area:score;justify-content:center;gap:30px;order:unset}.scoreboard small{font-size:8px}.scoreboard .score-main strong{font-size:23px}.scoreboard strong{font-size:18px}
  .topbar nav{grid-area:nav;display:grid;grid-template-columns:1fr 1fr;gap:8px}.topbar nav .subtle{justify-content:center;min-height:44px;font-size:13px;padding:7px;border-radius:9px}.topbar nav span{display:inline;font-size:11px;font-weight:650}
  .dock{display:grid;grid-template-columns:1fr;grid-template-rows:44px 70px 66px;grid-template-areas:"targets" "launch" "extras";gap:6px;padding:9px 10px calc(9px + env(safe-area-inset-bottom))}
  .target-controls{gap:5px}.target-controls>small{font-size:9px}.target-controls button{font-size:10px;min-height:44px;border-radius:7px}
  .launcher-button{padding:11px 10px}.launcher-button small{font-size:7px;letter-spacing:.02em}.launcher-button strong{font-size:16px}.both-button{min-width:75px;padding:7px}.both-button b{font-size:11px}.both-button small{font-size:7px}
  .dock-extras{align-self:stretch}.utility-row{margin:0;display:grid;grid-template-columns:1.2fr 1fr .9fr 1.1fr;gap:5px}.utility-row button{min-height:44px;font-size:10px;padding:7px 4px;white-space:nowrap}.dock-extras p{font-size:8px;text-align:center;margin-top:3px;line-height:1.3}.rules-link{display:none}
  .field-heading{top:11px;font-size:7px}.arcade-marquee{top:34px}.arcade-marquee b{font-size:25px;white-space:nowrap}.arcade-marquee>span{font-size:7px}.arcade-marquee>small{font-size:8px}
  #chance-banner{top:107px;padding:5px 13px}.field-bottom{font-size:8px;bottom:8px}.field-bottom #hint{max-width:100%;line-height:1.4}
  #tower-labels{display:none}.welcome{padding:12px}.welcome-card{max-width:330px;padding:16px}.welcome h2{font-size:27px;margin:9px 0}.welcome p{font-size:10px;margin-bottom:10px}.welcome .mini-note{font-size:8px}#play{font-size:13px;letter-spacing:.06em;min-height:44px}
  .mode-options button{min-height:52px}.win-title{top:24%}.win-title strong{font-size:70px;letter-spacing:-.09em}.win-title small{font-size:9px}.win-title b{font-size:29px}.win-title>span{font-size:11px}.jackpot-border{inset:5px;border-width:3px;border-radius:11px}
  dialog{padding:20px;max-height:88dvh}.dialog-top button{width:44px;height:44px;flex-basis:44px}.result-actions>*{min-height:44px}.result-stats{font-size:11px}
}
@media(max-height:740px) and (max-width:700px){.arcade-marquee{top:27px}.arcade-marquee b{font-size:20px}.arcade-marquee>small{display:none}.welcome-card{padding:12px}.welcome h2{font-size:23px}.welcome p{font-size:9px;line-height:1.5}.pill{font-size:6px}.welcome .mini-note{font-size:7px}.mode-options button{min-height:44px;padding:7px}#play{margin-top:7px}.win-title strong{font-size:60px}.win-title{top:17%}}
@media(prefers-reduced-motion:reduce){.active .win-title strong{animation:none}.active .speed-rays{animation:none}.jackpot-border{opacity:.35}}

/* v4: anticipation -> spring impact -> rainbow payout. No rapid strobing. */
.playfield.is-chance{box-shadow:inset 0 0 85px #ff902a35}
.is-chance #chance-banner{border-color:#ffde88;box-shadow:0 0 38px #ff982e65}
.is-chance #chance-banner strong{font-size:25px;color:#fff4b2}
#celebration.active{animation:rainbow-payoff 3.4s ease-out both}
.win-title{top:13%;transform:rotate(-3deg)}
.lucky-sevens{display:flex;justify-content:center;gap:8px;margin:0 0 7px}
.lucky-sevens span{display:block;font:italic 950 clamp(38px,5.5vw,70px)/1 system-ui;color:#fff0a3;text-shadow:0 3px 0 #923521,0 0 20px #ffba28;border:2px solid #ffdd78;border-radius:12px;padding:3px 16px;background:linear-gradient(140deg,#8b244ac7,#341766e8);box-shadow:inset 0 0 15px #ffe18a55,0 0 15px #ff589044}
.active .lucky-sevens span{animation:seven-drop .48s cubic-bezier(.18,1.35,.3,1) both}
.active .lucky-sevens span:nth-child(2){animation-delay:.1s}.active .lucky-sevens span:nth-child(3){animation-delay:.2s}
.win-title strong{font-size:clamp(65px,10vw,132px);background:linear-gradient(110deg,#fffabe,#ffcc45,#ff789f,#c6a3ff,#8efaff,#abffb0,#fffabe);background-size:220% 100%;-webkit-text-stroke:1px #fff4b3;filter:drop-shadow(3px 4px 0 #79301d) drop-shadow(-2px -2px 0 #fff5d7) drop-shadow(0 0 28px #ffbb7670)}
.active .win-title strong{animation:jackpot-punch .65s .12s cubic-bezier(.15,1.5,.3,1) both,rainbow-letter-flow 3s .7s linear infinite}
.win-title b{font-size:clamp(31px,5vw,57px)}
.active .win-title b{animation:score-slam .55s .36s cubic-bezier(.1,1.3,.4,1) both}
.active .rainbow-aura{opacity:.9;animation:auraspin 3.4s linear both}
.speed-rays{background:repeating-conic-gradient(from 15deg at 50% 55%,transparent 0deg 7deg,#ffe9aa35 8deg 9deg,transparent 10deg 16deg,#f9b8ff28 17deg 18deg);mask-image:radial-gradient(ellipse,transparent 15%,black 95%)}
.active .speed-rays{animation:rays-expand .6s ease-out both}
.shock-ring{position:absolute;left:50%;top:50%;width:100px;height:100px;border:8px solid #ffe889;border-radius:50%;opacity:0;box-shadow:0 0 18px #ff86f9,inset 0 0 18px #91ffff;transform:translate(-50%,-50%);pointer-events:none}
.active .shock-ring{animation:shock-expand 1.05s ease-out both}.active .shock-ring.second{animation-delay:.22s;border-color:#baf8ff}
.jackpot-border{border-width:6px;opacity:.9}
.rush-ribbon{position:absolute;bottom:13%;left:-4%;right:-4%;text-align:center;padding:10px;background:linear-gradient(100deg,#ce377bde,#6435acde,#2d9dadde);border-top:2px solid #ffef9d;border-bottom:2px solid #ffef9d;transform:rotate(-3deg);font-size:clamp(20px,3vw,36px);font-weight:900;letter-spacing:.4em;color:#fff3bc;text-shadow:2px 2px 0 #63293d}
.rush-ribbon span{display:block;font-size:9px;letter-spacing:.2em;color:#eaf4ff;margin-top:2px}
.active .rush-ribbon{animation:ribbon-slide .55s .5s cubic-bezier(.2,1.2,.4,1) both}
.screen-particles{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.screen-particles i{position:absolute;left:var(--x);top:-40px;display:grid;place-items:center;font-style:normal;will-change:transform;opacity:0}
.screen-coin{width:25px;height:25px;border-radius:50%;border:2px solid #fff1a6;background:radial-gradient(circle at 30% 30%,#fffbe5,#ffdf75 25%,#d58714 80%);color:#ab6c1b;font-size:14px;box-shadow:0 0 12px #ffb73c88}
.screen-star{color:#fff4bd;font-size:33px;filter:hue-rotate(var(--hue));text-shadow:0 0 15px #fff3bd}
.active .screen-particles i{animation:screen-shower 2.6s var(--delay) cubic-bezier(.25,.1,.65,1) both}
.super-win .lucky-sevens span{border-color:#bafaff;background:linear-gradient(135deg,#cc3988,#6248b7,#288d96)}
.super-win .rush-ribbon{background:linear-gradient(100deg,#ff2d80e8,#dd843ae8,#388e8ee8,#6832c4e8)}
@keyframes rainbow-payoff{0%{opacity:0;transform:scale(.94)}6%{opacity:1;transform:scale(1.018)}16%{transform:scale(1)}77%{opacity:1}100%{opacity:0}}
@keyframes seven-drop{from{opacity:0;transform:translateY(-90px) rotate(-12deg) scale(.65)}65%{opacity:1;transform:translateY(8px) rotate(3deg) scale(1.08)}to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}
@keyframes rainbow-letter-flow{to{background-position:220% 0}}
@keyframes score-slam{from{opacity:0;transform:translateY(40px) scale(.5)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes shock-expand{0%{opacity:.75;transform:translate(-50%,-50%) scale(.2)}100%{opacity:0;transform:translate(-50%,-50%) scale(9)}}
@keyframes ribbon-slide{from{opacity:0;transform:translateX(-100%) rotate(-3deg)}to{opacity:1;transform:translateX(0) rotate(-3deg)}}
@keyframes screen-shower{0%{opacity:0;transform:translateY(0) rotate(0)}8%{opacity:1}85%{opacity:1}100%{opacity:0;transform:translateY(680px) rotate(var(--spin))}}
.low-fx .lucky-sevens,.low-fx .screen-particles,.low-fx .shock-ring,.low-fx .rush-ribbon{display:none}
.low-fx .win-title{top:22%}.low-fx .win-title strong,.low-fx .win-title b{animation:none}.low-fx .jackpot-border{opacity:.35}.low-fx #celebration.active{animation:rainbow-payoff 1.8s ease-out both}
@media(max-width:700px){.win-title{top:17%}.lucky-sevens{gap:5px}.lucky-sevens span{font-size:40px;padding:3px 12px;border-radius:9px}.win-title strong{font-size:clamp(54px,17vw,72px)}.win-title small{font-size:9px}.win-title b{font-size:33px}.rush-ribbon{bottom:12%;font-size:22px;padding:7px;letter-spacing:.24em}.win-title>span{font-size:10px}.jackpot-border{border-width:4px}.is-chance #chance-banner strong{font-size:22px}}
@media(max-width:700px) and (max-height:740px){.win-title{top:12%}.lucky-sevens span{font-size:29px;padding:2px 12px}.win-title strong{font-size:50px}.win-title b{font-size:27px}.rush-ribbon{bottom:8%;font-size:18px;padding:4px}.win-title>span{margin-top:0}.lucky-sevens{margin-bottom:4px}}
@media(prefers-reduced-motion:reduce){.active .win-title strong,.active .win-title b,.active .lucky-sevens span,.active .rush-ribbon{animation:none}.screen-particles,.shock-ring{display:none}}
@media(max-width:700px){.launcher-button strong{font-size:14px;white-space:nowrap;gap:3px}.launcher-button strong span{font-size:14px}.both-button b{font-size:10px}}
.win-title strong{background-clip:text;-webkit-background-clip:text;color:transparent}
.tower-label.hard{border-color:#ffd36caa;color:#ffe6a9;box-shadow:0 0 18px #ffb84c55}.tower-label.hard i{background:linear-gradient(90deg,#ffd36b,#ff7bbd)}
.app{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.app input,.app textarea,.app [contenteditable=true]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
