:root{--blush:#f6dcd8;--cream:#fbf5ec;--ivory:#fffaf2;--rose:#c98b8b;--wine:#6e2a3a;--gold:#c2a36b;--ink:#3a2a2c;--serif:"Cormorant Garamond",Georgia,serif;--sans:"Inter",system-ui,sans-serif;--hand:"Caveat","Segoe Script",cursive}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--sans);font-weight:300;color:var(--ink);line-height:1.75;background:radial-gradient(circle at 20% 0%,var(--blush),transparent 45%),radial-gradient(circle at 90% 60%,#f3e6d3,transparent 50%),var(--cream);background-attachment:fixed;overflow-x:hidden}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:90;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.15;color:var(--wine)}.hand{font-family:var(--hand);color:var(--rose);font-size:1.35rem}button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.section{position:relative;z-index:2;max-width:1100px;margin:0 auto;padding:clamp(4rem,10vw,7rem) 1.4rem}.section-title{text-align:center;margin-bottom:3rem}.section-title h2{font-size:clamp(2rem,6vw,3.4rem);margin:.2rem 0}.section-title p{opacity:.7;font-style:italic;font-family:var(--serif);font-size:1.15rem}.btn{display:inline-flex;gap:.5rem;align-items:center;padding:.95rem 2rem;border-radius:99px;background:var(--wine);color:var(--ivory);letter-spacing:.04em;box-shadow:0 8px 24px #6e2a3a47;transition:transform .3s,box-shadow .3s}.btn:hover{transform:translateY(-2px);box-shadow:0 12px 30px #6e2a3a59}.btn:disabled{opacity:.7;cursor:default}.btn.ghost{background:transparent;color:var(--wine);border:1px solid var(--gold);box-shadow:none}.hearts{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:1}.hearts span{position:absolute;bottom:-40px;color:var(--rose);opacity:0;animation:rise linear infinite}@keyframes rise{0%{transform:translateY(0) rotate(0);opacity:0}10%{opacity:.35}90%{opacity:.2}to{transform:translateY(-110vh) rotate(25deg);opacity:0}}.opening{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;text-align:center;padding:1.5rem;background:radial-gradient(circle,var(--ivory),var(--blush));overflow:auto}.opening-inner{max-width:560px}.to{font-family:var(--serif);font-style:italic;font-size:1.4rem;margin-top:1.5rem}.opening h1{font-size:clamp(2.6rem,10vw,4.6rem);margin:.2rem 0 1rem}.opening .line{opacity:.8;margin-bottom:2rem}.envelope{position:relative;width:210px;height:140px;margin:0 auto;perspective:700px}.envelope>div{position:absolute;top:0;right:0;bottom:0;left:0}.env-back{background:#e9c9c4;border-radius:6px}.env-letter{top:10px;right:14px;bottom:20px;left:14px;background:var(--ivory);border-radius:4px;display:grid;place-items:center;box-shadow:0 2px 8px #0000001a}.env-front{background:linear-gradient(135deg,transparent 49%,#dfb8b2 50%),linear-gradient(225deg,transparent 49%,#d9aea8 50%);border-radius:6px}.env-flap{bottom:auto;height:75px;background:#d3a29c;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;border-radius:6px 6px 0 0}.env-seal{inset:auto;left:50%;top:56px;transform:translate(-50%);width:34px;height:34px;border-radius:50%;background:var(--wine);color:var(--ivory);display:grid;place-items:center;font-size:.9rem;transition:opacity .4s}.is-open .env-seal{opacity:0}.is-open .env-flap{z-index:0}.nav{position:fixed;top:0;left:0;right:0;z-index:40;display:flex;justify-content:space-between;align-items:center;padding:.7rem 1.2rem;background:#fbf5ecd1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(194,163,107,.25)}.nav ul{display:flex;gap:1.6rem;list-style:none}.nav a{color:var(--wine);text-decoration:none;font-size:.85rem;letter-spacing:.08em;text-transform:uppercase}.menu-btn{display:none;color:var(--wine)}@media (max-width:720px){.menu-btn{display:block}.nav ul{position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:var(--cream);max-height:0;overflow:hidden;transition:max-height .4s}.nav ul.open{max-height:320px}.nav li{padding:.9rem 1.4rem;border-top:1px solid rgba(194,163,107,.2)}}.hero{position:relative;z-index:2;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:6rem 1.4rem 4rem;max-width:760px;margin:0 auto}.hero h1{font-size:clamp(3rem,12vw,6rem);margin:.3rem 0}.hero .name{font-family:var(--serif);font-style:italic;font-size:1.7rem;color:var(--gold);margin-bottom:1.6rem}.hero blockquote{font-family:var(--serif);font-style:italic;font-size:1.3rem;border-top:1px solid var(--gold);border-bottom:1px solid var(--gold);padding:1.2rem .5rem;margin-bottom:1.8rem}.hero-text p{margin-bottom:1rem}.scroll-hint{margin-top:2rem;color:var(--rose);font-family:var(--hand);animation:bob 2s ease-in-out infinite}@keyframes bob{50%{transform:translateY(6px)}}.timeline{position:relative}.timeline:before{content:"";position:absolute;left:50%;top:0;bottom:0;border-left:1px dashed var(--gold)}.tl-item{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center;margin-bottom:4rem}.tl-dot{position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px;border-radius:50%;background:var(--rose);border:3px solid var(--cream)}.tl-photo img,.tl-photo .photo-empty{width:100%;border-radius:4px;border:8px solid var(--ivory);box-shadow:0 10px 30px #6e2a3a26;transform:rotate(-1.5deg)}.tl-item.alt .tl-photo{order:2}.tl-item.alt .tl-photo img,.tl-item.alt .tl-photo .photo-empty{transform:rotate(1.5deg)}.tl-text h3{font-size:1.9rem;margin:.1rem 0 .6rem}.tl-text q{display:block;margin-top:.8rem;font-family:var(--serif);font-style:italic;color:var(--gold);font-size:1.15rem;quotes:none}@media (max-width:720px){.timeline:before{left:8px}.tl-item,.tl-item.alt{grid-template-columns:1fr;gap:1rem;padding-left:30px}.tl-item.alt .tl-photo{order:0}.tl-dot{left:8px;top:8px}}img{display:block;max-width:100%;object-fit:cover}.photo-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;width:100%;background:repeating-linear-gradient(45deg,var(--blush),var(--blush) 10px,#f9e6e2 10px,#f9e6e2 20px);color:var(--wine);text-align:center;padding:1rem;overflow:hidden}.photo-empty span{font-size:1.8rem;color:var(--rose)}.photo-empty small{font-family:var(--hand);font-size:1.2rem}.photo-empty em{font-size:.7rem;opacity:.55;word-break:break-all}.masonry{columns:3 260px;column-gap:1.6rem}.mason-item{break-inside:avoid;margin-bottom:1.6rem}.polaroid{position:relative;background:var(--ivory);padding:.8rem .8rem 0;box-shadow:0 8px 26px #6e2a3a24;transform:rotate(var(--tilt));transition:transform .4s,box-shadow .4s;cursor:pointer}.polaroid:hover{transform:rotate(0) translateY(-6px) scale(1.02);box-shadow:0 18px 40px #6e2a3a38}.polaroid img,.polaroid .photo-empty{width:100%}.polaroid figcaption{padding:.5rem 0 .7rem;text-align:center}.tape{position:absolute;top:-10px;left:50%;width:70px;height:22px;margin-left:-35px;background:#c2a36b73;transform:rotate(-3deg);z-index:2}.lightbox,.poem-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#3a1620d1;display:grid;place-items:center;padding:1.2rem;overflow:auto}.lb-card{background:var(--ivory);padding:1rem 1rem 1.4rem;max-width:min(560px,100%);text-align:center;border-radius:4px}.lb-card img,.lb-card .photo-empty{width:100%;max-height:62vh;object-fit:contain}.lb-card h3{margin-top:.8rem;font-family:var(--hand);color:var(--rose);font-size:1.7rem}.lb-card small{opacity:.55}.lb-x,.lb-nav{position:absolute;color:var(--ivory);background:#ffffff1f;border-radius:50%;width:44px;height:44px;display:grid;place-items:center;z-index:3}.lb-x{top:1rem;right:1rem}.lb-nav{top:50%}.lb-nav.l{left:.8rem}.lb-nav.r{right:.8rem}.dark-soft:before{content:"";position:absolute;top:0;right:-50vw;bottom:0;left:-50vw;background:linear-gradient(var(--blush),#f1d3cd);opacity:.45;z-index:-1}.poem-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.4rem}.poem-card{width:100%;height:100%;text-align:left;background:var(--ivory);padding:1.8rem;border:1px solid rgba(194,163,107,.45);box-shadow:4px 6px #c2a36b40;transition:transform .35s;display:flex;flex-direction:column;gap:.6rem}.poem-card:hover{transform:translateY(-6px) rotate(-.6deg)}.poem-card small{letter-spacing:.12em;text-transform:uppercase;color:var(--gold);font-size:.7rem}.poem-card h3{font-size:1.6rem}.poem-page{position:relative;background:var(--ivory);width:min(560px,100%);padding:2.6rem 1.8rem;text-align:center;border-radius:3px;margin:auto;transform-origin:left;box-shadow:0 20px 60px #0000004d}.poem-page h3{font-size:clamp(1.6rem,5vw,2.2rem);margin:.4rem 0 1.4rem}.poem-page small{color:var(--gold);letter-spacing:.12em;text-transform:uppercase;font-size:.7rem}.poem-lines p{font-family:var(--serif);font-size:1.2rem;font-style:italic;line-height:1.7}.poem-lines br{display:block;content:"";margin-bottom:.9rem}.poem-page .x{position:absolute;top:.8rem;right:.8rem;color:var(--wine)}.letter-wrap{display:flex;justify-content:center}.letter{max-width:640px;width:100%;padding:2.6rem 2rem;background:repeating-linear-gradient(transparent,transparent 31px,rgba(201,139,139,.25) 32px),var(--ivory);box-shadow:0 14px 40px #6e2a3a29;border-radius:3px;transform:rotate(-.4deg)}.letter p{margin-bottom:1.1rem;line-height:2rem}.hand.big{font-size:1.7rem;line-height:2rem}.sign{margin-top:-.4rem}.loves{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.6rem}.love{position:relative;width:100%;min-height:150px;padding:1.8rem 1.3rem 1.3rem;background:var(--ivory);font-family:var(--serif);font-size:1.25rem;font-style:italic;text-align:center;color:var(--wine);box-shadow:0 8px 22px #6e2a3a1f;transform:rotate(var(--r));transition:transform .4s,background .4s}.love:hover,.love.on{transform:rotate(0) scale(1.04);background:#fff}.love.on{box-shadow:0 14px 34px #6e2a3a38}.pin{position:absolute;top:-10px;left:50%;margin-left:-10px;color:var(--rose);font-size:1.2rem;font-style:normal}.closing{text-align:center;max-width:720px}.closing-msg{font-size:1.1rem;margin-bottom:2rem}.final{font-size:clamp(1.6rem,5vw,2.3rem);line-height:1.3;margin-bottom:2.5rem;display:block}.music{position:fixed;left:.9rem;bottom:.9rem;z-index:60;display:flex;gap:.7rem;align-items:center;background:#fffaf2eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:.5rem .9rem .5rem .5rem;border-radius:99px;box-shadow:0 6px 20px #6e2a3a33;border:1px solid rgba(194,163,107,.4)}.music button{width:34px;height:34px;border-radius:50%;background:var(--wine);color:var(--ivory);display:grid;place-items:center}.music div{display:flex;flex-direction:column;line-height:1.2}.music strong{font-size:.78rem;font-weight:500}.music small{font-size:.68rem;opacity:.65}.btt{position:fixed;right:.9rem;bottom:.9rem;z-index:60;width:42px;height:42px;border-radius:50%;background:var(--ivory);color:var(--wine);display:grid;place-items:center;box-shadow:0 6px 20px #6e2a3a33;opacity:0;pointer-events:none;transition:opacity .3s}.btt.on{opacity:1;pointer-events:auto}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hearts{display:none}*{animation:none!important;transition-duration:.01ms!important}}
