/* Witman Hills at Flat Rock — site styles (2026-09-25 rebuild). Replaces the EduChamp theme CSS. */

@font-face {
	font-family: 'Skema';
	src: url('../../SkemaProDisplay-XBold.ttf') format('truetype');
	font-weight: 700;
	font-display: swap;
}

:root {
	--cream: #f8efe3;
	--paper: #fffaf2;
	--tan: #bfac91;
	--gold: #c49c5b;
	--gold-light: #d6b57d;
	--gold-deep: #a8803f;   /* headings on cream: 3.2:1 (large text) */
	--gold-ink: #86652b;    /* small gold text on cream: 5:1 */
	--brown: #8b572b;
	--navy: #47637b;
	--navy-dark: #3a5266;
	--ink: #162636;
	--text: #141e30;
	--line: rgba(196, 156, 91, .45);
	--shadow-card: 0 0 25px rgba(29, 25, 0, .25);
	--shadow-soft: 0 14px 28px -16px rgba(40, 28, 8, .45);
	--ease-out: cubic-bezier(.23, 1, .32, 1);
	--topbar-h: 48px;
	--bar-h: 80px;
	--overlap: 90px;
	--gutter: 30px;
	--wrap: 1440px;         /* content width: header, page card, footer bar */
	--font-body: 'Rubik', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--font-ui: 'Dosis', 'Rubik', system-ui, sans-serif;
	--font-display: 'Skema', Georgia, 'Times New Roman', serif;
	--font-script: 'Gwendolyn', 'Brush Script MT', cursive;
}

*, *::before, *::after { box-sizing: border-box; }
html { background: var(--navy); -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--bar-h) + 16px); }
body {
	margin: 0;
	background: var(--tan);
	color: var(--text);
	font: 300 1.25rem/1.7 var(--font-body);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
body.wh-noscroll { overflow: hidden; }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
b, strong { font-weight: 500; }
p { margin: 0 0 1.1em; }
:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.wh-i { width: 1em; height: 1em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.wh-skip { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--ink); color: #fff; padding: 10px 16px; border-radius: 8px; font: 500 16px/1 var(--font-body); text-decoration: none; }
.wh-skip:focus { top: 12px; }
.wh-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Top bar ---------- */
.wh-topbar { background: var(--cream); color: var(--ink); }
.wh-topbar__inner { max-width: calc(var(--wrap) + 2 * var(--gutter)); margin: 0 auto; height: var(--topbar-h); padding: 0 var(--gutter); display: flex; justify-content: flex-end; align-items: center; gap: 28px; font: 400 16px/1 var(--font-body); }
.wh-topbar a, .wh-topbar__email { display: inline-flex; align-items: center; gap: 8px; color: var(--ink); text-decoration: none; }
.wh-topbar a:hover { text-decoration: underline; text-underline-offset: 3px; }
.wh-topbar .wh-i { color: var(--brown); font-size: 16px; }

/* ---------- Header bar ---------- */
.wh-bar { position: sticky; top: 0; z-index: 50; height: var(--bar-h); background: var(--navy); transition: box-shadow .3s ease; }
.wh-bar.is-stuck { box-shadow: 0 4px 16px rgba(0, 0, 0, .22); }
.wh-bar__inner { position: relative; max-width: calc(var(--wrap) + 2 * var(--gutter)); margin: 0 auto; height: 100%; padding: 0 var(--gutter); display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
.wh-logo { position: absolute; left: var(--gutter); top: calc(-1 * var(--topbar-h)); width: 320px; z-index: 2; transform-origin: left top; transition: transform .4s var(--ease-out); }
.wh-logo img { width: 100%; border-radius: 0 0 12px 12px; box-shadow: 0 0 0 1px var(--line), 0 10px 20px -8px rgba(22, 38, 54, .55); }

.wh-nav ul { list-style: none; margin: 0; padding: 0; display: flex; }
.wh-nav li > a { position: relative; display: block; padding: 8px 18px; font: 400 22px/1.5 var(--font-ui); color: #fff; text-decoration: none; white-space: nowrap; }
.wh-nav li > a::after { content: ""; position: absolute; left: 18px; right: 18px; bottom: 5px; height: 2px; border-radius: 2px; background: var(--gold-light); transform: scaleX(0); transition: transform .25s var(--ease-out); }
.wh-nav li > a:hover::after, .wh-nav li > a[aria-current]::after { transform: scaleX(1); }
.wh-nav__head, .wh-nav__contact, .wh-call, .wh-burger, .wh-scrim { display: none; }

@media (min-width: 1100px) {
	/* Stuck: the logo shrinks into the bar. Transform only, so page layout never changes. */
	.wh-bar.is-stuck .wh-logo { transform: translateY(var(--topbar-h)) scale(.63); }
	.wh-bar.is-stuck .wh-logo img { border-radius: 0 0 16px 16px; }
}
@media (min-width: 1100px) and (max-width: 1279px) {
	.wh-logo { width: 290px; }
	.wh-nav li > a { font-size: 19px; padding: 8px 12px; }
	.wh-nav li > a::after { left: 12px; right: 12px; }
}

@media (max-width: 1099px) {
	:root { --bar-h: 68px; --gutter: 16px; }
	.wh-topbar { display: none; }
	.wh-logo { top: 0; width: 190px; }
	.wh-logo img { border-radius: 0 0 10px 10px; }
	.wh-call { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 16px; border-radius: 999px; background: var(--gold); color: var(--ink); font: 600 18px/1 var(--font-ui); text-decoration: none; }
	.wh-call .wh-i { font-size: 17px; stroke-width: 2; }
	.wh-burger { display: grid; place-content: center; gap: 5px; width: 44px; height: 44px; padding: 0; border: 1px solid rgba(255, 255, 255, .45); border-radius: 10px; background: transparent; cursor: pointer; }
	.wh-burger span { display: block; width: 20px; height: 2px; border-radius: 2px; background: #fff; }

	.wh-nav { position: fixed; top: 0; right: 0; bottom: 0; z-index: 3; width: min(360px, 88vw); display: flex; flex-direction: column; overflow-y: auto; overscroll-behavior: contain; background: var(--cream); box-shadow: -12px 0 32px rgba(0, 0, 0, .25); transform: translateX(100%); visibility: hidden; transition: transform .38s var(--ease-out), visibility 0s linear .38s; }
	.wh-nav.is-open { transform: none; visibility: visible; transition: transform .38s var(--ease-out); }
	.wh-nav__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 14px 14px 20px; border-bottom: 1px solid var(--line); }
	.wh-nav__head img { width: 190px; border-radius: 8px; box-shadow: 0 0 0 1px var(--line); }
	.wh-nav__close { display: grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 50%; background: rgba(71, 99, 123, .12); color: var(--ink); font-size: 22px; cursor: pointer; }
	.wh-nav ul { flex-direction: column; padding: 12px 8px; }
	.wh-nav li > a { color: var(--ink); font-size: 24px; padding: 11px 16px; }
	.wh-nav li > a::after { left: 16px; right: auto; width: 40px; bottom: 7px; background: var(--gold); }
	.wh-nav li > a[aria-current] { font-weight: 600; }
	.wh-nav__contact { display: grid; gap: 10px; margin-top: auto; padding: 18px 20px 84px; border-top: 1px solid var(--line); }
	.wh-nav__contact .wh-btn { justify-content: center; font-size: 19px; }
	.wh-scrim { display: block; position: fixed; inset: 0; z-index: 2; background: rgba(22, 38, 54, .55); opacity: 0; visibility: hidden; transition: opacity .3s ease, visibility 0s linear .3s; }
	.wh-scrim.is-open { opacity: 1; visibility: visible; transition: opacity .3s ease; }
}
@media (max-width: 379px) {
	.wh-logo { width: 160px; }
	.wh-call { padding: 0 13px; }
	.wh-call span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
}

/* ---------- Hero slideshow (home) ---------- */
.wh-hero { position: relative; height: clamp(300px, 53.3vw, 768px); overflow: hidden; background: var(--navy); }
/* The incoming slide fades in over the outgoing one (.is-leaving stays opaque underneath until the fade is done).
   The slow zoom is an animation rather than a transition so it also runs on the first slide at load, and
   .is-paused (hero off screen, tab hidden) freezes it together with the slide timer in witman.js. */
.wh-hero__slide { position: absolute; inset: 0; margin: 0; opacity: 0; transition: opacity 1.4s ease; }
.wh-hero__slide img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.06); }
.wh-hero__slide.is-active { opacity: 1; z-index: 2; }
.wh-hero__slide.is-leaving { opacity: 1; z-index: 1; transition: none; }
.wh-hero__slide.is-active img, .wh-hero__slide.is-leaving img { animation: wh-kenburns 8s linear forwards; }
.wh-hero.is-paused .wh-hero__slide img { animation-play-state: paused; }
@keyframes wh-kenburns { from { transform: scale(1.06); } to { transform: scale(1); } }
.wh-hero__arrow { position: absolute; z-index: 3; top: calc(50% - var(--overlap) / 2); translate: 0 -50%; display: grid; place-items: center; width: 50px; height: 50px; padding: 0; border: 1px solid rgba(255, 255, 255, .6); border-radius: 50%; background: rgba(22, 38, 54, .35); color: #fff; font-size: 26px; cursor: pointer; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); transition: background-color .2s ease, scale .12s ease; }
.wh-hero__arrow:hover { background: rgba(22, 38, 54, .6); }
.wh-hero__arrow:active { scale: .94; }
.wh-hero__arrow--prev { left: 16px; }
.wh-hero__arrow--next { right: 16px; }
.wh-hero__dots { position: absolute; z-index: 3; left: 0; right: 0; bottom: calc(var(--overlap) + 18px); display: flex; justify-content: center; gap: 4px; }
.wh-hero__dots button { width: 28px; height: 28px; padding: 0; border: 0; background: none; cursor: pointer; display: grid; place-items: center; }
.wh-hero__dots button::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: rgba(255, 255, 255, .55); box-shadow: 0 0 4px rgba(0, 0, 0, .4); transition: background-color .2s, transform .2s; }
.wh-hero__dots button[aria-current]::before { background: #fff; transform: scale(1.25); }

/* Inner page photo banner */
.wh-banner { height: clamp(170px, 24vw, 340px); overflow: hidden; background: var(--navy); }
.wh-banner img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- Page card ---------- */
.wh-main { padding: 0 var(--gutter); }
.wh-card { position: relative; z-index: 3; max-width: var(--wrap); margin: calc(-1 * var(--overlap)) auto 0; padding: 48px clamp(20px, 5vw, 72px) 72px; background: var(--cream); border-radius: 65px 65px 0 0; box-shadow: var(--shadow-card); }
.wh-main--plain { padding-top: 32px; }
.wh-main--plain .wh-card { margin-top: 0; }

.wh-title { margin: 0; text-align: center; font: 700 clamp(2rem, 1.35rem + 2.4vw, 2.75rem)/1.2 var(--font-display); color: var(--gold-deep); text-wrap: balance; }
.wh-title__script { display: block; margin-top: .12em; font: 700 clamp(2.6rem, 1.9rem + 3vw, 3.9rem)/1.15 var(--font-script); color: var(--ink); }
.wh-orn { display: flex; align-items: center; gap: 12px; width: min(240px, 60%); margin: 20px auto 34px; color: var(--gold); }
.wh-orn::before, .wh-orn::after { content: ""; flex: 1; height: 1px; background: currentColor; }
.wh-orn span { width: 8px; height: 8px; background: currentColor; transform: rotate(45deg); }

.wh-prose { max-width: 44rem; margin: 0 auto; }
.wh-lead { max-width: 56rem; margin: 0 auto 1.5em; text-align: center; font-size: clamp(1.3rem, 1.1rem + .8vw, 1.6rem); font-weight: 300; line-height: 1.5; color: var(--ink); text-wrap: pretty; }
.wh-lead a, .wh-prose a, .wh-callout a { color: inherit; font-weight: 400; text-decoration: underline; text-decoration-color: var(--gold); text-decoration-thickness: 1.5px; text-underline-offset: .18em; transition: color .2s ease, text-decoration-color .2s ease; }
.wh-lead a:hover, .wh-prose a:hover, .wh-callout a:hover { color: var(--gold-ink); text-decoration-color: currentColor; }
.wh-closing { max-width: 56rem; margin: clamp(44px, 4.5vw, 68px) auto 0; text-align: center; font-size: clamp(1.2rem, 1.05rem + .6vw, 1.45rem); font-style: italic; line-height: 1.5; color: var(--ink); text-wrap: pretty; }
.wh-h2 { margin: 0 0 .55em; font: 700 clamp(1.45rem, 1.2rem + 1vw, 1.85rem)/1.25 var(--font-display); color: var(--ink); text-wrap: balance; }
.wh-center { text-align: center; }
.wh-section { margin-top: clamp(40px, 5vw, 64px); }

/* ---------- Buttons ---------- */
.wh-btns { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.wh-btn { position: relative; display: inline-flex; align-items: center; gap: 10px; min-height: 50px; padding: 10px 26px; border: 2px solid var(--navy); border-radius: 999px; background: var(--navy); color: #fff; font: 500 20px/1.2 var(--font-ui); text-decoration: none; cursor: pointer; transition: background-color .2s ease, border-color .2s ease, color .2s ease, transform .12s ease; }
.wh-btn:hover { background: var(--navy-dark); border-color: var(--navy-dark); }
.wh-btn:active { transform: scale(.97); }
.wh-btn .wh-i { font-size: 18px; }
.wh-btn--ghost { background: transparent; color: var(--ink); border-color: rgba(71, 99, 123, .55); }
.wh-btn--ghost:hover { background: rgba(71, 99, 123, .08); border-color: var(--navy); }
/* protectEmail() prints its own <a>; stretch it over the whole button */
.wh-btn--email a { color: inherit; text-decoration: none; }
.wh-btn--email a::after { content: ""; position: absolute; inset: -2px; border-radius: inherit; }
.wh-btn--email a:focus-visible { outline: none; }
.wh-btn--email:focus-within { outline: 3px solid var(--gold); outline-offset: 3px; }

/* ---------- Framed photos ---------- */
.wh-photos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(14px, 2.2vw, 28px); margin: 44px 0 0; }
.wh-frame {  /* Josh's original .marginpic treatment */
	margin: 0;
	padding: 11px;
	background: #faf4e9;
	border: 3px solid;
	border-color: #c59b5a #f8d49e #f8d49e #c59b5a;
	border-radius: 2px;
	box-shadow: 0 0 0 3px #faf4e9, 0 0 8px rgba(0, 0, 0, .52), inset 0 0 0 1px rgba(255, 255, 255, .6);
	transition: box-shadow .3s ease;
}
.wh-frame:hover { box-shadow: 0 0 0 4px #faf4e9, 0 0 18px rgba(0, 0, 0, .28), inset 0 0 0 1px rgba(255, 255, 255, .7); }
.wh-frame img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }

/* Home intro: text beside a photo collage */
.wh-intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(32px, 4.5vw, 72px); align-items: center; margin-top: 8px; }
.wh-intro .wh-lead { margin: 0 0 1em; max-width: none; text-align: left; font-weight: 400; }
.wh-intro__text p:last-child { margin-bottom: 0; }
.wh-fitting *, .wh-fitting *::before, .wh-fitting *::after { transition: none !important; }  /* while witman.js fits the intro text size */
.wh-collage { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.wh-collage .wh-frame:first-child { grid-column: 1 / -1; }
@media (min-width: 1200px) {
	/* Text grows with the collage so both columns end level (fitted by measurement: 18px at 1200, 19px at 1280, 22.3px from ~1530 when the card stops growing). */
	.wh-intro__text { font-size: clamp(18px, 2.31px + 1.305vw, 22.3px); }
	.wh-intro__text .wh-lead { font-size: 1.28em; }
	.wh-collage .wh-frame:first-child { margin-top: 9px; }  /* border level with the top of the lead's capitals (measured) */
}

/* ---------- Panels ---------- */
.wh-panel { background: var(--paper); border-radius: 18px; padding: clamp(22px, 3vw, 34px); box-shadow: 0 0 0 1px var(--line), var(--shadow-soft); }
.wh-note { max-width: 44rem; margin: 28px auto 0; padding: 16px 22px; border-left: 4px solid var(--gold); border-radius: 0 12px 12px 0; background: rgba(196, 156, 91, .12); color: var(--ink); font-weight: 400; }
.wh-note p { margin: 0; }

.wh-cta { max-width: 54rem; margin: clamp(44px, 5vw, 64px) auto 0; padding: clamp(28px, 4vw, 44px) clamp(20px, 4vw, 52px); border-radius: 24px; background: var(--navy); color: #fff; text-align: center; box-shadow: var(--shadow-soft); }
.wh-cta p { margin: 0 auto 24px; max-width: 40rem; font-size: clamp(1.15rem, 1rem + .6vw, 1.4rem); font-weight: 400; line-height: 1.5; text-wrap: balance; }
.wh-cta .wh-btn { background: var(--gold); border-color: var(--gold); color: var(--ink); }
.wh-cta .wh-btn:hover { background: var(--gold-light); border-color: var(--gold-light); }
.wh-cta .wh-btn--ghost { background: transparent; border-color: rgba(255, 255, 255, .6); color: #fff; }
.wh-cta .wh-btn--ghost:hover { background: rgba(255, 255, 255, .1); border-color: #fff; }

/* Packages: price */
.wh-price { max-width: 34rem; margin: 36px auto 0; padding: 30px 24px 32px; text-align: center; background: var(--paper); border-radius: 20px; box-shadow: 0 0 0 1px var(--line), var(--shadow-soft); }
.wh-price__label { margin: 0; font: 600 1rem/1.3 var(--font-ui); letter-spacing: .16em; text-transform: uppercase; color: var(--gold-ink); text-wrap: balance; }
.wh-price__amount { margin: 10px 0 6px; font: italic 500 clamp(3.6rem, 2.9rem + 3vw, 5rem)/1 'Cormorant Garamond', Georgia, serif; font-variant-numeric: lining-nums; color: var(--ink); }
.wh-price__cur { font-size: .5em; vertical-align: .8em; margin-right: .06em; }
.wh-price__call { margin: 0 0 20px; font: 500 1.35rem/1.3 var(--font-ui); color: var(--ink); }

/* Packages: "includes" list, each item marked with clinking champagne glasses */
.wh-includes { max-width: 42rem; margin: 28px auto 0; padding: 6px clamp(18px, 3vw, 32px); }
.wh-checks li span { text-wrap: pretty; }
.wh-checks { list-style: none; margin: 0; padding: 0; }
.wh-checks li { display: flex; align-items: center; gap: 18px; padding: 13px 0; border-bottom: 1px solid rgba(196, 156, 91, .35); line-height: 1.4; }
.wh-checks li:last-child { border-bottom: 0; }
.wh-cheers { font-size: 40px; stroke-width: 1.3; color: var(--gold-deep); }

/* Stay: option cards */
.wh-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin-top: 22px; }
.wh-option { padding: 30px 22px 26px; text-align: center; background: var(--paper); border-radius: 18px; box-shadow: 0 0 0 1px var(--line), var(--shadow-soft); }
.wh-option__icon { display: grid; place-items: center; width: 68px; height: 68px; margin: 0 auto 16px; border-radius: 50%; background: var(--navy); color: #fff; font-size: 32px; }
.wh-option__icon .wh-i { stroke-width: 1.5; }
.wh-option h3 { margin: 0 0 6px; font: 600 1.4rem/1.25 var(--font-ui); color: var(--ink); text-wrap: balance; }
.wh-option p { margin: 0; line-height: 1.5; }
.wh-callout { max-width: 44rem; margin: 0 auto; padding: 26px 30px; text-align: center; border: 1px solid var(--gold); border-radius: 18px; background: var(--paper); outline: 1px solid var(--line); outline-offset: 5px; }
.wh-callout p:last-child { margin-bottom: 0; }

/* Services */
.wh-feature { max-width: 46rem; margin: 0 auto; padding: 30px 28px; text-align: center; }
.wh-feature__name { margin: 0 0 6px; font: 700 clamp(1.6rem, 1.3rem + 1.4vw, 2.2rem)/1.2 var(--font-display); color: var(--ink); }
.wh-feature p:last-child { margin: 0; }
.wh-vendors { list-style: none; margin: 28px auto 0; padding: 0; max-width: 60rem; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.wh-vendors li { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; min-height: 120px; padding: 22px 16px; text-align: center; background: var(--paper); border-radius: 16px; box-shadow: 0 0 0 1px var(--line), var(--shadow-soft); font: 600 1.4rem/1.25 var(--font-ui); color: var(--ink); }
.wh-vendors li::before { content: ""; width: 9px; height: 9px; background: var(--gold); transform: rotate(45deg); }

/* Gallery */
.wh-gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(14px, 2.2vw, 28px); }
.wh-gallery a { display: block; }
.wh-lightbox { width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: transparent; }
.wh-lightbox::backdrop { background: rgba(12, 18, 26, .92); }
.wh-lightbox[open] { display: grid; place-items: center; }
.wh-lightbox figure { margin: 0; padding: 64px 72px; display: grid; justify-items: center; gap: 12px; }
.wh-lightbox img { max-width: min(1280px, calc(100vw - 144px)); max-height: calc(100vh - 150px); width: auto; height: auto; border-radius: 6px; box-shadow: 0 20px 50px rgba(0, 0, 0, .5); }
.wh-lightbox figcaption { color: rgba(255, 255, 255, .85); font: 400 16px/1.4 var(--font-body); text-align: center; }
.wh-lightbox button { position: fixed; display: grid; place-items: center; width: 50px; height: 50px; padding: 0; border: 1px solid rgba(255, 255, 255, .5); border-radius: 50%; background: rgba(255, 255, 255, .08); color: #fff; font-size: 26px; cursor: pointer; }
.wh-lightbox button:hover { background: rgba(255, 255, 255, .18); }
.wh-lightbox__close { top: 14px; right: 14px; }
.wh-lightbox__prev { left: 14px; top: 50%; translate: 0 -50%; }
.wh-lightbox__next { right: 14px; top: 50%; translate: 0 -50%; }

/* Location */
.wh-loc { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: clamp(20px, 3vw, 36px); align-items: stretch; }
.wh-contact { display: grid; gap: 16px; align-content: center; font-weight: 400; color: var(--ink); }
.wh-contact p { margin: 0; display: flex; gap: 14px; align-items: flex-start; line-height: 1.5; }
.wh-contact .wh-i { margin-top: 3px; font-size: 22px; color: var(--gold-ink); }
.wh-contact a { font-weight: 500; text-decoration: none; }
.wh-contact a:hover { text-decoration: underline; text-underline-offset: 3px; }
.wh-contact .wh-label { display: block; font: 600 .85rem/1.2 var(--font-ui); letter-spacing: .14em; text-transform: uppercase; color: var(--gold-ink); }
.wh-map { position: relative; min-height: 340px; border-radius: 18px; overflow: hidden; box-shadow: 0 0 0 1px var(--line), var(--shadow-soft); background: #e8e2d6; }
.wh-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.wh-times { width: 100%; border-collapse: collapse; margin-top: 8px; }
.wh-times th, .wh-times td { padding: 10px 0; border-bottom: 1px dashed var(--line); text-align: left; font-weight: 300; }
.wh-times td { text-align: right; font-weight: 500; color: var(--ink); white-space: nowrap; }
.wh-times tr:last-child th, .wh-times tr:last-child td { border-bottom: 0; }
.wh-loc-lead { text-wrap: pretty; }
@media (min-width: 701px) { .wh-loc-lead { font-size: 1.1em; } }  /* 22px: no one-word last line (measured 768–1920) */
.wh-gps { display: flex; flex-direction: column; align-items: flex-start; border-left: 4px solid var(--gold); }
.wh-gps__closing { margin: auto 0 0; padding-top: 22px; width: 100%; border-top: 1px solid var(--line); font-style: italic; font-size: 1.15em; line-height: 1.5; color: var(--ink); text-wrap: pretty; }
.wh-gps .wh-btn { margin-bottom: 26px; }
.wh-gps__alt { margin: 18px 0; padding: 16px 18px; border-radius: 12px; background: rgba(196, 156, 91, .14); color: var(--ink); font-weight: 500; }
.wh-gps__alt strong { font-weight: 600; }
.wh-h2 .wh-i { font-size: .8em; margin-right: .35em; vertical-align: -.05em; color: var(--gold-deep); }

/* ---------- Footer ---------- */
.wh-footer { background: var(--gold); color: var(--ink); }
.wh-footer__inner { max-width: 1240px; margin: 0 auto; padding: 52px var(--gutter) 44px; display: grid; grid-template-columns: minmax(0, 320px) auto auto; justify-content: space-between; align-items: center; gap: 36px 56px; }
.wh-footer__logo img { width: 100%; border-radius: 12px; box-shadow: 0 0 0 1px rgba(255, 255, 255, .45), 0 12px 24px -12px rgba(40, 28, 8, .6); }
.wh-footer__contact { font: 400 17px/1.55 var(--font-body); }
.wh-footer__contact p { margin: 0 0 8px; }
.wh-footer__name { font: 600 21px/1.3 var(--font-ui) !important; }
.wh-footer__line { display: flex; align-items: center; gap: 10px; }
.wh-footer__line .wh-i { font-size: 17px; }
.wh-footer a { color: var(--ink); text-decoration: none; }
.wh-footer a:hover { text-decoration: underline; text-underline-offset: 3px; }
.wh-footer__nav ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.wh-footer__nav a { font: 500 19px/1.6 var(--font-ui); }
.wh-footbar { background: var(--navy); color: #fff; }
.wh-footbar__inner { max-width: calc(var(--wrap) + 2 * var(--gutter)); margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 16px 24px; padding: 20px var(--gutter); font: 400 15px/1.5 var(--font-body); }
.wh-footbar p { margin: 0; }
.wh-footbar a { color: #fff; }
.wh-footbar__pelland img { height: auto; max-height: 34px; width: auto; }

/* ---------- Responsive ---------- */
@media (max-width: 1099px) {
	:root { --overlap: 30px; }
	.wh-card { border-radius: 40px 40px 0 0; padding: 40px clamp(18px, 4vw, 40px) 56px; }
	.wh-footer__inner { grid-template-columns: minmax(0, 300px) auto; }
	.wh-footer__nav { grid-column: 1 / -1; }
	.wh-footer__nav ul { display: flex; flex-wrap: wrap; gap: 4px 22px; }
	.wh-hero__arrow { width: 44px; height: 44px; font-size: 22px; }
}
@media (max-width: 1199px) {
	.wh-intro { grid-template-columns: 1fr; }
	.wh-intro__text { max-width: 44rem; margin: 0 auto; }
	.wh-collage { max-width: 44rem; width: 100%; margin: 0 auto; }
}
@media (max-width: 860px) {
	.wh-options { grid-template-columns: 1fr; max-width: 30rem; margin-left: auto; margin-right: auto; }
	.wh-vendors { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.wh-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.wh-loc { grid-template-columns: 1fr; }
	.wh-map { min-height: 0; aspect-ratio: 4 / 3; }
}
@media (max-width: 700px) {
	body { font-size: 1.125rem; }
	.wh-main { padding: 0 10px; }
	.wh-lead:not(.wh-lead--center), .wh-prose p { text-align: left; }
	.wh-lead { font-size: 1.25rem; }
	.wh-option { display: grid; grid-template-columns: 56px 1fr; column-gap: 16px; align-items: center; padding: 18px; text-align: left; }
	.wh-option__icon { grid-row: span 2; width: 56px; height: 56px; margin: 0; font-size: 26px; }
	.wh-option h3 { font-size: 1.25rem; margin: 0 0 2px; }
	.wh-card { border-radius: 30px 30px 0 0; padding: 34px 18px 48px; }
	.wh-photos { grid-template-columns: 1fr; gap: 24px; }
	.wh-collage { gap: 16px; }
	.wh-cheers { font-size: 34px; }
	.wh-checks li { gap: 14px; }
	.wh-footer__inner { grid-template-columns: 1fr; justify-items: center; text-align: center; padding-top: 40px; }
	.wh-footer__logo { width: min(300px, 100%); }
	.wh-footer__line { justify-content: center; }
	.wh-footer__nav ul { justify-content: center; }
	.wh-footbar__inner { flex-direction: column; text-align: center; }
	.wh-hero__arrow { display: none; }
	.wh-btns .wh-btn { flex: 1 1 100%; justify-content: center; }
	.wh-lightbox figure { padding: 70px 10px 80px; }
	.wh-lightbox img { max-width: calc(100vw - 20px); max-height: calc(100vh - 170px); }
	.wh-lightbox__prev, .wh-lightbox__next { top: auto; bottom: 16px; translate: none; }
	.wh-lightbox__prev { left: calc(50% - 60px); }
	.wh-lightbox__next { right: calc(50% - 60px); }
}
@media (max-width: 520px) {
	.wh-gallery { grid-template-columns: 1fr; }
	.wh-vendors { grid-template-columns: 1fr; }
	.wh-vendors li { min-height: 0; flex-direction: row; padding: 18px; }
	.wh-callout { padding: 22px 18px; }
}

/* ---------- Scroll reveal (ported from char-bo.com) ----------
   witman.js marks content that starts below the fold with .rv-wait, then swaps in
   .rv-go plus a variant as each piece scrolls into view (once), and takes the
   classes off when it has finished. Nothing is hidden without the script, and
   nothing that is on screen when the page loads. */
:root { --ease-in-out: cubic-bezier(.77, 0, .175, 1); }
.rv-wait { opacity: 0; }
.rv-go { animation-duration: .9s; animation-timing-function: var(--ease-out); animation-delay: var(--rv-delay, 0s); animation-fill-mode: both; }
.rv-go.rv-up { animation-name: rv-up; }
.rv-go.rv-card { animation-name: rv-card; animation-duration: 1s; }
.rv-go.rv-deal { animation-name: rv-deal; animation-duration: 1s; }
.rv-go.rv-media { animation-name: rv-media; animation-duration: 1.2s; animation-timing-function: var(--ease-in-out); }
.rv-go.rv-fade { animation-name: rv-fade; animation-duration: .45s; animation-timing-function: ease; }
@keyframes rv-up { from { opacity: 0; transform: translate3d(0, 26px, 0); } to { opacity: 1; } }
@keyframes rv-card { from { opacity: 0; transform: translate3d(0, 34px, 0) scale(.97); } to { opacity: 1; } }
@keyframes rv-deal { from { opacity: 0; transform: translate3d(0, 42px, 0) rotate(-2.5deg) scale(.96); } to { opacity: 1; } }
/* The map opens out of a slightly inset frame; the end inset sits well outside the box so the shadow is never clipped. */
@keyframes rv-media {
	from { opacity: 0; clip-path: inset(9% 9% 9% 9% round 18px); }
	20% { opacity: 1; }
	to { opacity: 1; clip-path: inset(-80px -80px -80px -80px round 18px); }
}
@keyframes rv-fade { from { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
	.rv-go { animation-name: rv-fade !important; animation-duration: .45s !important; }
}
@media print {
	.rv-wait { opacity: 1 !important; }
	.rv-go { animation: none !important; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: .01ms !important; transition-delay: 0s !important; animation-duration: .01ms !important; }
	.wh-hero__slide img, .wh-hero__slide.is-active img, .wh-hero__slide.is-leaving img { animation: none; transform: none; }
}
