/* ==========================================================================
   TALENT EXPERT — Shared Design System
   Bridging Rural Talent with Business Growth
   Brand palette: Orange #F26F21 · Charcoal #1A1A1A · Grey #8C8C8C (no navy)
   ========================================================================== */

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root{
  /* ===== Official Talent Expert palette — Orange + Charcoal + Grey only ===== */
  /* Surfaces */
  --paper:#FFFFFF; --paper2:#F4F2F0; --mist:#F4F2F0; --orange-wash:#FDEDE1;
  /* Ink (charcoal / grey) */
  --ink:#1A1A1A; --ink2:#4A4A4A; --ink3:#8C8C8C; --hair:rgba(26,26,26,.10);
  /* Brand */
  --orange:#F26F21; --orange-soft:#F9A56A; --orange-t:rgba(242,111,33,.10); --orange-t2:rgba(242,111,33,.16);
  --charcoal:#1A1A1A; --charcoal-soft:#4A4A4A; --grey:#8C8C8C;
  /* legacy aliases → remapped to new palette so existing markup restyles automatically (NO navy) */
  --blue:#1A1A1A; --blue-soft:#4A4A4A; --blue-t:rgba(26,26,26,.07);
  --steel:#8C8C8C; --steel-t:rgba(140,140,140,.14);
  --green:#8C8C8C; --green-t:rgba(140,140,140,.12);
  --amber:#F26F21;
  /* Portal accents (set per <body data-portal>) */
  --accent:var(--orange); --accent-t:var(--orange-t); --accent-t2:var(--orange-t2);
  /* Glass */
  --glass:rgba(255,255,255,.55); --glass2:rgba(255,255,255,.72);
  /* Shadow */
  --sh-s:0 10px 30px -18px rgba(36,48,64,.28);
  --sh-m:0 26px 60px -34px rgba(36,48,64,.40);
  /* Radius / layout */
  --r:20px; --r-lg:28px; --r-xl:36px;
  --maxw:1340px; --ease:cubic-bezier(.22,.61,.36,1);
}
/* Portal theming */
body[data-portal="employer"]{--accent:var(--blue);--accent-t:var(--blue-t);--accent-t2:rgba(26,60,107,.18)}
body[data-portal="seeker"]{--accent:var(--orange);--accent-t:var(--orange-t);--accent-t2:var(--orange-t2)}

/* scroll-behavior:auto (NOT smooth): a native smooth-scroll to a #hash animates the
   browser THROUGH every pinned storytelling section (esp. on cross-page load before
   Lenis initialises) = rapid animation playback. All anchor nav goes through main.js's
   instant jump (Lenis immediate / instant window.scrollTo) instead. */
html{scroll-behavior:auto;font-size:16px;
  /* One flat milky-white canvas site-wide — a clean editorial surface with only the faintest
     warmth (no gradient, no beige/yellow cast). Cards/shadows/accents are unchanged. */
  background:#FCFCFA;
  /* Always reserve the scrollbar's space so locking scroll (overflow:hidden) when a modal opens
     never removes it — no horizontal shift of content or the fixed navbar, no scrollbar flicker.
     (macOS/iOS use overlay scrollbars with zero width, so this is a no-op there.) */
  scrollbar-gutter:stable}
body{font-family:'Inter',sans-serif;color:var(--ink2);background:transparent;line-height:1.72;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
/* Pin wrappers (JS injects them into pinned chapters). Structure:
     .te-fit-outer > .te-fit > [ heading (fixed) ] [ .te-scroll-win > .te-scroll-inner (scrolls) ]
   Nothing is ever scaled — for tall chapters the heading stays put and .te-scroll-inner translates
   up inside the clipped .te-scroll-win, revealing the lower content (Apple-style sticky heading). */
.te-fit-outer{ width:100%; flex-shrink:0; }
.te-fit{ width:100%; }
/* the fixed heading wrapper mimics .wrap so the title keeps its original centring + side padding */
.te-head{ width:100%; max-width:var(--maxw); margin:0 auto; padding:0 26px; box-sizing:border-box; }
.te-scroll-win{ width:100%; }                 /* JS sets a fixed height + overflow:hidden when the content is taller */
.te-scroll-inner{ width:100%; will-change:transform; }
/* Inside the scroll window the content grids centre themselves (their own max-width + margin:auto),
   so a wrapping .wrap must NOT re-constrain them asymmetrically — otherwise a grid wider than the
   wrap's content box gets pushed off-centre. Let the grids own the centring for symmetric margins. */
.te-scroll-inner > .wrap,
.te-scroll-inner .wrap{ max-width:none; width:100%; padding-left:0; padding-right:0; margin-left:auto; margin-right:auto; }

/* ---- NATIVE STICKY chapter pin (JS injects .te-stick and adds .te-sticky) ----
   The chapter rests via the browser's own position:sticky — handled on the compositor, so it
   eases to a stop and releases with NO snap (a JS pin freezes instantly, which is felt as a
   hard "fast lock"). The section becomes a plain tall block that gives the sticky child room;
   the child carries the chapter's real layout (flex + navbar-clearance padding, set inline). */
/* A chapter declared `collapse:true` carries less than a screen of content (JS adds .te-short):
   drop the forced full-screen height so the content isn't stranded in a sea of blank. Such a
   chapter also skips the pin — a pinned section always leaves its own leftover area on screen,
   so short + pinned inevitably means blank. Zero-blank and pinned are mutually exclusive here. */
.te-short{ min-height:0 !important; }

.te-sticky{ display:block !important; min-height:0 !important;
  padding-top:0 !important; padding-bottom:0 !important;
  /* the section is now 100vh + hold tall — its background moves to .te-stick (one screen)
     so a coloured chapter never paints a tall empty band behind the hold distance */
  background:none !important; }
.te-sticky > .te-stick{ position:-webkit-sticky; position:sticky; top:0;
  min-height:100vh; box-sizing:border-box; width:100%; }

/* Anti-FOUT: hold the page hidden until the web fonts have rendered, then show the fully
   styled page INSTANTLY (no fade) — so a hard refresh never shows the fallback font first
   (an inline <head> script toggles html.fonts-loading and removes it on document.fonts.ready,
   with a timeout fallback so the page always reveals even if fonts fail to load). The gate is
   kept to prevent a font flash, but it pops in with no fade-in animation. */
html.fonts-loading body{opacity:0}
body{transition:none}
h1,h2,h3,h4,h5{font-family:'Plus Jakarta Sans',sans-serif;color:var(--ink);line-height:1.08;font-weight:300;letter-spacing:-.01em;text-wrap:balance;hyphens:none;overflow-wrap:break-word}
a{text-decoration:none;color:inherit}
img,svg{max-width:100%;display:block}
ul{list-style:none}
strong,b{color:var(--ink);font-weight:600}
/* Typographic rhythm: comfortable measure, no orphans, no hyphenation */
p{text-wrap:pretty;hyphens:none;max-width:68ch}
li{text-wrap:pretty}
.lead{text-wrap:balance;hyphens:none}
.sec-head.center p,.sec-head.center .lead{margin-left:auto;margin-right:auto}
/* keep meaningful phrases intact */
.nb{white-space:nowrap}
::selection{background:var(--accent-t2);color:var(--ink)}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}

/* ---- Scroll-linked progress indicator (top hairline, fills with scroll) ---- */
.scroll-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:200;pointer-events:none}
.scroll-progress span{display:block;height:100%;transform-origin:0 50%;transform:scaleX(var(--sp,0));
  background:linear-gradient(90deg,var(--orange),var(--orange-soft))}

/* ---- Lenis smooth scroll (recommended housekeeping; inert on pages without Lenis) ---- */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto !important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
/* NB: no `.lenis-stopped{overflow:hidden}` — that hid the scrollbar whenever a
   custom dropdown pins the page (lenis.stop), shifting the layout ("shake").
   Lenis still blocks wheel/touch while stopped, so the page stays pinned. */

/* Global cursor spotlight: REMOVED site-wide (was .cursor-glow, injected by main.js). */

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 26px}
.section{padding:104px 0;position:relative}
.section.tight{padding:72px 0}
.section.alt{background:var(--paper2)}
.eyebrow{font-family:'Inter';font-size:12.5px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:11px;margin-bottom:20px}
.eyebrow::before{content:"";width:24px;height:1.5px;background:var(--accent);border-radius:2px}
/* Global heading scale — Business Owners hero is the master reference: confident Fraunces
   (weight 400 base, 600 emphasis), editorial size (not oversized/thin), balanced wrapping. */
.display{font-size:clamp(1.95rem,4.6vw,3.7rem);font-weight:600;line-height:1.07;letter-spacing:-.022em;color:var(--ink);overflow-wrap:break-word;text-wrap:balance}
.display em{font-style:normal;font-weight:800;color:var(--ink)}
h2.title{font-size:clamp(1.6rem,3.4vw,2.8rem);font-weight:600;line-height:1.12;letter-spacing:-.017em;overflow-wrap:break-word;text-wrap:balance}
h2.title b{font-weight:800;color:var(--ink)}
h2.title em{font-style:italic;font-weight:400;color:var(--ink)}
.lead{font-size:clamp(1.02rem,1.4vw,1.18rem);color:var(--ink2);max-width:58ch}
.sec-head{max-width:760px;margin-bottom:52px}
.sec-head.center{margin-left:auto;margin-right:auto;text-align:center}
.sec-head.center .eyebrow{justify-content:center}
.sec-head.center .lead{margin-left:auto;margin-right:auto}
/* form-intro line on ONE centred line: widen the sec-head + lift the 58ch cap (wraps on mobile).
   margin-top adds clear breathing room between the heading and this intro line. */
.sec-head.center .lead.lead-wide{ max-width:none; margin-top:26px; }
@media(min-width:901px){
  body[data-page="employers"] #contact .sec-head,
  body[data-page="job-seekers"] #register .sec-head{ max-width:1040px; }
  .sec-head.center .lead.lead-wide{ white-space:nowrap; font-size:1rem; }
}
.mark{position:relative;white-space:nowrap;color:var(--accent);font-weight:500}
.mark svg{position:absolute;left:-2%;bottom:-10px;width:104%;height:14px;stroke:var(--accent);fill:none;stroke-width:3;stroke-linecap:round;stroke-dasharray:400;stroke-dashoffset:400;animation:draw 1.2s .5s var(--ease) forwards}
@keyframes draw{to{stroke-dashoffset:0}}

/* Icon system */
.ic{width:1em;height:1em;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;display:block}
.chip{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;font-size:28px;flex:none}
.chip.o{background:var(--orange-t);color:var(--orange)}
.chip.b{background:var(--blue-t);color:var(--blue)}
.chip.g{background:var(--steel-t);color:var(--steel)}
.chip.a{background:rgba(207,131,49,.14);color:var(--amber)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:9px;font-weight:600;font-size:.96rem;padding:14px 26px;border-radius:100px;cursor:pointer;transition:transform .4s var(--ease),box-shadow .4s var(--ease),background .3s;border:1px solid transparent;font-family:inherit}
.btn .ic{width:18px;height:18px;transition:transform .4s var(--ease)}
.btn:hover .ic{transform:translateX(4px)}
.btn-orange{background:var(--orange);color:#fff;box-shadow:0 14px 30px -14px rgba(232,119,34,.6)}
.btn-orange:hover{transform:translateY(-2px);box-shadow:0 20px 40px -14px rgba(232,119,34,.7)}
.btn-blue{background:var(--blue);color:#fff;box-shadow:0 14px 30px -14px rgba(26,60,107,.6)}
.btn-blue:hover{transform:translateY(-2px);box-shadow:0 20px 40px -14px rgba(26,60,107,.7)}
.btn-accent{background:var(--accent);color:#fff;box-shadow:0 14px 30px -14px rgba(0,0,0,.35)}
.btn-accent:hover{transform:translateY(-2px)}
.btn-ghost{background:var(--glass);color:var(--ink);border-color:var(--hair);backdrop-filter:blur(10px)}
.btn-ghost:hover{transform:translateY(-2px);background:var(--glass2)}
.btn-white{background:#fff;color:var(--ink)}
.btn-white:hover{transform:translateY(-2px)}
.btn.lg{padding:16px 30px;font-size:1rem}

/* ============ NAV + MEGA MENU ============ */
/* Full-width frosted "veil" pinned flush to the very top of the viewport, sitting just
   BEHIND the floating pill (z:99 < nav z:100). It seals the open band above/around the
   pill so page content fades out as it approaches the top instead of blinking through the
   gap. Masked to fade to nothing at its lower edge (no hard seam). Pure CSS → every page. */
body::before{content:"";position:fixed;top:0;left:0;right:0;height:96px;z-index:99;pointer-events:none;
  background:linear-gradient(to bottom,rgba(252,251,249,.82) 0%,rgba(252,251,249,.58) 44%,rgba(252,251,249,0) 100%);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  -webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 54%,transparent 100%);
  mask-image:linear-gradient(to bottom,#000 0%,#000 54%,transparent 100%)}
/* Centred on the pixel grid via auto margins (NOT translateX(-50%), whose half-width offset
   lands on a fractional pixel and makes the pill's backdrop-filter bleed/flicker on scroll). */
header.nav{position:fixed;top:16px;left:0;right:0;margin-left:auto;margin-right:auto;z-index:100;width:calc(100% - 34px);max-width:var(--maxw);transition:top .4s var(--ease)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 10px 20px;border-radius:100px;background:var(--glass);backdrop-filter:blur(18px) saturate(1.4);border:1px solid rgba(255,255,255,.6);box-shadow:var(--sh-s)}
.nav.scrolled .nav-inner{background:var(--glass2)}
.nav-logo img{height:40px;width:auto}
.nav-menu{display:flex;gap:2px;align-items:center}
.nav-item{position:relative}
.nav-item>a{display:inline-flex;align-items:center;gap:6px;font-size:.92rem;font-weight:600;color:var(--ink2);padding:9px 15px;border-radius:100px;transition:.3s;cursor:pointer}
.nav-item>a:hover,.nav-item>a[aria-current="page"]{color:var(--ink);background:rgba(255,255,255,.6)}
.nav-item>a .caret{width:13px;height:13px;transition:transform .3s}
.nav-item:hover>a .caret{transform:rotate(180deg)}
/* Mega panel */
.mega{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%) translateY(8px);min-width:520px;background:#fdfcfa;border:1px solid var(--hair);border-radius:var(--r-lg);box-shadow:var(--sh-m);padding:18px;opacity:0;visibility:hidden;transition:none;display:grid;grid-template-columns:1fr 1fr;gap:8px}
/* invisible hover bridge — fills the gap between the nav link and the panel so moving
   the cursor down into the menu never breaks :hover (the panel stops vanishing mid-reach) */
.mega::before{content:"";position:absolute;left:0;right:0;top:-18px;height:18px}
/* fade + rise IN on hover; close INSTANTLY on leave (transition:none in the base rule)
   so switching between nav items never shows two panels at once */
.nav-item:hover .mega,.nav-item:focus-within .mega{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);transition:opacity .22s var(--ease),transform .22s var(--ease)}
/* after an in-page jump the panel is force-dismissed (JS adds this) until the pointer leaves the
   nav item and returns — beats the :hover/:focus-within open rule by coming later at equal specificity */
.nav-item.mega-dismissed .mega{opacity:0;visibility:hidden;transform:translateX(-50%) translateY(8px);transition:none}
.mega-link{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:16px;transition:background .25s}
.mega-link:hover{background:var(--accent-t)}
.mega-link .chip{width:40px;height:40px;font-size:20px;border-radius:12px}
.mega-link h5{font-family:'Inter';font-size:.92rem;font-weight:700;color:var(--ink);margin-bottom:2px}
.mega-link p{font-size:.8rem;color:var(--ink3);line-height:1.4}
.mega.single{grid-template-columns:1fr;min-width:300px}
.nav-cta{display:flex;align-items:center;gap:8px}
.nav-cta .btn{padding:11px 20px;font-size:.9rem}
.burger{display:none;width:44px;height:44px;border-radius:100px;background:rgba(255,255,255,.6);border:none;cursor:pointer;place-items:center}
.burger span{display:block;width:20px;height:2px;background:var(--ink);border-radius:2px;position:relative}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:20px;height:2px;background:var(--ink);border-radius:2px}
.burger span::before{top:-6px}.burger span::after{top:6px}
/* Mobile nav */
.mnav{position:fixed;inset:0;z-index:120;background:rgba(252,251,249,.98);backdrop-filter:blur(20px);display:flex;flex-direction:column;padding:90px 26px calc(34px + env(safe-area-inset-bottom));gap:0;opacity:0;pointer-events:none;transition:.4s;overflow-y:auto}
.mnav.open{opacity:1;pointer-events:auto}
/* Top-level items: larger + semibold, separated by a hairline */
.mnav>a{font-family:'Plus Jakarta Sans',sans-serif;font-size:1.34rem;font-weight:600;color:var(--ink);padding:13px 2px;border-bottom:1px solid var(--hair);line-height:1.15}
/* A parent that is immediately followed by its children flows straight into them — no divider */
.mnav>a:has(+ a.sub){border-bottom:none;padding-bottom:5px}
/* Child (submenu) items: smaller, medium weight, indented, with a nesting rail so they read
   as children of the parent above; tight, consistent spacing between them. */
.mnav a.sub{font-family:'Inter',sans-serif;font-size:1.02rem;font-weight:500;color:var(--ink2);padding:8px 2px 8px 30px;border-bottom:none;position:relative;line-height:1.2}
.mnav a.sub::before{content:"";position:absolute;left:12px;top:6px;bottom:6px;width:2px;border-radius:2px;background:var(--orange-t2)}
/* The last child in a group closes it with the hairline divider */
.mnav a.sub:has(+ a:not(.sub)){border-bottom:1px solid var(--hair);padding-bottom:13px}
/* Bottom CTA buttons — two balanced pills. Scoping the base rule to .mnav>a already frees
   these (they're inside .m-cta), but pin the button styling explicitly so the labels always
   show and both stay equal height / width across 320–430px. */
.mnav .m-cta{display:flex;gap:12px;justify-content:center;align-items:stretch;margin-top:28px;padding-top:24px;border-top:1px solid var(--hair)}
.mnav .m-cta .btn{flex:1 1 0;min-width:0;border-bottom:none;min-height:54px;padding:15px 12px;font-size:clamp(.85rem,3.6vw,1rem);line-height:1;white-space:nowrap;text-align:center;justify-content:center;color:#fff}
.mnav-close{position:absolute;top:26px;right:26px;display:grid}

/* ============ REVEAL ============ */
/* Fade-in-on-scroll removed site-wide: reveal elements are always fully visible, no fade,
   no slide-up. (The JS IntersectionObserver still toggles .in but it has no visual effect now.) */
.reveal,.reveal.in{opacity:1;transform:none;transition:none}

/* ============ HERO ============ */
.hero{padding:150px 0 90px;position:relative;overflow:hidden;background:radial-gradient(1200px 600px at 78% 8%,var(--mist),transparent 60%),radial-gradient(900px 500px at 8% 90%,var(--green-t),transparent 60%)}
.hero.employer{background:radial-gradient(1200px 600px at 80% 0%,var(--blue-t),transparent 62%),radial-gradient(800px 500px at 5% 100%,var(--mist),transparent 60%)}
.hero.seeker{background:radial-gradient(1200px 600px at 80% 0%,var(--orange-t),transparent 62%),radial-gradient(800px 500px at 5% 100%,var(--green-t),transparent 60%)}
/* Legal pages (Privacy / Terms): one flat milky-white canvas top to bottom — drop the hero's
   tinted gradient so the whole page is uniform #FCFCFA. */
body[data-page="legal"] .hero{ background:#FCFCFA; }
body[data-page="legal"] .section.alt{ background:#FCFCFA; }
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:50px;align-items:center}
.hero-badge{display:inline-flex;align-items:center;gap:8px;font-size:.8rem;font-weight:700;letter-spacing:.03em;color:var(--blue);background:var(--glass2);border:1px solid var(--hair);padding:7px 15px;border-radius:100px;margin-bottom:24px;backdrop-filter:blur(8px);max-width:100%}
.hero-badge .ic{width:15px;height:15px;flex:none}
.hero h1{margin-bottom:22px}
.hero .sub{font-size:1.18rem;max-width:48ch;margin-bottom:14px}
.rhythm{font-family:'Plus Jakarta Sans';font-style:italic;font-size:1.25rem;color:var(--ink);margin-bottom:30px}
.rhythm span{color:var(--accent)}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}
/* (bg-doodle backgrounds removed site-wide — keeping only the footer illustration + soft gradients) */
.s-o{stroke:var(--orange)} .s-b{stroke:var(--blue)} .s-g{stroke:var(--green)} .s-a{stroke:var(--amber)}
.section>.wrap,.hero>.wrap{position:relative;z-index:2}

/* ============ TRUST / STAT BAR ============ */
.stat-dash{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.stat-card{position:relative;padding:24px;border-radius:var(--r);background:var(--glass2);border:1px solid rgba(255,255,255,.7);box-shadow:var(--sh-s);backdrop-filter:blur(14px);overflow:hidden;transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.stat-card:hover{transform:translateY(-4px);box-shadow:var(--sh-m)}
.stat-badge{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;margin-bottom:16px;transition:transform .5s var(--ease)}
.stat-card:hover .stat-badge{transform:scale(1.06)}
.stat-badge .ic{width:28px;height:28px}
.stat-num{font-family:'Plus Jakarta Sans';font-size:2.3rem;font-weight:500;color:var(--ink);line-height:1}
.stat-lab{font-size:.86rem;color:var(--ink2);margin-top:4px}
.stat-card.c-o .stat-badge{background:var(--orange-t)} .stat-card.c-o .stat-badge .ic{color:var(--orange)}
.stat-card.c-b .stat-badge{background:var(--blue-t)} .stat-card.c-b .stat-badge .ic{color:var(--blue)}
.stat-card.c-g .stat-badge{background:var(--green-t)} .stat-card.c-g .stat-badge .ic{color:var(--green)}
.stat-card.c-a .stat-badge{background:rgba(232,168,58,.16)} .stat-card.c-a .stat-badge .ic{color:var(--amber)}

/* ============ GENERIC CARD GRID ============ */
.card{background:var(--glass2);border:1px solid rgba(255,255,255,.7);border-radius:var(--r-lg);box-shadow:var(--sh-s);backdrop-filter:blur(12px);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.card:hover{transform:translateY(-6px);box-shadow:var(--sh-m)}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.feat-card{padding:32px 28px}
.feat-card h3{font-size:1.35rem;font-weight:500;margin:16px 0 8px}
.feat-card p{font-size:.96rem}
.feat-card .num{font-family:'Plus Jakarta Sans';font-size:.95rem;color:var(--accent);font-weight:500;letter-spacing:.05em;margin-bottom:10px}

/* Who-we-are two column */
.split{display:grid;grid-template-columns:1fr 1.15fr;gap:56px;align-items:start}
.split .body p{margin-bottom:16px}

/* DDD flow (Discover Develop Sustain) */
.ddd{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;position:relative}
.ddd .card{padding:32px 28px;text-align:center}
.ddd .chip{margin:0 auto 16px}
.ddd h3{font-size:1.4rem;font-weight:500;margin-bottom:8px}
.ddd-arrow{position:absolute;top:56px;font-size:1.4rem;color:var(--ink3);z-index:3}

/* ============ AUDIENCE TILES ============ */
.aud-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.aud-card{position:relative;padding:44px 40px;border-radius:var(--r-lg);background:var(--glass);border:1px solid rgba(255,255,255,.6);backdrop-filter:blur(12px);overflow:hidden;transition:transform .5s var(--ease),box-shadow .5s var(--ease);display:flex;flex-direction:column}
.aud-card::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent,var(--tint,var(--blue-t)));opacity:0;transition:.5s}
.aud-card:hover{transform:translateY(-6px);box-shadow:var(--sh-m)}
.aud-card:hover::before{opacity:1}
.aud-card.biz{--tint:var(--blue-t)} .aud-card.job{--tint:var(--orange-t)}
.aud-card h3{font-size:1.7rem;font-weight:400;margin:18px 0 10px}
.aud-card p{margin-bottom:22px}
.aud-card .checks{display:flex;flex-direction:column;gap:8px;margin-top:auto}
.aud-card .checks span{display:flex;align-items:center;gap:9px;font-size:.9rem;color:var(--ink2)}
.aud-card .checks .ic{width:17px;height:17px;flex:none}
.aud-card.biz .checks .ic{color:var(--blue)} .aud-card.job .checks .ic{color:var(--orange)}

/* ============ VALUES ROADMAP ============ */
.road{position:relative;padding:40px 0}
.road-line{position:absolute;top:50%;left:0;width:100%;height:40px;transform:translateY(-50%);overflow:visible;z-index:0}
.road-track{fill:none;stroke:var(--hair);stroke-width:2.5;stroke-dasharray:6 7}
.road-row{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;position:relative;z-index:1;min-height:560px}
.road-item{position:relative;height:560px}
.road-card{position:absolute;left:0;right:0;background:var(--glass2);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.7);border-radius:var(--r-lg);box-shadow:var(--sh-s);padding:20px 15px;text-align:center;transition:transform .4s var(--ease),box-shadow .4s var(--ease);z-index:2}
.road-item.up .road-card{bottom:calc(50% + 52px)}
.road-item.down .road-card{top:calc(50% + 52px)}
.road-card:hover,.road-card.open{box-shadow:var(--sh-m);z-index:5}
.road-card .chip{width:46px;height:46px;font-size:22px;margin:0 auto 12px}
.road-card h4{font-size:.98rem;font-weight:600;line-height:1.25}
.road-desc{max-height:0;opacity:0;overflow:hidden;transition:max-height .45s var(--ease),opacity .4s var(--ease),margin .45s var(--ease)}
.road-card:hover .road-desc,.road-card.open .road-desc{max-height:200px;opacity:1;margin-top:10px}
.road-desc p{font-size:.82rem;color:var(--ink2);line-height:1.5}
.road-stem{position:absolute;left:50%;width:2px;background:var(--hair);transform:translateX(-50%);height:44px}
.road-item.up .road-stem{bottom:calc(50% + 8px)}
.road-item.down .road-stem{top:calc(50% + 8px)}
.road-node{position:absolute;left:50%;top:50%;width:16px;height:16px;border-radius:50%;background:var(--paper2);border:3px solid var(--accent);transform:translate(-50%,-50%);box-shadow:0 0 0 4px var(--paper2);transition:transform .4s var(--ease),background .4s;z-index:3}
.road-item:hover .road-node,.road-item.open .road-node{transform:translate(-50%,-50%) scale(1.25);background:var(--accent)}

/* ============ SERVICES RADIAL ============ */
.svc-float{position:relative;min-height:520px;display:grid;place-items:center}
.svc-center{max-width:480px;text-align:center;position:relative;z-index:3}
.svc-orbit{position:absolute;inset:0;z-index:2;pointer-events:none}
.svc-node{position:absolute;display:flex;flex-direction:column;align-items:center;gap:10px;width:150px;text-align:center;pointer-events:auto;animation:svcFloat var(--dur,6s) ease-in-out infinite}
.svc-node .chip{width:64px;height:64px;font-size:30px;border-radius:20px;box-shadow:var(--sh-s);transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.svc-node:hover .chip{transform:scale(1.12);box-shadow:var(--sh-m)}
.svc-lbl{font-size:.9rem;font-weight:600;color:var(--ink);line-height:1.3}
.svc-node.n1{top:4%;left:6%} .svc-node.n2{top:0;right:6%}
.svc-node.n3{top:42%;left:-1%} .svc-node.n4{top:42%;right:-1%}
.svc-node.n5{bottom:2%;left:12%} .svc-node.n6{bottom:0;right:12%}
@keyframes svcFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}

/* ============ PROBLEM / SOLUTION ============ */
.prob-list{display:grid;gap:14px;max-width:900px;margin:0 auto}
.prob{display:flex;align-items:center;gap:18px;padding:20px 24px;border-radius:var(--r);background:var(--glass2);border:1px solid rgba(255,255,255,.7);backdrop-filter:blur(10px);box-shadow:var(--sh-s);cursor:default;transition:transform .4s var(--ease)}
.prob:hover{transform:translateX(6px)}
.prob-state{width:40px;height:40px;border-radius:12px;flex:none;display:grid;place-items:center;position:relative;background:var(--orange-t);transition:background .5s}
.prob-state .ic{width:20px;height:20px;position:absolute;transition:.45s var(--ease)}
.prob-state .x{color:var(--orange);opacity:1}
.prob-state .v{color:var(--green);opacity:0;transform:scale(.4)}
.prob:hover .prob-state{background:var(--green-t)}
.prob:hover .prob-state .x{opacity:0;transform:scale(.4)}
.prob:hover .prob-state .v{opacity:1;transform:scale(1)}
.prob-txt{flex:1}
.prob-txt .q{color:var(--ink);font-weight:600;transition:.4s}
.prob-txt .a{font-size:.9rem;max-height:0;opacity:0;overflow:hidden;transition:.5s var(--ease)}
.prob:hover .a{max-height:80px;opacity:1;margin-top:4px}
.prob .tag{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);transition:.4s;flex:none}
.prob:hover .tag{color:var(--green)}

/* ============ TIMELINE (process / journey) ============ */
.timeline{max-width:900px;margin:0 auto;position:relative}
.timeline::before{content:"";position:absolute;left:31px;top:20px;bottom:20px;width:2px;background:linear-gradient(var(--orange),var(--green));opacity:.35}
.tl-step{position:relative;display:grid;grid-template-columns:64px 1fr;gap:24px;padding:16px 0}
.tl-num{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;font-family:'Plus Jakarta Sans';font-size:1.5rem;font-weight:500;color:#fff;background:var(--accent);box-shadow:var(--sh-s);z-index:1;position:relative}
.tl-body{padding-top:6px}
.tl-body h3{font-size:1.3rem;font-weight:500;margin-bottom:6px}
.tl-body p{font-size:.98rem}
.tl-step.reveal{transform:translateY(24px)}

/* ============ HIRING MODELS SWITCH ============ */
.hm-switch{display:inline-flex;gap:4px;padding:5px;border-radius:100px;background:var(--glass2);border:1px solid var(--hair);margin:0 auto 32px;backdrop-filter:blur(10px)}
.hm-switch button{border:none;background:transparent;font-family:'Inter';font-weight:600;font-size:.92rem;color:var(--ink2);padding:11px 24px;border-radius:100px;cursor:pointer;transition:.35s}
.hm-switch button.on{background:var(--accent);color:#fff}
.hm-panel{max-width:900px;margin:0 auto;position:relative;display:grid}
.hm-face{grid-area:1/1;padding:40px;border-radius:var(--r-lg);background:var(--glass2);border:1px solid rgba(255,255,255,.7);backdrop-filter:blur(14px);box-shadow:var(--sh-m);opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .45s var(--ease),transform .45s var(--ease);visibility:hidden}
.hm-face.on{opacity:1;transform:none;pointer-events:auto;visibility:visible;position:relative}
.hm-face .chip{margin-bottom:18px}
.hm-face h3{font-size:1.7rem;font-weight:400;margin-bottom:6px}
.hm-face .tagline{font-family:'Plus Jakarta Sans';font-style:italic;color:var(--accent);margin-bottom:16px}
.hm-face ul{display:grid;gap:12px;margin-top:20px}
.hm-face li{display:flex;gap:12px;align-items:flex-start;font-size:.96rem}
.hm-face li .ic{width:18px;height:18px;color:var(--green);flex:none;margin-top:5px}
.hm-face li b{display:block}
.hm-best{margin-top:22px;font-family:'Plus Jakarta Sans';font-style:italic;color:var(--ink2);font-size:.95rem}

/* Two-column comparison (side by side, no switch) */
/* ============ HIRING MODELS — premium two-panel comparison ============
   Each panel carries its own accent identity via --m: Model 01 = teal/blue,
   Model 02 = brand orange. Everything inside pulls from --m so the panel reads
   as one cohesive, vibrant unit — chip, timeline, hovers, and Best-for callout. */
/* Two hiring-model columns must be EQUAL height so the "Best for" callouts align on one baseline
   (align-items:stretch), never centred independently. Each column is a flex column and the callout
   is pushed to the bottom (margin-top:auto). */
.compare{display:grid;grid-template-columns:1fr 1fr;gap:26px;align-items:stretch}
.compare .col.a{ --m:#333333; --m2:#616161; --m-t:rgba(26,26,26,.045); --m-t2:rgba(26,26,26,.08); --m-bd:rgba(26,26,26,.14); --m-glow:rgba(26,26,26,.26); }
.compare .col.b{ --m:#F26F21; --m2:#F9A56A; --m-t:rgba(242,111,33,.07); --m-t2:rgba(242,111,33,.14); --m-bd:rgba(242,111,33,.22); --m-glow:rgba(242,111,33,.34); }
.compare .col{ position:relative; display:flex; flex-direction:column; padding:38px 34px 34px; border-radius:22px; overflow:hidden;
  background:linear-gradient(180deg,var(--m-t),#ffffff 42%);
  border:1px solid var(--m-bd);
  box-shadow:0 30px 60px -42px var(--m-glow), 0 6px 22px -18px rgba(20,24,31,.22);
  transition:transform .3s var(--ease), box-shadow .3s var(--ease); }
@media(hover:hover){ .compare .col:hover{ transform:translateY(-4px); box-shadow:0 46px 84px -46px var(--m-glow), 0 12px 30px -20px rgba(20,24,31,.28); } }
/* gradient identity bar along the top edge + faint oversized model number */
.compare .col::before{ content:""; position:absolute; inset:0 0 auto 0; height:4px; background:linear-gradient(90deg,var(--m),var(--m2)); }
.compare .col-no{ position:absolute; top:16px; right:22px; font-family:'Plus Jakarta Sans',sans-serif; font-weight:800;
  font-size:3.4rem; line-height:1; letter-spacing:-.03em; color:var(--m); opacity:.14; pointer-events:none; }
.compare .col .chip{ background:var(--m-t2); color:var(--m); box-shadow:0 8px 18px -8px var(--m-glow); }
/* typography hierarchy */
.compare h3{ font-size:1.4rem; font-weight:700; color:var(--ink); margin-bottom:5px; letter-spacing:-.012em; line-height:1.2; }
.compare .tagline{ font-family:'Plus Jakarta Sans',sans-serif; font-style:normal; font-weight:600; color:var(--m); margin-bottom:14px; font-size:.98rem; }
.compare .col > p:not(.best){ color:var(--ink2); line-height:1.62; font-size:.96rem; }
/* feature list → a vibrant accent timeline (connecting line + filled nodes) */
.compare ul{ position:relative; display:grid; gap:4px; margin-top:22px; padding:0; list-style:none; }
.compare ul::before{ content:""; position:absolute; left:15px; top:16px; bottom:16px; width:2.5px; border-radius:3px;
  background:linear-gradient(180deg,var(--m),var(--m2) 55%,transparent); opacity:.45; }
.compare li{ position:relative; display:block; padding:11px 12px 11px 46px; border-radius:13px; font-size:.92rem;
  transition:background .26s var(--ease), transform .26s var(--ease); }
.compare li .ic{ position:absolute; left:2px; top:10px; width:30px; height:30px; padding:7px; border-radius:50%; margin:0;
  color:#fff; background:linear-gradient(140deg,var(--m),var(--m2)); box-shadow:0 6px 14px -4px var(--m-glow);
  transition:transform .26s var(--btr), box-shadow .26s var(--ease); }
.compare li b{ color:var(--ink); font-weight:700; font-size:.98rem; letter-spacing:-.005em; }
.compare li span{ color:var(--ink2); line-height:1.55; }
@media(hover:hover){
  .compare li:hover{ background:var(--m-t); transform:translateX(5px); }
  .compare li:hover .ic{ transform:scale(1.14); box-shadow:0 10px 20px -4px var(--m-glow); }
}
/* Best-for → premium accent callout */
.compare .best{ display:flex; gap:13px; align-items:flex-start; margin-top:auto; padding:16px 18px; border-radius:16px;
  background:linear-gradient(120deg,var(--m-t2),var(--m-t)); border:1px solid var(--m-bd); border-left:4px solid var(--m);
  box-shadow:0 12px 26px -20px var(--m-glow); font-style:normal; font-family:'Plus Jakarta Sans',sans-serif;
  font-weight:600; color:var(--ink); font-size:1rem; line-height:1.5; }
.compare .best .best-ic{ flex:none; width:24px; height:24px; color:var(--m); margin-top:1px; }
.compare .best strong{ color:var(--m); font-weight:800; }
/* let the two cards use a little more of the side space (subtle desktop breakout) */
@media(min-width:901px){ .compare{ width:calc(100% + 44px); margin-left:-22px; margin-right:-22px; } }

/* ============ INDUSTRIES ============ */
.ind-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.ind-card{padding:28px 24px;text-align:left}
.ind-card .chip{margin-bottom:16px}
.ind-card h3{font-size:1.15rem;font-weight:600;font-family:'Inter';margin-bottom:8px}
.ind-card p{font-size:.88rem;color:var(--ink2)}
.marquee{position:relative;overflow:hidden;padding:14px 0;-webkit-mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee-row{display:flex;gap:16px;width:max-content;animation:scroll 34s linear infinite}
.marquee:hover .marquee-row{animation-play-state:paused}
@keyframes scroll{to{transform:translateX(-50%)}}
.ind-chip{display:flex;align-items:center;gap:12px;padding:16px 26px;border-radius:100px;background:var(--glass2);border:1px solid rgba(255,255,255,.7);backdrop-filter:blur(10px);box-shadow:var(--sh-s);white-space:nowrap;transition:transform .35s var(--ease),background .35s}
.ind-chip:hover{transform:scale(1.05);background:#fff}
.ind-chip .ic{width:24px;height:24px}
.ind-chip span{font-weight:600;color:var(--ink)}

/* ============ DATA TABLE (services / job categories) ============ */
.tbl-wrap{overflow-x:auto;border-radius:var(--r-lg);box-shadow:var(--sh-s);border:1px solid var(--hair)}
table.data{width:100%;border-collapse:collapse;min-width:640px;background:var(--glass2);backdrop-filter:blur(10px)}
table.data th{background:var(--blue);color:#fff;font-family:'Inter';font-weight:600;font-size:.86rem;text-align:left;padding:16px 20px;letter-spacing:.02em}
table.data td{padding:16px 20px;border-top:1px solid var(--hair);font-size:.92rem;vertical-align:top}
table.data tr:nth-child(even) td{background:rgba(246,243,238,.5)}
table.data tbody tr{transition:background .25s var(--ease)}
table.data tbody tr:hover td{background:var(--accent-t)}
table.data td strong{color:var(--ink)}

/* ============ TESTIMONIALS ============ */
.tst-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.tst-card{padding:30px;border-left:4px solid var(--accent);display:flex;flex-direction:column}
.tst-card .q{font-family:'Plus Jakarta Sans';font-style:italic;font-size:1.02rem;color:var(--ink);line-height:1.5;margin-bottom:16px}
/* Editorial attribution: name (emphasis) → role (secondary) → subtle metadata,
   pinned to the card foot so footers align across cards regardless of quote length. */
.tst-card cite{font-style:normal;display:block;margin-top:auto;padding-top:18px}
.tst-card .tst-name{display:block;font-family:'Plus Jakarta Sans',sans-serif;font-weight:600;font-size:1.02rem;color:var(--ink);letter-spacing:-.01em;line-height:1.2}
.tst-card .tst-role{display:block;font-size:.83rem;color:var(--ink2);margin-top:4px}
.tst-card .tst-meta{display:block;font-size:.72rem;color:var(--ink3);margin-top:7px;letter-spacing:.06em;text-transform:uppercase;font-weight:600}
.tst-card .stars{color:var(--amber);display:flex;gap:2px;margin-bottom:14px}
.tst-card .stars .ic{width:16px;height:16px;fill:var(--amber)}

/* ============ FAQ ACCORDION ============ */
.faq{max-width:840px;margin:0 auto;display:grid;gap:12px}
.faq-item{background:var(--glass2);border:1px solid rgba(255,255,255,.7);border-radius:var(--r);box-shadow:var(--sh-s);overflow:hidden;transition:box-shadow .4s}
.faq-item.open{box-shadow:var(--sh-m)}
.faq-q{width:100%;text-align:left;background:none;border:none;font-family:'Inter';font-weight:600;font-size:1.02rem;color:var(--ink);padding:22px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px;cursor:pointer}
.faq-q .pm{width:26px;height:26px;flex:none;border-radius:50%;background:var(--accent-t);color:var(--accent);display:grid;place-items:center;transition:transform .4s var(--ease)}
.faq-q .pm .ic{width:15px;height:15px}
.faq-item.open .faq-q .pm{transform:rotate(45deg)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .32s var(--ease)}
.faq-a p{padding:0 24px 22px;font-size:.96rem;color:var(--ink2)}

/* ============ CAREER TIPS ============ */
.tips-hero{background:linear-gradient(135deg,var(--orange),#d85f16);color:#fff;padding:40px;border-radius:var(--r-lg);box-shadow:var(--sh-m)}
.tips-hero .kick{font-size:.82rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;opacity:.85;margin-bottom:10px}
.tips-hero h1,.tips-hero h2{color:#fff;font-size:clamp(1.6rem,3vw,2.4rem);font-weight:400}
.tip{display:grid;grid-template-columns:80px 1fr;gap:0;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-s);border:1px solid var(--hair);background:var(--glass2)}
.tip-num{background:var(--green);color:#fff;display:grid;place-items:center;font-family:'Plus Jakarta Sans';font-size:1.8rem;font-weight:500}
.tip-body{padding:26px 30px}
.tip-body h3{font-family:'Inter';font-size:1.15rem;font-weight:700;color:var(--ink);letter-spacing:.02em;text-transform:uppercase;font-size:.9rem;margin-bottom:6px}
.tip-body .sub{font-family:'Plus Jakarta Sans';font-size:1.25rem;color:var(--ink);margin-bottom:14px}
.tip-body ul{display:grid;gap:8px;margin-bottom:14px}
.tip-body li{display:flex;gap:10px;font-size:.95rem}
.tip-body li::before{content:"•";color:var(--green);font-weight:700}
.tip-take{font-family:'Plus Jakarta Sans';font-style:italic;color:var(--green);font-weight:500}

/* ============ QUOTE BAND ============ */
.quote-band{padding:120px 0;text-align:center;background:radial-gradient(800px 400px at 50% 0%,var(--green-t),transparent 65%)}
.quote-inner{max-width:860px;margin:0 auto}
.quote-mark{font-family:'Plus Jakarta Sans';font-size:5rem;color:var(--green);line-height:.4;display:block}
.quote-inner blockquote{font-family:'Plus Jakarta Sans';font-size:clamp(1.4rem,2.6vw,2.05rem);font-weight:300;color:var(--ink);line-height:1.42;margin:20px 0 24px}
.quote-inner blockquote em{font-style:italic;color:var(--green)}
.quote-inner cite{font-style:normal;font-size:.9rem;color:var(--ink2);font-weight:600}

/* ---- Founder's Message: premium two-column editorial (message left, signature panel right).
   Signature card is vertically centered against the message block (align-items:center). ---- */
.founder-grid{ display:grid; grid-template-columns:1.9fr 1fr; gap:60px; align-items:center;
  max-width:1200px; margin:0 auto; text-align:left; }
.founder-msg{ position:relative; }
.founder-msg .quote-mark{ font-size:4.4rem; color:var(--orange); opacity:.85; line-height:.5; margin-bottom:10px; }
.founder-title{ font-family:'Inter',sans-serif; font-size:.78rem; font-weight:700; letter-spacing:.24em;
  text-transform:uppercase; color:var(--ink3); margin:0 0 22px; display:flex; align-items:center; gap:12px; }
.founder-title::before{ content:""; width:26px; height:1.5px; background:var(--orange); border-radius:2px; }
/* natural left-aligned editorial measure (~62ch) — text wraps by itself, no manual line breaks,
   no justification, so it stays correct at any font width */
.founder-msg blockquote{ font-family:'Plus Jakarta Sans',sans-serif; font-style:italic; font-weight:340;
  font-size:1.42rem; line-height:1.62; letter-spacing:-.005em; color:var(--ink); margin:0;
  max-width:62ch; text-align:left; text-wrap:pretty; }
.founder-msg blockquote em{ font-style:italic; color:var(--orange); }
/* signature panel — stacked hierarchy, thin dividers, subtle orange accents */
.founder-sig{ text-align:center; padding:34px 28px; border:1px solid var(--hair); border-radius:18px;
  background:var(--glass); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); box-shadow:var(--sh-s); }
.sig-name{ font-family:'Plus Jakarta Sans',sans-serif; font-size:1.55rem; font-weight:400; color:var(--ink); line-height:1.1; }
.sig-org{ font-family:'Inter',sans-serif; font-size:.82rem; font-weight:700; letter-spacing:.16em;
  text-transform:uppercase; color:var(--orange); margin-top:7px; }
.sig-div{ width:44px; height:1px; background:var(--hair); margin:20px auto; }
.sig-roles{ display:flex; flex-direction:column; gap:9px; }
.sig-roles span{ font-family:'Inter',sans-serif; font-size:1rem; color:var(--ink2); letter-spacing:.01em; }
.sig-exp{ font-family:'Plus Jakarta Sans',sans-serif; font-style:italic; font-size:1.08rem; color:var(--ink); }
@media(max-width:900px){
  .founder-grid{ grid-template-columns:1fr; gap:32px; }
  .founder-msg blockquote{ font-size:1.24rem; }
}

/* ============ CTA BAND ============ */
.cta{padding:96px 0}
.cta-inner{max-width:940px;margin:0 auto;text-align:center;padding:56px;border-radius:var(--r-xl);background:linear-gradient(135deg,#242424,#131313);color:#fff;box-shadow:var(--sh-m);position:relative;overflow:hidden}
.cta-inner h2{color:#fff;font-size:clamp(1.8rem,3.4vw,2.7rem);font-weight:300;margin-bottom:12px}
/* margin:0 auto centres the block — the global p{max-width:68ch} otherwise pins it left of
   centre inside the text-align:center card (the h2 has no such cap, so it looked centred). */
.cta-inner p{color:rgba(255,255,255,.82);max-width:60ch;margin:0 auto 28px;text-wrap:balance}
.cta-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.cta-glow{position:absolute;width:320px;height:320px;border-radius:50%;background:radial-gradient(var(--orange-t2),transparent 70%);filter:blur(20px)}

/* Kill the blue/grey mobile tap-flash (WebKit highlight) on every interactive control —
   this is what made the FAQ buttons and dropdown triggers flash a colour on first touch. */
a, button, input, select, textarea, label, summary, [role="button"],
.faq-q, .sel-trigger, .sel-opt{ -webkit-tap-highlight-color:transparent; }
/* Native <select> fallback: force solid opaque option rows so they never render see-through
   and overlay the text behind them on mobile browsers. */
.fld select option{ background:#ffffff; color:#1a1a1a; }

/* ============ FORMS ============ */
.form-card{padding:36px;border-radius:var(--r-lg);background:var(--glass2);border:1px solid rgba(255,255,255,.7);backdrop-filter:blur(14px);box-shadow:var(--sh-m)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 22px}
.fld{position:relative;margin-bottom:22px}
.fld.full{grid-column:1/-1}
.fld input,.fld textarea,.fld select{width:100%;background:transparent;border:none;border-bottom:1.5px solid var(--hair);padding:12px 2px;font-family:'Inter';font-size:1rem;color:var(--ink);transition:border-color .4s}
.fld textarea{resize:vertical;min-height:80px}
.fld select{cursor:pointer}
.fld input:focus,.fld textarea:focus,.fld select:focus{outline:none;border-color:var(--accent)}
.fld label{position:absolute;left:2px;top:12px;color:var(--ink3);pointer-events:none;transition:.3s var(--ease);font-size:1rem}
.fld input:focus+label,.fld input:not(:placeholder-shown)+label,
.fld textarea:focus+label,.fld textarea:not(:placeholder-shown)+label,
.fld.filled label,.fld.sel-open label,.fld select:focus+label{top:-12px;font-size:.76rem;color:var(--accent);font-weight:600;letter-spacing:.04em}
/* dropdown label sits as a placeholder inside the field, then floats up when the menu opens
   (.sel-open) or a value is chosen (.filled) — same behaviour as the text inputs. */
/* max-width:none overrides the global p{max-width:68ch} (which otherwise caps the note and
   pins it left of centre); margin:auto + text-align:center keeps it perfectly centred and
   aligned with the full-width CTA button, on every breakpoint. */
.form-note{font-size:.8rem;font-weight:500;color:var(--ink3);margin:16px auto 0;text-align:center;line-height:1.5;max-width:none;width:100%;box-sizing:border-box}
/* desktop: force the consent line onto ONE line (nowrap) at a size that fits the form width;
   below 901px it wraps naturally at a readable size (a single line can't fit narrow screens). */
@media(min-width:901px){.form-note{font-size:.74rem;white-space:nowrap}}
.form-note a{color:var(--accent);font-weight:700;white-space:nowrap}
.form-msg{margin-top:16px;padding:14px 18px;border-radius:14px;background:var(--green-t);color:#0d7d5a;font-weight:600;font-size:.92rem;display:none}
.form-msg.show{display:block}
.form-msg.form-msg-error{background:#fdeaea;color:#b42318}

/* submit button loading state — spinner replaces the arrow; button is disabled while sending */
.btn.is-loading{pointer-events:none;opacity:.82}
.btn.is-loading .ic{display:none}
.btn.is-loading::after{content:"";width:16px;height:16px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:te-spin .7s linear infinite}
@keyframes te-spin{to{transform:rotate(360deg)}}

/* ============ SUCCESS MODAL (shared, premium) ============ */
.te-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px}
.te-modal[hidden]{display:none}
.te-modal-backdrop{position:absolute;inset:0;background:rgba(20,24,31,.5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .28s var(--ease)}
.te-modal-card{position:relative;z-index:1;width:100%;max-width:440px;background:#fff;border-radius:22px;padding:40px 34px 30px;text-align:center;
  box-shadow:0 44px 100px -34px rgba(20,24,31,.55),0 10px 30px -18px rgba(20,24,31,.4);
  opacity:0;transform:scale(.96);transition:opacity .28s var(--ease),transform .28s var(--ease)}
.te-modal.show .te-modal-backdrop{opacity:1}
.te-modal.show .te-modal-card{opacity:1;transform:none}
.te-modal-icon{width:74px;height:74px;margin:2px auto 20px;border-radius:50%;background:#e7f8ee;color:#16a34a;display:grid;place-items:center}
.te-modal-icon svg{width:34px;height:34px}
.te-modal-title{font-family:'Plus Jakarta Sans',sans-serif;font-weight:700;font-size:1.5rem;color:var(--ink);margin:0 0 10px;letter-spacing:-.01em}
.te-modal-desc{font-family:'Inter',sans-serif;font-size:1rem;line-height:1.6;color:var(--ink2);margin:0 0 26px}
.te-modal-desc a{color:var(--accent);font-weight:700;white-space:nowrap}
.te-modal-close{min-width:150px;justify-content:center}
@media(max-width:520px){.te-modal-card{padding:32px 22px 24px;border-radius:20px}.te-modal-title{font-size:1.3rem}}
@media(prefers-reduced-motion:reduce){.te-modal-backdrop,.te-modal-card{transition-duration:.01ms}}

/* ---- Custom form dropdown (replaces the native OS <select> popup, all forms).
   The native <select> is kept (transparent, behind) for value + required
   validation + submission; JS builds the styled trigger + menu on top. ---- */
.fld select.sel-native{ position:absolute; top:0; left:0; width:100%; height:100%; opacity:0; pointer-events:none; }
.sel{ position:relative; z-index:1; }
/* an OPEN dropdown lifts above the fields below it, so its (opaque) menu covers them instead of
   letting their labels/underlines show through — that was the "background line" in the panel. */
.sel.open{ z-index:120; }
.sel-trigger{ width:100%; background:transparent; border:none; border-bottom:1.5px solid var(--hair);
  padding:12px 2px; margin:0; font-family:'Inter'; font-size:1rem; color:var(--ink); text-align:left;
  cursor:pointer; display:flex; align-items:center; gap:10px; transition:border-color .4s; }
.sel-trigger .sel-val{ flex:1; min-width:0; min-height:1.2em; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sel-trigger.placeholder .sel-val{ color:var(--ink3); }
.sel.open .sel-trigger, .sel-trigger:focus-visible{ outline:none; border-color:var(--accent); }
.sel-caret{ flex:none; display:grid; place-items:center; color:var(--ink3); transition:transform .3s var(--ease); }
.sel-caret svg{ width:16px; height:16px; }
.sel.open .sel-caret{ transform:rotate(180deg); color:var(--accent); }
.sel-menu{ list-style:none; margin:0; padding:6px; position:absolute; top:calc(100% + 8px); left:0; right:0;
  z-index:200; background:#ffffff; border:1px solid rgba(26,26,26,.14); border-radius:16px;
  box-shadow:0 22px 48px -20px rgba(26,26,26,.55), 0 4px 14px -6px rgba(26,26,26,.3);
  max-height:262px; overflow-y:auto; overscroll-behavior:contain; opacity:0; visibility:hidden; transform:translateY(-6px);
  transition:opacity .22s var(--ease), transform .22s var(--ease), visibility .22s; }
.sel.open .sel-menu{ opacity:1; visibility:visible; transform:none; }
.sel-opt{ padding:11px 14px; border-radius:11px; font-size:.95rem; color:var(--ink2); cursor:pointer;
  transition:background .18s, color .18s; }
.sel-opt:hover, .sel-opt.active{ background:var(--accent-t); color:var(--ink); }
.sel-opt[aria-selected="true"]{ color:var(--accent); font-weight:600; }
.fld.sel-open > label{ color:var(--accent); }

/* Small muted "(optional)" hint inside a floating label */
.fld label .opt{ color:var(--ink3); font-weight:400; letter-spacing:0; }

/* ============ CONTACT CARDS ============ */
.contact-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:44px;align-items:stretch}
.contact-cards{display:flex;flex-direction:column;gap:12px}
a.cc{text-decoration:none;color:inherit;cursor:pointer}
.cc{display:flex;gap:14px;align-items:center;padding:15px 20px;border-radius:var(--r);background:var(--glass2);border:1px solid rgba(255,255,255,.7);backdrop-filter:blur(10px);box-shadow:var(--sh-s);transition:transform .45s var(--ease),box-shadow .45s var(--ease)}
.cc:hover{transform:translateY(-4px);box-shadow:var(--sh-m)}
.cc .chip{width:42px;height:42px;font-size:20px;border-radius:12px}
.cc h4{font-size:.82rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);margin-bottom:3px}
.cc p{font-size:.95rem;color:var(--ink);line-height:1.5}
.cc a{color:var(--ink)}

/* ============ BREADCRUMB ============ */
.crumb{display:flex;gap:8px;align-items:center;font-size:.82rem;color:var(--ink3);margin-bottom:20px}
.crumb a:hover{color:var(--accent)}
.crumb .sep{opacity:.5}

/* ============ PROSE (legal pages) ============ */
.prose{max-width:760px;margin:0 auto}
.prose h2{font-size:1.5rem;margin:32px 0 12px}
.prose h3{font-size:1.2rem;margin:24px 0 8px;font-family:'Inter';font-weight:700;color:var(--ink)}
.prose p{margin-bottom:14px}
.prose ul{list-style:disc;padding-left:22px;margin-bottom:14px}
.prose li{margin-bottom:6px}
.placeholder-note{padding:20px 24px;border-radius:var(--r);background:var(--amber-t,rgba(232,168,58,.14));border:1px dashed var(--amber);color:var(--ink2);font-size:.92rem}

/* ============ WHATSAPP FLOAT ============ */
.wa-float{position:fixed;right:22px;bottom:22px;z-index:90;width:58px;height:58px;border-radius:50%;background:#25D366;display:grid;place-items:center;box-shadow:0 12px 30px -10px rgba(37,211,102,.6);transition:transform .3s var(--ease)}
.wa-float:hover{transform:scale(1.08)}
.wa-float .ic{width:30px;height:30px;color:#fff;stroke-width:1.4}

/* ============ FOOTER — premium closing scene ============ */
footer.site{position:relative;overflow:hidden;padding:76px 0 44px;color:var(--ink2);
  background:
    radial-gradient(1100px 420px at 82% 0%,rgba(249,165,106,.16),transparent 60%),
    radial-gradient(900px 500px at 6% 26%,rgba(242,111,33,.07),transparent 55%),
    radial-gradient(860px 560px at 97% 94%,rgba(242,111,33,.12),transparent 58%),
    linear-gradient(180deg,#fff,var(--orange-wash) 58%,#FBEEE4)}
footer.site .foot-orn{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
footer.site .foot-orn>svg{position:absolute;bottom:-16px;left:0;width:100%;height:auto;opacity:.55}
/* soft temple echo in the bottom-right — the homepage's identity concludes here */
.foot-temple{position:absolute;inset:0;pointer-events:none;
  background:url("../assets/illustrations/footer.png") no-repeat center;background-size:contain;
  opacity:.13;mix-blend-mode:multiply;
  /* wide, soft fade on BOTH sides so the image's rectangular edges dissolve into the footer —
     no visible vertical borders; only the centre (handshake) reads at full (still faint) strength */
  -webkit-mask-image:linear-gradient(90deg,transparent 6%,rgba(0,0,0,.28) 22%,#000 42%,#000 58%,rgba(0,0,0,.28) 78%,transparent 94%);
          mask-image:linear-gradient(90deg,transparent 6%,rgba(0,0,0,.28) 22%,#000 42%,#000 58%,rgba(0,0,0,.28) 78%,transparent 94%)}
/* tablet/mobile: keep the full composition (contain never cuts subjects), anchored to the
   footer's lower area and a touch softer so it sits behind the stacked content cleanly */
@media(max-width:900px){ .foot-temple{ background-position:center bottom; opacity:.12; } }
footer.site .foot-orn::before,footer.site .foot-orn::after{content:"";position:absolute;border-radius:50%;filter:blur(64px)}
footer.site .foot-orn::before{width:440px;height:440px;top:-140px;right:5%;background:radial-gradient(circle,rgba(242,111,33,.14),transparent 70%)}
footer.site .foot-orn::after{width:380px;height:380px;bottom:-150px;left:-50px;background:radial-gradient(circle,rgba(249,165,106,.12),transparent 70%)}
/* footer-scoped cursor glow: REMOVED site-wide (kept hidden in case the markup remains) */
.foot-glow{display:none}
.foot-wrap{position:relative;z-index:2;max-width:1400px;margin:0 auto;padding:0 clamp(20px,4vw,48px)}
/* four balanced columns: brand | quick links | business/job | newsletter */
.foot-top{display:grid;grid-template-columns:1.5fr 2fr 1.55fr;gap:clamp(26px,3vw,48px);align-items:start}

/* --- brand column --- */
.foot-logo{height:48px;width:auto;margin-bottom:14px}
.foot-msg{font-size:1rem;line-height:1.58;color:var(--ink2);max-width:38ch;margin-bottom:20px;font-weight:500}
/* two-statement editorial hierarchy — no dash; the second line is the emphasis */
.foot-msg .fm-1{display:block}
.foot-msg .fm-2{display:block;margin-top:9px;font-family:'Plus Jakarta Sans';font-style:italic;font-weight:500;font-size:1.14rem;line-height:1.36;letter-spacing:-.005em;
  background:linear-gradient(92deg,var(--orange),var(--orange-soft));-webkit-background-clip:text;background-clip:text;color:transparent}
.foot-cards{display:grid;gap:10px;margin-bottom:18px}
.foot-card{display:flex;gap:13px;align-items:center;padding:11px 15px;border-radius:16px;
  background:var(--glass);border:1px solid rgba(255,255,255,.7);box-shadow:0 8px 24px -18px rgba(26,26,26,.4);
  backdrop-filter:blur(8px);transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s}
.foot-card:hover{transform:translateY(-3px);border-color:rgba(242,111,33,.4);box-shadow:0 16px 34px -18px rgba(242,111,33,.55)}
.foot-card .fc-ic{width:42px;height:42px;flex:none;border-radius:12px;display:grid;place-items:center;
  background:linear-gradient(140deg,rgba(242,111,33,.16),rgba(249,165,106,.1));color:var(--orange);transition:.35s var(--ease)}
.foot-card:hover .fc-ic{background:var(--orange);color:#fff;box-shadow:0 8px 20px -6px rgba(242,111,33,.6)}
.foot-card .fc-ic .ic{width:19px;height:19px}
.foot-card .fc-t{display:block;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);font-weight:700;margin-bottom:2px}
.foot-card .fc-v{display:block;font-size:.92rem;color:var(--ink);font-weight:600;line-height:1.4;text-wrap:pretty}
/* keep multi-word address fragments (e.g. the street name) from breaking mid-phrase */
.foot-card .fc-v .nb{white-space:nowrap}
/* social */
.foot-social{display:flex;gap:12px}
.foot-social a{position:relative;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  background:var(--glass2);border:1px solid rgba(255,255,255,.7);color:var(--ink);overflow:hidden;
  box-shadow:0 8px 20px -14px rgba(26,26,26,.5);transition:transform .35s var(--ease),color .35s,box-shadow .35s}
.foot-social a::before{content:"";position:absolute;inset:0;border-radius:50%;background:var(--orange);transform:scale(0);opacity:0;transition:.4s var(--ease);z-index:0}
.foot-social a .ic{position:relative;z-index:1;width:19px;height:19px}
.foot-social a:hover{transform:translateY(-4px) rotate(5deg);color:#fff;box-shadow:0 16px 30px -14px rgba(242,111,33,.7)}
.foot-social a:hover::before{transform:scale(1);opacity:1}

/* --- grouped menus: Quick Links in col 1, Business Owners + Job Seekers stacked in col 2 --- */
.foot-menus{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(20px,2.4vw,42px);align-items:start}
.foot-menus>.foot-group:nth-child(1){grid-column:1;grid-row:1}
.foot-menus>.foot-group:nth-child(2){grid-column:2;grid-row:1}
.foot-menus>.foot-group:nth-child(3){grid-column:2;grid-row:2;margin-top:22px}
.foot-group h4{position:relative;font-family:'Inter';font-size:.72rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--orange);margin-bottom:13px;padding-bottom:8px}
.foot-group h4::after{content:"";position:absolute;left:0;bottom:0;width:26px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--orange),transparent);transition:width .4s var(--ease)}
.foot-group:hover h4::after{width:48px}
.foot-group ul{display:grid;gap:9px}
.foot-group a{position:relative;display:inline-flex;align-items:center;gap:8px;font-size:.95rem;color:var(--ink2);font-weight:500;transition:color .3s,transform .3s var(--ease)}
.foot-group a::before{content:"";width:0;height:2px;border-radius:2px;background:var(--orange);opacity:0;transition:.3s var(--ease)}
.foot-group a:hover{color:var(--ink);transform:translateX(6px)}
.foot-group a:hover::before{width:12px;opacity:1}

/* --- newsletter card (the footer's visual anchor) --- */
.foot-news{align-self:start}
.news-card{position:relative;padding:32px 30px;border-radius:26px;overflow:hidden;
  background:linear-gradient(150deg,rgba(255,255,255,.9),rgba(253,237,225,.66));
  border:1px solid rgba(255,255,255,.85);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);
  box-shadow:0 34px 74px -38px rgba(242,111,33,.5),0 12px 34px -22px rgba(26,26,26,.3),inset 0 1px 0 rgba(255,255,255,.85);
  animation:footFloat 7s ease-in-out infinite}
.news-card::before{content:"";position:absolute;width:220px;height:220px;top:-90px;right:-64px;border-radius:50%;background:radial-gradient(circle,rgba(242,111,33,.18),transparent 70%);filter:blur(22px)}
.news-card h4{font-family:'Plus Jakarta Sans';font-size:1.44rem;font-weight:400;color:var(--ink);margin-bottom:10px;position:relative}
.news-card p{font-size:.92rem;color:var(--ink2);margin-bottom:22px;position:relative;line-height:1.5}
.news-form{position:relative;display:grid;gap:12px}
.news-input{width:100%;background:#fff;border:1.5px solid var(--hair);border-radius:100px;padding:14px 20px;font-family:inherit;font-size:.94rem;color:var(--ink);transition:.35s}
.news-input::placeholder{color:var(--ink3)}
.news-input:focus{outline:none;border-color:var(--orange);box-shadow:0 0 0 4px rgba(242,111,33,.14)}
.news-btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:100%;padding:14px 22px;border:none;border-radius:100px;cursor:pointer;
  font-family:inherit;font-weight:700;font-size:.95rem;color:#fff;background:linear-gradient(120deg,var(--orange),var(--orange-soft));
  box-shadow:0 12px 26px -12px rgba(242,111,33,.7);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.news-btn .ic{width:17px;height:17px;transition:transform .35s var(--ease)}
.news-btn:hover{box-shadow:0 20px 40px -14px rgba(242,111,33,.85)}
.news-btn:hover .ic{transform:translateX(5px)}
.news-card .form-msg{margin:2px 0 0;font-size:.85rem;min-height:1em;position:relative}

/* --- bottom bar --- */
.foot-bottom{position:relative;z-index:2;max-width:1400px;margin:38px auto 0;padding:20px clamp(20px,4vw,48px) 0;
  border-top:1px solid var(--hair);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-size:.85rem;color:var(--ink3)}
.foot-bottom .fb-mid{display:inline-flex;align-items:center;gap:7px}
.foot-bottom .fb-mid::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--orange)}
.foot-bottom .fb-right{display:inline-flex;align-items:center;gap:14px}
.foot-bottom .fb-right a{position:relative;color:var(--ink3);transition:color .3s}
.foot-bottom .fb-right a::after{content:"";position:absolute;left:0;bottom:-3px;width:0;height:1.5px;background:var(--orange);transition:width .3s var(--ease)}
.foot-bottom .fb-right a:hover{color:var(--ink)}
.foot-bottom .fb-right a:hover::after{width:100%}
.foot-bottom .fb-right .dot{width:3px;height:3px;border-radius:50%;background:var(--ink3);opacity:.5}
@keyframes footFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@media(prefers-reduced-motion:reduce){.news-card{animation:none}}

/* ============ RESPONSIVE ============ */
@media(max-width:980px){
  .foot-top{grid-template-columns:1fr 1fr;gap:44px}
  .foot-news{grid-column:1 / -1}
  .grid-4,.ind-grid{grid-template-columns:1fr 1fr}
  .tst-grid{grid-template-columns:1fr}
}
@media(max-width:900px){
  .nav-menu{display:none}.nav-cta .btn{display:none}.burger{display:grid}
  .hero-grid,.split,.contact-grid,.compare{grid-template-columns:1fr;gap:40px}
  .grid-3,.ddd,.grid-2,.aud-grid{grid-template-columns:1fr}
  .stat-row{grid-template-columns:1fr 1fr}
  .svc-float{min-height:0;display:block}
  .svc-center{max-width:none;margin-bottom:36px}
  .svc-orbit{position:static;display:grid;grid-template-columns:1fr 1fr;gap:24px}
  .svc-node{position:static!important;width:auto;animation:none!important}
  .ddd-arrow{display:none}
  /* Values roadmap → vertical list on mobile */
  .road{padding-left:28px}
  .road-line{display:none}
  .road-row{grid-template-columns:1fr;min-height:0;gap:14px}
  .road-item{height:auto!important;padding-left:0}
  .road-card{position:static!important;left:auto;right:auto;bottom:auto!important;top:auto!important;text-align:left}
  .road-card .chip{margin:0 0 12px}
  .road-item::before{content:"";position:absolute;left:-18px;top:0;bottom:-14px;width:2px;background:var(--hair)}
  .road-item:last-child::before{bottom:50%}
  .road-stem{display:none}
  .road-node{display:block;position:absolute;left:-18px;top:34px;transform:translateX(-50%)}
  .section{padding:76px 0}
  .form-grid{grid-template-columns:1fr}
}
@media(max-width:560px){
  .stat-dash,.stat-row,.grid-4,.ind-grid{grid-template-columns:1fr}
  .cta-inner{padding:36px 24px}
  footer.site{padding:56px 0 36px}
  .foot-top{grid-template-columns:1fr;gap:36px}
  .foot-menus{grid-template-columns:1fr 1fr;gap:28px 20px}
  .foot-bottom{flex-direction:column;align-items:flex-start;gap:12px}
  .tl-step{grid-template-columns:52px 1fr;gap:16px}
  .tl-num{width:52px;height:52px;font-size:1.25rem}
  .timeline::before{left:25px}
}
/* Small-screen typography + spacing: keep big editorial headings from overflowing
   the viewport; scale them fluidly instead of leaving them at the desktop floor. */
@media(max-width:640px){
  .display{ font-size:clamp(1.95rem,8vw,2.7rem); line-height:1.07; }
  h2.title{ font-size:clamp(1.55rem,6.4vw,2.15rem); }
  .hero{ padding:128px 0 68px; }
  .hero .sub{ font-size:1.04rem; }
  .lead{ font-size:1.02rem; }
  .rhythm{ font-size:1.08rem; }
  .sec-head{ margin-bottom:34px; }
  .hero-actions .btn.lg{ padding:14px 24px; font-size:.94rem; }
}
/* Mobile / touch perf: drop expensive blur */
@media(max-width:1024px),(hover:none){
  *{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  .card,.road-card,.hm-face,.aud-card,.cc,.prob,.form-card,.feat-card,.tst-card,
  .ind-chip,.nav-inner,.hm-switch,.stat-card,.faq-item,.mega,table.data{background:#fdfcfa!important}
  .nav-inner{background:rgba(253,252,250,.96)!important}
  .svc-node{animation:none!important}
}
/* ---- Mobile scroll rendering: kill seams, flickering edges & repaint artifacts ---- */
@media(max-width:900px){
  /* The top "veil" is a desktop floating-pill seal; on mobile it becomes a fixed masked
     strip that can flicker/leave a seam while scrolling. Drop it — the FOUT gate that hides
     the page until fonts load still works on its own. */
  body::before{ display:none !important; }
  /* Pin fixed chrome to its own compositor layer so scrolling content never repaints it
     (prevents the thin flickering line under the floating nav). */
  header.nav, .wa-float, .scroll-progress{ -webkit-transform:translateZ(0); transform:translateZ(0);
    -webkit-backface-visibility:hidden; backface-visibility:hidden; }
  /* Full-height heroes use the DYNAMIC viewport unit so the iOS Safari address-bar show/hide
     doesn't resize 100vh and expose seams between sections (falls back to vh on old browsers). */
  .x-hero{ min-height:100vh; min-height:100svh; }
  /* Round section paint to the pixel grid: a 3D layer on backgrounded blocks stops the
     sub-pixel hairline (often a thin white line) that appears at their edges mid-scroll. */
  .hero, .x-gap, .cta, .quote-band, .x-finale, footer.site{ -webkit-transform:translateZ(0); transform:translateZ(0); }
  /* Don't proactively promote dozens of elements to GPU layers on mobile — the extra
     compositing memory is a big cause of scroll stutter / hanging on real phones. Let the
     browser decide; the few fixed/backgrounded layers above are enough. */
  *{ will-change:auto !important; }
}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001s!important;transition-duration:.001s!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
  .mark svg{stroke-dashoffset:0}
}

/* ============================================================
   ABOUT — calm, fast, Apple/Stripe/Linear feel.
   ONE illustration lives behind the WHOLE page as a soft watermark
   (.about-bg, position:fixed) — it never animates. Content reveals
   via main.js .reveal (opacity + gentle rise). Two tiny SVG
   interactions: the Vision eye opens, the Mission rocket lifts —
   one-shot on scroll-into-view, transform/opacity/SVG-stroke only.
   No pin, no masks, no colouring, no blur, no per-frame repaint.
   ============================================================ */
.about-bg{ position:fixed; inset:0; z-index:0; pointer-events:none;
  background:url("../assets/illustrations/story-journey-soft.png") center/cover no-repeat;
  opacity:.07;
  transform:translateZ(0); backface-visibility:hidden; }  /* own GPU layer — never repaints on scroll */
/* page content already sits above it (.section>.wrap / .hero>.wrap are z-index:2) */
/* Cursor glow: use the global site-wide effect on About too (same as Home). */
/* PERF: the two Vision/Mission cards use .card's backdrop-filter:blur(12px), which
   recomputes per scroll frame over the fixed watermark. Invisible over a 7% wash — drop it. */
body[data-page="about"] #vision .feat-card{
  -webkit-backdrop-filter:none; backdrop-filter:none; background:#fdfcfa; }

/* Vision — an eye that opens */
.eye-svg,.rkt-svg{ width:32px; height:32px; display:block; }
.eye-outline{ stroke-dasharray:132; stroke-dashoffset:132;
  transition:stroke-dashoffset .9s var(--ease); }
.eye-iris{ transform:scale(.001); transform-box:fill-box; transform-origin:center;
  transition:transform .55s var(--ease) .4s; }
.eye-pupil{ opacity:0; transition:opacity .4s ease .66s; }
.reveal.in .eye-outline{ stroke-dashoffset:0; }
.reveal.in .eye-iris{ transform:scale(1); }
.reveal.in .eye-pupil{ opacity:1; }

/* Mission — a rocket that lifts */
.rkt-body{ transform:translateY(9px); opacity:0;
  transition:transform .7s var(--ease), opacity .55s ease; }
.reveal.in .rkt-body{ transform:translateY(-3px); opacity:1; }

@media(prefers-reduced-motion:reduce){
  .eye-outline{ stroke-dashoffset:0 } .eye-iris{ transform:scale(1) } .eye-pupil{ opacity:1 }
  .rkt-body{ transform:none; opacity:1 }
}

/* ============ ABOUT · Vision & Mission — editorial glass quotes (native scroll) ============
   Plain native browser scroll. The two cards reveal ONCE on scroll-into-view
   (IntersectionObserver adds .in-view; CSS transition = opacity + translateY).
   No Lenis, no ScrollTrigger, no scrub, no pin — nothing runs per frame. */
.vm-scene{ position:relative; --btr:cubic-bezier(.22,1,.36,1); }
.vm-pin{ position:relative; }
.vm-glow{ position:absolute; inset:0; z-index:0; pointer-events:none;
  background:radial-gradient(46% 40% at 50% 46%, rgba(242,111,33,.10), rgba(242,111,33,0) 70%); }
.vm-scene .wrap{ position:relative; z-index:1; }
.vm-stage{ position:relative; display:flex; gap:36px; width:100%; margin:44px auto 0; align-items:stretch; }
.vm-card{ position:relative; flex:1 1 0; min-width:0; opacity:0;
  transition:opacity .7s var(--btr), transform .9s var(--btr); }
.vm-vision{ transform:translateX(40px) scale(.96); }
.vm-mission{ transform:translateX(-40px) scale(.96); }
.vm-scene.in-view .vm-vision, .vm-scene.in-view .vm-mission{ opacity:1; transform:translateX(0) scale(1); }
/* quote content staggers in AFTER the split — Vision first, Mission ~200ms later (~90ms per line) */
.vm-label, .vm-quote-body .l, .vm-cite{ opacity:0; transform:translateY(12px);
  transition:opacity .6s var(--btr), transform .6s var(--btr); }
.vm-scene.in-view .vm-label, .vm-scene.in-view .vm-quote-body .l, .vm-scene.in-view .vm-cite{ opacity:1; transform:none; }
.vm-scene.in-view .vm-vision .vm-label{ transition-delay:.18s }
.vm-scene.in-view .vm-vision .l1{ transition-delay:.27s } .vm-scene.in-view .vm-vision .l2{ transition-delay:.36s }
.vm-scene.in-view .vm-vision .l3{ transition-delay:.45s } .vm-scene.in-view .vm-vision .l4{ transition-delay:.54s }
.vm-scene.in-view .vm-vision .vm-cite{ transition-delay:.63s }
.vm-scene.in-view .vm-mission .vm-label{ transition-delay:.38s }
.vm-scene.in-view .vm-mission .l1{ transition-delay:.47s } .vm-scene.in-view .vm-mission .l2{ transition-delay:.56s }
.vm-scene.in-view .vm-mission .l3{ transition-delay:.65s } .vm-scene.in-view .vm-mission .l4{ transition-delay:.74s }
.vm-scene.in-view .vm-mission .vm-cite{ transition-delay:.83s }
.vm-face{ position:relative; height:100%; border-radius:20px; overflow:hidden; padding:46px 54px 50px;
  background:linear-gradient(135deg, rgba(255,255,255,.5), rgba(255,248,242,.42)),
             radial-gradient(120% 90% at 18% 0%, rgba(242,111,33,.08), rgba(242,111,33,0) 60%);
  -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,.6);
  box-shadow:0 34px 74px -44px rgba(242,111,33,.26), 0 12px 40px -26px rgba(36,48,64,.3);
  transition:transform .5s var(--ease), box-shadow .5s var(--ease); }
.vm-label{ display:flex; align-items:center; gap:11px; font-family:'Inter',sans-serif; font-weight:600; color:var(--ink3);
  font-size:.72rem; letter-spacing:.24em; text-transform:uppercase; padding-bottom:16px;
  border-bottom:1px solid rgba(26,26,26,.08); margin-bottom:30px; }
.vm-label::before{ content:""; width:20px; height:1.5px; background:var(--orange); border-radius:2px; flex-shrink:0; }
/* Vision & Mission statements: bold, clean brand type (Plus Jakarta Sans) with orange highlights */
.vm-quote-body{ position:relative; font-family:'Plus Jakarta Sans',sans-serif; font-style:normal; font-weight:700; color:var(--ink);
  font-size:2rem; line-height:1.32; letter-spacing:-.017em; margin-top:8px; padding-top:.5em; }
.vm-quote-body .vm-hl{ color:var(--orange); font-weight:800; }
/* Opening quotation mark: a clean decorative accent that sits ABOVE the first line
   (not behind the text), identically placed on both Vision and Mission cards. */
.vm-quote-body::before{ content:'\201C'; position:absolute; top:-.06em; left:-.02em; z-index:0;
  font-size:3.1rem; line-height:1; font-style:normal; color:var(--orange); opacity:.32; pointer-events:none; }
.vm-quote-body .l{ display:block; position:relative; }
.vm-quote-body .l + .l{ margin-top:.68em; }
/* Vision & Mission: .sline elements display inline for natural editorial text flow */
.vm-quote-body .sline{ display:inline; white-space:normal; word-spacing:normal; }
.vm-quote-body .sline::after{ content:' '; word-spacing:normal; }
/* Mission card ONLY: each phrase on its own line with spacing (Vision stays inline) */
.vm-mission .vm-quote-body .sline{ display:block; }
.vm-mission .vm-quote-body .sline::after{ content:none; }
.vm-mission .vm-quote-body .sline + .sline{ margin-top:.34em; }
/* Centre each card's content vertically so the shorter Mission card has no blank gap
   at the bottom — both cards already stretch to equal height (align-items:stretch). */
.vm-face{ display:flex; flex-direction:column; justify-content:center; }
.vm-cite{ display:block; margin-top:28px; text-align:right; font-family:'Inter',sans-serif; font-style:normal;
  font-size:.85rem; letter-spacing:.05em; color:var(--ink3); }
.hl{ font-style:normal; background:linear-gradient(92deg, var(--orange), var(--orange-soft));
  -webkit-background-clip:text; background-clip:text; color:transparent; }
@media(hover:hover) and (min-width:901px){ .vm-card:hover .vm-face{ transform:translateY(-6px); box-shadow:var(--sh-m); } }
@media(max-width:900px){
  .vm-stage{ flex-direction:column; gap:20px; width:100%; }
  .vm-card{ flex:none; }
  .vm-face{ padding:42px 34px 46px; background:rgba(255,253,251,.95); }
  .vm-quote-body{ font-size:1.6rem; line-height:1.4; padding-top:.45em; }
  .vm-quote-body::before{ font-size:2.6rem; top:-.04em; }
  .vm-label{ font-size:.7rem; padding-bottom:14px; margin-bottom:24px; }
}

/* ============ ABOUT · Core Values — sequential scroll-driven reveals ============ */
.cv-scene{ position:relative; --btr:cubic-bezier(.22,1,.36,1); }
.cv-pin{ position:relative; }
.cv-glow{ position:absolute; inset:0; z-index:0; pointer-events:none;
  background:radial-gradient(58% 46% at 50% 26%, rgba(242,111,33,.07), rgba(242,111,33,0) 70%); }
.cv-scene .wrap{ position:relative; z-index:1; }
.cv-stage{ display:grid; grid-template-columns:repeat(2, 1fr); gap:24px; width:min(1080px,94vw); margin:44px auto 0; }
.cv-card{ opacity:0; transform:translateY(24px) scale(.98); transition:opacity .7s var(--btr), transform .8s var(--btr); }
.cv-card.in-view{ opacity:1; transform:none; }
/* 7th value: normal card width, centered under the pair above (not stretched full-width) */
.cv-card:last-child{ grid-column:1 / -1; justify-self:center; width:calc(50% - 12px); }
.cv-face{ position:relative; height:100%; border-radius:22px; overflow:hidden; padding:38px 40px;
  background:linear-gradient(135deg, rgba(255,255,255,.6), rgba(255,248,242,.48)),
             radial-gradient(120% 100% at 12% 0%, rgba(242,111,33,.07), rgba(242,111,33,0) 55%);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  border:1px solid rgba(255,255,255,.6); box-shadow:0 24px 56px -38px rgba(242,111,33,.22), 0 8px 30px -22px rgba(36,48,64,.26);
  transition:transform .4s var(--ease), box-shadow .4s var(--ease); }
@media(hover:hover){ .cv-card:hover .cv-face{ transform:translateY(-4px); box-shadow:var(--sh-m); } }
.cv-num{ font-family:'Plus Jakarta Sans',sans-serif; font-size:1rem; color:var(--orange); letter-spacing:.16em; font-weight:500; }
.cv-title{ font-family:'Plus Jakarta Sans',sans-serif; font-weight:300; color:var(--ink); font-size:1.72rem; letter-spacing:-.01em; margin-top:6px; }
.cv-accent{ display:block; width:52px; height:3px; margin:14px 0 18px; border-radius:2px;
  background:linear-gradient(90deg, var(--orange), var(--orange-soft)); }
.cv-desc{ font-family:'Plus Jakarta Sans',sans-serif; font-size:1.24rem; font-style:italic; color:var(--ink2); line-height:1.5; }
.cv-desc .l{ display:inline; }
@media(max-width:900px){
  .cv-stage{ grid-template-columns:1fr; gap:18px; }
  /* 7th card was pinned to 50% width + centered for the desktop pair-grid — reset to
     full-width on mobile so it never collapses into a narrow 2-words-per-line column */
  .cv-card:last-child{ grid-column:auto; width:auto; justify-self:stretch; }
  .cv-face{ padding:28px 26px; } .cv-title{ font-size:1.5rem; } .cv-desc{ font-size:1.14rem; line-height:1.55; }
}

/* reduced-motion: show everything instantly, no transitions */
@media(prefers-reduced-motion:reduce){
  .vm-card, .vm-vision, .vm-mission, .vm-label, .vm-quote-body .l, .vm-cite, .cv-card{
    transition:none !important; opacity:1 !important; transform:none !important; }
}

/* ---- About: connected vertical rhythm — tightened for a continuous story ---- */
body[data-page="about"] .section{ padding:40px 0; }
body[data-page="about"] .sec-head{ margin-bottom:30px; }
body[data-page="about"] .sec-head .lead{ margin-top:10px; }
body[data-page="about"] .quote-band{ padding:52px 0; }
body[data-page="about"] .cta{ padding-top:48px; }
/* pinned sections fill the viewport themselves — no extra section padding around them */
body[data-page="about"] .story-live,
body[data-page="about"] .vm-live,
body[data-page="about"] .cv-live{ padding:0 !important; }

/* ============ ABOUT · Our Story — native-scroll PINNED scrubbed reveal (TEST section) ============
   GSAP ScrollTrigger (pin:true, NO Lenis). The per-frame scrub writes ONLY --p; CSS turns
   --p into opacity + translateY on right-side lines. No filter/blur anywhere. */
.story-scene{ position:relative; }
.story-head .eyebrow, .story-head .title{ opacity:1; }   /* left is static / visible immediately */
/* balanced ~40/60 columns; natural-flow paragraphs (no manual line breaks) */
.story-scene .split{ grid-template-columns:40fr 60fr; gap:52px; align-items:center; }
.story-body{ font-size:1.18rem; font-weight:500; line-height:1.62; color:var(--ink2); max-width:none; }
.story-body .story-p{ margin-bottom:1.05em; }
.story-body .story-p:last-child{ margin-bottom:0; }
.story-body strong{ color:var(--ink); font-weight:700; }
.sline{ display:block; }
.sline strong{ color:var(--ink); font-weight:700; }
@media(max-width:900px){ .story-scene .split{ grid-template-columns:1fr; } .story-body{ font-size:1.08rem; } }
/* LIVE (desktop + motion-ok; JS adds .story-live): pinned 100vh, flex-centered. Lines
   ghost->revealed scrubbed by --p. Reduced-motion/mobile never get .story-live (full text). */
@media (min-width:901px) and (prefers-reduced-motion:no-preference){
  body[data-page="about"] .story-live{
    padding:0;
    height:100vh;
    display:flex;
    flex-direction:column;
    justify-content:center;
    overflow:hidden;
    position:relative;
    z-index:1;
  }
  .story-live .wrap{ position:relative; z-index:2; }

  /* ---- Reveal mechanism A — VERTICAL "ink develop" (font-robust, no manual line breaks).
     A soft-edged mask sweeps top→bottom across a naturally-wrapped paragraph. The unrevealed
     zone keeps 12% alpha so the whole paragraph is always present as faint printed ink and
     "develops" downward line by line as scroll progresses. Because the text wraps naturally,
     this is correct at ANY font width — no orphans, no justification, no wrap-guessing.
     Only mask-image animates: zero layout reflow, GPU-composited. --rp = 0..1 per element. */
  .story-live .develop,
  .qb-live .develop{
    -webkit-mask-image: linear-gradient(180deg, #000 calc(var(--rp,0) * 122% - 22%), rgba(0,0,0,.12) calc(var(--rp,0) * 122%));
            mask-image: linear-gradient(180deg, #000 calc(var(--rp,0) * 122% - 22%), rgba(0,0,0,.12) calc(var(--rp,0) * 122%));
    will-change: mask-image;
  }
  /* ---- Reveal mechanism B — LEFT-TO-RIGHT sweep for SHORT single-line elements only
     (never wraps, so safe): Vision/Mission phrases. (Core Values uses opacity staging — see
     below — so its text is never masked and stays crisp/subpixel-sharp at rest.) ---- */
  .vm-live .sline{
    -webkit-mask-image: linear-gradient(90deg, #000 calc(var(--sr,0) * 112% - 12%), rgba(0,0,0,.13) calc(var(--sr,0) * 112%));
            mask-image: linear-gradient(90deg, #000 calc(var(--sr,0) * 112% - 12%), rgba(0,0,0,.13) calc(var(--sr,0) * 112%));
  }

  /* Our Story — 3 paragraphs develop top→bottom, one after another, each over a wide, slow
     window (~0.26 of progress). Strictly sequential; fully reversible. */
  .story-live .story-p{
    --rp: clamp(0, calc((var(--p,0) - .04 - (var(--i) * .28)) / .26), 1);
  }

  /* ============ VISION & MISSION — pinned scrubbed reveal ============ */
  body[data-page="about"] .vm-live{
    padding:0 !important;
    height:100vh;
    display:flex;
    flex-direction:column;
    justify-content:center;
    overflow:hidden;
    position:relative;
    z-index:1;
  }
  .vm-live .wrap{ position:relative; z-index:2; }
  .vm-live .vm-card{ opacity:1 !important; transform:none !important; }
  .vm-live .vm-label{ opacity:1 !important; transition:none !important; transform:none !important; }
  /* 7 phrases uncover in reading order, slower spacing for a calmer sweep */
  .vm-live .sline{
    --sr: clamp(0, calc((var(--p,0) - .02 - (var(--i) * .125)) / .15), 1);
  }

  /* ============ CORE VALUES — PINNED story: one card at a time (with a HOLD), then zoom out ============
     PHASE A (--p 0 → .72): the 7 cards share one large centred slot; exactly ONE shows at a time
       and runs a staged, slow reveal — glass settles → number+title → divider grows → body
       develops → then HOLDS fully readable for a beat → gently cross-fades up-and-away as the
       next slides in from below. Each card window is ~0.103 of --p (≈ 865px of an 8400px pin).
     PHASE B (--p .72 → .90, via --t): the section pulls back and every card slides from centre
       into a full-width 3-column overview (01 02 03 / 04 05 06 / 07 centred), shifted below the
       fixed navbar and scaled to fit the viewport height.
     HOLD (--p .90 → 1): the overview holds, then the pin releases → Founder.
     Only transform / opacity / mask animate. --i drives the sequence; --gx/--gy the grid. */
  body[data-page="about"] .cv-live{
    padding:0 !important; height:100vh; overflow:hidden; position:relative; z-index:1;
    --tfade: clamp(0, calc((var(--p,0) - .72) / .03), 1);   /* heading fade — quick, BEFORE assemble */
    --t:     clamp(0, calc((var(--p,0) - .75) / .15), 1);   /* phase-B assemble (starts after fade) */
    --pbscale: 1;   /* overview scale — kept at exactly 1 on the common case so text is crisp (a
                       fractional scale rasterises text and softens it); dialled down only when a
                       viewport is genuinely too small to fit the grid at 1:1. */
    /* phase-A single card centre: clamped to sit BELOW the heading (>=390) yet never hang off the
       bottom (<= 50vh + (50vh-134)), so the card is fully on-screen on short viewports too. */
    --pa-shift: clamp(0px, calc(390px - 50vh), calc(50vh - 131px));
  }
  .cv-live .cv-pin, .cv-live .wrap{ position:static; }
  /* heading below the fixed nav; fades out FULLY (by --p .75) before the grid assembles */
  .cv-live .sec-head{ position:absolute; top:clamp(94px, 11vh, 140px); left:50%; transform:translateX(-50%);
    width:min(1100px,92vw); z-index:3; margin:0; opacity: calc(1 - var(--tfade)); }
  /* stage = zero-size anchor. translateY: phase A sits below the heading (--pa-shift); phase B
     centres the grid in the region below the navbar (44px). scale stays --pbscale (=1 normally)
     for BOTH phases — no zoom — so text is never rasterised by a fractional transform. */
  .cv-live .cv-stage{ position:absolute; top:50%; left:50%; width:0; height:0; z-index:2;
    display:block; margin:0; transform-origin:center;
    transform: translate(-50%, calc(-50% + var(--pa-shift) * (1 - var(--t)) + 44px * var(--t)))
               scale(var(--pbscale)); }
  /* card cell 284×252, shown at 1:1 (crisp). Cross-fades one-at-a-time in phase A, slides to its
     grid slot in phase B. Integer px offsets + opaque face + no filters ⇒ subpixel-sharp at rest. */
  .cv-live .cv-card{ position:absolute; top:0; left:0; width:284px; height:246px;
    margin:-123px 0 0 -142px; justify-self:auto; transition:none !important; pointer-events:none;
    --lt: calc((var(--p,0) - (var(--i) * 0.102857)) / 0.102857);
    --in:  clamp(0, calc(var(--lt) / 0.18), 1);
    --out: clamp(0, calc((1.20 - var(--lt)) / 0.20), 1);
    opacity: max(calc(var(--in) * var(--out)), var(--t)) !important;
    transform: translate(calc(var(--gx,0) * var(--t)),
                 calc(var(--gy,0) * var(--t) + 30px * (var(--out) - var(--in)) * (1 - var(--t)))) !important;
    --cr: clamp(0, var(--lt), 1);
  }
  .cv-live .cv-card:last-child{ --out: 1; }
  /* OVERVIEW: 4 cards on top (01 02 03 04), 3 centred below (05 06 07). cell 284, gutter 30 →
     col step 314; row step 270 (gutter 18). */
  .cv-live .cv-card:nth-child(1){ --gx:-471px; --gy:-132px; }
  .cv-live .cv-card:nth-child(2){ --gx:-157px; --gy:-132px; }
  .cv-live .cv-card:nth-child(3){ --gx: 157px; --gy:-132px; }
  .cv-live .cv-card:nth-child(4){ --gx: 471px; --gy:-132px; }
  .cv-live .cv-card:nth-child(5){ --gx:-314px; --gy: 132px; }
  .cv-live .cv-card:nth-child(6){ --gx: 0px;   --gy: 132px; }
  .cv-live .cv-card:nth-child(7){ --gx: 314px; --gy: 132px; }
  /* Responsive scale — kept at 1 (crisp) for the common desktop (≥1277 wide, ≥634 tall); dialled
     down ONLY when the 1226×522 grid genuinely can't fit. Height first, width last, combined for
     narrow+short (later rule wins the cascade with a value small enough for both). */
  @media (max-height: 632px){ body[data-page="about"] .cv-live{ --pbscale:.92; } }
  @media (max-height: 560px){ body[data-page="about"] .cv-live{ --pbscale:.80; } }
  @media (max-width: 1276px){ body[data-page="about"] .cv-live{ --pbscale:.90; } }
  @media (max-width: 1276px) and (max-height: 632px){ body[data-page="about"] .cv-live{ --pbscale:.82; } }
  @media (max-width: 1122px){ body[data-page="about"] .cv-live{ --pbscale:.76; } }
  /* FULLY-OPAQUE face — an opaque background lets the browser keep crisp subpixel (ClearType) text
     even while the card sits on a composited/translated layer. */
  .cv-live .cv-face{ opacity:1; height:100%; padding:22px 26px;
    background:linear-gradient(135deg, #fffdfa, #fff6f0); }
  /* readable, overflow-safe type; balanced wrapping; no hyphenation */
  .cv-live .cv-num{ font-size:.85rem; }
  .cv-live .cv-title{ font-size:1.3rem; margin-top:3px; line-height:1.16; text-wrap:balance; }
  .cv-live .cv-accent{ margin:10px 0 12px; }
  .cv-live .cv-desc{ font-size:.9rem; line-height:1.4; text-wrap:pretty; hyphens:none; }
  /* within-card staging via OPACITY + slide (NOT mask) so text is crisp at rest — number+title
     (cr .20→.38) → divider grows (.38→.48) → body (.48→.66) → HOLD (.66→1). Each OR's in --t so
     every card is fully shown in the assembled overview. */
  .cv-live .cv-num, .cv-live .cv-title{ --rev: max(clamp(0, calc((var(--cr,0) - .20) / .18), 1), var(--t));
    opacity: var(--rev); transform: translateY(calc((1 - var(--rev)) * 7px)); }
  .cv-live .cv-accent{ transform-origin:left center;
    transform: scaleX(max(clamp(0, calc((var(--cr,0) - .38) / .10), 1), var(--t))); }
  .cv-live .cv-desc{ --rev: max(clamp(0, calc((var(--cr,0) - .48) / .18), 1), var(--t));
    opacity: var(--rev); transform: translateY(calc((1 - var(--rev)) * 9px)); }

  /* ============ FOUNDER'S MESSAGE — natural editorial paragraph, vertical develop ============
     Pinned 100vh like the other story sections (uniform sequential rhythm, no inter-section
     gap). The quote is one naturally-wrapped left-aligned paragraph (.develop) that inks in
     top→bottom over a long, slow window. Quote mark decorative + always visible. Signature
     panel fades in once the quote is essentially complete. */
  body[data-page="about"] .qb-live{
    padding:0 !important; min-height:100vh; display:flex; flex-direction:column;
    justify-content:center; overflow:hidden; position:relative; z-index:1;
  }
  .qb-live .founder-grid.reveal{ opacity:1 !important; transform:none !important; transition:none !important; }
  /* Founder's Message reads as a FINISHED editorial layout: the entire message and the
     signature card are fully visible the instant the section is entered/pinned — no
     scroll-driven reveal, no line-by-line, no per-sentence animation. The pin simply
     holds the section for a beat so the message can be read, then releases. */
  .qb-live blockquote{ --rp: 1; }
  .qb-live .founder-sig{ opacity: 1; transform: none; }
}

/* ==========================================================================
   SERVICES PAGE — stacked editorial cards + floating-icon overview
   ========================================================================== */
/* hero fills the viewport so "What We Do" can never peek in behind it (desktop only;
   mobile keeps the natural, tighter hero height). No flex here — a plain block keeps the
   .wrap at full --maxw so content left-aligns exactly like the About hero (sec-head left=76). */
@media (min-width:901px){
  body[data-page="services"] .hero,
  body[data-page="employers"] .hero,
  body[data-page="job-seekers"] .hero,
  body[data-page="blog"] .hero{ min-height:100vh; box-sizing:border-box; }
}

/* ---- "What we do" intro above the stack ---- */
.svc-stack{ position:relative; padding:0 0 4vh; }
.svc-stack .sec-head{ width:min(1120px,93vw); margin:0 auto; padding:6.5vh 0 4.5vh; }

/* ---- stage holding the cards.
   BASE (mobile / reduced-motion / no-JS): a simple, fully readable vertical stack in normal flow.
   DESKTOP + MOTION: JS adds .stack-on and the stage becomes a pinned, centered card deck
   (see .stack-on rules + the engine script in services.html). ---- */
.svc-pin{ position:relative; }
.svc-stage{ width:min(1120px,93vw); margin:0 auto; display:flex; flex-direction:column; gap:24px; }

@media (min-width:901px){
  /* pinned viewport: the section heading stays fixed at the top, the cards animate centred beneath it */
  .svc-stack.stack-on .svc-pin{ height:100vh; display:flex; flex-direction:column;
    padding:94px 0 3vh; box-sizing:border-box; }
  .svc-stack.stack-on .svc-headline{ flex:none; padding:0; margin:0 auto 2.2vh; text-align:center; }
  .svc-stack.stack-on .svc-headline::after{ content:""; display:block; height:1px; margin:2.2vh auto 0;
    width:min(1120px,93vw); background:linear-gradient(90deg,transparent,rgba(242,111,33,.4) 20%,rgba(242,111,33,.4) 80%,transparent); }
  .svc-stack.stack-on .svc-stage{ flex:1; min-height:0; display:grid; place-items:center; gap:0;
    box-sizing:border-box; }
  /* every card occupies the SAME centred cell → they stack on top of each other;
     equal min-height guarantees the covering card fully hides the one beneath it. */
  .svc-stack.stack-on .svc-stage > .svc-card{ grid-area:1 / 1; width:100%; align-self:center;
    min-height:var(--svc-card-h,486px); display:flex; flex-direction:column; justify-content:center;
    will-change:transform; backface-visibility:hidden; }
}

/* ---- SOLID premium editorial panel — never transparent, so a covered card can never
   bleed through the one on top of it ---- */
.svc-card{ position:relative; transform-origin:center center;
  background:linear-gradient(160deg,#ffffff 0%,#fff8f2 60%,#fff1e5 100%);
  border:1px solid rgba(236,205,180,.6); border-radius:28px;
  box-shadow:0 42px 92px -52px rgba(242,111,33,.34), 0 26px 60px -40px rgba(36,48,64,.30);
  padding:40px 48px 42px; overflow:hidden; }
.svc-card::before{ content:""; position:absolute; top:0; left:0; right:0; height:4px; z-index:2;
  background:linear-gradient(90deg,var(--orange),var(--orange-soft)); }
.svc-card::after{ content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background:radial-gradient(60% 70% at 90% 2%, rgba(242,111,33,.05), transparent 60%); }
.svc-card > *{ position:relative; z-index:1; }

/* card header */
.svc-head{ display:flex; align-items:center; gap:18px; }
.svc-ic{ width:58px; height:58px; border-radius:16px; flex:none; display:grid; place-items:center;
  font-size:27px; color:var(--orange); background:rgba(242,111,33,.10);
  border:1px solid rgba(242,111,33,.16); }
.svc-ic .ic{ width:1em; height:1em; }
.svc-htext{ display:flex; flex-direction:column; gap:3px; }
.svc-num{ font-family:'Inter',sans-serif; font-size:.72rem; font-weight:700; letter-spacing:.24em;
  text-transform:uppercase; color:var(--orange); }
.svc-title{ font-family:'Plus Jakarta Sans',sans-serif; font-weight:300; letter-spacing:-.01em; color:var(--ink);
  font-size:clamp(1.6rem,2.5vw,2.25rem); line-height:1.04; }
.svc-title b{ font-weight:600; }

/* card body — Overview (left) + structured details (right) */
.svc-body{ display:grid; grid-template-columns:.92fr 1.08fr; gap:44px; margin-top:26px; align-items:start; }
.svc-col-label{ font-family:'Inter',sans-serif; font-size:.7rem; font-weight:700; letter-spacing:.2em;
  text-transform:uppercase; color:var(--ink3); display:flex; align-items:center; gap:10px; margin-bottom:14px; }
.svc-col-label::before{ content:""; width:18px; height:1.5px; background:var(--orange); border-radius:2px; }
.svc-lead{ font-family:'Plus Jakarta Sans',sans-serif; font-style:italic; font-weight:340; color:var(--ink);
  font-size:1.18rem; line-height:1.55; letter-spacing:-.003em; }
.svc-tag{ display:inline-flex; align-items:center; gap:9px; margin-top:22px; padding:11px 17px;
  border-radius:100px; background:var(--glass2); border:1px solid rgba(242,111,33,.18);
  font-family:'Inter',sans-serif; font-size:.86rem; font-weight:600; color:var(--ink); }
.svc-tag svg{ width:17px; height:17px; color:var(--orange); flex:none; }

/* right column: labelled rows and/or bullet list */
.svc-details{ display:flex; flex-direction:column; }
.svc-row{ display:grid; grid-template-columns:118px 1fr; gap:18px; align-items:baseline;
  padding:13px 0; border-bottom:1px solid rgba(26,26,26,.08); }
.svc-row:first-child{ padding-top:0; }
.svc-row:last-child{ border-bottom:0; }
.svc-label{ font-family:'Inter',sans-serif; font-size:.68rem; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--orange); }
.svc-val{ font-family:'Inter',sans-serif; font-size:.97rem; line-height:1.5; color:var(--ink2); }
.svc-val b, .svc-val strong{ color:var(--ink); font-weight:600; }
.svc-blist{ display:grid; gap:13px; }
.svc-blist li{ display:grid; grid-template-columns:20px 1fr; gap:12px; align-items:start;
  font-family:'Inter',sans-serif; font-size:.97rem; line-height:1.5; color:var(--ink2); }
.svc-blist li svg{ width:19px; height:19px; color:var(--orange); margin-top:2px; }
.svc-blist li b{ color:var(--ink); font-weight:600; }

/* content is always visible & crisp; the storytelling is the slide + centre-pin + pause of the
   whole card (handled by the engine), so inner elements never need to fade in separately. */
.svc-reveal{ opacity:1; transform:none; }

/* ==== SERVICES OVERVIEW — 3 icons left · centre content · 3 icons right ==== */
/* fills the viewport so, when pinned (start:'top top'), the flex-centred composition sits dead-centre
   of the screen — not attached to the top. Mobile drops to min-height:auto (see responsive block). */
.svc-overview{ position:relative; overflow:hidden; min-height:auto; display:flex; align-items:center;
  padding:9vh 0; }
.ov-glow{ position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(44% 44% at 50% 48%, rgba(242,111,33,.11), transparent 70%); }
.ov-grid{ position:relative; z-index:1; width:min(1180px,94vw); margin:0 auto; display:grid;
  grid-template-columns:1fr minmax(auto,540px) 1fr; align-items:center; gap:40px; }
.ov-col{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:48px; }
.ov-center{ text-align:center; }
.ov-center .lead{ margin:14px auto 26px; }
.ov-icon{ --ox:0px; --oy:0px; display:flex; flex-direction:column; align-items:center; gap:11px;
  width:160px; text-align:center; will-change:transform;
  animation:ovFloat var(--fd,7s) ease-in-out var(--fdel,0s) infinite alternate; }
.ov-badge{ width:76px; height:76px; border-radius:22px; display:grid; place-items:center; font-size:32px;
  color:var(--orange); background:linear-gradient(150deg,#ffffff,#fff2e8);
  border:1px solid rgba(242,111,33,.14);
  box-shadow:0 24px 48px -26px rgba(242,111,33,.42), 0 10px 26px -18px rgba(36,48,64,.32); }
.ov-badge .ic{ width:1em; height:1em; }
.ov-label{ font-family:'Inter',sans-serif; font-size:.82rem; font-weight:600; color:var(--ink2);
  letter-spacing:.01em; line-height:1.25; }
/* float carries the per-icon organic offset (--ox/--oy) so the two don't fight over `transform` */
@keyframes ovFloat{
  from{ transform:translate(var(--ox,0px), calc(var(--oy,0px) - 7px)); }
  to{   transform:translate(var(--ox,0px), calc(var(--oy,0px) + 7px)); }
}
/* organic arc: each side's MIDDLE icon bows outward, top & bottom tuck inward; gentle vertical stagger */
.ov-left  .ov-icon:nth-child(1){ --ox:24px;  --oy:-12px; }
.ov-left  .ov-icon:nth-child(2){ --ox:-16px; --oy:6px; }
.ov-left  .ov-icon:nth-child(3){ --ox:24px;  --oy:-2px; }
.ov-right .ov-icon:nth-child(1){ --ox:-24px; --oy:10px; }
.ov-right .ov-icon:nth-child(2){ --ox:16px;  --oy:-6px; }
.ov-right .ov-icon:nth-child(3){ --ox:-24px; --oy:2px; }
.ov-right{ margin-top:30px; }   /* stagger the right column so rows aren't perfectly aligned */
@media (prefers-reduced-motion:reduce){
  .ov-icon{ animation:none; transform:translate(var(--ox,0px), var(--oy,0px)); }
}
/* breathing zone between the card story and the overview so the next pin eases in (desktop) */
@media (min-width:901px){ .svc-overview{ margin-top:12vh; } }

/* ---------- responsive ---------- */
@media (max-width:900px){
  .svc-card{ padding:28px 22px 30px; border-radius:22px; }
  .svc-body{ grid-template-columns:1fr; gap:22px; margin-top:18px; }
  .svc-row{ grid-template-columns:96px 1fr; gap:12px; }
  .svc-stage{ gap:18px; }
  .svc-title{ font-size:1.5rem; }
  .svc-stack .sec-head{ padding:5vh 0 3.5vh; }
  /* overview → intentional mobile stack: heading first, then TWO tidy rows of three
     icons on a uniform grid (no floating arc, no 2+1 wrap, no idle drift → aligned) */
  .svc-overview{ min-height:auto; padding:7vh 0; }
  .ov-grid{ display:flex; flex-direction:column; gap:30px; }
  .ov-center{ order:-1; }
  .ov-col{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px 10px; width:100%; align-items:start; }
  .ov-right{ margin-top:0; }
  .ov-icon{ width:auto; --ox:0px; --oy:0px; animation:none; transform:none; gap:9px; }
  .ov-badge{ width:60px; height:60px; font-size:26px; border-radius:18px; }
  .ov-label{ font-size:.76rem; }
}

/* ==========================================================================
   BUSINESS OWNERS (employers.html) — pinned editorial scroll sections
   ========================================================================== */
/* highlighter mark for a key phrase in a display heading (e.g. hero "#1 business problem") */
/* Signature orange highlighter mark — on the manual .hl-mark span AND, site-wide,
   on the key phrase every major heading already emphasises (title <b>, display <em>). */
/* Signature orange highlighter — ONE continuous slim marker behind the WHOLE heading.
   It lives on an inline .hl wrapper span, so box-decoration-break:clone draws a neat
   band on every wrapped line at a fixed em-height (thickness stays proportional at every
   breakpoint). Being pure CSS on the wrapper, the marker and the text paint together on
   the first frame — no flash, no delayed styling. It sets background only, so the bold
   <b>/<em> emphasis inside keeps its own weight/size/style completely untouched. */
.hl-mark{
  display:inline;
  background-image:linear-gradient(rgba(242,111,33,.24), rgba(242,111,33,.24));
  background-repeat:no-repeat;
  /* start collapsed and hidden until the web font is ready, so the marker never paints
     before the heading glyphs (no "highlight-first" flash). It then draws in behind the
     text — once — as the font loads. */
  background-size:0 .30em;
  background-position:0 84%;
  padding:0 .04em; border-radius:2px;
  transition:background-size .6s var(--ease);
  -webkit-box-decoration-break:clone; box-decoration-break:clone; }
html.fonts-ready .hl-mark{ background-size:100% .30em; }
/* ---- Section 1: The Problem We Solve ----
   When JS pins the section (.eb-sec), the heading sits at the top and all six
   rows fit in the one viewport; the engine drives the sequential reveal so CSS
   transitions/hover are disabled here. */
@media (min-width:901px){
  #problem.eb-sec{ min-height:100vh; box-sizing:border-box; padding-top:104px; padding-bottom:34px;
    display:flex; flex-direction:column; justify-content:flex-start; }
  #problem.eb-sec .wrap{ width:100%; }
  #problem.eb-sec .sec-head{ margin-bottom:20px; }
  #problem.eb-sec .prob-list{ gap:9px; max-width:920px; }
  #problem.eb-sec .prob{ padding:13px 22px; transition:none; cursor:default; }
  #problem.eb-sec .prob:hover{ transform:none; }               /* scroll controls it, not hover */
  #problem.eb-sec .prob .q{ font-size:.98rem; }
  #problem.eb-sec .prob .a{ max-height:none; overflow:visible; margin-top:2px; font-size:.85rem;
    line-height:1.42; }                                        /* reserve space → fade only, no shift */
}

/* ---- Section 2: Why Choose — horizontal centre-focus carousel ----
   Base (mobile / no-JS): a plain readable 3-col grid. When JS pins it (.eb-sec)
   the track becomes a full-width flex row that slides each card through the
   viewport centre; the engine sets each card's scale/opacity by its distance
   from centre (coverflow). */
.why-track{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; width:min(1120px,93vw);
  margin:26px auto 0; }
.why-track .feat-card{ margin:0; }
@media (max-width:900px){ .why-track{ grid-template-columns:1fr; width:min(460px,92vw); } }
@media (min-width:901px){
  #why.eb-sec{ min-height:100vh; box-sizing:border-box; padding:86px 0 28px;
    display:flex; flex-direction:column; justify-content:center; }
  #why.eb-sec .wrap{ flex:none; }
  #why.eb-sec .sec-head{ margin-bottom:16px; }
  /* All six cards in a compact 3×2 grid (NOT a horizontal coverflow track — that needed a
     scrub engine that isn't wired up and clipped the section to 2 cards). */
  #why.eb-sec .why-track{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px;
    width:min(1180px,94vw); margin:0 auto; }
  #why.eb-sec .why-track .feat-card{ min-height:0; display:flex; flex-direction:column; }
}

/* ---- Section 3: Hiring Process — pinned, heading fixed at top, 7 steps compacted to fit ---- */
@media (min-width:901px){
  #process.eb-sec{ min-height:100vh; box-sizing:border-box; padding:84px 0 22px;
    display:flex; flex-direction:column; justify-content:center; }
  #process.eb-sec .wrap{ width:100%; }
  #process.eb-sec .sec-head{ margin-bottom:10px; }
  #process.eb-sec .timeline{ margin:0 auto; }
  #process.eb-sec .tl-step{ padding:3px 0; grid-template-columns:46px 1fr; gap:18px; }
  #process.eb-sec .tl-num{ width:46px; height:46px; font-size:1.08rem; border-radius:14px; }
  #process.eb-sec .timeline::before{ left:22px; top:12px; bottom:12px; }
  #process.eb-sec .tl-body h3{ font-size:1.02rem; margin-bottom:0; }
  #process.eb-sec .tl-body p{ font-size:.85rem; line-height:1.32; }
}
/* ---- Sections 4 / 6 / 7: pinned, heading held, content revealed ---- */
@media (min-width:901px){
  #services.eb-sec, #stories.eb-sec, #faq.eb-sec{ min-height:100vh; box-sizing:border-box;
    padding:84px 0 24px; display:flex; flex-direction:column; justify-content:center; }
  #services.eb-sec .wrap, #stories.eb-sec .wrap, #faq.eb-sec .wrap{ width:100%; }
  #services.eb-sec .sec-head{ margin-bottom:14px; }
  #stories.eb-sec .sec-head{ margin-bottom:20px; }
  #faq.eb-sec .sec-head{ margin-bottom:16px; }
  /* compact the data table + faq list so these content-heavy chapters fit one screen */
  #services.eb-sec table.data th{ padding:9px 18px; font-size:.82rem; }
  #services.eb-sec table.data td{ padding:8px 18px; font-size:.85rem; }
  #faq.eb-sec .faq-item + .faq-item{ margin-top:8px; }
  #faq.eb-sec .faq-q{ padding:13px 22px; font-size:.98rem; }
  #faq.eb-sec .faq-q .pm{ width:24px; height:24px; }
}

/* ---- Section 5: Hiring Models — side-by-side editorial comparison (replaces the tabs) ---- */
.hm-compare{ display:grid; grid-template-columns:1fr 1fr; gap:30px; width:min(1140px,94vw);
  margin:26px auto 0; align-items:stretch; }
/* Editorial refinement: generous padding, clear vertical rhythm (icon → heading →
   subtitle → description → feature list → best-for), fixed icon column so every
   title/description aligns, and a hairline divider that turns "Best for" into a
   concluding footer. Cards stretch to equal height for visual balance. */
.hm-col{ padding:23px 28px 18px; border-radius:var(--r-lg); background:var(--glass2);
  border:1px solid rgba(255,255,255,.7); box-shadow:var(--sh-m);
  display:flex; flex-direction:column; }
.hm-col .chip{ margin-bottom:11px; width:40px; height:40px; }
.hm-col h3{ font-family:'Plus Jakarta Sans',sans-serif; font-size:1.34rem; font-weight:500; margin-bottom:3px;
  line-height:1.06; letter-spacing:-.015em; color:var(--ink); }
.hm-col .tagline{ font-family:'Plus Jakarta Sans'; font-style:italic; color:var(--accent);
  margin-bottom:12px; font-size:.94rem; letter-spacing:.004em; }
.hm-col > p:not(.hm-best){ font-size:.825rem; color:var(--ink2); line-height:1.4;
  margin-bottom:15px; max-width:56ch; }
.hm-col ul{ display:grid; gap:10px; margin:0 0 2px; padding:0; list-style:none; }
.hm-col li{ display:grid; grid-template-columns:17px 1fr; column-gap:13px; align-items:start; }
.hm-col li .ic{ width:15px; height:15px; color:var(--accent); margin-top:3px; }
.hm-col li b{ display:block; font-weight:600; font-size:.87rem; color:var(--ink);
  letter-spacing:.002em; margin-bottom:2px; line-height:1.26; }
.hm-col li span{ font-size:.8rem; color:var(--ink3); line-height:1.4; }
.hm-col .hm-best{ margin-top:auto; padding-top:11px; border-top:1px solid var(--hair);
  font-family:'Plus Jakarta Sans'; font-style:italic; color:var(--ink2); font-size:.86rem; line-height:1.44; }
@media (max-width:900px){ .hm-compare{ grid-template-columns:1fr; width:min(560px,92vw); } }
@media (min-width:901px){
  #models.eb-sec{ min-height:100vh; box-sizing:border-box; padding:80px 0 22px;
    display:flex; flex-direction:column; justify-content:center; }
  #models.eb-sec .wrap{ width:100%; }
  /* Compact the heading in the pinned state so the roomier cards get the vertical
     space; the editorial hierarchy now lives inside the cards. */
  #models.eb-sec .sec-head{ margin-bottom:6px; }
  #models.eb-sec .sec-head .title{ font-size:clamp(1.6rem,2.5vw,2rem); }
  #models.eb-sec .sec-head .lead{ font-size:.85rem; margin-top:2px; }
  #models.eb-sec .hm-compare{ margin-top:4px; gap:24px; }
  /* tighten the comparison cards so both fit within one screen when pinned */
  #models.eb-sec .hm-col{ padding:16px 22px 14px; }
  #models.eb-sec .hm-col .chip{ margin-bottom:7px; }
  #models.eb-sec .hm-col h3{ font-size:1.24rem; }
  #models.eb-sec .hm-col .tagline{ margin-bottom:8px; }
  #models.eb-sec .hm-col > p:not(.hm-best){ margin-bottom:10px; line-height:1.34; }
  #models.eb-sec .hm-col ul{ gap:7px; }
  #models.eb-sec .hm-col .hm-best{ padding-top:8px; }
}

/* ---- Job Seekers — Who Can Apply: editorial eligibility comparison ----
   Same card language as the employers Hiring Models (fixed icon column, aligned
   checklist, Fraunces italic footer note pinned to the card foot, equal height),
   tuned a touch more generous since this section is NOT pinned. Meaning is carried
   by icon tint within the orange/charcoal/grey palette (orange checks = warm,
   muted-grey crosses = reassuring). Gentle .reveal d1/d2/d3 upward stagger. */
.elig-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px;
  width:min(1180px,94vw); margin:6px auto 0; align-items:stretch; }
.elig-card{ display:flex; flex-direction:column; padding:34px 34px 30px;
  border-radius:var(--r-lg); background:var(--glass2); border:1px solid rgba(255,255,255,.7);
  backdrop-filter:blur(12px); box-shadow:var(--sh-m);
  transition:opacity .7s var(--ease), transform .55s var(--ease), box-shadow .45s var(--ease); }
.elig-card:hover{ transform:translateY(-4px); box-shadow:0 34px 70px -36px rgba(36,48,64,.46); }
.elig-card .chip{ margin-bottom:20px; width:48px; height:48px; border-radius:14px; font-size:22px; }
.elig-card h3{ font-size:1.44rem; font-weight:500; line-height:1.08; letter-spacing:-.015em;
  color:var(--ink); margin-bottom:8px; }
.elig-card .elig-intro{ font-size:.92rem; color:var(--ink2); line-height:1.55;
  margin-bottom:24px; max-width:36ch; }
.elig-card ul{ display:grid; gap:15px; margin:0; padding:0; list-style:none; }
.elig-card li{ display:grid; grid-template-columns:19px 1fr; column-gap:14px; align-items:start; }
.elig-card li .ic{ width:17px; height:17px; margin-top:3px; flex:none; }
.elig-card li span{ font-size:.93rem; color:var(--ink2); line-height:1.5; }
.elig-yes li .ic, .elig-do li .ic{ color:var(--accent); }
.elig-no li .ic{ color:var(--ink3); }
.elig-note{ margin-top:auto; padding-top:22px; border-top:1px solid var(--hair);
  font-family:'Plus Jakarta Sans'; font-style:italic; font-size:.98rem; line-height:1.5; }
.elig-yes .elig-note{ color:var(--accent); }
.elig-do .elig-note{ color:var(--ink); }
.elig-no .elig-note{ color:var(--ink2); }
@media (max-width:900px){ .elig-grid{ grid-template-columns:1fr; width:min(560px,100%); margin-top:4px; } }

/* ---- Job Seekers pinned sections (mirror the employers #process / #services) ---- */
@media (min-width:901px){
  /* How It Works — pin, heading fixed, 7 steps compacted to one viewport */
  #how.eb-sec{ min-height:100vh; box-sizing:border-box; padding:84px 0 22px;
    display:flex; flex-direction:column; justify-content:flex-start; }
  #how.eb-sec .wrap{ width:100%; }
  #how.eb-sec .sec-head{ margin-bottom:10px; }
  #how.eb-sec .timeline{ margin:0 auto; }
  #how.eb-sec .tl-step{ padding:3px 0; grid-template-columns:46px 1fr; gap:18px; }
  #how.eb-sec .tl-num{ width:46px; height:46px; font-size:1.08rem; border-radius:14px; }
  #how.eb-sec .timeline::before{ left:22px; top:12px; bottom:12px; }
  #how.eb-sec .tl-body h3{ font-size:1.02rem; margin-bottom:0; }
  #how.eb-sec .tl-body p{ font-size:.85rem; line-height:1.32; }
  /* Job Categories — pin, heading fixed, reveal 8 rows (compacted to fit) */
  #categories.eb-sec{ min-height:100vh; box-sizing:border-box; padding:82px 0 24px;
    display:flex; flex-direction:column; justify-content:center; }
  #categories.eb-sec .wrap{ width:100%; }
  #categories.eb-sec .sec-head{ margin-bottom:12px; }
  #categories.eb-sec .sec-head .lead{ margin-top:6px; }
  #categories.eb-sec table.data th{ padding:9px 20px; font-size:.82rem; }
  #categories.eb-sec table.data td{ padding:7px 20px; font-size:.85rem; }
  /* Who Can Apply — pinned spotlight: centre the heading + 3 cards, compact the
     cards so all three fit one viewport (JS handles the sequential emphasis). */
  #eligibility.eb-sec{ min-height:100vh; box-sizing:border-box; padding:80px 0 22px;
    display:flex; flex-direction:column; justify-content:center; }
  #eligibility.eb-sec .wrap{ width:100%; }
  #eligibility.eb-sec .sec-head{ margin-bottom:14px; }
  #eligibility.eb-sec .sec-head .title{ font-size:clamp(1.8rem,2.9vw,2.35rem); }
  #eligibility.eb-sec .sec-head .lead{ margin-top:6px; font-size:1rem; }
  #eligibility.eb-sec .elig-grid{ margin-top:4px; }
  #eligibility.eb-sec .elig-card{ padding:24px 26px 20px; }
  #eligibility.eb-sec .elig-card .chip{ margin-bottom:13px; width:42px; height:42px; }
  #eligibility.eb-sec .elig-card h3{ font-size:1.28rem; margin-bottom:6px; }
  #eligibility.eb-sec .elig-card .elig-intro{ font-size:.85rem; margin-bottom:15px; line-height:1.48; }
  #eligibility.eb-sec .elig-card ul{ gap:11px; }
  #eligibility.eb-sec .elig-card li{ grid-template-columns:18px 1fr; column-gap:12px; }
  #eligibility.eb-sec .elig-card li span{ font-size:.85rem; line-height:1.42; }
  #eligibility.eb-sec .elig-note{ padding-top:15px; font-size:.9rem; }
}

/* ---- Blog: editorial featured card + pinned "More Insights" grid ---- */
.blog-feat{ display:grid; grid-template-columns:1.15fr .85fr; overflow:hidden;
  border-radius:var(--r-lg); background:var(--glass2); border:1px solid rgba(255,255,255,.7);
  box-shadow:var(--sh-m); }
.blog-feat .bf-body{ padding:48px 46px; display:flex; flex-direction:column; align-items:flex-start; }
.blog-feat .bf-kicker{ font-family:'Plus Jakarta Sans'; font-style:italic; color:var(--accent);
  font-size:.96rem; letter-spacing:.005em; margin-bottom:12px; }
.blog-feat .bf-body h2{ font-family:'Plus Jakarta Sans',sans-serif; font-size:clamp(1.6rem,2.4vw,2.15rem);
  font-weight:500; line-height:1.08; letter-spacing:-.015em; margin-bottom:14px; }
.blog-feat .bf-body p{ color:var(--ink2); line-height:1.62; margin-bottom:28px; max-width:46ch; }
.blog-feat .bf-visual{ background:linear-gradient(135deg,var(--orange),#d85f16);
  display:grid; place-items:center; min-height:260px; }
.blog-feat .bf-visual .ic{ width:72px; height:72px; color:#fff; }
/* blog article cards — Fraunces titles (was inline Manrope), editorial rhythm */
body[data-page="blog"] .feat-card{ display:flex; flex-direction:column; }
body[data-page="blog"] .feat-card .num{ font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; }
body[data-page="blog"] .feat-card h3{ font-family:'Plus Jakarta Sans',sans-serif; font-size:1.12rem; font-weight:500;
  line-height:1.24; letter-spacing:-.01em; margin:12px 0 0; }
body[data-page="blog"] .feat-card .soon{ margin-top:auto; padding-top:14px; font-family:'Plus Jakarta Sans';
  font-style:italic; color:var(--ink3); font-size:.84rem; }
@media (max-width:760px){ .blog-feat{ grid-template-columns:1fr; } .blog-feat .bf-body{ padding:34px 28px; } }
@media (min-width:901px){
  /* More Insights — pin, heading held at top, grid cascades in */
  #insights.eb-sec{ min-height:100vh; box-sizing:border-box; padding:86px 0 40px;
    display:flex; flex-direction:column; justify-content:center; }
  #insights.eb-sec .wrap{ width:100%; }
  #insights.eb-sec .sec-head{ margin-bottom:28px; }
}

/* ============ ABOUT — de-pinned static sections (editorial refactor) ============
   Story + Founder previously revealed via a --p scrub while pinned; now they show their
   COMPLETE content on every width (one gentle entrance is added once in about.html's JS). */
body[data-page="about"] .story-static .develop,
body[data-page="about"] .qb-static blockquote.develop{ -webkit-mask-image:none !important; mask-image:none !important; }
body[data-page="about"] .qb-static .founder-grid.reveal{ opacity:1 !important; transform:none !important; transition:none !important; }
body[data-page="about"] .qb-static .founder-sig{ opacity:1 !important; transform:none !important; }
body[data-page="about"] .qb-static{ min-height:0 !important; }




/* ============ BUSINESS OWNERS — de-pinned static sections (editorial refactor) ============
   The Problem rows render in their SOLVED state: green check (not the X), question AND the
   solution answer both visible. Other sections use their base layouts + main.js .reveal. */
body[data-page="employers"] #problem .prob{ align-items:flex-start; }
body[data-page="employers"] #problem .prob-state .x{ display:none; }
body[data-page="employers"] #problem .prob-state .v{ opacity:1 !important; transform:none !important; }
body[data-page="employers"] #problem .prob .a{ max-height:none !important; overflow:visible !important; opacity:1 !important; margin-top:4px; }



/* ============ ABOUT — one-viewport chapters (desktop, editorial pin refactor) ============ */
@media(min-width:901px){
  body[data-page="about"] #story,
  body[data-page="about"] #vision{ min-height:100vh; display:flex; flex-direction:column; justify-content:center; box-sizing:border-box; padding:96px 0 44px; }
  /* Founder's Message: heavier top padding offsets the fixed navbar so the pinned quote
     lands at the OPTICAL centre of the visible viewport (not tucked under the nav). */
  body[data-page="about"] #founder{ min-height:100vh; display:flex; flex-direction:column; justify-content:center; box-sizing:border-box; padding:140px 0 60px; }

  /* Core Values: a balanced 3×3 grid (12-col, every card spans 4) sized to fit within ONE
     viewport so the section pins & pauses (content must be ≤ screen height, else the pin engine
     skips pinning to avoid clipping the lower cards). */
  body[data-page="about"] #values{ min-height:100vh; display:flex; flex-direction:column; justify-content:center; box-sizing:border-box; padding:96px 0 24px; }
  body[data-page="about"] #values .sec-head{ margin-bottom:10px; }
  body[data-page="about"] #values .cv-stage{ grid-template-columns:repeat(12,1fr); gap:12px 14px; width:min(1440px,94vw); max-width:1440px; margin-top:0; }
  body[data-page="about"] #values .cv-card{ grid-column:span 4; }              /* 3 across × 3 rows = 9 */
  body[data-page="about"] #values .cv-card:last-child{ grid-column:span 4; justify-self:auto; width:auto; }
  body[data-page="about"] #values .cv-face{ padding:13px 18px; display:flex; flex-direction:column; }
  body[data-page="about"] #values .cv-num{ font-size:.86rem; }
  /* bold headings, prominent but sized so the 3×3 grid still fits a short laptop without the
     auto-fit shrinking the text too far (kept larger than the original, less tall than the max). */
  body[data-page="about"] #values .cv-title{ font-size:1.2rem; font-weight:700; margin-top:5px; line-height:1.14; }
  body[data-page="about"] #values .cv-accent{ margin:5px 0 7px; }
  /* bolder, darker, upright — the italic muted ink2 at this scaled size was hard to read */
  body[data-page="about"] #values .cv-desc{ font-size:.94rem; line-height:1.4; font-weight:600; font-style:normal; color:var(--ink); }
}
/* Only on genuinely tall screens (room to spare) enlarge the value cards a little */
@media(min-width:1360px) and (min-height:1000px){
  body[data-page="about"] #values .cv-face{ padding:28px 30px; }
  body[data-page="about"] #values .cv-title{ font-size:1.5rem; font-weight:700; }
  body[data-page="about"] #values .cv-desc{ font-size:1.06rem; line-height:1.5; }
}

/* ============ SERVICES — "Six Ways" card grid, pinned chapter (mirrors About values) ============ */
/* bolder, darker, upright description text — legible at the pinned/scaled size */
body[data-page="services"] #svc-grid .cv-desc{ font-weight:600; font-style:normal; color:var(--ink); }
@media(min-width:901px){
  body[data-page="services"] #svc-grid{ min-height:100vh; display:flex; flex-direction:column; justify-content:center; box-sizing:border-box; padding:64px 0 28px; }
  body[data-page="services"] #svc-grid .sec-head{ margin-bottom:14px; }
  /* the intro was capped narrow (58ch) and wrapped to 5 cramped lines — widen it so it reads
     on ~3 balanced lines; balance keeps the line lengths even (no short orphan tail). */
  body[data-page="services"] #svc-grid .sec-head .lead{ max-width:820px; text-wrap:balance; }
  body[data-page="services"] #svc-grid .cv-stage{ grid-template-columns:repeat(3,1fr); gap:14px 16px; width:min(1440px,94vw); max-width:1440px; margin:14px auto 0; }
  body[data-page="services"] #svc-grid .cv-card:last-child{ grid-column:auto; justify-self:auto; width:auto; }   /* reset base 7th-card centering for the 3×2 grid */
  body[data-page="services"] #svc-grid .cv-face{ padding:18px 22px; display:flex; flex-direction:column; }
  body[data-page="services"] #svc-grid .cv-num{ font-size:.86rem; }
  body[data-page="services"] #svc-grid .cv-title{ font-size:1.16rem; margin-top:5px; line-height:1.14; }
  body[data-page="services"] #svc-grid .cv-accent{ margin:7px 0 9px; }
  body[data-page="services"] #svc-grid .cv-desc{ font-size:.92rem; line-height:1.4; }
  /* CTA sub-line on a single line on desktop (lift the 60ch cap; nowrap holds it to one row).
     On mobile the query doesn't apply, so it wraps naturally and never overflows. */
  body[data-page="services"] .cta-inner p{ max-width:none; white-space:nowrap; }
}

/* ============ CONTACT — "Get in Touch" as a one-viewport pinned chapter ============ */
/* No hero above it any more, so reserve space for the fixed navbar (all sizes) */
body[data-page="contact"] #reach{ padding-top:120px; }
@media(max-width:600px){ body[data-page="contact"] #reach{ padding-top:104px; } }
@media(min-width:901px){
  body[data-page="contact"] #reach{ min-height:100vh; display:flex; flex-direction:column; justify-content:center; box-sizing:border-box; padding:96px 0 26px; }
  body[data-page="contact"] #reach .crumb{ display:none; }   /* breadcrumb reads oddly when the chapter is vertically centred */
  body[data-page="contact"] #reach .sec-head{ margin-bottom:14px; }
}
/* Contact page "Send us a message": larger heading & fields, but tightened vertical spacing so
   the whole section (left cards + right form) fits one viewport without the bottom being cut. */
body[data-page="contact"] #reach .form-card{ padding:26px 32px; }
body[data-page="contact"] #reach .form-card h2{ font-size:1.6rem !important; margin-bottom:4px; }
body[data-page="contact"] #reach .form-card > p{ font-size:1rem !important; margin-bottom:14px; }
body[data-page="contact"] #reach .fld{ margin-bottom:13px; }
body[data-page="contact"] #reach .fld textarea{ min-height:54px; }
body[data-page="contact"] #reach .fld input,
body[data-page="contact"] #reach .fld textarea,
body[data-page="contact"] #reach .fld select,
body[data-page="contact"] #reach .fld label{ font-size:1.05rem; }
body[data-page="contact"] #reach .btn.lg{ font-size:1.02rem; }
body[data-page="contact"] #reach .form-note{ margin-top:12px; }
@media(min-width:901px){ body[data-page="contact"] #reach .form-card{ padding:30px 40px; } }
@media(max-width:600px){ body[data-page="contact"] #reach .form-card{ padding:26px 22px; } }


/* ============ BUSINESS OWNERS — every section a one-viewport pinned chapter ============ */

/* Hero — promoted headline, clear hierarchy */
.eb-hero-title{ font-size:clamp(2.1rem,4.8vw,3.7rem); line-height:1.05; }
.eb-hero-l1{ display:block; font-weight:300; color:var(--ink3); font-size:.62em; letter-spacing:-.005em; margin-bottom:4px; }
.eb-hero-l2{ display:block; font-weight:600; color:var(--ink); }

/* ============ Hiring Models — editorial parallel timelines (no cards) ============
   Two flows branch from a single node under the heading; each benefit is a milestone on
   a vertical connector line; "Best for" is the final highlighted milestone. No boxes.
   Each model reads: Model -> Features (timeline) -> Conclusion ("Best for" highlight card).
   NO centre connector — the two models are independent. The timeline ENDS after the last
   feature; "Best for" is a separate card, never another timeline point. Heights are fluid
   (content decides), so the section adapts inside the pin on any screen. */
/* width:100% + max-width + auto margins reliably centres the block (the older width:min()
   let the max-width win and the auto margins collapse to 0, pushing it left of centre). */
#models .hm-split{ position:relative; width:100%; max-width:1040px; margin-left:auto; margin-right:auto; padding-top:4px; }
/* Strict 50/50 grid; align-items:stretch makes both columns share the taller model's height so
   every element — icon, label, title, each feature row, and the "Best for" card — sits on a
   shared baseline. Feature rows already line up by index (identical row height + header height). */
#models .hm-flows{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(20px,2.4vw,30px); align-items:stretch; }
/* per-model accent identity (matches the Hiring Models page): Model 01 teal, Model 02 orange */
#models .hm-flow.hm-a{ --m:#333333; --m2:#616161; --m-t:rgba(26,26,26,.045); --m-t2:rgba(26,26,26,.08); --m-bd:rgba(26,26,26,.14); --m-glow:rgba(26,26,26,.26); }
#models .hm-flow.hm-b{ --m:#F26F21; --m2:#F9A56A; --m-t:rgba(242,111,33,.07); --m-t2:rgba(242,111,33,.13); --m-bd:rgba(242,111,33,.22); --m-glow:rgba(242,111,33,.30); }
#models .hm-flow{ position:relative; display:flex; flex-direction:column; height:auto; overflow:hidden;
  padding:24px 24px 22px; border-radius:20px; background:linear-gradient(180deg,var(--m-t),transparent 52%);
  border:1px solid var(--m-bd); box-shadow:0 22px 46px -38px var(--m-glow), 0 5px 16px -14px rgba(20,24,31,.16);
  transition:transform .3s var(--ease), box-shadow .3s var(--ease); }
#models .hm-flow::before{ content:""; position:absolute; inset:0 0 auto 0; height:3px; background:linear-gradient(90deg,var(--m),var(--m2)); }
/* ---- hierarchy: kicker (small caps) → title (large) → subtitle (light). Icons removed. ---- */
#models .hm-fhead{ margin-bottom:24px; }
#models .hm-kicker{ display:inline-block; font-family:'Inter'; font-weight:800; font-size:.66rem; letter-spacing:.16em; text-transform:uppercase; color:var(--m); background:var(--m-t2); padding:4px 10px; border-radius:100px; margin-bottom:11px; }
#models .hm-fhead h3{ font-family:'Plus Jakarta Sans',sans-serif; font-size:1.55rem; font-weight:700; line-height:1.06; margin:0 0 9px; color:var(--ink); letter-spacing:-.02em; transition:color .35s var(--ease); }
#models .hm-tag{ font-family:'Inter'; font-weight:600; font-size:.88rem; color:var(--m); line-height:1.5; margin:0; }
/* ---- timeline: a thin, soft, rounded connector with dots perfectly centred on the line.
   Drawn per-item so it stops cleanly at the last feature's dot (never continues past it). ---- */
/* margin-bottom guarantees a clear gap between the last feature and the "Best for" footer even
   in the taller column (where the footer would otherwise sit right under the last timeline dot). */
#models .hm-line{ list-style:none; margin:0 0 32px; padding:0; position:relative; }
#models .hm-line li{ position:relative; padding:0 0 18px 32px; }
#models .hm-line li:last-child{ padding-bottom:0; }
#models .hm-line li::before{ content:""; position:absolute; left:5px; top:16px; bottom:-1px; width:2px; border-radius:2px; background:linear-gradient(180deg,var(--m),var(--m2)); opacity:.5; }
#models .hm-line li:last-child::before{ display:none; }   /* ← timeline ends cleanly */
#models .hm-mile{ position:absolute; left:0; top:4px; width:12px; height:12px; border-radius:50%; background:linear-gradient(140deg,var(--m),var(--m2)); border:none; box-sizing:border-box; box-shadow:0 3px 8px -2px var(--m-glow); transition:transform .3s var(--btr), box-shadow .35s var(--ease); }
#models .hm-mtext{ display:block; }
#models .hm-mtext b{ display:block; font-family:'Inter'; font-weight:700; font-size:.95rem; color:var(--ink); line-height:1.3; margin-bottom:3px; letter-spacing:.002em; }
#models .hm-mtext em{ display:block; font-style:normal; font-family:'Inter'; font-weight:400; font-size:.85rem; color:var(--ink3); line-height:1.5; }
/* ---- "Best for" = a minimal FOOTER (not a card): a thin accent divider, then the label + line.
   margin-top:auto pins it to the column bottom; a shared min-height keeps both footers equal so
   the divider lines and labels align across both models even with different item counts.
   font-style:normal resets the legacy global `.hm-best{font-style:italic}` (line ~355). ---- */
#models .hm-best{ width:100%; max-width:none; margin:auto 0 0; min-height:84px; box-sizing:border-box;
  padding:14px 16px; border:1px solid var(--m-bd); border-left:4px solid var(--m); border-radius:13px;
  background:linear-gradient(120deg,var(--m-t2),var(--m-t)); box-shadow:0 10px 22px -18px var(--m-glow);
  font-style:normal; transition:border-color .35s var(--ease), box-shadow .35s var(--ease); }
#models .hm-best-top{ display:flex; align-items:center; gap:7px; margin-bottom:6px; }
#models .hm-best-ic{ width:auto; height:auto; background:none; color:var(--m); border-radius:0; display:inline-flex; }
#models .hm-best-ic .ic{ width:14px; height:14px; }
#models .hm-best-lbl{ font-family:'Inter'; font-weight:800; font-size:.7rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--m); }
/* bolder + darker so the conclusion line pulls the eye */
#models .hm-best p{ margin:0; font-family:'Inter'; font-weight:600; font-size:.92rem; line-height:1.55; color:var(--ink); }
/* subtle hover — gentle feedback only (no cards) */
@media(hover:hover){
  #models .hm-flow:hover{ transform:translateY(-4px); box-shadow:0 40px 72px -44px var(--m-glow), 0 12px 26px -18px rgba(20,24,31,.24); }
  #models .hm-flow:hover .hm-mile{ transform:scale(1.28); box-shadow:0 5px 14px -2px var(--m-glow); }
  #models .hm-flow:hover .hm-best{ border-color:var(--m); box-shadow:0 16px 30px -18px var(--m-glow); }
}
/* tablet / mobile: the two models stack, each keeping its own Best-for footer */
@media(max-width:900px){
  #models .hm-flows{ grid-template-columns:1fr; gap:44px; }
  #models .hm-split{ width:100%; max-width:480px; padding-top:8px; }
  #models .hm-best{ min-height:0; margin:24px 0 0; }
}

/* Get Talent Now — file upload control */
.fld-file{ margin-bottom:4px; }
.file-cap{ display:block; font-size:.82rem; color:var(--ink2); margin-bottom:8px; font-weight:600; }
.file-cap em{ font-style:normal; color:var(--ink3); font-weight:400; margin-left:6px; }
/* higher specificity than the generic ".fld label" floating-label rule so the upload
   control isn't turned into a pointer-events:none absolute label (that made it unclickable) */
.fld .file-drop{ position:relative; pointer-events:auto; top:auto; left:auto; }
.file-drop{ display:flex; width:100%; box-sizing:border-box; align-items:center; gap:10px; border:1.5px dashed var(--hair); border-radius:12px; padding:14px 16px; cursor:pointer; transition:border-color .3s var(--ease), background .3s var(--ease); }
.file-drop input[type=file]{ position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.file-drop:hover{ border-color:var(--accent); background:var(--accent-t); }
.file-drop .ic{ width:18px; height:18px; color:var(--accent); transform:rotate(-90deg); flex:none; }
.file-drop .file-name{ font-size:.9rem; color:var(--ink3); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.file-drop.has-file .file-name{ color:var(--ink); font-weight:600; }

@media(min-width:901px){
  /* Hero: fills most of the viewport and vertically centres its content; the strip left
     at the bottom lets the next section's label + heading peek into view (see #problem
     below), inviting the scroll before it pins. */
  body[data-page="employers"] .hero,
  body[data-page="job-seekers"] .hero{ min-height:80vh; padding:118px 0 40px; display:flex; align-items:center; }
  body[data-page="employers"] .hero>.wrap,
  body[data-page="job-seekers"] .hero>.wrap{ width:100%; }
  /* Problem: compact, vertically-centred editorial grid (see the dense card rules below). */

  /* Every section fills one viewport, content centred both axes */
  body[data-page="employers"] #problem,
  body[data-page="employers"] #why,
  body[data-page="employers"] #process,
  body[data-page="employers"] #services,
  body[data-page="employers"] #models,
  body[data-page="employers"] #stories,
  body[data-page="employers"] #faq,
  body[data-page="employers"] #contact{
    min-height:100vh; display:flex; flex-direction:column; justify-content:center;
    box-sizing:border-box; padding:82px 0 24px;
  }
  body[data-page="employers"] #problem .sec-head,
  body[data-page="employers"] #why .sec-head,
  body[data-page="employers"] #process .sec-head,
  body[data-page="employers"] #services .sec-head,
  body[data-page="employers"] #models .sec-head,
  body[data-page="employers"] #stories .sec-head,
  body[data-page="employers"] #faq .sec-head,
  body[data-page="employers"] #contact .sec-head{ margin-bottom:14px; }

  /* Problem — compact 2×3 editorial grid: dense equal-height cards, vertically-centred
     content, strong problem→solution hierarchy, small integrated SOLVED pill. */
  body[data-page="employers"] #problem .sec-head{ margin-bottom:20px !important; }
  body[data-page="employers"] #problem .prob-list{ grid-template-columns:1fr 1fr; grid-auto-rows:1fr; gap:12px 16px; max-width:1060px; margin:0 auto; }
  body[data-page="employers"] #problem .prob{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:16px; padding:15px 20px; height:100%; box-sizing:border-box; }
  body[data-page="employers"] #problem .prob-state{ width:36px; height:36px; margin:0; align-self:center; }
  body[data-page="employers"] #problem .prob-state .ic{ width:18px; height:18px; }
  body[data-page="employers"] #problem .prob-txt{ align-self:center; }
  body[data-page="employers"] #problem .prob .q{ font-size:.98rem; font-weight:600; line-height:1.34; color:var(--ink); }
  body[data-page="employers"] #problem .prob .a{ font-size:.82rem; line-height:1.5; margin-top:3px; color:var(--ink3); }
  body[data-page="employers"] #problem .prob .tag{ position:relative; align-self:center; margin:0 0 0 20px; font-size:.6rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--orange); background:var(--orange-t); padding:5px 11px; border-radius:100px; white-space:nowrap; }
  /* subtle "problem ──► solved" connector into the pill */
  body[data-page="employers"] #problem .prob .tag::before{ content:""; position:absolute; right:calc(100% + 7px); top:50%; width:14px; height:1.5px; border-radius:2px; background:var(--orange); opacity:.5; }

  /* Why — 3×2 feature grid */
  body[data-page="employers"] #why .why-track{ gap:16px; }
  body[data-page="employers"] #why .why-track .feat-card{ padding:18px 20px; min-height:0; }
  body[data-page="employers"] #why .feat-card .num{ margin-bottom:5px; }
  body[data-page="employers"] #why .feat-card h3{ font-size:1.08rem; margin:8px 0 4px; }
  body[data-page="employers"] #why .feat-card p{ font-size:.86rem; line-height:1.38; }

  /* Process — 7 steps as a compact 2-column grid, filled COLUMN-FIRST so the order is
     1·2·3·4 down the left column, then 5·6·7 down the right (fits one screen, no tall timeline) */
  body[data-page="employers"] #process .timeline{ max-width:1060px; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:repeat(4,auto); grid-auto-flow:column; gap:8px 40px; }
  body[data-page="employers"] #process .timeline::before{ display:none; }
  body[data-page="employers"] #process .tl-step{ grid-template-columns:44px 1fr; gap:16px; padding:9px 0; }
  body[data-page="employers"] #process .tl-num{ width:42px; height:42px; font-size:1rem; border-radius:12px; }
  body[data-page="employers"] #process .tl-body h3{ font-size:1.02rem; margin:0 0 2px; }
  body[data-page="employers"] #process .tl-body p{ font-size:.85rem; line-height:1.36; }
  body[data-page="employers"] #process .eb-cta{ margin-top:16px !important; }

  /* Services table */
  body[data-page="employers"] #services .data th,
  body[data-page="employers"] #services .data td{ padding:11px 14px; font-size:.9rem; }

  /* Get Talent Now form — compact so all 13 fields fit inside the pinned section */
  body[data-page="employers"] #contact .form-card{ max-width:820px; padding:18px 30px; }
  body[data-page="employers"] #contact .form-grid{ gap:0 22px; }
  body[data-page="employers"] #contact .fld{ margin-bottom:8px; }
  body[data-page="employers"] #contact .fld textarea{ min-height:50px; }
  body[data-page="employers"] #contact .form-note{ margin-top:10px; }
}

/* Business Owners — hero two-column (title left · statement right) */
.eb-hero-statement{ font-family:'Plus Jakarta Sans',sans-serif; font-weight:500; font-size:clamp(1.85rem,2.9vw,2.7rem); line-height:1.16; color:var(--ink); margin:0 0 16px; letter-spacing:-.015em; text-wrap:balance; }
.eb-hero-statement b{ font-weight:600; }
.eb-hero-sub{ font-size:1.05rem; color:var(--ink2); line-height:1.55; margin:0; max-width:42ch; }
/* sub sits under the heading in the left column; the right column holds the hero illustration */
.eb-hero-sub-left{ margin-top:16px; }
.eb-hero-grid{ display:grid; gap:26px; margin-top:14px; }
.eb-hero-aside{ border-left:2px solid var(--accent); padding-left:20px; }
/* hero illustration — merged into the page (no box/frame): multiply drops the white paper and a
   soft radial mask feathers the edges so only the sketch shows, blended with the background. */
.eb-hero-visual{ position:relative; width:100%; max-width:470px; margin-left:auto; margin-right:auto; }
.eb-hero-visual img{ width:100%; height:auto; display:block; mix-blend-mode:multiply;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 15%,#000 85%,transparent),linear-gradient(to bottom,transparent,#000 12%,#000 88%,transparent);
  mask-image:linear-gradient(to right,transparent,#000 15%,#000 85%,transparent),linear-gradient(to bottom,transparent,#000 12%,#000 88%,transparent);
  -webkit-mask-composite:source-in; mask-composite:intersect; }
@media(max-width:900px){
  .eb-hero-visual{ max-width:460px; margin:8px auto 0; }
}
@media(min-width:901px){
  .eb-hero-grid{ grid-template-columns:1.06fr .94fr; gap:56px; align-items:center; margin-top:18px; }
  .eb-hero-main .hero-actions{ margin-top:30px; }
  .eb-hero-aside{ padding-left:30px; }
}

/* Large, tall screens only: fill the pinned chapters so centred content doesn't float
   in empty space. Height-gated so wide-but-short laptops (1366×768) keep the compact
   sizing and never overflow the pinned viewport. */
@media(min-width:1360px) and (min-height:900px){
  body[data-page="employers"] .sec-head .title{ font-size:clamp(2.15rem,2.5vw,2.7rem); }
  body[data-page="employers"] .sec-head{ margin-bottom:28px !important; }

  body[data-page="employers"] #problem .prob-list{ max-width:1280px; gap:20px; }
  body[data-page="employers"] #problem .prob{ padding:22px 26px; }
  body[data-page="employers"] #problem .prob .q{ font-size:1.04rem; }
  body[data-page="employers"] #problem .prob .a{ font-size:.9rem; }

  body[data-page="employers"] #why .why-track{ max-width:1280px; gap:22px; }
  body[data-page="employers"] #why .why-track .feat-card{ padding:26px 26px; }
  body[data-page="employers"] #why .feat-card h3{ font-size:1.2rem; }
  body[data-page="employers"] #why .feat-card p{ font-size:.95rem; line-height:1.48; }

  body[data-page="employers"] #process .timeline{ max-width:1300px; gap:14px 76px; }
  body[data-page="employers"] #process .tl-step{ padding:12px 0; }
  body[data-page="employers"] #process .tl-num{ width:50px; height:50px; font-size:1.15rem; border-radius:15px; }
  body[data-page="employers"] #process .tl-body h3{ font-size:1.14rem; }
  body[data-page="employers"] #process .tl-body p{ font-size:.95rem; line-height:1.46; }

  body[data-page="employers"] #services .tbl-wrap{ max-width:1340px; margin-left:auto; margin-right:auto; }
  body[data-page="employers"] #services .data th,
  body[data-page="employers"] #services .data td{ padding:14px 20px; font-size:.98rem; }

  #models .hm-split{ max-width:1140px; }
  #models .hm-flows{ gap:64px; }
  #models .hm-fhead h3{ font-size:1.62rem; }
  #models .hm-tag{ font-size:.9rem; }
  #models .hm-line li{ padding-bottom:18px; }
  #models .hm-mtext b{ font-size:1rem; }
  #models .hm-mtext em{ font-size:.87rem; }
  #models .hm-final .hm-mtext em{ font-size:.93rem; }

  body[data-page="employers"] #stories .tst-grid{ max-width:1300px; margin:0 auto; }
  body[data-page="employers"] #faq .faq{ max-width:1000px; }

  body[data-page="employers"] #contact .form-card{ max-width:920px; padding:38px 46px; }
  body[data-page="employers"] #contact .form-grid{ gap:6px 32px; }
  body[data-page="employers"] #contact .fld{ margin-bottom:20px; }
}



/* ============ JOB SEEKERS — one-viewport pinned chapters, matching Business Owners ============ */
@media(min-width:901px){
  body[data-page="job-seekers"] #why,
  body[data-page="job-seekers"] #eligibility,
  body[data-page="job-seekers"] #how,
  body[data-page="job-seekers"] #categories,
  body[data-page="job-seekers"] #stories,
  body[data-page="job-seekers"] #faq,
  body[data-page="job-seekers"] #register{
    min-height:100vh; display:flex; flex-direction:column; justify-content:center;
    box-sizing:border-box; padding:94px 0 28px;
  }
  body[data-page="job-seekers"] #why .sec-head,
  body[data-page="job-seekers"] #eligibility .sec-head,
  body[data-page="job-seekers"] #how .sec-head,
  body[data-page="job-seekers"] #categories .sec-head,
  body[data-page="job-seekers"] #stories .sec-head,
  body[data-page="job-seekers"] #faq .sec-head,
  body[data-page="job-seekers"] #register .sec-head{ margin-bottom:14px; }
  /* Register: compact heading so landing on "Register Free" shows the WHOLE form (incl. the
     submit button) on a laptop, instead of the tall heading pushing the form below the fold. */
  body[data-page="job-seekers"] #register .sec-head{ margin-bottom:8px; }
  body[data-page="job-seekers"] #register .sec-head .title{ font-size:1.72rem; line-height:1.16; }
  body[data-page="job-seekers"] #register .sec-head .lead{ font-size:.98rem; margin-top:6px; }
  /* Register form — same premium compact layout as the Business Owners Get Talent form */
  body[data-page="job-seekers"] #register .form-card{ max-width:760px; padding:18px 32px; }
  body[data-page="job-seekers"] #register .form-grid{ gap:0 24px; }
  body[data-page="job-seekers"] #register .fld{ margin-bottom:9px; }
  /* compact the FAQ list so it fits one screen when pinned */
  body[data-page="job-seekers"] #faq .faq-item + .faq-item{ margin-top:8px; }
  body[data-page="job-seekers"] #faq .faq-q .pm{ width:24px; height:24px; }

  /* Why: six feature cards, 3×2 grid */
  body[data-page="job-seekers"] #why .why-track{ gap:18px; }
  body[data-page="job-seekers"] #why .why-track .feat-card{ padding:20px 22px; min-height:0; }
  body[data-page="job-seekers"] #why .feat-card .num{ margin-bottom:6px; }
  body[data-page="job-seekers"] #why .feat-card h3{ font-size:1.12rem; margin:9px 0 5px; }
  body[data-page="job-seekers"] #why .feat-card p{ font-size:.9rem; line-height:1.45; }

  /* Who Can Apply: three equal-height cards read as one editorial comparison — footer
     notes pinned to a common baseline so nothing floats or looks lopsided */
  body[data-page="job-seekers"] #eligibility .elig-grid{ gap:22px; align-items:stretch; }
  body[data-page="job-seekers"] #eligibility .elig-card{ display:flex; flex-direction:column; padding:26px 28px 24px; }
  body[data-page="job-seekers"] #eligibility .elig-card .chip{ margin-bottom:14px; width:44px; height:44px; font-size:20px; }
  body[data-page="job-seekers"] #eligibility .elig-card h3{ font-size:1.22rem; margin-bottom:6px; }
  body[data-page="job-seekers"] #eligibility .elig-card .elig-intro{ font-size:.9rem; line-height:1.5; margin-bottom:16px; }
  body[data-page="job-seekers"] #eligibility .elig-card ul{ gap:12px; }
  body[data-page="job-seekers"] #eligibility .elig-card li span{ font-size:.9rem; line-height:1.45; }
  body[data-page="job-seekers"] #eligibility .elig-card .elig-note{ font-size:.86rem; line-height:1.5; margin-top:auto; padding-top:16px; }

  /* How It Works — 7 steps as a compact 2-column grid (1·2·3·4 left, 5·6·7 right), same as BO Process */
  body[data-page="job-seekers"] #how .timeline{ max-width:1060px; margin:0 auto; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:repeat(4,auto); grid-auto-flow:column; gap:8px 40px; }
  body[data-page="job-seekers"] #how .timeline::before{ display:none; }
  body[data-page="job-seekers"] #how .tl-step{ grid-template-columns:44px 1fr; gap:16px; padding:9px 0; }
  body[data-page="job-seekers"] #how .tl-num{ width:42px; height:42px; font-size:1rem; border-radius:12px; }
  body[data-page="job-seekers"] #how .tl-body h3{ font-size:1.02rem; margin:0 0 2px; }
  body[data-page="job-seekers"] #how .tl-body p{ font-size:.85rem; line-height:1.42; }

  /* Job Categories — full-width editorial data panel (wide, generous rows, clean wrapping) */
  body[data-page="job-seekers"] #categories .tbl-wrap{ max-width:1200px; margin:0 auto; width:100%; }
  body[data-page="job-seekers"] #categories .data th,
  body[data-page="job-seekers"] #categories .data td{ padding:15px 24px; font-size:.95rem; vertical-align:middle; }
  body[data-page="job-seekers"] #categories .data td:nth-child(2){ line-height:1.5; }

  /* FAQs */
  body[data-page="job-seekers"] #faq .faq-q{ padding:13px 22px; font-size:.98rem; }
}

/* Large, tall screens: fill like the Business Owners page */
@media(min-width:1360px) and (min-height:900px){
  body[data-page="job-seekers"] .sec-head .title{ font-size:clamp(2.15rem,2.5vw,2.7rem); }
  body[data-page="job-seekers"] .sec-head{ margin-bottom:28px !important; }
  body[data-page="job-seekers"] #why .why-track{ max-width:1280px; gap:24px; }
  body[data-page="job-seekers"] #why .why-track .feat-card{ padding:28px 28px; }
  body[data-page="job-seekers"] #why .feat-card h3{ font-size:1.24rem; }
  body[data-page="job-seekers"] #why .feat-card p{ font-size:.96rem; line-height:1.5; }
  body[data-page="job-seekers"] #eligibility .elig-grid{ max-width:1280px; margin:0 auto; gap:26px; }
  body[data-page="job-seekers"] #eligibility .elig-card{ padding:30px 32px 26px; }
  body[data-page="job-seekers"] #eligibility .elig-card li span{ font-size:.94rem; }
  body[data-page="job-seekers"] #how .timeline{ max-width:1300px; gap:14px 76px; }
  body[data-page="job-seekers"] #how .tl-step{ padding:14px 0; }
  body[data-page="job-seekers"] #how .tl-num{ width:50px; height:50px; font-size:1.15rem; }
  body[data-page="job-seekers"] #how .tl-body h3{ font-size:1.14rem; }
  body[data-page="job-seekers"] #how .tl-body p{ font-size:.95rem; line-height:1.5; }
  body[data-page="job-seekers"] #categories .tbl-wrap{ max-width:1340px; }
  body[data-page="job-seekers"] #categories .data th,
  body[data-page="job-seekers"] #categories .data td{ padding:18px 28px; font-size:1.02rem; }
  body[data-page="job-seekers"] #stories .tst-grid{ max-width:1300px; margin:0 auto; }
  body[data-page="job-seekers"] #faq .faq{ max-width:1000px; }
  body[data-page="job-seekers"] #register .form-card{ max-width:920px; padding:38px 46px; }
  body[data-page="job-seekers"] #register .form-grid{ gap:6px 32px; }
  body[data-page="job-seekers"] #register .fld{ margin-bottom:20px; }
}


/* ============ BLOG — one-viewport pinned chapters (desktop) ============ */
@media(min-width:901px){
  body[data-page="blog"] #featured,
  body[data-page="blog"] #insights{
    min-height:100vh; display:flex; flex-direction:column; justify-content:center;
    box-sizing:border-box; padding:96px 0 46px;
  }
  body[data-page="blog"] #insights .sec-head{ margin-bottom:24px; }
}


/* ============ PLAIN BACKGROUND — Home & About ============
   These two pages sit on ONE flat surface: no temple / illustration watermark, no ambient
   glows or blobs, no gradient washes, no alternating section tints. The dark CTA / finale
   blocks are kept — they're design blocks, not page background. */
body[data-page="home"], body[data-page="about"], body[data-page="employers"]{ background:#FCFCFA; }

/* decorative watermark + glow layers off (display:none also stops their art downloading) */
body[data-page="home"] .page-temple,
body[data-page="home"] .x-temple,
body[data-page="home"] .x-hero-glow,
body[data-page="home"] .x-founder-bg,
body[data-page="home"] .fin-blob,
body[data-page="about"] .about-bg,
body[data-page="about"] .cta-glow{ display:none !important; }

/* flatten every gradient wash / alternating tint down to the one plain surface */
body[data-page="home"] .x-hero,
body[data-page="home"] .x-founder,
body[data-page="home"] .x-gap,
body[data-page="home"] .section,
body[data-page="home"] .section.alt,
body[data-page="about"] .hero,
body[data-page="about"] .quote-band,
body[data-page="about"] .section,
body[data-page="about"] .section.alt,
body[data-page="employers"] .hero,
body[data-page="employers"] .section,
body[data-page="employers"] .section.alt{ background:none !important; }

/* ===== Pinned-chapter horizontal reflow — use the width, keep the type =====================
   A pinned chapter must fit the viewport height WITHOUT scaling. So when it is pinned we spend
   the available HORIZONTAL space instead: the container widens and the heading block tightens
   vertically, which lets multi-column card grids get WIDER (fewer wrapped lines → shorter rows)
   and trims dead top/bottom space. Card font sizes, paddings, buttons and icons are untouched;
   long-form paragraphs stay capped (p{max-width:68ch}) so text never over-widens. Result: the
   whole chapter — heading + cards — fits the screen at its designed size, with the empty side
   margins reclaimed. .te-sticky is added by the pin engine, so this only affects pinned state.
   Desktop only; the responsive breakpoints already handle ≤900px. ===== */
@media(min-width:901px){
  .te-sticky .wrap{ max-width:min(1520px, 95vw); }
  .te-sticky .sec-head{ margin-bottom:clamp(16px, 2.4vh, 26px); }
  /* generic multi-column card grids: reclaim side margins + tighten column gaps a touch */
  .te-sticky .why-track,
  .te-sticky .elig-grid{ width:min(1400px, 94vw); max-width:1400px; }
  .te-sticky .hm-compare{ width:min(1280px, 94vw); max-width:1280px; }
  .te-sticky .grid-4{ gap:16px; }
}

/* ===== Smart-fit tightening — engine-applied ONLY when a chapter would overflow ============
   The pin engine adds .te-tight to a section that is even 1px too tall, then re-measures. These
   rules trim the VERTICAL rhythm — heading margin, card gaps, block margins — so the whole chapter
   (heading + cards) fits the viewport height WITHOUT scaling or shrinking any font. Values scale
   gently with viewport height (clamp) so shorter laptops tighten a little more. Reflow happens
   before any internal scroll; a chapter only scrolls internally if it STILL overflows after this.
   !important is deliberate: it must win over the per-page spacing so the fit calculation holds. */
@media(min-width:901px){
  .te-tight .sec-head{ margin-bottom:clamp(8px, 1.4vh, 16px) !important; }
  .te-tight .sec-head .lead{ margin-top:6px !important; }
  .te-tight .cv-stage{ gap:clamp(8px, 1.1vh, 12px) 14px !important; }
  .te-tight .why-track,
  .te-tight .elig-grid{ gap:clamp(12px, 1.7vh, 20px) !important; }
  .te-tight .hm-compare{ gap:clamp(14px, 1.9vh, 24px) !important; }
  .te-tight .hm-flows{ gap:clamp(28px, 4vh, 60px) !important; }
  .te-tight .hm-line li{ padding-bottom:clamp(8px, 1.4vh, 16px) !important; }
  .te-tight .grid-4{ gap:clamp(10px, 1.5vh, 16px) !important; }
  .te-tight .compare{ gap:clamp(12px, 1.8vh, 22px) !important; }
  .te-tight .prob-list,
  .te-tight .prob-grid{ gap:clamp(10px, 1.5vh, 18px) !important; }
  .te-tight .story-p{ margin-bottom:clamp(8px, 1.3vh, 16px) !important; }
  .te-tight .timeline{ gap:clamp(6px, 1vh, 14px) 76px !important; }
  .te-tight .tl-step{ padding-top:clamp(5px, .9vh, 12px) !important; padding-bottom:clamp(5px, .9vh, 12px) !important; }
  .te-tight .fld{ margin-bottom:clamp(8px, 1.3vh, 14px) !important; }
}

/* ===== GLOBAL DESKTOP COMPACTION (width > 900px) ===========================================
   Shrinks the WHOLE desktop design ~10–13% so it fits comfortably across the full range of
   laptops WITHOUT browser zoom and WITHOUT transform:scale — same layout, colours, animations
   and proportions, just physically smaller. The single global lever is the root font-size: all
   type, labels and generic 1em icons are rem/em based, so this is the design's global type token
   and it scales every heading, body copy, button label, form field and inline icon at once,
   preserving the hierarchy. Spacing/padding/gaps are px, so they tighten via the shared classes.
   Pinned behaviour (ScrollTrigger / sticky / pin duration / internal scroll) is untouched. */
@media(min-width:901px){
  html{ font-size:14.4px; }                 /* was 16px → ~10% smaller type/labels/1em icons site-wide */

  /* Section & block rhythm ~15% tighter */
  .section{ padding:88px 0; }               /* was 104 */
  .section.tight{ padding:60px 0; }         /* was 72 */
  .sec-head{ margin-bottom:44px; }          /* was 52 */

  /* Buttons — slightly tighter, still comfortably tappable */
  .btn{ padding:12px 23px; }                /* was 14px 26px */
  .btn .ic{ width:16px; height:16px; }      /* was 18 → ~10% */
  .nav-cta .btn{ padding:10px 18px; }       /* was 11px 20px */

  /* Forms — lower input height + tighter field rhythm, still readable */
  .fld{ margin-bottom:18px; }               /* was 22 */
  .fld input,.fld textarea,.fld select{ padding:10px 2px; }   /* was 12px 2px */
  .fld textarea{ min-height:68px; }         /* was 80 */

  /* Generic multi-column grid gaps ~15% (page-tuned pinned grids keep their own values) */
  .grid-4{ gap:16px; }                      /* was 18 */
  .split, .hero-grid{ gap:52px; }
}

/* ===== COMPACT DESKTOP MODE — shorter laptop viewports (< 900px tall) =======================
   Same design, a slightly smaller footprint (~5–8%) so every pinned chapter fits comfortably
   across the range of desktop/laptop heights and DPI. No transform / scale / zoom — only type,
   spacing, padding and gaps tighten a little, via clamp()/vh so the amount scales with height.
   This is the site-wide layer; the per-page pinned tuning already drops to its "compact base"
   below 900px (the spacious tier is gated at min-height:900), and these globals cover the heroes,
   flow sections and anything not page-tuned. Visual hierarchy and content are unchanged. */
@media(min-width:901px) and (max-height:899px){
  /* Headings: H1 ~6% smaller, H2 ~5%, keeping the same weights/wrapping */
  .display{ font-size:clamp(1.8rem, 4.25vw, 3.42rem); }
  h2.title{ font-size:clamp(1.52rem, 3.2vw, 2.62rem); }
  h3{ font-size:.97em; }
  /* Body / lead text ~3% smaller */
  .lead{ font-size:clamp(1rem, 1.34vw, 1.13rem); }
  /* Vertical rhythm: section padding ~12–15% tighter, heading blocks ~15% tighter */
  .section{ padding:clamp(58px, 8.5vh, 90px) 0; }
  .section.tight{ padding:clamp(42px, 6vh, 64px) 0; }
  .sec-head{ margin-bottom:clamp(20px, 3.2vh, 44px); }
  .eyebrow{ margin-bottom:14px; }
  /* Decorative whitespace + card gaps ~10% tighter on flow-page grids (pinned grids are handled
     by the per-page compact tuning + .te-sticky reflow). Buttons untouched — stay fully usable. */
  .grid-4, .ind-grid{ gap:16px; }
  .split, .hero-grid{ gap:clamp(28px, 4vh, 52px); }
}

/* ===== FIT-TO-AVAILABLE tokens — engine shrinks a pinned section's OWN sizing to fit ==========
   The pin engine sets --tf (1.00 → 0.80) on a pinned <section> until its content fits the viewport,
   so the whole chapter stays a SINGLE pin with no internal scroll (no transform:scale/zoom). Each
   property multiplies by --tf and is floored independently with max() so type never drops below its
   readability minimum — a section can keep body text at 14px while padding/gaps keep shrinking.
   Only the chapter's physical size changes; colours, structure and animations are untouched.
   Desktop only; scoped to .te-sticky (added by the engine) so nothing else is affected. */
@media(min-width:901px){
  .te-sticky{ --tf:1; }
  /* Headings */
  .te-sticky .display{ font-size:max(28px, calc(clamp(1.7rem,3.6vw,3rem) * var(--tf))) !important; }
  .te-sticky h2.title, .te-sticky .sec-head .title, .te-sticky .sec-head h2{ font-size:max(22px, calc(clamp(1.5rem,2.6vw,2.32rem) * var(--tf))) !important; }
  .te-sticky .sec-head .lead, .te-sticky .lead{ font-size:max(14px, calc(clamp(1rem,1.3vw,1.12rem) * var(--tf))) !important; }
  .te-sticky .sec-head{ margin-bottom:max(10px, calc(clamp(14px,2.4vh,26px) * var(--tf))) !important; }
  .te-sticky .eyebrow{ font-size:max(11px, calc(12.5px * var(--tf))) !important; margin-bottom:max(8px, calc(16px * var(--tf))) !important; }
  /* Card titles (H3 level) */
  .te-sticky .cv-title, .te-sticky .feat-card h3, .te-sticky .elig-card h3, .te-sticky .prob .q,
  .te-sticky .tl-body h3, .te-sticky .hm-fhead h3, .te-sticky .form-card h2, .te-sticky h3.title{
    font-size:max(16px, calc(1.18rem * var(--tf))) !important; }
  /* Card / list body text */
  .te-sticky .cv-desc, .te-sticky .feat-card p, .te-sticky .elig-card li span, .te-sticky .prob .a,
  .te-sticky .tl-body p, .te-sticky .elig-card .elig-intro, .te-sticky .hm-mtext, .te-sticky .cc p{
    font-size:max(14px, calc(0.96rem * var(--tf))) !important; }
  /* Card padding (vertical drives height most) */
  .te-sticky .cv-face, .te-sticky .feat-card, .te-sticky .elig-card, .te-sticky .prob,
  .te-sticky .tst-card, .te-sticky .cc, .te-sticky .compare .col, .te-sticky .hm-flow{
    padding-top:max(12px, calc(22px * var(--tf))) !important;
    padding-bottom:max(12px, calc(22px * var(--tf))) !important; }
  /* Grid + list gaps */
  .te-sticky .cv-stage, .te-sticky .why-track, .te-sticky .elig-grid, .te-sticky .grid-4,
  .te-sticky .compare, .te-sticky .hm-compare, .te-sticky .contact-cards, .te-sticky .prob-list{
    gap:max(8px, calc(20px * var(--tf))) !important; }
  .te-sticky .timeline{ gap:max(6px, calc(14px * var(--tf))) 76px !important; }
  .te-sticky .tl-step{ padding-top:max(4px, calc(12px * var(--tf))) !important; padding-bottom:max(4px, calc(12px * var(--tf))) !important; }
  .te-sticky .hm-line li{ padding-bottom:max(6px, calc(16px * var(--tf))) !important; }
  /* Form field rhythm */
  .te-sticky .fld{ margin-bottom:max(8px, calc(16px * var(--tf))) !important; }
  .te-sticky .fld input, .te-sticky .fld select, .te-sticky .fld textarea{ padding-top:max(8px, calc(11px * var(--tf))) !important; padding-bottom:max(8px, calc(11px * var(--tf))) !important; }
  /* Icons (chips) ~ scale gently, keep tap targets */
  .te-sticky .cc .chip, .te-sticky .elig-card .chip{ width:max(34px, calc(42px * var(--tf))) !important; height:max(34px, calc(42px * var(--tf))) !important; }
}
/* Shrink the SPACIOUS-tier block paddings so tall forms + the timeline can fit a single pin on
   900px-tall screens. Scoped to the spacious tier with its own base values, so at 1080 (--tf=1)
   these are unchanged, and on shorter screens (compact tier) their own smaller values apply. */
@media(min-width:1360px) and (min-height:900px){
  .te-sticky .form-card{ padding-top:max(16px, calc(32px * var(--tf))) !important; padding-bottom:max(16px, calc(32px * var(--tf))) !important; }
  .te-sticky .form-grid .fld{ margin-bottom:max(8px, calc(14px * var(--tf))) !important; }
  .te-sticky .hm-flows{ gap:max(24px, calc(64px * var(--tf))) !important; }
  .te-sticky .hm-flow{ padding-top:max(16px, calc(30px * var(--tf))) !important; padding-bottom:max(16px, calc(28px * var(--tf))) !important; }
  .te-sticky .hm-line li{ padding-bottom:max(8px, calc(18px * var(--tf))) !important; }
}

/* ===== FLOW MODE (whole page) — conventional scrolling site =================================
   When the page-level coordinator sets data-te-mode="flow" on <html>, every pinned chapter is
   released to natural document flow (engine sets position:static + navbar-safe scroll-margin +
   bottom spacing inline). Drop the 100vh pin reserves so sections are their natural height and the
   page reads as a clean, ordinary scroll — no dead gaps, no 100vh-tall near-empty scenes. */
html[data-te-mode="flow"] .te-sticky{ min-height:0 !important; padding-top:0 !important; padding-bottom:0 !important; }
/* The sticky frame's big padding was pin nav-clearance; in flow give sections normal rhythm instead
   (avoids doubled gaps). Anchor-link nav clearance is handled by scroll-margin-top (set inline). */
html[data-te-mode="flow"] .te-sticky > .te-stick{ min-height:0 !important;
  padding-top:clamp(52px, 6.5vh, 78px) !important; padding-bottom:clamp(36px, 5vh, 58px) !important; }
html[data-te-mode="flow"] .x-brand,
html[data-te-mode="flow"] .x-who-pin,
html[data-te-mode="flow"] .x-do-pin,
html[data-te-mode="flow"] .x-why-pin{ min-height:0 !important; }

/* ===== Business Owners → "Two ways to build your team" (#models): smaller cards =============
   Width kept ~960px; HEIGHT trimmed (heading block, card padding, timeline rows, callout) so the
   whole section fits the viewport and pins with the heading below the navbar. Scoped to the
   employers page; uses calc(*--tf) so the pin fit-engine can still shrink further. */
@media(min-width:901px){
  body[data-page="employers"] #models .sec-head{ margin-bottom:max(10px, calc(18px * var(--tf,1))) !important; }
  body[data-page="employers"] #models .hm-split{ max-width:960px !important; }
  body[data-page="employers"] #models .hm-flows{ gap:max(16px, calc(50px * var(--tf,1))) !important; }
  body[data-page="employers"] #models .hm-flow{ padding:max(11px, calc(16px * var(--tf,1))) 22px !important; }
  body[data-page="employers"] #models .hm-fhead{ margin-bottom:max(7px, calc(12px * var(--tf,1))) !important; }
  body[data-page="employers"] #models .hm-kicker{ margin-bottom:max(4px, calc(7px * var(--tf,1))) !important; }
  body[data-page="employers"] #models .hm-fhead h3{ font-size:max(15px, calc(1.02rem * var(--tf,1))) !important; margin-bottom:4px !important; }
  body[data-page="employers"] #models .hm-tag{ font-size:max(12px, calc(.8rem * var(--tf,1))) !important; line-height:1.35 !important; }
  body[data-page="employers"] #models .hm-line li{ padding-bottom:max(5px, calc(9px * var(--tf,1))) !important; }
  body[data-page="employers"] #models .hm-mile{ width:10px !important; height:10px !important; top:3px !important; }
  body[data-page="employers"] #models .hm-mtext b{ font-size:max(14px, calc(.88rem * var(--tf,1))) !important; margin-bottom:1px !important; line-height:1.24 !important; }
  body[data-page="employers"] #models .hm-mtext em{ font-size:max(12px, calc(.78rem * var(--tf,1))) !important; line-height:1.34 !important; }
  /* "Best for" → premium info panel: a pill BADGE above the description. The description reserves a
     2-line zone (line-based em, adapts to font) so both side-by-side callouts match height NATURALLY
     — badges aligned, padding symmetric, no spacers/line-breaks. 1-line copy simply sits in the zone. */
  body[data-page="employers"] #models .hm-best{ min-height:0 !important; margin:auto 0 0 !important; padding:11px 13px !important;
    border:1px solid var(--m-bd) !important; border-left:3px solid var(--m) !important; border-radius:12px !important; }
  body[data-page="employers"] #models .hm-best-top{ display:inline-flex !important; align-items:center; gap:5px;
    margin-bottom:7px !important; padding:3px 9px 3px 8px; border-radius:100px; background:var(--m-t2); }
  body[data-page="employers"] #models .hm-best-ic .ic{ width:12px !important; height:12px !important; }
  body[data-page="employers"] #models .hm-best-lbl{ font-size:.6rem !important; letter-spacing:.11em !important; }
  body[data-page="employers"] #models .hm-best p{ font-size:max(13px, calc(.82rem * var(--tf,1))) !important; line-height:1.4 !important; min-height:2.8em; }
}

/* ===== ONE flat milky-white canvas — no coloured SECTION backgrounds anywhere ==============
   Whole site sits on the single milky-white surface (#FCFCFA). Every full-width section surface,
   the hero washes, alternating tints, the quote band, the footer and the (previously dark) home
   finale are flattened to it; decorative backdrops/glows are hidden. Component cards, chips,
   badges, buttons, form fields and the nav keep their own surfaces — only section backgrounds change. */
html, body{ background:#FCFCFA !important; }
/* decorative backdrops / glows / watermarks off, every page */
.page-temple, .x-temple, .x-hero-glow, .x-founder-bg, .fin-blob, .about-bg, .cta-glow{ display:none !important; }
/* every full-width section surface → milky white.
   EXCEPTION: the home finale (.x-finale — "Your Next Step") stays DARK by request, so it is NOT
   flattened and keeps its original dark background + white text + cards. */
.hero, .hero.employer, .hero.seeker,
.section, .section.alt, .quote-band,
.x-hero, .x-founder, .x-gap, .x-brand, .x-who, #rail, .x-why, #paths,
footer.site{ background:#FCFCFA !important; }

/* About Us: extra breathing room above "Our Story" so it isn't crowded against the hero heading. */
@media(min-width:901px){
  body[data-page="about"] #story{ margin-top:clamp(100px, 17vh, 210px) !important; margin-bottom:clamp(100px, 17vh, 210px) !important; }
}
@media(max-width:900px){
  body[data-page="about"] #story{ margin-top:clamp(56px, 12vw, 110px) !important; margin-bottom:clamp(56px, 12vw, 110px) !important; }
}
