@charset "UTF-8";
:root{--primary:#66704f;--secondary:#e4b63f;--bg:#fff8e8;--text:#403d2e;--accent:#b2862b;--paper:#fffdf7;--line:color-mix(in srgb,var(--accent) 35%,transparent)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:18px/1.72 Georgia,serif}a{color:inherit}.hero{position:relative;min-height:100svh;display:grid;place-items:center;text-align:center;overflow:hidden;color:#fff}.hero-bg{position:absolute;inset:0;background-image:var(--theme-bg);background-position:center;background-size:cover;background-repeat:no-repeat;filter:brightness(.92);transform:scale(1.02)}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(#1112,#1117)}.hero-inner{position:relative;z-index:3;padding:70px 20px;width:min(900px,100%)}.eyebrow{font:12px/1.7 Arial,sans-serif;letter-spacing:4px;color:var(--accent)}.hero .eyebrow{color:#fff1ba}.hero h1{font-size:clamp(64px,10vw,112px);font-weight:400;font-style:italic;line-height:.95;margin:30px 0}.hero h1 em{display:block;font-size:34px;color:#ffe3a1}.event-label{font:15px Arial,sans-serif;letter-spacing:6px}.hero-date{display:flex;align-items:center;justify-content:center;gap:24px;margin:34px auto}.hero-date strong{font-size:70px;font-weight:400}.hero-date span{border-block:1px solid #fff7;padding:10px;min-width:90px}.hero-actions,.actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.pill,.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--accent);background:transparent;color:var(--text);padding:11px 19px;text-decoration:none;border-radius:999px;font:14px Arial,sans-serif;cursor:pointer}.pill{background:#fffdf0e8}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.section{max-width:900px;margin:auto;text-align:center;padding:82px 24px}.section h2{font-size:clamp(34px,5vw,52px);font-weight:400;font-style:italic;margin:20px}.section p.muted,.muted{color:color-mix(in srgb,var(--text) 65%,transparent)}.families{display:grid;grid-template-columns:1fr 1fr;gap:25px;border-top:1px solid var(--line);margin:42px auto 0;padding-top:28px;max-width:680px}.families>div+div{border-left:1px solid var(--line)}.family-label{font:11px Arial,sans-serif;letter-spacing:2px}.family-names{white-space:pre-line;font-size:21px}.count{background:var(--primary);color:#fff;padding:64px 20px;text-align:center}.countdown{display:flex;justify-content:center;align-items:flex-start;gap:20px}.countdown div{min-width:75px}.countdown strong{display:block;font-size:48px;font-weight:400}.countdown span{font:11px Arial,sans-serif;letter-spacing:2px}.venue{max-width:650px;margin:35px auto 0;border:1px solid var(--line);padding:35px;outline:1px solid var(--line);outline-offset:-7px}.venue h3{font-size:34px;font-weight:400}.venue address{white-space:pre-line;font-style:normal}.upload-box{max-width:680px;margin:20px auto;border:1px solid var(--line);padding:28px;background:var(--paper)}.upload-list{display:grid;gap:10px;margin-top:18px;text-align:left}.upload-item{border:1px solid var(--line);padding:12px;background:#fff}.upload-progress{height:7px;background:#eee;border-radius:99px;overflow:hidden}.upload-progress span{display:block;height:100%;background:var(--accent);width:0}.upload-row{display:flex;justify-content:space-between;gap:10px;font:14px Arial,sans-serif}.upload-note{font:12px Arial,sans-serif;margin:7px 0;color:#666}.invitation-card{display:block;max-width:430px;width:100%;height:auto;margin:35px auto;box-shadow:0 15px 40px #0002}.music-toggle{position:fixed;right:14px;top:14px;z-index:30;border:1px solid #fff7;border-radius:99px;background:#222b;color:#fff;padding:10px 14px}.petal-layer{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}.petal{position:absolute;top:-10%;font-size:var(--s);animation:petal var(--d) linear var(--delay) infinite;opacity:.85}.intro{position:fixed;inset:0;z-index:50;background:#15150f;display:grid;place-items:center;transition:opacity .8s}.intro.hide{opacity:0;pointer-events:none}.intro-stage{position:relative;width:min(100vw,620px);height:100svh;overflow:hidden;background:#333}.intro-stage .road{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.intro-car{position:absolute;left:50%;bottom:7%;width:min(48%,430px);height:auto;transform:translateX(-50%);transform-origin:center bottom;filter:drop-shadow(0 16px 12px #0007);z-index:3;animation:driveAway 7s cubic-bezier(.22,.7,.25,1) forwards}.intro-heading{position:absolute;top:8%;left:0;right:0;text-align:center;color:#fff6d2;letter-spacing:3px;font:13px Arial,sans-serif}.intro-message{position:absolute;top:78%;left:0;right:0;text-align:center;color:#ffe270;font-size:44px;font-style:italic;text-shadow:0 2px 8px #000}.intro-skip{position:absolute;right:15px;bottom:15px;z-index:3;border:1px solid #fff8;background:#222a;color:#fff;border-radius:99px;padding:10px 15px}.theme-corner{position:absolute;width:82px;height:82px;object-fit:contain;font-size:70px;z-index:1;opacity:.9;filter:drop-shadow(0 5px 12px #0002)}.c1{left:1%;top:3%}.c2{right:1%;top:3%}.c3{left:1%;bottom:2%}.c4{right:1%;bottom:2%}footer{text-align:center;padding:45px;border-top:1px solid var(--line)}footer strong{font-size:34px;font-style:italic;color:var(--accent)}@keyframes driveAway{0%{bottom:6%;width:min(48%,430px);opacity:1}70%{opacity:1}100%{bottom:60%;width:6%;opacity:.88}}@keyframes petal{0%{transform:translate3d(0,-10vh,0) rotate(0);opacity:0}10%{opacity:.8}100%{transform:translate3d(var(--x),115vh,0) rotate(430deg);opacity:.2}}@media(max-width:650px){.families{grid-template-columns:1fr}.families>div+div{border-left:0;border-top:1px solid var(--line);padding-top:20px}.countdown{gap:8px}.countdown div{min-width:50px}.countdown strong{font-size:36px}.hero h1{font-size:72px}.hero-actions{flex-direction:column}.pill,.btn{width:100%}.music-toggle{top:auto;bottom:15px}.theme-corner{font-size:50px}}@media(prefers-reduced-motion:reduce){.petal,.intro-car{animation:none}.intro{display:none}}
.theme-corner.c1{left:2%;top:4%}.theme-corner.c2{right:2%;top:4%}.theme-corner.c3{left:2%;bottom:4%}.theme-corner.c4{right:2%;bottom:4%}.intro-theme .theme-corner{z-index:2;width:74px;height:74px}.intro-theme .it1{left:18px;top:64px}.intro-theme .it2{right:18px;top:64px}.petal-img{position:absolute;top:-10%;width:var(--s);height:var(--s);object-fit:contain;animation:petal var(--d) linear var(--delay) infinite;opacity:.84;filter:drop-shadow(0 2px 4px #0001)}.light{color:#fff3c5!important}@media(max-width:650px){.theme-corner{width:58px;height:58px}.intro-car{width:54%}}
/* V20: theme-synced opening scene + rear-view car trail */
.intro-stage{position:relative;width:min(100vw,720px);height:100svh;overflow:hidden;background:#1b1b18;isolation:isolate}
.intro-scene{position:absolute;inset:0;background-position:center;background-size:cover;background-repeat:no-repeat;z-index:0;transform:scale(1.02)}
.intro-stage:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0002 0%,#0000 45%,#0005 100%);z-index:1;pointer-events:none}
.intro-heading,.intro-message,.intro-skip{z-index:6}
.intro-car{z-index:5;bottom:4%;width:min(56%,470px);animation:driveAwayV19 7s cubic-bezier(.18,.66,.22,1) forwards;will-change:transform,bottom,opacity;filter:drop-shadow(0 18px 16px #0008)}
.intro-trail-layer{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}
.trail-particle{position:absolute;display:block;width:var(--size);height:var(--size);font-size:var(--size);line-height:1;object-fit:contain;animation:trailFall var(--dur) ease-out forwards;transform:translate(-50%,-50%);filter:drop-shadow(0 2px 3px #0002)}
.trail-img{object-fit:contain}
@keyframes driveAwayV19{0%{bottom:3%;transform:translateX(-50%) scale(1);opacity:1}58%{opacity:1}100%{bottom:57%;transform:translateX(-50%) scale(.14);opacity:.94}}
@keyframes trailFall{0%{opacity:.95;transform:translate(-50%,-50%) scale(.75) rotate(0)}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(1.15) rotate(var(--rot))}}
@media(max-width:650px){.intro-stage{width:100vw}.intro-car{width:63%}.intro-message{top:80%;font-size:38px}}

/* V20 stable scene/car alignment */
.intro-car{object-fit:contain;max-height:38vh;filter:drop-shadow(0 18px 18px rgba(0,0,0,.58))}
.theme-corner{object-fit:contain}
@keyframes driveAwayV19{0%{bottom:2.5%;transform:translateX(-50%) scale(1);opacity:1}62%{opacity:1}100%{bottom:58%;transform:translateX(-50%) scale(.12);opacity:.92}}
@media(max-width:650px){.intro-car{width:58%;max-height:32vh}}

/* V22 adjustable vehicle animation */
.intro-car{left:50%;animation-duration:var(--drive-seconds,7s)!important}
@keyframes driveAwayV19{0%{bottom:2.5%;transform:translateX(calc(-50% + var(--car-x,0px))) translateY(var(--car-y,0px)) scale(var(--car-start,1));opacity:1}62%{opacity:1}100%{bottom:58%;transform:translateX(calc(-50% + var(--car-x,0px))) translateY(var(--car-y,0px)) scale(var(--car-end,.14));opacity:.94}}
