:root{color-scheme:dark;--ink:#192c35;--cream:#f0e8d6;--gold:#d9bd8d;--paper:#f0eadb;--serif:'Cormorant Garamond',Georgia,serif;--sans:'Manrope',sans-serif;--turn:1400ms;--ease:cubic-bezier(.22,1,.36,1)}
*{box-sizing:border-box}html{background:#101923;scrollbar-color:#776c59 #101923}body{margin:0;min-height:100svh;color:var(--cream);font-family:var(--serif);overflow-x:hidden}::selection{background:#b19464;color:#fff}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid #e9c78d;outline-offset:7px}button:disabled{cursor:default}svg{display:block}button svg{fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}button span{pointer-events:none}[hidden]{display:none!important}
.world{position:fixed;inset:0;z-index:-2;overflow:hidden;background:#0b1720}.landscape{position:absolute;inset:-10%;background:url('assets/garden.webp') center 62%/cover;filter:blur(9px) saturate(.65);opacity:.25;transform:scale(1.06);will-change:transform}.shade{position:absolute;inset:0;background:linear-gradient(90deg,#071118c9,transparent 35%,transparent 65%,#071118c9),linear-gradient(#0c1923aa,transparent 35%,#0a1319d9)}.warmth{position:absolute;inset:0;background:#bc925039;opacity:0;transition:opacity 2s}.has-wished .warmth{opacity:1}#atmosphere{position:fixed;inset:0;z-index:3;pointer-events:none;width:100%;height:100%}
header{height:72px;display:flex;justify-content:space-between;align-items:center;padding:0 38px;position:relative;z-index:5}.for-you{font-size:20px;font-style:italic;color:#d7d8ce}.sound{background:transparent;border:0;display:flex;align-items:center;gap:9px;font:11px var(--sans);padding:10px 0 10px 12px;color:#c7ccca}.sound svg{width:19px;height:19px}.sound-waves{display:none}.sound[aria-pressed=true] .sound-waves{display:block}.sound[aria-pressed=true] .sound-slash{display:none}
main{min-height:calc(100svh - 72px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:14px 20px 25px;position:relative}.book-stage{width:100%;position:relative;display:flex;justify-content:center;align-items:center;min-height:200px;perspective:2000px;opacity:0;transform:translateY(25px);transition:opacity 1.2s,transform 1.8s var(--ease)}.ready .book-stage{opacity:1;transform:translateY(0)}.book-position{position:relative;filter:drop-shadow(0 28px 32px #03090ab0);transition:transform var(--turn) cubic-bezier(.45,0,.16,1);transform:translateX(0);isolation:isolate}.book-position.closed:not(.portrait){transform:translateX(-25%) rotate(-2deg)}.book-position.ended:not(.portrait){transform:translateX(25%) rotate(1deg)}#book{position:relative;touch-action:pan-y}.stf__parent{min-width:0!important}.leaf{background:var(--paper);color:var(--ink);overflow:hidden;container-type:inline-size;border-radius:1px 4px 4px 1px}.page-content{position:absolute;inset:0;overflow:hidden}.paper{background:linear-gradient(92deg,#ded8c9 0%,#f4eede 5%,#f4eede 92%,#e8e0d0)}.paper .page-content:after{content:'';position:absolute;inset:0;box-shadow:inset 1px 0 0 #d5cdb9;pointer-events:none}.hardcover{background:#111c2d url('assets/cover.webp') center/100% 100%;color:#e7cea2}.hardcover .page-content{box-shadow:inset 4px 0 8px #050c1e99,inset -1px 0 1px #efcf8a55}.cover-title{position:absolute;left:12%;right:12%;top:32%;text-align:center}.cover-dedication{font-style:italic;font-size:5cqw;color:#e0cda9}.cover-title h1{font-size:21cqw;font-weight:400;line-height:1.04;letter-spacing:-.025em;margin:1.5cqw 0 4cqw;text-shadow:0 1px 1px #030712}.cover-rule{width:12%;height:1px;background:#bea171;margin:0 auto 4cqw}.cover-title p{font-size:5.2cqw;margin:0;color:#e7d4b0}.cover-year{display:block;margin-top:13cqw;font:2.3cqw var(--sans);letter-spacing:.1em;color:#cbb997}.foil-light{position:absolute;inset:-20%;background:linear-gradient(110deg,transparent 33%,#ffdf9a24 47%,#fff3c522 49%,transparent 57%);transform:translateX(-65%);opacity:0;pointer-events:none}.ready .cover-front .foil-light{animation:foil 3.4s .3s ease-in-out 1}
.folio{position:absolute;bottom:4cqw;left:0;right:0;text-align:center;font:2.5cqw var(--serif);color:#696960}.folio.light{color:#c3b699}.dedication-copy{position:absolute;inset:9% 10%;display:flex;flex-direction:column;align-items:center;text-align:center;justify-content:center}.moon{width:10cqw;height:10cqw;fill:#a38b5c;margin-bottom:5cqw}.leaf h2{font-size:11cqw;font-weight:400;letter-spacing:-.025em;line-height:1;margin:0 0 6cqw}.leaf p{font-size:4.6cqw;line-height:1.5;margin:0 0 4cqw}.dedication-copy h2{margin-bottom:6cqw}.dedication-copy .signature,.letter-copy .signature{font-style:italic;font-size:5.8cqw;margin:3cqw 0 0;color:#805f42}.garden-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.08);transition:transform 6s var(--ease)}.visible-page .garden-art{transform:scale(1)}.garden-vignette{position:absolute;inset:50% 0 0;background:linear-gradient(transparent,#061b24a8)}.garden-caption{position:absolute;bottom:8%;left:9%;color:#fff6df;text-shadow:0 2px 15px #091c23}.garden-caption p{font-size:10cqw;line-height:.95;margin:0;letter-spacing:-.025em}.page-fireflies{position:absolute;inset:0;pointer-events:none}.page-fireflies i{position:absolute;left:30%;top:66%;width:3px;height:3px;border-radius:50%;background:#ffe9ab;box-shadow:0 0 7px 2px #e1bf7c80;opacity:0}.visible-page .page-fireflies i{animation:glow 4s infinite ease-in-out}.page-fireflies i:nth-child(2){left:74%;top:58%;animation-delay:1s}.page-fireflies i:nth-child(3){left:57%;top:35%;animation-delay:2s}.page-fireflies i:nth-child(4){left:12%;top:45%;animation-delay:3s}.page-fireflies i:nth-child(5){left:60%;top:80%;animation-delay:1.5s}
.memory-page .page-content{padding:9% 10%}.memory-page h2{font-size:10cqw;margin:0 0 5cqw}.photograph{margin:0;background:#fffdf5;padding:2.3cqw 2.3cqw 0;box-shadow:2px 6px 14px #27352f28;position:relative}.photograph img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.65)}.photograph figcaption{font:italic 3.6cqw/1.3 var(--serif);padding:2.5cqw 0;text-align:center;color:#665d50}.photo-one{width:92%;height:69cqw;transform:rotate(-4deg);margin:0 auto 7cqw}.photo-one img{height:55cqw;object-position:40% 70%}.memory-page .memory-note{font-style:italic;font-size:4.1cqw;text-align:center;color:#78654f}.collage-page .page-content{padding:11% 10%}.photo-two{width:79%;height:60cqw;transform:rotate(7deg);margin-left:13%;z-index:2}.photo-two img{height:47cqw;object-position:50% 8%}.photo-three{width:76%;height:55cqw;transform:rotate(-8deg);margin-top:-7cqw;margin-left:-2%;z-index:3}.photo-three img{height:42cqw;object-position:80% 65%}.collage-note{position:absolute;bottom:8%;right:10%;font-style:italic;font-size:4.6cqw!important}.letter-copy{position:absolute;inset:13% 12% 8%;display:flex;flex-direction:column;justify-content:center}.letter-copy .salutation{font-size:6cqw;font-style:italic;margin-bottom:5cqw}.letter-copy h2{font-size:12.5cqw;line-height:.98;margin-bottom:7cqw}.letter-copy p{font-size:4.7cqw;line-height:1.55}
.finale-page{background:#152b36;color:#f3e8d1}.finale-page .page-content{background:radial-gradient(ellipse at 50% 42%,#42525755,transparent 70%)}.finale-page h2{position:absolute;top:8%;left:0;right:0;text-align:center;font-style:italic;font-size:10cqw;transition:opacity .6s,transform 1s var(--ease)}.cake-theatre{position:absolute;top:25%;left:5%;width:90%;height:59%;transform-origin:50% 85%;transform:translateY(9%) scale(.9);filter:brightness(.6);opacity:0;transition:opacity 1s .25s,transform 1.8s .15s var(--ease),filter 1.6s .2s}.visible-page .cake-theatre{transform:translateY(0) scale(1);filter:brightness(1);opacity:1}.cake{width:100%;height:100%;object-fit:contain;position:relative;z-index:2}.candlelight{position:absolute;left:20%;top:-15%;width:60%;height:70%;background:radial-gradient(ellipse,#f4cb763d,transparent 68%);z-index:1;transition:opacity 1.1s}.candles{position:absolute;left:0;right:0;top:-10%;display:flex;justify-content:center;gap:2.5cqw;z-index:3}.number-candle{position:relative;font-size:16cqw;font-weight:500;line-height:1;color:#efc6a0;text-shadow:1px 1px 0 #a76e4e,2px 3px 4px #20393c55}.wick{position:absolute;left:50%;top:1cqw;height:2cqw;width:1px;background:#5a4432}.flame{position:absolute;left:calc(50% - 1cqw);top:-4cqw;width:2.5cqw;height:5cqw;border-radius:60% 40% 50% 50%;background:radial-gradient(ellipse at 50% 80%,#fffbe6 8%,#ffe3a1 45%,#eaa850 80%);box-shadow:0 0 12px 3px #eac47040;transform-origin:50% 100%;animation:flame 1.1s infinite alternate ease-in-out;transition:opacity .25s,scale .25s}.number-candle:nth-child(2) .flame{animation-delay:-.6s}.smoke{position:absolute;left:50%;top:-8cqw;width:1cqw;height:9cqw;border-radius:50%;background:linear-gradient(transparent,#cbd9d36b);filter:blur(2px);opacity:0}.wish-button{position:absolute;bottom:8%;left:12%;width:76%;display:flex;align-items:center;justify-content:center;gap:9px;background:none;border:0;border-bottom:1px solid #c7ad7955;padding:10px 0;color:#edd8ac;font:clamp(11px,3cqw,14px) var(--sans);z-index:7}.wish-button svg{width:4cqw;height:4cqw}.finale-page #wish-copy{position:absolute;left:5%;right:5%;bottom:2.5%;text-align:center;font-style:italic;font-size:3.5cqw;color:#c5cfcd;margin:0}.finale-page .folio{display:none}.birthday-reveal{position:absolute;inset:8% 0 auto;text-align:center;opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity 1.3s .8s,transform 1.5s .8s var(--ease)}.birthday-reveal p{font-size:9cqw;line-height:1;margin:0}.birthday-reveal em{font-size:13cqw}.birthday-reveal span{font-size:3.5cqw;display:block;margin-top:2cqw;font-style:italic;color:#d7c49e}.wished .flame{opacity:0;scale:.1}.wished .smoke{animation:smoke 2s .1s both}.wished .candlelight{opacity:0}.wished h2{opacity:0;transform:translateY(-10px)}.wished .birthday-reveal{opacity:1;transform:translateY(0)}.wished .cake-theatre{transform:translateY(7%) scale(.84);transition-delay:0s;filter:brightness(.85)}.wished .wish-button{opacity:0;pointer-events:none}.wished #wish-copy{bottom:6%;font-size:4cqw;color:#f0dfbd}
.back-copy{position:absolute;top:39%;left:16%;right:16%;text-align:center}.back-copy p{font-size:11cqw;line-height:1.05}.back-copy span{font-size:4cqw;font-style:italic}.book-controls{display:flex;gap:22px;align-items:center;justify-content:center;margin-top:32px;height:44px;position:relative;z-index:6;opacity:0;transition:opacity .9s .6s}.ready .book-controls{opacity:1}.arrow,.replay{width:44px;height:44px;display:grid;place-items:center;background:none;border:0;color:#cfbea0;transition:opacity .3s,transform .3s}.arrow svg{width:27px;height:20px}.arrow:hover{transform:translateX(-4px)}.arrow:disabled{opacity:.15}.continue{display:flex;align-items:center;gap:28px;min-width:184px;justify-content:space-between;background:transparent;border:0;border-bottom:1px solid #cdb88777;padding:12px 3px;color:#e9dbbd;font:12px var(--sans);transition:border-color .3s}.continue svg{width:28px;height:20px;transition:transform .4s var(--ease)}.continue:hover svg{transform:translateX(5px)}.continue:hover{border-color:#e5c68f}.continue:disabled{opacity:.4}.replay svg{width:20px;height:20px}.replay[hidden]{display:grid!important;visibility:hidden}.page-hint{font:11px var(--sans);color:#b1bdc1;margin:16px 0 0;min-height:16px;opacity:0;transition:opacity 1s .8s}.ready .page-hint{opacity:1}.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;font-style:italic;font-size:24px;color:#dfd7c4;transition:opacity .5s}.loading span{width:30px;height:30px;border:1px solid #cfb58533;border-top-color:#cfb585;border-radius:50%;animation:load 1.8s linear infinite}.ready .loading{opacity:0;pointer-events:none}.error{text-align:center;font:14px var(--sans)}.error button{border:0;background:none;text-decoration:underline}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%)}
@keyframes foil{0%{opacity:0;transform:translateX(-65%)}20%{opacity:1}75%{opacity:1}100%{opacity:0;transform:translateX(65%)}}@keyframes glow{0%,100%{opacity:.1;transform:translate(0,0)}50%{opacity:.95;transform:translate(7px,-14px)}}@keyframes flame{0%{transform:rotate(-4deg) scale(.94,1)}100%{transform:rotate(5deg) scale(1.04,.92)}}@keyframes smoke{0%{opacity:0;transform:translate(0,0) scaleX(.8)}20%{opacity:.6}100%{opacity:0;transform:translate(3cqw,-15cqw) scaleX(3)}}@keyframes load{to{transform:rotate(360deg)}}
@media(max-width:600px){header{height:62px;padding:0 21px}.for-you{font-size:18px}.sound{font-size:11px}.sound svg{width:17px}main{min-height:calc(100svh - 62px);padding:8px 16px 21px}.book-controls{margin-top:26px;gap:13px}.continue{font-size:12px;min-width:177px}.page-hint{font-size:11px;margin-top:10px}.book-position{filter:drop-shadow(0 17px 22px #03090aa0)}.landscape{filter:blur(5px);opacity:.3}}
/* Living cover and direct book interaction. The motion switch controls the card independently. */
:root{--turn:1800ms}
header{justify-content:flex-start;gap:22px}.for-you{margin-right:auto}.sound{margin:0}.motion-toggle{width:30px;height:36px;background:none;border:0;color:#c7ccca;display:grid;place-items:center;padding:5px}.motion-toggle svg{width:16px;height:16px}
main{padding-bottom:35px}#book{cursor:pointer;outline:none}#book:focus-visible{outline:1px solid #dfc99b;outline-offset:12px}.leaf{user-select:none;-webkit-user-select:none}.leaf img{-webkit-user-drag:none}.cover-front{background-image:none;background-color:#101a2c}.living-flowers{position:absolute;inset:0;pointer-events:none;overflow:hidden}.living-flowers i{position:absolute;inset:-1%;background:url('assets/cover.webp') center/100% 100%;will-change:transform;animation:flowers-nw 6s ease-in-out infinite alternate;transform-origin:12% 10%}.living-flowers i:nth-child(1){clip-path:polygon(0 0,52% 0,52% 52%,0 52%)}.living-flowers i:nth-child(2){clip-path:polygon(48% 0,100% 0,100% 52%,48% 52%);transform-origin:90% 8%;animation-name:flowers-ne;animation-delay:-2s}.living-flowers i:nth-child(3){clip-path:polygon(0 48%,52% 48%,52% 100%,0 100%);transform-origin:5% 95%;animation-name:flowers-sw;animation-delay:-3s}.living-flowers i:nth-child(4){clip-path:polygon(48% 48%,100% 48%,100% 100%,48% 100%);transform-origin:95% 95%;animation-name:flowers-se;animation-delay:-1s}.cover-title{z-index:2}.cover-front .foil-light{z-index:3;animation:foil 7s 1s ease-in-out infinite!important}
@keyframes flowers-nw{from{transform:rotate(-1deg) scale(1.015)}to{transform:rotate(1.4deg) scale(1.035)}}
@keyframes flowers-ne{from{transform:rotate(1.2deg) scale(1.02)}to{transform:rotate(-1.5deg) scale(1.035)}}
@keyframes flowers-sw{from{transform:rotate(1deg) scale(1.02)}to{transform:rotate(-1.3deg) scale(1.03)}}
@keyframes flowers-se{from{transform:rotate(-1.2deg) scale(1.02)}to{transform:rotate(1.4deg) scale(1.035)}}
.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation:none!important;transition:none!important}.motion-paused .book-stage,.motion-paused .garden-art{transform:none}.motion-paused #atmosphere{display:none}
@media(max-width:600px){header{gap:13px}main{padding-bottom:25px}}

/* Personal photographs retain their complete original framing. */
.photo-leaf .memory-print{position:absolute;inset:9% 9% 10%;margin:0;display:flex;align-items:center;justify-content:center}
.photo-leaf .memory-print img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;box-sizing:border-box;border:2.2cqw solid #fffaf0;box-shadow:0 1.3cqw 3cqw #35291c26}
.mum-letter .message-copy{position:absolute;inset:10% 11%;display:flex;flex-direction:column;justify-content:center}
.mum-letter .message-copy h2{font-size:9cqw;line-height:1.07;font-weight:400;margin:0 0 7cqw}
.mum-letter .message-copy p{font-size:4.7cqw;line-height:1.42;margin:0 0 4.4cqw}
.mum-letter .message-copy .mum-signature{margin:2cqw 0 0;font-style:italic}.mum-signature em{font-size:8cqw;line-height:1.4}

/* Garden surrounds the keepsake; the photographs live on decorated album pages. */
.landscape{inset:0;background-position:center 48%;filter:none;opacity:1;transform:scale(1.015)}
.shade{background:linear-gradient(180deg,#07162455,transparent 24%,#07162422 75%,#07162480),linear-gradient(90deg,#07162433,transparent 45%,#07162422)}
header{text-shadow:0 2px 9px #061321}.book-position{filter:drop-shadow(0 24px 30px #04101899)}
.photo-leaf{background:radial-gradient(ellipse at 8% 94%,#c6b9ca44,transparent 40%),linear-gradient(92deg,#ded8c9,#f5efdf 7%,#f5efdf 94%,#e8e0d0)}
.album-rule{position:absolute;inset:5% 6%;border:1px solid #bba57955;pointer-events:none}
.memory-kicker{position:absolute;top:9%;left:13%;font:2.1cqw var(--sans);letter-spacing:.22em;color:#8d795c}
.photo-leaf .memory-print{inset:20% 12% 24%;z-index:2;transform:rotate(-3deg)}
.photo-leaf:nth-child(even) .memory-print{transform:rotate(3deg)}
.photo-leaf.memory-2 .memory-print,.photo-leaf.memory-3 .memory-print{inset:15% 14% 19%}
.photo-leaf .memory-print img{max-height:100%;border:2cqw solid #fffcf3;border-bottom-width:7cqw;box-shadow:0 1.8cqw 3.5cqw #35291c30}
.pressed-sprig{position:absolute;right:-1%;bottom:3%;height:43%;width:38%;z-index:3;pointer-events:none;filter:drop-shadow(1px 2px 1px #55453415);transform:rotate(14deg)}
.photo-leaf:nth-child(even) .pressed-sprig{right:auto;left:-6%;bottom:1%;transform:rotate(-23deg) scaleX(-1)}
.photo-tape{position:absolute;top:-2cqw;left:36%;width:28%;height:7cqw;background:repeating-linear-gradient(75deg,#cbb98b66 0 2px,#e0d1a777 2px 5px);transform:rotate(5deg);z-index:4;clip-path:polygon(2% 0,98% 3%,100% 94%,0 100%)}
.memory-1 .photo-tape,.memory-4 .photo-tape,.memory-5 .photo-tape,.memory-6 .photo-tape{display:none}
.photo-corner{position:absolute;width:7cqw;height:7cqw;border-color:#aa8755;border-style:solid;opacity:.7;z-index:4}.corner-one{left:-3cqw;top:-3cqw;border-width:1px 0 0 1px}.corner-two{right:-3cqw;bottom:-3cqw;border-width:0 1px 1px 0}
.handwritten-note{position:absolute;left:12%;right:12%;bottom:13%;margin:0!important;text-align:center;font-size:5.5cqw!important;line-height:1.1!important;font-style:italic;color:#665248;transform:rotate(-3deg);z-index:4}
.tiny-star{position:absolute;left:16%;bottom:7%;color:#ad8852;font-size:8cqw;transform:rotate(12deg)}
.keepsake-page .pressed-sprig{height:57%;width:54%;bottom:-5%;right:-4%;opacity:.9}
.keepsake-copy{position:absolute;inset:22% 10%;text-align:center}.small-label{font:2.3cqw var(--sans);letter-spacing:.18em;color:#927b55}.keepsake-copy h2{font-size:11cqw;line-height:1.05;margin:10cqw 0 7cqw;font-weight:400}.keepsake-copy p{font-style:italic;font-size:5cqw}.keepsake-heart{font-size:8cqw;color:#a58072}
@media(max-width:679px){.landscape{background-position:40% center}.for-you{max-width:58%;font-size:16px}header{padding:0 22px}}

/* Independent blossom movement, with all motion controlled by the pause switch. */
.garden-breeze{position:absolute;inset:0;background:inherit;background-size:cover;pointer-events:none;transform-origin:10% 20%;will-change:transform;animation:branch-breeze 8s ease-in-out infinite alternate}
.branch-left{mask-image:radial-gradient(ellipse 30% 29% at 15% 19%,#000 35%,transparent 95%)}
.branch-top{mask-image:radial-gradient(ellipse 28% 25% at 50% 0%,#000 40%,transparent 95%);transform-origin:30% 0%;animation-duration:10s;animation-delay:-4s}
.flowers-low{mask-image:linear-gradient(transparent 58%,#000 88%);transform-origin:50% 100%;animation-name:flower-breeze;animation-duration:6s;animation-delay:-2s}
@keyframes branch-breeze{from{transform:rotate(-.55deg) translateY(-2px)}to{transform:rotate(.65deg) translateY(3px)}}
@keyframes flower-breeze{from{transform:skewX(-.6deg)}to{transform:skewX(.7deg)}}
.pressed-sprig{--sprig-base:14deg;transform-origin:50% 95%;animation:sprig-breeze 5.5s ease-in-out infinite alternate;animation-play-state:paused}
.photo-leaf:nth-child(even) .pressed-sprig{--sprig-base:-23deg;transform:rotate(-23deg);animation-delay:-2.5s}
.visible-page .pressed-sprig{animation-play-state:running}
@keyframes sprig-breeze{from{transform:rotate(calc(var(--sprig-base) - 3deg))}to{transform:rotate(calc(var(--sprig-base) + 4deg))}}
.motion-paused .garden-breeze,.motion-paused .pressed-sprig{animation-play-state:paused!important}
.photo-leaf .memory-print{inset:16% 12% 20%}

/* Wax candles are anchored to the icing, not floating above the cake. */
.candles{top:auto;bottom:83%;height:14cqw;left:24%;right:24%;gap:4cqw;align-items:flex-end;cursor:pointer;pointer-events:auto;z-index:5}
.wax-candle{position:relative;flex:0 0 1.8cqw;height:11cqw;border-radius:.7cqw .7cqw .2cqw .2cqw;background:repeating-linear-gradient(135deg,transparent 0 2.2cqw,#b77f9344 2.3cqw 3cqw),linear-gradient(90deg,#b98391,#ffe2df 45%,#cb9caa);box-shadow:1px 1px 2px #482f2440}
.wax-candle:nth-child(even){height:13cqw;background:repeating-linear-gradient(135deg,transparent 0 2.2cqw,#a98c5544 2.3cqw 3cqw),linear-gradient(90deg,#bfa371,#fff0c8 45%,#d5b77f)}
.wax-candle .wick{top:-1.4cqw;height:1.5cqw;left:48%;width:2px}.wax-candle .flame{top:-5.8cqw;left:-.55cqw;width:2.9cqw;height:5cqw;animation-delay:calc(var(--c)*-.27s);box-shadow:0 0 2cqw #ffd07888,0 0 5cqw #edb75e44}
.wax-candle .smoke{top:-10cqw;left:10%;width:1.4cqw;height:10cqw;background:linear-gradient(transparent,#e2e5df99);filter:blur(2px)}
.blowing .wax-candle .flame{animation:wind-flame .65s ease-in forwards;animation-delay:calc(var(--c)*.085s)}
.blowing .wax-candle .smoke{animation:candle-smoke 2.7s ease-out both;animation-delay:calc(.55s + var(--c)*.085s)}
.blowing .wax-candle .smoke-second{animation-delay:calc(.85s + var(--c)*.085s);left:45%;height:8cqw}
@keyframes wind-flame{0%{transform:rotate(0) scale(1);opacity:1}35%{transform:rotate(-62deg) scale(.8,1.3);opacity:1}65%{transform:rotate(-78deg) scale(.5,1.5);opacity:.8}100%{transform:rotate(-88deg) scale(.05,.5);opacity:0}}
@keyframes candle-smoke{0%{opacity:0;transform:translate(0,0) scaleX(.5) rotate(0)}12%{opacity:.65}45%{opacity:.38;transform:translate(-3cqw,-5cqw) scaleX(1.7) rotate(-18deg)}100%{opacity:0;transform:translate(4cqw,-20cqw) scaleX(3.5) rotate(22deg)}}
.blow-gust{position:absolute;inset:-5% 0 50%;pointer-events:none;z-index:6;opacity:0}.blow-gust i{position:absolute;right:-12%;top:25%;width:55%;height:9cqw;border-top:1px solid #ebf6ee88;border-radius:50%;transform:rotate(-12deg)}.blow-gust i:nth-child(2){top:36%;width:66%;height:12cqw}.blow-gust i:nth-child(3){top:48%;width:44%}.blowing .blow-gust{animation:air-gust 1s ease-out both}@keyframes air-gust{0%{opacity:0;transform:translateX(12%)}25%{opacity:.8}100%{opacity:0;transform:translateX(-45%)}}
.blowing .candlelight{opacity:0;transition:opacity 1.2s}.blowing .wish-button{opacity:0;pointer-events:none}.wished .cake-theatre{transform:translateY(0) scale(1)}
.motion-paused .blowing .wax-candle .flame{animation-duration:.01s}.motion-paused .blow-gust{display:none}

/* The wax and cake are one illustration; only fire and smoke are composited. */
.cake-theatre{top:23%;left:3%;width:94%;height:auto;aspect-ratio:1;cursor:pointer;filter:none!important}
.cake{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
#cake-fire{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none}
.candlelight{display:none}.wished .cake-theatre{transform:none;filter:none}
.birthday-reveal{inset:5% 0 auto}.birthday-reveal p{font-size:7cqw}.birthday-reveal em{font-size:10cqw}
