:root{--paper:#faece5;--ink:#684650;--muted:#a07d83;--red:#ad657e;--line:#dbb9bf66}html{background:#faece5}body,body.opening-active{background:transparent;isolation:isolate}body:before{display:none}.shared-atmosphere{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;background:radial-gradient(ellipse at 10% 5%,#fff6e8 0%,transparent 53%),radial-gradient(ellipse at 90% 65%,#f1ced2 0%,transparent 60%),radial-gradient(ellipse at 15% 95%,#f8dcd1 0%,transparent 55%),#faece5}.shared-atmosphere:before,.shared-atmosphere:after{content:'';position:absolute;border-radius:50%;filter:blur(70px);opacity:.25;animation:shared-glow-drift 25s ease-in-out infinite alternate}.shared-atmosphere:before{width:60vw;height:60vw;left:-15vw;top:-20vw;background:#fff6db}.shared-atmosphere:after{width:65vw;height:65vw;right:-25vw;bottom:-30vw;background:#e7b6c3;animation-delay:-12s}.shared-atmosphere canvas{display:block;width:100%;height:100%}.opening-scene,.opening-banner,.birthday-hero,.flower-garden,.cosmic-love,.cake-section,.end,#love-intro{background:transparent!important}.opening-bokeh,.garden-stars,.hero-spark,.petal,.falling-opening-hearts{display:none!important}.opening-banner{color:var(--ink);backdrop-filter:blur(10px);background:#faece5c9!important}.opening-banner p,.banner-name{color:var(--red)}.opening-banner h1{text-shadow:0 8px 35px #ba7f8d10}.opening-scene[data-scene=banner] .opening-brand,.opening-scene[data-scene=banner] .opening-footer,.opening-scene[data-scene=banner] .opening-skip{color:var(--muted)}.opening-scene[data-scene=banner] .opening-music{color:var(--red);background:#fff7ef66;border-color:var(--line)}.opening-banner svg path{stroke:#b9838d}.seed-heart:before{background:radial-gradient(circle,#dc9eae44,transparent 65%)}.opening-for,.opening-footer{color:var(--muted)}.opening-poem h2 em{color:var(--red)}.opening-message{color:#956f77}.top{background:#faece5cc;border-color:var(--line)}.brand,.chapter-nav a[aria-current=true]{color:var(--red)}.letter{background:#fff8f366;border-color:var(--line);box-shadow:0 12px 40px #ae718509;backdrop-filter:blur(5px)}.letter p{color:#8e6e77}.memories,.flower-garden,.special-letters,.cake-section,.end{border-color:var(--line)}.wish{border-color:var(--line)}.garden-stage,.particle-stage{background:#fff6ef35!important;border-color:var(--line);backdrop-filter:blur(3px);box-shadow:inset 0 0 70px #d7a6b40c}.garden-stage:after{background:linear-gradient(transparent,#d8b5bc14)}.garden-touch-hint{color:#ae8590}.garden-flower{filter:drop-shadow(0 3px 8px #c589a222)}.cosmic-love:before{border-color:#c79aa86e}.cosmic-love h2,.cosmic-love>p{color:var(--ink)}.cosmic-love>p{color:var(--muted)}.particle-name{color:#ad627d;text-shadow:0 0 25px #cf92a444}.particle-pool{background:#c6899a44;box-shadow:0 0 25px #c38ba355,0 0 60px #c79aab33;opacity:.65}.cosmic-button,.gallery-controls button{border-color:#c496a7;color:var(--red);background:#fff7f033}.cosmic-button:hover,.gallery-controls button:hover{background:#efd5db66}.memory-front{background:#fff7f1}.memory-back{background:#f2dfe2}.paper-envelope{background:#edcfd7;border-color:#d7a8b8}.envelope-flap{background:#f7e3e6}.envelope-seal{background:var(--red)}.secret-finale{background:#fff5ef55;border-color:var(--line)}.special-dialog{background:#faece8;border-color:#d8aebb}.special-dialog::backdrop{background:#ab748855;backdrop-filter:blur(10px)}#love-intro:before{background:#faece5cc;z-index:-1}#love-intro{backdrop-filter:blur(8px);color:var(--red)}.heart-words text{fill:#ae5e7c}.heart-ebrar{fill:#9e526d}#love-intro .love-caption,#love-intro .skip-intro{color:#a97486}.cake{background:repeating-linear-gradient(0deg,#c691a0 0 22px,#f1d5d4 22px 30px);box-shadow:0 8px 0 #b68194}.icing{background:#fff0e5}.candle{background:repeating-linear-gradient(45deg,#b46e87 0 5px,#f6dbe0 5px 10px)}.birthday-hero{position:relative;overflow:hidden;padding-top:92px;padding-bottom:74px}.welcome-halo{position:absolute;width:360px;height:220px;left:50%;top:55px;transform:translateX(-50%) rotate(-12deg);border:1px solid #c78fa125;border-radius:50%;pointer-events:none;animation:welcome-halo-drift 12s ease-in-out infinite alternate}.welcome-halo:after{content:'';position:absolute;inset:18px -18px;border:1px solid #c78fa11c;border-radius:50%;transform:rotate(25deg)}.birthday-hero .animated-birthday{position:relative;z-index:1;margin:27px 0 5px;font-size:clamp(70px,9vw,112px);letter-spacing:-3px}.welcome-letters{display:inline-block;white-space:nowrap}.welcome-letters>span,.birthday-hero .welcome-name>span{display:inline-block;opacity:0;transform:translateY(22px);filter:blur(4px)}.welcome-alive .welcome-letters>span{animation:welcome-letter-in .9s cubic-bezier(.16,1,.3,1) forwards;animation-delay:calc(.1s + var(--letter-index)*.07s)}.birthday-hero .animated-birthday .welcome-name{display:inline-block;margin-left:.18em;font-size:inherit;animation:none;opacity:1;position:relative}.welcome-alive .welcome-name>span{animation:welcome-letter-in 1.1s cubic-bezier(.16,1,.3,1) forwards;animation-delay:calc(.7s + var(--name-index)*.09s)}.welcome-name:after{content:'';position:absolute;width:50px;height:120%;left:-20%;top:0;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,#fff7ee7a,transparent);filter:blur(8px);opacity:0;pointer-events:none}.welcome-alive .welcome-name:after{animation:welcome-name-shine 7s 2.5s ease-in-out infinite}.welcome-heart-line{display:block;width:210px;height:39px;margin:0 auto 20px;color:#b1788c;overflow:visible}.welcome-heart-line path{stroke-dasharray:430;stroke-dashoffset:430}.welcome-alive .welcome-heart-line path{animation:welcome-line-in 2.1s 1.2s ease forwards}.birthday-hero .hero-whisper,.birthday-hero .welcome-note,.birthday-hero .welcome-scroll{opacity:0}.welcome-alive .hero-whisper{animation:arrive 1.1s 1.35s forwards}.welcome-alive .welcome-note{animation:arrive 1.1s 1.6s forwards}.welcome-alive .welcome-scroll{animation:arrive 1.1s 1.9s forwards}.welcome-scroll span{animation:welcome-arrow-drift 2.5s ease-in-out infinite}.welcome-pause{display:block;margin:18px auto 0;font-size:9px;color:var(--muted);border:0;background:none;cursor:pointer;padding:7px 10px;text-decoration:underline;text-underline-offset:4px}.atmosphere-paused .shared-atmosphere:before,.atmosphere-paused .shared-atmosphere:after{animation-play-state:paused}.atmosphere-paused .welcome-halo,.atmosphere-paused .welcome-name:after{animation-play-state:paused}@keyframes shared-glow-drift{to{transform:translate(12vw,8vh) scale(1.12)}}@keyframes welcome-halo-drift{to{transform:translateX(-50%) translateY(10px) rotate(8deg) scale(1.04)}}@keyframes welcome-letter-in{to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes welcome-line-in{to{stroke-dashoffset:0}}@keyframes welcome-name-shine{0%,65%{left:-20%;opacity:0}72%{opacity:.6}90%{left:110%;opacity:0}100%{left:110%;opacity:0}}@keyframes welcome-arrow-drift{50%{transform:translateY(4px)}}@media(max-width:700px){.birthday-hero{padding-top:67px;padding-bottom:55px}.birthday-hero .animated-birthday{font-size:clamp(66px,16vw,90px);line-height:.96;margin-top:24px}.birthday-hero .animated-birthday .welcome-name{display:block;margin:0}.welcome-halo{width:270px;height:250px;top:55px}.welcome-heart-line{margin-top:12px;width:170px;height:32px}.particle-name{color:#a9637c}.opening-banner{backdrop-filter:blur(6px)}}@media(prefers-reduced-motion:reduce){.shared-atmosphere:before,.shared-atmosphere:after,.welcome-halo,.welcome-name:after{animation:none!important}.welcome-letters>span,.birthday-hero .welcome-name>span,.birthday-hero .hero-whisper,.birthday-hero .welcome-note,.birthday-hero .welcome-scroll{opacity:1;transform:none;filter:none}.welcome-heart-line path{stroke-dashoffset:0}}
/* Rising cherry blossoms and tulips, adapted to the birthday's soft palette. */
.rising-flowers{position:absolute;inset:0;overflow:hidden;pointer-events:none;user-select:none;z-index:1}
.rising-flower{position:absolute;left:var(--flower-left);bottom:-70px;font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;font-size:clamp(27px,3.1vw,40px);line-height:1;opacity:0;filter:drop-shadow(0 0 10px #c998b34d);animation:rising-flower-flight var(--flower-duration) var(--flower-delay) linear infinite;pointer-events:none}
@keyframes rising-flower-flight{0%{opacity:0;transform:translate3d(-50%,0,0) rotate(0)}10%{opacity:.42}82%{opacity:.42}100%{opacity:0;transform:translate3d(calc(-50% + var(--flower-drift)),calc(-100vh - 150px),0) rotate(360deg)}}
@supports(height:100svh){@keyframes rising-flower-flight{0%{opacity:0;transform:translate3d(-50%,0,0) rotate(0)}10%{opacity:.42}82%{opacity:.42}100%{opacity:0;transform:translate3d(calc(-50% + var(--flower-drift)),calc(-100svh - 150px),0) rotate(360deg)}}}
.atmosphere-paused .rising-flower{animation-play-state:paused}
@media(max-width:700px){.rising-flower{font-size:25px}}
@media(prefers-reduced-motion:reduce){.rising-flowers{display:none}.rising-flower{animation:none}}
