@font-face{font-family:Editorial;src:url('assets/cormorant-garamond.woff2') format('woff2');font-style:normal;font-weight:400 700;font-display:swap}
@font-face{font-family:Editorial;src:url('assets/cormorant-garamond-italic.woff2') format('woff2');font-style:italic;font-weight:400 700;font-display:swap}
@font-face{font-family:Handwritten;src:url('assets/caveat.woff2') format('woff2');font-weight:400 700;font-display:swap}
:root{--ink:#493a36;--muted:#82716a;--rose:#8f4c58;--cream:#f5f0e9;--line:#dcd1c6;--paper:#fffcf5;--serif:Editorial,Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;color:var(--ink);background:var(--cream);font-family:var(--sans);-webkit-font-smoothing:antialiased}body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.22;z-index:9;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.20' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--rose);outline-offset:5px}button{transition:background .2s,transform .2s}button:active{transform:scale(.97)}[hidden]{display:none!important}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.tiny{font-size:10px;letter-spacing:2.5px;font-weight:500;line-height:1.7}.handwritten{font-family:Handwritten,'Brush Script MT',cursive;font-weight:400}.entry{min-height:100svh;display:flex;flex-direction:column;align-items:center;background:radial-gradient(ellipse at 20% 40%,#ead3cc66,transparent 46%),radial-gradient(ellipse at 87% 76%,#e0dfcc65,transparent 43%);position:relative;overflow:hidden}.entry::after{content:"";position:absolute;inset:20px;border:1px solid #bfa99a55;pointer-events:none}.entry-brand,.wordmark{display:flex;align-items:center;gap:9px;font-family:var(--serif);font-style:italic;font-size:22px}.entry-brand{margin-top:43px}.entry-brand .icon,.wordmark .icon{color:var(--rose);width:16px;height:16px}.invitation{text-align:center;width:100%;max-width:620px;padding:47px 28px 35px;margin:auto;z-index:1}.invitation-eyebrow{color:var(--muted)}.envelope-scene{width:290px;height:211px;margin:20px auto 0;position:relative}.envelope{position:absolute;width:198px;height:126px;left:33px;top:53px;transform:rotate(-8deg);background:#dbc3b3;box-shadow:0 12px 24px #6b3f2920;border:1px solid #c7ad98}.envelope::before{content:"";position:absolute;width:138px;height:138px;transform:rotate(45deg);left:29px;top:-69px;border-radius:4px 0 0;background:#e5ccba;z-index:-1}.envelope-note{position:absolute;left:12px;top:-36px;width:172px;height:129px;background:#fffbf4;box-shadow:0 0 0 1px #e5d8c5;padding:20px 5px;font-family:var(--serif);font-size:19px;line-height:1.15;transform:rotate(3deg);color:#877265}.envelope-front{position:absolute;inset:0;overflow:hidden}.envelope-front::before,.envelope-front::after{content:"";position:absolute;width:155px;height:155px;background:#e5cbbb;box-shadow:0 0 0 1px #c9ac9960;top:27px;transform:rotate(45deg)}.envelope-front::before{left:-63px}.envelope-front::after{right:-63px;background:#ead4c4}.seal{position:absolute;width:39px;height:39px;top:66px;left:78px;display:grid;place-items:center;border-radius:46% 52% 48% 50%;background:#a65e65;border:3px solid #ae6970;box-shadow:1px 3px 5px #683f3830}.seal svg{width:20px;height:20px;fill:none;stroke:#efd4c6;stroke-width:1.2}.envelope-flower{position:absolute;width:102px;height:145px;right:0;top:15px;transform:rotate(22deg);filter:drop-shadow(1px 3px 2px #79572c15)}.envelope-caption{position:absolute;right:-32px;bottom:17px;font-size:22px;color:#947264;transform:rotate(7deg)}h1,h2,p{margin:0}h1{font-family:var(--serif);font-weight:400;font-size:62px;line-height:.98;letter-spacing:-1.8px}h1 em,h2 em{font-weight:400;color:var(--rose)}.invitation-copy{margin:20px 0 26px;color:var(--muted);font-size:13px;line-height:1.8}.headphone-notice{display:flex;justify-content:center;align-items:center;gap:13px;text-align:left;margin:0 auto 23px}.headphone-notice .icon{width:30px;height:30px;color:var(--rose);stroke-width:1.3}.headphone-notice strong{display:block;font-size:12px;letter-spacing:.1px;font-weight:500}.headphone-notice span{display:block;font-size:10px;color:var(--muted);margin-top:6px}.primary-button{display:flex;align-items:center;justify-content:center;gap:39px;border:1px solid var(--rose);border-radius:3px;background:var(--rose);color:#fffaf2;padding:17px 23px;font-size:12px;letter-spacing:.3px;width:286px;max-width:100%;margin:0 auto;box-shadow:0 5px 12px #6f253214}.primary-button:hover{background:#7c3d49;box-shadow:0 7px 18px #6f253225}.primary-button .icon{width:19px;height:19px}.entry-footnote{display:block;font-size:10px;color:var(--muted);margin-top:15px}.entry-footer{font-size:8px;letter-spacing:2px;color:#87756a;display:flex;align-items:center;gap:18px;padding:0 25px 38px;text-align:center}.entry-footer span{font-size:16px;line-height:1}.entry.leaving{animation:entry-out .6s ease forwards;pointer-events:none}@keyframes entry-out{to{opacity:0;transform:translateY(-12px)}}#letter-experience{animation:letter-in 1s ease both}@keyframes letter-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.letter-nav{max-width:1200px;margin:0 auto;padding:31px 40px;display:flex;justify-content:space-between;align-items:center}.wordmark{text-decoration:none;color:var(--ink)}.letter-nav>.tiny{color:var(--muted);font-size:9px}.letter-main{padding:0 24px 120px;background:radial-gradient(ellipse at 85% 14%,#e9d5c952,transparent 32%)}.letter-intro{text-align:center;padding:58px 0 47px}.letter-intro>.tiny{color:var(--muted)}.letter-intro h1{font-size:64px;line-height:1.04;margin:21px 0 20px;outline:none}.letter-intro>p{font-size:12px;color:var(--muted);line-height:1.7}.intro-rule{display:flex;align-items:center;justify-content:center;gap:17px;margin-top:34px}.intro-rule>span{width:42px;height:1px;background:var(--line)}.intro-rule .icon{width:14px;height:14px;color:#b68a82}.letter-paper{position:relative;max-width:750px;margin:0 auto;background:var(--paper);box-shadow:0 3px 8px #5b422206,0 20px 65px #5b42220a;border:1px solid #e9dfd1;padding:48px 76px 30px}.letter-paper::before{content:"";position:absolute;width:106px;height:28px;left:calc(50% - 53px);top:-13px;transform:rotate(-3deg);background:#e5d2b58c;border-left:1px dashed #d4bb94;border-right:1px dashed #d4bb94}.paper-heading{display:flex;justify-content:space-between;align-items:center;color:#9c8a7c;margin-bottom:45px}.paper-heading>.tiny{font-size:8px;letter-spacing:1.7px}.paper-number{font-size:10px;font-family:var(--serif);font-style:italic}.paper-flower{position:absolute;top:77px;right:-39px;width:166px;height:234px;transform:rotate(17deg);filter:drop-shadow(2px 5px 3px #664c2a10);pointer-events:none}.letter-paper h2{font-family:var(--serif);font-weight:400;font-size:68px;line-height:.91;letter-spacing:-1px;margin-bottom:36px}.letter-body{font-family:var(--serif);font-size:23px;line-height:1.52;color:#584940}.letter-body>p{margin:0 0 25px}.letter-body strong{font-weight:600;color:#784652}.letter-body .warm-line{font-size:27px;font-style:italic;line-height:1.3;color:var(--rose);padding:9px 0 10px}.letter-divider{text-align:center;color:#bfa98c;font-size:25px;margin:30px 0 33px}.letter-body blockquote{position:relative;text-align:center;font-size:43px;line-height:1.1;letter-spacing:-.6px;margin:44px -8px;padding:34px 12px 33px;border-top:1px solid #e5d9ca;border-bottom:1px solid #e5d9ca;color:#7c4851}.letter-body blockquote em{display:block;margin-top:4px}.letter-body blockquote .icon{display:block;margin:20px auto 0;width:17px;height:17px;color:#b58b7d}.smile-message{text-align:center;margin:15px 0 37px}.smile-message>.handwritten{font-size:63px;color:var(--rose);display:block;transform:rotate(-5deg);line-height:1.4}.smile-message p{font-size:20px;font-style:italic;color:var(--muted);margin-top:6px}.sign-off{display:flex;flex-direction:column;margin:42px 0 45px;gap:2px}.sign-off>span:first-child{font-size:19px;font-style:italic;color:var(--muted)}.sign-off .handwritten{font-size:39px;line-height:1.4;color:var(--rose)}.paper-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #e5d9ca;padding-top:23px}.paper-bottom>span{font-size:8px;letter-spacing:1.5px;color:var(--muted)}.paper-bottom .icon{width:13px;height:13px;color:#b38b80}.closing{text-align:center;padding:67px 20px 37px}.closing>.tiny{font-size:8px;color:var(--muted)}.closing p{font-family:var(--serif);font-size:37px;line-height:1.13;margin:19px 0 21px}.closing p em{color:var(--rose)}.text-button{display:inline-flex;align-items:center;gap:11px;border:none;border-bottom:1px solid #baa49a;background:none;color:var(--muted);font-size:11px;padding:10px 1px}.text-button:hover{color:var(--rose)}.text-button .icon{width:14px;height:14px}.letter-footer{text-align:center;font-family:var(--serif);font-size:17px;color:var(--muted);font-style:italic;padding:15px 0}.letter-footer>span{color:var(--rose);margin-left:4px}.player{position:fixed;bottom:23px;left:50%;transform:translateX(-50%);z-index:10;display:flex;align-items:center;gap:16px;width:min(520px,calc(100% - 32px));padding:16px 20px;background:#fffcf5f5;border:1px solid #e0d2c6;border-radius:12px;box-shadow:0 8px 40px #4d302421;backdrop-filter:blur(12px)}.play-button{display:grid;place-items:center;flex-shrink:0;width:42px;height:42px;border:none;border-radius:50%;background:var(--rose);color:#fff8f0}.play-button:hover{background:#783946}.play-button .icon{width:18px;height:18px}.play-button use[href="#play"]{fill:currentColor;stroke-width:0}.player-info{min-width:0;flex:1}.player-caption{display:flex;align-items:center;gap:9px;margin-bottom:9px;min-height:14px}.player-caption strong{font-size:11px;font-weight:500;white-space:nowrap}.player-caption>span{font-size:9px;color:var(--muted)}.sound-bars{display:flex;align-items:center;gap:2px;height:12px;margin-left:auto}.sound-bars i{height:3px;width:2px;background:#aa727d;border-radius:2px}.is-playing .sound-bars i{animation:equalizer .9s ease-in-out infinite alternate}.is-playing .sound-bars i:nth-child(2){animation-delay:-.6s}.is-playing .sound-bars i:nth-child(3){animation-delay:-.3s}.is-playing .sound-bars i:nth-child(4){animation-delay:-.8s}@keyframes equalizer{to{height:12px}}.progress-row{display:flex;align-items:center;gap:8px}.progress-row time{font-size:9px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:23px}.progress-row input{--progress:0%;display:block;width:100%;min-width:0;height:16px;margin:0;cursor:pointer;appearance:none;background:transparent}.progress-row input::-webkit-slider-runnable-track{height:3px;border-radius:4px;background:linear-gradient(to right,var(--rose) var(--progress),#e7ddd3 var(--progress))}.progress-row input::-moz-range-track{height:3px;border-radius:4px;background:#e7ddd3}.progress-row input::-moz-range-progress{background:var(--rose);height:3px}.progress-row input::-webkit-slider-thumb{appearance:none;margin-top:-3px;width:9px;height:9px;border-radius:50%;background:var(--rose)}.progress-row input::-moz-range-thumb{width:9px;height:9px;border:none;border-radius:50%;background:var(--rose)}.replay-button{width:30px;height:34px;display:grid;place-items:center;flex-shrink:0;border:0;background:transparent;color:var(--muted);padding:0}.replay-button .icon{width:18px;height:18px}.replay-button:hover{color:var(--rose)}.audio-message{position:fixed;left:50%;bottom:112px;transform:translateX(-50%);z-index:11;width:min(440px,calc(100% - 40px));background:#fffaf2;padding:13px 17px;border:1px solid var(--line);border-radius:8px;font-size:12px;line-height:1.5;color:var(--ink);text-align:center;box-shadow:0 3px 15px #493a3615}
@media(min-height:920px){.invitation{padding-top:65px;padding-bottom:55px}.envelope-scene{margin-top:30px;height:226px}.invitation-copy{margin-bottom:30px}}
@media(max-width:600px){.entry::after{inset:12px}.entry-brand{margin-top:32px;font-size:20px}.invitation{padding:35px 22px 28px}.invitation-eyebrow{font-size:8px;letter-spacing:2px}.envelope-scene{transform:scale(.88);margin-top:7px;margin-bottom:-18px}.envelope-caption{right:-9px}.invitation h1{font-size:53px}.invitation-copy{font-size:12px;margin-top:18px;margin-bottom:23px}.headphone-notice{gap:11px;margin-bottom:21px}.headphone-notice span{font-size:9px}.entry-footer{font-size:7px;letter-spacing:1.5px;padding-bottom:28px;gap:13px}.letter-nav{padding:26px 23px}.wordmark{font-size:20px}.letter-nav>.tiny{font-size:7px;letter-spacing:1.3px}.letter-main{padding:0 15px 115px;overflow:hidden}.letter-intro{padding:36px 0 37px}.letter-intro>.tiny{font-size:8px;letter-spacing:2px}.letter-intro h1{font-size:43px;letter-spacing:-1px;margin-top:18px}.letter-intro>p{font-size:10px;padding:0 12px}.intro-rule{margin-top:27px}.letter-paper{padding:34px 27px 24px}.paper-heading{margin-bottom:36px}.paper-heading>.tiny{font-size:7px;letter-spacing:1px}.paper-flower{width:119px;height:172px;right:-22px;top:69px}.letter-paper h2{font-size:59px;margin-bottom:31px}.letter-body{font-size:21px;line-height:1.52}.letter-body>p{margin-bottom:24px}.letter-body .warm-line{font-size:25px}.letter-body blockquote{font-size:36px;margin:35px 0;padding:27px 0}.smile-message>.handwritten{font-size:58px}.smile-message p{font-size:18px}.paper-bottom>span{font-size:7px;letter-spacing:1px}.closing{padding:48px 10px 23px}.closing p{font-size:31px}.player{bottom:max(14px,env(safe-area-inset-bottom));padding:13px 14px;gap:12px;border-radius:10px}.player-caption>span{font-size:8px}.player-caption{gap:7px}.replay-button{width:25px}.audio-message{bottom:103px}}
@media(max-width:360px){.invitation h1{font-size:48px}.entry-footer{letter-spacing:1px}.letter-paper{padding-left:23px;padding-right:23px}.letter-intro h1{font-size:39px}.player-caption>span{display:none}.envelope-scene{width:272px}.headphone-notice strong{font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
