/* ============================================================
   FlexiClean Components — block patterns matching plan §3.4
   Every component is brand-safe (Navy-first 60-30-10).
   ============================================================ */

/* ---------- AVAILABILITY TICKER (§3.3a #7) ---------- */
.fc-ticker {
  background: var(--fc-navy-1);
  border-bottom: 1px solid var(--fc-line);
  font-family: var(--fc-font-mono);
  font-size: 0.78rem;
  color: var(--fc-white);
  padding: 0.5rem 0;
  letter-spacing: 0.04em;
}
.fc-ticker__inner {
  display: flex; gap: 0.65rem; align-items: center; justify-content: center;
  padding-inline: var(--fc-gutter); text-align: center;
}
.fc-ticker__dot {
  width: 8px; height: 8px; border-radius: 50%;
  flex: 0 0 auto;
  background: var(--fc-emerald);
  box-shadow: 0 0 0 0 rgba(22, 178, 142, 0.6);
  animation: fc-pulse 2.4s var(--fc-ease) infinite;
}
@keyframes fc-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(22, 178, 142, 0.55); }
  70%  { box-shadow: 0 0 0 10px rgba(22, 178, 142, 0); }
  100% { box-shadow: 0 0 0 0 rgba(22, 178, 142, 0); }
}

/* ---------- NAV (§3.3a #12 glass → solid) ---------- */
.fc-nav {
  position: sticky; top: 0; z-index: var(--fc-z-nav);
  backdrop-filter: blur(20px);
  background: rgba(11, 29, 48, 0.55);
  border-bottom: 1px solid var(--fc-line);
  transition: background var(--fc-base) var(--fc-ease), border-color var(--fc-base) var(--fc-ease);
}
.fc-nav--solid {
  background: var(--fc-navy);
  border-bottom-color: rgba(40, 193, 208, 0.2);
}
.fc-nav__inner {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1rem 0;
}
.fc-nav__brand {
  font-family: var(--fc-font-display); font-weight: 700; font-size: 1.15rem;
  letter-spacing: -0.01em; color: var(--fc-white);
}
.fc-nav__brand span { color: var(--fc-aqua); }
.fc-nav__links { display: flex; gap: 1.75rem; font-size: 0.92rem; }
.fc-nav__links a { color: var(--fc-white); opacity: 0.85; }
.fc-nav__links a:hover { opacity: 1; color: var(--fc-aqua); }
@media (max-width: 860px) {
  .fc-nav__links { display: none; }
}

/* ---------- HERO (§3.3a #1, #2, #4) ---------- */
.fc-hero {
  position: relative;
  overflow: hidden;
  padding-block: clamp(5rem, 12vw, 10rem);
  isolation: isolate;
}
.fc-hero__glow {
  position: absolute; inset: -10%;
  background: var(--fc-glow-aqua), var(--fc-glow-emerald);
  z-index: -2;
  animation: fc-drift 28s var(--fc-ease) infinite alternate;
}
@keyframes fc-drift {
  0%   { transform: translate3d(0, 0, 0) scale(1); }
  100% { transform: translate3d(2%, -3%, 0) scale(1.06); }
}
.fc-hero__orb {
  position: absolute;
  width: clamp(360px, 50vw, 720px);
  aspect-ratio: 1;
  top: 8%; right: -8%;
  background: conic-gradient(from 90deg at 50% 50%,
              var(--fc-aqua), var(--fc-ocean), var(--fc-emerald), var(--fc-aqua));
  filter: blur(72px) saturate(1.15);
  opacity: 0.3;
  z-index: -1;
  animation: fc-blob 18s var(--fc-ease) infinite;
}
@keyframes fc-blob {
  0%, 100% { border-radius: 62% 38% 47% 53% / 41% 60% 40% 59%; transform: rotate(0deg) scale(1); }
  33%      { border-radius: 38% 62% 63% 37% / 56% 44% 56% 44%; transform: rotate(40deg) scale(1.06); }
  66%      { border-radius: 50% 50% 33% 67% / 38% 62% 38% 62%; transform: rotate(-20deg) scale(0.94); }
}
.fc-hero__spot {
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: radial-gradient(600px circle at var(--mx, 50%) var(--my, 30%),
              rgba(242, 244, 247, 0.05), transparent 60%);
}
.fc-hero__inner {
  display: grid; gap: clamp(1rem, 3vw, 2rem);
  max-width: 1080px;
}
.fc-hero__h1 {
  font-family: var(--fc-font-display); font-weight: 700;
  font-size: var(--fc-h1);
  line-height: var(--fc-leading-tight);
  letter-spacing: var(--fc-tracking-tight);
  margin: 0;
}
.fc-hero__h1 em {
  font-style: normal; color: var(--fc-aqua);
  text-shadow: 0 0 32px rgba(40, 193, 208, 0.35);
}
.fc-hero__sub { font-size: 1.15rem; max-width: 60ch; color: rgba(242, 244, 247, 0.78); }
.fc-hero__cta { display: flex; gap: 0.75rem; flex-wrap: wrap; margin-top: 0.5rem; }

/* ---------- TRUST BAR ---------- */
.fc-trustbar {
  border-block: 1px solid var(--fc-line);
  background: rgba(11, 29, 48, 0.4);
  font-size: 0.85rem;
}
.fc-trustbar__inner {
  display: flex; flex-wrap: wrap; gap: 1rem 2rem; align-items: center; justify-content: center;
  padding: 1.25rem 0;
  color: rgba(242, 244, 247, 0.75);
}
.fc-trustbar__chip { display: inline-flex; align-items: center; gap: 0.4rem; }
.fc-trustbar__chip svg { color: var(--fc-aqua); }

/* ---------- STAT BAND (§3.3a #5) ---------- */
.fc-stats {
  display: grid; gap: 1px;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  background: var(--fc-line);
}
.fc-stat {
  background: var(--fc-navy);
  padding: 2rem 1.25rem;
  text-align: center;
}
.fc-stat__num {
  font-family: var(--fc-font-mono);
  font-variant-numeric: tabular-nums;
  font-size: clamp(2rem, 4vw, 3.5rem);
  color: var(--fc-aqua);
  font-weight: 600;
  letter-spacing: -0.02em;
}
.fc-stat__label {
  font-size: 0.82rem; color: var(--fc-text-muted-on-dark);
  margin-top: 0.25rem;
  text-transform: uppercase; letter-spacing: 0.12em;
}

/* ---------- SERVICE CARDS GRID ---------- */
.fc-services {
  display: grid; gap: 1.25rem;
  grid-template-columns: repeat(12, 1fr);
}
.fc-service {
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-lg);
  padding: 1.75rem;
  position: relative;
  transition: transform var(--fc-base) var(--fc-ease),
              border-color var(--fc-base) var(--fc-ease),
              box-shadow var(--fc-base) var(--fc-ease);
  grid-column: span 6;
  display: flex; flex-direction: column; gap: 1rem;
  min-height: 280px;
}
.fc-service:hover {
  transform: translateY(-4px);
  border-color: rgba(40, 193, 208, 0.35);
  box-shadow: var(--fc-shadow-aqua);
}
.fc-service--featured {
  grid-column: span 12;
  background: linear-gradient(135deg, var(--fc-navy-2) 0%, var(--fc-navy-1) 100%);
  min-height: 240px;
}
.fc-service--featured::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  background: var(--fc-glow-aqua);
  opacity: 0.5;
}
@media (min-width: 720px) {
  .fc-service { grid-column: span 6; }
  .fc-service--featured { grid-column: span 12; }
}
@media (min-width: 1080px) {
  .fc-service { grid-column: span 4; }
  .fc-service--featured { grid-column: span 8; }
}
.fc-service__icon {
  width: 44px; height: 44px;
  border-radius: var(--fc-radius-md);
  background: rgba(40, 193, 208, 0.12);
  display: grid; place-items: center;
  color: var(--fc-aqua);
}
.fc-service__title { font-family: var(--fc-font-display); font-weight: 600; font-size: 1.4rem; margin: 0; }
.fc-service__desc { color: rgba(242, 244, 247, 0.7); font-size: 0.95rem; flex: 1; }
.fc-service__meta { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; }
.fc-service__price { font-family: var(--fc-font-mono); font-size: 0.9rem; color: var(--fc-aqua); }
.fc-service__link { font-size: 0.85rem; color: var(--fc-white); font-weight: 500; }
.fc-service__link::after { content: " →"; transition: transform var(--fc-fast) var(--fc-ease); display: inline-block; }
.fc-service:hover .fc-service__link::after { transform: translateX(4px); color: var(--fc-aqua); }

/* ---------- BENTO GRID (§3.3a #6) ---------- */
.fc-bento {
  display: grid; gap: 1rem;
  grid-template-columns: repeat(6, 1fr);
  grid-auto-rows: minmax(180px, auto);
}
.fc-bento__cell {
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-lg);
  padding: 1.5rem;
  position: relative; overflow: hidden;
  grid-column: span 6;
  display: flex; flex-direction: column; justify-content: flex-end; gap: 0.5rem;
}
@media (min-width: 720px) {
  .fc-bento__cell        { grid-column: span 3; }
  .fc-bento__cell--wide  { grid-column: span 6; grid-row: span 2; }
  .fc-bento__cell--tall  { grid-column: span 3; grid-row: span 2; }
}
@media (min-width: 1080px) {
  .fc-bento__cell        { grid-column: span 2; }
  .fc-bento__cell--wide  { grid-column: span 4; grid-row: span 2; }
  .fc-bento__cell--tall  { grid-column: span 2; grid-row: span 2; }
}
.fc-bento__cell::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 0.4;
  background: var(--fc-glow-aqua);
  mix-blend-mode: screen;
}
.fc-bento__title { font-family: var(--fc-font-display); font-weight: 600; font-size: 1.25rem; margin: 0; }
.fc-bento__desc { color: rgba(242, 244, 247, 0.7); font-size: 0.9rem; }
.fc-bento__cell--wide .fc-bento__title { font-size: 1.75rem; }

/* ---------- PRICING TRANSPARENCY BLOCK (§3.3a #17) ---------- */
.fc-transparency {
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-xl);
  padding: 2rem; background: var(--fc-navy-1);
}
.fc-transparency__table {
  display: grid;
  grid-template-columns: 1fr 120px;
  gap: 0.5rem 1rem; align-items: center;
  font-size: 0.95rem;
}
.fc-transparency__row { display: contents; }
.fc-transparency__row > * { padding: 0.65rem 0; border-bottom: 1px solid var(--fc-line); }
.fc-transparency__row--us > * { color: var(--fc-aqua); font-weight: 600; }
.fc-x { color: #d75858; }
.fc-check { color: var(--fc-emerald); font-weight: 700; }

/* ---------- RATE CARD (§3.4 pattern-rate-card) ---------- */
.fc-rates {
  width: 100%; border-collapse: separate; border-spacing: 0;
  font-family: var(--fc-font-mono); font-variant-numeric: tabular-nums;
  background: var(--fc-navy-1); border-radius: var(--fc-radius-lg); overflow: hidden;
  border: 1px solid var(--fc-line);
}
.fc-rates th, .fc-rates td {
  padding: 1rem 1.25rem;
  text-align: right; border-bottom: 1px solid var(--fc-line);
  font-size: 0.95rem;
}
.fc-rates th:first-child, .fc-rates td:first-child { text-align: left; font-family: var(--fc-font-body); }
.fc-rates thead th {
  background: var(--fc-navy-2);
  color: var(--fc-aqua); text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.75rem;
}
.fc-rates tbody tr:last-child td { border-bottom: 0; }
.fc-rates tbody tr:hover { background: rgba(40, 193, 208, 0.04); }

/* ---------- LINEN PROMO ---------- */
.fc-linen {
  display: grid; gap: 1.5rem;
  grid-template-columns: 1fr;
  background: linear-gradient(135deg, var(--fc-navy-2), var(--fc-navy-1));
  border: 1px solid rgba(40, 193, 208, 0.25);
  border-radius: var(--fc-radius-xl);
  padding: 2.5rem;
  position: relative; overflow: hidden;
}
@media (min-width: 880px) { .fc-linen { grid-template-columns: 1.4fr 1fr; align-items: center; } }
.fc-linen::before {
  content: ""; position: absolute; right: -10%; top: -30%; width: 60%; height: 160%;
  background: var(--fc-glow-aqua); opacity: 0.6;
}

/* ---------- TOWN PICKER ---------- */
.fc-towns {
  display: grid; gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
.fc-town {
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-lg);
  padding: 1.5rem 1.25rem;
  display: flex; flex-direction: column; gap: 0.35rem;
  transition: border-color var(--fc-fast) var(--fc-ease), transform var(--fc-fast) var(--fc-ease);
}
.fc-town:hover { border-color: var(--fc-aqua); transform: translateY(-2px); color: var(--fc-white); }
.fc-town__name { font-family: var(--fc-font-display); font-weight: 600; font-size: 1.1rem; }
.fc-town__meta { font-family: var(--fc-font-mono); font-size: 0.78rem; color: var(--fc-text-muted-on-dark); }

/* ---------- WAVE DIVIDER (§3.3a #13) ---------- */
.fc-wave {
  display: block; width: 100%; height: 60px;
  background: var(--fc-navy);
  color: var(--fc-white);
}
.fc-wave svg { width: 200%; height: 100%; animation: fc-wave-drift 30s linear infinite; }
@keyframes fc-wave-drift { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ---------- CTA BAND ---------- */
.fc-cta-band {
  text-align: center;
  background: var(--fc-navy);
  padding: clamp(4rem, 8vw, 7rem) 1rem;
  position: relative; overflow: hidden;
}
.fc-cta-band::before {
  content: ""; position: absolute; inset: 0;
  background: var(--fc-glow-ocean), var(--fc-glow-emerald);
  opacity: 0.6; z-index: -1;
}
.fc-cta-band h2 { font-family: var(--fc-font-display); font-weight: 700; font-size: clamp(2rem, 5vw, 4rem); margin: 0 0 1rem; letter-spacing: -0.02em; line-height: 1.05; }
.fc-cta-band p { color: rgba(242, 244, 247, 0.75); max-width: 50ch; margin: 0 auto 2rem; }

/* ---------- FOOTER (§3.3a #14) ---------- */
.fc-footer {
  background: var(--fc-navy);
  border-top: 1px solid var(--fc-line);
  padding-top: 4rem;
  overflow: hidden;
  position: relative;
}
.fc-footer__grid {
  display: grid; gap: 2.5rem;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  padding-bottom: 3rem;
}
.fc-footer__col h4 {
  font-family: var(--fc-font-display); font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.15em;
  color: var(--fc-aqua); margin: 0 0 1rem;
}
.fc-footer__col a { display: block; padding: 0.25rem 0; color: rgba(242, 244, 247, 0.7); font-size: 0.92rem; }
.fc-footer__col a:hover { color: var(--fc-white); }
.fc-footer__wordmark {
  font-family: var(--fc-font-display); font-weight: 700;
  font-size: clamp(4rem, 18vw, 16rem); line-height: 0.8;
  color: rgba(242, 244, 247, 0.04);
  letter-spacing: -0.04em;
  text-align: center; padding: 1rem 0 2rem;
  user-select: none;
}
.fc-footer__legal {
  border-top: 1px solid var(--fc-line);
  padding: 1.5rem 0;
  display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between;
  font-size: 0.8rem; color: var(--fc-text-muted-on-dark);
}

/* ---------- FORMS ---------- */
.fc-form { display: grid; gap: 1rem; }
.fc-field { display: grid; gap: 0.35rem; }
.fc-field label { font-size: 0.85rem; color: var(--fc-text-muted-on-dark); }
.fc-field input, .fc-field select, .fc-field textarea {
  font: inherit; color: var(--fc-white);
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line-strong);
  border-radius: var(--fc-radius-md);
  padding: 0.85rem 1rem;
  transition: border-color var(--fc-fast) var(--fc-ease);
}
.fc-field input:focus, .fc-field select:focus, .fc-field textarea:focus {
  outline: none; border-color: var(--fc-aqua);
}

.fc-honeypot {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.fc-form__status {
  display: none;
  margin-top: 1rem;
  padding: 1rem 1.25rem;
  border-radius: var(--fc-radius-md);
  font-size: 0.95rem;
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line-strong);
}
.fc-form__status.is-visible { display: block; }
.fc-form__status.is-success { border-color: var(--fc-emerald); color: var(--fc-white); }
.fc-form__status.is-error { border-color: var(--fc-ocean); color: var(--fc-white); }

/* ---------- MOBILE CALL BUTTON (§1.3) ---------- */
.fc-call-fab {
  position: fixed; right: 1rem; bottom: 1rem;
  background: var(--fc-emerald); color: var(--fc-cta-text);
  padding: 0.95rem 1.25rem;
  border-radius: var(--fc-radius-pill);
  font-family: var(--fc-font-display); font-weight: 600;
  z-index: var(--fc-z-nav);
  box-shadow: 0 12px 30px -8px rgba(22, 178, 142, 0.5);
  display: none;
}
@media (max-width: 720px) {
  .fc-call-fab.is-on { display: inline-flex; align-items: center; gap: 0.5rem; }
}

/* ============================================================
   v2 ADDITIONS — photo-rich, premium hi-fi layer
   ============================================================ */

/* ---------- LOGO MARK ---------- */
.fc-logo {
  display: inline-flex; align-items: center; gap: 0.65rem;
  font-family: var(--fc-font-display); font-weight: 700; font-size: 1.05rem;
  letter-spacing: -0.01em; color: var(--fc-white);
}
.fc-logo img { width: 34px; height: 34px; border-radius: 50%; }
.fc-logo span { color: var(--fc-aqua); }

/* ---------- CINEMATIC HERO V2 ---------- */
.fc-hero2 {
  position: relative;
  min-height: clamp(680px, 92vh, 920px);
  overflow: hidden;
  isolation: isolate;
  display: grid;
  align-items: end;
  padding-block: clamp(6rem, 12vw, 9rem) clamp(3rem, 6vw, 5rem);
}
.fc-hero2__bg {
  position: absolute; inset: 0; z-index: -3;
  width: 100%; height: 100%; object-fit: cover; object-position: center;
  filter: saturate(1) contrast(1.04) brightness(0.85);
}

/* Real FlexiClean photography is rendered as semantic, responsive images.
   The wrappers keep the existing overlays and layout without changing the design. */
.fc-svc__photo > img,
.fc-ba__img > img,
.fc-strip__cell > img,
.fc-linen2__photo > img,
.fc-founder__photo > img,
.fc-spotlight__photo > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.fc-review__avatar > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* Reusable proof photography for interior pages. */
.fc-page-photo,
.fc-page-proof {
  margin: 0 0 clamp(2.5rem, 5vw, 4rem);
}

.fc-page-photo img,
.fc-page-proof img {
  display: block;
  width: 100%;
  height: clamp(240px, 42vw, 480px);
  object-fit: cover;
  object-position: center;
  border-radius: var(--fc-radius-lg);
  border: 1px solid var(--fc-line);
}

.fc-page-photo figcaption,
.fc-page-proof figcaption {
  margin-top: 0.65rem;
  color: var(--fc-muted, rgba(242,244,247,0.6));
  font-family: var(--fc-font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.04em;
}

.fc-page-proof {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(0.75rem, 2vw, 1.25rem);
}

.fc-page-proof figure { margin: 0; }

@media (max-width: 640px) {
  .fc-section .fc-grid { grid-template-columns: 1fr !important; }
  .fc-page-proof { grid-template-columns: 1fr; }
  .fc-page-photo img,
  .fc-page-proof img { height: min(72vw, 360px); }
}
.fc-hero2__veil {
  position: absolute; inset: 0; z-index: -2;
  background:
    linear-gradient(90deg, rgba(11,29,48,0.96) 0%, rgba(11,29,48,0.84) 36%, rgba(11,29,48,0.38) 66%, rgba(11,29,48,0.10) 100%),
    linear-gradient(180deg, rgba(11,29,48,0.30) 0%, transparent 38%, rgba(11,29,48,0.40) 78%, var(--fc-navy) 100%);
}
.fc-hero2__orb {
  display: none;
  position: absolute; z-index: -1;
  width: clamp(420px, 55vw, 820px); aspect-ratio: 1;
  top: 5%; right: -12%;
  background: conic-gradient(from 90deg at 50% 50%,
              var(--fc-aqua), var(--fc-ocean), var(--fc-emerald), var(--fc-aqua));
  filter: blur(90px) saturate(1.2);
  opacity: 0.4;
  animation: fc-blob 20s var(--fc-ease) infinite;
}
.fc-hero2__grid {
  position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: 0.06;
  background-image:
    linear-gradient(rgba(242,244,247,0.6) 1px, transparent 1px),
    linear-gradient(90deg, rgba(242,244,247,0.6) 1px, transparent 1px);
  background-size: 80px 80px;
  mask-image: radial-gradient(circle at 30% 60%, black, transparent 75%);
}
.fc-hero2__inner {
  display: grid; gap: clamp(1.25rem, 3vw, 2rem);
  max-width: 980px; position: relative; z-index: 1;
}
.fc-hero2__eyebrow {
  display: inline-flex; align-items: center; gap: 0.65rem;
  font-family: var(--fc-font-mono); font-size: 0.78rem;
  letter-spacing: var(--fc-tracking-label); text-transform: uppercase;
  color: var(--fc-aqua);
  padding: 0.5rem 0.9rem;
  border: 1px solid rgba(40,193,208,0.3);
  border-radius: var(--fc-radius-pill);
  background: rgba(40,193,208,0.06);
  backdrop-filter: blur(6px);
  width: max-content;
}
.fc-hero2__eyebrow::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: var(--fc-emerald);
  box-shadow: 0 0 12px var(--fc-emerald);
  animation: fc-pulse 2.4s var(--fc-ease) infinite;
}
.fc-hero2__h1 {
  font-family: var(--fc-font-display); font-weight: 700;
  font-size: clamp(2.6rem, 4.2vw + 1rem, 4.75rem);
  line-height: 1.06;
  letter-spacing: -0.025em;
  margin: 0;
  color: var(--fc-white);
  text-wrap: balance;
  text-shadow: 0 2px 28px rgba(11,29,48,0.6), 0 1px 3px rgba(11,29,48,0.55);
}
.fc-hero2__h1 em {
  font-style: normal;
  color: var(--fc-aqua);
  text-shadow: 0 0 32px rgba(40, 193, 208, 0.4), 0 2px 28px rgba(11,29,48,0.6), 0 1px 3px rgba(11,29,48,0.55);
}
.fc-hero2__sub {
  font-size: clamp(1rem, 1vw + 0.85rem, 1.25rem);
  max-width: 60ch;
  color: rgba(242,244,247,0.82);
  line-height: 1.55;
  text-shadow: 0 1px 18px rgba(11,29,48,0.65);
}
.fc-hero2__cta { display: flex; gap: 0.75rem; flex-wrap: wrap; margin-top: 0.5rem; }
.fc-hero2__meta {
  display: flex; flex-wrap: wrap; gap: 1.5rem 2.5rem;
  margin-top: 1rem;
  font-family: var(--fc-font-mono); font-size: 0.82rem;
  color: rgba(242,244,247,0.7);
}
.fc-hero2__meta strong { color: var(--fc-aqua); font-weight: 500; }

/* Floating availability card on hero */
.fc-availcard {
  position: absolute; right: clamp(1rem, 5vw, 4rem); bottom: clamp(2rem, 6vw, 4rem);
  background: rgba(14, 34, 54, 0.7);
  backdrop-filter: blur(18px) saturate(1.4);
  border: 1px solid rgba(40, 193, 208, 0.25);
  border-radius: var(--fc-radius-lg);
  padding: 1.25rem 1.4rem;
  width: min(320px, 80vw);
  box-shadow: var(--fc-shadow-elevate);
  z-index: 2;
}
.fc-availcard__title {
  font-family: var(--fc-font-mono); font-size: 0.72rem; letter-spacing: var(--fc-tracking-label);
  color: var(--fc-aqua); text-transform: uppercase;
}
.fc-availcard__row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 0.6rem 0; border-bottom: 1px solid var(--fc-line);
  font-size: 0.88rem;
}
.fc-availcard__row:last-child { border-bottom: 0; }
.fc-availcard__row b { font-family: var(--fc-font-mono); color: var(--fc-white); font-weight: 500; }
.fc-availcard__dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--fc-emerald); display: inline-block; margin-right: 0.4rem;
  box-shadow: 0 0 8px var(--fc-emerald);
}
@media (max-width: 1160px) {
  .fc-availcard { position: static; margin-top: 2rem; width: 100%; }
}

@media (max-width: 640px) {
  .fc-ticker { font-size: 0.7rem; letter-spacing: 0.02em; }
  .fc-nav__inner { gap: 0.5rem; padding-block: 0.75rem; }
  .fc-logo { gap: 0.45rem; font-size: 0.95rem; }
  .fc-logo img { width: 30px; height: 30px; }
  .fc-nav__inner > .fc-btn { padding: 0.75rem 1rem; font-size: 0.84rem; }

  .fc-hero2 {
    min-height: auto;
    align-items: start;
    padding-block: 3.25rem 3rem;
  }
  .fc-hero2__inner { gap: 1rem; }
  .fc-hero2__eyebrow {
    width: fit-content;
    max-width: 100%;
    white-space: normal;
    font-size: 0.68rem;
    line-height: 1.4;
  }
  .fc-hero2__h1 { font-size: clamp(2.25rem, 11vw, 3rem); }
  .fc-hero2__sub { font-size: 0.98rem; line-height: 1.5; }
  .fc-hero2__cta .fc-btn { width: 100%; justify-content: center; }
  .fc-hero2__meta { gap: 0.75rem 1rem; margin-top: 0.25rem; }
  .fc-availcard { width: calc(100% - 2rem); margin: 1.5rem 1rem 0; }
}

/* ---------- MARQUEE LOGOS / TRUST ---------- */
.fc-marquee {
  overflow: hidden;
  border-block: 1px solid var(--fc-line);
  background: rgba(14,34,54,0.4);
  padding: 1.25rem 0;
  mask-image: linear-gradient(90deg, transparent, black 12%, black 88%, transparent);
}
.fc-marquee__track {
  display: flex; gap: 3rem; width: max-content;
  animation: fc-marquee-scroll 40s linear infinite;
  align-items: center;
  font-family: var(--fc-font-mono); font-size: 0.85rem;
  color: rgba(242,244,247,0.6); letter-spacing: 0.05em;
}
.fc-marquee__item { display: inline-flex; align-items: center; gap: 0.6rem; white-space: nowrap; }
.fc-marquee__item svg { color: var(--fc-aqua); }
@keyframes fc-marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* ---------- SECTION HEADER PATTERN ---------- */
.fc-secheader { display: grid; gap: 0.75rem; max-width: 880px; }
.fc-secheader__line {
  display: flex; align-items: center; gap: 1rem;
}
.fc-secheader__line::before {
  content: ""; width: 28px; height: 1px; background: var(--fc-aqua);
}
.fc-secheader h2 {
  font-family: var(--fc-font-display); font-weight: 700;
  font-size: var(--fc-h2); line-height: 1.1;
  letter-spacing: var(--fc-tracking-tight); margin: 0;
  text-wrap: balance;
}

/* ---------- SERVICE CARDS V2 (with photos) ---------- */
.fc-svcs {
  display: grid; gap: 1.25rem;
  grid-template-columns: repeat(12, 1fr);
}
.fc-svc {
  position: relative;
  grid-column: span 12;
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-xl);
  overflow: hidden;
  display: grid;
  transition: transform var(--fc-base) var(--fc-ease),
              border-color var(--fc-base) var(--fc-ease),
              box-shadow var(--fc-base) var(--fc-ease);
}
.fc-svc:hover {
  transform: translateY(-4px);
  border-color: rgba(40,193,208,0.4);
  box-shadow: var(--fc-shadow-aqua);
}
.fc-svc__photo {
  position: relative; overflow: hidden; min-height: 220px;
  background-size: cover; background-position: center;
}
.fc-svc__photo::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 30%, rgba(11,29,48,0.7) 100%);
}
.fc-svc__photo .fc-svc__chip {
  position: absolute; top: 1rem; left: 1rem; z-index: 1;
  background: rgba(11,29,48,0.7); backdrop-filter: blur(8px);
  color: var(--fc-aqua); font-family: var(--fc-font-mono); font-size: 0.72rem;
  letter-spacing: 0.12em; text-transform: uppercase;
  padding: 0.4rem 0.7rem; border-radius: var(--fc-radius-pill);
  border: 1px solid rgba(40,193,208,0.3);
}
.fc-svc__body { padding: 1.5rem 1.75rem 1.75rem; display: flex; flex-direction: column; gap: 0.85rem; }
.fc-svc__title { font-family: var(--fc-font-display); font-weight: 600; font-size: 1.35rem; margin: 0; color: var(--fc-white); }
.fc-svc__desc { color: rgba(242,244,247,0.72); font-size: 0.95rem; flex: 1; margin: 0; }
.fc-svc__meta { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; margin-top: 0.5rem; padding-top: 1rem; border-top: 1px solid var(--fc-line); }
.fc-svc__price { font-family: var(--fc-font-mono); color: var(--fc-aqua); font-size: 0.92rem; }
.fc-svc__link { font-size: 0.85rem; color: var(--fc-white); font-weight: 500; }
.fc-svc__link::after { content: " →"; transition: transform var(--fc-fast) var(--fc-ease); display: inline-block; }
.fc-svc:hover .fc-svc__link::after { transform: translateX(4px); color: var(--fc-aqua); }

/* Featured: 2-col wide, photo on right */
.fc-svc--featured {
  grid-column: span 12;
  grid-template-columns: 1.1fr 1fr;
  min-height: 360px;
}
.fc-svc--featured .fc-svc__photo { min-height: 100%; order: 2; }
.fc-svc--featured .fc-svc__body { padding: 2.25rem 2.5rem; gap: 1.1rem; }
.fc-svc--featured .fc-svc__title { font-size: 2rem; line-height: 1.1; }
.fc-svc--featured .fc-svc__desc { font-size: 1.05rem; }

@media (min-width: 880px) {
  .fc-svc { grid-column: span 6; grid-template-columns: 1fr; }
  .fc-svc__photo { min-height: 200px; }
  .fc-svc--featured { grid-column: span 12; grid-template-columns: 1.1fr 1fr; }
  .fc-svc--featured .fc-svc__photo { min-height: 100%; }
}
@media (min-width: 1080px) {
  .fc-svc { grid-column: span 4; }
  .fc-svc--featured { grid-column: span 12; grid-template-columns: 1.1fr 1fr; }
  .fc-svc--featured .fc-svc__photo { min-height: 100%; }
}
@media (max-width: 880px) {
  .fc-svc--featured { grid-template-columns: 1fr; }
  .fc-svc--featured .fc-svc__photo { order: 0; min-height: 240px; }
}

/* ---------- INTERACTIVE PRICING CALCULATOR ---------- */
.fc-calc {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  background: linear-gradient(135deg, var(--fc-navy-2), var(--fc-navy-1));
  border: 1px solid rgba(40,193,208,0.18);
  border-radius: var(--fc-radius-xl);
  overflow: hidden;
  position: relative;
}
@media (min-width: 880px) { .fc-calc { grid-template-columns: 1.1fr 1fr; } }
.fc-calc::before {
  content: ""; position: absolute; top: -30%; right: -10%; width: 60%; height: 120%;
  background: var(--fc-glow-aqua); opacity: 0.4; z-index: 0; pointer-events: none;
}
.fc-calc__form, .fc-calc__output { padding: clamp(1.5rem, 3vw, 2.5rem); position: relative; z-index: 1; }
.fc-calc__form { border-right: 1px solid var(--fc-line); }
@media (max-width: 880px) { .fc-calc__form { border-right: 0; border-bottom: 1px solid var(--fc-line); } }
.fc-calc__row { display: grid; gap: 0.6rem; margin-bottom: 1.4rem; }
.fc-calc__row label { font-family: var(--fc-font-mono); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--fc-aqua); }
.fc-calc__opts { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.fc-calc__opt {
  font: inherit; font-family: var(--fc-font-body); font-weight: 500; font-size: 0.88rem;
  background: rgba(242,244,247,0.04); color: var(--fc-white);
  border: 1px solid var(--fc-line-strong);
  padding: 0.55rem 0.9rem;
  border-radius: var(--fc-radius-pill);
  cursor: pointer;
  transition: all var(--fc-fast) var(--fc-ease);
  white-space: nowrap;
}
.fc-calc__opt:hover { border-color: var(--fc-aqua); color: var(--fc-aqua); }
.fc-calc__opt.is-on {
  background: var(--fc-emerald); color: var(--fc-cta-text); border-color: var(--fc-emerald);
}
.fc-calc__toggle {
  display: flex; align-items: center; justify-content: space-between;
  padding: 0.85rem 1rem;
  background: rgba(242,244,247,0.03);
  border: 1px solid var(--fc-line-strong);
  border-radius: var(--fc-radius-md);
  cursor: pointer;
  user-select: none;
}
.fc-calc__toggle.is-on { border-color: var(--fc-emerald); background: rgba(22,178,142,0.08); }
.fc-calc__toggle span:first-child { font-weight: 500; font-size: 0.95rem; }
.fc-calc__toggle small { display: block; color: var(--fc-text-muted-on-dark); font-size: 0.78rem; font-family: var(--fc-font-mono); margin-top: 0.15rem; }
.fc-calc__switch {
  width: 38px; height: 22px; border-radius: 999px;
  background: rgba(242,244,247,0.15); position: relative; transition: background var(--fc-fast) var(--fc-ease);
  flex-shrink: 0;
}
.fc-calc__switch::after {
  content: ""; position: absolute; top: 3px; left: 3px;
  width: 16px; height: 16px; border-radius: 50%; background: var(--fc-white);
  transition: transform var(--fc-fast) var(--fc-ease);
}
.fc-calc__toggle.is-on .fc-calc__switch { background: var(--fc-emerald); }
.fc-calc__toggle.is-on .fc-calc__switch::after { transform: translateX(16px); }

.fc-calc__output {
  display: flex; flex-direction: column; justify-content: space-between; gap: 1.5rem;
}
.fc-calc__heading { font-family: var(--fc-font-mono); font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--fc-aqua); }
.fc-calc__price {
  font-family: var(--fc-font-display); font-weight: 700;
  font-size: clamp(3rem, 6vw, 4.5rem);
  line-height: 1; letter-spacing: -0.03em;
  color: var(--fc-white);
  font-variant-numeric: tabular-nums;
  margin: 0.25rem 0;
}
.fc-calc__range { font-family: var(--fc-font-mono); color: var(--fc-aqua); font-size: 1rem; }
.fc-calc__breakdown { display: grid; gap: 0.45rem; font-family: var(--fc-font-mono); font-size: 0.85rem; }
.fc-calc__breakdown li {
  display: flex; justify-content: space-between;
  padding: 0.5rem 0; border-bottom: 1px solid var(--fc-line);
  color: rgba(242,244,247,0.75);
  list-style: none;
}
.fc-calc__breakdown li:last-child { border-bottom: 0; }
.fc-calc__breakdown li b { color: var(--fc-white); font-weight: 500; }
.fc-calc__cta { display: flex; gap: 0.6rem; flex-wrap: wrap; }
.fc-calc__note { font-size: 0.78rem; color: var(--fc-text-muted-on-dark); }

/* ---------- BEFORE / AFTER SLIDER ---------- */
.fc-ba {
  position: relative; aspect-ratio: 16 / 10;
  border-radius: var(--fc-radius-xl); overflow: hidden;
  border: 1px solid var(--fc-line);
  background: var(--fc-navy-1);
  user-select: none; cursor: ew-resize;
  box-shadow: var(--fc-shadow-elevate);
}
.fc-ba__img { position: absolute; inset: 0; background-size: cover; background-position: center; }
.fc-ba__after { clip-path: inset(0 0 0 var(--ba-pos, 50%)); }
.fc-ba__handle {
  position: absolute; top: 0; bottom: 0; left: var(--ba-pos, 50%);
  width: 2px; background: var(--fc-white);
  transform: translateX(-1px);
  pointer-events: none;
}
.fc-ba__knob {
  position: absolute; top: 50%; transform: translate(-50%, -50%);
  width: 44px; height: 44px; border-radius: 50%;
  background: var(--fc-white); color: var(--fc-navy);
  display: grid; place-items: center;
  box-shadow: 0 8px 20px rgba(0,0,0,0.4);
  font-weight: 700; font-size: 0.85rem;
  pointer-events: none;
}
.fc-ba__label {
  position: absolute; top: 1rem; padding: 0.4rem 0.8rem;
  font-family: var(--fc-font-mono); font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase;
  background: rgba(11,29,48,0.8); backdrop-filter: blur(6px);
  border-radius: var(--fc-radius-pill);
  color: var(--fc-white);
}
.fc-ba__label--before { left: 1rem; }
.fc-ba__label--after { right: 1rem; color: var(--fc-aqua); border: 1px solid rgba(40,193,208,0.3); }

/* ---------- REVIEWS MARQUEE ---------- */
.fc-reviews {
  display: grid; gap: 1.25rem;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}
.fc-review {
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-lg);
  padding: 1.5rem;
  display: flex; flex-direction: column; gap: 0.85rem;
  position: relative;
}
.fc-review::before {
  content: """; position: absolute; top: -10px; right: 14px;
  font-family: var(--fc-font-display); font-size: 5rem; line-height: 1;
  color: rgba(40,193,208,0.18);
  font-weight: 700;
}
.fc-review__stars { color: #FFC44D; letter-spacing: 2px; font-size: 0.95rem; }
.fc-review__text { color: rgba(242,244,247,0.85); font-size: 0.96rem; line-height: 1.55; flex: 1; }
.fc-review__who { display: flex; align-items: center; gap: 0.75rem; padding-top: 0.5rem; border-top: 1px solid var(--fc-line); }
.fc-review__avatar {
  width: 38px; height: 38px; border-radius: 50%;
  background-size: cover; background-position: center;
  background-color: var(--fc-navy-2);
  flex-shrink: 0;
}
.fc-review__name { font-weight: 600; font-size: 0.9rem; }
.fc-review__source { font-family: var(--fc-font-mono); font-size: 0.72rem; color: var(--fc-text-muted-on-dark); letter-spacing: 0.08em; }

/* ---------- FOUNDER SECTION ---------- */
.fc-founder {
  display: grid; gap: 2rem;
  grid-template-columns: 1fr;
  align-items: center;
}
@media (min-width: 880px) { .fc-founder { grid-template-columns: 0.9fr 1.1fr; gap: 4rem; } }
.fc-founder__photo {
  aspect-ratio: 4 / 5;
  border-radius: var(--fc-radius-xl);
  background-size: cover; background-position: center;
  position: relative; overflow: hidden;
  border: 1px solid var(--fc-line);
}
.fc-founder__photo::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(11,29,48,0.5));
}
.fc-founder__quote {
  font-family: var(--fc-font-display); font-weight: 500;
  font-size: clamp(1.4rem, 2vw + 0.8rem, 2rem);
  line-height: 1.3; letter-spacing: -0.015em;
  color: var(--fc-white);
  margin: 1.5rem 0;
  text-wrap: balance;
}
.fc-founder__quote::before {
  content: "“"; color: var(--fc-aqua);
  font-size: 3em; line-height: 0; vertical-align: -0.4em; margin-right: 0.1em;
}
.fc-founder__sig {
  font-family: var(--fc-font-display); font-weight: 600;
  color: var(--fc-aqua); font-size: 0.95rem;
  display: flex; flex-direction: column; gap: 0.1rem;
}
.fc-founder__sig small { color: var(--fc-text-muted-on-dark); font-weight: 400; font-family: var(--fc-font-mono); font-size: 0.78rem; letter-spacing: 0.08em; }

/* ---------- TOWN PICKER V2 (with map dot) ---------- */
.fc-map {
  position: relative;
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-xl);
  padding: 1.5rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  overflow: hidden;
}
@media (min-width: 880px) { .fc-map { grid-template-columns: 1.1fr 1fr; gap: 2.5rem; padding: 2rem; } }
.fc-map__canvas {
  position: relative; aspect-ratio: 5 / 4;
  background: radial-gradient(circle at 50% 50%, var(--fc-navy-2), var(--fc-navy));
  border-radius: var(--fc-radius-lg);
  border: 1px solid var(--fc-line);
  overflow: hidden;
}
.fc-map__canvas::before {
  content: ""; position: absolute; inset: 0;
  background-image:
    radial-gradient(rgba(40,193,208,0.06) 1px, transparent 1px);
  background-size: 24px 24px;
}
.fc-map__pin {
  position: absolute; width: 14px; height: 14px; border-radius: 50%;
  background: var(--fc-aqua);
  box-shadow: 0 0 0 4px rgba(40,193,208,0.18), 0 0 18px rgba(40,193,208,0.5);
  transform: translate(-50%,-50%);
  cursor: pointer; transition: transform var(--fc-fast) var(--fc-ease);
}
.fc-map__pin:hover, .fc-map__pin.is-active {
  transform: translate(-50%,-50%) scale(1.4);
  background: var(--fc-emerald);
  box-shadow: 0 0 0 6px rgba(22,178,142,0.25), 0 0 24px rgba(22,178,142,0.6);
}
.fc-map__pin--hq {
  background: var(--fc-emerald);
  box-shadow: 0 0 0 5px rgba(22,178,142,0.25), 0 0 22px rgba(22,178,142,0.6);
}
.fc-map__pin--hq::after {
  content: ""; position: absolute; inset: -8px; border-radius: 50%;
  border: 1px solid var(--fc-emerald);
  animation: fc-ping 2.4s var(--fc-ease) infinite;
}
@keyframes fc-ping {
  0%   { transform: scale(0.6); opacity: 1; }
  100% { transform: scale(2.4); opacity: 0; }
}
.fc-map__label {
  position: absolute; font-family: var(--fc-font-mono); font-size: 0.7rem;
  color: var(--fc-white); letter-spacing: 0.06em;
  background: rgba(11,29,48,0.7); backdrop-filter: blur(6px);
  padding: 0.15rem 0.45rem; border-radius: 4px;
  transform: translate(-50%, -180%);
  white-space: nowrap;
  border: 1px solid var(--fc-line);
}
.fc-map__list { display: grid; gap: 0.5rem; align-content: center; }
.fc-map__listitem {
  display: grid; grid-template-columns: auto 1fr auto; gap: 1rem; align-items: center;
  padding: 0.85rem 1rem;
  border-radius: var(--fc-radius-md);
  border: 1px solid var(--fc-line);
  background: rgba(11,29,48,0.4);
  cursor: pointer;
  transition: all var(--fc-fast) var(--fc-ease);
}
.fc-map__listitem:hover, .fc-map__listitem.is-active {
  border-color: var(--fc-aqua); background: rgba(40,193,208,0.06);
  transform: translateX(2px);
}
.fc-map__listitem b { font-family: var(--fc-font-display); font-weight: 600; font-size: 0.95rem; }
.fc-map__listitem small { font-family: var(--fc-font-mono); font-size: 0.72rem; color: var(--fc-text-muted-on-dark); letter-spacing: 0.04em; }
.fc-map__listitem .fc-map__num {
  font-family: var(--fc-font-mono); font-size: 0.7rem; color: var(--fc-aqua);
  width: 22px; height: 22px; border-radius: 50%;
  border: 1px solid rgba(40,193,208,0.3);
  display: grid; place-items: center;
}

/* ---------- FAQ ACCORDION ---------- */
.fc-faq { display: grid; gap: 0.5rem; }
.fc-faq__item {
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-lg);
  overflow: hidden;
  transition: border-color var(--fc-fast) var(--fc-ease);
}
.fc-faq__item[open] { border-color: rgba(40,193,208,0.3); }
.fc-faq__q {
  padding: 1.25rem 1.5rem;
  font-family: var(--fc-font-display); font-weight: 600; font-size: 1.05rem;
  color: var(--fc-white); cursor: pointer;
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  list-style: none;
}
.fc-faq__q::-webkit-details-marker { display: none; }
.fc-faq__q::after {
  content: "+"; font-family: var(--fc-font-mono); font-size: 1.4rem;
  color: var(--fc-aqua); transition: transform var(--fc-base) var(--fc-ease);
  flex-shrink: 0;
}
.fc-faq__item[open] .fc-faq__q::after { transform: rotate(45deg); }
.fc-faq__a {
  padding: 0 1.5rem 1.5rem;
  color: rgba(242,244,247,0.78); font-size: 0.95rem; line-height: 1.6;
}

/* ---------- PHOTO STRIP / GALLERY ---------- */
.fc-strip {
  display: grid; gap: 0.75rem;
  grid-template-columns: repeat(4, 1fr);
}
.fc-strip__cell {
  position: relative; aspect-ratio: 4/5;
  background-size: cover; background-position: center;
  border-radius: var(--fc-radius-md);
  border: 1px solid var(--fc-line);
  overflow: hidden;
  transition: transform var(--fc-base) var(--fc-ease);
}
.fc-strip__cell:hover { transform: translateY(-3px); }
.fc-strip__cell::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(11,29,48,0.7));
}
.fc-strip__cell span {
  position: absolute; bottom: 0.6rem; left: 0.7rem; z-index: 1;
  font-family: var(--fc-font-mono); font-size: 0.7rem; letter-spacing: 0.12em;
  color: var(--fc-white); text-transform: uppercase;
}
@media (max-width: 720px) { .fc-strip { grid-template-columns: repeat(2, 1fr); } }

/* ---------- LINEN PROMO V2 with photo ---------- */
.fc-linen2 {
  display: grid; gap: 0;
  grid-template-columns: 1fr;
  background: linear-gradient(135deg, var(--fc-navy-2) 0%, var(--fc-navy-1) 100%);
  border: 1px solid rgba(40,193,208,0.22);
  border-radius: var(--fc-radius-xl);
  overflow: hidden;
  position: relative;
}
@media (min-width: 880px) { .fc-linen2 { grid-template-columns: 1.1fr 1fr; } }
.fc-linen2__body { padding: clamp(1.5rem, 3vw, 3rem); position: relative; z-index: 1; }
.fc-linen2__photo {
  min-height: 300px; background-size: cover; background-position: center;
  position: relative;
}
.fc-linen2__photo::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(11,29,48,0.5) 0%, transparent 30%);
}
.fc-linen2__math {
  margin-top: 1.5rem;
  background: rgba(11,29,48,0.6);
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-lg);
  padding: 1.25rem 1.5rem;
  display: grid; gap: 0.5rem;
  font-family: var(--fc-font-mono); font-size: 0.88rem;
}
.fc-linen2__math__title { color: var(--fc-aqua); font-size: 0.7rem; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 0.3rem; }
.fc-linen2__math__row { display: flex; justify-content: space-between; color: rgba(242,244,247,0.75); }
.fc-linen2__math__row.is-total { padding-top: 0.5rem; border-top: 1px solid var(--fc-line); color: var(--fc-white); font-weight: 500; }
.fc-linen2__math__row.is-us { color: var(--fc-emerald); font-weight: 600; }

/* ---------- "HOW IT WORKS" STEPS ---------- */
.fc-steps {
  display: grid; gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  counter-reset: fc-step;
}
.fc-step {
  position: relative; padding: 1.75rem 1.5rem 1.5rem;
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line);
  border-radius: var(--fc-radius-lg);
  counter-increment: fc-step;
  overflow: hidden;
}
.fc-step::before {
  content: "0" counter(fc-step);
  position: absolute; top: 1rem; right: 1rem;
  font-family: var(--fc-font-mono); font-size: 0.85rem;
  color: var(--fc-aqua); letter-spacing: 0.08em;
  opacity: 0.7;
}
.fc-step::after {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0;
  width: 3px; background: var(--fc-aqua); opacity: 0; transition: opacity var(--fc-base) var(--fc-ease);
}
.fc-step:hover::after { opacity: 1; }
.fc-step__icon {
  width: 42px; height: 42px; border-radius: var(--fc-radius-md);
  background: rgba(40,193,208,0.1); color: var(--fc-aqua);
  display: grid; place-items: center; margin-bottom: 1rem;
}
.fc-step h3 { font-family: var(--fc-font-display); font-weight: 600; font-size: 1.1rem; margin: 0 0 0.4rem; color: var(--fc-white); }
.fc-step p { color: rgba(242,244,247,0.7); font-size: 0.9rem; margin: 0; line-height: 1.5; }

/* ---------- STICKY BOOK CTA ---------- */
.fc-stickybook {
  position: fixed; left: 50%; bottom: 1rem; transform: translateX(-50%);
  display: none; align-items: center; gap: 0.85rem;
  background: rgba(11,29,48,0.85); backdrop-filter: blur(18px);
  border: 1px solid rgba(40,193,208,0.3);
  border-radius: var(--fc-radius-pill);
  padding: 0.55rem 0.55rem 0.55rem 1.1rem;
  z-index: var(--fc-z-nav);
  box-shadow: 0 12px 40px -10px rgba(0,0,0,0.5);
  font-size: 0.9rem;
  animation: fc-rise 0.6s var(--fc-ease) both;
}
.fc-stickybook.is-on { display: inline-flex; }
.fc-stickybook__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--fc-emerald); box-shadow: 0 0 8px var(--fc-emerald); animation: fc-pulse 2.4s var(--fc-ease) infinite; }
.fc-stickybook__btn {
  background: var(--fc-emerald); color: var(--fc-cta-text);
  padding: 0.55rem 1rem; border-radius: var(--fc-radius-pill);
  font-family: var(--fc-font-display); font-weight: 600; font-size: 0.88rem;
}
@keyframes fc-rise {
  from { opacity: 0; transform: translateX(-50%) translateY(20px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}
@media (max-width: 720px) {
  /* Keep one persistent mobile CTA. The call button remains; the second
     sticky prompt is hidden to prevent overlap and competing actions. */
  .fc-stickybook,
  .fc-stickybook.is-on { display: none; }
  @keyframes fc-rise {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
  }
}

/* ---------- DIVIDER / WORDMARK ---------- */
.fc-divider {
  text-align: center; padding: 2rem 0;
  font-family: var(--fc-font-display); font-weight: 700;
  font-size: clamp(2rem, 8vw, 5rem); letter-spacing: -0.04em; line-height: 1;
  color: transparent;
  -webkit-text-stroke: 1px rgba(242,244,247,0.12);
}

/* ============================================================
   MOTION & DEPTH v2 — site-wide interaction layer
   Loaded by every page (home, towns, sub-pages). One consistent
   motion language. Stagger timing is applied by the page's rise
   script; all motion here is neutralized by the
   prefers-reduced-motion rule in tokens.css.
   ============================================================ */

/* --- Refined reveal: fade + lift + a touch of focus-blur --- */
.fc-rise {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity var(--fc-slow) var(--fc-ease),
              transform var(--fc-slow) var(--fc-ease);
  will-change: opacity, transform;
}
.fc-rise.is-in { opacity: 1; transform: translateY(0); }

/* --- Buttons: subtle lift + scale + a single sheen sweep ---
   Sheen sits at z-index:-1 inside an isolated stacking context, so
   it always sweeps BEHIND the label (even unwrapped text nodes). */
.fc-btn { position: relative; overflow: hidden; isolation: isolate; }
.fc-btn::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(120deg, transparent 35%, rgba(255,255,255,0.28) 50%, transparent 65%);
  transform: translateX(-130%);
  transition: transform var(--fc-slow) var(--fc-ease);
  pointer-events: none;
}
.fc-btn:hover::after { transform: translateX(130%); }
.fc-btn--primary:hover { transform: translateY(-2px) scale(1.02); box-shadow: 0 14px 34px -10px rgba(22,178,142,0.55); }
.fc-btn--ghost:hover { transform: translateY(-2px); }

/* --- Ambient depth: home cards float + glow on hover (matches .fc-svc) --- */
.fc-bento__cell, .fc-step, .fc-review {
  transition: border-color var(--fc-base) var(--fc-ease),
              transform var(--fc-base) var(--fc-ease),
              box-shadow var(--fc-base) var(--fc-ease);
}
.fc-bento__cell:hover, .fc-step:hover, .fc-review:hover {
  transform: translateY(-3px);
  border-color: rgba(40,193,208,0.30);
  box-shadow: var(--fc-shadow-aqua);
}

/* --- FAQ: answer eases in on open (CSS-only, every page) --- */
.fc-faq__item[open] .fc-faq__a { animation: fc-faq-reveal var(--fc-base) var(--fc-ease) both; }
@keyframes fc-faq-reveal {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}


/* ============================================================
   FORMS v2 — multi-step wizard (estimate) + radio/checkbox
   Used by estimate.html; safe to load everywhere.
   ============================================================ */
.fc-wizsteps {
  display: flex; gap: 0.5rem;
  list-style: none; padding: 0; margin: 0 0 2rem;
}
.fc-wizsteps li {
  flex: 1; text-align: center;
  font-family: var(--fc-font-mono); font-size: 0.72rem;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--fc-text-muted-on-dark);
  padding: 0.6rem 0.25rem 0.8rem;
  border-bottom: 2px solid var(--fc-line);
  transition: color var(--fc-fast) var(--fc-ease), border-color var(--fc-fast) var(--fc-ease);
}
.fc-wizsteps li.is-on { color: var(--fc-aqua); border-bottom-color: var(--fc-aqua); }
.fc-form__step { display: none; }
.fc-form__step.is-on { display: block; animation: fc-faq-reveal var(--fc-base) var(--fc-ease) both; }
.fc-radiogrid { display: grid; gap: 0.6rem; grid-template-columns: 1fr; }
@media (min-width: 640px) { .fc-radiogrid { grid-template-columns: 1fr 1fr; } }
.fc-radio {
  display: flex; align-items: center; gap: 0.75rem;
  padding: 1rem 1.1rem;
  background: var(--fc-navy-1);
  border: 1px solid var(--fc-line-strong);
  border-radius: var(--fc-radius-md);
  cursor: pointer; font-size: 0.95rem;
  transition: border-color var(--fc-fast) var(--fc-ease), background var(--fc-fast) var(--fc-ease);
}
.fc-radio:hover { border-color: var(--fc-aqua); }
.fc-radio:has(input:checked) { border-color: var(--fc-emerald); background: rgba(22, 178, 142, 0.08); }
.fc-radio input { accent-color: var(--fc-emerald); width: 18px; height: 18px; flex-shrink: 0; }
.fc-checkbox {
  display: flex; align-items: center; gap: 0.6rem;
  font-size: 0.9rem; color: rgba(242, 244, 247, 0.8); cursor: pointer;
}
.fc-checkbox input { accent-color: var(--fc-emerald); width: 17px; height: 17px; flex-shrink: 0; }
.fc-field__label { font-size: 0.85rem; color: var(--fc-text-muted-on-dark); }


/* ---------- MOBILE NAV (hamburger, built by nav.js) ---------- */
.fc-nav__toggle {
  display: none;
  background: none; border: 1px solid var(--fc-line-strong); color: var(--fc-white);
  border-radius: var(--fc-radius-md);
  width: 44px; height: 44px;
  align-items: center; justify-content: center;
  cursor: pointer; flex-shrink: 0; margin-left: 0.75rem;
}
@media (max-width: 860px) { .fc-nav__toggle { display: inline-flex; } }
.fc-nav__mobile[hidden] { display: none; }
.fc-nav__mobile { display: none; }
.fc-nav__mobile.is-open {
  display: block;
  background: var(--fc-navy);
  border-top: 1px solid var(--fc-line);
}
.fc-nav__mobile a {
  display: block; padding: 0.95rem 1.25rem;
  color: var(--fc-white); font-size: 1rem;
  border-bottom: 1px solid var(--fc-line);
}
.fc-nav__mobile a:hover { color: var(--fc-aqua); }
@media (max-width: 640px) { .fc-nav__toggle { margin-left: 0; width: 42px; height: 42px; } }

/* ============================================================
   MOBILE OPTIMIZATION LAYER — 2026-08-06
   ------------------------------------------------------------
   The home page measured 19,610px (24 screens) at 375px wide.
   Desktop is multi-column; on mobile every band stacked into one
   endless tunnel. This layer compresses layout WITHOUT removing
   copy, so SEO keywords stay in the DOM.

   Rules: mobile-only (max-width:720px) so desktop is untouched.
   Brand tokens are never redefined here — see tokens.css.
   ============================================================ */
@media (max-width: 720px) {

  /* --- Section rhythm: 13 sections x 64px of dead padding --- */
  .fc-section { padding-block: clamp(2.5rem, 7vw, 8rem); }

  /* --- SERVICES: 6 stacked cards (4.3 screens) -> swipe rail (~1) ---
     Cards sit on a horizontal snap rail that bleeds to the screen
     edge; the next card peeks at 12% to signal swipeability. */
  .fc-svcs {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: 84%;
    gap: 0.85rem;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    margin-inline: calc(var(--fc-gutter) * -1);
    padding-inline: var(--fc-gutter);
    padding-bottom: 0.5rem;
    scrollbar-width: none;
  }
  .fc-svcs::-webkit-scrollbar { display: none; }
  .fc-svc,
  .fc-svc--featured {
    grid-column: auto;
    grid-template-columns: 1fr;
    scroll-snap-align: start;
    min-height: 0;
  }
  .fc-svc__photo { min-height: 168px; }
  .fc-svc--featured .fc-svc__photo { order: 0; min-height: 190px; }
  .fc-svc--featured .fc-svc__body { padding: 1.25rem 1.35rem 1.5rem; gap: 0.7rem; }
  .fc-svc--featured .fc-svc__title { font-size: 1.4rem; }
  .fc-svc--featured .fc-svc__desc { font-size: 0.95rem; }
  .fc-svc__body { padding: 1.15rem 1.35rem 1.4rem; gap: 0.6rem; }

  /* --- PHOTO STRIP: 2x2 grid -> single-row rail --- */
  .fc-strip {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: 62%;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    margin-inline: calc(var(--fc-gutter) * -1);
    padding-inline: var(--fc-gutter);
    scrollbar-width: none;
  }
  .fc-strip::-webkit-scrollbar { display: none; }
  .fc-strip__cell { scroll-snap-align: start; }

  /* --- BENTO: 7 cells x a 180px row floor = 1,399px of mostly whitespace.
     Two columns + auto rows lets each cell be as tall as its own copy.
     NOTE: the base rule is `grid-column: span 6`, so cells must be
     re-spanned here or they spill into implicit columns. --- */
  .fc-bento {
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: auto;
    gap: 0.7rem;
  }
  .fc-bento__cell {
    grid-column: span 1;
    grid-row: auto;
    padding: 1rem;
    justify-content: flex-start;
  }
  .fc-bento__cell--wide { grid-column: span 2; grid-row: auto; }
  .fc-bento__cell--tall { grid-column: span 1; grid-row: auto; }
  .fc-bento__title { font-size: 1.02rem; line-height: 1.25; }
  .fc-bento__cell--wide .fc-bento__title { font-size: 1.3rem; }
  .fc-bento__desc { font-size: 0.85rem; line-height: 1.45; }

  /* --- HERO: 1,154px before a single word of the offer is read. --- */
  .fc-hero2 {
    min-height: 0;
    padding-block: clamp(3.5rem, 11vw, 9rem) clamp(2rem, 5vw, 5rem);
  }
  .fc-hero2__h1 { font-size: clamp(2rem, 8.5vw, 3rem); line-height: 1.12; }
  .fc-hero2__sub { font-size: 0.95rem; }
  .fc-hero2__meta { gap: 0.5rem 1rem; font-size: 0.8125rem; }

  /* --- REVIEWS: 3 stacked cards -> swipe rail --- */
  .fc-reviews {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: 82%;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    margin-inline: calc(var(--fc-gutter) * -1);
    padding-inline: var(--fc-gutter);
    scrollbar-width: none;
  }
  .fc-reviews::-webkit-scrollbar { display: none; }
  .fc-review { scroll-snap-align: start; }

  /* --- HOW IT WORKS: 4 short steps pair up instead of stacking --- */
  .fc-steps { grid-template-columns: repeat(2, 1fr); gap: 0.7rem; }
  .fc-step { padding: 1rem; }
  .fc-step p { font-size: 0.85rem; }

  /* --- SERVICE-AREA MAP: decorative canvas is unusable at 375px.
     Pins are ~10px and overlap. Hide the canvas, keep the 9 town
     links (real navigation + local SEO). --- */
  .fc-map { grid-template-columns: 1fr; padding: 0; background: none; border: none; }
  .fc-map__canvas { display: none; }

  /* --- Kill sticky-hover artifacts on touch --- */
  .fc-svc:hover, .fc-bento__cell:hover { transform: none; box-shadow: none; }
}

/* --- Touch devices at any width: hover transforms never resolve --- */
@media (hover: none) {
  .fc-svc:hover { transform: none; }
}

/* ------------------------------------------------------------
   TAP TARGETS & LEGIBILITY (all widths — these were failures,
   not mobile preferences)
   - 51 controls measured under 44x44 (WCAG 2.5.5 / Apple HIG).
   - ~100 text nodes measured under 14px, some at 11.2px.
   ------------------------------------------------------------ */
@media (max-width: 720px) {
  .fc-svc__link,
  .fc-map__listitem,
  .fc-footer__col a,
  .fc-nav__mobile a {
    min-height: 44px;
    display: flex;
    align-items: center;
  }
  .fc-svc__meta { gap: 0.75rem; flex-wrap: wrap; }
  .fc-svc__link { font-size: 0.9rem; }
  .fc-calc__opt { min-height: 44px; font-size: 0.9rem; }
  .fc-footer__col a { padding-block: 0.35rem; font-size: 0.95rem; }

  /* Legibility floor: nothing below 13px on a phone. */
  .fc-svc__price,
  .fc-review__source,
  .fc-calc__note,
  .fc-linen2__math__row,
  .fc-map__listitem small,
  .fc-footer__legal { font-size: 0.8125rem; }
  .fc-label { font-size: 0.75rem; }
}

/* --- FOOTER on mobile: 23 links stacked = 1.9 screens, and the 44px
   tap-target floor above would have made it WORSE (23 x 44 = 1012px).
   Two columns keeps every link visible, tappable, and crawlable while
   halving the height. No <details>, no JS. --- */
@media (max-width: 720px) {
  .fc-footer__grid { gap: 1.75rem; padding-bottom: 2rem; }
  .fc-footer__links {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 0.75rem;
    align-items: start;
  }
  .fc-footer__col h4 { margin-bottom: 0.25rem; }
  .fc-footer__wordmark { font-size: clamp(2.5rem, 16vw, 16rem); }
  .fc-footer__legal { flex-direction: column; gap: 0.4rem; text-align: center; }
}

/* --- Final mobile trims: decorative chrome and accordion density --- */
@media (max-width: 720px) {
  /* Decorative wordmark band cost 128px of pure ornament. */
  .fc-divider { padding-block: 1.25rem; font-size: 0.7rem; letter-spacing: 0.2em; }

  /* Collapsed FAQ rows were 94-120px because the question wrapped at
     full padding. Tighter rows keep all 9 questions scannable. */
  .fc-faq__q { padding: 0.9rem 2.5rem 0.9rem 1rem; font-size: 0.95rem; line-height: 1.35; }
  .fc-faq__a { padding: 0 1rem 1rem; font-size: 0.9rem; }

  /* Footer links: 44px x 23 links dominated the footer. 38px still clears
     the WCAG 2.5.8 (AA) 24px floor comfortably for secondary nav. */
  .fc-footer__col a { min-height: 38px; }
}

/* --- Primary nav controls to a full 44px target --- */
@media (max-width: 720px) {
  .fc-nav__toggle { width: 44px; height: 44px; }
  .fc-nav .fc-logo { min-height: 44px; }
}

/* ============================================================
   MOBILE OPTIMIZATION LAYER v2 — 2026-08-06 (sitewide rollout)
   ------------------------------------------------------------
   v1 covered index.html. Measuring the other 27 pages at 375px
   found the same tax living in *shared* components, so fixing
   them here fixes every page at once:

     footer      1,195px on all 28 pages
     .fc-hero2   1,005px on the 9 service-area pages
     .fc-stats     318px, .fc-cta-band 480-540px, everywhere

   Same rules as v1: mobile-only, no copy removed, no brand
   token redefined.
   ============================================================ */
@media (max-width: 720px) {

  /* --- HERO2 (service-area pages): 1,005px before the fold ends.
     The h1/sub/copy stay as-is — that's the pitch. What goes is
     chrome: the chip row wrapped onto 3-4 lines (126px for four
     one-word badges), and the availability card ran 227px of
     padding around four short rows. --- */
  .fc-hero2 { padding-block: clamp(3rem, 9vw, 9rem) clamp(1.5rem, 4vw, 5rem); }
  .fc-hero2__inner { gap: 0.85rem; }

  /* The .fc-chiprow scroll row lives in town.css, not here: every page
     that has a chip row also loads town.css, and town.css loads after
     this file, so a copy here would be dead code that silently drifts. */

  .fc-availcard { padding: 0.9rem 1.05rem; margin-top: 1rem; }
  .fc-availcard__row { padding: 0.4rem 0; font-size: 0.85rem; }
  .fc-hero2__cta .fc-btn { padding-block: 0.8rem; }

  /* --- STAT BAND: 2rem of vertical padding around a number --- */
  .fc-stat { padding: 1.15rem 0.75rem; }
  .fc-stat__label { font-size: 0.78rem; line-height: 1.35; }

  /* --- CTA BAND: 4rem top + 4rem bottom on a 3-line pitch --- */
  .fc-cta-band { padding: clamp(2.5rem, 7vw, 7rem) 1rem; }
  .fc-cta-band p { margin-bottom: 1.25rem; }

  /* --- FOOTER: 1,195px x 28 pages. The links themselves are the
     footer's job and all 23 stay visible (see the 2-column rule
     above); this trims the frame around them. The wordmark is
     pure ornament — 96px of it. --- */
  .fc-footer { padding-top: 2.5rem; }
  .fc-footer__grid { padding-bottom: 1.5rem; }
  .fc-footer__col h4 { margin-bottom: 0.5rem; }
  .fc-footer__wordmark { font-size: clamp(2rem, 13vw, 16rem); padding: 0.5rem 0 1rem; }
  .fc-footer__legal { padding: 1rem 0; }

  /* --- RATE TABLES (pricing.html, service-area pricing): every
     cell carries an inline `padding:.75rem`, so !important is the
     only lever. 6 rows x 2 sides x 4px = a screen and a half
     across the page's five tables. --- */
  .fc-rates td,
  .fc-rates th,
  .fc-rates table td,
  .fc-rates table th { padding: 0.45rem 0.5rem !important; font-size: 0.85rem; }
}

/* --- SERVICE CARDS: this was a live layout bug, not a preference.
   `.fc-services` is a 12-column grid and `.fc-service` is
   `grid-column: span 6` at *every* width — so at 375px the cards
   were still two-up, ~171px wide. Titles wrapped to 243px tall and
   one card measured 1,153px. Same trap as the bento grid (AGENTS.md
   §3 #7): overriding the parent grid means re-spanning the children.
   Also drops the 280px min-height, which was padding short cards. --- */
@media (max-width: 720px) {
  .fc-services { grid-template-columns: 1fr; gap: 0.85rem; }
  .fc-service,
  .fc-service--featured { grid-column: 1 / -1; min-height: 0; padding: 1.25rem 1.35rem; gap: 0.7rem; }
  .fc-service__title { font-size: 1.25rem; line-height: 1.25; }
  .fc-service p { font-size: 0.92rem; line-height: 1.5; margin-block: 0.5rem; }
  .fc-service:hover { transform: none; box-shadow: none; }

  /* --- SUB-PAGE HERO: 80px of padding top and bottom on 10 pages
     for a breadcrumb, an h1 and one paragraph. --- */
  .fc-hero { padding-block: clamp(3rem, 9vw, 10rem); }
  .fc-hero__sub { font-size: 1.05rem; line-height: 1.5; }
}

/* --- Second pass: the last of the shared vertical tax. --- */
@media (max-width: 720px) {
  /* An h1 at 44px ran to 5 lines / 209px on vr-turnover. */
  .fc-hero__h1 { font-size: clamp(2rem, 9vw, 5rem); line-height: 1.1; }

  /* Button clusters stack full-width; 2 clusters cost 253px. */
  .fc-cluster { gap: 0.6rem; }
  .fc-cluster .fc-btn { padding-block: 0.8rem; }

  .fc-secheader { gap: 0.6rem; }
  .fc-marquee { padding-block: 0.7rem; }
  .fc-linen { gap: 1rem; }
  .fc-step { padding: 0.9rem; }
  .fc-step h3 { font-size: 1rem; }
}

/* --- Breadcrumb links measured 19px tall, under the WCAG 2.5.8 (AA)
   24px floor. They sit in a row, so height is the only axis that
   needs padding. Inline links inside prose are exempt from 2.5.8
   and are deliberately left alone. --- */
@media (max-width: 720px) {
  .fc-crumb a { display: inline-flex; align-items: center; min-height: 24px; }
}


/* ============================================================
   FOOTER ACCORDION — 2026-08-06
   ------------------------------------------------------------
   The link columns were ~910px on every one of the 28 pages —
   the single largest shared block left on mobile.

   The <details> ship OPEN in the HTML and site.js closes them
   below 720px. That direction matters: a closed <details> in the
   markup would hide the links by default, and "content that is
   invisible unless a script runs" is the exact failure this repo
   has hit three times (AGENTS.md §3 #1, #6, #9). This way, if the
   JS never runs the footer is merely tall — never empty.

   Desktop is untouched: the summary is inert and the marker is
   gone, so it renders exactly like the old <h4>.
   ============================================================ */
.fc-footer__acc > summary {
  list-style: none;
  cursor: default;
  pointer-events: none;      /* desktop: not a control, just a heading */
}
.fc-footer__acc > summary::-webkit-details-marker { display: none; }
.fc-footer__acc > summary h4 { margin-bottom: 1rem; }

@media (max-width: 720px) {
  .fc-footer__acc > summary {
    pointer-events: auto;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 44px;        /* WCAG 2.5.5 — this one is a real control */
    padding-right: 0.25rem;
    border-bottom: 1px solid var(--fc-line);
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .fc-footer__acc > summary h4 { margin: 0; }
  /* Chevron, drawn in CSS so there is no icon to go missing. */
  .fc-footer__acc > summary::after {
    content: "";
    width: 8px; height: 8px;
    border-right: 2px solid var(--fc-aqua);
    border-bottom: 2px solid var(--fc-aqua);
    transform: rotate(45deg) translate(-2px, -2px);
    transition: transform var(--fc-fast) var(--fc-ease);
    flex: 0 0 auto;
  }
  .fc-footer__acc[open] > summary::after { transform: rotate(225deg) translate(-2px, -2px); }
  .fc-footer__links { padding-top: 0.5rem; }
}

/* Keyboard users must still see where they are. */
.fc-footer__acc > summary:focus-visible {
  outline: 2px solid var(--fc-aqua);
  outline-offset: 3px;
  border-radius: 4px;
}

/* ============================================================
   Forja chat widget — mobile position override (2026-08-07)
   The widget itself lives in a Shadow DOM (its own CSS, untouchable
   from here) but reads its left/right offset from CSS custom
   properties set on its host node, which DO cross the shadow
   boundary. On phones the widget's default bottom-right corner is
   the same corner as .fc-call-fab (§1.3 above), so the two stack on
   top of each other. Push the chat bubble to bottom-left instead of
   moving the call button — the call button is the older, more-tuned
   CTA and the widget is designed to work from either side.
   ============================================================ */
@media (max-width: 720px) {
  [data-forja-widget] {
    --der: auto !important;
    --izq: 1rem !important;
  }
}
