/* Bay Motors — editorial.css (2026-08-28)
   Design skin ported from the Hermes towing-redesign concept (worktree
   website-towing-redesign, commit 852646c) onto the REAL main-site content.
   Loads after site.css and scopes everything to body.ed, so removing the class
   (or this file) restores the previous look. Brand red, phone, hours, callbar
   and all locked copy are untouched.

   What this layer changes:  typography (condensed display face), left-aligned
   editorial hero, calmer surfaces (no aurora, no neon, no spotlight cards),
   light/dark section rhythm, numbered service index, top-rule process steps,
   pull-quote review, film-strip gallery, red call band, mono footer labels,
   6-item nav with a hamburger under 900px, slim cookie bar.
   What it does NOT change: any content, any URL, any form, the callbar. */

/* Display face for the loud moments (hero H1, route cards, red band).
   Shipped as Barlow Condensed ExtraBold Italic (OFL) under the alias "Bay Display".
   Brian's pick is Racer Italic (fgstudios); the free download is CC BY-NC-ND, so it
   ships only once Racer Pro is licensed: drop racer-italic.woff2 into assets/fonts,
   point this src at it, and re-run apply-editorial.py for the preload. */
@font-face {
  font-family: "Bay Display";
  src: url("/assets/fonts/barlow-condensed-800-italic.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* Barlow Condensed (OFL) self-hosted, latin subset, 15 KB each. No request to
   Google, no third party on the page, no render dependency on someone else's CDN. */
@font-face { font-family: "Barlow Condensed"; src: url("/assets/fonts/barlow-condensed-700.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "Barlow Condensed"; src: url("/assets/fonts/barlow-condensed-800.woff2") format("woff2"); font-weight: 800; font-style: normal; font-display: swap; }

:root {
  --ed-racer: "Bay Display", "Barlow Condensed", "Arial Narrow", Impact, sans-serif;
  --ed-display: "Barlow Condensed", "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  --ed-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --ed-night: #0d1016;
  --ed-night-2: #14181f;
  --ed-steel: #1c2129;
  --ed-paper: #f4f1ea;      /* warm off-white for light sections */
  --ed-paper-2: #ebe7de;
  --ed-ink-on-paper: #14171c;
  --ed-muted-on-paper: #5b6068;
  --ed-line-dark: rgba(255, 255, 255, 0.14);
  --ed-line-light: rgba(20, 23, 28, 0.18);
  --ed-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

/* ---------- Base: kill the decorative FX, widen the column ---------- */
.ed { background: var(--ed-night); }
/* Light leaks (owner call 2026-08-28: keep them). body::before/::after glow pools
   and the site.js .has-aurora beams stay on; only the light paper sections, the
   red band and the hero carry class no-aurora. Spotlight card rings stay off. */
.ed .spot-ring, .ed .spot-sheen { display: none !important; }
.ed .ed-light, .ed .call-first, .ed .ed-route, .ed .ed-ribbon { position: relative; z-index: 1; }
.ed .checker { display: none; }
.ed .wrap { max-width: 1200px; padding: 0 24px; }
@media (min-width: 1800px) { .ed .wrap { max-width: 1320px; } }
.ed section { padding: clamp(64px, 8vw, 112px) 0; }
.ed section.alt { background: rgba(20, 24, 31, 0.55); }
.ed .card, .ed .step { transition: none; }
.ed .card:hover, .ed .step:hover { transform: none; box-shadow: none; }

/* ---------- Type ---------- */
.ed .ed-eyebrow, .ed .eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  color: var(--red-link); font: 800 0.72rem/1 var(--ed-mono);
  letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 0;
}
/* Small red type: #e11d34 measures 4.2:1 on the night surface and 4.3:1 on paper,
   both under the 4.5:1 AA floor. Lighter red on dark, darker red on paper. */
.ed .ed-light .ed-eyebrow, .ed .ed-light .eyebrow, .ed .ed-light .ed-alert strong { color: var(--red-dark); }
.ed .hero .ed-eyebrow { color: var(--red-link); }
.ed .ed-eyebrow::before, .ed .eyebrow::before { content: ""; width: 28px; height: 2px; background: currentColor; }
.ed .section-title {
  font: 800 clamp(2.4rem, 5.2vw, 4.6rem)/0.92 var(--ed-display);
  letter-spacing: -0.02em; text-transform: uppercase; margin: 14px 0 14px; max-width: 16ch;
}
.ed .section-intro { font-size: clamp(1rem, 1.5vw, 1.15rem); line-height: 1.55; max-width: 60ch; margin-bottom: 36px; }
.ed .ed-light { background: var(--ed-paper); color: var(--ed-ink-on-paper); }
.ed .ed-light .section-intro, .ed .ed-light .card p, .ed .ed-light .form-note { color: var(--ed-muted-on-paper); }
.ed .ed-light a { color: var(--red-dark); }

/* ---------- Status rail + header ---------- */
.ed .ed-status { background: var(--red-dark); color: #fff; font: 700 0.68rem/1 var(--ed-mono); letter-spacing: 0.1em; text-transform: uppercase; }
.ed .ed-status .wrap { height: 30px; display: flex; align-items: center; justify-content: space-between; }
.ed .ed-status a { color: #fff; text-decoration: none; }
.ed .ed-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #fff; margin-right: 8px; box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.22); }

.ed .site-header { border-bottom: 1px solid var(--ed-line-dark); background: rgba(13, 16, 22, 0.97); }
.ed .site-header .wrap { display: grid; grid-template-columns: auto 1fr auto; gap: 24px; min-height: 72px; align-items: center; }
.ed .site-header .logo { font: 800 1.35rem/1 var(--ed-display); letter-spacing: 0.04em; text-transform: uppercase; }
/* Wordmark aura (Brian, 2026-08-28): red neon spill on BAY MOTORS, one slow breath
   every 7 seconds. White core, red halo, same language as the old neon sign. The
   header is opaque so the repaint never touches the video. Tagline stays clean. */
.ed .site-header .logo, .ed .site-footer .logo {
  text-shadow: 0 0 5px rgba(var(--rf-red), 0.35), 0 0 12px rgba(var(--rf-red), 0.22);
}
.ed .site-header .logo small { text-shadow: none; }
@media (prefers-reduced-motion: no-preference) {
  .ed .site-header .logo, .ed .site-footer .logo { animation: ed-logo-breathe 7s ease-in-out infinite; }
}
@keyframes ed-logo-breathe {
  0%, 100% { text-shadow: 0 0 5px rgba(var(--rf-red), 0.35), 0 0 12px rgba(var(--rf-red), 0.22); }
  50%      { text-shadow: 0 0 3px rgba(255, 255, 255, 0.35), 0 0 10px rgba(var(--rf-red), 0.9), 0 0 26px rgba(var(--rf-red), 0.6), 0 0 48px rgba(var(--rf-red), 0.32); }
}
.ed .site-header .logo small { display: block; margin-top: 5px; color: var(--ink-soft); font: 700 0.56rem/1 var(--ed-mono); letter-spacing: 0.18em; text-transform: uppercase; }
.ed .site-nav { justify-content: center; gap: 26px; overflow: visible; }
.ed .site-nav a { position: relative; color: var(--ink-soft); font-size: 0.86rem; font-weight: 700; opacity: 1; padding: 26px 0; box-shadow: none; }
.ed .site-nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 18px; height: 2px; background: var(--red); transition: right 0.35s var(--ed-ease); }
.ed .site-nav a:hover, .ed .site-nav a[aria-current="page"] { color: #fff; box-shadow: none; }
.ed .site-nav a:hover::after, .ed .site-nav a[aria-current="page"]::after { right: 0; }
.ed .header-phone { display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; background: var(--red); color: #fff; font-size: 0.9rem; font-weight: 800; border-radius: 0; }
.ed .header-phone:hover { background: var(--red-dark); }
.ed .header-phone small { display: none; }
.ed .ed-menu { display: none; width: 44px; height: 44px; background: transparent; border: 1px solid var(--ed-line-dark); color: #fff; cursor: pointer; padding: 0; }
.ed .ed-menu-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.ed .ed-menu::before, .ed .ed-menu::after { content: ""; display: block; width: 20px; height: 2px; background: currentColor; margin: 5px auto; transition: transform 0.25s; }
.ed .ed-menu[aria-expanded="true"]::before { transform: translateY(3.5px) rotate(45deg); }
.ed .ed-menu[aria-expanded="true"]::after { transform: translateY(-3.5px) rotate(-45deg); }

/* ---------- Hero: left-aligned editorial ---------- */
.ed .hero { text-align: left; padding: 0; min-height: min(780px, calc(100svh - 102px)); display: grid; align-items: end; }
@media (min-width: 901px) { .ed .hero-video { filter: saturate(0.75) contrast(1.06); } }
.ed .hero::before {
  background:
    linear-gradient(90deg, rgba(13, 16, 22, 0.94) 0%, rgba(13, 16, 22, 0.78) 46%, rgba(13, 16, 22, 0.18) 100%),
    linear-gradient(0deg, var(--ed-night) 0%, rgba(13, 16, 22, 0) 38%);
}
.ed .hero .wrap { width: 100%; padding-top: clamp(72px, 11vh, 120px); padding-bottom: clamp(56px, 8vh, 96px); }
.ed .hero-copy { max-width: 880px; }
.ed .hero h1, .ed .hero h1.neon-sign {
  font: 400 clamp(3.2rem, 8vw, 7.4rem)/0.9 var(--ed-racer);
  letter-spacing: -0.01em; text-transform: uppercase; max-width: 10ch; padding-right: 0.25em;
  margin: 18px 0 22px; color: #fff; isolation: auto;
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.55);
}
.ed .hero h1::before, .ed .hero h1::after { display: none; animation: none; }
.ed .hero h1 .signal { color: var(--red); }
.ed .hero p.sub { margin: 0 0 22px; max-width: 54ch; font-size: clamp(1rem, 1.6vw, 1.2rem); line-height: 1.55; color: rgba(255, 255, 255, 0.82); text-shadow: 0 1px 2px rgba(0, 0, 0, 0.7); }
.ed .hero .hours-note { display: block; margin: 0 0 14px; padding: 0; background: none; border-radius: 0; font: 700 0.78rem/1.5 var(--ed-mono); letter-spacing: 0.04em; color: var(--gold-bright); }
.ed .hero .hours-note:empty { min-height: 1.5em; }
.ed .hero .cta-row { justify-content: flex-start; gap: 12px; }
.ed .hero-proof { margin-top: 26px; font: 700 0.74rem/1.6 var(--ed-mono); letter-spacing: 0.04em; color: rgba(255, 255, 255, 0.8); text-shadow: 0 1px 2px rgba(0, 0, 0, 0.7); }
.ed .hero-proof .stars { color: var(--gold-bright); letter-spacing: 2px; margin-right: 6px; }
.ed .hero-proof a { color: #fff; }
.ed .hero-proof span + span::before { content: "·"; margin: 0 10px; opacity: 0.6; }
.ed .hero .ed-eyebrow { background: rgba(13, 16, 22, 0.72); padding: 7px 10px; }
.ed .hero-video-toggle { z-index: 3; }

/* ---------- Buttons: square, arrow on hover ---------- */
.ed .btn { display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: 52px; padding: 0 22px; border-radius: 0; font-size: 0.92rem; font-weight: 800; transition: transform 0.28s var(--ed-ease), background 0.28s, border-color 0.28s; }
.ed .btn::after { content: "↗"; font-size: 1.05rem; transition: transform 0.28s var(--ed-ease); }
.ed .btn:hover { transform: translateY(-2px); }
.ed .btn:hover::after { transform: translate(3px, -3px); }
.ed .btn-call { background: var(--red); color: #fff; }
.ed .btn-call:hover { background: var(--red-dark); }
.ed .hero .btn-ghost, .ed .btn-ghost { background: transparent; border-color: rgba(255, 255, 255, 0.45); color: #fff; }
.ed .hero .btn-ghost:hover, .ed .btn-ghost:hover { border-color: #fff; background: rgba(255, 255, 255, 0.08); }
.ed .btn-ghost-dark { border-color: rgba(255, 255, 255, 0.35); color: var(--text); }
.ed .ed-light .btn-ghost-dark { color: var(--ed-ink-on-paper); border-color: var(--ed-line-light); }
.ed .ed-light .btn-ghost-dark:hover { border-color: var(--ed-ink-on-paper); }
@media (prefers-reduced-motion: reduce) { .ed .btn:hover, .ed .btn:hover::after { transform: none; } }

/* ---------- Route split ---------- */
.ed .ed-route { display: grid; grid-template-columns: 1fr 1fr; background: var(--ed-paper); color: var(--ed-ink-on-paper); border-bottom: 1px solid var(--ed-line-light); }
.ed .ed-route-card { position: relative; min-height: 300px; padding: clamp(32px, 5vw, 68px); display: flex; flex-direction: column; justify-content: flex-end; text-decoration: none; color: inherit; overflow: hidden; }
.ed .ed-route-card + .ed-route-card { border-left: 1px solid var(--ed-line-light); }
.ed .ed-route-card::before { content: ""; position: absolute; inset: 0; background: var(--red); transform: translateY(101%); transition: transform 0.55s var(--ed-ease); }
.ed .ed-route-card > * { position: relative; }
.ed .ed-route-card:hover::before, .ed .ed-route-card:focus-visible::before { transform: none; }
.ed .ed-route-card:hover, .ed .ed-route-card:focus-visible { color: #fff; }
.ed .ed-route-card small { font: 700 0.68rem/1 var(--ed-mono); letter-spacing: 0.12em; text-transform: uppercase; }
.ed .ed-route-card h2 { font: 400 clamp(2rem, 3.6vw, 3.7rem)/0.94 var(--ed-racer); text-transform: uppercase; letter-spacing: -0.01em; margin: 16px 0 12px; max-width: 13ch; padding-right: 0.25em; }
.ed .ed-route-card p { max-width: 44ch; line-height: 1.5; }
.ed .ed-route-arrow { position: absolute; right: 30px; top: 26px; font: 300 2.2rem/1 var(--font); }

/* ---------- Proof ribbon ---------- */
.ed .ed-ribbon { background: var(--red); color: #fff; }
.ed .ed-ribbon .wrap { display: grid; grid-template-columns: repeat(3, 1fr); padding: 0 24px; }
.ed .ed-ribbon a, .ed .ed-ribbon div { padding: 22px 26px; text-decoration: none; color: #fff; border-right: 1px solid rgba(255, 255, 255, 0.28); }
.ed .ed-ribbon > .wrap > :last-child { border-right: 0; }
.ed .ed-ribbon strong { display: block; font-size: 0.98rem; font-weight: 800; margin-bottom: 4px; }
.ed .ed-ribbon span { font-size: 0.8rem; opacity: 1; }

/* ---------- Service index (numbered list + image panel) ---------- */
.ed .ed-service-layout { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(28px, 6vw, 80px); align-items: stretch; margin-top: 8px; }
.ed .ed-service-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ed-line-light); }
.ed .ed-service-list li { border-bottom: 1px solid var(--ed-line-light); }
.ed .ed-service-list a, .ed .ed-service-list button { width: 100%; display: grid; grid-template-columns: 44px 1fr auto; align-items: center; min-height: 68px; padding: 0; background: none; border: 0; color: inherit; text-align: left; text-decoration: none; cursor: pointer; font: 800 clamp(1rem, 1.55vw, 1.25rem)/1.1 var(--font); }
.ed .ed-service-list small { font: 700 0.62rem/1 var(--ed-mono); color: var(--ed-muted-on-paper); }
.ed .ed-service-list i { font-style: normal; opacity: 0; transform: translateX(-8px); transition: 0.3s; }
.ed .ed-service-list a:hover, .ed .ed-service-list button:hover, .ed .ed-service-list [aria-current="true"] { color: var(--red-dark); }
.ed .ed-service-list a:hover i, .ed .ed-service-list button:hover i, .ed .ed-service-list [aria-current="true"] i { opacity: 1; transform: none; }
.ed .ed-service-list p { display: none; margin: 0 0 16px 44px; color: var(--ed-muted-on-paper); font-size: 0.92rem; line-height: 1.5; max-width: 40ch; }
.ed .ed-service-list li.is-active p { display: block; }
.ed .ed-service-visual { position: relative; min-height: 520px; overflow: hidden; background: var(--ed-night); }
.ed .ed-service-visual img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(0.8); transition: opacity 0.4s, transform 0.7s var(--ed-ease); }
.ed .ed-service-visual::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(13, 16, 22, 0.82), transparent 55%); }
.ed .ed-service-caption { position: absolute; z-index: 2; left: 28px; right: 28px; bottom: 26px; color: #fff; }
.ed .ed-service-caption small { font: 700 0.62rem/1 var(--ed-mono); letter-spacing: 0.12em; text-transform: uppercase; }
.ed .ed-service-caption p { font: 800 1.15rem/1.3 var(--font); max-width: 30ch; margin: 10px 0 0; }
.ed .ed-services-all { margin-top: 56px; padding-top: 28px; border-top: 1px solid var(--ed-line-light); }
.ed .ed-services-all h3 { font: 800 0.72rem/1 var(--ed-mono); letter-spacing: 0.14em; text-transform: uppercase; color: var(--ed-muted-on-paper); margin-bottom: 18px; }
.ed .service-list { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px 28px; }
.ed .service-list li { color: var(--ed-ink-on-paper); font-size: 0.92rem; }
.ed .service-list li::before { color: var(--red-dark); }

/* ---------- Alert band (free car help) ---------- */
.ed .ed-alert { border: 2px solid var(--red); padding: 26px 30px; margin-top: 8px; display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: center; }
.ed .ed-alert strong { display: block; color: var(--red-link); font: 800 0.7rem/1.4 var(--ed-mono); letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 8px; }
.ed .ed-alert p { margin: 0; max-width: 62ch; }
.ed .ed-alert .cta-row { justify-content: flex-start; }

/* ---------- Process steps: top rule, small number ---------- */
.ed .steps { grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 44px; counter-reset: step; }
.ed .step { background: none; border: 0; border-top: 2px solid currentColor; border-radius: 0; padding: 22px 0 0; min-height: 150px; }
.ed .step::before { counter-increment: step; content: "0" counter(step); display: block; width: auto; height: auto; border-radius: 0; background: none; color: var(--red-link); font: 700 0.7rem/1 var(--ed-mono); margin-bottom: 20px; }
.ed .step h3 { font-size: 1.1rem; margin-bottom: 8px; }
.ed .step p { font-size: 0.92rem; color: var(--ink-soft); }

/* ---------- Reviews: pull quote + flat cards ---------- */
.ed .ed-review-feature { display: grid; grid-template-columns: 7fr 5fr; gap: clamp(32px, 6vw, 88px); align-items: end; }
.ed .ed-review-feature > div:first-child blockquote { font: 800 clamp(1.9rem, 4.2vw, 4.2rem)/1.02 var(--font); letter-spacing: -0.035em; margin: 22px 0 26px; }
.ed .ed-review-feature cite { font: 700 0.72rem/1 var(--ed-mono); font-style: normal; letter-spacing: 0.1em; text-transform: uppercase; color: var(--red-link); }
.ed .review-card { background: none; border: 1px solid var(--ed-line-dark); border-radius: 0; padding: 24px; box-shadow: none; }
.ed .review-card blockquote { font-size: 0.98rem; line-height: 1.55; color: var(--text); }
.ed .review-card figcaption { font: 700 0.72rem/1.5 var(--ed-mono); letter-spacing: 0.06em; text-transform: uppercase; color: var(--red-link); }
.ed .review-card figcaption small { color: var(--ink-soft); text-transform: none; letter-spacing: 0; font: 400 0.8rem/1.4 var(--font); }
.ed .ed-review-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 44px; }
.ed .review-links { margin-top: 28px; }
.ed .review-links a { color: #fff; }

/* ---------- Film strip gallery ---------- */
.ed .ed-film { display: grid; grid-template-columns: 1.35fr 0.75fr 1fr; gap: 12px; margin-top: 40px; }
.ed .ed-film figure { position: relative; margin: 0; min-height: 320px; overflow: hidden; background: var(--ed-night); }
.ed .ed-film figure:nth-child(2) { margin-top: 64px; }
.ed .ed-film figure:nth-child(n+4) { min-height: 200px; }
.ed .ed-film-rest { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; margin-top: 12px; }
.ed .ed-film img, .ed .ed-film-rest img { width: 100%; height: 100%; object-fit: cover; filter: saturate(0.8); transition: transform 0.8s var(--ed-ease); }
.ed .ed-film figure:hover img, .ed .ed-film-rest figure:hover img { transform: scale(1.035); }
.ed .ed-film figcaption, .ed .ed-film-rest figcaption { position: absolute; left: 0; bottom: 0; background: var(--ed-night); color: #fff; padding: 9px 12px; font: 700 0.62rem/1.3 var(--ed-mono); letter-spacing: 0.08em; text-transform: uppercase; }
.ed .ed-film-rest figure { position: relative; margin: 0; aspect-ratio: 4 / 3; overflow: hidden; background: var(--ed-night); }
.ed .ed-light .proof-bullets li { color: var(--ed-ink-on-paper); }
.ed .ed-light .proof-bullets li::before { color: var(--red-dark); }

/* ---------- Watch ---------- */
.ed .video-thumb { border-radius: 0; box-shadow: none; }
.ed .video-thumb:hover { transform: none; box-shadow: none; }
.ed .video-play { border-radius: 0; }

/* ---------- Red call band (locked copy lives in the markup) ---------- */
.ed .call-first { background: var(--red); color: #fff; text-align: left; padding: clamp(64px, 8vw, 112px) 0; }
.ed .call-first::before { display: none; }
.ed .call-first .wrap { display: grid; grid-template-columns: 1fr auto; gap: 40px; align-items: end; }
.ed .call-first h2 { font: 400 clamp(2.6rem, 6.2vw, 6.2rem)/0.9 var(--ed-racer); letter-spacing: -0.01em; text-transform: uppercase; max-width: 11ch; margin: 0 0 18px; padding-right: 0.25em; }
.ed .call-first p { margin: 0; max-width: 52ch; opacity: 1; color: #fff; }
.ed .call-first .btn { border-color: #fff; background: transparent; color: #fff; min-width: 220px; }
.ed .call-first .btn:hover { background: rgba(255, 255, 255, 0.12); }
.ed .call-first .cta-row { flex-direction: column; align-items: stretch; }

/* ---------- FAQ: flat rows ---------- */
.ed .faq details { background: none; border: 0; border-top: 1px solid var(--ed-line-dark); border-radius: 0; margin: 0; }
.ed .faq details:last-of-type { border-bottom: 1px solid var(--ed-line-dark); }
.ed .faq summary { padding: 20px 48px 20px 0; font-size: 1.05rem; }
.ed .faq summary::after { right: 4px; }
.ed .faq details p { padding: 0 0 20px; max-width: 70ch; }

/* ---------- Contact + form ---------- */
.ed .contact-grid { grid-template-columns: 5fr 7fr; gap: clamp(36px, 6vw, 96px); }
.ed .contact-card strong { font: 700 0.66rem/1 var(--ed-mono); letter-spacing: 0.12em; text-transform: uppercase; color: var(--red-link); margin-bottom: 6px; }
.ed .contact-card p { margin-bottom: 20px; }
.ed .lead-form { max-width: none; grid-template-columns: 1fr 1fr; gap: 18px; }
.ed .lead-form label { font: 700 0.68rem/1.3 var(--ed-mono); letter-spacing: 0.06em; text-transform: uppercase; }
.ed .lead-form label:nth-of-type(n+3), .ed .lead-form .consent, .ed .lead-form button, .ed .lead-form .form-note, .ed .lead-form .form-status { grid-column: 1 / -1; }
.ed .lead-form input[type="text"], .ed .lead-form input[type="tel"], .ed .lead-form textarea { border-radius: 0; background: transparent; border-color: rgba(255, 255, 255, 0.28); padding: 14px; font-size: 1rem; }
.ed .lead-form textarea { min-height: 140px; }
.ed .lead-form .consent { text-transform: none; letter-spacing: 0; font: 400 0.84rem/1.5 var(--font); }
.ed .lead-form .btn { width: max-content; }
.ed .map-btns .btn { min-height: 44px; font-size: 0.86rem; }
.ed .map-load { border-radius: 0; }
.ed .map-embed iframe { border-radius: 0; }

/* ---------- Content pages (service pages, guides) ---------- */
.ed .content h1 { font: 800 clamp(2.6rem, 6vw, 5.6rem)/0.9 var(--ed-display); letter-spacing: -0.025em; text-transform: uppercase; max-width: 14ch; margin-bottom: 20px; }
.ed .content h2 { font: 800 clamp(1.5rem, 2.6vw, 2.2rem)/1 var(--ed-display); text-transform: uppercase; letter-spacing: -0.01em; margin: 44px 0 14px; }
.ed .content p { color: var(--ink-soft); }
.ed .content > .wrap > p:first-of-type { color: var(--text); font-size: 1.1rem; }
.ed .content-photo { border-radius: 0; box-shadow: none; }
.ed .content-photo figcaption { font: 700 0.62rem/1.4 var(--ed-mono); letter-spacing: 0.08em; text-transform: uppercase; }
.ed .card { background: none; border: 1px solid var(--ed-line-dark); border-radius: 0; padding: 24px; }
.ed .card h3 { font: 800 1.35rem/1 var(--ed-display); text-transform: uppercase; margin-bottom: 10px; }
.ed .card a.more { color: var(--red-link); }
.ed .card-grid { gap: 12px; }

/* ---------- Footer ---------- */
.ed .site-footer { border-top: 1px solid var(--ed-line-dark); padding: 64px 0 96px; color: var(--ink-soft); }
.ed .site-footer .logo { font: 800 1.5rem/1 var(--ed-display); letter-spacing: 0.04em; text-transform: uppercase; }
.ed .footer-phone { display: block; margin-top: 16px; font: 800 1.9rem/1 var(--ed-display); }
.ed .footer-col h3 { font: 800 0.66rem/1 var(--ed-mono); letter-spacing: 0.14em; }
.ed .footer-col a { color: var(--ink-soft); }
.ed .footer-maps a { border-radius: 0; }
.ed .footer-bottom { font-size: 0.78rem; }
.ed .site-footer .fine { opacity: 0.82; }

/* ---------- Cookie bar: slim, full width, never over the hero copy ---------- */
.ed .cookie-note { left: 0; right: 0; bottom: 0; width: 100%; max-width: none; border-radius: 0; border: 0; border-top: 1px solid var(--ed-line-dark); background: rgba(13, 16, 22, 0.96); padding: 10px 100px 10px 24px; display: flex; gap: 18px; align-items: center; box-shadow: none; }
.ed .cookie-note p { margin: 0; flex: 1; font-size: 0.78rem; line-height: 1.4; }
.ed .cookie-actions { flex: none; }
.ed .btn-cookie-accept, .ed .btn-cookie-decline { border-radius: 0; padding: 8px 14px; font-size: 0.82rem; }
.ed .chat-fab { bottom: 12px; }
.ed .chat-panel { border-radius: 0; }

/* ---------- Mobile call bar (locked: stays, restyled only) ---------- */
.ed .callbar { border-top: 1px solid var(--ed-line-dark); padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); }
.ed .callbar a { border-radius: 0; min-height: 48px; display: grid; place-items: center; }
.ed .callbar .cb-text { background: transparent; color: #fff; border: 1px solid var(--ed-line-dark); }
.ed .callbar.after-hours .cb-text { background: var(--red); color: #fff; border-color: var(--red); }
.ed .callbar.after-hours .cb-call { background: transparent; color: #fff; border: 1px solid var(--ed-line-dark); }

/* ---------- Responsive ---------- */
@media (max-width: 1100px) {
  .ed .ed-review-feature { grid-template-columns: 1fr; }
  .ed .ed-review-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 900px) {
  .ed .site-header .wrap { grid-template-columns: auto auto 1fr; gap: 12px; min-height: 64px; flex-wrap: nowrap; padding-top: 0; padding-bottom: 0; }
  .ed .ed-menu { display: block; grid-column: 3; justify-self: end; }
  .ed .header-phone { grid-column: 2; grid-row: 1; padding: 0 14px; min-height: 40px; font-size: 0.82rem; }
  .ed .site-nav { position: absolute; left: 0; right: 0; top: 64px; order: 0; width: auto; background: var(--ed-night); border-bottom: 1px solid var(--ed-line-dark); display: grid; gap: 0; padding: 10px 24px 20px; transform: translateY(-120%); opacity: 0; pointer-events: none; transition: transform 0.35s var(--ed-ease), opacity 0.2s; }
  .ed .site-nav.is-open { transform: none; opacity: 1; pointer-events: auto; }
  .ed .site-nav a { padding: 15px 0; border-bottom: 1px solid var(--ed-line-dark); font-size: 1rem; }
  .ed .site-nav a::after { display: none; }
  .ed .hero::before { background: linear-gradient(0deg, var(--ed-night) 0%, rgba(13, 16, 22, 0.66) 55%, rgba(13, 16, 22, 0.14) 100%); }
  .ed .ed-service-layout, .ed .contact-grid { grid-template-columns: 1fr; }
  .ed .ed-service-visual { min-height: 400px; }
  .ed .ed-film { grid-template-columns: 1fr 1fr; }
  .ed .ed-film figure:first-child { grid-column: 1 / -1; }
  .ed .ed-film figure:nth-child(2) { margin-top: 0; }
  .ed .ed-film-rest { grid-template-columns: repeat(3, 1fr); }
  .ed .call-first .wrap { grid-template-columns: 1fr; }
  .ed .ed-alert { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .ed .wrap { padding: 0 16px; }
  .ed .ed-status .wrap span:last-child { display: none; }
  .ed .ed-status .wrap { font-size: 0.6rem; }
  .ed .site-header .logo { font-size: 1.2rem; }  /* 19.2px bold = large text, red passes at 3:1 */
  .ed .site-header .logo small { font-size: 0.5rem; }
  .ed .hero { min-height: calc(100svh - 94px); }
  .ed .hero .wrap { padding-top: 56px; padding-bottom: 40px; }
  .ed .hero h1, .ed .hero h1.neon-sign { font-size: clamp(2.8rem, 15.5vw, 4.6rem); max-width: 8ch; }
  .ed .hero p.sub { font-size: 0.96rem; max-width: 34ch; }
  .ed .hero .cta-row { display: grid; grid-template-columns: 1fr; gap: 9px; }
  .ed .hero-proof span { display: block; }
  .ed .hero-proof span + span::before { content: none; }
  .ed section { padding: 64px 0; }
  .ed .section-title { font-size: clamp(2.3rem, 12vw, 3.6rem); }
  .ed .ed-route { grid-template-columns: 1fr; }
  .ed .ed-route-card { min-height: 220px; padding: 30px 20px; }
  .ed .ed-route-card + .ed-route-card { border-left: 0; border-top: 1px solid var(--ed-line-light); }
  .ed .ed-ribbon .wrap { grid-template-columns: 1fr; padding: 0; }
  .ed .ed-ribbon a, .ed .ed-ribbon div { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, 0.28); padding: 16px 20px; }
  .ed .ed-service-list a, .ed .ed-service-list button { grid-template-columns: 36px 1fr auto; min-height: 58px; }
  .ed .ed-service-list p { margin-left: 36px; display: block; }
  .ed .ed-service-visual { min-height: 300px; }
  .ed .steps { grid-template-columns: 1fr; gap: 28px; }
  .ed .step { min-height: 0; }
  .ed .ed-review-grid { grid-template-columns: 1fr; }
  .ed .ed-review-feature > div:first-child blockquote { font-size: clamp(1.7rem, 9vw, 2.8rem); }
  .ed .ed-film { grid-template-columns: 1fr; }
  .ed .ed-film figure:first-child { grid-column: auto; }
  .ed .ed-film figure { min-height: 240px; }
  .ed .ed-film-rest { grid-template-columns: 1fr 1fr; }
  .ed .call-first .btn { min-width: 0; width: 100%; }
  .ed .lead-form { grid-template-columns: 1fr; }
  .ed .lead-form label { grid-column: 1 / -1; }
  .ed .lead-form .btn { width: 100%; }
  /* Phones: the note sits under the header, never over the call buttons. */
  .ed .cookie-note { top: 94px; bottom: auto; z-index: 49; padding: 10px 16px; display: block; border-top: 0; border-bottom: 1px solid var(--ed-line-dark); }
  /* Held until the first scroll so the hero fold and its call buttons stay clean. */
  .ed-hold-note .cookie-note { opacity: 0; pointer-events: none; }
  .ed .hero .ed-eyebrow { font-size: 0.62rem; }
  .ed .cookie-note p { margin-bottom: 8px; }
  .ed .chat-fab { bottom: calc(74px + env(safe-area-inset-bottom)); }
  .ed .site-footer { padding-bottom: 120px; }

  /* ---- Phone pass 2026-08-28 (desktop untouched) ---- */
  .ed .ed-status { display: none; }                      /* 30px back to the fold; the phone is in the header */
  /* Phone hero = the shop-floor photo. hero-scene.js draws it on a canvas with
     depth parallax; if that cannot run, this static background is the hero. */
  .ed .hero { background-image: url("/assets/img/scene/shop-floor-m.jpg"); background-position: 62% 50%; }
  .ed .hero-scene { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; display: block; }
  .ed .hero.has-scene .hero-video { display: none; }
  .ed .cookie-note { top: 64px; }
  .ed-hold-note .chat-fab { opacity: 0; pointer-events: none; }  /* hero already has Call, Text and the dock */
  .ed .chat-fab { width: 46px; height: 46px; font-size: 1.25rem; transition: opacity 0.3s; }
  .ed section { padding: 56px 0; }
  .ed .section-intro { margin-bottom: 26px; }
  /* Ribbon: one row, labels only */
  .ed .ed-ribbon .wrap { grid-template-columns: repeat(3, 1fr); }
  .ed .ed-ribbon a, .ed .ed-ribbon div { padding: 14px 10px; border-bottom: 0; border-right: 1px solid rgba(255, 255, 255, 0.28); text-align: center; }
  .ed .ed-ribbon > .wrap > :last-child { border-right: 0; }
  .ed .ed-ribbon strong { font-size: 0.8rem; margin: 0; line-height: 1.2; }
  .ed .ed-ribbon span { display: none; }
  /* Service index: tighter rows, shorter panel, two-column full list */
  .ed .ed-service-list p { font-size: 0.86rem; line-height: 1.45; margin: 0 0 12px 36px; }
  .ed .ed-service-list a, .ed .ed-service-list button { min-height: 52px; font-size: 1rem; }
  .ed .ed-service-visual { min-height: 240px; }
  .ed .ed-services-all { margin-top: 36px; padding-top: 22px; }
  .ed .service-list { grid-template-columns: 1fr 1fr; gap: 8px 14px; }
  .ed .service-list li { font-size: 0.84rem; padding-left: 20px; }
  /* Proof: lighter cards */
  .ed .review-card { padding: 18px; }
  .ed .review-card blockquote { font-size: 0.92rem; }
  .ed .ed-review-grid { gap: 12px; margin-top: 28px; }
  /* Film: three across for the second row */
  .ed .ed-film figure { min-height: 220px; }
  .ed .ed-film-rest { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  .ed .ed-film-rest figcaption { display: none; }
  /* Steps and form */
  .ed .steps { gap: 22px; margin-top: 30px; }
  .ed .step { padding-top: 16px; }
  .ed .step::before { margin-bottom: 12px; }
  .ed .lead-form textarea { min-height: 110px; }
  .ed .lead-form { gap: 14px; }
  /* Tap targets: inline links grow to 24px+ without moving the line box */
  .ed p a, .ed li a, .ed figcaption a, .ed .consent a, .ed .review-links a, .ed .hero-proof a { display: inline-block; padding: 6px 0; margin: -6px 0; }
  .ed .chat-close { width: 32px; height: 32px; display: grid; place-items: center; top: 6px; right: 8px; }
  .ed .site-header .logo { display: inline-block; padding: 7px 0; }
  .ed .site-footer li { margin: 4px 0; }
  .ed .site-footer li a { display: inline-block; padding: 8px 0; margin: -4px 0; }
  .ed .footer-maps a { min-height: 40px; display: inline-flex; align-items: center; }
  .ed .faq summary { padding: 18px 40px 18px 0; font-size: 1rem; }
  .ed .site-footer { padding-top: 48px; }
  .ed .footer-grid { grid-template-columns: 1fr 1fr; gap: 22px; }
  .ed .footer-brand { grid-column: 1 / -1; }
  .ed .footer-col:last-child { grid-column: 1 / -1; }
}
@media (max-width: 359px) {
  /* 320px phones: the header must never scroll sideways. Short label, number stays for screen readers. */
  .ed .site-header .wrap { gap: 8px; padding: 0 12px; }
  .ed .site-header .logo { font-size: 1.05rem; }
  .ed .site-header .logo small { display: none; }
  .ed .header-phone { font-size: 0; padding: 0 12px; min-height: 38px; }
  .ed .header-phone::after { content: "Call"; font-size: 0.82rem; }
  .ed .ed-menu { width: 38px; height: 38px; }
  .ed .site-nav { top: 60px; }
  .ed .hero h1, .ed .hero h1.neon-sign { font-size: clamp(2.5rem, 15vw, 4rem); }
  .ed .callbar { padding: 8px 8px calc(8px + env(safe-area-inset-bottom)); }
  .ed .callbar a { font-size: 0.92rem; }
  .ed .ed-ribbon strong { font-size: 0.72rem; }
  .ed .hero .ed-eyebrow { font-size: 0.56rem; }
}
@media (prefers-reduced-motion: reduce) {
  .ed .site-nav { transition: none; }
  .ed .ed-route-card::before { transition: none; }
  .ed .ed-film img, .ed .ed-film-rest img, .ed .ed-service-visual img { transition: none; }
}
