:root{--color-background: hsl(345, 35%, 97%);--color-foreground: hsl(345, 20%, 18%);--color-card: hsl(0, 0%, 100%);--color-card-foreground: hsl(345, 25%, 18%);--color-primary: hsl(344, 65%, 58%);--color-primary-foreground: hsl(0, 0%, 100%);--color-secondary: hsl(20, 65%, 94%);--color-muted: hsl(345, 20%, 94%);--color-muted-foreground: hsl(345, 12%, 46%);--color-accent: hsl(338, 55%, 90%);--color-border: hsl(345, 30%, 88%);--color-glow: hsl(340, 70%, 85%);--color-rose: hsl(346, 70%, 50%);--font-serif: "Playfair Display", Georgia, serif;--font-sans: "Quicksand", system-ui, sans-serif;--font-script: "Dancing Script", "Brush Script MT", cursive;--font-nerd: "Space Mono", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--radius: 1rem;--shadow-soft: 0 18px 50px color-mix(in srgb, var(--color-primary) 14%, transparent)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background:radial-gradient(circle at top left,#fff7fb 0%,transparent 50%),radial-gradient(circle at 80% 10%,#ffe7ef 0%,transparent 45%),radial-gradient(circle at 20% 80%,#ffeef6 0%,transparent 40%),var(--color-background);color:var(--color-foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}button{font-family:inherit;border:none;background:none;cursor:pointer}.app{position:relative;min-height:100vh;overflow:hidden}.app:before,.app:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.app:before{background:radial-gradient(400px 300px at 10% 20%,color-mix(in srgb,var(--color-glow) 55%,transparent),transparent 60%),radial-gradient(500px 350px at 90% 10%,color-mix(in srgb,var(--color-primary) 35%,transparent),transparent 60%),radial-gradient(500px 450px at 70% 85%,color-mix(in srgb,var(--color-accent) 65%,transparent),transparent 60%);opacity:.9}.app:after{background-image:radial-gradient(color-mix(in srgb,var(--color-primary) 12%,transparent) .5px,transparent .5px);background-size:6px 6px;opacity:.18;mix-blend-mode:multiply}.access-gate{position:relative;min-height:100vh;display:grid;place-items:center;padding:2.5rem 1.5rem;z-index:1}.access-card{max-width:36rem;width:min(90vw,36rem);padding:clamp(2rem,4vw,3rem);border-radius:clamp(1.5rem,4vw,2.5rem);background:color-mix(in srgb,var(--color-card) 88%,transparent);border:1px solid color-mix(in srgb,var(--color-border) 60%,transparent);box-shadow:var(--shadow-soft);text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.access-card--shake{animation:shake .4s ease}.access-label{font-size:.75rem;letter-spacing:.3em;text-transform:uppercase;color:var(--color-muted-foreground);margin-bottom:.75rem}.access-question{font-family:var(--font-serif);font-size:clamp(1.75rem,5vw,2.5rem);line-height:1.2;margin-bottom:1rem;text-wrap:balance}.access-hint{color:var(--color-muted-foreground);margin-bottom:2rem}.access-input{display:grid;gap:.75rem;justify-items:center}.access-input input{width:100%;padding:.85rem 1rem;border-radius:999px;border:1px solid color-mix(in srgb,var(--color-border) 70%,transparent);background:color-mix(in srgb,var(--color-card) 96%,transparent);font-family:var(--font-sans);font-size:1rem;color:var(--color-foreground);outline:none;transition:border-color .3s ease,box-shadow .3s ease}.access-input .btn-primary{justify-self:center}.access-input input:focus{border-color:color-mix(in srgb,var(--color-primary) 50%,transparent);box-shadow:0 0 0 4px color-mix(in srgb,var(--color-primary) 15%,transparent)}.access-error,.access-success{margin-top:1rem;font-weight:600}.access-error{color:#c3223d}.access-success{color:#318159}.tease-section{position:relative;padding:2rem 1rem 6rem;z-index:1}.tease-card{position:relative;max-width:36rem;width:min(90vw,36rem);margin:0 auto;padding:clamp(2rem,4vw,3rem);border-radius:clamp(1.5rem,4vw,2.5rem);background:color-mix(in srgb,var(--color-card) 88%,transparent);border:1px solid color-mix(in srgb,var(--color-border) 60%,transparent);box-shadow:var(--shadow-soft);text-align:center;min-height:240px;overflow:hidden}.tease-label{font-size:.75rem;letter-spacing:.3em;text-transform:uppercase;color:var(--color-muted-foreground);margin-bottom:.75rem}.tease-title{font-family:var(--font-serif);font-size:clamp(1.5rem,4.5vw,2.25rem);line-height:1.2;margin-bottom:2rem;text-wrap:balance}.tease-button{position:absolute;transform:translate(-50%,-50%);padding:.6rem 1.5rem;border-radius:999px;border:0;background:var(--color-primary);color:var(--color-primary-foreground);font-weight:600;text-transform:lowercase;box-shadow:0 10px 24px color-mix(in srgb,var(--color-primary) 30%,transparent);transition:transform .12s ease,box-shadow .12s ease;pointer-events:none}.tease-button:active{transform:translate(-50%,-50%) scale(.95)}.floating-hearts-container{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:0}.floating-heart{position:absolute;animation:rise linear infinite;filter:drop-shadow(0 4px 10px color-mix(in srgb,var(--color-primary) 15%,transparent))}.hero{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5rem 1rem;overflow:hidden}.hero-blobs{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.blob{position:absolute;border-radius:50%;animation:float 6s ease-in-out infinite}.blob-1{top:5rem;left:2.5rem;width:8rem;height:8rem;background:color-mix(in srgb,var(--color-primary) 5%,transparent);animation-delay:0s}.blob-2{top:10rem;right:4rem;width:5rem;height:5rem;background:color-mix(in srgb,var(--color-accent) 40%,transparent);animation-delay:2s}.blob-3{bottom:8rem;left:25%;width:6rem;height:6rem;background:color-mix(in srgb,var(--color-secondary) 60%,transparent);animation-delay:4s}.hero-content{position:relative;z-index:10;text-align:center;max-width:32rem;margin:0 auto;padding:2.5rem 2rem;border-radius:clamp(1.5rem,4vw,2.5rem);background:color-mix(in srgb,var(--color-card) 80%,transparent);border:1px solid color-mix(in srgb,var(--color-border) 60%,transparent);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.envelope{opacity:0;transform:translateY(2.5rem);transition:opacity 1s ease,transform 1s ease}.envelope--visible{opacity:1;transform:translateY(0)}.envelope-icon-wrap{margin-bottom:2rem;animation:float-slow 4s ease-in-out infinite}.envelope-circle{display:inline-flex;align-items:center;justify-content:center;width:7rem;height:7rem;border-radius:50%;background:color-mix(in srgb,var(--color-card) 90%,transparent);border:2px solid var(--color-border);box-shadow:0 20px 40px color-mix(in srgb,var(--color-primary) 10%,transparent)}.letter{text-align:center}.letter:after{content:"";display:block;width:5rem;height:2px;margin:2rem auto 0;background:linear-gradient(90deg,transparent,var(--color-primary),transparent);opacity:.6}.dateline{color:var(--color-muted-foreground);text-transform:uppercase;letter-spacing:.3em;font-size:.75rem;font-weight:600;margin-bottom:1rem}.heading-hero{font-family:var(--font-serif);font-size:clamp(3rem,8vw,4.5rem);font-weight:700;line-height:1.1;margin-bottom:1.5rem;text-wrap:balance}.letter-body{color:color-mix(in srgb,var(--color-foreground) 80%,transparent);font-size:clamp(1.05rem,2.5vw,1.25rem);line-height:1.7;max-width:28rem;margin:0 auto 1rem}.letter-instructions{color:var(--color-muted-foreground);font-size:1rem;line-height:1.7;max-width:28rem;margin:0 auto 2.5rem}.text-highlight{font-family:var(--font-script);font-weight:700;font-style:normal;font-size:1.35em;color:var(--color-rose)}.scroll-arrow{color:color-mix(in srgb,var(--color-primary) 50%,transparent);display:flex;justify-content:center}.scroll-arrow svg{width:1.5rem;height:1.5rem}.heading-xl{font-family:var(--font-serif);font-size:clamp(2rem,5vw,3rem);font-weight:700;margin-bottom:1rem;line-height:1.2;text-wrap:balance}.text-muted{color:var(--color-muted-foreground)}.text-lg{font-size:1.125rem;line-height:1.6;margin-bottom:2.5rem}.btn-primary{display:inline-flex;align-items:center;gap:.75rem;padding:1rem 2rem;background:var(--color-primary);color:var(--color-primary-foreground);border-radius:9999px;font-weight:600;font-size:1.125rem;box-shadow:0 8px 24px color-mix(in srgb,var(--color-primary) 25%,transparent);transition:transform .3s ease,box-shadow .3s ease;position:relative;overflow:hidden}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 12px 32px color-mix(in srgb,var(--color-primary) 30%,transparent)}.btn-primary:hover .icon-sm{animation:wiggle .4s ease}.btn-primary:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,.6) 40%,transparent 60%);transform:translate(-120%);transition:transform .8s ease}.btn-primary:hover:after{transform:translate(120%)}.btn-primary:active{transform:translateY(1px) scale(.98)}.divider{width:4rem;height:2px;background:color-mix(in srgb,var(--color-primary) 40%,transparent);margin:0 auto 1.5rem}.coupons-section{position:relative;padding:0 1rem 6rem}.coupons-section:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(400px 200px at 50% 0%,color-mix(in srgb,var(--color-accent) 45%,transparent),transparent 70%);opacity:.6;pointer-events:none}.coupons-container{max-width:32rem;margin:0 auto}.coupons-header{text-align:center;margin-bottom:2.5rem;opacity:0}.coupons-subtitle{color:var(--color-muted-foreground);text-transform:uppercase;letter-spacing:.25em;font-size:.75rem;font-weight:600;margin-bottom:.5rem}.coupons-title{font-family:var(--font-serif);font-size:clamp(1.875rem,4vw,2.5rem);font-weight:700;text-wrap:balance}.coupons-list{display:flex;flex-direction:column;gap:1rem}.coupon-wrapper{opacity:0}.coupon{position:relative;width:100%;text-align:left;overflow:hidden;border-radius:var(--radius);border:2px dashed var(--color-border);background:color-mix(in srgb,var(--color-card) 92%,transparent);transition:border-color .5s ease,background .5s ease,transform .5s ease,box-shadow .3s ease}.coupon:hover{border-color:color-mix(in srgb,var(--color-primary) 50%,transparent);box-shadow:0 8px 24px color-mix(in srgb,var(--color-primary) 10%,transparent);transform:translateY(-4px)}.coupon:active{transform:translateY(0) scale(.99)}.coupon--redeemed{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 10%,transparent);transform:scale(.98);animation:soft-pop .6s ease}.coupon--redeemed:hover{transform:scale(.98);box-shadow:none}.coupon-perforation{position:absolute;left:0;top:0;bottom:0;width:2rem;display:flex;flex-direction:column;justify-content:space-around;align-items:center}.perforation-hole{width:.75rem;height:.75rem;border-radius:50%;background:var(--color-background);margin-left:-.375rem}.coupon-inner{display:flex;align-items:center;gap:1rem;padding:1.25rem 1.25rem 1.25rem 2.5rem}.coupon-icon-box{flex-shrink:0;width:3.5rem;height:3.5rem;border-radius:.75rem;display:flex;align-items:center;justify-content:center;background:var(--color-accent);color:var(--color-primary);transition:background .5s ease,color .5s ease}.coupon-icon-box--active{background:var(--color-primary);color:var(--color-primary-foreground)}.coupon-icon-scale{transition:transform .5s ease}.coupon:hover .coupon-icon-scale,.coupon-icon-scale--active{transform:scale(1.1)}.coupon-text{flex:1;min-width:0}.coupon-title{font-family:var(--font-serif);font-size:1.125rem;font-weight:600;transition:color .3s ease;color:var(--color-card-foreground)}.coupon-title--redeemed{color:var(--color-primary);text-decoration:line-through;text-decoration-thickness:2px}.coupon-description{font-size:.875rem;color:var(--color-muted-foreground);line-height:1.5;margin-top:.125rem}.coupon-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.coupon-chip{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:999px;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;background:color-mix(in srgb,var(--color-muted) 85%,transparent);color:var(--color-muted-foreground)}.coupon-chip--primary{background:color-mix(in srgb,var(--color-primary) 18%,transparent);color:var(--color-primary);font-weight:600}.coupon-check{flex-shrink:0}.coupon-check-filled{width:2.5rem;height:2.5rem;border-radius:50%;background:var(--color-primary);display:flex;align-items:center;justify-content:center}.coupon-check-empty{width:2.5rem;height:2.5rem;border-radius:50%;border:2px solid var(--color-border);display:flex;align-items:center;justify-content:center;color:var(--color-muted-foreground);transition:border-color .3s ease,color .3s ease}.coupon:hover .coupon-check-empty{border-color:color-mix(in srgb,var(--color-primary) 50%,transparent);color:var(--color-primary)}.coupon-stamp{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.coupon-stamp span{font-family:var(--font-serif);font-size:3.75rem;font-weight:700;color:color-mix(in srgb,var(--color-primary) 10%,transparent);transform:rotate(-15deg);-webkit-user-select:none;user-select:none}.love-footer{position:relative;padding:2rem 1rem 5rem}.love-footer:before{content:"";position:absolute;left:50%;top:0;width:min(520px,90vw);height:2px;transform:translate(-50%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--color-primary) 50%,transparent),transparent);opacity:.7}.footer-inner{max-width:32rem;margin:0 auto;text-align:center}.footer-inner .divider{margin-bottom:2rem}.footer-message{font-family:var(--font-serif);font-size:clamp(1.5rem,3.5vw,1.875rem);font-weight:700;margin-bottom:1rem;text-wrap:balance}.footer-sub{color:var(--color-muted-foreground);line-height:1.7;margin-bottom:2rem;max-width:24rem;margin-left:auto;margin-right:auto}.footer-made-with{display:flex;align-items:center;justify-content:center;gap:.25rem;font-size:.875rem;color:var(--color-muted-foreground)}.footer-signoff{font-family:var(--font-script);font-size:1.75rem;font-style:normal;color:var(--color-rose);margin-top:1rem;display:flex;flex-direction:column;align-items:center;gap:.35rem}.footer-signoff-name{font-family:var(--font-nerd);font-size:1rem;letter-spacing:.3em;text-transform:uppercase;color:var(--color-foreground)}.icon-heart{width:3rem;height:3rem}.icon-heart--filled{color:var(--color-primary)}.icon-coupon{width:1.5rem;height:1.5rem}.icon-sm{width:1.25rem;height:1.25rem}.icon-xs{width:1rem;height:1rem}.icon-white{color:var(--color-primary-foreground)}@keyframes float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-20px) rotate(5deg)}}@keyframes float-slow{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes heartbeat{0%,to{transform:scale(1)}25%{transform:scale(1.15)}50%{transform:scale(1)}75%{transform:scale(1.1)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}@keyframes rise{0%{transform:translateY(100vh) rotate(0);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(-100vh) rotate(360deg);opacity:0}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(1.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes soft-pop{0%{transform:scale(.98)}60%{transform:scale(1.02)}to{transform:scale(.98)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}.heartbeat{animation:heartbeat 1.5s ease-in-out infinite}.bounce{animation:bounce 2s ease-in-out infinite}.fade-in{animation:fade-in .8s ease forwards}.fade-in-up{animation:fade-in-up .8s ease forwards}@media(max-width:480px){.hero{padding:3rem 1rem}.coupon-inner{gap:.75rem;padding:1rem 1rem 1rem 2.25rem}.coupon-icon-box{width:2.75rem;height:2.75rem}.coupon-title{font-size:1rem}.coupon-description{font-size:.8rem}.coupon-check-filled,.coupon-check-empty{width:2rem;height:2rem}.coupon-stamp span{font-size:2.5rem}}
