:root {
  --cream: #faf7f2;
  --beige: #efe7dc;
  --sage: #8a9a86;
  --sage-deep: #56695a;
  --sage-soft: #c9d2c4;
  --mauve: #d9bfc2;
  --mauve-deep: #9c6f76;
  --terracotta: #b9735a;
  --sky: #b7cad3;
  --ink: #2f2f2b;
  --muted: #6b675f;
  --line: #e2d9cc;
  --heading: "Montserrat", "Helvetica Neue", Arial, sans-serif;
  --body: "Lato", "Helvetica Neue", Arial, sans-serif;
  --script: "Pinyon Script", "Snell Roundhand", cursive;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--cream);
  color: var(--ink);
  font-family: var(--body);
  font-size: 1.05rem;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; }
a { color: inherit; }

.wrap { max-width: 1120px; margin: 0 auto; padding: 0 6vw; }
.narrow { max-width: 680px; margin-left: auto; margin-right: auto; }
.small { font-size: 0.9rem; }

/* ---------- Scrolling banners ---------- */
.ticker {
  overflow: hidden;
  background: var(--sage-deep);
  color: #fff;
  font-family: var(--heading);
  font-size: 0.66rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}
.ticker a { display: block; color: inherit; text-decoration: none; }
.ticker-track { display: flex; width: max-content; animation: ticker 50s linear infinite; }
.ticker:hover .ticker-track { animation-play-state: paused; }
.ticker-group { display: flex; flex-shrink: 0; align-items: center; }
.ticker-group span { padding: 0.7rem 0; white-space: nowrap; }
.ticker-group span::after {
  content: "";
  display: inline-block;
  width: 0.35rem;
  height: 0.35rem;
  border-radius: 50%;
  background: var(--mauve);
  margin: 0 1.8rem;
  vertical-align: middle;
}
.ticker.band { background: var(--mauve); color: var(--ink); font-size: 0.78rem; }
.ticker.band .ticker-group span { padding: 1.1rem 0; }
.ticker.band .ticker-group span::after { background: var(--sage-deep); }
.ticker.band .ticker-track { animation-duration: 70s; animation-direction: reverse; }
@keyframes ticker { to { transform: translateX(-50%); } }

/* ---------- Header ---------- */
.site-header {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.75rem 1.5rem;
  padding: 1.2rem 6vw;
  background: var(--cream);
  border-bottom: 1px solid var(--line);
}

.brand {
  font-family: var(--heading);
  font-weight: 400;
  font-size: 1.05rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
}

.header-actions { display: flex; align-items: center; gap: 0.75rem; }

.menu-toggle {
  background: none;
  border: 1px solid var(--ink);
  padding: 0.65rem 1.2rem;
  font-family: var(--heading);
  font-size: 0.66rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink);
  cursor: pointer;
}
.menu-toggle:hover { background: var(--ink); color: var(--cream); }

.site-header nav {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 40;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 2rem;
  padding: 2.25rem 6vw 2.75rem;
  background: var(--cream);
  border-bottom: 1px solid var(--line);
  box-shadow: 0 18px 30px rgba(47, 47, 43, 0.08);
}
.site-header nav.open { display: grid; }
.nav-col { display: flex; flex-direction: column; gap: 0.6rem; }
.nav-col h4 { color: var(--mauve-deep); margin-bottom: 0.5rem; }
.nav-col a {
  font-family: var(--heading);
  font-weight: 300;
  font-size: 1.15rem;
  text-decoration: none;
  color: var(--ink);
  width: fit-content;
  border-bottom: 1px solid transparent;
}
.nav-col a:hover,
.nav-col a[aria-current="page"] { border-bottom-color: var(--sage); color: var(--sage-deep); }

@media (max-width: 480px) {
  .site-header { padding: 1rem 5vw; }
  .brand { font-size: 0.9rem; letter-spacing: 0.16em; }
  .button.small { padding: 0.6rem 0.9rem; }
}

/* ---------- Type ---------- */
h1, h2, h3 { font-family: var(--heading); font-weight: 300; line-height: 1.22; letter-spacing: 0.01em; margin: 0 0 1rem; text-wrap: balance; }
h1 { font-size: clamp(2.1rem, 5vw, 3.5rem); }
h2 { font-size: clamp(1.55rem, 3.2vw, 2.3rem); }
h3 { font-size: 1.1rem; font-weight: 400; letter-spacing: 0.04em; }
h4 { font-family: var(--heading); font-weight: 500; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; margin: 0 0 1rem; }
p { margin: 0 0 1.1rem; }

.eyebrow { font-family: var(--script); font-size: 2rem; line-height: 1; color: var(--mauve-deep); margin: 0 0 0.75rem; }
.lead { font-size: 1.2rem; color: var(--muted); }

/* ---------- Buttons ---------- */
.button {
  display: inline-block;
  padding: 0.95rem 2.1rem;
  background: var(--sage-deep);
  color: #fff;
  font-family: var(--heading);
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  text-decoration: none;
  border: 1px solid var(--sage-deep);
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.button:hover { background: var(--terracotta); border-color: var(--terracotta); color: #fff; }
.button.small { padding: 0.65rem 1.3rem; font-size: 0.66rem; }
.button.ghost { background: transparent; color: var(--sage-deep); }
.button.ghost:hover { background: var(--sage-deep); border-color: var(--sage-deep); color: #fff; }
.buttons { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; }
.buttons.left { justify-content: flex-start; }

.section.sage .button { background: #fff; color: var(--sage-deep); border-color: #fff; }
.section.sage .button:hover { background: var(--mauve); border-color: var(--mauve); color: var(--ink); }

.text-link {
  font-family: var(--heading);
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--sage-deep);
  border-bottom: 1px solid var(--sage);
  padding-bottom: 2px;
}
.text-link:hover { color: var(--terracotta); border-color: var(--terracotta); }

/* ---------- Photo placeholders (swap in real photos) ----------
   To use a real photo: <div class="ph arch" style="background-image:url(images/your-photo.jpg)" ...></div> */
.ph {
  background-color: var(--sage-soft);
  background-size: cover;
  background-position: center;
  width: 100%;
}
.ph-sage  { background-image: linear-gradient(160deg, #c9d2c4 0%, #8a9a86 100%); }
.ph-mauve { background-image: linear-gradient(160deg, #ecdadc 0%, #c99ea5 100%); }
.ph-sand  { background-image: linear-gradient(160deg, #f3ebe0 0%, #d8c6ae 100%); }
.ph-terra { background-image: linear-gradient(160deg, #e6c2b3 0%, #b9735a 100%); }
.ph-sky   { background-image: linear-gradient(160deg, #dbe6ea 0%, #9db8c4 100%); }
.ph.tall  { aspect-ratio: 3 / 4; }
.ph.wide  { aspect-ratio: 4 / 3; }
.ph.arch  { aspect-ratio: 4 / 5; border-radius: 999px 999px 0 0; }
.ph.square { aspect-ratio: 1; }

/* ---------- Hero ---------- */
.hero { text-align: center; padding: 5.5rem 0 3rem; }
.hero h1 { max-width: 780px; margin-left: auto; margin-right: auto; }
.hero .lead { max-width: 600px; margin: 0 auto 1.2rem; }
.hero .buttons { margin-top: 2rem; }

.photo-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.1rem; margin: 3.5rem 0 0; align-items: start; }
.photo-row .ph { aspect-ratio: 3 / 4; }
.photo-row .ph:nth-child(even) { margin-top: 2.5rem; }
.photo-row.three { grid-template-columns: repeat(3, 1fr); }
.photo-row.three .ph { aspect-ratio: 4 / 3; }
.photo-row.three .ph:nth-child(even) { margin-top: 0; }

@media (max-width: 720px) {
  .photo-row { grid-template-columns: repeat(2, 1fr); }
  .photo-row.three { grid-template-columns: 1fr; }
}

/* ---------- Page hero (inner pages) ---------- */
.page-hero { text-align: center; padding: 5rem 0 0; background: var(--beige); }
.page-hero h1 { max-width: 820px; margin-left: auto; margin-right: auto; }
.page-hero .lead { max-width: 620px; margin: 0 auto 2rem; }
.page-hero .photo-row { margin-bottom: -2.5rem; position: relative; }
.page-hero + .section { padding-top: 6.5rem; }

/* ---------- Sections ---------- */
.section { padding: 5rem 0; }
.section.alt { background: var(--beige); }
.section.sage { background: var(--sage-deep); color: #fff; }
.section.sage .eyebrow { color: var(--mauve); }
.section.center { text-align: center; }

/* Pattern-backed intro */
.pattern {
  background-color: var(--beige);
  background-image: radial-gradient(rgba(156, 111, 118, 0.28) 1.2px, transparent 1.2px);
  background-size: 24px 24px;
  padding: 5rem 0;
}
.panel { background: var(--cream); max-width: 760px; margin: 0 auto; padding: 3.5rem 3rem; text-align: center; border: 1px solid var(--line); }
@media (max-width: 640px) { .panel { padding: 2.5rem 1.5rem; } }

/* ---------- Carousel ---------- */
.carousel-head { display: flex; justify-content: space-between; align-items: end; flex-wrap: wrap; gap: 1rem; margin-bottom: 2rem; }
.carousel-head h2 { margin: 0; }
.carousel-next {
  background: none;
  border: 1px solid var(--sage-deep);
  color: var(--sage-deep);
  padding: 0.65rem 1.4rem;
  font-family: var(--heading);
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  cursor: pointer;
}
.carousel-next:hover { background: var(--sage-deep); color: #fff; }

.track {
  display: flex;
  gap: 1.5rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 1rem;
  scrollbar-width: thin;
  scrollbar-color: var(--sage) transparent;
}
.slide { flex: 0 0 min(300px, 78%); scroll-snap-align: start; }
.slide .ph { margin-bottom: 1.1rem; }
.slide h3 { margin-bottom: 0.4rem; }
.slide p { color: var(--muted); font-size: 0.98rem; margin-bottom: 0.8rem; }

/* ---------- Feature blocks ---------- */
.feature { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; padding: 3rem 0; }
.feature.reverse .feature-media { order: 2; }
.feature-media { max-width: 420px; width: 100%; margin: 0 auto; }
.feature-text p { color: var(--muted); }
@media (max-width: 820px) {
  .feature { grid-template-columns: 1fr; gap: 2rem; }
  .feature.reverse .feature-media { order: 0; }
}

/* ---------- Spotlight (Sandals, Beaches) ---------- */
.spotlight { display: grid; grid-template-columns: 1.25fr 1fr; gap: 4rem; align-items: center; }
.spotlight.reverse > :first-child { order: 2; }
.spotlight p { color: var(--muted); }
.spotlight .checks { color: var(--ink); }
.credential {
  background: var(--sage-deep);
  color: #fff;
  padding: 3rem 2.25rem;
  text-align: center;
  outline: 1px solid rgba(255, 255, 255, 0.45);
  outline-offset: -14px;
}
.credential .eyebrow { color: var(--mauve); }
.credential ul { list-style: none; margin: 1.5rem 0; padding: 0; }
.credential li { font-family: var(--heading); font-size: 0.82rem; letter-spacing: 0.18em; text-transform: uppercase; padding: 0.9rem 0; border-top: 1px solid rgba(255, 255, 255, 0.3); }
.credential li:last-child { border-bottom: 1px solid rgba(255, 255, 255, 0.3); }
.credential p { color: rgba(255, 255, 255, 0.85); margin: 0; font-size: 0.98rem; }
@media (max-width: 820px) {
  .spotlight { grid-template-columns: 1fr; gap: 2.5rem; }
  .spotlight.reverse > :first-child { order: 0; }
}

/* ---------- Process (01 - 05) ---------- */
.process { list-style: none; margin: 3rem 0 0; padding: 0; }
.process li { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; padding: 2rem 0; border-top: 1px solid var(--line); }
.process li:nth-child(even) .process-media { order: -1; }
.process .num { font-family: var(--heading); font-weight: 200; font-size: 3.4rem; line-height: 1; color: var(--mauve-deep); margin-bottom: 0.5rem; }
.process p { color: var(--muted); margin: 0; }
.process-media .ph { aspect-ratio: 16 / 9; }
@media (max-width: 820px) {
  .process li { grid-template-columns: 1fr; gap: 1.2rem; }
  .process li:nth-child(even) .process-media { order: 0; }
}

/* ---------- Free guides ---------- */
.guide { display: grid; grid-template-columns: 1fr 1fr; gap: 3.5rem; align-items: center; }
.mock {
  background: linear-gradient(160deg, #ecdadc 0%, #c99ea5 100%);
  aspect-ratio: 4 / 3;
  display: flex; align-items: center; justify-content: center;
  padding: 2rem;
}
.mock-screen {
  background: var(--cream);
  width: 78%;
  aspect-ratio: 3 / 4;
  border-radius: 14px;
  border: 7px solid var(--ink);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center;
  padding: 1rem;
  box-shadow: 0 14px 30px rgba(47, 47, 43, 0.18);
}
.mock-screen .script { font-family: var(--script); font-size: 2.4rem; line-height: 1; color: var(--mauve-deep); }
.mock-screen .small-caps { font-family: var(--heading); font-size: 0.6rem; letter-spacing: 0.2em; text-transform: uppercase; margin-top: 0.8rem; color: var(--muted); }
@media (max-width: 820px) { .guide { grid-template-columns: 1fr; gap: 2rem; } }

.guide-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.5rem; margin-top: 3rem; }
.guide-card { background: #fff; border: 1px solid var(--line); display: flex; flex-direction: column; }
.guide-art { aspect-ratio: 16 / 10; display: flex; align-items: center; justify-content: center; text-align: center; padding: 1rem; }
.guide-art .script { font-family: var(--script); font-size: 2.1rem; line-height: 1.05; color: var(--ink); }
.guide-body { padding: 1.5rem; display: flex; flex-direction: column; flex-grow: 1; }
.guide-body p { color: var(--muted); font-size: 0.98rem; flex-grow: 1; }
.tag { display: inline-block; font-family: var(--heading); font-size: 0.62rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--mauve-deep); margin-bottom: 0.4rem; }

/* ---------- Podcast and order ---------- */
.platforms { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.empty { border: 1px dashed var(--sage); background: #fff; padding: 2.5rem 1.5rem; text-align: center; }
.empty p { color: var(--muted); max-width: 480px; margin-left: auto; margin-right: auto; }
.cover { max-width: 340px; margin: 0 auto; display: flex; align-items: center; justify-content: center; text-align: center; padding: 2rem; }
.cover .script { font-family: var(--script); font-size: 2.6rem; line-height: 1.05; color: var(--ink); }

/* ---------- Lists, cards ---------- */
.checks { list-style: none; padding: 0; margin: 1.5rem 0; }
.checks li { padding: 0.55rem 0 0.55rem 1.6rem; position: relative; border-bottom: 1px solid var(--line); }
.checks li::before { content: ""; position: absolute; left: 0; top: 1.15rem; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--sage); }

.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.5rem; margin-top: 2.5rem; }
.card { background: #fff; border: 1px solid var(--line); padding: 2rem 1.75rem; display: flex; flex-direction: column; }
.card p { color: var(--muted); flex-grow: 1; }
.card .button { align-self: flex-start; margin-top: 0.25rem; }

.quote { font-family: var(--heading); font-weight: 300; font-size: clamp(1.3rem, 2.6vw, 1.8rem); line-height: 1.5; margin: 0 auto 1rem; max-width: 760px; }
.attrib { font-family: var(--heading); font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); }
.pull { font-family: var(--heading); font-weight: 300; font-size: clamp(1.4rem, 3vw, 2rem); line-height: 1.4; max-width: 760px; margin: 0 auto; }

/* ---------- Process page steps and fees ---------- */
.steps { list-style: none; padding: 0; margin: 2rem 0 0; counter-reset: step; }
.steps li { counter-increment: step; display: grid; grid-template-columns: 4rem 1fr; gap: 1rem; padding: 1.5rem 0; border-bottom: 1px solid var(--line); }
.steps li::before { content: counter(step, decimal-leading-zero); font-family: var(--heading); font-weight: 200; font-size: 2.2rem; color: var(--mauve-deep); line-height: 1.2; }
.steps h3 { margin-bottom: 0.3rem; }
.steps p { margin: 0; color: var(--muted); }

.fee-row { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 0.5rem 2rem; padding: 1.25rem 0; border-bottom: 1px solid var(--line); }
.fee-row h3 { margin: 0; }
.fee-row .amount { font-family: var(--heading); font-weight: 300; font-size: 1.4rem; color: var(--sage-deep); }
.fee-row p { margin: 0.25rem 0 0; color: var(--muted); flex-basis: 100%; }

details { border-bottom: 1px solid var(--line); padding: 1.1rem 0; }
summary { cursor: pointer; font-family: var(--heading); font-size: 1rem; letter-spacing: 0.02em; list-style: none; }
summary::-webkit-details-marker { display: none; }
summary::after { content: "+"; float: right; color: var(--sage-deep); }
details[open] summary::after { content: "\2013"; }
details p { margin: 0.9rem 0 0; color: var(--muted); }

/* ---------- Footer ---------- */
.site-footer { background: var(--beige); border-top: 1px solid var(--line); padding: 4rem 0 2rem; }
.footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr; gap: 3rem; }
.footer-brand { font-family: var(--heading); letter-spacing: 0.2em; text-transform: uppercase; font-size: 0.95rem; margin-bottom: 0.9rem; }
.site-footer p { color: var(--muted); max-width: 380px; }
.site-footer ul { list-style: none; margin: 0; padding: 0; }
.site-footer li { margin-bottom: 0.45rem; }
.site-footer li a, .site-footer .social a { text-decoration: none; color: var(--muted); }
.site-footer li a:hover, .site-footer .social a:hover { color: var(--ink); }
.site-footer .small { font-size: 0.88rem; }
.footer-base { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 0.75rem; margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid var(--line); font-size: 0.85rem; color: var(--muted); }
.footer-base p { margin: 0; max-width: none; }
.footer-base a { text-decoration: none; font-family: var(--heading); font-size: 0.68rem; letter-spacing: 0.16em; text-transform: uppercase; }
@media (max-width: 760px) { .footer-grid { grid-template-columns: 1fr; gap: 2rem; } }

@media (max-width: 640px) {
  .hero { padding: 4rem 0 2rem; }
  .section, .pattern { padding: 3.5rem 0; }
  .steps li { grid-template-columns: 3rem 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .ticker-track { animation: none; }
  .ticker-group + .ticker-group { display: none; }
}

/* ---------- Credentials and affiliations ---------- */
.badges { list-style: none; margin: 2.5rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 2rem 1.5rem; }
.badge { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 1rem; }
.badge-mark {
  width: 116px; height: 116px; border-radius: 50%; border: 1px solid var(--sage); background: #fff;
  display: flex; align-items: center; justify-content: center; text-align: center;
  font-family: var(--heading); font-weight: 300; font-size: 0.78rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--sage-deep); line-height: 1.3; padding: 0.5rem; outline: 1px solid var(--line); outline-offset: 5px;
}
.badge-logo { width: 116px; height: 116px; object-fit: contain; }
.badge-name { font-size: 0.88rem; color: var(--muted); max-width: 200px; line-height: 1.5; }
.badge-note { font-size: 0.82rem; color: var(--muted); max-width: 200px; line-height: 1.5; margin-top: -0.5rem; }

/* ---------- Detailed steps ---------- */
.steps li > div { min-width: 0; }
.steps .checks { margin: 0.9rem 0 0; }
.steps .checks li { display: block; counter-increment: none; grid-template-columns: none; gap: 0; padding: 0.5rem 0 0.5rem 1.6rem; color: var(--ink); }
.steps .checks li::before { content: ""; position: absolute; left: 0; top: 1.05rem; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--sage); font-size: 0; }
.steps .step-note { margin-top: 0.9rem; font-size: 0.95rem; }

/* ---------- Home extras ---------- */
.mini-link { text-align: center; margin-top: 2rem; }
.lead-in { max-width: 640px; margin: 0 auto; text-align: center; }
.lead-in p { color: var(--muted); }

/* ---------- Filled credential badges (brand colors) ---------- */
.badge-mark { border: 0; outline: 0; color: #fff; font-weight: 400; }
.badge:nth-child(1) .badge-mark { background: var(--sage-deep); }
.badge:nth-child(2) .badge-mark { background: var(--mauve-deep); }
.badge:nth-child(3) .badge-mark { background: var(--terracotta); }
.badge:nth-child(4) .badge-mark { background: var(--sage); color: var(--ink); }
.badge:nth-child(5) .badge-mark { background: var(--mauve); color: var(--ink); }

/* ---------- Blog cards and legal pages ---------- */
.post-card .tag { margin-bottom: 0.6rem; }
.post-card h3 { margin-bottom: 0.6rem; }
.legal h2 { font-size: 1.35rem; margin-top: 2.5rem; }
.legal p, .legal li { color: var(--muted); }
.legal ul { padding-left: 1.2rem; margin: 0 0 1.1rem; }
.legal li { margin-bottom: 0.4rem; }
.legal .updated { font-size: 0.9rem; }

/* ---------- Full-bleed image hero (home) ---------- */
.hero.hero-bg { position: relative; min-height: min(86vh, 760px); display: flex; padding: 3.5rem 0 3rem; background-size: cover; background-position: center; color: #fff; text-align: left; }
.hero.hero-bg::before { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(250,246,240,0.78) 0%, rgba(250,246,240,0.5) 30%, rgba(250,246,240,0) 55%), linear-gradient(0deg, rgba(250,246,240,0.55) 0%, rgba(250,246,240,0) 28%); }
.hero.hero-bg .wrap { position: relative; width: 100%; max-width: none; padding-left: 5vw; padding-right: 5vw; }
.hero-grid { display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; }
.hero.hero-bg h1 { margin: 0; max-width: 350px; font-size: clamp(1.9rem, 3vw, 2.6rem); line-height: 1.15; color: var(--ink); text-shadow: none; }
.hero.hero-bg .eyebrow { color: var(--sage-deep); text-shadow: none; }
.hero.hero-bg .buttons { justify-content: flex-start; margin-top: 0; }
.hero.hero-bg .button.ghost { color: var(--ink); border-color: var(--ink); background: rgba(255,255,255,0.35); }
.hero.hero-bg .button.ghost:hover { background: var(--ink); color: #fff; }
.hero-intro { padding: 4rem 0 3rem; }
.hero-intro .lead { max-width: 640px; margin-left: auto; margin-right: auto; }
@media (max-width: 720px) { .hero.hero-bg { min-height: 78vh; background-position: 40% center; } .hero.hero-bg { min-height: 720px; align-items: flex-end; } .hero-grid { justify-content: flex-end; gap: 1.4rem; } .hero.hero-bg::before { background: linear-gradient(0deg, rgba(250,246,240,0.92) 0%, rgba(250,246,240,0.8) 40%, rgba(250,246,240,0) 66%); } }
.hero-sub { margin: 0.9rem 0 0; max-width: 340px; font-size: 1rem; line-height: 1.55; color: var(--ink); text-shadow: none; }

/* ---------- Offering cards (home intro) ---------- */
.hero-intro h2 { max-width: 640px; margin-left: auto; margin-right: auto; }
.offer-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; margin-top: 2.75rem; text-align: left; }
.offer-icon svg { width: 34px; height: 34px; }
.offer { display: flex; flex-direction: column; gap: 0.4rem; padding: 0 0 1.5rem; background: #fff; border: 1px solid var(--line); border-radius: 170px 170px 6px 6px; overflow: hidden; text-decoration: none; color: inherit; transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.offer:hover { transform: translateY(-4px); box-shadow: 0 14px 30px rgba(60,70,60,0.10); border-color: var(--mauve); }
.offer-icon { align-self: center; display: grid; place-items: center; width: 72px; height: 72px; border-radius: 50%; background: #f3e4e4; color: var(--sage-deep); margin-bottom: 0.4rem; }
.offer-photo { display: grid; place-items: center; aspect-ratio: 4 / 4.4; background-size: cover; background-position: center; margin-bottom: 0.8rem; }
.offer h3, .offer p { padding: 0 1.5rem; }
.offer h3 { text-align: center; margin: 0.2rem 0 0; font-size: 1.15rem; }
.offer p { margin: 0; text-align: center; color: var(--muted); font-size: 0.95rem; line-height: 1.55; }
.offer-link { margin-top: auto; padding-top: 0.6rem; align-self: center; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--sage-deep); border-bottom: 1px solid currentColor; }
@media (max-width: 900px) { .offer-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .offer-grid { grid-template-columns: 1fr; } .offer { border-radius: 140px 140px 6px 6px; } }

/* ---------- Inner page hero: one full-width photo at the top, text beneath ---------- */
.page-hero.page-hero-top { padding: 0 0 3.5rem; }
.page-hero-top .hero-photo { width: 100%; height: min(58vh, 540px); background-size: cover; background-position: center; margin-bottom: 3.5rem; }
.page-hero-top + .section { padding-top: 4.5rem; }
@media (max-width: 720px) { .page-hero-top .hero-photo { height: 340px; margin-bottom: 2.5rem; } }

/* ---------- Small line icon above a card heading ---------- */
.card-icon svg { width: 28px; height: 28px; }
.card-icon { display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 50%; background: var(--mauve); color: var(--sage-deep); margin-bottom: 1.1rem; flex-shrink: 0; }

/* ---------- Readability and mobile pass ---------- */
/* Script headings (eyebrows) run small because script fonts have a small x-height, so they are larger and a deeper mauve for contrast. */
.eyebrow { font-size: clamp(2.6rem, 6vw, 3.4rem); line-height: 1.05; color: #7d4d57; margin: 0 0 0.9rem; }
.section.sage .eyebrow, .credential .eyebrow { color: #f0d9dc; }
.hero.hero-bg .eyebrow { color: var(--sage-deep); }
.mock-screen .script { font-size: 2.8rem; }
.guide-art .script { font-size: 2.5rem; }
.cover .script { font-size: 3rem; }

/* Small uppercase labels, links, and buttons: never below about 13px */
.button, .button.small, .menu-toggle, .text-link, .offer-link, .tag, .attrib, .footer-base a, .small-caps, h4, .nav-col a { font-size: max(0.8rem, 13px); }
.button { letter-spacing: 0.12em; }

@media (max-width: 720px) {
  body { font-size: 1.08rem; line-height: 1.65; }
  h1 { font-size: clamp(2.2rem, 9vw, 2.7rem); line-height: 1.15; }
  h2 { font-size: clamp(1.8rem, 7.2vw, 2.1rem); line-height: 1.2; }
  h3 { font-size: 1.25rem; }
  .lead { font-size: 1.15rem; }
  .eyebrow { font-size: 2.3rem; }
  .hero.hero-bg .eyebrow { font-size: 2.1rem; }
  .button, .menu-toggle { min-height: 46px; display: inline-flex; align-items: center; justify-content: center; }
  .button.small { padding: 0.6rem 0.9rem; }
  .ticker.band { font-size: 0.9rem; }
  .nav-col a { padding: 0.45rem 0; font-size: 0.95rem; }
  .card, .slide p, .guide-body p { font-size: 1rem; }
  .steps h3, .card h3 { font-size: 1.2rem; }
  .footer-base { font-size: 0.9rem; }
  .site-footer .small { font-size: 0.95rem; }
  .text-link { padding: 0.4rem 0; display: inline-block; }
}

/* Who I work for: check and X marks */
.credential li { display: flex; align-items: center; gap: 0.9rem; }
.credential li .mark { flex-shrink: 0; width: 22px; height: 22px; }
.credential li .sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Guide opt-in (lead magnet) ---------- */
.optin-band { display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 3.5rem; align-items: center; max-width: 920px; margin: 0 auto; }
.optin-cover { max-width: 300px; margin: 0 auto; box-shadow: 0 22px 44px rgba(60,70,60,0.18); transform: rotate(-2deg); border-radius: 3px; overflow: hidden; background: #fff; }
.optin-cover img { display: block; width: 100%; }
.optin-band h2 { margin-top: 0.2rem; }
.free-tag { display: inline-block; font-family: var(--heading); font-size: 0.7rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--sage-deep); border: 1px solid var(--sage); padding: 0.15rem 0.6rem; margin-left: 0.5rem; vertical-align: middle; }
.optin-title { font-family: var(--heading); font-size: 0.8rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted); margin-bottom: 0.8rem; }
@media (max-width: 820px) { .optin-band { grid-template-columns: 1fr; gap: 2rem; text-align: center; } .optin-cover { max-width: 230px; } }
.optin-slot { background: #fff; border: 1px solid var(--line); padding: 1.8rem; max-width: 460px; }
.optin-slot.placeholder { border-style: dashed; border-color: var(--sage); color: var(--muted); text-align: center; font-size: 0.95rem; }
.footer-optin { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.2rem 2rem; padding-bottom: 2.5rem; margin-bottom: 2.5rem; border-bottom: 1px solid var(--line); }
.footer-optin .optin-title { margin: 0 0 0.3rem; }
.footer-optin p { margin: 0; color: var(--ink); font-family: var(--heading); font-weight: 300; font-size: 1.15rem; max-width: 560px; }
.optin-mock { display: block; width: 100%; max-width: 560px; margin: 0 auto; }
.optin-mock img { display: block; width: 100%; height: auto; }
.optin-band:has(.optin-mock) { grid-template-columns: 1.05fr 0.95fr; }
@media (max-width: 820px) { .optin-band:has(.optin-mock) { grid-template-columns: 1fr; } .optin-mock { max-width: 420px; } }

/* footer contact + social */
.site-footer .phone{color:var(--ink);text-decoration:none;letter-spacing:.04em}
.site-footer .social{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;margin-top:.4rem}

.guide-grid.two-up { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); max-width: 820px; margin-left: auto; margin-right: auto; }
.guide-art[style] { aspect-ratio: 16 / 10; }

/* ---------- Real images in place of CSS backgrounds (indexable, with alt text) ---------- */
.has-img { position: relative; overflow: hidden; }
.has-img > .bgimg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---------- Footer phone and social icons ---------- */
.site-footer .phone { display: inline-flex; align-items: center; gap: .55rem; }
.site-footer .phone svg { flex-shrink: 0; color: var(--sage-deep); }
.site-footer .social { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: .8rem; }
.site-footer .social a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(86,105,90,.45); color: var(--sage-deep); background: transparent; transition: background .2s, color .2s, border-color .2s; }
.site-footer .social a:hover, .site-footer .social a:focus-visible { background: var(--sage-deep); color: #fff; border-color: var(--sage-deep); }

/* ---------- Logo in header and footer ---------- */
.brand { display: inline-flex; align-items: center; gap: .65rem; }
.brand-logo { width: 46px; height: 46px; object-fit: contain; flex-shrink: 0; }
.footer-logo { width: 120px; height: 120px; object-fit: contain; display: block; margin: 0 0 .6rem -6px; }
@media (max-width: 720px) { .brand-logo { width: 38px; height: 38px; } }

/* ---------- Details & texture ---------- */
::selection { background: var(--mauve); color: var(--ink); }
:focus-visible { outline: 2px solid var(--mauve-deep); outline-offset: 3px; border-radius: 2px; }

/* soft paper grain on tinted surfaces */
.section.alt, .page-hero, .section.sage, .site-footer { position: relative; isolation: isolate; }
.section.alt::before, .page-hero::before, .section.sage::before, .site-footer::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: .5; 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='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .35  0 0 0 0 .30  0 0 0 0 .25  0 0 0 .09 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}
.section.sage::before, .site-footer::before { mix-blend-mode: soft-light; opacity: .7; }
.section.sage { background-image: radial-gradient(ellipse at 20% 0%, rgba(255,255,255,.08), transparent 55%), radial-gradient(ellipse at 90% 100%, rgba(0,0,0,.10), transparent 50%); }

/* small ornament under centered headings */
.section.center h2::after, .page-hero h1::after {
  content: ""; display: block; width: 64px; height: 9px; margin: 1.1rem auto 0; opacity: .75;
  background:
    linear-gradient(currentColor, currentColor) left center / 24px 1px no-repeat,
    linear-gradient(currentColor, currentColor) right center / 24px 1px no-repeat,
    radial-gradient(circle, currentColor 0 2.5px, transparent 3px) center / 9px 9px no-repeat;
  color: var(--mauve-deep);
}
.section.sage h2::after { color: var(--mauve); }

/* cards: gentle lift, inner keyline */
.card, .guide-card { position: relative; transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease; }
.card::after, .guide-card::after { content: ""; position: absolute; inset: 6px; border: 1px solid rgba(86,105,90,.14); pointer-events: none; transition: border-color .35s ease; }
.card:hover, .guide-card:hover { transform: translateY(-3px); box-shadow: 0 14px 30px -18px rgba(47,47,42,.35); border-color: var(--sage-soft); }
.card:hover::after, .guide-card:hover::after { border-color: rgba(156,111,118,.35); }

/* photos: soft bottom shade and fine inner edge */
.hero-photo.has-img::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(to bottom, rgba(47,47,42,0) 70%, rgba(47,47,42,.12)), linear-gradient(to bottom, rgba(250,247,242,.0) 0, rgba(250,247,242,0) 100%); box-shadow: inset 0 0 0 1px rgba(255,255,255,.18); }

/* list markers: small open rings */
.checks li::before { background: transparent; border: 1.5px solid var(--sage); width: .55rem; height: .55rem; top: 1.12rem; }

/* links and buttons */
.button { transition: background .3s ease, border-color .3s ease, color .3s ease, transform .3s ease; }
.button:hover { transform: translateY(-1px); }
.text-link { text-underline-offset: .3em; transition: color .25s ease, border-color .25s ease; }
.site-footer .footer-grid a { transition: color .2s ease; }
.site-footer .footer-grid ul a:hover { color: var(--mauve-deep); }

/* quiet fade-in for page content */
@media (prefers-reduced-motion: no-preference) {
  main > section > .wrap { animation: rise .8s ease both; }
  @keyframes rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
}
@media (prefers-reduced-motion: reduce) { .card, .guide-card, .button { transition: none; } .card:hover, .guide-card:hover, .button:hover { transform: none; } }

/* ---------- Signature decor ---------- */
/* rotating seal on the home hero */
.hero.hero-bg .seal { position: absolute; right: 5vw; bottom: 2.5rem; z-index: 2; filter: drop-shadow(0 10px 22px rgba(47,47,42,.22)); }
.seal-ring { transform-origin: 100px 100px; }
@media (prefers-reduced-motion: no-preference) { .seal-ring { animation: sealspin 40s linear infinite; } @keyframes sealspin { to { transform: rotate(360deg); } } }
@media (max-width: 720px) { .hero.hero-bg .seal { right: 1rem; bottom: 1rem; } .hero.hero-bg .seal svg { width: 92px; height: 92px; } }

/* scalloped edge under page headers */
.page-hero::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -13px; height: 14px; z-index: 1; pointer-events: none;
  background: radial-gradient(circle at 12px 0, var(--beige) 11px, transparent 11.5px) 0 0 / 24px 14px repeat-x;
}

/* airmail edge and botanical sprigs on sage bands */
.section.sage { background:
  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='320' viewBox='0 0 220 320' fill='none' stroke='%23d9bfc2' stroke-width='1.4' stroke-linecap='round' opacity='.35'><path d='M30 310 C60 220 70 130 110 20'/><path d='M52 235 C32 228 22 212 20 196 C40 200 52 214 52 235Z M62 190 C84 182 96 164 96 146 C74 152 62 168 62 190Z M76 150 C56 142 46 126 44 110 C64 114 76 128 76 150Z M92 108 C112 100 122 84 122 66 C102 72 92 86 92 108Z M100 70 C82 62 74 48 72 34 C90 38 100 50 100 70Z'/></svg>") left -20px bottom -30px / 150px auto no-repeat,
  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='320' viewBox='0 0 220 320' fill='none' stroke='%23d9bfc2' stroke-width='1.4' stroke-linecap='round' opacity='.35'><path d='M30 310 C60 220 70 130 110 20'/><path d='M52 235 C32 228 22 212 20 196 C40 200 52 214 52 235Z M62 190 C84 182 96 164 96 146 C74 152 62 168 62 190Z M76 150 C56 142 46 126 44 110 C64 114 76 128 76 150Z M92 108 C112 100 122 84 122 66 C102 72 92 86 92 108Z M100 70 C82 62 74 48 72 34 C90 38 100 50 100 70Z'/></svg>") right -20px bottom -30px / 150px auto no-repeat,
  radial-gradient(ellipse at 20% 0%, rgba(255,255,255,.08), transparent 55%), radial-gradient(ellipse at 90% 100%, rgba(0,0,0,.10), transparent 50%), var(--sage-deep); }
.section.sage > .wrap { position: relative; }
.section.sage::after {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 7px; pointer-events: none;
  background: repeating-linear-gradient(-45deg, #d9bfc2 0 14px, #faf7f2 14px 22px, #b7cad3 22px 36px, #faf7f2 36px 44px);
  opacity: .9;
}

/* ticket-stub notches on the dark credential panels */
.credential { position: relative;
  -webkit-mask: radial-gradient(circle 10px at 0 50%, #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle 10px at 100% 50%, #0000 97%, #000) right / 51% 100% no-repeat;
          mask: radial-gradient(circle 10px at 0 50%, #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle 10px at 100% 50%, #0000 97%, #000) right / 51% 100% no-repeat; }

/* script sign-off */
.signoff { font-family: var(--script); font-size: 2.2rem; line-height: 1; color: var(--mauve-deep); margin: 1.2rem 0 0; }
.section.sage .signoff { color: var(--mauve); }

/* large script quote mark for pull quotes */
blockquote { position: relative; margin: 2rem 0; padding: 1.5rem 0 0 0; font-family: var(--heading); font-weight: 300; }
blockquote::before { content: "\201C"; position: absolute; top: -1.2rem; left: -.2rem; font-family: var(--script); font-size: 5rem; line-height: 1; color: var(--mauve); }

/* ---------- Page details (one small motif per page) ---------- */
.page-hero .wrap::before { content: ""; display: block; width: 72px; height: 72px; margin: 0 auto 1.1rem; background-repeat: no-repeat; background-position: center; background-size: contain; opacity: .9; }
body[data-page="weddings-honeymoons"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M32 60V30'/%3E%3Cpath d='M32 24c-5-3-5-9 0-12 5 3 5 9 0 12z'/%3E%3Cpath d='M32 24c-3 5-9 5-12 0 3-5 9-5 12 0z'/%3E%3Cpath d='M32 24c3 5 9 5 12 0-3-5-9-5-12 0z'/%3E%3Ccircle cx='32' cy='23' r='2'/%3E%3Cpath d='M32 48c-8-2-12-8-12-14 8 2 12 8 12 14z'/%3E%3Cpath d='M32 42c8-2 12-8 12-14-8 2-12 8-12 14z'/%3E%3C/svg%3E"); }
body[data-page="river-cruises"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Crect x='12' y='6' width='34' height='48' rx='3'/%3E%3Ccircle cx='29' cy='24' r='9'/%3E%3Cpath d='M20 24h18M29 15c-5 5-5 13 0 18M29 15c5 5 5 13 0 18M20 44h18'/%3E%3Ccircle cx='47' cy='47' r='11' fill='%2523faf7f2' stroke-dasharray='2.4 2.4'/%3E%3Cpath d='M41 48h12M43 48l-1.5-5h11L51 48M45 43v-3h6v3'/%3E%3C/svg%3E"); }
body[data-page="custom-travel"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Ccircle cx='32' cy='32' r='24'/%3E%3Ccircle cx='32' cy='32' r='20' stroke-dasharray='1 3'/%3E%3Cpath d='M32 14l6 18-6 18-6-18z'/%3E%3Cpath d='M32 14v18'/%3E%3Ccircle cx='32' cy='32' r='2'/%3E%3C/svg%3E"); }
body[data-page="wellness-travel"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M32 52C20 48 14 37 16 26c8 2 14 10 16 26z'/%3E%3Cpath d='M32 52c12-4 18-15 16-26-8 2-14 10-16 26z'/%3E%3Cpath d='M32 52C23 43 23 27 32 12c9 15 9 31 0 40z'/%3E%3Cpath d='M18 56h28'/%3E%3C/svg%3E"); }
body[data-page="group-travel"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Ccircle cx='24' cy='26' r='13'/%3E%3Ccircle cx='40' cy='26' r='13'/%3E%3Ccircle cx='32' cy='40' r='13'/%3E%3C/svg%3E"); }
body[data-page="about"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M32 54C13 40 13 22 24 20c4-1 7 2 8 5 1-3 4-6 8-5 11 2 11 20-8 34z'/%3E%3Cpath d='M14 58h36' stroke-dasharray='2 4'/%3E%3C/svg%3E"); }
body[data-page="process"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M10 54c14 0 10-16 22-16s8-16 20-18' stroke-dasharray='3 4'/%3E%3Ccircle cx='10' cy='54' r='3'/%3E%3Cpath d='M52 6c-5 0-9 4-9 9 0 6 9 14 9 14s9-8 9-14c0-5-4-9-9-9z'/%3E%3Ccircle cx='52' cy='15' r='3'/%3E%3C/svg%3E"); }
body[data-page="order"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Crect x='13' y='30' width='38' height='24'/%3E%3Crect x='9' y='22' width='46' height='8'/%3E%3Cpath d='M32 22v32M32 22c-6-12-16-9-12-3M32 22c6-12 16-9 12-3'/%3E%3C/svg%3E"); }
body[data-page="contact"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Crect x='8' y='14' width='48' height='34' rx='3'/%3E%3Cpath d='M8 18l24 18 24-18'/%3E%3Ccircle cx='32' cy='50' r='7' fill='%2523faf7f2'/%3E%3Cpath d='M29 50l2 2 4-4'/%3E%3C/svg%3E"); }
body[data-page="blog"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M46 6l12 12L24 52 8 56l4-16z'/%3E%3Cpath d='M40 12l12 12'/%3E%3C/svg%3E"); }
body[data-page="podcast"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Crect x='24' y='6' width='16' height='28' rx='8'/%3E%3Cpath d='M16 28c0 10 7 17 16 17s16-7 16-17M32 45v10M23 55h18'/%3E%3C/svg%3E"); }
body[data-page="destination-wedding-guide"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M18 6h28v50l-14-11-14 11z'/%3E%3Cpath d='M26 18h12M26 26h12'/%3E%3C/svg%3E"); }
body[data-page="destination-wedding-guide-thanks"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M18 6h28v50l-14-11-14 11z'/%3E%3Cpath d='M26 24l5 5 8-9'/%3E%3C/svg%3E"); }
body[data-page="weddings-honeymoons"] .section.alt::after, body[data-page="destination-wedding-guide"] .section.alt::after { content: ""; position: absolute; right: 2%; top: 1.5rem; width: 120px; height: 150px; pointer-events: none; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 110 130' fill='none' stroke='%239c6f76' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round' opacity='.55'%3E%3Cpath d='M20 118C46 92 64 64 70 20'/%3E%3Cpath d='M70 22c-7-5-8-13-3-19 7 5 8 13 3 19z'/%3E%3Cpath d='M70 22c5-7 13-8 19-3-5 7-13 8-19 3z'/%3E%3Cpath d='M70 22c-5-7-13-8-19-3 5 7 13 8 19 3z'/%3E%3Ccircle cx='70' cy='20' r='2.2'/%3E%3Cpath d='M50 70c-10-2-17-9-18-18 10 2 17 9 18 18z'/%3E%3Cpath d='M60 46c9-3 15-10 15-19-10 3-15 10-15 19z'/%3E%3Cpath d='M36 96c-10-1-17-7-19-16 10 1 17 7 19 16z'/%3E%3C/svg%3E") center / contain no-repeat; }
@media (max-width: 900px) { body[data-page="weddings-honeymoons"] .section.alt::after { display: none; } }
body[data-page="river-cruises"] .section.alt::after { content: ""; position: absolute; left: 3%; top: 1rem; width: 104px; height: 104px; pointer-events: none; transform: rotate(-12deg); background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none' stroke='%239c6f76' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round' opacity='.6'%3E%3Ccircle cx='60' cy='60' r='54'/%3E%3Ccircle cx='60' cy='60' r='46' stroke-dasharray='2 3'/%3E%3Ccircle cx='60' cy='60' r='30'/%3E%3Cpath d='M44 66h32M48 66l-2-9h28l-2 9M54 57v-6h12v6M60 51v-5'/%3E%3Cpath id='arc' d='M22 60a38 38 0 0 1 76 0' stroke='none'/%3E%3Ctext font-family='Montserrat%2CArial%2Csans-serif' font-size='8.5' letter-spacing='2.4' fill='%2356695a' stroke='none'%3E%3CtextPath href='%23arc' startOffset='50%25' text-anchor='middle'%3EPORT OF CALL%3C/textPath%3E%3C/text%3E%3C/svg%3E") center / contain no-repeat; }
@media (max-width: 900px) { body[data-page="river-cruises"] .section.alt::after { width: 72px; height: 72px; left: 2%; top: .4rem; } }

/* ---------- Blog ---------- */
.breadcrumb { display: flex; flex-wrap: wrap; gap: .5rem; font-size: .85rem; color: var(--muted); margin: 0 0 1.6rem; }
.breadcrumb a { color: var(--muted); text-decoration: none; }
.breadcrumb a:hover { color: var(--terracotta); }
.post-header { padding: 3.5rem 0 0; background: var(--cream); text-align: center; }
.post-cat { font-family: var(--heading); font-size: .72rem; letter-spacing: .22em; text-transform: uppercase; color: var(--mauve-deep); margin: 0 0 1rem; }
.post-header h1 { font-size: clamp(1.9rem, 4.2vw, 3rem); line-height: 1.15; margin: 0 auto 1.2rem; text-wrap: balance; }
.post-meta { color: var(--muted); font-size: .9rem; margin: 0 0 2.2rem; }
.post-meta a { color: var(--sage-deep); }
.post-hero { max-width: 1000px; margin: 0 auto; padding: 0 var(--gutter, 1.25rem); }
.post-hero img { width: 100%; height: auto; display: block; border-radius: 2px; box-shadow: 0 24px 50px -30px rgba(47,47,42,.45); }
.post-body { padding-top: 3rem; padding-bottom: 3rem; }
.post-body h2 { margin: 3rem 0 1rem; scroll-margin-top: 90px; }
.post-body h3 { margin: 2rem 0 .6rem; font-size: 1.15rem; }
.post-body p, .post-body li { line-height: 1.75; }
.post-body a:not(.button) { color: var(--sage-deep); text-decoration: underline; text-underline-offset: .2em; text-decoration-color: var(--mauve); }
.post-body a:not(.button):hover { color: var(--terracotta); }
.post-body ol { padding-left: 1.3rem; }
.post-body ol li { padding: .3rem 0; }
.takeaways { background: var(--beige); border-left: 3px solid var(--mauve-deep); padding: 1.4rem 1.6rem; margin: 0 0 2rem; }
.takeaways-title, .toc-title { font-family: var(--heading); font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--sage-deep); margin: 0 0 .7rem; }
.takeaways ul { margin: 0; padding-left: 1.1rem; }
.takeaways li { padding: .2rem 0; }
.toc { border: 1px solid var(--line); padding: 1.3rem 1.6rem; margin: 0 0 2.5rem; background: #fff; }
.toc ol { margin: 0; padding-left: 1.2rem; }
.toc li { padding: .2rem 0; }
.post-figure { margin: 2.2rem 0; }
.post-figure img { width: 100%; height: auto; display: block; }
.post-figure figcaption { font-size: .85rem; color: var(--muted); text-align: center; margin-top: .6rem; font-style: italic; }
.post-figure-narrow { max-width: 460px; margin-left: auto; margin-right: auto; }
.table-wrap { overflow-x: auto; margin: 1.5rem 0 .5rem; }
.post-body table { width: 100%; border-collapse: collapse; font-size: .92rem; min-width: 520px; table-layout: fixed; }
.post-body th, .post-body td { text-align: left; padding: .8rem .9rem; border-bottom: 1px solid var(--line); vertical-align: top; }
.post-body thead th { font-family: var(--heading); font-size: .72rem; letter-spacing: .15em; text-transform: uppercase; color: var(--sage-deep); border-bottom: 2px solid var(--sage); }
.post-body tbody th { font-weight: 500; color: var(--ink); width: 24%; }
.post-faq { margin-top: 1rem; }
.post-cta { text-align: center; background: var(--sage-deep); color: #fff; padding: 2.5rem 1.5rem; margin: 3.5rem 0 2rem; position: relative; }
.post-cta h2 { margin: .3rem 0 .8rem; color: #fff; }
.post-cta .eyebrow { color: var(--mauve); }
.post-cta p { color: rgba(255,255,255,.88); }
.post-cta .button { background: #fff; color: var(--sage-deep); border-color: #fff; }
.post-cta .button:hover { background: var(--mauve); border-color: var(--mauve); color: var(--ink); }
.post-tags { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: 2rem 0; }
.post-tags-label { font-family: var(--heading); font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); margin-right: .4rem; }
.post-tags span:not(.post-tags-label) { border: 1px solid var(--line); border-radius: 999px; padding: .3rem .8rem; font-size: .8rem; color: var(--sage-deep); background: #fff; }
.post-author { display: flex; gap: 1.2rem; align-items: center; border-top: 1px solid var(--line); padding-top: 1.8rem; margin-top: 1rem; }
.post-author img { width: 88px; height: 110px; object-fit: cover; border-radius: 999px 999px 0 0; flex-shrink: 0; }
.post-author-name { font-family: var(--heading); margin: 0 0 .3rem; color: var(--ink); }
.post-author p { margin: 0; font-size: .95rem; color: var(--muted); }
.post-related .center-h, .center-h { text-align: center; margin-bottom: 2rem; }
.post-card-img { display: block; margin: -2rem -1.75rem 1.2rem; overflow: hidden; }
.post-card-img img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; display: block; transition: transform .6s ease; }
.post-card:hover .post-card-img img { transform: scale(1.04); }
.post-card h3 a { color: inherit; text-decoration: none; }
.post-card h3 a:hover { color: var(--terracotta); }
.post-card-meta { color: var(--muted); }
@media (max-width: 560px) { .post-author { flex-direction: column; text-align: center; } .post-body th, .post-body td { padding: .6rem .5rem; } }

/* ===== Mobile and touch polish ===== */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
input, select, textarea { font-size: 16px; }
.free-tag { font-size: 0.75rem; }
.post-cat, .takeaways-title, .toc-title, .post-tags-label, .post-card .tag, .table-wrap th { font-size: max(0.75rem, 12px); }
@media (max-width: 900px) {
  .button, a.button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; }
  .button.small, a.button.small { min-height: 44px; }
  .brand { min-height: 44px; display: inline-flex; align-items: center; }
  .menu-toggle { min-height: 44px; min-width: 44px; }
  .text-link { display: inline-block; padding: 0.75rem 0; }
  .breadcrumb a { display: inline-block; padding: 0.7rem 0.2rem; }
  .site-footer .phone, .footer-base a { min-height: 44px; display: inline-flex; align-items: center; }
  .site-footer ul a { display: inline-block; padding: 0.5rem 0; }
  .site-footer .social a { width: 44px; height: 44px; }
  details > summary { min-height: 48px; padding-top: 0.8rem; padding-bottom: 0.8rem; box-sizing: border-box; display: flex; align-items: center; }
  .post-card-img + .tag { margin-top: .2rem; }
}
@media (max-width: 560px) {
  .page-hero .button, .section .button, .post-final-cta .button { max-width: 100%; text-align: center; white-space: normal; }
  .cards { gap: 1.25rem; }
  h1 { overflow-wrap: break-word; }
}
.post-body .table-wrap th, .post-body table th { font-size: 0.8rem; }

/* Mobile hero legibility: soft cream wash behind the text, seal clear of the buttons */
@media (max-width: 720px) {
  .hero.hero-bg::before { background: linear-gradient(0deg, rgba(250,246,240,0.96) 0%, rgba(250,246,240,0.9) 48%, rgba(250,246,240,0.55) 70%, rgba(250,246,240,0) 100%); }
  .hero.hero-bg .eyebrow { color: #56695a; }
  .hero.hero-bg .seal { top: 1rem; bottom: auto; right: 1rem; }
  .hero.hero-bg .buttons .button { width: 100%; max-width: 320px; }
}

body[data-page="community"] .page-hero .wrap::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' width='64' height='64' fill='none' stroke='%239c6f76' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M32 58S14 41 14 27a18 18 0 0 1 36 0c0 14-18 31-18 31z'/%3E%3Ccircle cx='32' cy='27' r='7'/%3E%3C/svg%3E"); }

/* Header link and bold menu */
.header-link { font-family: var(--heading); font-weight: 500; font-size: max(0.8rem, 13px); letter-spacing: 0.14em; text-transform: uppercase; text-decoration: none; color: var(--sage-deep); padding: 0.55rem 0.2rem; white-space: nowrap; border-bottom: 1px solid transparent; transition: border-color .2s ease; }
.header-link:hover, .header-link[aria-current="page"] { border-bottom-color: var(--mauve-deep); }
.nav-col a { font-weight: 600; }
@media (max-width: 900px) {
  .header-link { min-height: 44px; display: inline-flex; align-items: center; }
}
@media (max-width: 560px) {
  .header-actions { flex-wrap: wrap; justify-content: flex-start; }
  .header-link { width: 100%; }
}

@media (max-width: 720px) { .site-header nav { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

#events .cards { margin-bottom: 1.5rem; }

/* ---------- Large desktop scaling ---------- */
@media (min-width: 1280px) {
  .wrap { max-width: 1280px; }
  .narrow { max-width: 760px; }
  .panel { max-width: 860px; }
  .hero-intro h2, .hero-intro .lead, .lead-in { max-width: 760px; }
  .page-hero .lead { max-width: 720px; }
  .quote, .pull { max-width: 900px; }
}
@media (min-width: 1440px) {
  html { font-size: 112.5%; }
  .wrap { max-width: 1400px; }
}
@media (min-width: 1800px) {
  html { font-size: 125%; }
  .wrap { max-width: 1560px; }
}
@media (min-width: 721px) {
  .hero.hero-bg .eyebrow { max-width: min(460px, 36vw); line-height: 1.15; }
}
@media (min-width: 1440px) {
  .hero.hero-bg h1 { max-width: 420px; }
  .hero-sub { max-width: 400px; }
}
