/* =========================================================
   The Aisle Advisors — "You're invited"
   A wedding-stationery world: envelope, place cards, postcards,
   an order of service, menu cards, a guestbook and an RSVP.
   Units: html{font-size:1vw}; --u = 1px on a 1600px canvas.
   ========================================================= */

:root {
  --olive-deep: #46503f;
  --olive: #5f6b57;
  --sage: #a7b09f;
  --sand: #e8dccf;
  --ivory: #f9f7f2;
  --paper: #fffdf8;
  --blush: #e7c6c1;
  --taupe: #c9b8a7;
  --charcoal: #2e2e2a;
  --gold: #8f7254;   /* sampled from the logo */
  --gold-text: #76593f;  /* the logo gold, deepened so small text passes contrast on ivory and sand */
  --white: #fff;

  --f-display: "Instrument Serif", "Times New Roman", serif;
  --f-body: "Archivo", Arial, sans-serif;
  --f-accent: "Pinyon Script", cursive;

  --u: calc(1rem / 16);
  --side: calc(var(--u) * 120);
  --vh: var(--_100svh, 100vh);

  --fg: var(--charcoal); --bg: var(--ivory); --line: #2e2e2a26; --soft: #2e2e2abf;
}
.t-light { --fg: var(--charcoal); --bg: var(--ivory); --line: #2e2e2a26; --soft: #2e2e2abf; }
.t-brand { --fg: var(--charcoal); --bg: var(--sand);  --line: #2e2e2a26; --soft: #2e2e2abf; }
.t-dark  { --fg: var(--ivory);    --bg: var(--charcoal); --line: #f9f7f226; --soft: #f9f7f299; }
.t-color { --fg: var(--ivory);    --bg: var(--olive-deep); --line: #f9f7f233; --soft: #f9f7f2b3; }

*, *::before, *::after { box-sizing: border-box; }
html { font-size: 1vw; -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--ivory); color: var(--charcoal); font-family: var(--f-body); -webkit-font-smoothing: antialiased; overflow-x: clip; }
h1, h2, h3, h4, h5, p, ol, ul, figure { margin: 0; padding: 0; font-weight: 400; }
ol, ul { list-style: none; }
a { color: inherit; text-decoration: none; }
img, svg { display: block; }
button, input, select { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
::selection { background: var(--blush); color: var(--charcoal); }

/* type ---------------------------------------------------- */
.h1, .h2, .h3, .h4, .h5 { font-family: var(--f-display); color: var(--fg); text-transform: uppercase; font-feature-settings: "case" on; }
.h1 { font-size: calc(var(--u) * 176); line-height: .86; letter-spacing: -.024em; }
.h2 { font-size: calc(var(--u) * 120); line-height: .9;  letter-spacing: -.024em; }
.h3 { font-size: calc(var(--u) * 72);  line-height: .95; letter-spacing: -.02em; }
.h4 { font-size: calc(var(--u) * 48);  line-height: .95; letter-spacing: -.012em; }
.h5 { font-size: calc(var(--u) * 32);  line-height: 1.08; letter-spacing: -.004em; text-transform: none; }
.l1, .l2, .p1 { font-family: var(--f-body); font-stretch: 125%; color: var(--fg); }
.l1 { font-size: calc(var(--u) * 11); line-height: 1.45; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; }
.l2 { font-size: calc(var(--u) * 9);  line-height: 1.4;  letter-spacing: .3em;  text-transform: uppercase; font-weight: 700; }
.p1 { font-size: calc(var(--u) * 14); line-height: 1.5; letter-spacing: -.02em; }
.a1, .a2 { font-family: var(--f-accent); color: var(--fg); line-height: 1; text-transform: none; }
.a1 { font-size: calc(var(--u) * 150); }
.a2 { font-size: calc(var(--u) * 40); }
.a-center { text-align: center; }
.a-right { text-align: right; }
.kicker { color: var(--soft); margin-bottom: calc(var(--u) * 28); }
.split-line, .split-word, .split-char { display: inline-block; }
.split-line-mask { display: inline-block; vertical-align: top; }
.a1 .split-char, .a2 .split-char { padding: .3em .5em; margin: -.3em -.5em; }
[data-reveal], [data-ink] { visibility: hidden; }

.wrap { padding: 0 var(--side); }
section { position: relative; background: var(--bg); color: var(--fg); }

/* paper grain over everything */
.grain {
  position: fixed; inset: -50%; z-index: 9000; pointer-events: none; opacity: .07; mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  animation: grain 1.2s steps(6) infinite;
}
@keyframes grain { 0%{transform:translate(0,0)} 20%{transform:translate(-3%,2%)} 40%{transform:translate(2%,-3%)} 60%{transform:translate(-2%,-1%)} 80%{transform:translate(3%,3%)} 100%{transform:translate(0,0)} }

/* scenes: each section is a card that slides over the last */
main > section { position: relative; }
main section.has-inner { background: transparent; padding: 0 !important; overflow: visible !important; }
.scene_inner { position: relative; min-height: 100%; background: var(--bg); overflow: clip; }
main > section + section > .scene_inner { border-radius: calc(var(--u) * 28) calc(var(--u) * 28) 0 0; box-shadow: 0 -30px 60px -30px #2e2e2a40; }
main > section + section > .scene_inner.is-held { border-radius: 0; box-shadow: none; }
main > section[data-enter="none"] > .scene_inner { border-radius: 0; box-shadow: none; }
.scene_shade { position: absolute; inset: 0; background: #1d1d1a; opacity: 0; pointer-events: none; z-index: 50; border-radius: inherit; }

/* flower wall between the promise and the destinations */
.flora { position: fixed; inset: 0; z-index: 900; pointer-events: none; visibility: hidden; overflow: hidden; }
.flora_wash { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 50%, #fbf6f2 0%, #f3e9e2 50%, #eadcd3 100%); }
.flora_bloom { position: absolute; left: 50%; top: 50%; width: 66vmin; height: 66vmin; margin: -33vmin 0 0 -33vmin; object-fit: contain; will-change: transform, opacity; }
.flora_bloom.is-bush { -webkit-mask-image: linear-gradient(#000 52%, transparent 78%); mask-image: linear-gradient(#000 52%, transparent 78%); }

/* page curtain between pages */
.curtain { position: fixed; inset: 0; z-index: 11000; background: var(--olive-deep); color: var(--ivory); display: flex; align-items: center; justify-content: center; pointer-events: none; clip-path: inset(100% 0 0 0); }
.curtain_mono { height: calc(var(--u) * 130); }
.curtain.is-covering { clip-path: inset(0 0 0 0); }

/* cursor: a small dot that follows the pointer */
.cursor {
  position: fixed; left: 0; top: 0; z-index: 9500; pointer-events: none;
  width: calc(var(--u) * 12); height: calc(var(--u) * 12); margin: calc(var(--u) * -6) 0 0 calc(var(--u) * -6);
  border-radius: 50%; background: #fff; mix-blend-mode: difference;
}
@media (hover: none) { .cursor { display: none; } }

/* =========================================================
   LOADER — deep green; the logo sits across the seam of two doors,
   so when they swing open each door carries half of it away
   ========================================================= */
.loader { position: fixed; inset: 0; z-index: 10000; perspective: 2200px; perspective-origin: 50% 50%; }
.loader_door { position: absolute; top: 0; bottom: 0; width: 50.05%; background: var(--olive-deep); overflow: hidden; backface-visibility: hidden; will-change: transform; }
.loader_door.l { left: 0; transform-origin: 0% 50%; }
.loader_door.r { right: 0; transform-origin: 100% 50%; }
/* each door holds a full-screen-wide copy of the logo, centred on the seam, so its half lines up exactly */
.loader_logo_wrap { position: absolute; top: 0; bottom: 0; width: 100vw; display: flex; align-items: center; justify-content: center; }
.loader_door.l .loader_logo_wrap { left: 0; }
.loader_door.r .loader_logo_wrap { right: 0; }
.loader_logo { height: calc(var(--u) * 170); color: var(--ivory); }
.loader_seam { position: absolute; left: 50%; top: 0; bottom: 0; width: 1px; margin-left: -.5px; background: #f9f7f2b3; transform: scaleY(0); transform-origin: 50% 0; z-index: 2; }
.loader_meta { position: absolute; left: 50%; bottom: calc(var(--u) * 70); transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: calc(var(--u) * 14); z-index: 3; }
.loader_bar { width: calc(var(--u) * 140); height: 1px; background: #f9f7f233; overflow: hidden; }
.loader_bar i { display: block; height: 100%; background: var(--ivory); transform-origin: 50% 50%; transform: scaleX(0); }
.loader_pct { color: #f9f7f2b3; letter-spacing: .4em; font-weight: 400; font-variant-numeric: tabular-nums; }

/* =========================================================
   FIXED UI
   ========================================================= */
.ui { position: fixed; inset: 0; z-index: 1200; pointer-events: none; }
.brand { position: absolute; left: calc(var(--u) * 44); top: calc(var(--u) * 20); display: flex; align-items: center; gap: calc(var(--u) * 14); pointer-events: auto; color: var(--fg); }
.nav { position: absolute; right: calc(var(--u) * 48); top: calc(var(--u) * 48); display: flex; align-items: center; gap: calc(var(--u) * 32); pointer-events: auto; }
.nav_link.is-current { position: relative; }
.nav_link.is-current::after { content: ""; position: absolute; left: 0; right: 0; bottom: calc(var(--u) * -8); height: 1px; background: currentColor; }
.nav_rsvp { padding: calc(var(--u) * 14) calc(var(--u) * 22); border: 1px solid var(--fg); border-radius: 100px; }
.chapter { position: absolute; right: calc(var(--u) * 48); bottom: calc(var(--u) * 36); display: flex; align-items: center; gap: calc(var(--u) * 16); }
.chapter_line { width: calc(var(--u) * 80); height: 1px; background: var(--line); position: relative; overflow: hidden; }
.chapter_line i { position: absolute; inset: 0; background: var(--fg); transform-origin: 0 50%; transform: scaleX(0); }
.chapter_t { font-size: calc(var(--u) * 30); min-width: calc(var(--u) * 200); }
[data-theme] { transition: color .5s; }
[data-theme] .l2, [data-theme] .a2 { transition: color .5s; }
.ui .t-light .l2, .ui .t-light .a2 { color: var(--charcoal); }

/* the Aisle Advisors logo, drawn as a mask so it can take the colour of its surroundings */
.logo, .logo-mark { display: block; background: currentColor; -webkit-mask: center / contain no-repeat; mask: center / contain no-repeat; }
.logo { -webkit-mask-image: url("../img/logo.png"); mask-image: url("../img/logo.png"); aspect-ratio: 264 / 222; }
.logo-mark { -webkit-mask-image: url("../img/logo-mark.png"); mask-image: url("../img/logo-mark.png"); aspect-ratio: 183 / 222; }
.brand_mark { position: relative; display: block; width: calc(var(--u) * 132 * 1056 / 888); container-type: inline-size; color: var(--gold); transition: color .5s, transform 1.2s cubic-bezier(.25,1,.5,1); transform-origin: 30% 50%; }
.brand.t-dark .brand_mark { color: var(--ivory); }
.brand:hover .brand_mark { transform: scale(1.04); }
/* the small "— INTERNATIONAL —" line is live text: at this size it can't stay sharp inside the image */
.brand_logo { height: calc(var(--u) * 132); -webkit-mask-image: url("../img/logo-noint.png"); mask-image: url("../img/logo-noint.png"); }
.brand_intl { position: absolute; left: 43.6%; right: 0; top: 74.2%; transform: translateY(-50%); display: flex; align-items: center; justify-content: center; gap: 1.9cqw;
  font-family: var(--f-body); font-stretch: 125%; font-weight: 400; font-size: 3.55cqw; line-height: 1; letter-spacing: .19em; text-transform: uppercase; white-space: nowrap; color: currentColor; }
.brand_intl::before, .brand_intl::after { content: ""; flex: none; width: 3.6cqw; height: max(1px, .12cqw); background: currentColor; opacity: .9; }
.brand_intl::after { margin-left: -.19em; }

/* swap-text hover (two stacked copies) */
.swap { position: relative; display: inline-block; overflow: hidden; vertical-align: top; }
.swap > span { display: block; }
.swap > span + span { position: absolute; left: 0; top: 0; width: 100%; }
.swap .split-word-mask { overflow: hidden; }

/* =========================================================
   HERO — invitation, then framed print
   ========================================================= */
.hero { height: calc(var(--vh) * 1.9); background: var(--ivory); }
.hero > .scene_inner { height: 100%; }
.journey > .scene_inner { height: 100%; }
.hero_pin { position: sticky; top: 0; height: var(--vh); overflow: hidden; }
.hero_media { position: absolute; inset: 0; overflow: hidden; will-change: clip-path, transform; }
.hero_img { position: absolute; left: 0; top: 0; width: 100%; height: auto; display: block; will-change: transform; }
.hero_shade { position: absolute; inset: 0; background: radial-gradient(ellipse 70% 60% at 50% 42%, #0000004d, #0000 70%), linear-gradient(#0000 55%, #00000059); pointer-events: none; }
.hero_copy { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; pointer-events: none; padding: calc(var(--u) * 60) 0; }
/* the lettering always fits between the top bar and the bottom corners; JS scales it down on short screens */
.hero_fit { display: flex; flex-direction: column; align-items: center; transform-origin: 50% 50%; }
/* the paper over the photograph, with "YOUR WEDDING" cut out — drawn on a canvas by JS, laid exactly over .hero_word */
.hero_veil { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; display: block; }
.hero_veil:not(.is-drawn) { background: var(--ivory); }
.hero_word { font-size: calc(var(--u) * 262); line-height: .8; letter-spacing: -.03em; white-space: nowrap; color: transparent !important; }
.hero_copy .h1, .hero_copy .l2 { color: var(--charcoal); }
.hero_kicker { margin-bottom: calc(var(--u) * 30); color: var(--gold-text) !important; }
.hero_script { margin: calc(var(--u) * -26) 0 calc(var(--u) * -10) calc(var(--u) * 300); font-size: calc(var(--u) * 104); transform: rotate(-6deg); position: relative; z-index: 1; color: var(--olive-deep); }
.hero_copy .h1:not(.hero_word) { font-size: calc(var(--u) * 132); }
.hero_sub { margin-top: calc(var(--u) * 34); max-width: calc(var(--u) * 540); color: var(--soft, #2e2e2abf); }
.hero_ctas { margin-top: calc(var(--u) * 30); display: flex; gap: calc(var(--u) * 14); pointer-events: auto; }
.hero_ctas .btn.is-solid { background: var(--olive-deep); border-color: var(--olive-deep); }
.hero_ctas .btn.is-solid .l2 { color: var(--ivory); }
.hero_ctas .btn.is-ghost { border-color: var(--charcoal); }
.hero_ctas .btn.is-ghost .l2 { color: var(--charcoal); }
.btn { display: inline-flex; align-items: center; justify-content: center; padding: calc(var(--u) * 18) calc(var(--u) * 30); border-radius: 100px; border: 1px solid currentColor; }
.btn.is-solid { background: var(--ivory); border-color: var(--ivory); }
.btn.is-solid .l2 { color: var(--charcoal); }
.btn.is-ghost { border-color: #f9f7f2b3; }
.btn.is-ghost .l2 { color: var(--ivory); }
.t-light .btn.is-solid, .t-brand .btn.is-solid { background: var(--olive-deep); border-color: var(--olive-deep); }
.t-light .btn.is-solid .l2, .t-brand .btn.is-solid .l2 { color: var(--ivory); }
.hero_caption { position: absolute; z-index: 3; left: 50%; bottom: 7vh; transform: translateX(-50%); color: var(--charcoal); opacity: 0; white-space: nowrap; }

/* =========================================================
   DESTINATIONS — the globe
   ========================================================= */
.globe-sec { padding: calc(var(--u) * 170) 0 calc(var(--u) * 150); overflow: clip; }
.globe_layout { position: relative; display: grid; grid-template-columns: calc(var(--u) * 520) 1fr; align-items: center; padding: 0 var(--side); min-height: 88vh; }
.globe_script { margin: calc(var(--u) * -20) 0 calc(var(--u) * 26) calc(var(--u) * 40); transform: rotate(-6deg); font-size: calc(var(--u) * 100); white-space: nowrap; }
.globe_lead { color: var(--soft); max-width: calc(var(--u) * 420); margin-bottom: calc(var(--u) * 40); }
.places { border-top: 1px solid var(--line); }
.place { width: 100%; display: grid; grid-template-columns: calc(var(--u) * 40) 1fr auto; align-items: baseline; padding: calc(var(--u) * 11) 0; border-bottom: 1px solid var(--line); text-align: left; opacity: .45; transition: opacity .5s, padding .6s cubic-bezier(.25,1,.5,1); }
.place:hover, .place.is-active { opacity: 1; }
.place.is-active { padding-left: calc(var(--u) * 16); }
.place .l2:first-child { color: var(--soft); }
.place_tag { color: var(--soft); }
.place_any { opacity: 1; }
.place_any .h5 { font-style: italic; }
.place_any .place_tag { color: var(--olive); }
.globe_stage { position: relative; height: 84vh; margin-left: calc(var(--u) * 30); margin-right: calc(var(--u) * 200); }
.globe_canvas { position: absolute; inset: 0; width: 100%; height: 100%; cursor: grab; touch-action: pan-y; }
.globe_canvas:active { cursor: grabbing; }
.globe_pins { position: absolute; inset: 0; pointer-events: none; }
.gpin { position: absolute; left: 0; top: 0; pointer-events: auto; padding: calc(var(--u) * 7) calc(var(--u) * 12); border-radius: 100px; background: #f9f7f2e6; border: 1px solid var(--line); white-space: nowrap; transition: opacity .4s, background .4s; }
.gpin .l2 { color: var(--charcoal); letter-spacing: .2em; }
.gpin.is-spec { border-color: #46503f66; }
.gpin.is-on { background: var(--olive-deep); border-color: var(--olive-deep); z-index: 2; }
.gpin:not(.is-on) { opacity: .85; }
.gpin.is-on .l2 { color: var(--ivory); }
.gpin.is-back { opacity: 0; pointer-events: none; }
.globe_hint { position: absolute; left: 50%; bottom: calc(var(--u) * 20); transform: translateX(-50%); color: var(--soft); white-space: nowrap; }
.place_card {
  position: absolute; right: calc(var(--u) * 70); top: 50%; margin-top: calc(var(--u) * -300); width: calc(var(--u) * 320); background: var(--paper);
  padding: calc(var(--u) * 12) calc(var(--u) * 12) calc(var(--u) * 26); box-shadow: 0 50px 90px -40px #2e2e2a80; transform: rotate(2deg); transform-origin: 50% 100%;
}
.place_card_img { aspect-ratio: 16 / 11; overflow: hidden; }
.place_card_img img { width: 100%; height: 100%; object-fit: cover; }
.place_card_body { padding: calc(var(--u) * 18) calc(var(--u) * 14) 0; display: flex; flex-direction: column; gap: calc(var(--u) * 8); }
.place_card_body .l2 { color: var(--soft); }
.place_card_body .a2 { color: var(--olive-deep); font-size: calc(var(--u) * 34); }
.place_card_body .p1 { font-size: calc(var(--u) * 13); color: var(--soft); }
.place_card_tag { color: var(--olive) !important; padding-top: calc(var(--u) * 8); border-top: 1px solid var(--line); }

/* =========================================================
   WHO WE ARE — Caitlin
   ========================================================= */
.who { padding: calc(var(--u) * 190) 0; }
.who_statement { font-size: calc(var(--u) * 86); line-height: 1.02; text-transform: none; letter-spacing: -.02em; max-width: calc(var(--u) * 1200); }
.who_statement .split-word { opacity: .6; }              /* unread words stay legible (≥3:1) */
.chip { display: inline-block; width: 1.9em; height: .82em; border-radius: 1em; overflow: hidden; vertical-align: -.06em; margin: 0 .08em; transform: scale(0); }
.chip img { width: 100%; height: 100%; object-fit: cover; }
.film { margin: calc(var(--u) * 110) calc(var(--side) * -1 + var(--u) * 40) 0; }
.film_frame { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: #000; border-radius: calc(var(--u) * 6); box-shadow: 0 70px 120px -60px #2e2e2ab3; }
.film_frame .video_el { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; cursor: pointer; }
.film_frame:fullscreen { border-radius: 0; }
.film_frame:fullscreen .video_el { object-fit: contain; }
/* a plain video player: big play button until it starts, then a YouTube-style control bar */
.film_big { position: absolute; left: 50%; top: 50%; width: calc(var(--u) * 92); height: calc(var(--u) * 92); margin: calc(var(--u) * -46) 0 0 calc(var(--u) * -46); border-radius: 50%; background: #0000008c; color: #fff; display: grid; place-items: center; transition: transform .3s, background .3s, opacity .3s; }
.film_big svg { width: 42%; height: 42%; margin-left: 6%; }
.film_big:hover { transform: scale(1.06); background: #000000b3; }
.film.is-started .film_big { opacity: 0; pointer-events: none; }
.film_bar { position: absolute; left: 0; right: 0; bottom: 0; padding: calc(var(--u) * 40) calc(var(--u) * 20) calc(var(--u) * 10); background: linear-gradient(#0000, #000000a6); color: #fff; opacity: 0; transition: opacity .3s; pointer-events: none; }
.film.is-started .film_bar { opacity: 1; pointer-events: auto; }
.film.is-started.is-idle .film_bar { opacity: 0; }
.film.is-idle .video_el { cursor: none; }
.film_seek { position: relative; height: 4px; background: #ffffff40; cursor: pointer; border-radius: 2px; transition: height .15s; }
.film_seek::before { content: ""; position: absolute; inset: -8px 0; }
.film_seek:hover, .film.is-seeking .film_seek { height: 6px; }
.film_seek_buf, .film_seek_fill { position: absolute; left: 0; top: 0; bottom: 0; width: 0; border-radius: 2px; }
.film_seek_buf { background: #ffffff4d; }
.film_seek_fill { background: #fff; }
.film_seek_dot { position: absolute; top: 50%; left: 0; width: 13px; height: 13px; margin: -6.5px 0 0 -6.5px; border-radius: 50%; background: #fff; transform: scale(0); transition: transform .15s; }
.film_seek:hover .film_seek_dot, .film.is-seeking .film_seek_dot { transform: scale(1); }
.film_row { display: flex; align-items: center; gap: calc(var(--u) * 8); margin-top: calc(var(--u) * 8); }
.film_btn { width: 40px; height: 40px; display: grid; place-items: center; color: #fff; border-radius: 50%; }
.film_btn svg { width: 24px; height: 24px; fill: currentColor; }
.film_btn .i-pause, .film.is-playing .film_btn .i-play { display: none; }
.film.is-playing .film_btn .i-pause { display: inline; }
.film_btn .i-x, .film.is-muted .film_btn .i-wave { display: none; }
.film.is-muted .film_btn .i-x { display: inline; }
.film_vol { display: flex; align-items: center; }
.film_volume { width: 0; opacity: 0; transition: width .25s, opacity .25s; accent-color: #fff; cursor: pointer; }
.film_vol:hover .film_volume, .film_volume:focus { width: 80px; opacity: 1; margin: 0 6px; }
.film_time { font-family: var(--f-body); font-size: 13px; color: #fff; font-variant-numeric: tabular-nums; margin-left: 4px; }
.film_full { margin-left: auto; }
.who_grid { display: grid; grid-template-columns: 1fr 1fr; gap: calc(var(--u) * 110); margin-top: calc(var(--u) * 120); align-items: start; }
.who_text { display: flex; flex-direction: column; gap: calc(var(--u) * 22); }
.who_text .p1 { color: var(--soft); max-width: calc(var(--u) * 540); }
.compare { display: grid; grid-template-columns: 1fr 1fr; gap: calc(var(--u) * 16); margin-top: calc(var(--u) * 56); }
.compare_col { padding: calc(var(--u) * 30); border: 1px solid var(--line); background: #f9f7f266; }
.compare_col.is-us { background: var(--olive-deep); border-color: var(--olive-deep); --fg: var(--ivory); --soft: #f9f7f2cc; }
.compare_col .l2 { margin-bottom: calc(var(--u) * 16); color: var(--soft); }
.compare_col li { font-size: calc(var(--u) * 13); padding: calc(var(--u) * 10) 0; border-top: 1px solid var(--line); color: var(--fg); }
.who_sign { font-size: calc(var(--u) * 60); color: var(--olive-deep); margin-top: calc(var(--u) * 16); }

/* =========================================================
   PROCESS — a sideways journey (pinned, scroll moves it along)
   ========================================================= */
.journey_pin { position: sticky; top: 0; height: var(--vh); overflow: hidden; }
.journey_flower { position: absolute; top: calc(var(--u) * -30); right: calc(var(--u) * 80); width: calc(var(--u) * 300); pointer-events: none; opacity: .9; }
.journey_track { position: absolute; left: 0; top: 0; height: 100%; display: flex; align-items: center; gap: calc(var(--u) * 140); padding: 0 calc(var(--u) * 220) 0 var(--side); width: max-content; }
.journey_intro { width: calc(var(--u) * 560); flex: none; }
.journey_script { margin: calc(var(--u) * -30) 0 calc(var(--u) * 30) calc(var(--u) * 200); transform: rotate(-6deg); font-size: calc(var(--u) * 150); }
.journey_intro .p1 { color: var(--soft); max-width: calc(var(--u) * 420); }
.journey_hint { margin-top: calc(var(--u) * 40); display: flex; align-items: center; gap: calc(var(--u) * 14); }
.journey_hint svg { width: calc(var(--u) * 30); height: calc(var(--u) * 14); }
.jstep { flex: none; display: flex; align-items: flex-end; gap: calc(var(--u) * 50); transform: translateY(-6vh); }
.jstep.is-low { transform: translateY(8vh); flex-direction: row-reverse; align-items: flex-start; }
.jstep_img { width: calc(var(--u) * 420); aspect-ratio: 3 / 4; overflow: hidden; border-radius: calc(var(--u) * 4); box-shadow: 0 50px 90px -50px #2e2e2a99; flex: none; }
.jstep_img img { width: 100%; height: 118%; object-fit: cover; }
.jstep_text { width: calc(var(--u) * 360); display: flex; flex-direction: column; gap: calc(var(--u) * 16); padding-bottom: calc(var(--u) * 20); }
.jstep_n { font-size: calc(var(--u) * 120); color: var(--olive); line-height: .8; }
.jstep_text .p1 { color: var(--soft); }
.jstep_tag { color: var(--olive); padding-top: calc(var(--u) * 14); border-top: 1px solid var(--line); }
.journey_end { flex: none; width: calc(var(--u) * 560); display: flex; flex-direction: column; align-items: flex-start; gap: calc(var(--u) * 20); }
.journey_end .a1 { color: var(--olive); margin-bottom: calc(var(--u) * -30); }
.journey_end .p1 { color: var(--soft); max-width: calc(var(--u) * 420); margin: calc(var(--u) * 10) 0 calc(var(--u) * 16); }
.journey_rail { position: absolute; left: var(--side); right: var(--side); bottom: calc(var(--u) * 50); display: flex; align-items: center; gap: calc(var(--u) * 24); }
.journey_rail .l2 { color: var(--soft); white-space: nowrap; }
.journey_line { flex: 1; height: 1px; background: var(--line); position: relative; overflow: hidden; }
.journey_line i { position: absolute; inset: 0; background: var(--olive); transform-origin: 0 50%; transform: scaleX(0); }

/* =========================================================
   PACKAGES — menu cards that flip
   ========================================================= */
.menus { padding: calc(var(--u) * 200) 0; }
.menus_head { text-align: center; display: flex; flex-direction: column; align-items: center; margin-bottom: calc(var(--u) * 110); }
.menus_script { margin: calc(var(--u) * -26) 0 calc(var(--u) * 30) calc(var(--u) * 300); transform: rotate(-6deg); font-size: calc(var(--u) * 120); }
.menus_lead { max-width: calc(var(--u) * 470); color: var(--soft); }
.menus_row { display: flex; justify-content: center; gap: calc(var(--u) * 50); perspective: 2000px; }
.menu { width: calc(var(--u) * 380); aspect-ratio: .64; cursor: pointer; }
.menu.is-feature { transform: translateY(calc(var(--u) * -40)); }
.menu_in { position: relative; width: 100%; height: 100%; transform-style: preserve-3d; transition: transform 1.1s cubic-bezier(.75,0,.25,1); }
.menu.is-flipped .menu_in { transform: rotateY(180deg); }
.menu_face {
  position: absolute; inset: 0; backface-visibility: hidden; -webkit-backface-visibility: hidden; background: var(--paper);
  padding: calc(var(--u) * 54) calc(var(--u) * 40); display: flex; flex-direction: column; align-items: center; text-align: center; gap: calc(var(--u) * 14);
  box-shadow: 0 1px 0 #2e2e2a14, 0 40px 70px -40px #2e2e2a80;
}
.menu_face::before { content: ""; position: absolute; inset: calc(var(--u) * 12); border: 1px solid #2e2e2a26; pointer-events: none; }
.is-feature .menu_face { background: var(--olive-deep); --fg: var(--ivory); --soft: #f9f7f2b3; }
.is-feature .menu_face::before { border-color: #f9f7f240; }
.menu_back { transform: rotateY(180deg); justify-content: center; }
.menu_front .l2, .menu_back > .l2 { color: var(--soft); }
.menu_sprig { width: calc(var(--u) * 110); height: calc(var(--u) * 22); color: var(--sage); margin: calc(var(--u) * 6) 0; }
.menu_price { font-size: calc(var(--u) * 130); margin-top: auto; }
.menu_front .p1 { color: var(--soft); max-width: calc(var(--u) * 250); }
.menu_turn { margin-top: auto; }
.menu_back ul { display: flex; flex-direction: column; gap: calc(var(--u) * 12); margin: calc(var(--u) * 10) 0 calc(var(--u) * 24); }
.menu_back li { color: var(--fg); }
.menu_back li::after { content: "·"; display: block; color: var(--sage); margin-top: calc(var(--u) * 10); }
.menu_back li:last-child::after { content: none; }
.pill { display: inline-block; padding: calc(var(--u) * 14) calc(var(--u) * 26); border: 1px solid var(--fg); border-radius: 100px; }
.menus_note { text-align: center; margin-top: calc(var(--u) * 90); color: var(--soft); }
.menu { position: relative; }
.menu_badge.l2 { color: var(--charcoal) !important; }
.menu_badge { position: absolute; z-index: 3; top: calc(var(--u) * -14); left: 50%; transform: translateX(-50%); padding: calc(var(--u) * 8) calc(var(--u) * 16); border-radius: 100px; background: var(--blush); color: var(--charcoal); white-space: nowrap; }
.menus_more { display: flex; flex-direction: column; max-width: calc(var(--u) * 900); margin: calc(var(--u) * 70) auto 0; border-top: 1px solid var(--line); }
.more_line { display: grid; grid-template-columns: calc(var(--u) * 220) 1fr; align-items: baseline; padding: calc(var(--u) * 26) 0; border-bottom: 1px solid var(--line); }
.more_k { color: var(--soft); }
.more_line .h5 { font-size: calc(var(--u) * 36); }

/* =========================================================
   GUESTBOOK
   ========================================================= */
.guest { padding: calc(var(--u) * 190) 0; }
.guest_wrap { display: grid; grid-template-columns: .8fr 1.2fr; align-items: center; gap: calc(var(--u) * 60); }
.guest_lead { color: var(--soft); max-width: calc(var(--u) * 380); margin-top: calc(var(--u) * 30); }
.guest_script { margin: calc(var(--u) * -20) 0 0 calc(var(--u) * 40); transform: rotate(-6deg); font-size: calc(var(--u) * 104); white-space: nowrap; }
.guest_nav { display: flex; align-items: center; gap: calc(var(--u) * 24); margin-top: calc(var(--u) * 50); }
.round { width: calc(var(--u) * 64); height: calc(var(--u) * 64); border-radius: 50%; border: 1px solid var(--fg); display: flex; align-items: center; justify-content: center; }
.round svg { width: calc(var(--u) * 22); height: calc(var(--u) * 12); }
[data-book-prev] svg { transform: scaleX(-1); }
.book { position: relative; height: calc(var(--u) * 560); perspective: 2600px; }
.book_page { position: absolute; top: 0; bottom: 0; width: 50%; background: var(--paper); box-shadow: 0 50px 90px -50px #2e2e2a80; }
.book_left { left: 0; border-radius: calc(var(--u) * 6) 0 0 calc(var(--u) * 6); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: calc(var(--u) * 20); background: linear-gradient(90deg, var(--paper) 80%, #efe9df); }
.book_right { right: 0; border-radius: 0 calc(var(--u) * 6) calc(var(--u) * 6) 0; background: linear-gradient(90deg, #efe9df, var(--paper) 18%); }
.book_mono { height: calc(var(--u) * 120); color: var(--gold); }
.book_left .a2 { color: var(--olive-deep); }
.leaf { position: absolute; top: 0; bottom: 0; right: 0; width: 50%; transform-origin: 0% 50%; transform-style: preserve-3d; }
.leaf_face { position: absolute; inset: 0; backface-visibility: hidden; -webkit-backface-visibility: hidden; background: linear-gradient(90deg, #efe9df, var(--paper) 16%); border-radius: 0 calc(var(--u) * 6) calc(var(--u) * 6) 0; }
.leaf_front { padding: calc(var(--u) * 70) calc(var(--u) * 60); display: flex; flex-direction: column; justify-content: center; gap: calc(var(--u) * 22); }
.leaf_front .a2 { color: var(--olive-deep); font-size: calc(var(--u) * 46); }
.leaf_front .l2 { color: var(--soft); }
.leaf_back { transform: rotateY(180deg); background: linear-gradient(270deg, #efe9df, var(--paper) 16%); border-radius: calc(var(--u) * 6) 0 0 calc(var(--u) * 6); }

/* =========================================================
   FINE PRINT
   ========================================================= */
.fine { padding: calc(var(--u) * 190) 0 calc(var(--u) * 220); overflow: clip; }
.fine_wrap { display: grid; grid-template-columns: .9fr 1.1fr; gap: calc(var(--u) * 80); }
.fine_head { position: relative; }
.fine_flower { width: calc(var(--u) * 420); margin-top: calc(var(--u) * 60); margin-left: calc(var(--u) * -60); }
.qa { border-top: 1px solid var(--line); }
.qa:last-child { border-bottom: 1px solid var(--line); }
.qa_q { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: calc(var(--u) * 20); padding: calc(var(--u) * 30) 0; text-align: left; }
.qa_ico { width: calc(var(--u) * 16); height: calc(var(--u) * 16); flex: none; color: var(--fg); transition: transform .8s cubic-bezier(.75,0,.25,1); }
.qa.is-open .qa_ico { transform: rotate(135deg); }
.qa_a { height: 0; overflow: hidden; }
.qa_a .p1 { color: var(--soft); padding: 0 calc(var(--u) * 80) calc(var(--u) * 34) 0; }

/* =========================================================
   RSVP + FOOTER
   ========================================================= */
.rsvp { padding: calc(var(--u) * 200) 0 0; overflow: clip; }
.rsvp_wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: calc(var(--u) * 80); }
.rsvp_head .h1 { font-size: calc(var(--u) * 132); white-space: nowrap; }
.rsvp_script { margin: calc(var(--u) * -18) 0 calc(var(--u) * 34) calc(var(--u) * 40); transform: rotate(-6deg); font-size: calc(var(--u) * 78); white-space: nowrap; }
.rsvp_lead { color: var(--soft); max-width: calc(var(--u) * 420); }
.rsvp_card {
  position: relative; background: var(--paper); padding: calc(var(--u) * 70) calc(var(--u) * 70) calc(var(--u) * 64);
  display: flex; flex-direction: column; gap: calc(var(--u) * 20); transform: rotate(1.5deg);
  box-shadow: 0 60px 100px -40px #0000008c;
}
.rsvp_border { position: absolute; inset: calc(var(--u) * 14); border: 1px solid #2e2e2a26; pointer-events: none; }
.rsvp_card_t { font-size: calc(var(--u) * 48); color: var(--olive-deep); margin: calc(var(--u) * -6) 0 calc(var(--u) * 20); }
.field { display: flex; flex-direction: column; gap: calc(var(--u) * 8); flex: 1; min-width: 0; }
.field input, .field select, .field textarea { width: 100%; min-width: 0; }
.field .l2 { color: var(--soft); }
.field input, .field select, .field textarea {
  appearance: none; -webkit-appearance: none; border: 0; border-bottom: 1px solid #2e2e2a40; background: transparent; border-radius: 0;
  font-family: var(--f-display); font-size: calc(var(--u) * 30); padding: calc(var(--u) * 6) 0; color: var(--charcoal); outline: none;
  transition: border-color .4s;
}
.field input::placeholder, .field textarea::placeholder { color: #2e2e2aad; }
.field textarea { resize: none; font-size: calc(var(--u) * 24); line-height: 1.3; }
.rsvp_promise { margin-top: calc(var(--u) * 36); color: var(--blush); }
.rsvp_error { color: #9e5d58; opacity: 0; transition: opacity .3s; }
.rsvp_error.is-on { opacity: 1; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--olive); }
.field_row { display: flex; gap: calc(var(--u) * 30); }
.check { display: flex; align-items: center; gap: calc(var(--u) * 12); margin-top: calc(var(--u) * 10); cursor: pointer; }
.check input { accent-color: var(--olive); width: max(16px, calc(var(--u) * 16)); height: max(16px, calc(var(--u) * 16)); flex: none; }
.rsvp_consent, .cart_agree { align-items: flex-start; }
.rsvp_consent input, .cart_agree input { margin-top: .2em; }
.rsvp_consent a, .cart_agree a { text-decoration: underline; text-underline-offset: 2px; }
.rsvp_send { margin-top: calc(var(--u) * 16); align-self: flex-start; background: var(--olive-deep); padding: calc(var(--u) * 18) calc(var(--u) * 34); border-radius: 100px; }
.rsvp_send .l2 { color: var(--ivory); }
.rsvp_seal { position: absolute; right: calc(var(--u) * 50); bottom: calc(var(--u) * 50); width: calc(var(--u) * 120); height: calc(var(--u) * 120); border-radius: 50%; color: #f3e6e2; background: radial-gradient(circle at 35% 30%, #c98f88, #9e5d58 60%, #7e4541); box-shadow: inset 0 0 0 6px #0000001a, 0 8px 18px -6px #7e454199; opacity: 0; pointer-events: none; }
.rsvp_seal .logo-mark { position: absolute; inset: 0; margin: auto; height: 62%; }
.rsvp_thanks { position: absolute; left: calc(var(--u) * 70); bottom: calc(var(--u) * 30); color: var(--olive-deep); font-size: calc(var(--u) * 30); opacity: 0; }
.foot { margin-top: calc(var(--u) * 200); padding-bottom: calc(var(--u) * 110); }
.foot_row { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding-top: calc(var(--u) * 40); border-top: 1px solid var(--line); }
.foot_mail { text-transform: none; }

/* =========================================================
   CART — header button + slide-out order
   ========================================================= */
.nav_cart { display: inline-flex; align-items: center; gap: calc(var(--u) * 10); color: var(--fg); }
.nav_cart .l2 { color: var(--fg); transition: color .5s; }
.nav_cart_n { min-width: calc(var(--u) * 24); height: calc(var(--u) * 24); padding: 0 calc(var(--u) * 6); border: 1px solid currentColor; border-radius: 100px; display: inline-flex; align-items: center; justify-content: center; letter-spacing: 0; line-height: 1; }
.nav_cart.has-items .nav_cart_n { background: var(--blush); border-color: var(--blush); color: var(--charcoal); }
.cart { position: fixed; inset: 0; z-index: 9800; visibility: hidden; }
.cart.is-open { visibility: visible; }
.cart_veil { position: absolute; inset: 0; background: #1d1d1a80; backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }
.cart_panel {
  position: absolute; top: calc(var(--u) * 16); right: calc(var(--u) * 16); bottom: calc(var(--u) * 16); width: calc(var(--u) * 520);
  background: var(--paper); display: flex; flex-direction: column; padding: calc(var(--u) * 36) calc(var(--u) * 40) calc(var(--u) * 34);
  box-shadow: -40px 0 90px -30px #0000008c; overflow-y: auto; transform-origin: 100% 100%;
}
.cart_panel::before { content: ""; position: absolute; inset: calc(var(--u) * 12); border: 1px solid #2e2e2a1f; pointer-events: none; }
.cart_head { display: flex; justify-content: space-between; align-items: center; }
.cart_head .l2 { color: var(--soft); }
.cart_close { cursor: pointer; }
.cart_title { font-size: calc(var(--u) * 58); color: var(--olive-deep); margin: calc(var(--u) * 26) 0 calc(var(--u) * 20); }
.cart_items { flex: 1; }
.cart_item { display: grid; grid-template-columns: 1fr auto auto; align-items: center; column-gap: calc(var(--u) * 20); padding: calc(var(--u) * 20) 0; border-top: 1px solid var(--line); }
.cart_item:last-child { border-bottom: 1px solid var(--line); }
.cart_item_name .h5 { font-size: calc(var(--u) * 24); }
.cart_item_name .l2 { color: var(--soft); margin-top: calc(var(--u) * 6); }
.cart_item_price { font-size: calc(var(--u) * 26); min-width: calc(var(--u) * 80); text-align: right; }
.cart_qty { display: flex; align-items: center; gap: calc(var(--u) * 12); }
.cart_qty button { width: calc(var(--u) * 26); height: calc(var(--u) * 26); border: 1px solid var(--line); border-radius: 50%; line-height: 1; font-size: calc(var(--u) * 14); color: var(--fg); }
.cart_qty button:hover { background: var(--sand); }
.cart_qty.is-one { visibility: hidden; }
.cart_remove { grid-column: 1 / -1; justify-self: start; margin-top: calc(var(--u) * 10); color: var(--soft); border-bottom: 1px solid currentColor; letter-spacing: .2em; }
.cart_empty { flex: 1; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: calc(var(--u) * 16); }
.cart_empty .p1 { color: var(--soft); max-width: calc(var(--u) * 320); }
.cart_foot { padding-top: calc(var(--u) * 26); }
.cart_total { display: flex; justify-content: space-between; align-items: baseline; }
.cart_total .l2 { color: var(--soft); }
.cart_note { color: var(--soft); margin: calc(var(--u) * 6) 0 calc(var(--u) * 24); text-align: right; }
.cart_checkout { width: 100%; background: var(--olive-deep); padding: calc(var(--u) * 20); border-radius: 100px; transition: background .4s; }
.cart_checkout:hover { background: var(--charcoal); }
.cart_checkout:disabled { opacity: .6; }
.cart_checkout .l2 { color: var(--ivory); }
.cart_msg { color: var(--soft); font-size: calc(var(--u) * 12); margin-top: calc(var(--u) * 16); text-align: center; }
.cart_msg:empty { display: none; }
button.pill { cursor: pointer; }
.pill.is-added { background: var(--fg); }
.pill.is-added .l2 { color: var(--bg); }
.is-feature .pill.is-added { background: var(--ivory); }
.is-feature .pill.is-added .l2 { color: var(--olive-deep); }
.rsvp_order { margin-top: 0; padding: calc(var(--u) * 12) calc(var(--u) * 14); background: #e8dccf80; }
.rsvp_order[hidden], .rsvp_calendar[hidden] { display: none; }
.rsvp_calendar { align-self: flex-start; color: var(--olive); border-bottom: 1px solid currentColor; padding-bottom: 2px; }

/* =========================================================
   COST ESTIMATOR — full-screen overlay
   ========================================================= */
.place_card_cta { display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: calc(var(--u) * 6); padding: calc(var(--u) * 14) calc(var(--u) * 18); background: var(--olive-deep); border-radius: 100px; transition: background .4s; }
.place_card_cta .l2 { color: var(--ivory); }
.place_card_cta:hover { background: var(--charcoal); }
.place_est { opacity: 1; }
.place_est .h5 { color: var(--olive-deep); }
.place_est .place_tag { color: var(--olive); }
.est { position: fixed; inset: 0; z-index: 9700; visibility: hidden; }
.est.is-open { visibility: visible; }
.est_panel { position: absolute; inset: 0; background: var(--ivory); overflow-y: auto; padding: calc(var(--u) * 110) var(--side) calc(var(--u) * 80); }
.est_close { position: absolute; top: calc(var(--u) * 48); right: calc(var(--u) * 48); cursor: pointer; border-bottom: 1px solid currentColor; padding-bottom: 2px; color: var(--fg); }
.est_grid { display: grid; grid-template-columns: 1fr 1.05fr; gap: calc(var(--u) * 90); align-items: start; max-width: calc(var(--u) * 1400); margin: 0 auto; }
.est_script { margin: calc(var(--u) * -16) 0 calc(var(--u) * 20) calc(var(--u) * 140); transform: rotate(-6deg); font-size: calc(var(--u) * 110); white-space: nowrap; }
.est_label { color: var(--soft); margin: calc(var(--u) * 34) 0 calc(var(--u) * 16); }
.est_places { display: grid; grid-template-columns: repeat(3, 1fr); gap: calc(var(--u) * 12); }
.est_place { position: relative; display: flex; flex-direction: column; gap: calc(var(--u) * 10); padding: calc(var(--u) * 8) calc(var(--u) * 8) calc(var(--u) * 14); background: var(--paper); text-align: left; box-shadow: 0 1px 0 #2e2e2a14; transition: transform .5s cubic-bezier(.25,1,.5,1), box-shadow .5s; }
.est_place_img { aspect-ratio: 16 / 10; overflow: hidden; }
.est_place_img img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.6); opacity: .7; transition: filter .5s, opacity .5s, transform 1.2s cubic-bezier(.25,1,.5,1); }
.est_place .h5 { font-size: calc(var(--u) * 24); padding-left: calc(var(--u) * 4); }
.est_place:hover img { opacity: 1; transform: scale(1.06); }
.est_place.is-on { transform: translateY(calc(var(--u) * -6)); box-shadow: 0 30px 50px -30px #2e2e2a80, inset 0 0 0 1px var(--olive-deep); }
.est_place.is-on img { filter: none; opacity: 1; }
.est_guests { display: flex; align-items: center; gap: calc(var(--u) * 30); }
.est_step { width: calc(var(--u) * 52); height: calc(var(--u) * 52); border-radius: 50%; border: 1px solid var(--line); font-size: calc(var(--u) * 22); color: var(--fg); transition: background .3s; }
.est_step:hover { background: var(--sand); }
.est_guest_n { display: flex; align-items: baseline; gap: calc(var(--u) * 14); min-width: calc(var(--u) * 260); }
.est_guest_n .h1 { font-size: calc(var(--u) * 120); font-variant-numeric: tabular-nums; }
.est_guest_n .l2 { color: var(--soft); }
.est_range { --fill: 30%; appearance: none; -webkit-appearance: none; width: 100%; height: calc(var(--u) * 28); background: transparent; margin-top: calc(var(--u) * 18); cursor: pointer; }
.est_range::-webkit-slider-runnable-track { height: 2px; background: linear-gradient(90deg, var(--olive-deep) var(--fill), #2e2e2a26 var(--fill)); }
.est_range::-moz-range-track { height: 2px; background: #2e2e2a26; }
.est_range::-moz-range-progress { height: 2px; background: var(--olive-deep); }
.est_range::-webkit-slider-thumb { -webkit-appearance: none; width: calc(var(--u) * 26); height: calc(var(--u) * 26); margin-top: calc(var(--u) * -12); border-radius: 50%; background: var(--paper); border: 1px solid var(--olive-deep); box-shadow: 0 6px 14px -6px #2e2e2a99; }
.est_range::-moz-range-thumb { width: calc(var(--u) * 26); height: calc(var(--u) * 26); border-radius: 50%; background: var(--paper); border: 1px solid var(--olive-deep); }
.est_scale { display: flex; justify-content: space-between; margin-top: calc(var(--u) * 8); }
.est_scale .l2 { color: var(--soft); }
.est_card { background: var(--paper); padding: calc(var(--u) * 40) calc(var(--u) * 44); box-shadow: 0 50px 90px -50px #2e2e2a80; position: relative; }
.est_card::before { content: ""; position: absolute; inset: calc(var(--u) * 12); border: 1px solid #2e2e2a1f; pointer-events: none; }
.est_for { color: var(--soft); }
.est_total { font-size: calc(var(--u) * 150); margin: calc(var(--u) * 14) 0 calc(var(--u) * 8); font-variant-numeric: tabular-nums; }
.est_range_txt { color: var(--soft); }
.est_pp { color: var(--olive); margin-top: calc(var(--u) * 8); }
.est_break { margin-top: calc(var(--u) * 26); }
.est_break li, .est_cmp { display: grid; grid-template-columns: calc(var(--u) * 170) 1fr calc(var(--u) * 90); align-items: center; gap: calc(var(--u) * 16); padding: calc(var(--u) * 9) 0; border-top: 1px solid var(--line); }
.est_break .p1, .est_cmp .p1 { font-size: calc(var(--u) * 13); }
.est_bar { height: calc(var(--u) * 6); background: #2e2e2a0f; border-radius: 10px; overflow: hidden; }
.est_bar i { display: block; height: 100%; width: 0; background: var(--sage); border-radius: 10px; }
.est_amt { text-align: right; font-variant-numeric: tabular-nums; }
.est_compare { margin-top: calc(var(--u) * 36); }
.est_compare > .l2 { color: var(--soft); margin-bottom: calc(var(--u) * 10); }
.est_cmp { width: 100%; text-align: left; cursor: pointer; opacity: .6; transition: opacity .4s; }
.est_cmp:hover { opacity: 1; }
.est_cmp.is-on { opacity: 1; }
.est_cmp.is-on .est_bar i { background: var(--olive-deep); }
.est_cmp.is-on .p1:first-child { font-weight: 700; }
.est_cta { width: 100%; margin-top: calc(var(--u) * 34); background: var(--olive-deep); padding: calc(var(--u) * 22); border-radius: 100px; transition: background .4s; }
.est_cta .l2 { color: var(--ivory); }
.est_cta:hover { background: var(--charcoal); }
.est_note { font-size: calc(var(--u) * 12); line-height: 1.5; color: var(--soft); margin-top: calc(var(--u) * 16); text-align: center; }

/* =========================================================
   SUB-PAGES — vendor booking & guides
   ========================================================= */
.sub-hero { padding: calc(var(--u) * 200) 0 calc(var(--u) * 140); }
.back { display: inline-block; margin-bottom: calc(var(--u) * 60); color: var(--soft); }
.sub_script { margin: calc(var(--u) * -20) 0 0 calc(var(--u) * 240); transform: rotate(-6deg); font-size: calc(var(--u) * 140); }
.sub_intro { display: grid; grid-template-columns: 1fr 1fr; gap: calc(var(--u) * 60); max-width: calc(var(--u) * 1000); margin-top: calc(var(--u) * 70); }
.sub_intro .p1 { color: var(--soft); }
.offers { padding: calc(var(--u) * 160) 0; }
.offers_row { display: flex; justify-content: center; gap: calc(var(--u) * 50); perspective: 2000px; }
.offer { position: relative; width: calc(var(--u) * 480); background: var(--paper); padding: calc(var(--u) * 60) calc(var(--u) * 50); display: flex; flex-direction: column; align-items: center; text-align: center; gap: calc(var(--u) * 14); box-shadow: 0 1px 0 #2e2e2a14, 0 40px 70px -40px #2e2e2a80; }
.offer::before { content: ""; position: absolute; inset: calc(var(--u) * 12); border: 1px solid #2e2e2a26; pointer-events: none; }
.offer.is-feature { background: var(--olive-deep); --fg: var(--ivory); --soft: #f9f7f2b3; transform: translateY(calc(var(--u) * -30)); }
.offer.is-feature::before { border-color: #f9f7f240; }
.offer > .l2 { color: var(--soft); }
.offer ul { display: flex; flex-direction: column; gap: calc(var(--u) * 10); margin: calc(var(--u) * 16) 0 calc(var(--u) * 24); }
.offer li { font-size: calc(var(--u) * 13); color: var(--fg); padding-top: calc(var(--u) * 10); border-top: 1px solid var(--line); }
.offer .menu_price { margin-top: 0; font-size: calc(var(--u) * 120); }
.offers_note { text-align: center; color: var(--soft); margin-top: calc(var(--u) * 80); }
.coord { padding: calc(var(--u) * 180) 0; }
.coord_wrap { display: grid; grid-template-columns: 1fr 1fr; gap: calc(var(--u) * 100); align-items: center; }
.coord_lead { color: var(--soft); max-width: calc(var(--u) * 480); margin: calc(var(--u) * 30) 0 calc(var(--u) * 40); }
.coord_list li { display: grid; grid-template-columns: calc(var(--u) * 70) 1fr; row-gap: calc(var(--u) * 6); padding: calc(var(--u) * 26) 0; border-top: 1px solid var(--line); }
.coord_list .a2 { grid-row: 1 / 3; color: var(--olive); }
.coord_list .p1 { color: var(--soft); }
.guides { padding: calc(var(--u) * 140) 0 calc(var(--u) * 180); }
.guides_tabs { display: flex; gap: calc(var(--u) * 14); margin-bottom: calc(var(--u) * 70); }
.gtab { display: flex; flex-direction: column; align-items: flex-start; gap: calc(var(--u) * 6); padding: calc(var(--u) * 20) calc(var(--u) * 30); border: 1px solid var(--line); border-radius: calc(var(--u) * 4); transition: opacity .4s, background .4s; }
.gtab:not(.is-active) .h5 { color: var(--soft); }   /* quieter, but still readable (contrast ≥ 4.5:1) */
.gtab .l2 { color: var(--soft); }
.gtab.is-active { opacity: 1; background: var(--paper); box-shadow: 0 20px 40px -24px #2e2e2a66; }
.guides_grid { display: none; grid-template-columns: repeat(3, 1fr); gap: calc(var(--u) * 40); }
.guides_grid.is-active { display: grid; }
.guide { background: var(--paper); padding: calc(var(--u) * 14) calc(var(--u) * 14) calc(var(--u) * 30); display: flex; flex-direction: column; gap: calc(var(--u) * 14); box-shadow: 0 40px 70px -46px #2e2e2a80; }
.guide > * { margin-left: calc(var(--u) * 12); margin-right: calc(var(--u) * 12); }
.guide > .guide_cover { margin: 0; }
.guide_cover { position: relative; aspect-ratio: 16 / 10; overflow: hidden; }
.guide_cover img { width: 100%; height: 100%; object-fit: cover; }
.is-soon .guide_cover img { filter: grayscale(.8) brightness(1.05); opacity: .7; }
.guide_badge { position: absolute; left: calc(var(--u) * 12); top: calc(var(--u) * 12); padding: calc(var(--u) * 6) calc(var(--u) * 12); border-radius: 100px; background: var(--paper); }
.guide .p1 { color: var(--soft); font-size: calc(var(--u) * 13); flex: 1; }
.guide_foot { display: flex; align-items: baseline; gap: calc(var(--u) * 12); }
.guide_foot .l2 { color: var(--soft); }
.guide .pill { align-self: flex-start; }
.pill.is-off { opacity: .45; border-style: dashed; }
.guides_more { display: flex; justify-content: space-between; align-items: center; margin-top: calc(var(--u) * 90); padding-top: calc(var(--u) * 40); border-top: 1px solid var(--line); }
.sub-foot { padding-top: 0; }
.sub-foot .foot { margin-top: 0; padding-top: calc(var(--u) * 60); }

@media (prefers-reduced-motion: reduce) { .grain { animation: none; } }

/* =========================================================
   DESTINATION VIDEOS — "Watch the video"
   ========================================================= */
.place_card_watch, .est_watch { display: flex; align-items: center; gap: calc(var(--u) * 12); color: var(--olive-deep); }
.place_card_watch { justify-content: center; width: 100%; padding: calc(var(--u) * 13) calc(var(--u) * 18); border: 1px solid var(--olive-deep); border-radius: 100px; transition: background .4s, color .4s; }
.place_card_watch:hover { background: var(--olive-deep); color: var(--ivory); }
.place_card_watch svg, .est_watch svg { width: calc(var(--u) * 11); height: calc(var(--u) * 11); flex: none; }
.place_card_watch .l2, .est_watch .l2 { color: inherit !important; }
.est_watch { margin-top: calc(var(--u) * 18); padding: calc(var(--u) * 11) calc(var(--u) * 20); border: 1px solid var(--line); border-radius: 100px; transition: border-color .4s, background .4s, color .4s; }
.est_watch:hover { background: var(--olive-deep); border-color: var(--olive-deep); color: var(--ivory); }

.watch { position: fixed; inset: 0; z-index: 9900; visibility: hidden; display: flex; align-items: center; justify-content: center; }
.watch.is-open { visibility: visible; }
.watch_veil { position: absolute; inset: 0; background: #1f241cd9; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.watch_box { position: relative; width: min(calc(var(--u) * 1180), calc((100vh - calc(var(--u) * 200)) * 16 / 9)); }
.watch_head { display: flex; justify-content: space-between; align-items: center; padding-bottom: calc(var(--u) * 18); }
.watch_head .l2, .watch_close { color: var(--ivory); }
.watch_frame { position: relative; aspect-ratio: 16 / 9; background: #000; overflow: hidden; box-shadow: 0 60px 120px -40px #000a; }
.watch_frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.watch_soon { position: absolute; inset: 0; }
.watch_soon img { width: 100%; height: 100%; object-fit: cover; filter: brightness(.6) saturate(.9); }
.watch_soon_txt { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; color: var(--ivory); }
.watch_soon_txt .h3, .watch_soon_txt .l2 { color: var(--ivory); }
.watch_soon_txt .a2 { color: var(--sand); font-size: calc(var(--u) * 52); margin: calc(var(--u) * -6) 0 calc(var(--u) * 22); transform: rotate(-4deg); }
.watch_soon_ring { width: calc(var(--u) * 96); height: calc(var(--u) * 96); border-radius: 50%; border: 1px solid #f9f7f2b3; background: #f9f7f21f; display: flex; align-items: center; justify-content: center; margin-bottom: calc(var(--u) * 28); }
.watch_soon_ring svg { width: calc(var(--u) * 26); height: calc(var(--u) * 26); margin-left: calc(var(--u) * 4); }

/* =========================================================
   GUESTBOOK — the couple beside their words
   ========================================================= */
.leaf_sig { display: flex; align-items: center; gap: calc(var(--u) * 22); margin-top: calc(var(--u) * 6); }
.leaf_photo { position: relative; flex: none; width: calc(var(--u) * 96); height: calc(var(--u) * 120); border-radius: 100px; overflow: hidden; background: var(--sand); box-shadow: 0 0 0 calc(var(--u) * 5) var(--paper), 0 0 0 calc(var(--u) * 6) #8f725466; }
.leaf_photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.leaf_photo > span { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--gold) !important; font-size: calc(var(--u) * 34) !important; }
.leaf_photo:not(.is-empty) > span { display: none; }
.leaf_sig .a2 { line-height: 1; white-space: nowrap; font-size: calc(var(--u) * 40) !important; }
.leaf_sig .l2 { margin-top: calc(var(--u) * 8); }

/* =========================================================
   ACCESSIBILITY
   ========================================================= */
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
/* a clear focus ring for keyboard users (mouse clicks don't show it) */
:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; border-radius: 2px; }
.field input:focus-visible, .field textarea:focus-visible, .field select:focus-visible { outline: 2px solid var(--olive-deep); outline-offset: 4px; }
.skip { position: fixed; left: 16px; top: 16px; z-index: 12000; padding: 12px 18px; background: var(--olive-deep); color: var(--ivory); font-family: var(--f-body); font-size: 14px; border-radius: 100px; transform: translateY(-200%); transition: transform .2s; }
.skip:focus { transform: none; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* =========================================================
   LEGAL PAGES + FOOTER LINKS
   ========================================================= */
.legal-hero { padding-bottom: calc(var(--u) * 90); }
.legal_date { margin-top: calc(var(--u) * 120); color: var(--soft); }
.legal { padding: calc(var(--u) * 110) 0 calc(var(--u) * 160); }
.legal_wrap { display: grid; grid-template-columns: calc(var(--u) * 260) minmax(0, 1fr); gap: calc(var(--u) * 90); align-items: start; }
.legal_toc { position: relative; }
body[data-page="legal"] .chapter { display: none; }   /* the fixed chapter label would sit on top of the policy text */
.legal_toc .l2 { color: var(--soft); margin-bottom: calc(var(--u) * 18); }
.legal_toc ol { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.legal_toc li { border-bottom: 1px solid var(--line); }
.legal_toc a { display: block; padding: calc(var(--u) * 12) 0; font-family: var(--f-body); font-size: max(13px, calc(var(--u) * 14)); color: var(--fg); }
.legal_toc a:hover { color: var(--olive-deep); }
.legal_body { max-width: calc(var(--u) * 780); font-family: var(--f-body); font-size: max(15px, calc(var(--u) * 17)); line-height: 1.65; color: var(--charcoal); }
.legal_body h2 { font-family: var(--f-display); text-transform: uppercase; font-weight: 400; font-size: calc(var(--u) * 40); line-height: 1; letter-spacing: -.01em; margin: calc(var(--u) * 64) 0 calc(var(--u) * 18); scroll-margin-top: calc(var(--u) * 170); }
.legal_body p, .legal_body ul { margin: 0 0 1em; }
.legal_body ul { padding-left: 1.2em; }
.legal_body li { margin-bottom: .45em; }
.legal_body a { color: var(--olive-deep); text-decoration: underline; text-underline-offset: 3px; }
.legal_body code { font-size: .9em; background: #2e2e2a0f; padding: .1em .35em; border-radius: 3px; }
.legal_note { padding: calc(var(--u) * 18) calc(var(--u) * 22); border-left: 3px solid var(--gold-text); background: #8f72541a; font-size: .92em; }
.legal_table { overflow-x: auto; margin: 0 0 1.4em; }
.legal_table table { width: 100%; border-collapse: collapse; font-size: .88em; line-height: 1.5; }
.legal_table th, .legal_table td { text-align: left; vertical-align: top; padding: .8em .9em .8em 0; border-bottom: 1px solid var(--line); }
.legal_table th { font-weight: 700; font-size: .85em; letter-spacing: .04em; text-transform: uppercase; color: var(--soft); }
/* details still to be filled in by the business — impossible to miss */
mark.todo { background: #ffe27a; color: #2e2e2a; padding: 0 .25em; border-radius: 2px; }
.foot_legal { display: flex; justify-content: space-between; align-items: center; gap: calc(var(--u) * 30); margin-top: calc(var(--u) * 28); padding-top: calc(var(--u) * 22); border-top: 1px solid #f9f7f229; }
.foot_links { display: flex; gap: calc(var(--u) * 28); }
.foot_links a, .foot_row a { text-decoration: none; }
.foot_links a:hover { text-decoration: underline; text-underline-offset: 3px; }
.watch_gate { max-width: calc(var(--u) * 460); margin: calc(var(--u) * 14) auto calc(var(--u) * 22); color: #f9f7f2e6 !important; }
.watch_gate a { color: inherit; text-decoration: underline; }
.watch_go { padding: calc(var(--u) * 16) calc(var(--u) * 28); border-radius: 100px; background: var(--ivory); }
.watch_go .l2 { color: var(--charcoal) !important; }
.guest_note { margin-top: calc(var(--u) * 18); color: var(--soft); max-width: calc(var(--u) * 380); }
.foot_ai { margin-top: calc(var(--u) * 8); opacity: .85; }
.legal_body ul { list-style: disc; } .legal_body ul ul { list-style: circle; margin: .4em 0 0; }

/* the opening page is only the title: the top bar waits until you are inside the letter */
.ui > * { transition: opacity .6s ease; }
.ui.is-away > * { opacity: 0; pointer-events: none !important; }
.ui.is-away > *:focus-within { opacity: 1; pointer-events: auto !important; }   /* keyboard users can still reach the menu */
