@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&display=swap');
:root{--paper:#f7f3e9;--ink:#432c32;--wine:#702e3e;--muted:#82716c;--pink:#e5b9b6;--line:#dcd3c7;--serif:'Playfair Display',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.7}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #9c6137;outline-offset:5px}[hidden]{display:none!important}.grain{position:fixed;inset:0;opacity:.11;pointer-events:none;z-index:10;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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23816e57' filter='url(%23n)' opacity='.3' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:400;letter-spacing:-.055em;line-height:1.08}em{font-weight:400;color:var(--wine)}.tiny,.eyebrow{font-size:10px;font-weight:600;letter-spacing:.17em}.eyebrow{display:block;margin-bottom:26px;color:var(--wine)}.button{display:inline-flex;justify-content:space-between;gap:28px;align-items:center;border:0;padding:17px 23px;text-decoration:none;font-size:13px;transition:background .2s,transform .2s}.button:hover{transform:translateY(-2px)}.primary{background:var(--wine);color:#fff7ed}.primary:hover{background:#552330}.text-button{border:0;background:transparent;padding:8px 0;font-size:12px;text-decoration:underline;text-underline-offset:5px}.entrance{min-height:100svh;display:grid;grid-template-columns:1fr 1fr;padding:24px;max-width:1600px;margin:auto}.entry-art{background:#e7d6c8;position:relative;min-height:700px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.art-label{position:absolute;top:40px}.art-footer{position:absolute;bottom:35px}.orbit{position:absolute;border:1px solid #b999824b;border-radius:50%;width:590px;height:590px}.orbit-two{width:440px;height:440px}.envelope{position:relative;width:300px;height:205px;background:#af6b76;transform:rotate(-9deg);margin:80px 0 65px;box-shadow:0 25px 35px #653a3520}.letter-peek{position:absolute;left:20px;right:20px;top:-86px;height:240px;background:#fcf7ec;text-align:center;padding-top:33px;font:24px/1.3 var(--serif);color:var(--wine);box-shadow:0 -4px 12px #653a3508}.letter-peek span{display:block;font:9px var(--sans);margin-top:18px}.envelope-front{position:absolute;inset:0;background:#ba7b84;clip-path:polygon(0 0,50% 51%,100% 0,100% 100%,0 100%)}.envelope-front:after{content:'';position:absolute;inset:0;background:#c78e94;clip-path:polygon(0 100%,50% 40%,100% 100%)}.seal{position:absolute;top:95px;left:126px;background:var(--wine);color:#e6bbb2;border:3px double #a76870;box-shadow:0 3px 5px #432c3230;border-radius:50%;height:48px;width:48px;text-align:center;font-size:27px}.art-caption{z-index:1;text-align:center;font:24px/1.5 var(--serif)}.art-star{position:absolute;color:var(--wine);font-size:64px}.star-one{top:21%;right:12%}.star-two{bottom:23%;left:12%;font-size:30px}.entry-copy{align-self:center;padding:55px clamp(30px,6vw,100px)}.small-star{font-size:18px;margin-right:8px}.entry-copy h1{font-size:clamp(48px,5.6vw,80px);margin-bottom:26px}.intro{color:var(--muted);font-size:14px;margin-bottom:30px}label{font-size:12px;font-weight:600;display:block;margin-bottom:8px}.password-wrap{display:flex;border-bottom:1px solid #ad9993}.password-wrap input{width:100%;min-width:0;border:0;background:transparent;padding:13px 0;color:var(--ink);font-size:14px}.password-wrap button{border:0;background:transparent;color:var(--wine);font-size:12px;padding:10px}.hint{font-size:11px;color:var(--muted);margin:9px 0}.error{color:#a02d39;font-size:12px;min-height:20px;margin:0 0 12px}form .button{width:100%}.entry-note{font-size:10px;color:var(--muted);margin:24px 0 0}.topbar{max-width:1240px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:25px 40px;border-bottom:1px solid var(--line)}.wordmark{font-size:15px;font-weight:600;letter-spacing:.16em;text-decoration:none}.wordmark span{margin-left:12px;color:var(--wine)}.hero{max-width:1240px;margin:auto;padding:80px 40px 65px;display:grid;grid-template-columns:1.1fr 1fr;gap:60px;align-items:center}.hero h1{font-size:clamp(65px,7.7vw,108px);margin-bottom:28px;position:relative}.heading-star{font-size:65px;display:inline-block;color:var(--wine);vertical-align:middle;margin-left:38px}.birthday-greeting{font-size:18px;font-weight:500;margin-bottom:12px}.hero-description{max-width:405px;color:var(--muted);font-size:14px;margin-bottom:28px}.hero-art{background:#eadbcb;border-radius:48% 48% 3px 3px;min-height:560px;display:flex;align-items:center;flex-direction:column;justify-content:center;padding:35px 20px;position:relative}.cake-label{margin-top:25px;font-size:9px}.cake-scene{height:225px;width:280px;position:relative;margin-top:40px}.cake-body{position:absolute;width:206px;height:100px;left:37px;top:105px;border-radius:0 0 50% 50% / 0 0 20% 20%;background:#a15d6a;display:flex;justify-content:space-evenly;overflow:hidden;padding:0 12px}.cake-body span{width:13px;height:75px;background:#e6b2b1;border-radius:0 0 9px 9px}.cake-body span:nth-child(even){height:48px}.cake-top{position:absolute;top:78px;left:37px;width:206px;height:55px;border-radius:50%;background:#f2cbc3;z-index:2;border:7px solid #e6b2b1}.cake-bottom{position:absolute;top:175px;left:37px;width:206px;height:30px;border-radius:50%;border-bottom:8px solid #844455}.cake-plate{position:absolute;top:196px;left:12px;width:256px;height:22px;border-radius:50%;background:#bca38d;z-index:0}.cake-body,.cake-bottom{z-index:1}.candle{position:absolute;top:28px;left:134px;width:12px;height:76px;background:repeating-linear-gradient(135deg,#faf0dd 0 7px,#a75d69 7px 13px);z-index:3}.flame{position:absolute;top:-31px;left:-2px;width:17px;height:27px;background:#d39443;border-radius:85% 15% 65% 35%;transform:rotate(-18deg);box-shadow:0 0 25px #e9ae5660;animation:flicker 1.6s infinite alternate}.flame.out{display:none}.cake-spark{position:absolute;color:var(--wine);font-size:33px}.spark-a{top:20px;left:30px}.spark-b{right:15px;top:55px;font-size:45px}.spark-c{bottom:20px;left:0;font-size:20px}.cake-caption{font:33px/1.2 var(--serif);text-align:center;margin:20px 0}.wish-button{font-size:11px;color:var(--wine);background:none;border:0;border-bottom:1px solid #b78e83;padding:8px}.wish-button:disabled{cursor:default}.ticker{display:flex;justify-content:center;gap:65px;padding:21px 25px;border-block:1px solid var(--line);font-size:10px;letter-spacing:.16em;color:var(--wine);flex-wrap:wrap}.letter-section{max-width:1160px;margin:auto;padding:100px 40px;display:grid;grid-template-columns:1fr 1.25fr;gap:90px}h2{font-size:clamp(40px,4.5vw,59px);margin-bottom:25px}.ink-flower{font-size:100px;color:var(--wine);display:block;margin-top:45px}.letter-body{font-size:14px;color:#72615c}.letter-body p{margin-bottom:23px}.letter-body .letter-lead{font-family:var(--serif);font-size:26px;line-height:1.5;color:var(--ink)}.letter-ending{color:var(--wine)}.signature{font-size:11px;margin-top:35px}.signature span{font:italic 27px var(--serif);color:var(--wine);display:inline-block;margin-top:10px}.wishes-section{background:#eee7dc;padding:70px max(40px,calc((100vw - 1080px)/2)) 80px}.wishes-heading{display:flex;justify-content:space-between;align-items:end;gap:25px;margin-bottom:35px}.wishes-heading h2{margin-bottom:0}.wishes-heading p{font-size:12px;color:var(--muted)}.wish-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.wish-card{background:var(--paper);border:1px solid #d8cdbf;text-align:left;display:flex;flex-direction:column;padding:24px;color:var(--ink);min-height:310px;transition:transform .25s,background .25s}.wish-card:hover{transform:translateY(-5px)}.wish-card:nth-child(2){background:#e3c6c3}.wish-card:nth-child(3){background:#dce0d2}.card-top{display:flex;justify-content:space-between;width:100%;font-size:11px}.card-symbol{font-size:63px;color:var(--wine);line-height:1.3;margin:16px 0 20px}.card-title{font:26px var(--serif);letter-spacing:-.04em}.card-prompt{font-size:9px;letter-spacing:.12em;margin-top:22px}.card-reveal{font-size:13px;line-height:1.7;margin-top:17px}.wish-card[aria-expanded=true] .card-symbol{font-size:39px;margin:8px 0 12px}.book-section{max-width:1160px;margin:auto;padding:100px 40px;display:grid;grid-template-columns:1.2fr 1fr;gap:100px;align-items:center}.book-copy p{font-size:14px;color:var(--muted);max-width:390px}.book-copy .book-footnote{font-size:11px;margin-top:25px}.voucher{position:relative;background:#efe3ce;border:1px solid #caba9f;padding:25px 28px;text-align:center;transform:rotate(3deg);box-shadow:8px 12px 0 #e9e2d6}.voucher-top{display:flex;justify-content:space-between;align-items:center;color:var(--wine)}.voucher-top .tiny{font-size:8px}.voucher-top>span:last-child{font-size:25px}.voucher .eyebrow{font-size:9px;margin-bottom:12px}.voucher h3{font-size:37px;margin-bottom:12px}.voucher>p{font-size:12px;color:var(--muted)}.book-icon{display:flex;width:80px;height:60px;margin:25px auto 28px;transform:rotate(-8deg);gap:3px}.book-icon span{width:50%;border:1px solid var(--wine);border-radius:2px 8px 0 2px;background:repeating-linear-gradient(0deg,transparent 0 8px,#702e3e25 9px 10px);box-shadow:0 4px var(--wine)}.book-icon span:last-child{border-radius:8px 2px 2px 0}.voucher-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px dashed #b59c7e;padding:22px 0 10px;margin-top:28px;font-size:8px;text-align:left;letter-spacing:.08em}.voucher-bottom strong{font-size:10px;font-weight:500;letter-spacing:0}.voucher-number{font-size:14px;font-family:var(--serif)}.voucher>.text-button{color:var(--wine);font-size:11px}.footer{text-align:center;padding:60px 40px 0;border-top:1px solid var(--line)}.footer>span{font-size:35px;color:var(--wine);display:block;margin-bottom:20px}.footer h2{font-size:clamp(40px,5vw,64px)}.footer>p{color:var(--muted);font-size:13px}.footer .button{margin-top:15px}.footer-bottom{max-width:1160px;margin:75px auto 0;padding:23px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:8px;color:var(--muted);gap:20px}.footer-bottom a{text-decoration:none}#confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:20}.confetti-piece{position:absolute;top:-25px;width:8px;height:14px;animation:fall var(--duration) linear var(--delay) forwards}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes fall{to{transform:translate(var(--drift),110vh) rotate(760deg)}}@keyframes flicker{to{transform:rotate(-10deg) scale(.92)}}@media(min-width:1600px){.wishes-section{padding-inline:calc((100vw - 1080px)/2)}}@media(max-width:900px){.entry-art{min-height:620px}.entry-copy{padding:35px}.envelope{width:250px;height:180px}.seal{left:103px;top:80px}.letter-peek{font-size:21px}.hero{gap:30px;padding-top:55px}.hero h1{font-size:74px}.hero-art{min-height:510px}.heading-star{font-size:44px;margin-left:15px}.letter-section,.book-section{gap:45px}.ticker{gap:25px}.topbar>.tiny{font-size:8px}.wish-card{padding:20px}.card-title{font-size:23px}}@media(max-width:650px){.entrance{grid-template-columns:1fr;padding:12px}.entry-art{min-height:245px}.art-label{top:18px;font-size:8px}.envelope{transform:rotate(-9deg) scale(.57);margin:62px 0 -20px}.art-caption,.art-footer,.orbit-two{display:none}.orbit-one{height:350px;width:350px}.star-one{top:30%;right:15%;font-size:35px}.star-two{bottom:25%;left:16%;font-size:24px}.entry-copy{padding:35px 23px}.entry-copy h1{font-size:53px}.entry-copy .eyebrow{font-size:9px;margin-bottom:20px}.intro{font-size:13px}.topbar{padding:20px 24px}.topbar>.tiny{display:none}.hero{grid-template-columns:1fr;padding:45px 25px;gap:40px}.hero h1{font-size:76px}.hero .eyebrow{font-size:9px}.hero-art{min-height:460px;width:100%;max-width:420px;margin:auto}.cake-label{margin-top:0}.cake-scene{margin-top:35px}.hero-description{max-width:100%}.ticker{gap:15px 24px;font-size:8px}.letter-section{padding:60px 25px;grid-template-columns:1fr;gap:12px}.ink-flower{display:none}.letter-body .letter-lead{font-size:24px}.wishes-section{padding:55px 25px}.wishes-heading{display:block}.wishes-heading p{margin-top:20px}.wish-grid{grid-template-columns:1fr;gap:15px}.wish-card{min-height:230px;padding:23px}.card-symbol{font-size:45px;margin:5px 0 10px}.card-title{font-size:28px}.card-prompt{margin-top:15px}.book-section{padding:60px 25px 75px;grid-template-columns:1fr;gap:35px}.voucher{margin:0 10px;max-width:380px;width:calc(100% - 20px);justify-self:center}.footer{padding:45px 25px 0}.footer-bottom{margin-top:55px;text-align:left;font-size:7px}.eyebrow{font-size:9px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.confetti-piece{display:none}}
@media(max-width:650px){.hero{grid-template-columns:minmax(0,1fr)}.hero-copy,.hero-art{min-width:0}.hero h1{font-size:clamp(49px,12.5vw,76px)}.heading-star{margin-left:15px;font-size:36px}}
