/* KOI site styles (dark theme), canvas preview copy. Source of truth: css/style.css in the site repo. */
/* Keepers of the Innocent (KOI) - site styles
   Source of truth. Edit here, then run: python3 inline-css.py */

/* ---------- Fonts (self-hosted, OFL) ---------- */

/* ---------- Design tokens ---------- */
:root {
  --bg:        #0E0F10;
  --s1:        #17191B;
  --s2:        #141618;
  --rule:      #2B2F32;
  --hi:        #0F6D73;
  --text:      #F2F1ED;
  --t2:        #C3C7CB;
  --t3:        #98A0A5;
  --primary:   #118089;
  --primary-dk:#0B5458;
  --secondary: #15949C;
  --link:      #4CC3CA;
  --link-hover:#9BE0E4;
  color-scheme: dark;
  --tint:      #112A2D;
  --ink:       #050505;
  --ink-2:     #101213;
  --on-ink:    #F4F4F2;
  --on-ink-2:  #C9CDD2;
  --on-ink-3:  #9AA0A4;
  --white:     #FFFFFF;
  --error:     #FF7A6E;
  --px:        clamp(24px, 6vw, 96px);
  --section:   clamp(60px, 8vw, 96px);
  --maxw:      1240px;
  --header-h:  64px;
  --radius:    3px;
  --radius-lg: 4px;
  --gap:       clamp(20px, 3vw, 32px);
  --shadow:    0 1px 2px rgba(0, 0, 0, 0.5), 0 10px 30px rgba(0, 0, 0, 0.55);
  --font-display: 'Barlow Condensed', 'Arial Narrow', 'Roboto Condensed', Impact, sans-serif;
  --font-body: 'Barlow', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  --font-accent: 'Cinzel', 'Trajan Pro', Georgia, 'Times New Roman', serif;
  --road: repeating-linear-gradient(90deg, var(--secondary) 0 28px, transparent 28px 46px);
}
@media (min-width: 1100px) {
  :root { --header-h: 76px; }
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + 16px); }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.7;
  overflow-x: hidden;
}
@media (min-width: 768px) { body { font-size: 17px; } }
img { display: block; max-width: 100%; height: auto; }
a { color: var(--link); text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { color: var(--link-hover); }
:focus-visible { outline: 3px solid var(--secondary); outline-offset: 3px; border-radius: 4px; }
p { margin: 0 0 1.1em; }
p:last-child { margin-bottom: 0; }
ul, ol { margin: 0 0 1.1em; padding-left: 1.2em; }
strong { font-weight: 600; }
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 800;
  line-height: 1.04;
  letter-spacing: 0.005em;
  margin: 0 0 0.45em;
  color: var(--text);
  text-wrap: balance;
}
h1 { font-size: clamp(2.6rem, 6.4vw, 5.4rem); text-transform: uppercase; line-height: 0.98; }
h2 { font-size: clamp(2rem, 4.2vw, 3.3rem); text-transform: uppercase; }
h3 { font-size: clamp(1.35rem, 2.1vw, 1.7rem); text-transform: uppercase; letter-spacing: 0.01em; line-height: 1.1; }
.skip-link {
  position: absolute; left: 12px; top: -60px; z-index: 100;
  background: var(--ink); color: var(--white); padding: 10px 16px; border-radius: 6px;
}
.skip-link:focus { top: 12px; color: var(--white); }
.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ---------- Layout ---------- */
.wrap { width: 100%; max-width: calc(var(--maxw) + 2 * var(--px)); margin: 0 auto; padding: 0 var(--px); }
.section { padding: var(--section) 0; }
.section--white { background: var(--s2); }
.section--sand { background: var(--s1); }
.section--ink { background: var(--ink); color: var(--on-ink-2); }
.section--ink h2, .section--ink h3 { color: var(--on-ink); }
.section--ink a:not(.btn) { color: var(--link); }
.section--ink a:not(.btn):hover { color: var(--on-ink); }
.section--tight { padding: calc(var(--section) * 0.6) 0; }
.measure { max-width: 68ch; }
.lead { font-size: clamp(1.1rem, 1.6vw, 1.3rem); line-height: 1.6; color: var(--t2); }
.section--ink .lead { color: var(--on-ink-2); }
.center { text-align: center; }
.center .measure { margin-left: auto; margin-right: auto; }
.section-head { max-width: 760px; margin-bottom: clamp(32px, 4vw, 52px); }
.section-head.center { margin-left: auto; margin-right: auto; }

.split { display: grid; gap: clamp(32px, 5vw, 72px); align-items: center; }
@media (min-width: 900px) {
  .split { grid-template-columns: 1fr 1fr; }
  .split--wide-copy { grid-template-columns: 1.15fr 0.85fr; }
  .split--wide-media { grid-template-columns: 0.85fr 1.15fr; }
  .split--top { align-items: start; }
  .split--flip > :first-child { order: 2; }
}

/* ---------- Eyebrow, patch, road line ---------- */
.eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--font-display); font-weight: 700; font-size: 0.95rem;
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--link);
  margin: 0 0 16px;
}
.eyebrow::before { content: ""; width: 34px; height: 4px; background: var(--road); background-size: 46px 4px; border-radius: 2px; }
.section--ink .eyebrow { color: var(--secondary); }
.patch {
  display: inline-block; position: relative;
  font-family: var(--font-display); font-weight: 700; font-size: 0.9rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--white); background: var(--ink);
  padding: 8px 16px; border-radius: 2px;
  box-shadow: inset 0 0 0 3px var(--ink), inset 0 0 0 4.5px var(--secondary);
}
.road-line { height: 4px; background: var(--road); border: 0; margin: 0; opacity: 0.9; }
.tagline { font-family: var(--font-accent); font-weight: 700; letter-spacing: 0.02em; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 48px; padding: 12px 24px; border-radius: 2px;
  font-family: var(--font-display); font-weight: 700; font-size: 1.08rem; letter-spacing: 0.08em; text-transform: uppercase;
  text-decoration: none; border: 2px solid transparent; cursor: pointer; line-height: 1.1;
  transition: background-color .2s, color .2s, border-color .2s, transform .2s;
}
.btn:hover { transform: translateY(-1px); }
.btn-primary { background: var(--primary); color: var(--white); }
.btn-primary:hover { background: var(--link); color: var(--ink); }
.btn-ink { background: #23272A; color: var(--white); border-color: #454B50; }
.btn-ink:hover { background: var(--link); border-color: var(--link); color: var(--ink); }
.btn-outline { background: transparent; color: var(--text); border-color: var(--text); }
.btn-outline:hover { background: var(--text); color: var(--ink); }
.section--ink .btn-outline, .band-ink .btn-outline { color: var(--on-ink); border-color: var(--on-ink-2); }
.section--ink .btn-outline:hover, .band-ink .btn-outline:hover { background: var(--on-ink); color: var(--ink); }
.btn-light { background: var(--white); color: var(--ink); }
.btn-light:hover { background: #CFEBED; color: var(--ink); }
.btn-sm { min-height: 44px; padding: 10px 18px; font-size: 1rem; }
.btn .arrow { width: 18px; height: 18px; flex: none; }
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.text-link {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px;
  font-family: var(--font-display); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; font-size: 1.02rem;
  text-decoration: none; color: var(--link);
}
.text-link:hover { color: var(--link-hover); text-decoration: underline; }
.text-link .arrow { width: 18px; height: 18px; }

/* ---------- Header ---------- */
.site-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  height: var(--header-h);
  background: var(--ink);
  border-top: 3px solid var(--primary);
  border-bottom: 1px solid var(--rule);
  transition: box-shadow .25s;
}
.site-header.scrolled { box-shadow: 0 6px 20px rgba(17, 17, 17, 0.08); }
.header-inner { height: 100%; display: flex; align-items: center; gap: 20px; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--text); min-width: 0; margin-right: auto; }
.brand img { width: 44px; height: 44px; border-radius: 4px; flex: none; }
.brand-text { display: flex; flex-direction: column; min-width: 0; }
.brand-name { font-family: var(--font-display); font-weight: 700; font-size: 1.15rem; letter-spacing: 0.06em; text-transform: uppercase; line-height: 1.1; white-space: nowrap; }
.brand-tag { font-family: var(--font-accent); font-weight: 700; font-size: 0.68rem; color: var(--link); line-height: 1.3; white-space: nowrap; }
@media (max-width: 400px) { .brand-tag { display: none; } .brand-name { font-size: 1.05rem; } }
@media (min-width: 1100px) { .brand img { width: 52px; height: 52px; } .brand-name { font-size: 1.3rem; } .brand-tag { font-size: 0.74rem; } }
.nav-desktop { display: none; }
.header-cta { display: none; }
@media (min-width: 1100px) {
  .nav-desktop { display: block; }
  .nav-desktop ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 2px; }
  .nav-desktop a {
    display: flex; align-items: center; min-height: 44px; padding: 0 12px;
    font-family: var(--font-display); font-weight: 700; font-size: 1.05rem; letter-spacing: 0.07em; text-transform: uppercase;
    color: var(--text); text-decoration: none; border-radius: 6px; position: relative;
  }
  .nav-desktop a:hover { color: var(--link); }
  .nav-desktop a[aria-current="page"] { color: var(--link); }
  .nav-desktop a[aria-current="page"]::after { content: ""; position: absolute; left: 12px; right: 12px; bottom: 4px; height: 3px; background: var(--road); background-size: 46px 3px; }
  .header-cta { display: flex; gap: 8px; margin-left: 8px; }
}
.burger {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 48px; height: 48px; border: 1px solid #3A3F43; border-radius: 3px; background: var(--ink); color: var(--white); cursor: pointer;
}
.burger svg { width: 24px; height: 24px; }
@media (min-width: 1100px) { .burger { display: none; } }

/* ---------- Mobile drawer ---------- */
.drawer-overlay {
  position: fixed; inset: 0; z-index: 60; background: rgba(17, 17, 17, 0.55);
  opacity: 0; visibility: hidden; transition: opacity .25s, visibility .25s;
}
.drawer-overlay.open { opacity: 1; visibility: visible; }
.drawer {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 70;
  width: min(86vw, 360px); background: var(--s2);
  display: flex; flex-direction: column; padding: 16px 24px 28px; overflow-y: auto;
  transform: translateX(100%); visibility: hidden; transition: transform .3s ease, visibility .3s;
  box-shadow: -12px 0 32px rgba(17, 17, 17, 0.2);
}
.drawer.open { transform: none; visibility: visible; }
.drawer-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.drawer-top img { width: 44px; height: 44px; border-radius: 4px; }
.drawer-close {
  width: 48px; height: 48px; display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 2px solid var(--rule); border-radius: 3px; color: var(--text); cursor: pointer;
}
.drawer-close svg { width: 22px; height: 22px; }
.drawer ul { list-style: none; margin: 0 0 20px; padding: 0; }
.drawer li + li { border-top: 1px solid var(--rule); }
.drawer ul a {
  display: flex; align-items: center; min-height: 52px;
  font-family: var(--font-display); font-weight: 700; font-size: 1.35rem; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--text); text-decoration: none;
}
.drawer ul a[aria-current="page"] { color: var(--link); }
.drawer .btn { width: 100%; margin-bottom: 10px; }
.drawer-contact { margin-top: auto; padding-top: 16px; font-size: 0.95rem; color: var(--t2); }
.drawer-contact a { font-weight: 600; }
body.no-scroll { overflow: hidden; }

/* ---------- Heroes ---------- */
.hero, .page-hero { padding-top: calc(var(--header-h) + clamp(40px, 6vw, 80px)); padding-bottom: clamp(56px, 7vw, 96px); position: relative;
  background: repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.022) 0 1px, transparent 1px 16px);
  border-bottom: 1px solid var(--rule); }
.hero .lead { max-width: 34em; }
.hero h1 { margin-bottom: 22px; font-size: clamp(2.6rem, 5.6vw, 4.6rem); }
.hero h1 .accent { color: var(--link); }
.lead-grid { display: grid; gap: clamp(36px, 5vw, 64px); align-items: center; }
@media (min-width: 960px) { .lead-grid { grid-template-columns: 1.05fr 0.95fr; } }
.lead-media { position: relative; }
.frame { position: relative; border-radius: var(--radius-lg); overflow: hidden; background: var(--s1); }
.frame img { width: 100%; height: 100%; object-fit: cover; filter: saturate(0.88) contrast(1.06) brightness(0.92); }
.frame--4x3 { aspect-ratio: 4 / 3; }
.frame--1x1 { aspect-ratio: 1 / 1; }
.frame--4x5 { aspect-ratio: 4 / 5; }
.frame--3x2 { aspect-ratio: 3 / 2; }
.frame--16x9 { aspect-ratio: 16 / 9; }
.frame--auto img { height: auto; }
.offset-block { position: relative; }
.offset-block::before {
  content: ""; position: absolute; inset: 18px -18px -18px 18px; border-radius: var(--radius-lg);
  background: var(--primary); z-index: 0;
}
.offset-block > .frame { z-index: 1; }
@media (max-width: 600px) { .offset-block::before { inset: 10px -10px -10px 10px; } }
.badge-card {
  position: absolute; z-index: 2; left: -12px; bottom: -28px;
  display: flex; align-items: center; gap: 14px; max-width: 330px;
  background: var(--ink); color: var(--on-ink); padding: 14px 20px 14px 14px; border-radius: 4px; border: 1px solid #2B2F32;
  box-shadow: var(--shadow);
}
.badge-card img { width: 64px; height: 64px; border-radius: 3px; flex: none; }
.badge-card p { margin: 0; font-family: var(--font-accent); font-weight: 700; font-size: 1rem; line-height: 1.35; }
@media (max-width: 600px) { .badge-card { left: 8px; right: 8px; bottom: -36px; max-width: none; } .badge-card img { width: 52px; height: 52px; } .badge-card p { font-size: 0.92rem; } }
.lead-note { margin-top: 26px; font-size: 0.95rem; color: var(--t3); }
.page-hero .lead { max-width: 36em; }
.page-hero--text { padding-bottom: clamp(40px, 5vw, 64px); }
.page-hero--text .lead { max-width: 44em; }
.page-hero--ink { background: var(--ink); color: var(--on-ink-2); }
.page-hero--ink h1 { color: var(--on-ink); }
.page-hero--ink .lead { color: var(--on-ink-2); }

/* Breadcrumb */
.crumbs { margin: 0 0 18px; font-size: 0.92rem; color: var(--t3); }
.crumbs ol { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.crumbs li + li::before { content: "/"; margin-right: 6px; color: var(--rule); }
.crumbs a { color: var(--t3); text-decoration: none; display: inline-block; padding: 2px 0; }
.crumbs a:hover { color: var(--link-hover); text-decoration: underline; }
.crumbs [aria-current] { color: var(--t2); }

/* Required mobile hero offset for the fixed nav */
@media (max-width: 640px) {
  .hero, .page-hero, [class*="hero"] {
    padding-top: calc(64px + 32px);
    min-height: unset !important;
  }
}
@media (max-width: 375px) {
  .hero, .page-hero, [class*="hero"] {
    padding-top: calc(64px + 20px);
    min-height: unset !important;
  }
}

/* ---------- Emergency strip ---------- */
.alert-strip { background: var(--ink); color: var(--on-ink); }
.alert-strip .wrap { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; padding-top: 12px; padding-bottom: 12px; font-size: 0.98rem; }
.alert-strip strong { font-family: var(--font-display); letter-spacing: 0.08em; text-transform: uppercase; color: var(--secondary); font-size: 1.05rem; }
.alert-strip a { color: var(--on-ink); font-weight: 600; }

/* ---------- Mission / quote ---------- */
.quote {
  font-family: var(--font-accent); font-weight: 700; color: var(--text);
  font-size: clamp(1.7rem, 3.4vw, 2.6rem); line-height: 1.25; letter-spacing: 0.01em; text-transform: none;
  margin: 0 0 24px; text-wrap: balance;
}
.quote--teal { color: var(--link); }
.section--ink .quote { color: var(--on-ink); }
.quote-mark { display: block; width: 56px; height: 4px; background: var(--road); background-size: 46px 4px; margin-bottom: 22px; }
.stack-lines { list-style: none; padding: 0; margin: 28px 0; }
.stack-lines li {
  font-family: var(--font-display); font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em;
  font-size: clamp(1.7rem, 3.6vw, 2.6rem); line-height: 1.08; color: var(--text);
  padding: 6px 0; border-bottom: 2px solid var(--rule);
}
.stack-lines li:last-child { border-bottom: 0; }
.stack-lines li span { color: var(--link); }
.section--ink .stack-lines li { color: var(--on-ink); border-color: #2C3032; }
.section--ink .stack-lines li span { color: var(--secondary); }
.values { display: flex; flex-wrap: wrap; gap: 10px; margin: 26px 0 0; padding: 0; list-style: none; }
.values li { margin: 0; }

/* ---------- Services (numbered road) ---------- */
.road-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(28px, 4vw, 40px); counter-reset: step; }
@media (min-width: 900px) { .road-steps { grid-template-columns: repeat(3, 1fr); } }
.road-steps > li { position: relative; display: flex; flex-direction: column; background: var(--s2); border: 1px solid var(--rule); border-radius: var(--radius-lg); overflow: hidden; }
.road-steps .frame { border-radius: 0; }
.step-body { padding: 26px 26px 22px; display: flex; flex-direction: column; flex: 1; }
.step-num {
  font-family: var(--font-display); font-weight: 700; font-size: 1rem; letter-spacing: 0.16em; color: var(--link);
  display: flex; align-items: center; gap: 12px; margin-bottom: 10px;
}
.step-num::after { content: ""; flex: 1; height: 4px; background: var(--road); background-size: 46px 4px; opacity: .8; }
.step-body p { color: var(--t2); }
.step-body .text-link { margin-top: auto; padding-top: 8px; }

/* ---------- Service detail rows ---------- */
.service { padding: clamp(40px, 5vw, 64px) 0; border-top: 1px solid var(--rule); }
.service:first-of-type { border-top: 0; padding-top: 0; }
.service:last-of-type { padding-bottom: 0; }
.service h3 { font-size: clamp(1.8rem, 3.2vw, 2.5rem); }
.service .kicker { font-family: var(--font-display); font-weight: 700; letter-spacing: 0.16em; color: var(--link); text-transform: uppercase; margin-bottom: 8px; }
.service p { color: var(--t2); }
.service .callout-line { font-family: var(--font-accent); font-weight: 700; color: var(--text); font-size: 1.15rem; line-height: 1.45; border-left: 0; margin-top: 18px; }
.chips { list-style: none; padding: 0; margin: 18px 0 22px; display: flex; flex-wrap: wrap; gap: 8px; }
.chips li { background: var(--tint); color: var(--link); border: 1px solid #1E4A4E; font-weight: 600; font-size: 0.95rem; padding: 6px 14px; border-radius: 2px; }
.section--ink .chips li { background: #1F2B2C; color: var(--on-ink); }

/* ---------- Cards ---------- */
.grid { display: grid; gap: var(--gap); }
.grid-3 { grid-template-columns: 1fr; }
@media (min-width: 900px) { .grid-3 { grid-template-columns: repeat(3, 1fr); } }
.grid-4 { grid-template-columns: 1fr; }
@media (min-width: 560px) { .grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .grid-4 { grid-template-columns: repeat(4, 1fr); } }
.grid-2 { grid-template-columns: 1fr; }
@media (min-width: 768px) { .grid-2 { grid-template-columns: repeat(2, 1fr); } }
.card {
  background: var(--s2); border: 1px solid var(--rule); border-radius: var(--radius-lg);
  padding: clamp(24px, 3vw, 32px); display: flex; flex-direction: column;
}
.card h3 { margin-bottom: 10px; }
.card p { color: var(--t2); }
.card .btn, .card .text-link { margin-top: auto; align-self: flex-start; }
.card .card-cta { margin-top: auto; padding-top: 18px; }
.card--media { padding: 0; overflow: hidden; }
.card--media .card-body { padding: 24px 24px 26px; display: flex; flex-direction: column; flex: 1; }
.card--media .frame { border-radius: 0; }
.card-icon {
  width: 56px; height: 56px; border-radius: 4px; background: var(--ink); border: 1px solid var(--rule); color: var(--link);
  display: inline-flex; align-items: center; justify-content: center; margin-bottom: 18px;
}
.card-icon svg { width: 28px; height: 28px; }
.card--ink { background: var(--ink); border-color: var(--ink); color: var(--on-ink-2); }
.card--ink h3 { color: var(--on-ink); }
.card--ink p { color: var(--on-ink-2); }
.card--ink .card-icon { background: var(--primary); color: var(--white); }
.card--ink a { color: var(--secondary); font-weight: 600; }
.card--ink a:hover { color: var(--on-ink); }
.card--ink .phone-list li + li { border-color: #2C3032; }
.section--ink .card { background: var(--ink-2); border-color: #2C3032; }
.section--ink .card p { color: var(--on-ink-2); }

/* Contact directory */
.contact-card h3 { font-size: 1.35rem; }
.contact-card .label { font-size: 0.92rem; color: var(--t3); margin-bottom: 4px; }
.contact-value { font-weight: 600; font-size: 1.05rem; word-break: break-word; }
.contact-value a { display: inline-flex; align-items: center; min-height: 44px; }
.phone-list { list-style: none; margin: 0; padding: 0; }
.phone-list li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding: 6px 0; }
.phone-list li + li { border-top: 1px solid var(--rule); }
.phone-list .num { font-weight: 600; font-size: 1.15rem; min-width: 9em; }
.phone-list a { display: inline-flex; align-items: center; min-height: 44px; }
.section--ink .phone-list li + li { border-color: #2C3032; }

/* ---------- Photo mosaic ---------- */
.mosaic { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
@media (min-width: 1024px) { .mosaic { grid-template-columns: repeat(4, 1fr); gap: 16px; } }
.mosaic .frame { aspect-ratio: 1 / 1; border-radius: 3px; }
.collage { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.collage .frame:first-child { grid-column: 1 / -1; aspect-ratio: 16 / 10; }
.collage .frame { aspect-ratio: 1 / 1; border-radius: 3px; }
.pair { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.pair .frame { aspect-ratio: 3 / 4; border-radius: 3px; }

/* ---------- Event feature ---------- */
.event { display: grid; gap: clamp(32px, 5vw, 64px); align-items: start; }
@media (min-width: 900px) { .event { grid-template-columns: 0.8fr 1.2fr; } }
.event-flyer { border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow); background: var(--ink); aspect-ratio: 2 / 3; }
.event-flyer img { width: 100%; height: 100%; object-fit: cover; }
.event-meta { display: grid; gap: 0; margin: 24px 0 8px; border-top: 2px solid var(--rule); }
.event-meta > div { display: grid; grid-template-columns: 1fr; gap: 2px; padding: 14px 0; border-bottom: 1px solid var(--rule); }
@media (min-width: 560px) { .event-meta > div { grid-template-columns: 9.5em 1fr; gap: 16px; } }
.event-meta dt { font-family: var(--font-display); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--link); }
.event-meta dd { margin: 0; color: var(--text); font-weight: 600; }
.event-meta dd span { display: block; font-weight: 400; color: var(--t2); }
.section--ink .event-meta { border-color: #2C3032; }
.section--ink .event-meta > div { border-color: #2C3032; }
.section--ink .event-meta dt { color: var(--secondary); }
.section--ink .event-meta dd { color: var(--on-ink); }
.section--ink .event-meta dd span { color: var(--on-ink-2); }
.date-block {
  display: flex; width: max-content; align-items: stretch; border-radius: 3px; overflow: hidden; margin-bottom: 20px; border: 2px solid var(--secondary);
  font-family: var(--font-display); font-weight: 700; text-transform: uppercase;
}
.date-block .mo { background: var(--ink); color: var(--secondary); padding: 8px 14px; letter-spacing: 0.12em; display: flex; align-items: center; }
.date-block .dy { background: var(--s2); color: var(--text); padding: 4px 16px; font-size: 2rem; line-height: 1.1; display: flex; align-items: center; }
.section--ink .date-block { border-color: var(--secondary); }
.section--ink .date-block .dy { background: var(--ink-2); color: var(--on-ink); }
.note { font-size: 0.95rem; color: var(--t3); }
.section--ink .note { color: var(--on-ink-3); }
.map-link { font-weight: 600; }

/* ---------- Help band / callouts ---------- */
.band-ink { background: var(--ink); color: var(--on-ink-2); border-radius: var(--radius-lg); border: 1px solid var(--rule); border-left: 4px solid var(--primary); padding: clamp(28px, 4vw, 48px); }
.band-ink h2, .band-ink h3 { color: var(--on-ink); }
.band-ink a:not(.btn) { color: var(--link); }
.band-ink a:not(.btn):hover { color: var(--on-ink); }
.band-ink .note { color: var(--on-ink-3); }
.band-ink .eyebrow { color: var(--secondary); }
.band-ink .phone-list li + li { border-color: #2C3032; }
.band-ink .num { color: var(--on-ink); }
.callout {
  background: var(--s2); border: 2px solid var(--primary); border-radius: var(--radius-lg);
  padding: clamp(22px, 3vw, 32px);
}
.callout h2, .callout h3 { font-size: clamp(1.5rem, 2.6vw, 2rem); }
.callout--tint { background: var(--tint); border-color: var(--tint); }
.hotlines { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.hotlines li { display: grid; gap: 4px; padding: 16px 0; border-bottom: 1px solid var(--rule); }
@media (min-width: 700px) { .hotlines li { grid-template-columns: 1.2fr 1fr; align-items: center; gap: 16px; } }
.hotlines .name { font-weight: 600; color: var(--text); }
.hotlines .how { color: var(--t2); }
.hotlines a { font-weight: 600; display: inline-flex; align-items: center; min-height: 44px; }

/* ---------- Funds ---------- */
.funds { display: grid; gap: 14px; grid-template-columns: 1fr; margin: 22px 0; }
@media (min-width: 560px) { .funds { grid-template-columns: 1fr 1fr; } }
.fund { background: var(--s2); border: 1px solid var(--rule); border-radius: 4px; padding: 18px 20px; }
.fund strong { display: block; font-family: var(--font-display); font-size: 1.35rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--link); }
.fund span { color: var(--t2); font-size: 0.97rem; }

/* ---------- Compliance ---------- */
.legal-box { border: 1px solid var(--rule); border-radius: 4px; padding: 20px 22px; background: var(--s2); font-size: 0.92rem; color: var(--t2); }
.legal-box .caps { text-transform: uppercase; font-size: 0.85rem; letter-spacing: 0.01em; }

/* ---------- Forms ---------- */
.form-card { background: var(--s2); border: 1px solid var(--rule); border-radius: var(--radius-lg); padding: clamp(22px, 3.5vw, 40px); box-shadow: var(--shadow); }
.form-row { display: grid; gap: 0 16px; grid-template-columns: 1fr; }
@media (min-width: 560px) { .form-row { grid-template-columns: 1fr 1fr; } }
.form-group { margin-bottom: 18px; }
.form-group label, .form-group legend { display: block; font-weight: 600; margin-bottom: 6px; color: var(--text); font-size: 0.98rem; }
.form-group .req { color: var(--link); }
.form-group .hint { font-weight: 400; color: var(--t3); font-size: 0.9rem; }
input[type="text"], input[type="email"], input[type="tel"], select, textarea {
  width: 100%; min-height: 48px; padding: 11px 14px;
  font: inherit; font-size: 16px; color: var(--text); background: var(--bg);
  border: 1.5px solid var(--rule); border-radius: 3px;
  transition: border-color .2s, box-shadow .2s;
}
textarea { min-height: 140px; resize: vertical; }
select { appearance: none; -webkit-appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--t2) 50%), linear-gradient(135deg, var(--t2) 50%, transparent 50%); background-position: calc(100% - 20px) 21px, calc(100% - 14px) 21px; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 40px; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--link); box-shadow: 0 0 0 3px rgba(76, 195, 202, 0.25); background: var(--s2); }
fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.choice-row { display: flex; flex-wrap: wrap; gap: 8px; }
.choice { position: relative; }
.choice input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.choice span {
  display: inline-flex; align-items: center; min-height: 44px; padding: 8px 18px; border-radius: 3px;
  border: 1.5px solid var(--rule); background: var(--bg); cursor: pointer; font-weight: 600; font-size: 0.97rem;
}
.choice input:checked + span { background: var(--primary); border-color: var(--primary); color: var(--white); }
.choice input:focus-visible + span { outline: 3px solid var(--secondary); outline-offset: 2px; }
.form-card button[type="submit"] { width: 100%; margin-top: 6px; }
@media (min-width: 560px) { .form-card button[type="submit"] { width: auto; } }
.form-error { color: var(--error); margin-top: 12px; font-size: 14px; font-weight: 600; }
.form-fine { font-size: 0.88rem; color: var(--t3); margin-top: 14px; }

/* ---------- FAQ ---------- */
.faq-layout { display: grid; gap: clamp(32px, 5vw, 64px); }
@media (min-width: 1000px) { .faq-layout { grid-template-columns: 260px 1fr; align-items: start; } }
.faq-toc { position: static; }
@media (min-width: 1000px) { .faq-toc { position: sticky; top: calc(var(--header-h) + 24px); } }
.faq-toc p { font-family: var(--font-display); font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--t3); margin-bottom: 8px; }
.faq-toc ul { list-style: none; padding: 0; margin: 0; border-left: 3px solid var(--rule); }
.faq-toc a { display: flex; align-items: center; min-height: 44px; padding-left: 16px; text-decoration: none; color: var(--t2); font-weight: 600; }
.faq-toc a:hover { color: var(--link); }
.faq-group { margin-bottom: clamp(40px, 5vw, 64px); }
.faq-group:last-child { margin-bottom: 0; }
.faq-group h2 { font-size: clamp(1.8rem, 3vw, 2.4rem); padding-bottom: 14px; border-bottom: 4px solid transparent; border-image: var(--road) 1; margin-bottom: 8px; }
.faq-item { padding: 22px 0; border-bottom: 1px solid var(--rule); }
.faq-item h3 { font-family: var(--font-body); font-weight: 600; text-transform: none; letter-spacing: 0; font-size: 1.18rem; line-height: 1.4; margin-bottom: 8px; }
.faq-item p { color: var(--t2); }

/* ---------- Footer ---------- */
.site-footer {
  --t2: #C9CDD2; --t3: #9AA0A4;
  background: var(--ink); color: var(--on-ink-2); padding-top: clamp(56px, 7vw, 88px);
  border-top: 3px solid var(--primary);
  font-size: 0.97rem;
}
.site-footer a { color: var(--on-ink); text-decoration: none; }
.site-footer a:hover { color: var(--secondary); text-decoration: underline; }
.footer-top { display: grid; gap: 36px; grid-template-columns: 1fr; padding-bottom: 44px; border-bottom: 1px solid #2C3032; }
@media (min-width: 700px) { .footer-top { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .footer-top { grid-template-columns: 1.5fr 1fr 1fr 1fr; } }
.footer-brand img { width: 88px; height: 88px; border-radius: 4px; margin-bottom: 16px; }
.footer-brand .tagline { color: var(--on-ink); font-size: 1.05rem; margin-bottom: 14px; }
.nap { font-style: normal; line-height: 1.8; }
.nap strong { color: var(--on-ink); font-weight: 600; }
.nap a { display: inline-block; padding: 4px 0; }
.footer-col h2 {
  font-size: 1.05rem; letter-spacing: 0.16em; color: var(--secondary); margin-bottom: 12px;
}
.footer-col ul { list-style: none; padding: 0; margin: 0; }
.footer-col li a { display: inline-flex; align-items: center; min-height: 40px; }
.footer-compliance { display: grid; gap: 20px; align-items: center; padding: 32px 0; border-bottom: 1px solid #2C3032; }
@media (min-width: 800px) { .footer-compliance { grid-template-columns: auto 1fr; gap: 28px; } }
.footer-compliance img { width: 88px; height: 88px; }
.registry-links { display: flex; flex-wrap: wrap; gap: 4px 18px; margin-bottom: 10px; }
.registry-links a { color: var(--on-ink); text-decoration: underline; text-underline-offset: 3px; display: inline-flex; align-items: center; min-height: 40px; }
.disclosure { font-size: 0.8rem; line-height: 1.6; color: var(--t3); margin: 0; }
.site-footer .disclosure a { text-decoration: underline; text-underline-offset: 2px; }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 24px; padding: 20px 0 28px; }
.footer-bottom p { margin: 0; font-size: 0.88rem; color: var(--t3); }
.site-credit {
  font-size: 11px;
  color: var(--t3);
  text-align: right;
  margin-top: 8px;
}
.site-credit a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.site-credit a:hover {
  color: var(--t2);
}
.footer-bottom .site-credit { margin: 0; font-size: 11px; }
@media (max-width: 640px) { .footer-bottom { flex-direction: column; align-items: flex-start; } .site-credit { text-align: left; } }

/* ---------- Reveal (below the fold only) ---------- */
.js .reveal { opacity: 0; transform: translateY(16px); transition: opacity .5s, transform .5s; }
.js .reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .js .reveal { opacity: 1; transform: none; transition: none; }
  .btn, .drawer, .drawer-overlay { transition: none; }
  html { scroll-behavior: auto; }
}

/* ---------- Utilities ---------- */
.mt-0 { margin-top: 0; }
.mt-m { margin-top: 28px; }
.mb-s { margin-bottom: 12px; }
.mb-m { margin-bottom: 24px; }
.mb-l { margin-bottom: clamp(32px, 5vw, 56px); }
.pt-0 { padding-top: 0; }
.nowrap { white-space: nowrap; }
.btn-row--center { justify-content: center; }
.logo-lg { width: 160px; height: 160px; border-radius: 6px; margin-bottom: 24px; }
a.frame { display: block; }
.mb-0 { margin-bottom: 0; }
.mt-l { margin-top: clamp(32px, 4vw, 48px); }
.h3-size { font-size: clamp(1.35rem, 2.1vw, 1.7rem); letter-spacing: 0.01em; line-height: 1.1; }

/* ---------- Canvas preview overrides ---------- */
.site-header { position: relative; }
.hero, .page-hero { padding-top: clamp(40px, 6vw, 80px); }
@media (max-width: 640px) { .hero, .page-hero { padding-top: 32px; } }
@media (max-width: 375px) { .hero, .page-hero { padding-top: 24px; } }
.drawer, .drawer-overlay { position: absolute; }
.koi-page { position: relative; overflow-x: hidden; }

/* =====================================================================
   EDITORIAL REDESIGN LAYER (vintage / textured / dark charcoal + teal)
   Brand teal kept: #0F6D73 primary, #15949C secondary, #0B5458 deep.
   #4CC3CA / #9BE0E4 are lighter tints of the same teal, used only where
   teal must read as TEXT on charcoal (contrast).
   ===================================================================== */
:root {
  --bg:#1C1A18; --ink:#121110; --charcoal:#2E2B29; --s1:#252220; --s2:#2A2725;
  --paper:#F2EFE9; --paper-2:#E7E1D3; --neutral:#CEC6B4;
  --rule:#403B37;
  --text:#F2EFE9; --t2:#CEC6B4; --t3:#A89F8E;
  --on-ink:#F2EFE9; --on-ink-2:#CEC6B4; --on-ink-3:#A89F8E;
  --primary:#0F6D73; --primary-dk:#0B5458; --secondary:#15949C;
  --link:#4CC3CA; --link-hover:#9BE0E4; --tint:#12302F;
  --font-head:'Caprasimo','Cooper Black','Rockwell',Georgia,serif;
  --font-body:'Montserrat',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --font-label:'Barlow Condensed','Arial Narrow','Roboto Condensed',sans-serif;
  --font-mark:'Spectral SC',Georgia,'Times New Roman',serif;
  --font-display:var(--font-label);
  --font-accent:var(--font-mark);
  --radius:2px; --radius-lg:2px;
  --ease:cubic-bezier(.2,.7,.2,1);
  --tx:.5s var(--ease);
  --grain:url("../images/grain-fine.png");
  --paper-tx:url("../images/grain-coarse.png");
}
body, .koi-page.ed { font-family: var(--font-body); }
.koi-page.ed { background: var(--bg); color: var(--text); font-size: 16px; line-height: 1.7; }
@media (min-width:768px){ .koi-page.ed { font-size: 16.5px; } }

/* ---- Type system ---- */
h1, h2, h3, h4 {
  font-family: var(--font-head); font-weight: 400; font-synthesis: none;
  text-transform: lowercase; letter-spacing: -0.005em; line-height: 0.96;
  color: var(--text); text-wrap: balance;
}
h1 { font-size: clamp(2.8rem, 6.4vw, 5.6rem); text-transform: lowercase; line-height: .94; }
h2 { font-size: clamp(2.3rem, 5.2vw, 4.9rem); text-transform: lowercase; }
h3 { font-size: clamp(1.35rem, 2.2vw, 1.85rem); text-transform: lowercase; line-height: 1.02; letter-spacing: 0; }
.label, .eyebrow, .text-link, .btn, .patch, .step-num, .event-meta dt, .fund strong, .faq-toc p {
  font-family: var(--font-label); font-weight: 600; text-transform: lowercase; letter-spacing: .15em;
}
.label { font-size: .98rem; line-height: 1.2; }
.eyebrow { font-size: 1rem; color: var(--link); }
.eyebrow::before { height: 3px; border-radius: 0; }
.section--ink .eyebrow, .band-ink .eyebrow { color: var(--link); }
.btn { border-radius: 0; font-size: 1.05rem; letter-spacing: .15em; border-width: 1.5px; }
.btn-primary { background: var(--primary); color: var(--paper); }
.patch { border-radius: 0; text-transform: lowercase; letter-spacing: .15em; box-shadow: inset 0 0 0 1px #4a4540; background: var(--ink); }
.quote, .tagline { font-family: var(--font-head); font-weight: 400; text-transform: lowercase; letter-spacing: 0; }
.tagline { font-family: var(--font-mark); font-weight: 700; text-transform: none; }
.lead { color: var(--t2); }

/* ---- Texture layers ---- */
.tx { position: relative; isolation: isolate; }
.tx::after {
  content: ""; position: absolute; inset: 0; z-index: 6; pointer-events: none;
  background-image: var(--grain); background-size: 320px 320px; opacity: .2;
}
.tx-paper::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: var(--paper-tx); background-size: 640px 640px; opacity: .22;
}
.tx > .wrap, .tx > .ed-in { position: relative; z-index: 2; }

/* ---- Scroll entrance (progressive; no JS) ---- */
@supports (animation-timeline: view()) {
  .rv { animation: rv linear both; animation-timeline: view(); animation-range: entry 0% entry 40%; }
  @keyframes rv { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
}
@media (prefers-reduced-motion: reduce) { .rv { animation: none !important; } }

/* ---- Header: narrow strip + hanging badge ---- */
.ed-header { position: relative; z-index: 60; height: 52px; background: var(--ink); border-bottom: 1px solid #2c2926; }
.ed-bar { height: 52px; display: flex; align-items: center; gap: 22px; padding: 0 var(--px); }
.ed-badge-wrap { position: absolute; left: var(--px); top: 0; z-index: 70; filter: drop-shadow(0 10px 14px rgba(0,0,0,.55)); }
.ed-badge {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 7px; width: 118px;
  padding: 14px 10px 30px; background: #000; color: var(--paper); text-decoration: none;
  border-top: 3px solid var(--primary);
  clip-path: polygon(0 0, 100% 0, 100% 90%, 93% 95%, 82% 91%, 68% 97%, 54% 92%, 40% 98%, 26% 92%, 12% 97%, 0 91%);
}
.ed-badge::before { content: ""; position: absolute; inset: 6px 6px 16px; border: 1px dashed rgba(242,239,233,.28); pointer-events: none; }
.ed-badge img { width: 92px; height: 92px; border-radius: 0; }
.ed-badge-name { font-family: var(--font-mark); font-weight: 700; font-size: .66rem; letter-spacing: .06em; line-height: 1.15; text-align: center; max-width: 92px; }
.ed-bar-note { margin: 0 auto 0 calc(118px + 24px); color: var(--t2); font-size: .98rem; }
.ed-bar-link { color: var(--paper); text-decoration: none; display: inline-flex; align-items: center; min-height: 44px; padding: 0 4px; position: relative; transition: color var(--tx); }
.ed-bar-link::after { content: ""; position: absolute; left: 4px; right: 4px; bottom: 9px; height: 2px; background: var(--secondary); transform: scaleX(0); transform-origin: left; transition: transform var(--tx); }
.ed-bar-link:hover { color: var(--link); }
.ed-bar-link:hover::after { transform: scaleX(1); }
.ed-menu-btn {
  display: inline-flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 2px 0 10px; cursor: pointer;
  background: transparent; border: 0; color: var(--paper);
}
.ed-menu-btn svg { width: 30px; height: 14px; }
.ed-menu-btn:hover { color: var(--link); }
@media (max-width: 760px) {
  .ed-bar-note, .ed-bar-link--hide { display: none; }
  .ed-bar { justify-content: flex-end; gap: 10px; }
  .ed-badge { width: 96px; padding: 12px 8px 26px; }
  .ed-badge img { width: 74px; height: 74px; }
  .ed-badge-name { font-size: .58rem; max-width: 76px; }
}

/* ---- Full-screen menu ---- */
.ed-menu {
  position: absolute; inset: 0; z-index: 200; display: grid; grid-template-columns: 1.3fr 1fr;
  visibility: hidden; pointer-events: none; transition: visibility 0s linear .95s;
}
.ed-menu.open { visibility: visible; pointer-events: auto; transition-delay: 0s; }
.ed-menu-l, .ed-menu-r { position: relative; transition: transform .5s cubic-bezier(.7,0,.2,1); overflow: hidden; }
.ed-menu-l { background: var(--ink); transform: translateX(-102%); }
.ed-menu-r { background: var(--primary-dk); transform: translateX(102%); }
.ed-menu.open .ed-menu-l { transform: none; }
.ed-menu.open .ed-menu-r { transform: none; transition-delay: .12s; }
.ed-menu-r::after { content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none; background-image: var(--grain); background-size: 320px; opacity: .2; }
.ed-menu-l::after { content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none; background-image: var(--grain); background-size: 320px; opacity: .2; }
.ed-menu-in { position: sticky; top: 0; z-index: 2; min-height: min(100vh, 880px); padding: 96px var(--px) 56px; display: flex; flex-direction: column; justify-content: center; gap: 28px; }
.ed-menu-l .ed-menu-in { padding-right: 40px; }
.ed-menu nav ul { list-style: none; margin: 0; padding: 0; }
.ed-menu nav li { overflow: hidden; border-bottom: 1px solid #2f2b28; opacity: 0; transform: translateY(34px); transition: opacity .5s var(--ease), transform .5s var(--ease); }
.ed-menu.open nav li { opacity: 1; transform: none; }
.ed-menu.open nav li:nth-child(1) { transition-delay: .25s; }
.ed-menu.open nav li:nth-child(2) { transition-delay: .32s; }
.ed-menu.open nav li:nth-child(3) { transition-delay: .39s; }
.ed-menu.open nav li:nth-child(4) { transition-delay: .46s; }
.ed-menu.open nav li:nth-child(5) { transition-delay: .53s; }
.ed-menu.open nav li:nth-child(6) { transition-delay: .60s; }
.ed-menu.open nav li:nth-child(7) { transition-delay: .67s; }
.ed-menu nav a {
  display: flex; align-items: baseline; gap: 18px; min-height: 56px; padding: 6px 0;
  font-family: var(--font-head); font-size: clamp(2.1rem, 5.2vw, 4.4rem); line-height: 1; text-transform: lowercase;
  color: var(--paper); text-decoration: none; transition: color var(--tx), padding-left var(--tx);
}
.ed-menu nav a .n { font-family: var(--font-label); font-size: .9rem; letter-spacing: .15em; color: var(--link); transform: translateY(-.9em); }
.ed-menu nav a:hover, .ed-menu nav a:focus-visible { color: var(--link); padding-left: 14px; }
.ed-menu nav a[aria-current="page"] { color: var(--link); }
.ed-menu-r .mr { opacity: 0; transform: translateY(-26px); transition: opacity .5s var(--ease), transform .5s var(--ease); }
.ed-menu.open .ed-menu-r .mr { opacity: 1; transform: none; }
.ed-menu.open .mr:nth-child(1) { transition-delay: .3s; }
.ed-menu.open .mr:nth-child(2) { transition-delay: .4s; }
.ed-menu.open .mr:nth-child(3) { transition-delay: .5s; }
.ed-menu.open .mr:nth-child(4) { transition-delay: .6s; }
.ed-menu-r img.m-logo { width: 96px; height: 96px; }
.ed-menu-r .m-tag { font-family: var(--font-head); font-size: clamp(1.6rem, 2.6vw, 2.2rem); line-height: 1.05; text-transform: lowercase; color: var(--paper); margin: 0; }
.ed-menu-r p, .ed-menu-r a:not(.ed-cta) { color: var(--paper); }
.ed-menu-r .m-phones a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; font-size: 1.15rem; }
.ed-menu-r .m-note { font-size: .92rem; color: #cfe3e3; }
.ed-menu-close { position: absolute; top: 22px; right: var(--px); z-index: 8; display: inline-flex; align-items: center; gap: 12px; min-height: 48px; padding: 0 4px; background: transparent; border: 0; color: var(--paper); cursor: pointer; }
.ed-menu-close:hover { color: var(--link-hover); }
.ed-menu-close svg { width: 22px; height: 22px; }
@media (max-width: 860px) {
  .ed-menu { grid-template-columns: 1fr; grid-template-rows: auto auto; align-content: start; }
  .ed-menu-l { transform: translateY(-102%); }
  .ed-menu-r { transform: translateY(102%); }
  .ed-menu-in { min-height: 0; padding-top: 88px; padding-bottom: 36px; }
  .ed-menu-r .ed-menu-in { padding-top: 36px; }
  .ed-menu nav a { font-size: clamp(2rem, 9vw, 3rem); }
}

/* ---- Hero ---- */
.ed-hero { position: relative; min-height: 880px; display: grid; place-items: center; overflow: hidden; background: #000; isolation: isolate; padding: 150px 0 150px; }
.hero-slide { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.4s ease; z-index: 0; }
.hero-slide.is-on { opacity: 1; }
.ed-hero::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(10,9,8,.72) 0%, rgba(10,9,8,.42) 34%, rgba(10,9,8,.5) 66%, rgba(10,9,8,.9) 100%); }
.hero-lockup { position: relative; z-index: 3; width: min(100% - 2 * var(--px), 1180px); display: flex; flex-direction: column; align-items: stretch; }
.hero-kicker { align-self: center; color: var(--paper); margin: 0 0 22px; display: inline-flex; align-items: center; gap: 14px; }
.hero-kicker::before, .hero-kicker::after { content: ""; width: 44px; height: 1px; background: var(--paper); opacity: .6; }
.hero-wordmark { margin: 0; font-family: var(--font-mark); font-weight: 800; text-transform: none; color: var(--paper); line-height: .8; letter-spacing: -.01em; display: flex; flex-direction: column; text-shadow: 0 6px 40px rgba(0,0,0,.55); font-synthesis: none; }
.hero-wordmark .w1, .hero-wordmark .w3 { font-size: clamp(3.8rem, 14vw, 13.2rem); display: block; }
.hero-wordmark .w1 { align-self: flex-start; transform: rotate(-1.6deg); transform-origin: left bottom; }
.hero-wordmark .w3 { align-self: flex-end; position: relative; transform: rotate(1.1deg); }
.hero-wordmark .w2 { align-self: center; font-family: var(--font-head); font-weight: 400; font-size: clamp(1.5rem, 3.4vw, 3rem); color: var(--link); text-transform: lowercase; letter-spacing: 0; transform: rotate(-5deg) translateY(.12em); margin: .1em 0 -.1em; line-height: 1; z-index: 2; }
.hero-scribble { position: absolute; left: 2%; right: 0; bottom: -.14em; width: 96%; height: .16em; min-height: 14px; overflow: visible; }
.hero-tag { align-self: center; margin: 34px 0 0; font-family: var(--font-head); text-transform: lowercase; font-size: clamp(1.4rem, 2.6vw, 2.3rem); line-height: 1.05; color: var(--paper); text-align: center; }
.hero-tag em { font-style: normal; color: var(--link); }
.hero-foot { position: absolute; z-index: 4; left: var(--px); right: var(--px); bottom: 34px; display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.hero-foot p { margin: 0; color: var(--paper); max-width: 34ch; font-size: .92rem; line-height: 1.5; }
.hero-foot a { color: var(--link); font-weight: 600; text-decoration: none; display: inline-flex; align-items: center; min-height: 44px; }
.hero-foot a:hover { color: var(--link-hover); text-decoration: underline; }
.hero-ctl { display: flex; align-items: center; gap: 16px; color: var(--paper); }
.hero-ctl button { min-height: 44px; padding: 0 14px; background: rgba(10,9,8,.55); border: 1px solid rgba(242,239,233,.45); color: var(--paper); cursor: pointer; transition: background var(--tx), color var(--tx); }
.hero-ctl button:hover { background: var(--paper); color: var(--ink); }
@media (max-width: 760px) {
  .ed-hero { min-height: 700px; padding: 150px 0 128px; }
  .hero-wordmark .w1, .hero-wordmark .w3 { font-size: clamp(3.2rem, 17vw, 6rem); }
  .hero-kicker::before, .hero-kicker::after { width: 22px; }
  .hero-foot { bottom: 18px; }
  .hero-foot p { font-size: .85rem; }
}

/* ---- Marquee ---- */
.ed-marquee { position: relative; z-index: 2; background: var(--ink); border-top: 1px solid #3a3531; border-bottom: 1px solid #3a3531; overflow: hidden; padding: 15px 0; }
.mq-track { display: flex; width: max-content; animation: mq var(--mq, 73.75s) linear infinite; will-change: transform; }
.ed-marquee:hover .mq-track { animation-play-state: paused; }
.mq-group { display: flex; align-items: center; gap: 30px; padding-right: 30px; flex: none; }
.mq-item { color: var(--paper); white-space: nowrap; margin: 0; }
.mq-star { width: 15px; height: 15px; flex: none; fill: var(--link); }
@keyframes mq { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.ed-marquee--big { background: transparent; border: 0; padding: 22px 0; }
.ed-marquee--big .mq-item { font-family: var(--font-head); font-size: clamp(2.2rem, 5.2vw, 4.6rem); text-transform: lowercase; letter-spacing: 0; line-height: 1; color: var(--paper); }
.ed-marquee--big .mq-item.o { color: transparent; -webkit-text-stroke: 1.2px var(--neutral); }
.ed-marquee--big .mq-star { width: 26px; height: 26px; }
@media (prefers-reduced-motion: reduce) {
  .mq-track { animation: none; }
  .mq-group[aria-hidden="true"] { display: none; }
  .hero-slide { transition: none; }
}

/* ---- Shared editorial bits ---- */
.ed-cta { display: inline-flex; align-items: center; gap: 12px; min-height: 44px; padding: 8px 0 6px; font-family: var(--font-label); font-weight: 700; font-size: 1.12rem; letter-spacing: .15em; text-transform: lowercase; color: var(--paper); text-decoration: none; border-bottom: 2px solid var(--secondary); transition: color var(--tx), border-color var(--tx), gap var(--tx); }
.ed-cta:hover { color: var(--link); border-color: var(--link); gap: 18px; }
.ed-cta .arr { width: 28px; height: 14px; flex: none; }
.ed-cta--dark { color: var(--charcoal); border-color: var(--primary); }
.ed-cta--dark:hover { color: var(--primary-dk); border-color: var(--primary-dk); }
.ed-cta-row { display: flex; flex-wrap: wrap; gap: 14px 34px; margin-top: 30px; }
.ph { position: relative; overflow: hidden; background: var(--s1); }
.ph img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.86) contrast(1.05) brightness(.94); transition: transform .9s var(--ease), filter var(--tx); }
.deco { position: absolute; pointer-events: none; z-index: 5; }

/* ---- Intro ---- */
.ed-intro { position: relative; background: var(--bg); padding: clamp(96px, 11vw, 170px) 0 clamp(90px, 10vw, 150px); overflow: hidden; }
.intro-img-l { position: absolute; z-index: 1; left: 0; top: clamp(120px, 12vw, 190px); width: min(24vw, 360px); aspect-ratio: 4/5; transform: translateX(-22%) rotate(-2deg); }
.intro-grid { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; align-items: start; }
.intro-copy { grid-column: 4 / span 6; }
.intro-copy h2 { font-size: clamp(2.3rem, 4.4vw, 4.2rem); line-height: .96; margin: 0 0 30px; }
.intro-copy h2 .ac { color: var(--link); }
.intro-img-l .ph { position: absolute; inset: 0; }
.intro-copy .lead { font-size: clamp(1.1rem, 1.5vw, 1.3rem); color: var(--paper); margin: 0 0 22px; max-width: 30em; }
.intro-copy p { color: var(--t2); max-width: 36em; }
.intro-img-r { grid-column: 10 / span 3; margin-top: clamp(150px, 20vw, 300px); position: relative; }
.intro-img-r .ph { aspect-ratio: 3/4; transform: rotate(1.6deg); }
.intro-img-r .deco { width: 62%; right: -8%; top: -42px; transform: rotate(-8deg); }
@media (max-width: 1000px) {
  .intro-img-l { position: relative; left: auto; top: auto; width: min(64%, 320px); transform: translateX(-12%) rotate(-2deg); margin: 0 0 34px; }
  .intro-grid { display: block; }
  .intro-img-r { width: min(62%, 300px); margin: 54px 0 0 auto; }
}

/* ---- About / studio ---- */
.ed-about { position: relative; background: var(--primary-dk); color: var(--paper); padding: clamp(90px, 10vw, 150px) 0; overflow: hidden; }
.about-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; align-items: start; }
.about-copy { grid-column: 1 / span 6; padding-top: 30px; }
.about-copy .label { color: var(--paper); opacity: .85; margin: 0 0 18px; display: block; }
.about-copy h2 { color: var(--paper); font-size: clamp(2.4rem, 5vw, 4.7rem); margin: 0 0 28px; }
.about-copy p { color: #E0EBEA; max-width: 34em; }
.about-copy .vals { display: flex; flex-wrap: wrap; gap: 8px 10px; margin: 26px 0 0; padding: 0; list-style: none; }
.about-copy .vals li { font-family: var(--font-label); font-weight: 600; letter-spacing: .15em; text-transform: lowercase; border: 1px solid rgba(242,239,233,.5); padding: 6px 14px; color: var(--paper); }
.about-media { grid-column: 8 / span 5; position: relative; padding-bottom: 150px; }
.about-media .big { aspect-ratio: 4/5.2; box-shadow: 0 30px 60px rgba(0,0,0,.4); }
.about-media .small { position: absolute; left: -34%; bottom: 0; width: 70%; aspect-ratio: 4/3; border: 8px solid var(--primary-dk); box-shadow: 0 20px 44px rgba(0,0,0,.45); transform: rotate(-2.4deg); z-index: 3; }
.about-media .deco { width: 44%; right: -6%; bottom: 60px; z-index: 7; transform: rotate(6deg); }
.ed-about .ed-cta { color: var(--paper); border-color: var(--paper); }
.ed-about .ed-cta:hover { color: var(--link-hover); border-color: var(--link-hover); }
@media (max-width: 1000px) {
  .about-grid { display: block; }
  .about-media { margin-top: 56px; padding-bottom: 100px; width: min(100%, 460px); margin-left: auto; margin-right: auto; }
  .about-media .small { left: -6%; width: 62%; }
}

/* ---- Services panels ---- */
.ed-services { position: relative; background: var(--charcoal); padding: clamp(90px, 10vw, 150px) 0 clamp(110px, 11vw, 170px); overflow: hidden; }
.svc-head { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 40px; align-items: end; margin-bottom: clamp(44px, 5vw, 76px); }
.svc-head h2 { margin: 0; }
.svc-head p { margin: 0; color: var(--t2); max-width: 30em; }
.panels { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.panel { position: relative; display: block; aspect-ratio: 280 / 440; overflow: visible; color: var(--paper); text-decoration: none; background: var(--ink); }
.panel:nth-child(even) { margin-top: 34px; }
.panel .ph { position: absolute; inset: 0; }
.panel .ph::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(12,11,10,.1) 0%, rgba(12,11,10,.15) 32%, rgba(12,11,10,.88) 72%, rgba(12,11,10,.96) 100%); transition: opacity var(--tx); }
.panel:hover .ph img, .panel:focus-visible .ph img { transform: scale(1.045); filter: saturate(1) contrast(1.05) brightness(1); }
.panel-num { position: absolute; z-index: 3; top: 16px; left: 16px; color: var(--paper); }
.panel-body { position: absolute; z-index: 3; left: 0; right: 0; bottom: 0; padding: 0 20px 26px; }
.panel-body h3 { margin: 0 0 10px; color: var(--paper); font-size: clamp(1.35rem, 1.9vw, 1.7rem); }
.panel-body p { margin: 0 0 14px; font-size: .84rem; line-height: 1.55; color: #ddd7c8; }
.panel-more { color: var(--link); transition: letter-spacing var(--tx), color var(--tx); }
.panel:hover .panel-more { color: var(--link-hover); letter-spacing: .22em; }
.stamp { position: absolute; z-index: 6; width: 86px; height: 86px; right: 12px; bottom: -34px; transform: rotate(10deg); transition: transform var(--tx); }
.panel:hover .stamp { transform: rotate(-4deg) scale(1.05); }
@media (max-width: 1000px) {
  .panels { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 56px; }
  .panel:nth-child(even) { margin-top: 28px; }
  .svc-head { grid-template-columns: 1fr; gap: 18px; }
}
@media (max-width: 560px) {
  .panels { gap: 8px; row-gap: 50px; }
  .panel { aspect-ratio: 170 / 330; }
  .panel-body { padding: 0 12px 18px; }
  .panel-body h3 { font-size: 1.12rem; }
  .panel-body p { font-size: .72rem; line-height: 1.45; }
  .stamp { width: 66px; height: 66px; right: 6px; bottom: -28px; }
}

/* ---- Gallery ---- */
.ed-gallery { position: relative; background: var(--ink); padding: clamp(80px, 9vw, 130px) 0 clamp(70px, 8vw, 110px); overflow: hidden; }
.gal-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 30px; flex-wrap: wrap; margin-bottom: 44px; }
.gal-head h2 { margin: 0; max-width: 11em; font-size: clamp(2.2rem, 4.6vw, 4.2rem); }
.gal { --sw: min(74vw, 1080px); --gap: 20px; position: relative; overflow: hidden; touch-action: pan-y; }
.gal-track { display: flex; gap: var(--gap); padding-left: calc((100vw - var(--sw)) / 2); transition: transform .85s cubic-bezier(.65,0,.25,1); transform: translateX(calc(var(--i, 0) * -1 * (var(--sw) + var(--gap)))); }
.gal-slide { flex: 0 0 var(--sw); height: clamp(360px, 44vw, 640px); opacity: .38; transition: opacity .85s ease; margin: 0; }
.gal-slide.is-active { opacity: 1; }
.gal-slide .ph { width: 100%; height: 100%; }
.gal-ctl { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 30px; flex-wrap: wrap; }
.gal-btns { display: flex; gap: 10px; }
.gal-btn { width: 52px; height: 52px; display: inline-flex; align-items: center; justify-content: center; background: transparent; color: var(--paper); border: 1px solid #5a534c; cursor: pointer; transition: background var(--tx), color var(--tx), border-color var(--tx); }
.gal-btn:hover { background: var(--paper); color: var(--ink); border-color: var(--paper); }
.gal-btn svg { width: 24px; height: 12px; }
.gal-dots { display: flex; align-items: center; gap: 2px; flex-wrap: wrap; }
.gal-dot { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; background: transparent; border: 0; cursor: pointer; padding: 0; }
.gal-dot i { display: block; width: 11px; height: 11px; border: 1.5px solid var(--neutral); border-radius: 50%; transition: background var(--tx), transform var(--tx), border-color var(--tx); }
.gal-dot[aria-current="true"] i { background: var(--secondary); border-color: var(--secondary); transform: scale(1.35); }
.gal-count { color: var(--t2); min-width: 5em; text-align: right; }
@media (max-width: 760px) { .gal { --sw: 86vw; --gap: 12px; } .gal-slide { height: 340px; } .gal-btn { width: 48px; height: 48px; } }
@media (prefers-reduced-motion: reduce) { .gal-track, .gal-slide { transition: none; } }

/* ---- Statement ---- */
.ed-statement { position: relative; min-height: 720px; display: grid; place-items: center; overflow: hidden; background: #000; padding: 120px 0; text-align: center; }
.ed-statement > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 62%; filter: saturate(.6) contrast(1.08) brightness(.75); z-index: 0; }
.ed-statement::before { content: ""; position: absolute; inset: 0; z-index: 1; background: rgba(14,12,10,.7); }
.st-in { position: relative; z-index: 3; width: min(100% - 2 * var(--px), 960px); }
.st-lines { margin: 0 0 30px; font-size: clamp(2.8rem, 8.4vw, 7.6rem); line-height: .92; color: var(--paper); }
.st-lines span { display: block; }
.st-lines span:nth-child(2) { color: var(--link); transform: rotate(-1.6deg); }
.st-lines span:nth-child(3) { transform: translateX(3%); }
.st-copy { max-width: 34em; margin: 0 auto 26px; color: #e6dfd0; font-size: clamp(1rem, 1.3vw, 1.15rem); }
.st-side { position: absolute; z-index: 4; right: calc(var(--px) * .6); top: 50%; transform: translateY(-50%); writing-mode: vertical-rl; color: var(--neutral); letter-spacing: .3em; font-size: .9rem; }
.ed-statement .ed-cta { color: var(--paper); }
@media (max-width: 860px) { .st-side { display: none; } .ed-statement { min-height: 640px; padding: 90px 0; } }

/* ---- Featured three-up ---- */
.ed-feature { position: relative; background: #211F1D; padding: clamp(90px, 10vw, 150px) 0; overflow: hidden; }
.ft-head { text-align: center; margin: 0 auto clamp(48px, 6vw, 84px); max-width: 15em; }
.ft-head .label { display: block; color: var(--link); margin-bottom: 16px; }
.ft-head h2 { margin: 0; }
.ft-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 3vw, 44px); align-items: start; }
.ft-item { display: block; text-decoration: none; color: var(--paper); }
.ft-item:nth-child(2) { margin-top: clamp(30px, 6vw, 84px); }
.ft-item .ph { aspect-ratio: 2/3; }
.ft-item:hover .ph img, .ft-item:focus-visible .ph img { transform: scale(1.04); filter: saturate(1) contrast(1.05) brightness(1); }
.ft-cap { padding-top: 16px; }
.ft-cap .label { color: var(--link); display: block; margin-bottom: 6px; }
.ft-cap p { margin: 0; font-size: .9rem; line-height: 1.55; color: var(--t2); max-width: 30em; }
.ft-cap strong { color: var(--paper); font-weight: 600; }
.ft-sub { display: inline-flex; align-items: center; min-height: 44px; margin-top: 4px; font-weight: 600; font-size: .9rem; }
@media (max-width: 860px) { .ft-grid { grid-template-columns: 1fr; max-width: 420px; margin: 0 auto; } .ft-item:nth-child(2) { margin-top: 0; } }

/* ---- Perfect fit / values (light paper) ---- */
.ed-fit { position: relative; background: var(--paper-2); color: var(--charcoal); padding: clamp(90px, 10vw, 150px) 0; overflow: hidden; }
.ed-fit h2, .ed-fit h3 { color: var(--charcoal); }
.fit-head { max-width: 14em; margin: 0 0 clamp(50px, 6vw, 90px); }
.fit-head .label { display: block; color: var(--primary-dk); margin-bottom: 16px; }
.fit-head h2 { margin: 0; }
.fit-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(22px, 3vw, 44px); }
.fit-item:nth-child(2) { margin-top: 40px; }
.fit-item:nth-child(4) { margin-top: 64px; }
.fit-item svg { width: min(190px, 78%); height: auto; display: block; margin: 0 0 22px; overflow: visible; }
.fit-item:nth-child(1) svg { transform: rotate(-3deg); }
.fit-item:nth-child(2) svg { transform: rotate(2deg); }
.fit-item:nth-child(3) svg { transform: rotate(-1deg); }
.fit-item:nth-child(4) svg { transform: rotate(3deg); }
.fit-item h3 { margin: 0 0 10px; font-size: clamp(1.7rem, 2.6vw, 2.3rem); }
.fit-item p { margin: 0; color: #4a4540; font-size: .95rem; line-height: 1.65; max-width: 24em; }
.ill-line { fill: none; stroke: #2E2B29; stroke-width: 3.2; stroke-linecap: round; stroke-linejoin: round; }
.ill-fill { fill: #0F6D73; mix-blend-mode: multiply; }
.ill-thin { fill: none; stroke: #2E2B29; stroke-width: 2; stroke-linecap: round; }
@media (max-width: 1000px) { .fit-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 54px; } .fit-item:nth-child(n) { margin-top: 0; } .fit-item:nth-child(even) { margin-top: 36px; } }
@media (max-width: 520px) { .fit-grid { grid-template-columns: 1fr; } .fit-item:nth-child(even) { margin-top: 0; } .fit-item svg { width: 150px; } }

/* ---- Quotes ---- */
.ed-quotes { position: relative; min-height: 780px; overflow: hidden; background: #000; display: grid; place-items: center; padding: 120px 0 110px; }
.ed-quotes > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; filter: saturate(.5) contrast(1.1) brightness(.6); z-index: 0; }
.ed-quotes::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(14,12,10,.84), rgba(14,12,10,.66) 50%, rgba(14,12,10,.88)); }
.q-in { position: relative; z-index: 3; width: min(100% - 2 * var(--px), 1100px); }
.q-in > .label { display: block; color: var(--link); margin-bottom: 26px; }
.q-stage { display: grid; }
.q { grid-area: 1 / 1; margin: 0; opacity: 0; visibility: hidden; transition: opacity .5s ease, visibility 0s linear .5s; }
.q.is-on { opacity: 1; visibility: visible; transition-delay: 0s; }
.q blockquote { margin: 0; font-family: var(--font-head); text-transform: lowercase; font-size: clamp(2.2rem, 5.2vw, 4.8rem); line-height: .98; color: var(--paper); text-wrap: balance; }
.q figcaption { margin-top: 28px; color: var(--t2); }
.q figcaption strong { color: var(--paper); font-weight: 600; }
.q-ctl { display: flex; align-items: center; gap: 12px; margin-top: 40px; flex-wrap: wrap; }
.q-ctl button { min-height: 44px; min-width: 44px; padding: 0 16px; background: transparent; border: 1px solid #6b635a; color: var(--paper); cursor: pointer; transition: background var(--tx), color var(--tx); }
.q-ctl button:hover { background: var(--paper); color: var(--ink); }
.q-dots { display: flex; margin-left: 10px; }
.q-dots .gal-dot i { border-color: var(--paper); }

/* ---- Footer ---- */
.ed-footer { position: relative; background: var(--ink); color: var(--t2); border-top: 3px solid var(--primary); overflow: hidden; }
.ft-need { padding: clamp(60px, 7vw, 100px) 0 clamp(40px, 5vw, 70px); border-bottom: 1px solid #332f2b; }
.ft-need-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: clamp(30px, 5vw, 80px); align-items: end; }
.ft-need h2 { margin: 0 0 16px; font-size: clamp(2.4rem, 5vw, 4.6rem); }
.ft-need p { margin: 0; max-width: 32em; color: var(--t2); }
.ft-need .note { margin-top: 14px; font-size: .9rem; color: var(--t3); }
.ft-need .note a { color: var(--link); }
.ft-phones { list-style: none; margin: 0 0 8px; padding: 0; }
.ft-phones li { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 6px 0; border-bottom: 1px solid #332f2b; }
.ft-phones .num { font-family: var(--font-head); font-size: clamp(1.8rem, 3vw, 2.5rem); color: var(--paper); text-decoration: none; min-height: 48px; display: inline-flex; align-items: center; }
.ft-phones .num:hover { color: var(--link); }
.ft-phones .tx-l { color: var(--link); text-decoration: none; display: inline-flex; align-items: center; min-height: 44px; }
.ft-main { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 36px; padding: clamp(50px, 6vw, 80px) 0 44px; }
.ft-brand img { width: 88px; height: 88px; margin-bottom: 18px; }
.ft-word { font-family: var(--font-mark); font-weight: 800; font-size: clamp(2rem, 3.4vw, 3rem); line-height: .95; color: var(--paper); margin: 0 0 14px; }
.ft-brand .tagline { color: var(--link); font-size: 1.05rem; margin-bottom: 14px; }
.ed-footer a { color: var(--paper); text-decoration: none; }
.ed-footer a:hover { color: var(--link); text-decoration: underline; }
.ed-footer .ft-col h2 { font-family: var(--font-label); font-weight: 700; font-size: 1rem; letter-spacing: .15em; color: var(--link); margin: 0 0 12px; text-transform: lowercase; line-height: 1.2; }
.ed-footer .ft-col ul { list-style: none; padding: 0; margin: 0; }
.ed-footer .ft-col li a { display: inline-flex; align-items: center; min-height: 40px; font-size: .95rem; }
.ed-footer .nap { font-style: normal; line-height: 1.8; font-size: .95rem; }
.ed-footer .nap a { display: inline-block; padding: 4px 0; }
.ed-footer .footer-compliance { border-top: 1px solid #332f2b; border-bottom: 1px solid #332f2b; }
.ed-footer .disclosure { color: var(--t3); }
.ed-footer .registry-links a { text-decoration: underline; }
.ed-footer .footer-bottom p { color: var(--t3); }
@media (max-width: 1000px) { .ft-main { grid-template-columns: 1fr 1fr; } .ft-need-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .ft-main { grid-template-columns: 1fr; } }

/* ---- Inner pages (About): keep old components in the new voice ---- */
.page-hero { background-image: none; }
.page-hero h1 { margin-bottom: 22px; }
.frame, .card, .road-steps > li, .callout, .band-ink { border-radius: 0; }
.frame img { filter: saturate(.86) contrast(1.05) brightness(.94); }
.offset-block::before { background: var(--primary); border-radius: 0; inset: 14px -14px -14px 14px; }
.section--white { background: var(--s2); }
.callout { border-color: var(--primary); background: var(--s2); }
.logo-lg { border-radius: 0; }
.stack-lines li { font-family: var(--font-head); text-transform: lowercase; letter-spacing: 0; font-weight: 400; }

/* ---- Top nav links: Libre Franklin Regular, all caps ---- */
.ed-bar-link, .ed-menu-btn {
  font-family: 'Libre Franklin', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
  font-weight: 400; text-transform: uppercase; letter-spacing: .12em; font-size: .8rem;
}

/* ---- Hero H1: plain "Keepers of the Innocent", Spectral SC Regular ---- */
.hero-wordmark { display: block; text-align: center; font-family: var(--font-mark); font-weight: 400; font-size: clamp(2.6rem, 8.4vw, 8rem); line-height: 1; letter-spacing: .01em; }

/* Top bar: with the tagline removed, keep links on the right */
.ed-bar { justify-content: flex-end; }

/* ---- Caprasimo removed: headings and the tagline now use Spectral SC (the logo face) ---- */
:root { --font-head: 'Spectral SC', Georgia, 'Times New Roman', serif; }
h1, h2, h3, h4, .quote, .stack-lines li, .ed-menu nav a, .ed-menu-r .m-tag, .hero-tag, .q blockquote, .ed-marquee--big .mq-item, .ft-phones .num {
  font-weight: 600; text-transform: none; letter-spacing: .005em;
}
.ed-marquee--big .mq-item { letter-spacing: .01em; }

/* ---- No top banner: floating rounded logo tile + small rounded menu pill ---- */
.ed-header { position: absolute; top: 0; left: 0; right: 0; height: 0; background: transparent; border: 0; z-index: 60; }
.ed-badge-wrap { top: 20px; left: var(--px); filter: drop-shadow(0 8px 18px rgba(0,0,0,.5)); }
.ed-badge { width: auto; padding: 10px; gap: 0; background: #000; border: 1px solid rgba(242,239,233,.2); border-radius: 18px; clip-path: none; }
.ed-badge::before { display: none; }
.ed-badge img { width: 84px; height: 84px; border-radius: 10px; }
.ed-badge-name { display: none; }
.ed-bar { position: absolute; top: 20px; right: var(--px); height: auto; padding: 0 16px; gap: 8px; background: rgba(18,17,16,.82); border: 1px solid rgba(242,239,233,.2); border-radius: 999px; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.koi-page.ed .page-hero { padding-top: clamp(140px, 12vw, 170px); }
@media (max-width: 760px) {
  .ed-badge img { width: 64px; height: 64px; }
  .ed-badge { padding: 8px; border-radius: 14px; }
  .ed-bar { padding: 0 12px; top: 18px; }
  .ed-badge-wrap { top: 18px; }
}

/* ---- Top nav banner restored: full-width strip, every link spread across, rounded logo tile hanging at left ---- */
.ed-header { position: relative; top: auto; left: auto; right: auto; height: 60px; background: var(--ink); border-bottom: 1px solid #2c2926; z-index: 60; }
.ed-badge-wrap { top: 10px; left: var(--px); }
.ed-bar { position: static; width: 100%; height: 60px; display: flex; align-items: center; justify-content: flex-end; gap: 0; padding: 0 var(--px) 0 calc(var(--px) + 112px + 36px); background: transparent; border: 0; border-radius: 0; -webkit-backdrop-filter: none; backdrop-filter: none; }
.ed-nav { display: none; flex: 1; }
.ed-nav ul { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.ed-nav .ed-bar-link[aria-current="page"] { color: var(--link); }
.ed-nav .ed-bar-link[aria-current="page"]::after { transform: scaleX(1); }
.ed-bar-donate { background: var(--primary); color: var(--paper); padding: 0 18px; min-height: 40px; transition: background var(--tx), color var(--tx); }
.ed-bar-donate::after { display: none; }
.ed-bar-donate:hover { background: var(--link); color: var(--ink); }
@media (min-width: 1100px) { .ed-nav { display: block; } .ed-bar .ed-menu-btn { display: none; } }
@media (max-width: 760px) {
  .ed-header { height: 56px; }
  .ed-bar { height: 56px; padding-left: calc(var(--px) + 84px + 24px); }
  .ed-badge-wrap { top: 8px; }
}

/* ---- Nav links: tighter, right-aligned. Hero kicker: Space Mono caps ---- */
.ed-nav ul { justify-content: flex-end; gap: 22px; }
.hero-kicker { font-family: 'Space Mono', ui-monospace, Menlo, Consolas, monospace; font-weight: 400; text-transform: uppercase; letter-spacing: .14em; font-size: .85rem; }

/* ---- Top nav links: Space Mono ---- */
.ed-bar-link, .ed-menu-btn { font-family: 'Space Mono', ui-monospace, Menlo, Consolas, monospace; font-weight: 400; letter-spacing: .08em; font-size: .76rem; }

/* ---- Logo tile matches the top nav color; the logo's own black square blends in ---- */
.ed-badge { background: var(--ink); border-color: transparent; }
.ed-badge img { mix-blend-mode: lighten; }

/* ---- Logo tile is an oval ---- */
.ed-badge { width: 130px; height: 108px; padding: 0; border-radius: 50%; align-items: center; justify-content: center; overflow: hidden; }
.ed-bar { padding-left: calc(var(--px) + 130px + 36px); }
@media (max-width: 760px) {
  .ed-badge { width: 104px; height: 86px; padding: 0; border-radius: 50%; }
  .ed-bar { padding-left: calc(var(--px) + 104px + 20px); }
}

/* ---- Oval flipped: taller than wide ---- */
.ed-badge { width: 108px; height: 130px; }
.ed-bar { padding-left: calc(var(--px) + 108px + 36px); }
@media (max-width: 760px) {
  .ed-badge { width: 86px; height: 104px; }
  .ed-bar { padding-left: calc(var(--px) + 86px + 20px); }
}

/* ---- "We don't just show up. We stay." in Roboto Mono ---- */
.hero-tag, .ed-menu-r .m-tag, .ed-footer .ft-brand .tagline { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-weight: 400; text-transform: none; letter-spacing: 0; }
.hero-tag { font-size: clamp(1.15rem, 2vw, 1.8rem); line-height: 1.25; }
.ed-menu-r .m-tag { font-size: clamp(1.3rem, 2.1vw, 1.8rem); line-height: 1.25; }

/* ---- Logo area is a hanging banner: straight sides, swallowtail bottom, stitched edge ---- */
.ed-badge-wrap { top: 0; }
.ed-badge { width: 116px; height: 156px; padding: 0 0 30px; border-radius: 0; overflow: visible; background: var(--ink); border: 0; justify-content: center;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 88%, 0 100%); }
.ed-badge::before { display: block; content: ""; position: absolute; inset: 8px 8px 38px; border: 1px dashed rgba(242,239,233,.3); border-top: 0; pointer-events: none; }
.ed-badge img { width: 88px; height: 88px; border-radius: 0; }
.ed-bar { padding-left: calc(var(--px) + 116px + 36px); }
@media (max-width: 760px) {
  .ed-badge { width: 92px; height: 128px; padding: 0 0 24px; }
  .ed-badge::before { inset: 6px 6px 32px; }
  .ed-badge img { width: 68px; height: 68px; }
  .ed-bar { padding-left: calc(var(--px) + 92px + 20px); }
}

/* ---- Tagline all caps ---- */
.hero-tag, .ed-menu-r .m-tag, .ed-footer .ft-brand .tagline { text-transform: uppercase; letter-spacing: .04em; }
.hero-tag { font-size: clamp(1rem, 1.7vw, 1.5rem); }
.ed-menu-r .m-tag { font-size: clamp(1.1rem, 1.8vw, 1.5rem); }

/* ---- No stitched line on the logo banner ---- */
.ed-badge::before { display: none; }

/* ---- Eyebrows: Roboto Mono ---- */
.eyebrow, .hero-kicker, .about-copy > .label, .ft-head > .label, .fit-head > .label, .ft-need-grid .label, .q-in > .label, .ft-cap .label {
  font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace !important; font-weight: 400 !important; font-size: .8rem !important; letter-spacing: .1em !important;
}

/* ---- Headings 20% smaller ---- */
h1 { font-size: clamp(2.24rem, 5.12vw, 4.48rem); }
h2 { font-size: clamp(1.84rem, 4.16vw, 3.92rem); }
h3 { font-size: clamp(1.08rem, 1.76vw, 1.48rem); }
.hero-wordmark { font-size: clamp(2.08rem, 6.72vw, 6.4rem); }
.intro-copy h2 { font-size: clamp(1.84rem, 3.52vw, 3.36rem); }
.about-copy h2 { font-size: clamp(1.92rem, 4vw, 3.76rem); }
.gal-head h2 { font-size: clamp(1.76rem, 3.68vw, 3.36rem); }
.st-lines { font-size: clamp(2.24rem, 6.72vw, 6.08rem); }
.ft-need h2 { font-size: clamp(1.92rem, 4vw, 3.68rem); }
.fit-item h3 { font-size: clamp(1.36rem, 2.08vw, 1.84rem); }
.panel-body h3 { font-size: clamp(1.08rem, 1.52vw, 1.36rem); }
.callout h2, .callout h3 { font-size: clamp(1.2rem, 2.08vw, 1.6rem); }
@media (max-width: 560px) { .panel-body h3 { font-size: .9rem; } }

/* ---- No underlines ---- */
.koi-page.ed a, .koi-page.ed a:hover, .koi-page.ed a:focus-visible { text-decoration: none !important; }
.ed-bar-link::after { display: none !important; }
.ed-cta { border-bottom: 0; }

/* ---- All buttons: Roboto Mono ---- */
button, .btn, .ed-cta, .ed-bar-donate, .ed-menu-btn, .ed-menu-close, .q-ctl button {
  font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace !important; font-weight: 400 !important; letter-spacing: .06em;
}
.btn { font-size: .86rem; }
.btn-sm { font-size: .8rem; }
.ed-cta { font-size: .9rem; }
.ed-bar-donate, .ed-menu-btn, .ed-menu-close { font-size: .76rem; }
.q-ctl button { font-size: .8rem; }

/* ---- Eyebrows and buttons: all caps ---- */
.eyebrow, .hero-kicker, .about-copy > .label, .ft-head > .label, .fit-head > .label, .ft-need-grid .label, .q-in > .label, .ft-cap .label,
button, .btn, .ed-cta, .ed-bar-donate, .ed-menu-btn, .ed-menu-close, .q-ctl button, .gal-count {
  text-transform: uppercase !important;
}

/* ---- Strength / Loyalty / Support / Consistency: Roboto Mono, all caps ---- */
.about-copy .vals li, .fit-item h3, .st-side, .patch {
  font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace !important; font-weight: 400 !important; text-transform: uppercase !important; letter-spacing: .1em;
}
.about-copy .vals li, .patch { font-size: .8rem; }
.fit-item h3 { font-size: clamp(1rem, 1.5vw, 1.3rem); line-height: 1.2; }
.st-side { font-size: .8rem; }

/* ---- Lighter hero: less overlay, text keeps a soft shadow for legibility ---- */
.ed-hero::before { background: linear-gradient(180deg, rgba(10,9,8,.34) 0%, rgba(10,9,8,.12) 36%, rgba(10,9,8,.18) 66%, rgba(10,9,8,.5) 100%); }
.hero-wordmark { text-shadow: 0 2px 24px rgba(0,0,0,.6), 0 1px 3px rgba(0,0,0,.5); }
.hero-tag, .hero-kicker { text-shadow: 0 1px 14px rgba(0,0,0,.65); }

/* ---- Hero heading block sits at the top of the hero ---- */
.ed-hero { align-content: start; align-items: start; padding-top: 110px; }
@media (max-width: 760px) { .ed-hero { padding-top: 130px; } }

/* ---- Hero parallax: image drifts slower than the page as you scroll (CSS only) ---- */
.hero-slide { top: -14%; bottom: auto; height: 128%; will-change: transform; }
@supports (animation-timeline: view()) {
  .hero-slide { animation: hero-par linear both; animation-timeline: view(); animation-range: exit 0% exit 100%; }
  @keyframes hero-par { from { transform: translateY(0); } to { transform: translateY(10%); } }
}
@media (prefers-reduced-motion: reduce) { .hero-slide { animation: none; transform: none; top: 0; height: 100%; } }

/* ---- Parallax is driven by script (works in every browser and any scroller); CSS timeline version disabled ---- */
.hero-slide { animation: none !important; }

/* Centered banner */
.ed-badge-wrap { left: 50%; transform: translateX(-50%); }
.ed-bar { padding: 0 var(--px) !important; justify-content: flex-end; }
.ed-nav { display: none; flex: 1; }
.ed-nav ul { gap: 22px; }
.ed-nav-l { justify-content: flex-end !important; }
.ed-nav-r { justify-content: flex-start !important; }
@media (min-width: 1100px) {
  .ed-nav { display: grid; grid-template-columns: 1fr 164px 1fr; align-items: center; }
  .ed-bar .ed-menu-btn { display: none; }
}
@media (min-width: 1100px) and (max-width: 1360px) { .ed-nav ul { gap: 12px; } .ed-bar-donate { padding: 0 12px; } }

/* Hero tagline: smaller, white, black plate */
.hero-tag { font-size: clamp(.8rem, 1.36vw, 1.2rem); color: #fff; background: #000; padding: 10px 20px; text-shadow: none; }
.hero-tag em { color: #fff; }
.hero-tag { font-size: clamp(.64rem, 1.09vw, .96rem); margin-top: 10px; }
.ed-hero { padding-top: 134px; }

/* Even nav: equal sides, clear of the banner */
@media (min-width: 1100px) {
  .ed-nav { grid-template-columns: minmax(0, 1fr) 184px minmax(0, 1fr); width: 100%; }
  .ed-nav ul { min-width: 0; gap: 0 !important; justify-content: space-evenly !important; }
  .ed-nav-l { padding-right: 8px; }
  .ed-nav-r { padding-left: 8px; }
  .ed-nav li { flex: 0 0 auto; }
  .ed-bar-link { white-space: nowrap; }
}
h1, .hero-wordmark { line-height: .8; }
.hero-tag { margin-top: 30px; }
.ed-nav-l { grid-column: 1; }
.ed-nav-r { grid-column: 3; }
h1, .hero-wordmark { letter-spacing: -.02em; }
.hero-tag { font-size: clamp(.736rem, 1.25vw, 1.104rem); }

/* ---- Intro: arch photo / copy / small photo ---- */
.ed-intro { padding: clamp(80px, 9vw, 140px) 0; }
.ed-intro .intro-grid { display: grid; grid-template-columns: minmax(0, 1.75fr) minmax(0, 2.25fr) minmax(0, 1fr); column-gap: clamp(32px, 6vw, 110px); align-items: center; max-width: 1700px; margin: 0 auto; padding: 0 clamp(24px, 8.5vw, 175px); }
.ed-intro .intro-img-l { position: relative; left: auto; top: auto; width: 100%; aspect-ratio: 3 / 4.1; transform: none; margin: 0; grid-column: 1; }
.ed-intro .intro-img-l .ph { position: absolute; inset: 0; border-radius: 999px 999px 0 0; overflow: hidden; }
.ed-intro .intro-img-l .ph img { width: 100%; height: 100%; object-fit: cover; }
.ed-intro .intro-copy { grid-column: 2; max-width: 36rem; }
.ed-intro .intro-copy h2 { font-size: clamp(1.5rem, 2.4vw, 2.3rem); line-height: 1.1; letter-spacing: .01em; margin: 0 0 22px; }
.ed-intro .intro-copy .lead { font-size: 1rem; margin: 0 0 16px; }
.ed-intro .intro-copy p { font-size: .95rem; line-height: 1.6; }
.ed-intro .ed-cta-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
.ed-intro .ed-cta { border: 1px solid var(--paper); border-radius: 999px; padding: 10px 22px; color: var(--paper); transition: background var(--tx), color var(--tx), border-color var(--tx); }
.ed-intro .ed-cta:hover { background: var(--paper); color: var(--ink); border-color: var(--paper); }
.ed-intro .intro-img-r { grid-column: 3; margin: 0; position: relative; align-self: center; }
.ed-intro .intro-img-r .ph { aspect-ratio: 3 / 4.2; transform: none; }
.ed-intro .intro-img-r .ph img { width: 100%; height: 100%; object-fit: cover; }
.ed-intro .intro-img-r .deco { width: 56%; left: -22%; right: auto; top: -34px; transform: rotate(-8deg); }
@media (max-width: 900px) {
  .ed-intro .intro-grid { grid-template-columns: 1fr; row-gap: 40px; padding: 0 var(--px); }
  .ed-intro .intro-img-l { width: min(78%, 360px); margin: 0 auto; grid-column: 1; }
  .ed-intro .intro-copy { grid-column: 1; max-width: none; }
  .ed-intro .intro-img-r { grid-column: 1; width: min(56%, 260px); margin: 0 auto; }
}

/* Headings: Spectral SC Regular */
h1, h2, h3, h4, h5, h6, .hero-wordmark { font-family: 'Spectral SC', Georgia, serif; font-weight: 400 !important; font-synthesis: none; }
.fit-item h3 { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace !important; }

/* Hero grain: heavier, to mask low-res photo */
.ed-hero.tx::after { background-image: url("../images/grain-hero.png"); background-size: 400px 400px; opacity: .6; mix-blend-mode: overlay; }
.hero-slide { filter: contrast(1.04) saturate(.92); }
.ed-intro .intro-copy h2, .ed-intro .intro-copy h2 .ac { color: #fff; }
.ed-intro .intro-copy .lead { font-size: .9rem; color: #fff; }
.ed-intro .intro-copy p { font-size: .855rem; color: #fff; }
.ed-intro .intro-copy .eyebrow { color: var(--paper); }
.ed-hero.tx::after { display: none; }
.hero-slide { filter: none; }
.ed-intro .intro-img-r .ph { border: 10px solid var(--paper); box-sizing: border-box; box-shadow: 0 18px 40px rgba(0,0,0,.45); }
.ed-intro .intro-copy .lead, .ed-intro .intro-copy p { font-size: .855rem; line-height: 1.6; }
.ed-intro .intro-img-r .ph { border: 0; box-shadow: none; outline: 1px solid #fff; outline-offset: 12px; }
.ed-intro .intro-img-r .ph { outline-width: .5px; }

/* Taller hero, tighter intro */
.ed-hero { min-height: 1040px; }
@media (max-width: 760px) { .ed-hero { min-height: 820px; } }
.ed-intro { padding: clamp(44px, 5vw, 72px) 0; }
.ed-intro .intro-img-l { aspect-ratio: 3 / 3.5; }
.ed-intro .intro-img-r .ph { aspect-ratio: 3 / 3.6; }
@media (max-width: 900px) { .ed-intro .intro-grid { row-gap: 32px; } }
.ed-intro .intro-img-l { aspect-ratio: 3 / 4.1; }
.ed-intro .intro-img-r .ph { aspect-ratio: 3 / 4.2; }

/* Arch photo rises into the hero */
.ed-intro { z-index: 5; overflow: visible; }
.ed-intro .intro-img-l { align-self: start; margin-top: clamp(-210px, -14vw, -120px); }
.ed-intro .intro-img-l .ph { border: clamp(14px, 1.6vw, 24px) solid var(--bg); border-bottom: 0; box-sizing: border-box; border-radius: 999px 999px 0 0; }
@media (max-width: 900px) { .ed-intro .intro-img-l { margin-top: -90px; } }
.ed-intro .intro-img-l { aspect-ratio: 3 / 5.2; }
@media (min-width: 901px) {
  .ed-intro .intro-grid { grid-template-columns: minmax(0, 2.4fr) minmax(0, 2.2fr) minmax(0, 1fr); }
  .ed-intro .intro-img-l { aspect-ratio: 4 / 5.2; }
}
@media (min-width: 901px) {
  .ed-intro .intro-grid { grid-template-columns: minmax(0, 2.1fr) minmax(0, 2.5fr) minmax(0, 1fr); }
  .ed-intro .intro-img-l { aspect-ratio: 4 / 5; }
}
.ed-intro .ed-cta { font-size: .765rem; padding: 8.5px 18.7px; min-height: 37.4px; gap: 10px; }
.ed-intro .ed-cta .arr { width: 24px; height: 12px; }
.ed-intro .intro-img-l { margin-top: clamp(-150px, -10vw, -90px); }
@media (max-width: 900px) { .ed-intro .intro-img-l { margin-top: -60px; } }
.ed-intro .intro-img-l { margin-top: clamp(-110px, -7vw, -70px); }
.ed-intro .intro-img-l .ph { border-width: clamp(8px, 1vw, 14px); border-bottom-width: 0; }
@media (max-width: 900px) { .ed-intro .intro-img-l { margin-top: -40px; } }
@media (min-width: 901px) {
  .ed-intro .intro-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: clamp(48px, 8vw, 140px); }
  .ed-intro .intro-copy { justify-self: start; }
}
@media (min-width: 901px) {
  .ed-intro .intro-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); }
}
.ed-intro .intro-copy { max-width: 52rem; }
.ed-intro .intro-copy p, .ed-intro .intro-copy .lead { max-width: none; }
.ed-intro .intro-img-l { margin-top: clamp(-140px, -8.7vw, -85px); }
@media (max-width: 900px) { .ed-intro .intro-img-l { margin-top: -60px; } }
.ed-intro .intro-img-l .ph { border-radius: 50% 50% 0 0 / 24% 24% 0 0; }
.ed-intro .intro-img-l .ph { border-radius: 999px 999px 0 0; }
.ed-intro .intro-img-l .ph img { height: 118%; object-position: 54% 0 !important; }
.ed-intro .intro-img-l .ph img { height: 110%; object-position: 53.5% 0 !important; }
.ed-hero { min-height: 900px; }
@media (max-width: 760px) { .ed-hero { min-height: 720px; } }
.ed-hero { min-height: 760px; }
@media (max-width: 760px) { .ed-hero { min-height: 620px; } }

/* Hero taller; intro photo contained and rectangular */
.ed-hero { min-height: 960px; }
@media (max-width: 760px) { .ed-hero { min-height: 780px; } }
.ed-intro .intro-img-l, .ed-intro .intro-img-l { margin-top: 0 !important; align-self: center; }
.ed-intro .intro-img-l .ph { border: 0 !important; border-radius: 0 !important; }

/* Hero grain (moderate) */
.ed-hero.tx::after { display: block; background-image: url("../images/grain-hero.png"); background-size: 400px 400px; opacity: .3; mix-blend-mode: overlay; }

/* Film wash: teal tint, faded blacks, soft vignette */
.ed-hero::before {
  background:
    radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 50%, rgba(0,0,0,.38) 100%),
    linear-gradient(rgba(15,109,115,.16), rgba(15,109,115,.16)),
    linear-gradient(rgba(34,28,22,.14), rgba(34,28,22,.14)),
    linear-gradient(180deg, rgba(10,9,8,.34) 0%, rgba(10,9,8,.12) 36%, rgba(10,9,8,.18) 66%, rgba(10,9,8,.5) 100%);
}
.ed-hero.tx::after { opacity: .15; }

/* Hero: no grain, no film, no filters (keeps only the light legibility gradient) */
.ed-hero.tx::after { display: none; }
.hero-slide { filter: none; }
.ed-hero::before { background: linear-gradient(180deg, rgba(10,9,8,.34) 0%, rgba(10,9,8,.12) 36%, rgba(10,9,8,.18) 66%, rgba(10,9,8,.5) 100%); }

/* Hero fills the screen (capped so tall preview frames don't balloon it) */
.ed-hero { min-height: max(720px, min(100vh, 1080px)); }
@media (max-width: 760px) { .ed-hero { min-height: max(620px, min(100vh, 1000px)); } }
.ed-intro .intro-copy h2 { text-wrap: wrap; }
@media (max-width: 560px) { .ed-intro .intro-copy h2 .br-d { display: none; } }
#svc-h, .ed-services .svc-head h2 { font-size: clamp(1.5rem, 2.4vw, 2.3rem); line-height: 1.1; letter-spacing: .01em; }
.ed-services .svc-head p { color: #fff; font-size: .855rem; line-height: 1.6; }
.ed-services .svc-head .eyebrow { margin-bottom: 16px; }

/* Footer type matches top nav (Space Mono, caps). Headings and legal paragraph stay as they are. */
.ed-footer .ft-col a,
.ed-footer .nap, .ed-footer .nap a, .ed-footer .nap strong,
.ed-footer .registry-links a,
.ed-footer .footer-bottom p, .ed-footer .footer-bottom a,
.ed-footer .ft-need .label, .ed-footer .tx-l,
.ed-footer .ft-phones .num {
  font-family: 'Space Mono', ui-monospace, Menlo, Consolas, monospace !important;
  font-weight: 400 !important; text-transform: uppercase; letter-spacing: .08em; font-size: .76rem;
}
.ed-footer .ft-phones .num { font-size: 1rem; }
.ed-footer .ft-col h2 { font-family: 'Spectral SC', Georgia, serif; font-weight: 400 !important; text-transform: none; letter-spacing: .005em; font-size: 1.3rem; line-height: 1.1; }
.ed-footer .ft-word { font-family: 'Spectral SC', Georgia, serif; font-weight: 400 !important; font-synthesis: none; letter-spacing: -.02em; text-transform: none; }
.ed-hero { padding-top: 200px; }
@media (max-width: 760px) { .ed-hero { padding-top: 170px; } }
.ed-hero { padding-top: 240px; }
@media (max-width: 760px) { .ed-hero { padding-top: 195px; } }

/* Footer brand: logo and wordmark side by side, wordmark smaller */
.ed-footer .ft-brand { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 16px; align-items: center; }
.ed-footer .ft-brand > a { grid-column: 1; grid-row: 1; display: block; line-height: 0; }
.ed-footer .ft-brand img { margin-bottom: 0; }
.ed-footer .ft-word { grid-column: 2; grid-row: 1; margin: 0; font-size: clamp(1.25rem, 1.8vw, 1.65rem); line-height: 1; }
.ed-footer .ft-brand > .tagline, .ed-footer .ft-brand > .nap { grid-column: 1 / -1; }
.ed-footer .ft-brand > .tagline { margin-top: 20px; }
.ed-footer .ft-word { font-size: clamp(1.5rem, 2.2vw, 2rem); }
.ed-footer .ft-brand .tagline { font-size: .8rem; }
.ed-footer .ft-brand img { background: #000; padding: 6px; box-sizing: border-box; width: 96px; height: 96px; border: 1px solid rgba(242,239,233,.18); }

/* Footer logo: hanging banner like the top nav */
.ed-footer .ft-brand img { width: 116px; height: 156px; padding: 14px 14px 54px; box-sizing: border-box; object-fit: contain; object-position: center top; background: #000; border: 0; border-radius: 0; clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 88%, 0 100%); }
.ed-footer .ft-brand > a { align-self: start; }
.ed-footer .ft-word { align-self: start; padding-top: 24px; }
.ed-footer .ft-col ul a, .ed-footer .ft-col a, .ed-footer .ft-need .label, .ed-footer .tx-l { font-size: .76rem !important; letter-spacing: .08em; }
.ed-hero { padding-top: 290px; }
@media (max-width: 760px) { .ed-hero { padding-top: 230px; } }
.ed-footer .ft-brand img { width: 88px; height: 118px; padding: 10px 10px 41px; }
.ed-footer .ft-word { padding-top: 16px; }

/* Footer brand lines: Spectral SC Regular */
.ed-footer .nap strong, .ed-footer .ft-brand .tagline { font-family: 'Spectral SC', Georgia, serif !important; font-weight: 400 !important; font-synthesis: none; text-transform: none !important; letter-spacing: .02em; }
.ed-footer .nap strong { font-size: 1rem; }
.ed-footer .ft-brand .tagline { font-size: .95rem; }
.ed-footer .nap strong, .ed-footer .nap .nap-state { font-family: 'Spectral SC', Georgia, serif !important; font-weight: 400 !important; font-synthesis: none; text-transform: none !important; letter-spacing: .02em; font-size: 1rem; }
.ed-footer .ft-brand .tagline { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace !important; font-weight: 400 !important; text-transform: uppercase !important; letter-spacing: .04em; font-size: .8rem; }
.ed-badge img { position: relative; top: 10px; }
.ed-footer .ft-brand img { padding: 18px 10px 33px; }
.ed-footer .ft-brand > a { filter: drop-shadow(.6px 0 0 rgba(242,239,233,.75)) drop-shadow(-.6px 0 0 rgba(242,239,233,.75)) drop-shadow(0 .6px 0 rgba(242,239,233,.75)) drop-shadow(0 -.6px 0 rgba(242,239,233,.75)); }
.ed-footer .ft-brand > a { filter: drop-shadow(.5px 0 0 rgba(242,239,233,.22)) drop-shadow(-.5px 0 0 rgba(242,239,233,.22)) drop-shadow(0 .5px 0 rgba(242,239,233,.22)) drop-shadow(0 -.5px 0 rgba(242,239,233,.22)); }

/* footer banner outline matches the 3px teal rule above the footer */
.ed-footer .ft-brand > a { filter: drop-shadow(3px 0 0 var(--primary)) drop-shadow(-3px 0 0 var(--primary)) drop-shadow(0 3px 0 var(--primary)) drop-shadow(0 -3px 0 var(--primary)) drop-shadow(2px 2px 0 var(--primary)) drop-shadow(-2px 2px 0 var(--primary)) drop-shadow(2px -2px 0 var(--primary)) drop-shadow(-2px -2px 0 var(--primary)); }

/* darker overlay on hero image */
.ed-hero::before { background: linear-gradient(180deg, rgba(10,9,8,.55) 0%, rgba(10,9,8,.42) 36%, rgba(10,9,8,.46) 66%, rgba(10,9,8,.72) 100%); }
.ed-hero::before { background: linear-gradient(180deg, rgba(10,9,8,.44) 0%, rgba(10,9,8,.27) 36%, rgba(10,9,8,.32) 66%, rgba(10,9,8,.6) 100%); }

/* footer banner outline matches the 1px divider lines in the footer */
.ed-footer .ft-brand > a { filter: drop-shadow(1px 0 0 #332f2b) drop-shadow(-1px 0 0 #332f2b) drop-shadow(0 1px 0 #332f2b) drop-shadow(0 -1px 0 #332f2b); }

/* smaller footer banner (about 20% down from 88x118) */
.ed-footer .ft-brand img { width: 70px; height: 94px; padding: 14px 8px 26px; }

/* footer wordmark top aligns with column titles (ink tops measured equal within 1px) */
.ed-footer .ft-word { padding-top: 0; }
@media (min-width: 1300px) { .ed-footer .ft-word { margin-top: -1px; } }

/* footer tagline sits directly under the wordmark, beside the banner */
.ed-footer .ft-brand { grid-template-rows: auto 1fr auto; }
.ed-footer .ft-brand > a { grid-row: 1 / span 2; }
.ed-footer .ft-brand > .tagline { grid-column: 2; grid-row: 2; align-self: start; margin: 10px 0 0; }
.ed-footer .ft-brand > .nap { grid-row: 3; margin-top: 20px; }

/* "Need someone in your corner?" matches the "How the Keepers show up" heading size */
#need-h, .ed-footer .ft-need h2 { font-size: clamp(1.5rem, 2.4vw, 2.3rem); line-height: 1.1; letter-spacing: .01em; }

/* footer "Need someone" copy: white, same size as the services subhead */
.ed-footer .ft-need p:not(.label), .ed-footer .ft-need .note { color: #fff; font-size: .855rem; line-height: 1.6; }
.ed-footer .ft-need .note a { color: var(--link); }

/* footer "you're never alone" buttons match the intro buttons */
.ed-footer .ft-need .ed-cta { border: 1px solid var(--paper); border-radius: 999px; padding: 8.5px 18.7px; min-height: 37.4px; font-size: .765rem; gap: 10px; color: var(--paper); transition: background var(--tx), color var(--tx), border-color var(--tx); }
.ed-footer .ft-need .ed-cta:hover { background: var(--paper); color: var(--ink); border-color: var(--paper); gap: 10px; }
.ed-footer .ft-need .ed-cta .arr { width: 24px; height: 12px; }
.ed-footer .ft-need .ed-cta-row { display: flex; flex-wrap: wrap; gap: 12px; }

/* footer phone numbers a little smaller (16px to 14px) */
.ed-footer .ft-phones .num { font-size: .875rem; }

/* "how it works" on the service panels: Roboto Mono, all caps */
.ed-services .panel-more, .panel-more.label { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace !important; font-weight: 400 !important; text-transform: uppercase !important; }
.ed-services .panel-more { font-size: .76rem; letter-spacing: .08em; }
.ed-services .panel:hover .panel-more { letter-spacing: .16em; }

/* section headings 10% larger: intro, services, footer "need someone" */
.ed-intro .intro-copy h2, #svc-h, .ed-services .svc-head h2, #need-h, .ed-footer .ft-need h2 { font-size: clamp(1.65rem, 2.64vw, 2.53rem); }
.ed-intro .intro-copy h2, #svc-h, .ed-services .svc-head h2, #need-h, .ed-footer .ft-need h2 { font-size: clamp(1.815rem, 2.904vw, 2.783rem); }

/* intro heading stays on exactly 3 lines at desktop widths */
@media (min-width: 901px) {
  .ed-intro .intro-grid { grid-template-columns: minmax(0, .85fr) minmax(0, 1.5fr); column-gap: clamp(32px, 5vw, 90px); padding: 0 clamp(24px, 6vw, 125px); }
  .ed-intro .intro-copy { container-type: inline-size; width: 100%; }
  .ed-intro .intro-copy h2 { white-space: nowrap; font-size: min(clamp(1.815rem, 2.904vw, 2.783rem), 5.5cqw); }
}

/* h1 10% larger */
h1 { font-size: clamp(2.464rem, 5.632vw, 4.928rem); }
h1.hero-wordmark, .hero-wordmark { font-size: clamp(2.288rem, 7.392vw, 7.04rem); }

/* children photo layered over the sunrise ride photo */
.ed-intro .intro-img-l .ov-top { position: absolute; right: -6%; bottom: -7%; width: 54%; aspect-ratio: 1 / 1; height: auto; object-fit: cover; z-index: 3; display: block; box-shadow: 0 16px 38px rgba(0,0,0,.5); }
@media (max-width: 900px) { .ed-intro .intro-img-l .ov-top { right: -6%; bottom: -6%; width: 52%; } }

/* hero tagline 20% larger */
.hero-tag { font-size: clamp(.883rem, 1.5vw, 1.325rem); }

/* both intro images about 20% smaller */
@media (min-width: 901px) { .ed-intro .intro-img-l { width: 80%; justify-self: start; } }
@media (max-width: 900px) { .ed-intro .intro-img-l { width: min(62%, 288px); } }

/* hero tagline up a pinch (30px to 22px gap under the title) */
.hero-tag { margin-top: 22px; }

/* intro images smaller again (about 20% down from the last size) */
@media (min-width: 901px) { .ed-intro .intro-img-l { width: 64%; } }
@media (max-width: 900px) { .ed-intro .intro-img-l { width: min(50%, 230px); } }

/* children photo (top layer) moved right so it hangs off the sunrise photo */
.ed-intro .intro-img-l .ov-top { right: -30%; }
@media (max-width: 900px) { .ed-intro .intro-img-l .ov-top { right: -22%; } }
.ed-intro .intro-img-l .ov-top { right: -42%; }
@media (max-width: 900px) { .ed-intro .intro-img-l .ov-top { right: -32%; } }

/* Hero image shown untouched: no overlay, no tint, no grain, no filter */
.ed-hero::before, .ed-hero::after, .ed-hero.tx::after { content: none !important; display: none !important; background: none !important; }
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; mix-blend-mode: normal !important; }

/* intro and services sections always share the same height */
.eq-sec { display: grid; grid-template-columns: minmax(0, 1fr); grid-auto-rows: 1fr; }
.eq-sec > .ed-intro { display: flex; flex-direction: column; justify-content: center; }
.eq-sec > .ed-intro > .intro-grid { width: 100%; box-sizing: border-box; }

/* Top nav links: Roboto Mono */
.ed-bar-link { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-weight: 400; font-size: .76rem; letter-spacing: .08em; }

/* h1 letter spacing tightened about 30% (-.02em to -.04em) */
h1, h1.hero-wordmark, .hero-wordmark { letter-spacing: -.04em; }

/* Hero: warm brown filter */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.23) saturate(.9) brightness(.95) contrast(.62) !important; }
.ed-hero::before { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: rgba(98,79,64,.46) !important; mix-blend-mode: multiply; }

/* Hero: slight teal tint */
.ed-hero::after, .ed-hero.tx::after { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: rgba(16,122,134,.2) !important; mix-blend-mode: soft-light; opacity: 1 !important; }

/* Hero: warm teal grade (teal shadows, sand-warm lights) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.42) saturate(1) brightness(.95) contrast(.66) !important; }
.ed-hero::before { background: rgba(104,92,78,.5) !important; mix-blend-mode: multiply; }
.ed-hero::after, .ed-hero.tx::after { background: linear-gradient(to bottom, rgba(14,118,128,.2), rgba(40,128,126,.12) 55%, rgba(180,128,78,.32)) !important; mix-blend-mode: soft-light; }

/* h1 +10% */
h1.hero-wordmark, .hero-wordmark { font-size: clamp(2.517rem, 8.131vw, 7.744rem); }

/* Footer base matches the "A family of bikers" section */
.ed-footer { background: var(--bg); overflow: clip; }

/* You're never alone: skull background with scroll parallax */
.ed-footer .ft-need { position: relative; isolation: isolate; overflow: clip; background: transparent; view-timeline: --need-par block; }
.ed-footer .ft-need::before { content: ""; position: absolute; left: 0; right: 0; top: -14%; bottom: -14%; z-index: -2; pointer-events: none; background: url("../images/bg-need-corner.jpg") center center / cover no-repeat; will-change: transform; }
@media (min-width: 1001px) { .ed-footer .ft-need::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(to right, rgba(28,40,38,.62) 0, rgba(28,40,38,.5) 24%, rgba(28,40,38,0) 42%), linear-gradient(to left, rgba(28,40,38,.62) 0, rgba(28,40,38,.5) 24%, rgba(28,40,38,0) 42%); } }
@keyframes koi-need-par { from { transform: translate3d(0, -10%, 0); } to { transform: translate3d(0, 10%, 0); } }
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .ed-footer .ft-need::before { animation: koi-need-par linear both; animation-timeline: --need-par; animation-range: cover 0% cover 100%; }
  }
}

/* Hero: no filters or overlays, photo shown untouched */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; }
.ed-hero::before, .ed-hero::after, .ed-hero.tx::after { content: none !important; display: none !important; background: none !important; mix-blend-mode: normal !important; }

/* h1 +10% */
h1.hero-wordmark, .hero-wordmark { font-size: clamp(2.769rem, 8.944vw, 8.518rem); }

/* You're never alone phone numbers +10% */
.ed-footer .ft-phones .num { font-size: 1.05875rem; }

/* Hero: hazy, faded, warm editorial grade (misty lifted blacks, muted earthy tones) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.3) saturate(.72) contrast(.8) brightness(.96) !important; }
.ed-hero::before { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; mix-blend-mode: normal;
  background: linear-gradient(105deg, rgba(176,166,140,.5) 0%, rgba(160,150,124,.34) 42%, rgba(120,104,80,.16) 100%), linear-gradient(to bottom, rgba(150,140,115,.16), rgba(60,50,38,.22)) !important; }

/* Hero: blend of moody dark olive (candlelit) and soft hazy faded grade */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.32) saturate(.78) contrast(.88) brightness(.86) !important; }
.ed-hero::before { background: linear-gradient(105deg, rgba(150,142,114,.26) 0%, rgba(110,104,80,.2) 40%, rgba(70,62,44,.18) 100%), linear-gradient(to bottom, rgba(70,68,48,.34), rgba(36,30,22,.5)) !important; }

/* h1: no shadow of any kind */
h1, h1 *, .hero-wordmark, .hero-wordmark * { text-shadow: none !important; box-shadow: none !important; filter: none !important; -webkit-text-stroke: 0; }

/* hero tagline +10% */
.hero-tag { font-size: clamp(.8254rem, 1.4025vw, 1.2389rem); }
@media (max-width: 500px) { .hero-tag { font-size: clamp(.595rem, 3.145vw, .8075rem); white-space: nowrap; } }

/* Hero: no filters or overlays, photo shown untouched */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; }
.ed-hero::before, .ed-hero::after, .ed-hero.tx::after { content: none !important; display: none !important; background: none !important; mix-blend-mode: normal !important; }

/* Hero: dreamy vintage-film grade (soft focus, faded warm browns, heavy vignette, grain) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.55) saturate(.72) contrast(.76) brightness(.86) blur(1.1px) !important; }
.ed-hero::before { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; mix-blend-mode: normal !important;
  background: radial-gradient(ellipse at 50% 46%, rgba(0,0,0,0) 28%, rgba(18,13,8,.55) 100%), linear-gradient(rgba(84,68,48,.3), rgba(52,40,28,.34)) !important; }
.ed-hero::after, .ed-hero.tx::after { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: .5 !important; mix-blend-mode: overlay !important;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .5  0 0 0 0 .5  0 0 0 0 .5  0 0 0 1.4 -.2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>") !important; background-size: 300px 300px !important; }

/* Hero: original colors, keeping the soft-focus, vignette and grain film look */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: saturate(.95) contrast(.84) brightness(.9) blur(1.1px) !important; }
.ed-hero::before { background: radial-gradient(ellipse at 50% 46%, rgba(0,0,0,0) 28%, rgba(10,10,10,.55) 100%) !important; }

/* Hero: no filters or overlays, photo shown untouched */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; }
.ed-hero::before, .ed-hero::after, .ed-hero.tx::after { content: none !important; display: none !important; background: none !important; mix-blend-mode: normal !important; opacity: 1 !important; }

/* Hero: soft focus only (no color change, overlays, vignette or grain) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: blur(1.1px) !important; }

/* Hero: photo untouched, no blur */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; }

/* Hero: warm soft-focus (gentle warm tone, light blur, soft golden glow) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.2) saturate(.96) contrast(.93) brightness(1.02) blur(.9px) !important; }
.ed-hero::before { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; mix-blend-mode: soft-light !important;
  background: radial-gradient(ellipse at 50% 38%, rgba(255,214,160,.55) 0%, rgba(240,176,112,.32) 45%, rgba(150,96,52,.22) 100%) !important; }

/* Hero: soft focus with a subtle dark teal/green tint */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: saturate(.92) contrast(.96) brightness(.9) blur(.9px) !important; }
.ed-hero::before { mix-blend-mode: multiply !important;
  background: linear-gradient(to bottom, rgba(58,98,92,.62), rgba(40,76,72,.55)) !important; }

/* Hero: lighter teal tint + vintage film grain */
.ed-hero::before { background: linear-gradient(to bottom, rgba(70,112,106,.5), rgba(46,86,82,.46)) !important; }
.ed-hero::after, .ed-hero.tx::after { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: .55 !important; mix-blend-mode: overlay !important;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .5  0 0 0 0 .5  0 0 0 0 .5  0 0 0 1.4 -.2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>") !important; background-size: 300px 300px !important; }

/* Hero: less teal, a little warmer */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.14) saturate(.92) contrast(.96) brightness(.9) blur(.9px) !important; }
.ed-hero::before { background: linear-gradient(to bottom, rgba(96,116,102,.46), rgba(74,92,80,.42)) !important; }

/* Hero: less green, more neutral warm gray */
.ed-hero::before { background: linear-gradient(to bottom, rgba(108,104,94,.46), rgba(84,78,68,.42)) !important; }

/* Hero: more vintage (faded lifted blacks, warm muted tones, vignette, heavier grain) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.3) saturate(.8) contrast(.86) brightness(.95) blur(.9px) !important; }
.ed-hero::before { mix-blend-mode: normal !important;
  background: radial-gradient(ellipse at 50% 46%, rgba(0,0,0,0) 30%, rgba(20,14,8,.5) 100%), linear-gradient(rgba(118,104,84,.34), rgba(96,84,66,.36)) !important; }
.ed-hero::after, .ed-hero.tx::after { opacity: .75 !important; }

/* Hero: toned-down vintage (about half of V214) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.16) saturate(.9) contrast(.94) brightness(.92) blur(.9px) !important; }
.ed-hero::before { mix-blend-mode: normal !important;
  background: radial-gradient(ellipse at 50% 46%, rgba(0,0,0,0) 40%, rgba(20,14,8,.24) 100%), linear-gradient(rgba(112,102,86,.16), rgba(92,84,70,.18)) !important; }
.ed-hero::after, .ed-hero.tx::after { opacity: .42 !important; }

/* Hero: sunlight from the top */
.ed-hero::before { mix-blend-mode: normal !important;
  background:
    radial-gradient(ellipse 70% 55% at 62% 0%, rgba(255,226,170,.42) 0%, rgba(255,214,150,.18) 45%, rgba(255,210,140,0) 100%),
    linear-gradient(to bottom, rgba(255,222,165,.22) 0%, rgba(255,214,150,0) 55%),
    radial-gradient(ellipse at 50% 46%, rgba(0,0,0,0) 40%, rgba(20,14,8,.24) 100%),
    linear-gradient(rgba(112,102,86,.16), rgba(92,84,70,.18)) !important; }

/* Hero: lower contrast, a bit more blur */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.16) saturate(.9) contrast(.8) brightness(.95) blur(1.6px) !important; }

/* Hero: blur a bit more subtle, image a little darker */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.16) saturate(.9) contrast(.8) brightness(.84) blur(1.2px) !important; }

/* Hero: a little more teal */
.ed-hero::before { mix-blend-mode: normal !important;
  background:
    radial-gradient(ellipse 70% 55% at 62% 0%, rgba(255,226,170,.38) 0%, rgba(255,214,150,.16) 45%, rgba(255,210,140,0) 100%),
    linear-gradient(to bottom, rgba(255,222,165,.18) 0%, rgba(255,214,150,0) 55%),
    radial-gradient(ellipse at 50% 46%, rgba(0,0,0,0) 40%, rgba(10,16,16,.24) 100%),
    linear-gradient(rgba(34,112,116,.09), rgba(26,92,96,.11)),
    linear-gradient(rgba(112,102,86,.15), rgba(92,84,70,.17)) !important; }

/* Hero: darker filter */
.ed-hero::before { mix-blend-mode: normal !important;
  background:
    radial-gradient(ellipse 70% 55% at 62% 0%, rgba(255,226,170,.30) 0%, rgba(255,214,150,.12) 45%, rgba(255,210,140,0) 100%),
    linear-gradient(to bottom, rgba(255,222,165,.12) 0%, rgba(255,214,150,0) 55%),
    radial-gradient(ellipse at 50% 46%, rgba(0,0,0,0) 36%, rgba(8,14,14,.4) 100%),
    linear-gradient(rgba(8,16,16,.24), rgba(8,16,16,.28)),
    linear-gradient(rgba(34,112,116,.09), rgba(26,92,96,.11)),
    linear-gradient(rgba(112,102,86,.15), rgba(92,84,70,.17)) !important; }

/* Hero: blur more subtle */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.16) saturate(.9) contrast(.8) brightness(.84) blur(.7px) !important; }

/* Hero: more grain */
.ed-hero::after, .ed-hero.tx::after { opacity: .75 !important; }

/* Hero: zoom in a pinch (individual scale property so the parallax transform is untouched) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { scale: 1.07; transform-origin: 50% 58%; }

/* ---- Family of Bikers: editorial layout. Big photo left, headline overlapping the photo edge,
        small mono subline, indented body, pill buttons (layout only, no color changes) ---- */
@media (min-width: 901px) {
  .ed-intro .intro-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; align-items: start; max-width: 1500px; padding: 0 clamp(24px, 8.5vw, 175px); }
  .ed-intro .intro-img-l { grid-column: 1 / span 4; grid-row: 1; width: 100% !important; justify-self: stretch; align-self: start; aspect-ratio: 4 / 5; margin: clamp(26px, 3.2vw, 52px) 0 0 !important; z-index: 1; }
  .ed-intro .intro-copy { grid-column: 1 / -1; grid-row: 1; z-index: 4; display: grid; grid-template-columns: subgrid; column-gap: 24px; align-content: start; max-width: none; width: auto; container-type: normal; justify-self: stretch; pointer-events: none; }
  .ed-intro .intro-copy a { pointer-events: auto; }
  .ed-intro .intro-copy h2 { grid-column: 3 / -1; grid-row: 1; white-space: normal; font-size: clamp(2.2rem, 4vw, 4.2rem); line-height: 1.04; margin: 0; }
  .ed-intro .intro-copy .eyebrow { grid-column: 5 / -1; grid-row: 2; margin: clamp(18px, 2vw, 30px) 0 0; }
  .ed-intro .intro-copy .lead { grid-column: 6 / -1; grid-row: 3; margin: clamp(40px, 5.5vw, 88px) 0 16px; max-width: none; }
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead) { grid-column: 6 / -1; max-width: none; margin: 0 0 14px; }
  .ed-intro .intro-copy .ed-cta-row { grid-column: 6 / -1; margin-top: 18px; pointer-events: none; }
  /* soft top fade so the headline stays readable where it crosses the photo */
  .ed-intro .intro-img-l .ph::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(to bottom, rgba(14,12,10,.55) 0%, rgba(14,12,10,0) 38%); }
  .ed-intro .intro-img-l .ov-top { right: -16%; bottom: -8%; width: 40%; }
}

/* Family of Bikers: eyebrow back above the headline; lead line in Roboto Mono */
@media (min-width: 901px) {
  .ed-intro .intro-copy .eyebrow { grid-column: 3 / -1; grid-row: 1; margin: 0 0 clamp(14px, 1.6vw, 22px); }
  .ed-intro .intro-copy h2 { grid-row: 2; }
  .ed-intro .intro-copy .lead { margin-top: clamp(34px, 4.4vw, 70px); }
  .ed-intro .intro-img-l { margin-top: calc(clamp(26px, 3.2vw, 52px) + clamp(30px, 3.4vw, 46px)) !important; }
}
.ed-intro .intro-copy .lead { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .8rem; letter-spacing: .04em; line-height: 1.7; }

/* Family of Bikers: lead in all caps, headline 20% smaller */
.ed-intro .intro-copy .lead { text-transform: uppercase; letter-spacing: .06em; }
@media (min-width: 901px) { .ed-intro .intro-copy h2 { font-size: clamp(1.76rem, 3.2vw, 3.36rem); } }
@media (max-width: 900px) { .ed-intro .intro-copy h2 { font-size: clamp(1.452rem, 5.6vw, 2.2rem); } }

/* Family of Bikers: eyebrow removed, tighten the layout back up */
@media (min-width: 901px) {
  .ed-intro .intro-copy h2 { grid-row: 1; }
  .ed-intro .intro-copy .lead { grid-row: 2; }
  .ed-intro .intro-img-l { margin-top: clamp(26px, 3.2vw, 52px) !important; }
}

/* Family of Bikers: larger photo; lead line sits right beside it on two lines; body indented further */
@media (min-width: 901px) {
  .ed-intro .intro-img-l { grid-column: 1 / span 5; }
  .ed-intro .intro-copy h2 { grid-column: 4 / -1; }
  .ed-intro .intro-copy .lead { grid-column: 6 / span 6; text-wrap: balance; }
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead), .ed-intro .intro-copy .ed-cta-row { grid-column: 7 / -1; }
}

/* Family of Bikers: lead line up closer to the headline; headline always exactly three lines */
@media (min-width: 901px) { .ed-intro .intro-copy .lead { margin-top: clamp(14px, 1.7vw, 26px); } }
.ed-intro .intro-copy h2 { white-space: nowrap; }
.ed-intro .intro-copy h2 .br-d { display: inline !important; }
@media (max-width: 900px) { .ed-intro .intro-copy h2 { font-size: min(clamp(1.452rem, 5.6vw, 2.2rem), calc((100vw - 48px) / 13.4)); } }

/* Family of Bikers: body paragraphs further left (aligned with the lead line), lower, and narrower */
@media (min-width: 901px) {
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead), .ed-intro .intro-copy .ed-cta-row { grid-column: 6 / span 4; }
  .ed-intro .intro-copy .lead + p { margin-top: clamp(36px, 4.6vw, 72px); }
}
@media (min-width: 901px) {
  .ed-intro .intro-copy p.lead + p:not(.eyebrow) { margin-top: clamp(40px, 5.5vw, 88px); }
}
@media (min-width: 901px) and (max-width: 1200px) {
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead), .ed-intro .intro-copy .ed-cta-row { grid-column: 6 / span 5; }
}

/* Family of Bikers: body paragraphs up, further right, wider */
@media (min-width: 901px) {
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead), .ed-intro .intro-copy .ed-cta-row { grid-column: 7 / -1; }
  .ed-intro .intro-copy p.lead + p:not(.eyebrow) { margin-top: clamp(20px, 2.4vw, 38px); }
}

/* Family of Bikers: body paragraphs up a little more, slightly narrower */
@media (min-width: 901px) {
  .ed-intro .intro-copy p.lead + p:not(.eyebrow) { margin-top: clamp(8px, 1vw, 16px); }
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead) { max-width: 92%; }
}

/* Family of Bikers: lead line a little bigger, more leading */
.ed-intro .intro-copy .lead { font-size: .92rem; line-height: 2; }

/* Family of Bikers: body paragraphs and buttons shifted left a bit (same width as before) */
@media (min-width: 901px) {
  .ed-intro .intro-copy { --sh: clamp(24px, 3.5vw, 50px); }
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead), .ed-intro .intro-copy .ed-cta-row { margin-left: calc(-1 * var(--sh)); }
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead) { max-width: calc((100% - var(--sh)) * .92); }
}
@media (min-width: 901px) { .ed-intro .intro-copy p:not(.eyebrow):not(.lead) { max-width: 92%; } }

/* Family of Bikers: body paragraph leading bigger */
.ed-intro .intro-copy p:not(.eyebrow):not(.lead) { line-height: 1.9; }

/* Family of Bikers: headline 10% smaller */
@media (min-width: 901px) { .ed-intro .intro-copy h2 { font-size: clamp(1.584rem, 2.88vw, 3.024rem); } }
@media (max-width: 900px) { .ed-intro .intro-copy h2 { font-size: min(clamp(1.307rem, 5.04vw, 1.98rem), calc((100vw - 48px) / 13.4)); } }

/* Family of Bikers: longest headline line is now "to Shoulder with Our Gladiators"; keep it on one line on phones */
@media (max-width: 900px) { .ed-intro .intro-copy h2 { font-size: min(clamp(1.307rem, 5.04vw, 1.98rem), calc((100vw - 48px) / 15.6)); } }

/* Family of Bikers: body paragraph leading up a little more (1.9 to 2.1) */
.ed-intro .intro-copy p:not(.eyebrow):not(.lead) { line-height: 2.1; }

/* What We Do intro paragraph: leading matches the Family of Bikers paragraphs (2.1) */
.ed-services .svc-head p { line-height: 2.1; }

/* You're never alone paragraphs: leading matches the other body paragraphs (2.1) */
.ed-footer .ft-need p:not(.label), .ed-footer .ft-need .note { line-height: 2.1; }

/* Hero: back to the plain stadium photo (no filter, tint, grain, blur or zoom) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; mix-blend-mode: normal !important; scale: 1; }
.ed-hero::before, .ed-hero::after, .ed-hero.tx::after { content: none !important; display: none !important; background: none !important; }

/* Hero: lower contrast */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: contrast(.82) !important; }

/* Hero: subtle blur */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: contrast(.82) blur(.7px) !important; }

/* Family of Bikers photo: darker vintage filter (faded warm grade, vignette, film grain) */
.ed-intro .intro-img-l .ph img { filter: sepia(.38) saturate(.78) contrast(.88) brightness(.72) !important; }
.ed-intro .intro-img-l .ph::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 35%, rgba(18,12,6,.55) 100%), linear-gradient(rgba(96,80,60,.18), rgba(70,58,44,.2)); }
.ed-intro .intro-img-l .ph::after { z-index: 2; }
.ed-intro .intro-img-l::after { content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; mix-blend-mode: overlay; opacity: .7;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .5  0 0 0 0 .5  0 0 0 0 .5  0 0 0 1.4 -.2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); background-size: 300px 300px; }

/* Family of Bikers photo: vintage filter more subtle (about half strength) */
.ed-intro .intro-img-l .ph img { filter: sepia(.2) saturate(.9) contrast(.94) brightness(.86) !important; }
.ed-intro .intro-img-l .ph::before { background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 40%, rgba(18,12,6,.28) 100%), linear-gradient(rgba(96,80,60,.09), rgba(70,58,44,.1)); }
.ed-intro .intro-img-l::after { opacity: .4; }

/* Family of Bikers photo: vintage filter still more subtle (about a quarter of the original strength) */
.ed-intro .intro-img-l .ph img { filter: sepia(.1) saturate(.95) contrast(.97) brightness(.93) !important; }
.ed-intro .intro-img-l .ph::before { background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 45%, rgba(18,12,6,.14) 100%), linear-gradient(rgba(96,80,60,.05), rgba(70,58,44,.05)); }
.ed-intro .intro-img-l::after { opacity: .22; }

/* Family of Bikers photo: scroll parallax (image drifts inside its frame; CSS scroll-driven, no JS) */
@supports (animation-timeline: view()) {
  .ed-intro .intro-img-l { view-timeline: --bike-par block; }
  .ed-intro .intro-img-l .ph img { position: absolute !important; top: -12% !important; left: 0; width: 100% !important; height: 124% !important; max-width: none; object-fit: cover;
    animation: koi-bike-par linear both; animation-timeline: --bike-par; will-change: transform; }
  @keyframes koi-bike-par { from { transform: translateY(-9%); } to { transform: translateY(9%); } }
}

/* Family of Bikers photo: stronger, easier to see parallax (more travel inside the frame) */
@supports (animation-timeline: view()) {
  .ed-intro .intro-img-l .ph img { top: -20% !important; height: 140% !important; }
  @keyframes koi-bike-par { from { transform: translateY(-14%); } to { transform: translateY(14%); } }
}

/* Family of Bikers photo parallax is now driven by the page script (works in the preview too); turn off the CSS-only version */
.ed-intro .intro-img-l .ph img { animation: none !important; animation-timeline: auto !important; will-change: transform; }

/* Family of Bikers photo: parallax more subtle (less travel, less crop) */
.ed-intro .intro-img-l .ph img { top: -11% !important; height: 122% !important; }

/* Family of Bikers photo: very subtle parallax (about 25px of drift each way) */
.ed-intro .intro-img-l .ph img { top: -5% !important; height: 110% !important; }

/* What We Do panel photos: subtle scroll parallax (translate is set by the page script; hover zoom still works) */
.ed-services .panel .ph img { position: absolute; left: 0; top: -5%; width: 100%; height: 110%; max-width: none; will-change: translate; }

/* Hero: same grade as the Family of Bikers photo (faint warm fade, light vignette, light grain; no blur) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.1) saturate(.95) contrast(.97) brightness(.93) !important; }
.ed-hero::before { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; mix-blend-mode: normal !important;
  background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 45%, rgba(18,12,6,.14) 100%), linear-gradient(rgba(96,80,60,.05), rgba(70,58,44,.05)) !important; }
.ed-hero::after, .ed-hero.tx::after { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; mix-blend-mode: overlay !important; opacity: .22 !important;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .5  0 0 0 0 .5  0 0 0 0 .5  0 0 0 1.4 -.2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>") !important; background-size: 300px 300px !important; }

/* Hero: darker filter */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.1) saturate(.95) contrast(.97) brightness(.78) !important; }
.ed-hero::before { background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 38%, rgba(18,12,6,.34) 100%), linear-gradient(rgba(20,16,12,.14), rgba(20,16,12,.18)), linear-gradient(rgba(96,80,60,.05), rgba(70,58,44,.05)) !important; }

/* Hero: more grain */
.ed-hero::after, .ed-hero.tx::after { opacity: .55 !important; }

/* Hero: lower contrast */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.1) saturate(.95) contrast(.82) brightness(.78) !important; }

/* Hero: soft blur back, a little stronger than the earlier subtle 0.7px */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.1) saturate(.95) contrast(.82) brightness(.78) blur(1.1px) !important; }

/* Hero: blur eased back slightly from 1.1px */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.1) saturate(.95) contrast(.82) brightness(.78) blur(.85px) !important; }

/* ===== Cohesive image grade: one shared look for every photo (warm fade, light vignette, matching grain) ===== */
/* Family of Bikers photo: bring in line with the shared grade */
.ed-intro .intro-img-l .ph img { filter: sepia(.1) saturate(.93) contrast(.9) brightness(.86) !important; }
.ed-intro .intro-img-l .ph::before { background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 42%, rgba(18,12,6,.26) 100%), linear-gradient(rgba(96,80,60,.07), rgba(70,58,44,.07)); }
.ed-intro .intro-img-l::after { opacity: .4; }

/* What We Do panel photos and illustrations */
.ed-services .panel .ph img { filter: sepia(.1) saturate(.93) contrast(.9) brightness(.86); }
.ed-services .panel:hover .ph img, .ed-services .panel:focus-visible .ph img { filter: sepia(.1) saturate(.98) contrast(.95) brightness(.97); }
.ed-services .panel .ph::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 42%, rgba(18,12,6,.26) 100%), linear-gradient(rgba(96,80,60,.07), rgba(70,58,44,.07)); }
.ed-services .panel .ph::after { z-index: 2; }
.ed-services .panel::before { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; mix-blend-mode: overlay; opacity: .4;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .5  0 0 0 0 .5  0 0 0 0 .5  0 0 0 1.4 -.2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); background-size: 300px 300px; }

/* All other content photos (About and inner pages) */
.frame img { filter: sepia(.1) saturate(.93) contrast(.9) brightness(.86); }
.frame::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 42%, rgba(18,12,6,.26) 100%), linear-gradient(rgba(96,80,60,.07), rgba(70,58,44,.07)); }
.frame::after { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; mix-blend-mode: overlay; opacity: .4;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .5  0 0 0 0 .5  0 0 0 0 .5  0 0 0 1.4 -.2'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"); background-size: 300px 300px; }

/* What We Do panels: grade more subtle (about half strength) */
.ed-services .panel .ph img { filter: sepia(.05) saturate(.97) contrast(.96) brightness(.93); }
.ed-services .panel:hover .ph img, .ed-services .panel:focus-visible .ph img { filter: sepia(.05) saturate(1) contrast(1) brightness(1); }
.ed-services .panel .ph::before { background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 48%, rgba(18,12,6,.13) 100%), linear-gradient(rgba(96,80,60,.035), rgba(70,58,44,.035)); }
.ed-services .panel::before { opacity: .2; }

/* You're never alone: background parallax now driven by the page script (works in the preview too); CSS-only version off */
.ed-footer .ft-need::before { top: -10%; bottom: -10%; animation: none !important; animation-timeline: auto !important; transform: translate3d(0, var(--need-y, 0px), 0); }

/* You're never alone: parallax more intense (about 2x the travel) */
.ed-footer .ft-need::before { top: -22%; bottom: -22%; }

/* Texture grain on the Family of Bikers section and the footer: anchored to the viewport so content scrolls over a still texture */
.ed-intro.tx::after, .ed-footer.tx::after { background-attachment: fixed; }

/* You're never alone: parallax more subtle (between the first and the intense version, about 55px of drift) */
.ed-footer .ft-need::before { top: -14%; bottom: -14%; }

/* You're never alone: parallax more subtle again (about 25px of drift) */
.ed-footer .ft-need::before { top: -7%; bottom: -7%; }

/* You're never alone: parallax more subtle again (about 10px of drift) */
.ed-footer .ft-need::before { top: -3%; bottom: -3%; }

/* h1: weight up a tad (Spectral SC 400 to 500) */
h1, h1.hero-wordmark, .hero-wordmark { font-weight: 500 !important; }

/* Hero h1: moved up a little (tagline stays where it was) */
.ed-hero h1.hero-wordmark, .ed-hero .hero-wordmark { translate: 0 clamp(-30px, -2.2vw, -14px); }

/* Hero tagline: moved up a little to follow the h1 */
.ed-hero .hero-tag { translate: 0 clamp(-22px, -1.6vw, -10px); }

/* Hero h1 and tagline: both up a little more */
.ed-hero h1.hero-wordmark, .ed-hero .hero-wordmark { translate: 0 clamp(-50px, -3.5vw, -24px); }
.ed-hero .hero-tag { translate: 0 clamp(-42px, -2.9vw, -20px); }

/* Family of Bikers section: gladiator helmet graphic, anchored (fixed to the viewport) behind the content */
.ed-intro::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: url("../images/bg-intro-helmet.webp") no-repeat right 2vw center / auto min(92vh, 980px); background-attachment: fixed; opacity: .85; }
@media (max-width: 900px) { .ed-intro::before { background-attachment: scroll; background-position: center 60%; background-size: auto 70%; opacity: .5; } }
@media (max-width: 900px) { .ed-intro::before { background-position: center 62%; background-size: auto 46%; opacity: .55; } }

/* Family of Bikers helmet graphic: much smaller, pinned in place inside the section (does not depend on viewport-fixed backgrounds) */
.ed-intro::before { inset: auto; right: clamp(24px, 6.5vw, 120px); bottom: clamp(40px, 5.5vw, 90px); width: clamp(200px, 22vw, 320px); aspect-ratio: 1301 / 1200; height: auto;
  background: url("../images/bg-intro-helmet.webp") center / contain no-repeat; background-attachment: scroll; opacity: .9; }
@media (max-width: 900px) { .ed-intro::before { right: 16px; bottom: 24px; width: 150px; opacity: .6; background-position: center; background-size: contain; } }

/* Family of Bikers helmet graphic: brighter teal, smaller */
.ed-intro::before { width: clamp(130px, 14vw, 200px); filter: brightness(2.2) saturate(1.7); opacity: 1; }
@media (max-width: 900px) { .ed-intro::before { width: 100px; opacity: .85; } }
.ed-intro::before { filter: brightness(2.2) saturate(1.7) hue-rotate(-11deg); }

/* Family of Bikers helmet graphic: more subtle (dimmer, lower opacity) */
.ed-intro::before { filter: brightness(1.7) saturate(1.5) hue-rotate(-11deg); opacity: .6; }
@media (max-width: 900px) { .ed-intro::before { opacity: .5; } }

/* Family of Bikers helmet graphic: moved up and to the left */
.ed-intro::before { right: clamp(40px, 12vw, 220px); bottom: clamp(80px, 12vw, 190px); }
@media (max-width: 900px) { .ed-intro::before { right: 40px; bottom: 64px; } }

/* Family of Bikers helmet graphic: a little bigger (about +20%) */
.ed-intro::before { width: clamp(156px, 16.5vw, 240px); }
@media (max-width: 900px) { .ed-intro::before { width: 120px; } }

/* Family of Bikers helmet graphic: nudged left (about 27px) */
.ed-intro::before { right: clamp(52px, 13.8vw, 250px); }
@media (max-width: 900px) { .ed-intro::before { right: 52px; } }

/* Family of Bikers helmet graphic: a little less subtle (between the bright and the dim versions) */
.ed-intro::before { filter: brightness(1.95) saturate(1.6) hue-rotate(-11deg); opacity: .8; }
@media (max-width: 900px) { .ed-intro::before { opacity: .7; } }

/* Family of Bikers helmet graphic as a round stamp: ring, dashed inner ring, helmet inside, slight tilt */
.ed-intro::before { box-sizing: border-box; aspect-ratio: 1; width: clamp(170px, 18vw, 260px); right: clamp(52px, 13.8vw, 250px); bottom: clamp(70px, 9vw, 140px);
  border: 2px solid #124b50; border-radius: 50%; outline: 1px dashed #124b50; outline-offset: -9px; rotate: -8deg;
  background: url("../images/bg-intro-helmet.webp") center 54% / 66% auto no-repeat; }
@media (max-width: 900px) { .ed-intro::before { width: 130px; right: 40px; bottom: 56px; outline-offset: -6px; } }
.ed-intro::before { width: clamp(160px, 17vw, 240px); right: clamp(40px, 9vw, 170px); bottom: clamp(50px, 6vw, 100px);
  border: 2px solid #0e3d42; outline: 1.5px dashed #0e3d42; outline-offset: -9px; background-position: 46% 56%; background-size: 80% auto; }
@media (max-width: 900px) { .ed-intro::before { width: 130px; right: 24px; bottom: 40px; outline-offset: -6px; } }

/* Stamp rebuilt as an inline SVG (ring, dashed-free inner ring, "KEEPERS OF THE INNOCENT" around, helmet inside); the pseudo-element version is retired */
.ed-intro::before { display: none !important; }
.ed-intro .koi-stamp { position: absolute; z-index: 1; pointer-events: none; color: #1b7a83; opacity: .85; rotate: -8deg;
  width: clamp(104px, 10.5vw, 150px); aspect-ratio: 1; right: clamp(48px, 10vw, 180px); bottom: clamp(56px, 6vw, 100px); }
.ed-intro .koi-stamp svg { display: block; width: 100%; height: 100%; overflow: visible; }
.ed-intro .koi-stamp image { filter: brightness(1.95) saturate(1.6) hue-rotate(-11deg); }
@media (max-width: 900px) { .ed-intro .koi-stamp { width: 96px; right: 24px; bottom: 40px; } }

/* Stamp: larger (about +40%) */
.ed-intro .koi-stamp { width: clamp(140px, 14.5vw, 210px); }
@media (max-width: 900px) { .ed-intro .koi-stamp { width: 130px; } }

/* Stamp: moved up and to the left */
.ed-intro .koi-stamp { right: clamp(60px, 13.5vw, 240px); bottom: clamp(80px, 10.5vw, 190px); }
@media (max-width: 900px) { .ed-intro .koi-stamp { right: 40px; bottom: 64px; } }

/* ===== Homepage event calendar (month grid, pure CSS month switching) ===== */
.ed-cal { position: relative; background: var(--bg); border-top: 1px solid #332f2b; padding: clamp(64px, 8vw, 120px) 0 clamp(56px, 7vw, 104px); }
.ed-cal .cal-head { margin: 0 0 clamp(26px, 3vw, 44px); }
.ed-cal .cal-head h2 { margin: 0; font-size: clamp(1.815rem, 2.904vw, 2.783rem); line-height: 1.1; }
.ed-cal .cal { position: relative; }
.ed-cal .cal-r { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.ed-cal .cal-m { display: none; }
.ed-cal #cm0:checked ~ .cal-panels .cal-m0 { display: block; }
.ed-cal #cm0:focus-visible ~ .cal-panels .cal-m0 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm1:checked ~ .cal-panels .cal-m1 { display: block; }
.ed-cal #cm1:focus-visible ~ .cal-panels .cal-m1 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm2:checked ~ .cal-panels .cal-m2 { display: block; }
.ed-cal #cm2:focus-visible ~ .cal-panels .cal-m2 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm3:checked ~ .cal-panels .cal-m3 { display: block; }
.ed-cal #cm3:focus-visible ~ .cal-panels .cal-m3 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm4:checked ~ .cal-panels .cal-m4 { display: block; }
.ed-cal #cm4:focus-visible ~ .cal-panels .cal-m4 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm5:checked ~ .cal-panels .cal-m5 { display: block; }
.ed-cal #cm5:focus-visible ~ .cal-panels .cal-m5 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm6:checked ~ .cal-panels .cal-m6 { display: block; }
.ed-cal #cm6:focus-visible ~ .cal-panels .cal-m6 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm7:checked ~ .cal-panels .cal-m7 { display: block; }
.ed-cal #cm7:focus-visible ~ .cal-panels .cal-m7 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm8:checked ~ .cal-panels .cal-m8 { display: block; }
.ed-cal #cm8:focus-visible ~ .cal-panels .cal-m8 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm9:checked ~ .cal-panels .cal-m9 { display: block; }
.ed-cal #cm9:focus-visible ~ .cal-panels .cal-m9 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm10:checked ~ .cal-panels .cal-m10 { display: block; }
.ed-cal #cm10:focus-visible ~ .cal-panels .cal-m10 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal #cm11:checked ~ .cal-panels .cal-m11 { display: block; }
.ed-cal #cm11:focus-visible ~ .cal-panels .cal-m11 .cal-title { outline: 2px solid var(--link); outline-offset: 6px; }
.ed-cal .cal-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 0 18px; }
.ed-cal .cal-title { margin: 0; font-size: clamp(1.25rem, 1.9vw, 1.7rem); line-height: 1.1; letter-spacing: .01em; text-align: center; flex: 1; }
.ed-cal .cal-nav { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid var(--paper); border-radius: 999px; color: var(--paper); cursor: pointer; transition: background var(--tx), color var(--tx); flex: none; }
.ed-cal .cal-nav svg { width: 22px; height: 11px; }
.ed-cal .cal-nav:hover { background: var(--paper); color: var(--ink); }
.ed-cal .cal-nav.off { border-color: transparent; cursor: default; pointer-events: none; }
.ed-cal .cal-wd { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-top: 1px solid #332f2b; }
.ed-cal .cal-wd span { padding: 10px 8px; font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--link); text-align: left; }
.ed-cal .cal-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-left: 1px solid #332f2b; }
.ed-cal .cal-grid .d { position: relative; min-height: clamp(64px, 8.2vw, 118px); padding: 10px 10px 8px; border-right: 1px solid #332f2b; border-bottom: 1px solid #332f2b; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ed-cal .cal-grid .d.x { background: rgba(255,255,255,.015); }
.ed-cal .cal-grid .n { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .8rem; color: #c9c3b6; }
.ed-cal .cal-grid .ev { display: block; padding: 4px 7px; background: rgba(15,109,115,.28); border-left: 2px solid var(--link); color: var(--paper); text-decoration: none; font-size: .72rem; line-height: 1.3; overflow-wrap: anywhere; }
.ed-cal .cal-grid .ev:hover { background: rgba(15,109,115,.5); }
.ed-cal .cal-note { margin: 22px 0 0; font-size: .86rem; line-height: 1.9; color: #c9c3b6; }
.ed-cal .cal-note a { color: var(--link); }
@media (max-width: 700px) { .ed-cal .cal-grid .d { padding: 6px 4px; min-height: 56px; } .ed-cal .cal-grid .n { font-size: .72rem; } .ed-cal .cal-wd span { padding: 8px 4px; font-size: .6rem; letter-spacing: .02em; } .ed-cal .cal-grid .ev { font-size: .6rem; padding: 2px 4px; } }

/* ===== Event calendar: event pill, upcoming row, flyer pop-up (CSS-only lightbox) ===== */
.ed-cal .cal-grid .d.has { background: rgba(15,109,115,.1); }
.ed-cal .cal-grid .ev { cursor: pointer; }
.ed-cal .cal-grid .ev b { display: block; font-weight: 500; font-size: .62rem; letter-spacing: .06em; text-transform: uppercase; color: var(--link); margin-bottom: 2px; font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; }
.ed-cal .cal-up { margin-top: clamp(28px, 3.4vw, 48px); }
.ed-cal .cal-up-i { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: clamp(16px, 2.4vw, 36px); align-items: start; padding: clamp(18px, 2vw, 28px) 0; border-top: 1px solid #332f2b; border-bottom: 1px solid #332f2b; }
.ed-cal .cal-up-d { width: 76px; text-align: center; border: 1px solid var(--paper); padding: 8px 0 10px; color: var(--paper); }
.ed-cal .cal-up-d span { display: block; font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--link); }
.ed-cal .cal-up-d b { display: block; font-family: 'Spectral SC', Georgia, serif; font-weight: 500; font-size: 2rem; line-height: 1.1; }
.ed-cal .cal-up-b h3 { margin: 0 0 8px; font-size: clamp(1.15rem, 1.7vw, 1.5rem); line-height: 1.15; }
.ed-cal .cal-up-b p { margin: 0 0 6px; font-size: .86rem; line-height: 1.9; color: #c9c3b6; max-width: 62ch; }
.ed-cal .cal-pill { display: inline-flex; align-items: center; border: 1px solid var(--paper); border-radius: 999px; padding: 10px 22px; color: var(--paper); font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .76rem; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; transition: background var(--tx), color var(--tx); white-space: nowrap; }
.ed-cal .cal-pill:hover { background: var(--paper); color: var(--ink); }
.fly-r { position: fixed; left: -9999px; top: 0; opacity: 0; width: 1px; height: 1px; }
.fly { position: fixed; inset: 0; z-index: 400; display: none; align-items: center; justify-content: center; padding: 24px; }
.fly-r:checked + .fly { display: flex; }
.fly-bg { position: absolute; inset: 0; background: rgba(10,9,8,.88); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); cursor: zoom-out; }
.fly-card { position: relative; margin: 0; max-width: 100%; max-height: 100%; }
.fly-card img { display: block; width: auto; height: auto; max-width: min(92vw, 640px); max-height: calc(100vh - 56px); max-height: calc(100dvh - 56px); box-shadow: 0 24px 80px rgba(0,0,0,.7); }
.fly-x { position: absolute; top: -14px; right: -14px; z-index: 2; width: 40px; height: 40px; border-radius: 999px; background: var(--paper); color: var(--ink); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.5); }
.fly-x svg { width: 16px; height: 16px; }
.fly-x:hover { background: var(--link); }
body:has(.fly-r:checked) { overflow: hidden; }
@media (max-width: 700px) {
  .ed-cal .cal-grid .d.has { background: rgba(15,109,115,.38); }
  .ed-cal .cal-grid .ev { position: absolute; inset: 0; padding: 0; font-size: 0; background: transparent; border: 0; }
  .ed-cal .cal-grid .ev b { display: none; }
  .ed-cal .cal-up-i { grid-template-columns: auto minmax(0, 1fr); }
  .ed-cal .cal-pill { grid-column: 1 / -1; justify-self: start; }
  .fly-x { top: 8px; right: 8px; }
}

/* Event calendar: grain texture anchored to the viewport, same as the Family of Bikers section and footer */
.ed-cal.tx::after { background-attachment: fixed; }

/* Events page: calendar is the page itself (h1 heading, breadcrumb) */
.ed-cal .cal-head h1 { margin: 0; font-size: clamp(2.2rem, 4vw, 3.4rem); line-height: 1.05; }
.ed-cal .cal-head .crumbs { margin: 0 0 22px; }

/* h1: softer warm off-white instead of near-white paper */
h1, h1.hero-wordmark, .hero-wordmark, .page-hero--ink h1, .ed-cal .cal-head h1 { color: #E5E0D5 !important; }

/* Soft white for all light text: headings, tagline, body copy, nav and footer links, buttons (replaces near-white #F2EFE9 and pure #fff) */
:root { --paper: #E5E0D5; --text: #E5E0D5; --on-ink: #E5E0D5; }
.hero-tag, .hero-tag em,
.ed-intro .intro-copy h2, .ed-intro .intro-copy h2 .ac,
.ed-intro .intro-copy .lead, .ed-intro .intro-copy p,
.ed-services .svc-head p,
.ed-footer .ft-need p:not(.label), .ed-footer .ft-need .note { color: #E5E0D5 !important; }
h2, h3, h4 { color: #E5E0D5; }

/* Contact page */
.ed-contact .cal-head { margin-bottom: clamp(30px, 3.4vw, 48px); }
.ed-contact .cal-head h1 { margin: 0 0 18px; }
.ed-contact .ct-lead { max-width: 46em; margin: 0; font-size: 1.02rem; line-height: 1.7; color: var(--t2); }
.ed-contact .ct-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px, 1.6vw, 24px); }
.ed-contact .ct-card { display: flex; flex-direction: column; gap: 10px; padding: clamp(22px, 2.4vw, 34px); background: rgba(15,109,115,.14); border: 1px solid rgba(76,195,202,.28); border-top: 2px solid var(--link); text-decoration: none; color: var(--text); transition: background var(--tx), border-color var(--tx); }
.ed-contact .ct-card:hover { background: rgba(15,109,115,.28); border-color: var(--link); color: var(--text); }
.ed-contact .ct-k { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--t3); margin: 0; }
.ed-contact .ct-v { font-family: 'Spectral SC', Georgia, serif; font-weight: 500; font-size: clamp(1.25rem, 1.9vw, 1.7rem); line-height: 1.15; color: var(--text); overflow-wrap: anywhere; }
.ed-contact .ct-go { margin-top: 6px; font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .74rem; letter-spacing: .12em; text-transform: uppercase; color: var(--link); }
.ed-contact .ct-phones { margin-top: clamp(28px, 3vw, 44px); padding-top: clamp(24px, 2.6vw, 36px); border-top: 1px solid #403b37; display: flex; align-items: baseline; flex-wrap: wrap; gap: 14px clamp(24px, 4vw, 64px); }
.ed-contact .ct-nums { display: flex; flex-wrap: wrap; gap: 10px clamp(24px, 3vw, 48px); }
.ed-contact .ct-nums a { font-family: 'Spectral SC', Georgia, serif; font-weight: 500; font-size: clamp(1.5rem, 2.6vw, 2.2rem); color: var(--text); text-decoration: none; min-height: 44px; display: inline-flex; align-items: center; }
.ed-contact .ct-nums a:hover { color: var(--link); }
.ed-contact .ct-form { margin-top: clamp(32px, 3.6vw, 52px); padding: clamp(24px, 3vw, 44px); background: rgba(242,239,233,.04); border: 1px solid #403b37; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 22px 40px; }
.ed-contact .ct-form-t { margin: 0; max-width: 40em; font-size: 1rem; line-height: 1.7; color: var(--text); }
.ed-contact .ct-note { margin-top: clamp(32px, 3.6vw, 52px); max-width: 52em; }
.ed-contact .ct-note h2 { font-size: clamp(1rem, 1.3vw, 1.2rem); letter-spacing: .08em; margin: 0 0 12px; }
.ed-contact .ct-note p { margin: 0 0 12px; font-size: .9rem; line-height: 1.7; color: var(--t2); }
.ed-contact .ct-note a { color: var(--link); }
.ed-contact .ct-note .ct-sig { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; color: var(--text); margin-top: 18px; }
@media (max-width: 900px) { .ed-contact .ct-grid { grid-template-columns: 1fr; } .ed-contact .ct-form { flex-direction: column; align-items: flex-start; } }

/* About "Stand with KOI" intro paragraph: 15% smaller (1.1/1.6vw/1.3 x .85) */
.callout .lead { font-size: clamp(.935rem, 1.36vw, 1.105rem); }

/* About "Because Too Many Children..." heading: 15% smaller (1.84/4.16vw/3.92 x .85) */
h2.why-h { font-size: clamp(1.564rem, 3.536vw, 3.332rem); }

/* =====================================================================
   About page: homepage type and colors, simple flat layout (ab-* classes)
   ===================================================================== */
.ab-sec { position: relative; background: var(--bg); padding: clamp(72px, 8vw, 120px) 0; }
.ab-sec--char { background: var(--charcoal); }
.ab-top { padding-top: clamp(140px, 12vw, 190px); }
.ab-sec.tx::after { background-attachment: fixed; }
.ab-wrap { position: relative; z-index: 2; max-width: 1500px; margin: 0 auto; padding: 0 clamp(24px, 8.5vw, 175px); }
.ab-split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(32px, 6vw, 110px); align-items: start; }
.ab-split > * { min-width: 0; }

/* type: same as homepage */
.ab-h1 { margin: 0 0 clamp(18px, 2vw, 30px); font-size: clamp(2.2rem, 4.6vw, 4.2rem); line-height: .98; letter-spacing: -.02em; font-weight: 500 !important; text-wrap: balance; }
.ab-h { margin: 0 0 clamp(18px, 2vw, 30px); font-size: clamp(1.84rem, 3.52vw, 3.36rem); line-height: .98; letter-spacing: -.005em; text-wrap: balance; }
.ab-sec .eyebrow { margin: 0 0 18px; }
.ab-sec .lead { margin: 0 0 20px; font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .86rem; letter-spacing: .06em; line-height: 1.9; text-transform: uppercase; color: #E5E0D5; text-wrap: balance; max-width: 34em; }
.ab-sec p:not(.eyebrow):not(.lead):not(.ab-sig):not(.ab-quote) { margin: 0 0 14px; max-width: 36em; font-size: .855rem; line-height: 1.9; color: #E5E0D5; }
.ab-sig { margin: 26px 0 0; font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; color: var(--link); }
.ab-lines { list-style: none; margin: 28px 0; padding: 0; }
.ab-lines li { margin: 0; padding: 12px 0; border-bottom: 1px solid #403B37; font-family: 'Spectral SC', Georgia, serif; font-weight: 500; font-size: clamp(1.3rem, 2.1vw, 1.9rem); line-height: 1.1; color: #E5E0D5; }
.ab-lines li:first-child { border-top: 1px solid #403B37; }
.ab-lines li span { color: var(--link); }
.ab-quote { margin: 0 0 22px; font-family: 'Spectral SC', Georgia, serif; font-weight: 500; font-size: clamp(1.4rem, 2.3vw, 2.1rem); line-height: 1.12; color: #E5E0D5; text-wrap: balance; }
.ab-logo { display: block; width: clamp(76px, 7vw, 110px); height: auto; margin: 0 0 26px; }

/* photos: flat, same soft grade as home, no overlays or motion */
.ab-ph { position: relative; overflow: hidden; background: var(--s1); }
.ab-ph img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; filter: sepia(.1) saturate(.93) contrast(.9) brightness(.86); }
.ab-ph--43 { aspect-ratio: 4 / 3; }
.ab-ph--sq { aspect-ratio: 1 / 1; }
.ab-gal { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(12px, 1.4vw, 20px); }
.ab-gal .ab-ph--43 { grid-column: 1 / -1; }

/* Stand with KOI */
.ab-stand { text-align: center; }
.ab-stand .ab-wrap { display: flex; flex-direction: column; align-items: center; }
.ab-stand .eyebrow { justify-content: center; }
.ab-stand .lead { max-width: 40em; text-transform: none; font-family: var(--font-body, 'Montserrat', system-ui, sans-serif); letter-spacing: 0; font-size: .95rem; line-height: 1.8; }

/* pill buttons, same as home */
.ab-sec .ed-cta { border: 1px solid var(--paper); border-radius: 999px; padding: 8.5px 18.7px; min-height: 37.4px; font-size: .765rem; gap: 10px; color: var(--paper); transition: background var(--tx), color var(--tx), border-color var(--tx); }
.ab-sec .ed-cta:hover { background: var(--paper); color: var(--ink); border-color: var(--paper); }
.ab-sec .ed-cta-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
.ab-stand .ed-cta-row { justify-content: center; }

@media (max-width: 900px) {
  .ab-split { grid-template-columns: 1fr; row-gap: 36px; }
  .ab-wrap { padding: 0 var(--px, 24px); }
  .ab-top { padding-top: 130px; }
}

/* About photos: oversized inside the frame so they can drift with scroll (parallax, set by script) */
.ab-ph img { inset: auto; left: 0; top: -5%; width: 100%; height: 110%; max-width: none; will-change: translate; }

/* About photos: stronger parallax travel (image 135% of frame, drifts about 17% of frame height each way) */
.ab-ph img { top: -17.5%; height: 135%; }

/* About photos: parallax travel eased (image 120% of frame) */
.ab-ph img { top: -10%; height: 120%; }

/* About: two-section layout */
.ab-gal--3 { grid-template-columns: repeat(3, 1fr); }
.ab-glad { margin-top: clamp(40px, 4.4vw, 64px); padding-top: clamp(32px, 3.6vw, 52px); border-top: 1px solid #403B37; }
.ab-glad .ab-logo { margin-bottom: 22px; }
.ab-h3 { margin: 0 0 22px; font-size: clamp(1.5rem, 2.4vw, 2.2rem); line-height: 1; text-wrap: balance; }
@media (max-width: 900px) { .ab-gal--3 { grid-template-columns: 1fr 1fr; } .ab-gal--3 .ab-ph--sq:last-child { grid-column: 1 / -1; aspect-ratio: 4 / 3; } }
@media (min-width: 901px) { .ab-split > .ab-gal { position: sticky; top: 110px; } }

/* =====================================================================
   About: headline across the top, layered photo left, small mono copy right
   ===================================================================== */
.ab-sec { padding: clamp(70px, 8vw, 130px) 0; }
.ab-top { padding-top: clamp(130px, 11vw, 170px); }
.ab-wrap { max-width: 1700px; padding: 0 clamp(24px, 6vw, 110px); }
.ab-head { margin: 0 0 clamp(48px, 6vw, 110px); max-width: 13.5em; font-size: clamp(2.5rem, 6.4vw, 6.4rem); line-height: .94; letter-spacing: -.025em; font-weight: 500 !important; text-wrap: balance; }
.ab-sec .eyebrow { margin-bottom: clamp(18px, 2vw, 28px); }
.ab-row { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); column-gap: clamp(40px, 7vw, 130px); align-items: center; }

/* layered photos */
.ab-collage { position: relative; aspect-ratio: 1.46 / 1; margin: clamp(8px, 1.4vw, 24px) 0; }
.ab-collage .ab-ph { position: absolute; }
.ab-c-wide { left: 0; right: 0; top: 7%; bottom: 3%; }
.ab-c-tall { left: 27%; width: 35%; top: -4%; bottom: -5%; }
.ab-c-front { left: 11%; width: 71%; top: 13%; bottom: 12%; z-index: 2; }

/* copy: small mono, as the reference */
.ab-txt { min-width: 0; max-width: 36em; }
.ab-txt p:not(.eyebrow):not(.ab-sig):not(.ab-quote) { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .76rem; letter-spacing: .05em; line-height: 1.9; text-transform: uppercase; color: #E5E0D5; max-width: none; margin: 0 0 20px; }
.ab-txt p.lead { font-size: .76rem; font-weight: 600; margin: 0 0 20px; max-width: none; }
.ab-txt p strong { font-weight: 700; }
.ab-txt .ab-lines { margin: 26px 0 26px; }
.ab-txt .ab-glad .eyebrow { margin-bottom: 14px; }

@media (max-width: 900px) {
  .ab-row { grid-template-columns: 1fr; row-gap: 48px; }
  .ab-head { font-size: clamp(2.2rem, 10vw, 3.4rem); margin-bottom: 40px; }
  .ab-collage { aspect-ratio: 1.3 / 1; }
}

/* =====================================================================
   About: one simple centered page (photo, headline overlapping it, two text columns)
   ===================================================================== */
.ab-one { padding: clamp(120px, 10vw, 160px) 0 clamp(80px, 8vw, 130px); }
.ab-one .ab-wrap { max-width: 1100px; display: flex; flex-direction: column; align-items: center; text-align: left; }
.ab-fig { width: clamp(220px, 22vw, 330px); aspect-ratio: 3 / 4; flex: none; }
.ab-title { position: relative; z-index: 3; margin: clamp(-60px, -3.6vw, -30px) auto 0; max-width: 13em; text-align: center; font-size: clamp(2.1rem, 4.2vw, 3.8rem); line-height: .98; letter-spacing: -.02em; font-weight: 500 !important; text-wrap: balance; }
.ab-cols { display: grid; grid-template-columns: 1fr 1fr; column-gap: clamp(32px, 6vw, 90px); width: 100%; max-width: 940px; margin-top: clamp(48px, 6vw, 96px); align-items: start; }
.ab-col { min-width: 0; }
.ab-col .ab-lines { margin: 22px 0; }
.ab-col .ab-lines li { font-size: clamp(1.15rem, 1.7vw, 1.5rem); padding: 9px 0; }
.ab-sub { margin: 0 0 20px; font-size: clamp(1.25rem, 1.9vw, 1.7rem); line-height: 1.08; text-wrap: balance; }
.ab-gl { width: 100%; max-width: 640px; margin-top: clamp(56px, 6vw, 96px); padding-top: clamp(40px, 4.4vw, 64px); border-top: 1px solid #403B37; text-align: center; display: flex; flex-direction: column; align-items: center; }
.ab-gl .ab-logo { margin: 0 auto 22px; }
.ab-gl .eyebrow { justify-content: center; margin-bottom: 14px; }
.ab-gl p:not(.eyebrow):not(.ab-sig):not(.ab-quote) { max-width: 36em; }
.ab-gl .ab-sig { margin-top: 22px; }
.ab-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px clamp(24px, 3vw, 44px); margin: clamp(44px, 5vw, 72px) 0 0; }
.ab-links a { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; color: #E5E0D5; text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px; min-height: 44px; display: inline-flex; align-items: center; }
.ab-links a:hover { color: var(--link); }
@media (max-width: 760px) {
  .ab-cols { grid-template-columns: 1fr; row-gap: 40px; }
  .ab-fig { width: min(62%, 260px); }
}
.ab-sec p.ab-links { margin: clamp(48px, 5vw, 80px) 0 0; max-width: none; }
.ab-fig { aspect-ratio: 4 / 5; }
.ab-sec .lead.ab-intro { margin: clamp(26px, 3vw, 44px) auto 0; max-width: 34em; text-align: center; }
.ab-intro + .ab-cols { margin-top: clamp(40px, 5vw, 80px); }

/* three promise panels in a row */
.ab-panels { list-style: none; margin: clamp(48px, 5vw, 80px) 0 0; padding: 0; width: 100%; max-width: 940px; display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(12px, 1.6vw, 24px); }
.ab-panels li { margin: 0; padding: clamp(26px, 3vw, 44px) 16px; text-align: center; background: rgba(15,109,115,.14); border: 1px solid rgba(76,195,202,.28); border-top: 2px solid var(--link); display: flex; flex-direction: column; align-items: center; gap: 8px; }
.ab-no { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .78rem; letter-spacing: .24em; text-transform: uppercase; color: #E5E0D5; }
.ab-yes { font-family: 'Spectral SC', Georgia, serif; font-weight: 500; font-size: clamp(1.4rem, 2.4vw, 2.2rem); line-height: 1.05; color: var(--link); }
@media (max-width: 760px) { .ab-panels { grid-template-columns: 1fr; } }
.ab-fig { width: clamp(300px, 38vw, 580px); aspect-ratio: 3 / 2; }
@media (max-width: 760px) { .ab-fig { width: 100%; max-width: 420px; } }

/* promise panels: smaller, all Spectral SC */
.ab-panels { max-width: 640px; gap: clamp(10px, 1.2vw, 16px); margin-top: clamp(40px, 4vw, 64px); }
.ab-panels li { padding: clamp(14px, 1.6vw, 22px) 12px; gap: 2px; }
.ab-no { font-family: 'Spectral SC', Georgia, serif; font-weight: 400; font-size: clamp(.85rem, 1.1vw, 1rem); letter-spacing: .12em; text-transform: none; color: #E5E0D5; }
.ab-yes { font-size: clamp(1.05rem, 1.6vw, 1.4rem); }

/* right column ("Because Too Many Children...") uses the paragraph font throughout */
.ab-col h2.ab-sub { font-family: inherit !important; font-weight: 600 !important; font-synthesis: weight; text-transform: none; font-size: .855rem; line-height: 1.9; letter-spacing: 0; margin: 0 0 14px; color: #E5E0D5; }
.ab-col p.lead { font-family: inherit; font-size: .855rem; letter-spacing: 0; line-height: 1.9; text-transform: none; font-weight: 400; max-width: 36em; margin: 0 0 14px; }
.ab-col p.lead, .ab-col h2.ab-sub { text-wrap: wrap; }

/* promise panels: all text teal, one size, Spectral SC Regular */
.ab-panels .ab-no, .ab-panels .ab-yes { font-family: 'Spectral SC', Georgia, serif; font-weight: 400 !important; font-size: clamp(1.05rem, 1.6vw, 1.4rem); letter-spacing: 0; line-height: 1.1; text-transform: none; color: var(--link); }

/* even paragraphs: balanced line lengths, same measure and spacing in both columns */
.ab-col p, .ab-col p.lead, .ab-gl p:not(.eyebrow):not(.ab-sig) { text-wrap: balance; }
.ab-col p, .ab-col p.lead { max-width: none; margin: 0 0 18px; }
.ab-col h2.ab-sub { margin: 0 0 18px; text-wrap: balance; }
/* even edges: justified with hyphenation, no short last lines */
.ab-col p, .ab-col p.lead, .ab-col h2.ab-sub { text-wrap: pretty; text-align: justify; text-align-last: left; hyphens: auto; -webkit-hyphens: auto; }
/* final: left-aligned, no short last lines (justify left uneven word gaps) */
.ab-col p, .ab-col p.lead, .ab-col h2.ab-sub { text-align: left; hyphens: manual; -webkit-hyphens: manual; text-wrap: pretty; }

/* top photo: crop in from the bottom so less sky shows */
.ab-fig img { object-position: 52% 100% !important; scale: 1.28; transform-origin: 50% 100%; }

/* bottom links as pill buttons */
.ab-links { gap: 12px; }
.ab-links a { text-decoration: none; border: 1px solid #E5E0D5; border-radius: 999px; padding: 10px 24px; min-height: 40px; font-size: .74rem; letter-spacing: .14em; transition: background var(--tx), color var(--tx), border-color var(--tx); }
.ab-links a:hover { background: #E5E0D5; color: var(--ink); border-color: #E5E0D5; }
.ab-links a:first-child { background: var(--primary); border-color: var(--primary); color: #E5E0D5; }
.ab-links a:first-child:hover { background: var(--link); border-color: var(--link); color: var(--ink); }
.ab-sec p.ab-links { margin: clamp(48px, 5vw, 80px) 0 0 !important; max-width: none; }

/* top photo: no filters */
.ab-fig img { filter: none; }

/* About: one body-text style everywhere, nothing bold */
.ab-sec p, .ab-sec strong, .ab-sec b, .ab-col h2.ab-sub, .ab-sec p.lead { font-weight: 400 !important; }
.ab-sec p.lead.ab-intro, .ab-sec .ab-col p.lead, .ab-sec p.ab-sig { font-family: inherit; font-size: .855rem; line-height: 1.9; letter-spacing: 0; text-transform: none; color: #E5E0D5; }
.ab-sec p.ab-sig { color: var(--link); margin-top: 22px; }
.ab-sec .ab-col h2.ab-sub { font-family: inherit !important; font-size: .855rem; line-height: 1.9; letter-spacing: 0; text-transform: none; }
.ab-sec p.lead.ab-intro { max-width: 40em; text-wrap: pretty; }

/* top photo: show most of the frame (no zoom), only a little overscan for parallax */
.ab-fig { aspect-ratio: 8 / 5; }
.ab-fig img { scale: 1; top: -6%; height: 112%; object-position: 50% 88% !important; }
.ab-title { margin-top: clamp(-30px, -1.6vw, -14px); }

/* top photo: trim the right edge a little (scaled from the left) */
.ab-fig img { scale: 1.1; transform-origin: 0% 85%; }

/* top photo: lower contrast + subtle dark filter */
.ab-fig img { filter: contrast(.82) brightness(.84); }
.ab-fig::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: rgba(16,13,10,.16); }

/* intro line under the headline: back to Roboto Mono, all caps */
.ab-sec p.lead.ab-intro { font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-size: .86rem; letter-spacing: .06em; line-height: 1.9; text-transform: uppercase; text-wrap: balance; max-width: 34em; }

/* top photo: new image, full frame (no zoom or edge trim) */
.ab-fig img { scale: 1; transform-origin: 50% 50%; object-position: 50% 50% !important; }

/* About: bottom photo row */
.ab-tri { display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(8px,1.2vw,16px); width:100%; max-width:940px; margin:clamp(48px,5vw,80px) auto 0; }
.ab-tri .ab-ph { position:relative; overflow:hidden; aspect-ratio:4/5; margin:0; }
.ab-tri .ab-ph img { position:absolute; left:0; top:-6%; width:100%; height:112%; object-fit:cover; display:block; filter:contrast(.92) brightness(.98); }
.ab-tri .ab-nb img { scale:1.22; transform-origin:50% 0%; object-position:50% 0%; }
.ab-tri .ab-ph::after { content:""; position:absolute; inset:0; z-index:1; pointer-events:none; background:rgba(16,13,10,.06); }
@media (max-width:640px){ .ab-tri { grid-template-columns:1fr 1fr; } .ab-tri .ab-ph:first-child { grid-column:1 / -1; aspect-ratio:4/3; } .ab-tri .ab-ph { aspect-ratio:1/1; } }

/* About: bottom portion, editorial layout */
.ab-sec .ab-tri { max-width:none; width:100%; gap:clamp(14px,3.4vw,58px); margin-top:clamp(64px,7vw,110px); }
.ab-sec .ab-gl { max-width:none; width:100%; display:grid; grid-template-columns:5fr 6fr; column-gap:clamp(32px,7vw,120px); align-items:center; text-align:left; border-top:0; padding-top:0; margin-top:clamp(72px,9vw,150px); }
.ab-gl-fig { position:relative; aspect-ratio:4/5; width:82%; margin-left:6%; background:#2E2B29; border:1px solid #403B37; display:flex; align-items:center; justify-content:center; }
.ab-gl-fig .ab-logo { width:56%; max-width:240px; margin:0; }
.ab-vert { position:absolute; left:-44px; top:50%; writing-mode:vertical-rl; transform:translateY(-50%) rotate(180deg); font-family:'Roboto Mono',ui-monospace,Menlo,Consolas,monospace; font-size:.7rem; letter-spacing:.2em; text-transform:uppercase; color:var(--link); white-space:nowrap; }
.ab-gl-txt { text-align:left; }
.ab-sec .ab-gl .eyebrow { justify-content:flex-start; margin-bottom:18px; }
.ab-sec .ab-gl .ab-h3 { font-size:clamp(2rem,4vw,3.6rem); line-height:1.02; margin:0 0 clamp(28px,3vw,48px); text-align:left; text-wrap:balance; }
.ab-sec .ab-gl .ab-quote { font-size:clamp(1.1rem,1.5vw,1.4rem); line-height:1.3; text-align:left; margin:0 0 22px; max-width:30em; }
.ab-sec .ab-gl p:not(.eyebrow):not(.ab-sig):not(.ab-quote) { max-width:34em; text-align:left; }
.ab-sec .ab-gl p.ab-sig { text-align:right; margin-top:clamp(28px,3vw,48px); }
@media (max-width:760px){
  .ab-sec .ab-gl { grid-template-columns:1fr; row-gap:36px; margin-top:64px; }
  .ab-gl-fig { width:100%; margin:0; aspect-ratio:1/1; }
  .ab-vert { display:none; }
  .ab-sec .ab-gl p.ab-sig { text-align:left; }
}

/* About: Gladiators sentence as the section header */
.ab-sec .ab-gl .ab-h3 { font-size:clamp(1.7rem,3vw,2.7rem); line-height:1.1; max-width:15em; }

/* About: signature line in Roboto Mono caps */
.ab-sec .ab-gl p.ab-sig { font-family:'Roboto Mono',ui-monospace,Menlo,Consolas,monospace !important; text-transform:uppercase !important; letter-spacing:.12em !important; font-size:.78rem !important; line-height:1.7 !important; }

/* About: restore original Gladiators header size */
.ab-sec .ab-gl .ab-h3 { font-size:clamp(2rem,4vw,3.6rem); line-height:1.02; max-width:none; }

/* About: Gladiators header 15% smaller */
.ab-sec .ab-gl .ab-h3 { font-size:clamp(1.7rem,3.4vw,3.06rem); }

/* About: Gladiators header always two lines */
.ab-sec .ab-gl .ab-h3 { text-wrap:nowrap; white-space:nowrap; }
@media (max-width:360px){ .ab-sec .ab-gl .ab-h3 { font-size:1.5rem; } }

/* About: helmet illustration behind the G in "Standing" */
.ab-sec .ab-gl .ab-h3 { isolation:isolate; }
.ab-h3 .ab-g { position:relative; display:inline-block; }
.ab-h3 .ab-g img { position:absolute; z-index:-1; left:50%; top:50%; width:4.2em; height:auto; max-width:none; transform:translate(-50%,-50%); pointer-events:none; opacity:.9; }

/* About: helmet nudged down and right */
.ab-h3 .ab-g img { left:calc(50% + .7em); top:calc(50% + .8em); }

/* About: helmet nudged down and right again */
.ab-h3 .ab-g img { left:calc(50% + 1.4em); top:calc(50% + 1.6em); }

/* About: helmet more visible */
.ab-h3 .ab-g img { opacity:1; filter:brightness(1.9) saturate(1.35) contrast(1.05); }

/* About: helmet moved right */
.ab-h3 .ab-g img { left:calc(50% + 2.8em); }

/* About: signature line matches the intro line size */
.ab-sec .ab-gl p.ab-sig { font-size:.86rem !important; letter-spacing:.06em !important; line-height:1.9 !important; }

/* About: helmet a little smaller */
.ab-h3 .ab-g img { width:3.4em; }

/* About: helmet left a pinch */
.ab-h3 .ab-g img { left:calc(50% + 2.3em); }

/* About: photo moved into the KOI / Gladiators panel; row is now two photos */
.ab-sec .ab-tri { --tg:clamp(14px,3.4vw,58px); gap:var(--tg); grid-template-columns:repeat(2, calc((100% - 2*var(--tg)) / 3)); justify-content:center; }
.ab-gl-fig { background:none; border:0; display:block; }
.ab-gl-fig .ab-gl-ph { position:absolute; inset:0; margin:0; }
.ab-gl-fig .ab-gl-ph img { position:absolute; left:0; top:-6%; width:100%; height:112%; max-width:none; object-fit:cover; filter:contrast(.92) brightness(.98); }
.ab-gl-fig .ab-gl-ph::after { content:""; position:absolute; inset:0; z-index:1; pointer-events:none; background:rgba(16,13,10,.06); }
@media (max-width:640px){ .ab-sec .ab-tri { grid-template-columns:1fr 1fr; } .ab-tri .ab-ph:first-child { grid-column:auto; aspect-ratio:4/5; } .ab-tri .ab-ph { aspect-ratio:4/5; } }
@media (max-width:760px){ .ab-gl-fig { aspect-ratio:4/5; } }

/* About: helmet left a little, a little bigger */
.ab-h3 .ab-g img { left:calc(50% + 1.8em); width:4em; }

/* Family of Bikers photo: filter more subtle again (roughly half of the current strength) */
.ed-intro .intro-img-l .ph img { filter: sepia(.04) saturate(.98) contrast(.96) brightness(.94) !important; }
.ed-intro .intro-img-l .ph::before { background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 50%, rgba(18,12,6,.12) 100%), linear-gradient(rgba(96,80,60,.03), rgba(70,58,44,.03)); }
.ed-intro .intro-img-l::after { opacity: .2; }

/* Family of Bikers photo: show more sky (image starts at the very top of its frame; parallax only slides it upward) */
.ed-intro .intro-img-l .ph img { top: 0 !important; height: 105% !important; object-position: 53.5% 0 !important; }

/* Family of Bikers photo: parallax more subtle, sky less dimmed */
.ed-intro .intro-img-l .ph img { height: 102% !important; }
@media (min-width: 901px) {
  .ed-intro .intro-img-l .ph::after { background: linear-gradient(to bottom, rgba(14,12,10,.28) 0%, rgba(14,12,10,0) 34%); }
}

/* Family of Bikers photo: a little more parallax; foreground (road/riders) eased back with a soft bottom fade */
.ed-intro .intro-img-l .ph img { height: 104% !important; }
.ed-intro .intro-img-l .ph::before { background: linear-gradient(to bottom, rgba(14,12,10,0) 52%, rgba(14,12,10,.42) 100%), radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 50%, rgba(18,12,6,.12) 100%), linear-gradient(rgba(96,80,60,.03), rgba(70,58,44,.03)); }

/* Family of Bikers photo: crop some road off the bottom (image scaled up from the top; parallax travel is capped in the page script) */
.ed-intro .intro-img-l .ph img { height: 122% !important; object-position: 56% 0 !important; }
.ed-intro .intro-img-l .ph::before { background: linear-gradient(to bottom, rgba(14,12,10,0) 70%, rgba(14,12,10,.3) 100%), radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 50%, rgba(18,12,6,.12) 100%), linear-gradient(rgba(96,80,60,.03), rgba(70,58,44,.03)); }

/* Homepage h1 (hero wordmark) 10% smaller */
h1.hero-wordmark, .hero-wordmark { font-size: clamp(2.492rem, 8.05vw, 7.666rem); }

/* Hero image: a little sharper (less blur, a touch more contrast, lighter grain) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.1) saturate(.95) contrast(.88) brightness(.8) blur(.3px) !important; }
.ed-hero::after, .ed-hero.tx::after { opacity: .42 !important; }

/* Hero fills the whole first screen: header + hero = one viewport tall */
.ed-hero { min-height: max(560px, calc(100vh - 60px)); min-height: max(560px, calc(100svh - 60px)); }
@media (max-width: 760px) { .ed-hero { min-height: max(560px, calc(100vh - 56px)); min-height: max(560px, calc(100svh - 56px)); } }
@media (max-width: 760px) { .ed-hero { min-height: max(560px, calc(100vh - 56px)) !important; min-height: max(560px, calc(100svh - 56px)) !important; } }

/* Hero image: a little less dark */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: sepia(.1) saturate(.95) contrast(.88) brightness(.92) blur(.3px) !important; }
.ed-hero::before { background: radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 42%, rgba(18,12,6,.24) 100%), linear-gradient(rgba(20,16,12,.07), rgba(20,16,12,.1)), linear-gradient(rgba(96,80,60,.05), rgba(70,58,44,.05)) !important; }

/* Hero image: photo is pre-graded (faded, lifted blacks, warm, grain baked in) so the page adds no extra darkening */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; }
.ed-hero::before { background: radial-gradient(ellipse at 50% 50%, rgba(18,14,10,0) 55%, rgba(18,14,10,.10) 100%), linear-gradient(rgba(60,48,36,.10), rgba(60,48,36,.14)) !important; }
.ed-hero::after, .ed-hero.tx::after { opacity: .12 !important; }

/* Hero image: no filters at all (original photo, no tint, vignette or grain overlays) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; mix-blend-mode: normal !important; opacity-filter: none; }
.ed-hero::before, .ed-hero::after, .ed-hero.tx::after { content: none !important; display: none !important; background: none !important; }

/* About page: no filters or tint overlays on any photo */
.ab-sec .ab-ph img, .ab-sec .ab-fig img, .ab-tri .ab-ph img, .ab-gl-fig .ab-gl-ph img { filter: none !important; }
.ab-sec .ab-ph::before, .ab-sec .ab-ph::after, .ab-fig::before, .ab-fig::after, .ab-tri .ab-ph::before, .ab-tri .ab-ph::after, .ab-gl-fig .ab-gl-ph::before, .ab-gl-fig .ab-gl-ph::after { content: none !important; display: none !important; background: none !important; }

/* About: left bottom photo (Princess Day group) shown in full, uncropped, at its own proportions */
.ab-sec .ab-tri { align-items: center; }
.ab-tri .ab-ph.ab-nb { aspect-ratio: 1600 / 1462; }
.ab-tri .ab-ph.ab-nb img { scale: none !important; top: 0 !important; height: 100% !important; object-fit: cover; object-position: 50% 50%; }
@media (max-width:640px){ .ab-tri .ab-ph.ab-nb { aspect-ratio: 1600 / 1462; } .ab-tri .ab-ph { aspect-ratio: 4/5; } .ab-tri .ab-ph.ab-nb { aspect-ratio: 1600 / 1462; } }

/* About: Princess Day photo much bigger (about two thirds of the row) */
.ab-sec .ab-tri { grid-template-columns: 2.1fr 1fr; justify-content: stretch; }
@media (max-width:640px){ .ab-sec .ab-tri { grid-template-columns: 1fr; } .ab-tri .ab-ph:not(.ab-nb) { width: 72%; justify-self: center; } }

/* About: bottom row = face painting | Princess Day (centered, largest) | tent */
.ab-sec .ab-tri { grid-template-columns: 1fr 2.3fr 1fr; justify-content: stretch; align-items: center; }
.ab-tri .ab-ph.ab-pt { aspect-ratio: 800 / 1200; }
.ab-tri .ab-ph.ab-pt img { scale: none !important; top: 0 !important; height: 100% !important; object-fit: cover; }
@media (max-width:640px){
  .ab-sec .ab-tri { grid-template-columns: 1fr 1fr; }
  .ab-tri .ab-ph.ab-nb { grid-column: 1 / -1; order: -1; }
  .ab-tri .ab-ph:not(.ab-nb) { width: 100%; justify-self: stretch; }
  .ab-tri .ab-ph.ab-pt { aspect-ratio: 800 / 1200; }
}

/* About: Why Gladiators photo shown in full (4:3, uncropped) */
@media (min-width:761px){ .ab-sec .ab-gl { grid-template-columns: 6fr 5fr; } .ab-gl-fig { aspect-ratio: 4 / 3; width: 94%; margin-left: 6%; } }
.ab-gl-fig .ab-gl-ph img { top: 0 !important; height: 100% !important; object-fit: cover; scale: none !important; transform: none !important; }
@media (max-width:760px){ .ab-gl-fig { aspect-ratio: 4 / 3; width: 100%; margin: 0; } }

/* About: no vertical label beside the Gladiators photo */
.ab-vert { display: none !important; }
@media (min-width:761px){ .ab-gl-fig { width: 100%; margin-left: 0; } }

/* About: Why Gladiators photo bigger (bleeds left into the page margin) */
@media (min-width:761px){ .ab-gl-fig { width: calc(100% + clamp(0px, calc((100vw - 1000px) * .4), 180px)); margin-left: calc(-1 * clamp(0px, calc((100vw - 1000px) * .4), 180px)); } }

/* About: Why Gladiators photo, light crop (4:3 to 3:2, trims sky and foreground) */
.ab-gl-fig { aspect-ratio: 3 / 2 !important; }
.ab-gl-fig .ab-gl-ph img { object-fit: cover; object-position: 50% 62%; }

/* About: Why Gladiators photo, trim a little off the left edge (zoom 8%, anchored right) */
.ab-gl-fig .ab-gl-ph { overflow: hidden; }
.ab-gl-fig .ab-gl-ph img { left: -8% !important; top: -5% !important; width: 108% !important; height: 108% !important; }

/* About: Why Gladiators photo, trim a tad off the right too */
.ab-gl-fig .ab-gl-ph img { left: -8% !important; top: -6% !important; width: 112% !important; height: 112% !important; }

/* About: side photos match the height of the middle (Princess Day) photo */
@media (min-width:641px){
  .ab-sec .ab-tri { align-items: stretch; }
  .ab-tri .ab-ph:not(.ab-nb) { aspect-ratio: auto !important; height: 100%; position: relative; overflow: hidden; }
  .ab-tri .ab-ph:not(.ab-nb) img { position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover; top: 0 !important; left: 0 !important; }
}

/* About: side photos wider (row bleeds into the page margin so the middle photo keeps its size) */
@media (min-width:641px){
  .ab-sec .ab-tri { grid-template-columns: 1.5fr 2.3fr 1.5fr; width: calc(100% + 2 * clamp(0px, calc((100vw - 1000px) * .22), 96px)); margin-left: calc(-1 * clamp(0px, calc((100vw - 1000px) * .22), 96px)); max-width: none; }
}

/* About: Why Gladiators photo a bit smaller (about 15%) */
@media (min-width:761px){ .ab-gl-fig { width: calc(100% + clamp(0px, calc((100vw - 1000px) * .18), 80px)); margin-left: calc(-1 * clamp(0px, calc((100vw - 1000px) * .18), 80px)); } }

/* About: parallax back on every photo (images 8% oversized, drift is set by the page script) */
.ab-sec .ab-tri .ab-ph.ab-ph img { position: absolute !important; inset: auto !important; left: -4% !important; top: -4% !important; width: 108% !important; height: 108% !important; max-width: none; object-fit: cover; will-change: translate; }
.ab-sec .ab-gl-fig .ab-gl-ph.ab-ph img { will-change: translate; }

/* About: swing photo left edge lines up with the left photo in the row above; helmet a bit further right */
@media (min-width:761px){ .ab-sec .ab-gl .ab-gl-fig { margin-left: calc(-1 * clamp(0px, calc((100vw - 1000px) * .22), 96px)); } }
.ab-h3 .ab-g img { left: calc(50% + 3.2em); }

/* About: swing photo a little larger, left edge unchanged */
@media (min-width:761px){ .ab-sec .ab-gl .ab-gl-fig { width: calc(100% + clamp(0px, calc((100vw - 1000px) * .3), 135px)); } }

/* About: swing photo nudged up */
@media (min-width:761px){ .ab-sec .ab-gl .ab-gl-fig { top: -22px; } }

/* You're never alone: visible background parallax on every page (about 12% of the section height of travel each way) */
.ed-footer .ft-need::before { top: -13%; bottom: -13%; }

/* About: swing photo a little taller (3:2 to 7:5) */
.ab-sec .ab-gl .ab-gl-fig { aspect-ratio: 7 / 5 !important; }

/* What We Do anchor: land below the fixed top bar */
#what-we-do { scroll-margin-top: 56px; }

/* Hero: subtle dark filter */
.ed-hero .hero-slide { filter: brightness(.82) !important; }

/* Hero: subtle dark filter (matches the selectors of the earlier hero filter rules so it wins) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: brightness(.78) !important; }

/* Hero: the photo is color graded in the file itself, so no extra darkening filter */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; }

/* Hero: dark brown filter over the photo */
.ed-hero::before { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; mix-blend-mode: normal !important; background: linear-gradient(rgba(52,32,18,.46), rgba(52,32,18,.46)) !important; }

/* Hero: filter less warm (neutral dark brown) */
.ed-hero::before { background: linear-gradient(rgba(38,33,30,.46), rgba(38,33,30,.46)) !important; }

/* Hero: filter neutral (near charcoal, no warm cast) */
.ed-hero::before { background: linear-gradient(rgba(28,28,30,.46), rgba(28,28,30,.46)) !important; }

/* Hero: filter cooler (slate blue-gray) */
.ed-hero::before { background: linear-gradient(rgba(22,30,42,.48), rgba(22,30,42,.48)) !important; }

/* Hero: filter a little lighter */
.ed-hero::before { background: linear-gradient(rgba(22,30,42,.36), rgba(22,30,42,.36)) !important; }

/* Site photos: one very subtle shared grade so they sit with the hero (slightly muted, slightly softer contrast, a touch deeper) */
.ed-intro .intro-img-l .ph img { filter: saturate(.93) contrast(.96) brightness(.94) !important; }
.ed-services .panel .ph img { filter: saturate(.93) contrast(.96) brightness(.94); }
.ed-services .panel:hover .ph img, .ed-services .panel:focus-visible .ph img { filter: saturate(.98) contrast(.99) brightness(.98); }
.ab-sec .ab-ph.ab-ph img { filter: saturate(.93) contrast(.96) brightness(.94) !important; }
.ed-footer .ft-need::before { filter: saturate(.93) contrast(.96) brightness(.94); }

/* Site photos: shared grade a little stronger */
.ed-intro .intro-img-l .ph img { filter: saturate(.86) contrast(.93) brightness(.90) !important; }
.ed-services .panel .ph img { filter: saturate(.86) contrast(.93) brightness(.90); }
.ed-services .panel:hover .ph img, .ed-services .panel:focus-visible .ph img { filter: saturate(.94) contrast(.97) brightness(.96); }
.ab-sec .ab-ph.ab-ph img { filter: saturate(.86) contrast(.93) brightness(.90) !important; }
.ed-footer .ft-need::before { filter: saturate(.86) contrast(.93) brightness(.90); }

/* Photos (everything except the hero): no filters, tints, vignettes or grain overlays */
.ed-intro .intro-img-l .ph img, .ed-services .panel .ph img, .ed-services .panel:hover .ph img, .ed-services .panel:focus-visible .ph img, .ab-sec .ab-ph.ab-ph img { filter: none !important; }
.ed-footer .ft-need::before { filter: none; }
.ed-intro .intro-img-l .ph::before, .ed-intro .intro-img-l::after, .ed-services .panel .ph::before, .ed-services .panel::before { content: none !important; display: none !important; background: none !important; }

/* Grain: keep the section texture behind the content so no photo gets grain on top of it */
.tx::after, .ed-intro.tx::after, .ed-footer.tx::after, .ab-sec.tx::after, .ed-cal.tx::after, .ed-services.tx::after { z-index: -1 !important; }

/* Site photos: same slate tint as the hero (rgba(22,30,42,.36)) */
.ab-sec .ab-ph.ab-ph::before, .ed-intro .intro-img-l .ph::before, .ed-services .panel .ph::before { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(rgba(22,30,42,.36), rgba(22,30,42,.36)) !important; mix-blend-mode: normal; }
.ed-footer .ft-need::before { background: linear-gradient(rgba(22,30,42,.36), rgba(22,30,42,.36)), url("../images/bg-need-corner.jpg") center center / cover no-repeat !important; }

/* What We Do photos: add warmth (warm filter on the photo, amber wash over a lighter slate tint) */
.ed-services .panel .ph img, .ed-services .panel:hover .ph img, .ed-services .panel:focus-visible .ph img { filter: sepia(.22) saturate(1.1) !important; }
.ed-services .panel .ph::before { background: linear-gradient(rgba(204,132,72,.2), rgba(204,132,72,.2)), linear-gradient(rgba(22,30,42,.26), rgba(22,30,42,.26)) !important; }

/* What We Do photos: warmth eased back */
.ed-services .panel .ph img, .ed-services .panel:hover .ph img, .ed-services .panel:focus-visible .ph img { filter: sepia(.1) saturate(1.04) !important; }
.ed-services .panel .ph::before { background: linear-gradient(rgba(204,132,72,.09), rgba(204,132,72,.09)), linear-gradient(rgba(22,30,42,.3), rgba(22,30,42,.3)) !important; }

/* Homepage intro (2nd section) photo: tint more subtle */
.ed-intro .intro-img-l .ph::before { background: linear-gradient(rgba(22,30,42,.14), rgba(22,30,42,.14)) !important; }

/* Homepage intro (2nd section) photo: dark fade across the top */
.ed-intro .intro-img-l .ph::before { background: linear-gradient(to bottom, rgba(14,12,10,.6) 0%, rgba(14,12,10,.3) 22%, rgba(14,12,10,0) 48%), linear-gradient(rgba(22,30,42,.14), rgba(22,30,42,.14)) !important; }

/* Homepage intro (2nd section) photo: top fade more subtle */
.ed-intro .intro-img-l .ph::before { background: linear-gradient(to bottom, rgba(14,12,10,.3) 0%, rgba(14,12,10,.14) 22%, rgba(14,12,10,0) 42%), linear-gradient(rgba(22,30,42,.14), rgba(22,30,42,.14)) !important; }

/* About photos: same treatment as the What We Do photos on the homepage */
.ab-sec .ab-ph.ab-ph img { filter: sepia(.1) saturate(1.04) !important; }
.ab-sec .ab-ph.ab-ph::before { background: linear-gradient(rgba(204,132,72,.09), rgba(204,132,72,.09)), linear-gradient(rgba(22,30,42,.3), rgba(22,30,42,.3)) !important; }

/* Why Gladiators photo: filter stronger */
.ab-sec .ab-gl-ph.ab-ph img { filter: sepia(.18) saturate(1.0) contrast(.96) !important; }
.ab-sec .ab-gl-ph.ab-ph::before { background: linear-gradient(rgba(204,132,72,.12), rgba(204,132,72,.12)), linear-gradient(rgba(22,30,42,.46), rgba(22,30,42,.46)) !important; }

/* Why Gladiators photo: filter more subtle */
.ab-sec .ab-gl-ph.ab-ph img { filter: sepia(.08) saturate(1.02) !important; }
.ab-sec .ab-gl-ph.ab-ph::before { background: linear-gradient(rgba(204,132,72,.07), rgba(204,132,72,.07)), linear-gradient(rgba(22,30,42,.2), rgba(22,30,42,.2)) !important; }

/* Events calendar: hidden event placeholders stay hidden; highlight today */
.ed-cal .cal-grid .ev[hidden] { display: none; }
.ed-cal .cal-grid .d.today { outline: 1px solid var(--link); outline-offset: -1px; }
.ed-cal .cal-grid .d.today .n { color: var(--link); font-weight: 600; }
.ed-cal .cal-none { margin: 0; padding: clamp(18px, 2vw, 28px) 0; border-top: 1px solid #332f2b; border-bottom: 1px solid #332f2b; font-size: .9rem; line-height: 1.7; color: var(--t2); }

/* Get Help page: all sans-serif body text the same size as the emergency note (.9rem) */
.ed-gethelp .ct-lead, .ed-gethelp .ct-form-t, .ed-gethelp .ct-note p { font-size: .9rem; line-height: 1.7; }

/* Contact: unify body sans size */
.ed-contact .ct-lead, .ed-contact .ct-form-t, .ed-contact .ct-note p:not(.ct-sig) { font-size:.9rem; line-height:1.7; }

/* FAQ page */
.ed-faq .fq-group { display: grid; grid-template-columns: 1fr; gap: 14px; margin-top: clamp(34px, 4vw, 56px); }
@media (min-width: 900px) { .ed-faq .fq-group { grid-template-columns: minmax(200px, 280px) 1fr; gap: clamp(28px, 4vw, 64px); align-items: start; } }
.ed-faq .fq-gh { margin: 0; font-family: 'Spectral SC', Georgia, serif; font-weight: 500; font-size: clamp(1.3rem, 1.9vw, 1.7rem); line-height: 1.15; color: var(--text); padding-top: 18px; }
.ed-faq .fq-list { min-width: 0; }
.ed-faq .fq-item { border-top: 1px solid #403b37; }
.ed-faq .fq-item:last-child { border-bottom: 1px solid #403b37; }
.ed-faq .fq-item summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 44px; padding: 18px 0; }
.ed-faq .fq-item summary::-webkit-details-marker { display: none; }
.ed-faq .fq-q { font-size: 1rem; font-weight: 500; line-height: 1.5; color: var(--text); transition: color .2s ease; }
.ed-faq .fq-item summary:hover .fq-q, .ed-faq .fq-item[open] .fq-q { color: var(--link); }
.ed-faq .fq-item summary:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; }
.ed-faq .fq-ic { position: relative; flex: 0 0 18px; width: 18px; height: 18px; }
.ed-faq .fq-ic::before, .ed-faq .fq-ic::after { content: ""; position: absolute; left: 50%; top: 50%; width: 14px; height: 1.5px; background: var(--link); transform: translate(-50%, -50%); transition: transform .25s ease, opacity .25s ease; }
.ed-faq .fq-ic::after { transform: translate(-50%, -50%) rotate(90deg); }
.ed-faq .fq-item[open] .fq-ic::after { transform: translate(-50%, -50%) rotate(0deg); opacity: 0; }
.ed-faq .fq-a { padding: 0 38px 22px 0; max-width: 46em; }
.ed-faq .fq-a p { margin: 0; font-size: .9rem; line-height: 1.7; color: var(--t2); }
.ed-faq .fq-a a { color: var(--link); }
.ed-faq .ct-note { margin-top: clamp(40px, 4.6vw, 64px); }
@media (prefers-reduced-motion: reduce) { .ed-faq .fq-q, .ed-faq .fq-ic::before, .ed-faq .fq-ic::after { transition: none; } }

/* Hero: darker overlay */
.ed-hero::before { background: linear-gradient(rgba(16,22,32,.54), rgba(16,22,32,.54)) !important; }
.ed-hero::before { background: linear-gradient(rgba(16,22,32,.44), rgba(16,22,32,.44)) !important; }

/* Top nav: slightly lighter */
.ed-header { background: #201d1a !important; }
.ed-badge { background: var(--ink) !important; }

/* Top nav: grain texture (behind links and banner) */
.ed-header::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background-image: var(--grain); background-size: 320px 320px; opacity: .2; }

/* Top nav: match 2nd section (color + grain) */
.ed-header { background: var(--bg) !important; }
.ed-header::after { background-attachment: fixed; }

/* Hero tagline: wider tracking */
.ed-hero .hero-tag, .ed-hero .hero-tag em { letter-spacing: .14em; }
.ed-hero .hero-tag, .ed-hero .hero-tag em { font-weight: 400 !important; font-synthesis: none; text-shadow: none !important; -webkit-text-stroke: 0; }

/* Hero tagline: no black box */
.ed-hero .hero-tag { background: transparent !important; }

/* Hero tagline: larger */
.ed-hero .hero-tag { font-size: clamp(1.03rem, 1.75vw, 1.55rem); }
@media (max-width: 500px) { .ed-hero .hero-tag { font-size: clamp(.67rem, 3.4vw, .9rem); white-space: nowrap; } }

/* Hero tagline: up a pinch */
.ed-hero .hero-tag { translate: 0 clamp(-52px, -3.6vw, -28px); }

/* Hero tagline: tracking a little tighter */
.ed-hero .hero-tag, .ed-hero .hero-tag em { letter-spacing: .1em; }

/* Hero tagline: white outline rectangle */
.ed-hero .hero-tag { border: 1px solid #fff; box-sizing: border-box; }

/* Hero tagline: slightly smaller */
.ed-hero .hero-tag { font-size: clamp(.92rem, 1.55vw, 1.38rem); }
@media (max-width: 500px) { .ed-hero .hero-tag { font-size: clamp(.62rem, 3.1vw, .84rem); } }
.ed-hero .hero-tag { font-size: clamp(.82rem, 1.36vw, 1.22rem); }
@media (max-width: 500px) { .ed-hero .hero-tag { font-size: clamp(.58rem, 2.85vw, .76rem); } }

/* Hero: no filters or overlays on the photo */
.ed-hero::before, .ed-hero::after, .ed-hero.tx::after { content: none !important; display: none !important; background: none !important; }
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; mix-blend-mode: normal !important; opacity: 1; }

/* Hero: dark warm overlay */
.ed-hero::before { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1; pointer-events: none; mix-blend-mode: normal !important; background: linear-gradient(rgba(44,28,16,.46), rgba(44,28,16,.46)) !important; }

/* Hero: lighter warm overlay + lower contrast */
.ed-hero::before { background: linear-gradient(rgba(44,28,16,.32), rgba(44,28,16,.32)) !important; }
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: contrast(.82) !important; }

/* Hero lockup: down a pinch */
.ed-hero .hero-lockup { translate: 0 clamp(8px, 1vw, 16px); }
.ed-hero .hero-lockup { translate: 0 clamp(16px, 2vw, 32px); }

/* Hero: sunlight glow */
.ed-hero::after, .ed-hero.tx::after { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1 !important; pointer-events: none; mix-blend-mode: screen; opacity: 1 !important;
  background:
    radial-gradient(ellipse 46% 52% at 80% 14%, rgba(255,214,150,.62) 0%, rgba(255,184,100,.30) 38%, rgba(255,160,70,0) 72%),
    radial-gradient(ellipse 70% 40% at 78% 10%, rgba(255,196,120,.16) 0%, rgba(255,196,120,0) 70%),
    linear-gradient(200deg, rgba(255,190,110,.14) 0%, rgba(255,190,110,0) 45%) !important; }
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: contrast(.68) !important; }
.ed-hero::before { background: linear-gradient(rgba(44,28,16,.41), rgba(44,28,16,.41)) !important; }
.ed-hero::before { background: linear-gradient(rgba(68,36,12,.41), rgba(68,36,12,.41)) !important; }

/* Hero: film grain */
.ed-hero .hero-grain { position: absolute; inset: 0; z-index: 2; pointer-events: none; background-image: url("../images/grain-hero.png"); background-size: 400px 400px; mix-blend-mode: overlay; opacity: .06; }
.ed-hero::before { background: linear-gradient(rgba(68,36,12,.30), rgba(68,36,12,.30)) !important; }
.ed-hero::before { background: linear-gradient(rgba(56,34,18,.30), rgba(56,34,18,.30)) !important; }

/* Mobile hero: h1 centered vertically, tagline hangs below it */
@media (max-width: 760px) {
  .ed-hero { align-content: center !important; align-items: center !important; padding-top: 0 !important; padding-bottom: 0 !important; }
  .ed-hero .hero-lockup { translate: 0 0 !important; padding-top: 0 !important; padding-bottom: 0 !important; }
  .ed-hero .hero-wordmark, .ed-hero h1.hero-wordmark { padding-top: 0 !important; padding-bottom: 0 !important; margin: 0 !important; translate: 0 0 !important; }
  .ed-hero .hero-tag { position: absolute; left: 50%; top: 100%; translate: -50% 0 !important; margin: 18px 0 0 !important; white-space: nowrap; }
}

/* Menu button: icon only */
.ed-menu-btn { min-width: 44px; justify-content: center; padding: 0 8px; gap: 0; }

/* ---- Mobile optimization pass ---- */
/* Full-screen menu: a real overlay that follows the viewport and scrolls if it is taller than the screen */
@media (max-width: 860px) {
  .ed-menu { position: fixed; inset: 0; height: 100vh; height: 100dvh; overflow-y: auto; overscroll-behavior: contain; background: var(--primary-dk); }
  .ed-menu { grid-template-rows: max-content max-content; }
  .ed-menu-l, .ed-menu-r { min-height: min-content; }
  .ed-menu-l .ed-menu-in, .ed-menu-r .ed-menu-in { position: relative; }
  .ed-menu-close { position: fixed; z-index: 210; }
}
@media (max-width: 760px) {
  /* Hero tagline: keep it legible on small phones */
  .ed-hero .hero-tag { font-size: clamp(.72rem, 3.2vw, .86rem); }
  /* What We Do cards: stamp sits in the top corner instead of covering the link */
  .panel .stamp, .ed-services .panel .stamp { top: 10px; bottom: auto; right: 10px; width: 46px; height: 46px; }
  /* Footer contact links: finger-sized */
  .ed-footer .nap a { display: inline-flex; align-items: center; min-height: 44px; }
  /* Calendar labels */
  .ed-cal .cal-wd span { font-size: .68rem; }
  .ed-cal .cal-grid .n { font-size: .78rem; }
  /* About: helmet beside the heading, clear of the paragraph */
  .ab-h3 .ab-g img { left: calc(50% + 3.3em); top: calc(50% + .1em); width: 3em; }
}

/* ---- Simple slide-out menu from the right: links only, Roboto Mono ---- */
.ed .ed-menu { position: fixed !important; inset: 0 !important; z-index: 200; display: block !important; height: auto !important; overflow: visible !important; background: transparent !important; visibility: hidden; pointer-events: none; transition: visibility 0s linear .4s; grid-template-columns: none !important; grid-template-rows: none !important; }
.ed .ed-menu.open { visibility: visible; pointer-events: auto; transition-delay: 0s; }
.ed .ed-menu-scrim { position: absolute; inset: 0; background: rgba(0,0,0,.55); opacity: 0; transition: opacity .35s ease; }
.ed .ed-menu.open .ed-menu-scrim { opacity: 1; }
.ed .ed-menu-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(84vw, 340px); overflow-y: auto; overscroll-behavior: contain; background: #1C1A18; border-left: 1px solid #332f2b; padding: 72px 0 32px; transform: translateX(100%); transition: transform .35s cubic-bezier(.2,.7,.2,1); }
.ed .ed-menu.open .ed-menu-panel { transform: none; }
.ed .ed-menu-panel .ed-menu-close { position: absolute !important; top: 6px; right: 8px; min-width: 48px; min-height: 48px; padding: 0; justify-content: center; gap: 0; z-index: 2; }
.ed .ed-menu-panel .ed-menu-close svg { width: 20px; height: 20px; }
.ed .mp-links { list-style: none; margin: 0; padding: 0; }
.ed .mp-links li { margin: 0; padding: 0; border: 0; opacity: 1; transform: none; transition: none; overflow: visible; }
.ed .mp-links a { display: flex; align-items: center; min-height: 52px; padding: 0 28px; font-family: 'Roboto Mono', ui-monospace, Menlo, Consolas, monospace; font-weight: 400; font-size: .9rem; letter-spacing: .1em; text-transform: uppercase; color: var(--paper); text-decoration: none; transition: color .2s ease; }
.ed .mp-links a:hover, .ed .mp-links a:focus-visible { color: var(--link); padding-left: 28px; }
.ed .mp-links a[aria-current="page"] { color: var(--link); }
@media (prefers-reduced-motion: reduce) { .ed .ed-menu-panel, .ed .ed-menu-scrim { transition: none; } }

/* Mobile: Family of Bikers section. Full-width photo on top, headline wraps naturally, full-width buttons */
@media (max-width: 900px) {
  .ed-intro { padding: 48px 0 56px !important; }
  .ed-intro .intro-grid { row-gap: 28px; padding: 0 var(--px, 24px); }
  .ed-intro .intro-img-l { width: 100% !important; max-width: none; aspect-ratio: 4 / 3; margin: 0 !important; justify-self: stretch; align-self: start; }
  .ed-intro .intro-copy h2 { white-space: normal !important; font-size: clamp(1.55rem, 7.2vw, 2.1rem) !important; line-height: 1.16; text-wrap: balance; }
  .ed-intro .intro-copy h2 .br-d { display: none !important; }
  .ed-intro .intro-copy .lead { font-size: .8rem; line-height: 1.8; letter-spacing: .05em; margin: 18px 0 18px; }
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead) { font-size: .94rem; line-height: 1.85; max-width: none; margin: 0 0 14px; }
  .ed-intro .ed-cta-row { display: grid; grid-template-columns: 1fr; gap: 12px; margin-top: 22px; }
  .ed-intro .ed-cta { display: flex; align-items: center; justify-content: space-between; min-height: 48px; padding: 10px 22px; }
}
@media (max-width: 900px) { .eq-sec { grid-auto-rows: auto; } .eq-sec > .ed-intro { justify-content: flex-start; } }

/* Mobile: What We Do cards stacked one over the other */
@media (max-width: 600px) {
  .ed-services .panels { grid-template-columns: minmax(0, 1fr); gap: 20px; row-gap: 20px; }
  .ed-services .panel, .ed-services .panel:nth-child(even) { margin-top: 0; aspect-ratio: auto; min-height: 380px; }
}
@media (max-width: 600px) { .ed-services .panel .panel-body h3 { font-size: 17.42px; } }

/* Mobile: sans-serif paragraph copy a little smaller (about 8%) */
@media (max-width: 600px) {
  .ed-intro .intro-copy p:not(.eyebrow):not(.lead) { font-size: 13.84px !important; }
  .ed-services .svc-head p { font-size: 12.58px !important; }
  .ab-sec .ab-col p, .ab-sec .ab-col .lead, .ab-sec .ab-gl-txt p, .ab-sec .ab-links { font-size: 12.58px !important; }
  .ed-cal .cal-up-b p { font-size: 12.66px !important; }
  .ed-cal .cal-none { font-size: 13.25px !important; }
  .ed-contact .ct-lead, .ed-contact .ct-form-t, .ed-contact .ct-note p:not(.ct-sig), .ed-faq .fq-a p { font-size: 13.25px !important; }
}

/* Hero filter cleanup: less flattening, softer sun glow, lighter warm tint */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: contrast(.86) saturate(.95) !important; }
.ed-hero::before { background: linear-gradient(rgba(56,34,18,.26), rgba(56,34,18,.26)) !important; }
.ed-hero::after, .ed-hero.tx::after { background: radial-gradient(ellipse 60% 62% at 82% 12%, rgba(255,206,140,.40) 0%, rgba(255,184,100,.20) 45%, rgba(255,160,70,0) 80%) !important; }

/* Menu: thinner lines; close X sits exactly where the hamburger lines are */
.ed-menu-btn svg path { stroke-width: 1.5; }
.ed .ed-menu-panel .ed-menu-close { top: 6px !important; right: var(--px, 24px); min-width: 46px; width: 46px; min-height: 44px; height: 44px; padding: 0 8px; box-sizing: border-box; }
.ed .ed-menu-panel .ed-menu-close svg { width: 18px; height: 18px; }
.ed .ed-menu-panel .ed-menu-close svg path { stroke-width: 1.5; }
@media (min-width: 761px) { .ed .ed-menu-panel .ed-menu-close { top: 8px !important; } }
@media (max-width: 760px) { .ed-hero .hero-lockup { translate: 0 -26px !important; } }
/* Menu icon and close X nudged right (same offset on both so they stay aligned) */
.ed-bar .ed-menu-btn { margin-right: -8px; }
.ed .ed-menu-panel .ed-menu-close { right: calc(var(--px, 24px) - 8px); }
@media (max-width: 760px) { .ed-hero .hero-lockup { translate: 0 -56px !important; } .ed-hero .hero-tag { font-size: clamp(.62rem, 2.7vw, .7rem) !important; } }
@media (max-width: 760px) { .ed-hero h1.hero-wordmark, .ed-hero .hero-wordmark { font-size: clamp(2.6rem, 12.8vw, 3.4rem) !important; } }

/* Hero must always butt against the nav with no black showing: no nav border, no black behind the photo, photo shows instantly */
.ed-header { border-bottom: 0 !important; }
.ed-hero { background: #1C1A18 !important; }
.hero-slide, .hero-slide.is-on { transition: none !important; opacity: 1 !important; }

/* Top nav: texture belongs to the nav itself (scrolls with it), not anchored to the viewport */
.ed-header::after { background-attachment: scroll !important; background-position: 0 0; }

/* Mobile: Family of Bikers headline sits above the photo */
@media (max-width: 900px) {
  .ed-intro .intro-grid { row-gap: 0; }
  .ed-intro .intro-copy { display: contents; }
  .ed-intro .intro-copy h2 { order: 1; margin: 0 0 24px; }
  .ed-intro .intro-img-l { order: 2; margin: 0 0 28px !important; }
  .ed-intro .intro-copy > :not(h2) { order: 3; }
  .ed-intro .intro-copy .lead { margin-top: 0; }
}

/* Mobile: intro headline centered, 10% smaller, last line overlaps the top of the photo */
@media (max-width: 900px) {
  .ed-intro .intro-copy h2 { font-size: clamp(1.395rem, 6.48vw, 1.89rem) !important; text-align: center; position: relative; z-index: 5; margin: 0 0 -1.05em; }
  .ed-intro .intro-img-l { position: relative; z-index: 1; }
  .ed-intro .intro-img-l .ph::after { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; background: linear-gradient(to bottom, rgba(14,12,10,.62) 0%, rgba(14,12,10,.3) 22%, rgba(14,12,10,0) 42%); }
}
@media (max-width: 900px) { .ed-intro { padding-top: 76px !important; } }

/* Mobile intro headline: no shadow or darkening behind it */
@media (max-width: 900px) {
  .ed-intro .intro-img-l .ph::after { background: none !important; content: none !important; }
}
.ed-intro .intro-copy h2, .ed-intro .intro-copy h2 .ac { text-shadow: none !important; filter: none !important; }
@media (max-width: 900px) { .ed-intro .intro-img-l .ph::before { background: linear-gradient(rgba(22,30,42,.14), rgba(22,30,42,.14)) !important; } }
@media (max-width: 900px) { .ed-intro .intro-copy h2 { margin-bottom: calc(-1.05em + 10px); } }
@media (max-width: 900px) { .ed-intro .intro-img-l .ph::before { background: linear-gradient(to bottom, rgba(14,12,10,.34) 0%, rgba(14,12,10,.16) 24%, rgba(14,12,10,0) 46%), linear-gradient(rgba(22,30,42,.14), rgba(22,30,42,.14)) !important; } }
@media (max-width: 900px) { .ed-intro .intro-copy .lead { text-align: center; text-wrap: balance; } }

/* Mobile: no phone numbers in the "You're Never Alone" footer section (Get Help button stays) */
@media (max-width: 760px) { .ed-footer .ft-need .ft-phones { display: none !important; } .ed-footer .ft-need .ed-cta-row { margin-top: 8px !important; } }

/* About (mobile): the two small photos (face painting, tent) share the same height */
@media (max-width: 640px) {
  .ab-sec .ab-tri { align-items: start; }
  .ab-tri .ab-ph:not(.ab-nb) { aspect-ratio: 4 / 5 !important; height: auto; position: relative; overflow: hidden; }
  .ab-tri .ab-ph:not(.ab-nb) img { position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; top: 0 !important; left: 0 !important; object-fit: cover; scale: none !important; transform: none !important; }
}

/* ===== Photo treatment: every photo gets the same grade as the hero (lower contrast, warm brown tint, fine grain) ===== */
.ed-intro .intro-img-l .ph img,
.ed-services .panel .ph img, .ed-services .panel:hover .ph img, .ed-services .panel:focus-visible .ph img,
.ab-sec .ab-ph img { filter: contrast(.86) saturate(.95) !important; }

.ed-services .panel .ph::before,
.ab-sec .ab-ph.ab-ph::before { background: linear-gradient(rgba(56,34,18,.24), rgba(56,34,18,.24)) !important; }
.ed-intro .intro-img-l .ph::before { background: linear-gradient(to bottom, rgba(14,12,10,.34) 0%, rgba(14,12,10,.16) 24%, rgba(14,12,10,0) 46%), linear-gradient(rgba(56,34,18,.24), rgba(56,34,18,.24)) !important; }

.ed-intro .intro-img-l .ph::after,
.ed-services .panel .ph::after,
.ab-sec .ab-ph.ab-ph::after { content: "" !important; display: block !important; position: absolute; inset: 0; z-index: 1 !important; pointer-events: none; background: url("../images/grain-hero.png") 0 0 / 400px 400px !important; mix-blend-mode: overlay; opacity: .06; }

/* About: same thin line under the top bar as Get Help, Events, Contact and FAQ */
.ab-sec.ab-one { border-top: 1px solid #332f2b; }

/* About (mobile): story text reads as one system. Serif subhead with the site's teal rule, teal call-out line, even rhythm */
@media (max-width: 760px) {
  .ab-sec .ab-cols { display: block; }
  .ab-sec .ab-col p, .ab-sec .ab-col .lead { margin: 0 0 16px !important; line-height: 1.9; }
  .ab-sec .ab-col + .ab-col { margin-top: 44px; }
  .ab-sec .ab-col + .ab-col::before { content: ""; display: block; width: 28px; height: 2px; background: var(--link); margin: 0 auto 22px; }
  .ab-sec .ab-sub { font-family: 'Spectral SC', Georgia, serif; font-weight: 400; font-size: 1.35rem; line-height: 1.28; text-align: center; letter-spacing: 0; color: var(--paper); margin: 0 0 22px !important; text-wrap: balance; }
  .ab-sec .ab-col p strong { display: block; font-family: 'Spectral SC', Georgia, serif; font-weight: 400; font-size: 1.1rem; line-height: 1.3; color: var(--link); margin: 8px 0 2px; }
  .ab-sec .ab-col p:last-child { margin-bottom: 0 !important; }
}
@media (max-width: 760px) {
  .ab-sec .ab-cols .ab-col h2.ab-sub { font-family: 'Spectral SC', Georgia, serif !important; font-weight: 400 !important; font-size: 1.35rem !important; line-height: 1.28 !important; text-align: center !important; letter-spacing: 0 !important; margin: 0 0 22px !important; }
}
@media (max-width: 760px) { .ab-sec .ab-cols .ab-col h2.ab-sub { text-align-last: center !important; text-wrap: balance !important; } }

/* About (mobile), tidy pass: everything in the story is centered like the title and promise boxes.
   Serif statements, sans body, teal call-out, rules between groups, one spacing rhythm. */
@media (max-width: 760px) {
  .ab-sec .ab-cols .ab-col p, .ab-sec .ab-cols .ab-col p.lead { text-align: center !important; text-align-last: center !important; text-wrap: pretty; margin: 0 0 18px !important; font-size: 13px !important; line-height: 1.9 !important; }
  .ab-sec .ab-cols .ab-col:first-child p:nth-child(-n+2) { font-family: 'Spectral SC', Georgia, serif; font-size: 1.2rem !important; line-height: 1.38 !important; text-wrap: balance; margin: 0 0 14px !important; color: var(--paper); }
  .ab-sec .ab-cols .ab-col:first-child p:nth-child(2) { margin-bottom: 30px !important; }
  .ab-sec .ab-cols .ab-col p strong { font-size: 1.2rem; line-height: 1.38; margin: 12px 0 14px; }
  .ab-sec .ab-cols .ab-col + .ab-col { margin-top: 46px; }
  .ab-sec .ab-cols .ab-col:last-child p:last-child { margin-bottom: 0 !important; }
  .ab-sec .ab-panels { margin-top: 44px; }
}

/* About (mobile): Why Gladiators illustration larger. Full width of the screen, taller crop */
@media (max-width: 760px) {
  .ab-sec .ab-gl .ab-gl-fig { width: calc(100% + 2 * var(--px)) !important; margin-left: calc(-1 * var(--px)) !important; margin-right: 0 !important; aspect-ratio: 1 / 1 !important; top: 0; }
  .ab-sec .ab-gl .ab-gl-fig .ab-gl-ph { width: 100%; height: 100%; }
  .ab-sec .ab-gl .ab-gl-fig .ab-gl-ph img { position: absolute !important; inset: 0 !important; left: 0 !important; top: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover; object-position: 50% 55%; scale: none !important; transform: none !important; }
}
@media (min-width: 500px) and (max-width: 760px) { .ab-sec .ab-gl .ab-gl-fig { aspect-ratio: 4 / 3 !important; } }

/* About (mobile): all four opening paragraphs are the same sans serif */
@media (max-width: 760px) {
  .ab-sec .ab-cols .ab-col:first-child p, .ab-sec .ab-cols .ab-col:first-child p:nth-child(-n+2) { font-family: 'Montserrat', system-ui, sans-serif !important; font-size: 13px !important; line-height: 1.9 !important; text-wrap: pretty; margin: 0 0 18px !important; color: #E5E0D5; }
  .ab-sec .ab-cols .ab-col:first-child p:last-child { margin-bottom: 0 !important; }
}

/* About (mobile): swing photo sits below the Why Gladiators text, smaller (inside the page margins) */
@media (max-width: 760px) {
  .ab-sec .ab-gl { display: flex; flex-direction: column; }
  .ab-sec .ab-gl > .ab-gl-txt { order: 1; }
  .ab-sec .ab-gl > .ab-gl-fig { order: 2; }
  .ab-sec .ab-gl .ab-gl-fig { width: 100% !important; margin: 12px 0 0 !important; aspect-ratio: 7 / 5 !important; }
}

/* About: second copy of the swing photo lives under the buttons (mobile only) */
.ab-gl-fig--m { display: none; }
@media (max-width: 760px) {
  .ab-sec .ab-gl > .ab-gl-fig { display: none !important; }
  .ab-sec .ab-gl-fig--m { display: block; position: relative; width: 74%; margin: 36px auto 0; aspect-ratio: 7 / 5; overflow: hidden; }
  .ab-sec .ab-gl-fig--m .ab-gl-ph { position: absolute; inset: 0; width: 100%; height: 100%; }
  .ab-sec .ab-gl-fig--m .ab-gl-ph img { position: absolute !important; inset: 0 !important; left: 0 !important; top: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover; object-position: 50% 55%; scale: none !important; transform: none !important; }
}
@media (max-width: 760px) { .ab-sec .ab-gl-fig--m { width: 100%; margin: 36px 0 0; aspect-ratio: 1600 / 1462; } }
@media (max-width: 760px) { .ab-sec .ab-gl-fig.ab-gl-fig--m { aspect-ratio: 1600 / 1462 !important; width: 100% !important; margin: 36px 0 0 !important; } }

/* About (mobile): the three buttons stack at the same width, aligned with the page margins */
@media (max-width: 760px) {
  .ab-sec p.ab-links { display: grid !important; grid-template-columns: 1fr; gap: 12px; margin: 32px 0 0 !important; }
  .ab-sec p.ab-links a { display: flex; align-items: center; justify-content: center; width: 100%; box-sizing: border-box; min-height: 48px; text-align: center; }
}
@media (max-width: 760px) { .ab-sec p.ab-links { width: 100% !important; max-width: none !important; justify-content: stretch !important; justify-items: stretch !important; } }

/* About (mobile): "KOI exists to change that" + closing line + the three No-lines form one organized panel */
@media (max-width: 760px) {
  .ab-sec .ab-cols .ab-col:last-child p:nth-last-child(2) { background: rgba(15,109,115,.14); border: 1px solid rgba(76,195,202,.28) !important; border-top: 2px solid var(--link) !important; border-bottom: 0 !important; padding: 26px 22px 0 !important; margin: 26px 0 0 !important; }
  .ab-sec .ab-cols .ab-col:last-child p:last-child { background: rgba(15,109,115,.14); border: 1px solid rgba(76,195,202,.28); border-top: 0; border-bottom: 0; padding: 0 22px 22px; margin: 0 !important; }
  .ab-sec .ab-cols .ab-col p strong { margin: 0 0 12px; }
  .ab-sec ul.ab-panels { margin: 0 !important; padding: 0 22px 8px; gap: 0 !important; background: rgba(15,109,115,.14); border: 1px solid rgba(76,195,202,.28); border-top: 0; display: block; }
  .ab-sec ul.ab-panels li { display: flex !important; flex-direction: row !important; justify-content: center; align-items: baseline; gap: .4em !important; background: none !important; border: 0 !important; border-top: 1px solid rgba(76,195,202,.22) !important; padding: 16px 0 !important; margin: 0 !important; text-align: center; }
  .ab-sec ul.ab-panels li br { display: none; }
}
@media (max-width: 760px) { .ab-sec .ab-cols .ab-col:last-child p:nth-last-child(2) { display: flow-root; padding-bottom: 12px !important; } .ab-sec .ab-cols .ab-col:last-child p:nth-last-child(2) strong { margin: 0 !important; } }

/* Parallax for every About photo: the image is taller than its frame so the page script can slide it as you scroll */
.ab-sec .ab-ph.ab-ph img, .ab-sec .ab-tri .ab-ph.ab-ph img, .ab-sec .ab-tri .ab-ph:not(.ab-nb) img, .ab-sec .ab-gl-fig--m .ab-gl-ph img, .ab-sec .ab-gl-fig .ab-gl-ph.ab-ph img {
  position: absolute !important; inset: auto !important; left: 0 !important; top: -8% !important; width: 100% !important; height: 116% !important; max-width: none; object-fit: cover; scale: none !important; transform: none !important; will-change: translate;
}
.ab-sec .ab-ph { overflow: hidden; }

/* About (mobile): Why Gladiators illustration larger */
@media (max-width: 760px) { .ab-sec .ab-h3 .ab-g img { width: 5.4em; left: calc(50% + 4.1em); top: calc(50% - .9em); } }

/* Hero: the photo is a little taller than the hero so its top edge can never sit below the nav; the layer behind it matches the photo's top colors so nothing can read as a band */
.ed-hero { background: linear-gradient(90deg, rgb(160,166,174) 0%, rgb(160,166,174) 35%, rgb(185,180,181) 70%, rgb(185,180,181) 100%) !important; }
.ed-hero .hero-slide, .ed-hero img.hero-slide { top: -17% !important; height: 134% !important; }

/* What We Do photos: a subtle dark gradient over the lower half so the text stands out */
.ed-services .panel .ph::before { background: linear-gradient(to bottom, rgba(14,12,10,0) 38%, rgba(14,12,10,.2) 62%, rgba(14,12,10,.52) 100%), linear-gradient(rgba(56,34,18,.24), rgba(56,34,18,.24)) !important; }
.ed-services .panel .ph::before { background: linear-gradient(to bottom, rgba(14,12,10,0) 28%, rgba(14,12,10,.42) 55%, rgba(14,12,10,.8) 100%), linear-gradient(rgba(56,34,18,.24), rgba(56,34,18,.24)) !important; }

/* Hero tagline: sheer teal background */
.ed-hero .hero-tag { background: rgba(15,109,115,.58) !important; -webkit-backdrop-filter: blur(1.5px); backdrop-filter: blur(1.5px); }
.ed-hero .hero-tag { border: 0 !important; }

/* Hero photo: a little darker */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: contrast(.86) saturate(.95) brightness(.88) !important; }

/* Smooth scrolling and a soft fade when a page opens (skipped for reduced-motion users). The fade runs on the page body, which is created once, so the content swapping in underneath it cannot make it flash. */
html { background: var(--bg); }
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
  @keyframes koi-page-in { from { opacity: 0; } to { opacity: 1; } }
  body { animation: koi-page-in .5s ease-out backwards; }
}

/* About: subtle dark filter over the top photo */
.ab-sec.ab-one .ab-ph.ab-fig::before { background: linear-gradient(rgba(14,12,10,.14), rgba(14,12,10,.14)), linear-gradient(rgba(56,34,18,.24), rgba(56,34,18,.24)) !important; }
.ab-sec.ab-one .ab-ph.ab-fig img { filter: contrast(.78) saturate(.95) !important; }

/* About: every photo gets the same softened, slightly darkened look as the top photo */
.ab-sec .ab-ph.ab-ph img { filter: contrast(.78) saturate(.95) !important; }
.ab-sec .ab-ph.ab-ph::before { background: linear-gradient(rgba(14,12,10,.14), rgba(14,12,10,.14)), linear-gradient(rgba(56,34,18,.24), rgba(56,34,18,.24)) !important; }

/* About (stacked layout, up to 760px): the promise list must be exactly as wide as the panel above it */
@media (max-width: 760px) {
  .ab-sec ul.ab-panels { max-width: none !important; width: 100% !important; box-sizing: border-box; }
  .ab-sec .ab-cols { max-width: none; }
  .ab-sec .ab-cols .ab-col p, .ab-sec .ab-cols .ab-col p.lead { max-width: none !important; }
}

/* Home: intro and What We Do only share equal row heights when the services grid is short (wide screens) */
@media (max-width: 1000px) { .eq-sec { grid-auto-rows: auto; } .eq-sec > .ed-intro { justify-content: flex-start; } }

/* Mobile/tablet: every inner page starts the same distance below the header */
@media (max-width: 900px) {
  main > .ed-cal:first-child, main > .ab-sec.ab-one:first-child { padding-top: 80px !important; }
}

/* Parallax performance: put every moving layer on its own compositor layer so scrolling never repaints the photos */
.ed-hero .hero-slide,
.ed-intro .intro-img-l .ph img,
.ed-services .panel .ph img,
.ab-ph img,
.wd-ph img { will-change: transform, translate; backface-visibility: hidden; -webkit-backface-visibility: hidden; transform-style: flat; }
.ed-footer .ft-need::before { will-change: transform; }
/* A 1.5px backdrop blur over a moving photo repaints every frame on phones; the sheer teal alone looks the same */
@media (max-width: 900px) {
  .ed-hero .hero-tag { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; background: rgba(15,109,115,.62) !important; }
}

/* Photos other than the hero: natural look. No colour filters, tint layers, dark washes or grain on top of them.
   (The bottom gradient on the What We Do cards stays so the card text remains readable.) */
.koi-page .ed-intro .intro-img-l .ph img,
.koi-page .ed-services .panel .ph img,
.koi-page .ab-ph img,
.koi-page .ab-sec .ab-ph.ab-ph img,
.koi-page .ab-gl-fig .ab-gl-ph img,
.koi-page .ab-sec .ab-gl-fig .ab-gl-ph.ab-ph img { filter: none !important; }
.koi-page .ed-intro .intro-img-l .ph::before,
.koi-page .ed-intro .intro-img-l .ph::after,
.koi-page .ed-services .panel .ph::after,
.koi-page .ab-ph::before, .koi-page .ab-ph::after,
.koi-page .ab-sec .ab-ph.ab-ph::before, .koi-page .ab-sec .ab-ph.ab-ph::after,
.koi-page .ab-sec .ab-gl-ph.ab-ph::before, .koi-page .ab-sec .ab-gl-ph.ab-ph::after,
.koi-page .ab-sec.ab-one .ab-ph.ab-fig::before { content: none !important; display: none !important; background: none !important; }
.koi-page .ed-services .panel .ph::before { background: linear-gradient(to bottom, rgba(14,12,10,0) 28%, rgba(14,12,10,.42) 55%, rgba(14,12,10,.8) 100%) !important; }

/* About: top photo gets a subtle dark gradient along the bottom edge */
.koi-page .ab-sec.ab-one .ab-ph.ab-fig::before { content: "" !important; display: block !important; position: absolute !important; inset: 0 !important; z-index: 1; pointer-events: none; background: linear-gradient(to bottom, rgba(14,12,10,0) 42%, rgba(14,12,10,.66) 100%) !important; }

/* Mobile hero: lift the h1 and tagline a little */
@media (max-width: 760px) {
  .ed-hero { padding-bottom: 110px !important; }
}

/* Home: second-section photo gets a subtle dark gradient along the top edge */
.koi-page .ed-intro .intro-img-l .ph::before { content: "" !important; display: block !important; position: absolute !important; inset: 0 !important; z-index: 1; pointer-events: none; background: linear-gradient(to bottom, rgba(14,12,10,.55) 0%, rgba(14,12,10,0) 45%) !important; }

/* What We Do: photos get a dark gradient along the bottom edge */
.koi-page .wd-ph::after { content: "" !important; display: block !important; position: absolute !important; inset: 0 !important; z-index: 1; pointer-events: none; background: linear-gradient(to bottom, rgba(14,12,10,0) 40%, rgba(14,12,10,.45) 68%, rgba(14,12,10,.82) 100%) !important; }

/* Home service panels: titles share one two-line block so they start on the same line and the labels below align */
@media (min-width: 601px) {
  .koi-page .ed-services .panel .panel-body h3 { min-height: 2lh; text-wrap: balance; margin-bottom: 12px; }
}

/* Home service panels: numbers in teal */
.koi-page .ed-services .panel .panel-num { color: #4CC3CA !important; text-shadow: none !important; }

/* Hero photo: no filter on the image itself (the warm tint overlay and grain stay) */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; }

/* Hero photo: no filters, tint, glow or grain at all */
.ed-hero .hero-slide, .ed-hero img.hero-slide { filter: none !important; mix-blend-mode: normal !important; opacity: 1 !important; }
.ed-hero::before, .ed-hero::after, .ed-hero.tx::after { content: none !important; display: none !important; background: none !important; }
.ed-hero .hero-grain { display: none !important; }

/* Hero: the warm sunshine glow back (top right); the photo itself stays unfiltered */
.ed-hero::after, .ed-hero.tx::after { content: "" !important; display: block !important; position: absolute !important; inset: 0 !important; z-index: 1 !important; pointer-events: none; mix-blend-mode: screen !important; opacity: 1 !important; background: radial-gradient(ellipse 60% 62% at 82% 12%, rgba(255,206,140,.40) 0%, rgba(255,184,100,.20) 45%, rgba(255,160,70,0) 80%) !important; }

/* Hero: teal filter over the photo (sunshine glow sits on top of it) */
.ed-hero::before { content: "" !important; display: block !important; position: absolute !important; inset: 0 !important; z-index: 1 !important; pointer-events: none; mix-blend-mode: normal !important; background: linear-gradient(rgba(40,56,58,.5), rgba(40,56,58,.5)) !important; }

/* Hero h1: "of" and "the" in a script face (Charm) */
.ed-hero .hero-wordmark .hw-script { font-family: 'Charm', 'Snell Roundhand', 'Brush Script MT', cursive !important; font-weight: 400 !important; text-transform: none !important; letter-spacing: 0 !important; font-size: .85em; line-height: 1; padding: 0 .04em; }

/* Hero h1: "Keepers" and "Innocent" 10% larger (the script words keep their size) */
.ed-hero .hero-wordmark .hw-big { font-size: 1.1em; }

/* Hero h1: "of" and "the" with zero kerning and tracking */
.ed-hero .hero-wordmark .hw-script { font-kerning: none !important; font-feature-settings: "kern" 0 !important; letter-spacing: 0 !important; word-spacing: 0 !important; }

/* Mobile hero h1: two fixed lines ("Keepers of" / "the Innocent"), with "the" lifted so it touches the bottom of the K above it */
.ed-hero .hero-wordmark .hw-br { display: none; }
@media (max-width: 760px) {
  .ed-hero .hero-wordmark .hw-br { display: inline; }
  .ed-hero .hero-wordmark .hw-the { position: relative; top: -.28em; }
}

/* Hero h1 at every width: two fixed lines ("Keepers of" / "the Innocent"), "the" lifted to touch the K above it */
.ed-hero .hero-wordmark .hw-br { display: inline !important; }
.ed-hero .hero-wordmark .hw-the { position: relative !important; top: -.2em !important; left: .25em !important; }

/* Hero h1: back to all Spectral SC. "of" and "the" keep only their smaller size; no script face, no forced second line, no lift. */
.ed-hero .hero-wordmark .hw-script { font-family: inherit !important; font-weight: inherit !important; text-transform: inherit !important; letter-spacing: inherit !important; font-kerning: auto !important; font-feature-settings: normal !important; word-spacing: normal !important; line-height: inherit !important; padding: 0 !important; }
.ed-hero .hero-wordmark .hw-br { display: none !important; }
.ed-hero .hero-wordmark .hw-the { position: static !important; top: auto !important; left: auto !important; }

/* Hero h1: every word the same size */
.ed-hero .hero-wordmark .hw-big, .ed-hero .hero-wordmark .hw-script { font-size: inherit !important; }

/* Hero h1: "of" and "the" in Beau Rivage */
.ed-hero .hero-wordmark .hw-script { font-family: 'Felipa', 'Snell Roundhand', 'Brush Script MT', cursive !important; font-weight: 400 !important; text-transform: none !important; letter-spacing: 0 !important; font-size: .72em !important; }

/* Hero: h1 and tagline up a pinch (all widths) */
.ed-hero .hero-lockup { top: -20px !important; }

/* Hero h1: "the" nudged up and in toward "Innocent" */
.ed-hero .hero-wordmark .hw-the { position: relative !important; top: -.2em !important; left: .17em !important; }

/* Hero h1: "of" nudged down and in toward "Keepers" */
.ed-hero .hero-wordmark .hw-script:not(.hw-the) { position: relative !important; top: .12em !important; left: -.22em !important; }

/* Hero h1: "of" up a bit, "the" down a bit */
.ed-hero .hero-wordmark .hw-script:not(.hw-the) { top: .04em !important; }
.ed-hero .hero-wordmark .hw-the { top: -.12em !important; }

/* Hero h1: "of" a little to the right */
.ed-hero .hero-wordmark .hw-script:not(.hw-the) { left: -.1em !important; }

/* Hero h1: "the" left a pinch */
.ed-hero .hero-wordmark .hw-the { left: .09em !important; }

/* Hero h1: "the" and "Innocent" left a pinch (same distance for both) */
.ed-hero .hero-wordmark .hw-the { left: -.021em !important; }
.ed-hero .hero-wordmark .hw-big:last-of-type { position: relative !important; left: -.073em !important; }

/* Hero h1: "Keepers" and "of" right a pinch (same distance for both) */
.ed-hero .hero-wordmark .hw-big:first-of-type { position: relative !important; left: .073em !important; }
.ed-hero .hero-wordmark .hw-script:not(.hw-the) { left: .011em !important; }

/* Hero h1: "the" and "Innocent" left another pinch (same distance for both) */
.ed-hero .hero-wordmark .hw-the { left: -.132em !important; }
.ed-hero .hero-wordmark .hw-big:last-of-type { left: -.146em !important; }

/* Hero h1: "the" right a pinch */
.ed-hero .hero-wordmark .hw-the { left: -.021em !important; }

/* Hero h1: "the" up a pinch */
.ed-hero .hero-wordmark .hw-the { top: -.23em !important; }

/* Hero h1: "the" left a pinch */
.ed-hero .hero-wordmark .hw-the { left: -.132em !important; }

/* Hero h1: "the" right just a pinch */
.ed-hero .hero-wordmark .hw-the { left: -.077em !important; }
