/* ==========================================================================
   Jadhav Enterprises — theme styles
   Full-viewport scroll-snap layout. Basalt navy + Signal Amber.
   ========================================================================== */

:root{
  /* Brand */
  --color-primary:#12283A;          /* Basalt */
  --color-primary-light:#E9EFF4;
  --color-secondary:#F2A007;        /* Signal Amber */
  --color-secondary-dark:#D48A03;   /* backgrounds/borders only */
  --color-amber-text:#9A6206;       /* amber that passes AA as text on light */
  --color-secondary-light:#FFD98A;

  /* Directional scrim: heavy behind the copy on the left, clearing to nothing
     on the right so the machinery and the golden-hour sky actually show. The
     warm radial lifts the grey cast a flat navy wash was leaving. */
  --gradient-hero:
    radial-gradient(1100px 640px at 76% 22%, rgba(242,160,7,.20), transparent 62%),
    linear-gradient(100deg, rgba(18,40,58,.92) 0%, rgba(18,40,58,.82) 28%, rgba(18,40,58,.52) 52%, rgba(18,40,58,.14) 78%, rgba(18,40,58,0) 100%);
  --gradient-dark:linear-gradient(135deg,#12283A,#1E3E58);
  --gradient-amber:linear-gradient(135deg,#F2A007,#FFC24D,#F2A007);

  --glow-amber:0 0 40px rgba(242,160,7,.18);

  --color-bg:#FFFFFF;
  --color-bg-alt:#F7F5F1;           /* Site White */
  --color-bg-light:#F1EEE8;
  --color-surface:#FFFFFF;

  --color-text:#12283A;
  --color-text-muted:#5A6B78;
  --color-text-light:#667581;
  --color-text-dark:#F7F5F1;

  --color-border:rgba(18,40,58,.08);
  --color-border-light:rgba(18,40,58,.14);

  --font-heading:"Plus Jakarta Sans","Poppins",system-ui,sans-serif;
  --font-body:"Outfit","Manrope",system-ui,sans-serif;

  --container-max:1200px;
  --container-padding:1.5rem;

  --radius-sm:6px;
  --radius-md:10px;
  --radius-lg:16px;
  --radius-xl:24px;
  --radius-full:9999px;

  --shadow-sm:0 1px 3px rgba(18,40,58,.05), 0 1px 2px rgba(18,40,58,.06);
  --shadow-md:0 4px 16px rgba(18,40,58,.07), 0 2px 8px rgba(18,40,58,.05);
  --shadow-lg:0 12px 40px rgba(18,40,58,.10), 0 4px 16px rgba(18,40,58,.05);
  --shadow-xl:0 24px 60px rgba(18,40,58,.12);

  --transition-fast:.2s cubic-bezier(.4,0,.2,1);
  --transition-base:.35s cubic-bezier(.4,0,.2,1);
  --transition-slow:.6s cubic-bezier(.4,0,.2,1);

  --z-navbar:300;
  --z-overlay:400;
}

/* Smooth cross-page navigation where the browser supports it. */
@view-transition{ navigation:auto; }
@media (prefers-reduced-motion: reduce){
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none !important;}
}

*,*::before,*::after{box-sizing:border-box;}
html{
  scroll-behavior:smooth; -webkit-text-size-adjust:100%;
  accent-color:var(--color-secondary);
  color-scheme:light;
}
body{
  margin:0; font-family:var(--font-body); font-size:17px; line-height:1.7;
  color:var(--color-text); background:var(--color-bg); -webkit-font-smoothing:antialiased;
}
img{max-width:100%; height:auto; display:block;}
a{color:inherit; text-decoration:none;}
h1,h2,h3,h4,h5{
  font-family:var(--font-heading); font-weight:800; line-height:1.12; margin:0; letter-spacing:-.02em;
  text-wrap:balance;          /* stops one orphaned word on a line of its own */
}
h1{font-size:clamp(2.4rem,4.6vw,4rem);}
h2{font-size:clamp(1.9rem,3.4vw,3rem);}
h3{font-size:1.3rem; font-weight:700;}
p{margin:0 0 1.1rem; text-wrap:pretty;}
.container{width:100%; max-width:var(--container-max); margin:0 auto; padding:0 var(--container-padding);}

/* subtle film grain over everything */
.noise-overlay{
  position:fixed; inset:0; z-index:var(--z-overlay); pointer-events:none; opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------------------------------------------------------------- buttons */
/* Interactive controls: kill the 300ms tap delay and make the tap flash
   intentional rather than the OS default blue box. */
.btn,.hamburger,.snap-dots a,.float-actions a,.navbar-links a,.dropdown-menu a,
.site-footer a,.card-link,.scroll-arrow,.contact-card a{
  touch-action:manipulation;
  -webkit-tap-highlight-color:rgba(242,160,7,.24);
}

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.6rem;
  padding:.95rem 2rem; border-radius:var(--radius-full); border:2px solid transparent;
  font-family:var(--font-heading); font-size:.95rem; font-weight:700; letter-spacing:.01em;
  cursor:pointer; transition:var(--transition-base); white-space:nowrap;
}
.btn-primary{background:var(--color-secondary); color:var(--color-primary); border-color:var(--color-secondary);}
.btn-primary:hover{background:var(--color-secondary-dark); border-color:var(--color-secondary-dark); transform:translateY(-2px); box-shadow:var(--glow-amber);}
.btn-outline{border-color:var(--color-border-light); color:var(--color-text);}
.btn-outline:hover{border-color:var(--color-secondary); color:var(--color-amber-text); transform:translateY(-2px);}
.btn-light{border-color:rgba(255,255,255,.38); color:#fff;}
.btn-light:hover{background:#fff; color:var(--color-primary); border-color:#fff; transform:translateY(-2px);}
.btn-dark{background:var(--color-primary); color:#fff; border-color:var(--color-primary);}
.btn-dark:hover{background:#1E3E58; border-color:#1E3E58; transform:translateY(-2px);}
.btn-lg{padding:1.1rem 2.4rem; font-size:1rem;}

/* ---------------------------------------------------------------- navbar */
.navbar{
  position:fixed; top:0; left:0; right:0; z-index:var(--z-navbar);
  padding:1rem 0; transition:var(--transition-base);
  background:transparent;
}
.navbar .container{display:flex; align-items:center; justify-content:space-between; gap:1.5rem;}
.navbar.scrolled{background:rgba(255,255,255,.94); backdrop-filter:blur(14px); box-shadow:var(--shadow-md); padding:.6rem 0;}
.navbar-logo{display:flex; align-items:center; gap:.75rem;}
.navbar-logo img{height:56px; width:auto; transition:var(--transition-base);}
.navbar.scrolled .navbar-logo img{height:46px;}
.logo-text{font-family:var(--font-heading); font-weight:800; font-size:1.15rem; line-height:1.1; color:#fff; transition:color var(--transition-base);}
.logo-text small{display:block; font-family:var(--font-body); font-size:.62rem; font-weight:600; letter-spacing:.22em; opacity:.75; margin-top:.15rem;}
.navbar.scrolled .logo-text{color:var(--color-primary);}
/* light-logo swap */
.navbar-logo .logo-light{display:block;}
.navbar-logo .logo-dark{display:none;}
.navbar.scrolled .logo-light{display:none;}
.navbar.scrolled .logo-dark{display:block;}

.navbar-links{display:flex; align-items:center; gap:2rem;}
.navbar-links > a:not(.btn), .dropdown > a{
  font-size:.93rem; font-weight:500; color:rgba(255,255,255,.9); position:relative;
  padding:.7rem 0; display:inline-flex; align-items:center; min-height:44px;
  transition:var(--transition-fast);
}
.navbar.scrolled .navbar-links > a:not(.btn), .navbar.scrolled .dropdown > a{color:var(--color-text);}
.navbar-links > a:not(.btn)::after{
  content:""; position:absolute; left:0; bottom:6px; height:2px; width:0;
  background:var(--color-secondary); transition:width var(--transition-base);
}
.navbar-links > a:not(.btn):hover::after, .navbar-links > a:not(.btn).active::after{width:100%;}
.navbar-links > a:not(.btn):hover, .navbar-links > a:not(.btn).active{color:var(--color-secondary);}
.navbar-links .btn{color:var(--color-primary); padding:.7rem 1.5rem; font-size:.9rem; font-weight:600;}

/* dropdown */
.dropdown{position:relative;}
.dropdown-menu{
  position:absolute; top:calc(100% + .8rem); left:50%; transform:translateX(-50%) translateY(-8px);
  background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow-lg); padding:.6rem;
  min-width:250px; opacity:0; visibility:hidden; transition:var(--transition-base); border:1px solid var(--color-border);
}
.dropdown:hover .dropdown-menu{opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);}
.dropdown-menu a{display:flex; align-items:center; min-height:44px; padding:.6rem 1rem; border-radius:var(--radius-sm); font-size:.92rem; color:var(--color-text); transition:var(--transition-fast);}
.dropdown-menu a:hover{background:var(--color-bg-alt); color:var(--color-amber-text);}

.hamburger{display:none; flex-direction:column; justify-content:center; align-items:center; gap:5px; background:none; border:0; cursor:pointer; width:44px; height:44px; padding:0;}
.hamburger span{display:block; width:26px; height:2px; background:#fff; border-radius:2px; transition:var(--transition-base);}
.navbar.scrolled .hamburger span{background:var(--color-primary);}
.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.hamburger.open span:nth-child(2){opacity:0;}
.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

.mobile-menu{
  position:fixed; inset:0; z-index:calc(var(--z-navbar) - 1); background:var(--color-primary);
  overscroll-behavior:contain; overflow-y:auto;
  padding:max(1.5rem, env(safe-area-inset-top)) 1.5rem max(1.5rem, env(safe-area-inset-bottom));
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1.4rem;
  opacity:0; visibility:hidden; transition:var(--transition-base);
}
.mobile-menu.open{opacity:1; visibility:visible;}
.mobile-menu a{
  font-family:var(--font-heading); font-size:1.5rem; font-weight:700; color:#fff;
  display:inline-flex; align-items:center; min-height:44px; padding:.35rem 1rem;
}
.mobile-menu a:hover{color:var(--color-secondary);}

/* ------------------------------------------------------- snap scrolling */
html.snap-home{scroll-snap-type:y mandatory;}
/* Forced snapping is scroll-jacking; users who ask for less motion get none. */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  html.snap-home{scroll-snap-type:none;}
}
.snap-container{position:relative;}
.snap-section{
  min-height:100vh;
  min-height:100dvh;          /* dvh tracks the collapsing mobile URL bar */
  height:auto; scroll-snap-align:start; scroll-snap-stop:always;
  display:flex; align-items:center; position:relative; overflow:hidden;
}
.snap-section .container{padding-top:7rem; padding-bottom:4rem;}
.snap-section.bg-alt{background:var(--color-bg-alt);}
.snap-section.bg-light{background:var(--color-bg-light);}
.snap-section.bg-dark{background:var(--color-primary); color:var(--color-text-dark);}
.snap-section.bg-dark h2,.snap-section.bg-dark h3{color:#fff;}

/* Offscreen inner-page sections cost nothing to render until they near the
   viewport. Deliberately NOT applied to .snap-section: skipped rendering
   makes the browser mis-estimate heights, which fights scroll-snap and
   makes snap positions jump. */
.section{
  content-visibility:auto;
  contain-intrinsic-size:auto 720px;
}

/* right-hand dot navigation */
.snap-dots{
  position:fixed; right:.5rem; top:50%; transform:translateY(-50%); z-index:calc(var(--z-navbar) - 2);
  display:flex; flex-direction:column; gap:0;
}
/* 44x44 hit area, 10px visual dot */
.snap-dots a{
  width:44px; height:44px; display:grid; place-items:center;
  position:relative; border-radius:50%;
}
.snap-dots a::before{
  content:""; width:10px; height:10px; border-radius:50%;
  background:rgba(18,40,58,.22); transition:var(--transition-base);
}
.snap-dots a::after{
  content:attr(data-label); position:absolute; right:40px; top:50%; transform:translateY(-50%);
  background:var(--color-primary); color:#fff; font-size:.7rem; font-weight:600; letter-spacing:.04em;
  padding:.3rem .6rem; border-radius:var(--radius-sm); white-space:nowrap;
  opacity:0; pointer-events:none; transition:var(--transition-fast);
}
.snap-dots a:hover::after{opacity:1;}
.snap-dots a:hover::before{background:var(--color-secondary);}
.snap-dots a.active::before{background:var(--color-secondary); transform:scale(1.5);}
.snap-dots.on-dark a::before{background:rgba(255,255,255,.3);}
.snap-dots.on-dark a.active::before{background:var(--color-secondary);}

/* ambient floating glow orbs */
.hero-orbs{position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:1;}
.hero-orb{position:absolute; border-radius:50%; filter:blur(70px); opacity:.4; animation:orbFloat 18s ease-in-out infinite;}
.hero-orb:nth-child(1){width:420px; height:420px; background:rgba(242,160,7,.4); top:-90px; right:6%;}
.hero-orb:nth-child(2){width:340px; height:340px; background:rgba(30,62,88,.55); bottom:-70px; left:4%; animation-delay:-6s;}
.hero-orb:nth-child(3){width:260px; height:260px; background:rgba(242,160,7,.22); top:44%; left:38%; animation-delay:-12s;}
@keyframes orbFloat{
  0%,100%{transform:translate3d(0,0,0) scale(1);}
  50%{transform:translate3d(28px,-34px,0) scale(1.12);}
}
@media (prefers-reduced-motion: reduce){ .hero-orb{animation:none;} }

/* ------------------------------------------------------------------ hero */
.snap-hero{background:var(--color-primary); color:#fff;}
.snap-hero-bg{
  position:absolute; inset:0; z-index:0;
  background-image:var(--gradient-hero), var(--hero-image, var(--gradient-dark));
  background-size:cover; background-position:center; background-repeat:no-repeat;
  filter:saturate(1.08) brightness(1.04);
}
.snap-hero .container{position:relative; z-index:2;}
/* Copy column stops well short of the frame edge: past roughly this width the
   text crosses out of the scrim and onto the lit sky. */
.snap-hero .hero-badge,
.snap-hero .hero-heading,
.snap-hero .hero-lead,
.snap-hero .hero-buttons,
.snap-hero .hero-trust,
.snap-hero .hero-clients{max-width:680px;}
.snap-hero .hero-lead{max-width:56ch;}
.snap-hero .hero-heading{text-shadow:0 2px 24px rgba(18,40,58,.4);}
.snap-hero-content{max-width:820px;}
/* Cinematic centered hero variant */
.snap-hero.hero-center .snap-hero-content{
  max-width:1060px; margin:0 auto; text-align:center;
  display:flex; flex-direction:column; align-items:center;
}
.snap-hero.hero-center h1{font-size:clamp(2.6rem,5.2vw,5rem); max-width:100%;}
.snap-hero.hero-center .lead{margin-left:auto; margin-right:auto;}
.hero-eyebrow{
  display:block; font-size:.8rem; font-weight:600; letter-spacing:.28em;
  text-transform:uppercase; color:var(--color-secondary-light); margin-bottom:1.6rem;
}
.hero-badge{
  display:inline-flex; align-items:center; gap:.55rem; padding:.5rem 1.1rem;
  border-radius:var(--radius-full); border:1px solid rgba(255,255,255,.28);
  background:rgba(255,255,255,.08); backdrop-filter:blur(8px);
  font-size:.82rem; font-weight:600; letter-spacing:.06em; text-transform:uppercase;
  color:var(--color-secondary-light); margin-bottom:1.6rem;
}
.hero-badge .dot{width:7px; height:7px; border-radius:50%; background:var(--color-secondary); box-shadow:0 0 0 4px rgba(242,160,7,.25);}
.snap-hero h1{color:#fff; margin-bottom:1.3rem;}
.snap-hero h1 .accent{color:var(--color-secondary);}
.snap-hero .lead{font-size:clamp(1.05rem,1.5vw,1.25rem); color:rgba(247,245,241,.82); max-width:62ch; margin-bottom:2.2rem;}
.hero-buttons{display:flex; gap:1rem; flex-wrap:wrap;}
.hero-trust{display:flex; gap:2.4rem; flex-wrap:wrap; margin-top:3rem; padding-top:2rem; border-top:1px solid rgba(255,255,255,.16);}
.hero-trust div b{display:block; font-family:var(--font-heading); font-size:2rem; font-weight:800; color:var(--color-secondary); line-height:1; font-variant-numeric:tabular-nums;}
.hero-trust div span{font-size:.82rem; color:rgba(247,245,241,.7); letter-spacing:.05em;}

.hero-clients{
  margin:1.4rem 0 0; font-size:.82rem; color:rgba(247,245,241,.62);
  display:flex; flex-wrap:wrap; gap:.5rem .7rem; align-items:baseline;
}
.hero-clients span{
  font-family:var(--font-heading); font-size:.68rem; font-weight:700;
  letter-spacing:.16em; text-transform:uppercase; color:rgba(247,245,241,.4);
}

.scroll-arrow{
  position:absolute; bottom:1.6rem; left:50%; transform:translateX(-50%); z-index:2;
  color:rgba(255,255,255,.6); animation:bob 2.2s ease-in-out infinite;
  width:44px; height:44px; display:grid; place-items:center;
}
.scroll-arrow svg{width:26px; height:26px;}
@keyframes bob{0%,100%{transform:translateX(-50%) translateY(0);}50%{transform:translateX(-50%) translateY(9px);}}
@media (prefers-reduced-motion: reduce){ .scroll-arrow{animation:none;} }

/* ------------------------------------------------------- section heading */
.snap-label{
  display:block; font-size:.78rem; font-weight:700; letter-spacing:.22em;
  text-transform:uppercase; color:var(--color-amber-text); margin-bottom:.9rem;
}
.bg-dark .snap-label{color:var(--color-secondary);}
.section-head{max-width:720px; margin-bottom:3rem;}
.section-head.center{margin-left:auto; margin-right:auto; text-align:center;}
.section-head p{color:var(--color-text-muted); font-size:1.06rem; margin-top:.9rem;}
.bg-dark .section-head p{color:rgba(247,245,241,.72);}
.section-head-row{display:flex; align-items:flex-end; justify-content:space-between; gap:2rem; flex-wrap:wrap; margin-bottom:3rem;}
.section-head-row .section-head{margin-bottom:0;}

/* ------------------------------------------------------------------ grids */
.snap-grid-2{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.6rem;}
.snap-grid-3{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.6rem;}
.snap-grid-4{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1.4rem;}

.snap-service-card,.value-card,.quote-card,.stat-card,.client-chip{min-width:0; overflow-wrap:break-word;}

/* Gapless bento: 6 columns, dense flow. Spans are chosen so every row sums
   to 6 — A(4)+B(2) / C(2)+D(4) — leaving zero empty cells by arithmetic,
   with dense flow as the backstop. */
.bento{
  display:grid; grid-template-columns:repeat(6,minmax(0,1fr));
  grid-auto-flow:dense; gap:1.3rem;
}
.bento > .b-w{grid-column:span 4;}
.bento > .b-n{grid-column:span 2;}
.bento .snap-service-card{height:100%; margin:0;}
.bento .b-w .snap-service-card{
  display:flex; flex-direction:column; justify-content:flex-end; min-height:300px;
  background-image:linear-gradient(160deg, rgba(18,40,58,.92) 30%, rgba(18,40,58,.55)), var(--card-img, var(--gradient-dark));
  background-size:cover; background-position:center; border:0;
}
.bento .b-w .snap-service-card h3,.bento .b-w .snap-service-card p{color:#fff;}
.bento .b-w .snap-service-card p{color:rgba(247,245,241,.78);}
.bento .b-w .snap-service-card .card-link{color:var(--color-secondary-light);}
.bento .b-w .snap-service-card .card-icon{background:rgba(242,160,7,.2);}
.bento .b-w .snap-service-card .card-icon i{color:var(--color-secondary);}
@media (max-width:900px){ .bento > .b-w,.bento > .b-n{grid-column:span 6;} .bento .b-w .snap-service-card{min-height:240px;} }

/* Infinite marquee for client names */
.marquee{
  overflow:hidden; position:relative;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.marquee-track{
  display:flex; align-items:center; gap:3.4rem; width:max-content;
  animation:marqueeScroll 36s linear infinite; padding:.6rem 0;
}
.marquee-track span{
  font-family:var(--font-heading); font-weight:700; font-size:1.25rem;
  color:var(--color-text-muted); white-space:nowrap;
}
.marquee-track span::after{content:"·"; color:var(--color-secondary); margin-left:3.4rem; font-weight:800;}
.marquee:hover .marquee-track{animation-play-state:paused;}
@keyframes marqueeScroll{to{transform:translateX(-50%);}}
@media (prefers-reduced-motion: reduce){
  .marquee-track{animation:none; flex-wrap:wrap; width:auto;}
  .marquee{-webkit-mask-image:none; mask-image:none;}
}

/* Inline typographic image pill inside a heading */
.h-pill{
  display:inline-block; vertical-align:middle; width:2.2em; height:1em;
  border-radius:var(--radius-full); margin:0 .12em; position:relative; top:-.06em;
  background:var(--gradient-amber) center/cover no-repeat;
  background-image:var(--pill-img, var(--gradient-amber));
  filter:contrast(1.1) saturate(.9);
}

/* service card */
.snap-service-card{
  display:block; background:var(--color-surface); border:1px solid var(--color-border);
  border-radius:var(--radius-lg); padding:2rem 1.8rem; transition:var(--transition-base);
  position:relative; overflow:hidden; background-size:cover; background-position:center; background-repeat:no-repeat;
}
.snap-service-card::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:var(--gradient-amber); transform:scaleX(0); transform-origin:left; transition:transform var(--transition-base);
  z-index:2;
}
.snap-service-card:hover{transform:translateY(-8px); box-shadow:var(--shadow-lg); border-color:var(--color-border-light);}
.snap-service-card:hover::before{transform:scaleX(1);}
.snap-service-card.has-image{border-color:transparent;}
.snap-service-card.has-image::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(165deg, rgba(18,40,58,.93) 25%, rgba(18,40,58,.72));
  z-index:0;
}
.snap-service-card.has-image > *{position:relative; z-index:1;}
.snap-service-card.has-image h3,.snap-service-card.has-image p{color:#fff;}
.snap-service-card.has-image p{color:rgba(247,245,241,.8);}
.snap-service-card.has-image .card-list li{color:rgba(247,245,241,.85);}
.snap-service-card.has-image .card-icon{background:rgba(242,160,7,.22);}
.snap-service-card.has-image .card-icon i{color:var(--color-secondary);}
.snap-service-card.has-image .card-link{color:var(--color-secondary-light);}
.card-icon{
  width:56px; height:56px; border-radius:var(--radius-md); background:rgba(242,160,7,.14);
  display:grid; place-items:center; margin-bottom:1.3rem; transition:var(--transition-base);
}
.card-icon i{font-size:26px; line-height:1; color:var(--color-secondary-dark);}
.snap-service-card:hover .card-icon{background:var(--color-secondary); transform:scale(1.06);}
.snap-service-card:hover .card-icon i{color:var(--color-primary);}
.snap-service-card h3{margin-bottom:.6rem;}
.snap-service-card p{color:var(--color-text-muted); font-size:.96rem; margin-bottom:1rem;}
.card-list{list-style:none; margin:0 0 1.2rem; padding:0;}
.card-list li{font-size:.9rem; color:var(--color-text-muted); padding-left:1.3rem; position:relative; margin-bottom:.35rem;}
.card-list li::before{content:"›"; position:absolute; left:.3rem; color:var(--color-amber-text); font-weight:700;}
.card-link{font-size:.88rem; font-weight:700; color:var(--color-primary); display:inline-flex; align-items:center; gap:.4rem;}
.snap-service-card:hover .card-link{color:var(--color-amber-text); gap:.7rem;}

/* value / feature tile */
.value-card{
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12);
  border-radius:var(--radius-lg); padding:2rem 1.7rem; transition:var(--transition-base);
}
.value-card:hover{background:rgba(255,255,255,.09); transform:translateY(-6px); border-color:rgba(242,160,7,.4);}
.value-card .card-icon{background:rgba(242,160,7,.18);}
.value-card .card-icon i{color:var(--color-secondary);}
.value-card h3{margin-bottom:.5rem;}
.value-card p{color:rgba(247,245,241,.72); font-size:.95rem; margin:0;}

/* stats */
.stat-grid{display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1.2rem;}
.stat-card{
  text-align:center; padding:1.9rem 1rem; background:var(--color-surface);
  border:1px solid var(--color-border); border-radius:var(--radius-lg); transition:var(--transition-base);
}
.stat-card:hover{transform:translateY(-6px); box-shadow:var(--shadow-md); border-color:rgba(242,160,7,.4);}
.stat-card b{
  display:block; font-family:var(--font-heading); font-size:2.9rem; font-weight:800;
  line-height:1; color:var(--color-primary); margin-bottom:.45rem;
  font-variant-numeric:tabular-nums;   /* counters must not reflow mid-count */
}
.stat-card span{font-size:.8rem; font-weight:600; letter-spacing:.09em; text-transform:uppercase; color:var(--color-text-muted);}

/* process steps */
.step-card{position:relative; padding-top:1.4rem;}
.step-card::before{content:""; position:absolute; top:0; left:0; width:44px; height:3px; background:var(--color-secondary); border-radius:2px;}
.step-num{font-family:var(--font-heading); font-size:.8rem; font-weight:700; letter-spacing:.18em; color:var(--color-amber-text); display:block; margin-bottom:.5rem;}
.step-card h3{font-size:1.15rem; margin-bottom:.45rem;}
.step-card p{color:var(--color-text-muted); font-size:.94rem; margin:0;}

/* testimonials */
.quote-card{
  background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-lg);
  padding:2rem 1.8rem; transition:var(--transition-base); position:relative;
}
.quote-card:hover{transform:translateY(-6px); box-shadow:var(--shadow-lg);}
.quote-mark{font-family:var(--font-heading); font-size:3.4rem; line-height:.7; color:var(--color-secondary); opacity:.35;}
.quote-card p{font-size:1rem; color:var(--color-text); margin:.6rem 0 1.4rem;}
.quote-author b{display:block; font-family:var(--font-heading); font-size:.98rem;}
.quote-author span{font-size:.85rem; color:var(--color-text-muted);}

/* client logos strip */
.client-grid{display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1rem;}
.client-chip{
  display:grid; place-items:center; text-align:center; min-height:96px; padding:1rem;
  background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-md);
  font-family:var(--font-heading); font-weight:700; font-size:1rem; color:var(--color-primary);
  transition:var(--transition-base);
}
.client-chip:hover{border-color:var(--color-secondary); color:var(--color-amber-text); transform:translateY(-4px); box-shadow:var(--shadow-sm);}

/* final CTA */
.cta-inner{
  background:var(--gradient-dark); border-radius:var(--radius-xl); padding:4rem 3rem;
  text-align:center; position:relative; overflow:hidden;
}
.cta-inner h2{color:#fff; margin-bottom:1rem;}
.cta-inner p{color:rgba(247,245,241,.76); max-width:56ch; margin:0 auto 2rem;}
.cta-buttons{display:flex; gap:1rem 1.6rem; justify-content:center; flex-wrap:wrap; align-items:center;}

/* Secondary action deliberately de-emphasised so the primary button is the
   single isolated element (Von Restorff). Still a full-size tap target. */
.cta-phone{
  display:inline-flex; flex-direction:column; align-items:flex-start; gap:.1rem;
  padding:.5rem .2rem; color:#fff; text-decoration:none; min-height:44px; justify-content:center;
}
.cta-phone-label{
  font-size:.72rem; letter-spacing:.12em; text-transform:uppercase;
  color:rgba(247,245,241,.6); font-weight:600;
}
.cta-phone-num{
  font-family:var(--font-heading); font-weight:700; font-size:1.05rem;
  border-bottom:1px solid rgba(242,160,7,.5); transition:var(--transition-base);
}
.cta-phone:hover .cta-phone-num{border-bottom-color:var(--color-secondary); color:var(--color-secondary-light,#FFC24D);}

/* Two-column CTA: form left, reasons-to-send right. */
.cta-split{
  display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);
  gap:3rem; align-items:center; text-align:left;
}
.cta-split > .cta-form-col,
.cta-split > .cta-detail-col{position:relative; z-index:2; min-width:0;}
.cta-split h2{margin-bottom:.9rem;}
/* Scoped to the detail column on purpose: an unscoped `.cta-split p` also hit
   the form's progress label and footnote, turning them near-white on the
   white form card. */
.cta-split .cta-detail-col > p{margin:0 0 1.8rem; color:rgba(247,245,241,.76); max-width:46ch;}
.cta-split .cta-trust{justify-content:flex-start; margin-top:1.6rem;}

/* The form keeps its light card styling, which reads as a panel on the navy.
   `.cta-inner p` paints paragraphs light for the dark panel, and the form now
   lives inside that panel — without these resets its progress label and
   footnote render near-white on the white card and vanish. */
.cta-form-col .enquiry-form{box-shadow:var(--shadow-xl);}
.cta-form-col .enquiry-form p{color:var(--color-text-muted); max-width:none; margin-left:0; margin-right:0;}
.cta-form-col .enquiry-form .form-progress-label{color:var(--color-text-muted);}
.cta-form-col .enquiry-form form.is-complete .form-progress-label{color:#2F6B3F;}
.cta-form-col .enquiry-form .form-status.ok p{color:#1E4A29;}
.cta-form-col .enquiry-form .form-status.err p{color:#6E2620;}

.cta-contact{list-style:none; margin:0; padding:0; display:grid; gap:1.1rem;}
.cta-contact li{display:flex; gap:.9rem; align-items:flex-start;}
.cta-contact i{
  flex:0 0 auto; width:34px; height:34px; border-radius:50%;
  background:rgba(242,160,7,.16); color:var(--color-secondary);
  display:grid; place-items:center; font-size:14px; margin-top:.1rem;
}
.cta-contact span{display:block; font-size:.92rem; color:rgba(247,245,241,.78); line-height:1.5;}
.cta-contact b{
  display:block; font-family:var(--font-heading); font-size:.72rem; font-weight:700;
  letter-spacing:.12em; text-transform:uppercase; color:rgba(247,245,241,.5);
  margin-bottom:.15rem;
}
.cta-contact a{color:#fff; font-weight:600; border-bottom:1px solid rgba(242,160,7,.5);}
.cta-contact a:hover{color:var(--color-secondary);}

@media (max-width:900px){
  .cta-split{grid-template-columns:minmax(0,1fr); gap:2.2rem;}
  /* Reasons first on a phone, then the form — context before the ask. */
  .cta-split > .cta-detail-col{order:-1;}
}

.cta-trust{
  list-style:none; margin:2rem 0 0; padding:0;
  display:flex; flex-wrap:wrap; gap:.5rem 1.6rem; justify-content:center;
  font-size:.8rem; color:rgba(247,245,241,.62);
}
.cta-trust li{display:flex; align-items:center; gap:.5rem;}
.cta-trust li + li::before{
  content:""; width:4px; height:4px; border-radius:50%;
  background:rgba(242,160,7,.7); margin-right:.1rem;
}

/* media block */
.media-split{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:3.5rem; align-items:center;}
.media-frame{
  border-radius:var(--radius-lg); overflow:hidden; min-height:420px;
  background:var(--gradient-dark); display:grid; place-items:center; text-align:center; padding:2rem;
  position:relative;
}
.media-frame img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}
.media-frame .placeholder{color:rgba(247,245,241,.5); font-size:.8rem; letter-spacing:.14em; text-transform:uppercase; font-weight:600; max-width:26ch; line-height:1.9;}

/* stagger fade in */
.stagger-fade > *{opacity:0; transform:translateY(26px);}
.js .reveal.in .stagger-fade > *{animation:fadeUp .65s cubic-bezier(.4,0,.2,1) forwards;}
.js .reveal.in .stagger-fade > *:nth-child(1){animation-delay:.05s;}
.js .reveal.in .stagger-fade > *:nth-child(2){animation-delay:.14s;}
.js .reveal.in .stagger-fade > *:nth-child(3){animation-delay:.23s;}
.js .reveal.in .stagger-fade > *:nth-child(4){animation-delay:.32s;}
.js .reveal.in .stagger-fade > *:nth-child(5){animation-delay:.41s;}
.js .reveal.in .stagger-fade > *:nth-child(6){animation-delay:.5s;}
@keyframes fadeUp{to{opacity:1; transform:none;}}
html:not(.js) .stagger-fade > *{opacity:1; transform:none;}
@media (prefers-reduced-motion: reduce){
  .stagger-fade > *{opacity:1 !important; transform:none !important; animation:none !important;}
}

/* NOTE: scroll-driven animations (animation-timeline: view()) were trialled
   here and deliberately rejected. They hide content behind opacity:0 and
   restore it from a scroll timeline — if that range fails to resolve the
   section stays permanently blank. The IntersectionObserver path in
   theme.js is proven and degrades safely, so it stays. */

/* generic reveal */
.js .reveal{opacity:0; transform:translateY(24px); transition:opacity .7s ease, transform .7s ease;}
.js .reveal.in{opacity:1; transform:none;}
@media (prefers-reduced-motion: reduce){ .js .reveal{opacity:1; transform:none;} }

/* ---------------------------------------------------------- inner pages */
.page-banner{
  background:var(--gradient-dark); color:#fff; padding:11rem 0 5rem; position:relative; overflow:hidden;
}
.page-banner .container{position:relative; z-index:2;}
.page-banner h1{color:#fff;}
.page-banner p{color:rgba(247,245,241,.76); max-width:62ch; margin-top:.9rem;}
.breadcrumb{font-size:.8rem; letter-spacing:.16em; text-transform:uppercase; color:var(--color-secondary); font-weight:600; margin-bottom:1rem;}
.page-content{padding:5rem 0;}
/* cap measure at ~72 characters */
.page-content > .container > :where(p,ul,ol,h2,h3,blockquote){max-width:72ch;}
.page-content h2{margin:2.4rem 0 1rem;}
.page-content h3{margin:1.8rem 0 .7rem;}
.page-content ul,.page-content ol{color:var(--color-text-muted);}
.page-content img{border-radius:var(--radius-lg); margin:1.6rem 0;}
.page-content blockquote{
  margin:1.8rem 0; padding:1.2rem 1.6rem; background:var(--color-bg-alt);
  border-left:4px solid var(--color-secondary); border-radius:0 var(--radius-md) var(--radius-md) 0;
}

/* forms */
.enquiry-form{background:var(--color-surface); border:1px solid var(--color-border); border-radius:var(--radius-lg); padding:2.2rem;}
.form-row{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:0 1.2rem;}
.form-field{margin-bottom:.95rem;}
.form-field label{display:block; font-size:.78rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; margin-bottom:.45rem;}
.form-field input,.form-field select,.form-field textarea{
  width:100%; padding:.85rem 1rem; border:1px solid var(--color-border-light); border-radius:var(--radius-sm);
  font-family:inherit; font-size:1rem; background:var(--color-bg-alt); color:var(--color-text);
}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{
  outline:2px solid var(--color-secondary); outline-offset:1px;
  border-color:var(--color-secondary); background:#fff;
}
.form-field input:hover,.form-field select:hover,.form-field textarea:hover{border-color:var(--color-border-light);}
.form-field textarea{min-height:104px; resize:vertical;}
.contact-card{background:var(--color-bg-alt); border:1px solid var(--color-border); border-radius:var(--radius-md); padding:1.5rem; margin-bottom:1rem;}
.contact-card h3{font-size:1.05rem; margin-bottom:.4rem;}
.contact-card p{margin:0; color:var(--color-text-muted); font-size:.95rem;}
.contact-card a{font-weight:600; color:var(--color-primary);}
.contact-card a:hover{color:var(--color-amber-text);}

.snap-home .site-footer{scroll-snap-align:start;}

/* ---------------------------------------------------------------- footer */
.site-footer{background:var(--color-primary); color:rgba(247,245,241,.72); padding:4.5rem 0 0; font-size:.95rem;}
.footer-grid{display:grid; grid-template-columns:1.6fr 1fr 1fr 1.2fr; gap:2.8rem;}
.site-footer h4{font-family:var(--font-body); font-size:.78rem; letter-spacing:.18em; text-transform:uppercase; color:var(--color-secondary); font-weight:700; margin:0 0 1.1rem;}
.site-footer ul{list-style:none; margin:0; padding:0;}
.site-footer li{margin-bottom:.55rem;}
.site-footer a:hover{color:var(--color-secondary);}
.footer-brand img{width:210px; height:auto; max-width:100%; margin-bottom:1.2rem;}
.footer-bottom{
  margin-top:3.2rem; border-top:1px solid rgba(255,255,255,.12); padding:1.4rem 0;
  display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; font-size:.85rem;
}

/* floating contact buttons */
.float-actions{
  position:fixed; z-index:var(--z-navbar); display:flex; flex-direction:column; gap:.65rem;
  right:calc(1.1rem + env(safe-area-inset-right));
  bottom:calc(1.1rem + env(safe-area-inset-bottom));
}
.float-actions a{width:54px; height:54px; border-radius:50%; display:grid; place-items:center; box-shadow:var(--shadow-lg); transition:var(--transition-base);}
.float-actions a:hover{transform:scale(1.09);}
.float-actions .wa{background:#25D366;}
.float-actions .call{background:var(--color-secondary);}
.float-actions svg{width:27px; height:27px;}

/* focus rings — keyboard users had nothing but the browser default */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:3px solid var(--color-secondary);
  outline-offset:3px;
  border-radius:var(--radius-sm);
}
.bg-dark :focus-visible,.snap-hero :focus-visible,.site-footer :focus-visible,.page-banner :focus-visible,.cta-inner :focus-visible{
  outline-color:var(--color-secondary-light);
}

/* skip link */
.skip-link{position:absolute; left:-9999px;}
.skip-link:focus{left:1rem; top:1rem; z-index:9999; background:#fff; color:var(--color-primary); padding:.7rem 1.2rem; border-radius:var(--radius-sm);}

/* WordPress core alignment classes */
.alignleft{float:left; margin:.4rem 1.6rem 1rem 0;}
.alignright{float:right; margin:.4rem 0 1rem 1.6rem;}
.aligncenter{margin-left:auto; margin-right:auto;}
.wp-caption{max-width:100%;}
.screen-reader-text{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(1px,1px,1px,1px); white-space:nowrap;}

/* ---------------------------------------------------------- responsive */
@media (max-width:1080px){
  /* a 4-item grid at 3 columns always orphans the fourth card */
  .snap-grid-4{grid-template-columns:repeat(2,minmax(0,1fr));}
  .stat-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  .client-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
  .footer-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
  .snap-section .container{padding-top:6rem;}
}
@media (max-width:900px){
  .client-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  /* footer + dropdown links need a real tap target on touch devices */
  .site-footer li a,.footer-brand a,.contact-card a{display:inline-flex; align-items:center; min-height:44px;}
  .site-footer li{margin-bottom:0;}
  .float-actions a{width:56px; height:56px;}
  .navbar-links{display:none;}
  .hamburger{display:flex;}
  .snap-dots{display:none;}
  html.snap-home{scroll-snap-type:none;}
  .snap-section{min-height:auto;}
  .snap-section .container{padding-top:5rem; padding-bottom:3.5rem;}
  .snap-grid-3,.snap-grid-2,.media-split{grid-template-columns:minmax(0,1fr);}
  .media-split{gap:2.2rem;}
  .media-frame{min-height:300px;}
  .page-banner{padding:8rem 0 3.5rem;}
  .cta-inner{padding:3rem 1.6rem;}
  .form-row{grid-template-columns:minmax(0,1fr);}
}
@media (max-width:600px){
  body{font-size:16px;}
  /* content-heavy cards get a full column so headings stop wrapping badly */
  .snap-grid-4{grid-template-columns:minmax(0,1fr);}
  .stat-grid,.client-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .page-banner{padding:7rem 0 3rem;}
  .snap-section .container{padding-top:4.5rem; padding-bottom:3rem;}
  .enquiry-form{padding:1.4rem;}
  .cta-inner{padding:2.5rem 1.2rem;}
  .hero-badge{font-size:.72rem; padding:.45rem .9rem;}
  .footer-grid{grid-template-columns:minmax(0,1fr);}
  .hero-buttons .btn,.cta-buttons .btn{width:100%;}
  /* Copy spans the full frame on a phone, so the directional scrim cannot
     carry contrast on its own. */
  .snap-hero-bg{
    background-image:
      radial-gradient(900px 500px at 70% 15%, rgba(242,160,7,.18), transparent 60%),
      linear-gradient(180deg, rgba(18,40,58,.86) 0%, rgba(18,40,58,.74) 55%, rgba(18,40,58,.86) 100%),
      var(--hero-image, var(--gradient-dark));
  }
  .hero-trust{gap:1.4rem 2rem; margin-top:2rem; padding-top:1.4rem;}
  .hero-trust div b{font-size:1.6rem;}
  .hero-trust{gap:1.6rem;}
  .navbar-logo img{height:44px;}
}


/* ==========================================================================
   Inner page components
   ========================================================================== */

.section{padding:5rem 0;}
.section.bg-alt{background:var(--color-bg-alt);}
.section.bg-dark{background:var(--color-primary); color:var(--color-text-dark);}
.section.bg-dark h2,.section.bg-dark h3{color:#fff;}
.section.bg-dark p{color:rgba(247,245,241,.75);}

/* anchored service block */
.service-block{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:3rem;
  align-items:stretch; padding:3rem 0; border-bottom:1px solid var(--color-border);
  scroll-margin-top:100px;
}
.service-block:last-child{border-bottom:0;}
.service-block:nth-child(even) .service-block-media{order:-1;}
.service-block-media{
  min-height:320px; border-radius:var(--radius-lg); background:var(--gradient-dark);
  display:grid; place-items:center; text-align:center; padding:2rem; overflow:hidden; position:relative;
}
.service-block-media img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}
.service-block-media .placeholder{
  color:rgba(247,245,241,.5); font-size:.78rem; letter-spacing:.14em;
  text-transform:uppercase; font-weight:600; line-height:1.9; max-width:26ch;
}
.service-block h2{margin-bottom:.8rem;}
.service-block .snap-label{margin-bottom:.6rem;}

/* spec table */
.spec-table{width:100%; border-collapse:collapse; margin:1.5rem 0; font-size:.95rem;}
.spec-table th{
  background:var(--color-primary); color:var(--color-text-dark); text-align:left;
  padding:.85rem 1rem; font-size:.75rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
}
.spec-table td{padding:.85rem 1rem; border-bottom:1px solid var(--color-border); vertical-align:top;}
.spec-table tr:nth-child(even) td{background:var(--color-bg-alt);}

/* checklist */
.tick-list{list-style:none; padding:0; margin:1.2rem 0;}
.tick-list li{position:relative; padding-left:1.9rem; margin-bottom:.7rem; color:var(--color-text-muted);}
.tick-list li::before{
  content:"✓"; position:absolute; left:0; top:0; width:1.25rem; height:1.25rem;
  background:rgba(242,160,7,.18); color:var(--color-amber-text);
  border-radius:50%; display:grid; place-items:center; font-size:.72rem; font-weight:700;
}
.bg-dark .tick-list li{color:rgba(247,245,241,.78);}
.bg-dark .tick-list li::before{background:rgba(242,160,7,.25); color:var(--color-secondary);}

/* contact layout */
.contact-split{display:grid; grid-template-columns:1.25fr 1fr; gap:2.6rem; align-items:start;}

/* Right column: one panel of icon rows + the map, so it reads as a single
   block and stands level with the form instead of trailing far short of it. */
.contact-aside{position:sticky; top:100px; display:grid; gap:1.2rem;}
.contact-panel{
  background:var(--color-bg-alt); border:1px solid var(--color-border);
  border-radius:var(--radius-lg); padding:1.8rem; display:grid; gap:1.3rem;
}
.contact-row{display:flex; gap:1rem; align-items:flex-start;}
.contact-row i{
  flex:0 0 auto; width:38px; height:38px; border-radius:50%;
  background:rgba(242,160,7,.14); color:var(--color-amber-text);
  display:grid; place-items:center; font-size:15px;
}
.contact-row b{
  display:block; font-family:var(--font-heading); font-size:.72rem; font-weight:700;
  letter-spacing:.12em; text-transform:uppercase; color:var(--color-text-muted);
  margin-bottom:.2rem;
}
.contact-row span{display:block; font-size:.95rem; color:var(--color-text); line-height:1.6;}
.contact-row a{font-weight:600; color:var(--color-primary);}
.contact-row a:hover{color:var(--color-amber-text);}

@media (max-width:900px){
  .contact-aside{position:static;}
}
.form-note{font-size:.85rem; color:var(--color-text-muted); margin-top:1rem;}
.form-status{padding:1rem 1.2rem; border-radius:var(--radius-md); margin-bottom:1.5rem; font-size:.95rem;}
.form-status.ok{background:#EAF6EE; border-left:4px solid #3E7A47; color:#1E4A29;}
.form-status.err{background:#FBF1F1; border-left:4px solid #A8443C; color:#6E2620;}
.form-status.ok strong{display:block; margin-bottom:.2rem;}

/* Reciprocity strip — what they get, stated before anything is asked of them. */
.form-promise{
  list-style:none; margin:0 0 1.3rem; padding:0;
  display:flex; flex-wrap:wrap; gap:.5rem 1.4rem;
}
.form-promise li{
  font-size:.82rem; font-weight:600; color:var(--color-text-muted);
  display:flex; align-items:center; gap:.4rem;
}
.form-promise li::before{
  content:"✓"; color:var(--color-amber-text); font-weight:800; font-size:.9rem;
}

/* Goal-Gradient progress. Animates width only, so it stays off the layout path. */
.form-progress{margin-bottom:1.3rem;}
.form-progress-track{
  height:5px; border-radius:999px; background:var(--color-border); overflow:hidden;
}
.form-progress-fill{
  height:100%; width:0; border-radius:999px;
  background:var(--gradient-amber, linear-gradient(90deg,#F2A007,#B87A00));
  transition:width .35s cubic-bezier(.4,0,.2,1);
}
.form-progress-label{
  font-size:.8rem; color:var(--color-text-muted); margin:.55rem 0 0; font-weight:600;
}
.enquiry-form form.is-complete .form-progress-label{color:#2F6B3F;}
@media (prefers-reduced-motion: reduce){ .form-progress-fill{transition:none;} }

/* Miller's Law grouping — Common Region gives each chunk its own boundary. */
.form-group{
  border:0; padding:0; margin:0 0 1.35rem; min-width:0;
}
.form-group legend{
  display:flex; align-items:center; gap:.6rem; flex-wrap:wrap;
  font-family:var(--font-heading); font-size:.95rem; font-weight:700;
  color:var(--color-primary); margin-bottom:.8rem; padding:0;
}
.form-group-num{
  width:22px; height:22px; border-radius:50%; flex:0 0 auto;
  background:var(--color-secondary); color:var(--color-primary);
  display:grid; place-items:center; font-size:.75rem; font-weight:800;
}
.form-group-optional{
  font-family:var(--font-body); font-size:.72rem; font-weight:600;
  letter-spacing:.06em; text-transform:uppercase; color:var(--color-text-muted);
}

/* Fitts's Law — the primary action spans the full column, so it is a large target. */
.btn-block{width:100%; justify-content:center;}

/* Compact variant, used in the in-page CTA. Fewer fields plus tighter
   rhythm, so the panel does not tower over the copy beside it. */
.enquiry-form.is-compact{padding:1.7rem;}
.enquiry-form.is-compact .form-promise{margin-bottom:1.2rem;}
.enquiry-form.is-compact .form-group{margin-bottom:.9rem;}
.enquiry-form.is-compact .form-field{margin-bottom:.85rem;}
.enquiry-form.is-compact .form-field label{font-size:.72rem; margin-bottom:.3rem;}
.enquiry-form.is-compact .form-field input,
.enquiry-form.is-compact .form-field select{padding:.7rem .9rem;}
.enquiry-form.is-compact .form-field textarea{min-height:84px;}
.enquiry-form.is-compact .form-note{font-size:.78rem; margin-top:.7rem;}

/* Verifiable proof, shown in place of testimonials until real ones exist. */
.proof-card{
  background:var(--color-surface); border:1px solid var(--color-border);
  border-radius:var(--radius-lg); padding:2rem 1.8rem; transition:var(--transition-base);
  border-top:3px solid var(--color-secondary);
}
.proof-card:hover{transform:translateY(-6px); box-shadow:var(--shadow-lg);}
.proof-card h3{font-size:1.05rem; margin-bottom:.6rem;}
.proof-card p{color:var(--color-text-muted); font-size:.94rem; margin:0;}
.map-frame{border-radius:var(--radius-lg); overflow:hidden; border:1px solid var(--color-border); min-height:280px; background:var(--color-bg-light);}
.map-frame iframe{display:block; width:100%; height:100%; min-height:280px; border:0;}

/* project cards */
.project-card{
  background:var(--color-surface); border:1px solid var(--color-border);
  border-radius:var(--radius-lg); overflow:hidden; transition:var(--transition-base);
}
.project-card:hover{transform:translateY(-6px); box-shadow:var(--shadow-lg);}
.project-card .thumb{
  height:190px; background:var(--gradient-dark); display:grid; place-items:center;
  text-align:center; padding:1.4rem; position:relative; overflow:hidden;
  background-size:cover; background-position:center; background-repeat:no-repeat;
}
.project-card .thumb img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}
.project-card .thumb .placeholder{color:rgba(247,245,241,.5); font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; font-weight:600; line-height:1.8;}
.project-card .thumb.has-image .placeholder{display:none;}
.project-card .body{padding:1.5rem;}
.project-card h3{font-size:1.1rem; margin-bottom:.4rem;}
.project-card .meta{font-size:.8rem; letter-spacing:.08em; text-transform:uppercase; color:var(--color-amber-text); font-weight:700; margin-bottom:.6rem;}
.project-card p{color:var(--color-text-muted); font-size:.94rem; margin:0;}

/* fleet tiles */
.fleet-card{
  background:var(--color-surface); border:1px solid var(--color-border);
  border-radius:var(--radius-lg); padding:1.8rem; text-align:center; transition:var(--transition-base);
  position:relative; overflow:hidden; background-size:cover; background-position:center; background-repeat:no-repeat;
}
.fleet-card:hover{transform:translateY(-6px); box-shadow:var(--shadow-lg); border-color:rgba(242,160,7,.4);}
.fleet-card .card-icon{margin:0 auto 1.1rem;}
.fleet-card.has-image{border-color:transparent;}
.fleet-card.has-image::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(165deg, rgba(18,40,58,.93) 20%, rgba(18,40,58,.72));
  z-index:0;
}
.fleet-card.has-image > *{position:relative; z-index:1;}
.fleet-card.has-image h3,.fleet-card.has-image p{color:#fff;}
.fleet-card.has-image p{color:rgba(247,245,241,.8);}
.fleet-card.has-image .card-icon{background:rgba(242,160,7,.22);}
.fleet-card.has-image .card-icon i{color:var(--color-secondary);}
.fleet-card b{display:block; font-family:var(--font-heading); font-size:2.2rem; color:var(--color-primary); line-height:1;}
.fleet-card h3{font-size:1.05rem; margin:.5rem 0 .4rem;}
.fleet-card p{font-size:.9rem; color:var(--color-text-muted); margin:0;}

/* two-column prose */
.prose-split{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:3rem; align-items:start;}

/* pull quote */
.pull-quote{
  border-left:4px solid var(--color-secondary); padding:1.2rem 0 1.2rem 1.8rem;
  font-family:var(--font-heading); font-size:1.35rem; font-weight:700; line-height:1.4; margin:2rem 0;
}

@media (max-width:900px){
  .service-block,.contact-split,.prose-split{grid-template-columns:minmax(0,1fr); gap:2rem;}
  .service-block:nth-child(even) .service-block-media{order:0;}
  .section{padding:3.5rem 0;}
}
