@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=DM+Sans:wght@400;500;600;700&family=Caveat:wght@400;500&display=swap');
:root{--ink:#392844;--purple:#73518f;--paper:#fbf8fb;--pink:#f2dde6}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:15px;line-height:1.65}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #ac67c0;outline-offset:5px}header{height:96px;margin:0 6%;border-bottom:1px solid #ded2e4;display:flex;align-items:center;justify-content:space-between}header>span,.eyebrow{font-size:10px;letter-spacing:2.5px;font-weight:600}header>a:last-child{font-size:12px}.brand{font-family:'Cormorant Garamond',serif;font-size:36px;font-weight:600;letter-spacing:-2px}.brand span{color:#ab7caa;margin-left:4px}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:'Cormorant Garamond',serif;font-weight:500;line-height:1.05}em{font-weight:400;color:var(--purple)}.hero{position:relative;max-width:1400px;margin:auto;min-height:790px;padding:82px 8% 90px;display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:60px;background:radial-gradient(ellipse at 70% 45%,#eadff0 0,transparent 55%)}.small-note{margin-top:34px;font-size:14px;color:#806e89}h1{font-size:clamp(60px,6.7vw,100px);letter-spacing:-3px;margin-bottom:25px}.intro{color:#7a6a82;font-size:16px}.button{border:0;border-radius:40px;background:var(--purple);color:white;padding:17px 27px;display:inline-flex;align-items:center;gap:40px;font-size:13px;transition:transform .2s,background .2s}.button:hover{transform:translateY(-3px);background:#614077}.handwritten{font-family:'Caveat',cursive;font-size:24px;transform:rotate(-4deg);margin:22px 0 0 18px;color:#9b7c9c}.hero-art{position:relative;max-width:420px}.polaroid{padding:15px 15px 19px;background:white;box-shadow:0 20px 60px #4c31551c;transform:rotate(5deg)}.polaroid img{width:100%;height:440px;object-fit:cover;object-position:center 70%;display:block}.polaroid>span{font-family:'Caveat',cursive;display:block;text-align:center;font-size:20px;padding-top:14px}.round-stamp{position:absolute;bottom:24px;left:-48px;background:#ebd5e2;border:1px solid #d2b9cb;outline:5px solid #ebd5e2;width:106px;height:106px;border-radius:50%;display:grid;align-content:center;text-align:center;font-size:10px;letter-spacing:2px;transform:rotate(-16deg)}.doodle{position:absolute;color:#a282b2;font-size:68px}.star{right:-43px;top:-69px}.heart{right:-29px;bottom:-66px;transform:rotate(18deg)}.hero-bottom{position:absolute;bottom:25px;left:8%;right:8%;display:flex;justify-content:space-between;font-size:9px;letter-spacing:2px;color:#97879e}.story{max-width:1250px;padding:110px 6%;margin:auto}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:70px;margin:22px 0 55px}h2{font-size:clamp(42px,4.8vw,65px);letter-spacing:-1.5px;margin-bottom:24px}.section-heading p{max-width:330px;color:#85748d;font-size:14px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;align-items:start}.photo{margin:0;padding:10px 10px 0;background:white;box-shadow:0 5px 25px #39284409;transform:rotate(-2deg)}.photo:nth-child(2n){transform:rotate(2deg);margin-top:28px}.photo:nth-child(4){grid-column:2;margin-top:-70px}.photo:nth-child(5){margin-top:-70px}.zoom{display:block;padding:0;border:0;background:none;width:100%}.photo img{width:100%;height:225px;object-fit:cover;display:block}.photo.tall img{height:350px}.photo figcaption{font-size:10px;color:#a08bab;padding:18px 3px;display:flex;justify-content:space-between;gap:5px}.photo figcaption span{font-family:'Caveat',cursive;font-size:19px;color:#6e527c}.videos{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:30px;align-items:center;margin-top:100px}.videos h3{font-size:40px;margin:22px 0}.videos p{font-size:13px;color:#85748d}.videos figure{margin:0}.videos video{display:block;width:100%;height:340px;object-fit:cover;background:#e7ddec;border-radius:100px 100px 10px 10px}.videos figcaption{font-family:'Caveat',cursive;font-size:20px;text-align:center;margin-top:12px}.reasons{padding:85px 8%;background:#ede4f2;text-align:center}.reasons h2{margin-top:24px}.reason-grid{max-width:1100px;margin:50px auto 0;display:grid;grid-template-columns:repeat(3,1fr);text-align:left;gap:55px}.reason-grid article{border-top:1px solid #cdbbd8;padding-top:20px}.reason-grid article>span{font-size:11px;color:#997ba9}.reason-grid h3{font-size:34px;margin:22px 0 14px}.reason-grid p{font-size:14px;color:#7d688a}.letter-section{padding:100px 20px;text-align:center;background:radial-gradient(ellipse at center,#fae9ef,transparent 70%)}.letter-section h2{margin-top:25px}.envelope{display:flex;position:relative;flex-direction:column;align-items:center;justify-content:center;gap:18px;margin:50px auto 0;width:min(470px,90vw);min-height:245px;background:#f4e8f0;border:1px solid #dbcbdc;box-shadow:0 20px 50px #5c3f6010;transform:rotate(-2deg);color:#765981}.envelope:before{content:'';position:absolute;top:0;left:0;right:0;height:100px;clip-path:polygon(0 0,100% 0,50% 100%);background:#e9d9e8}.seal{position:relative;background:#9473a4;color:white;border-radius:50%;width:58px;height:58px;display:grid;place-items:center;font-size:28px}.envelope>span:nth-child(2){font-family:'Caveat',cursive;font-size:26px}.envelope small{font-size:10px;letter-spacing:1.5px}.letter{background:#fffdfb;width:min(680px,94vw);padding:55px 65px;text-align:left;margin:40px auto 0;box-shadow:0 20px 70px #5c3f6012;border-top:3px solid #d1b6d2}.letter-date{font-size:10px;letter-spacing:3px;color:#a18aa8}.letter h3{font-family:'Caveat',cursive;font-size:40px;margin:30px 0}.letter p{color:#735e7e;font-size:15px;line-height:1.95}.letter .signature{font-family:'Caveat',cursive;font-size:29px;line-height:1.3;margin-top:30px}.wish{position:relative;overflow:hidden;text-align:center;background:#3d2c4c;color:#f8f0fa;padding:85px 20px 75px}.wish em{color:#e9b9d5}.wish .eyebrow{color:#d3bddf}.time{font-family:'Cormorant Garamond',serif;font-size:100px;line-height:1.2;margin:30px 0 5px;color:#dec6ea}.time span{animation:blink 3s infinite}.wish-note{font-size:12px;color:#c5afce;margin-bottom:42px}.wish h2{font-size:clamp(44px,5.5vw,76px)}.wish>p{color:#cdbbd6}.wish .yes{background:#eedbe9;color:#573363;margin:22px auto 12px;min-width:200px;justify-content:center;font-size:15px}.later{display:block;margin:auto;background:none;border:none;border-bottom:1px solid #92779f;color:#dfcfe7;padding:8px 0;font-size:12px}.wish .no-pressure{font-size:11px;line-height:1.8;margin-top:32px;color:#b29dbd}.stars{position:absolute;inset:40px 5% auto;font-size:30px;letter-spacing:50px;color:#a98bb9;pointer-events:none}.stars span{position:relative;top:290px}.answer{max-width:480px;margin:30px auto 0;padding:25px;background:#ffffff0b;border:1px solid #a88db14d;border-radius:12px}.answer h3{font-size:30px}.answer a{display:inline-block;background:#ebd8e8;color:#553364;border-radius:30px;padding:12px 22px;margin-top:10px}footer{padding:42px 6%;display:flex;align-items:center;justify-content:space-between;gap:30px}footer p{font-size:12px;color:#907d98;margin:0;text-align:center}footer>span{font-size:10px;color:#907d98}dialog{padding:0;border:0;background:transparent;max-width:94vw;max-height:94vh;overflow:visible}dialog::backdrop{background:#25182de8}dialog img{display:block;max-width:90vw;max-height:85vh;object-fit:contain}dialog button{position:absolute;right:0;top:-40px;border:none;background:transparent;color:white;font-size:32px}.confetti{position:fixed;top:-30px;z-index:20;pointer-events:none;font-size:24px;animation:fall 3s linear forwards}@keyframes fall{to{transform:translateY(110vh) rotate(300deg);opacity:0}}@keyframes blink{50%{opacity:.4}}[hidden]{display:none!important}@media(max-width:760px){header{height:75px;margin:0 6%}header>span{display:none}header>a:last-child{font-size:11px}.hero{padding:50px 7% 75px;display:flex;flex-direction:column;gap:55px;min-height:0}.hero-copy{width:100%}.eyebrow{font-size:9px;letter-spacing:1.8px}.small-note{font-size:12px;margin-top:25px}h1{font-size:70px;letter-spacing:-2px}.intro{font-size:14px}.hero-art{width:77%;margin-bottom:30px}.polaroid img{height:350px}.polaroid>span{font-size:17px}.round-stamp{width:85px;height:85px;left:-30px;font-size:8px}.hero-bottom{font-size:7px;gap:22px;letter-spacing:1px}.story{padding:65px 6%}.section-heading{display:block;margin-bottom:30px}.section-heading p{max-width:100%}.gallery{grid-template-columns:1fr 1fr;gap:22px 14px}.photo:nth-child(4),.photo:nth-child(5){grid-column:auto;margin-top:0}.photo img,.photo.tall img{height:220px}.photo:nth-child(5){grid-column:1 / -1;width:68%;justify-self:center}.photo figcaption{font-size:8px;padding:12px 0}.photo figcaption span{font-size:15px}.videos{margin-top:60px;grid-template-columns:1fr 1fr;gap:15px}.videos>div{grid-column:1 / -1}.videos h3{font-size:36px}.videos video{height:280px;border-radius:70px 70px 8px 8px}.videos figcaption{font-size:16px}.reasons{padding:65px 8%}.reason-grid{grid-template-columns:1fr;gap:22px;margin-top:30px}.reason-grid h3{margin-top:12px}.letter-section{padding:65px 12px}.letter{padding:35px 27px}.letter p{font-size:14px}.wish{padding-top:65px}.stars{letter-spacing:20px;font-size:20px}.wish h2{font-size:49px}footer{flex-wrap:wrap;justify-content:center;gap:20px}footer p{width:65%}footer>span{width:100%;text-align:center}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

.letter{max-width:100%}
.music{max-width:1200px;margin:auto;padding:75px 6%;display:grid;grid-template-columns:1.15fr 1fr;gap:60px;border-bottom:1px solid #e5d9e8}.music h2{font-size:46px;margin-top:25px}.music p{font-size:13px;color:#85748d}.tracks{display:flex;flex-wrap:wrap;gap:8px;margin:25px 0}.tracks button{border:1px solid #d7c4df;border-radius:25px;padding:10px 16px;background:transparent;color:#73518f;font-size:12px}.tracks button[aria-pressed=true]{background:#73518f;color:white}.music .music-note{font-family:'Caveat',cursive;font-size:22px}.player-card{align-self:center;background:#eee4f3;padding:22px;border-radius:16px}.player-heading{display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:2px;margin-bottom:18px}.player-wrap{aspect-ratio:16/9;min-height:200px;background:#3d2c4c;border-radius:8px;overflow:hidden}.player-wrap iframe{width:100%;height:100%;display:block;border:0}.player-card p{margin:15px 0 5px}.player-card>a{font-size:11px;text-decoration:underline}.equalizer{display:flex;align-items:center;height:22px;gap:3px}.equalizer i{width:3px;height:7px;background:#9970a8;border-radius:4px}.playing .equalizer i{animation:wave .7s ease-in-out infinite alternate}.equalizer i:nth-child(2){animation-delay:.2s}.equalizer i:nth-child(3){animation-delay:.4s}.equalizer i:nth-child(4){animation-delay:.1s}@keyframes wave{to{height:22px}}@media(max-width:760px){.music{grid-template-columns:1fr;gap:20px;padding:55px 6%}.music h2{font-size:39px}.player-card{padding:16px}.player-wrap{min-height:200px}}@media(prefers-reduced-motion:reduce){.playing .equalizer i{animation:none;height:17px}}
.player-card{background:linear-gradient(145deg,#efe3f4,#f6e5ec);border:1px solid #e5d3e9;box-shadow:0 18px 45px #67437812;text-align:center;padding:27px;min-width:0}.record-stage{position:relative;display:grid;place-items:center;padding:14px 0 22px}.record{width:230px;height:230px;border-radius:50%;background:repeating-radial-gradient(circle,#38263f 0 2px,#4c3655 3px 4px);box-shadow:7px 12px 23px #46304f30;display:grid;place-items:center;animation:record-spin 14s linear infinite;animation-play-state:paused}.playing .record{animation-play-state:running}.record-label{width:95px;height:95px;background:#e8bfd7;border:5px solid #d9acc9;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center}.record-label span{font-family:'Cormorant Garamond',serif;font-size:25px;line-height:1}.record-label small{font-size:7px;letter-spacing:3px;margin:6px 0}.record-label b{font-size:18px;line-height:1}.record-spark{position:absolute;top:0;left:5%;font-size:45px;color:#ad87ba}.record-note{position:absolute;bottom:15px;right:0;font-family:'Caveat',cursive;font-size:23px;transform:rotate(-12deg)}.player-card h3{font-size:33px;margin:7px 0 2px}.player-card .song-artist{margin:0;font-size:11px;letter-spacing:1.5px}.progress-row{display:flex;align-items:center;gap:10px;margin:20px 0 12px;font-size:10px;color:#977ba6;font-variant-numeric:tabular-nums}.progress-row input{min-width:0;flex:1;accent-color:#88609b;cursor:pointer;height:4px}.audio-controls{display:flex;gap:26px;justify-content:center;align-items:center}.audio-controls button{border:0;background:none;color:#73518f;font-size:20px;width:38px;height:38px;border-radius:50%}.audio-controls #play-song{background:#73518f;color:white;width:58px;height:58px;font-size:20px;box-shadow:0 5px 12px #73518f25}.audio-controls button:hover{transform:scale(1.07)}.audio-controls button:disabled{opacity:.3;cursor:default}.player-card #music-status{font-family:'Caveat',cursive;font-size:20px;margin-top:15px}.music-dock{position:fixed;bottom:18px;right:18px;z-index:10;display:flex;align-items:center;gap:14px;padding:11px 17px;border-radius:30px;background:#fff9fdf2;box-shadow:0 5px 30px #3d2c4c26;backdrop-filter:blur(10px);border:1px solid #ddc7e4;font-size:11px}.music-dock button{background:#73518f;color:white;border:0;border-radius:50%;height:32px;width:32px}.music-dock a{font-family:'Caveat',cursive;font-size:19px}@keyframes record-spin{to{transform:rotate(360deg)}}@media(max-width:760px){.record{width:215px;height:215px}.music-dock{bottom:10px;right:10px;max-width:calc(100vw - 20px)}footer{padding-bottom:85px}}@media(prefers-reduced-motion:reduce){.record{animation:none!important}}
.cover-art{margin:4px 0 20px;border-radius:10px;overflow:hidden;box-shadow:0 8px 22px #39284422;aspect-ratio:16/9;background:#e9dce9}.cover-art img{width:100%;height:100%;object-fit:contain;display:block}.record-stage{display:none}.tracks{display:grid;grid-template-columns:1fr;gap:9px}.tracks button{border-radius:12px;display:flex;align-items:center;text-align:left;gap:15px;padding:7px 13px 7px 7px;background:#ffffff70}.tracks button img{width:68px;height:46px;object-fit:cover;border-radius:7px}.tracks button span{font-size:14px}.tracks button small{margin-left:auto;font-size:10px;opacity:.6}.player-card{position:relative}.playing .cover-art{box-shadow:0 0 0 4px #c49cd62b,0 10px 30px #73518f30}.player-card .cover-art{transition:box-shadow .4s}.music{align-items:center}@media(max-width:760px){.tracks{grid-template-columns:1fr 1fr}.tracks button{gap:8px;padding:6px}.tracks button img{width:42px;height:42px}.tracks button span{font-size:11px}.tracks button small{display:none}.cover-art{margin-bottom:20px}}
/* Small, quiet details for Kiki. */
body{position:relative}.petal-field{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}.petal-field span{position:absolute;left:var(--x);bottom:-45px;color:#b78ec3;opacity:0;font-size:19px;animation:petal-rise var(--duration) linear var(--delay) infinite}header,main,footer{position:relative;z-index:1}.hero{min-height:730px;padding-bottom:65px}.story{padding-top:75px;padding-bottom:75px}.music{padding-top:55px;padding-bottom:55px}.letter-section{padding-top:75px}.letter{border-radius:3px 3px 12px 12px;position:relative}.letter:not([hidden]){animation:letter-unfold .65s ease both}.personal-letter{hyphens:auto;overflow-wrap:break-word}.polaroid{transition:transform .5s,box-shadow .5s}.polaroid:hover{transform:rotate(1deg) translateY(-5px);box-shadow:0 25px 65px #4c31552b}.photo{transition:transform .35s,box-shadow .35s}.photo:hover{transform:rotate(0) translateY(-5px);box-shadow:0 12px 35px #6f437522}.seal{animation:heartbeat 3.8s ease-in-out infinite}.reveal{opacity:0;translate:0 20px;transition:opacity .8s ease,translate .8s ease}.reveal.visible{opacity:1;translate:0 0}.tap-spark{position:fixed;pointer-events:none;z-index:25;color:#b179b8;font-size:18px;animation:spark-away .8s ease-out forwards}.hero .star{animation:star-glow 4s ease-in-out infinite}.wish .stars{animation:star-glow 5s ease-in-out infinite}@keyframes petal-rise{0%{transform:translate(0,0) rotate(-15deg);opacity:0}12%,80%{opacity:.25}100%{transform:translate(25px,-110vh) rotate(35deg);opacity:0}}@keyframes letter-unfold{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}@keyframes heartbeat{0%,85%,100%{transform:scale(1)}90%{transform:scale(1.08)}95%{transform:scale(1)}}@keyframes star-glow{50%{opacity:.4}}@keyframes spark-away{to{transform:translate(var(--dx),-48px) scale(.5);opacity:0}}@media(max-width:760px){.hero{min-height:0;padding-bottom:30px}.hero-art{margin-bottom:15px}.story{padding-top:50px;padding-bottom:45px}.letter-section{padding-top:50px}.letter{padding:30px 24px}.letter .personal-letter{font-size:15px;line-height:1.9}.music{padding-top:40px;padding-bottom:40px}}@media(prefers-reduced-motion:reduce){.petal-field,.tap-spark{display:none}.reveal{opacity:1;translate:none}.letter:not([hidden]),.seal{animation:none!important}}
.personal-letter{hyphens:none}
