:root {
  --wine:#5f2e2f;
  --wine-deep:#3f1f20;
  --rose:#8c5f59;
  --gold:#b99255;
  --gold-light:#d8c19a;
  --cream:#fbf7f0;
  --paper:#fffdf9;
  --ink:#332c29;
  --muted:#786d66;
  --line:rgba(185,146,85,.3);
  --shadow:0 24px 70px rgba(64,38,30,.12);
  --script:'Alex Brush', cursive;
  --serif:'Cormorant Garamond', Georgia, serif;
  --sans:'Montserrat', Arial, sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:74px}
body{background:var(--cream);color:var(--ink);font-family:var(--sans);line-height:1.7;overflow-x:hidden}
button,input,select,textarea{font:inherit}
button{color:inherit}.full-bleed{max-width:none!important;width:100%}.section{position:relative;z-index:2;max-width:1160px;margin:auto;padding:105px 28px;text-align:center}.narrow{max-width:900px!important}.section-intro{max-width:700px;margin:0 auto;color:var(--muted)}
.bg-animation{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}.particle{position:absolute;bottom:-30px;width:6px;height:6px;border-radius:50%;background:rgba(185,146,85,.18);animation:floatUp linear infinite}.heart-particle{position:absolute;bottom:-30px;color:rgba(95,46,47,.10);animation:floatUp linear infinite}@keyframes floatUp{from{transform:translateY(0) rotate(0);opacity:0}15%{opacity:1}to{transform:translateY(-115vh) rotate(360deg);opacity:0}}
.site-header{position:fixed;left:0;right:0;top:0;height:74px;padding:0 4vw;display:flex;align-items:center;justify-content:space-between;background:rgba(255,253,249,.87);backdrop-filter:blur(18px);border-bottom:1px solid rgba(185,146,85,.15);z-index:1000}.mini-logo{font-family:var(--serif);font-size:1.55rem;letter-spacing:.12em;color:var(--wine);text-decoration:none}.mini-logo span{font-family:var(--script);color:var(--gold);font-size:1.25em}.site-header nav{display:flex;gap:32px}.site-header nav a{text-decoration:none;color:var(--ink);font-size:.72rem;text-transform:uppercase;letter-spacing:.18em;font-weight:600;position:relative}.site-header nav a:after{content:"";position:absolute;left:0;bottom:-8px;width:0;height:1px;background:var(--gold);transition:.25s}.site-header nav a:hover:after{width:100%}.menu-toggle{display:none;border:0;background:none;font-size:1.5rem;cursor:pointer}
.hero{min-height:100vh;position:relative;display:grid;place-items:center;padding:120px 24px 60px;isolation:isolate;overflow:hidden}.hero-photo{position:absolute;inset:0;background:url('images/bride1.jpg') center 28%/cover no-repeat;z-index:-3;transform:scale(1.015)}.hero-shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(28,14,13,.77),rgba(48,25,23,.48) 45%,rgba(28,14,13,.68)),linear-gradient(0deg,rgba(18,8,8,.62),rgba(255,255,255,.02) 55%,rgba(15,7,7,.32))}.hero:after{content:"";position:absolute;inset:18px;border:1px solid rgba(255,239,204,.38);z-index:-1;pointer-events:none}.hero-content{max-width:1000px;width:100%;text-align:center;color:white;text-shadow:0 3px 25px rgba(0,0,0,.25)}.eyebrow{font-size:.69rem;letter-spacing:.32em;text-transform:uppercase;color:var(--gold);font-weight:600;margin-bottom:10px}.eyebrow.light{color:#f0d9b5}.script-header{font-family:var(--script);font-size:clamp(3.4rem,7vw,5.7rem);color:#f2d7a8;line-height:1;margin-bottom:-5px}.hero h1{font-family:var(--serif);font-size:clamp(4rem,10vw,7.7rem);font-weight:400;letter-spacing:.01em;line-height:.94}.ampersand{font-family:var(--script);font-weight:400;color:#f1d29c;font-size:.72em}.hero-copy{font-family:var(--serif);font-size:clamp(1.15rem,2vw,1.48rem);font-style:italic;max-width:640px;margin:24px auto;color:#fff8ee}.date-badge{display:inline-block;margin:14px 0 34px;padding:13px 25px;border-top:1px solid rgba(242,215,168,.65);border-bottom:1px solid rgba(242,215,168,.65);font-size:.78rem;text-transform:uppercase;letter-spacing:.28em}.hero-actions{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}.btn{border:1px solid transparent;border-radius:999px;padding:14px 26px;text-decoration:none;text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;font-weight:600;cursor:pointer;transition:.25s;display:inline-flex;align-items:center;justify-content:center;min-height:50px}.btn:hover{transform:translateY(-2px)}.btn-gold{background:var(--gold);color:white;box-shadow:0 10px 24px rgba(34,18,14,.20)}.btn-gold:hover{background:#a98247}.btn-outline{border-color:rgba(255,255,255,.65);color:white;background:rgba(255,255,255,.07)}.btn-outline:hover{background:white;color:var(--wine)}.btn-soft{background:#f2ece4;color:var(--wine)}.btn-whatsapp{background:#1fa855;color:white}.scroll-cue{display:block;width:36px;height:36px;margin:42px auto 0;border:1px solid rgba(255,255,255,.45);border-radius:50%;color:white;text-decoration:none;font-size:1.4rem;animation:bob 1.8s infinite}@keyframes bob{50%{transform:translateY(7px)}}
.section-title{font-family:var(--serif);font-weight:500;font-size:clamp(2.7rem,5vw,4.3rem);color:var(--wine);line-height:1.05}.ornament{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--gold);margin:20px auto 28px;width:180px}.ornament:before,.ornament:after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,var(--gold))}.ornament:after{background:linear-gradient(90deg,var(--gold),transparent)}.ornament.left{margin-left:0}.details-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px;margin-top:48px}.event-card{background:rgba(255,255,255,.78);padding:48px 38px;border:1px solid var(--line);box-shadow:var(--shadow);position:relative;overflow:hidden}.event-card:before{content:"";position:absolute;inset:9px;border:1px solid rgba(185,146,85,.18);pointer-events:none}.event-card h3{font-family:var(--serif);font-size:2.4rem;font-weight:500;color:var(--wine)}.card-icon{font-size:2rem;color:var(--gold);margin-bottom:8px}.card-kicker{font-size:.65rem;text-transform:uppercase;letter-spacing:.3em;color:var(--muted)}.event-time{font-family:var(--serif);font-style:italic;font-size:1.25rem;color:var(--gold)!important;margin:8px 0}.fine-line{width:50px;height:1px;background:var(--gold-light);margin:18px auto}.event-card p{color:var(--muted)}.location-label{font-size:.78rem;margin-top:14px;text-transform:uppercase;letter-spacing:.08em;color:var(--wine)!important}
.dress-section{background:linear-gradient(rgba(63,31,32,.96),rgba(63,31,32,.96)),url('images/bride4.jpg') center/cover fixed}.dress-section .section-title{color:white}.dress-section .section-intro,.dress-note{color:#e9ddd6}.dress-section .eyebrow{color:#d7bc8b}.palette{display:flex;justify-content:center;gap:28px;flex-wrap:wrap;margin:38px 0 30px}.swatch{display:grid;gap:9px;justify-items:center;color:#eee1db}.swatch span{width:58px;height:58px;border-radius:50%;display:block;background:var(--swatch);border:2px solid rgba(255,255,255,.65);box-shadow:0 5px 20px rgba(0,0,0,.2)}.swatch small{text-transform:uppercase;letter-spacing:.12em;font-size:.64rem}.dress-note strong{color:white}
.gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:240px;gap:12px;margin-top:45px}.gallery-item{position:relative;overflow:hidden;border:0;padding:0;background:#ddd;cursor:pointer}.gallery-item.tall{grid-row:span 2}.gallery-item.wide{grid-column:span 2}.gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .65s ease,filter .4s}.gallery-item span{position:absolute;inset:auto 0 0;padding:20px;color:white;background:linear-gradient(transparent,rgba(23,12,10,.72));transform:translateY(100%);transition:.3s;text-transform:uppercase;letter-spacing:.15em;font-size:.63rem}.gallery-item:hover img{transform:scale(1.06);filter:saturate(.9)}.gallery-item:hover span{transform:none}.modal{display:flex;position:fixed;inset:0;background:rgba(17,10,9,.93);z-index:3000;align-items:center;justify-content:center;padding:30px;opacity:0;visibility:hidden;transition:.25s}.modal.open{opacity:1;visibility:visible}.modal img{max-width:min(92vw,1100px);max-height:88vh;object-fit:contain;box-shadow:0 20px 70px rgba(0,0,0,.45)}.modal-close,.modal-nav{position:absolute;border:0;background:rgba(255,255,255,.09);color:white;cursor:pointer;border-radius:50%;display:grid;place-items:center}.modal-close{right:24px;top:22px;width:44px;height:44px;font-size:1.8rem}.modal-nav{top:50%;width:48px;height:48px;font-size:2.1rem}.modal-prev{left:20px}.modal-next{right:20px}
.rsvp-section{background:linear-gradient(135deg,#f4ece4,#fffaf4)}.rsvp-layout{display:grid;grid-template-columns:.82fr 1.18fr;gap:70px;text-align:left;align-items:center}.rsvp-copy .section-title{text-align:left}.rsvp-copy>p:not(.eyebrow){color:var(--muted);margin-bottom:28px}.rsvp-feature{display:flex;align-items:center;gap:16px;margin:16px 0}.rsvp-feature span{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--gold-light);color:var(--gold);font-family:var(--serif)}.rsvp-feature p{font-size:.88rem;color:var(--ink)}.rsvp-container{background:var(--paper);border:1px solid var(--line);padding:38px;box-shadow:var(--shadow)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-group{margin-bottom:18px}.form-group label,.form-group legend{display:block;border:0;font-size:.66rem;text-transform:uppercase;letter-spacing:.13em;font-weight:600;margin-bottom:8px;color:#504541}.form-group input,.form-group select,.form-group textarea{width:100%;border:1px solid #dfd5ca;background:white;padding:13px 14px;border-radius:3px;outline:0;color:var(--ink);transition:.2s}.form-group textarea{resize:vertical;min-height:108px}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(185,146,85,.08)}.radio-group{display:grid;grid-template-columns:1fr 1fr;gap:10px}.radio-card{border:1px solid #dfd5ca;padding:13px!important;display:flex!important;gap:10px;align-items:flex-start;text-transform:none!important;letter-spacing:0!important;cursor:pointer;background:white}.radio-card:has(input:checked){border-color:var(--gold);background:#fffaf1}.radio-card input{width:auto;margin-top:4px}.radio-card span{display:grid}.radio-card b{font-size:.78rem;color:var(--ink);font-weight:600}.radio-card small{font-size:.66rem;color:var(--muted);font-weight:400}.consent{display:flex;align-items:flex-start;gap:10px;font-size:.72rem;color:var(--muted);line-height:1.5;margin:8px 0 18px}.consent input{margin-top:3px}.submit-btn{width:100%}.form-error{color:#a12929;font-size:.75rem;min-height:1.2em;margin-bottom:8px}.is-hidden{display:none!important}
.invitation-result{padding-top:100px}.invitation-stage{max-width:560px;margin:40px auto 26px;background:white;padding:12px;box-shadow:0 25px 70px rgba(63,31,32,.18)}#invitationCanvas{width:100%;height:auto;display:block;background:#f8f0e5}.result-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.result-note{max-width:720px;margin:20px auto 0;color:var(--muted);font-size:.78rem}
footer{position:relative;z-index:2;text-align:center;background:var(--wine-deep);color:#dbcdbf;padding:55px 20px}.script-logo{font-family:var(--script);color:#e6c893;font-size:3rem;line-height:1}.footer-note{font-size:.7rem;margin-top:12px;letter-spacing:.08em}
.reveal{opacity:0;transform:translateY(28px);transition:opacity .75s ease,transform .75s ease}.reveal.visible{opacity:1;transform:none}
@media(max-width:900px){.gallery-grid{grid-template-columns:repeat(3,1fr)}.rsvp-layout{grid-template-columns:1fr;gap:40px}.rsvp-copy{text-align:center}.rsvp-copy .section-title{text-align:center}.ornament.left{margin-left:auto}.rsvp-feature{justify-content:center}}
@media(max-width:700px){.section{padding:78px 20px}.site-header{height:66px}.menu-toggle{display:block}.site-header nav{position:absolute;top:66px;left:0;right:0;background:rgba(255,253,249,.98);display:grid;gap:0;max-height:0;overflow:hidden;transition:.3s}.site-header nav.open{max-height:280px;border-bottom:1px solid var(--line)}.site-header nav a{padding:16px 22px;text-align:center}.details-grid{grid-template-columns:1fr}.gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:180px}.gallery-item.wide{grid-column:span 2}.form-row,.radio-group{grid-template-columns:1fr}.hero:after{inset:10px}.hero h1{font-size:clamp(3.6rem,18vw,5.8rem)}.hero-copy{font-size:1.08rem}.date-badge{font-size:.63rem;letter-spacing:.16em}.rsvp-container{padding:26px 20px}.modal-nav{top:auto;bottom:18px}.modal-prev{left:calc(50% - 58px)}.modal-next{right:calc(50% - 58px)}}
@media(max-width:420px){.gallery-grid{grid-auto-rows:155px;gap:7px}.palette{gap:17px}.swatch span{width:48px;height:48px}.hero-actions .btn{width:100%;max-width:270px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

/* Hero heading alignment */
.hero-content .eyebrow,.hero-content .script-header,.hero-content h1,.hero-content .hero-copy{text-align:center;margin-left:auto;margin-right:auto;}

/* Elegant couple heading with personal names */
.hero .couple-names{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;
  justify-content:center;
  column-gap:clamp(.18em,2vw,.42em);
  width:min(920px,100%);
  margin:0 auto;
  text-align:center;
}
.hero .name-block{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;}
.hero .display-name{display:block;font-family:var(--serif);font-size:clamp(4.2rem,9vw,7.5rem);font-weight:400;line-height:.82;letter-spacing:-.025em;color:#fff;}
.hero .personal-name{display:block;margin-top:.42rem;font-family:var(--sans);font-size:clamp(.72rem,1.35vw,1.02rem);font-weight:600;font-style:italic;letter-spacing:.03em;color:#f2d7a8;text-shadow:0 2px 14px rgba(0,0,0,.38);}
.hero .couple-names .ampersand{display:block;align-self:center;font-family:var(--script);font-size:clamp(3rem,6vw,5.2rem);font-weight:400;line-height:1;color:#f1d29c;transform:translateY(-.05em);}
@media(max-width:700px){
  .hero .couple-names{column-gap:.12em;width:100%;}
  .hero .display-name{font-size:clamp(2.85rem,14vw,4.65rem);}
  .hero .personal-name{font-size:clamp(.58rem,2.8vw,.78rem);margin-top:.35rem;}
  .hero .couple-names .ampersand{font-size:clamp(2.2rem,9vw,3.3rem);}
}


/* Wedding background music control */
.music-toggle{position:fixed;right:18px;bottom:18px;z-index:2500;display:flex;align-items:center;gap:8px;border:1px solid rgba(212,175,55,.55);border-radius:999px;padding:10px 14px;background:rgba(63,31,32,.88);color:#fff8ee;box-shadow:0 10px 30px rgba(20,10,8,.25);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:pointer;font-family:var(--sans);font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;transition:.25s}
.music-toggle:hover{transform:translateY(-2px);background:rgba(63,31,32,.96)}
.music-toggle.playing .music-icon{animation:musicPulse 1.2s ease-in-out infinite}
.music-icon{font-size:1.05rem;color:#e6c893}.music-label{line-height:1}
@keyframes musicPulse{50%{transform:scale(1.18)}}
@media(max-width:700px){.music-toggle{right:12px;bottom:12px;padding:9px 12px}.music-label{display:none}}
