@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,500;1,600&family=Caveat:wght@500;600&display=swap");:root{--cream:#fff8f4;--paper:#fffdfb;--pink:#d98da2;--deep-pink:#a94e70;--rose:#f4d9df;--blush:#fcebee;--ink:#533d47;--muted:#987d87;--line:rgba(169,78,112,.16);--serif:"Playfair Display",Georgia,serif;--sans:"DM Sans",system-ui,sans-serif;--script:"Caveat",cursive}*{box-sizing:border-box}html{min-height:100%}body,html{background:var(--cream)}body{margin:0;color:var(--ink);font-family:var(--sans)}button,input{font:inherit}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #bf718d;outline-offset:4px}::selection{background:#f3ced9;color:#533d47}.gate-screen{min-height:100svh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 15% 15%,#fde7ed 0,transparent 34%),radial-gradient(ellipse at 85% 85%,#f5e6dc 0,transparent 34%),var(--cream)}.gate-card{position:relative;z-index:1;width:min(100%,440px);padding:clamp(28px,7vw,52px);text-align:center;background:rgba(255,253,251,.82);border:1px solid var(--line);border-radius:28px;box-shadow:0 24px 90px rgba(133,70,91,.09);animation:rise-in .7s both}.tiny-flower{font-size:42px;color:var(--pink);animation:sway 4s ease-in-out infinite}.eyebrow{margin:0 0 14px;color:var(--deep-pink);font-size:10px;font-weight:700;letter-spacing:.2em;line-height:1.6}.gate-card h1{margin:8px 0 14px;font:500 clamp(36px,8vw,48px)/1.1 var(--serif);letter-spacing:-.04em}.pink,em{color:var(--pink)}.gate-copy{color:var(--muted);font-size:14px;line-height:1.9}.gate-form{display:grid;grid-gap:10px;gap:10px;margin-top:28px;text-align:left}.gate-form label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.gate-form input{width:100%;min-height:48px;border:1px solid var(--line);border-radius:12px;padding:0 14px;color:var(--ink);background:#fffaf9}.gate-form input::placeholder{color:#c0a7b0}.form-error{color:#a23c5c;font-size:12px;margin:0}.gate-footnote,.micro-note{color:#b49aa4;font-size:11px;letter-spacing:.03em}.gate-footnote{margin:24px 0 0}.floating-star{position:absolute;color:#d98da2;animation:twinkle 3s ease-in-out infinite}.star-one{top:18%;left:17%;font-size:32px}.star-two{right:15%;bottom:18%;font-size:48px;animation-delay:-1.3s}.experience{min-height:100svh;isolation:isolate;position:relative;overflow:clip;padding:0 clamp(18px,5vw,72px);background:radial-gradient(ellipse at 12% 12%,rgba(252,220,229,.6),transparent 34%),radial-gradient(ellipse at 90% 80%,rgba(242,223,207,.55),transparent 34%),var(--cream)}.ambient{position:absolute;z-index:-1;width:280px;height:280px;border-radius:50%;filter:blur(70px);opacity:.22;pointer-events:none}.ambient-one{background:#e9a9bc;top:25%;left:-160px}.ambient-two{background:#f2d3ba;bottom:8%;right:-170px}.sparkles{position:absolute;top:20%;left:8%;color:#d8a2b2;opacity:.7;letter-spacing:1.2em;font-size:14px;pointer-events:none;animation:floaty 7s ease-in-out infinite}.chapter{position:relative;width:min(100%,1080px);margin:0 auto;min-height:100svh;padding:90px 0;justify-content:center}.center-layout{width:100%;text-align:center;display:flex;flex-direction:column;align-items:center}.birthday-copy h1,.center-layout h1{font:500 clamp(38px,6.4vw,68px)/1.08 var(--serif);letter-spacing:-.045em;margin:4px 0 20px}.birthday-copy h1 em,.center-layout h1 em{font-weight:500}.lead{max-width:540px;margin:0 auto 27px;color:var(--muted);font-size:clamp(13px,1.5vw,15px);line-height:1.95}.topbar{position:fixed;z-index:10;top:12px;left:12px;right:12px;max-width:760px;margin:0 auto;height:52px;padding:0 8px 0 18px;justify-content:space-between;gap:12px;overflow:hidden;border-radius:99px;border:1px solid rgba(255,255,255,.7);background:rgba(255,250,248,.72);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4);box-shadow:0 10px 34px rgba(133,70,91,.1),inset 0 0 0 1px var(--line)}.topbar,.wordmark{display:flex;align-items:center}.wordmark{gap:8px;border:0;padding:0;background:none;color:var(--ink);font:600 16px var(--serif);white-space:nowrap}.wordmark>span:first-child{color:var(--pink);font-size:20px;display:inline-block;transition:rotate .5s ease}.wordmark:hover>span:first-child{rotate:90deg}.progress{position:relative;display:flex;align-items:center}.progress-dot{position:relative;width:22px;height:32px;border:0;padding:0;background:none}.progress-dot:before{content:"";position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#e7cdd5;transition:background .3s ease,scale .3s ease}.progress-dot:hover:before{background:var(--pink);scale:1.4}.progress-dot.done:before{background:#d7a2b2}.progress-dot.active:before{background:transparent}.dot-indicator{position:absolute;left:0;top:50%;width:20px;height:8px;margin:-4px 0 0 -10px;border-radius:99px;background:linear-gradient(90deg,var(--pink),var(--deep-pink));box-shadow:0 2px 10px rgba(169,78,112,.35);pointer-events:none}.page-counter{display:flex;align-items:baseline;gap:2px;min-width:0;padding:7px 14px;border-radius:99px;background:var(--blush);color:var(--muted);font-size:11px;letter-spacing:.06em;white-space:nowrap}.page-counter b{font:600 15px var(--serif)}.counter-label,.page-counter b{display:inline-block;color:var(--deep-pink)}.counter-label{margin-left:8px;padding-left:8px;border-left:1px solid var(--line);font:600 16px var(--script);letter-spacing:0}.scroll-line{position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,var(--pink),var(--deep-pink));transform:scaleX(0);transform-origin:left}.word{display:inline-block;white-space:nowrap}.button{border-radius:99px;border:1px solid transparent;padding:14px 21px;min-height:46px;font-size:12px;font-weight:700;letter-spacing:.015em;transition:translate .2s ease,box-shadow .2s ease,background .2s ease}.button:hover{translate:0 -2px}.button:active{translate:0 0}.button-primary{background:var(--deep-pink);color:white;box-shadow:0 8px 24px rgba(169,78,112,.18)}.button-primary:hover{background:#93415f;box-shadow:0 12px 28px rgba(169,78,112,.24)}.button-secondary{background:rgba(255,255,255,.72);border-color:var(--line);color:var(--deep-pink)}.button span{margin-left:8px}.hero-flower{position:relative;width:96px;height:96px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.64);border:1px solid var(--line);margin-bottom:30px;box-shadow:0 12px 40px rgba(169,78,112,.08)}.hero-flower span{font-size:56px;color:var(--pink);animation:sway 4s ease-in-out infinite}.hero-flower i{position:absolute;top:4px;right:2px;color:#c49aaa;font-style:normal;font-size:20px;animation:twinkle 2s infinite}.welcome h1{margin-bottom:18px}.welcome .micro-note{margin-top:20px}.birthday-layout{width:100%;display:grid;grid-template-columns:1fr 1fr;grid-gap:clamp(30px,7vw,100px);gap:clamp(30px,7vw,100px);align-items:center}.birthday-copy{text-align:left}.birthday-copy .lead{margin-left:0}.handwritten{font:600 24px var(--script);color:var(--deep-pink);margin:0 0 24px;transform:rotate(-2deg)}.bouquet-scene{position:relative;min-height:430px;display:grid;place-items:center}.photo-stack{position:absolute;z-index:2;width:196px;height:256px;margin:-40px 0 0 -70px}.polaroid{position:absolute;inset:0;padding:10px 10px 38px;border:0;background:#fffdfb;box-shadow:0 18px 44px rgba(106,67,80,.16);cursor:pointer}.polaroid img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 30%;background:var(--blush);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.polaroid-caption{left:0;right:0;bottom:8px;text-align:center;font:600 18px var(--script)}.polaroid-caption,.stack-hint{position:absolute;color:var(--deep-pink)}.stack-hint{z-index:10;right:-34px;bottom:-30px;font:600 20px var(--script);rotate:-8deg;animation:floaty 2.6s ease-in-out infinite;pointer-events:none}.tape{width:70px;height:20px;top:-9px;left:50%;margin-left:-35px;z-index:1;background:rgba(231,180,193,.65);transform:rotate(4deg)}.bouquet,.tape{position:absolute}.bouquet{width:230px;height:280px;bottom:5px;right:4%;transform:rotate(8deg);animation:bouquet-sway 6s ease-in-out infinite}.stem{position:absolute;bottom:66px;left:50%;height:175px;width:2px;background:#8caa82;transform-origin:bottom}.stem-a{transform:rotate(-28deg)}.stem-b{transform:rotate(4deg)}.stem-c{transform:rotate(30deg)}.flower{position:absolute;z-index:2;font-size:64px;color:#d98da2;text-shadow:0 3px 0 #f5d5de}.flower-a{left:22px;top:30px;transform:rotate(-14deg)}.flower-b{left:87px;top:0;color:#efb5c4;font-size:75px}.flower-c{right:6px;top:40px;color:#c87591;transform:rotate(12deg)}.flower-d{left:58px;top:88px;color:#e9a7b8;font-size:54px}.flower-e{right:35px;top:108px;color:#f0c1cb;font-size:52px}.wrapping{position:absolute;left:52px;bottom:8px;width:130px;height:125px;background:linear-gradient(135deg,#f8dfe5,#eebdcd);-webkit-clip-path:polygon(12% 0,88% 0,100% 100%,50% 80%,0 100%);clip-path:polygon(12% 0,88% 0,100% 100%,50% 80%,0 100%);opacity:.92}.bow{bottom:72px;left:100px;color:#a94e70;font-size:28px}.bow,.orbit-note{position:absolute;z-index:3}.orbit-note{color:var(--deep-pink);font:600 21px var(--script)}.note-a{right:4%;top:18%;transform:rotate(8deg)}.note-b{left:0;bottom:13%;transform:rotate(-9deg)}.achievement-card{position:relative;overflow:hidden;width:min(100%,450px);margin:8px auto 18px;padding:22px;border-radius:18px;border:1px solid rgba(235,187,204,.65);background:linear-gradient(145deg,rgba(255,255,255,.9),rgba(255,240,244,.85));box-shadow:0 20px 55px rgba(169,78,112,.1)}.achievement-bottom,.achievement-top{display:flex;justify-content:space-between;gap:12px;color:var(--deep-pink);font-size:9px;font-weight:700;letter-spacing:.1em}.achievement-shot{margin:18px 0 14px}.achievement-shot img{display:block;width:100%;height:auto;border-radius:10px;border:1px solid var(--line);box-shadow:0 10px 26px rgba(70,45,58,.14)}.achievement-shot figcaption{margin-top:8px;color:var(--deep-pink);font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.achievement-label{font-size:9px;letter-spacing:.18em;color:var(--muted)}.achievement-card h2{font:600 28px var(--serif);margin:8px 0}.achievement-caption{color:var(--muted);font-size:12px;margin-bottom:25px}.achievement-bottom{padding-top:14px;border-top:1px solid var(--line)}.confetti{position:absolute;inset:20% -30%;color:#d98da2;letter-spacing:1.2em;font-size:20px;opacity:.55;animation:floaty 5s infinite;pointer-events:none}.funny-line{color:var(--deep-pink);font:600 23px var(--script);margin:0 0 20px}.music-card{display:flex;align-items:center;gap:25px;width:min(100%,530px);padding:25px;margin:8px auto 25px;border:1px solid var(--line);border-radius:22px;text-align:left;background:rgba(255,253,251,.78);box-shadow:0 16px 50px rgba(133,70,91,.07)}.vinyl{flex:0 0 auto;width:140px;aspect-ratio:1;place-items:center;background:repeating-radial-gradient(circle,#4e3c47 0 2px,#5c4652 3px 5px);box-shadow:0 8px 24px rgba(70,45,58,.2)}.vinyl,.vinyl span{border-radius:50%;display:grid}.vinyl span{width:48px;height:48px;place-items:center;background:#e7b0c0;color:#fff9fa;font-size:20px}.music-details{display:flex;flex-direction:column;align-items:flex-start}.music-kicker{color:var(--deep-pink);font-size:9px;font-weight:700;letter-spacing:.15em}.music-details h2{font:600 25px var(--serif);margin:7px 0 0}.music-details p{color:var(--muted);font-size:13px;margin:5px 0 14px}.text-link{color:var(--deep-pink);font-size:11px;text-decoration-thickness:1px;text-underline-offset:4px;margin-bottom:14px}.music-details .button{padding:11px 15px;min-height:40px}.music-details small{margin-top:10px;max-width:250px;color:var(--muted);font-size:10px;line-height:1.6}.gratitude-grid{width:min(100%,800px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px;margin:4px 0 25px;text-align:left}.gratitude-card{min-height:155px;padding:22px;background:rgba(255,253,251,.74);border:1px solid var(--line);border-radius:17px;transition:translate .25s ease,box-shadow .25s ease}.gratitude-card:hover{translate:0 -3px;box-shadow:0 12px 28px rgba(133,70,91,.07)}.card-number{color:var(--pink);font-size:10px;letter-spacing:.1em}.gratitude-card h2{font:600 19px var(--serif);margin:13px 0 8px}.gratitude-card p{color:var(--muted);font-size:12px;line-height:1.8;margin:0}.letter-envelope{width:min(100%,420px);display:flex;align-items:center;gap:14px;padding:18px 20px;border:1px solid #e9c5d0;border-radius:15px;background:linear-gradient(120deg,#fffdfb,#fbeaf0);color:var(--deep-pink);text-align:left;margin:4px 0 22px;box-shadow:0 12px 35px rgba(169,78,112,.07)}.envelope-icon{font-size:28px}.letter-envelope span:nth-child(2){flex:1 1;font:600 20px var(--script)}.envelope-arrow{font-size:20px}.letter-paper{width:min(100%,560px);margin:0 auto 24px;padding:clamp(22px,5vw,38px);text-align:left;background:#fffdf9;border:1px solid #eadbd0;box-shadow:0 16px 45px rgba(95,64,65,.08);animation:rise-in .4s both;color:#6b5359;font:14px/1.95 var(--serif)}.letter-paper p{margin:0 0 14px}.letter-greeting,.letter-sign{font:600 24px var(--script);color:var(--deep-pink)}.letter-sign{text-align:right;margin-top:25px!important}.moon-scene{position:relative;width:100px;height:100px;display:grid;place-items:center;margin-bottom:26px;border-radius:50%;background:rgba(255,255,255,.6);border:1px solid var(--line)}.moon-scene span{color:#d6a1b3;font-size:58px;transform:rotate(-25deg)}.moon-scene b,.moon-scene i,.moon-scene small{position:absolute;color:#c18a9f;font-style:normal}.moon-scene i{top:0;right:-7px;font-size:22px}.moon-scene b{left:-10px;top:22px}.moon-scene small{right:5px;bottom:2px;font-size:24px}.final-note{color:var(--muted);font:500 18px/1.8 var(--serif);margin:0 0 22px}.signature{color:var(--muted);font:600 22px/1.5 var(--script);margin-bottom:24px;transform:rotate(-2deg)}.signature strong{color:var(--deep-pink);font-size:30px;font-weight:600}.final-layout .micro-note{margin-top:20px}.site-footer{max-width:1120px;min-height:56px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);color:#b49aa4;font-size:10px;letter-spacing:.03em}.site-footer span:last-child{color:var(--pink);font-size:18px}.birthday-layout.chapter{display:grid}.intro-screen{position:fixed;inset:0;z-index:50;display:grid;place-content:center;justify-items:center;grid-gap:18px;gap:18px;background:radial-gradient(ellipse at 50% 40%,#fde7ed,var(--cream) 70%)}.intro-mark{font-size:64px;color:var(--pink)}.intro-screen p{margin:0;font:500 clamp(26px,6vw,44px)/1.1 var(--serif);letter-spacing:-.03em;color:var(--deep-pink);text-align:center;padding:0 20px}.intro-bar{width:140px;height:2px;border-radius:2px;background:var(--rose);overflow:hidden}.intro-bar i{display:block;height:100%;background:var(--deep-pink);transform-origin:left}.scroll-hint{animation:floaty 2.4s ease-in-out infinite}.char{display:inline-block}@media (max-width:860px){.counter-label{display:none}}.form-error.angry{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#fde4ea;border:1px solid #f0b8c7;font-weight:600}.angry-face{font-size:28px;display:inline-block}.welcome-overlay{position:fixed;inset:0;z-index:20;display:grid;place-content:center;text-align:center;padding:24px;background:radial-gradient(ellipse at 50% 40%,#fde7ed,var(--cream) 70%)}.welcome-overlay h1{margin:0 0 12px;font:500 clamp(36px,8vw,72px)/1.1 var(--serif);letter-spacing:-.04em;color:var(--deep-pink)}.welcome-overlay p{margin:0;color:var(--muted);font:600 24px var(--script)}.achievement-card{overflow:visible}.confetti-bit{position:absolute;left:50%;top:40%;color:var(--pink);font-size:18px;pointer-events:none}.lyric-line{margin:0 0 14px;padding-left:12px;border-left:2px solid var(--pink);color:var(--deep-pink);font:600 20px/1.3 var(--script);transition:text-shadow .4s ease}.lyric-line.glow{text-shadow:0 0 14px rgba(217,141,162,.55)}.music-buttons{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.as-button{background:none;border:0;padding:0;margin:0;text-decoration:underline}.letter-paper{overflow:hidden}@keyframes rise-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes twinkle{0%,to{opacity:.45;transform:scale(.9) rotate(0)}50%{opacity:1;transform:scale(1.15) rotate(12deg)}}@keyframes sway{0%,to{transform:rotate(-4deg)}50%{transform:rotate(5deg)}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes bouquet-sway{0%,to{transform:rotate(7deg)}50%{transform:rotate(10deg) translateY(-4px)}}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:700px){.experience{padding:0 20px}.chapter{padding:70px 0}.topbar{top:10px;left:10px;right:10px;height:48px;padding:0 6px 0 14px;gap:6px}.counter-label,.wordmark-text{display:none}.page-counter{padding:6px 11px}.birthday-copy h1,.center-layout h1{font-size:clamp(38px,11vw,54px)}.lead{font-size:13px}.sparkles{left:3%;top:14%;opacity:.35}.birthday-layout{grid-template-columns:1fr;gap:8px}.birthday-copy{text-align:center}.birthday-copy .lead{margin-left:auto}.handwritten{font-size:22px}.bouquet-scene{min-height:320px;max-width:420px;width:100%;margin:0 auto;transform:scale(.9);transform-origin:top center}.photo-stack{width:164px;height:216px;margin:-20px 0 0 -40px}.polaroid{padding:8px 8px 32px}.polaroid-caption{font-size:16px;bottom:6px}.stack-hint{right:-20px}.bouquet{right:2%;transform:scale(.9);transform-origin:center bottom}.note-a{right:0;top:10%}.note-b{left:0;bottom:9%}.music-card{padding:18px;gap:16px}.vinyl{width:100px}.music-details h2{font-size:21px}.gratitude-grid{gap:10px}.gratitude-card{padding:16px;min-height:170px}.gratitude-card h2{font-size:17px}.gratitude-card p{font-size:11px}}@media (max-width:390px){.music-card{flex-direction:column;text-align:center}.music-details{align-items:center}.music-details small{text-align:center}.music-buttons{justify-content:center}.gratitude-grid{grid-template-columns:1fr}.gratitude-card{min-height:auto}.achievement-card{padding:16px}.achievement-card h2{font-size:24px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.intro-actions{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:10px}.intro-actions .as-button{color:var(--muted);font-size:12px;text-underline-offset:4px}.topbar-right{display:flex;align-items:center;gap:6px}.sound-toggle{display:grid;place-items:center;width:36px;height:36px;flex:0 0 auto;border:0;border-radius:50%;background:var(--blush);transition:background .3s ease}.sound-toggle.on{background:var(--deep-pink)}.eq{display:flex;align-items:flex-end;gap:2px;height:14px}.eq i{width:3px;height:4px;border-radius:2px;background:var(--deep-pink)}.sound-toggle.on .eq i{background:#fff;animation:eq .9s ease-in-out infinite alternate}.sound-toggle.on .eq i:nth-child(2){animation-delay:-.3s;animation-duration:.7s}.sound-toggle.on .eq i:nth-child(3){animation-delay:-.6s;animation-duration:1.1s}@keyframes eq{0%{height:3px}to{height:14px}}@media (max-width:700px){.sound-toggle{width:32px;height:32px}.topbar{gap:4px}}