/* Shared 400 px controls. Portrait phones fill the width and adapt cinema height. */
html,body{position:fixed;inset:0;width:100%;height:100%;min-width:0;min-height:0;margin:0;padding:0;overflow:hidden;overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
#app{position:fixed;inset:0;width:100%;height:100%;min-height:0;padding:0;display:block;overflow:hidden}
.safe-viewport-probe{position:fixed;top:0;left:0;height:100svh;width:0;box-sizing:border-box;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);visibility:hidden;pointer-events:none}
.desktop-mark,.desktop-side{display:none}
.game-viewport{position:absolute;inset:0;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}
.game-design{position:absolute;left:0;top:0;width:400px;height:var(--game-height,676px);transform-origin:0 0;visibility:hidden}
.game-design[data-fitted=true]{visibility:visible}
.game-design .cabinet{position:relative;width:400px;height:var(--game-height,676px);min-height:0;max-height:none;display:grid;grid-template-rows:40px var(--stage-height,225px) 411px;gap:0;border:0;border-radius:5px;overflow:hidden;padding:0;margin:0}
.game-design .topbar{width:400px;height:40px;min-height:0;padding:0 10px;gap:4px}
.game-design .brand{font-size:18px;line-height:1;letter-spacing:.2px}
.game-design .brand-glyph{width:22px;height:22px;font-size:22px;margin-right:6px}
.game-design .top-actions{gap:3px}
.game-design .top-actions .icon-button{width:32px;height:34px;padding:6px}
.game-design .top-actions .icon-button svg{width:19px;height:19px}
.game-design .stage{width:400px;height:var(--stage-height,225px);min-height:0;flex:none;aspect-ratio:auto}
.game-design .hero-video{object-fit:contain;object-position:center}
.game-design .hero-art{width:100%;height:100%;inset:0;object-position:center;object-fit:contain}
.game-design .play-area{width:400px;height:411px;padding:0;display:grid;grid-template-rows:32px 235px 144px;gap:0;min-height:0}
.game-design .fever-meter{height:32px;min-height:0;margin:0;padding:4px 16px 3px}
.game-design .fever-meter-heading{font-size:11px;line-height:15px;white-space:nowrap}
.game-design .fever-meter-heading strong{font-size:14px;line-height:15px}
.game-design .fever-meter-heading b{font-size:13px}
.game-design .fever-track{height:3px;margin:5px 0 0}
.game-design .fever-caption{display:none}
.game-design .reel-frame{width:400px;height:235px;min-height:0;max-height:235px;margin:0;padding:0;aspect-ratio:auto}
.game-design .reels{inset:28px 32px;gap:2px;aspect-ratio:auto}
.game-design .payline-overlay{inset:28px 32px}
.game-design .symbol-tag{font-size:9px}
.game-design .machine-console{position:relative;display:block;width:400px;height:144px;min-height:0;margin:0;padding:0;gap:0;isolation:isolate}
.game-design .machine-console:before{inset:4px 0;background-size:100% 100%;}
.game-design .console-screen{position:absolute;left:30px;top:25px;width:340px;height:22px;min-height:0;margin:0;display:block}
.game-design .machine-console .wallet{display:grid;grid-template-columns:1fr 1fr;gap:14px;width:340px;height:22px;margin:0;padding:0}
.game-design .machine-console .wallet>div{display:flex;align-items:center;justify-content:space-between;gap:5px;min-width:0;height:22px}
.game-design .machine-console .wallet>div+div{padding-left:10px;border-left:1px solid #49adc455}
.game-design .machine-console .wallet span{font:500 10px/1.1 'Noto Sans TC',sans-serif;letter-spacing:0;flex:0 0 auto;white-space:nowrap}
.game-design .machine-console .wallet strong{font-family:'Barlow Condensed',sans-serif;font-size:clamp(12px,calc(168px / var(--digits,7)),24px);font-weight:800;line-height:1;letter-spacing:0;white-space:nowrap;min-width:0;text-align:right}
.game-design .machine-console .credit-add{width:24px;height:24px;min-height:0;padding:4px;border-radius:5px;flex:0 0 24px}
.game-design .credit-add svg{width:17px;height:17px}
.game-design .machine-console .controls{position:absolute;left:26px;top:56px;width:348px;height:60px;min-height:0;display:grid;grid-template-columns:74px 168px 74px;gap:16px;align-items:stretch;padding:0;margin:0}
.game-design .machine-console .bet-control{width:74px;height:60px;min-height:0;max-height:60px;gap:3px;padding:2px 0;background:transparent;border:0;box-shadow:none}
.game-design .machine-console .bet-control>span{font:500 11px/1 'Noto Sans TC',sans-serif;letter-spacing:0}
.game-design .machine-console .bet-control>strong{font:800 25px/1 'Barlow Condensed',sans-serif}
.game-design .machine-console .bet-adjust-mark{display:flex;justify-content:center;gap:14px}
.game-design .bet-adjust-mark svg{width:13px;height:13px}
.game-design .spin-well{width:168px;height:60px}
.game-design .machine-console .spin-button{width:168px;height:60px;min-height:0;padding:0;background-size:contain!important}
.game-design .machine-console .spin-button>span{font:900 36px/1 'Barlow Condensed',sans-serif;letter-spacing:1px}
.game-design .console-modes{grid-template-rows:28px 28px;gap:4px}
.game-design .console-modes .turbo-button,.game-design .console-modes .mode-button{width:74px;height:28px;min-height:0;padding:2px;gap:3px;font:800 12px/1 'Barlow Condensed',sans-serif;letter-spacing:0;flex-direction:row;white-space:nowrap}
.game-design .console-modes .turbo-button svg{width:18px;height:18px}
.game-design .console-modes .mode-button svg{width:17px;height:17px}
.game-design .win-overlay{inset:auto 36px 31px;height:42px;padding:5px;gap:6px}
.game-design .win-overlay b{font-size:36px;line-height:1}
.game-design .combo-callout,.game-design .combo-callout.fever-announcement{inset:28px 32px;padding:8px 10px}
.game-design .combo-callout>strong,.game-design .combo-callout:not(.fever-announcement)>strong{font-size:23px;line-height:1.3}
.game-design .combo-callout>span{font-size:9px;line-height:1.2;letter-spacing:1px}
.game-design .combo-callout>b{font-size:30px;line-height:1.25}
.game-design .combo-callout>small{font-size:11px;line-height:1.3;margin-top:6px}
.game-design .browser-clearance{display:none}
/* The page is locked. Long rules/settings scroll only within the top-layer dialog. */
dialog{position:fixed;inset:auto;left:var(--dialog-left,10px);top:var(--dialog-top,10px);width:380px;max-width:none;min-width:0;max-height:var(--dialog-height,700px);margin:0;padding:18px;transform:scale(var(--dialog-scale,1));transform-origin:0 0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none;touch-action:pan-y;-webkit-overflow-scrolling:touch}
dialog .dialog-heading{position:sticky;top:-18px;z-index:2;padding-top:4px;background:#0d1e2a}
dialog input,dialog select{font-size:16px}
dialog input[type=range]{touch-action:none}
dialog .icon-button{width:36px;height:38px}


.game-design .spin-button.skip-ready{opacity:1;cursor:pointer;filter:brightness(1.12)}
.game-design .cabinet.presentation-skippable .reel-frame{cursor:pointer}
.game-design .win-overlay.visible{transition:none}
.game-design .combo-callout.visible{transition-duration:80ms}
.game-design .cabinet.presentation-skippable{cursor:pointer}
/* Keep expensive work limited to short awards; static glows retain the machine artwork. */
.game-design .moving .symbol-art{filter:none;transform:none;opacity:.8}
.game-design .symbol-cell{contain:layout style}
.game-design .winning .symbol-art{animation:none}
.game-design .fever-active .reel-frame:after{animation:none}
.game-design .machine-console.auto-running:after{animation:none}
.game-design .fever-intro .reel-frame:after{animation:fever-border 1.2s ease-in-out 1}
.game-design .visual-paused *,.game-design .visual-paused:before,.game-design .visual-paused:after{animation-play-state:paused!important}
.game-design .auto-control-row{display:grid;grid-template-columns:42px 28px;gap:4px}
.game-design .console-modes .auto-control-row .mode-button{width:42px;font-size:11px;padding:1px;letter-spacing:0}
.game-design .settings-button{display:grid;place-items:center;width:28px;height:28px;padding:4px;background:#143340;border:1px solid #4e8c9b;border-radius:5px;color:#cafffa}
.game-design .settings-button svg{width:18px;height:18px}
.settings-dialog{padding:14px;overflow:hidden;height:min(620px,var(--dialog-height,620px))}
.settings-dialog[open]{display:flex;flex-direction:column;gap:0}
.settings-dialog .dialog-heading{position:static;flex-shrink:0;min-height:36px;margin:0 0 10px;padding:0}
.settings-dialog .dialog-heading h2{font-size:22px}
.settings-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 0 10px;flex-shrink:0}
.settings-tabs button{height:36px;background:#132e3d;border:1px solid #466979;color:#aec9d2;border-radius:5px;font:600 14px/1 'Noto Sans TC',sans-serif}
.settings-tabs button[aria-selected=true]{color:#e9fffa;background:#175055;border-color:#77e8dc}
.settings-panel{display:flex;flex:1;min-height:0}
.settings-panel[hidden]{display:none!important}
.settings-panel form{display:flex;flex-direction:column;flex:1;min-height:0;margin:0}
.settings-scroll{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:0 3px 12px}
.settings-footer{flex-shrink:0;padding-top:10px;border-top:1px solid #426171}
.settings-footer .primary-dialog-button{height:42px;margin:0}
.settings-panel .track-title{margin:8px 0 12px;padding:10px}
.settings-panel .volume-field{margin:12px 0}
.settings-panel .check-row{margin:10px 0}
.settings-panel .setting-hint{font-size:12px;line-height:1.5}
