:root{
  --primary:#A4B8C4; /* Dusty Blue */
  --secondary:#F5F5DC; /* Cream */
  --accent:#D4AF37; /* Gold */
  --text:#333333; /* Charcoal */
  --bg:#FFFFFF;
  --muted:#6b7785;
  --paper:#f8f7f3;
  --shadow:0 8px 30px rgba(0,0,0,.08);
  --radius:14px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth; scroll-padding-top:84px}
@media (max-width: 768px){ html{scroll-padding-top:70px} }
body{
  margin:0; color:var(--text); background:var(--bg);
  font-family:"Montserrat",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  line-height:1.6;
}

/* Containers */
.container{width:min(1100px, 92%); margin-inline:auto}

/* Header */
.site-header{
  position:sticky; top:0; z-index:1000;
  background:rgba(255,255,255,.9); backdrop-filter:saturate(180%) blur(10px);
  border-bottom:1px solid rgba(0,0,0,.06);
}
.header-inner{display:flex; align-items:center; justify-content:space-between; height:84px}
.brand{display:flex; align-items:center; gap:.8rem; text-decoration:none; color:inherit}
.monogram{display:inline-block; width:44px; height:44px}
.brand-text{font-family:"Playfair Display",serif; font-weight:700; letter-spacing:.5px; font-size:1.1rem}
.nav-toggle{display:none; border:none; background:transparent; font-size:1.6rem; color:var(--text); padding:.5rem .6rem; border-radius:10px}
.nav ul{list-style:none; padding:0; margin:0; display:flex; gap:1rem}
.nav a{
  text-decoration:none; color:var(--text);
  padding:.6rem .8rem; border-radius:999px; font-weight:500;
}
.nav a:hover{background:rgba(164,184,196,.15)}
.nav a.active{color:#1b2a3a; background:rgba(212,175,55,.14); border:1px solid rgba(212,175,55,.35)}

/* Mobile Nav */
@media (max-width: 960px){
  .nav-toggle{display:inline-flex}
  .nav{position:absolute; left:0; right:0; top:84px; background:#fff; display:none; border-bottom:1px solid rgba(0,0,0,.06)}
  .nav.open{display:block}
  .nav ul{flex-direction:column; gap:0}
  .nav a{display:block; border-radius:0; border-bottom:1px solid rgba(0,0,0,.04)}
  .header-inner{height:70px}
  .monogram{width:40px;height:40px}
}

/* Hero */
.hero{position:relative; min-height:100svh; display:grid; place-items:center; text-align:center; color:#1f2a33}
.hero-bg{position:absolute; inset:0; background-image:url("../assets/images/background.png"); background-size:cover; background-position:center; filter:none}
.hero-overlay{
  position:absolute; inset:0; content:"";
  background:linear-gradient(to bottom, rgba(255,255,255,.88), rgba(255,255,255,.92));
}
.hero-bg::after{
  content:""; position:absolute; inset:0;
  background-image:url("../assets/images/pattern-overlay.png");
  opacity:.06; mix-blend-mode:multiply; background-size:300px; pointer-events:none;
}
.hero-inner{position:relative; padding:7rem 0 6rem; width:min(1000px, 92%)}
.hero-badge{
  position:absolute; top:22px; right:22px; background:var(--bg); color:#2c3946;
  border:1px solid rgba(212,175,55,.6); border-radius:999px; padding:.4rem .9rem;
  font-size:.8rem; text-transform:uppercase; letter-spacing:.12em; font-weight:600;
}
.hero-monogram{width:64px; height:64px; margin-inline:auto; opacity:.95}
.couple-name{
  font-family:"Playfair Display", serif;
  font-weight:700; font-size:clamp(2.6rem, 6vw, 4.6rem); letter-spacing:.5px; margin:.6rem 0 .4rem;
}
.invitation-subtitle{color:var(--muted); margin:0 auto 1.1rem; max-width:52ch}
.hero-meta{display:flex; gap:1rem; align-items:center; justify-content:center; flex-wrap:wrap; color:#2c3b49; font-weight:500}
.hero-meta i{color:var(--accent); margin-right:.35rem}

/* Countdown - one line on mobile */
.countdown{
  margin:1.2rem auto 1.5rem; display:flex; gap:.6rem; justify-content:center; align-items:center; white-space:nowrap;
}
.cd-item{
  background:rgba(164,184,196,.1); border:1px solid rgba(164,184,196,.5);
  border-radius:12px; padding:.6rem .8rem; min-width:72px;
}
.cd-item .num{display:block; font-weight:700; font-size:1.2rem; color:#1c2d3b}
.cd-item .lbl{display:block; font-size:.72rem; color:#4a5a66}
@media (max-width:520px){
  .cd-item{padding:.5rem .6rem; min-width:auto}
  .cd-item .num{font-size:1.05rem}
  .cd-item .lbl{font-size:.68rem}
}

.godparents{display:flex; gap:.5rem; align-items:center; justify-content:center; color:#2a3a45; font-weight:500}
.godparents i{color:var(--accent)}

.scroll-indicator{
  position:absolute; bottom:24px; left:50%; translate:-50% 0;
  color:#1c2d3b; opacity:.7; text-decoration:none; font-size:1.5rem; display:inline-flex; align-items:center; justify-content:center;
  width:40px; height:40px; border-radius:999px; border:1px solid rgba(28,45,59,.2); background:rgba(255,255,255,.7)
}
.scroll-indicator:hover{opacity:1}

/* Sections */
.section{padding:80px 0}
.section-soft{background:linear-gradient(180deg, #ffffff, #f7fafc)}
.section-paper{background:var(--paper); position:relative}
.section-paper::before{
  content:""; position:absolute; inset:0; background-image:url("../assets/images/texture-paper.png");
  opacity:.2; pointer-events:none; mix-blend-mode:multiply;
}
.section-head{text-align:center; margin-bottom:32px}
.section-head h2{
  font-family:"Playfair Display", serif; font-size:clamp(1.6rem,3.6vw,2.2rem); margin:.2rem 0 .6rem; letter-spacing:.5px
}
.section-sub{color:var(--muted); max-width:62ch; margin:.25rem auto 0}
.divider{
  width:140px; height:10px; margin:10px auto 0; position:relative
}
.divider::before, .divider::after{
  content:""; position:absolute; top:50%; width:44%; height:1px; background:linear-gradient(90deg, transparent, var(--accent));
}
.divider::after{right:0; transform:translateY(-50%) scaleX(-1)}
.divider::before{left:0; transform:translateY(-50%)}
.divider::after, .divider::before{opacity:.7}

/* Story */
.story-grid{display:grid; grid-template-columns: 1.05fr .95fr; gap:40px; align-items:center}
.story-media img{width:100%; height:100%; object-fit:cover; border-radius:var(--radius); box-shadow:var(--shadow)}
.story-content p{margin-top:0}
.timeline{list-style:none; margin:22px 0 0; padding:0; display:grid; gap:16px}
.timeline li{display:grid; grid-template-columns: 90px 1fr; gap:16px; align-items:flex-start}
.t-year{
  display:inline-flex; align-items:center; justify-content:center;
  background:var(--secondary); color:#1f2b36; border:1px solid rgba(212,175,55,.35);
  width:90px; height:36px; border-radius:999px; font-weight:600
}
.t-body h4{margin:.2rem 0 .2rem; font-size:1.05rem}
.t-body p{margin:0; color:#506272}
@media (max-width: 960px){
  .story-grid{grid-template-columns:1fr; gap:22px}
  .timeline{gap:14px}
}

/* Couple */
.couple-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:24px}
.person-card{background:#fff; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); transition:transform .35s ease, box-shadow .35s ease}
.person-card:hover{transform:translateY(-4px); box-shadow:0 12px 34px rgba(0,0,0,.12)}
.person-media{height:320px; overflow:hidden}
.person-media img{width:100%; height:100%; object-fit:cover; transition:transform .6s ease}
.person-card:hover .person-media img{transform:scale(1.04)}
.person-body{padding:18px 18px 20px}
.person-body h3{
  font-family:"Playfair Display", serif; margin:.2rem 0 .3rem; letter-spacing:.2px
}
.person-body p{color:#4a5e6f; margin:0}
@media (max-width: 760px){
  .couple-grid{grid-template-columns:1fr}
  .person-media{height:280px}
}

/* Events */
.events-grid{
  display:grid; grid-template-columns: repeat(3, minmax(240px,1fr)); gap:22px; align-items:stretch
}
.event-card{background:#fff; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); display:flex; flex-direction:column}
.event-media{height:180px; overflow:hidden}
.event-media img{width:100%; height:100%; object-fit:cover; display:block}
.event-body{padding:16px 16px 18px; display:flex; flex-direction:column; gap:10px}
.event-body h3{
  font-family:"Playfair Display", serif; margin:.2rem 0; display:flex; align-items:center; gap:.5rem; color:#1b2a3a
}
.event-meta{list-style:none; padding:0; margin:0; display:grid; gap:6px; color:#4c5d6c}
.event-meta i{color:var(--accent); margin-right:.4rem}
.event-meta .address{color:#76879a; font-size:.92rem}
.btn{
  --btn-bg: linear-gradient(180deg, #ffffff, #f5f7fa);
  display:inline-flex; align-items:center; gap:.45rem; align-self:flex-start;
  padding:.6rem .9rem; border-radius:10px; text-decoration:none; color:#1b2a3a;
  border:1px solid rgba(164,184,196,.8); background:var(--btn-bg); transition:transform .2s ease, box-shadow .2s ease, background .2s ease
}
.btn:hover{transform:translateY(-2px); box-shadow:0 10px 20px rgba(0,0,0,.08)}
.btn-primary{
  --btn-bg: linear-gradient(180deg, #e7edf2, #cbd8e1);
  border-color:rgba(164,184,196,.95)
}
@media (max-width: 980px){ .events-grid{grid-template-columns: repeat(2, minmax(220px,1fr))} }
@media (max-width: 640px){ .events-grid{grid-template-columns: 1fr} }

/* RSVP */
.rsvp-form{background:#fff; border:1px solid rgba(164,184,196,.35); border-radius:16px; padding:18px; box-shadow:var(--shadow)}
.form-grid{display:grid; grid-template-columns: repeat(2, 1fr); gap:16px}
.form-control{display:flex; flex-direction:column; gap:8px}
.form-control.span-2{grid-column:1 / -1}
.form-control label, .form-control .label{font-weight:600; color:#1c2e3a; font-size:.95rem}
.form-control input, .form-control textarea{
  border:1px solid rgba(164,184,196,.7); border-radius:10px; padding:.7rem .8rem; font:inherit; color:inherit;
  background:#fff; outline:none; transition:border-color .2s ease, box-shadow .2s ease
}
.form-control input:focus, .form-control textarea:focus{
  border-color:var(--accent); box-shadow:0 0 0 3px rgba(212,175,55,.18)
}
.form-control-inline{align-items:center; gap:12px; flex-wrap:wrap}
.radio{display:inline-flex; align-items:center; gap:.45rem; padding:.4rem .6rem; border:1px solid rgba(164,184,196,.7); border-radius:999px; cursor:pointer; user-select:none}
.radio input{accent-color:#1b2a3a}
.form-actions{display:flex; align-items:center; gap:12px; margin-top:8px}
.form-status{min-height:24px; font-weight:600}
@media (max-width: 720px){ .form-grid{grid-template-columns:1fr} }

/* Gallery */
.gallery-grid{
  display:grid; grid-template-columns: repeat(3, 1fr); gap:14px
}
.gallery-item{border-radius:14px; overflow:hidden; box-shadow:var(--shadow); background:#fff}
.gallery-item img{width:100%; height:100%; object-fit:cover; display:block; aspect-ratio: 1 / 1}
@media (max-width: 900px){ .gallery-grid{grid-template-columns: repeat(2, 1fr)} }
@media (max-width: 560px){ .gallery-grid{grid-template-columns: 1fr} }

/* Lightbox */
.lightbox{
  position:fixed; inset:0; background:rgba(11,15,20,.8);
  display:none; align-items:center; justify-content:center; z-index:1500; padding:20px
}
.lightbox.open{display:flex}
.lightbox img{max-width:min(100%, 980px); max-height:80svh; border-radius:12px; box-shadow:0 12px 40px rgba(0,0,0,.5)}
.lightbox-close{
  position:absolute; top:16px; right:16px; width:40px; height:40px; border-radius:999px;
  display:inline-flex; align-items:center; justify-content:center; border:1px solid rgba(255,255,255,.4);
  color:#fff; background:transparent; cursor:pointer
}
.lightbox-close:hover{background:rgba(255,255,255,.1)}

/* Registry */
.registry-list{display:grid; grid-template-columns: repeat(3, 1fr); gap:16px}
.registry-item{
  background:#fff; border:1px solid rgba(164,184,196,.45); border-radius:14px;
  padding:14px; display:flex; align-items:center; gap:12px; text-decoration:none; color:inherit; transition:transform .25s ease, box-shadow .25s ease
}
.registry-item:hover{transform:translateY(-3px); box-shadow:var(--shadow)}
.registry-item i{font-size:1.4rem; color:var(--accent)}
.reg-body h4{margin:.2rem 0 .2rem; font-family:"Playfair Display", serif}
.reg-body p{margin:0; color:#5c6f7f}
.reg-cta{margin-left:auto; color:#2b3a47}
@media (max-width: 900px){ .registry-list{grid-template-columns: repeat(2, 1fr)} }
@media (max-width: 560px){ .registry-list{grid-template-columns: 1fr} }

/* Footer */
.site-footer{background:#0f1b24; color:#eaf0f4; position:relative; overflow:hidden}
.site-footer::before{
  content:""; position:absolute; inset:auto auto -180px -120px; width:520px; height:520px; border-radius:50%;
  background:radial-gradient(ellipse at center, rgba(164,184,196,.25), transparent 60%);
}
.footer-inner{display:grid; grid-template-columns: 1.1fr .9fr .9fr; gap:20px; padding:36px 0}
.footer-brand{font-family:"Playfair Display", serif; margin:.2rem 0 .4rem; color:#fff}
.footer-links{list-style:none; margin:0; padding:0; display:grid; gap:6px}
.footer-links a{color:#dbe6ee; text-decoration:none}
.footer-links a:hover{text-decoration:underline}
.socials{display:flex; gap:10px; margin-bottom:10px}
.socials a{color:#fff; width:36px; height:36px; border:1px solid rgba(255,255,255,.2); display:inline-flex; align-items:center; justify-content:center; border-radius:999px; text-decoration:none}
.socials a:hover{background:rgba(255,255,255,.08)}
.to-top{display:inline-flex; align-items:center; gap:.4rem; color:#fff; text-decoration:none; opacity:.9}
.to-top:hover{opacity:1}
.footer-bottom{border-top:1px solid rgba(255,255,255,.12); padding:10px 0; text-align:center; color:#cdd8e1}
.thanks i{color:#ff6b6b}
@media (max-width: 860px){ .footer-inner{grid-template-columns: 1fr 1fr} }
@media (max-width: 560px){ .footer-inner{grid-template-columns: 1fr} }

/* Animations */
[data-animate]{opacity:0; transform:translateY(12px); transition:opacity .6s ease, transform .6s ease}
[data-animate].reveal-in{opacity:1; transform:none}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  *{animation:none !important; transition:none !important}
}

/* Utility */
.hidden{display:none !important}

/* Accessibility focus */
a, button, input, textarea{outline-color:rgba(212,175,55,.8); outline-offset:2px}

/* Fine polish */
.event-card .btn{margin-top:2px}
.section .btn-primary i{color:#1c2d3b}

/* Active nav underline subtle */
.nav a.active{box-shadow:inset 0 -2px 0 rgba(212,175,55,.7)}

/* Print tweaks */
@media print{
  .site-header, .scroll-indicator, .lightbox, .nav, .btn, .rsvp-form button{display:none !important}
  .section{padding:30px 0}
}