:root{--red:#c8323c;--red-deep:#8e1f2a;--green:#2f7d4f;--gold:#f2b33d;--gold-deep:#c98616;--cream:#fff4e0;--paper:#fdf3e1;--card:#fffaf0;--card-line:#ecd6b0;--wood:#7a4a2b;--wood-dark:#4a2c1a;--ink:#3b2416;--ink-soft:#7c5a44;--ink-faint:#9a7b62;--title:"Mountains of Christmas", "Georgia", serif;color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;font-family:Nunito,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{overscroll-behavior:none;background:#2a1010;overflow:hidden}button{font:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible{outline-offset:2px;outline:3px solid #ffd45a}.app{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.topbar{z-index:10;height:calc(50px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 10px 0 12px;background:linear-gradient(#b8303a, var(--red-deep));color:var(--cream);flex:none;align-items:center;gap:8px;display:flex;position:relative}.topbar:after{content:"";background:repeating-linear-gradient(45deg, #fff 0 8px, var(--red) 8px 16px);height:6px;position:absolute;bottom:-6px;left:0;right:0;box-shadow:0 2px 4px #0000004d}.topbar h1{font-family:var(--title);color:#ffe7b0;text-shadow:0 2px #5e1017;letter-spacing:.5px;margin:0;font-size:28px;line-height:1}.logo{filter:drop-shadow(0 2px #00000040);flex:none}.topbar-actions{gap:6px;margin-left:auto;display:flex}.icon-btn{width:38px;height:38px;color:var(--cream);cursor:pointer;background:#ffffff24;border:0;border-radius:10px;place-items:center;display:grid;position:relative}.icon-btn:hover{background:#ffffff3d}.main{flex:1;grid-template-rows:minmax(0,46fr) minmax(0,54fr);min-height:0;display:grid}@media (orientation:landscape) and (width>=600px){.main{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) clamp(320px,38vw,460px)}}.ad-slot{min-height:calc(50px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#2a1010;flex:none;justify-content:center;align-items:center;display:flex}.banner-ad{justify-content:center;width:100%;max-width:728px;min-height:50px;display:flex}@media (width>=768px){.ad-slot,.banner-ad{min-height:90px}}@media (orientation:landscape) and (height<=500px){.topbar{height:calc(42px + env(safe-area-inset-top))}.topbar h1{font-size:24px}}.stage{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;background:#5a1f22;position:relative;overflow:hidden;container-type:size}.wallpaper{background:radial-gradient(70% 60% at 50% 62%,#ffba6661,#0000 70%),repeating-linear-gradient(90deg,#6a2428 0 22px,#5d1f23 22px 44px);transition:filter .6s;position:absolute;inset:0}.stage.rush .wallpaper{filter:saturate(1.35)brightness(1.15)}.lights{z-index:2;pointer-events:none;height:34px;position:absolute;top:0;left:0;right:0}.lights:before{content:"";background:radial-gradient(circle at 50% 0,#0000 13px,#203020 13px 15px,#0000 15.5px) 0 -2px/7% 30px repeat-x;position:absolute;inset:0}.bulb{border-radius:50% 50% 45% 45%;width:9px;height:13px;animation:2.2s ease-in-out infinite alternate twinkle;position:absolute;top:12px;transform:translate(-50%)}.bulb:before{content:"";background:#203020;border-radius:1px;width:5px;height:4px;position:absolute;top:-3px;left:2px}.b0{background:#ff5a5a;box-shadow:0 0 10px 2px #ff5a5ab3}.b1{background:#ffd45a;box-shadow:0 0 10px 2px #ffd45ab3}.b2{background:#6ee07a;box-shadow:0 0 10px 2px #6ee07ab3}.b3{background:#6ec8ff;box-shadow:0 0 10px 2px #6ec8ffb3}.window{z-index:1;width:min(66cqw,420px);height:min(44cqh,62cqw,380px);position:absolute;top:14cqh;left:50%;transform:translate(-50%)}.sky,.frame{border-radius:50% 50% 6px 6px/34% 34% 6px 6px;position:absolute;inset:0}.sky{background:linear-gradient(#0e1836,#22346a 70%,#394d86);overflow:hidden;container-type:size}.frame{border:8px solid var(--wood);background:linear-gradient(var(--wood), var(--wood)) center / 6px 100% no-repeat, linear-gradient(var(--wood), var(--wood)) center 46% / 100% 6px no-repeat;box-shadow:inset 0 0 14px #00000073,0 8px 22px #00000059}.sill{background:linear-gradient(#9a6640,#6b4226);border-radius:4px;height:14px;position:absolute;bottom:-9px;left:-7%;right:-7%;box-shadow:0 4px 8px #00000059}.sill:before{content:"";background:#f4f8fc;border-radius:6px 6px 2px 2px;height:7px;position:absolute;top:-5px;left:8%;right:8%}.star{background:#fff;border-radius:50%;width:2px;height:2px;animation:3s ease-in-out infinite alternate twinkle;position:absolute}.moon{background:#fff6d8;border-radius:50%;width:24px;height:24px;position:absolute;top:16%;right:18%;box-shadow:0 0 24px 6px #fff6d859}.aurora{filter:blur(9px);background:linear-gradient(100deg,#0000 8%,#5fe0a080 30%,#4cc3e866 50%,#b07be866 70%,#0000 92%);border-radius:50%;width:130%;height:46%;animation:12s ease-in-out infinite alternate aurora;position:absolute;top:4%;left:-15%}.sleigh{width:42%;animation:24s linear infinite fly;position:absolute;top:24%;left:0}.flake{opacity:.9;background:#fff;border-radius:50%;animation:linear infinite fall;position:absolute;top:0}.hills{background:radial-gradient(90% 100% at 18% 100%,#f1f6fc 62%,#0000 63%),radial-gradient(90% 100% at 84% 100%,#dde8f5 62%,#0000 63%);height:26%;position:absolute;bottom:0;left:0;right:0}.scenery{width:100%;height:48%;position:absolute;bottom:0;left:0}.sky.scene-forest{background:linear-gradient(#0b1730,#1e3858 70%,#2d5070)}.sky.scene-village{background:linear-gradient(#101a3a,#2e3570 70%,#4a4f8c)}.sky.scene-aurora{background:linear-gradient(#050c24,#13244e 70%,#22386a)}.sky.scene-pole{background:linear-gradient(#0e1a3c,#264a80 70%,#3b6aa0)}.scene-pole .hills{background:radial-gradient(90% 100% at 18% 100%,#e6f5fc 62%,#0000 63%),radial-gradient(90% 100% at 84% 100%,#cde6f5 62%,#0000 63%)}.sky.scene-dawn{background:linear-gradient(#5d5aa8,#d884a8 55%,#ffc9a0)}.scene-dawn .star{display:none}.scene-dawn .moon{background:#ffe3a3;width:34px;height:34px;top:auto;bottom:18%;right:30%;box-shadow:0 0 40px 16px #ffc8788c}.scene-dawn .hills{background:radial-gradient(90% 100% at 18% 100%,#fff1ee 62%,#0000 63%),radial-gradient(90% 100% at 84% 100%,#f7dcdc 62%,#0000 63%)}.decor{z-index:1;pointer-events:none;position:absolute;bottom:25cqh}.decor.tree{aspect-ratio:100/140;height:42cqh;left:1%}.decor.fireplace{aspect-ratio:120/100;height:25cqh;right:1%}.decor-art{filter:drop-shadow(0 4px 6px #0000004d);width:100%;height:100%;display:block;overflow:visible}.tree-star{filter:drop-shadow(0 0 4px #ffd45ae6);animation:1.8s ease-in-out infinite alternate twinkle}.flames{transform-origin:60px 96px;animation:.9s ease-in-out infinite alternate flicker}.floor{border-top:5px solid var(--wood-dark);background:linear-gradient(#00000059,#0000 60%),repeating-linear-gradient(90deg,#7d4c2c 0 58px,#5e3820 58px 60px,#744628 60px 118px,#5e3820 118px 120px);height:30cqh;position:absolute;bottom:0;left:0;right:0}.rug{background:radial-gradient(closest-side,#b8303a 0 44%,#f2d9a0 45% 50%,#9e2530 51% 70%,#2f7d4f 71% 76%,#8e1f2a 77%);border-radius:50%;width:min(80cqw,540px);height:14cqh;position:absolute;bottom:6cqh;left:50%;transform:translate(-50%);box-shadow:0 4px 10px #0000004d}.counter{z-index:5;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);max-width:94%;color:var(--cream);text-align:center;white-space:nowrap;pointer-events:none;background:#280c0a99;border:1px solid #ffdca040;border-radius:14px;padding:5px 16px 6px;position:absolute;top:30px;left:50%;transform:translate(-50%)}.count{font-variant-numeric:tabular-nums;text-shadow:0 2px #00000059;font-size:clamp(20px,7.5cqw,34px);font-weight:900;line-height:1.1}.count span{opacity:.85;font-size:.62em}.rate{opacity:.85;font-size:13px;font-weight:700}.buffs{flex-wrap:wrap;justify-content:center;gap:5px;margin-top:4px;display:flex}.buff{background:var(--green);border-radius:999px;padding:2px 9px;font-size:12px;font-weight:800;animation:1s ease-in-out infinite alternate pulse}.buff.frenzy{background:#d98a1c}.present-wrap{z-index:3;aspect-ratio:1;width:min(50cqh,56cqw,320px);position:absolute;bottom:9cqh;left:50%;transform:translate(-50%)}.glow{pointer-events:none;background:repeating-conic-gradient(#ffe09633 0 10deg, transparent 10deg 24deg);border-radius:50%;animation:40s linear infinite spin;position:absolute;inset:-28%;-webkit-mask:radial-gradient(closest-side,#000 30%,#0000);mask:radial-gradient(closest-side,#000 30%,#0000)}.stage.rush .glow{background:repeating-conic-gradient(#ffe09673 0 10deg, transparent 10deg 24deg);animation-duration:8s}.present{cursor:pointer;filter:drop-shadow(0 6px 10px #0000004d);background:0 0;border:0;width:100%;height:100%;padding:0;display:block;position:relative}.present-art{pointer-events:none;width:100%;height:100%;transition:transform .15s;display:block}@media (hover:hover){.present:hover .present-art{transform:scale(1.03)}}.hint{background:var(--cream);color:var(--red-deep);white-space:nowrap;pointer-events:none;border-radius:999px;padding:6px 14px;font-size:15px;font-weight:900;animation:1.2s ease-in-out infinite bounce;position:absolute;top:-4%;left:50%;box-shadow:0 4px 10px #0000004d}.elves{pointer-events:none;position:absolute;bottom:5cqh;left:0;right:0}.elf{z-index:4;transform-origin:50% 100%;width:clamp(24px,10cqh,46px);animation:1.6s ease-in-out infinite backwards hop;position:absolute;bottom:0}.elf.back{z-index:2;width:clamp(20px,8.5cqh,38px);bottom:5cqh}.elf-art{filter:drop-shadow(0 3px 2px #0000004d);width:100%;display:block}.golden{z-index:6;aspect-ratio:1;cursor:pointer;filter:drop-shadow(0 0 10px #ffd25ae6);background:radial-gradient(closest-side,#ffe282bf,#0000);border:0;border-radius:50%;width:clamp(52px,17cqh,76px);padding:0;animation:.45s ease-out golden-in,2.4s ease-in-out infinite golden-float;position:absolute;transform:translate(-50%,-50%)}.golden svg{pointer-events:none;width:100%;height:100%;display:block}.particles{z-index:7;pointer-events:none;position:absolute;inset:0}.float-num{color:var(--cream);white-space:nowrap;text-shadow:0 2px 0 var(--red-deep), 0 0 8px #00000073;pointer-events:none;font-size:20px;font-weight:900;animation:.9s ease-out forwards float-up;position:absolute;transform:translate(-50%,-50%)}.float-num.big{color:#ffe29a;font-size:24px;animation-duration:1.8s}.toy-particle{pointer-events:none;will-change:transform, opacity;width:clamp(22px,8cqh,36px);height:clamp(22px,8cqh,36px);position:absolute}.ticker{z-index:5;color:#f8e6c8;text-align:center;pointer-events:none;background:#1e0a0699;padding:4px 12px;font-size:12px;font-weight:700;line-height:1.3;position:absolute;bottom:0;left:0;right:0}.ticker span{animation:.6s ease-out fade-in;display:block}@container (height<=300px){.ticker{display:none}.counter{padding:3px 12px 4px;top:26px}.rate{font-size:12px}}.shop{z-index:2;background:var(--paper);border-top:5px solid var(--wood);flex-direction:column;min-height:0;display:flex;position:relative}@media (orientation:landscape) and (width>=600px){.shop{border-top:0;border-left:6px solid var(--wood)}}.shop{container-type:inline-size}.tabs{border-bottom:3px solid var(--red);background:#f1dfbf;flex:none;grid-template-columns:repeat(5,1fr);gap:4px;padding:13px 8px 0;display:grid}.tab{color:#6b3a1f;white-space:nowrap;cursor:pointer;background:#e8d0a8;border:0;border-radius:10px 10px 0 0;min-width:0;padding:10px 1px;font-size:clamp(11px,3.4cqw,14px);font-weight:800;position:relative;overflow:visible}.tab.active{background:var(--red);color:var(--cream)}.badge{background:var(--green);color:#fff;border-radius:10px;min-width:19px;height:19px;padding:0 5px;font-size:11px;font-weight:900;line-height:19px;position:absolute;top:-6px;right:2px;box-shadow:0 1px 3px #0000004d}.badge.gold{color:var(--ink);background:#e0a02c}.scroll-area{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.scroll-view{overscroll-behavior:contain;scrollbar-width:none;flex:1;min-height:0;overflow-y:auto}.scroll-view::-webkit-scrollbar{display:none}.panel{padding:10px 18px 22px 10px;animation:.25s ease-out fade-in}.scroll-track{background:#7a4a2b24;border-radius:4px;width:7px;position:absolute;top:6px;bottom:6px;right:4px}.scroll-thumb{cursor:grab;touch-action:none;background:#a8764f;border-radius:4px;width:100%;box-shadow:inset 0 0 0 1px #ffffff40}.scroll-thumb:active{cursor:grabbing;background:var(--wood)}@media (hover:hover){.scroll-track:hover{width:9px;right:3px}}.scroll-fade{background:linear-gradient(#fdf3e100, var(--paper));pointer-events:none;height:40px;transition:opacity .25s;position:absolute;bottom:0;left:0;right:14px}.scroll-fade.hidden{opacity:0}.scroll-hint{background:var(--wood);color:var(--cream);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:900;animation:1.4s ease-in-out infinite bounce;display:inline-flex;position:absolute;bottom:10px;left:50%;transform:translate(-50%);box-shadow:0 3px 8px #00000040}.amounts{color:#6b3a1f;align-items:center;gap:6px;margin-bottom:9px;font-size:13px;font-weight:800;display:flex}.amount{background:var(--card);color:#6b3a1f;cursor:pointer;border:2px solid #e1c79c;border-radius:8px;flex:1;padding:6px 0;font-weight:800}.amount.active{border-color:var(--green);background:var(--green);color:#fff}.list{flex-direction:column;gap:7px;margin:0;padding:0;list-style:none;display:flex}.row{border:2px solid var(--card-line);background:var(--card);width:100%;color:var(--ink);text-align:left;cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:8px 10px;transition:transform 80ms,box-shadow .15s,border-color .15s;display:flex;box-shadow:0 2px #e3c99d}.row.can{background:#fbfff7;border-color:#8cc79f;box-shadow:0 2px #b5dbc0}@media (hover:hover){.row.can:hover{transform:translateY(-1px);box-shadow:0 4px #b5dbc0}}.row:active{transform:translateY(1px)}.row:not(.can) .icon{opacity:.7}.row.mystery{cursor:default}.row.mystery .icon{filter:brightness(0);opacity:.25}.icon{flex:none;place-items:center;display:grid}.info{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.name{font-size:15.5px;font-weight:900;line-height:1.2}.name em{color:var(--green);font-size:13px;font-style:normal}.desc{color:var(--ink-soft);font-size:12px;line-height:1.3}.cost{color:var(--green);font-variant-numeric:tabular-nums;align-items:center;gap:4px;font-size:14px;font-weight:800;display:inline-flex}.cost.short{color:#b9544e}.owned{color:#d4b88d;text-align:right;min-width:34px;font-size:28px;font-weight:900}.tiered{display:block;position:relative}.tiered b{background:var(--gold);min-width:18px;color:var(--ink);text-align:center;border-radius:6px;padding:1px 4px;font-size:10px;position:absolute;top:-4px;right:-6px;box-shadow:0 1px 2px #00000040}.panel-head{color:#6b3a1f;justify-content:space-between;align-items:center;gap:8px;margin:2px 0 10px;font-size:13.5px;font-weight:800;display:flex}.small-btn{background:var(--green);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:800}.small-btn.ghost{border:2px solid var(--card-line);background:var(--card);color:var(--ink-soft)}.small-btn:disabled{cursor:default;background:#cdbfa8}.empty{color:var(--ink-soft);text-align:center;padding:20px 10px}.muted{color:var(--ink-faint);font-size:12.5px;font-weight:600}.sleigh-hero{align-items:center;gap:12px;display:flex}.sleigh-hero svg{flex:none}.sleigh-hero h2{font-family:var(--title);color:var(--red-deep);margin:0;font-size:28px}.sleigh-hero p{margin:4px 0 0;font-size:14px;line-height:1.4}.spirit-stats{grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;display:grid}.spirit-stats>div{border:2px solid var(--card-line);background:var(--card);border-radius:12px;flex-direction:column;padding:10px;display:flex}.label{text-transform:uppercase;letter-spacing:.3px;color:var(--ink-faint);font-size:11.5px;font-weight:800}.value{align-items:center;gap:6px;font-size:24px;font-weight:900;display:flex}.value.gold{color:var(--gold-deep)}.sub{color:var(--ink-soft);font-size:12px}.progress{background:var(--card-line);border-radius:6px;height:12px;margin:12px 0 4px;overflow:hidden}.bar{background:linear-gradient(90deg,#e0a02c,#ffd45a);height:100%;transition:width .3s}.progress-note,.tip{color:var(--ink-soft);margin:0;font-size:12.5px}.tip{color:var(--ink-faint);margin-top:12px}.big-btn{width:100%;color:var(--cream);cursor:pointer;background:linear-gradient(#d23e48,#a8232c);border:0;border-radius:12px;margin-top:10px;padding:12px 16px;font-size:16px;font-weight:900;display:block;box-shadow:0 3px #6e1219}.big-btn:active{transform:translateY(2px);box-shadow:0 1px #6e1219}.big-btn:disabled{box-shadow:none;color:#fff;cursor:default;background:#cdbfa8;transform:none}.big-btn.ghost{border:2px solid var(--card-line);background:var(--card);color:var(--red-deep);box-shadow:0 2px #e3c99d}.big-btn.danger{background:var(--red-deep)}.confirm p{text-align:center;margin:12px 0 0;font-weight:800}.confirm-row{gap:8px;display:flex}.grotto{border-top:3px dashed var(--card-line);margin-top:22px;padding-top:14px}.grotto-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 10px;display:flex}.grotto-head h2{font-family:var(--title);color:var(--green);margin:0;font-size:26px}.spirit-pill{color:var(--gold-deep);background:#fff1c4;border-radius:999px;align-items:center;gap:5px;padding:4px 10px;font-size:14px;font-weight:900;display:inline-flex}.grotto .muted{margin:6px 0 10px}.cost.spirit{color:var(--gold-deep)}.row.perk.owned{cursor:default;background:#fffbea;border-color:#f2d27a;box-shadow:0 2px #f2d27a}.row.perk.owned .icon{opacity:1}.row.perk.owned .cost{color:var(--gold-deep)}.toybox{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px;margin:0 0 16px;padding:0;list-style:none;display:grid}.toy{text-align:center;background:#f3e6cf;border-radius:10px;flex-direction:column;align-items:center;gap:3px;padding:8px 4px 6px;display:flex}.toy img{filter:brightness(0)opacity(.22);width:34px;height:34px}.toy small{color:var(--ink-faint);font-size:11px;font-weight:800;line-height:1.15}.toy.found{background:var(--card);box-shadow:inset 0 0 0 2px var(--card-line)}.toy.found img{filter:none}.toy.found small{color:var(--ink)}.style-section{margin-bottom:16px}.style-section h3{color:var(--red-deep);margin:0 0 8px;font-size:15px;font-weight:900}.style-section h3 small{color:var(--ink-faint);margin-left:4px;font-size:12px;font-weight:700}.style-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:7px;margin:0;padding:0;list-style:none;display:grid}.style-card{border:2px solid var(--card-line);background:var(--card);width:100%;height:100%;color:var(--ink);text-align:center;cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:3px;padding:8px 6px 7px;display:flex;position:relative;box-shadow:0 2px #e3c99d}.style-card[aria-disabled=true]{cursor:default}.style-card.equipped{border-color:var(--green);background:#f3fbf5;box-shadow:0 2px #9fd2b0}.style-card.buyable{border-color:#f2d27a}.style-card.locked .preview{filter:grayscale(.85)opacity(.45)}.preview{place-items:center;width:100%;height:64px;display:grid}.preview .present-art,.preview .decor-art{filter:none;width:64px;height:64px}.preview-effect{gap:2px;display:flex}.preview-effect img{width:26px;height:26px}.preview-elves{align-items:flex-end;height:60px;display:flex}.preview-elves .elf-art{width:28px}.sky.swatch{border-radius:20px 20px 6px 6px;width:100%;height:60px;position:relative}.swatch .moon{width:12px;height:12px}.scene-dawn.swatch .moon{width:16px;height:16px}.style-name{font-size:13px;font-weight:900;line-height:1.2}.style-status{color:var(--ink-faint);font-size:11px;font-weight:700;line-height:1.2}.equipped .style-status{color:var(--green)}.style-cost{color:var(--gold-deep);align-items:center;gap:3px;display:inline-flex}.locked .style-cost{color:#b9544e}.new-tag{z-index:1;background:var(--red);color:#fff;border-radius:999px;padding:1px 7px;font-size:10.5px;font-weight:900;position:absolute;top:-7px;right:-4px;box-shadow:0 1px 3px #0000004d}.toast-style{border-color:#8cc79f}.stats{grid-template-columns:1fr 1fr;gap:6px;margin:0 0 14px;display:grid}.stats>div{border:2px solid var(--card-line);background:var(--card);border-radius:10px;padding:7px 10px}.stats dt{color:var(--ink-faint);font-size:11.5px;font-weight:800}.stats dd{margin:0;font-size:16px;font-weight:900}.trophies{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.trophy{opacity:.8;background:#f3e6cf;border:2px solid #0000;border-radius:10px;align-items:center;gap:8px;padding:7px 8px;display:flex}.trophy svg{flex:none}.trophy.earned{background:var(--card);opacity:1;border-color:#f2d27a}.trophy b{font-size:13px;display:block}.trophy small{color:var(--ink-soft);font-size:11.5px;line-height:1.25;display:block}.toasts{z-index:50;bottom:calc(62px + env(safe-area-inset-bottom));pointer-events:none;flex-direction:column;gap:6px;width:min(92vw,340px);display:flex;position:fixed;left:50%;transform:translate(-50%)}@media (width>=768px){.toasts{bottom:104px}}.toast{background:var(--card);border:2px solid #f2d27a;border-radius:12px;align-items:center;gap:10px;padding:8px 12px;animation:.35s cubic-bezier(.2,1.4,.4,1) toast-in;display:flex;box-shadow:0 8px 20px #00000047}.toast svg{flex:none}.toast-golden{background:#fff6d6;border-color:#e0a02c}.toast b{font-size:14px;display:block}.toast small{color:var(--ink-soft);font-size:12.5px;display:block}.backdrop{z-index:60;background:#1406049e;place-items:center;padding:16px;animation:.2s ease-out fade-in;display:grid;position:fixed;inset:0}.modal{border:4px solid var(--red);background:var(--paper);text-align:center;border-radius:18px;width:100%;max-width:380px;max-height:100%;padding:20px;animation:.35s cubic-bezier(.2,1.4,.4,1) pop-in;overflow-y:auto;box-shadow:0 20px 50px #00000073}.modal h2{font-family:var(--title);color:var(--red-deep);margin:4px 0 6px;font-size:32px}.modal p{margin:6px 0;line-height:1.4}.modal-big{color:var(--green);justify-content:center;align-items:center;gap:8px;font-size:22px;font-weight:900;display:flex}.settings{margin:8px 0 12px}.modal.wide{max-width:460px}.mail-section{text-align:left;margin:10px 0 16px}.mail-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.mail-head h3{color:var(--red-deep);margin:0;font-size:16px;font-weight:900}.days{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:0;padding:0;list-style:none;display:grid}.day{border:2px solid var(--card-line);background:var(--card);text-align:center;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;display:flex}.day small{color:var(--ink-faint);font-size:10px;font-weight:800}.day span{color:var(--ink-soft);font-size:9.5px;font-weight:800;line-height:1.15}@media (width<=360px){.days{gap:3px}.day{padding:5px 0}.day span{font-size:8.5px}}.day.done{opacity:.75;background:#eef7f0;border-color:#b5dbc0}.day.today{border-color:var(--gold);background:#fff6d6;animation:1s ease-in-out infinite alternate pulse;box-shadow:0 0 0 2px #f2b33d59}.mail-note{color:var(--ink-soft);text-align:center;margin:10px 0 0;font-size:13px}.letters{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.letter{border:2px solid var(--card-line);background:repeating-linear-gradient(#fffaf0 0 21px,#f3e6cf 21px 22px);border-radius:12px;padding:10px 12px}.letter.done{border-color:#8cc79f}.letter.empty{color:var(--ink-faint);background:#f3e6cf;align-items:center;gap:8px;font-size:13px;font-weight:700;display:flex}.letter-text{color:var(--ink);margin:0;font-size:13.5px;font-style:italic;line-height:1.45}.letter-greeting{font-weight:800;display:block}.letter-from{text-align:right;color:var(--ink-soft);font-style:normal;font-weight:800;display:block}.progress.small{height:8px;margin:6px 0}.letter-foot{justify-content:space-between;align-items:center;gap:8px;display:flex}.letter-reward{color:var(--ink-soft);font-size:12px}.letter-reward b{color:var(--green)}.volume{border:2px solid var(--card-line);background:var(--card);text-align:left;color:var(--ink);border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:2px 10px;margin-top:12px;padding:10px 12px;font-weight:800;display:grid}.volume input{width:100%;height:28px;accent-color:var(--red);touch-action:pan-x;grid-area:2/1/auto/-1;margin:0}.volume b{color:var(--ink-soft);font-variant-numeric:tabular-nums}.volume.dim{opacity:.6}@keyframes twinkle{0%{opacity:.45}to{opacity:1}}@keyframes fall{0%{transform:translateY(-10px)}to{transform:translate(var(--drift), 105cqh)}}@keyframes aurora{0%{opacity:.6;transform:translate(-6%)skew(-8deg)}to{opacity:1;transform:translate(6%)skew(8deg)}}@keyframes fly{0%{transform:translate(-110%)}50%{transform:translate(70%,-8px)}to{transform:translate(250%,4px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes hop{0%,to{transform:translateY(0)rotate(-3deg)}50%{transform:translateY(-5px)rotate(3deg)}}@keyframes bounce{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,-6px)}}@keyframes golden-float{0%,to{transform:translate(-50%,-50%)rotate(-6deg)}50%{transform:translate(-50%,-60%)rotate(6deg)}}@keyframes golden-in{0%{transform:translate(-50%,-50%)scale(0)}to{transform:translate(-50%,-50%)scale(1)}}@keyframes float-up{0%{opacity:1;transform:translate(-50%,-50%)}to{opacity:0;transform:translate(-50%,calc(-50% - 70px))}}@keyframes flicker{0%{opacity:.92;transform:scale(1)}to{opacity:1;transform:scale(1.06,.92)}}@keyframes pulse{0%{filter:brightness()}to{filter:brightness(1.25)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-in{0%{opacity:0;transform:translateY(-16px)scale(.95)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}@media (width<=360px){.name{font-size:14.5px}.topbar h1{font-size:24px}}@media (prefers-reduced-motion:reduce){.flake,.sleigh{display:none}.glow,.flames,.tree-star,.elf,.aurora,.bulb,.star,.hint,.scroll-hint,.golden,.buff{animation:none}}.icon-btn .badge{background:var(--gold);color:var(--ink);top:-4px;right:-4px}
