body {
  background: #fff;
  color: var(--sunward-body, #3d3d3d);
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.7;
}
body.is-locked { overflow: hidden; }
h1, h2, h3, h4 {
  color: var(--sunward-heading, #171717);
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -.02em;
  text-wrap: balance;
}
h1 { font-size: clamp(2.6rem, 6vw, 4.5rem); }
h2 { font-size: clamp(2rem, 4vw, 3.25rem); }
h3 { font-size: clamp(1.45rem, 2.5vw, 2rem); }
h4 { font-size: 1.25rem; font-weight: 600; }
button, input, select, textarea { font-family: var(--font-body); }
p + p { margin-top: 1rem; }
a { text-decoration-thickness: .08em; text-underline-offset: .2em; }
:focus-visible { outline: 3px solid var(--ochre-500); outline-offset: 4px; }
::selection { background: var(--sand-200); color: var(--forest-950); }
.skip-link { background: var(--white); color: var(--forest-950); left: 1rem; padding: .75rem 1rem; position: fixed; top: -8rem; z-index: 9999; }
.skip-link:focus { top: 1rem; }
.eyebrow { color: var(--clay, var(--ochre-600)); display: flex; align-items: center; gap: .7rem; font-family: var(--font-body); font-size: .68rem; font-weight: 800; letter-spacing: .14em; line-height: 1.3; text-transform: uppercase; }
.eyebrow::before { background: currentColor; content: ""; height: 2px; width: 2.25rem; }
.eyebrow--light { color: var(--sand-200); }
.lede { color: var(--muted); font-family: var(--font-body); font-size: clamp(1.05rem, 2vw, 1.2rem); line-height: 1.65; }
.text-link { align-items: center; color: var(--clay, var(--forest-800)); display: inline-flex; font-family: var(--font-body); font-weight: 700; gap: .45rem; text-decoration: none; }
.text-link::after { content: "→"; transition: transform var(--transition); }
.text-link:hover::after { transform: translateX(.3rem); }
.meta { color: var(--muted); font-family: var(--font-body); font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.prototype-pill { background: var(--ochre-600); border-radius: 999px; color: var(--white); font-size: .65rem; font-weight: 900; letter-spacing: .12em; padding: .35rem .65rem; position: fixed; right: 1rem; text-transform: uppercase; top: 1rem; z-index: 950; }
.sr-only { clip: rect(0, 0, 0, 0); clip-path: inset(50%); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; }
.no-js-message { background: var(--warning); color: var(--white); padding: .8rem; text-align: center; }

/* Lora + Manrope public type contract. These aliases keep custom templates,
   Elementor widgets and Gutenberg blocks on the same readable hierarchy. */
body, button, input, select, textarea { color: var(--sunward-body, #3d3d3d); font-family: var(--font-body); }
h1 { font-family: var(--font-display); font-size: clamp(2.5rem, 5.7vw, 6rem); font-weight: 700; line-height: clamp(.98, 1.4vw, 1.08); }
h2 { font-family: var(--font-display); font-size: clamp(2.15rem, 4.2vw, 3.875rem); font-weight: 700; line-height: 1.04; }
h3, h4 { font-family: var(--font-display); font-weight: 600; }
nav, .nav-list a, .mega-panel a, .site-header a, .site-footer a { font-family: var(--font-body); font-weight: 700; }
button, .button, .btn, input[type="submit"], .elementor-button { font-family: var(--font-body); font-weight: 700; }
.meta, .badge, .eyebrow, .filter-label, .spec-label { font-family: var(--font-body); font-weight: 600; }
.card h2, .card h3, .tour-card h2, .tour-card h3, .holiday-card h2, .holiday-card h3 { color: var(--sunward-card-heading, #1c1c1c); font-family: var(--font-display); font-weight: 700; }
/* Elementor kit defaults can carry legacy weights into widget markup; keep
   the public hierarchy authoritative without changing widget structure. */
body.swt-elementor-ui h1, body.swt-elementor-ui h2, body.swt-elementor-ui h3 { font-family: var(--font-display) !important; font-weight: 700 !important; }
body.swt-elementor-ui p, body.swt-elementor-ui li { font-family: var(--font-body); font-weight: 500; }
body.swt-elementor-ui .site-header a, body.swt-elementor-ui .nav-list a, body.swt-elementor-ui .elementor-button { font-family: var(--font-body) !important; font-weight: 700 !important; }
