/* Self-hosted Google Fonts (latin subsets) — generated by pipeline/fonts.mjs */
/* latin-ext */
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/Barlow-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/Barlow-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/Barlow-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/Barlow-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/Barlow-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/Barlow-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/Barlow-700-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Barlow';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/Barlow-700-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/IBMPlexMono-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/IBMPlexMono-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/IBMPlexMono-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/IBMPlexMono-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/IBMPlexMono-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/IBMPlexMono-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/Montserrat-700-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/Montserrat-700-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/fonts/Montserrat-700-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/fonts/Montserrat-700-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(/fonts/Montserrat-700-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(/fonts/Montserrat-700-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Fitch Electric — shared site styles (header responsiveness, hover states,
   interactive-widget states). Page layout/styling stays inline per the design. */

/* ── header: desktop vs mobile (breakpoint 940px, matches the design) ── */
.fe-desktop { display: flex; }
.fe-mobile { display: none; }
span.fe-desktop, a.fe-desktop { display: inline-flex; }
.fe-nav.fe-desktop { display: flex; }

@media (max-width: 940px) {
  .fe-desktop { display: none !important; }
  .fe-mobile { display: flex; }
  span.fe-mobile { display: inline; }
  .fe-bar { gap: 12px; }
}
@media (max-width: 390px) {
  .fe-bar img { height: 26px !important; }
}

.fe-nav-link {
  display: inline-block; font-size: 12.5px; font-weight: 600;
  letter-spacing: .09em; text-transform: uppercase; text-decoration: none;
  color: rgba(255,255,255,.78); padding: 5px 1px; border-bottom: 2px solid transparent;
}
.fe-nav-link:hover { color: #fff; }
.fe-nav-link.is-active { color: #FFC40C; border-bottom-color: #FFC40C; }

.fe-drop { display: none; }
.fe-nav-item:hover .fe-drop,
.fe-nav-item:focus-within .fe-drop { display: block; }

.fe-drop-link {
  font-size: 12px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase;
  text-decoration: none; color: rgba(255,255,255,.8); padding: 11px 18px;
  border-left: 2px solid transparent; white-space: nowrap; display: block;
}
.fe-drop-link:hover, .fe-drop-link:focus-visible {
  color: #FFC40C; background: rgba(255,196,12,.07); border-left-color: #FFC40C;
}
.fe-drop-link.is-active {
  color: #FFC40C; border-left-color: #FFC40C; background: rgba(255,196,12,.05);
}
.fe-macc-link.is-active { color: #FFC40C; border-left-color: #FFC40C; }

.fe-phone { color: rgba(255,255,255,.85); }
.fe-phone:hover { color: #FFC40C; }
.fe-cta:hover { background: #FFD23F !important; }

/* mobile menu */
.fe-burger .fe-bar {
  width: 20px; height: 2px; background: rgba(255,255,255,.9); display: block;
  transition: transform .2s, opacity .15s;
}
.fe-burger[aria-expanded="true"] .fe-bar { background: #FFC40C; }
.fe-burger[aria-expanded="true"] .fe-bar1 { transform: translateY(7px) rotate(45deg); }
.fe-burger[aria-expanded="true"] .fe-bar2 { opacity: 0; }
.fe-burger[aria-expanded="true"] .fe-bar3 { transform: translateY(-7px) rotate(-45deg); }
.fe-mobile-nav:not([hidden]) { display: flex; }
.fe-acc-btn { color: rgba(255,255,255,.9); }
.fe-acc-btn.is-active { color: #FFC40C; }
.fe-acc-btn[aria-expanded="true"] .fe-acc-caret { transform: rotate(180deg); }
.fe-acc-panel:not([hidden]) { display: flex; }
.fe-macc-link {
  display: flex; align-items: center; min-height: 46px; padding: 0 20px 0 34px;
  color: rgba(255,255,255,.75); font-size: 13.5px; font-weight: 600; letter-spacing: .07em;
  text-transform: uppercase; text-decoration: none; border-left: 2px solid rgba(255,196,12,.4);
}
.fe-macc-link:active { color: #FFC40C; }
.fe-mnav-link {
  display: flex; align-items: center; min-height: 52px; padding: 0 20px;
  color: rgba(255,255,255,.9); font-size: 14px; font-weight: 700; letter-spacing: .09em;
  text-transform: uppercase; text-decoration: none;
}
.fe-mnav-link:active, .fe-mnav-link.is-active { color: #FFC40C; }

/* ── interactive widget shared states (calculators) ── */
.fe-chip { cursor: pointer; }
.fe-chip:focus-visible { outline: 2px solid #FFC40C; outline-offset: 2px; }

/* form status line */
.fe-form-status { font-family: 'IBM Plex Mono', monospace; font-size: 12.5px; margin-top: 12px; }
.fe-form-status.is-error { color: #E5484D; }
.fe-form-status.is-ok { color: #2F9E44; }

/* ── review wall: the design pins 3 columns; stack sanely on smaller screens ── */
@media (max-width: 980px) {
  #fe-review-wall { columns: 2 !important; }
}
@media (max-width: 660px) {
  #fe-review-wall { columns: 1 !important; }
}

/* ── hero background video (Surveys & Diagnostics) ── */
.fe-hero-video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; z-index: 0;
}
.fe-hero-scrim {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(19,18,17,.78), rgba(19,18,17,.92));
}
.fe-video-hero > :not(.fe-hero-video):not(.fe-hero-scrim):not(.fe-sky):not(.fe-sky-fade) { position: relative; z-index: 2; }
@media (prefers-reduced-motion: reduce) {
  .fe-hero-video { display: none; }
}

/* ── storm hero sky (Backup-Power): seamless cloud tile drifting right on
   a composited transform (one 3000px tile per loop). Lightning layers sit
   INSIDE the drifting strip — same tile via background:inherit, brightness-
   boosted, opacity-strobed — so strikes stay pixel-aligned with the moving
   clouds (double-image technique). Negative delays: first strike ~3s in. ── */
.fe-sky { position: absolute; top: 0; bottom: 0; left: -3000px; width: calc(100% + 3000px);
  z-index: 0; pointer-events: none; will-change: transform;
  background: url(/media/storm-clouds-loop.webp) left 30% / 3000px auto repeat-x;
  animation: fe-drift 170s linear infinite; }
.fe-sky i { position: absolute; inset: 0; opacity: 0; will-change: opacity; background: inherit; }
.fe-sky i:first-child { filter: brightness(2.8); animation: fe-flash-a 9s ease-out -5.5s infinite; }
.fe-sky i:last-child { filter: brightness(2); animation: fe-flash-b 15.5s ease-out -3s infinite; }
.fe-sky-fade { position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(19,18,17,.38), rgba(19,18,17,.88)); }
@keyframes fe-drift { to { transform: translateX(3000px); } }
/* strike cluster: hit, dip, bigger hit — then darkness */
@keyframes fe-flash-a {
  0%, 91% { opacity: 0; }
  92% { opacity: .62; } 93.5% { opacity: .18; } 95.5% { opacity: .9; }
  100% { opacity: 0; }
}
@keyframes fe-flash-b {
  0%, 92% { opacity: 0; }
  93.5% { opacity: .5; } 95% { opacity: .14; } 96.5% { opacity: .38; }
  100% { opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .fe-sky, .fe-sky i { animation: none; } }

/* ── live "techs on duty" card (contact form, service-call mode only) ── */
.fe-nearby { margin: 0; padding: 14px 16px 15px; background: #EFF6F0;
  border: 1px solid rgba(22, 163, 74, .28); display: flex; flex-direction: column; gap: 6px;
  clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 12px 100%, 0 calc(100% - 12px));
  opacity: 0; transform: translateY(-4px); transition: opacity .28s ease, transform .28s ease; }
.fe-nearby.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .fe-nearby { transition: none; } }
.fe-nearby-head { margin: 0; display: flex; align-items: center; gap: 9px;
  font-family: 'IBM Plex Mono', monospace; font-size: 12.5px; font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase; color: #143A20; }
.fe-nearby-head::before { content: ''; flex: none; width: 9px; height: 9px; border-radius: 50%;
  background: #16A34A; animation: fe-pulse 2s ease-out infinite; }
.fe-nearby-sub { margin: 0; padding-left: 18px; font-size: 13.5px; line-height: 1.55; color: #46584B; }
@keyframes fe-pulse {
  0% { box-shadow: 0 0 0 0 rgba(22, 163, 74, .45); }
  70% { box-shadow: 0 0 0 9px rgba(22, 163, 74, 0); }
  100% { box-shadow: 0 0 0 0 rgba(22, 163, 74, 0); }
}
@media (prefers-reduced-motion: reduce) { .fe-nearby-head::before { animation: none; } }

/* ── city autocomplete dropdown (contact form) — themed, inline below field ── */
.fe-ac { position: absolute; top: 100%; left: 0; right: 0; z-index: 30; margin-top: 4px;
  background: #fff; border: 1px solid #D8D5CA; box-shadow: 0 10px 24px rgba(20, 19, 16, .10);
  max-height: 262px; overflow-y: auto; }
.fe-ac-item { padding: 11px 14px; font-size: 14.5px; color: #33312B; cursor: pointer; }
.fe-ac-item b { font-weight: 700; color: #141310; }
.fe-ac-item:hover, .fe-ac-item.is-active { background: #FFF7DF; color: #141310; }

/* ── a11y niceties ── */
/* the design uses inline display styles everywhere; make [hidden] always win */
[hidden] { display: none !important; }
:focus-visible { outline-color: #FFC40C; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important; animation-iteration-count: 1 !important;
    transition-duration: .01ms !important; scroll-behavior: auto !important;
  }
}

/* ── phone-size tuning: slimmer ticker band, map fills its frame ── */
@media (max-width: 700px) {
  .fe-marquee { padding: 7px 0 !important; }
  .fe-marquee-track { font-size: 10px !important; }
  .fe-marquee-track > span { padding: 0 13px !important; }
  iframe[title="Fitch Electric service area map"] { height: auto !important; aspect-ratio: 488 / 544; }
}

/* ── maintenance-plan unit picker (radio cards) ── */
.fe-plan-opt { position: relative; display: block; background: #fff; border: 1px solid #D8D5CA;
  padding: 16px 18px; cursor: pointer;
  clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 12px 100%, 0 calc(100% - 12px)); }
.fe-plan-opt input { position: absolute; opacity: 0; pointer-events: none; }
.fe-plan-opt:hover { border-color: #B8B4A6; }
.fe-plan-opt:has(input:checked) { border-color: #141310; background: #FFFBEA;
  box-shadow: inset 0 0 0 1px #141310; }
.fe-plan-opt:has(input:focus-visible) { outline: 2px solid #FFC40C; outline-offset: 2px; }

/* ── hover zoom on linked card photos: image scales inside its mask ── */
/* fallback must be a real transform function — "none scale()" is invalid
   and the whole declaration gets dropped (the original bug) */
.fe-slotimg { transform: var(--slot-t, translate(0, 0)); }
a .fe-slotimg { transition: transform .5s cubic-bezier(.2, .6, .2, 1); }
a:hover .fe-slotimg, a:focus-visible .fe-slotimg { transform: var(--slot-t, translate(0, 0)) scale(1.06); }
@media (prefers-reduced-motion: reduce) {
  a .fe-slotimg { transition: none; }
  a:hover .fe-slotimg, a:focus-visible .fe-slotimg { transform: var(--slot-t, translate(0, 0)); }
}

/* ── mobile contact flow: CTA replaces email card; tabs -> emergency ->
   pricing -> fields, with the between-copy hidden ── */
@media (max-width: 700px) {
  .fe-hero-email { display: none !important; }
  .fe-ct-left { display: contents; }
  .fe-ct-grid { gap: 18px !important; }
  .fe-ct-kicker { order: 1; }
  .fe-ct-tabs { order: 2; }
  .fe-ct-price { order: 3; margin-top: 0 !important; }
  .fe-ct-fields { order: 4; }
  .fe-ct-copy, .fe-ct-emerg { display: none !important; }
}
@media (min-width: 701px) {
  .fe-mstart { display: none !important; }
}

/* nearby card refresh state: green dot becomes a spinner while the count
   re-runs for a newly typed city */
.fe-nearby.is-loading .fe-nearby-head::before {
  background: transparent; border: 2px solid rgba(22, 163, 74, .25);
  border-top-color: #16A34A; animation: fe-spin .7s linear infinite;
}
.fe-nearby.is-loading .fe-nearby-sub { opacity: .55; }
@keyframes fe-spin { to { transform: rotate(360deg); } }

/* ── iOS Safari auto-inflates text it deems too small for wide blocks —
   the marquee's long single-line track is its favorite target (10px type
   ballooned into a chunky ticker on iPhone only; desktop at mobile widths
   never does this). 100% = render the sizes we actually set, everywhere. ── */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

/* ── empty form plumbing must not eat flex-gap slots or margins: the
   Turnstile mount and the status line are invisible until they get content,
   but each still consumed a gap slot + margins — ~66px of dead cream between
   the send button and the disclosure notes. :empty stops matching the moment
   Turnstile injects its iframe (so a visible challenge can still appear) or
   a submit result lands in the status line. ── */
#fe-turnstile:empty,
.fe-form-status:empty { display: none; }
#fe-turnstile { margin-top: 0 !important; } /* invisible widget: flex gap is enough */

/* ── iOS: rapid taps on controls must not trigger double-tap zoom.
   `manipulation` disables that one gesture on interactive elements only —
   pinch zoom and double-tap on content stay untouched. ── */
a, button, input, select, textarea, label, summary, [role="button"] {
  touch-action: manipulation;
}

/* ── overscroll zones match what they touch. A root gradient is unusable
   here: it tiles at viewport height, so the canvas beyond the document is
   striped and the color at the page end is scroll-phase luck (iOS showed
   white/amber below the footer). Instead: solid charcoal canvas covers the
   bottom rubber-band and behind-toolbar zones on every page, and an amber
   sheet parked entirely above the document (ink above the origin renders
   during top rubber-band) continues the CSLB bar upward. ── */
html {
  background: #131211;
}
/* iOS Safari tints its chrome (status area, toolbar backdrop) and overscroll
   surfaces from BODY's background-COLOR — html's is ignored (verified by
   probe: html blue / body red → chrome red). Split body's background: the
   sampled color is footer-charcoal, while the visible page background is an
   identical flat cream painted as a background-IMAGE covering the body box.
   !important beats each page's own `body{background:#F6F5F1}` rule.
   Scoped to .fe-page: site.css is also loaded by the service-map iframe,
   whose body must stay transparent to sit on the dark map section. */
body.fe-page {
  background-color: #131211 !important;
  background-image: linear-gradient(#F6F5F1, #F6F5F1) !important;
}
body::before {
  content: "";
  position: absolute;
  top: -120vh;
  left: 0;
  width: 100%;
  height: 120vh;
  background: #FFC40C;
}
