.advent-grid{grid-template-columns:repeat(5,1fr);gap:.5rem;margin:0;padding:0;list-style:none;display:grid}@media (min-width:30rem){.advent-grid{gap:.65rem}}.advent-door{aspect-ratio:1;cursor:pointer;perspective:500px;-webkit-tap-highlight-color:transparent;background:0 0;border:0;width:100%;padding:0;display:block;position:relative}.advent-door:focus-visible{outline:2px solid var(--g-accent);outline-offset:3px;border-radius:.6rem}.advent-inside{background:radial-gradient(circle at 50% 55%,#ffe7ab,#f2b765 70%);border-radius:.6rem;place-items:center;font-size:clamp(1rem,5.2vw,1.6rem);display:grid;position:absolute;inset:0;box-shadow:inset 0 0 12px #783c0a73}.advent-leaf{color:#fff6df;transform-origin:0;backface-visibility:hidden;background:linear-gradient(145deg,#c8374a,#8e2236);border-radius:.6rem;place-items:center;transition:transform .7s cubic-bezier(.3,.9,.3,1);display:grid;position:absolute;inset:0;box-shadow:0 2px 6px #0000004d,inset 0 0 0 2px #f2c77b8c}.advent-leaf b{font-family:var(--font-display,serif);font-size:clamp(1rem,5vw,1.45rem);font-style:italic}.advent-door:nth-child(odd) .advent-leaf{background:linear-gradient(145deg,#2f5d4a,#1d4132)}.advent-opened .advent-leaf,.advent-picked:not(.advent-locked) .advent-leaf{transform:rotateY(-112deg)}.advent-locked .advent-leaf{filter:saturate(.55)brightness(.8)}.advent-locked .advent-inside{opacity:0}.advent-today .advent-leaf{animation:2.2s ease-in-out infinite advent-glow}@keyframes advent-glow{0%,to{box-shadow:0 2px 6px #0000004d,inset 0 0 0 2px #f2c77b8c,0 0 #f2c77b80}50%{box-shadow:0 2px 6px #0000004d,inset 0 0 0 2px #f2c77be6,0 0 16px 4px #f2c77b8c}}.advent-shake{animation:.45s ease-in-out advent-shake}@keyframes advent-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}45%{transform:translate(4px)}70%{transform:translate(-3px)}}.advent-panel-wrap{min-height:0}.advent-note{text-align:center;background:var(--g-bg);color:var(--g-text);border-radius:1rem;margin-top:1.2rem;padding:1.1rem 1.2rem;animation:.6s cubic-bezier(.22,1,.36,1) both advent-slide;position:relative}.advent-note-locked{color:var(--g-muted);font-size:.95rem}.advent-emoji{margin-bottom:.3rem;font-size:2.2rem;display:block}.advent-text{overflow-wrap:anywhere;font-size:1.35rem;line-height:1.35}@keyframes advent-slide{0%{opacity:0;transform:translateY(14px)scale(.98)}to{opacity:1;transform:none}}.advent-puff{pointer-events:none;width:0;height:0;position:absolute;top:0;left:50%}.advent-puff i{opacity:0;width:7px;height:7px;animation:1.3s ease-out both advent-puff;animation-delay:calc(var(--i) * 40ms);background:#fff;border-radius:50%;position:absolute}@keyframes advent-puff{0%{opacity:.95;transform:translate(0)scale(.6)}to{opacity:0;transform:translate(calc((var(--i) - 4) * 16px), calc(40px + var(--i) * 4px)) scale(1.1)}}@media (prefers-reduced-motion:reduce){.advent-leaf,.advent-note{transition:none;animation:none}.advent-today .advent-leaf,.advent-puff i,.advent-shake{animation:none}}
.wrapped-wrap{justify-content:center;display:flex}.wrapped{aspect-ratio:9/15;color:#f7f4ee;touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:1.8rem;width:min(100%,22rem);max-height:78svh;transition:background .5s;position:relative;overflow:hidden;box-shadow:0 18px 40px #0006;container-type:inline-size}.wrapped-bars{z-index:3;gap:.25rem;display:flex;position:absolute;top:.8rem;left:.9rem;right:.9rem}.wrapped-bar{background:#ffffff47;border-radius:3px;flex:1;height:3px;position:relative;overflow:hidden}.wrapped-bar-done{background:#fffffff2}.wrapped-fill{transform-origin:0;background:#fff;animation:linear forwards wrapped-fill;position:absolute;inset:0;transform:scaleX(0)}.wrapped[data-paused=true] .wrapped-fill{animation-play-state:paused}.wrapped[data-reduced=true] .wrapped-fill{animation:none;transform:scaleX(1)}@keyframes wrapped-fill{to{transform:scaleX(1)}}.wrapped-slide{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.6rem;padding:3rem 1.6rem 2rem;animation:.55s cubic-bezier(.22,1,.36,1) both wrapped-in;display:flex;position:absolute;inset:0}@keyframes wrapped-in{0%{opacity:0;transform:translateY(18px)scale(.97)}to{opacity:1;transform:none}}.wrapped-kicker{letter-spacing:.24em;text-transform:uppercase;color:#f2c77b;font-size:.78rem}.wrapped-big{color:#fff3d0;text-shadow:0 0 30px #f2c77b66;overflow-wrap:anywhere;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.6rem,17cqw,4rem);font-weight:700;line-height:1.05}.wrapped-sub{opacity:.8;font-size:1rem}.wrapped-emoji{font-size:2.6rem}.wrapped-num{font-variant-numeric:tabular-nums;color:#fff3d0;text-shadow:0 0 36px #f4a6c373;font-family:Georgia,Times New Roman,serif;font-size:clamp(3.4rem,26cqw,6rem);font-weight:700;line-height:1}.wrapped-label{color:#e6e9f7;overflow-wrap:anywhere;max-width:16rem;font-size:1.2rem}.wrapped-top{flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0}.wrapped-photo{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.wrapped-top:after{content:"";background:linear-gradient(#0b0e1a26 30%,#0b0e1aeb);position:absolute;inset:0}.wrapped-top-text{z-index:2;text-align:left;padding:1.4rem 1.4rem 1.8rem;position:relative}.wrapped-title{color:#fff3d0;overflow-wrap:anywhere;margin-top:.3rem;font-size:clamp(1.6rem,9cqw,2.1rem);line-height:1.15}.wrapped-body{opacity:.9;margin-top:.5rem;font-size:.98rem}.wrapped-replay{z-index:4;color:#2a1a05;background:#f2c77b;border-radius:999px;min-height:2.8rem;margin-top:1rem;padding:0 1.4rem;font-weight:600;position:relative}.wrapped-zone{z-index:2;-webkit-tap-highlight-color:transparent;cursor:pointer;background:0 0;border:0;width:34%;padding:0;position:absolute;top:0;bottom:0}.wrapped-zone-prev{left:0}.wrapped-zone-next{width:66%;right:0}.wrapped-zone:disabled{pointer-events:none}.wrapped-zone:focus-visible{outline-offset:-4px;outline:2px solid #f2c77b}.wrapped-slide:has(.wrapped-replay){z-index:4}.lantern-sky{grid-template-columns:repeat(auto-fit,minmax(4.5rem,1fr));gap:.4rem .8rem;margin:0;padding:1.2rem 0 .4rem;list-style:none;display:grid}.lantern-sky li{animation:5.5s ease-in-out infinite lantern-float;animation-delay:calc(var(--n) * -.9s);justify-content:center;display:flex}.lantern-sky li:nth-child(3n+2){margin-top:-.9rem}@keyframes lantern-float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.lantern{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex-direction:column;align-items:center;padding:.3rem;display:flex}.lantern:focus-visible{outline:2px solid var(--g-accent);outline-offset:3px;border-radius:.7rem}.lantern-cap{background:#8a5a1c;border-radius:.2rem;width:2.4rem;height:.35rem}.lantern-foot{width:1.8rem}.lantern-body{color:#5a2a07;opacity:.72;background:radial-gradient(circle at 50% 55%,#ffd98a,#e9892f 80%);border-radius:1.2rem/1.5rem;place-items:center;width:3.2rem;height:3.9rem;font-family:Georgia,serif;font-size:1rem;transition:opacity .5s,box-shadow .6s,transform .5s;display:grid;box-shadow:0 0 #ffbe5a00}.lantern-lit .lantern-body{opacity:1;box-shadow:0 0 22px 6px #ffbe5a8c}.lantern-shown .lantern-body{transform:scale(1.12);box-shadow:0 0 34px 12px #ffbe5ab3}.lantern-wish{text-align:center;min-height:4.2rem;margin-top:.8rem}.lantern-wish-text{color:var(--g-text);overflow-wrap:anywhere;font-size:1.4rem;line-height:1.35;animation:.5s both wrapped-in}@media (prefers-reduced-motion:reduce){.lantern-sky li,.wrapped-slide,.lantern-wish-text{animation:none}.lantern-body{transition:none}}
.coupon{background:color-mix(in srgb, var(--g-accent) 13%, var(--g-bg));border:1px solid color-mix(in srgb, var(--g-accent) 40%, transparent);border-radius:16px;align-items:stretch;transition:transform .6s cubic-bezier(.22,1,.36,1),opacity .5s,filter .5s;display:flex;position:relative}.coupon:before,.coupon:after{content:"";background:var(--g-surface);border:1px solid color-mix(in srgb, var(--g-accent) 40%, transparent);border-radius:9999px;width:16px;height:16px;margin-top:-8px;position:absolute;top:50%}.coupon:before{clip-path:inset(0 0 0 50%);left:-9px}.coupon:after{clip-path:inset(0 50% 0 0);right:-9px}.coupon-main{text-align:left;flex:1;min-width:0;padding:1rem 1.1rem 1rem 1.4rem}.coupon-stub{border-left:2px dashed color-mix(in srgb, var(--g-accent) 50%, transparent);letter-spacing:.18em;text-transform:uppercase;color:var(--g-muted);flex-direction:column;flex:0 0 6.6rem;justify-content:center;align-items:center;gap:.35rem;padding:.75rem .9rem;font-size:.7rem;display:flex}.coupon-tearing{transform-origin:0 100%;animation:.85s cubic-bezier(.34,1.2,.64,1) both coupon-tear}@keyframes coupon-tear{0%{transform:none}35%{transform:translate(10px)rotate(-3.5deg)}to{transform:translate(0)rotate(0)}}.coupon-used{filter:grayscale(.85);opacity:.62}.coupon-stamp{border:2px solid var(--g-accent);color:var(--g-accent);letter-spacing:.12em;text-transform:uppercase;background:color-mix(in srgb, var(--g-bg) 70%, transparent);border-radius:6px;padding:.15rem .6rem;font-size:.8rem;font-weight:700;animation:.45s cubic-bezier(.34,1.56,.64,1) both coupon-stamp;position:absolute;top:50%;right:4.3rem;transform:translateY(-50%)rotate(-9deg)}@keyframes coupon-stamp{0%{opacity:0;transform:translateY(-50%)rotate(-9deg)scale(2.2)}to{opacity:1;transform:translateY(-50%)rotate(-9deg)scale(1)}}@media (prefers-reduced-motion:reduce){.coupon-tearing,.coupon-stamp{animation:none}}
.slam-page{color:#2b2540;transform-origin:0;background:repeating-linear-gradient(#0000 0 1.85rem,#5898b273 1.85rem 1.9rem),#fffdf6;border-radius:6px 14px 14px 6px;padding:1.3rem 1.2rem 1.2rem 2.6rem;position:relative;box-shadow:0 10px 24px -14px #0000008c}.slam-page:before{content:"";background:#d650508c;width:2px;position:absolute;top:0;bottom:0;left:1.9rem}.slam-page:after{content:"";background:radial-gradient(circle, var(--g-surface) 0 .28rem, transparent .3rem) 0 0 / .7rem 33%;width:.7rem;position:absolute;top:18%;bottom:18%;left:.6rem}.slam-turn{animation:.55s cubic-bezier(.22,1,.36,1) both slam-turn}@keyframes slam-turn{0%{opacity:0;transform:perspective(900px)rotateY(-62deg)}to{opacity:1;transform:perspective(900px)rotateY(0)}}.slam-q{letter-spacing:.14em;text-transform:uppercase;color:#6a5fa0;font-size:.78rem;font-weight:700}.slam-a{font-family:var(--font-caveat), "Segoe Script", cursive;overflow-wrap:anywhere;min-height:5.5rem;margin-top:.4rem;font-size:clamp(1.45rem,7cqw,1.9rem);line-height:1.5}.slam-fill label{text-align:left;display:block}.slam-fill .slam-q{color:var(--g-accent);margin-bottom:.25rem;display:block}@media (prefers-reduced-motion:reduce){.slam-turn{animation:none}}
.ripple{container-type:inline-size}.ripple-rings{place-items:center;height:clamp(9rem,48cqw,13rem);display:grid;position:relative}.ripple-core{background:radial-gradient(circle at 35% 30%, #ffe08a, var(--g-accent) 70%);width:3.2rem;height:3.2rem;box-shadow:0 0 22px color-mix(in srgb, var(--g-accent) 60%, transparent);border-radius:9999px;animation:2.8s ease-in-out infinite ripple-beat}@keyframes ripple-beat{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.ripple-ring{width:calc(3.2rem + var(--r) * clamp(1.5rem, 8cqw, 2.4rem));aspect-ratio:1;margin:calc((3.2rem + var(--r) * clamp(1.5rem, 8cqw, 2.4rem)) / -2) 0 0 calc((3.2rem + var(--r) * clamp(1.5rem, 8cqw, 2.4rem)) / -2);border:2px solid color-mix(in srgb, var(--g-accent) 55%, transparent);opacity:0;border-radius:9999px;transition:opacity .5s,transform .9s cubic-bezier(.22,1,.36,1);position:absolute;top:50%;left:50%;transform:scale(.4)}.ripple-ring-on{opacity:calc(1 - var(--r) * .09);animation:1.1s ease-out both ripple-out;transform:scale(1)}@keyframes ripple-out{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--g-accent) 45%, transparent)}to{box-shadow:0 0 0 1.4rem #0000}}.ripple-steps{gap:.6rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.ripple-step{background:var(--g-bg);color:var(--g-text);opacity:.18;border-radius:.9rem;align-items:baseline;gap:.75rem;padding:.7rem .9rem;transition:opacity .55s,transform .55s cubic-bezier(.22,1,.36,1);display:flex;transform:translateY(6px)}.ripple-step-on{opacity:1;transform:none}.ripple-dot{background:var(--g-accent);border-radius:9999px;flex:none;width:.55rem;height:.55rem;transform:translateY(-.05rem)}@media (prefers-reduced-motion:reduce){.ripple-core,.ripple-ring-on{animation:none}.ripple-ring,.ripple-step{transition:none}}
