@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600&family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=DM+Sans:wght@400;500;600&display=swap');
:root{--wine:#750d25;--paper:#f4eddc;--ink:#4d1724;--muted:#876d63}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.7 'DM Sans',sans-serif;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='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.055' filter='url(%23n)'/%3E%3C/svg%3E")}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #bf8151;outline-offset:6px}header{height:90px;max-width:1320px;padding:0 6%;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #750d2520}.brand{font:28px 'Cormorant Garamond',serif;letter-spacing:3px}.brand span{font-size:20px}nav{display:flex;gap:32px;font-size:12px}nav a{border-bottom:1px solid transparent}nav a:hover{border-color:var(--wine)}.sound{background:none;border:1px solid #750d2530;border-radius:30px;padding:7px 14px;font-size:12px}.hero{max-width:1320px;margin:auto;min-height:740px;padding:90px 7% 105px;display:grid;grid-template-columns:1.1fr 1fr;position:relative;align-items:center}.eyebrow{font-size:10px;letter-spacing:2.5px;font-weight:600}.hero h1{font:76px/.99 'Cormorant Garamond',serif;letter-spacing:-2px;margin:30px 0 22px;position:relative}h1 em{font-size:71px;font-weight:500;white-space:nowrap}.heading-heart{position:absolute;font:68px 'Caveat',cursive;transform:rotate(-18deg);top:-38px;right:18px}.hand{font:28px/1.25 'Caveat',cursive}.hero .hand{margin:0 0 24px}.intro{color:var(--muted);font-size:14px;line-height:1.9}.button{display:inline-flex;align-items:center;justify-content:center;gap:30px;border:1px solid var(--wine);background:var(--wine);color:#fff1d7;padding:16px 24px;border-radius:3px;font-size:12px;transition:transform .2s,background .2s}.button:hover{background:#931637;transform:translateY(-3px)}.hero .button{margin-top:20px}.signature{font-size:10px;letter-spacing:.6px;color:var(--muted);margin-top:16px}.hero-art{position:relative;padding:30px 25px 30px 50px}.polaroid{padding:13px 13px 5px;background:#fcf8ec;border:0;box-shadow:0 8px 20px #34111b25;transform:rotate(-5deg);transition:transform .3s;display:block}.polaroid:hover{transform:rotate(0deg) translateY(-5px)}.polaroid img{display:block;width:100%;height:290px;object-fit:cover}.polaroid span{display:block;font:25px/1.7 'Caveat',cursive;text-align:center}.hero-photo{transform:rotate(7deg);background:var(--wine);padding:15px 15px 5px;color:#f4e3c5;width:100%;max-width:370px}.hero-photo img{height:350px;object-position:50% 37%}.hero-photo:before{content:'';position:absolute;top:-15px;left:39%;width:95px;height:30px;transform:rotate(-10deg);background:#c5a9829c;box-shadow:0 1px 3px #0001}.scribble{position:absolute;top:-19px;left:65px;font:27px 'Caveat';transform:rotate(-10deg)}.stamp{position:absolute;right:-10px;top:17px;border:1px solid #750d2580;outline:1px dashed #750d2570;outline-offset:5px;font:10px/1.3 'DM Sans';text-align:center;padding:10px;transform:rotate(14deg);letter-spacing:2px}.stamp b{font-size:28px;font-weight:400}.flower{position:absolute;font-size:145px;line-height:1;color:#aa2443;left:-5px;bottom:1px;text-shadow:2px 3px 0 #4e0d24,0 4px 12px #51132230;transform:rotate(-15deg)}.small-heart{position:absolute;right:-9px;bottom:95px;font:80px 'Caveat';transform:rotate(16deg)}.little-note{position:absolute;right:2px;bottom:-25px;background:#e7d5b4;font:22px/1.3 'Caveat';padding:16px 30px;transform:rotate(-7deg);box-shadow:2px 4px 9px #0001}.little-note span{position:absolute;right:8px;top:9px}.scroll{position:absolute;bottom:28px;left:7%;right:7%;font-size:10px;letter-spacing:1px;display:flex;align-items:center;gap:20px}.scroll span{font-size:25px}.ribbon{background:var(--wine);color:#f1dfbd;padding:17px 0;text-align:center;white-space:nowrap;overflow:hidden;font:23px 'Cormorant Garamond',serif;letter-spacing:1px}.ribbon span{margin:0 35px;font-size:14px}.section{max-width:1160px;margin:auto;padding:100px 45px}h2{font:52px/1.08 'Cormorant Garamond',serif;font-weight:400;letter-spacing:-1px;margin:20px 0 30px}h2 em{font-weight:400}h3{font:28px 'Cormorant Garamond';margin:0 0 10px}.story-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center;margin-top:55px}.story-pictures{position:relative;min-height:440px}.story-pictures .polaroid{width:60%;position:absolute;top:0;left:0}.story-pictures .polaroid img{height:230px}.story-pictures .polaroid:nth-child(2){top:130px;left:38%;transform:rotate(7deg)}.story-pictures .polaroid:nth-child(2) img{height:245px}.chapters article{display:flex;gap:20px;margin-bottom:28px}.chapters article>span{font:italic 23px 'Cormorant Garamond';color:#ac7b72;border-top:1px solid #b38c78;padding-top:6px}.chapters p{color:var(--muted);margin:0;font-size:13px}.trip{max-width:none;background:#e7ddc9;display:grid;grid-template-columns:1fr 1.1fr;gap:70px;padding-left:max(7%,calc((100vw - 1070px)/2));padding-right:max(7%,calc((100vw - 1070px)/2));align-items:center}.trip-text>p:not(.eyebrow):not(.hand){max-width:370px;color:var(--muted)}.trip-images{display:flex;align-items:center;gap:0}.trip-images .polaroid{width:55%;flex-shrink:0}.trip-images .polaroid img{height:270px}.trip-images .polaroid:nth-child(2){transform:rotate(8deg);margin-left:-20px;margin-top:80px}.trip-images .polaroid span{font-size:21px}.notes{text-align:center}.section-intro{color:var(--muted)}.note-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;margin:45px 0 30px}.note{border:1px solid #d7c7ac;box-shadow:3px 5px 0 #d8c5a655;background:#efe0bd;padding:28px 22px;min-height:190px;transform:rotate(-3deg);text-align:left;transition:transform .2s}.note:nth-child(2){background:#ead1cb;transform:rotate(2deg)}.note:nth-child(3){transform:rotate(-2deg)}.note:hover{transform:rotate(0) translateY(-7px)}.note span{font-size:9px;letter-spacing:1px}.note b{display:block;font:32px 'Caveat';margin:20px 0}.note small{font-size:10px;color:var(--muted)}.text-button{background:none;border:0;border-bottom:1px solid #a78078;padding:10px;font-size:12px}.live-note{min-height:36px}.memories{border-top:1px solid #750d2520}.album-heading{display:flex;justify-content:space-between;align-items:center;gap:30px}.album-heading .hand{font-size:24px;transform:rotate(-5deg)}.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:28px 22px;margin:30px 0 45px}.gallery .polaroid{transform:rotate(-2deg);padding:9px 9px 4px}.gallery .polaroid:nth-child(3n){transform:rotate(3deg)}.gallery .polaroid:nth-child(4n){transform:rotate(-4deg)}.gallery .polaroid:hover{transform:rotate(0) scale(1.03)}.gallery img{height:220px;object-position:50% 35%}.gallery .polaroid span{font-size:21px;line-height:1.6}.album-more{display:flex;margin:auto}.album-count{text-align:center;font-size:10px;letter-spacing:1px;color:var(--muted)}.letter{max-width:none;background:var(--wine);color:var(--paper);text-align:center;padding-bottom:85px}.envelope{position:relative;display:block;width:480px;max-width:100%;height:270px;background:#e8d8b7;border:0;margin:55px auto 15px;box-shadow:0 15px 35px #25020c55;isolation:isolate;color:var(--ink);transition:transform .3s}.envelope:before{content:'';position:absolute;inset:0;background:#f3e5c9;clip-path:polygon(0 0,100% 0,50% 55%);z-index:-1}.envelope:hover{transform:rotate(-2deg) translateY(-5px)}.seal{position:absolute;left:calc(50% - 25px);top:108px;background:var(--wine);color:var(--paper);width:50px;height:50px;line-height:50px;border-radius:50%;font-size:30px;box-shadow:0 2px 3px #0003}.envelope-label{position:absolute;left:30px;bottom:30px;text-align:left;font:28px/1 'Caveat'}.envelope-label small{font-size:19px}.open-hint{position:absolute;right:20px;bottom:30px;font-size:10px}.letter-paper{max-width:630px;margin:35px auto 0;background:var(--paper);color:var(--ink);padding:35px 55px;text-align:left;box-shadow:0 10px 30px #0003}.letter-paper .hand{font-size:31px}.letter-paper p{margin-bottom:20px}.wish{text-align:center}.wish>p{color:var(--muted)}.cake{display:block;width:180px;height:190px;position:relative;margin:30px auto 20px;background:none;border:0}.cake span{position:absolute;display:block}.flame{color:#e1a448;top:0;left:80px;font-size:30px;filter:drop-shadow(0 0 10px #dfa550);animation:flicker 1s infinite alternate}.candle{width:10px;height:45px;left:86px;top:40px;background:repeating-linear-gradient(30deg,#b75065 0 7px,#fff0d3 7px 13px)}.cake-top{top:80px;left:15px;width:150px;height:35px;border-radius:50%;background:#d5a59f;border:6px solid #e8c6b9;z-index:2}.cake-base{left:15px;top:96px;height:70px;width:150px;background:#8e2541;border-radius:0 0 45% 45%;color:#f3d8c2;font:26px/60px 'Caveat'}.cake-plate{left:0;top:157px;width:180px;height:22px;border-radius:50%;background:#cab796;z-index:-1}.blown .flame{display:none}.wish .hand{font-size:30px}footer{padding:40px 7%;border-top:1px solid #750d2520;display:flex;align-items:center;justify-content:space-between;gap:25px}footer p{color:var(--muted);font-size:11px}footer .hand{font-size:24px}dialog{border:0;padding:0;background:#f4eddc;color:var(--ink);box-shadow:0 20px 80px #0005;max-width:95vw}dialog::backdrop{background:#21080ee8;backdrop-filter:blur(8px)}#lightbox{background:transparent;overflow:visible;width:850px;color:var(--paper)}#lightbox figure{margin:0;text-align:center}#full-photo{max-width:90%;max-height:78vh;object-fit:contain;box-shadow:0 10px 30px #0004}figcaption{font:25px 'Caveat';margin-top:10px}.close{position:absolute;right:0;top:-40px;border:0;background:none;font-size:32px;color:inherit;padding:0 10px}.prev,.next{position:absolute;top:45%;border:0;background:#f4eddce0;color:var(--wine);border-radius:50%;font-size:32px;width:42px;height:42px;line-height:1}.prev{left:0}.next{right:0}#note-dialog{width:460px;padding:45px;text-align:center;overflow:visible}#note-dialog p{font:28px/1.3 'Caveat'}#note-dialog .close{color:var(--paper)}.note-heart{font-size:40px}.note-dialog .hand{font-size:23px}#confetti{position:fixed;inset:0;pointer-events:none;z-index:100;overflow:hidden}.confetti-heart{position:absolute;top:-50px;font-size:24px;animation:fall 4s ease-in forwards}@keyframes fall{to{transform:translateY(110vh) rotate(360deg);opacity:0}}@keyframes flicker{to{transform:scale(.9) rotate(6deg)}}@media(min-width:1400px){.hero{min-height:780px}}@media(max-width:900px){.hero{padding:80px 6% 100px;min-height:660px}.hero h1{font-size:57px}h1 em{font-size:51px}.hero-photo img{height:290px}.hero-art{padding-left:30px}.heading-heart{right:20px;top:-50px}.flower{font-size:110px;left:0}.stamp{right:-5px}.story-grid{gap:40px}.trip{gap:35px}.gallery{grid-template-columns:repeat(3,1fr)}.gallery img{height:230px}.note-grid{gap:15px}.note{padding:20px 15px}.note b{font-size:28px}h2{font-size:46px}}@media(max-width:600px){header{height:73px;padding:0 22px}nav{gap:16px;font-size:10px}nav a:last-child{display:none}.brand{font-size:24px}.sound{padding:6px 10px}.sound span{display:none}.hero{display:flex;flex-direction:column;padding:48px 25px 83px;min-height:0;gap:35px}.hero-copy{width:100%;text-align:center}.eyebrow{font-size:9px;letter-spacing:1.7px}.hero h1{font-size:57px;margin:25px 0 19px}h1 em{font-size:52px;white-space:normal}.heading-heart{font-size:45px;top:-25px;right:6px}.hero .hand{font-size:27px;margin-bottom:18px}.intro{font-size:13px}.hero .button{margin-top:15px}.hero-art{width:90%;max-width:350px;padding:22px 20px 30px}.hero-photo img{height:300px}.hero-photo span{font-size:23px}.scribble{top:-10px;left:30px;font-size:24px}.stamp{top:2px;right:-6px;font-size:8px}.flower{font-size:110px;bottom:12px;left:-15px}.small-heart{font-size:65px;right:-5px;bottom:80px}.little-note{bottom:0;right:-5px;font-size:20px}.scroll{bottom:20px;left:25px;justify-content:center}.ribbon{font-size:21px;padding:14px 0}.ribbon span{margin:0 22px}.section{padding:65px 25px}h2{font-size:42px;margin:17px 0 25px}.story-grid{display:flex;flex-direction:column;gap:35px;margin-top:35px}.story-pictures{width:100%;min-height:395px}.story-pictures .polaroid{width:57%}.story-pictures .polaroid img{height:210px}.story-pictures .polaroid:nth-child(2){left:40%;top:115px}.story-pictures .polaroid:nth-child(2) img{height:220px}.polaroid span{font-size:21px}.chapters article{gap:18px;margin-bottom:25px}.chapters p{font-size:13px}.trip{display:block}.trip-images{max-width:400px;margin:30px auto 0}.trip-images .polaroid img{height:230px}.trip-images .polaroid span{font-size:19px}.trip-text .hand{font-size:26px}.note-grid{grid-template-columns:1fr;gap:25px;margin:35px 10px}.note{min-height:150px;padding:22px 25px}.note b{font-size:32px;margin:13px 0}.album-heading{display:block}.album-heading .hand{transform:rotate(-3deg);font-size:23px;margin:25px 0 40px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:23px 15px;margin-top:20px}.gallery img{height:200px}.gallery .polaroid{padding:7px 7px 3px}.gallery .polaroid span{font-size:18px;line-height:1.5}.button{font-size:11px;padding:15px 20px;gap:20px}.envelope{height:230px;margin-top:40px}.seal{top:90px}.envelope-label{left:20px;font-size:25px;bottom:25px}.envelope-label small{font-size:17px}.open-hint{right:12px;bottom:15px;font-size:9px}.letter-paper{padding:25px;text-align:left;font-size:13px}.letter-paper .hand{font-size:28px}footer{flex-direction:column;text-align:center;gap:8px;padding:30px 20px}footer p{margin:0}#note-dialog{padding:35px 25px;max-width:86vw}#full-photo{max-width:100%;max-height:75vh}.prev,.next{width:36px;height:36px;font-size:27px;background:#f4eddcbf}.prev{left:2px}.next{right:2px}}@media(max-width:360px){.hero h1{font-size:49px}h1 em{font-size:45px}.gallery img{height:170px}.hero-photo img{height:260px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

.birthday-brand{font-family:"Caveat",cursive;font-size:28px;letter-spacing:0}.hero-photo img{object-position:47% center}@media(max-width:600px){.birthday-brand{font-size:23px}}

.birthday-welcome{position:fixed;inset:0;z-index:200;background:#750d25;color:#f4eddc;display:grid;place-items:center;text-align:center;padding:28px;overflow:hidden;transition:opacity .7s ease,visibility .7s ease}.birthday-welcome.leaving{opacity:0;visibility:hidden;pointer-events:none}.welcome-copy{position:relative;z-index:2}.welcome-copy h2{font-size:clamp(60px,9vw,120px);line-height:.98;margin:30px 0}.welcome-copy h2 em{display:inline-block;margin-top:12px}.welcome-copy h2 span{display:inline-block;font: .7em 'Caveat',cursive;margin-left:15px;transform:rotate(12deg)}.welcome-copy .hand{font-size:clamp(25px,4vw,35px)}.welcome-copy .button{margin-top:20px;background:#f4eddc;color:#750d25;border-color:#f4eddc}.welcome-signature{font-size:11px;letter-spacing:1px;margin-top:22px;opacity:.7}.welcome-confetti{position:absolute;inset:0;pointer-events:none}.welcome-piece{position:absolute;top:-60px;left:var(--x);color:var(--color);width:var(--size);height:calc(var(--size)*.5);background:currentColor;animation:welcome-fall var(--duration) var(--delay) linear forwards;transform:rotate(var(--rotation));opacity:.95}.welcome-piece.heart{background:none;height:auto;width:auto;font-size:var(--size)}@keyframes welcome-fall{0%{transform:translate3d(0,-40px,0) rotate(0)}100%{transform:translate3d(var(--drift),115vh,0) rotate(var(--rotation));opacity:.3}}@media(max-width:600px){.welcome-copy h2{font-size:67px}.welcome-copy .eyebrow{font-size:8px;letter-spacing:1.5px}}@media(prefers-reduced-motion:reduce){.welcome-piece{animation:none!important;top:var(--x);opacity:.25}.birthday-welcome{transition:none}}
