:root{--blush:#f7dce4;--blush-deep:#efb8c8;--rose:#d4788f;--berry:#9a3d55;--berry-deep:#5c2436;--ink:#3a1f2a;--cream-soft:#fff6f8;--fairy:#ffe6c8;--petal:#ffc9d6;--glow:#ffd6e0bf;--font-display:"Cormorant Garamond", "Times New Roman", serif;--font-script:"Great Vibes", cursive;--font-body:"Outfit", "Segoe UI", sans-serif;color:var(--ink);background:var(--cream-soft);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-weight:300;line-height:1.55}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:radial-gradient(120% 80% at 10% 0,#ffd6e3 0%,#0000 55%),radial-gradient(90% 70% at 95% 15%,#ffe8d2 0%,#0000 50%),radial-gradient(80% 60% at 50% 100%,#f5c4d4 0%,#0000 55%),linear-gradient(#fff8fa 0%,#f7e0e8 45%,#efd0dc 100%);min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;opacity:.7;background-image:radial-gradient(1.5px 1.5px at 12% 18%,#ffffffe6,#0000),radial-gradient(1.5px 1.5px at 28% 42%,#ffe6c8d9,#0000),radial-gradient(1.2px 1.2px at 67% 22%,#fffc,#0000),radial-gradient(1.5px 1.5px at 82% 58%,#ffd2dcbf,#0000),radial-gradient(1px 1px at 45% 75%,#ffffffb3,#0000),radial-gradient(1.5px 1.5px at 90% 88%,#ffe6c8a6,#0000);animation:18s ease-in-out infinite alternate fairyDrift;position:fixed;inset:0}#root{z-index:1;position:relative}button{font:inherit;cursor:pointer;background:0 0;border:none}img{max-width:100%;display:block}a{color:var(--berry)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.gate{place-items:center;min-height:100dvh;padding:2rem 1.25rem;display:grid;position:relative}.gate-atmosphere{pointer-events:none;background:radial-gradient(circle at 50% 40%,#ffc8d68c,#0000 55%),radial-gradient(circle at 30% 70%,#ffe6d266,#0000 45%);position:absolute;inset:0}.envelope{text-align:center;width:min(92vw,380px);animation:1.2s both softRise;position:relative}.envelope-flap{aspect-ratio:16/10;background:linear-gradient(160deg,#ffc2d1 0%,#f08aa3 48%,#d66b86 100%);border-radius:12px 12px 4px 4px;width:100%;margin:0 auto 1.5rem;position:relative;overflow:hidden;box-shadow:0 20px 50px #9a3d5538,inset 0 1px #ffffff73}.envelope-flap:after{content:"";border:1.5px solid #ffffff73;border-radius:6px;position:absolute;inset:12% 14%}.envelope-seal{background:radial-gradient(circle at 35% 30%, #ff8fa8, var(--berry));color:#fff;border-radius:50%;place-items:center;width:52px;height:52px;font-size:1.35rem;animation:2.4s ease-in-out infinite heartPulse;display:grid;position:absolute;top:52%;left:50%;translate:-50% -50%;box-shadow:0 8px 20px #5c243659}.gate-title{font-family:var(--font-script);color:var(--berry-deep);margin:0 0 .35rem;font-size:clamp(2.6rem,10vw,3.6rem);font-weight:400;line-height:1}.gate-sub{font-family:var(--font-display);color:var(--berry);margin:0 0 1.75rem;font-size:1.15rem;font-style:italic}.open-btn{background:linear-gradient(135deg, var(--berry) 0%, #7a2f45 100%);color:#fff8fa;letter-spacing:.02em;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;padding:.95rem 1.6rem;font-weight:400;transition:transform .25s,box-shadow .25s;display:inline-flex;box-shadow:0 12px 28px #9a3d5559}.open-btn:hover{transform:translateY(-2px);box-shadow:0 16px 32px #9a3d5566}.open-btn:focus-visible{outline:2px solid var(--berry);outline-offset:3px}.bg-video,.bg-veil{z-index:0;pointer-events:none;position:fixed;inset:0}.bg-video{object-fit:cover;filter:blur(26px)saturate(1.15);opacity:0;width:100%;height:100%;transition:opacity .9s;transform:scale(1.1)}.bg-video.is-on{opacity:.78}.bg-veil{opacity:0;background:radial-gradient(at 50% 20%,#fff6f86b,#0000 52%),linear-gradient(#fff4f794,#f4d6de66);transition:opacity .9s}.bg-veil.is-on{opacity:1}.gate,.story{z-index:1;position:relative}.music-dock{left:50%;bottom:max(1rem, env(safe-area-inset-bottom));z-index:40;opacity:0;pointer-events:none;width:min(92vw,420px);transition:opacity .45s,translate .45s;position:fixed;translate:-50% 12px}.music-dock.is-open{opacity:1;pointer-events:auto;translate:-50%}.now-playing{color:#fff8fa;background:#1a1214;border-radius:14px;grid-template-columns:58px 1fr auto;align-items:center;column-gap:.75rem;padding:.7rem .75rem .55rem;display:grid;box-shadow:0 18px 40px #280c1461}.now-cover{object-fit:cover;border-radius:6px;grid-row:1/span 2;width:58px;height:58px}.now-title{margin:0;font-size:.98rem;font-weight:500;line-height:1.15}.now-artist{color:#e3b8c4;margin:.15rem 0 0;font-size:.78rem}.now-toggle{color:#1a1214;background:#fff8fa;border-radius:50%;grid-row:1/span 2;place-items:center;width:38px;height:38px;display:grid}.now-toggle:focus-visible{outline-offset:3px;outline:2px solid #f0a0b4}.now-progress{grid-column:1/-1;grid-template-columns:2.4rem 1fr 2.4rem;align-items:center;gap:.45rem;margin-top:.55rem;display:grid}.now-time{font-variant-numeric:tabular-nums;color:#e3b8c4;font-size:.68rem}.now-time:last-child{text-align:right}.now-progress input[type=range]{appearance:none;background:#fff8fa47;border-radius:999px;outline:none;width:100%;height:4px}.now-progress input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#fff8fa;border-radius:50%;width:12px;height:12px}.story{z-index:1;padding-bottom:4rem;position:relative}.section{flex-direction:column;justify-content:center;max-width:920px;min-height:100dvh;margin:0 auto;padding:4.5rem 1.35rem;display:flex}.section.full{max-width:none;padding-left:0;padding-right:0}.hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:3rem 1.35rem 14rem;display:flex;position:relative}.hero-name{font-family:var(--font-script);color:var(--berry-deep);margin:0;font-size:clamp(4.2rem,18vw,7.5rem);font-weight:400;line-height:.9;animation:1.1s both textReveal}.hero-line{font-family:var(--font-display);color:var(--berry);max-width:22ch;margin:1rem 0 0;font-size:clamp(1.2rem,3.5vw,1.65rem);font-style:italic;animation:1.1s .25s both textReveal}.hero-hint{letter-spacing:.12em;text-transform:uppercase;color:#5c24368c;margin-top:2.5rem;font-size:.85rem;animation:1s .55s both textReveal}.counter-section{text-align:center}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--rose);margin:0 0 .75rem;font-size:.78rem}.counter-title{font-family:var(--font-display);color:var(--berry-deep);margin:0 0 1.5rem;font-size:clamp(1.8rem,5vw,2.6rem);font-weight:600;line-height:1.2}.counter-block{flex-direction:column;align-items:center;gap:.35rem;display:inline-flex}.counter-number{font-family:var(--font-display);color:var(--berry);font-size:clamp(4rem,16vw,6.5rem);font-weight:600;line-height:1}.counter-label{color:var(--ink);opacity:.75;font-size:1rem}.counter-note{font-family:var(--font-display);color:var(--berry-deep);max-width:28ch;margin-top:1.75rem;margin-left:auto;margin-right:auto;font-size:1.2rem;font-style:italic}.moment{color:#fff;grid-template-rows:1fr auto;min-height:100dvh;display:grid;position:relative}.moment-media{position:absolute;inset:0;overflow:hidden}.moment-media img{object-fit:cover;width:100%;height:100%;animation:12s ease-in-out infinite alternate breathePhoto;transform:scale(1.04)}.moment-veil{background:linear-gradient(#3a1f2a26 0%,#3a1f2a40 40%,#3a1f2ac7 100%);position:absolute;inset:0}.moment-caption{z-index:2;max-width:520px;padding:2.5rem 1.5rem 3.5rem;position:relative}.moment-caption h2{font-family:var(--font-display);margin:0 0 .4rem;font-size:clamp(1.6rem,4vw,2.1rem);font-weight:600}.moment-caption p{opacity:.92;max-width:32ch;margin:0;font-size:1.05rem}.moment:nth-child(2n) .moment-caption{text-align:right;margin-left:auto}.moment:nth-child(2n) .moment-caption p{margin-left:auto}.secret{text-align:center;min-height:70dvh}.secret h2{font-family:var(--font-display);color:var(--berry-deep);margin:0 0 .5rem;font-size:clamp(1.8rem,4.5vw,2.4rem)}.secret>p{color:#3a1f2ab3;margin:0 0 2rem}.secret-heart{background:radial-gradient(circle at 30% 25%, #ff9db4, var(--berry));color:#fff;border-radius:50%;place-items:center;width:88px;height:88px;margin:0 auto;font-size:2rem;transition:transform .3s;animation:2.2s ease-in-out infinite heartPulse;display:grid;box-shadow:0 14px 36px #9a3d5559}.secret-heart:hover{transform:scale(1.06)}.secret-reveal{font-family:var(--font-display);color:var(--berry-deep);max-width:26ch;margin-top:1.75rem;margin-left:auto;margin-right:auto;font-size:clamp(1.25rem,3.5vw,1.6rem);font-style:italic;animation:.7s both textReveal}.game{text-align:center;max-width:640px}.game h2{font-family:var(--font-display);color:var(--berry-deep);margin:0 0 .4rem;font-size:clamp(1.8rem,4.5vw,2.4rem)}.game-intro{color:#3a1f2ab8;margin:0 0 1.5rem}.game-stage{aspect-ratio:1;background:#1d4d2a;border-radius:8px;max-width:420px;margin:0 auto;position:relative;overflow:hidden;box-shadow:0 18px 40px #5c24362e}.game-bg{object-fit:cover;opacity:.35;width:100%;height:100%;image-rendering:pixelated;filter:saturate(1.1);position:absolute;inset:0}.pixel-grid{z-index:2;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);gap:2px;width:100%;height:100%;padding:10px;display:grid;position:relative}.pixel-cell{background:#225a30bf;border:1px solid #00000026;border-radius:2px;transition:transform .15s,background .15s}.pixel-cell:hover{background:#347844e6;transform:scale(1.05)}.pixel-cell.is-heart-hidden{background:#30643ad1}.pixel-cell.found{background:#e23b4a;animation:1.6s ease-in-out infinite heartPulse;transform:scale(1.1);box-shadow:inset 0 0 0 1px #ffffff4d}.game-win{font-family:var(--font-display);color:var(--berry);margin-top:1.25rem;font-size:1.25rem;font-style:italic;animation:.6s both textReveal}.letter{text-align:left;max-width:560px;margin:0 auto;padding:4rem 1.35rem 2rem}.letter-brand{font-family:var(--font-script);color:var(--berry);text-align:center;margin:0 0 1.5rem;font-size:clamp(2.8rem,10vw,4rem);line-height:1}.letter-body{font-family:var(--font-display);color:var(--ink);font-size:clamp(1.25rem,3.2vw,1.55rem);line-height:1.65}.letter-body p{margin:0 0 1.1rem}.letter-sign{font-family:var(--font-script);color:var(--berry-deep);text-align:right;margin-top:2rem;font-size:2rem}.finale{text-align:center;max-width:480px;margin:0 auto;padding:2rem 1.35rem 18rem}.finale p{font-family:var(--font-display);color:var(--berry);margin:0 0 1.5rem;font-size:1.25rem;font-style:italic}.hug-btn{color:var(--berry-deep);background:#fff8fad9;border:1px solid #9a3d5540;border-radius:999px;align-items:center;gap:.55rem;padding:.9rem 1.5rem;transition:transform .25s;display:inline-flex;box-shadow:0 10px 28px #9a3d5526}.hug-btn:hover{transform:scale(1.04)}.hug-reply{font-family:var(--font-script);color:var(--berry-deep);margin-top:1.25rem;font-size:1.8rem;animation:.7s both textReveal}@keyframes softRise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes textReveal{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes heartPulse{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}@keyframes breathePhoto{0%{transform:scale(1.04)}to{transform:scale(1.1)}}@keyframes fairyDrift{0%{transform:translateY(0)}to{transform:translateY(-12px)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.moment-media img{transform:none}}@media (width>=768px){.moment-caption{padding:3.5rem 4rem 4.5rem}.music-dock{bottom:1.5rem}}
