/* ==========================================================================
   M ADVISORY — styles.css
   Concatenated: fonts (as preconnect in HTML) · colors · typography ·
   spacing · base · site layout · path tabs · FAQ · form states · mobile bar
   ========================================================================== */

/* ── Google Fonts: loaded via <link> in the HTML <head> (with preconnect).
   No @import here — it would create a render-blocking request chain and delay LCP. ── */

/* ── Color tokens ──────────────────────────────────────────────────────────── */
:root {
  --navy-950: #0A1526;
  --navy-900: #14243C;
  --navy-800: #1B3155;
  --navy-700: #244272;
  --navy-600: #2E5490;
  --navy-500: #3A6AAE;

  --royal-700: #163E86;
  --royal-600: #1E50A8;
  --royal-500: #2A6BD4;

  --cyan-700: #0B86A2;
  --cyan-600: #0EA5C4;
  --cyan-500: #19C3E6;
  --cyan-400: #54D6F0;
  --cyan-300: #9CE3F6;
  --cyan-100: #DCF4FB;

  --white:    #FFFFFF;
  --gray-50:  #F6F8FB;
  --gray-100: #EDF1F7;
  --gray-200: #DFE6F0;
  --gray-300: #C8D3E2;
  --gray-400: #9DAAC0;
  --gray-500: #6E7D96;
  --gray-600: #4C5B73;
  --gray-700: #33415A;
  --gray-800: #22304A;
  --gray-900: #14243C;

  --success-500: #1E9E7A;
  --danger-500:  #C2453F;

  --color-bg:             var(--white);
  --color-bg-subtle:      var(--gray-50);
  --color-bg-ink:         var(--navy-900);
  --color-text-strong:    var(--navy-900);
  --color-text-body:      var(--gray-700);
  --color-text-muted:     var(--gray-500);
  --color-text-faint:     var(--gray-400);
  --color-primary:        var(--navy-900);
  --color-accent:         var(--cyan-500);
  --color-accent-strong:  var(--cyan-600);
  --color-accent-soft:    var(--cyan-100);
  --color-link:           var(--royal-600);
  --color-link-hover:     var(--royal-700);
  --color-border:         var(--gray-200);
  --color-border-strong:  var(--gray-300);

  --gradient-ink:    linear-gradient(135deg, var(--navy-950) 0%, var(--navy-800) 55%, var(--navy-700) 100%);
  --gradient-accent: linear-gradient(120deg, var(--royal-500) 0%, var(--cyan-500) 100%);
  --gradient-hairline: linear-gradient(90deg, transparent, var(--cyan-500), transparent);
}

/* ── Typography tokens ─────────────────────────────────────────────────────── */
:root {
  --font-display: "Cormorant Garamond", Georgia, "Times New Roman", serif;
  --font-body:    "Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;

  --text-xs:   0.75rem;
  --text-sm:   0.8125rem;
  --text-base: 1rem;
  --text-md:   1.125rem;
  --text-xl:   1.75rem;
  --text-2xl:  2.25rem;
  --text-3xl:  3rem;
  --text-4xl:  4rem;

  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;

  --leading-none:    1;
  --leading-tight:   1.1;
  --leading-relaxed: 1.65;

  --tracking-tight:  -0.015em;
  --tracking-wider:   0.16em;
}

/* ── Spacing / radii / shadow / motion tokens ──────────────────────────────── */
:root {
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 2.5rem;
  --space-8: 3rem;

  --radius-xs:  4px;
  --radius-sm:  8px;
  --radius-md:  12px;
  --radius-lg:  16px;
  --radius-xl:  24px;

  --shadow-sm: 0 2px 6px rgba(10,21,38,.07);
  --shadow-md: 0 8px 24px rgba(10,21,38,.08);
  --shadow-lg: 0 18px 48px rgba(10,21,38,.12);
  --shadow-xl: 0 32px 80px rgba(10,21,38,.16);
  --shadow-cyan: 0 14px 40px rgba(25,195,230,.22);
  --focus-ring: 0 0 0 3px rgba(25,195,230,.35);

  --ease-out:  cubic-bezier(0.16,1,0.3,1);
  --ease-soft: cubic-bezier(0.4,0,0.2,1);
  --dur-fast:  140ms;
  --dur-base:  240ms;
  --dur-slow:  420ms;
}

/* ── Base reset ────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-weight: var(--weight-regular);
  font-size: var(--text-base);
  line-height: var(--leading-relaxed);
  color: var(--color-text-body);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
h1,h2,h3,h4 {
  font-family: var(--font-display);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-tight);
  color: var(--color-text-strong);
  margin: 0 0 .4em;
  text-wrap: balance;
}
h1 { font-size: var(--text-4xl); line-height: var(--leading-none); }
h2 { font-size: var(--text-3xl); }
h3 { font-size: var(--text-2xl); }
h4 { font-size: var(--text-xl); }
p  { margin: 0 0 1em; text-wrap: pretty; }
a  { color: var(--color-link); text-decoration: none; }
a:hover { color: var(--color-link-hover); }
:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: var(--radius-xs); }
::selection { background: var(--cyan-100); color: var(--navy-900); }

/* ── Layout helpers ────────────────────────────────────────────────────────── */
.site { background: var(--color-bg); color: var(--color-text-body); position: relative; }
.wrap { width: 100%; max-width: 1240px; margin-inline: auto; padding-inline: 40px; }
.section { padding: clamp(72px, 11vw, 120px) 0; }
.section--tight { padding: clamp(56px, 9vw, 88px) 0; }
/* Offset fixed-header height so smooth-scroll anchors don't hide under .hdr */
#services, #process, #faq, #contact, #top { scroll-margin-top: 84px; }

/* ── Type helpers ──────────────────────────────────────────────────────────── */
.eyebrow {
  font-family: var(--font-body); font-size: 13px; font-weight: 600;
  letter-spacing: var(--tracking-wider); text-transform: uppercase;
  color: var(--cyan-700); display: inline-flex; align-items: center; gap: 10px;
}
.eyebrow::before { content: ""; width: 26px; height: 1px; background: var(--cyan-500); }
.eyebrow--center::before { display: none; }
.h-display {
  font-family: var(--font-display); font-weight: 600;
  line-height: 1.04; letter-spacing: -0.018em; color: var(--color-text-strong); margin: 0;
}
.lead { font-family: var(--font-body); font-size: 18px; line-height: 1.65; color: var(--color-text-muted); }
.sec-head { max-width: 660px; margin-bottom: 56px; }
.sec-head .h-display { font-size: clamp(1.9rem, 4.6vw, 46px); margin: 18px 0 16px; }
.center { text-align: center; margin-inline: auto; }

/* ── Buttons ───────────────────────────────────────────────────────────────── */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .6em;
  font-family: var(--font-body); font-weight: 600; border: 1px solid transparent;
  border-radius: var(--radius-sm); cursor: pointer; text-decoration: none;
  line-height: 1; font-size: 15px; padding: 14px 26px; white-space: nowrap;
  transition: background var(--dur-base) var(--ease-soft),
              color var(--dur-base) var(--ease-soft),
              border-color var(--dur-base) var(--ease-soft),
              box-shadow var(--dur-base) var(--ease-soft),
              transform var(--dur-fast) var(--ease-soft);
}
.btn:active { transform: translateY(1px); }
.btn svg { width: 1.15em; height: 1.15em; }
.btn--lg { font-size: 16px; padding: 17px 32px; }
.btn--accent { background: var(--cyan-500); color: var(--navy-950); }
.btn--accent:hover { background: var(--cyan-400); color: var(--navy-950); }
.btn--onink { background: rgba(255,255,255,.10); color: #fff; border-color: rgba(255,255,255,.24); }
.btn--onink:hover { background: rgba(255,255,255,.18); color: #fff; }
.btn--outline { background: transparent; color: var(--navy-900); border-color: var(--gray-300); }
.btn--outline:hover { border-color: var(--navy-700); background: var(--gray-50); }

/* ── Hero trust strip ──────────────────────────────────────────────────────── */
.hero__badges { display: flex; align-items: center; flex-wrap: wrap; margin-bottom: 28px; }
.hero__trust-item {
  font-family: var(--font-body); font-size: 13px; font-weight: 500;
  letter-spacing: .04em; color: rgba(255,255,255,.68);
}
.hero__trust-sep {
  font-size: 11px; color: rgba(255,255,255,.25);
  padding: 0 14px;
}

/* ── Stat ──────────────────────────────────────────────────────────────────── */
.stat__v { font-family: var(--font-display); font-weight: 600; font-size: clamp(2rem, 5vw, 44px); line-height: 1; letter-spacing: -.02em; }
.stat__v em { font-style: normal; color: var(--cyan-500); }
.stat--ink .stat__v { color: #fff; }
.stat--ink .stat__v em { color: var(--cyan-400); }
.stat__l { font-family: var(--font-body); font-size: 14px; color: var(--color-text-muted); margin-top: 6px; }
.stat--ink .stat__l { color: rgba(255,255,255,.62); }

/* ── Header ────────────────────────────────────────────────────────────────── */
.hdr {
  position: fixed; top: 0; left: 0; right: 0; z-index: 200;
  display: flex; align-items: center; justify-content: space-between;
  padding: 22px 40px;
  transition: background var(--dur-base), border-color var(--dur-base), padding var(--dur-base);
}
.hdr.is-stuck {
  background: rgba(10,21,38,.88); backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255,255,255,.10); padding: 14px 40px;
}
.hdr__logo img { height: 30px; width: auto; display: block; }
.hdr__nav { display: flex; align-items: center; gap: 34px; }
.hdr__nav a {
  font-family: var(--font-body); font-size: 14.5px; font-weight: 500;
  color: rgba(255,255,255,.84); text-decoration: none;
  transition: color var(--dur-fast);
}
.hdr__nav a:hover { color: #fff; }
.hdr__right { display: flex; align-items: center; gap: 20px; }
.hdr__phone {
  font-family: var(--font-body); font-weight: 600; font-size: 14px; color: #fff;
  text-decoration: none; display: inline-flex; align-items: center; gap: 8px;
}
.hdr__phone svg { width: 16px; height: 16px; color: var(--cyan-400); }

/* ── Hero ──────────────────────────────────────────────────────────────────── */
.hero {
  position: relative; background: var(--gradient-ink); color: #fff;
  overflow: hidden; padding: clamp(128px, 17vw, 184px) 0 clamp(72px, 11vw, 110px);
}
.hero__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .9; }
/* Bottom fade — dissolves the hero into the dark brandbar below (no hard seam) */
.hero::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 140px;
  background: linear-gradient(180deg, transparent, var(--navy-800));
  z-index: 1; pointer-events: none;
}
.hero__net {
  position: absolute; right: -60px; bottom: -40px; top: auto;
  width: 720px; height: auto; opacity: .45; pointer-events: none;
  animation: netFloat 9s ease-in-out infinite;
}
.hero__net-lines path { stroke-dasharray: 7 11; animation: lineFlow 7s linear infinite; }
.hero__net-nodes circle { animation: nodePulse 4s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.hero__net-nodes circle:nth-child(2n) { animation-delay: .8s; }
.hero__net-nodes circle:nth-child(3n) { animation-delay: 1.6s; }
.hero__net-nodes circle:nth-child(5n) { animation-delay: 2.4s; }

@keyframes netFloat  { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes nodePulse { 0%, 100% { opacity: .45; } 50% { opacity: 1; } }
@keyframes lineFlow  { to { stroke-dashoffset: -36; } }
.hero__inner {
  position: relative; z-index: 2;
  display: grid; grid-template-columns: 1fr; gap: 56px; align-items: center;
  max-width: 760px;
}
.hero__badges { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 28px; }
.hero h1 {
  font-family: var(--font-display); font-weight: 600;
  font-size: clamp(2.4rem, 7.2vw, 72px);
  line-height: 1.04; letter-spacing: -.02em; color: #fff; margin: 0 0 22px;
}
.hero__accent { color: var(--cyan-400); font-style: normal; }
.hero__sub {
  font-family: var(--font-body); font-size: clamp(16px, 2.1vw, 19px); line-height: 1.6;
  color: rgba(255,255,255,.78); max-width: 52ch; margin: 0 0 36px;
}
.hero__cta { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; }
.hero__stats {
  display: flex; gap: 44px; margin-top: 56px; padding-top: 34px;
  border-top: 1px solid rgba(255,255,255,.14); flex-wrap: wrap;
}

/* ── Brand / credential marquee (dark continuation of the hero) ────────────── */
.brandbar {
  position: relative; overflow: hidden;
  background: linear-gradient(180deg, var(--navy-800) 0%, var(--navy-950) 100%);
  padding: 32px 0 36px;
}
/* hairline divider into the light Services section below — understated, no glow */
.brandbar::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: var(--gradient-hairline); opacity: .45;
}
.brandbar__label {
  text-align: center; margin: 0 0 22px;
  font-family: var(--font-body); font-size: 12px; font-weight: 600;
  letter-spacing: var(--tracking-wider); text-transform: uppercase;
  color: rgba(255,255,255,.42);
}
.brandbar__viewport {
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 11%, #000 89%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 11%, #000 89%, transparent);
}
.brandbar__track {
  display: flex; align-items: center; width: max-content;
  animation: marquee 34s linear infinite;
}
.brandbar__item {
  flex: none; display: inline-flex; align-items: center; gap: 38px;
  padding: 0 38px; white-space: nowrap;
  font-family: var(--font-body); font-size: 14px; font-weight: 600;
  letter-spacing: .2em; text-transform: uppercase; color: rgba(255,255,255,.46);
}
.brandbar__item::after { content: "\00b7"; color: rgba(255,255,255,.24); }

/* from -50% to 0 moves the duplicated track left→right; identical sets = seamless */
@keyframes marquee { from { transform: translateX(-50%); } to { transform: translateX(0); } }

/* Honour reduced-motion: freeze the marquee and the hero network motif */
@media (prefers-reduced-motion: reduce) {
  .brandbar__track { animation: none; transform: translateX(0); }
  .hero__net,
  .hero__net-lines path,
  .hero__net-nodes circle { animation: none; }
}

/* ── Path tabs (How We Help) ───────────────────────────────────────────────── */
.path-tabs {
  display: flex; gap: 12px; margin-bottom: 40px; flex-wrap: wrap;
}
.path-tab {
  font-family: var(--font-body); font-size: 14.5px; font-weight: 600;
  padding: 12px 24px; border-radius: var(--radius-sm); cursor: pointer;
  border: 1px solid var(--color-border); background: #fff;
  color: var(--color-text-muted);
  transition: background var(--dur-base), border-color var(--dur-base),
              color var(--dur-base), box-shadow var(--dur-base);
}
.path-tab:hover { border-color: var(--cyan-500); color: var(--navy-900); }
.path-tab.active {
  background: var(--navy-900); color: #fff;
  border-color: var(--navy-900); box-shadow: var(--shadow-md);
}
.path-panel { display: none; }
.path-panel.active { display: block; }

/* ── Service cards ─────────────────────────────────────────────────────────── */
.svc-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.svc {
  position: relative; display: flex; flex-direction: column; gap: 16px;
  background: #fff; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: 30px 28px; overflow: hidden;
  transition: transform var(--dur-base) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out),
              border-color var(--dur-base) var(--ease-out);
}
.svc::before {
  content: ""; position: absolute; left: 0; top: 0; height: 3px; width: 0;
  background: var(--gradient-accent); transition: width var(--dur-slow) var(--ease-out);
}
.svc:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: transparent; }
.svc:hover::before { width: 100%; }
.svc__num {
  position: absolute; top: 22px; right: 26px;
  font-family: var(--font-display); font-size: 30px; font-weight: 600;
  color: var(--gray-200); line-height: 1;
}
.svc__ic {
  width: 54px; height: 54px; border-radius: var(--radius-sm);
  display: flex; align-items: center; justify-content: center;
  background: var(--color-accent-soft); color: var(--cyan-700);
  transition: background var(--dur-base), color var(--dur-base);
}
.svc:hover .svc__ic { background: var(--navy-900); color: var(--cyan-400); }
.svc__ic svg { width: 26px; height: 26px; stroke-width: 1.6; }
.svc__t { font-family: var(--font-display); font-weight: 600; font-size: 21px; line-height: 1.16; color: var(--color-text-strong); margin: 0; }
.svc__d { font-family: var(--font-body); font-size: 14.5px; line-height: 1.6; color: var(--color-text-muted); margin: 0; }
.svc__more {
  margin-top: auto; display: inline-flex; align-items: center; gap: 7px;
  font-family: var(--font-body); font-weight: 600; font-size: 13.5px; color: var(--color-link);
  background: none; border: none; cursor: pointer; padding: 0;
}
.svc__more svg { width: 16px; height: 16px; transition: transform var(--dur-base); }
.svc:hover .svc__more svg { transform: translateX(4px); }

/* ── Process band ──────────────────────────────────────────────────────────── */
.approach { background: var(--gradient-ink); color: #fff; position: relative; overflow: hidden; padding: 100px 0; }
.approach__glow {
  position: absolute; left: -180px; bottom: -160px; width: 560px; height: 560px;
  background: radial-gradient(circle, rgba(25,195,230,.16), transparent 62%); pointer-events: none;
}
.proc { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; position: relative; z-index: 1; }
.proc__step { position: relative; padding: 0 22px; }
.proc__track {
  position: absolute; top: 9px; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--navy-600), var(--cyan-500)); opacity: .5;
}
.proc__step:first-child .proc__track { left: 50%; }
.proc__step:last-child  .proc__track { right: 50%; }
.proc__node {
  position: relative; width: 18px; height: 18px; border-radius: 50%; margin: 0 auto;
  background: var(--navy-900); border: 2px solid var(--cyan-500); z-index: 1;
}
.proc__step.is-active .proc__node { background: var(--cyan-500); box-shadow: 0 0 0 7px rgba(25,195,230,.18); }
.proc__body { text-align: center; margin-top: 24px; }
.proc__num { font-family: var(--font-body); font-size: 12px; font-weight: 700; letter-spacing: .14em; color: var(--cyan-400); margin-bottom: 9px; }
.proc__t { font-family: var(--font-display); font-weight: 600; font-size: 22px; color: #fff; margin: 0 0 8px; }
.proc__d { font-family: var(--font-body); font-size: 14px; line-height: 1.6; color: rgba(255,255,255,.7); margin: 0; }
.proc__why-strip {
  display: flex; gap: 40px; justify-content: center; flex-wrap: wrap;
  margin-top: 64px; padding-top: 48px; border-top: 1px solid rgba(255,255,255,.12);
  position: relative; z-index: 1;
}
.proc__why-item { display: flex; flex-direction: column; align-items: center; gap: 10px; max-width: 220px; text-align: center; }
.proc__why-ic {
  width: 44px; height: 44px; border-radius: var(--radius-sm);
  background: rgba(25,195,230,.12); color: var(--cyan-400);
  display: flex; align-items: center; justify-content: center;
}
.proc__why-ic svg { width: 22px; height: 22px; }
.proc__why-t { font-family: var(--font-display); font-weight: 600; font-size: 18px; color: #fff; }
.proc__why-d { font-family: var(--font-body); font-size: 13.5px; color: rgba(255,255,255,.65); line-height: 1.55; margin: 0; }

/* ── Testimonials ──────────────────────────────────────────────────────────── */
.tst-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.tst {
  display: flex; flex-direction: column; gap: 20px;
  background: #fff; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: 32px 30px;
}
.tst__mark { font-family: var(--font-display); font-size: 56px; line-height: .5; color: var(--cyan-300); height: 22px; }
.tst__body { font-family: var(--font-display); font-weight: 500; font-size: 20px; line-height: 1.42; letter-spacing: -.01em; color: var(--color-text-strong); margin: 0; }
.tst__foot { display: flex; align-items: center; gap: 13px; margin-top: auto; }
.tst__av {
  width: 44px; height: 44px; border-radius: 50%; flex: none;
  background: var(--gradient-ink); color: #fff; display: flex; align-items: center;
  justify-content: center; font-family: var(--font-display); font-weight: 600; font-size: 18px;
}
.tst__n { font-family: var(--font-body); font-weight: 600; font-size: 14.5px; color: var(--color-text-strong); }
.tst__r { font-family: var(--font-body); font-size: 13px; color: var(--color-text-muted); }
.tst__co { margin-left: auto; font-family: var(--font-display); font-weight: 600; font-size: 14px; letter-spacing: .05em; color: var(--gray-300); }

/* ── FAQ ───────────────────────────────────────────────────────────────────── */
.faq-list { max-width: 780px; margin: 0 auto; display: flex; flex-direction: column; gap: 2px; }
.faq-list details {
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: #fff; overflow: hidden;
  transition: box-shadow var(--dur-base);
}
.faq-list details[open] { box-shadow: var(--shadow-sm); }
.faq-list summary {
  list-style: none; cursor: pointer;
  padding: 20px 24px; display: flex; align-items: center; justify-content: space-between; gap: 16px;
  font-family: var(--font-display); font-weight: 600; font-size: 19px;
  color: var(--color-text-strong); user-select: none;
}
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after {
  content: "";
  width: 18px; height: 18px; flex: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%230B86A2' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat center;
  transition: transform var(--dur-base);
}
.faq-list details[open] summary::after { transform: rotate(180deg); }
.faq-list summary:hover { color: var(--navy-700); }
.faq-list .faq-answer {
  padding: 0 24px 22px;
  font-family: var(--font-body); font-size: 15.5px; line-height: 1.7;
  color: var(--color-text-body);
}

/* ── Contact / Schedule Consultation ───────────────────────────────────────── */
.contact { background: var(--gray-50); }
.contact__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: stretch; }
.contact__panel {
  background: var(--gradient-ink); color: #fff;
  border-radius: var(--radius-xl); padding: 48px 44px;
  position: relative; overflow: hidden;
}
.contact__panel h2 {
  font-family: var(--font-display); font-weight: 600; font-size: 38px;
  line-height: 1.08; color: #fff; margin: 18px 0 18px;
}
.contact__panel p { font-family: var(--font-body); font-size: 16px; line-height: 1.65; color: rgba(255,255,255,.78); margin: 0 0 32px; }
.contact__list { display: flex; flex-direction: column; gap: 18px; position: relative; z-index: 1; }
.contact__row { display: flex; gap: 14px; align-items: center; font-family: var(--font-body); font-size: 15px; color: rgba(255,255,255,.9); }
.contact__row svg { width: 18px; height: 18px; color: var(--cyan-400); flex: none; }
.contact__row a { color: #fff; text-decoration: underline; text-underline-offset: 3px; opacity: .85; }
.contact__row a:hover { opacity: 1; }

/* ── Form card ─────────────────────────────────────────────────────────────── */
.form-card {
  background: #fff; border: 1px solid var(--color-border);
  border-radius: var(--radius-xl); padding: 40px 38px; box-shadow: var(--shadow-md);
}
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.form-grid .full { grid-column: 1 / -1; }
.field { display: flex; flex-direction: column; gap: 8px; }
.field label { font-family: var(--font-body); font-size: 13px; font-weight: 600; color: var(--color-text-strong); }
.field label .req { color: var(--cyan-600); }
.field--disabled label { color: var(--color-text-faint); }
.ctrl {
  width: 100%; box-sizing: border-box;
  font-family: var(--font-body); font-size: 15px;
  color: var(--color-text-strong); background: #fff;
  border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm);
  padding: 13px 15px;
  transition: border-color var(--dur-base), box-shadow var(--dur-base);
}
.ctrl::placeholder { color: var(--color-text-faint); }
.ctrl:focus { outline: none; border-color: var(--cyan-500); box-shadow: var(--focus-ring); }
.ctrl:disabled { background: var(--gray-50); color: var(--color-text-faint); cursor: not-allowed; }
textarea.ctrl { resize: vertical; min-height: 110px; }
select.ctrl {
  appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236E7D96' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center; padding-right: 40px;
}

/* honeypot — visually hidden but not display:none (some bots skip those) */
.hp-field {
  position: absolute; left: -9999px; top: -9999px;
  width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; tabindex: -1;
}

/* form submit button */
.form-submit-btn { width: 100%; }

/* form error banner */
.form-error-msg {
  grid-column: 1 / -1;
  background: #FEF2F2; border: 1px solid #FECACA;
  border-radius: var(--radius-sm); padding: 12px 16px;
  font-family: var(--font-body); font-size: 14px; color: #991B1B; line-height: 1.5;
}
.form-error-msg a { color: #991B1B; font-weight: 600; text-decoration: underline; }

/* per-field validation */
.field--error .ctrl,
.ctrl[aria-invalid="true"] { border-color: #DC2626; }
.field--error .ctrl:focus,
.ctrl[aria-invalid="true"]:focus { border-color: #DC2626; box-shadow: 0 0 0 3px rgba(220,38,38,.15); }
.field-error {
  font-family: var(--font-body); font-size: 12.5px; font-weight: 500;
  color: #DC2626; line-height: 1.4;
}

/* form privacy note */
.form-privacy {
  grid-column: 1 / -1; margin: 0;
  font-family: var(--font-body); font-size: 12.5px;
  color: var(--color-text-faint); text-align: center;
  display: flex; align-items: center; justify-content: center; gap: 6px;
}
.form-privacy svg { width: 13px; height: 13px; color: var(--cyan-700); flex: none; }

/* ── Form success state ────────────────────────────────────────────────────── */
.form-success {
  display: flex; flex-direction: column; align-items: center;
  text-align: center; padding: 16px 8px; gap: 16px;
}
.form-success__icon {
  width: 64px; height: 64px; border-radius: 50%;
  background: var(--color-accent-soft); color: var(--success-500);
  display: flex; align-items: center; justify-content: center;
}
.form-success h3 {
  font-family: var(--font-display); font-weight: 600; font-size: 28px;
  color: var(--color-text-strong); margin: 0;
}
.form-success p { font-size: 16px; color: var(--color-text-muted); margin: 0; max-width: 36ch; }
.form-success__wa { margin-top: 8px; }
.form-success__note { font-size: 13.5px; color: var(--color-text-faint); margin: 0; }
.form-success__note a { color: var(--color-link); font-weight: 600; }

/* ── Footer ────────────────────────────────────────────────────────────────── */
.ft { background: var(--gradient-ink); color: rgba(255,255,255,.7); padding: 76px 0 34px; position: relative; overflow: hidden; }
.ft__glow { position: absolute; right: -160px; top: -120px; width: 520px; height: 520px; background: radial-gradient(circle, rgba(25,195,230,.16), transparent 60%); pointer-events: none; }
.ft__grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.2fr; gap: 48px; position: relative; z-index: 1; }
.ft__logo img { height: 34px; width: auto; margin-bottom: 20px; }
.ft__blurb { font-size: 14.5px; line-height: 1.65; max-width: 30ch; margin: 0 0 22px; }
.ft__social { display: flex; gap: 12px; }
.ft__social a {
  width: 38px; height: 38px; border-radius: var(--radius-sm);
  border: 1px solid rgba(255,255,255,.16); display: flex; align-items: center;
  justify-content: center; color: #fff; font-family: var(--font-body); font-weight: 600;
  font-size: 13px; text-decoration: none;
  transition: background var(--dur-base), border-color var(--dur-base);
}
.ft__social a:hover { background: var(--cyan-600); border-color: var(--cyan-600); color: #fff; }
.ft__h { font-family: var(--font-body); font-size: 12px; font-weight: 600; letter-spacing: var(--tracking-wider); text-transform: uppercase; color: #fff; margin: 0 0 18px; }
.ft__col a { display: block; font-size: 14.5px; color: rgba(255,255,255,.7); text-decoration: none; padding: 6px 0; transition: color var(--dur-fast); }
.ft__col a:hover { color: var(--cyan-400); }
.ft__contact { font-size: 14.5px; line-height: 1.7; }
.ft__contact .r { display: flex; gap: 10px; align-items: flex-start; margin-bottom: 12px; }
.ft__contact svg { width: 17px; height: 17px; color: var(--cyan-500); flex: none; margin-top: 2px; }
.ft__contact a { color: rgba(255,255,255,.7); }
.ft__contact a:hover { color: var(--cyan-400); }
.ft__bar {
  display: flex; justify-content: space-between; align-items: center;
  margin-top: 54px; padding-top: 24px; border-top: 1px solid rgba(255,255,255,.12);
  font-size: 13px; color: var(--gray-400); flex-wrap: wrap; gap: 14px;
}
.ft__bar a { color: var(--gray-400); text-decoration: none; }
.ft__bar a:hover { color: #fff; }
.ft__legal { display: flex; gap: 22px; }
.ft__sep { margin: 0 6px; opacity: .5; }
.ft__neo {
  color: var(--cyan-400); font-weight: 600; text-decoration: none;
  transition: color var(--dur-base), text-shadow var(--dur-base);
}
/* higher specificity than `.ft__bar a:hover { color:#fff }` above */
.ft__bar .ft__neo:hover {
  color: var(--cyan-300);
  text-shadow: 0 0 8px rgba(25,195,230,.85), 0 0 18px rgba(25,195,230,.45);
}

/* ── Right-click copyright notice ─────────────────────────────────────────── */
.rc-notice {
  position: fixed; z-index: 9999; max-width: 280px; pointer-events: none;
  display: flex; gap: 11px; align-items: flex-start;
  padding: 13px 16px; border-radius: var(--radius-sm);
  background: rgba(8, 18, 34, .92); border: 1px solid rgba(25,195,230,.35);
  box-shadow: 0 12px 40px rgba(0,0,0,.45), 0 0 0 1px rgba(25,195,230,.08);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  color: rgba(255,255,255,.78); font-family: var(--font-body); font-size: 13px; line-height: 1.5;
  opacity: 0; transform: translateY(6px) scale(.97);
  transition: opacity var(--dur-base), transform var(--dur-base);
}
.rc-notice--show { opacity: 1; transform: translateY(0) scale(1); }
.rc-notice strong { display: block; color: #fff; font-weight: 600; margin-bottom: 2px; }
.rc-notice__lock { color: var(--cyan-400); flex: none; margin-top: 1px; }
@media (prefers-reduced-motion: reduce) {
  .rc-notice { transition: opacity var(--dur-base); transform: none; }
  .rc-notice--show { transform: none; }
}

/* ── Mobile persistent bottom CTA bar ─────────────────────────────────────── */
.mobile-cta {
  display: none; position: fixed; bottom: 0; left: 0; right: 0;
  padding: 12px 22px calc(16px + env(safe-area-inset-bottom, 0px)); z-index: 190;
  background: rgba(10,21,38,.92); backdrop-filter: blur(12px);
  border-top: 1px solid rgba(255,255,255,.12);
  align-items: center; justify-content: center; gap: 12px;
  transform: translateY(100%); transition: transform var(--dur-base) var(--ease-out);
}
.mobile-cta.visible { transform: translateY(0); }

/* ── Journey spine (scroll-revealed strategic roadmap rail) ────────────────── */
.journey {
  position: absolute; left: 0; top: 0; width: 100%;
  z-index: 40; pointer-events: none; overflow: visible;
}
.journey__track {
  fill: none; stroke: rgba(120,134,160,.38); stroke-width: 2; stroke-linecap: round;
}
.journey__progress {
  fill: none; stroke: url(#journeyGrad); stroke-width: 2.5; stroke-linecap: round;
}
.journey__node circle {
  fill: var(--white); stroke: var(--navy-700); stroke-width: 2;
  transition: fill var(--dur-slow) var(--ease-out), stroke var(--dur-slow) var(--ease-out);
}
.journey__node.is-active circle { fill: var(--cyan-500); stroke: var(--navy-900); }
/* Narrow viewports keep the spine as a fine left-edge hairline (not a chunky
   stepper). The rail is re-routed into the content gutter by journey.js. */
@media (max-width: 768px) {
  .journey__track    { stroke-width: 1.6; }
  .journey__progress { stroke-width: 2; }
  .journey__node circle { stroke-width: 1.5; }
}

/* ── Reveal animation ──────────────────────────────────────────────────────── */
.reveal {
  opacity: 0; transform: translateY(22px);
  transition: opacity .7s var(--ease-out), transform .7s var(--ease-out);
}
.reveal.in { opacity: 1; transform: none; }

/* ── Responsive ────────────────────────────────────────────────────────────── */
@media (max-width: 1080px) {
  .svc-grid, .tst-grid { grid-template-columns: repeat(2, 1fr); }
  .contact__inner { grid-template-columns: 1fr; gap: 40px; }
  .ft__grid { grid-template-columns: 1fr 1fr; gap: 36px; }

  /* Header: the full nav + phone + CTA won't fit beside each other on tablet and
     overflow the bar. Drop the phone number and tighten the links/padding so the
     logo, nav and Book button sit comfortably without leaking. */
  .hdr { padding: 18px 28px; }
  .hdr.is-stuck { padding: 13px 28px; }
  .hdr__phone { display: none; }
  .hdr__nav { gap: 22px; }
  .hdr__nav a { font-size: 14px; }

  /* Process band: stack the steps with a vertical connector threading the nodes,
     echoing the journey-line aesthetic rather than the broken horizontal track. */
  .proc { grid-auto-flow: row; grid-auto-columns: auto; gap: 0; max-width: 560px; }
  .proc__step { display: grid; grid-template-columns: 20px 1fr; gap: 18px; padding: 0 0 34px; }
  .proc__step:last-child { padding-bottom: 0; }
  .proc__node { margin: 3px auto 0; }
  .proc__track {
    top: 18px; bottom: -16px; left: 9px; right: auto; width: 2px; height: auto;
    background: linear-gradient(180deg, var(--navy-600), var(--cyan-500));
  }
  .proc__step:first-child .proc__track { left: 9px; top: 18px; }
  .proc__step:last-child  .proc__track { display: none; right: auto; }
  .proc__body { text-align: left; margin-top: 0; }
}

/* Tablet portrait — calm the decorative hero network so it never overflows */
@media (max-width: 900px) {
  .hero__net { width: 540px; opacity: .32; right: -90px; }
  .proc__why-strip { gap: 28px 32px; }
}

@media (max-width: 720px) {
  .wrap { padding-inline: 22px; }
  .hdr { padding: 16px 22px; }
  .hdr.is-stuck { padding: 12px 22px; }
  .hdr__logo img { height: 24px; }
  .hdr__nav { display: none; }
  .hdr__phone { display: none; }
  /* Persistent bottom CTA bar already carries the action — drop the header button */
  .hdr__right .btn { display: none; }
  .hero__net { width: 420px; opacity: .26; right: -120px; }
  .hero__stats { gap: 26px 30px; }
  .contact__panel h2 { font-size: clamp(26px, 7vw, 34px); }
  .svc-grid, .tst-grid, .form-grid { grid-template-columns: 1fr; }
  .brandbar__item { font-size: 13px; letter-spacing: .16em; gap: 28px; padding: 0 28px; }
  /* Group the four differentiators as a 2×2 grid rather than one tall column */
  .proc__why-strip { display: grid; grid-template-columns: 1fr 1fr; gap: 28px 18px; align-items: start; }
  .proc__why-item { max-width: none; }
  .ft__grid { grid-template-columns: 1fr; gap: 28px; }
  .ft__col a { padding: 9px 0; }
  .ft__bar { flex-direction: column; align-items: flex-start; }
  .mobile-cta { display: flex; }
  /* Clear the fixed bottom CTA bar so it never covers the footer */
  .site { padding-bottom: calc(74px + env(safe-area-inset-bottom, 0px)); }
  .path-tabs { gap: 8px; }
  .path-tab { font-size: 13.5px; padding: 12px 18px; min-height: 44px; }
  .faq-list summary { font-size: 17px; }
  .form-card { padding: 28px 22px; }
  /* ≥16px form controls stop iOS Safari from auto-zooming on focus */
  .ctrl, select.ctrl { font-size: 16px; }
  /* Comfortable touch target on the inline card action */
  .svc__more { min-height: 44px; }
}

@media (max-width: 480px) {
  .hero__net { display: none; }
  .hero__stats { gap: 20px 24px; }
  .hero__cta .btn { width: 100%; }
}
