/* Gallery white: an editorial theme. A white page, black type, one maroon for actions; large serif headlines over a
   plain sans body; every section set as a two-column ledger from 1024px. Class prefix ev-. No gradients, no shadows,
   no dark bands. Nothing project-specific is written here. */

@font-face {
  font-family: "Instrument Serif";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../assets/fonts/instrument-serif-latin-400-normal.woff2") format("woff2");
}

@font-face {
  font-family: "Instrument Serif";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("../assets/fonts/instrument-serif-latin-400-italic.woff2") format("woff2");
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../assets/fonts/inter-var.woff2") format("woff2");
}

:root {
  /* the nine theme tokens (builders/README.md Theme contract) */
  --brand-primary: #830039;
  --brand-secondary: #5C0028;
  --brand-tertiary: #F8EEF2;
  --dark-primary: #111111;
  --dark-secondary: #595959;
  --dark-tertiary: #E4E4E0;
  --light-primary: #FFFFFF;
  --light-secondary: #F7F7F5;
  --light-tertiary: #EEEEEA;

  /* derived, never new literals */
  --ink: var(--dark-primary);
  --ink-2: color-mix(in srgb, var(--dark-primary) 88%, var(--light-primary));
  --muted: var(--dark-secondary);
  --rule: var(--dark-tertiary);
  --field-border: color-mix(in srgb, var(--dark-primary) 52%, var(--light-primary));
  --error: #B3261E;
  --success: #1E6B3A;

  --font-serif: "Instrument Serif", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  /* aliases the generated related-projects block reads */
  --font-body: var(--font-sans);
  --font-display: var(--font-serif);
  --font-headline: var(--font-serif);

  --gutter: 20px;
  --wrap: 1200px;
  --ledger-gap: 72px;
  --header-h: 61px;
  --t: 150ms ease;
}

@media (min-width: 640px) {
  :root { --gutter: 32px; }
}

@media (min-width: 1024px) {
  :root { --gutter: 40px; }
}

/* ---- 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(--light-primary);
  color: var(--ink-2);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.65;
  font-feature-settings: "cv11", "ss01";
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  /* clip, not hidden: hidden would make <body> a scroll container once the menu locks <html>, and the sticky
     header would scroll away with the page */
  overflow-x: clip;
}

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

::selection { background: var(--brand-tertiary); color: var(--ink); }

h1, h2, h3 { color: var(--ink); }

h2 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(2.125rem, 3.4vw, 3rem);
  line-height: 1.05;
  letter-spacing: -0.01em;
  text-wrap: balance;
}

h3 {
  margin: 2.25rem 0 0;
  font-family: var(--font-body);
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.005em;
}

p, ul, ol { margin: 0; }

a { color: inherit; }

:focus-visible {
  outline: 2px solid var(--brand-primary);
  outline-offset: 3px;
}

#main-content:focus { outline: none; }

.ev-nb { white-space: nowrap; }

.ev-wrap {
  width: 100%;
  max-width: calc(var(--wrap) + 2 * var(--gutter));
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.ev-skip {
  position: absolute;
  left: 12px;
  top: -60px;
  z-index: 100;
  padding: 10px 16px;
  background: var(--ink);
  color: var(--light-primary);
  font-weight: 500;
  text-decoration: none;
}

.ev-skip:focus { top: 12px; }

html.ev-lock { overflow: hidden; }

/* ---- links in running text ---- */

.ev-ledger__body a:not(.ev-btn),
.ev-prose a,
.ev-lede a,
.ev-status a,
.ev-faq__a a,
.ev-cta__text a:not(.ev-btn),
.ev-note a,
.ev-callout a {
  color: var(--brand-primary);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color var(--t), text-decoration-thickness var(--t);
}

.ev-ledger__body a:not(.ev-btn):hover,
.ev-prose a:hover,
.ev-lede a:hover,
.ev-status a:hover,
.ev-faq__a a:hover,
.ev-cta__text a:not(.ev-btn):hover,
.ev-note a:hover,
.ev-callout a:hover {
  color: var(--brand-secondary);
  text-decoration-thickness: 2px;
}

/* long tokens (registration numbers, the register's address) wrap instead of widening the page */
.ev-ledger__body p,
.ev-ledger__body li,
.ev-prose p,
.ev-prose li,
.ev-faq__a p,
.ev-faq__a li,
.ev-status li,
.ev-callout p,
.ev-footer__facts li { overflow-wrap: break-word; }

/* ---- buttons ---- */

.ev-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 0 22px;
  border: 1px solid transparent;
  border-radius: 2px;
  font-family: var(--font-body);
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.005em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--t), color var(--t), border-color var(--t);
}

.ev-btn--primary {
  background: var(--brand-primary);
  border-color: var(--brand-primary);
  color: var(--light-primary);
}

.ev-btn--primary:hover {
  background: var(--brand-secondary);
  border-color: var(--brand-secondary);
  color: var(--light-primary);
}

.ev-btn--line {
  background: transparent;
  border-color: var(--ink);
  color: var(--ink);
}

.ev-btn--line:hover {
  background: var(--ink);
  color: var(--light-primary);
}

.ev-btn--arrow {
  min-height: 44px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--brand-primary);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 6px;
}

.ev-btn--arrow::after {
  content: "\2192" / "";
  margin-left: 0.5em;
  transition: transform var(--t);
}

.ev-btn--arrow:hover { color: var(--brand-secondary); }
.ev-btn--arrow:hover::after { transform: translateX(3px); }

.ev-btn--block { width: 100%; }

.ev-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 20px;
  margin-top: 28px;
}

/* ---- header: a slim bar with a Menu overlay below 1024px, an editorial masthead from 1024px ---- */

.ev-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--light-primary);
  border-bottom: 1px solid var(--rule);
}

.ev-header__bar {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 60px;
}

.ev-brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-right: auto;
  min-width: 0;
  color: var(--ink);
  text-decoration: none;
}

.ev-brand__mark {
  display: block;
  width: 32px;
  height: 32px;
  flex: none;
}

.ev-brand__name {
  font-family: var(--font-display);
  font-size: 1.625rem;
  line-height: 1;
  letter-spacing: -0.01em;
  white-space: nowrap;
}

.ev-header__cta { display: none; min-height: 44px; padding: 0 18px; }

.ev-menu-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid var(--ink);
  border-radius: 2px;
  background: var(--light-primary);
  color: var(--ink);
  font: 500 0.875rem/1 var(--font-body);
  cursor: pointer;
  transition: background-color var(--t), color var(--t);
}

.ev-menu-btn:hover { background: var(--ink); color: var(--light-primary); }

.ev-menu-btn__x { display: none; }
.ev-header.is-open .ev-menu-btn__x { display: inline; }
.ev-header.is-open .ev-menu-btn__bars { display: none; }

.ev-nav {
  display: none;
  position: fixed;
  top: var(--header-h);
  left: 0;
  right: 0;
  height: calc(100vh - var(--header-h));
  height: calc(100dvh - var(--header-h));
  overflow-y: auto;
  overscroll-behavior: contain;
  background: var(--light-primary);
  padding: 8px 0 40px;
}

.ev-header.is-open .ev-nav { display: block; }

.ev-nav__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.ev-nav__list a {
  display: block;
  padding: 14px 0;
  border-bottom: 1px solid var(--rule);
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 1.875rem;
  line-height: 1.1;
  text-decoration: none;
  transition: color var(--t);
}

.ev-nav__list a:hover,
.ev-nav__list a[aria-current="page"] { color: var(--brand-primary); }

.ev-nav__contact a {
  margin-top: 24px;
  padding: 14px 22px;
  border: 0;
  border-radius: 2px;
  background: var(--brand-primary);
  color: var(--light-primary);
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 500;
  text-align: center;
}

.ev-nav__contact a:hover,
.ev-nav__contact a[aria-current="page"] { background: var(--brand-secondary); color: var(--light-primary); }

@media (min-width: 480px) {
  .ev-header__cta { display: inline-flex; }
}

@media (min-width: 1024px) {
  .ev-header { position: relative; border-bottom: 1px solid var(--rule); }
  .ev-header__bar { min-height: 76px; gap: 20px; }
  .ev-brand__mark { width: 36px; height: 36px; }
  .ev-brand__name { font-size: 1.875rem; }
  .ev-menu-btn { display: none; }

  .ev-nav {
    display: block;
    position: static;
    height: auto;
    overflow: visible;
    padding: 0;
    border-top: 1px solid var(--rule);
  }

  .ev-nav__list {
    display: flex;
    flex-wrap: wrap;
    gap: 0 30px;
  }

  .ev-nav__list a {
    position: relative;
    padding: 14px 0 13px;
    border: 0;
    color: var(--ink-2);
    font-family: var(--font-body);
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1.2;
  }

  .ev-nav__list a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    height: 2px;
    background: transparent;
    transition: background-color var(--t);
  }

  .ev-nav__list a:hover { color: var(--brand-primary); }
  .ev-nav__list a[aria-current="page"] { color: var(--ink); }
  .ev-nav__list a[aria-current="page"]::after { background: var(--brand-primary); }
  .ev-nav__contact { display: none; }
}

/* ---- type pieces ---- */

.ev-h1 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(3rem, 7vw, 5.5rem);
  line-height: 0.95;
  letter-spacing: -0.02em;
  text-wrap: balance;
}

.ev-h1--home {
  font-size: clamp(3.5rem, 11vw, 8.75rem);
  line-height: 0.9;
  letter-spacing: -0.025em;
}

.ev-eyebrow {
  margin: 0 0 14px;
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.ev-eyebrow__n {
  margin-right: 0.9em;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}

.ev-lede {
  margin-top: 28px;
  max-width: 44rem;
  color: var(--ink);
  font-size: clamp(1.125rem, 1.5vw, 1.3125rem);
  line-height: 1.55;
}

.ev-tagline {
  margin: 0;
  color: var(--ink);
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(1.5rem, 2.4vw, 1.875rem);
  line-height: 1.2;
  text-wrap: pretty;
}

.page-updated {
  margin: 14px 0 0;
  color: var(--muted);
  font-size: 0.8125rem;
  line-height: 1.4;
}

.page-updated time { font-weight: 500; }

.ev-cap {
  margin-top: 10px;
  color: var(--muted);
  font-size: 0.8125rem;
  line-height: 1.45;
}

.ev-cap::before {
  content: "";
  display: inline-block;
  width: 1.5rem;
  height: 1px;
  margin-right: 0.6rem;
  background: currentColor;
  vertical-align: middle;
}

/* ---- homepage hero: the image first, the headline beneath it ---- */

.ev-hero { padding-top: 16px; }

.ev-hero__media { margin: 0; }

.ev-hero__media img {
  display: block;
  width: 100%;
  height: auto;
  background: var(--light-tertiary);
}

@media (min-width: 640px) {
  .ev-hero { padding-top: 24px; }
  .ev-hero__media img {
    aspect-ratio: 2 / 1;
    object-fit: cover;
    object-position: 50% 55%;
  }
}

.ev-hero__intro {
  display: grid;
  gap: 28px;
  margin-top: 36px;
}

.ev-hero__text .ev-lede { margin-top: 18px; font-size: 1.125rem; }

@media (min-width: 1024px) {
  .ev-hero__intro {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: var(--ledger-gap);
    align-items: end;
    margin-top: 56px;
  }
}

.ev-facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 28px 24px;
  margin: 56px 0 0;
  padding-top: 20px;
  border-top: 1px solid var(--ink);
}

.ev-fact { min-width: 0; }

.ev-fact dt {
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  line-height: 1.4;
  text-transform: uppercase;
}

.ev-fact dd {
  margin: 8px 0 0;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: clamp(2rem, 3.6vw, 3.25rem);
  line-height: 1;
  font-variant-numeric: lining-nums;
}

@media (min-width: 768px) {
  .ev-facts { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ---- status card (the docs' status blockquote, verbatim) ---- */

.ev-status {
  margin-top: 40px;
  padding: 24px 20px;
  background: var(--light-secondary);
}

.ev-status__title {
  margin: 0 0 8px;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 1.625rem;
  line-height: 1.15;
}

.ev-status__list {
  list-style: none;
  margin: 0;
  padding: 0;
  max-width: none !important;
}

.ev-status__list li {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2px;
  padding: 12px 0;
  border-top: 1px solid var(--rule);
  font-size: 0.9375rem;
  line-height: 1.55;
}

.ev-status__list li:first-child { border-top: 0; }

.ev-status .ev-status__list > li { padding-left: 0; }
.ev-status__list a { overflow-wrap: anywhere; }
.ev-status .ev-status__list > li::before { content: none; }

.ev-status__list strong {
  color: var(--ink);
  font-weight: 600;
}

@media (min-width: 768px) {
  .ev-status { padding: 32px 36px; }
  .ev-status__list li { grid-template-columns: 13rem minmax(0, 1fr); gap: 24px; }
}

.ev-ledger__body .ev-status { margin-top: 28px; }

/* ---- the ledger: label + h2 on the left, the body on the right ---- */

.ev-section { padding-block: 48px; }

.ev-ledger {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
}

.ev-ledger::before {
  content: "";
  grid-column: 1 / -1;
  height: 1px;
  margin-bottom: 24px;
  background: var(--ink);
}

.ev-ledger__head { margin-bottom: 24px; min-width: 0; }

.ev-ledger__body { min-width: 0; }

.ev-ledger__body > * + * { margin-top: 1.25rem; }
.ev-ledger__body > h3 { margin-top: 2.5rem; }
.ev-ledger__body > h3 + * { margin-top: 0.75rem; }

.ev-ledger__body p,
.ev-ledger__body ul,
.ev-ledger__body ol,
.ev-prose p,
.ev-prose ul,
.ev-prose ol { max-width: 68ch; }

.ev-ledger__wide {
  grid-column: 1 / -1;
  min-width: 0;
  margin-top: 40px;
}

@media (min-width: 1024px) {
  .ev-section { padding-block: 80px; }

  .ev-ledger {
    grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
    column-gap: var(--ledger-gap);
  }

  .ev-ledger::before { margin-bottom: 28px; }

  .ev-ledger__head {
    position: sticky;
    top: 32px;
    align-self: start;
    margin-bottom: 0;
  }
}

/* lists: a short ink dash, no bullets */
.ev-ledger__body ul,
.ev-prose ul,
.ev-faq__a ul,
.ev-callout ul {
  list-style: none;
  padding: 0;
}

.ev-ledger__body ul > li,
.ev-prose ul > li,
.ev-faq__a ul > li,
.ev-callout ul > li {
  position: relative;
  padding-left: 1.5rem;
}

.ev-ledger__body ul > li + li,
.ev-prose ul > li + li,
.ev-faq__a ul > li + li { margin-top: 0.5rem; }

.ev-ledger__body ul > li::before,
.ev-prose ul > li::before,
.ev-faq__a ul > li::before,
.ev-callout ul > li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.85em;
  width: 0.75rem;
  height: 1px;
  background: var(--ink);
}

.ev-ledger__body ol,
.ev-prose ol,
.ev-faq__a ol { padding-left: 1.4rem; }

.ev-ledger__body ol > li + li,
.ev-prose ol > li + li { margin-top: 0.5rem; }

.ev-ledger__body strong,
.ev-prose strong { color: var(--ink); font-weight: 600; }

/* ---- tables: a quiet spec sheet ---- */

.ev-tablewrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin-top: 1.75rem !important;
  max-width: 100%;
}

.ev-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9375rem;
  line-height: 1.5;
  font-variant-numeric: tabular-nums;
}

.ev-tablewrap[data-cols="3"][data-wide] .ev-table { min-width: 34rem; }
.ev-tablewrap[data-cols="4"] .ev-table { min-width: 40rem; }
.ev-tablewrap[data-cols="5"] .ev-table,
.ev-tablewrap[data-cols="6"] .ev-table { min-width: 46rem; }

.ev-table thead th {
  padding: 0 18px 10px 0;
  border-bottom: 1px solid var(--ink);
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-align: left;
  text-transform: uppercase;
  vertical-align: bottom;
}

.ev-table tbody th,
.ev-table td {
  padding: 14px 18px 14px 0;
  border-bottom: 1px solid var(--rule);
  text-align: left;
  vertical-align: top;
}

.ev-table tbody th {
  color: var(--ink);
  font-weight: 500;
}

.ev-table th:last-child,
.ev-table td:last-child { padding-right: 0; }

.ev-table .num { text-align: right; white-space: nowrap; }
.ev-table .nw { white-space: nowrap; }
.ev-table thead th.num { white-space: normal; }

@media (max-width: 639px) {
  .ev-table { font-size: 0.875rem; }
  .ev-table thead th { padding-right: 12px; letter-spacing: 0.06em; }
  .ev-table tbody th,
  .ev-table td { padding-right: 12px; }
}
.ev-table .txt { min-width: 15rem; }
.ev-table .reg { overflow-wrap: anywhere; min-width: 10rem; }
.ev-table strong { color: var(--ink); font-weight: 600; }

.ev-scrollhint {
  display: none;
  margin-top: 8px !important;
  color: var(--muted);
  font-size: 0.8125rem;
}

.ev-tablewrap.is-scrollable + .ev-scrollhint { display: block; }

.ev-tablewrap.is-scrollable:focus-visible { outline-offset: 4px; }

/* ---- callouts and the plan note ---- */

.ev-callout {
  margin: 1.75rem 0 0;
  padding: 18px 22px;
  border-left: 2px solid var(--ink);
  background: var(--light-secondary);
  color: var(--ink);
  font-size: 1rem;
}

.ev-callout > * + * { margin-top: 0.75rem; }

.ev-note {
  padding: 2px 0 2px 18px;
  border-left: 2px solid var(--brand-primary);
}

.ev-note__label {
  margin-bottom: 4px;
  color: var(--ink);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.ev-note__text { font-size: 0.9375rem; }

/* ---- figures ---- */

.ev-fig { margin: 0; min-width: 0; }

.ev-fig__link {
  display: block;
  color: inherit;
  text-decoration: none;
}

.ev-fig img {
  display: block;
  width: 100%;
  height: auto;
  background: var(--light-tertiary);
  transition: opacity var(--t);
}

.ev-fig__link:hover img { opacity: 0.92; }

.ev-fig--photo img {
  aspect-ratio: var(--ratio, 1 / 1);
  object-fit: cover;
}

.ev-fig--plan .ev-fig__link,
.ev-fig--map .ev-fig__link {
  padding: 12px;
  background: var(--light-secondary);
}

.ev-fig--plan img,
.ev-fig--map img {
  object-fit: contain;
  background: var(--light-primary);
}

.ev-ledger__body > .ev-fig,
.ev-ledger__body > .ev-plans,
.ev-ledger__body > .ev-mediarow { margin-top: 2rem; }

.ev-ledger__body > .ev-fig:first-child,
.ev-ledger__body > .ev-mediarow:first-child { margin-top: 0; }

.ev-banner { margin-top: 40px; }

.ev-fig--banner img { aspect-ratio: 4 / 3; }
.ev-fig--banner.ev-fig--wide img { aspect-ratio: auto; }

@media (min-width: 640px) {
  .ev-fig--banner img { aspect-ratio: 21 / 9; }
  .ev-fig--banner.ev-fig--wide img { aspect-ratio: auto; }
}

@media (min-width: 1024px) {
  .ev-banner { margin-top: 56px; }
}

.ev-mediarow {
  display: grid;
  gap: 24px;
}

.ev-mediarow__text { min-width: 0; }
.ev-mediarow__text > * + * { margin-top: 1.25rem; }
.ev-mediarow__media { min-width: 0; }

@media (min-width: 768px) {
  .ev-mediarow {
    grid-template-columns: minmax(0, 11fr) minmax(0, 9fr);
    gap: 32px;
    align-items: start;
  }
  .ev-mediarow--flip .ev-mediarow__media { order: -1; }
}

.ev-plans {
  display: grid;
  gap: 24px;
}

@media (min-width: 640px) {
  .ev-plans { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
}

.ev-gallery {
  display: grid;
  gap: 32px;
}

@media (min-width: 640px) {
  .ev-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 24px; }
}

@media (min-width: 1024px) {
  .ev-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px 24px; }
  .ev-gallery--strip { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ---- subpage head ---- */

.ev-hero--page { padding-top: 40px; }

@media (min-width: 1024px) {
  .ev-hero--page { padding-top: 64px; }
}

.ev-crumb ol {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
  list-style: none;
  margin: 0 0 24px;
  padding: 0;
  color: var(--muted);
  font-size: 0.8125rem;
  font-weight: 500;
}

.ev-crumb li + li::before {
  content: "/";
  margin-right: 8px;
  color: var(--rule);
}

.ev-crumb a {
  color: var(--muted);
  text-decoration: none;
}

.ev-crumb a:hover { color: var(--brand-primary); text-decoration: underline; }

.ev-crumb [aria-current="page"] { color: var(--ink); }

.ev-intro { margin-top: 32px; }

.ev-prose > * + * { margin-top: 1.25rem; }

@media (min-width: 1024px) {
  .ev-intro .ev-prose { margin-left: calc((100% - var(--ledger-gap)) / 3 + var(--ledger-gap)); }
}

/* ---- FAQ: native details ---- */

.ev-faq { border-top: 1px solid var(--rule); }

.ev-faq__item { border-bottom: 1px solid var(--rule); }

.ev-faq__q {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 20px 0;
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 1.5rem;
  line-height: 1.2;
  list-style: none;
  cursor: pointer;
  transition: color var(--t);
}

.ev-faq__q::-webkit-details-marker { display: none; }
.ev-faq__q:hover { color: var(--brand-primary); }

.ev-faq__icon {
  position: relative;
  flex: none;
  width: 16px;
  height: 16px;
  margin-top: 6px;
}

.ev-faq__icon::before,
.ev-faq__icon::after {
  content: "";
  position: absolute;
  left: 0;
  top: 7.5px;
  width: 16px;
  height: 1px;
  background: currentColor;
  transition: transform var(--t);
}

.ev-faq__icon::after { transform: rotate(90deg); }
.ev-faq__item[open] .ev-faq__icon::after { transform: rotate(0deg); }

.ev-faq__a {
  padding: 0 40px 24px 0;
  font-size: 1rem;
}

.ev-faq__a > * + * { margin-top: 0.9rem; }
.ev-faq__a p { max-width: 68ch; }

.ev-ledger__body > .ev-faq { margin-top: 1.75rem; }
.ev-ledger__body > .ev-faq:first-child { margin-top: 0; }

/* ---- closing band ---- */

.ev-cta { padding-block: 48px 64px; }

.ev-cta__inner {
  display: grid;
  gap: 24px;
}

.ev-cta__inner::before {
  content: "";
  grid-column: 1 / -1;
  height: 1px;
  margin-bottom: 16px;
  background: var(--ink);
}

.ev-cta__title {
  font-size: clamp(2.5rem, 5.5vw, 4.5rem);
  line-height: 1;
  letter-spacing: -0.02em;
}

.ev-cta__text > * + * { margin-top: 1rem; }
.ev-cta__text p { max-width: 40rem; }

@media (min-width: 1024px) {
  .ev-cta { padding-block: 80px 104px; }
  .ev-cta__inner {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: var(--ledger-gap);
    align-items: end;
  }
}

/* ---- contact form ---- */

.ev-ledger__body > .ev-form-card:first-child { margin-top: 0 !important; }

.ev-form-card {
  margin-top: 2rem !important;
  padding: 24px 20px;
  background: var(--light-secondary);
}

@media (min-width: 640px) {
  .ev-form-card { padding: 32px; }
}

.ev-form__row {
  display: grid;
  gap: 6px;
  margin-bottom: 18px;
}

.ev-form label {
  color: var(--ink);
  font-size: 0.875rem;
  font-weight: 500;
}

.ev-form__req {
  color: var(--muted);
  font-size: 0.8125rem;
  font-weight: 400;
}

.ev-form input,
.ev-form textarea {
  width: 100%;
  min-height: 48px;
  padding: 12px 14px;
  border: 1px solid var(--field-border);
  border-radius: 2px;
  background: var(--light-primary);
  color: var(--ink);
  font: inherit;
  font-size: 1rem;
  transition: border-color var(--t);
}

.ev-form textarea { resize: vertical; min-height: 120px; }

.ev-form input:focus-visible,
.ev-form textarea:focus-visible {
  outline: 2px solid var(--brand-primary);
  outline-offset: 1px;
  border-color: var(--brand-primary);
}

.ev-form [aria-invalid="true"] { border-color: var(--error); }

.ev-form__err {
  min-height: 0;
  color: var(--error);
  font-size: 0.8125rem;
}

.ev-form__err:empty { display: none; }

.form-status {
  margin-bottom: 18px;
  padding: 12px 14px;
  border-left: 3px solid var(--ink);
  background: var(--light-primary);
  color: var(--ink);
  font-size: 0.9375rem;
}

.form-status.success { border-left-color: var(--success); }
.form-status.error { border-left-color: var(--error); }

.hp-field {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* ---- 404 ---- */

.ev-404-actions { padding-block: 8px 80px; }

/* ---- footer ---- */

.ev-footer {
  margin-top: 0;
  padding: 64px 0 40px;
  background: var(--light-secondary);
  color: var(--muted);
  font-size: 0.9375rem;
}

.ev-footer__top {
  display: grid;
  gap: 16px;
  padding-bottom: 40px;
  border-bottom: 1px solid var(--rule);
}

.ev-brand--foot { margin-right: 0; gap: 14px; }
.ev-brand--foot .ev-brand__mark { width: 44px; height: 44px; }
.ev-brand--foot .ev-brand__name {
  font-size: clamp(2.5rem, 6vw, 4.5rem);
  white-space: normal;
}

.ev-footer__lede { max-width: 36rem; color: var(--ink-2); }

.ev-footer__grid {
  display: grid;
  gap: 32px;
  padding-top: 36px;
}

.ev-footer__label {
  margin-bottom: 12px;
  color: var(--ink);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.ev-footer__links,
.ev-footer__facts {
  list-style: none;
  margin: 0;
  padding: 0;
}

.ev-footer__links {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 24px;
}

.ev-footer__links a {
  display: inline-block;
  padding: 6px 0;
  color: var(--ink-2);
  text-decoration: none;
  transition: color var(--t);
}

.ev-footer__links a:hover {
  color: var(--brand-primary);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.ev-footer__facts li + li { margin-top: 6px; }

.ev-footer__legal {
  margin-top: 40px;
  padding-top: 24px;
  border-top: 1px solid var(--rule);
  font-size: 0.8125rem;
  line-height: 1.55;
}

.ev-footer__legal p + p { margin-top: 8px; }

@media (min-width: 768px) {
  .ev-footer__grid { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr); gap: 48px; }
}

@media (min-width: 1024px) {
  .ev-footer { padding: 88px 0 48px; }
  .ev-footer__top {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: var(--ledger-gap);
    align-items: end;
  }
}

/* ---- lightbox (a native dialog, white like the page) ---- */

.ev-lb {
  width: 100vw;
  max-width: 100vw;
  height: 100vh;
  height: 100dvh;
  max-height: 100dvh;
  margin: 0;
  padding: 0;
  border: 0;
  background: var(--light-primary);
  color: var(--ink);
}

.ev-lb[open] {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
}

.ev-lb::backdrop { background: rgba(255, 255, 255, 0.96); }

.ev-lb__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 12px var(--gutter);
}

.ev-lb__count {
  color: var(--muted);
  font-size: 0.8125rem;
  font-variant-numeric: tabular-nums;
}

.ev-lb__fig {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: 12px;
  min-height: 0;
  margin: 0;
  padding: 0 var(--gutter);
}

.ev-lb__img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: contain;
}

.ev-lb__cap {
  color: var(--muted);
  font-size: 0.875rem;
  text-align: center;
}

.ev-lb__nav {
  display: flex;
  justify-content: center;
  gap: 12px;
  padding: 16px var(--gutter) 20px;
}

.ev-lb__nav[hidden] { display: none; }

.ev-lb__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--ink);
  border-radius: 2px;
  background: var(--light-primary);
  color: var(--ink);
  cursor: pointer;
  transition: background-color var(--t), color var(--t);
}

.ev-lb__btn:hover { background: var(--ink); color: var(--light-primary); }

/* ---- the generated related-projects block: its serif headings use the one weight Instrument Serif has (no faux bold) ---- */

.related-projects h2,
.related-projects h3 { font-weight: 400; }

/* ---- the fleet contact pop-up, in this theme's type (the module itself is appended below, untouched) ---- */

.cm-modal .cm-modal__title {
  font-family: var(--font-display);
  font-size: 1.875rem;
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -0.01em;
}

.cm-modal .cm-modal__panel { border-radius: 2px; }

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}


/* ==== contact-modal (fleet rollout — see tooling/add-contact-modal.mjs) ==== */
.cm-modal {
    /* Re-assert the UA's dialog centering: universal "* { margin: 0 }" resets
       (sattva/purva families and others) strip it, pinning the dialog top-left. */
    margin: auto;
    width: min(100%, 28rem);
    padding: 1rem;
    border: 0;
    background: transparent;
    overscroll-behavior: contain;
    --cm-accent: var(--brand-primary, #830039);
    --cm-ink: #ffffff;
}

/* Browsers without <dialog> ignore [open] and would render the form inline. */
.cm-modal:not([open]) {
    display: none;
}

/* Literal scrim: ::backdrop cannot reliably see page custom properties. */
.cm-modal::backdrop {
    background: rgba(15, 23, 42, 0.6);
}

.cm-modal__panel {
    position: relative;
    padding: 1.5rem;
    border-radius: 0.75rem;
    background: #ffffff;
    color: #1f2937;
    font-family: inherit;
    box-shadow: 0 20px 25px rgba(15, 23, 42, 0.15);
}

.cm-modal__title {
    margin: 0 0 1.25rem;
    padding-right: 2.5rem;
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.3;
    color: #1f2937;
}

.cm-modal__close {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    border: 0;
    border-radius: 0.25rem;
    background: transparent;
    color: #475569;
    cursor: pointer;
    font-size: 1.5rem;
    line-height: 1;
}

.cm-modal__close:hover {
    background: #f1f5f9;
    color: #0f172a;
}

.cm-modal__close:focus-visible {
    outline: 2px solid var(--cm-accent);
    outline-offset: 2px;
}

.cm-form {
    display: grid;
    gap: 1rem;
}

.cm-form__field {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    text-align: left;
}

.cm-form__field label {
    font-size: 0.85rem;
    font-weight: 600;
    color: #1f2937;
}

/* Form controls don't inherit fonts — font: inherit closes the gap. */
.cm-form input,
.cm-form textarea {
    width: 100%;
    min-width: 0;
    font: inherit;
    color: #1f2937;
    background: #ffffff;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    padding: 0.6rem 0.75rem;
}

.cm-form input:focus-visible,
.cm-form textarea:focus-visible {
    outline: 2px solid var(--cm-accent);
    outline-offset: 1px;
}

.cm-form textarea {
    min-height: 5.5rem;
    resize: vertical;
}

.cm-form__submit {
    border: 0;
    border-radius: 6px;
    background: var(--cm-accent);
    color: var(--cm-ink);
    cursor: pointer;
    font: inherit;
    font-weight: 600;
    padding: 0.75rem 1.5rem;
}

.cm-form__submit:hover {
    opacity: 0.92;
}

.cm-form__submit:focus-visible {
    outline: 2px solid #1f2937;
    outline-offset: 2px;
}

.cm-form__hint {
    margin: 0;
    font-size: 0.8rem;
    line-height: 1.55;
    color: #64748b;
}

.cm-form__hint a {
    color: inherit;
    text-decoration: underline;
}

/* Class-based, so it cannot fight any inline body.style.overflow use. */
body.has-modal-open {
    overflow: hidden;
}

@media (prefers-reduced-motion: no-preference) {
    .cm-modal[open] {
        animation: cm-modal-in 160ms ease-out;
    }

    .cm-modal[open]::backdrop {
        animation: cm-modal-backdrop-in 160ms ease-out;
    }
}

@keyframes cm-modal-in {
    from {
        opacity: 0;
        transform: translateY(0.5rem);
    }
}

@keyframes cm-modal-backdrop-in {
    from {
        opacity: 0;
    }
}
