:root{--gold:#ffd34d;--gold2:#ff9f1c;--ink:#fff8e7;--panel:#180e2ceb;--accent:#ff4fa3;--safe-top:env(safe-area-inset-top,0px);--safe-bot:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;color:var(--ink);overscroll-behavior:none;touch-action:none;background:#0d0718;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,sans-serif;overflow:hidden}button,[role=button],nav,header,.toolbar,.dock,canvas,.card,.chip,#hud,#lcd,#dock,#banner,.sheet,#fx-layer,#loading{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}input,textarea,[contenteditable]{-webkit-user-select:text;user-select:text}#app{position:fixed;inset:0}#scene{width:100%;height:100%;display:block;position:absolute;inset:0}#fx-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.hidden{display:none!important}#hud{padding:calc(var(--safe-top) + 8px) 10px 10px;pointer-events:none;background:linear-gradient(#080312eb 0,#080312bf 70%,#0000);position:absolute;top:0;left:0;right:0}.hud-row{align-items:center;gap:6px;display:flex}.hud-row.second{justify-content:space-between;margin-top:6px;font-size:12px}.pill{pointer-events:auto;background:#0000008c;border:1.5px solid #ffd34d80;border-radius:999px;align-items:center;gap:4px;padding:4px 10px 4px 6px;font-size:17px;display:flex;box-shadow:0 2px 10px #0006}.pill b{font-variant-numeric:tabular-nums;color:var(--gold);text-shadow:0 0 6px #ffb40099}.pill.gems b{color:#8ff4ff;text-shadow:0 0 6px #00dcff99}.pill .ico{font-size:18px}.pill.coins{flex:1.3}.pill.gems{flex:1}.pill.level{flex:1.1;gap:6px;padding-left:10px;font-size:13px}.pill.level b{color:#fff;text-shadow:none}.pill .bar{background:#ffffff26;border-radius:9px;flex:1;height:7px;display:block;overflow:hidden}.pill .bar>i{background:linear-gradient(90deg,#7cff6b,#00e0ff);width:0;height:100%;transition:width .3s;display:block}.pill.bump{animation:.25s bump}@keyframes bump{50%{transform:scale(1.12)}}#machine-title{letter-spacing:1px;text-shadow:0 2px 6px #000;font-size:15px;font-weight:800}#regen-info{opacity:.8;text-shadow:0 1px 3px #000}#feature-hud{flex-direction:column;gap:5px;margin-top:6px;display:flex}.meter{background:#0000008c;border-radius:10px;align-items:center;gap:8px;padding:4px 8px;font-size:12px;display:flex}.meter .lbl{white-space:nowrap;font-weight:700}.meter .track{background:#ffffff1f;border-radius:6px;flex:1;height:10px;position:relative;overflow:hidden}.meter .track>i{background:linear-gradient(90deg,#ff9f1c,#ffd34d,#fff6a8);width:0;transition:width .25s;position:absolute;inset:0}.meter .val{font-variant-numeric:tabular-nums;color:var(--gold);text-align:right;min-width:52px;font-weight:800}.meter.hot{animation:.6s infinite alternate pulse;box-shadow:0 0 12px #ffb02e}@keyframes pulse{to{box-shadow:0 0 22px #ffd34d}}.chips{flex-wrap:wrap;gap:5px;display:flex}.chip{background:#0000008c;border:1px solid #ffffff26;border-radius:8px;padding:3px 7px;font-size:12px}.chip.on{border-color:var(--gold);color:var(--gold);box-shadow:0 0 8px #ffd34d80}.orders{gap:5px;display:flex}.order{text-align:center;pointer-events:auto;background:#0009;border:1.5px solid #ff8c3c99;border-radius:10px;flex:1;padding:4px;font-size:11px}.order .need{letter-spacing:1px;font-size:18px}.order .need span.done{opacity:.25}.order .pay{color:var(--gold);font-weight:800}.order.flash{animation:.5s 3 flash}@keyframes flash{50%{background:#ffd34d99}}#lcd{right:10px;top:calc(var(--safe-top) + 112px);border:3px solid var(--gold);pointer-events:none;background:linear-gradient(#2a0d3a,#12061f);border-radius:12px;gap:4px;padding:6px 8px;display:flex;position:absolute;box-shadow:0 0 18px #ffc83c99,inset 0 0 12px #000}#lcd .reel{background:#fffaf0;border-radius:8px;place-items:center;width:38px;height:38px;font-size:24px;display:grid;overflow:hidden;box-shadow:inset 0 3px 6px #0006}#lcd .reel.spin span{animation:90ms linear infinite reelspin}@keyframes reelspin{0%{filter:blur(1px);transform:translateY(-40%)}to{filter:blur(1px);transform:translateY(40%)}}#lcd .reel.stop{animation:.18s reelstop}@keyframes reelstop{0%{transform:translateY(-6px)}60%{transform:translateY(3px)}}#lcd.win{animation:.2s 6 alternate lcdwin}@keyframes lcdwin{to{box-shadow:0 0 40px #fff, 0 0 60px var(--gold)}}#lcd .queue{background:var(--accent);color:#fff;border-radius:10px;padding:1px 6px;font-size:11px;font-weight:800;position:absolute;top:-10px;right:-8px}#drop-guide{pointer-events:none;opacity:0;border:2px dashed #ffd34dcc;border-radius:50%;width:34px;height:34px;margin-left:-17px;transition:opacity .2s;position:absolute;top:26%}#drop-guide.on{opacity:1}#banner{pointer-events:none;text-align:center;opacity:0;white-space:nowrap;background:linear-gradient(#3a125cf5,#120622f5);border:2.5px solid #ffd34d;border-radius:20px;max-width:92vw;padding:12px 26px 14px;font-family:PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;position:absolute;top:40%;left:50%;transform:translate(-50%)scale(.5);box-shadow:0 0 0 4px #ffd34d2e,0 10px 30px #0000008c,0 0 36px #ffbe3c73}#banner .t{letter-spacing:3px;background:linear-gradient(#fffbe6 0%,#ffe48a 38%,#ffc531 62%,#ff9d1a 100%);color:#0000;filter:drop-shadow(0 2px #6b3500)drop-shadow(0 0 10px #ffb4288c);-webkit-background-clip:text;background-clip:text;font-size:1em;font-weight:900;line-height:1.2;display:block}#banner.show{animation:1.8s ease-out forwards banner}#banner small{letter-spacing:1px;color:#fff3d6;text-shadow:0 1px 2px #0009;margin-top:4px;font-size:16px;font-weight:700;display:block}@keyframes banner{0%{opacity:0;transform:translate(-50%)scale(.5)}14%{opacity:1;transform:translate(-50%)scale(1.08)}24%{transform:translate(-50%)scale(1)}80%{opacity:1;transform:translate(-50%)scale(1)}to{opacity:0;transform:translate(-50%)scale(1.04)translateY(-24px)}}.float{letter-spacing:1px;color:var(--gold);text-shadow:0 2px #7a3b00,0 0 8px #fa0c;white-space:nowrap;font-family:PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;font-size:20px;font-weight:900;animation:1.1s ease-out forwards floatup;position:absolute;transform:translate(-50%,-50%)}.float.big{color:#ffe27a;text-shadow:0 2px #6b3500,0 0 12px #ffaa00d9;font-size:28px}.float.gem{color:#8ff4ff;text-shadow:0 2px #00557a,0 0 8px #00e0ff}.float.bad{color:#ff8a8a;text-shadow:0 2px #500;font-size:16px}@keyframes floatup{0%{opacity:0;margin-top:10px;transform:translate(-50%,-50%)scale(.6)}15%{opacity:1;transform:translate(-50%,-50%)scale(1.15)}to{opacity:0;margin-top:-70px;transform:translate(-50%,-50%)scale(1)}}#dock{padding:6px 6px calc(var(--safe-bot) + 6px);background:linear-gradient(#0000,#000000bf 40%);justify-content:space-around;display:flex;position:absolute;bottom:0;left:0;right:0}#dock button{color:var(--ink);background:#281446d9;border:1.5px solid #ffd34d73;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:1px;width:56px;height:54px;font-family:inherit;font-size:12px;display:flex;position:relative}#dock button span{font-size:20px;line-height:1}#dock button:active{transform:scale(.94)}.dot{background:#ff3d5a;border-radius:50%;width:10px;height:10px;position:absolute;top:4px;right:6px;box-shadow:0 0 6px #ff3d5a}#overlay{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#05000f99;justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}.sheet{background:var(--panel);border-top:2px solid var(--gold);width:100%;max-width:520px;max-height:82vh;padding:16px 14px calc(var(--safe-bot) + 18px);border-radius:22px 22px 0 0;animation:.22s ease-out sheetin;position:relative;overflow-y:auto}@keyframes sheetin{0%{opacity:0;transform:translateY(40%)}}.sheet h2{color:var(--gold);margin-bottom:10px;padding-right:40px;font-size:20px}.sheet h3{color:#ffc6e3;margin:14px 0 6px;font-size:15px}.sheet .close{color:#fff;background:#ffffff1f;border:none;border-radius:50%;width:34px;height:34px;font-size:18px;position:absolute;top:12px;right:12px}.sheet p.note{opacity:.8;margin-bottom:8px;font-size:13px;line-height:1.5}.card{background:#ffffff12;border:1.5px solid #ffffff1f;border-radius:14px;align-items:center;gap:10px;margin-bottom:8px;padding:10px 12px;display:flex}.card .big-ico{text-align:center;width:46px;font-size:34px}.card .info{flex:1;min-width:0}.card .info b{font-size:16px}.card .info small{opacity:.75;margin-top:2px;font-size:12px;line-height:1.4;display:block}.card.current{border-color:var(--gold);box-shadow:0 0 12px #ffd34d59}.card.locked{opacity:.5}.btn{color:#3a1d00;white-space:nowrap;background:linear-gradient(#ffe27a,#ffb21c);border:none;border-radius:12px;padding:9px 14px;font-family:inherit;font-size:14px;font-weight:800;box-shadow:0 3px #a86200}.btn:active{transform:translateY(2px);box-shadow:0 1px #a86200}.btn:disabled{filter:grayscale();opacity:.5}.btn.blue{color:#00243a;background:linear-gradient(#9ff4ff,#29b6f6);box-shadow:0 3px #01579b}.btn.pink{color:#fff;background:linear-gradient(#ffb3d9,#ff4fa3);box-shadow:0 3px #8c0047}.lv-dots{gap:3px;margin-top:4px;display:flex}.lv-dots i{background:#ffffff2e;border-radius:3px;width:14px;height:6px}.lv-dots i.on{background:var(--gold)}.grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.coll{text-align:center;background:#ffffff12;border-radius:12px;padding:8px 4px;font-size:11px}.coll .e{font-size:28px;display:block}.coll.no .e{filter:grayscale()brightness(.3)}.coll b{color:var(--gold)}.row{border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:10px;padding:10px 2px;font-size:15px;display:flex}.row input[type=range]{width:50%;accent-color:var(--gold)}.progress{background:#ffffff1f;border-radius:6px;height:8px;margin-top:5px;overflow:hidden}.progress>i{background:linear-gradient(90deg,#7cff6b,#00e0ff);height:100%;display:block}.modal-center{z-index:30;background:#05000f8c;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.modal-center .title{color:var(--gold);text-shadow:0 0 14px #ff9f1c,0 3px #7a3b00;text-align:center;margin-bottom:12px;font-size:28px;font-weight:900}.modal-center .subtitle{opacity:.9;margin-bottom:10px;font-size:14px}.modal-center.passthru{pointer-events:none;background:#05000f40}.modal-center.passthru .wheel-wrap{width:min(62vw,260px)}.wheel-wrap{aspect-ratio:1;width:min(82vw,340px);position:relative}.wheel-wrap canvas{width:100%;height:100%}.wheel-wrap .pointer{filter:drop-shadow(0 3px 2px #000);font-size:34px;position:absolute;top:-6px;left:50%;transform:translate(-50%)}.dig-grid{grid-template-columns:repeat(3,1fr);gap:8px;width:min(84vw,330px);display:grid}.dig{aspect-ratio:1;background:radial-gradient(#f3d59b,#c99a52);border:3px solid #c8963e;border-radius:14px;place-items:center;font-size:34px;display:grid;box-shadow:0 4px #7a5420}.dig.open{background:radial-gradient(#fff6d0,#ffd34d);animation:.3s bump}.dig.dim{opacity:.55}#loading{z-index:50;background:radial-gradient(circle at 50% 40%,#3b1a63,#0d0718 70%);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.load-coin{font-size:80px;animation:1.2s linear infinite spinY}@keyframes spinY{to{transform:rotateY(360deg)}}.load-title{color:var(--gold);text-shadow:0 0 20px #ff9f1c,0 4px #7a3b00;letter-spacing:4px;font-size:34px;font-weight:900}.load-sub{opacity:.8;font-size:14px}#start-btn{color:#3a1d00;background:linear-gradient(#ffe27a,#ffb21c);border:none;border-radius:30px;margin-top:14px;padding:14px 34px;font-family:inherit;font-size:20px;font-weight:900;animation:.8s infinite alternate pulse;box-shadow:0 5px #a86200,0 0 30px #ffc83c99}.footer-brand{opacity:.55;text-align:center;margin-top:16px;font-size:11px;line-height:1.6}#update-bar{left:10px;right:10px;bottom:calc(var(--safe-bot) + 72px);z-index:60;border:2px solid var(--gold);background:#2b1650;border-radius:14px;justify-content:space-between;align-items:center;padding:10px 14px;font-size:15px;display:flex;position:absolute}#update-bar button{background:var(--gold);color:#3a1d00;border:none;border-radius:10px;padding:6px 12px;font-family:inherit;font-weight:800}.shake{animation:.4s shake}@keyframes shake{20%{transform:translate(-6px,3px)}40%{transform:translate(5px,-4px)}60%{transform:translate(-4px,2px)}80%{transform:translate(3px,-1px)}}
