:root{color-scheme:dark;--ink:#fff0ca;--gold:#ebbe60;--muted:#bca58a;--red:#a91220;--line:rgba(238,187,93,.32);font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-synthesis:none}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;-webkit-text-size-adjust:100%;touch-action:none}body{position:fixed;inset:0;background:radial-gradient(ellipse at 50% 36%,#4a2117 0,#190b09 49%,#080606 90%);color:var(--ink);min-height:100dvh}button,input{font:inherit}button{cursor:pointer;color:inherit;border:0;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible,input:focus-visible{outline:3px solid #fff1a6;outline-offset:3px}button:disabled{opacity:.42;cursor:default}button:active:not(:disabled){filter:brightness(1.15)}[hidden]{display:none!important}#viewport{position:fixed;inset:0;display:flex;justify-content:center;align-items:center;width:100vw;height:100dvh;min-height:0;overflow:hidden;overscroll-behavior:none;touch-action:none;padding:max(env(safe-area-inset-top),8px) max(env(safe-area-inset-right),6px) max(env(safe-area-inset-bottom),8px) max(env(safe-area-inset-left),6px)}#game{position:relative;width:420px;height:860px;flex:none;transform-origin:top left;overflow:hidden;border:1px solid #6a4027;border-radius:26px;background:radial-gradient(ellipse at 50% 24%,#4e1a10 0,transparent 54%),linear-gradient(100deg,#1e0f0c,#301510 50%,#1e0f0c);box-shadow:0 20px 100px #000b,inset 0 0 0 5px #1a0c09,inset 0 0 0 6px #684328,inset 0 0 44px #000a}#topbar{position:absolute;left:22px;top:16px;width:376px;height:44px;display:flex;align-items:center;justify-content:space-between}.icon-button{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:linear-gradient(#40261c,#1e110d);font-size:25px;display:grid;place-items:center}.icon-button span{line-height:1}.hall-brand{font-family:Georgia,serif;font-size:22px;letter-spacing:3px;color:var(--gold);font-weight:700;display:flex;align-items:center;gap:10px}.hall-brand span{font-family:system-ui;font-size:13px;letter-spacing:2px;font-weight:400;color:#d7b999;border-left:1px solid #86633d;padding-left:11px}#masthead{position:absolute;left:24px;top:76px;width:372px;height:82px;text-align:center;display:flex;align-items:flex-start;justify-content:center;gap:12px;flex-wrap:wrap}h1{margin:0;font-size:36px;letter-spacing:3px;line-height:54px;color:#f9d483;text-shadow:0 2px #6d2d14,0 3px #210a06,0 0 26px #a56b3333;font-family:"Songti SC","STSong",serif;font-weight:900}h1 span{font-family:Georgia,serif;font-size:56px;font-style:italic;letter-spacing:-3px;margin-left:9px;background:linear-gradient(#fff4b7,#cb8f35 50%,#ffdf8f);-webkit-background-clip:text;background-clip:text;color:transparent}.brand-rule{height:1px;width:22px;background:var(--gold);margin-top:30px}#masthead p{margin:0;width:100%;letter-spacing:5px;font-size:12px;color:#c09b75;line-height:18px}#jackpot{position:absolute;left:26px;top:165px;width:368px;height:122px;border:2px solid #f0c476;border-radius:12px;background:radial-gradient(ellipse at center,#b62220,#6a0e13 80%);box-shadow:0 0 0 3px #5c2e15,0 0 0 4px #e0a64f,inset 0 0 0 3px #611c14,inset 0 0 35px #360307;overflow:hidden}.jackpot-top{display:flex;justify-content:space-between;align-items:center;margin:12px 14px 0;font-size:14px;letter-spacing:3px}.jackpot-tag{font-size:11px;letter-spacing:0;border:1px solid #e6af5766;border-radius:10px;padding:2px 8px;color:#ffe4a0}#jackpot-value{font:700 40px/50px Georgia,serif;text-align:center;letter-spacing:2px;color:#fff4b2;text-shadow:0 3px #67240b,0 0 20px #ffdc7755;font-variant-numeric:tabular-nums}.jackpot-bottom{display:flex;justify-content:center;align-items:center;gap:11px;font-size:12px;color:#efc79f;letter-spacing:1px}.jackpot-bottom i{width:22px;height:1px;background:#d19954}#round-message{position:absolute;left:28px;top:296px;width:364px;height:28px;display:grid;place-items:center;font-size:14px;color:#edca91;white-space:nowrap}#cabinet{position:absolute;left:20px;top:333px;width:380px;height:302px;border:3px solid #a3682f;border-radius:15px;background:linear-gradient(90deg,#a16324,#f5d994 12%,#9d5e20 18%,#ffe9aa 46%,#aa6c2f 78%,#e9bc6f 94%,#9b5f24);padding:26px 7px 22px;box-shadow:0 0 0 2px #170706,0 0 0 3px #e0b16a,inset 0 0 0 2px #fff0bf,0 10px 20px #0008}.cabinet-rail{position:absolute;left:9px;right:9px;top:3px;height:20px;background:linear-gradient(#29130e,#522618);display:flex;align-items:center;justify-content:space-between;padding:0 12px;border-radius:6px 6px 0 0;font-size:10px;letter-spacing:2px;color:#f0c47a}#free-info{color:#fff3a9;letter-spacing:0}#reel-window{height:246px;position:relative;overflow:hidden;border:2px solid #4c2413;background:#f7eacb;box-shadow:inset 0 0 12px #40200d;border-radius:5px}#reels{display:flex;height:100%;position:relative}.reel{width:20%;height:100%;position:relative;overflow:hidden;border-right:2px solid #98663d;background:linear-gradient(#c5ad85,#fff6de 17%,#fff7e5 50%,#fff1d5 85%,#c5ab81)}.reel:last-child{border-right:0}.reel::after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 10px 12px -9px #402613aa,inset 0 -10px 12px -9px #402613aa}.reel-strip{position:absolute;left:0;top:0;width:100%;will-change:transform}.symbol-cell{height:80.667px;width:100%;display:grid;place-items:center;position:relative}.symbol-cell img{width:91%;height:91%;object-fit:contain;filter:drop-shadow(0 2px 1px #58321822);pointer-events:none}.symbol-cell.winner::after{content:"";position:absolute;inset:3px;border:2px solid #ffba26;border-radius:9px;box-shadow:inset 0 0 12px #ffb21755,0 0 10px #ffac31;animation:win-pulse 800ms ease-in-out infinite alternate}.reel.spinning img{filter:blur(.6px);opacity:.9}#line-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.cabinet-foot{position:absolute;bottom:2px;left:12px;right:12px;height:17px;display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:3px;color:#522613}.cabinet-foot span:first-child,.cabinet-foot span:last-child{font-size:8px;color:#fff0ab;text-shadow:0 0 4px #ff8b00}#score-panel{position:absolute;left:28px;top:647px;width:364px;height:59px;display:flex;border:1px solid #775032;border-radius:9px;background:linear-gradient(#1e110d,#130b09);box-shadow:inset 0 2px 7px #0008}#score-panel>div{width:50%;text-align:center;display:flex;flex-direction:column;justify-content:center;gap:3px}#score-panel>div+div{border-left:1px solid #755031}label{font-size:11px;color:#bba388;letter-spacing:2px}#currency{font-size:10px;letter-spacing:0}#score-panel strong{font:700 23px/27px Georgia,serif;color:#f6d692;font-variant-numeric:tabular-nums}#score-panel>div+div strong{color:#fff2c4}#bet-controls{position:absolute;left:122px;top:718px;width:176px;height:45px;display:flex;gap:5px;align-items:center}.square-button{width:40px;height:40px;flex:none;border-radius:8px;border:1px solid #aa7841;background:linear-gradient(#4a2f20,#27170f);font-size:23px}#bet-display{width:86px;height:45px;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0}#bet-display span{font-size:11px;color:#c0a081}#bet-display strong{font-size:19px;line-height:22px;font-variant-numeric:tabular-nums}#bet-display small{font-size:9px;color:#bba388}#play-controls{position:absolute;left:38px;top:720px;width:344px;height:94px;display:flex;align-items:flex-end;justify-content:space-between;pointer-events:none}#play-controls button{pointer-events:auto}.side-button{width:67px;height:68px;border:1px solid #997044;border-radius:12px;background:linear-gradient(#503527,#21150f);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;box-shadow:0 3px 0 #080605}.side-button>span{font-size:26px;line-height:29px;color:#edc787}.side-button b{font-size:12px;letter-spacing:2px;font-weight:500}.side-button.active{border-color:#ffe993;box-shadow:0 0 15px #d8973e66}#spin{position:absolute;left:91px;top:50px;width:162px;height:54px;background:linear-gradient(#f14637,#b90f1c 45%,#750514);border:2px solid #f1c273;border-radius:32px;box-shadow:0 0 0 2px #62321b,0 5px 0 #4a170c,inset 0 1px 3px #ffc191;text-align:center;text-shadow:0 1px #730a0e;display:flex;align-items:center;justify-content:center;gap:9px}.spin-label{font-size:22px;letter-spacing:5px;font-weight:750}#spin small{font-size:10px;letter-spacing:2px;writing-mode:vertical-rl;line-height:10px;color:#ffe4b0}#player-bar{position:absolute;left:28px;top:830px;width:364px;height:21px;display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#bca388}#profile{padding:0;display:flex;align-items:center;gap:6px;background:none;font-size:10px;min-width:110px;max-width:235px}#avatar{width:20px;height:20px;border-radius:50%;background:#9a6129;border:1px solid #e4b15a;display:grid;place-items:center;overflow:hidden;font-size:10px}#avatar img{width:100%;height:100%;object-fit:cover}#nickname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}#vip{color:#eac15f}#support{background:none;color:#ddbe96;font-size:11px;padding:5px 0 5px 12px;min-height:30px}#mode-badge{border:1px solid #6e5232;padding:1px 6px;border-radius:3px;font-size:9px}#loader{position:absolute;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(#642515,#190c09 70%);gap:17px}#loader img{border-radius:25px;box-shadow:0 12px 50px #0008}#loader h2{font-family:serif;font-size:32px;margin:10px 0 0;color:#f4cc79}#loader p{font-size:14px;color:#d0b296;margin:0}.progress-track{height:8px;border:1px solid #987045;width:240px;background:#140804;border-radius:8px;overflow:hidden}#progress-fill{width:0;height:100%;background:linear-gradient(90deg,#bc6e23,#ffe8a1);box-shadow:0 0 8px #e4b551}#progress-number{font:20px Georgia,serif}#celebration{position:absolute;inset:335px 22px auto;height:300px;z-index:20;background:radial-gradient(#8f140df0,#270505ee);border:3px solid #f6d177;box-shadow:inset 0 0 50px #e3a32355,0 0 25px #efc35355;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;pointer-events:none}.award-mark{font:900 38px "Songti SC",serif;color:#ffe395;text-shadow:0 2px #602309}#award-value{font:700 43px Georgia,serif;color:#fff2bf}#celebration>span{font-size:14px;color:#e7be87;letter-spacing:3px}dialog{width:min(94vw,440px);max-height:85dvh;border:1px solid #b28549;border-radius:18px;background:linear-gradient(#352018,#1c110d);padding:0;color:var(--ink);box-shadow:0 25px 100px #000c}dialog::backdrop{background:#080403c9;backdrop-filter:blur(5px)}.dialog-head{position:sticky;top:0;background:#332018;display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--line);z-index:2}.dialog-head h2{margin:0;font-size:19px;color:#f2cc89}.dialog-head button{width:34px;height:34px;font-size:24px}#dialog-content{padding:18px;font-size:14px;line-height:1.8}#dialog-content p{margin:0 0 14px}#dialog-content h3{font-size:15px;color:#f4cf8c;margin:20px 0 8px}.menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.menu-grid button,.bet-list button,.auto-list button{background:#4c3020;color:#f6d79e;border:1px solid #85603a;border-radius:8px;min-height:47px;padding:8px}.gold-button{background:linear-gradient(#f2d794,#bd843c);color:#2a160c;border:1px solid #ffe6ad;border-radius:9px;padding:11px 20px;font-weight:650;min-height:43px}.outline-button{background:transparent;color:#d7b789;border:1px solid #82613a;border-radius:8px;padding:10px 16px}.dialog-actions{display:flex;gap:12px;justify-content:center;margin-top:18px}.setting-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:16px}.setting-row input[type=range]{width:170px;accent-color:#dba64e}.setting-row input[type=checkbox]{accent-color:#bd872f;width:24px;height:24px}.paytable{width:100%;border-collapse:collapse;font-size:13px;text-align:center}.paytable td,.paytable th{padding:7px 4px;border-bottom:1px solid #69482b}.paytable img{height:43px;width:47px;object-fit:contain;vertical-align:middle}.paytable th{font-weight:400;color:#c8a474}.paytable .pay7{color:#ff8972}.lines-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}.line-card{background:#170d09;border:1px solid #624226;border-radius:6px;padding:6px;font-size:11px;color:#d7b283}.line-card svg{width:100%;display:block}.bet-list,.auto-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.bet-list button.selected{border-color:#ffdc7e;background:#784926}.history-item{padding:10px 0;border-bottom:1px solid #735332;font-size:12px;display:flex;justify-content:space-between;gap:10px}.history-item strong{color:#f5d284;font-size:15px}.subtle{color:#b59a80;font-size:12px}.status-error{color:#ffbd9e}.layout-panel label{display:block}.layout-panel input,.layout-panel select{width:100%;background:#1a100b;color:#ffe4b6;border:1px solid #8b633a;padding:6px;border-radius:5px}.layout-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.layout-outline{outline:1px dashed #00ffbf!important}#toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 30px);transform:translateX(-50%);z-index:200;background:#24170ff2;color:#ffe7b8;border:1px solid #ba8b4d;border-radius:10px;padding:12px 18px;width:max-content;max-width:90vw;text-align:center;font-size:14px}#orientation-note{position:fixed;inset:0;z-index:210;background:#1c0c09ef;display:grid;place-items:center;text-align:center;font-size:20px;color:#f4d39a}@keyframes win-pulse{to{filter:brightness(1.35);opacity:.65}}@media(prefers-reduced-motion:reduce){.symbol-cell.winner::after{animation:none}}@media(max-width:340px){dialog{width:96vw}#dialog-content{padding:12px}}@media(min-width:750px){#viewport{padding-top:24px;padding-bottom:24px}}
#masthead p{position:absolute;top:65px;left:0;line-height:14px;height:14px;letter-spacing:3px}
h1 span{text-shadow:none}
/* 按安全区域等比适配舞台，保留按钮、转轴与框架的共同坐标。 */
html,body{width:100%;height:100%;overflow:hidden;overscroll-behavior:none}
body{min-height:0}
#viewport{position:fixed;inset:0;min-height:0;height:var(--view-height,100dvh);padding:max(env(safe-area-inset-top),8px) max(env(safe-area-inset-right),8px) max(env(safe-area-inset-bottom),8px) max(env(safe-area-inset-left),8px);align-items:flex-start;overflow:hidden}
dialog{position:fixed;top:var(--usable-top,8px);bottom:var(--bottom-gap,8px);margin:auto;max-height:var(--usable-height,calc(100dvh - 16px));overscroll-behavior:contain}
#toast{bottom:calc(var(--bottom-gap,8px) + 12px)}

/* 指定顶部布局修正 */
#player-bar{position:absolute;inset:0;width:auto;height:auto;display:block;pointer-events:none;font-size:10px}
#profile{position:absolute;left:76px;top:16px;width:44px;min-width:44px;max-width:44px;padding:0;display:flex;flex-direction:column;align-items:center;gap:1px;background:none;pointer-events:auto;overflow:visible}
#avatar{width:44px;height:44px;flex:none}
#nickname{position:absolute;top:46px;left:50%;transform:translateX(-50%);max-width:86px;width:max-content;text-align:center;line-height:14px}
#vip{display:none}
#mode-badge{position:absolute;left:98px;top:76px;width:max-content;max-width:none;padding:0;border:0;text-align:center;font-size:9px;line-height:12px;white-space:nowrap;overflow:visible;transform:translateX(-50%)}
#support{position:absolute;right:74px;top:16px;width:44px;height:44px;min-height:44px;padding:0;border:1px solid var(--line);border-radius:50%;background:linear-gradient(#40261c,#1e110d);display:grid;place-items:center;pointer-events:auto}
#topbar{justify-content:initial}
#back{position:absolute;left:0;top:0}
#menu{position:absolute;right:0;top:0}
.hall-brand{position:absolute;left:calc(50% - 1px);top:0;height:44px;transform:translateX(-50%);display:flex;align-items:center;white-space:nowrap;letter-spacing:8px;padding-left:8px}

/* 游戏区只允许整体等比例适配，页面手势不能改变位置或比例。 */
html,body{overflow:hidden;overscroll-behavior:none;touch-action:none}
body{position:fixed;inset:0;width:100%;height:100%;margin:0}
#viewport{touch-action:none;overscroll-behavior:none}
#game{touch-action:none;-webkit-user-select:none;user-select:none}
#game img{-webkit-user-drag:none}
dialog,#dialog-content{touch-action:pan-y;overscroll-behavior:contain}


/* 满屏舞台：扩展机台布局，图案继续用 contain 保持原比例。 */
#viewport{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
#game{border-radius:0;box-shadow:inset 0 0 0 5px #1a0c09,inset 0 0 0 6px #684328,inset 0 0 44px #000a}
#topbar{left:22px;right:22px;width:auto}
#masthead{left:24px;right:24px;width:auto}
#jackpot{left:26px;right:26px;width:auto}
#round-message{left:28px;right:28px;width:auto}
#cabinet{left:20px;right:20px;top:333px;bottom:225px;width:auto;height:auto}
#reel-window{height:100%}
#score-panel{left:28px;right:28px;top:auto;bottom:154px;width:auto}
#bet-controls{left:calc(50% - 88px);top:auto;bottom:97px}
#play-controls{left:38px;right:38px;top:auto;bottom:46px;width:auto}
#spin{left:calc(50% - 81px)}
#celebration{inset:335px 22px 227px;height:auto}
