:root{--gold:#c9a96e;--gold-light:#d4b97a;--gold-dark:#a6844a;--navy:#0a1e3d;--navy-light:#142d54;--navy-dark:#071330;--white:#fff;--cream:#fbf8f3;--gray:#e5e0db;--gray-dark:#8c8580;--font-display:"Cormorant Garamond", "Georgia", serif;--font-body:"Lato", "Helvetica", sans-serif;--transition:all .4s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-body);color:var(--navy);background-color:var(--cream);-webkit-font-smoothing:antialiased;line-height:1.7;overflow-x:hidden}.container{max-width:1200px;margin:0 auto;padding:0 2rem}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}ul{list-style:none}.main-nav{z-index:1000;transition:var(--transition);background:0 0;padding:1.25rem 0;position:fixed;top:0;left:0;right:0}.main-nav.scrolled{background:#0a1e3df7;padding:.75rem 0;box-shadow:0 2px 20px #0000004d}.nav-content{justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;padding:0 2rem;display:flex}.nav-brand{font-family:var(--font-display);color:var(--white);letter-spacing:.05em;font-size:1.8rem;font-weight:700}.nav-list{align-items:center;gap:2rem;display:flex}.nav-list a{font-family:var(--font-body);color:#ffffffd9;text-transform:uppercase;letter-spacing:.15em;transition:var(--transition);padding:.25rem 0;font-size:.85rem;font-weight:400;position:relative}.nav-list a:after{content:"";background:var(--gold);width:0;height:1px;transition:var(--transition);position:absolute;bottom:0;left:0}.nav-list a:hover,.nav-list a:focus-visible{color:var(--white)}.nav-list a:hover:after,.nav-list a:focus-visible:after{width:100%}.nav-rsvp{background:var(--gold);transition:var(--transition);border-radius:50px;color:var(--navy)!important;letter-spacing:.1em!important;padding:.6rem 1.4rem!important;font-weight:700!important}.nav-rsvp:hover{transform:translateY(-2px);background:var(--gold-dark)!important;color:var(--navy)!important}.nav-rsvp:after{display:none!important}.mobile-toggle{cursor:pointer;z-index:1001;background:0 0;border:none;flex-direction:column;gap:6px;padding:8px;display:none}.mobile-toggle span{background:var(--white);width:28px;height:2px;transition:var(--transition);border-radius:2px;display:block}.mobile-toggle.active span:first-child{transform:rotate(45deg)translate(5px,5px)}.mobile-toggle.active span:nth-child(2){opacity:0}.mobile-toggle.active span:nth-child(3){transform:rotate(-45deg)translate(6px,-6px)}.hero{text-align:center;min-height:100vh;color:var(--white);background:linear-gradient(135deg,#0a1e3deb 0%,#071330e0 100%),url(../images/hero-background.jpg) 50%/cover no-repeat;justify-content:center;align-items:center;display:flex;position:relative}.hero-overlay{background:radial-gradient(#c9a96e14 0%,#0000 70%);position:absolute;inset:0}.hero-content{z-index:1;padding:2rem;position:relative}.hero-pre{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.4em;color:var(--gold);opacity:0;margin-bottom:1.5rem;font-size:1rem;font-weight:300;animation:1s .2s forwards fadeSlideUp}.hero-names{font-family:var(--font-display);margin-bottom:1.5rem;font-size:clamp(3.5rem,10vw,7rem);font-weight:400;line-height:1.05}.name-first{opacity:0;font-style:italic;font-weight:500;animation:1s .4s forwards fadeSlideUp;display:block}.name-amp{color:var(--gold);letter-spacing:.2em;opacity:0;margin:.3rem 0;font-size:2.5rem;font-style:normal;font-weight:300;animation:1s .5s forwards fadeSlideUp;display:block}.name-second{opacity:0;font-style:italic;font-weight:500;animation:1s .6s forwards fadeSlideUp;display:block}.hero-divider{opacity:0;justify-content:center;align-items:center;gap:1.25rem;margin:1.5rem 0;animation:1s .7s forwards fadeSlideUp;display:flex}.divider-line{background:var(--gold);width:60px;height:1px}.divider-diamond{color:var(--gold);font-size:.9rem}.hero-date{font-family:var(--font-body);letter-spacing:.25em;text-transform:uppercase;color:#fffc;opacity:0;margin-bottom:2.5rem;font-size:1.15rem;font-weight:300;animation:1s .8s forwards fadeSlideUp}.hero-countdown{opacity:0;justify-content:center;align-items:center;gap:1rem;animation:1s .9s forwards fadeSlideUp;display:flex}.countdown-item{text-align:center;min-width:70px}.countdown-value{font-family:var(--font-display);color:var(--gold);font-size:clamp(2rem,5vw,3.2rem);font-weight:600;line-height:1;display:block}.countdown-label{text-transform:uppercase;letter-spacing:.15em;color:#fff9;margin-top:.4rem;font-size:.7rem;font-weight:400;display:block}.countdown-separator{font-family:var(--font-display);color:#ffffff4d;margin-top:-1rem;font-size:2.5rem}.scroll-indicator{color:#fff9;text-transform:uppercase;letter-spacing:.2em;transition:var(--transition);flex-direction:column;align-items:center;gap:.5rem;font-size:.7rem;animation:2s infinite bounce;display:flex;position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%)}.scroll-indicator:hover{color:var(--gold)}.section{padding:6rem 0;position:relative}.section-header{text-align:center;margin-bottom:4rem}.section-subtitle{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.3em;color:var(--gold);margin-bottom:.75rem;font-size:.85rem;font-weight:400}.section-title{font-family:var(--font-display);color:var(--navy);font-size:clamp(2.5rem,5vw,3.8rem);font-style:italic;font-weight:400;line-height:1.15}.section-lead{color:var(--gray-dark);margin-top:1rem;font-size:1rem}.history{background:var(--white)}.history .section-title{color:var(--navy)}.timeline{max-width:800px;margin:0 auto;padding:2rem 0;position:relative}.timeline:before{content:"";background:var(--gray);width:1px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.timeline-item{opacity:0;align-items:flex-start;margin-bottom:4rem;transition:opacity .8s,transform .8s;display:flex;position:relative;transform:translateY(30px)}.timeline-item.visible{opacity:1;transform:translateY(0)}.timeline-item:nth-child(odd){flex-direction:row;padding-right:50%}.timeline-item:nth-child(2n){flex-direction:row-reverse;padding-left:50%}.timeline-marker{background:var(--gold);border:3px solid var(--cream);z-index:2;width:16px;height:16px;box-shadow:0 0 0 3px var(--gold);border-radius:50%;position:absolute;top:.5rem;left:50%;transform:translate(-50%)}.timeline-content{background:var(--cream);border:1px solid var(--gray);transition:var(--transition);border-radius:12px;flex:1;padding:2rem}.timeline-content:hover{border-color:var(--gold);box-shadow:0 8px 30px #c9a96e1f}.timeline-year{font-family:var(--font-display);color:var(--gold);margin-bottom:.5rem;font-size:2.5rem;font-weight:700;line-height:1;display:block}.timeline-content h3{font-family:var(--font-display);color:var(--navy);margin-bottom:.75rem;font-size:1.5rem;font-weight:600}.timeline-content p{color:var(--gray-dark);font-size:.95rem;line-height:1.7}.event{background:var(--navy);color:var(--white)}.event .section-subtitle{color:var(--gold-light)}.event .section-title{color:var(--white)}.event-grid{grid-template-columns:repeat(2,1fr);gap:2rem;max-width:900px;margin:0 auto;display:grid}.event-card{text-align:center;transition:var(--transition);background:#ffffff0a;border:1px solid #c9a96e33;border-radius:16px;padding:3rem 2rem;position:relative;overflow:hidden}.event-card:before{content:"";opacity:0;transition:var(--transition);background:linear-gradient(135deg,#c9a96e0f 0%,#0000 60%);position:absolute;inset:0}.event-card:hover{border-color:var(--gold);transform:translateY(-8px);box-shadow:0 20px 50px #0000004d}.event-card:hover:before{opacity:1}.event-icon{width:56px;height:56px;color:var(--gold);margin:0 auto 1.5rem}.event-icon svg{width:100%;height:100%}.event-card h3{font-family:var(--font-display);margin-bottom:.5rem;font-size:1.8rem;font-weight:600}.event-time{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.2em;color:var(--gold);margin-bottom:.75rem;font-size:.85rem}.event-location{color:#ffffffbf;margin-bottom:1.5rem;font-size:.95rem;line-height:1.6}.event-link{text-transform:uppercase;letter-spacing:.15em;color:var(--gold);transition:var(--transition);border-bottom:1px solid #0000;align-items:center;gap:.5rem;padding-bottom:.25rem;font-size:.8rem;font-weight:700;display:inline-flex}.event-link:hover{border-bottom-color:var(--gold);color:var(--gold-light)}.gallery{background:var(--cream)}.upload-form{background:var(--white);border:1px solid var(--gray);border-radius:16px;max-width:700px;margin:0 auto 3.5rem;padding:2rem}.upload-row{gap:1rem;margin-bottom:1rem;display:flex}.upload-row:last-of-type{margin-bottom:0}.upload-row input[type=text]{min-width:0;font-family:var(--font-body);color:var(--navy);background:var(--cream);border:1px solid var(--gray);transition:var(--transition);border-radius:8px;flex:1;padding:.85rem 1rem;font-size:.95rem}.upload-row input[type=text]:focus{border-color:var(--gold);outline:none}.upload-row-file{align-items:center}.upload-file-label{color:var(--navy);background:var(--cream);border:1px solid var(--gray);cursor:pointer;white-space:nowrap;transition:var(--transition);border-radius:8px;align-items:center;gap:.5rem;padding:.85rem 1.25rem;font-size:.85rem;display:inline-flex}.upload-file-label:hover{border-color:var(--gold)}#uploadFile{clip:rect(0, 0, 0, 0);width:1px;height:1px;position:absolute;overflow:hidden}.upload-submit{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.15em;color:var(--white);background:var(--navy);cursor:pointer;transition:var(--transition);border:none;border-radius:8px;margin-left:auto;padding:.85rem 1.75rem;font-size:.8rem;font-weight:700}.upload-submit:hover{background:var(--gold-dark)}.upload-submit:disabled{opacity:.5;cursor:not-allowed}.upload-status{color:var(--gray-dark);min-height:1.2em;margin-top:1rem;font-size:.85rem}.gallery-grid{grid-template-columns:repeat(3,1fr);grid-auto-rows:280px;gap:1.5rem;display:grid}.gallery-empty{text-align:center;color:var(--gray-dark);grid-column:1/-1;padding:3rem 0;font-size:.95rem}.gallery-item{background:var(--navy-light);transition:var(--transition);border-radius:12px;margin:0;position:relative;overflow:hidden}.gallery-item img{object-fit:cover;width:100%;height:100%;transition:var(--transition)}.gallery-item:hover img{transform:scale(1.05)}.gallery-caption{color:var(--white);background:linear-gradient(#0000 0%,#0a1e3dd9 100%);padding:.75rem 1rem;font-size:.8rem;position:absolute;bottom:0;left:0;right:0}.itinerary{background:var(--white)}.itinerary-list{max-width:700px;margin:0 auto;padding-left:4rem;position:relative}.itinerary-list:before{content:"";background:linear-gradient(to bottom, var(--gold), var(--gold-light), var(--gold));border-radius:2px;width:2px;position:absolute;top:0;bottom:0;left:1.5rem}.itinerary-item{opacity:0;margin-bottom:3rem;padding-left:2rem;transition:opacity .8s,transform .8s;position:relative;transform:translate(-20px)}.itinerary-item.visible{opacity:1;transform:translate(0)}.itinerary-item:before{content:"";background:var(--gold);width:12px;height:12px;box-shadow:0 0 0 4px var(--cream), 0 0 0 5px var(--gold);border-radius:50%;position:absolute;top:.4rem;left:-3.55rem}.itinerary-time{font-family:var(--font-display);color:var(--gold);margin-bottom:.4rem;font-size:1.4rem;font-weight:700;display:block}.itinerary-content h3{font-family:var(--font-display);color:var(--navy);margin-bottom:.5rem;font-size:1.5rem;font-weight:600}.itinerary-content p{color:var(--gray-dark);font-size:.95rem;line-height:1.7}.rsvp{background:linear-gradient(135deg,#0a1e3df0 0%,#071330e6 100%),url(../images/rsvp-background.jpg) 50%/cover no-repeat}.rsvp .section-subtitle{color:var(--gold-light)}.rsvp .section-title{color:var(--white)}.rsvp-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;background:#ffffff0f;border:1px solid #c9a96e4d;border-radius:20px;max-width:600px;margin:0 auto;padding:3.5rem 2.5rem}.rsvp-icon{color:var(--gold);margin-bottom:1.5rem;font-size:2.5rem}.rsvp-text{color:#fffc;margin-bottom:2rem;font-size:1.05rem;line-height:1.6}.rsvp-button{background:var(--gold);color:var(--navy);font-family:var(--font-body);text-transform:uppercase;letter-spacing:.12em;transition:var(--transition);cursor:pointer;border:none;border-radius:50px;align-items:center;gap:.75rem;padding:1rem 2.5rem;font-size:.9rem;font-weight:700;display:inline-flex}.rsvp-button:hover{background:var(--gold-dark);color:var(--navy);transform:translateY(-3px);box-shadow:0 12px 30px #c9a96e40}.footer{background:var(--navy-dark);color:#ffffff80;text-align:center;padding:3rem 0}.footer-decoration{margin-bottom:1.25rem}.footer-symbol{color:var(--gold);font-size:1.4rem}.footer-names{font-family:var(--font-display);color:var(--white);margin-bottom:.5rem;font-size:1.8rem;font-style:italic;font-weight:600}.footer-hashtag{color:var(--gold);letter-spacing:.2em;text-transform:uppercase;margin-bottom:.5rem;font-size:.85rem}.footer-date{color:#fff6;font-size:.8rem}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translate(-50%)translateY(0)}40%{transform:translate(-50%)translateY(-10px)}60%{transform:translate(-50%)translateY(-5px)}}@media (width<=1024px){.gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:240px}.gallery-item:nth-child(4){grid-row:span 1}}@media (width<=768px){.nav-list{background:var(--navy-dark);flex-direction:column;gap:1.5rem;width:80%;max-width:320px;height:100vh;padding:6rem 2rem 3rem;transition:right .4s;position:fixed;top:0;right:-100%;box-shadow:-5px 0 25px #0006}.nav-list.mobile-open{right:0}.mobile-toggle{display:flex}.nav-list a{font-size:.95rem}.nav-rsvp{margin-top:.5rem;display:inline-block}.hero-countdown{flex-wrap:wrap;gap:.5rem}.countdown-item{min-width:55px}.countdown-separator{margin-top:-.5rem;font-size:1.5rem}.event-grid{grid-template-columns:1fr;gap:1.5rem}.section{padding:4rem 0}.section-header{margin-bottom:2.5rem}.gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:200px;gap:1rem}.timeline:before{left:1.5rem}.timeline-item:nth-child(odd),.timeline-item:nth-child(2n){flex-direction:row;padding-left:4rem;padding-right:0}.timeline-marker{left:1.5rem}.itinerary-list{padding-left:3rem}.rsvp-card{padding:2.5rem 1.5rem}}@media (width<=480px){.hero-names{font-size:3rem}.name-amp{font-size:1.8rem}.hero-date{letter-spacing:.15em;font-size:.9rem}.hero-countdown{gap:.4rem}.countdown-item{min-width:50px}.countdown-separator{margin-top:-.3rem;font-size:1.2rem}.gallery-grid{grid-template-columns:1fr;grid-auto-rows:220px}.container{padding:0 1.25rem}.section{padding:3rem 0}}
