@import url('https://fonts.googleapis.com/css2?family=Dancing+Script:wght@500;600;700&family=Jost:wght@300;400;500&family=EB+Garamond:ital,wght@0,400;0,500;1,400&display=swap');

:root{
  --cream:#f1ead7; --cream-soft:#f8f2e2; --paper:#fbf6ea;
  --ink:#3f568c;          /* deep dusty blue — body text */
  --blue:#5f7fb4;         /* brand dusty blue — frames, headings, accents */
  --blue-soft:#92a2c6;    /* muted — labels, captions */
  --shadow:0 14px 40px rgba(63,86,140,.16);
  --script:'Dancing Script',cursive;
  --label:'Jost',sans-serif;
  --body:'EB Garamond',Georgia,serif;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{font-family:var(--body);color:var(--ink);background:var(--cream);line-height:1.7;font-size:18px;}
img{display:block;}
a{color:var(--blue);}

/* ---------- NAV ---------- */
nav{position:sticky;top:0;z-index:50;background:rgba(241,234,215,.94);backdrop-filter:blur(8px);
  border-bottom:1.5px solid var(--blue);display:flex;justify-content:center;gap:30px;flex-wrap:wrap;
  padding:15px 20px;font-family:var(--label);font-weight:300;font-size:12px;
  text-transform:uppercase;letter-spacing:2.5px;}
nav a{color:var(--blue);text-decoration:none;opacity:.7;transition:opacity .2s;}
nav a:hover,nav a.active{opacity:1;}
nav a.active{font-weight:500;}

/* ---------- HERO / BANNER (drawn frame) ---------- */
.hero{background:var(--cream);color:var(--blue);padding:42px 22px;}
.frame{position:relative;max-width:860px;margin:0 auto;padding:48px 28px 42px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;}
.frame.tall{min-height:78vh;}
.frame.short{min-height:46vh;}
.frame > svg.border{position:absolute;inset:0;width:100%;height:100%;color:var(--blue);
  pointer-events:none;overflow:visible;}
.frame .content{position:relative;z-index:2;width:100%;max-width:640px;}

.ill{color:var(--blue);display:block;}
.ill.cathedral{width:128px;height:auto;margin:0 auto 14px;}
.pre{font-family:var(--label);font-weight:300;font-size:12px;letter-spacing:4px;
  text-transform:uppercase;color:var(--blue-soft);margin-bottom:14px;}
.names{font-family:var(--script);font-weight:700;color:var(--blue);line-height:.95;}
.names .one{font-size:clamp(56px,11vw,92px);display:block;}
.frame.short .names .one{font-size:clamp(40px,7.5vw,62px);}
.names .and{font-family:var(--label);font-weight:300;font-size:13px;letter-spacing:4px;
  text-transform:uppercase;color:var(--blue-soft);margin:6px 0;}
.names .boxed{display:inline-block;border:1.6px solid var(--blue);padding:0 30px;margin-top:6px;}
.hero .meta{margin-top:26px;font-family:var(--label);font-weight:300;}
.hero .meta .date{font-size:14px;letter-spacing:3px;text-transform:uppercase;color:var(--blue);}
.hero .meta .cer{font-size:12px;letter-spacing:2px;text-transform:uppercase;color:var(--blue-soft);margin-top:8px;}
.hero .meta .loc{font-family:var(--body);font-style:italic;font-size:24px;color:var(--blue-soft);margin-top:10px;}
.hero .banner-text{font-family:var(--body);font-size:18px;color:var(--ink);max-width:600px;margin:18px auto 0;}
.scene{display:flex;align-items:flex-end;justify-content:center;gap:36px;margin-top:8px;color:var(--blue);}
.scene img{width:250px;height:auto;display:block;}
.section-icon{display:block;height:96px;width:auto;margin:2px auto 10px;}

/* Home hero — fit the invitation to one full screen */
.hero.hero-home{min-height:calc(100vh - 56px);display:flex;align-items:center;justify-content:center;padding:14px 20px;}
.hero-home .frame.tall{min-height:calc(100vh - 96px);width:100%;max-width:700px;padding:58px 30px 30px;
  justify-content:center;}
.hero-home .pre{margin-bottom:10px;}
.hero-home .names .one{font-size:clamp(36px,6.5vw,54px);}
.hero-home .names .and{margin:2px 0;}
.hero-home .meta{margin-top:16px;}
.hero-home .meta .loc{margin-top:8px;}
.hero-home .cta{margin-top:18px;}
.hero-home .scene{margin-top:14px;gap:26px;}
.hero-home .scene img{width:210px;height:auto;display:block;}
.hero-home .scene svg{width:96px;}

/* ---------- BUTTONS ---------- */
.cta{display:inline-block;margin-top:28px;font-family:var(--label);font-weight:400;font-size:12px;
  letter-spacing:3px;text-transform:uppercase;color:var(--blue);text-decoration:none;
  border:1.6px solid var(--blue);border-radius:34px;padding:13px 40px;transition:background .2s,color .2s;}
.cta:hover{background:var(--blue);color:var(--cream);}

/* ---------- SECTIONS ---------- */
section{padding:64px 24px;}
section.alt{background:var(--cream-soft);}
.wrap{max-width:980px;margin:0 auto;}
.section-label{text-align:center;font-family:var(--label);font-weight:300;font-size:12px;
  letter-spacing:4px;text-transform:uppercase;color:var(--blue-soft);margin-bottom:4px;}
section h2{text-align:center;font-family:var(--script);font-weight:700;color:var(--blue);
  font-size:clamp(38px,6vw,58px);line-height:1;margin-bottom:8px;}
.wave-divider{display:block;width:130px;height:16px;margin:6px auto 18px;color:var(--blue);}
.sub{text-align:center;color:var(--ink);max-width:700px;margin:0 auto 16px;font-size:17px;}
p.lead{font-size:19px;text-align:center;color:var(--ink);max-width:700px;margin:0 auto 14px;}

/* ---------- DRAWN CARDS ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px;margin-top:34px;}
.card{background:var(--paper);border:1.4px solid var(--blue);border-radius:12px;padding:24px 24px 26px;text-align:center;}
.card .ico{height:50px;color:var(--blue);margin-bottom:8px;}
.card .ico svg{height:50px;}
.card h3{font-family:var(--script);font-weight:600;font-size:27px;color:var(--blue);margin-bottom:4px;line-height:1.05;}
.card p{font-size:16px;color:var(--ink);}

/* ---------- PHOTOS (warm film wash) ---------- */
.film{filter:sepia(.30) saturate(1.12) contrast(1.02) brightness(1.03) hue-rotate(-6deg);}
.collage{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;max-width:520px;margin:40px auto 0;}
.collage figure{position:relative;margin:-12px;width:44%;background:var(--paper);border:7px solid var(--paper);
  box-shadow:0 10px 26px rgba(63,86,140,.22);transition:transform .25s,box-shadow .25s;}
.collage img{width:100%;height:200px;object-fit:cover;display:block;}
.collage figure:nth-child(odd){transform:rotate(-4deg);}
.collage figure:nth-child(even){transform:rotate(3deg);z-index:2;}
.collage figure:hover{transform:rotate(0deg) scale(1.04) !important;z-index:20;box-shadow:0 16px 36px rgba(63,86,140,.3);}
@media(min-width:761px){
  .collage{display:block;position:relative;max-width:980px;height:710px;}
  .collage figure{position:absolute;width:auto;margin:0;}
  .collage img{height:auto;}
  .collage .p1{left:20px;top:30px;width:208px;transform:rotate(-5deg);z-index:2;}
  .collage .p2{left:360px;top:12px;width:200px;transform:rotate(4deg);z-index:3;}
  .collage .p3{left:690px;top:34px;width:216px;transform:rotate(-3deg);z-index:2;}
  .collage .p4{left:150px;top:245px;width:210px;transform:rotate(3deg);z-index:5;}
  .collage .p5{left:470px;top:225px;width:205px;transform:rotate(-4deg);z-index:6;}
  .collage .p6{left:760px;top:255px;width:198px;transform:rotate(4deg);z-index:4;}
  .collage .p7{left:30px;top:445px;width:208px;transform:rotate(4deg);z-index:3;}
  .collage .p8{left:360px;top:458px;width:210px;transform:rotate(-3deg);z-index:6;}
  .collage .p9{left:700px;top:438px;width:220px;transform:rotate(-4deg);z-index:4;}
}

/* ---------- TIMELINE (wedding) ---------- */
.day-block{max-width:760px;margin:0 auto;}
.day-head{display:flex;align-items:center;gap:16px;margin:36px 0 8px;}
.day-head .pill{font-family:var(--label);font-weight:400;font-size:12px;letter-spacing:2px;text-transform:uppercase;
  color:var(--cream);background:var(--blue);padding:8px 20px;border-radius:30px;white-space:nowrap;}
.day-head .line{flex:1;height:1.4px;background:var(--blue);opacity:.4;}
.event{display:grid;grid-template-columns:104px 1fr;gap:22px;padding:18px 0;border-bottom:1.2px solid rgba(95,127,180,.28);}
.event:last-child{border-bottom:none;}
.event .when{font-family:var(--body);font-style:italic;font-size:20px;color:var(--blue);}
.event .what h3{font-family:var(--script);font-weight:600;font-size:25px;color:var(--blue);margin-bottom:2px;}
.event .what p{color:var(--ink);font-size:16px;}
.event .what .where{display:inline-block;font-family:var(--label);font-weight:300;font-size:11px;
  letter-spacing:1.5px;text-transform:uppercase;color:var(--blue-soft);border:1.2px solid var(--blue-soft);
  border-radius:20px;padding:2px 12px;margin-top:8px;}

/* ---------- HOTELS ---------- */
.hotels{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:26px;}
.hotel{background:var(--paper);border:1.4px solid var(--blue);border-radius:12px;padding:24px 26px;}
.hotel .for{font-family:var(--label);font-weight:400;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--blue-soft);margin-bottom:4px;}
.hotel h3{font-family:var(--script);font-weight:600;font-size:30px;color:var(--blue);margin-bottom:4px;}
.hotel p{font-size:16px;color:var(--ink);}
.hotel .meta{margin-top:10px;font-family:var(--label);font-weight:300;font-size:13px;letter-spacing:.5px;color:var(--blue-soft);}

/* Featured hotel (with rates) */
.hotel-feature{background:var(--paper);border:1.4px solid var(--blue);border-radius:12px;padding:26px 28px;margin-top:26px;}
.hotel-feature .for{font-family:var(--label);font-weight:400;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--blue-soft);margin-bottom:4px;}
.hotel-feature h3{font-family:var(--script);font-weight:600;font-size:34px;color:var(--blue);margin-bottom:6px;line-height:1.05;}
.hotel-feature > p{font-size:16px;color:var(--ink);}
.ratetable{margin:18px auto 0;max-width:540px;}
.ratetable td .approx{display:block;font-family:var(--label);font-weight:300;font-size:12px;letter-spacing:.3px;color:var(--blue-soft);margin-top:2px;}
.ratetable td .rsub{display:block;font-family:var(--label);font-weight:300;font-size:11.5px;letter-spacing:.5px;text-transform:uppercase;color:var(--blue-soft);margin-top:2px;}
.ratenote{font-family:var(--label);font-weight:300;font-size:12.5px;line-height:1.65;color:var(--blue-soft);margin-top:12px;}
.rate-tba{margin-top:16px;background:var(--cream-soft);border:1.4px dashed var(--blue-soft);border-radius:10px;
  padding:16px 20px;font-size:15px;color:var(--ink);}
.rate-tba strong{color:var(--blue);display:block;margin-bottom:4px;font-family:var(--body);font-style:italic;font-size:17px;}

/* ---------- THINGS TO DO (image cards) ---------- */
.hero-img{width:100%;height:340px;object-fit:cover;border-radius:12px;border:6px solid var(--paper);box-shadow:var(--shadow);margin-bottom:14px;}
.caption{text-align:center;font-family:var(--label);font-weight:300;font-size:13px;color:var(--blue-soft);margin-bottom:30px;}
.things{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:24px;}
.thing img{width:100%;height:210px;object-fit:cover;border-radius:10px;border:5px solid var(--paper);box-shadow:var(--shadow);}
.thing h3{font-family:var(--script);font-weight:600;font-size:27px;margin:14px 0 2px;color:var(--blue);}
.thing p{font-size:16px;color:var(--ink);}
/* ---------- EAT & DRINK (place cards) ---------- */
.placelist{max-width:640px;margin:28px auto 0;padding-left:22px;}
.placelist li{padding:9px 0;font-size:17px;color:var(--ink);line-height:1.6;}
.placelist li::marker{color:var(--blue);}
.placelist li strong{color:var(--blue);font-weight:500;}

/* ---------- ACTIVITY ACCORDION (fold-down) ---------- */
.folds{max-width:780px;margin:22px auto 0;display:flex;flex-direction:column;gap:14px;}
.fold{background:var(--paper);border:1.4px solid var(--blue);border-radius:12px;overflow:hidden;}
.fold summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:16px 24px;font-family:var(--script);font-weight:600;font-size:26px;color:var(--blue);line-height:1.1;
  transition:background .2s;}
.fold summary::-webkit-details-marker{display:none;}
.fold summary::after{content:'+';font-family:var(--label);font-weight:300;font-size:28px;color:var(--blue-soft);line-height:1;}
.fold[open] summary::after{content:'\2013';}
.fold summary:hover{background:var(--cream-soft);}
.fold-body{padding:0 24px 22px;}
.fold-body p{margin-bottom:14px;}
.fold-body img{display:block;max-width:100%;max-height:460px;width:auto;height:auto;margin:0 auto;
  border-radius:10px;border:5px solid var(--paper);box-shadow:var(--shadow);}
.fold-body p{font-size:16px;color:var(--ink);}
.fold[open] .fold-body{animation:foldDown .3s ease;}
@keyframes foldDown{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:translateY(0);}}

.moredo{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px;margin-top:26px;}
.mcard{background:var(--paper);border:1.4px solid var(--blue);border-radius:12px;padding:22px 24px;}
.mcard h3{font-family:var(--script);font-weight:600;font-size:25px;color:var(--blue);margin-bottom:2px;}
.mcard p{font-size:15.5px;color:var(--ink);}

/* ---------- RECOMMENDATIONS (travel) ---------- */
.recs{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px;margin-top:30px;}
.rec{background:var(--paper);border:1.4px solid var(--blue);border-radius:12px;padding:22px 24px;}
.rec .for{font-family:var(--label);font-weight:400;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;
  color:var(--blue-soft);margin-bottom:3px;}
.rec h3{font-family:var(--script);font-weight:600;font-size:27px;color:var(--blue);margin-bottom:3px;line-height:1.05;}
.rec p{font-size:15.5px;color:var(--ink);}

/* ---------- INFO CARDS / CALLOUT ---------- */
.info{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:24px;}
.infocard{background:var(--paper);border:1.4px solid var(--blue);border-radius:12px;padding:24px 26px;}
.infocard h3{font-family:var(--script);font-weight:600;font-size:27px;color:var(--blue);margin-bottom:6px;}
.infocard p{font-size:16px;color:var(--ink);}
.infocard .big{font-family:var(--body);font-style:italic;font-size:22px;color:var(--blue);}
.callout{max-width:840px;margin:0 auto 18px;background:var(--paper);border:1.4px solid var(--blue);
  border-radius:12px;padding:18px 22px;font-size:16px;color:var(--ink);}
.callout strong{color:var(--blue);}
.callout.text-us{text-align:center;font-size:17px;}
.dresscode{max-width:760px;margin:28px auto 0;text-align:left;}
.dresscode h3{font-family:var(--script);font-weight:600;font-size:30px;color:var(--blue);margin-bottom:10px;text-align:center;line-height:1.05;}
.dresscode p{margin-bottom:10px;}
.dresscode p:last-child{margin-bottom:0;}

/* ---------- FLIGHTS ---------- */
.cities{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:20px;}
.city{background:var(--paper);border:1.4px solid var(--blue);border-radius:12px;overflow:hidden;}
.city .top{padding:18px 24px 12px;display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  border-bottom:1.2px solid rgba(95,127,180,.3);}
.city .top h3{font-family:var(--script);font-weight:600;font-size:30px;color:var(--blue);}
.city .top .code{font-family:var(--label);font-weight:300;font-size:13px;letter-spacing:1px;color:var(--blue-soft);}
.city .stat{display:flex;gap:18px;padding:14px 24px 4px;flex-wrap:wrap;}
.city .stat div{flex:1;min-width:110px;}
.city .stat .label{font-family:var(--label);font-weight:300;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--blue-soft);}
.city .stat .val{font-family:var(--body);font-style:italic;font-size:21px;color:var(--blue);}
.city .routes{padding:8px 24px 22px;}
.city .routes h4{font-family:var(--label);font-weight:400;font-size:12px;text-transform:uppercase;letter-spacing:1.5px;color:var(--blue-soft);margin:10px 0 6px;}
.city .routes p{font-size:15.5px;color:var(--ink);}
.chip{display:inline-block;background:var(--cream);border:1.1px solid var(--blue-soft);border-radius:20px;
  padding:3px 12px;font-family:var(--label);font-weight:300;font-size:13px;margin:4px 5px 0 0;color:var(--blue);}

.costtable{width:100%;border-collapse:collapse;margin-top:20px;font-size:16px;background:var(--paper);
  border:1.4px solid var(--blue);border-radius:12px;overflow:hidden;}
.costtable th,.costtable td{padding:13px 16px;text-align:left;border-bottom:1.2px solid rgba(95,127,180,.28);}
.costtable th{background:var(--blue);color:var(--cream);font-family:var(--label);font-weight:400;
  font-size:12px;letter-spacing:1px;text-transform:uppercase;}
.costtable tr:last-child td{border-bottom:none;}

/* ---------- RSVP ---------- */
.rsvp-embed{max-width:680px;margin:30px auto 0;}
.rsvp-embed iframe{border-radius:12px;background:var(--paper);border:1.4px solid var(--blue);box-shadow:var(--shadow);}
.note{font-family:var(--label);font-weight:300;font-size:14px;color:var(--blue-soft);text-align:center;}

/* ---------- FOOTER ---------- */
footer{text-align:center;padding:54px 24px;background:var(--blue);color:var(--cream);}
footer .script{font-family:var(--script);font-weight:600;font-size:40px;color:var(--cream);margin-bottom:10px;}
footer p{opacity:.92;font-size:15px;}
footer a{color:#f3ead0;}
footer .imgcredit{font-size:12px;opacity:.7;margin-top:14px;}

@media(max-width:760px){
  .hotels,.things,.info,.cities{grid-template-columns:1fr;}
  .event{grid-template-columns:84