/* =========================================================================
   Fabi's House Cleaning
   White-first design system. Colour comes from the logo (teal family) and is
   used as accent only — the page itself stays bright, open and clean.
   ========================================================================= */

/* ---------- 1. Tokens ---------------------------------------------------- */
:root {
  /* Neutrals — white does most of the work */
  --white: #FFFFFF;
  --tint: #F3FAFB;
  --tint-2: #E9F5F7;
  --line: #E3EEF0;
  --line-soft: #EFF6F7;

  /* Brand teal, sampled from the logo */
  --teal-900: #06333C;
  --teal-800: #08505E;
  --teal-700: #016A7D;   /* the "Fabi's" wordmark */
  --teal-600: #018494;   /* the house mark */
  --teal-500: #12A3B4;
  --teal-400: #35BECC;
  --teal-300: #7FD6DF;
  --teal-200: #B4E7EC;
  --teal-100: #D5EEF1;
  --teal-50:  #EDF8F9;

  /* Text */
  --ink: #0B2B33;
  --text: #22454D;
  --muted: #4E6B72;
  --on-teal-soft: #D8F0F3;

  /* State */
  --focus: #12A3B4;
  --error: #C2382F;
  --error-bg: #FDF1F0;
  --star: #D98A24;

  /* Radii — soft and modern */
  --r-sm: 10px;
  --r-md: 16px;
  --r-lg: 22px;
  --r-xl: 30px;
  --r-pill: 999px;

  /* Shadows — light and diffuse, never heavy */
  --sh-xs: 0 1px 2px rgba(11, 43, 51, .05);
  --sh-sm: 0 2px 8px rgba(11, 43, 51, .05), 0 1px 2px rgba(11, 43, 51, .04);
  --sh-md: 0 8px 26px rgba(11, 43, 51, .07), 0 2px 6px rgba(11, 43, 51, .04);
  --sh-lg: 0 18px 48px rgba(11, 43, 51, .10), 0 4px 12px rgba(11, 43, 51, .05);
  --sh-xl: 0 32px 80px rgba(11, 43, 51, .13), 0 8px 20px rgba(11, 43, 51, .06);
  --sh-teal: 0 12px 30px rgba(1, 132, 148, .24);

  /* Type */
  --font-display: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  /* Rhythm */
  --gutter: clamp(20px, 5vw, 56px);
  --measure: 1240px;
  --section-y: clamp(68px, 8vw, 122px);

  /* Motion */
  --ease: cubic-bezier(.22, 1, .36, 1);
  --t-fast: .2s;
  --t: .4s;
  --t-slow: .85s;

  --header-h: 106px;
}
@media (max-width: 980px) { :root { --header-h: 80px; } }

/* ---------- 2. Reset ----------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + 20px);
}

body {
  margin: 0;
  background: var(--white);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.68;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
h1, h2, h3, h4 { margin: 0; font-family: var(--font-display); font-weight: 800; color: var(--ink); }
figure, blockquote, figcaption, dl, dd, fieldset { margin: 0; }
fieldset { border: 0; padding: 0; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
::selection { background: var(--teal-100); color: var(--ink); }

:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; border-radius: 6px; }
.fhc-cta :focus-visible, .fhc-quote__top :focus-visible { outline-color: #fff; }

.fhc-sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.fhc-skip-link {
  position: absolute; top: 10px; left: 10px; z-index: 300;
  transform: translateY(-200%);
  background: var(--teal-700); color: #fff;
  padding: 12px 22px; border-radius: var(--r-pill);
  font-size: 14px; font-weight: 600;
  transition: transform var(--t) var(--ease);
}
.fhc-skip-link:focus { transform: none; }

/* ---------- 3. Typography ------------------------------------------------ */
.fhc-d1, .fhc-d2, .fhc-d3, .fhc-d4 { letter-spacing: -.03em; line-height: 1.06; text-wrap: balance; }
.fhc-d1 { font-size: clamp(2.3rem, 4.8vw, 4rem); }
.fhc-d2 { font-size: clamp(1.92rem, 3.6vw, 3rem); line-height: 1.1; }
.fhc-d3 { font-size: clamp(1.45rem, 2.4vw, 2.05rem); line-height: 1.16; letter-spacing: -.026em; }
.fhc-d4 { font-size: clamp(1.14rem, 1.6vw, 1.38rem); line-height: 1.28; letter-spacing: -.022em; }

.fhc-lede {
  font-size: clamp(1.04rem, 1.25vw, 1.18rem);
  line-height: 1.62; color: var(--muted);
  max-width: 56ch; text-wrap: pretty;
}
.fhc-small { font-size: .89rem; line-height: 1.6; }

/* Section label — a soft tinted chip. No rules, no dashes. */
.fhc-label {
  display: inline-block;
  padding: 7px 16px;
  background: var(--teal-50);
  color: var(--teal-700);
  border-radius: var(--r-pill);
  font-family: var(--font-display);
  font-size: .74rem; font-weight: 700;
  letter-spacing: .11em; text-transform: uppercase;
}
.fhc-cta .fhc-label { background: rgba(255,255,255,.13); color: #fff; }

.fhc-hl { color: var(--teal-600); }

/* ---------- 4. Layout ---------------------------------------------------- */
.fhc-container { width: 100%; max-width: var(--measure); margin-inline: auto; padding-inline: var(--gutter); }
.fhc-container--wide { max-width: 1440px; }
.fhc-container--narrow { max-width: 860px; }

.fhc-section { padding-block: var(--section-y); position: relative; }
.fhc-section--tight { padding-block: clamp(52px, 6vw, 84px); }
.fhc-section--tint { background: var(--tint); }

.fhc-head { margin-bottom: clamp(38px, 5vw, 62px); }
.fhc-head h2 { margin-top: 18px; }
.fhc-head .fhc-lede { margin-top: 18px; }
.fhc-head--center { text-align: center; }
.fhc-head--center .fhc-lede { margin-inline: auto; }
.fhc-head--split { display: grid; gap: clamp(18px, 3vw, 48px); align-items: end; }
@media (min-width: 900px) { .fhc-head--split { grid-template-columns: minmax(0,1fr) minmax(0,25rem); } }

/* Grid children must be free to shrink below their content width */
.fhc-hero__grid > *, .fhc-grid-2 > *, .fhc-svc-grid > *, .fhc-why__grid > *, .fhc-steps > *,
.fhc-about__grid > *, .fhc-areas__grid > *, .fhc-faq__grid > *, .fhc-foot__grid > *,
.fhc-cta__inner > *, .fhc-trust__row > *,
.fhc-hero__strip > *, .fhc-why__list > *, .fhc-areas__list > *, .fhc-head--split > * { min-width: 0; }

/* ---------- 5. Motion ---------------------------------------------------- */
[data-reveal] {
  opacity: 0;
  transition: opacity var(--t-slow) var(--ease), transform var(--t-slow) var(--ease),
              clip-path 1s var(--ease), filter var(--t-slow) var(--ease);
  transition-delay: calc(var(--i, 0) * 85ms);
  will-change: opacity, transform;
}
[data-reveal="up"]    { transform: translateY(30px); }
[data-reveal="down"]  { transform: translateY(-24px); }
[data-reveal="left"]  { transform: translateX(-30px); }
[data-reveal="right"] { transform: translateX(30px); }
[data-reveal="zoom"]  { transform: scale(.94); }
[data-reveal="mask"]  { opacity: 1; clip-path: inset(0 0 100% 0); }
[data-reveal="blur"]  { filter: blur(10px); transform: translateY(18px); }
[data-reveal].is-in   { opacity: 1; transform: none; clip-path: inset(0 0 0 0); filter: none; }

/* Word-by-word headline entrance */
.fhc-words .fhc-w {
  display: inline-block;
  opacity: 0; transform: translateY(.55em);
  transition: opacity .7s var(--ease), transform .7s var(--ease);
  transition-delay: calc(var(--wi, 0) * 52ms);
}
.fhc-words.is-in .fhc-w { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important; animation-iteration-count: 1 !important;
    transition-duration: .001ms !important; scroll-behavior: auto !important;
  }
  [data-reveal], .fhc-words .fhc-w { opacity: 1 !important; transform: none !important; clip-path: none !important; filter: none !important; }
  .fhc-marquee__track { animation: none !important; }
}

/* ---------- 6. Buttons --------------------------------------------------- */
.fhc-btn {
  position: relative; isolation: isolate;
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  padding: 16px 28px;
  border: 0; border-radius: var(--r-pill);
  background: var(--teal-700); color: #fff;
  font-family: var(--font-display);
  font-size: .95rem; font-weight: 700; letter-spacing: -.005em; line-height: 1.2;
  cursor: pointer; overflow: hidden;
  box-shadow: var(--sh-teal);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease), color var(--t) var(--ease);
}
.fhc-btn::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(120deg, var(--teal-600), var(--teal-500));
  opacity: 0; transition: opacity var(--t) var(--ease);
}
.fhc-btn:hover { transform: translateY(-2px); box-shadow: 0 16px 36px rgba(1,132,148,.32); }
.fhc-btn:hover::before { opacity: 1; }
.fhc-btn:active { transform: translateY(0); }
.fhc-btn .fhc-ic { width: 18px; height: 18px; transition: transform var(--t) var(--ease); }
.fhc-btn:hover .fhc-ic--go { transform: translateX(4px); }

.fhc-btn--lg { padding: 19px 34px; font-size: 1.02rem; }
.fhc-btn--sm { padding: 12px 20px; font-size: .88rem; }
.fhc-btn--block { display: flex; width: 100%; }

.fhc-btn--soft { background: var(--teal-50); color: var(--teal-700); box-shadow: none; }
.fhc-btn--soft::before { background: var(--teal-100); }
.fhc-btn--soft:hover { box-shadow: var(--sh-sm); }

.fhc-btn--outline { background: #fff; color: var(--ink); box-shadow: inset 0 0 0 1.5px var(--line), var(--sh-xs); }
.fhc-btn--outline::before { background: var(--teal-50); }
.fhc-btn--outline:hover { color: var(--teal-700); box-shadow: inset 0 0 0 1.5px var(--teal-300), var(--sh-sm); }

.fhc-btn--white { background: #fff; color: var(--teal-800); box-shadow: 0 12px 30px rgba(0,0,0,.18); }
.fhc-btn--white::before { background: var(--teal-50); }

.fhc-btn--ghost-white { background: transparent; color: #fff; box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.5); }
.fhc-btn--ghost-white::before { background: rgba(255,255,255,.16); }

.fhc-btn[disabled] { opacity: .5; pointer-events: none; }

.fhc-tlink {
  position: relative; display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--font-display); font-weight: 700; color: var(--teal-700);
}
.fhc-tlink::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -3px; height: 2px;
  background: currentColor; border-radius: 2px;
  transform: scaleX(0); transform-origin: right;
  transition: transform var(--t) var(--ease);
}
.fhc-tlink:hover::after { transform: scaleX(1); transform-origin: left; }
.fhc-tlink .fhc-ic { width: 16px; height: 16px; transition: transform var(--t) var(--ease); }
.fhc-tlink:hover .fhc-ic { transform: translateX(3px); }

.fhc-ic { width: 1em; height: 1em; flex: none; }

/* ---------- 7. Top bar + header ------------------------------------------ */
.fhc-topbar { background: var(--teal-50); color: var(--teal-800); font-size: .81rem; border-bottom: 1px solid var(--line-soft); }
.fhc-topbar__in { display: flex; align-items: center; justify-content: center; gap: 18px; min-height: 42px; padding-block: 7px; flex-wrap: wrap; }
.fhc-topbar__l { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.fhc-topbar__i { display: inline-flex; align-items: center; gap: 7px; font-weight: 500; }
.fhc-topbar__i .fhc-ic { width: 15px; height: 15px; color: var(--teal-600); }
.fhc-topbar a:hover { color: var(--teal-600); }
@media (max-width: 720px) { .fhc-topbar__hide { display: none; } }

.fhc-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(255,255,255,.88);
  -webkit-backdrop-filter: saturate(1.6) blur(14px);
  backdrop-filter: saturate(1.6) blur(14px);
  border-bottom: 1px solid transparent;
  transition: box-shadow var(--t) var(--ease), border-color var(--t) var(--ease), background-color var(--t) var(--ease);
}
/* O Elementor embrulha cada widget em caixas do tamanho exato do widget, e
   position:sticky nao tem por onde andar dentro de uma caixa do seu proprio
   tamanho - por isso o cabecalho sumia junto com a rolagem. Passar a fixacao
   para o container do Elementor, que fica direto dentro do wrapper alto da
   pagina, da o espaco que falta. Navegador sem :has() mantem o de antes. */
.e-con:has(> * > .fhc-header), .e-con:has(> .fhc-header),
.elementor-section:has(.fhc-header) { position: sticky; top: 0; z-index: 100; }

.fhc-header.is-stuck { background: rgba(255,255,255,.95); border-bottom-color: var(--line); box-shadow: 0 6px 28px rgba(11,43,51,.06); }
.fhc-header__in { display: flex; align-items: center; gap: clamp(12px, 2.4vw, 30px); min-height: var(--header-h); transition: min-height var(--t) var(--ease); }
.fhc-header.is-stuck .fhc-header__in { min-height: calc(var(--header-h) - 14px); }

.fhc-brand { flex: none; display: inline-flex; align-items: center; }
.fhc-brand img { width: auto; height: clamp(54px, 6vw, 76px); transition: height var(--t) var(--ease), transform var(--t) var(--ease); }
.fhc-header.is-stuck .fhc-brand img { height: clamp(46px, 5vw, 62px); }
.fhc-brand:hover img { transform: scale(1.03); }

.fhc-nav { margin-left: auto; }
.fhc-nav__list { display: flex; align-items: center; gap: clamp(2px, 1vw, 10px); }
.fhc-nav__link {
  position: relative; display: block;
  padding: 10px 13px; border-radius: var(--r-pill);
  font-family: var(--font-display); font-size: .93rem; font-weight: 700; color: var(--text);
  white-space: nowrap;
  transition: color var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);
}
.fhc-nav__link:hover, .fhc-nav__link.is-active { color: var(--teal-700); background: var(--teal-50); }

.fhc-header__cta { display: flex; align-items: center; gap: 10px; flex: none; }
.fhc-header__text { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-display); font-weight: 700; font-size: .92rem; color: var(--ink); padding: 10px 6px; transition: color var(--t-fast) var(--ease); }
.fhc-header__text:hover { color: var(--teal-700); }
.fhc-header__text .fhc-ic { width: 18px; height: 18px; color: var(--teal-600); }

@media (max-width: 1180px) { .fhc-nav, .fhc-header__cta { display: none; } }

.fhc-burger { display: none; margin-left: auto; width: 48px; height: 48px; border-radius: var(--r-pill); align-items: center; justify-content: center; background: var(--teal-50); color: var(--teal-700); }
.fhc-burger span { position: relative; width: 20px; height: 12px; display: block; }
.fhc-burger span i { position: absolute; left: 0; height: 2px; width: 100%; border-radius: 2px; background: currentColor; transition: transform var(--t) var(--ease), opacity var(--t-fast) linear; }
.fhc-burger span i:nth-child(1) { top: 0; }
.fhc-burger span i:nth-child(2) { top: 5px; width: 70%; }
.fhc-burger span i:nth-child(3) { top: 10px; }
.fhc-burger[aria-expanded="true"] span i:nth-child(1) { transform: translateY(5px) rotate(45deg); }
.fhc-burger[aria-expanded="true"] span i:nth-child(2) { opacity: 0; }
.fhc-burger[aria-expanded="true"] span i:nth-child(3) { transform: translateY(-5px) rotate(-45deg); }
@media (max-width: 1180px) { .fhc-burger { display: inline-flex; } }

.fhc-mnav {
  position: fixed; inset: 0; z-index: 99; background: #fff;
  /* --mnav-top e escrito pelo script com a borda de baixo real do cabecalho:
     a faixa de topo some ao rolar, e o WordPress ainda acrescenta a propria
     barra de admin, entao o cabecalho nao termina sempre no mesmo lugar. */
  padding: calc(var(--mnav-top, var(--header-h)) + 24px) var(--gutter) 32px;
  display: flex; flex-direction: column; overflow-y: auto;
  clip-path: circle(0% at calc(100% - 44px) 44px);
  transition: clip-path .65s var(--ease), visibility 0s linear .65s;
  visibility: hidden;
}
.fhc-mnav.is-open { clip-path: circle(150% at calc(100% - 44px) 44px); visibility: visible; transition-delay: 0s, 0s; }
.fhc-mnav__list { display: flex; flex-direction: column; gap: 5px; }
.fhc-mnav__link {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 18px; border-radius: var(--r-md);
  font-family: var(--font-display); font-size: 1.28rem; font-weight: 700; color: var(--ink);
  background: var(--tint);
  opacity: 0; transform: translateY(16px);
  transition: opacity .5s var(--ease), transform .5s var(--ease), background-color var(--t-fast) var(--ease);
  transition-delay: calc(var(--i,0) * 50ms + .14s), calc(var(--i,0) * 50ms + .14s), 0s;
}
.fhc-mnav.is-open .fhc-mnav__link { opacity: 1; transform: none; }
.fhc-mnav__link:hover { background: var(--teal-50); }
.fhc-mnav__link .fhc-ic { width: 18px; height: 18px; color: var(--teal-500); }
.fhc-mnav__foot { margin-top: auto; padding-top: 26px; display: grid; gap: 10px; }
.fhc-mnav__meta { color: var(--muted); font-size: .87rem; text-align: center; margin-top: 6px; }

/* ---------- 8. Hero ------------------------------------------------------ */
.fhc-hero { position: relative; overflow: hidden; padding-top: clamp(34px, 4.5vw, 62px); padding-bottom: clamp(44px, 5vw, 70px); }
.fhc-hero__glow {
  position: absolute; z-index: -1; pointer-events: none;
  width: min(900px, 90vw); aspect-ratio: 1; border-radius: 50%;
  right: -18%; top: -42%;
  background: radial-gradient(circle, rgba(53,190,204,.20), rgba(53,190,204,0) 68%);
}
.fhc-hero__glow--2 { left: -22%; top: 30%; right: auto; width: min(680px, 80vw); background: radial-gradient(circle, rgba(1,132,148,.10), rgba(1,132,148,0) 68%); }

.fhc-hero__grid { display: grid; gap: clamp(34px, 4vw, 58px); align-items: center; }
@media (min-width: 1080px) { .fhc-hero__grid { grid-template-columns: minmax(0, 1.08fr) minmax(0, 452px); } }

.fhc-hero h1 { margin-top: 20px; }
.fhc-hero__sub { margin-top: 20px; max-width: 47ch; font-size: clamp(1.04rem, 1.2vw, 1.15rem); color: var(--muted); }

.fhc-hero__chips { margin-top: 26px; display: flex; flex-wrap: wrap; gap: 9px; }
.fhc-chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 16px 9px 12px;
  background: #fff; border-radius: var(--r-pill);
  box-shadow: inset 0 0 0 1px var(--line), var(--sh-xs);
  font-size: .87rem; font-weight: 600; color: var(--ink);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.fhc-chip:hover { transform: translateY(-2px); box-shadow: inset 0 0 0 1px var(--teal-300), var(--sh-sm); }
.fhc-chip .fhc-ic { width: 17px; height: 17px; color: var(--teal-600); }

.fhc-hero__actions { margin-top: 30px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.fhc-hero__call { display: inline-flex; align-items: center; gap: 12px; }
.fhc-hero__call-ic { width: 46px; height: 46px; border-radius: var(--r-pill); display: grid; place-items: center; background: var(--teal-50); color: var(--teal-700); transition: transform var(--t) var(--ease), background-color var(--t) var(--ease); }
.fhc-hero__call:hover .fhc-hero__call-ic { transform: scale(1.08); background: var(--teal-100); }
.fhc-hero__call-ic .fhc-ic { width: 20px; height: 20px; }
.fhc-hero__call b { display: block; font-family: var(--font-display); font-size: 1.05rem; font-weight: 700; color: var(--ink); }
.fhc-hero__call span { display: block; font-size: .8rem; color: var(--muted); }

.fhc-hero__strip { margin-top: clamp(38px, 5vw, 60px); display: grid; gap: clamp(10px, 1.4vw, 18px); grid-template-columns: repeat(2, 1fr); }
@media (min-width: 760px) { .fhc-hero__strip { grid-template-columns: repeat(4, 1fr); } }
.fhc-shot { position: relative; overflow: hidden; border-radius: var(--r-lg); background: var(--tint); box-shadow: var(--sh-sm); }
.fhc-shot img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s var(--ease); }
.fhc-shot:hover img { transform: scale(1.06); }
.fhc-hero__strip .fhc-shot { aspect-ratio: 4 / 3; }
@media (min-width: 760px) { .fhc-hero__strip .fhc-shot:nth-child(odd) { margin-top: clamp(10px, 1.6vw, 22px); } }

/* ---------- 9. Quote form ------------------------------------------------ */
.fhc-quote { position: relative; background: #fff; border-radius: var(--r-xl); box-shadow: var(--sh-xl); overflow: hidden; }
.fhc-quote__top { padding: 26px clamp(20px, 3vw, 30px) 20px; background: linear-gradient(135deg, var(--teal-800), var(--teal-700)); color: #fff; }
.fhc-quote__top h2 { color: #fff; font-size: 1.34rem; letter-spacing: -.028em; }
.fhc-quote__top p { margin-top: 5px; font-size: .88rem; color: var(--on-teal-soft); }
.fhc-quote__rail { display: flex; gap: 6px; margin-top: 18px; }
.fhc-quote__rail span { flex: 1; height: 4px; border-radius: 3px; background: rgba(255,255,255,.3); overflow: hidden; }
.fhc-quote__rail span i { display: block; height: 100%; width: 0; background: #fff; border-radius: 3px; transition: width .55s var(--ease); }
.fhc-quote__rail span.is-done i, .fhc-quote__rail span.is-now i { width: 100%; }
.fhc-quote__count { display: flex; justify-content: space-between; gap: 10px; margin-top: 11px; font-size: .78rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--on-teal-soft); }
.fhc-quote__count b { color: #fff; }

.fhc-quote__body { padding: clamp(22px, 3vw, 28px) clamp(20px, 3vw, 30px); }

.fhc-step { display: none; border: 0; padding: 0; margin: 0; }
.fhc-step.is-active { display: block; animation: stepIn .45s var(--ease) both; }
@keyframes stepIn { from { opacity: 0; transform: translateX(18px) } to { opacity: 1; transform: none } }
.fhc-step.is-active[data-dir="back"] { animation-name: stepBack; }
@keyframes stepBack { from { opacity: 0; transform: translateX(-18px) } to { opacity: 1; transform: none } }

.fhc-field { margin-bottom: 20px; }
.fhc-field:last-child { margin-bottom: 0; }
.fhc-field__label { display: block; margin-bottom: 9px; font-family: var(--font-display); font-size: .93rem; font-weight: 700; color: var(--ink); }
.fhc-field__label .fhc-opt { font-family: var(--font-body); font-weight: 400; color: var(--muted); font-size: .86em; margin-left: 6px; }
.fhc-field__hint { margin-top: 8px; font-size: .82rem; color: var(--muted); }

.fhc-seg { display: flex; flex-wrap: wrap; gap: 7px; }
.fhc-seg input, .fhc-opts input, .fhc-chips-in input { position: absolute; opacity: 0; width: 0; height: 0; }
.fhc-seg label {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 54px; padding: 12px 15px;
  border-radius: var(--r-pill); background: var(--tint);
  box-shadow: inset 0 0 0 1.5px transparent;
  font-size: .94rem; font-weight: 600; cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
              box-shadow var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.fhc-seg label:hover { background: var(--teal-50); box-shadow: inset 0 0 0 1.5px var(--teal-300); }
.fhc-seg input:checked + label { background: var(--teal-700); color: #fff; box-shadow: 0 6px 16px rgba(1,132,148,.3); }
.fhc-seg input:focus-visible + label { outline: 3px solid var(--focus); outline-offset: 2px; }
.fhc-seg label:active { transform: scale(.96); }

.fhc-opts { display: grid; gap: 8px; }
.fhc-opts label {
  display: flex; align-items: center; gap: 13px;
  padding: 14px 16px; border-radius: var(--r-md);
  background: var(--tint); cursor: pointer;
  box-shadow: inset 0 0 0 1.5px transparent;
  transition: background-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.fhc-opts label:hover { background: var(--teal-50); }
.fhc-opts .fhc-tick { flex: none; width: 22px; height: 22px; border-radius: var(--r-pill); background: #fff; box-shadow: inset 0 0 0 1.5px var(--line); display: grid; place-items: center; transition: background-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease); }
.fhc-opts .fhc-tick::after { content: ""; width: 9px; height: 9px; border-radius: 50%; background: #fff; transform: scale(0); transition: transform var(--t-fast) var(--ease); }
.fhc-opts input:checked + label { background: var(--teal-50); box-shadow: inset 0 0 0 1.5px var(--teal-500); }
.fhc-opts input:checked + label .fhc-tick { background: var(--teal-700); box-shadow: none; }
.fhc-opts input:checked + label .fhc-tick::after { transform: scale(1); }
.fhc-opts input:focus-visible + label { outline: 3px solid var(--focus); outline-offset: 2px; }
.fhc-opts .fhc-n { font-family: var(--font-display); font-weight: 700; font-size: .97rem; color: var(--ink); }
.fhc-opts .fhc-d { display: block; font-family: var(--font-body); font-weight: 400; font-size: .84rem; color: var(--muted); margin-top: 1px; }

.fhc-chips-in { display: flex; flex-wrap: wrap; gap: 7px; }
.fhc-chips-in label {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 11px 16px; border-radius: var(--r-pill);
  background: var(--tint); font-size: .89rem; font-weight: 600; cursor: pointer;
  box-shadow: inset 0 0 0 1.5px transparent;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.fhc-chips-in label::before { content: ""; width: 14px; height: 14px; flex: none; border-radius: 5px; background: #fff; box-shadow: inset 0 0 0 1.5px var(--line); transition: background-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease); }
.fhc-chips-in label:hover { background: var(--teal-50); }
.fhc-chips-in input:checked + label { background: var(--teal-50); color: var(--teal-800); box-shadow: inset 0 0 0 1.5px var(--teal-500); }
.fhc-chips-in input:checked + label::before { background: var(--teal-700); box-shadow: inset 0 0 0 3px #fff; }
.fhc-chips-in input:focus-visible + label { outline: 3px solid var(--focus); outline-offset: 2px; }

.fhc-input, .fhc-textarea {
  width: 100%; padding: 14px 16px;
  background: var(--tint); border: 0; border-radius: var(--r-md);
  box-shadow: inset 0 0 0 1.5px transparent;
  font-size: 1rem; -webkit-appearance: none; appearance: none;
  transition: background-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.fhc-input::placeholder, .fhc-textarea::placeholder { color: #90A8AD; }
.fhc-input:hover, .fhc-textarea:hover { background: var(--teal-50); }
.fhc-input:focus, .fhc-textarea:focus { outline: none; background: #fff; box-shadow: inset 0 0 0 2px var(--teal-500), 0 0 0 4px rgba(18,163,180,.15); }
.fhc-textarea { min-height: 92px; resize: vertical; line-height: 1.55; }

.fhc-field.has-error .fhc-input, .fhc-field.has-error .fhc-textarea { background: var(--error-bg); box-shadow: inset 0 0 0 1.5px var(--error); }
.fhc-field__error { display: none; margin-top: 8px; font-size: .82rem; font-weight: 600; color: var(--error); align-items: center; gap: 6px; }
.fhc-field.has-error .fhc-field__error { display: flex; animation: nudge .32s var(--ease); }
@keyframes nudge { 0%,100% { transform: none } 30% { transform: translateX(-4px) } 65% { transform: translateX(4px) } }
.fhc-field__error .fhc-ic { width: 15px; height: 15px; }

.fhc-grid-2 { display: grid; gap: 13px; }
@media (min-width: 440px) { .fhc-grid-2 { grid-template-columns: 1fr 1fr; } }

.fhc-quote__foot { display: flex; align-items: center; gap: 12px; padding: 16px clamp(20px, 3vw, 30px) 18px; border-top: 1px solid var(--line-soft); }
.fhc-quote__back { display: inline-flex; align-items: center; gap: 7px; padding: 12px 6px; font-family: var(--font-display); font-weight: 700; font-size: .9rem; color: var(--muted); transition: color var(--t-fast) var(--ease); }
.fhc-quote__back:hover { color: var(--teal-700); }
.fhc-quote__back .fhc-ic { width: 16px; height: 16px; transition: transform var(--t) var(--ease); }
.fhc-quote__back:hover .fhc-ic { transform: translateX(-3px); }
.fhc-quote__next { margin-left: auto; }
.fhc-quote__legal { padding: 0 clamp(20px, 3vw, 30px) 22px; font-size: .77rem; color: var(--muted); }
.fhc-quote__legal a { color: var(--teal-700); text-decoration: underline; text-underline-offset: 2px; }

.fhc-spinner { width: 16px; height: 16px; flex: none; border: 2px solid rgba(255,255,255,.4); border-top-color: #fff; border-radius: 50%; animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg) } }
.fhc-btn.is-loading { pointer-events: none; }

.fhc-quote__result { padding: clamp(28px, 4vw, 38px) clamp(20px, 3vw, 30px); }
.fhc-quote__ok { width: 58px; height: 58px; border-radius: var(--r-pill); display: grid; place-items: center; background: var(--teal-50); color: var(--teal-700); margin-bottom: 18px; }
.fhc-quote__ok .fhc-ic { width: 27px; height: 27px; }
.fhc-quote__result h3 { font-size: 1.42rem; letter-spacing: -.028em; }
.fhc-quote__result p { margin-top: 10px; color: var(--muted); font-size: .96rem; }
.fhc-quote__acts { margin-top: 22px; display: flex; flex-wrap: wrap; gap: 10px; }
.fhc-quote__sum { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--line-soft); display: grid; gap: 9px; }
.fhc-quote__sum div { display: flex; justify-content: space-between; gap: 14px; font-size: .88rem; }
.fhc-quote__sum dt { color: var(--muted); }
.fhc-quote__sum dd { margin: 0; text-align: right; font-weight: 600; color: var(--ink); }
.fhc-quote__result--err .fhc-quote__ok { background: var(--error-bg); color: var(--error); }

/* ---------- 10. Trust row ------------------------------------------------ */
.fhc-trust { border-block: 1px solid var(--line-soft); background: #fff; }
.fhc-trust__row { display: grid; gap: clamp(18px, 2vw, 28px); grid-template-columns: repeat(2, 1fr); padding-block: clamp(30px, 3.6vw, 46px); }
@media (min-width: 900px) { .fhc-trust__row { grid-template-columns: repeat(5, 1fr); } }
.fhc-trust__i { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 12px; }
.fhc-trust__ic { width: 56px; height: 56px; border-radius: var(--r-pill); display: grid; place-items: center; background: var(--teal-50); color: var(--teal-700); transition: transform var(--t) var(--ease), background-color var(--t) var(--ease); }
.fhc-trust__i:hover .fhc-trust__ic { transform: translateY(-4px) scale(1.05); background: var(--teal-100); }
.fhc-trust__ic .fhc-ic { width: 26px; height: 26px; }
.fhc-trust__i b { font-family: var(--font-display); font-size: .97rem; font-weight: 700; color: var(--ink); }
.fhc-trust__i span { font-size: .84rem; color: var(--muted); }

/* ---------- 11. Services ------------------------------------------------- */
.fhc-svc-grid { display: grid; gap: clamp(16px, 2vw, 24px); }
@media (min-width: 700px) { .fhc-svc-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1060px) { .fhc-svc-grid { grid-template-columns: repeat(6, 1fr); } }

.fhc-svc {
  display: flex; flex-direction: column;
  background: #fff; border-radius: var(--r-lg);
  box-shadow: inset 0 0 0 1px var(--line), var(--sh-sm);
  overflow: hidden;
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.fhc-svc:hover { transform: translateY(-6px); box-shadow: inset 0 0 0 1px var(--teal-100), var(--sh-lg); }
@media (min-width: 1060px) {
  .fhc-svc { grid-column: span 2; }
  .fhc-svc--wide { grid-column: span 3; }
}
.fhc-svc__media { position: relative; overflow: hidden; }
.fhc-svc__media img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; transition: transform 1.1s var(--ease); }
.fhc-svc:hover .fhc-svc__media img { transform: scale(1.07); }
.fhc-svc--wide .fhc-svc__media img { aspect-ratio: 16 / 8; }
.fhc-svc__tag { position: absolute; top: 14px; left: 14px; padding: 7px 14px; border-radius: var(--r-pill); background: rgba(255,255,255,.95); color: var(--teal-700); font-family: var(--font-display); font-size: .71rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; box-shadow: var(--sh-sm); }
.fhc-svc__body { padding: clamp(20px, 2.4vw, 26px); display: flex; flex-direction: column; flex: 1; }
.fhc-svc__body h3 { font-size: 1.26rem; letter-spacing: -.028em; }
.fhc-svc__body > p { margin-top: 10px; color: var(--muted); font-size: .93rem; }
.fhc-svc__list { margin-top: 16px; display: grid; gap: 8px; }
.fhc-svc__list li { display: flex; align-items: flex-start; gap: 9px; font-size: .89rem; }
.fhc-svc__list .fhc-ic { width: 16px; height: 16px; margin-top: 4px; color: var(--teal-500); flex: none; }
.fhc-svc__go { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line-soft); }

.fhc-addons { margin-top: clamp(30px, 4vw, 46px); background: var(--tint); border-radius: var(--r-xl); padding: clamp(26px, 3.4vw, 44px); display: grid; gap: clamp(20px, 3vw, 42px); }
@media (min-width: 940px) { .fhc-addons { grid-template-columns: minmax(0, 21rem) minmax(0, 1fr); align-items: center; } }
.fhc-addons h3 { margin-top: 14px; font-size: 1.48rem; letter-spacing: -.03em; }
.fhc-addons > div > p { margin-top: 10px; color: var(--muted); font-size: .93rem; }
.fhc-addons__list { display: flex; flex-wrap: wrap; gap: 9px; }
.fhc-addons__list li { display: inline-flex; align-items: center; gap: 9px; padding: 12px 18px; border-radius: var(--r-pill); background: #fff; box-shadow: var(--sh-xs); font-size: .9rem; font-weight: 600; color: var(--ink); transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease); }
.fhc-addons__list li:hover { transform: translateY(-3px); box-shadow: var(--sh-md); }
.fhc-addons__list .fhc-ic { width: 16px; height: 16px; color: var(--teal-500); }

/* ---------- 12. Why us --------------------------------------------------- */
.fhc-why__grid { display: grid; gap: clamp(46px, 5vw, 68px); align-items: center; }
@media (min-width: 1000px) { .fhc-why__grid { grid-template-columns: minmax(0, .86fr) minmax(0, 1.14fr); } }
.fhc-why__media { position: relative; }
.fhc-why__media > .fhc-shot { aspect-ratio: 4 / 5; }
.fhc-why__float { position: absolute; right: -7%; bottom: -9%; width: 54%; aspect-ratio: 1; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--sh-lg); border: 6px solid #fff; background: #fff; }
.fhc-why__float img { width: 100%; height: 100%; object-fit: cover; }
.fhc-why__badge { position: absolute; left: -5%; top: 7%; background: #fff; border-radius: var(--r-lg); padding: 15px 20px; box-shadow: var(--sh-lg); display: flex; align-items: center; gap: 12px; }
.fhc-why__badge .fhc-ic { width: 26px; height: 26px; color: var(--teal-600); }
.fhc-why__badge b { display: block; font-family: var(--font-display); font-size: 1.4rem; color: var(--ink); line-height: 1; }
.fhc-why__badge span { display: block; font-size: .76rem; color: var(--muted); margin-top: 3px; }

.fhc-why__list { display: grid; gap: clamp(12px, 1.6vw, 18px); }
@media (min-width: 620px) { .fhc-why__list { grid-template-columns: 1fr 1fr; } }
.fhc-why__i { background: #fff; border-radius: var(--r-md); padding: 22px; box-shadow: inset 0 0 0 1px var(--line); transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease); }
.fhc-why__i:hover { transform: translateY(-4px); box-shadow: inset 0 0 0 1px var(--teal-100), var(--sh-md); }
.fhc-why__i .fhc-ic-wrap { width: 44px; height: 44px; border-radius: var(--r-sm); display: grid; place-items: center; background: var(--teal-50); color: var(--teal-700); margin-bottom: 14px; }
.fhc-why__i .fhc-ic-wrap .fhc-ic { width: 22px; height: 22px; }
.fhc-why__i h3 { font-size: 1.05rem; letter-spacing: -.022em; }
.fhc-why__i p { margin-top: 7px; font-size: .88rem; color: var(--muted); }

/* ---------- 13. Steps ---------------------------------------------------- */
.fhc-steps { display: grid; gap: clamp(20px, 2.4vw, 28px); position: relative; }
@media (min-width: 880px) { .fhc-steps { grid-template-columns: repeat(4, 1fr); } }
.fhc-step-c { position: relative; z-index: 2; text-align: center; }
.fhc-step-c__n {
  width: 74px; height: 74px; margin: 0 auto 20px;
  border-radius: var(--r-pill); display: grid; place-items: center;
  background: #fff; color: var(--teal-700);
  font-family: var(--font-display); font-size: 1.45rem; font-weight: 800;
  box-shadow: inset 0 0 0 2px var(--teal-100), var(--sh-sm);
  position: relative; z-index: 2;
  transition: transform var(--t) var(--ease), background-color var(--t) var(--ease), color var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.fhc-step-c:hover .fhc-step-c__n { transform: translateY(-5px) scale(1.06); background: var(--teal-700); color: #fff; box-shadow: var(--sh-teal); }
.fhc-step-c h3 { font-size: 1.12rem; letter-spacing: -.024em; }
.fhc-step-c p { margin-top: 9px; font-size: .91rem; color: var(--muted); }
.fhc-steps__line { display: none; }
@media (min-width: 880px) {
  .fhc-steps__line { display: block; position: absolute; top: 37px; left: 12.5%; right: 12.5%; height: 2px; background: var(--teal-100); border-radius: 2px; z-index: 0; overflow: hidden; }
  .fhc-steps__line i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--teal-500), var(--teal-300)); transition: width 1.6s var(--ease) .25s; }
  .fhc-steps.is-in .fhc-steps__line i { width: 100%; }
}

/* ---------- 14. Gallery -------------------------------------------------- */
.fhc-gallery { display: grid; gap: clamp(10px, 1.4vw, 16px); grid-template-columns: repeat(2, 1fr); }
@media (min-width: 760px) { .fhc-gallery { grid-template-columns: repeat(4, 1fr); } }
.fhc-gallery .fhc-shot { aspect-ratio: 1; }
@media (min-width: 760px) {
  .fhc-gallery .fhc-shot:nth-child(1) { grid-column: span 2; grid-row: span 2; aspect-ratio: auto; }
  .fhc-gallery .fhc-shot:nth-child(6) { grid-column: span 2; aspect-ratio: 2 / 1; }
}

/* ---------- 15. About ---------------------------------------------------- */
.fhc-about__grid { display: grid; gap: clamp(44px, 4.6vw, 68px); align-items: center; }
@media (min-width: 980px) { .fhc-about__grid { grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); } }
.fhc-about__media { position: relative; }
.fhc-about__media > .fhc-shot { aspect-ratio: 1200 / 1140; }

.fhc-about__body h2 { margin-top: 18px; }
.fhc-about__body > p { margin-top: 18px; color: var(--muted); max-width: 54ch; }
.fhc-about__points { margin-top: 24px; display: grid; gap: 14px; }
.fhc-about__points li { display: flex; align-items: flex-start; gap: 12px; }
.fhc-about__points .fhc-ic { width: 20px; height: 20px; margin-top: 3px; color: var(--teal-600); flex: none; }
.fhc-about__points b { font-family: var(--font-display); font-size: .97rem; color: var(--ink); }
.fhc-about__points span { display: block; font-size: .88rem; color: var(--muted); }

/* ---------- 16. Areas ---------------------------------------------------- */
.fhc-areas__grid { display: grid; gap: clamp(28px, 4vw, 54px); align-items: center; }
@media (min-width: 980px) { .fhc-areas__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); } }
.fhc-areas__list { display: grid; gap: 10px; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 560px) { .fhc-areas__list { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 980px) { .fhc-areas__list { grid-template-columns: repeat(2, 1fr); } }
.fhc-areas__i { display: flex; align-items: center; gap: 11px; padding: 15px 18px; border-radius: var(--r-md); background: #fff; box-shadow: inset 0 0 0 1px var(--line); font-family: var(--font-display); font-weight: 700; font-size: .97rem; color: var(--ink); transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease), background-color var(--t) var(--ease); }
.fhc-areas__i:hover { transform: translateY(-3px); background: var(--teal-50); box-shadow: inset 0 0 0 1px var(--teal-300), var(--sh-sm); }
.fhc-areas__i .fhc-ic { width: 18px; height: 18px; color: var(--teal-500); }
.fhc-areas__note { margin-top: 22px; padding: 20px 24px; border-radius: var(--r-md); background: var(--teal-50); font-size: .92rem; color: var(--text); }
.fhc-areas__note b { color: var(--ink); }

.fhc-marquee { overflow: hidden; padding-block: 8px; -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
.fhc-marquee__track { display: flex; width: max-content; animation: marq 38s linear infinite; }
.fhc-marquee:hover .fhc-marquee__track { animation-play-state: paused; }
.fhc-marquee__i { display: inline-flex; align-items: center; gap: 22px; padding-right: 22px; font-family: var(--font-display); font-size: 1rem; font-weight: 700; color: var(--teal-700); white-space: nowrap; }
.fhc-marquee__i::after { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--teal-300); flex: none; }
@keyframes marq { to { transform: translateX(-50%) } }

/* ---------- 17. Reviews -------------------------------------------------- */

/* ---------- 18. FAQ ------------------------------------------------------ */
.fhc-faq__grid { display: grid; gap: clamp(28px, 4vw, 54px); align-items: start; }
@media (min-width: 980px) { .fhc-faq__grid { grid-template-columns: minmax(0, 20rem) minmax(0, 1fr); } }
@media (min-width: 980px) { .fhc-faq__aside { position: sticky; top: calc(var(--header-h) + 34px); } }
.fhc-faq__list { display: grid; gap: 10px; }
.fhc-faq__i { background: #fff; border-radius: var(--r-md); box-shadow: inset 0 0 0 1px var(--line); overflow: hidden; transition: box-shadow var(--t) var(--ease); }
.fhc-faq__i.is-open { box-shadow: inset 0 0 0 1px var(--teal-200), var(--sh-md); }
.fhc-faq__q { width: 100%; display: flex; align-items: center; gap: 18px; padding: 20px clamp(18px, 2vw, 24px); text-align: left; font-family: var(--font-display); font-weight: 700; font-size: 1.01rem; color: var(--ink); letter-spacing: -.018em; transition: color var(--t-fast) var(--ease); }
.fhc-faq__q:hover { color: var(--teal-700); }
.fhc-faq__q > span:first-child { flex: 1; }
.fhc-faq__pm { flex: none; position: relative; width: 26px; height: 26px; border-radius: var(--r-pill); background: var(--teal-50); }
.fhc-faq__pm::before, .fhc-faq__pm::after { content: ""; position: absolute; background: var(--teal-700); border-radius: 2px; transition: transform var(--t) var(--ease), opacity var(--t-fast) linear; }
.fhc-faq__pm::before { top: 12px; left: 7px; width: 12px; height: 2px; }
.fhc-faq__pm::after { left: 12px; top: 7px; width: 2px; height: 12px; }
.fhc-faq__q[aria-expanded="true"] .fhc-faq__pm::after { transform: rotate(90deg); opacity: 0; }
.fhc-faq__a { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .48s var(--ease); }
.fhc-faq__i.is-open .fhc-faq__a { grid-template-rows: 1fr; }
.fhc-faq__a > div { overflow: hidden; }
.fhc-faq__a p { padding: 0 clamp(18px, 2vw, 24px) 22px; color: var(--muted); font-size: .94rem; }
.fhc-faq__a a { color: var(--teal-700); text-decoration: underline; text-underline-offset: 2px; }

/* ---------- 19. CTA ------------------------------------------------------ */
.fhc-cta { position: relative; overflow: hidden; background: linear-gradient(130deg, var(--teal-900) 0%, var(--teal-800) 52%, var(--teal-700) 100%); color: #fff; }
.fhc-cta::after { content: ""; position: absolute; right: -12%; top: -55%; width: min(760px, 80%); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.15), rgba(255,255,255,0) 65%); pointer-events: none; }
.fhc-cta__inner { position: relative; display: grid; gap: clamp(26px, 3.4vw, 50px); align-items: center; }
@media (min-width: 900px) { .fhc-cta__inner { grid-template-columns: minmax(0, 1fr) auto; } }
.fhc-cta h2 { color: #fff; margin-top: 18px; }
.fhc-cta p { margin-top: 16px; color: var(--on-teal-soft); max-width: 48ch; }
.fhc-cta__acts { display: flex; flex-wrap: wrap; gap: 13px; }

/* ---------- 20. Footer --------------------------------------------------- */
.fhc-footer { background: var(--tint); padding-top: clamp(52px, 6vw, 82px); }
.fhc-foot__grid { display: grid; gap: clamp(30px, 4vw, 50px); padding-bottom: clamp(38px, 4.6vw, 58px); }
@media (min-width: 760px) { .fhc-foot__grid { grid-template-columns: minmax(0, 1.5fr) repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1060px) { .fhc-foot__grid { grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); } }
.fhc-foot__brand img { height: 86px; width: auto; }
.fhc-foot__blurb { margin-top: 18px; font-size: .92rem; color: var(--muted); max-width: 34ch; }
.fhc-footer h2 { font-family: var(--font-display); font-size: .77rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; color: var(--teal-700); margin-bottom: 16px; }
.fhc-foot__links { display: grid; gap: 10px; }
.fhc-foot__links a { font-size: .92rem; color: var(--muted); display: inline-block; transition: color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease); }
.fhc-foot__links a:hover { color: var(--teal-700); transform: translateX(3px); }
.fhc-foot__contact { display: grid; gap: 13px; font-size: .92rem; }
.fhc-foot__contact a, .fhc-foot__contact p { display: flex; align-items: flex-start; gap: 10px; color: var(--muted); }
.fhc-foot__contact a:hover { color: var(--teal-700); }
.fhc-foot__contact .fhc-ic { width: 17px; height: 17px; color: var(--teal-500); flex: none; margin-top: 3px; }
.fhc-foot__bar { border-top: 1px solid var(--line); padding-block: 20px; display: flex; flex-wrap: wrap; gap: 8px 22px; align-items: center; justify-content: space-between; font-size: .82rem; color: var(--muted); }
.fhc-foot__bar nav { display: flex; gap: 20px; flex-wrap: wrap; }
.fhc-foot__bar a:hover { color: var(--teal-700); }

/* ---------- 21. Sticky mobile bar ---------------------------------------- */
.fhc-mbar {
  position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 90;
  display: grid; grid-template-columns: 1fr 1.15fr; gap: 8px;
  padding: 8px; border-radius: var(--r-pill);
  background: rgba(255,255,255,.93);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  box-shadow: var(--sh-lg);
  transform: translateY(180%); transition: transform .5s var(--ease);
}
.fhc-mbar.is-on { transform: none; }
.fhc-mbar a { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 13px 10px; border-radius: var(--r-pill); font-family: var(--font-display); font-size: .91rem; font-weight: 700; }
.fhc-mbar a:first-child { background: var(--teal-50); color: var(--teal-700); }
.fhc-mbar a:last-child { background: var(--teal-700); color: #fff; }
.fhc-mbar .fhc-ic { width: 17px; height: 17px; }
@media (min-width: 1181px) { .fhc-mbar { display: none; } }

/* ---------- 22. Inner pages ---------------------------------------------- */
.fhc-phero { background: var(--tint); padding-block: clamp(46px, 6vw, 76px); position: relative; overflow: hidden; }
.fhc-phero h1 { margin-top: 16px; }
.fhc-phero > .fhc-container > p { margin-top: 16px; color: var(--muted); max-width: 56ch; }
.fhc-crumbs { display: flex; gap: 9px; align-items: center; font-size: .84rem; color: var(--muted); }
.fhc-crumbs a:hover { color: var(--teal-700); }

.fhc-prose { max-width: 72ch; }
.fhc-prose h2 { font-size: clamp(1.3rem, 2vw, 1.62rem); margin-top: 42px; letter-spacing: -.028em; }
.fhc-prose h2:first-child { margin-top: 0; }
.fhc-prose p { margin-top: 15px; color: var(--muted); }
.fhc-prose ul { margin-top: 15px; display: grid; gap: 9px; }
.fhc-prose ul li { position: relative; padding-left: 24px; color: var(--muted); }
.fhc-prose ul li::before { content: ""; position: absolute; left: 4px; top: .62em; width: 7px; height: 7px; border-radius: 50%; background: var(--teal-400); }
.fhc-prose strong { color: var(--ink); font-weight: 600; }
.fhc-prose a { color: var(--teal-700); text-decoration: underline; text-underline-offset: 2px; }

.fhc-nf { text-align: center; padding-block: clamp(60px, 9vw, 128px); }
.fhc-nf__code { font-family: var(--font-display); font-size: clamp(4.5rem, 13vw, 9rem); font-weight: 800; line-height: 1; color: var(--teal-100); letter-spacing: -.04em; }

@media print {
  .fhc-header, .fhc-topbar, .fhc-mbar, .fhc-quote, .fhc-cta, .fhc-marquee { display: none !important; }
  body { background: #fff; }
}

/* ---------- 23. Mobile hero order ---------------------------------------- */
/* On phones the quote form is the priority: it comes straight after the
   headline. `display: contents` lifts the hero copy into the same flex flow
   so the form can be promoted above the supporting content. */
@media (max-width: 1079px) {
  .fhc-hero__grid { display: flex; flex-direction: column; gap: 0; align-items: stretch; }
  .fhc-hero__grid > div:first-child { display: contents; }
  .fhc-hero__grid > div:first-child > * { min-width: 0; max-width: 100%; }
  .fhc-hero .fhc-label     { order: 1; align-self: flex-start; }
  .fhc-hero h1         { order: 2; }
  .fhc-hero__sub       { order: 3; }
  .fhc-quote           { order: 4; margin-top: 30px; }
  .fhc-hero__chips     { order: 5; margin-top: 26px; }
  .fhc-hero__actions   { order: 6; margin-top: 22px; }
  /* the form is already on screen, so the duplicate button would scroll upward */
  .fhc-hero__actions .fhc-btn { display: none; }
}

/* ---------- 24. Touch targets on small screens --------------------------- */
@media (max-width: 780px) {
  .fhc-foot__links { gap: 2px; }
  .fhc-foot__links a { display: block; padding-block: 9px; }
  .fhc-foot__contact { gap: 4px; }
  .fhc-foot__contact a, .fhc-foot__contact p { padding-block: 7px; }
  .fhc-foot__bar nav a { display: inline-block; padding-block: 8px; }
  .fhc-tlink { padding-block: 5px; }
  .fhc-topbar__i a { display: inline-block; padding-block: 4px; }
}

/* ---------- 25. Hero background photograph -------------------------------- */
/* A real cleaning photo sits behind the hero, heavily veiled in white so the
   copy keeps full contrast while the section still reads as a home. */
.fhc-hero__bg { position: absolute; inset: 0; z-index: -2; overflow: hidden; }
.fhc-hero__bg img { width: 100%; height: 100%; object-fit: cover; opacity: .72; }
.fhc-hero__bg::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(100deg, rgba(255,255,255,.97) 0%, rgba(255,255,255,.95) 30%, rgba(255,255,255,.60) 56%, rgba(255,255,255,.10) 100%),
    linear-gradient(to bottom, rgba(255,255,255,.35) 0%, rgba(255,255,255,0) 22%, rgba(255,255,255,.55) 88%, #fff 100%);
}
@media (max-width: 1079px) {
  .fhc-hero__bg img { opacity: .5; }
  .fhc-hero__bg::after { background: linear-gradient(to bottom, rgba(255,255,255,.82) 0%, rgba(255,255,255,.93) 34%, rgba(255,255,255,.97) 62%, #fff 100%); }
}

/* ---------- 26. Trust bar + stats ---------------------------------------- */
.fhc-tbar { background: var(--teal-800); color: #fff; }
.fhc-tbar__in {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: clamp(14px, 2.4vw, 40px); padding-block: clamp(14px, 1.6vw, 18px);
}
.fhc-tbar__i {
  display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--font-display); font-weight: 700; font-size: clamp(.79rem, 1vw, .92rem);
  white-space: nowrap;
}
.fhc-tbar__i .fhc-ic { width: 18px; height: 18px; color: var(--teal-300); }

.fhc-stats { background: var(--tint); }
.fhc-stats__row {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: clamp(26px, 3vw, 40px);
  padding-block: clamp(38px, 4.4vw, 62px); text-align: center;
}
@media (min-width: 820px) { .fhc-stats__row { grid-template-columns: repeat(4, 1fr); } }
.fhc-stats__row > * { min-width: 0; }
.fhc-stat b {
  display: block; font-family: var(--font-display); font-weight: 800;
  font-size: clamp(2.1rem, 4vw, 3.05rem); line-height: 1;
  letter-spacing: -.035em; color: var(--teal-700);
}
.fhc-stat span { display: block; margin-top: 9px; font-size: .9rem; color: var(--muted); }

/* ---------- 27. Alignment fixes ------------------------------------------ */
.fhc-hero__call { align-items: center; }
.fhc-hero__call > span:last-child { display: block; line-height: 1.3; }
.fhc-hero__call b { line-height: 1.25; }
.fhc-hero__call span span { line-height: 1.3; }
.fhc-btn, .fhc-tlink, .fhc-chip, .fhc-tbar__i, .fhc-addons__list li, .fhc-areas__i, .fhc-foot__contact a { align-items: center; }
.fhc-foot__contact .fhc-ic, .fhc-foot__contact a .fhc-ic { margin-top: 0; }
.fhc-svc__list li .fhc-ic, .fhc-about__points .fhc-ic { margin-top: 3px; }

/* ---------- 28. About credential card ------------------------------------ */
.fhc-about__card {
  position: absolute; left: clamp(-6px, -1.5vw, 0px); bottom: clamp(-26px, -2vw, -18px);
  display: flex; align-items: center; gap: 14px;
  padding: 16px 22px 16px 16px;
  background: #fff; border-radius: var(--r-lg);
  box-shadow: var(--sh-lg);
  max-width: min(88%, 380px);
}
.fhc-about__card-ic {
  flex: none; width: 46px; height: 46px; border-radius: var(--r-sm);
  display: grid; place-items: center;
  background: var(--teal-50); color: var(--teal-700);
}
.fhc-about__card-ic .fhc-ic { width: 24px; height: 24px; }
.fhc-about__card b {
  display: block; font-family: var(--font-display); font-weight: 800;
  font-size: 1.02rem; color: var(--ink); letter-spacing: -.02em; line-height: 1.25;
}
.fhc-about__card span { display: block; margin-top: 3px; font-size: .87rem; color: var(--muted); }
@media (max-width: 979px) { .fhc-about__card { position: static; margin-top: 18px; max-width: 100%; } }

/* ---------- 29. Stacked review carousel ---------------------------------- */
/* Cards fan out from the centre. The middle one is active; the ones beside it
   are clickable and rotate in. Prev/next controls sit underneath. */
.fhc-rev-stack {
  --card: clamp(258px, 27vw, 350px);
  position: relative;
  height: calc(var(--card-h, var(--card)) + clamp(152px, 14vw, 182px));
  overflow: hidden;
}
.fhc-rev-stack__stage { position: absolute; inset: 0; }

.fhc-rev-stack__card {
  position: absolute; left: 50%; top: 44%;
  width: var(--card); height: var(--card-h, var(--card));
  margin: 0;
  padding: clamp(20px, 2.2vw, 28px);
  display: flex; flex-direction: column;
  background: #fff; color: var(--text);
  box-shadow: inset 0 0 0 1px var(--line);
  /* the cut top-right corner is this component's signature */
  clip-path: polygon(0 0, calc(100% - 42px) 0, 100% 42px, 100% 100%, 0 100%);
  transition: transform .55s var(--ease), background-color .45s var(--ease),
              color .45s var(--ease), box-shadow .45s var(--ease), filter .45s var(--ease);
  transform:
    translate(-50%, -50%)
    translateX(calc(var(--card) / 1.55 * var(--pos, 0)))
    translateY(var(--dy, 0px))
    rotate(var(--rot, 0deg));
}
.fhc-rev-stack__card::after {
  /* hairline that finishes the cut corner */
  content: ""; position: absolute; right: -2px; top: 40px;
  width: 74px; height: 1px; background: var(--line);
  transform-origin: top right; transform: rotate(45deg);
}
.fhc-rev-stack__card.is-side:hover { box-shadow: inset 0 0 0 1px var(--teal-300); }

.fhc-rev-stack__card.is-center {
  background: linear-gradient(135deg, var(--teal-800), var(--teal-700));
  color: var(--on-teal-soft);
  box-shadow: none;
  filter: drop-shadow(0 18px 34px rgba(11, 43, 51, .22));
  z-index: 3;
}
.fhc-rev-stack__card.is-center::after { background: rgba(255,255,255,.28); }

.fhc-rev-stack__stars { display: flex; gap: 3px; color: var(--star); margin-bottom: 14px; }
.fhc-rev-stack__stars .fhc-ic { width: 17px; height: 17px; }
.fhc-rev-stack__card.is-center .fhc-rev-stack__stars { color: #FFCE7A; }

.fhc-rev-stack__text {
  margin: 0;
  font-family: var(--font-display); font-weight: 700;
  font-size: clamp(.98rem, 1.25vw, 1.12rem); line-height: 1.42;
  letter-spacing: -.015em;
  color: var(--ink);
}
.fhc-rev-stack__card.is-center .fhc-rev-stack__text { color: #fff; }

.fhc-rev-stack__by {
  margin-top: auto; padding-top: 14px;
  font-size: .85rem; color: var(--muted);
  border-top: 1px solid var(--line-soft);
}
.fhc-rev-stack__by b { font-family: var(--font-display); color: var(--ink); }
.fhc-rev-stack__card.is-center .fhc-rev-stack__by { color: var(--on-teal-soft); border-top-color: rgba(255,255,255,.22); }
.fhc-rev-stack__card.is-center .fhc-rev-stack__by b { color: #fff; }

/* full-card hit area, so side cards are clickable and keyboard reachable */
.fhc-rev-stack__hit {
  position: absolute; inset: 0; z-index: 2;
  background: none; border: 0; cursor: pointer;
}
.fhc-rev-stack__hit:focus-visible { outline: 3px solid var(--focus); outline-offset: -4px; }
.fhc-rev-stack__card.is-center .fhc-rev-stack__hit { display: none; }

.fhc-rev-stack__nav {
  position: absolute; left: 50%; bottom: 4px; z-index: 20;
  transform: translateX(-50%);
  display: flex; gap: 10px;
}
.fhc-rev-stack__btn {
  width: 52px; height: 52px; border-radius: var(--r-pill);
  display: grid; place-items: center;
  background: #fff; color: var(--teal-700);
  box-shadow: inset 0 0 0 1px var(--line), var(--sh-sm);
  transition: background-color var(--t) var(--ease), color var(--t) var(--ease),
              transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.fhc-rev-stack__btn .fhc-ic { width: 20px; height: 20px; }
.fhc-rev-stack__btn:hover {
  background: var(--teal-700); color: #fff;
  transform: translateY(-2px); box-shadow: var(--sh-teal);
}

@media (prefers-reduced-motion: reduce) {
  .fhc-rev-stack__card { transition: none; }
}

/* ---------- 30. Footer social ------------------------------------------- */
.fhc-foot__social {
  display: inline-flex; align-items: center; gap: 10px;
  margin-top: 18px; padding: 10px 18px 10px 12px;
  border-radius: var(--r-pill);
  background: #fff;
  box-shadow: inset 0 0 0 1px var(--line), var(--sh-xs);
  font-family: var(--font-display); font-weight: 700;
  font-size: .9rem; color: var(--ink);
  transition: background-color var(--t) var(--ease), color var(--t) var(--ease),
              box-shadow var(--t) var(--ease), transform var(--t) var(--ease);
}
.fhc-foot__social .fhc-ic { width: 19px; height: 19px; color: var(--teal-600); transition: color var(--t) var(--ease); }
.fhc-foot__social:hover {
  background: var(--teal-700); color: #fff;
  box-shadow: var(--sh-teal); transform: translateY(-2px);
}
.fhc-foot__social:hover .fhc-ic { color: #fff; }

/* ---------- 31. Phone refinements ---------------------------------------- */
@media (max-width: 700px) {
  /* Small uppercase type needs a little more size to stay readable */
  .fhc-label { font-size: .78rem; padding: 7px 14px; }
  .fhc-svc__tag { font-size: .8rem; }
  .fhc-quote__legal { font-size: .8rem; }
  .fhc-topbar__i { font-size: .8rem; }
  .fhc-hero__call span { font-size: .84rem; }

  /* Comfortable tap areas */
  .fhc-tlink { min-height: 44px; }
  .fhc-foot__contact a, .fhc-foot__contact p { min-height: 44px; align-items: center; }
  .fhc-foot__links a { padding-block: 11px; }
  .fhc-footer h2 { font-size: .82rem; }
  .fhc-foot__bar nav a { padding-block: 12px; }

  /* Trust bar: keep it compact rather than letting items wrap loosely */
  .fhc-tbar__in { gap: 10px 16px; padding-block: 15px; }
  .fhc-tbar__i { font-size: .76rem; }
  .fhc-tbar__i .fhc-ic { width: 15px; height: 15px; }

  /* Shorter service cards — the page is long enough on a phone already */
  .fhc-svc__media img, .fhc-svc--wide .fhc-svc__media img { aspect-ratio: 16 / 9; }
  .fhc-svc__body { padding: 20px; }
  .fhc-svc__list { gap: 7px; }
  .fhc-svc__go { margin-top: 16px; padding-top: 14px; }

  /* The Why Us collage does not fit a phone: one clean image, badge beneath */
  .fhc-why__media > .fhc-shot { aspect-ratio: 4 / 3; }
  .fhc-why__float { display: none; }
  .fhc-why__badge {
    position: static; margin-top: 14px;
    box-shadow: inset 0 0 0 1px var(--line), var(--sh-sm);
  }

  /* Carousel: bigger centre card, less dead space around it */
  .fhc-rev-stack {
    --card: min(300px, calc(100vw - 76px));
    height: calc(var(--card-h, var(--card)) + 126px);
  }

  /* Clear the sticky action bar at the end of the page */
  .fhc-footer { padding-bottom: 96px; }
}

@media (max-width: 380px) {
  .fhc-seg label { min-width: 46px; padding: 12px; }
  .fhc-tbar__i { font-size: .73rem; }
}
