@font-face{font-family:'Maddison Signature';src:url('fonts/MaddisonSignatureDEMO.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}.icon{width:1em;height:1em;display:inline-block;vertical-align:-.125em;flex-shrink:0}.icon-up-right{transform:rotate(45deg)}:root{--paper:#f6f1e7;--ink:#244b40;--soft:#627268;--peach:#e6aa8f;--line:#d5d9cb}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family: 'Avenir Next',Avenir,'Segoe UI',sans-serif;font-size:18px;-webkit-font-smoothing:antialiased}.paper{position:fixed;inset:0;pointer-events:none;z-index:5;opacity:.13;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' 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%3Cpath fill='%23888888' filter='url(%23n)' opacity='.35' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #b16844;outline-offset:5px}[hidden]{display:none!important}.gate{text-align:center;max-width:530px;margin:auto;min-height:100svh;padding:42px 26px 28px;display:flex;align-items:center;flex-direction:column;justify-content:center}.eyebrow{font-size:11px;letter-spacing:.22em;font-weight:600;line-height:1.6}.envelope{width:174px;height:113px;background:#e9e2d3;margin:44px auto 34px;position:relative;transform:rotate(-7deg);box-shadow:0 15px 24px #3b49341a;border:1px solid #d6cdbb}.envelope:before{content:'';position:absolute;inset:0;background:linear-gradient(32deg,transparent 49.5%,#d3c9b7 50%,transparent 50.8%),linear-gradient(-32deg,transparent 49.5%,#d3c9b7 50%,transparent 50.8%)}.envelope:after{content:'';position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 61%);background:#f2eadc;filter:drop-shadow(0 1px 0 #cabb9f)}.seal{position:absolute;z-index:2;left:65px;top:48px;width:43px;height:43px;border-radius:50%;display:grid;place-items:center;background:#b66f51;color:#fff2dd;font:italic 24px Georgia;border:3px double #d9a080;box-shadow:0 3px 5px #50341b20}.small-serif{font:italic 18px/1.5 Georgia,serif;margin:0 0 12px}h1,h2{font-family:Georgia,'Times New Roman',serif;font-weight:400;letter-spacing:-.055em}h1{font-size:clamp(43px,10.8vw,66px);line-height:1.06;margin:0}em{font-weight:400;color:#9b593f}p{line-height:1.65}.intro{font-size:17px;margin:23px 0 28px;color:var(--soft)}form{width:100%;max-width:322px}label{display:block;font-size:14px;margin-bottom:12px}input{display:block;width:100%;height:64px;text-align:center;letter-spacing:.5em;padding-left:.5em;background:#fffaf1;border:1px solid #bdc7b9;border-radius:8px;color:var(--ink);font-size:28px}input[aria-invalid=true]{border-color:#a44632}#pin-error{font-size:14px;color:#a44632;min-height:23px;margin:8px 0}form button{width:100%;border:0;border-radius:7px;background:var(--ink);color:#fffaf1;padding:19px 16px;font-size:16px;display:flex;justify-content:space-between;align-items:center}.gate button .icon{width:18px;height:18px}form button:hover{background:#326351}.footnote{font-size:12px;color:var(--soft);margin:24px 0 0}.hero{position:relative;text-align:center;min-height:100svh;padding:42px 20px 32px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.bouquet{width:min(310px,78vw);height:300px;margin:14px auto -2px}.bouquet svg{height:100%;width:100%;overflow:visible}.bloom{transform-box:fill-box;transform-origin:bottom center;animation:sway 5s ease-in-out infinite alternate}.bloom:nth-child(2){animation-delay:-2s}.hero h1{font-size:clamp(51px,13vw,86px)}.hero-note{font-size:17px;color:var(--soft);margin:25px 0}.scroll-link{font-size:13px;color:var(--ink);text-decoration:none;margin-top:16px;padding:12px}.scroll-link .icon{display:block;margin:8px auto 0;width:22px;height:22px}.letter{max-width:720px;margin:auto;padding:80px 29px 70px;border-top:1px solid var(--line)}h2{font-size:clamp(36px,8vw,53px);line-height:1.17;margin:23px 0 36px}.letter-copy{font-size:18px;line-height:1.8;max-width:520px}.letter-copy p{margin:0 0 26px}.closing{font-family:Georgia,serif;font-size:26px;line-height:1.4!important;padding-top:10px}.signature{font:normal 52px/1 'Maddison Signature',cursive;color:#9b593f;padding-top:8px}.signature span{display:block;font:13px 'Avenir Next',sans-serif;color:var(--soft);margin-top:15px}.wish-section{background:#e8ecdf;text-align:center;padding:64px 25px 44px}.wish-section h2{margin-bottom:20px}.wish-section>p{font-size:16px;max-width:400px;margin:0 auto}.candle-button{position:relative;border:0;background:none;color:var(--ink);display:flex;flex-direction:column;align-items:center;margin:38px auto 22px;padding:15px 24px;min-width:190px}.flame{width:17px;height:31px;border-radius:80% 20% 60% 40%;background:#d48c40;box-shadow:0 0 26px #e6b964aa;transform:rotate(-6deg);animation:flicker 1.6s infinite alternate}.wick{width:2px;height:8px;background:#6b6547}.wax{width:36px;height:100px;background:repeating-linear-gradient(35deg,#e2ad94 0 13px,#f3ddbc 13px 26px);border-radius:4px 4px 2px 2px;box-shadow:7px 7px 0 #244b400a}#candle-label{font-size:14px;margin-top:24px;text-decoration:underline;text-underline-offset:5px}.out .flame{visibility:hidden}.out .wax{opacity:.8}#wish-message{min-height:54px;color:#526447;font-family:Georgia,serif;font-style:italic;font-size:20px}.text-button{border:0;border-bottom:1px solid #a6b2a6;background:none;color:var(--ink);font-size:13px;padding:10px 0;min-height:44px}footer{text-align:center;padding:60px 20px 44px}footer p{font-family:Georgia,serif;font-size:19px}.tiny-flower{color:#ad694d;display:inline-flex}.tiny-flower .icon{width:40px;height:40px}#petals{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:10}.petal{position:absolute;top:-40px;border-radius:80% 10% 80% 20%;animation:fall var(--duration) linear forwards}.hero.enter{animation:arrive 1.3s ease both}@keyframes fall{to{transform:translate3d(var(--drift),110vh,0) rotate(560deg);opacity:0}}@keyframes sway{to{transform:rotate(3deg)}}@keyframes flicker{to{transform:rotate(7deg) scale(.93)}}@keyframes arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media(min-width:760px){.gate{padding-top:55px}.hero{padding-top:55px}.bouquet{width:340px;height:330px}.letter{padding-top:100px;padding-bottom:90px}.letter-copy{margin-left:65px}.wish-section{padding:80px 24px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
