:root {
  --paper:#faf6ee;
  --ink:#3b3025;
  --muted:#6d5d4b;
  --olive:#826126;
  --line:#d8c9af;
  --soft:#f0e7d8;
  --white:#fffdf8;
}
* {
  box-sizing:border-box;
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--header-height, 82px) + 18px);
}
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font:16px/1.7 "Segoe UI",Tahoma,sans-serif;
}
a {
  color:inherit;
  text-underline-offset:5px;
}
button,input,select,textarea {
  font:inherit;
}
button,a,input,select,textarea,summary {
  -webkit-tap-highlight-color:transparent;
}
button,a {
  touch-action:manipulation;
}
a:hover {
  color:var(--olive);
}
:focus-visible {
  outline:3px solid var(--olive);
  outline-offset:5px;
}
h1,h2,h3,p {
  margin-top:0;
}
h1,h2,h3 {
  font-family:Georgia,"Times New Roman",serif;
  font-weight:400;
  line-height:1.15;
}
h1 {
  font-size:clamp(3rem,5vw,5rem);
}
h2 {
  font-size:clamp(2.3rem,4vw,3.7rem);
  margin-bottom:25px;
}
h3 {
  font-size:1.7rem;
}
p {
  color:var(--muted);
}
img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.eyebrow {
  text-transform:uppercase;
  letter-spacing:.23em;
  font-size:.7rem;
  font-weight:600;
  color:var(--olive);
  margin-bottom:22px;
}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:48px;
  border:1px solid var(--olive);
  padding:12px 30px;
  background:var(--olive);
  color:var(--white);
  text-decoration:none;
  cursor:pointer;
  font-size:.9rem;
  letter-spacing:.04em;
  transition:background .2s;
}
.button:hover {
  background:#63491e;
  color:var(--white);
}
.text-button {
  border:0;
  background:none;
  padding:4px 0;
  cursor:pointer;
  color:inherit;
  font-size:inherit;
  text-decoration:underline;
  text-underline-offset:4px;
}
.small,small {
  font-size:.8rem;
  color:var(--muted);
}
small {
  display:block;
}
.lead {
  font-size:1.15rem;
  line-height:1.9;
}
.monogram {
  font:1.6rem Georgia,serif;
  white-space:nowrap;
  text-decoration:none;
  letter-spacing:.07em;
  flex-shrink:0;
}
.monogram i {
  font-size:1.2rem;
  color:var(--olive);
}
.monogram .couple-logo {
  width:70px;
  height:auto;
  object-fit:contain;
}
.site-header,.simple-header {
  padding:18px 4vw;
  display:flex;
  align-items:center;
  gap:32px;
  border-bottom:1px solid var(--line);
  background:var(--paper);
}
.site-header {
  position:sticky;
  top:0;
  z-index:10;
  min-height:82px;
  justify-content:space-between;
  flex-wrap:nowrap;
}
.header-tools {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:15px;
  margin-left:auto;
  font-size:.73rem;
  white-space:nowrap;
}
.header-tools form {
  margin:0;
}
.header-tools > a {
  text-decoration:none;
}
.languages {
  display:flex;
  align-items:center;
  gap:9px;
  font-size:.76rem;
  white-space:nowrap;
  margin-right:8px;
}
.languages a {
  text-decoration:none;
  padding:6px 0;
}
.languages a.active {
  border-bottom:1px solid var(--olive);
  font-weight:700;
}
.languages span {
  opacity:.35;
}
.simple-header {
  justify-content:space-between;
}
.hero {
  position:relative;
  height:calc(100svh - var(--header-height, 110px));
  min-height:440px;
  max-height:1050px;
  background:var(--paper);
  overflow:hidden;
}
.hero-art {
  width:100%;
  max-width:620px;
  height:100%;
  margin:0 auto;
}
.hero-art video { display:block; width:100%; height:100%; object-fit:cover; object-position:50% 30%; }
.hero-play { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:transparent; cursor:pointer; }
.hero-play[aria-disabled="true"] { cursor:default; }
.hero-play:focus-visible { outline-offset:-5px; }
.hero .scroll-note {
  position:absolute; bottom:22px; left:50%; transform:translateX(-50%);
  background:rgba(255,255,255,.12); color:#fff; padding:10px 20px; text-align:center;
  border:1px solid rgba(255,255,255,.35); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  box-shadow:0 4px 18px rgba(0,0,0,.15), inset 0 1px 0 rgba(255,255,255,.15);
  text-shadow:0 1px 3px rgba(0,0,0,.9), 0 0 6px rgba(0,0,0,.65);
  border-radius:4px; transition:background .2s, border-color .2s;
  font-size:.72rem; letter-spacing:.12em; text-transform:uppercase;
  text-decoration:none; max-width:90%;
}
.hero .scroll-note:hover,.hero .scroll-note:focus-visible { background:rgba(255,255,255,.20); border-color:rgba(255,255,255,.50); color:#fff; }
.hero-copy { text-align:center; max-width:850px; margin:auto; }
.hero-copy h1 { font-size:clamp(3.3rem,7vw,6rem); margin:20px 0; }
.hero-copy h1 em { color:var(--olive); font-weight:400; }
.hero-date { text-transform:uppercase; letter-spacing:.16em; font-size:.82rem; }
.hero-copy .button { margin-top:20px; }
.fine-line { width:40px; height:1px; background:var(--line); margin:26px auto; }
.section {
  padding:95px max(7%,calc((100vw - 1180px)/2));
}
.story {
  text-align:center;
  background:var(--soft);
}
.story .lead {
  max-width:720px;
  margin:0 auto 24px;
}
.story h2 {
  max-width:800px;
  margin-left:auto;
  margin-right:auto;
}
.flourish {
  display:block;
  font-size:2.5rem;
  color:var(--olive);
}
.personal {
  margin:10px 0 0;
  font-style:italic;
  font-family:Georgia,serif;
  font-size:1.2rem;
}
.venue {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:30px;
}
.venue-copy { max-width:800px; margin:auto; text-align:center; }
.venue-copy p:last-child { margin-bottom:0; }
.venue-carousel { position:relative; width:100%; max-width:900px; margin:auto; }
.venue-photos { position:relative; width:100%; aspect-ratio:4/3; max-height:600px; overflow:hidden; background:var(--soft); touch-action:pan-y pinch-zoom; }
.venue-photo { position:absolute; inset:0; object-fit:contain; object-position:center; opacity:0; visibility:hidden; transition:opacity .4s ease, visibility .4s; }
.venue-photo-portrait { object-fit:contain; }
.venue-photo.is-active { opacity:1; visibility:visible; }
.venue-arrow {
  position:absolute; top:calc((100% - 44px)/2); transform:translateY(-50%);
  display:grid; place-items:center; width:44px; height:44px;
  border:1px solid var(--line); border-radius:50%; background:rgba(250,246,238,.92);
  color:var(--ink); cursor:pointer; font-size:2rem; line-height:1;
}
.venue-previous { left:12px; }
.venue-next { right:12px; }
.venue-arrow:hover { background:var(--soft); }
.venue-dots { display:flex; justify-content:center; }
.venue-dots button { display:grid; place-items:center; width:44px; height:44px; padding:0; border:0; background:transparent; cursor:pointer; }
.venue-dots button::before { content:""; width:7px; height:7px; border-radius:50%; background:var(--line); }
.venue-dots button[aria-current="true"]::before { background:var(--olive); }
.venue-map { display:block; width:100%; max-width:760px; justify-self:center; height:clamp(280px,40vw,420px); border:1px solid var(--line); background:var(--soft); }
.venue-map-link { justify-self:center; text-align:center; }
@media(max-width:700px) {
  .venue-photos { aspect-ratio:4/5; }
}
.pill {
  display:inline-block;
  padding:5px 12px;
  background:var(--soft);
  font-size:.72rem;
  border-radius:2px;
}
.section-heading {
  text-align:center;
  margin-bottom:48px;
}
.details-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:50px;
}
.details-grid article {
  border-top:1px solid var(--line);
  padding-top:25px;
}
.item-number {
  font:italic 1.2rem Georgia,serif;
  color:var(--olive);
  display:block;
  margin-bottom:18px;
}
.schedule {
  background:var(--ink);
  color:var(--paper);
}
.schedule p,.schedule small,.schedule .eyebrow {
  color:var(--line);
}
.timeline {
  list-style:none;
  padding:0;
  margin:0 auto;
  max-width:650px;
}
.timeline li {
  display:flex;
  gap:45px;
  padding:23px 0;
  border-bottom:1px solid var(--muted);
  align-items:center;
}
.timeline time {
  font:1.5rem Georgia,serif;
  min-width:70px;
}
.timeline strong {
  font:1.4rem Georgia,serif;
  display:block;
  margin-bottom:5px;
}
.travel {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10%;
}
.travel details {
  border-bottom:1px solid var(--line);
  padding:18px 0;
}
.travel summary {
  cursor:pointer;
  font:1.3rem Georgia,serif;
}
.travel details p {
  margin:15px 0 0;
}
.rsvp-section {
  background:var(--soft);
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:9%;
  align-items:center;
}
.rsvp-card {
  padding:38px;
  background:var(--white);
  border:1px solid var(--line);
}
.rsvp-intro h2 {
  font-size:clamp(3rem,5vw,5rem);
}
label {
  display:block;
  font-size:.86rem;
  margin:18px 0 7px;
}
input:not([type=radio]):not([type=checkbox]):not([type=hidden]),select,textarea {
  display:block;
  width:100%;
  border:1px solid #a18c6c;
  background:transparent;
  color:var(--ink);
  padding:12px;
  min-height:48px;
  border-radius:0;
}
fieldset {
  border:0;
  padding:0;
  margin:18px 0;
}
legend {
  font-family:Georgia,serif;
  font-size:1.4rem;
  margin-bottom:7px;
}
.radio-option {
  display:flex;
  align-items:center;
  gap:12px;
  margin:10px 0;
  padding:10px 0;
  cursor:pointer;
}
.radio-option input {
  width:18px;
  height:18px;
  accent-color:var(--olive);
}
#party-size {
  margin:20px 0;
}
#party-size input {
  max-width:130px;
}
.country-picker { position:relative; min-width:0; }
select.country-picker-native { display:none; }
.country-picker-trigger {
  display:block; width:100%; min-height:48px; padding:12px 36px 12px 12px;
  border:1px solid #a18c6c; border-radius:0; background:transparent;
  color:var(--ink); text-align:left; cursor:pointer;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.country-picker-trigger::after {
  content:''; position:absolute; right:15px; top:20px; width:7px; height:7px;
  border-right:1px solid currentColor; border-bottom:1px solid currentColor; transform:rotate(45deg);
}
.country-picker-list {
  position:absolute; z-index:10; top:calc(100% + 4px); left:0; width:100%;
  max-height:min(265px,40dvh); overflow-y:auto; overscroll-behavior:contain;
  touch-action:pan-y; background:var(--white); border:1px solid #a18c6c;
  box-shadow:0 6px 16px #3b302518; scrollbar-gutter:stable;
}
.country-picker-list.opens-up { top:auto; bottom:calc(100% + 4px); }
.country-picker-option {
  height:44px; line-height:44px; padding:0 12px; cursor:pointer;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.country-picker-option.pinned-end { border-bottom:1px solid var(--line); }
.country-picker-option[aria-selected="true"] { font-weight:600; }
.country-picker-option:hover,.country-picker-option.is-active { background:var(--soft); }
#rsvp-form textarea {
  resize:vertical;
  margin-bottom:20px;
}
#additional-guests fieldset {
  border-top:1px solid var(--line);
  padding-top:16px;
  min-width:0;
}
#rsvp-form [aria-invalid="true"] {
  border-color:#a34637;
  background:#f7e9e3;
}
#rsvp-form .field-error {
  color:#893a2e;
  font-size:.85rem;
  margin:6px 0 0;
}
.rsvp-card .button {
  width:100%;
}
.rsvp-card .small:last-child {
  margin:12px 0 0;
}
.notice {
  padding:14px 18px;
  background:var(--soft);
  border-left:3px solid var(--olive);
  font-size:.9rem;
}
.error {
  background:#f7e9e3;
  border-color:#a34637;
  color:#893a2e;
}
.error p {
  color:inherit;
  margin:0;
}
footer {
  text-align:center;
  padding:85px 25px 35px;
}
footer h2 {
  font-size:2.6rem;
}
footer p {
  max-width:600px;
  margin-left:auto;
  margin-right:auto;
}
.footer-mark {
  font:2.8rem Georgia,serif;
  margin:55px 0 20px;
}
.footer-mark i {
  color:var(--olive);
}
.footer-mark .couple-logo {
  width:60px;
  height:auto;
  object-fit:contain;
  margin:0 auto;
}
.skip-link {
  position:fixed;
  top:-100px;
  left:20px;
  background:var(--white);
  z-index:100;
  padding:10px;
}
.skip-link:focus {
  top:10px;
}
[hidden] {
  display:none!important;
}

@media(max-width:1100px) {
  .section {
    padding:75px 6%;
  }
}
@media(max-width:700px) {
  html {
    scroll-padding-top:calc(var(--header-height, 72px) + 18px);
  }
  .site-header {
    padding:10px 4%;
    gap:10px;
    flex-wrap:nowrap;
  }
  .site-header .monogram {
    flex-shrink:0;
  }
  .site-header .couple-logo {
    width:48px;
    height:auto;
  }
  .header-tools {
    width:auto;
    margin-left:auto;
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:10px;
    font-size:.7rem;
    white-space:nowrap;
  }
  .header-tools .languages {
    margin:0 6px 0 0;
    gap:6px;
    font-size:.7rem;
  }
  .section {
    padding:60px 7%;
  }
  .venue,.travel,.rsvp-section {
    grid-template-columns:1fr;
    gap:35px;
  }
  .details-grid {
    grid-template-columns:1fr;
    gap:25px;
  }
  .details-grid article p {
    margin-bottom:0;
  }
  .section-heading {
    margin-bottom:30px;
  }
  .timeline li {
    gap:25px;
  }
  .rsvp-card {
    padding:25px;
  }
  footer {
    padding-top:60px;
  }
}
.header-rsvp {
  display:inline-flex; align-items:center; justify-content:center; min-height:44px;
  padding:8px 14px; border:1px solid var(--olive); color:var(--olive); text-align:center;
  white-space:normal; line-height:1.35; max-width:190px;
}
.header-rsvp:hover,.header-rsvp:focus-visible,.header-rsvp[aria-current="page"] { background:var(--soft); color:var(--ink); }
.languages a { display:inline-flex; align-items:center; min-height:44px; }
.rsvp-section > * { min-width:0; }
.rsvp-intro h1 { overflow-wrap:break-word; }
@media(max-width:700px) {
  .header-tools { flex-wrap:wrap; min-width:0; white-space:normal; gap:6px 10px; }
  .header-rsvp { max-width:170px; padding:8px 10px; }
}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto;
  }
  *,*::before,*::after {
    animation:none!important;
    transition:none!important;
  }
}

@media(max-width:700px) {
  .hero {
    min-height:420px;
    max-height:850px;
  }
  .hero-art {
    max-width:none;
  }
  .hero-art video {
    object-position:50% 48%;
  }
}
@media(prefers-reduced-motion:no-preference) {
  .reveal-pending {
    opacity:0;
    transform:translateY(18px);
  }
  .reveal {
    transition:opacity .65s ease, transform .65s ease;
  }
  .reveal.is-visible {
    opacity:1;
    transform:none;
  }
}

.button:disabled {
  opacity:.6;
  cursor:wait;
}


/* Content-only additions reuse the existing section and card styles. */
.timeline time { flex:0 0 100px; white-space:nowrap; }
.gifts { background:var(--soft); }
.bank-accounts article { min-width:0; }
.bank-accounts dl { margin:0; }
.bank-accounts dt { color:var(--muted); font-size:.8rem; margin-top:16px; }
.bank-accounts dd { margin:3px 0 0; overflow-wrap:anywhere; }
@media(min-width:701px) { #details .details-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:700px) { .timeline time { flex-basis:88px; font-size:1.2rem; } }
