:root{--bg: #FDFAF6;--bg2: #FFF8F3;--ivory: #F5EDE4;--gold: #B5890C;--gold-mid: #D4AF37;--gold-light: #EDD46A;--rose: #C2768A;--rose-light: #EFC4D4;--rose-deep: #8A3A56;--blush: #FDF0F4;--text: #2E1420;--text-soft: #7A4858;--muted: rgba(46,20,32,.4);--card: rgba(255,255,255,.82);--shadow: rgba(46,20,32,.08)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:Lato,sans-serif;font-weight:300;overflow-x:hidden}.orb{position:absolute;border-radius:50%;pointer-events:none;z-index:0;filter:blur(70px)}.orb-a{width:520px;height:520px;background:radial-gradient(circle,rgba(240,196,212,.35) 0%,transparent 70%);top:-12%;left:-8%;animation:orbDrift 14s ease-in-out infinite}.orb-b{width:400px;height:400px;background:radial-gradient(circle,rgba(212,175,55,.18) 0%,transparent 70%);top:15%;right:-10%;animation:orbDrift 18s ease-in-out infinite reverse}.orb-c{width:450px;height:450px;background:radial-gradient(circle,rgba(240,196,212,.22) 0%,transparent 70%);bottom:-15%;left:25%;animation:orbDrift 22s ease-in-out infinite 3s}.page{position:relative;z-index:1}.hero{min-height:100vh;position:relative;overflow:hidden;display:grid;grid-template-columns:1fr 1fr;align-items:center;background:linear-gradient(135deg,#fff9f5,#fdf6f0,#fef5f8)}@media (max-width:860px){.hero{grid-template-columns:1fr;padding-top:60px}}.hero-left{padding:80px 56px 80px 72px;position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center}@media (max-width:1100px){.hero-left{padding:60px 40px 60px 48px}}@media (max-width:860px){.hero-left{padding:60px 32px 40px;text-align:center;align-items:center}}.hero-chip{display:inline-flex;align-items:center;gap:10px;font-size:.65rem;letter-spacing:.5em;text-transform:uppercase;color:var(--rose);margin-bottom:28px;opacity:0;animation:riseIn .9s ease .3s both}.hero-chip:before,.hero-chip:after{content:"";display:block;width:28px;height:1px;background:var(--rose-light)}.invite-text{font-family:Cormorant Garamond,serif;font-size:clamp(1.05rem,2vw,1.25rem);font-style:italic;line-height:2.1;color:var(--text-soft);max-width:440px;margin-bottom:40px;opacity:0;animation:riseIn 1s ease .6s both}.hero-divider{display:flex;align-items:center;gap:14px;margin-bottom:36px;opacity:0;animation:riseIn .9s ease .9s both}.hero-divider:before{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--rose-light))}.hero-divider:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--rose-light),transparent)}.hero-divider span{font-size:1rem;color:var(--rose-light)}.names-block{margin-bottom:20px;opacity:0;animation:riseIn 1.1s ease 1s both}.hero-name{font-family:Playfair Display,serif;font-size:clamp(3rem,6vw,5.5rem);font-style:italic;color:var(--gold);line-height:1;text-shadow:0 2px 20px rgba(181,137,12,.18)}.hero-et{font-family:Cormorant Garamond,serif;font-size:clamp(1.4rem,3vw,2.2rem);font-style:italic;color:var(--rose);display:block;margin:4px 0}.hero-family{font-size:clamp(.6rem,1.2vw,.75rem);letter-spacing:.65em;text-transform:uppercase;color:var(--muted);margin-top:16px;opacity:0;animation:riseIn .9s ease 1.3s both}.hero-right{padding:80px 72px 80px 40px;position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;gap:24px}@media (max-width:1100px){.hero-right{padding:60px 48px 60px 32px}}@media (max-width:860px){.hero-right{padding:0 32px 80px;align-items:center}}.date-badge{display:inline-flex;align-items:center;gap:16px;background:#ffffffb3;border:1px solid rgba(181,137,12,.2);border-radius:16px;padding:18px 28px;box-shadow:0 4px 20px var(--shadow);opacity:0;animation:riseIn .9s ease .5s both}.date-day{font-family:Playfair Display,serif;font-size:3rem;font-style:italic;color:var(--gold);line-height:1}.date-info{display:flex;flex-direction:column}.date-month{font-family:Cormorant Garamond,serif;font-size:1.3rem;font-style:italic;color:var(--text);line-height:1}.date-year{font-size:.65rem;letter-spacing:.35em;text-transform:uppercase;color:var(--muted);margin-top:3px}.date-day-name{font-size:.62rem;letter-spacing:.35em;text-transform:uppercase;color:var(--rose);padding-top:4px;border-top:1px solid var(--rose-light);margin-top:6px}#countdowns{display:flex;flex-direction:column;gap:18px;opacity:0;animation:riseIn 1s ease .8s both}.event-card{background:var(--card);border:1px solid rgba(181,137,12,.18);border-radius:20px;padding:28px 28px 24px;position:relative;overflow:hidden;box-shadow:0 8px 32px var(--shadow),inset 0 1px #ffffffe6;transition:box-shadow .4s,opacity .4s}.event-card:before{content:"";position:absolute;top:0;left:12%;right:12%;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--gold-mid),transparent)}.event-card.mairie-card{border-color:#c2768a38}.event-card.mairie-card:before{background:linear-gradient(90deg,transparent,var(--rose),transparent)}.event-card.is-past{opacity:.45}.event-card.mairie-card{animation:revealCard .9s cubic-bezier(.175,.885,.32,1.275) both}@keyframes revealCard{0%{opacity:0;transform:scale(.84) translateY(24px)}to{opacity:1;transform:scale(1) translateY(0)}}.card-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.card-icon{font-size:1.8rem;flex-shrink:0}.card-meta{flex:1}.card-type{font-size:.58rem;letter-spacing:.45em;text-transform:uppercase;color:var(--gold);margin-bottom:3px}.mairie-card .card-type{color:var(--rose)}.card-name{font-family:Playfair Display,serif;font-size:1.15rem;font-style:italic;color:var(--text);line-height:1.1}.card-time-loc{display:flex;align-items:center;gap:8px;font-size:.8rem;font-weight:400;color:var(--gold);margin-top:3px}.mairie-card .card-time-loc{color:var(--rose)}.cd-wrap{display:flex;justify-content:center;align-items:center;gap:10px;margin:16px 0 14px}.cd-unit{display:flex;flex-direction:column;align-items:center}.cd-num{font-family:Cormorant Garamond,serif;font-size:clamp(1.9rem,3.5vw,2.8rem);font-weight:600;color:var(--gold);line-height:1;min-width:52px;text-align:center;display:inline-block;animation:flipIn .14s ease both}@keyframes flipIn{0%{transform:scaleY(.1);opacity:0}to{transform:scaleY(1);opacity:1}}.mairie-num{color:var(--rose-deep)!important}.cd-sep{font-family:Cormorant Garamond,serif;font-size:2.2rem;color:#b5890c4d;line-height:1;animation:sepPulse 1s ease-in-out infinite}.mairie-card .cd-sep{color:#c2768a66}.cd-label{font-size:.52rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-top:5px}.card-address{font-size:.78rem;color:var(--muted);line-height:1.7;font-style:italic;text-align:center;border-top:1px solid rgba(181,137,12,.1);padding-top:12px}.ongoing-badge{display:inline-flex;align-items:center;gap:8px;padding:7px 20px;background:#d4af371a;border:1.5px solid rgba(181,137,12,.35);border-radius:50px;font-size:.65rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:16px;animation:badgeGlow 1.8s ease-in-out infinite}.ongoing-badge .dot{width:7px;height:7px;background:var(--gold);border-radius:50%;animation:dotPulse 1.1s ease-in-out infinite}.mairie-card .ongoing-badge{border-color:#c2768a66;background:#f0c4d41f;color:var(--rose-deep)}.mairie-card .ongoing-badge .dot{background:var(--rose)}.sparkles-layer{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.spark{position:absolute;width:3px;height:3px;background:var(--gold-mid);border-radius:50%;opacity:0;animation:sparkRise var(--dur,3s) ease-in-out var(--delay,0s) infinite}.mairie-card .spark{background:var(--rose)}.venues-section{background:var(--ivory);padding:100px 24px;border-top:1px solid rgba(181,137,12,.1)}.venues-inner{max-width:960px;margin:0 auto}.section-label{text-align:center;font-size:.64rem;letter-spacing:.5em;text-transform:uppercase;color:var(--rose);margin-bottom:10px}.section-title{text-align:center;font-family:Playfair Display,serif;font-size:clamp(1.9rem,4vw,3rem);font-style:italic;color:var(--text);margin-bottom:56px}.venues-grid{display:grid;grid-template-columns:1fr;gap:28px}.venues-grid.two{grid-template-columns:1fr 1fr}@media (max-width:700px){.venues-grid.two{grid-template-columns:1fr}}.venue-card{background:#fff;border-radius:24px;padding:44px 40px;box-shadow:0 12px 48px var(--shadow),0 2px 8px #2e14200a;border:1px solid rgba(181,137,12,.12);position:relative;overflow:hidden;transform:translateY(30px);opacity:0;transition:transform .8s ease,opacity .8s ease,box-shadow .3s}.venue-card.in-view{transform:translateY(0);opacity:1}.venue-card:hover{box-shadow:0 20px 60px #2e14201f}.venue-card:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--rose-light),var(--gold-light),var(--rose-light))}.venue-card.mairie-v:after{background:linear-gradient(90deg,var(--rose-light),var(--rose),var(--rose-light))}.venue-event-tag{display:inline-block;padding:5px 16px;background:#d4af371a;border:1px solid rgba(181,137,12,.2);border-radius:50px;font-size:.6rem;letter-spacing:.4em;text-transform:uppercase;color:var(--gold);margin-bottom:24px}.venue-card.mairie-v .venue-event-tag{background:#f0c4d426;border-color:#c2768a4d;color:var(--rose-deep)}.venue-time{font-family:Playfair Display,serif;font-size:clamp(2.8rem,5vw,4.5rem);font-style:italic;color:var(--gold);line-height:1;margin-bottom:6px}.venue-card.mairie-v .venue-time{color:var(--rose)}.venue-name-big{font-family:Cormorant Garamond,serif;font-size:clamp(1.4rem,3vw,2rem);font-weight:600;color:var(--text);margin-bottom:20px}.venue-divider{width:48px;height:1px;margin:0 0 20px;background:linear-gradient(90deg,var(--gold-light),transparent)}.venue-card.mairie-v .venue-divider{background:linear-gradient(90deg,var(--rose-light),transparent)}.venue-address{font-size:.9rem;color:var(--text-soft);line-height:1.9}.venue-address strong{display:block;font-weight:400;font-size:1rem;color:var(--text);margin-bottom:2px}.thank-you{text-align:center;padding:60px 24px 0}.ty-heart{font-size:4.5rem;margin-bottom:28px;animation:heartBeat 1.6s ease-in-out infinite;display:block}.ty-title{font-family:Playfair Display,serif;font-size:clamp(2rem,5vw,3.4rem);font-style:italic;color:var(--gold);margin-bottom:32px;animation:riseIn 1.2s ease both}.ty-text{font-family:Cormorant Garamond,serif;font-size:clamp(1.1rem,2.5vw,1.45rem);font-style:italic;color:var(--text-soft);line-height:2.2;max-width:600px;margin:0 auto 48px;animation:riseIn 1.2s ease .3s both}.ty-sig{font-family:Playfair Display,serif;font-size:1.8rem;font-style:italic;color:var(--rose-deep)}.fp-section{background:var(--blush);text-align:center;padding:96px 24px;border-top:1px solid rgba(194,118,138,.12)}.fp-btn{display:inline-flex;align-items:center;gap:14px;padding:18px 48px;background:linear-gradient(135deg,var(--rose) 0%,var(--rose-deep) 100%);border:none;border-radius:50px;color:#fff;font-size:.8rem;font-family:Lato,sans-serif;letter-spacing:.25em;text-transform:uppercase;cursor:pointer;transition:transform .3s,box-shadow .3s;box-shadow:0 8px 32px #8a3a5647}.fp-btn:hover{transform:translateY(-3px);box-shadow:0 16px 48px #8a3a5661}.fp-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}footer{background:var(--text);text-align:center;padding:56px 24px;font-family:Cormorant Garamond,serif;font-style:italic;color:#ffffff59;line-height:2.2}footer .f-names{font-family:Playfair Display,serif;font-size:1.5rem;font-style:italic;color:#d4af37b3;margin-bottom:8px}.popup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2e142099;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .5s ease both;transition:opacity .55s ease}.popup-overlay.closing{opacity:0}.popup-overlay.fast-closing{opacity:0;transition-duration:.28s}.popup-card{background:linear-gradient(150deg,#fffcf8,#fef5ee);border:1px solid rgba(181,137,12,.25);border-radius:32px;padding:56px 48px;max-width:460px;width:92%;text-align:center;position:relative;box-shadow:0 32px 80px #2e142033,0 4px 16px #2e14200f,inset 0 1px #ffffffe6;animation:popIn .7s cubic-bezier(.175,.885,.32,1.275) both}.popup-card:before{content:"";position:absolute;top:14px;right:14px;bottom:14px;left:14px;border-radius:22px;border:1px solid rgba(181,137,12,.12);pointer-events:none}.popup-ring{font-size:2.8rem;margin-bottom:18px;display:inline-block;animation:ringRock 3s ease-in-out infinite}.popup-title{font-family:Playfair Display,serif;font-size:2.1rem;font-style:italic;color:var(--gold);margin-bottom:6px}.popup-sub{font-size:.7rem;letter-spacing:.45em;text-transform:uppercase;color:var(--rose);margin-bottom:32px}.popup-q{font-family:Cormorant Garamond,serif;font-size:1.1rem;color:var(--text-soft);line-height:1.8;margin-bottom:26px}.popup-q small{font-size:.8rem;color:var(--muted);display:block;margin-top:6px}.code-input{width:100%;padding:13px 22px;background:#ffffffb3;border:1.5px solid rgba(181,137,12,.28);border-radius:50px;color:var(--text);font-size:.95rem;font-family:Lato,sans-serif;letter-spacing:.22em;text-align:center;outline:none;transition:border-color .3s,box-shadow .3s;margin-bottom:14px}.code-input:focus{border-color:var(--gold);box-shadow:0 0 0 4px #b5890c1a}.code-input.shake{animation:shake .4s ease}.popup-btn{display:block;width:100%;padding:15px;background:linear-gradient(135deg,#c9a225,#9a7010);border:none;border-radius:50px;color:#fff;font-size:.82rem;font-weight:700;font-family:Lato,sans-serif;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:transform .2s,box-shadow .2s;margin-bottom:0;box-shadow:0 6px 22px #b5890c4d}.popup-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 12px 32px #b5890c61}.popup-btn:disabled{opacity:.65;cursor:not-allowed}.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s ease,transform .8s ease}.reveal.in-view{opacity:1;transform:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.86) translateY(40px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes riseIn{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-9px)}75%{transform:translate(9px)}}@keyframes ringRock{0%,to{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}@keyframes orbDrift{0%,to{transform:translate(0) scale(1)}50%{transform:translate(30px,20px) scale(1.06)}}@keyframes sepPulse{0%,to{opacity:.28}50%{opacity:.8}}@keyframes badgeGlow{0%,to{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 20px #b5890c38}}@keyframes dotPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.9);opacity:.4}}@keyframes sparkRise{0%{opacity:0;transform:translateY(80%) scale(0)}40%{opacity:.7}to{opacity:0;transform:translateY(-60%) scale(1.5)}}@keyframes heartBeat{0%,to{transform:scale(1)}14%{transform:scale(1.22)}28%{transform:scale(1)}42%{transform:scale(1.12)}56%{transform:scale(1)}}@media (max-width:480px){.hero-left,.hero-right{padding-left:24px;padding-right:24px}.cd-num{min-width:44px}.event-card{padding:22px 20px 18px}.venue-card{padding:32px 24px}.popup-card{padding:40px 28px}}
