/* Warm, readable text and a cake that feels like a real birthday centrepiece. */
:root{--muted:#ccc8d7;--gold:#f1d099}
.lead{font-size:16px;color:#d6d1df}.primary{font-size:15px;min-height:58px;font-weight:600}.text-button{font-size:14px;color:#f2d3a0;min-height:44px}.hint,.footnote{font-size:13px;line-height:1.7;color:#c5bfd0}.sound{font-size:13px;color:#e1dbe6;border-color:#85788e80}.garden-instruction{font-size:14px;color:#ead8ac}.garden-copy .lead{font-size:15px}.garden-actions .text-button{font-size:13px}.garden-actions .primary{font-size:14px}.question-card{max-width:560px;padding-top:10px}.question-count{font-size:11px;letter-spacing:1.2px;color:#e3d0ae}.question-card .lead{font-size:15px;line-height:1.75;color:#ddd4e2}.question-progress{background:#746c8555;height:3px}.answer-choice{font-size:16px;line-height:1.5;min-height:56px;padding:15px 20px;background:#26283d;border:1px solid #a68c6488;color:#fff2dc;box-shadow:0 4px 18px #0001}.answer-choice:hover{background:#34364b;color:#fff7e8;border-color:#f3ce85}.answer-choice:disabled{opacity:1;background:#1d2033;color:#d5d0de;border-color:#70677c;cursor:default}.answer-choice.chosen{color:#fff3d5;background:#59452f;border-color:#ffda8c;box-shadow:0 0 22px #f2c77a14}.answer-reveal p{font-size:16px;line-height:1.75;color:#fff0de;background:#25243b;padding:18px 20px;border:1px solid #85728d77;border-radius:12px}.answer-reveal .primary{font-size:15px;min-height:52px}#skip-questions{font-size:13px;color:#e2cfae;margin-top:15px}.question-footnote{font-size:12px;color:#bdb6ca}.letter p{font-size:15px;line-height:1.85;color:#4c3744}.letter .letter-date{color:#765664;font-size:10px}.letter h3{color:#79485f}.letter .signature{font-size:23px;color:#674455}#photo-message{font-size:25px;color:#fff2dd}.photo-count{font-size:12px;color:#e2c29d}.photo-nav button{color:#fff1da;border-color:#c4a981;min-height:48px}.eyebrow{color:#f1d099}.finale .lead{font-size:17px}.final-love{color:#dfc6d6}.question-choices{gap:12px}
#celebration{position:fixed;inset:0;width:100%;height:100%;z-index:8;pointer-events:none}
.cake-scene{--wind:0;gap:35px;padding-top:20px;padding-bottom:45px}.cake-scene .copy{max-width:520px;flex:1}.cake-scene h2{font-size:clamp(48px,5.4vw,77px)}.cake-scene .lead{font-size:16px;line-height:1.8;margin-bottom:26px}.cake-real-art{position:relative;width:51%;max-width:600px;height:auto;aspect-ratio:1;flex-shrink:0;display:block;isolation:isolate;align-self:center}.real-cake{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 25px 35px #0006);z-index:2;animation:cake-arrives 1.5s ease both}.cake-glow{position:absolute;inset:5% -8% -5%;z-index:0;background:radial-gradient(ellipse at 52% 50%,#eac3752b,transparent 65%);transition:opacity 1s}.cake-orbit{position:absolute;left:8%;right:8%;bottom:2%;height:18%;border:1px solid #dfc59b20;border-radius:50%;transform:rotate(-7deg);box-shadow:0 0 45px #e7b75b0b;z-index:1}.number-candle{position:absolute;top:7%;width:11%;height:18%;z-index:4;filter:drop-shadow(2px 5px 4px #6c462e55);transform-origin:center bottom}.number-two{left:60%;transform:rotate(-5deg)}.number-five{left:73%;top:8%;transform:rotate(4deg)}.number-shape{display:block;width:100%;height:100%;overflow:visible}.wick{position:absolute;width:2px;height:9px;background:#5b3422;left:49%;top:3%;border-radius:2px}.real-flame{position:absolute;left:calc(50% - 8px);top:calc(3% - 25px);width:16px;height:29px;transform-origin:center bottom;z-index:2;border-radius:55% 45% 48% 52%;background:radial-gradient(ellipse at 50% 75%,#fffef0 12%,#fff0a9 38%,#ffbb52 65%,#ef773a 95%);box-shadow:0 0 12px 5px #ffd47750,0 0 40px 17px #efb55c25;animation:real-flicker .75s ease-in-out infinite alternate;transition:opacity .3s}.real-flame:after{content:'';position:absolute;left:5px;bottom:1px;width:6px;height:12px;background:#fff9dc;border-radius:50%;filter:blur(1px)}.number-five .real-flame{animation-delay:-.35s}.windy .real-flame{animation:wind-flicker .13s ease-in-out infinite alternate;transform:rotate(calc(var(--wind) * 68deg)) scaleX(calc(1 + var(--wind) * .7)) scaleY(calc(1 - var(--wind) * .3))}.number-candle.out .real-flame{animation:flame-out .35s ease forwards}.number-candle.out .wick{background:#d78548;box-shadow:0 0 5px #ffbc6c80}.smoke{position:absolute;width:75px;height:140px;left:calc(50% - 22px);bottom:94%;pointer-events:none;overflow:visible;opacity:0}.smoke svg{width:100%;height:100%;overflow:visible}.smoke path{fill:none;stroke:#ece5f3;stroke-width:2.5;stroke-linecap:round;filter:blur(1px);opacity:0}.number-candle.out .smoke{opacity:1}.number-candle.out .smoke path{animation:smoke-rise 3s ease-out both}.number-candle.out .smoke path:nth-child(2){animation-delay:.28s;stroke-width:3.5}.number-candle.out .smoke path:nth-child(3){animation-delay:.57s;stroke-width:1.5}.wind-lines{position:absolute;left:0;top:6%;width:100%;height:40%;z-index:5;pointer-events:none;opacity:0;transition:opacity .25s;overflow:hidden}.windy .wind-lines{opacity:calc(.2 + var(--wind) * .8)}.wind-lines i{position:absolute;left:-35%;top:35%;width:44%;height:38px;border-top:1px solid #fff0c185;border-radius:50%;transform:rotate(-9deg);animation:breeze-pass 1.1s ease-in infinite}.wind-lines i:nth-child(2){top:53%;width:32%;animation-delay:-.45s;animation-duration:1.4s;opacity:.65}.wind-lines i:nth-child(3){top:25%;width:26%;animation-delay:-.8s;animation-duration:1.25s;opacity:.5}.cake-stardust{position:absolute;inset:0;z-index:1;pointer-events:none}.cake-stardust b{position:absolute;font-weight:400;font-size:22px;color:#efcd8b;animation:twinkle 3s ease infinite alternate}.cake-stardust b:nth-child(1){left:9%;top:16%}.cake-stardust b:nth-child(2){right:3%;top:35%;animation-delay:-1s}.cake-stardust b:nth-child(3){left:1%;bottom:18%;font-size:15px;animation-delay:-2s}.cake-tag{position:absolute;left:0;right:0;bottom:-26px;text-align:center;font:italic 20px 'Cormorant Garamond',Georgia,serif;color:#e4c59a}.blow-controls{max-width:390px}.breeze-button{background:#f4d293;border-color:#f4d293;color:#35253b;gap:18px;width:100%;padding:19px 22px;min-height:62px;box-shadow:0 5px 35px #ecc37310}.breeze-button #hold-label{font-size:15px;line-height:1.4;font-weight:600}.breeze-button svg{flex-shrink:0;z-index:1}.breeze-button:disabled{cursor:default;transform:none;opacity:1;color:#4c3441}.breath-meter{height:3px;background:#655b7044;margin-top:13px;overflow:hidden;border-radius:5px}.breath-meter i{display:block;width:0;height:100%;background:#f5d393;box-shadow:0 0 10px #f5d393;transition:width .06s linear}.blow-status{font-size:14px;line-height:1.65;color:#e2d9e9;min-height:46px;margin:12px 0 14px}.mic-button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:50px;padding:12px 17px;border:1px solid #9c859d99;border-radius:8px;background:#29263d;color:#f4e5d0;font-size:14px}.mic-button svg{flex-shrink:0;color:#f4d293}.mic-button:hover{background:#36324a;border-color:#e2c097}.mic-button.listening{border-color:#f0ca83;background:#59452f;box-shadow:0 0 20px #f3ca851c}.mic-button.listening svg{animation:twinkle .65s ease infinite alternate}.mic-button:disabled{opacity:.7;cursor:default}.mic-privacy{font-size:12px;line-height:1.6;margin:9px 0 0;color:#c9c1d2}.wish-arrived{border:1px solid #e9c77b66;border-radius:12px;background:linear-gradient(110deg,#dcb16e16,#efc8d80a);padding:15px 18px;margin-top:14px;animation:arrive .8s ease both}.wish-arrived strong{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:26px;color:#ffe3ad;font-weight:500}.wish-arrived span{display:block;font-size:14px;line-height:1.7;color:#e9daea;margin-top:2px}#relight{font-size:13px;margin-top:8px}.cake-scene .after-wish{font-size:15px;margin-top:20px}.wish-sent .mic-button,.wish-sent .mic-privacy{display:none}.blown .cake-glow{opacity:.6}.blown .cake-orbit{border-color:#f5ce8c55}.question-card h2:focus{outline:none}
@keyframes real-flicker{from{transform:rotate(-4deg) scale(.94,1.04)}to{transform:rotate(5deg) scale(1.05,.96)}}@keyframes wind-flicker{from{margin-left:0;opacity:1}to{margin-left:3px;opacity:.83}}@keyframes flame-out{0%{opacity:1;transform:rotate(65deg) scaleX(1.6)}100%{opacity:0;transform:rotate(85deg) scale(.1);box-shadow:none}}@keyframes smoke-rise{0%{opacity:0;transform:translate(0,32px) scale(.4,.35)}20%{opacity:.48}65%{opacity:.2}100%{opacity:0;transform:translate(28px,-55px) scale(1.45,1.25)}}@keyframes breeze-pass{to{left:115%;transform:translateY(-15px) rotate(-9deg)}}@keyframes cake-arrives{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:760px){.lead{font-size:15px}.primary{font-size:15px}.footnote{font-size:12px}.welcome .lead{font-size:15px}.welcome .footnote{max-width:290px}.welcome .eyebrow{font-size:10px;letter-spacing:1.5px}.garden-copy .eyebrow{font-size:9px}.garden-copy .lead{font-size:13px;display:block}.garden-instruction{font-size:12px;min-height:37px}.garden-wrap{margin-top:-2px}.garden-actions .primary{font-size:13px;min-height:50px;gap:12px}.garden-actions .text-button{font-size:12px}.garden-actions{gap:13px}.questions-scene{padding-top:16px;padding-bottom:26px}.question-card{padding:0 0 15px}.question-card>.eyebrow{font-size:10px;letter-spacing:1.5px}.question-count{font-size:10px;letter-spacing:1.2px}.question-card .lead{font-size:14px;margin-bottom:20px}.question-card h2{font-size:clamp(36px,9.2vw,44px)}.question-flower{width:64px;height:64px;margin-bottom:16px}.question-choices{gap:11px}.answer-choice{font-size:16px;min-height:56px;padding:15px 12px}.answer-reveal p{font-size:15px;padding:15px 16px}.answer-reveal .primary{font-size:15px;min-height:53px}.question-footnote{font-size:11px;display:block}.letter p{font-size:15px;line-height:1.8}.letter{padding:24px}.letter .letter-date{font-size:9px}.letter-scene.opened .letter{max-height:calc(100dvh - var(--header-size) - var(--footer-size) - 190px)}.letter-next{font-size:14px}.finale .lead{font-size:16px}.final-love{font-size:19px}.sound{font-size:12px}.cake-scene{gap:0;padding-top:15px;padding-bottom:28px;justify-content:flex-start}.cake-scene .copy{display:contents}.cake-scene .eyebrow{order:0;text-align:center;font-size:10px;letter-spacing:1.7px;margin-bottom:13px}.cake-scene h2{order:1;text-align:center;font-size:clamp(43px,11vw,54px);margin-bottom:14px}.cake-scene .lead{order:2;text-align:center;font-size:14px;line-height:1.7;margin-bottom:0}.cake-real-art{order:3;width:min(100%,430px);max-width:none;height:auto;aspect-ratio:1;margin:10px auto 34px;align-self:center}.number-candle{width:11.5%;height:18.5%}.real-flame{width:13px;height:25px;left:calc(50% - 6.5px);top:calc(3% - 23px)}.real-flame:after{width:5px;height:10px;left:4px}.smoke{width:55px;height:115px;left:calc(50% - 18px)}.cake-tag{bottom:-21px;font-size:18px}.cake-scene .blow-controls{order:4;width:100%;max-width:390px;align-self:center;text-align:center}.breeze-button{min-height:60px;padding:17px 20px}.breeze-button #hold-label{font-size:15px}.blow-status{font-size:14px;margin:12px 3px;min-height:44px}.mic-button{font-size:14px;min-height:50px}.mic-privacy{font-size:12px}.cake-scene .after-wish{order:5;align-self:center;font-size:15px}.wish-arrived strong{font-size:26px}.cake-stardust b{font-size:19px}.finale .text-button{font-size:14px}}
@media(max-width:760px) and (max-height:780px){.cake-scene h2{font-size:40px}.cake-real-art{width:min(84%,310px);margin-top:5px;margin-bottom:32px}.cake-scene .lead{font-size:13px}.garden-copy h2{font-size:32px}.garden-copy .lead{font-size:12px}.garden-wrap{width:min(78%,320px)}.question-flower{width:51px;height:51px}.question-card h2{font-size:35px}.answer-choice{min-height:54px}.question-footnote{font-size:11px}.letter-scene.opened .letter{max-height:46dvh}}
@media(prefers-reduced-motion:reduce){.real-cake{animation:none}.wind-lines{display:none}.real-flame{animation:none}.number-candle.out .real-flame{opacity:0}.number-candle.out .smoke path{animation:smoke-rise 1s ease-out both}.cake-stardust b{animation:none}}
