:root{--night-0: #060f19;--night-1: #0b1926;--night-2: #102635;--panel-1: #14282a;--panel-2: #0d1a1d;--ink: #060d12;--paper: #f4e7cd;--paper-dim: rgba(244, 231, 205, .66);--paper-faint: rgba(244, 231, 205, .36);--amber: #f2b447;--amber-hot: #ffd98a;--amber-deep: #b5762a;--mint: #a7f3c9;--mint-deep: #57c6a0;--danger: #ef6b52;--border: rgba(242, 180, 71, .24);--font-ui: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Songti SC", "STSong", "Noto Serif SC", "Source Han Serif SC", "PingFang SC", serif;--shadow-soft: 0 18px 40px rgba(0, 0, 0, .45);--aw: 100vw;--ah: 100vh;--u: calc(var(--aw) / 100);--v: calc(var(--ah) / 100);--app-left: 0px;--app-top: 0px;--safe-t: env(safe-area-inset-top, 0px);--safe-r: env(safe-area-inset-right, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px)}@supports (height: 100dvh){:root{--ah: 100dvh}}html.rot{--safe-t: env(safe-area-inset-right, 0px);--safe-r: env(safe-area-inset-bottom, 0px);--safe-b: env(safe-area-inset-left, 0px);--safe-l: env(safe-area-inset-top, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:var(--night-0);color:var(--paper);font-family:var(--font-ui);overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}button{font-family:inherit;color:inherit;border:none;background:none;cursor:pointer}#app{position:fixed;left:var(--app-left);top:var(--app-top);display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;width:var(--aw);height:var(--ah);isolation:isolate;transform-origin:0 0}html.rot #app{transform:rotate(90deg) translateY(calc(-1 * var(--ah)))}#topbar{min-width:0;display:flex;align-items:center;gap:clamp(8px,calc(var(--u) * 1.6),20px);padding:max(8px,var(--safe-t)) max(12px,var(--safe-r)) 8px max(12px,var(--safe-l));background:linear-gradient(180deg,#050c13f5,#070f17c7);border-bottom:1px solid rgba(242,180,71,.14);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:6}.sun-chip{display:inline-flex;align-items:center;gap:7px;padding:7px 14px 7px 10px;border-radius:999px;background:radial-gradient(120% 160% at 20% 0%,#f2b44742,#15211ee6);border:1px solid rgba(242,180,71,.5);box-shadow:0 0 0 1px #00000059,0 6px 18px #f2b44729,inset 0 1px #fff0c838;color:var(--amber-hot);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em;font-size:clamp(15px,calc(var(--u) * 2.1),19px);min-width:84px}.sun-chip .lantern{display:inline-flex;width:20px;height:20px;color:var(--amber);filter:drop-shadow(0 0 6px rgba(242,180,71,.7))}.sun-chip svg{width:100%;height:100%}.sun-chip.bump{animation:bump .38s cubic-bezier(.34,1.56,.64,1)}@keyframes bump{0%{transform:scale(1)}45%{transform:scale(1.09);box-shadow:0 0 0 6px #f2b44724}to{transform:scale(1)}}.wave-wrap{flex:1 1 auto;min-width:0;max-width:520px;display:flex;flex-direction:column;gap:5px}.wave-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12px;line-height:1;letter-spacing:.06em;color:var(--paper-dim)}#waveLabel{font-weight:700;color:var(--paper);font-size:clamp(12px,calc(var(--u) * 1.7),14px)}#waveSub{color:var(--amber);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#waveSub.danger{color:var(--danger)}.wave-track{position:relative;height:7px;border-radius:999px;background:#00000080;box-shadow:inset 0 1px 2px #0009;overflow:hidden}.wave-fill{height:100%;width:0%;border-radius:999px;background:linear-gradient(90deg,var(--amber-deep),var(--amber) 55%,var(--amber-hot));box-shadow:0 0 12px #f2b4478c;transition:width .6s cubic-bezier(.4,0,.2,1)}.wave-flags{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:space-between;padding:0 2px;pointer-events:none}.wave-flags i{width:2px;height:100%;background:#060d12bf}.wave-flags i.lit{background:#ffecbe8c}.wave-flags i.final{width:3px}.top-actions{display:flex;gap:6px;margin-left:auto}.icon-btn{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;color:var(--paper-dim);border:1px solid rgba(244,231,205,.14);background:#ffffff08;transition:color .18s,background .18s,border-color .18s,transform .18s}.icon-btn svg{width:20px;height:20px}.speed-btn{width:auto;min-width:44px;padding:0 8px}.speed-btn span{font-size:11px;font-weight:700;letter-spacing:.01em;font-variant-numeric:tabular-nums}.speed-btn.fast{color:var(--mint);border-color:#a7f3c973}.icon-btn:hover{color:var(--amber-hot);border-color:#f2b44766;background:#f2b4471a}.icon-btn:active{transform:scale(.94)}.icon-btn.active{color:var(--amber);border-color:#f2b44780}.icon-btn .muted-line,.icon-btn.muted #soundWave{display:none}.icon-btn:not(.muted) #soundMute{display:none}#stage{position:relative;min-height:0;overflow:hidden;background:radial-gradient(120% 120% at 50% 0%,#122636,#060f19 75%);touch-action:none}#game{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none;cursor:pointer}.banner{position:absolute;left:50%;top:12%;transform:translate(-50%,8px);display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 26px;border-radius:14px;background:linear-gradient(180deg,#081218db,#0812186b);border:1px solid rgba(242,180,71,.3);box-shadow:var(--shadow-soft);opacity:0;pointer-events:none;transition:opacity .28s ease,transform .28s ease;text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);max-width:90%}.banner.show{opacity:1;transform:translate(-50%)}.banner strong{font-family:var(--font-display);font-size:clamp(19px,calc(var(--u) * 3.4),30px);letter-spacing:.14em;color:var(--paper);text-shadow:0 2px 18px rgba(242,180,71,.5);white-space:nowrap}.banner span{font-size:12px;letter-spacing:.08em;color:var(--amber);white-space:nowrap}.banner.big strong{color:var(--amber-hot)}.banner.final{border-color:#ef6b528c;background:linear-gradient(180deg,#260c0ce6,#0a121880)}.banner.final strong{color:#ffb59f;text-shadow:0 2px 20px rgba(239,107,82,.6)}.banner.final span{color:#ffc4b2}.hint{position:absolute;left:50%;bottom:14px;transform:translate(-50%,6px);padding:6px 14px;border-radius:999px;background:#060e12c7;border:1px solid rgba(167,243,201,.22);color:var(--paper-dim);font-size:12px;letter-spacing:.04em;opacity:0;transition:opacity .22s,transform .22s;pointer-events:none;white-space:nowrap;max-width:92%;overflow:hidden;text-overflow:ellipsis}.hint.show{opacity:1;transform:translate(-50%)}#tray{--card-h: clamp(58px, calc(var(--v) * 11), 100px);min-width:0;overflow:hidden;display:flex;align-items:stretch;justify-content:center;gap:7px;padding:8px max(10px,var(--safe-r)) max(8px,var(--safe-b)) max(10px,var(--safe-l));background:linear-gradient(0deg,#040a0ffa 30%,#070f15db);border-top:1px solid rgba(242,180,71,.14);z-index:6}.card[hidden]{display:none}.cards{display:flex;justify-content:center;gap:7px;flex:1 1 auto;max-width:1000px;min-width:0}.card{position:relative;flex:1 1 0;min-width:0;max-width:92px;height:var(--card-h);border-radius:12px;border:1px solid rgba(167,243,201,.16);background:linear-gradient(180deg,#26362c,#17231d 65%,#101915);box-shadow:0 4px 12px #0006,inset 0 1px #ffffff0f;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:3px 3px 5px;overflow:hidden;transition:transform .16s ease,border-color .16s,box-shadow .16s,filter .16s}.card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:11px;background:radial-gradient(80% 55% at 50% 0%,rgba(167,243,201,.14),transparent 70%);pointer-events:none}.card:hover{border-color:#a7f3c966;transform:translateY(-2px)}.card .card-art{position:absolute;left:3px;right:3px;top:3px;bottom:18px;display:block;pointer-events:none}.card .card-art canvas{width:100%;height:100%;object-fit:contain;display:block}.card-name{font-size:clamp(9px,calc(var(--u) * 1.5),11px);letter-spacing:.02em;color:#f4e7cdcc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.2;padding-bottom:1px}.card-cost{position:absolute;left:50%;bottom:clamp(13px,calc(var(--u) * 2.4),18px);transform:translate(-50%);padding:0 6px;border-radius:999px;background:#060e0cd1;border:1px solid rgba(242,180,71,.38);color:var(--amber-hot);font-size:clamp(9px,calc(var(--u) * 1.6),11px);font-weight:700;font-variant-numeric:tabular-nums;line-height:1.5;pointer-events:none}.card-lock{position:absolute;top:0;right:0;bottom:0;left:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-radius:inherit;background:#050b0e9e;color:#f4e7cdb8;pointer-events:none}.card-lock svg{width:17px;height:17px}.card-lock b{font-size:8.5px;font-weight:600;letter-spacing:.01em;white-space:nowrap}.card.locked{cursor:default;border-color:#f4e7cd1a}.card.locked:hover{transform:none;border-color:#f4e7cd1a}.card.locked .card-lock{display:flex}.card.locked .card-art{filter:grayscale(1) brightness(.5)}.card.locked .card-name,.card.locked .card-cost{opacity:.4}.card-key{position:absolute;top:3px;left:5px;font-size:9px;color:#f4e7cd4d;pointer-events:none}.card-tip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(4px);padding:5px 10px;border-radius:8px;background:#060e12f0;border:1px solid rgba(244,231,205,.16);color:var(--paper-dim);font-size:11px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .16s,transform .16s;z-index:3}.card:hover .card-tip{opacity:1;transform:translate(-50%) translateY(0)}.card-cool{position:absolute;left:0;top:0;width:100%;height:0%;background:linear-gradient(180deg,#050c10db,#050c109e);pointer-events:none;border-bottom:1px solid rgba(167,243,201,.18)}.card.selected{border-color:var(--amber);box-shadow:0 0 0 2px #f2b4474d,0 8px 20px #f2b4473d,inset 0 1px #ffffff1f;transform:translateY(-4px)}.card.dim{opacity:.6}.card.unaffordable .card-cost{color:#ff9c85;border-color:#ef6b5280}.card.unaffordable .card-art{filter:grayscale(.45) brightness(.82)}.card.cooling .card-art{filter:grayscale(.5) brightness(.75)}.card.shake{animation:shake .32s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px) rotate(-1deg)}55%{transform:translate(4px) rotate(1deg)}80%{transform:translate(-2px)}}.shovel{flex:0 0 auto;width:clamp(44px,calc(var(--u) * 6.4),70px);height:var(--card-h);border-radius:12px;border:1px solid rgba(244,231,205,.16);background:linear-gradient(180deg,#22302a,#131d18);color:#f4e7cdb3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:clamp(9px,calc(var(--u) * 1.4),11px);transition:transform .16s,border-color .16s,color .16s}.shovel svg{width:clamp(20px,calc(var(--u) * 3),26px);height:clamp(20px,calc(var(--u) * 3),26px)}.shovel:hover{border-color:#a7f3c966;color:var(--paper)}.shovel.selected{border-color:var(--danger);color:#ffd0c4;box-shadow:0 0 0 2px #ef6b5247}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);place-items:center;padding:max(12px,var(--safe-t)) max(12px,var(--safe-r)) max(12px,var(--safe-b)) max(12px,var(--safe-l));background:radial-gradient(120% 100% at 50% 0%,#09161eb8,#03080ce6);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);opacity:0;pointer-events:none;transition:opacity .26s ease}.overlay.show{opacity:1;pointer-events:auto}.panel{position:relative;width:min(calc(var(--u) * 92),520px);max-height:100%;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:manipulation;padding:clamp(22px,calc(var(--u) * 4),34px);border-radius:22px;text-align:center;background:linear-gradient(165deg,#1a2f2d,#122322 45%,#0c1719);border:1px solid rgba(242,180,71,.32);box-shadow:0 30px 70px #0009,inset 0 1px #fff0c81a;transform:translateY(14px) scale(.98);transition:transform .32s cubic-bezier(.22,1,.36,1)}.overlay.show .panel{transform:translateY(0) scale(1)}.panel:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border-radius:16px;border:1px solid rgba(242,180,71,.1);pointer-events:none}.eyebrow{margin:0 0 6px;font-size:11px;letter-spacing:.36em;text-transform:uppercase;color:var(--amber);opacity:.9}.panel h1{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(30px,calc(var(--u) * 6.6),46px);letter-spacing:.14em;color:var(--paper);text-shadow:0 4px 26px rgba(242,180,71,.35)}.panel-sub{margin:10px auto 0;max-width:36ch;text-wrap:balance;font-size:13px;line-height:1.7;color:var(--paper-dim);letter-spacing:.03em}.nights{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));justify-content:center;gap:7px;margin:16px auto 2px}.night{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:100%;height:54px;border-radius:12px;border:1px solid rgba(244,231,205,.16);background:linear-gradient(180deg,#243a34,#16241f);color:var(--paper-dim);transition:border-color .16s,transform .16s,box-shadow .16s}.night b{font-size:16px;font-weight:700;line-height:1;color:var(--paper);font-variant-numeric:tabular-nums}.night span{font-size:9px;letter-spacing:.02em;opacity:.72;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.night:hover:not(.locked){border-color:#f2b44780;transform:translateY(-2px)}.nights .night{width:100%}.night.pool-night{background:linear-gradient(180deg,#254b53,#163139)}.night.current{border-color:var(--amber);box-shadow:0 0 0 2px #f2b44733,0 8px 18px #00000059}.night.current b{color:var(--amber-hot)}.night.done:after{content:"✓";position:absolute;top:3px;right:6px;font-size:9px;color:var(--mint)}.night.locked{opacity:.42;filter:grayscale(.7);cursor:default}.level-meta{margin:8px auto 0;max-width:440px;font-size:11px;line-height:1.6;letter-spacing:.02em;color:var(--paper-dim);text-align:center}.meta-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.meta-line.progress{color:var(--mint-deep)}.meta-line.avail{white-space:normal}.meta-line.plant{color:var(--mint)}.meta-line.enemy{color:var(--amber)}.meta-line.locked{color:var(--paper-faint)}html.tight .tips,html.tight .panel-foot{display:none}.tips{list-style:none;margin:20px auto 4px;padding:0;max-width:360px;display:grid;gap:10px;text-align:left}.tips li{position:relative;padding-left:18px;font-size:13px;line-height:1.6;color:var(--paper-dim)}.tips li:before{content:"";position:absolute;left:2px;top:7px;width:6px;height:6px;border-radius:50%;background:var(--amber);box-shadow:0 0 8px #f2b447cc}.tips b{color:var(--mint);font-weight:600;margin-right:2px}.panel-note{display:none;margin:16px 0 0;font-size:12px;line-height:1.7;color:var(--amber);letter-spacing:.02em}.panel-note.show{display:block}.panel-actions{position:sticky;bottom:0;z-index:2;display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:22px;padding:8px 0 2px;background:linear-gradient(180deg,#0c171900,#0c1719f0 38%)}.primary{padding:12px 30px;border-radius:999px;font-size:15px;font-weight:700;letter-spacing:.1em;color:#1d1405;background:linear-gradient(180deg,#ffd98a,#f2b447 55%,#d5902f);box-shadow:0 10px 26px #f2b44752,inset 0 1px #ffffff8c;transition:transform .16s,box-shadow .16s}.primary:hover{transform:translateY(-2px);box-shadow:0 14px 30px #f2b4476b,inset 0 1px #fff9}.primary:active{transform:translateY(0) scale(.98)}.ghost{padding:12px 22px;border-radius:999px;font-size:14px;letter-spacing:.08em;color:var(--paper-dim);border:1px solid rgba(244,231,205,.22);transition:color .16s,border-color .16s,background .16s}.ghost:hover{color:var(--paper);border-color:#f2b44780;background:#f2b44714}.panel-foot{margin:18px 0 0;font-size:11px;letter-spacing:.06em;color:var(--paper-faint)}@media (max-width: 560px){#topbar{gap:8px;padding-top:max(6px,var(--safe-t));padding-bottom:6px}.sun-chip{padding:5px 10px 5px 8px;min-width:70px;font-size:14px}.sun-chip .lantern{width:17px;height:17px}.icon-btn{width:34px;height:34px;border-radius:9px}.icon-btn svg{width:18px;height:18px}.wave-head{font-size:10px}#waveLabel{font-size:11px}#tray{gap:5px;padding:6px max(6px,var(--safe-r)) max(6px,var(--safe-b)) max(6px,var(--safe-l))}.cards{gap:5px}.card{border-radius:10px;padding:2px 2px 4px}.card:after{border-radius:9px}.card-cost{bottom:12px;padding:0 4px;font-size:9px}.card .card-art{bottom:15px}.card-name{font-size:9px}.card-key,.card-tip{display:none}.card-lock svg{width:14px;height:14px}.card-lock b{font-size:7.5px}.shovel{border-radius:10px;gap:1px;width:clamp(42px,calc(var(--u) * 12),60px)}.shovel span{font-size:9px}.banner{padding:8px 16px;top:9%}.hint{font-size:11px;bottom:8px}.panel{border-radius:18px}.nights{margin:8px auto 0;gap:5px}.night{width:46px;height:42px;border-radius:9px}.night b{font-size:13px}.night span{font-size:8px}.level-meta{margin-top:5px;font-size:10px;line-height:1.5;max-width:440px}.panel-foot{display:none}}@media (max-width: 400px){.cards{gap:4px}.card-name{display:none}.card-cost{bottom:5px}.card .card-art{bottom:13px}}html.compact .overlay{padding:max(8px,var(--safe-t)) 10px max(8px,var(--safe-b))}html.compact #topbar{gap:10px;padding-top:max(4px,var(--safe-t));padding-bottom:4px}html.compact .sun-chip{padding:4px 11px 4px 8px;min-width:72px;font-size:14px}html.compact .sun-chip .lantern{width:17px;height:17px}html.compact .icon-btn{width:32px;height:32px;border-radius:9px}html.compact .icon-btn svg{width:18px;height:18px}html.compact .speed-btn{min-width:38px;padding:0 6px}html.compact .speed-btn span{font-size:10px}html.compact #waveLabel{font-size:12px}html.compact #tray{--card-h: clamp(34px, min(calc(var(--v) * 17), calc(var(--u) * 5.8)), 64px);gap:6px;padding-top:5px;padding-bottom:max(5px,var(--safe-b))}html.compact .cards{flex:0 1 auto;justify-content:center;gap:5px;max-width:none}html.compact .card{flex:0 0 auto;width:auto;max-width:none;aspect-ratio:1;height:var(--card-h);border-radius:10px;padding:2px 2px 3px}html.compact .card .card-art{bottom:13px}html.compact .card-name{display:none}html.compact .card-cost{bottom:3px;font-size:9px;padding:0 5px}html.compact .card-key{top:2px;left:4px;font-size:8px}html.compact .shovel{width:var(--card-h);height:var(--card-h);border-radius:10px}html.compact .shovel span{display:none}html.compact .banner{top:5%;padding:6px 16px}html.compact .banner strong{font-size:19px}html.compact .banner span{font-size:10px}html.compact .hint{bottom:4px;font-size:10px;padding:4px 10px}html.compact .panel{width:min(calc(var(--u) * 94),560px);padding:12px 22px;border-radius:16px}html.compact .eyebrow{margin-bottom:2px;font-size:10px}html.compact .panel h1{font-size:clamp(22px,calc(var(--v) * 7.4),30px)}html.compact .panel-sub{margin-top:4px;max-width:44ch;font-size:12px;line-height:1.5}html.compact .nights{margin:8px auto 0;gap:5px}html.compact .night{height:clamp(32px,calc(var(--v) * 10.5),44px);border-radius:9px}html.compact .night b{font-size:13px}html.compact .night span{font-size:8px}html.compact .level-meta{margin-top:5px;font-size:10px;line-height:1.5;max-width:460px}html.compact .panel-note{margin-top:8px;font-size:11px;line-height:1.5}html.compact .tips{display:none}html.compact .panel-actions{margin-top:10px;padding:6px 0 2px;background:linear-gradient(180deg,#0c171900,#0c1719f5 34%)}html.compact .primary{padding:9px 26px;font-size:14px}html.compact .ghost{padding:9px 18px;font-size:13px}html.compact .panel-foot{display:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
