:root{--ink:#351f26;--muted:#80676e;--rose:#bb6679;--blush:#f7e9ea;--cream:#fffaf6;--wine:#321820;--line:rgba(81,42,51,.13);--serif:'Noto Serif SC',serif;--display:'Playfair Display','Noto Serif SC',serif;--shadow:0 24px 70px rgba(70,35,43,.12)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--serif);line-height:1.75;overflow-x:hidden}button,input,textarea{font:inherit}button,a{color:inherit}a{text-decoration:none}img{max-width:100%;display:block}::selection{background:#e9bdc5;color:#44232b}.eyebrow{font:600 10px/1.4 Arial,sans-serif;letter-spacing:.3em;text-transform:uppercase;color:var(--rose)}
.site-header{position:fixed;z-index:40;top:0;left:0;width:100%;height:84px;padding:0 4vw;display:flex;align-items:center;justify-content:space-between;color:white;transition:.35s}.site-header.scrolled{height:66px;color:var(--ink);background:rgba(255,250,246,.88);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}.brand{font:italic 600 21px var(--display);letter-spacing:.08em}.brand span{font-style:normal}.site-header nav{display:flex;gap:32px;font-size:13px}.site-header nav a{opacity:.78;transition:.2s}.site-header nav a:hover{opacity:1;color:var(--rose)}.music-button{border:0;background:transparent;color:inherit;display:flex;align-items:center;gap:9px;cursor:pointer}.music-button span{width:29px;height:29px;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center}.music-button.playing span{animation:spin 4s linear infinite}.music-button small{font:9px Arial;letter-spacing:.18em}.nav-toggle{display:none;border:0;background:none;color:inherit;font-size:21px}
.hero{height:100svh;min-height:650px;position:relative;display:grid;place-items:center;text-align:center;color:white;background:radial-gradient(circle at 50% 30%,#c88a96,#75505a 56%,#332129);overflow:hidden}.hero.has-photo:before{content:"";position:absolute;inset:-5%;background-image:var(--hero);background-position:center;background-size:cover;animation:heroZoom 18s ease-out both}.hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(25,8,14,.28),rgba(37,12,19,.12) 45%,rgba(26,8,13,.65))}.film-grain{position:absolute;inset:0;opacity:.15;pointer-events:none;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='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E")}.hero-copy{position:relative;z-index:2;max-width:850px;padding:24px}.hero-copy .eyebrow{color:#f8dfe3}.hero h1{font:italic 500 clamp(64px,10vw,148px)/.95 var(--display);margin:18px 0 26px;text-shadow:0 8px 35px rgba(0,0,0,.25)}.hero-quote{font-size:clamp(15px,1.5vw,20px);letter-spacing:.12em;max-width:630px;margin:0 auto 42px}.glass-button{display:inline-flex;gap:26px;align-items:center;border:1px solid rgba(255,255,255,.55);padding:13px 23px;border-radius:99px;background:rgba(255,255,255,.08);backdrop-filter:blur(10px);font-size:13px;transition:.3s}.glass-button:hover{background:white;color:var(--ink);transform:translateY(-2px)}.scroll-cue{position:absolute;bottom:28px;z-index:2;font:8px Arial;letter-spacing:.25em;display:flex;flex-direction:column;align-items:center;gap:9px;opacity:.8}.scroll-cue span{width:1px;height:30px;background:linear-gradient(white,transparent)}
.intro-section{padding:150px 8vw;max-width:1050px;margin:auto;text-align:center}.section-number{font:10px Arial;letter-spacing:.25em;color:var(--rose)}.intro-section h2{font:500 clamp(35px,5vw,66px)/1.25 var(--serif);margin:25px 0}.intro-section h2 em{font-family:var(--display);font-weight:400;color:var(--rose)}.intro-section>p:last-child{max-width:620px;margin:auto;color:var(--muted)}
.gallery-section,.wishes-section,.about-section{padding:100px 6vw 140px}.section-heading{max-width:1400px;margin:0 auto 55px;display:flex;justify-content:space-between;align-items:end}.section-heading h2{font:500 clamp(34px,4vw,58px)/1.2 var(--serif);margin:8px 0}.section-heading>p{font:9px Arial;letter-spacing:.2em;color:var(--muted)}.masonry{max-width:1400px;margin:auto;columns:4;column-gap:18px}.photo-card{position:relative;width:100%;padding:0;margin:0 0 18px;display:block;border:0;border-radius:20px;overflow:hidden;background:#eadbdd;cursor:zoom-in;break-inside:avoid;box-shadow:0 8px 30px rgba(62,31,38,.09);transition:.45s;transition-delay:var(--delay)}.photo-card img{width:100%;min-height:220px;object-fit:cover;transition:.7s}.photo-card:nth-child(3n+1) img{aspect-ratio:3/4}.photo-card:nth-child(3n+2) img{aspect-ratio:4/3}.photo-card:hover{transform:translateY(-7px);box-shadow:var(--shadow)}.photo-card:hover img{transform:scale(1.045)}.photo-overlay{position:absolute;inset:auto 0 0;padding:55px 20px 18px;color:white;text-align:left;background:linear-gradient(transparent,rgba(29,11,16,.72));opacity:0;transition:.3s}.photo-card:hover .photo-overlay{opacity:1}.photo-overlay b,.photo-overlay small{display:block}.photo-overlay b{font-size:15px}.photo-overlay small{font:9px Arial;letter-spacing:.12em;margin-top:3px}.empty-museum{max-width:1400px;margin:auto;padding:100px;text-align:center;border:1px solid var(--line);border-radius:30px;background:linear-gradient(135deg,#fff,#f9ecee)}.empty-museum span{font-size:40px;color:var(--rose)}
.timeline-section{padding:120px 6vw 160px;background:var(--wine);color:#f9eeee}.section-heading.light .eyebrow{color:#d99caa}.section-heading.light>p{color:#ad9298}.timeline{max-width:1050px;margin:auto;position:relative;padding:30px 0}.timeline:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:linear-gradient(transparent,#e4aab7 8%,#e4aab7 92%,transparent);box-shadow:0 0 18px #df92a4}.timeline-item{width:50%;padding:35px 55px;position:relative}.timeline-item.left{text-align:right}.timeline-item.right{margin-left:50%}.timeline-node{position:absolute;top:68px;width:42px;height:42px;border-radius:50%;border:1px solid #dca0ae;background:var(--wine);box-shadow:0 0 25px rgba(224,143,162,.45);display:grid;place-items:center;z-index:2}.left .timeline-node{right:-21px}.right .timeline-node{left:-21px}.timeline-node span{font:9px Arial;color:#e9bac4}.timeline-card{overflow:hidden;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.055);backdrop-filter:blur(12px);border-radius:24px;text-align:left;transition:.4s}.timeline-card:hover{transform:translateY(-5px);border-color:rgba(232,172,186,.45)}.timeline-card img{width:100%;aspect-ratio:16/10;object-fit:cover}.timeline-card>div{padding:24px}.timeline-card p{color:#c9b5ba;font-size:13px;margin:0}.timeline-card p:first-child{font:9px Arial;letter-spacing:.16em;color:#d99aaa}.timeline-card h3{font-size:23px;margin:8px 0}.timeline-empty{text-align:center;padding:100px}.timeline-empty i{display:block;width:18px;height:18px;border-radius:50%;background:#e0a3b1;box-shadow:0 0 30px #df92a4;margin:auto}
.story-section{padding:140px 6vw;background:#f3e7e6}.story-intro{text-align:center;margin-bottom:100px}.story-intro h2{font:500 clamp(45px,6vw,80px)/1.25 var(--serif);margin:22px}.story-intro>p:last-child{color:var(--muted)}.story-chapter{max-width:1250px;margin:0 auto 160px;display:grid;grid-template-columns:1.25fr .75fr;gap:8vw;align-items:center}.story-chapter:nth-child(odd){grid-template-columns:.75fr 1.25fr}.story-chapter:nth-child(odd) .story-image{order:2}.story-image{min-height:650px;background-size:cover;background-position:center;border-radius:220px 220px 28px 28px;position:relative;box-shadow:var(--shadow)}.story-image.placeholder{background:radial-gradient(circle at 30% 20%,#dda6b1,#8f5966 65%,#4a2932)}.story-image span{position:absolute;right:-25px;top:50px;font:italic 100px var(--display);color:rgba(255,255,255,.8)}.chapter-label{font:10px Arial;letter-spacing:.25em;color:var(--rose)}.story-copy h3{font:500 clamp(34px,4vw,60px)/1.25 var(--serif);margin:18px 0}.story-copy time{font:10px Arial;letter-spacing:.18em;color:var(--muted)}.prose{margin-top:35px;color:#665157;white-space:normal;line-height:2.1;font-size:15px}
.about-section{background:var(--cream)}.couple-grid{max-width:1040px;margin:80px auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:45px}.person-card{text-align:center;padding:55px 35px;border:1px solid var(--line);border-radius:180px 180px 26px 26px;background:white;box-shadow:0 12px 45px rgba(70,35,43,.06)}.monogram{width:150px;height:190px;border-radius:100px 100px 25px 25px;margin:0 auto 30px;background:linear-gradient(155deg,#ead1d5,#9d6975);display:grid;place-items:center;color:white;font:italic 70px var(--display)}.person-card p{font:9px Arial;letter-spacing:.2em;color:var(--rose)}.person-card h3{font:italic 42px var(--display);margin:4px}.person-card span{font-size:13px;color:var(--muted)}.ampersand{font:italic 70px var(--display);color:#d5a3ad}.stats{max-width:900px;margin:90px auto 0;display:grid;grid-template-columns:repeat(3,1fr);text-align:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:35px}.stats div+div{border-left:1px solid var(--line)}.stats strong,.stats span{display:block}.stats strong{font:500 44px var(--display);color:var(--rose)}.stats span{font-size:11px;color:var(--muted)}
.wishes-section{background:#fff}.text-button{border:0;background:none;border-bottom:1px solid var(--rose);padding:7px 0;color:var(--rose);cursor:pointer}.wish-grid{max-width:1400px;margin:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.wish-card{padding:35px;border-radius:20px;background:#fbf4f3;border:1px solid transparent;min-height:230px;display:flex;flex-direction:column}.wish-card.featured{background:linear-gradient(140deg,#653843,#3b2028);color:#fff;box-shadow:var(--shadow)}.wish-avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#e5bdc5;color:#733e4b}.wish-card>p{font-size:15px;flex:1;margin:25px 0}.wish-card footer{display:flex;justify-content:space-between;font-size:11px}.wish-card time{color:var(--muted)}.featured time{color:#cdb6bb}.empty-wishes{grid-column:1/-1;text-align:center;color:var(--muted)}
.main-footer{min-height:380px;background:#29151b;color:white;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.main-footer p{font:italic 56px var(--display);margin:0}.main-footer span{font:9px Arial;letter-spacing:.35em;color:#d9a3af;margin:14px}.main-footer small{font:8px Arial;letter-spacing:.2em;color:#896f75;margin-top:55px}
.ambient{position:fixed;inset:0;pointer-events:none;z-index:50;overflow:hidden}.ambient i{position:absolute;width:5px;height:9px;border-radius:100% 0;background:#e3aab4;opacity:0;animation:petal 13s linear infinite}.ambient i:nth-child(1){left:12%;animation-delay:2s}.ambient i:nth-child(2){left:63%;animation-delay:6s}.ambient i:nth-child(3){left:88%;animation-delay:9s}.reveal{opacity:0;transform:translateY(28px);transition:opacity .85s,transform .85s}.reveal.visible{opacity:1;transform:none}
dialog{border:0;padding:0;box-shadow:0 30px 100px rgba(30,10,16,.35)}dialog::backdrop{background:rgba(35,17,22,.75);backdrop-filter:blur(7px)}.dialog-close{position:absolute;z-index:3;right:18px;top:14px;width:34px;height:34px;border:0;border-radius:50%;background:rgba(255,255,255,.8);cursor:pointer;font-size:23px}.lightbox{width:min(1100px,92vw);height:min(760px,88vh);border-radius:24px;background:#fff;grid-template-columns:1.65fr .65fr;overflow:hidden}.lightbox[open]{display:grid}.lightbox-image{background:#221116;display:grid;place-items:center;min-width:0}.lightbox-image img{width:100%;height:100%;object-fit:contain}.lightbox-copy{padding:55px 35px;align-self:end}.lightbox-copy p{font:9px Arial;letter-spacing:.15em;color:var(--rose)}.lightbox-copy h3{font-size:30px;margin:12px 0}.lightbox-copy div{font-size:13px;color:var(--muted)}.wish-dialog{width:min(560px,92vw);border-radius:26px;padding:55px;background:#fffaf7}.wish-dialog h2{font-size:35px;margin:10px 0 30px}.stack-form{display:grid;gap:19px}.stack-form label{font-size:12px;color:var(--muted)}.stack-form input,.stack-form textarea{display:block;width:100%;margin-top:7px;border:1px solid var(--line);border-radius:12px;background:white;padding:12px 14px;outline:none;color:var(--ink)}.stack-form input:focus,.stack-form textarea:focus{border-color:var(--rose);box-shadow:0 0 0 3px rgba(187,102,121,.1)}.button{border:0;border-radius:99px;background:var(--wine);color:white;padding:13px 25px;cursor:pointer;text-align:center;display:inline-block}.notice{padding:13px 18px;border-radius:12px;margin:0 auto 25px;max-width:1400px}.notice.success{background:#e9f6ee;color:#21633a}.notice.error{background:#fae7e7;color:#8c3030}
.install-page,.login-page{min-height:100vh;display:grid;place-items:center;padding:25px;background:radial-gradient(circle at top,#e9bcc5,#6f404c 70%,#2f1820)}.install-card,.login-card{width:min(480px,100%);background:rgba(255,255,255,.9);backdrop-filter:blur(25px);padding:50px;border-radius:30px;box-shadow:0 30px 90px rgba(40,16,23,.28)}.install-card h1,.login-card h1{font-size:38px;margin:8px 0}.install-card>p,.login-card>p{color:var(--muted)}
@keyframes heroZoom{from{transform:scale(1)}to{transform:scale(1.08)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes petal{0%{top:-20px;opacity:0;transform:rotate(0)}10%{opacity:.6}100%{top:105%;opacity:0;transform:translateX(90px) rotate(560deg)}}
@media(max-width:900px){.site-header nav{display:none;position:absolute;top:66px;left:0;width:100%;padding:25px;background:rgba(255,250,246,.97);color:var(--ink);flex-direction:column;text-align:center}.site-header nav.open{display:flex}.nav-toggle{display:block}.music-button small{display:none}.masonry{columns:2}.timeline:before{left:20px}.timeline-item,.timeline-item.right{width:100%;margin-left:0;padding:25px 0 25px 60px}.timeline-item.left{text-align:left}.left .timeline-node,.right .timeline-node{left:0;right:auto}.story-chapter,.story-chapter:nth-child(odd){grid-template-columns:1fr;gap:45px}.story-chapter:nth-child(odd) .story-image{order:0}.story-image{min-height:65vw;border-radius:150px 150px 24px 24px}.wish-grid{grid-template-columns:1fr 1fr}}
.mobile-love-nav{display:none}@media(max-width:620px){.site-header{height:66px;padding:0 20px}.hero h1{font-size:58px}.hero-quote{letter-spacing:.05em}.intro-section,.gallery-section,.timeline-section,.story-section,.about-section,.wishes-section{padding-left:20px;padding-right:20px}.section-heading{align-items:start}.section-heading>p{display:none}.masonry{columns:1}.photo-overlay{opacity:1}.story-image{min-height:110vw}.couple-grid{grid-template-columns:1fr}.ampersand{margin:-35px 0;z-index:2}.stats{padding:25px 0}.stats strong{font-size:31px}.stats span{font-size:9px}.wish-grid{grid-template-columns:1fr}.lightbox[open]{display:block;height:auto;max-height:90vh;overflow:auto}.lightbox-image{height:55vh}.lightbox-copy{padding:28px}.main-footer{padding-bottom:80px}.main-footer p{font-size:42px}.install-card,.login-card{padding:34px 24px}.mobile-love-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:9px;right:9px;bottom:7px;z-index:60;padding:7px;background:#fffdf9ef;backdrop-filter:blur(18px);border:1px solid #eadeda;border-radius:17px;box-shadow:0 12px 40px #3e202930}.mobile-love-nav a{display:flex;flex-direction:column;align-items:center;font:8px Arial;color:#8d767b}.mobile-love-nav i{font-style:normal;font-size:16px}.mobile-love-nav .active{color:var(--rose)}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}.ambient{display:none}}
