/* ============================================================
   Webteqno UI refresh layer (ui-v2.css)
   Loaded after style.css on every page (and after the homepage's inline
   stylesheet) by renderStylesheets() in includes/db.php. Page-specific
   rules live in assets/css/pages/<template>.css.

   Order: tokens → base/type → kill-switches → layout helpers → eyebrow/
   tags/chips → buttons → cards → lists/rails/marquee → section heads →
   forms → FAQ → stats → CTA bands → nav → footer → overlays → motion →
   reduced motion → print.
   Rules that must beat <style> blocks printed later in <body>
   (ui-extras.php, conversion-kit.php, site-shell.php, #webteqno-home-enhance)
   carry one extra ancestor (body .x) or a doubled class for specificity.
   ============================================================ */

/* ── 1. Tokens ─────────────────────────────────────────────── */
:root{
  --blue-700:#2F3290;
  --blue-tint:rgba(62,65,173,.08);
  --blue-tint-2:rgba(62,65,173,.14);
  --sky-tint:rgba(125,213,253,.12);
  --sky-tint-2:rgba(125,213,253,.22);
  --green:#15803D; --green-tint:rgba(21,128,61,.10); --green-on-dark:#4ADE80;
  --amber:#F5B301;
  --danger:#DC2626; --danger-tint:rgba(220,38,38,.08);
  --wa:#25D366; --wa-ink:#128C7E;
  --glass:rgba(255,255,255,.82); --glass-ink:rgba(6,18,34,.74);
  --ink-4:#1A3354;
  --hair:rgba(3,14,26,.08); --hair-strong:rgba(3,14,26,.16);
  --hair-dark:rgba(255,255,255,.10); --hair-dark-strong:rgba(255,255,255,.20);
  --grad-ink:linear-gradient(150deg,#122742 0%,#0A1B2E 50%,#030E1A 100%);
  --grad-sky:linear-gradient(120deg,#353890 0%,#3E41AD 45%,#030E1A 100%);
  --grad-accent:linear-gradient(135deg,#3E41AD 0%,#7DD5FD 100%);
  --rule-accent:linear-gradient(90deg,#3E41AD,#7DD5FD);
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  /* type scale */
  --fs-display:clamp(44px,2rem + 6vw,108px);
  --fs-h1:clamp(36px,1.6rem + 3.2vw,68px);
  --fs-h2:clamp(28px,1.3rem + 2.2vw,46px);
  --fs-h3:clamp(19px,1.1rem + .45vw,23px);
  --fs-h4:17px;
  --fs-lead:clamp(17px,1rem + .4vw,20px);
  --fs-body:clamp(16px,.95rem + .15vw,17px);
  --fs-small:14px;
  --fs-micro:13px;
  --fs-mono:12px;
  --fs-stat:clamp(44px,2rem + 4vw,88px);
  --measure:66ch; --measure-lead:58ch; --measure-head:28ch;
  /* spacing */
  --s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;
  --gutter:clamp(20px,4vw,32px);
  --section-pad:clamp(56px,7vw,112px);
  --section-pad-tight:clamp(40px,4.5vw,72px);
  --head-gap:clamp(24px,3vw,40px);
  --card-pad:clamp(20px,2.2vw,32px);
  --grid-gap:clamp(14px,1.6vw,22px);
  --nav-h:68px; --nav-h-scrolled:60px;
  /* radii (legacy names redefined by 2–4px) */
  --r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px;--r-2xl:24px;--r-pill:999px;
  /* elevation */
  --shadow-0:none;
  --shadow-xs:0 1px 2px rgba(3,14,26,.06);
  --shadow-sm:0 2px 8px rgba(3,14,26,.06),0 1px 2px rgba(3,14,26,.04);
  --shadow-md:0 8px 24px -8px rgba(3,14,26,.14),0 2px 6px rgba(3,14,26,.05);
  --shadow-lg:0 28px 56px -24px rgba(3,14,26,.28),0 10px 20px -10px rgba(3,14,26,.10);
  --shadow-float:0 1px 2px rgba(3,14,26,.06),0 16px 40px -16px rgba(3,14,26,.24);
  --shadow-glow:0 10px 30px -8px rgba(62,65,173,.45);
  --shadow-glow-soft:0 10px 30px -8px rgba(62,65,173,.28);
  --shadow-glow-sky:0 0 0 1px rgba(125,213,253,.22),0 16px 40px -16px rgba(125,213,253,.35);
  --border:1px solid var(--hair);
  --border-strong:1px solid var(--hair-strong);
  --border-dark:1px solid var(--hair-dark);
  --border-dark-strong:1px solid var(--hair-dark-strong);
  /* controls */
  --control-h:52px; --control-h-sm:44px; --control-h-lg:56px;
  --control-border:rgba(3,14,26,.30); --control-border-dark:rgba(255,255,255,.34);
  /* layers */
  --z-nav:100; --z-float:90; --z-sticky:92; --z-cookie:95; --z-panel:10000; --z-modal:10050;
  /* motion */
  --ease-out:cubic-bezier(.22,1,.36,1);
  --ease-out-expo:cubic-bezier(.16,1,.3,1);
  --ease-emph:cubic-bezier(.2,0,0,1);
  --ease-spring:cubic-bezier(.16,1,.3,1);
  --ease-out-back:cubic-bezier(.34,1.3,.64,1);
  --ease-in:cubic-bezier(.4,0,1,1);
  --dur-1:.12s; --dur-2:.2s; --dur-3:.32s; --dur-4:.56s; --dur-5:.9s; --dur-aurora:28s;
  --stagger:60ms; --rise:18px;
}
@media (prefers-reduced-motion:reduce){:root{--dur-1:0s;--dur-2:0s;--dur-3:0s;--dur-4:0s;--dur-5:0s;--dur-aurora:0s;--stagger:0ms;--rise:0px}}

/* ── 2. Base and type ──────────────────────────────────────── */
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 8px)}
body{font-size:var(--fs-body);line-height:1.6}
h1,h2,h3,.h1,.h2,.h3,.display-1,.display-2{text-wrap:balance;overflow-wrap:anywhere}
p,li,.lead,.sub{text-wrap:pretty}
.display-1{font-size:var(--fs-h1);font-weight:700;letter-spacing:-.03em;line-height:1.02}
.display-2{font-size:var(--fs-h2);font-weight:700;letter-spacing:-.025em;line-height:1.08}
.h1{font-size:var(--fs-h2);font-weight:700;letter-spacing:-.025em;line-height:1.1}
.h2{font-size:var(--fs-h3);font-weight:600;letter-spacing:-.015em;line-height:1.25}
.h3{font-size:var(--fs-h3);font-weight:600;letter-spacing:-.015em;line-height:1.3}
.lead{font-size:var(--fs-lead);line-height:1.55;max-width:var(--measure-lead)}
.measure{max-width:var(--measure)}
.measure-lead{max-width:var(--measure-lead)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.post-hero h1,.service-hero h1,.location-hero h1,.cs-hero h1,.about-hero h1,.founder-hero h1,.locations-hero h1{font-size:var(--fs-h1);font-weight:700;line-height:1.02;letter-spacing:-.03em;max-width:18ch}
.post-hero p,.service-hero p,.location-hero p{font-size:var(--fs-lead);max-width:var(--measure-lead)}
.post-hero,.service-hero{padding:calc(var(--nav-h) + clamp(40px,6vw,80px)) 0 clamp(44px,6vw,80px)}
.post-hero--short{padding:calc(var(--nav-h) + 32px) 0 32px}
.post-hero .breadcrumb{margin-bottom:var(--s-5);font-size:var(--fs-mono);letter-spacing:.04em}
@media (max-width:768px){.post-hero .breadcrumb{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.post-hero .breadcrumb a,.post-hero .breadcrumb span{display:inline}}
.eyebrow,.contact-info-lbl,.lbl{font-family:var(--font-mono);font-size:var(--fs-mono);font-weight:600;letter-spacing:.08em;text-transform:uppercase;line-height:1.2}
.eyebrow::before{margin-right:6px}
.ce-note,.form-note,.wt-draft-notice,.field__hint{font-family:var(--font-sans);font-size:var(--fs-micro);letter-spacing:0;text-transform:none;line-height:1.5;color:var(--text-muted)}
.section{padding:var(--section-pad) 0}
.section-sm,.section-pad-tight{padding:var(--section-pad-tight) 0}
.container{padding:0 var(--gutter)}
.on-dark,.section.dark,.dark,.post-hero,.service-hero,.location-hero,.site-footer,.page-cta,.card--dark,.cta-band{--text-muted:var(--text-inverse-muted);--accent-text:var(--blue-2)}

/* ── 3. Kill-switches and helpers ──────────────────────────── */
.reveal,.reveal.in,.reveal.revealed{animation:none!important}
.faq-a{max-height:none}
.bold-svc::after{content:none}
.grain{position:relative;isolation:isolate}
.grain::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--grain);opacity:.045;mix-blend-mode:overlay;pointer-events:none;border-radius:inherit}
.hairline-top{border-top:var(--border)}
.hairline-top--dark{border-top:var(--border-dark)}
.rule-accent,.wt-rule{display:block;height:2px;width:40px;margin:14px 0 0;border-radius:2px;background:var(--rule-accent);transform-origin:0 50%}
html.js .wt-rule,html.js .rule-accent{animation:wt-draw .9s var(--ease-out-expo) .3s both}
.grid-2,.grid-3,.grid-4{display:grid;gap:var(--grid-gap)}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1024px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:768px){.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}.grid--phone-2{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px}}
@media (max-width:359px){.grid--phone-2{grid-template-columns:minmax(0,1fr)!important}}
.aurora{position:relative;isolation:isolate;overflow:hidden}
.aurora::after{content:"";position:absolute;inset:-20%;z-index:-1;pointer-events:none;
  background:radial-gradient(40% 50% at 30% 40%,rgba(62,65,173,.45),transparent 60%),radial-gradient(35% 45% at 70% 60%,rgba(125,213,253,.26),transparent 60%);
  filter:blur(60px);opacity:.9}
@media (min-width:1024px) and (prefers-reduced-motion:no-preference){.aurora::after{animation:wt-aurora var(--dur-aurora) ease-in-out infinite alternate}}
@keyframes wt-aurora{from{transform:translate3d(-4%,-3%,0) scale(1)}to{transform:translate3d(4%,5%,0) scale(1.08)}}

/* ── 4. Tags, chips, badges ────────────────────────────────── */
.tag{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:0 10px;border-radius:var(--r-sm);font-size:12px;font-weight:600;letter-spacing:.02em;line-height:1;background:var(--blue-tint);color:var(--blue);border:0}
.tag.on-dark,.tag--on-dark{background:var(--sky-tint);color:var(--blue-2)}
.tag-mono{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;border-radius:var(--r-sm);background:var(--paper-3);color:var(--text);border:0}
.on-dark .tag-mono,.section.dark .tag-mono,.card--dark .tag-mono{background:rgba(255,255,255,.08);color:var(--text-inverse)}
.chip{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border-radius:var(--r-pill);border:var(--border-strong);background:var(--paper);font-family:var(--font-sans);font-size:13px;font-weight:600;line-height:1;color:var(--text);text-decoration:none;white-space:nowrap;cursor:pointer;
  transition:background var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-spring)}
.chip:hover{background:var(--blue-tint);border-color:var(--blue);color:var(--blue)}
.chip.is-active{background:var(--ink);border-color:var(--ink);color:#fff}
.chip--on-dark,.on-dark .chip,.section.dark .chip,.post-hero .chip,.hero .chip{background:transparent;border-color:var(--hair-dark-strong);color:var(--text-inverse)}
.chip--on-dark:hover,.on-dark .chip:hover,.section.dark .chip:hover{background:rgba(255,255,255,.08);border-color:#fff;color:#fff}
.chip-row{display:flex;flex-wrap:wrap;gap:8px}
@media (max-width:768px){
  .chip-row--scroll{flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x proximity;padding:4px var(--gutter);margin:0 calc(var(--gutter) * -1);scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 24px),transparent)}
  .chip-row--scroll::-webkit-scrollbar{display:none}
  .chip-row--scroll>*{scroll-snap-align:start;flex:0 0 auto}
}
.badge-live{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:0 12px;border-radius:var(--r-pill);background:var(--green-tint);color:var(--green);font-size:13px;font-weight:600;line-height:1}
.badge-live::before,.badge-live__dot{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;animation:wt-live 2s ease-in-out infinite}
@keyframes wt-live{50%{transform:scale(.8);opacity:.6}}

/* ── 5. Buttons ────────────────────────────────────────────── */
.btn,.wt-sticky__btn,.wt-cookie__btn,.wt-news__btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:var(--r-md);border:1px solid transparent;font-family:var(--font-sans);font-weight:600;font-size:15px;line-height:1.1;letter-spacing:-.005em;white-space:nowrap;text-decoration:none;cursor:pointer;
  transition:transform var(--dur-2) var(--ease-spring),box-shadow var(--dur-2) var(--ease-out),background var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out),background-position var(--dur-3) var(--ease-out)}
.btn-sm{min-height:40px;padding:0 14px;font-size:14px}
.btn-lg{min-height:var(--control-h-lg);padding:0 26px;font-size:16px}
.btn-icon{width:44px;min-height:44px;padding:0;border-radius:var(--r-pill)}
.btn-block{width:100%}
.btn-primary{background:var(--grad-accent);background-size:150% 100%;background-position:0 0;color:#fff;box-shadow:var(--shadow-glow-soft),inset 0 1px 0 rgba(255,255,255,.16)}
.btn-primary:hover{background-position:100% 0;transform:translateY(-1px);box-shadow:var(--shadow-glow),inset 0 1px 0 rgba(255,255,255,.2);color:#fff}
.btn-primary:active{transform:translateY(0) scale(.985)}
.btn-secondary{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn-secondary:hover{background:var(--ink-2);border-color:var(--ink-2);transform:translateY(-1px);color:#fff}
.btn-ghost{background:transparent;color:var(--text);border-color:var(--hair-strong)}
.btn-ghost:hover{background:var(--blue-tint);border-color:var(--blue);color:var(--blue)}
.on-dark .btn-ghost,.section.dark .btn-ghost,.post-hero .btn-ghost,.card--dark .btn-ghost,.cta-band .btn-ghost{color:#fff;border-color:var(--hair-dark-strong)}
.on-dark .btn-ghost:hover,.section.dark .btn-ghost:hover,.post-hero .btn-ghost:hover{background:rgba(255,255,255,.1);border-color:#fff;color:#fff}
.btn-on-dark{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.18)}
.btn-on-dark:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.32);color:#fff}
.btn-link{min-height:0;padding:0;border:0;border-radius:2px;background:linear-gradient(currentColor,currentColor) no-repeat 0 100%/0 1px;color:var(--accent-text,var(--blue));gap:6px;font-size:15px;transition:background-size var(--dur-2) var(--ease-out),color var(--dur-2)}
.btn-link:hover{background-size:100% 1px}
.btn-wa{background:var(--wa);color:#042313;border-color:var(--wa)}
.btn-wa:hover{filter:brightness(1.06);transform:translateY(-1px);color:#042313}
.btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.btn-on-dark:focus-visible,.on-dark .btn:focus-visible{outline-color:var(--blue-2)}
.btn[disabled],.btn.is-disabled{opacity:.45;pointer-events:none}
.btn.is-loading{position:relative;color:transparent!important;pointer-events:none}
.btn.is-loading::before{content:"";position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .8s linear infinite}
.btn-ghost.is-loading::before,.btn-link.is-loading::before{border-color:rgba(3,14,26,.2);border-top-color:var(--blue)}
@keyframes spin{to{transform:rotate(360deg)}}
.hero-actions,.hero-ctas,.final-actions,.cta-band__actions,.form-actions__row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
@media (max-width:480px){
  .hero-actions .btn,.hero-ctas .btn,.final-actions .btn:not(.btn-link),.ce-submit .btn,.form-actions .btn,.wt-exit__form .btn,.cta-band__actions .btn:not(.btn-link){width:100%}
}

/* ── 6. Cards ──────────────────────────────────────────────── */
.card,.why-card,.content-card,.service-panel,.pricing-card,.post-card,.blog-card,.city-card,.loc-card,.work-card,.cs-card,.proc-card,.feature-card,.conversion-card,.location-card{
  position:relative;background:var(--paper);border:var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-0);
  transition:transform var(--dur-2) var(--ease-spring),box-shadow var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out)}
.card{display:flex;flex-direction:column;gap:var(--s-3);padding:var(--card-pad)}
.card h3,.card .card__title{font-size:var(--fs-h3);font-weight:600;letter-spacing:-.015em;line-height:1.25;margin:0}
.card p{margin:0;color:var(--text-muted)}
.grid-3 .card p,.grid-4 .card p{font-size:var(--fs-small)}
.card .btn-link{margin-top:auto;align-self:flex-start}
.card__icon,.wt-ico{flex:0 0 auto;width:40px;height:40px;border-radius:var(--r-md);display:grid;place-items:center;background:var(--blue-tint);color:var(--blue)}
.card__icon svg,.wt-ico svg{width:20px;height:20px}
@media (hover:hover){
  a.card:hover,.card--link:hover,a.why-card:hover,a.post-card:hover,a.blog-card:hover,a.city-card:hover,a.work-card:hover,a.loc-card:hover,a.location-card:hover{transform:translateY(-2px);border-color:var(--hair-strong)}
}
.card--link:focus-within,a.card:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
.card--dark,.service-panel.dark,.conversion-card.dark{background:var(--grad-ink);border:var(--border-dark);color:var(--text-inverse);isolation:isolate}
.card--dark p,.card--dark li{color:var(--text-inverse-muted)}
.card--dark h3,.card--dark .card__title{color:#fff}
@media (hover:hover){.card--dark.card--link:hover,a.card--dark:hover{box-shadow:var(--shadow-glow-sky);border-color:rgba(125,213,253,.35)}}
.card img,.post-card img,.work-card img{border-radius:calc(var(--r-lg) - 1px)}
/* tiles (home services, products) */
.card--tile,body.home-page .bold-svc{border-radius:var(--r-xl);padding:clamp(24px,3vw,40px);min-height:220px;color:#fff;border:0;overflow:hidden}
body.home-page .bold-svc:hover,.card--tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
body.home-page .bold-svc .bold-art,.card--tile .card__art{position:absolute;right:0;bottom:0;width:160px;height:160px;opacity:.22;-webkit-mask-image:linear-gradient(to left,#000 45%,transparent);mask-image:linear-gradient(to left,#000 45%,transparent);pointer-events:none;transition:transform var(--dur-3) var(--ease-spring)}
body.home-page .bold-svc:hover .bold-art,.card--tile:hover .card__art{transform:translate(4px,-4px)}
@media (max-width:768px){body.home-page .bold-svc,.card--tile{min-height:160px;padding:22px}body.home-page .bold-svc .bold-art,.card--tile .card__art{width:72px;height:72px;top:20px;right:20px;bottom:auto;-webkit-mask-image:none;mask-image:none;opacity:.3}body.home-page .bold-svc h3{padding-right:0}}
/* work cards */
.card--work{padding:0;overflow:hidden;gap:0}
.card--work .card__media{position:relative;aspect-ratio:16/10;overflow:hidden;border-bottom:var(--border);background:var(--paper-3)}
.card--work .card__media img{width:100%;height:100%;object-fit:cover;border-radius:0;transition:transform .6s var(--ease-spring)}
.card--work .card__body{display:flex;flex-direction:column;gap:6px;padding:var(--s-4) var(--s-5) var(--s-5)}
.card--work .card__meta,.card--work .services{font-size:var(--fs-small);color:var(--text-muted)}
.card--work .card__go{position:absolute;top:12px;right:12px;z-index:2;width:36px;height:36px;border-radius:var(--r-pill);background:var(--paper);display:grid;place-items:center;color:var(--ink);box-shadow:var(--shadow-sm);transition:background var(--dur-2),color var(--dur-2),transform var(--dur-2) var(--ease-spring)}
@media (hover:hover){.card--work:hover{box-shadow:var(--shadow-md)}.card--work:hover .card__media img{transform:scale(1.03)}.card--work:hover .card__go{background:var(--blue);color:#fff;transform:translate(1px,-1px)}}
.card--result .card__result{position:absolute;left:0;right:0;bottom:0;z-index:2;min-height:40px;padding:8px 14px;display:flex;align-items:center;gap:8px;background:var(--glass-ink);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;font-size:13px;font-weight:600;line-height:1.25}
.card--result .card__result .eyebrow{color:var(--blue-2);flex:0 0 auto}
@media (max-width:768px){
  .card--work.is-compact .card__body{padding:12px 14px 14px}
  .card--work.is-compact h3{font-size:16px}
  .card--work.is-compact .card__meta,.card--work.is-compact .services{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .card--work.is-compact .card__go{display:none}
  .card--work.is-compact .card__result{min-height:32px;padding:6px 10px;font-size:12px}
}
/* spec cards (numbered ruled lists) */
.card--spec{padding:var(--s-5) 0 0;border:0;border-top:var(--border);border-radius:0;background:transparent;box-shadow:none;gap:var(--s-3)}
.card--spec:hover{transform:none}
.card__num{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.08em;line-height:1;color:var(--blue)}
.card--spec ul{list-style:none;margin:0;padding:0}
.card--spec li{padding:10px 0;border-top:var(--border);font-size:var(--fs-body);color:var(--text)}
.card--spec li:first-child{border-top:0}
.card--spec.card--dark{border:var(--border-dark);padding:var(--s-5);border-radius:var(--r-lg);background:var(--grad-ink)}
.card--spec.card--dark li{border-top-color:var(--hair-dark);color:var(--text-inverse)}
.card--spec.card--dark .card__num{color:var(--blue-2)}
/* note card (In short + callout) */
.card--note{background:var(--paper-2);border:0;border-left:3px solid var(--blue);border-radius:var(--r-md);padding:var(--s-5)}
.card--note .card__foot{margin-top:var(--s-3);padding-top:var(--s-3);border-top:var(--border);font-family:var(--font-mono);font-size:13px;line-height:1.5;color:var(--text-muted)}
/* testimonial */
.card--testimonial,.testi-card{background:var(--ink-2);border:var(--border-dark);color:var(--text-inverse);gap:var(--s-4);align-content:start;height:auto;padding:var(--card-pad);display:flex;flex-direction:column}
.card--testimonial .stars,.testi-card .stars{color:var(--amber);font-size:14px;letter-spacing:2px}
.card--testimonial blockquote,.card--testimonial .q,.testi-card .q{font-size:var(--fs-body);line-height:1.6;margin:0;color:var(--text-inverse)}
.card--testimonial .who,.testi-card .who{display:flex;gap:12px;align-items:center;padding-top:var(--s-4);border-top:var(--border-dark);margin-top:auto}
.card--testimonial .who img,.testi-card .who img{width:44px;height:44px;border-radius:50%;object-fit:cover}
/* testimonial attribution links are tap-sized even when the SVG is tiny */
.testi-card .who a,.card--testimonial .who a,.testi-card .meta a,.card--testimonial .meta a{display:inline-grid;place-items:center;min-width:32px;min-height:32px;margin:-8px 0;border-radius:50%;color:var(--blue-2)}
.testi-card .who a svg,.card--testimonial .who a svg{width:16px!important;height:16px!important}
/* row card */
.card--row{flex-direction:row;gap:var(--s-4);padding:var(--s-3);align-items:center}
.card--row .card__media{flex:0 0 96px;aspect-ratio:4/3;border-radius:var(--r-sm);overflow:hidden;border:var(--border);background:var(--paper-3)}
.card--row .card__media img{width:100%;height:100%;object-fit:cover;border-radius:0}
.card--row h3,.card--row .card__title{font-size:var(--fs-h4);line-height:1.3}
.card--row .card__meta{font-family:var(--font-mono);font-size:12px;color:var(--text-muted)}
/* typographic cover fallback for image-less posts */
.cover-fallback{position:relative;background:var(--grad-sky);display:grid;align-content:end;padding:14px;overflow:hidden;color:var(--blue-2)}
.cover-fallback::before{content:attr(data-letter);position:absolute;top:-8px;right:8px;font-size:clamp(64px,10vw,120px);font-weight:700;line-height:1;color:rgba(255,255,255,.14);pointer-events:none}

/* shared fixes requested by the template implementers */
.card--spec .list-check li{padding:10px 0 10px 18px}
.card--spec .list-check li::before{top:calc(10px + .55em)}
.section.dark .card--spec:not(.card--dark){border-top-color:var(--hair-dark)}
.section.dark .card--spec:not(.card--dark) li{border-top-color:var(--hair-dark);color:var(--text-inverse)}
.section.dark .card--spec:not(.card--dark) h3,.section.dark .card--spec:not(.card--dark) h4,.section.dark .card--spec:not(.card--dark) b{color:#fff}
.section.dark .card--spec .card__num{color:var(--blue-2)}
.card--spec h4{font-size:var(--fs-h3);font-weight:600;letter-spacing:-.015em;line-height:1.25;margin:0}
.post-hero + .section.section-pad-tight,.post-hero + .section-pad-tight{padding-top:var(--section-pad-tight)}
.card--result .card__result{min-width:0}
.card--result .card__result .eyebrow{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card--result .card__result>span:not(.eyebrow){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cta-band>div:not(.cta-band__actions){display:grid;gap:8px}
.card--row .card__body{min-width:0;flex:1 1 auto}
.card__media picture{display:block;width:100%;height:100%}
.card__media picture img{width:100%;height:100%;object-fit:cover}
.card[hidden],[hidden].card--work,[hidden].card--row{display:none!important}
.card__media.cover-fallback,.card--row .card__media.cover-fallback,.card--work .card__media.cover-fallback{background:var(--grad-sky)}
.section:not(.dark) .stat__label,.stats--paper .stat__label,.section:not(.dark) .stat-item .lbl{color:var(--text-muted)}
.section:not(.dark) .stat__n,.stats--paper .stat__n{color:var(--text)}
.card--tile.c-blue{background:linear-gradient(150deg,#3E41AD 0%,#4a59c9 45%,#7DD5FD 120%);color:#fff}
.card--tile.c-ink{background:var(--grad-ink);color:#fff}
.card--tile.c-sky{background:var(--grad-sky);color:#fff}
.card--tile.c-blue p{color:rgba(255,255,255,.88)}
.card--tile.c-ink p,.card--tile.c-sky p{color:rgba(230,238,248,.8)}
@media (max-width:768px){
  .card--note .card__foot{font-family:var(--font-sans);font-size:var(--fs-small);line-height:1.5}
  .rail__track{align-items:flex-start}
}
@media (max-width:480px){.chip-row:not(.chip-row--scroll) .chip{white-space:normal;text-align:left;min-height:36px;padding:6px 14px;line-height:1.25}}
/* ── 7. Lists, rails, marquee ──────────────────────────────── */
.list-ruled{list-style:none;padding:0;margin:0}
.list-ruled>li{padding:12px 0;border-top:var(--border)}
.list-ruled>li:first-child{border-top:0}
.list-ruled--dark>li{border-top-color:var(--hair-dark)}
.list-ruled--num{counter-reset:item}
.list-ruled--num>li{display:grid;grid-template-columns:32px 1fr;gap:12px;align-items:baseline}
.list-ruled--num>li::before{content:counter(item,decimal-leading-zero);counter-increment:item;font-family:var(--font-mono);font-size:12px;font-weight:500;line-height:1.6;color:var(--blue)}
.list-check{list-style:none;padding:0;margin:0}
.list-check li{position:relative;padding-left:18px}
.list-check li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;border-radius:50%;background:var(--blue)}
.on-dark .list-check li::before,.card--dark .list-check li::before,.section.dark .list-check li::before{background:var(--blue-2)}
.rail{position:relative}
.rail__nav{display:none;justify-content:center;align-items:center;gap:12px;margin-top:var(--s-4)}
.rail__dots{display:flex;gap:8px}
.rail__dots button{width:8px;height:8px;padding:0;border-radius:50%;border:0;background:var(--hair-strong);transition:transform var(--dur-2) var(--ease-spring),background var(--dur-2)}
.rail__dots button.is-active{background:var(--blue);transform:scale(1.4)}
.on-dark .rail__dots button,.section.dark .rail__dots button{background:var(--hair-dark-strong)}
.on-dark .rail__dots button.is-active,.section.dark .rail__dots button.is-active{background:var(--blue-2)}
@media (max-width:768px){
  .rail__track{display:flex!important;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);padding:4px var(--gutter) 8px;margin:0 calc(var(--gutter) * -1);scrollbar-width:none;overscroll-behavior-x:contain;scroll-behavior:smooth}
  .rail__track::-webkit-scrollbar{display:none}
  .rail__track>*{flex:0 0 86vw;max-width:420px;scroll-snap-align:start}
  .rail__nav{display:flex}
  html.reduce-motion .rail__track{scroll-behavior:auto}
}
.marquee,[data-marquee]{display:block;position:relative;overflow:hidden;-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,[data-marquee]>[data-marquee-track]{display:flex;gap:var(--marquee-gap,10px);width:max-content;will-change:transform;animation:wt-marquee var(--marquee-duration,40s) linear infinite}
.marquee__group,[data-marquee] [data-marquee-group]{display:flex;align-items:center;gap:var(--marquee-gap,10px);flex:0 0 auto;padding-right:var(--marquee-gap,10px)}
.marquee:hover .marquee__track,.marquee:focus-within .marquee__track,.marquee.is-paused .marquee__track,[data-marquee]:hover>[data-marquee-track],[data-marquee].is-paused>[data-marquee-track]{animation-play-state:paused}
@keyframes wt-marquee{to{transform:translate3d(-50%,0,0)}}
html.reduce-motion .marquee,html.reduce-motion [data-marquee]{-webkit-mask-image:none;mask-image:none}
html.reduce-motion .marquee__track,html.reduce-motion [data-marquee]>[data-marquee-track]{animation:none;flex-wrap:wrap;width:auto}
html.reduce-motion .marquee__group[aria-hidden="true"],html.reduce-motion [data-marquee] [aria-hidden="true"]{display:none}

/* ── 8. Section heads ──────────────────────────────────────── */
.section-head,.section-header{display:grid;gap:12px;max-width:var(--measure-lead);margin-bottom:var(--head-gap)}
.section-head h2,.section-header h2{margin:0;max-width:var(--measure-head)}
.section-head .lead,.section-header .lead{margin:0}
.section-head .mt-4,.section-header .mt-4{margin-top:0}
.section-head--split{max-width:none;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--s-4) var(--s-6)}
.section-head--split>.section-head__action{grid-column:2;grid-row:1/span 2;align-self:end}
.section-head--center,.section-head.center,.section-header.center{text-align:center;margin-inline:auto;justify-items:center}
.section-head--statement h2{font-size:var(--fs-h1);max-width:20ch}
@media (max-width:768px){.section-head--split{grid-template-columns:minmax(0,1fr)}.section-head--split>.section-head__action{grid-column:1;grid-row:auto}}
.section-head.reveal,.section-header.reveal{display:grid}

/* ── 9. Forms (one anatomy, two skins) ─────────────────────── */
.field,.ce-field{display:grid;gap:6px;min-width:0}
.ce-field,.contact-edit-form .ce-field{grid-column:auto}
.field__label,.ce-field>label,.field>label,.contact-editorial .field>label,.contact-form .field>label,body .wt-exit__label,body .wt-news__label,.audit-panel .fld>label,.audit-grid label{
  display:block;font-family:var(--font-sans);font-size:var(--fs-micro);font-weight:600;letter-spacing:0;text-transform:none;color:var(--text);margin:0 0 2px;line-height:1.3}
.ce-field>label::before{content:none}
.field__req,.ce-req{color:var(--blue);font-weight:600}
.field__control,
.ce-field input:not([type="checkbox"]):not([type="radio"]),.ce-field textarea,.ce-field select,
.field input:not([type="checkbox"]):not([type="radio"]),.field select,.field textarea,
.contact-form input:not([type="checkbox"]):not([type="radio"]),.contact-form select,.contact-form textarea,
.contact-editorial .field input,.contact-editorial .field select,.contact-editorial .field textarea,
body .wt-exit__form input[type=email],body .wt-exit__form input[name=url],
body .wt-news__input,
.audit-panel .input-wrap input,.audit-grid input,
form[role="search"] input[type="search"],.nf-search input,.search-box input{
  -webkit-appearance:none;appearance:none;width:100%;max-width:100%;min-width:0;
  height:var(--control-h);min-height:var(--control-h);padding:0 14px;margin:0;
  font-family:var(--font-sans);font-size:16px;font-weight:400;line-height:1.2;color:var(--text);
  background:var(--paper-2);border:1px solid var(--control-border);border-radius:var(--r-md);box-shadow:none;outline:none;
  transition:border-color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}
.ce-field textarea,.field textarea,.contact-form textarea,.contact-editorial .field textarea,textarea.field__control{height:auto;min-height:140px;padding:14px;line-height:1.5;resize:vertical}
.ce-field input::placeholder,.ce-field textarea::placeholder,.field input::placeholder,.field textarea::placeholder,body .wt-exit__form input::placeholder,.audit-grid input::placeholder,form[role="search"] input::placeholder{color:var(--text-muted);opacity:1}
.ce-field input:not([type="checkbox"]):not([type="radio"]):hover,.ce-field textarea:hover,.ce-field select:hover,.field input:hover,.field select:hover,.field textarea:hover,.field__control:hover{border-color:rgba(62,65,173,.35)}
.field__control:focus,.ce-field input:not([type="checkbox"]):not([type="radio"]):focus,.ce-field textarea:focus,.ce-field select:focus,
.field input:focus,.field select:focus,.field textarea:focus,
.contact-editorial .field input:focus,.contact-editorial .field select:focus,.contact-editorial .field textarea:focus,
body .wt-exit__form input[type=email]:focus,body .wt-exit__form input[name=url]:focus,
.audit-grid input:focus,form[role="search"] input[type="search"]:focus,.nf-search input:focus,.search-box input:focus{
  border-color:var(--blue);background:var(--paper);box-shadow:0 0 0 3px var(--blue-tint-2);outline:none}
.ce-field input:focus-visible,.ce-field textarea:focus-visible,.ce-field select:focus-visible,.field__control:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.ce-field select,.field select,.contact-form select,.contact-editorial .field select,select.field__control{
  padding-right:40px;cursor:pointer;height:var(--control-h);text-overflow:ellipsis;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235B6370' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:16px}
.ce-field select:invalid{color:var(--text-muted)}
/* dark skin */
.field--dark .field__control,.field--dark input,.field--dark select,.field--dark textarea,
.audit-panel .input-wrap input,.audit-grid input,body .wt-news__input,form[role="search"] input[type="search"],.nf-search input,.post-hero .search-box input{
  background:rgba(255,255,255,.06);border-color:var(--control-border-dark);color:#fff}
.field--dark input::placeholder,.audit-grid input::placeholder,body .wt-news__input::placeholder,form[role="search"] input[type="search"]::placeholder{color:rgba(230,238,248,.72)}
.field--dark .field__control:focus,.field--dark input:focus,.audit-panel .input-wrap input:focus,.audit-grid input:focus,body .wt-news__input:focus,form[role="search"] input[type="search"]:focus,.nf-search input:focus{
  border-color:var(--blue-2);background:rgba(255,255,255,.09);box-shadow:0 0 0 3px var(--sky-tint-2)}
.field--dark .field__label,.field--dark label,.audit-panel .fld label,.audit-grid label,body .wt-news__label{color:var(--text-inverse)}
.field--dark select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2393A4B8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}
/* icon fields */
.field--icon,.audit-panel .input-wrap{position:relative}
.field--icon>svg,.audit-panel .input-wrap>svg{position:absolute;left:14px;top:50%;width:18px;height:18px;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}
.field--icon .field__control,.field--icon input,.audit-panel .input-wrap input{padding-left:42px}
.audit-panel .input-wrap>svg{color:var(--text-inverse-muted)}
/* validation */
.field.is-invalid .field__control,[aria-invalid="true"],.ce-field.has-error input,.ce-field.has-error textarea,.ce-field.has-error select{border-color:var(--danger)!important;box-shadow:0 0 0 3px var(--danger-tint)!important}
.field__error,.ce-field-error{display:none;font-family:var(--font-sans);font-size:13px;font-weight:500;line-height:1.4;color:var(--danger);letter-spacing:0;margin:0;gap:6px}
.field.is-invalid .field__error,.ce-field.has-error .ce-field-error{display:flex;animation:wt-rise-fade var(--dur-2) var(--ease-out) both}
.ce-field.has-error .service-check-grid,.ce-field.has-error .pills{outline:0;border-radius:0}
.ce-field.has-error .service-check,.ce-field.has-error .pill{border-color:rgba(220,38,38,.45)}
/* field grids */
.field-grid,.contact-edit-form{display:grid;gap:var(--s-4);grid-template-columns:minmax(0,1fr)}
@media (min-width:768px){
  .field-grid,.contact-edit-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 16px}
  .field--wide,.ce-field.ce-field-wide,.contact-edit-form .ce-submit,.contact-edit-form .form-actions,.contact-edit-form .form-success,.contact-edit-form .form-error,.contact-edit-form .wt-draft-notice,.contact-edit-form .ce-next,.contact-edit-form .ce-radio,.contact-edit-form .form-msg{grid-column:1/-1}
}
.field-grid--inline{grid-template-columns:minmax(0,1fr) auto;align-items:end}
/* checkbox pills */
.pills,.service-check-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.pill,.service-check,.ce-field .pill,.ce-field .service-check,.ce-field label.service-check{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px 0 12px;border:1px solid var(--control-border);border-radius:var(--r-pill);background:var(--paper);font-family:var(--font-sans);font-size:14px;font-weight:600;line-height:1.2;color:var(--text);cursor:pointer;
  transition:background var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out),transform var(--dur-1) var(--ease-out)}
.pill:hover,.service-check:hover{border-color:var(--blue);background:var(--blue-tint)}
.pill:active,.service-check:active{transform:scale(.98)}
.pill input,.service-check input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.pill__box{display:inline-grid;place-items:center;width:18px;height:18px;flex:0 0 auto;border-radius:5px;border:1.5px solid var(--hair-strong);background:var(--paper);transition:background var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out)}
.service-check span::before{content:none}
.service-check span{display:inline-flex;align-items:center}
.pill__box svg{width:10px;height:10px;transform:scale(0);transition:transform var(--dur-2) var(--ease-spring)}
.pill:has(input:checked),.service-check:has(input:checked){background:var(--blue-tint-2);border-color:var(--blue);color:var(--blue)}
.pill:has(input:checked) .pill__box{background:var(--blue);border-color:var(--blue);color:#fff}
.pill:has(input:checked) .pill__box svg{transform:scale(1)}
.pill:has(input:focus-visible),.service-check:has(input:focus-visible){outline:3px solid var(--focus-ring);outline-offset:2px}
.pill--dark,.field--dark .pill{background:transparent;border-color:var(--hair-dark-strong);color:var(--text-inverse)}
.pill--dark:has(input:checked){background:var(--sky-tint-2);border-color:var(--blue-2);color:#fff}
@media (max-width:480px){.pill,.service-check{font-size:13px;min-height:38px;padding:0 12px 0 10px}}
/* style.css has an unrelated legacy ".pills span" tag rule: neutralise it for checkbox pills */
.service-check-grid.pills span,.pill>span{font-family:var(--font-sans);font-size:14px;font-weight:600;letter-spacing:0;color:inherit;background:none;border:0;padding:0;margin:0;line-height:1.2;border-radius:0}
.pill .pill__box,.service-check .pill__box{display:inline-grid;place-items:center;width:18px;height:18px;flex:0 0 auto;border-radius:5px;border:1.5px solid var(--control-border);background:var(--paper);padding:0;color:#fff}
.pill:has(input:checked) .pill__box,.service-check:has(input:checked) .pill__box{background:var(--blue);border-color:var(--blue)}
@media (max-width:480px){.service-check-grid.pills span,.pill>span{font-size:13px}}
/* actions + messages */
.form-actions,.ce-submit{display:grid;gap:12px;grid-column:1/-1;margin-top:var(--s-2);padding:0;border:0}
.ce-submit{display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;padding-top:20px;border-top:var(--border)}
.ce-submit .btn,.form-actions .btn{min-height:var(--control-h-lg)}
.form-msg,.form-success,.form-error{display:none;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--r-md);border:0;border-left:3px solid var(--green);background:var(--green-tint);color:#14532d;font-size:var(--fs-small);font-weight:500;line-height:1.5}
.form-success{display:flex}
.form-success:empty{display:none}
.form-error,.form-msg--error{border-left-color:var(--danger);background:var(--danger-tint);color:#991b1b}
.form-msg.is-in,.form-success:not(:empty),.form-error.is-in{display:flex;animation:wt-rise-fade var(--dur-2) var(--ease-out) both}
.wt-draft-notice{margin-top:4px}
/* exit popup form */
body .wt-exit__form{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:16px 28px 4px}
body .wt-exit__form input[type=email],body .wt-exit__form input[name=url]{flex:none;width:100%}
body .wt-exit__form .wt-exit__label{margin:0 0 -4px}
body .wt-exit__form .btn{width:100%;min-height:var(--control-h);margin-top:2px}
body .wt-exit__msg{padding:0 28px}
body .wt-exit__nope{font-family:var(--font-sans);font-size:14px;color:var(--text-muted)}
@media (max-width:520px){body .wt-exit__form{padding:12px 20px 4px}body .wt-exit__msg{padding:0 20px}}
/* newsletter */
body .wt-news{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,440px);align-items:center;gap:var(--s-4) var(--s-6);border-radius:var(--r-lg);padding:var(--card-pad);border:var(--border-dark);background:var(--grad-ink);box-shadow:none}
body .wt-news__copy{min-width:0}
body .wt-news__copy strong{font-size:var(--fs-h3);letter-spacing:-.015em;line-height:1.25}
body .wt-news__copy span{font-size:var(--fs-small);color:var(--text-inverse-muted);line-height:1.5}
body .wt-news__form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;max-width:none;align-items:end}
body .wt-news__label{grid-column:1/-1;margin:0;color:var(--text-inverse-muted)}
body .wt-news__input{flex:none;color:#fff}
body .wt-news__btn{min-height:var(--control-h);padding:0 22px;background:var(--grad-accent);background-size:150% 100%;color:#fff;box-shadow:var(--shadow-glow-soft)}
body .wt-news__btn:hover{background-position:100% 0;transform:translateY(-1px);box-shadow:var(--shadow-glow)}
body .wt-news__msg{grid-column:1/-1;font-size:var(--fs-micro);margin:0}
@media (max-width:768px){body .wt-news{grid-template-columns:minmax(0,1fr)}body .wt-news__form{grid-template-columns:minmax(0,1fr)}body .wt-news__btn{width:100%}}
/* AI audit panel */
.audit-panel .audit-grid .btn,.audit-grid .btn{min-height:var(--control-h);align-self:end;padding:0 24px}
.audit-panel .fld{gap:6px}
/* search box */
.search-box,form[role="search"],.nf-search{display:flex;flex-wrap:nowrap;gap:0;align-items:stretch;position:relative;max-width:620px}
.search-box input,form[role="search"] input[type="search"],.nf-search input{flex:1 1 auto;min-width:0;height:var(--control-h-lg);min-height:var(--control-h-lg);border-radius:var(--r-md) 0 0 var(--r-md);padding-left:44px;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%2393A4B8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.3-4.3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:14px center}
.search-box .btn,form[role="search"] .btn,.nf-search .btn{min-height:var(--control-h-lg);border-radius:0 var(--r-md) var(--r-md) 0;flex:0 0 auto}
form[role="search"] input::-webkit-search-decoration,form[role="search"] input::-webkit-search-cancel-button{-webkit-appearance:none}
@media (max-width:480px){.search-box .btn,form[role="search"] .btn,.nf-search .btn{padding:0 16px}}
/* never zoom into a field on phones */
@media (max-width:768px){input:not([type="checkbox"]):not([type="radio"]),select,textarea{font-size:16px!important}}
/* clamp + more */
[data-clamp]{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--clamp,3);overflow:hidden}
[data-clamp].is-open{-webkit-line-clamp:unset;display:block}
@media (min-width:768px){[data-clamp="phone"],[data-clamp]:not([data-clamp-all]){display:block;-webkit-line-clamp:unset}.clamp-more{display:none}}
.clamp-more{margin-top:8px;font-size:14px}

/* ── 10. FAQ ───────────────────────────────────────────────── */
.faq{border:var(--border);border-radius:var(--r-lg);background:var(--paper);overflow:hidden;max-width:880px;margin:var(--head-gap) auto 0}
.faq .faq-list{margin:0;max-width:none}
.faq-item{position:relative;border:0;border-top:var(--border);border-radius:0;background:transparent;transition:background var(--dur-2) var(--ease-out)}
.faq-list>.faq-item:first-child,.faq>.faq-item:first-child{border-top:0}
.faq-item:last-child{border-bottom:0}
.faq .faq-item:last-child{border-bottom:0}
.faq-q{width:100%;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px var(--card-pad);background:none;border:0;text-align:left;font-family:var(--font-sans);font-size:var(--fs-body);font-weight:600;line-height:1.35;letter-spacing:-.005em;color:var(--text);cursor:pointer}
.faq-list:not(.faq *) .faq-q{padding-left:0;padding-right:0}
.faq-q>span,.faq-icon{flex:0 0 auto;width:40px;height:40px;border-radius:var(--r-md);background:var(--blue-tint);border:0;color:var(--blue);display:grid;place-items:center;font-size:20px;font-weight:400;line-height:1;transition:transform var(--dur-3) var(--ease-emph),background var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}
.faq-q.open>span,.faq-q[aria-expanded="true"]>span{transform:rotate(45deg);background:var(--blue);color:#fff}
.faq-a{display:grid;grid-template-rows:0fr;max-height:none;overflow:hidden;padding:0;transition:grid-template-rows var(--dur-3) var(--ease-emph)}
.faq-a>*{min-height:0;overflow:hidden;margin:0}
.faq-a.open{grid-template-rows:1fr;max-height:none}
.faq-a p{padding:0 var(--card-pad) 24px;font-size:var(--fs-body);line-height:1.65;color:var(--text-muted);max-width:var(--measure);transition:opacity var(--dur-3) var(--ease-out)}
.faq-list:not(.faq *) .faq-a p{padding-left:0;padding-right:0}
.faq-a:not(.open) p{opacity:0}
.faq-a.open p{opacity:1}
html:not(.has-js) .faq-a{grid-template-rows:1fr;visibility:visible}
html:not(.has-js) .faq-a p{opacity:1}
.section.dark .faq,.section.dark .faq-item{border-color:var(--hair-dark)}
.section.dark .faq{background:rgba(255,255,255,.03)}
.section.dark .faq-q{color:#fff}
.section.dark .faq-q>span{background:rgba(255,255,255,.08);color:var(--blue-2)}
@media (max-width:768px){.faq-q{padding:16px}.faq-a p{padding:0 16px 18px}.faq-list:not(.faq *) .faq-q{padding:16px 0}}

/* ── 11. Stats ─────────────────────────────────────────────── */
.stats,.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border:var(--border-dark);border-radius:var(--r-lg);overflow:hidden}
.section:not(.dark) .stats,.section:not(.dark) .stats-grid,.stats--paper{border:var(--border)}
.stat,.stat-item{padding:var(--s-5) var(--s-4);border-left:var(--border-dark);margin:0;background:transparent}
.section:not(.dark) .stat,.section:not(.dark) .stat-item{border-left:var(--border)}
.stat:first-child,.stat-item:first-child{border-left:0}
.stat__n,.stat-item .n,.stat-num{font-size:var(--fs-stat);font-weight:700;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.stat__n .suffix,.stat-item .n .suffix{color:var(--blue-2)}
[data-count],.count[data-target]{display:inline-block;min-width:var(--ch,auto);text-align:left;font-variant-numeric:tabular-nums}
.stat__label,.stat-item .lbl,.stat-item .label{font-family:var(--font-sans);font-size:var(--fs-small);font-weight:400;letter-spacing:0;text-transform:none;line-height:1.4;color:var(--text-inverse-muted);margin-top:8px}
@media (max-width:768px){
  .stats,.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat,.stat-item{padding:18px 16px}
  .stat:nth-child(odd),.stat-item:nth-child(odd){border-left:0}
  .stat:nth-child(n+3),.stat-item:nth-child(n+3){border-top:var(--border-dark)}
  .section:not(.dark) .stat:nth-child(n+3),.section:not(.dark) .stat-item:nth-child(n+3){border-top:var(--border)}
}
.stats--inline{display:flex;flex-wrap:wrap;gap:var(--s-4) var(--s-6);border:0;border-radius:0;overflow:visible;margin-top:var(--s-6)}
.stats--inline .stat{padding:0;border:0!important}
.stats--inline .stat__n{font-size:var(--fs-h3);letter-spacing:-.02em}
.stats--inline .stat__label{font-size:var(--fs-micro);margin-top:2px}
.hero-proof{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--text-inverse-muted)}

/* ── 12. CTA bands ─────────────────────────────────────────── */
.cta-band,.service-mid-cta .post-cta,.post-cta,.page-cta,.cs-body .post-cta,.post-body .post-cta{position:relative;isolation:isolate;background:var(--grad-ink);color:var(--text-inverse);border:var(--border-dark);border-radius:var(--r-xl);padding:clamp(28px,4vw,48px);display:grid;gap:var(--s-4);grid-template-columns:minmax(0,1fr) auto;align-items:center;box-shadow:none}
.cta-band h3,.post-cta h3,.page-cta h3,.cta-band h2,.page-cta h2{font-size:var(--fs-h2);font-weight:700;letter-spacing:-.025em;line-height:1.08;margin:0;color:#fff;max-width:20ch}
.cta-band p,.post-cta p,.page-cta p{color:var(--text-inverse-muted);margin:0;max-width:52ch}
.cta-band__actions{grid-column:2;grid-row:1/span 2}
.cta-band .btn-link,.post-cta .btn-link{color:var(--blue-2)}
@media (max-width:768px){.cta-band,.post-cta,.page-cta,.service-mid-cta .post-cta{grid-template-columns:minmax(0,1fr)}.cta-band__actions{grid-column:1;grid-row:auto}}
.final-cta{position:relative;padding:var(--section-pad) 0;background:var(--paper);color:var(--text);overflow:hidden}
.final-cta::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--rule-accent)}
.final-cta .slogan{font-size:var(--fs-h1);font-weight:700;letter-spacing:-.035em;line-height:1.02;max-width:16ch;margin:0}
.final-actions{margin-top:var(--s-6)}
.final-actions .btn-ghost{font-weight:600}
@media (max-width:480px){.final-actions{flex-direction:column;align-items:stretch;gap:8px}.final-actions .btn-link{align-self:center;margin-top:6px}}

/* ── 13. Navigation ────────────────────────────────────────── */
.nav{height:var(--nav-h);background:var(--paper);border-bottom:1px solid transparent;-webkit-backdrop-filter:none;backdrop-filter:none;z-index:var(--z-nav);
  transition:background var(--dur-3) var(--ease-out),border-color var(--dur-3) var(--ease-out),height var(--dur-3) var(--ease-out),box-shadow var(--dur-3) var(--ease-out),color var(--dur-3)}
.nav.scrolled,.nav.is-scrolled{height:var(--nav-h-scrolled);background:var(--glass);-webkit-backdrop-filter:blur(16px) saturate(150%);backdrop-filter:blur(16px) saturate(150%);border-bottom-color:var(--hair);box-shadow:var(--shadow-xs)}
body.home-page .nav.scrolled,body.home-page .nav.is-scrolled,body[data-nav] .nav.scrolled,body[data-nav] .nav.is-scrolled{background:var(--glass);border-bottom-color:var(--hair)}
.nav-inner{padding:0 var(--gutter);height:100%}
.nav-links a{font-size:15px;font-weight:500;color:#374151;padding:8px 12px;border-radius:0;background:none;position:relative}
.nav-links a::before{content:none}
.nav-links a::after{content:"";position:absolute;left:12px;right:12px;bottom:4px;height:2px;border-radius:2px;background:currentColor;transform:scaleX(0);transform-origin:0 50%;transition:transform var(--dur-2) var(--ease-out)}
.nav-links a:hover{background:none;color:var(--text)}
.nav-links a:hover::after,.nav-links a[aria-current="page"]::after{transform:scaleX(1)}
.nav-links a[aria-current="page"]::after{background:var(--blue)}
.nav .brand .mark{transition:transform var(--dur-3) var(--ease-spring),box-shadow var(--dur-3) var(--ease-out)}
.nav.scrolled .brand .mark,.nav.is-scrolled .brand .mark{transform:scale(.9)}
.nav-right .btn{min-height:40px;padding:0 14px;font-size:14px}
.nav-cta__short{display:none}
@media (max-width:600px){
  .nav-right .btn{display:none}
  .nav.scrolled .nav-right .btn,.nav.is-scrolled .nav-right .btn{display:inline-flex;min-height:38px;padding:0 12px;font-size:14px;animation:wt-rise-fade var(--dur-3) var(--ease-out) both}
  .nav-cta__long{display:none}
  .nav-cta__short{display:inline}
}
.nav-right .menu-btn{width:44px;height:44px;border:1px solid var(--hair-strong);color:var(--text)}
.nav-right .menu-btn svg line{transition:transform var(--dur-3) var(--ease-emph),opacity var(--dur-2);transform-origin:50% 50%}
.nav-right .menu-btn[aria-expanded="true"] svg line:first-child{transform:translateY(4px) rotate(45deg)}
.nav-right .menu-btn[aria-expanded="true"] svg line:last-child{transform:translateY(-4px) rotate(-45deg)}
/* over a dark hero (PHP attribute first, JS mirror second): transparent, inverse text */
body[data-nav="dark"] .nav:not(.scrolled):not(.is-scrolled),.nav.on-dark:not(.scrolled):not(.is-scrolled),body.home-page:not(.nav-solid) .nav:not(.scrolled){background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom-color:transparent;box-shadow:none}
body[data-nav="dark"] .nav:not(.scrolled) .brand,body[data-nav="dark"] .nav:not(.scrolled) .nav-links a,body[data-nav="dark"] .nav:not(.scrolled) .menu-btn,
.nav.on-dark:not(.scrolled) .brand,.nav.on-dark:not(.scrolled) .nav-links a,.nav.on-dark:not(.scrolled) .menu-btn{color:#fff}
body[data-nav="dark"] .nav:not(.scrolled) .nav-links a[aria-current="page"]::after,.nav.on-dark:not(.scrolled) .nav-links a[aria-current="page"]::after{background:var(--blue-2)}
body[data-nav="dark"] .nav:not(.scrolled) .menu-btn,.nav.on-dark:not(.scrolled) .menu-btn{border-color:rgba(255,255,255,.28)}
body[data-nav="dark"] .nav:not(.scrolled) .nav-right .btn,.nav.on-dark:not(.scrolled) .nav-right .btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.24);color:#fff;box-shadow:none}
body[data-nav="dark"] .nav:not(.scrolled) .nav-right .btn:hover,.nav.on-dark:not(.scrolled) .nav-right .btn:hover{background:#fff;color:var(--ink)}
/* scrolled while still over a dark section: ink glass */
.nav.on-dark.scrolled,.nav.on-dark.is-scrolled{background:var(--glass-ink);border-bottom-color:var(--hair-dark);box-shadow:none}
.nav.on-dark.scrolled .brand,.nav.on-dark.scrolled .nav-links a,.nav.on-dark.scrolled .menu-btn{color:#fff}
.nav.on-dark.scrolled .menu-btn{border-color:rgba(255,255,255,.28)}
.nav.on-dark.scrolled .nav-links a[aria-current="page"]::after{background:var(--blue-2)}
.nav.on-dark.scrolled .nav-right .btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.24);color:#fff}
.nav-spacer{height:var(--nav-h)}
body.home-page .nav-spacer,body[data-nav="dark"] .nav-spacer{display:none}
/* mobile panel */
body .mobile-panel{position:fixed;left:12px;right:12px;top:calc(var(--nav-h) + 8px);z-index:var(--z-panel);display:block;max-height:calc(100dvh - 90px);overflow-y:auto;background:var(--paper);border:var(--border);border-radius:var(--r-2xl);box-shadow:var(--shadow-float);padding:8px;
  opacity:0;visibility:hidden;transform:translateY(-8px) scale(.985);pointer-events:none;
  transition:opacity var(--dur-3) var(--ease-emph),transform var(--dur-3) var(--ease-emph),visibility var(--dur-3)}
body .mobile-panel.open{opacity:1;visibility:visible;transform:none;pointer-events:auto}
body:has(.mobile-panel.open)::after{content:"";position:fixed;inset:0;z-index:calc(var(--z-nav) - 1);background:rgba(3,14,26,.42);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:wt-fade var(--dur-3) ease-out both}
body .mobile-panel>a,body .mobile-panel .m-group>.m-head{display:flex;align-items:center;justify-content:space-between;min-height:56px;padding:12px 14px;border-radius:var(--r-md);font-size:var(--fs-h3);font-weight:600;color:var(--text);transition:background var(--dur-2) var(--ease-out)}
body .mobile-panel>a:hover,body .mobile-panel .m-group>.m-head:hover{background:var(--paper-2)}
body .mobile-panel>a::after{content:"\2192";font-size:16px;color:var(--text-faint)}
body .mobile-panel>a:last-child,body .mobile-panel .m-cta .btn{margin:8px 0 0;justify-content:center;background:var(--grad-accent);color:#fff;min-height:52px;border-radius:var(--r-md)}
body .mobile-panel>a:last-child::after{content:none}
body .mobile-panel .m-sub{padding:2px 6px 8px}
body .mobile-panel .m-sub a{display:block;padding:11px 14px;border-radius:var(--r-sm);font-size:15px;font-weight:500;color:var(--text-muted)}
body .mobile-panel .m-sub a:hover{background:var(--paper-2);color:var(--text)}
body .mobile-panel .m-group.open>.m-head{background:var(--paper-2)}
body .mobile-panel .m-group>.m-head .caret{transition:transform var(--dur-3) var(--ease-emph)}
html.js body .mobile-panel>*{opacity:0;transform:translateY(-6px);transition:opacity var(--dur-3) var(--ease-out),transform var(--dur-3) var(--ease-out);transition-delay:calc(var(--i,0) * 40ms)}
html.js body .mobile-panel.open>*{opacity:1;transform:none}
/* mega menu */
.nav-links .mega-panel{transform:translateY(-6px) scale(.98)}
.nav-links .has-mega:hover .mega-panel,.nav-links .has-mega:focus-within .mega-panel{transform:none}
body .mega-card{border-radius:var(--r-2xl);box-shadow:var(--shadow-float);border:var(--border)}
body .mega-intro{background:var(--grad-ink)}
body .mega-intro::after{content:none}
body .mega-grid a{border-radius:var(--r-md);transition:background var(--dur-2) var(--ease-out)}
body .mega-grid a:hover{box-shadow:none;background:var(--blue-tint);border-color:transparent;transform:none}
body .mega-ico{border-radius:var(--r-sm);width:36px;height:36px}
body .mega-txt b{font-size:14.5px}

/* ── 14. Footer ────────────────────────────────────────────── */
.site-footer.editorial{padding:var(--section-pad) 0 32px;border-top:1px solid transparent;border-image:var(--rule-accent) 1}
.site-footer .footer-big .slogan{font-size:clamp(30px,1.4rem + 3vw,60px);font-weight:700;letter-spacing:-.035em;line-height:1.05;margin:0}
.site-footer .footer-meta{margin-top:var(--s-7);padding-top:var(--s-6);border-top:1px solid var(--hair-dark)}
.site-footer .footer-col-big a,.site-footer .footer-col-big .muted{display:flex;align-items:center;min-height:36px;font-size:15px;line-height:1.4;padding:2px 0;color:var(--text-inverse-muted);width:fit-content;position:relative;background:linear-gradient(currentColor,currentColor) no-repeat 0 100%/0 1px;transition:color var(--dur-2) var(--ease-out),background-size var(--dur-2) var(--ease-out)}
.site-footer .footer-col-big a:hover{color:#fff;background-size:100% 1px}
.site-footer .footer-col-big .lbl{display:flex;align-items:center;margin-bottom:8px;color:var(--text-inverse-muted)}
.site-footer .footer-cities{columns:2;column-gap:24px}
.site-footer .footer-cities a{margin:0 0 4px;min-height:32px}
.site-footer .footer-base{margin-top:var(--s-7);padding-top:var(--s-5);border-top:1px solid var(--hair-dark)}
.site-footer .footer-legal{font-size:var(--fs-micro);color:var(--text-inverse-muted)}
.site-footer .footer-socials a{width:36px;height:36px;border-radius:50%;border:1px solid var(--hair-dark-strong);display:inline-grid;place-items:center;color:#fff;transition:background var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-spring)}
.site-footer .footer-socials a:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.4);transform:translateY(-2px)}
/* phone accordions for the long columns (desktop: always open, summary inert) */
.footer-acc{display:block}
.footer-acc>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;min-height:48px;margin-bottom:0}
.footer-acc>summary::-webkit-details-marker{display:none}
.footer-acc>summary::after{content:"+";font-size:18px;line-height:1;color:var(--text-inverse-muted);transition:transform var(--dur-3) var(--ease-emph)}
.footer-acc[open]>summary::after{transform:rotate(45deg)}
.footer-acc>summary .lbl{margin:0}
@media (min-width:768px){
  .footer-acc>summary{pointer-events:none;min-height:0;margin-bottom:8px}
  .footer-acc>summary::after{content:none}
  .footer-acc:not([open])>*:not(summary){display:block}
}
@media (max-width:767px){
  /* phones: sitemap beside products/contact, the two long columns as full-width accordions */
  body .site-footer.editorial .footer-meta{grid-template-columns:1fr 1fr;grid-auto-flow:dense;gap:20px 16px;margin-top:32px;padding-top:24px}
  body .site-footer.editorial .footer-meta>.footer-col-big:first-child{grid-column:1}
  body .site-footer.editorial .footer-meta .footer-col-big:has(.footer-acc),body .site-footer.editorial .footer-meta .footer-col-locations{grid-column:1/-1}
  body .site-footer.editorial .footer-col-stack{grid-column:2;display:grid;grid-template-columns:1fr;gap:20px;min-width:0}
  body .site-footer.editorial .footer-col-big a,body .site-footer.editorial .footer-col-big .muted{min-height:30px;font-size:14px}
  .site-footer .footer-big .slogan{font-size:clamp(26px,7vw,34px)}
  .site-footer.editorial{padding:44px 0 24px}
  .site-footer .footer-base{margin-top:32px}
  .footer-acc:not([open])>*:not(summary){display:none}
}

/* ── 15. Overlays ──────────────────────────────────────────── */
/* cookie bar */
body .wt-cookie{left:auto;right:24px;bottom:24px;width:min(360px,calc(100% - 48px));max-width:360px;background:var(--ink-2);border:var(--border-dark);border-radius:var(--r-lg);box-shadow:var(--shadow-float);padding:16px;gap:12px;font-family:var(--font-sans);z-index:var(--z-cookie)}
body .wt-cookie__text{font-size:var(--fs-small);line-height:1.5;color:var(--text-inverse-muted)}
body .wt-cookie__text a{color:var(--blue-2)}
body .wt-cookie__actions{gap:8px}
body .wt-cookie__btn{min-height:40px;padding:0 16px;font-size:14px;border-radius:var(--r-md)}
body .wt-cookie__btn--ghost{background:transparent;color:#fff;border-color:var(--hair-dark-strong)}
body .wt-cookie__btn--ghost:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.4);transform:none}
body .wt-cookie__btn--primary{background:var(--grad-accent);background-size:150% 100%;color:#fff;border-color:transparent;box-shadow:var(--shadow-glow-soft)}
body .wt-cookie__btn--primary:hover{background-position:100% 0;transform:none}
body:has(.wt-cookie.is-in:not([hidden])) a.wa-fab,body:has(.wt-cookie.is-in:not([hidden])) .wt-float{bottom:calc(24px + 150px)}
@media (min-width:769px){body:has(form.audit-panel) .wt-cookie{top:auto;bottom:24px;transform:translateY(140%)}body:has(form.audit-panel) .wt-cookie.is-in{transform:none}}
@media (max-width:768px){
  body .wt-cookie{left:0;right:0;bottom:0;width:auto;max-width:none;border-radius:var(--r-lg) var(--r-lg) 0 0;border-width:1px 0 0;padding:14px var(--gutter) calc(14px + env(safe-area-inset-bottom));display:grid;gap:10px;box-shadow:0 -12px 32px rgba(3,14,26,.3)}
  body .wt-cookie__text{font-size:var(--fs-micro);line-height:1.45}
  body .wt-cookie__actions{display:flex;gap:8px}
  body .wt-cookie__btn{flex:1 1 0;min-height:42px}
  body:has(.wt-cookie.is-in:not([hidden])) a.wa-fab,body:has(.wt-cookie.is-in:not([hidden])) .wt-float{bottom:20px}
}
/* sticky mobile bar: shown by motion.js after the hero, hidden while a form is on screen */
body .wt-sticky{z-index:var(--z-sticky);gap:8px;padding:10px var(--gutter) calc(10px + env(safe-area-inset-bottom));background:var(--glass);-webkit-backdrop-filter:blur(12px) saturate(150%);backdrop-filter:blur(12px) saturate(150%);border-top:var(--border);box-shadow:var(--shadow-float);transform:translateY(110%);transition:transform var(--dur-3) var(--ease-emph)}
body .wt-sticky.is-in{transform:none}
body .wt-sticky__btn{flex:1;min-height:44px;font-size:14px;padding:0 10px;border-radius:var(--r-md);background:var(--paper);color:var(--text);border-color:var(--hair-strong)}
body .wt-sticky__btn:active{transform:scale(.97)}
body .wt-sticky__btn--primary{flex:1.4;background:var(--grad-accent);background-size:150% 100%;color:#fff;border-color:transparent;box-shadow:var(--shadow-glow-soft)}
body .wt-sticky__btn--wa{background:var(--wa);color:#042313;border-color:var(--wa)}
@media (max-width:768px){body{padding-bottom:0}body.has-sticky{padding-bottom:72px}body.form-in-view .wt-sticky,body:has(.mobile-panel.open) .wt-sticky,body:has(#wt-cookie.is-in:not([hidden])) .wt-sticky,body.wt-exit-open .wt-sticky{transform:translateY(110%)}}
/* floating widget */
body a.wa-fab,body .wt-float{z-index:var(--z-float)}
body a.wa-fab,body .wt-float__toggle{width:52px;height:52px;box-shadow:var(--shadow-float);transition:transform var(--dur-2) var(--ease-spring),box-shadow var(--dur-2) var(--ease-out),bottom var(--dur-3) var(--ease-out)}
body a.wa-fab{transition:transform var(--dur-2) var(--ease-spring),bottom var(--dur-3) var(--ease-out)}
body a.wa-fab:hover,body .wt-float__toggle:hover{transform:translateY(-2px) scale(1.04)}
body:has(.wt-float) a.wa-fab{display:none}
body .wt-float__item{border-radius:var(--r-md);box-shadow:var(--shadow-md);min-height:44px}
html.js body .wt-float__menu .wt-float__item{opacity:0;transform:translateY(6px);transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out);transition-delay:calc(var(--i,0) * 40ms)}
html.js body .wt-float.open .wt-float__menu .wt-float__item{opacity:1;transform:none}
body.wt-exit-open .wt-float,body.wt-exit-open a.wa-fab{visibility:hidden}
/* exit popup */
body .wt-exit__backdrop{background:rgba(3,14,26,.6);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
body .wt-exit__card{max-width:520px;border-radius:var(--r-xl);box-shadow:var(--shadow-float),0 0 0 1px rgba(3,14,26,.06)}
body .wt-exit__head{background:var(--grad-ink);padding:30px 28px 22px}
body .wt-exit__head::after{content:none}
body .wt-exit__badge{background:transparent;color:var(--blue-2);padding:0;font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.08em}
body .wt-exit__badge svg{width:14px;height:14px}
body .wt-exit__head h3{font-size:var(--fs-h2);font-weight:700;letter-spacing:-.025em;line-height:1.1;margin:12px 0 10px}
body .wt-exit__head p{font-size:var(--fs-small)}
body .wt-exit__list{display:flex;flex-wrap:wrap;gap:6px 14px;padding:16px 28px 2px}
body .wt-exit__list li{padding-left:0;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}
body .wt-exit__list li::before{content:none}
body .wt-exit__list li+li::before{content:"\00b7";position:static;width:auto;height:auto;background:none;margin-right:14px;color:var(--text-faint)}
body .wt-exit__x{width:40px;height:40px;top:12px;right:12px;background:rgba(255,255,255,.12)}
@media (max-width:520px){body .wt-exit__head{padding:24px 20px 18px}body .wt-exit__head h3{font-size:24px}body .wt-exit__list{padding:14px 20px 0;flex-direction:column;gap:6px}body .wt-exit__list li+li::before{content:none;margin:0}}
/* booking embed placeholder */
.wt-booking__ph{display:grid;place-items:center;gap:12px;aspect-ratio:3/4;max-height:660px;border:var(--border);border-radius:var(--r-lg);background:var(--paper-2);text-align:center;padding:24px}
.wt-booking__ph p{color:var(--text-muted);margin:0;max-width:34ch}

/* ── 16. Motion ────────────────────────────────────────────── */
html.js [data-reveal]:not(.is-in){opacity:0;transform:translate3d(0,var(--rise),0)}
html.js [data-reveal="fade"]:not(.is-in){transform:none}
html.js [data-reveal="left"]:not(.is-in){transform:translate3d(calc(var(--rise) * -1.5),0,0)}
html.js [data-reveal="right"]:not(.is-in){transform:translate3d(calc(var(--rise) * 1.5),0,0)}
html.js [data-reveal="scale"]:not(.is-in){transform:scale(.97)}
html.js [data-reveal="blur"]:not(.is-in){transform:translate3d(0,var(--rise),0);filter:blur(8px)}
html.js [data-reveal="rise"]:not(.is-in){transform:translate3d(0,calc(var(--rise) * 2.4),0)}
html.js [data-reveal]{transition:opacity var(--dur-4) var(--ease-out),transform var(--dur-4) var(--ease-out),filter var(--dur-4) var(--ease-out);transition-delay:calc(var(--i,var(--reveal-i,0)) * var(--stagger))}
html.js [data-reveal].is-in{opacity:1;transform:none;filter:none}
/* legacy .reveal: visible unless motion.js upgrades it (it rewrites .reveal to data-reveal) */
.reveal,.reveal.in,.reveal.revealed{opacity:1;transform:none}
html.reduce-motion [data-reveal],html.reduce-motion .reveal,html:not(.js) [data-reveal]{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
@media print{[data-reveal],.reveal{opacity:1!important;transform:none!important}}
/* hero entrance: children fade/rise in order; the h1 only moves, never fades (LCP) */
html.js .hero-enter>*{opacity:0;transform:translate3d(0,14px,0)}
html.js .hero-enter>h1,html.js .hero-enter>.hero-title,html.js .hero-enter>.is-lcp,html.js .hero-enter>[data-lcp]{opacity:1;transform:translate3d(0,10px,0)}
html.js .hero-enter.is-in>*{opacity:1;transform:none;transition:opacity var(--dur-4) var(--ease-emph),transform var(--dur-4) var(--ease-emph);transition-delay:calc(var(--i,0) * 80ms)}
html.reduce-motion .hero-enter>*,html:not(.js) .hero-enter>*{opacity:1!important;transform:none!important}
@keyframes wt-rise{from{transform:translate3d(0,18px,0)}to{transform:none}}
@keyframes wt-rise-fade{from{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:none}}
@keyframes wt-fade{from{opacity:0}to{opacity:1}}
@keyframes wt-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
html.js .wt-enter-1{animation:wt-rise .9s var(--ease-out-expo) both}
html.js .wt-enter-2{animation:wt-rise-fade .8s var(--ease-out-expo) .12s both}
html.js .wt-enter-3{animation:wt-rise-fade .8s var(--ease-out-expo) .24s both}
html.js .wt-enter-4{animation:wt-rise-fade .8s var(--ease-out-expo) .36s both}
html.js .wt-enter-5{animation:wt-rise-fade .8s var(--ease-out-expo) .48s both}
/* progress rails */
.wt-progress,.progress-rail{position:fixed;left:0;top:0;z-index:calc(var(--z-nav) + 1);width:100%;height:2px;background:var(--grad-accent);transform-origin:0 50%;transform:scaleX(var(--progress,0));pointer-events:none}
/* cursor-lit tiles */
[data-glow]{--mx:50%;--my:50%}
[data-glow]::after{content:"";position:absolute;inset:0;z-index:2;border-radius:inherit;pointer-events:none;padding:1px;opacity:0;transition:opacity var(--dur-3) var(--ease-out);
  background:radial-gradient(240px circle at var(--mx) var(--my),rgba(125,213,253,.75),rgba(62,65,173,.25) 50%,transparent 70%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
[data-glow].is-lit::after{opacity:1}
/* magnetic buttons */
[data-magnetic]{transition:transform var(--dur-2) var(--ease-spring)}
[data-magnetic].is-magnet{transition:transform .08s linear}
.btn .arr{display:inline-block;transition:transform var(--dur-2) var(--ease-spring)}
.btn:hover .arr{transform:translateX(3px)}
.hero .btn-primary::after,.btn-primary::after{content:none}
/* video posters */
.vt-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}

/* ── 17. Density ───────────────────────────────────────────── */
@media (max-width:768px){
  .why-grid{display:grid;grid-template-columns:1fr;gap:10px}
  .why-card{flex-direction:row;align-items:flex-start;gap:14px;padding:14px}
  .why-card .wt-ico,.why-card .card__icon{margin:0}
  .service-links{display:flex;flex-wrap:wrap;gap:8px}
  .service-links a{padding:8px 12px;font-size:13px}
  .trust-strip .marks span{padding:6px 10px;font-size:11.5px}
}
@media (max-width:480px){.post-hero,.service-hero{padding:calc(var(--nav-h) + 32px) 0 36px}}

/* ── 18. Reduced motion and print ──────────────────────────── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .wt-progress,.progress-rail{display:none}
  .badge-live::before,.badge-live__dot{animation:none}
  .aurora::after{animation:none}
}
@media print{
  .nav,.wt-sticky,.wt-cookie,.wt-float,.wa-fab,.wt-exit,.wt-progress,.progress-rail,.mobile-panel{display:none!important}
  body{padding:0!important}
  .section.dark,.post-hero,.site-footer{background:#fff!important;color:#000!important}
}

/* ── 19. Final review fixes ────────────────────────────────── */
/* checkbox pills: the label-text reset must not hit the box itself */
.service-check-grid.pills span.pill__box,.pill>span.pill__box{display:inline-grid;place-items:center;width:18px;height:18px;flex:0 0 auto;border-radius:5px;border:1.5px solid var(--control-border);background:var(--paper);padding:0;color:#fff}
.service-check-grid.pills .pill:has(input:checked)>span.pill__box,.pill:has(input:checked)>span.pill__box{background:var(--blue);border-color:var(--blue)}
.pill>span.pill__box svg{width:11px;height:11px}
/* thumbnails inside row/work cards: no legacy negative margins, a tile while loading, titles on covers stay visible */
.card__media.blog-card-img,.audit-guide .blog-card-img,.card--row .blog-card-img{margin:0}
.card--row .card__media{background:var(--grad-sky)}
.card--row .card__media img{object-position:left center}
.card--work .cover-fallback::before{top:auto;bottom:-14px;right:16px}
/* result strip: ellipsis works only on a block box */
.card__result .eyebrow{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card__result .eyebrow::before{display:inline}
/* testimonials hug their quote instead of stretching to the tallest one */
/* (testimonial cards share one height per row; see section 20) */
@media (max-width:768px){
  .rail__track{padding-top:12px;padding-bottom:28px}
  .chip-row--scroll{scroll-padding-inline:var(--gutter)}
  .grid--phone-2>:last-child:nth-child(odd){grid-column:1/-1}
}
@media (min-width:769px){.grid-2>.card--row:last-child:nth-child(odd){grid-column:1/-1}}
/* FAQ: animate open as well as close, and leave no strip under closed questions */
body .faq-a{transition:grid-template-rows var(--dur-3) var(--ease-emph),visibility 0s linear var(--dur-3)}
body .faq-a.open,body .faq-item.open .faq-a{transition:grid-template-rows var(--dur-3) var(--ease-emph),visibility 0s}
.faq-a>*{transition:padding var(--dur-3) var(--ease-emph),opacity var(--dur-3) var(--ease-out)}
.faq-a:not(.open)>*{padding-top:0!important;padding-bottom:0!important}
/* mobile menu: the page does not scroll behind the scrim */
html:has(.mobile-panel.open),html:has(.mobile-panel.open) body{overflow:hidden}
body:has(.mobile-panel.open)::after{touch-action:none}
/* every text field shows the keyboard focus ring */
body .wt-exit__form input:focus-visible,body .wt-news__input:focus-visible,.audit-grid input:focus-visible,.audit-panel .input-wrap input:focus-visible,form[role="search"] input:focus-visible,.search-box input:focus-visible,.nf-search input:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
/* desktop mega menu: hover intent, so a diagonal move to the panel does not switch to the neighbouring menu */
@media (hover:hover) and (min-width:1001px){
  .nav-links .mega-panel{pointer-events:auto;transition:opacity .18s var(--ease-out) .12s,transform .18s var(--ease-out) .12s,visibility 0s linear .3s}
  .nav-links .has-mega:hover .mega-panel,.nav-links .has-mega:focus-within .mega-panel{transition:opacity .2s var(--ease-out) .12s,transform .2s var(--ease-out) .12s,visibility 0s linear .12s}
}
body.home-page .nav .nav-links a:hover{background:none}
/* footer: one hairline per boundary, one link rhythm, brand row centred */
.site-footer .footer-big{padding-bottom:0;border-bottom:0}
.site-footer .footer-meta{padding-bottom:0;border-bottom:0}
.site-footer .footer-col-big{gap:6px}
.site-footer .footer-acc>a{margin-bottom:6px}
body .site-footer .footer-cities a{margin:0 0 6px}
.site-footer .footer-brand-row{align-items:center;flex-wrap:nowrap}
.site-footer .footer-socials{align-self:center;margin:0}
/* split section heads keep their right-aligned action (beats home.css max-width) */
body .section-head.section-head--split{max-width:none}
/* hero proof rows: one look on every template */
.post-hero .hero-proof{display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--s-6);font-family:var(--font-sans);letter-spacing:0}
.post-hero .hero-proof>span:not(.sep){display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:var(--r-pill);border:1px solid var(--hair-dark-strong);font-size:13px;font-weight:600;color:var(--text-inverse)}
.post-hero .hero-proof .sep{display:none}
/* exit popup: a clean checklist and a heading that fits */
body .wt-exit__head h3{font-size:clamp(24px,1.1rem + 1vw,30px)}
body .wt-exit__list{flex-direction:column;flex-wrap:nowrap;gap:6px}
body .wt-exit__list li{position:relative;padding-left:16px}
body .wt-exit__list li::before,body .wt-exit__list li+li::before{content:"";position:absolute;left:0;top:.5em;width:6px;height:6px;margin:0;border-radius:50%;background:var(--blue)}

/* ── 20. Owner requests: one header look everywhere, equal-height boxes ── */
/* Header: at the top of a dark-hero page it stays transparent with white text (section 13).
   Once the page is scrolled it is always solid white with dark text, whatever section is underneath. */
html body .nav.scrolled,html body .nav.is-scrolled,html body.home-page .nav.scrolled,html body[data-nav="dark"] .nav.scrolled{
  background:#fff!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border-bottom:1px solid var(--hair)!important;box-shadow:0 1px 0 var(--hair),0 10px 28px -18px rgba(3,14,26,.22)!important}
html body .nav.scrolled .brand,html body .nav.scrolled .brand span{color:var(--text)!important}
html body .nav.scrolled .brand .mark{background:var(--ink)!important;box-shadow:inset 0 0 0 1px rgba(125,213,253,.18),0 6px 16px rgba(62,65,173,.28)!important}
html body .nav.scrolled .nav-links a{color:#374151!important;background:none!important}
html body .nav.scrolled .nav-links a:hover,html body .nav.scrolled .nav-links a[aria-current="page"]{color:var(--text)!important}
html body .nav.scrolled .nav-links a[aria-current="page"]::after{background:var(--blue)!important}
html body .nav.scrolled .menu-btn{color:var(--text)!important;border-color:var(--hair-strong)!important;background:transparent!important}
html body .nav.scrolled .menu-btn:hover{background:var(--ink)!important;color:#fff!important;border-color:var(--ink)!important}
html body .nav.scrolled .nav-right .btn{background:var(--ink)!important;border-color:var(--ink)!important;color:#fff!important;box-shadow:none!important}
html body .nav.scrolled .nav-right .btn:hover{background:var(--ink-2)!important;border-color:var(--ink-2)!important}
/* Boxes in the same row share one height; the testimonial author row sits on the bottom edge. */
.rail__track,.testi-track,body .testi-track{align-items:stretch!important}
.rail__track>*,.testi-track>*{height:auto!important;align-self:stretch!important}
.card--testimonial,.testi-card{display:flex;flex-direction:column}
.card--testimonial .who,.testi-card .who{margin-top:auto!important}
.card--testimonial .q,.card--testimonial blockquote,.testi-card .q{flex:0 0 auto}
