/* ==========================================================================
   Novera Languages — Page-specific styles
   Owned exclusively by the Frontend agent. Every rule is scoped to a page
   class on <body> (.page-home, .page-services, …). Shared UI lives in
   components.css; nothing here overrides the frozen design system.
   Tokens only — no raw palette hex, no fixed layout px that could overflow.
   ========================================================================== */

/* ==========================================================================
   HOMEPAGE
   ========================================================================== */

/* --- Hero --- */
.page-home .hero {
  background:
    radial-gradient(120% 120% at 85% 0%, rgba(0,169,157,.10), transparent 55%),
    radial-gradient(90% 90% at 0% 100%, rgba(107,78,255,.08), transparent 55%),
    var(--bg-tint);
  padding-block: clamp(2.5rem, 6vw, 5rem);
  overflow: hidden;
}
.page-home .hero__grid {
  display: grid;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: center;
}
@media (min-width: 60rem) {
  .page-home .hero__grid { grid-template-columns: 1.05fr .95fr; }
}
.page-home .hero__copy { display: flex; flex-direction: column; gap: var(--sp-4); max-width: none; }

/* Hero title: three deliberate lines. Words never break mid-word (the "Everywher/e"
   bug came from the global overflow-wrap:break-word squeezing a too-narrow column). */
.page-home .hero__title { margin-top: var(--sp-2); line-height: 1.02; overflow-wrap: normal; word-break: keep-all; text-wrap: initial; }
.page-home .hero__line { display: block; }
.page-home .hero__title .accent { color: var(--coral); }
.page-home .hero .lede { max-width: 46ch; }
.page-home .hero .btn-row { margin-top: var(--sp-2); }

/* Hero underline — decorative gradient hairline */
.page-home .hero__underline { height: 5px; width: clamp(120px, 30vw, 240px); border-radius: 3px; background: var(--grad); background-size: 200% 100%; animation: grad-slide 2.2s linear infinite; }

/* ==========================================================================
   HERO WORLD MAP — dotted equirectangular world, connection arcs, live pulses.
   Endpoint dots mark REACH (regions we serve), never offices: no pin markers.
   ========================================================================== */
.page-home .hero__graphic { width: 100%; }
.page-home .worldmap { width: 100%; height: auto; overflow: visible; }

/* landmass dots */
/* r is set as an SVG attribute so the map renders even if CSS r is unsupported */
.page-home .worldmap .wm-base circle { fill: rgba(13,27,61,.24); }
.page-home .worldmap .wm-a circle { fill: var(--coral);  opacity: .55; }
.page-home .worldmap .wm-b circle { fill: var(--teal);   opacity: .60; }
.page-home .worldmap .wm-c circle { fill: var(--yellow); opacity: .65; }
.page-home .worldmap .wm-d circle { fill: var(--purple); opacity: .50; }
.page-home .worldmap .wm-e circle { fill: var(--teal);   opacity: .55; }

/* connection arcs */
.page-home .worldmap .wm-arc { stroke-dasharray: 1; stroke-dashoffset: 1; opacity: .9; }

/* hub nodes */
.page-home .worldmap .wm-core { stroke: #fff; stroke-width: 2; }
.page-home .worldmap .wm-ring { fill: none; stroke-width: 2; opacity: .55;
  transform-box: fill-box; transform-origin: center; }

/* travelling pulses ride the arc paths */
.page-home .worldmap .wm-pulse { offset-distance: 0%; opacity: 0; }
.page-home .worldmap .wm-pulse1{offset-path:path("M205.0 120.4 Q330.0 55.4 455.0 91.0");}
.page-home .worldmap .wm-pulse2{offset-path:path("M455.0 91.0 Q596.25 56.5 737.5 136.5");}
.page-home .worldmap .wm-pulse3{offset-path:path("M455.0 91.0 Q477.5 124.6 500.0 208.7");}
.page-home .worldmap .wm-pulse4{offset-path:path("M205.0 120.4 Q352.5 103.0 500.0 208.7");}
.page-home .worldmap .wm-pulse5{offset-path:path("M645.0 165.9 Q691.25 131.8 737.5 136.5");}

/* ==========================================================================
   MAP CYCLE (14s, looping) — the sequence that teaches the eye it's Earth:
     0.0–2.0s   dots fly in from scattered positions and form the continents
     3.5–5.5s   connection arcs draw between the regions we serve
     5.5–10s    held together; pulses travel the routes
    10–11.2s    arcs retract
    12–14s      dots scatter outward again, and it repeats
   Every rule here is switched off by prefers-reduced-motion in base.css,
   where the resting state is the fully-assembled map.
   ========================================================================== */
.page-home .worldmap .wm-dots circle {
  animation: wm-cycle 14s var(--ease) infinite;
}
.page-home .worldmap .d0{--tx:80.0px;--ty:0.0px;animation-delay:0.0s}
.page-home .worldmap .d1{--tx:113.5px;--ty:17.5px;animation-delay:0.64s}
.page-home .worldmap .d2{--tx:136.0px;--ty:44.8px;animation-delay:0.09s}
.page-home .worldmap .d3{--tx:141.9px;--ty:79.2px;animation-delay:0.73s}
.page-home .worldmap .d4{--tx:127.5px;--ty:117.2px;animation-delay:0.18s}
.page-home .worldmap .d5{--tx:73.9px;--ty:54.6px;animation-delay:0.82s}
.page-home .worldmap .d6{--tx:66.6px;--ty:84.7px;animation-delay:0.27s}
.page-home .worldmap .d7{--tx:39.3px;--ty:114.6px;animation-delay:0.91s}
.page-home .worldmap .d8{--tx:-7.9px;--ty:140.0px;animation-delay:0.36s}
.page-home .worldmap .d9{--tx:-31.1px;--ty:67.3px;animation-delay:1.0s}
.page-home .worldmap .d10{--tx:-26.0px;--ty:91.6px;animation-delay:0.45s}
.page-home .worldmap .d11{--tx:-76.1px;--ty:105.9px;animation-delay:1.09s}
.page-home .worldmap .d12{--tx:-137.9px;--ty:109.4px;animation-delay:0.55s}
.page-home .worldmap .d13{--tx:-87.5px;--ty:42.4px;animation-delay:0.0s}
.page-home .worldmap .d14{--tx:-135.2px;--ty:37.3px;animation-delay:0.64s}
.page-home .worldmap .d15{--tx:-160.2px;--ty:57.3px;animation-delay:0.09s}
.page-home .worldmap .d16{--tx:-213.4px;--ty:37.9px;animation-delay:0.73s}
.page-home .worldmap .d17{--tx:-108.9px;--ty:2.4px;animation-delay:0.18s}
.page-home .worldmap .d18{--tx:-142.8px;--ty:-18.8px;animation-delay:0.82s}
.page-home .worldmap .d19{--tx:-164.5px;--ty:-49.7px;animation-delay:0.27s}
.page-home .worldmap .d20{--tx:-206.7px;--ty:-46.7px;animation-delay:0.91s}
.page-home .worldmap .d21{--tx:-88.7px;--ty:-37.1px;animation-delay:0.36s}
.page-home .worldmap .d22{--tx:-96.4px;--ty:-66.3px;animation-delay:1.0s}
.page-home .worldmap .d23{--tx:-85.0px;--ty:-99.1px;animation-delay:0.45s}
.page-home .worldmap .d24{--tx:-52.7px;--ty:-131.1px;animation-delay:1.09s}
.page-home .worldmap .d25{--tx:-35.9px;--ty:-61.2px;animation-delay:0.55s}
.page-home .worldmap .d26{--tx:-14.8px;--ty:-87.6px;animation-delay:0.0s}
.page-home .worldmap .d27{--tx:24.9px;--ty:-109.9px;animation-delay:0.64s}
.page-home .worldmap .d28{--tx:80.9px;--ty:-124.2px;animation-delay:0.09s}
.page-home .worldmap .d29{--tx:60.5px;--ty:-51.7px;animation-delay:0.73s}
.page-home .worldmap .d30{--tx:70.0px;--ty:-75.2px;animation-delay:0.18s}
.page-home .worldmap .d31{--tx:123.0px;--ty:-78.9px;animation-delay:0.82s}
.page-home .worldmap .d32{--tx:181.5px;--ty:-70.3px;animation-delay:0.27s}
.page-home .worldmap .d33{--tx:96.1px;--ty:-19.4px;animation-delay:0.91s}
.page-home .worldmap .d34{--tx:137.7px;--ty:-6.0px;animation-delay:0.36s}
.page-home .worldmap .d35{--tx:172.3px;--ty:-18.8px;animation-delay:1.0s}

@keyframes wm-cycle {
  0%   { transform: translate(var(--tx), var(--ty)); opacity: 0; }
  4%   { opacity: .85; }
  16%  { transform: translate(0, 0); opacity: 1; }   /* assembled */
  82%  { transform: translate(0, 0); opacity: 1; }   /* held */
  96%  { opacity: .3; }
  100% { transform: translate(var(--tx), var(--ty)); opacity: 0; }
}

/* arcs: appear only once the continents have formed */
.page-home .worldmap .wm-arc { animation: wm-arc-cycle 14s linear infinite; }
.page-home .worldmap .wm-arc1 { animation-delay: 0s; }
.page-home .worldmap .wm-arc2 { animation-delay: .35s; }
.page-home .worldmap .wm-arc3 { animation-delay: .7s; }
.page-home .worldmap .wm-arc4 { animation-delay: 1.05s; }
.page-home .worldmap .wm-arc5 { animation-delay: 1.4s; }
@keyframes wm-arc-cycle {
  0%, 25%   { stroke-dashoffset: 1; opacity: 0; }
  27%       { opacity: .9; }
  39%       { stroke-dashoffset: 0; opacity: .9; }   /* fully drawn */
  72%       { stroke-dashoffset: 0; opacity: .9; }
  80%       { stroke-dashoffset: 1; opacity: 0; }    /* retract */
  100%      { stroke-dashoffset: 1; opacity: 0; }
}

/* hub markers ride the same cycle as the dots */
.page-home .worldmap .wm-nodes { animation: wm-node-cycle 14s var(--ease) infinite; }
@keyframes wm-node-cycle {
  0%, 12%  { opacity: 0; }
  20%, 82% { opacity: 1; }
  92%,100% { opacity: 0; }
}
.page-home .worldmap .wm-ring { animation: wm-ring 3s ease-out infinite; }
.page-home .worldmap .wm-node2 .wm-ring { animation-delay: .6s; }
.page-home .worldmap .wm-node3 .wm-ring { animation-delay: 1.2s; }
.page-home .worldmap .wm-node4 .wm-ring { animation-delay: 1.8s; }
.page-home .worldmap .wm-node5 .wm-ring { animation-delay: 2.4s; }
@keyframes wm-ring { 0% { transform: scale(.7); opacity: .75; }
                     70%,100% { transform: scale(2.1); opacity: 0; } }

/* signals travel the routes only while the network is connected */
.page-home .worldmap .wm-pulse  { animation: wm-travel 14s linear infinite; }
.page-home .worldmap .wm-pulse1 { animation-delay: 0s; }
.page-home .worldmap .wm-pulse2 { animation-delay: .5s; }
.page-home .worldmap .wm-pulse3 { animation-delay: 1s; }
.page-home .worldmap .wm-pulse4 { animation-delay: 1.5s; }
.page-home .worldmap .wm-pulse5 { animation-delay: 2s; }
@keyframes wm-travel {
  0%, 40%  { offset-distance: 0%;   opacity: 0; }
  45%      { opacity: 1; }
  66%      { opacity: 1; }
  71%,100% { offset-distance: 100%; opacity: 0; }
}

/* Only the map you can actually see is allowed to animate — keeps two maps
   of 612 dots each from burning CPU/battery off-screen. nav.js adds .wm-live. */
.page-home .worldmap:not(.wm-live) .wm-dots circle,
.page-home .worldmap:not(.wm-live) .wm-arc,
.page-home .worldmap:not(.wm-live) .wm-pulse,
.page-home .worldmap:not(.wm-live) .wm-nodes,
.page-home .worldmap:not(.wm-live) .wm-ring { animation-play-state: paused; }

/* Hero stat cards */
.page-home .hero__stats {
  display: grid; gap: var(--sp-3); margin-top: clamp(1.5rem, 4vw, 2.5rem);
  grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 60rem) { .page-home .hero__stats { grid-template-columns: repeat(4, 1fr); } }
.page-home .statcard {
  position: relative; overflow: hidden;
  background: var(--white); border: 1px solid var(--border); border-radius: var(--r-md);
  padding: var(--sp-4); box-shadow: var(--shadow-card);
  display: flex; flex-direction: column; gap: .3rem;
  transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s;
}
/* coloured cap across the top, and a soft wash that blooms on hover */
.page-home .statcard::before {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 4px;
  background: var(--sc, var(--teal));
}
.page-home .statcard::after {
  content: ""; position: absolute; right: -30%; top: -60%;
  width: 150px; height: 150px; border-radius: 50%;
  background: var(--sc, var(--teal)); opacity: .07;
  transition: transform .45s var(--ease), opacity .45s var(--ease);
}
.page-home .statcard:hover { transform: translateY(-5px); box-shadow: var(--shadow-lift); border-color: var(--sc, var(--teal)); }
.page-home .statcard:hover::after { transform: scale(1.5); opacity: .13; }
.page-home .statcard:hover .statcard__icon { transform: scale(1.1) rotate(-6deg); }

.page-home .statcard__icon {
  width: 44px; height: 44px; border-radius: var(--r-md);
  display: grid; place-items: center; margin-bottom: var(--sp-2);
  background: color-mix(in srgb, var(--sc, var(--teal)) 14%, transparent);
  color: var(--sc, var(--teal));
  transition: transform .35s var(--ease);
}
.page-home .statcard__icon svg { width: 24px; height: 24px; display: block; }
.page-home .statcard b { font-family: var(--font-display); font-size: 1.2rem; color: var(--ink); line-height: 1.15; position: relative; }
.page-home .statcard span { font-size: var(--fs-small); color: var(--muted); position: relative; }

/* per-card accent — one variable drives cap, icon, wash and hover border */
.page-home .statcard--teal   { --sc: var(--teal); }
.page-home .statcard--purple { --sc: var(--purple); }
.page-home .statcard--coral  { --sc: var(--coral); }
.page-home .statcard--yellow { --sc: #C98A0E; }   /* darkened yellow so the icon stays legible */

/* --- Compact service strip (intro) --- */
.page-home .service-strip {
  display: grid; gap: var(--sp-3);
  grid-template-columns: repeat(2, 1fr);
  margin-top: var(--sp-6);
}
@media (min-width: 48rem) { .page-home .service-strip { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 64rem) { .page-home .service-strip { grid-template-columns: repeat(6, 1fr); } }
.page-home .stripitem {
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: .5rem;
  padding: var(--sp-4) var(--sp-2); border: 1px solid var(--border); border-radius: var(--r-md);
  background: var(--white); font-size: var(--fs-small); font-weight: 600; color: var(--text);
}
.page-home .stripitem .wave { height: 24px; }
.page-home .stripitem .wave i { width: 4px; }

/* --- Our Story teaser --- */
.page-home .story-teaser__grid { display: grid; gap: clamp(2rem, 5vw, 3.5rem); align-items: center; }
@media (min-width: 56rem) { .page-home .story-teaser__grid { grid-template-columns: 1fr 1fr; } }
.page-home .story-quote {
  font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h3);
  line-height: var(--lh-snug); color: var(--ink);
  border-left: 4px solid var(--teal); padding-left: var(--sp-4);
}
.page-home .story-portrait {
  border-radius: var(--r-lg); background:
    linear-gradient(135deg, var(--navy), var(--navy-700));
  min-height: 260px; display: grid; place-items: center; padding: var(--sp-6);
  color: var(--on-dark); text-align: center; overflow: hidden;
}
.page-home .story-portrait .wave { height: 64px; }
.page-home .story-portrait .wave i { width: 10px; }

/* --- Languages emphasis (ASL / BSL) --- */
.page-home .sign-emphasis {
  display: grid; gap: var(--sp-4); margin-top: var(--sp-5);
  grid-template-columns: 1fr;
}
@media (min-width: 44rem) { .page-home .sign-emphasis { grid-template-columns: 1fr 1fr; } }
.page-home .sign-card {
  border: 1px solid var(--border); border-left: 4px solid var(--purple);
  border-radius: var(--r-md); padding: var(--sp-5); background: var(--white);
}
.page-home .sign-card h3 { color: var(--ink); margin-bottom: var(--sp-2); }

/* --- Global reach band (arcs, not pins) --- */
.page-home .reach__grid { display: grid; gap: clamp(2rem, 5vw, 3rem); align-items: center; }
@media (min-width: 56rem) { .page-home .reach__grid { grid-template-columns: 1fr 1fr; } }
.page-home .reach__markets { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-top: var(--sp-4); }

/* --- Recruitment dual path --- */
.page-home .dualpath { display: grid; gap: var(--sp-4); }
@media (min-width: 48rem) { .page-home .dualpath { grid-template-columns: 1fr 1fr; } }

/* --- Final CTA band --- */
.page-home .cta-band { text-align: center; }
.page-home .cta-band .btn-row { justify-content: center; margin-top: var(--sp-5); }
.page-home .cta-band__contacts {
  display: flex; flex-wrap: wrap; gap: var(--sp-3) var(--sp-6);
  justify-content: center; margin-top: var(--sp-6); font-size: var(--fs-small);
}
.page-home .cta-band__contacts a { color: var(--on-dark); font-weight: 600; }

/* ==========================================================================
   Reusable path/dual-path card (recruitment + home)
   ========================================================================== */
.page-home .pathcard,
.page-recruitment .pathcard {
  border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: clamp(1.5rem, 4vw, 2.5rem); background: var(--white);
  display: flex; flex-direction: column; gap: var(--sp-3);
}
.page-home .pathcard--employer,
.page-recruitment .pathcard--employer { border-top: 5px solid var(--teal); }
.page-home .pathcard--interpreter,
.page-recruitment .pathcard--interpreter { border-top: 5px solid var(--coral); }
.page-home .pathcard h3,
.page-recruitment .pathcard h3 { color: var(--ink); }
.page-home .pathcard ul,
.page-recruitment .pathcard ul { display: flex; flex-direction: column; gap: var(--sp-2); font-size: var(--fs-small); color: var(--muted); }
.page-home .pathcard li,
.page-recruitment .pathcard li { display: flex; gap: .6rem; align-items: flex-start; }
.page-home .pathcard li::before,
.page-recruitment .pathcard li::before {
  content: ""; flex-shrink: 0; width: 8px; height: 8px; margin-top: .55rem;
  border-radius: 50%; background: var(--teal);
}
.page-recruitment .pathcard--interpreter li::before,
.page-home .pathcard--interpreter li::before { background: var(--coral); }
.page-home .pathcard .btn-row,
.page-recruitment .pathcard .btn-row { margin-top: auto; padding-top: var(--sp-3); }

/* ==========================================================================
   INTERIOR PAGE HEADERS (Our Story, Services, Languages, Industries, Recruitment)
   ========================================================================== */
.page-story .page-hero,
.page-services .page-hero,
.page-languages .page-hero,
.page-industries .page-hero,
.page-recruitment .page-hero {
  background:
    radial-gradient(100% 120% at 90% 0%, rgba(0,169,157,.10), transparent 55%),
    var(--bg-tint);
}
.page-story .page-hero .inner,
.page-services .page-hero .inner,
.page-languages .page-hero .inner,
.page-industries .page-hero .inner,
.page-recruitment .page-hero .inner { max-width: 62ch; display: flex; flex-direction: column; gap: var(--sp-4); }
.page-story .page-hero h1,
.page-services .page-hero h1,
.page-languages .page-hero h1,
.page-industries .page-hero h1,
.page-recruitment .page-hero h1 { margin-block: var(--sp-2); }

/* ==========================================================================
   OUR STORY
   ========================================================================== */
.page-story .story-prose { max-width: 65ch; }
.page-story .story-prose p { margin-bottom: var(--sp-4); max-width: none; }
.page-story .story-prose .lead-line {
  font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h3);
  color: var(--ink); line-height: var(--lh-snug);
}
.page-story .story-prose .pullquote {
  font-family: var(--font-display); font-weight: 700; font-size: clamp(1.4rem, 3.5vw, 2rem);
  color: var(--ink); line-height: var(--lh-snug); text-align: center;
  padding-block: var(--sp-5); border-block: 1px solid var(--border); margin-block: var(--sp-6);
}
.page-story .story-prose .pullquote span { color: var(--teal); }
.page-story .credibility {
  border: 1px solid var(--border); border-left: 4px solid var(--yellow);
  border-radius: var(--r-md); padding: var(--sp-5); background: var(--soft-gray);
}
.page-story .credibility h2 { font-size: var(--fs-h3); margin-bottom: var(--sp-3); }
.page-story .signoff { font-family: var(--font-display); font-weight: 700; color: var(--ink); }

/* ==========================================================================
   SERVICES
   ========================================================================== */
.page-services .svc {
  display: grid; gap: clamp(1.5rem, 4vw, 2.5rem); align-items: start;
  padding-block: var(--section-y);
  border-top: 1px solid var(--border);
  scroll-margin-top: 6rem;
}
@media (min-width: 52rem) { .page-services .svc { grid-template-columns: 5rem 1fr; } }
.page-services .svc:first-of-type { border-top: 0; }
.page-services .svc__num {
  font-family: var(--font-display); font-weight: 700; font-size: 2rem;
  color: var(--teal); line-height: 1;
}
.page-services .svc h2 { font-size: var(--fs-h3); margin-bottom: var(--sp-3); }
.page-services .svc__sectors { margin-top: var(--sp-4); }
.page-services .modes { margin-top: var(--sp-5); }

/* ==========================================================================
   LANGUAGES
   ========================================================================== */
.page-languages .pill--sign { border-color: var(--purple); color: var(--ink); }
.page-languages .request-cta { text-align: center; }
.page-languages .request-cta .btn-row { justify-content: center; margin-top: var(--sp-4); }

/* ==========================================================================
   INDUSTRIES
   ========================================================================== */
.page-industries .ind-card { align-items: flex-start; }
.page-industries .ind-card h2 { font-size: var(--fs-h3); }
.page-industries .ind-card p { color: var(--muted); font-size: var(--fs-small); max-width: none; }

/* ==========================================================================
   RECRUITMENT
   ========================================================================== */
.page-recruitment .dualpath { display: grid; gap: var(--sp-5); margin-top: var(--sp-5); }
@media (min-width: 48rem) { .page-recruitment .dualpath { grid-template-columns: 1fr 1fr; } }
.page-recruitment .whatwedo { display: grid; gap: var(--sp-4); }

/* ==========================================================================
   HOMEPAGE SECTION BACKGROUNDS
   Decorative only — all layers sit behind content via ::before/::after with
   low opacity, so text contrast is untouched (still navy on light).
   ========================================================================== */

/* --- Services: soft colour blooms + a fine dot grid + ghost waveform --- */
.page-home .section--services {
  position: relative; overflow: hidden; isolation: isolate;
  background:
    radial-gradient(70% 90% at 12% 0%,   rgba(0,169,157,.10), transparent 60%),
    radial-gradient(60% 80% at 88% 15%,  rgba(107,78,255,.09), transparent 60%),
    radial-gradient(70% 70% at 60% 110%, rgba(255,90,95,.07),  transparent 60%),
    var(--white);
}
.page-home .section--services::before {         /* engineered dot grid */
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image: radial-gradient(rgba(13,27,61,.13) 1.2px, transparent 1.2px);
  background-size: 26px 26px;
  -webkit-mask-image: radial-gradient(75% 65% at 50% 40%, #000, transparent 75%);
          mask-image: radial-gradient(75% 65% at 50% 40%, #000, transparent 75%);
}
.page-home .section--services::after {          /* oversized ghost waveform */
  content: ""; position: absolute; z-index: -1; pointer-events: none;
  right: -4%; bottom: -8%; width: min(46vw, 520px); aspect-ratio: 3 / 2; opacity: .5;
  background:
    linear-gradient(var(--teal), var(--teal))   0    70% / 8% 30%  no-repeat,
    linear-gradient(var(--purple), var(--purple)) 14% 55% / 8% 60%  no-repeat,
    linear-gradient(var(--coral), var(--coral))  28% 40% / 8% 100% no-repeat,
    linear-gradient(var(--yellow), var(--yellow)) 42% 55% / 8% 60%  no-repeat,
    linear-gradient(var(--teal), var(--teal))   56% 70% / 8% 30%  no-repeat;
  filter: blur(0.5px); opacity: .10;
}

/* --- Languages: ghosted greetings in the scripts we actually support --- */
.page-home .section--languages {
  position: relative; overflow: hidden; isolation: isolate;
  background:
    radial-gradient(60% 70% at 85% 0%, rgba(0,169,157,.12), transparent 60%),
    radial-gradient(55% 65% at 5% 90%, rgba(107,78,255,.10), transparent 60%),
    var(--bg-alt);
}
.page-home .section--languages::before {
  content: "مرحبا  你好  नमस्ते  Hola  Bonjour  Привіт  안녕하세요  Olá  Kia ora  Habari  ሰላም  こんにちは  Merhaba  Xin chào  Guten Tag";
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  font-family: var(--font-display); font-weight: 700;
  font-size: clamp(2.5rem, 7vw, 5rem); line-height: 1.35; color: var(--navy);
  opacity: .045; word-spacing: .6em; padding: var(--sp-5);
  -webkit-mask-image: linear-gradient(160deg, #000 10%, transparent 70%);
          mask-image: linear-gradient(160deg, #000 10%, transparent 70%);
}

/* --- Global Reach: dark band, map glows against it --- */
.page-home .section--reach {
  position: relative; overflow: hidden; isolation: isolate;
  background:
    radial-gradient(70% 90% at 75% 20%, rgba(0,169,157,.20), transparent 60%),
    radial-gradient(60% 80% at 10% 90%, rgba(107,78,255,.18), transparent 60%),
    var(--navy);
}
.page-home .section--reach::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image: radial-gradient(rgba(255,255,255,.10) 1.2px, transparent 1.2px);
  background-size: 30px 30px;
}
/* pills read on the dark band */
.page-home .section--reach .pill { background: rgba(255,255,255,.07); border-color: rgba(255,255,255,.22); color: var(--on-dark); }
/* the reach map inverts: light landmass dots on navy */
.page-home .worldmap--reach .wm-base circle { fill: rgba(255,255,255,.30); }
.page-home .worldmap--reach .wm-core { stroke: var(--navy); }

/* Reduced motion: base.css kills every animation, so the map must already be
   in its finished state — continents assembled AND the network drawn. Without
   this the arcs would stay at dashoffset:1 and the connections never appear. */
@media (prefers-reduced-motion: reduce) {
  .page-home .worldmap .wm-dots circle { transform: none; opacity: 1; }
  .page-home .worldmap .wm-arc   { stroke-dashoffset: 0; opacity: .9; }
  .page-home .worldmap .wm-nodes { opacity: 1; }
  .page-home .worldmap .wm-pulse { opacity: 0; }   /* signals are decorative */
}

/* ==========================================================================
   TRUST BAND — five proof points on one line, each with its own accent.
   Falls to 2-up then 1-up on smaller screens so nothing is ever cramped.
   ========================================================================== */
.page-home .section--trust {
  position: relative; overflow: hidden; isolation: isolate;
  background:
    radial-gradient(60% 100% at 20% 0%,  rgba(0,169,157,.16), transparent 60%),
    radial-gradient(60% 100% at 80% 100%, rgba(107,78,255,.16), transparent 60%),
    var(--navy);
}
.page-home .section--trust::before {          /* gradient hairline along the top edge */
  content: ""; position: absolute; inset: 0 0 auto 0; height: 3px; background: var(--grad);
}
.page-home .trustrow {
  display: grid; gap: var(--sp-3);
  grid-template-columns: repeat(2, 1fr);       /* phones */
}
@media (min-width: 40rem)  { .page-home .trustrow { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 68rem)  { .page-home .trustrow { grid-template-columns: repeat(5, 1fr); } }

.page-home .trustcard {
  position: relative; overflow: hidden;
  display: flex; flex-direction: column; align-items: center; text-align: center;
  gap: .35rem; padding: var(--sp-5) var(--sp-3);
  border: 1px solid rgba(255,255,255,.12); border-radius: var(--r-md);
  background: rgba(255,255,255,.04);
  transition: transform .3s var(--ease), border-color .3s, background .3s;
}
.page-home .trustcard::after {                 /* accent wash that blooms on hover */
  content: ""; position: absolute; left: 50%; top: -70%; translate: -50% 0;
  width: 160px; height: 160px; border-radius: 50%;
  background: var(--tc); opacity: .10;
  transition: transform .45s var(--ease), opacity .45s var(--ease);
}
.page-home .trustcard:hover { transform: translateY(-5px); border-color: var(--tc); background: rgba(255,255,255,.07); }
.page-home .trustcard:hover::after { transform: scale(1.6); opacity: .2; }
.page-home .trustcard:hover .trustcard__icon { transform: translateY(-2px) scale(1.08); }

.page-home .trustcard__icon {
  width: 46px; height: 46px; border-radius: var(--r-md); display: grid; place-items: center;
  background: color-mix(in srgb, var(--tc) 20%, transparent);
  color: var(--tc); position: relative;
  transition: transform .35s var(--ease);
}
.page-home .trustcard__icon svg { width: 24px; height: 24px; display: block; }
.page-home .trustcard__val {
  position: relative; font-family: var(--font-display); font-weight: 700;
  font-size: 1.15rem; line-height: 1.15; color: #fff; margin-top: .2rem;
}
.page-home .trustcard__label {
  position: relative; font-size: var(--fs-small); line-height: 1.45; color: var(--on-dark-muted);
  text-wrap: balance;
}
/* per-card accent — all five brand colours, one variable each */
.page-home .trustcard--teal   { --tc: var(--teal); }
.page-home .trustcard--purple { --tc: var(--purple); }
.page-home .trustcard--coral  { --tc: var(--coral); }
.page-home .trustcard--yellow { --tc: var(--yellow); }
.page-home .trustcard--teal2  { --tc: #35C4E8; }

/* ==========================================================================
   PHOTOGRAPHY — What We Do collage + Our Story figure
   Effects: slow Ken Burns drift, clip-path reveal on scroll, hover lift with
   a brand-tinted overlay that clears, and floating overlay cards.
   All motion is switched off by prefers-reduced-motion (base.css); the
   resting state below is the finished, fully-visible image.
   ========================================================================== */

.page-home .whatwedo__grid { display: grid; gap: clamp(2.5rem, 5vw, 4rem); align-items: center; }
@media (min-width: 60rem) { .page-home .whatwedo__grid { grid-template-columns: 1fr 1.05fr; } }

/* --- the collage --- */
.page-home .photostack {
  position: relative; display: grid; gap: var(--sp-3);
  grid-template-columns: repeat(2, 1fr);
  grid-template-areas: "a a" "b c";
}
.page-home .photostack__item {
  position: relative; margin: 0; overflow: hidden;
  border-radius: var(--r-lg); box-shadow: var(--shadow-card);
  transition: transform .45s var(--ease), box-shadow .45s var(--ease);
}
.page-home .photostack__item--a { grid-area: a; aspect-ratio: 16 / 10; }
.page-home .photostack__item--b { grid-area: b; aspect-ratio: 4 / 3; }
.page-home .photostack__item--c { grid-area: c; aspect-ratio: 4 / 3; }
@media (min-width: 60rem) {
  .page-home .photostack__item--b { transform: translateY(-18px); }
  .page-home .photostack__item--c { transform: translateY(10px); }
  .page-home .photostack__item--b:hover { transform: translateY(-26px); }
  .page-home .photostack__item--c:hover { transform: translateY(2px); }
}
.page-home .photostack__item:hover { box-shadow: var(--shadow-lift); }
.page-home .photostack__item--a:hover { transform: translateY(-8px); }

.page-home .ph { width: 100%; height: 100%; object-fit: cover; display: block; }

/* brand tint that lifts away on hover, so photos sit inside the palette */
.page-home .photostack__item::after,
.page-home .story-figure::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(150deg, rgba(13,27,61,.42), rgba(0,169,157,.20) 55%, rgba(107,78,255,.26));
  mix-blend-mode: multiply; opacity: .34; transition: opacity .45s var(--ease);
}
.page-home .photostack__item:hover::after { opacity: .12; }

/* floating badge over the collage */
.page-home .photostack__badge {
  position: absolute; left: -8px; bottom: -18px; z-index: 2;
  display: flex; align-items: center; gap: .6rem;
  padding: .8rem 1.1rem; border-radius: var(--r-md);
  background: var(--navy); color: #fff; box-shadow: var(--shadow-lift);
  border: 1px solid rgba(255,255,255,.14);
}
.page-home .photostack__badge b { font-family: var(--font-display); font-size: 1.5rem; line-height: 1; }
.page-home .photostack__badge span:last-child { font-size: var(--fs-small); color: var(--on-dark-muted); }
.page-home .photostack__badge .wave { height: 26px; }
.page-home .photostack__badge .wave i { width: 4px; }

/* --- Our Story figure --- */
.page-home .story-figure {
  position: relative; margin: 0; overflow: visible;
  border-radius: var(--r-lg); isolation: isolate;
}
.page-home .story-figure picture { display: block; overflow: hidden; border-radius: var(--r-lg); }
.page-home .story-figure .ph { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.page-home .story-figure::after { border-radius: var(--r-lg); z-index: 1; opacity: .28; }
.page-home .story-figure:hover::after { opacity: .14; }
.page-home .story-figure__glow {
  position: absolute; inset: auto -18px -22px -18px; height: 60%; z-index: -1;
  background: var(--grad); filter: blur(38px); opacity: .30; border-radius: var(--r-lg);
}
.page-home .story-figure__quote {
  position: absolute; right: clamp(-6px, -1vw, 0px); bottom: -26px; z-index: 2;
  max-width: min(30ch, 78%);
  background: var(--white); color: var(--ink);
  font-family: var(--font-display); font-weight: 700; font-size: 1.05rem; line-height: 1.35;
  padding: var(--sp-4) var(--sp-5); border-radius: var(--r-md);
  box-shadow: var(--shadow-lift); border-left: 4px solid var(--coral);
}
.page-home .story-figure__mark {
  display: block; font-size: 2.4rem; line-height: .6; color: var(--teal); margin-bottom: .35rem;
}
@media (max-width: 34rem) {
  .page-home .story-figure__quote { position: static; max-width: none; margin-top: var(--sp-4); }
  .page-home .photostack__badge { left: 0; bottom: -14px; }
}

/* --- motion: Ken Burns drift + reveal wipe --- */
.page-home .photostack__item .ph,
.page-home .story-figure .ph { animation: ph-kenburns 22s ease-in-out infinite alternate; }
@keyframes ph-kenburns {
  from { transform: scale(1.03) translate3d(0,0,0); }
  to   { transform: scale(1.12) translate3d(-1.5%, -1.5%, 0); }
}
/* reveal: image wipes open once, driven by the shared .rv -> .in observer */
.js .page-home .photostack picture,
.js .page-home .story-figure picture { clip-path: inset(0% 0% 100% 0%); transition: clip-path 1s var(--ease) var(--d, 0s); }
.js .page-home .photostack.in picture,
.js .page-home .story-figure.in picture { clip-path: inset(0% 0% 0% 0%); }
.js .page-home .photostack__item--b picture { --d: .12s; }
.js .page-home .photostack__item--c picture { --d: .24s; }

@media (prefers-reduced-motion: reduce) {
  .js .page-home .photostack picture,
  .js .page-home .story-figure picture,
  .js .page-home .photostack.in picture,
  .js .page-home .story-figure.in picture { clip-path: none; }
}

/* ==========================================================================
   SHARED — animated background blobs + gradient text (Story + Services)
   Blobs are decorative, absolutely positioned, low-opacity, behind content.
   ========================================================================== */
.page-story, .page-services { overflow-x: clip; }
.blob {
  position: absolute; z-index: 0; border-radius: 50%; pointer-events: none;
  filter: blur(50px); opacity: .5;
  animation: blob-float 16s ease-in-out infinite;
}
.blob--1 { width: 34vw; max-width: 460px; aspect-ratio: 1; top: -6%; right: -4%; background: radial-gradient(circle, rgba(0,169,157,.55), transparent 70%); }
.blob--2 { width: 30vw; max-width: 420px; aspect-ratio: 1; top: 30%; left: -8%; background: radial-gradient(circle, rgba(107,78,255,.45), transparent 70%); animation-delay: -5s; }
.blob--3 { width: 40vw; max-width: 560px; aspect-ratio: 1; top: -20%; left: 30%; background: radial-gradient(circle, rgba(255,90,95,.40), transparent 70%); animation-delay: -8s; }
.blob--4 { width: 32vw; max-width: 460px; aspect-ratio: 1; bottom: -14%; right: 4%; background: radial-gradient(circle, rgba(255,184,28,.40), transparent 70%); animation-delay: -3s; }
.blob--5 { width: 36vw; max-width: 500px; aspect-ratio: 1; top: 10%; left: 50%; translate: -50% 0; background: radial-gradient(circle, rgba(107,78,255,.35), transparent 70%); }
@keyframes blob-float {
  0%,100% { transform: translate(0,0) scale(1); }
  33%     { transform: translate(3%, 4%) scale(1.08); }
  66%     { transform: translate(-3%, -2%) scale(.96); }
}
.page-story .wrap, .page-services .wrap { position: relative; z-index: 1; }

.grad-text {
  background: var(--grad); background-size: 200% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent;
  animation: grad-slide 3s linear infinite;
}

/* ==========================================================================
   OUR STORY
   ========================================================================== */
.page-story .story-hero {
  position: relative; overflow: hidden; isolation: isolate;
  padding-block: clamp(3.5rem, 9vw, 7rem) clamp(3rem, 7vw, 5.5rem);
  background:
    radial-gradient(70% 90% at 80% 0%, rgba(0,169,157,.10), transparent 60%),
    var(--bg-tint);
  text-align: center;
}
.page-story .story-hero__inner { max-width: min(100%, 46rem); margin-inline: auto; display: flex; flex-direction: column; gap: var(--sp-4); align-items: center; }
.page-story .story-hero .lede { max-width: 40ch; }
.page-story .story-hero .rule-grad { margin-inline: auto; }
.page-story .story-hero h1 { font-size: clamp(2.4rem, 6vw, 4.4rem); }
.page-story .story-hero__wave { position: absolute; inset: auto 0 6% 0; display: flex; justify-content: center; align-items: flex-end; gap: 8px; height: 70px; opacity: .5; z-index: 0; }
.page-story .story-hero__wave i { width: 7px; border-radius: 4px; background: var(--grad); animation: eqbar 1.8s ease-in-out infinite; }
.page-story .story-hero__wave i:nth-child(odd){ animation-delay: -.4s; }
.page-story .story-hero__wave i:nth-child(3n){ animation-delay: -.9s; }
@keyframes eqbar { 0%,100%{ height: 18px; } 50%{ height: 64px; } }
.page-story .story-hero__scroll { display: inline-flex; align-items: center; gap: .6rem; font-size: var(--fs-small); color: var(--muted); margin-top: var(--sp-2); }
.page-story .story-hero__scroll span { width: 18px; height: 28px; border: 2px solid var(--muted); border-radius: 10px; position: relative; }
.page-story .story-hero__scroll span::after { content:""; position:absolute; left:50%; top:5px; width:3px; height:6px; border-radius:2px; background: var(--muted); translate:-50% 0; animation: scrolldot 1.6s ease-in-out infinite; }
@keyframes scrolldot { 0%,100%{ transform: translateY(0); opacity:1 } 60%{ transform: translateY(8px); opacity:.2 } }

/* chapter layout */
.page-story .chapter__grid { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
@media (min-width: 56rem) {
  .page-story .chapter__grid { grid-template-columns: 1fr 1fr; }
  .page-story .chapter__grid--rev .chapter__media { order: 2; }
}
.page-story .chapter__media { position: relative; }
.page-story .framed { margin: 0; overflow: hidden; border-radius: var(--r-lg); box-shadow: var(--shadow-lift); }
.page-story .framed img { width: 100%; aspect-ratio: 3/2; object-fit: cover; animation: ph-kenburns 22s ease-in-out infinite alternate; }
.page-story .framed--a { rotate: -1.2deg; }
.page-story .framed--b { rotate: 1.2deg; }
.page-story .chapter__chip {
  position: absolute; left: -6px; bottom: -16px; display: inline-flex; align-items: center; gap: .5rem;
  background: var(--navy); color: #fff; padding: .6rem 1rem; border-radius: var(--r-md);
  box-shadow: var(--shadow-lift); font-weight: 600; font-size: var(--fs-small); border: 1px solid rgba(255,255,255,.14);
}
.page-story .chapter__chip .wave { height: 20px; } .page-story .chapter__chip .wave i { width: 3.5px; }
.page-story .chapter__chip--coral { background: var(--coral-cta); }
.page-story .chapter__num { display: inline-flex; align-items: center; gap: .5rem; font-family: var(--font-mono, monospace); font-size: var(--fs-eyebrow); letter-spacing: .16em; text-transform: uppercase; color: var(--teal-text); font-weight: 600; }
.page-story .chapter__num::before { content:""; width: 22px; height: 2px; background: var(--grad); }
.page-story .chapter__body { display: flex; flex-direction: column; gap: var(--sp-3); }
.page-story .chapter__body h2 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); }

/* pull-quote band */
.page-story .quote-band { position: relative; overflow: hidden; isolation: isolate; text-align: center;
  background: radial-gradient(80% 120% at 50% 0%, rgba(107,78,255,.22), transparent 60%), var(--navy); }
.page-story .quote-band__q { font-family: var(--font-display); font-weight: 700; line-height: 1.15; color: #fff;
  font-size: clamp(1.8rem, 5vw, 3.4rem); max-width: 20ch; margin-inline: auto; }
.page-story .quote-band__mark { display:block; font-size: 3.5rem; line-height:.4; color: var(--teal); }
.page-story .quote-band__sub { color: var(--on-dark-muted); max-width: 52ch; margin: var(--sp-5) auto 0; }

/* today stats */
.page-story .storystats { display: grid; gap: var(--sp-4); grid-template-columns: repeat(2,1fr); margin-top: var(--sp-7); }
@media (min-width: 60rem){ .page-story .storystats { grid-template-columns: repeat(4,1fr); } }
.page-story .storystat { text-align: center; padding: var(--sp-5) var(--sp-3); background: var(--white); border: 1px solid var(--border); border-radius: var(--r-md); box-shadow: var(--shadow-card); }
.page-story .storystat b { display:block; font-family: var(--font-display); font-size: clamp(1.8rem,4vw,2.6rem); line-height:1; background: var(--grad); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; color:transparent; animation: grad-slide 3s linear infinite; }
.page-story .storystat span { display:block; margin-top:.5rem; font-size: var(--fs-small); color: var(--muted); }

/* values */
.page-story .values { position: relative; overflow: hidden; isolation: isolate; }
.page-story .valuegrid { display: grid; gap: var(--sp-4); grid-template-columns: repeat(auto-fit,minmax(15rem,1fr)); margin-top: var(--sp-6); }
.page-story .valuecard { position: relative; overflow: hidden; background: var(--white); border: 1px solid var(--border); border-radius: var(--r-lg); padding: var(--sp-5); display: flex; flex-direction: column; gap: var(--sp-2); transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.page-story .valuecard::before { content:""; position:absolute; inset:0 0 auto 0; height:4px; background: var(--vc); }
.page-story .valuecard:hover { transform: translateY(-6px); box-shadow: var(--shadow-lift); border-color: var(--vc); }
.page-story .valuecard:hover .valuecard__icon { transform: scale(1.1) rotate(-6deg); }
.page-story .valuecard__icon { width: 52px; height: 52px; border-radius: var(--r-md); display:grid; place-items:center; background: color-mix(in srgb, var(--vc) 14%, transparent); color: var(--vc); transition: transform .35s var(--ease); }
.page-story .valuecard__icon svg { width: 27px; height: 27px; }
.page-story .valuecard h3 { color: var(--ink); }
.page-story .valuecard p { color: var(--muted); font-size: var(--fs-small); }
.page-story .valuecard--teal{--vc:var(--teal)} .page-story .valuecard--purple{--vc:var(--purple)}
.page-story .valuecard--coral{--vc:var(--coral)} .page-story .valuecard--yellow{--vc:#C98A0E}

/* credibility band */
.page-story .cred-band { text-align: center; }
.page-story .cred { max-width: 60ch; margin-inline: auto; display: flex; flex-direction: column; align-items: center; gap: var(--sp-3); }
.page-story .cred__icon { width: 58px; height: 58px; border-radius: 50%; display:grid; place-items:center; background: rgba(0,169,157,.18); color: var(--teal); }
.page-story .cred__icon svg { width: 30px; height: 30px; }
.page-story .cred p { color: var(--on-dark-muted); }

/* final cta */
.page-story .story-cta { position: relative; overflow: hidden; isolation: isolate; text-align: center; background: var(--bg-alt); }
.page-story .story-cta__inner { display: flex; flex-direction: column; align-items: center; gap: var(--sp-3); }
.page-story .pull-final { font-family: var(--font-display); font-weight: 700; font-size: clamp(1.4rem,3vw,2.1rem); color: var(--ink); }
.page-story .pull-final__sub { font-family: var(--font-display); font-weight: 700; font-size: clamp(1.6rem,4vw,2.6rem); margin-bottom: var(--sp-3); }

/* ==========================================================================
   SERVICES
   ========================================================================== */
.page-services .services-hero { position: relative; overflow: hidden; isolation: isolate; text-align: center;
  padding-block: clamp(3.5rem,8vw,6rem) clamp(2.5rem,6vw,4.5rem);
  background: radial-gradient(70% 90% at 20% 0%, rgba(107,78,255,.10), transparent 60%), var(--bg-tint); }
.page-services .services-hero__inner { max-width: min(100%, 48rem); margin-inline: auto; display: flex; flex-direction: column; gap: var(--sp-4); align-items: center; }
.page-services .services-hero .rule-grad { margin-inline: auto; }
.page-services .services-hero h1 { font-size: clamp(2.3rem,5.5vw,4.2rem); line-height: 1.04; }
/* two deliberate lines: "One partner for" / "language & talent" — never word-per-line */
.page-services .services-hero__title span { display: block; overflow-wrap: normal; word-break: keep-all; }
.page-services .services-hero .lede { max-width: 44ch; }
.page-services .services-hero__meta { display: inline-flex; align-items: center; gap: var(--sp-4); margin-top: var(--sp-2); font-size: var(--fs-small); color: var(--muted); }
.page-services .services-hero__meta b { font-family: var(--font-display); font-size: 1.15rem; color: var(--ink); }
.page-services .services-hero__meta .dot { width: 5px; height: 5px; border-radius: 50%; background: var(--grad); }

.page-services .svc-group { position: relative; overflow: hidden; isolation: isolate; }
.page-services .svc-group__head { max-width: 54ch; margin-bottom: var(--sp-6); display: flex; flex-direction: column; gap: var(--sp-2); }
.page-services .svc-group__head h2 { font-size: clamp(1.8rem,3.6vw,2.7rem); }
.page-services .svc-group__head p { color: var(--muted); }
.page-services .svc-group__tag { display:inline-flex; align-items:center; gap:.5rem; align-self:flex-start; font-weight:600; font-size:var(--fs-small); color:var(--navy); background: rgba(0,169,157,.12); padding:.4rem .9rem; border-radius: var(--r-pill); }
.page-services .svc-group__tag .wave{ height:18px } .page-services .svc-group__tag .wave i{ width:3px }
.page-services .svc-group__tag--coral { background: rgba(255,90,95,.12); }

.page-services .svc2grid { display: grid; gap: var(--sp-4); grid-template-columns: repeat(auto-fit,minmax(16rem,1fr)); }
@media (min-width: 60rem){ .page-services .svc2grid { grid-template-columns: repeat(2,1fr); } .page-services .svc2grid--3 { grid-template-columns: repeat(3,1fr); } }
.page-services .svc2 { position: relative; overflow: hidden; background: var(--white); border: 1px solid var(--border); border-radius: var(--r-lg); padding: clamp(1.4rem,3vw,2rem); display: flex; flex-direction: column; gap: var(--sp-3); transition: transform .3s var(--ease), box-shadow .3s, border-color .3s; }
.page-services .svc2::after { content:""; position:absolute; right:-40%; top:-50%; width:200px; height:200px; border-radius:50%; background: var(--ac); opacity:.06; transition: transform .5s var(--ease), opacity .5s; }
.page-services .svc2:hover { transform: translateY(-6px); box-shadow: var(--shadow-lift); border-color: var(--ac); }
.page-services .svc2:hover::after { transform: scale(1.6); opacity:.12; }
.page-services .svc2:hover .svc2__icon { transform: scale(1.1) rotate(-6deg); }
.page-services .svc2__icon { width: 54px; height: 54px; border-radius: var(--r-md); display:grid; place-items:center; background: color-mix(in srgb, var(--ac) 14%, transparent); color: var(--ac); transition: transform .35s var(--ease); position: relative; }
.page-services .svc2__icon svg { width: 28px; height: 28px; }
.page-services .svc2 h3 { color: var(--ink); font-size: 1.3rem; position: relative; }
.page-services .svc2 p { color: var(--muted); font-size: var(--fs-small); position: relative; }
.page-services .svc2__pills { margin-top: auto; }
.page-services .svc2__pills .pill { font-size: .78rem; padding: .3rem .7rem; }
.page-services .svc2--teal{--ac:var(--teal)} .page-services .svc2--purple{--ac:var(--purple)}
.page-services .svc2--coral{--ac:var(--coral)} .page-services .svc2--yellow{--ac:#C98A0E}

.page-services .modes-band__pills { margin-top: var(--sp-5); }

/* Our Story hero title — two deliberate lines */
.page-story .story-hero__title span { display: block; }

/* --- Services: card meta label + "Best for" line + industries strip --- */
.page-services .svc2 { padding-top: clamp(1.6rem,3.5vw,2.2rem); }
.page-services .svc2__meta {
  align-self: flex-start; font-size: .7rem; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; color: var(--ac); background: color-mix(in srgb, var(--ac) 12%, transparent);
  padding: .3rem .7rem; border-radius: var(--r-pill);
}
.page-services .svc2__best {
  margin-top: auto; padding-top: var(--sp-3); border-top: 1px solid var(--border);
  font-size: var(--fs-small); color: var(--text); font-weight: 600;
  display: flex; flex-wrap: wrap; gap: .1rem .5rem; align-items: baseline;
}
.page-services .svc2__best span {
  font-size: .68rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--ac);
}

/* Industries strip — sectors shown ONCE, not repeated per card */
.page-services .svc-industries__grid { display: grid; gap: clamp(2rem,4vw,3.5rem); align-items: center; }
@media (min-width: 58rem) { .page-services .svc-industries__grid { grid-template-columns: 1fr 1fr; } }
.page-services .svc-industries .section-head { max-width: 40ch; }
.page-services .svc-industries .btn-row { margin-top: var(--sp-4); }
.page-services .industries-pills { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.page-services .industries-pills .pill {
  font-size: .95rem; padding: .6rem 1.1rem; font-weight: 500;
  border-color: var(--border); background: var(--white);
  transition: transform .25s var(--ease), border-color .25s, color .25s;
}
.page-services .industries-pills .pill:nth-child(4n+1):hover { border-color: var(--teal); color: var(--teal); }
.page-services .industries-pills .pill:nth-child(4n+2):hover { border-color: var(--purple); color: var(--purple); }
.page-services .industries-pills .pill:nth-child(4n+3):hover { border-color: var(--coral-cta); color: var(--coral-cta); }
.page-services .industries-pills .pill:nth-child(4n):hover   { border-color: #C98A0E; color: #C98A0E; }
.page-services .industries-pills .pill:hover { transform: translateY(-3px); }

/* ==========================================================================
   LANGUAGES — region cards, drifting-greetings hero, greetings marquee
   ========================================================================== */
.page-languages { overflow-x: clip; }

/* hero */
.page-languages .lang-hero {
  position: relative; overflow: hidden; isolation: isolate; text-align: center;
  padding-block: clamp(3.5rem,8vw,6rem) clamp(2.5rem,6vw,4.5rem);
  background: radial-gradient(70% 90% at 80% 0%, rgba(0,169,157,.10), transparent 60%), var(--bg-tint);
}
.page-languages .lang-hero__inner { max-width: min(100%, 46rem); margin-inline: auto; display: flex; flex-direction: column; gap: var(--sp-4); align-items: center; position: relative; z-index: 2; }
.page-languages .lang-hero .rule-grad { margin-inline: auto; }
.page-languages .lang-hero__title { font-size: clamp(2.3rem,5.5vw,4rem); line-height: 1.05; }
.page-languages .lang-hero__title span { display: block; }
.page-languages .lang-hero .lede { max-width: 46ch; }

/* drifting greeting words behind the hero */
@keyframes word-drift { 0%,100%{transform:translate(0,0)} 50%{transform:translate(0,-16px)} }

/* greetings marquee */

/* region grid */

/* sign feature */
.page-languages .lang-sign { position: relative; overflow: hidden; isolation: isolate; }
.page-languages .lang-sign__grid { display: grid; gap: clamp(2rem,4vw,3rem); align-items: center; }
@media (min-width: 56rem){ .page-languages .lang-sign__grid { grid-template-columns: 1.1fr .9fr; } }
.page-languages .lang-sign__pills .pill { font-size: 1rem; padding: .55rem 1.1rem; background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.22); color: var(--on-dark); }
.page-languages .lang-sign__pills .pill--sign { background: rgba(107,78,255,.28); border-color: rgba(107,78,255,.5); color:#fff; }

.page-languages .lang-special__pills { margin-top: var(--sp-5); }

/* ==========================================================================
   LANGUAGES — interactive region explorer (rebuild)
   ========================================================================== */
.page-languages .lang-explorer { position: relative; }
.page-languages .langmap-wrap {
  display: grid; gap: clamp(1.5rem,4vw,3rem); align-items: center;
  grid-template-columns: 1fr;
}
@media (min-width: 60rem){ .page-languages .langmap-wrap { grid-template-columns: 1.35fr .9fr; } }

/* map */
.page-languages .langmap__stage { position: relative; }
.page-languages .langmap { width: 100%; height: auto; overflow: visible; animation: wm-drift 9s ease-in-out infinite; }
.page-languages .langmap circle { transition: fill .5s var(--ease), opacity .5s var(--ease); }
.page-languages .langmap .r-base circle { fill: rgba(13,27,61,.2); }
.page-languages .langnode { cursor: pointer; }
.page-languages .langnode__core { stroke: #fff; stroke-width: 2; fill: currentColor; transition: r .4s var(--ease); }
.page-languages .langnode__ring { fill: none; stroke: currentColor; stroke-width: 2; opacity: .4;
  transform-box: fill-box; transform-origin: center; animation: wm-ring 3s ease-out infinite; }
.page-languages .langmap__hint {
  position: absolute; left: 50%; bottom: -.5rem; translate: -50% 0;
  font-family: var(--font-mono, monospace); font-size: .7rem; letter-spacing: .14em;
  text-transform: uppercase; color: var(--muted);
}

/* panel */
.page-languages .langmap__panel {
  background: var(--white); border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: clamp(1.5rem,3vw,2rem); box-shadow: var(--shadow-card);
}
.page-languages .langmap__panel-eyebrow { font-family: var(--font-mono,monospace); font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--teal-text); }
.page-languages .langmap__panel-name { font-size: clamp(1.6rem,3vw,2.2rem); margin-top: .3rem; }
.page-languages .langmap__panel-count { color: var(--muted); font-size: var(--fs-small); margin-top: .3rem; }
.page-languages .langmap__panel-pills { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-top: var(--sp-4); }
.page-languages .langmap__panel-pills .pill { font-size: .82rem; padding: .35rem .75rem; animation: pill-in .45s var(--ease) backwards; }
.page-languages .langmap__panel-pills .pill:nth-child(n+6){ animation-delay:.06s } .page-languages .langmap__panel-pills .pill:nth-child(n+12){ animation-delay:.12s } .page-languages .langmap__panel-pills .pill:nth-child(n+18){ animation-delay:.18s }
@keyframes pill-in { from { opacity:0; transform: translateY(8px); } }
.page-languages .langmap__panel-note { margin-top: var(--sp-4); font-size: var(--fs-small); color: var(--muted); }

/* tabs */
.page-languages .langtabs { display: flex; flex-wrap: wrap; gap: var(--sp-2); justify-content: center; margin-top: var(--sp-6); }
.page-languages .langtab {
  display: inline-flex; align-items: center; gap: .5rem; min-height: 44px;
  padding: .5rem 1rem; border: 1.5px solid var(--border); border-radius: var(--r-pill);
  background: var(--white); color: var(--text); font: inherit; font-size: .95rem; font-weight: 600;
  cursor: pointer; transition: transform .2s var(--ease), border-color .2s, background .2s, color .2s;
}
.page-languages .langtab:hover { transform: translateY(-2px); }
.page-languages .langtab span { font-size: .75rem; opacity: .7; }
.page-languages .langtab[aria-pressed="true"] span { opacity: .85; }
/* region colour is carried by --rc; text never sits on it (contrast) */
.page-languages .langmap .r-americas, .page-languages .langnode[data-region="americas"], .page-languages .langtab[data-region="americas"] { --rc: #00A99D; }
.page-languages .langmap .r-europe, .page-languages .langnode[data-region="europe"], .page-languages .langtab[data-region="europe"] { --rc: #6B4EFF; }
.page-languages .langmap .r-me, .page-languages .langnode[data-region="me"], .page-languages .langtab[data-region="me"] { --rc: #FFB81C; }
.page-languages .langmap .r-sasia, .page-languages .langnode[data-region="sasia"], .page-languages .langtab[data-region="sasia"] { --rc: #3B82F6; }
.page-languages .langmap .r-easia, .page-languages .langnode[data-region="easia"], .page-languages .langtab[data-region="easia"] { --rc: #00C2CB; }
.page-languages .langmap .r-africa, .page-languages .langnode[data-region="africa"], .page-languages .langtab[data-region="africa"] { --rc: #FF5A5F; }

.page-languages .langmap g[class^="r-"]:not(.r-base) circle { fill: var(--rc); opacity: .85; }
.page-languages .langnode { color: var(--rc); }

/* dim every region except the active one */
.page-languages .langmap-wrap[data-active="americas"] .langmap g[class^="r-"]:not(.r-americas):not(.r-base) circle { fill: rgba(13,27,61,.34); opacity: .6; }
.page-languages .langmap-wrap[data-active="americas"] .langmap .r-americas circle { opacity: 1; }
.page-languages .langmap-wrap[data-active="americas"] .langnode[data-region="americas"] .langnode__core { r: 8.5; }
.page-languages .langmap-wrap[data-active="americas"] .langnode[data-region="americas"] .langnode__ring { opacity: .9; }
.page-languages .langmap-wrap[data-active="europe"] .langmap g[class^="r-"]:not(.r-europe):not(.r-base) circle { fill: rgba(13,27,61,.34); opacity: .6; }
.page-languages .langmap-wrap[data-active="europe"] .langmap .r-europe circle { opacity: 1; }
.page-languages .langmap-wrap[data-active="europe"] .langnode[data-region="europe"] .langnode__core { r: 8.5; }
.page-languages .langmap-wrap[data-active="europe"] .langnode[data-region="europe"] .langnode__ring { opacity: .9; }
.page-languages .langmap-wrap[data-active="me"] .langmap g[class^="r-"]:not(.r-me):not(.r-base) circle { fill: rgba(13,27,61,.34); opacity: .6; }
.page-languages .langmap-wrap[data-active="me"] .langmap .r-me circle { opacity: 1; }
.page-languages .langmap-wrap[data-active="me"] .langnode[data-region="me"] .langnode__core { r: 8.5; }
.page-languages .langmap-wrap[data-active="me"] .langnode[data-region="me"] .langnode__ring { opacity: .9; }
.page-languages .langmap-wrap[data-active="sasia"] .langmap g[class^="r-"]:not(.r-sasia):not(.r-base) circle { fill: rgba(13,27,61,.34); opacity: .6; }
.page-languages .langmap-wrap[data-active="sasia"] .langmap .r-sasia circle { opacity: 1; }
.page-languages .langmap-wrap[data-active="sasia"] .langnode[data-region="sasia"] .langnode__core { r: 8.5; }
.page-languages .langmap-wrap[data-active="sasia"] .langnode[data-region="sasia"] .langnode__ring { opacity: .9; }
.page-languages .langmap-wrap[data-active="easia"] .langmap g[class^="r-"]:not(.r-easia):not(.r-base) circle { fill: rgba(13,27,61,.34); opacity: .6; }
.page-languages .langmap-wrap[data-active="easia"] .langmap .r-easia circle { opacity: 1; }
.page-languages .langmap-wrap[data-active="easia"] .langnode[data-region="easia"] .langnode__core { r: 8.5; }
.page-languages .langmap-wrap[data-active="easia"] .langnode[data-region="easia"] .langnode__ring { opacity: .9; }
.page-languages .langmap-wrap[data-active="africa"] .langmap g[class^="r-"]:not(.r-africa):not(.r-base) circle { fill: rgba(13,27,61,.34); opacity: .6; }
.page-languages .langmap-wrap[data-active="africa"] .langmap .r-africa circle { opacity: 1; }
.page-languages .langmap-wrap[data-active="africa"] .langnode[data-region="africa"] .langnode__core { r: 8.5; }
.page-languages .langmap-wrap[data-active="africa"] .langnode[data-region="africa"] .langnode__ring { opacity: .9; }

/* tab: colour shown as a dot, never behind text.
   Active = a light tint of the region colour with navy text. The region colour
   itself is never a text background — 5 of the 6 fail AA against white
   (yellow 1.73:1, cyan 2.19:1, teal 2.93:1, coral 3.05:1, blue 3.68:1), so the
   colour carries via tint, border and dot while the label stays navy (>12:1). */
.page-languages .langtab::before {
  content: ""; width: 9px; height: 9px; border-radius: 50%;
  background: var(--rc); flex-shrink: 0;
}
.page-languages .langtab[aria-pressed="true"] {
  /* the raw region colours are too light to mark state on their own — yellow is
     only 1.73:1 on white. Deepening toward navy keeps the hue recognisable and
     clears the 3:1 non-text minimum (worst case, yellow, lands at 3.18:1). */
  --rc-deep: color-mix(in srgb, var(--rc) 70%, var(--navy));
  background: color-mix(in srgb, var(--rc) 14%, white);
  border-color: var(--rc-deep);
  color: var(--ink);
  /* inset ring reads as a 2px border without the .5px layout shift a real
     border-width change would push through the tab row */
  box-shadow: inset 0 0 0 1px var(--rc-deep);
}
.page-languages .langtab[aria-pressed="true"]::before {
  background: var(--rc-deep);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--rc) 30%, white);
}
.page-languages .langtab:focus-visible { outline: 3px solid var(--rc); outline-offset: 2px; }

/* the drift the map animation referenced but never had */
@keyframes wm-drift { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }

@media (prefers-reduced-motion: reduce) {
  .page-languages .langmap,
  .page-languages .langnode__ring,
  .page-languages .langmap__panel-pills .pill { animation: none; }
}

/* Sign-language band: the group tag was scoped to .page-services only, so it
   rendered unstyled here. Same component, tuned for the dark ground. */
.page-languages .svc-group__tag {
  display: inline-flex; align-items: center; gap: .5rem; align-self: flex-start;
  font-weight: 600; font-size: var(--fs-small); color: #fff;
  background: rgba(255,255,255,.12); padding: .4rem .9rem; border-radius: var(--r-pill);
}
.page-languages .svc-group__tag .wave { height: 18px; }
.page-languages .svc-group__tag .wave i { width: 3px; }
.page-languages .lang-sign__grid { display: grid; gap: clamp(2rem,5vw,3.5rem); align-items: center; }
@media (min-width: 56rem) { .page-languages .lang-sign__grid { grid-template-columns: 1fr 1fr; } }
.page-languages .lang-sign h2 { margin-top: var(--sp-4); }
.page-languages .lang-sign .lede { margin-top: var(--sp-3); }
.page-languages .lang-sign__pills { gap: var(--sp-2); }
.page-languages .lang-sign__pills .pill { border-color: rgba(255,255,255,.35); color: #fff; }

/* ==========================================================================
   INDUSTRIES — hero matched to Languages, themed card field, icon motion
   Icons themselves are untouched; only their tile and behaviour change.
   ========================================================================== */
.page-industries { overflow-x: clip; }

.page-industries .ind-hero {
  position: relative; overflow: hidden; text-align: center;
  padding-block: clamp(3rem,7vw,5.5rem) clamp(2.5rem,6vw,4.5rem);
  background:
    radial-gradient(120% 120% at 85% 0%, rgba(0,169,157,.10), transparent 55%),
    radial-gradient(90% 90% at 0% 100%, rgba(107,78,255,.08), transparent 55%),
    var(--bg-tint);
}
.page-industries .ind-hero__inner {
  max-width: min(100%, 46rem); margin-inline: auto; position: relative; z-index: 2;
  display: flex; flex-direction: column; gap: var(--sp-4); align-items: center;
}
.page-industries .ind-hero .rule-grad { margin-inline: auto; }
.page-industries .ind-hero__title { font-size: clamp(2.3rem,5.5vw,4rem); line-height: 1.05; }
.page-industries .ind-hero__title span { display: block; }
.page-industries .ind-hero .lede { max-width: 46ch; }

/* themed field behind the cards: soft dot-grid + colour wash */
.page-industries .ind-grid-sec { position: relative; overflow: hidden; background: var(--bg-alt); }
.page-industries .ind-grid-sec__mesh {
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    radial-gradient(circle at 15% 12%, rgba(0,169,157,.10), transparent 42%),
    radial-gradient(circle at 85% 30%, rgba(107,78,255,.09), transparent 42%),
    radial-gradient(circle at 50% 92%, rgba(255,90,95,.07), transparent 45%),
    radial-gradient(rgba(13,27,61,.14) 1px, transparent 1px);
  background-size: auto, auto, auto, 26px 26px;
  animation: ind-mesh 26s linear infinite;
}
@keyframes ind-mesh {
  from { background-position: 0 0, 0 0, 0 0, 0 0; }
  to   { background-position: 0 0, 0 0, 0 0, 26px 26px; }
}
.page-industries .ind-grid-sec .wrap { position: relative; z-index: 1; }

/* cards sit on the field */
.page-industries .ind-card {
  align-items: flex-start; position: relative; overflow: hidden;
  background: rgba(255,255,255,.86); backdrop-filter: blur(6px);
  transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
.page-industries .ind-card::after {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 3px;
  background: var(--grad); opacity: 0; transition: opacity .3s var(--ease);
}
.page-industries .ind-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lift); }
.page-industries .ind-card:hover::after { opacity: 1; }

/* icon tile: gentle idle float, springs on hover. The SVG is not altered. */
.page-industries .ind-card .card__icon {
  position: relative;              /* anchors the pulse ring to the tile, not the card */
  transition: transform .35s var(--ease), box-shadow .35s var(--ease);
  animation: ind-float 5.5s ease-in-out infinite;
}
.page-industries .ind-card:nth-child(3n+2) .card__icon { animation-delay: -1.8s; }
.page-industries .ind-card:nth-child(3n+3) .card__icon { animation-delay: -3.6s; }
@keyframes ind-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
.page-industries .ind-card:hover .card__icon {
  transform: translateY(-4px) scale(1.08) rotate(-4deg);
  box-shadow: 0 8px 20px rgba(13,27,61,.16);
}
/* pulse ring radiating from the icon on hover */
.page-industries .ind-card .card__icon::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
  border: 2px solid currentColor; opacity: 0;
}
.page-industries .ind-card:hover .card__icon::after { animation: ind-pulse 1.1s var(--ease) infinite; }
@keyframes ind-pulse {
  from { opacity: .5; transform: scale(1); }
  to   { opacity: 0;  transform: scale(1.5); }
}

@media (prefers-reduced-motion: reduce) {
  .page-industries .ind-grid-sec__mesh,
  .page-industries .ind-card .card__icon,
  .page-industries .ind-card:hover .card__icon::after { animation: none; }
  .page-industries .ind-card:hover { transform: none; }
  .page-industries .ind-card:hover .card__icon { transform: none; }
}

/* ==========================================================================
   RECRUITMENT — dual-path hero, process rail, why grid, FAQ accordion
   ========================================================================== */
.page-recruitment { overflow-x: clip; }

.page-recruitment .rec-hero {
  position: relative; overflow: hidden; text-align: center;
  padding-block: clamp(3rem,7vw,5rem) clamp(2.5rem,6vw,4rem);
  background:
    radial-gradient(120% 120% at 85% 0%, rgba(0,169,157,.10), transparent 55%),
    radial-gradient(90% 90% at 0% 100%, rgba(107,78,255,.09), transparent 55%),
    var(--bg-tint);
}
.page-recruitment .rec-hero__mesh {
  position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: .5;
  background-image: radial-gradient(rgba(13,27,61,.13) 1px, transparent 1px);
  background-size: 26px 26px; animation: ind-mesh 26s linear infinite;
}
.page-recruitment .rec-hero__inner {
  max-width: min(100%,48rem); margin-inline: auto; position: relative; z-index: 2;
  display: flex; flex-direction: column; gap: var(--sp-4); align-items: center;
}
.page-recruitment .rec-hero .rule-grad { margin-inline: auto; }
.page-recruitment .rec-hero__title { font-size: clamp(2.2rem,5.4vw,3.9rem); line-height: 1.05; }
.page-recruitment .rec-hero__title span { display: block; }
.page-recruitment .rec-hero .lede { max-width: 48ch; }

/* two paths */
.page-recruitment .rec-paths {
  position: relative; z-index: 2; display: grid; gap: var(--sp-4);
  margin-top: clamp(2rem,5vw,3.5rem); text-align: left;
}
@media (min-width: 54rem){ .page-recruitment .rec-paths { grid-template-columns: 1fr 1fr; } }
.page-recruitment .rpath {
  --pc: var(--teal);
  position: relative; overflow: hidden; text-decoration: none; color: inherit;
  background: rgba(255,255,255,.9); backdrop-filter: blur(6px);
  border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: clamp(1.5rem,3.5vw,2.25rem);
  display: flex; flex-direction: column; gap: var(--sp-3);
  transition: transform .32s var(--ease), box-shadow .32s var(--ease), border-color .32s var(--ease);
}
.page-recruitment .rpath--int { --pc: var(--coral-cta); }
.page-recruitment .rpath::before {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 5px; background: var(--pc);
}
/* sheen sweeps across on hover */
.page-recruitment .rpath::after {
  content: ""; position: absolute; top: 0; left: -60%; width: 45%; height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.55), transparent);
  transform: skewX(-18deg); opacity: 0; pointer-events: none;
}
.page-recruitment .rpath:hover, .page-recruitment .rpath:focus-visible {
  transform: translateY(-8px); box-shadow: var(--shadow-lift); border-color: var(--pc);
}
.page-recruitment .rpath:hover::after { animation: rpath-sheen .8s var(--ease) forwards; }
@keyframes rpath-sheen { from { left:-60%; opacity:.9 } to { left:120%; opacity:0 } }
.page-recruitment .rpath__ic {
  width: 48px; height: 48px; border-radius: var(--r-md); display: grid; place-items: center;
  background: color-mix(in srgb, var(--pc) 12%, transparent); color: var(--pc);
  transition: transform .32s var(--ease);
}
.page-recruitment .rpath__ic svg { width: 24px; height: 24px; }
.page-recruitment .rpath:hover .rpath__ic { transform: scale(1.1) rotate(-6deg); }
.page-recruitment .rpath__k {
  font-family: var(--font-mono,monospace); font-size: .72rem; letter-spacing: .16em;
  text-transform: uppercase; color: var(--pc); font-weight: 600;
}
.page-recruitment .rpath__h { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h3); line-height: 1.2; color: var(--ink); }
.page-recruitment .rpath ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--sp-2); font-size: var(--fs-small); color: var(--muted); }
.page-recruitment .rpath li { display: flex; gap: .6rem; align-items: flex-start; }
.page-recruitment .rpath li::before { content:""; flex-shrink:0; width:7px; height:7px; margin-top:.5rem; border-radius:50%; background: var(--pc); }
.page-recruitment .rpath__go { margin-top: auto; padding-top: var(--sp-3); font-weight: 700; color: var(--pc); display: inline-flex; gap: .5rem; align-items: center; }
.page-recruitment .rpath__go span { transition: transform .28s var(--ease); }
.page-recruitment .rpath:hover .rpath__go span { transform: translateX(5px); }

/* process rail */
.page-recruitment .rec-process { position: relative; overflow: hidden; }
.page-recruitment .rec-process__mesh {
  position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background:
    radial-gradient(circle at 12% 20%, rgba(0,169,157,.09), transparent 45%),
    radial-gradient(circle at 88% 70%, rgba(107,78,255,.08), transparent 45%);
}
.page-recruitment .rec-process .wrap { position: relative; z-index: 1; }
.page-recruitment .rsteps { list-style: none; padding: 0; margin: var(--sp-6) 0 0; display: flex; flex-direction: column; gap: var(--sp-4); position: relative; }
@media (min-width: 60rem){ .page-recruitment .rsteps { display: grid; grid-template-columns: repeat(4,1fr); gap: var(--sp-4); } }
.page-recruitment .rstep {
  position: relative; background: var(--white); border: 1px solid var(--border);
  border-radius: var(--r-lg); padding: var(--sp-5);
  display: flex; gap: var(--sp-4); align-items: flex-start;
  transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}
@media (min-width: 60rem){ .page-recruitment .rstep { flex-direction: column; gap: var(--sp-3); } }
.page-recruitment .rstep:hover { transform: translateY(-6px); box-shadow: var(--shadow-lift); }
.page-recruitment .rstep__n {
  position: absolute; top: -14px; right: 16px;
  font-family: var(--font-display); font-weight: 700; font-size: 2.6rem;
  color: rgba(13,27,61,.07); line-height: 1;
}
.page-recruitment .rstep__ic {
  width: 46px; height: 46px; border-radius: var(--r-md); display: grid; place-items: center; flex-shrink: 0;
  background: rgba(0,169,157,.12); color: var(--teal);
  animation: ind-float 5.5s ease-in-out infinite;
}
.page-recruitment .rstep:nth-child(2) .rstep__ic { background: rgba(107,78,255,.12); color: var(--purple); animation-delay: -1.4s; }
.page-recruitment .rstep:nth-child(3) .rstep__ic { background: rgba(255,184,28,.16); color: #B07C00; animation-delay: -2.8s; }
.page-recruitment .rstep:nth-child(4) .rstep__ic { background: rgba(255,90,95,.12); color: var(--coral-cta); animation-delay: -4.2s; }
.page-recruitment .rstep__ic svg { width: 22px; height: 22px; }
.page-recruitment .rstep h3 { font-size: 1.05rem; margin-bottom: .35rem; color: var(--ink); }
.page-recruitment .rstep p { font-size: var(--fs-small); color: var(--muted); }

/* why grid (dark) */
.page-recruitment .rwhy-grid { display: grid; gap: var(--sp-4); margin-top: var(--sp-6); grid-template-columns: 1fr; }
@media (min-width: 44rem){ .page-recruitment .rwhy-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 72rem){ .page-recruitment .rwhy-grid { grid-template-columns: repeat(4,1fr); } }
.page-recruitment .rwhy {
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12);
  border-radius: var(--r-lg); padding: var(--sp-5);
  transition: transform .3s var(--ease), background .3s var(--ease);
}
.page-recruitment .rwhy:hover { transform: translateY(-6px); background: rgba(255,255,255,.1); }
.page-recruitment .rwhy__ic { display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--r-md); background: rgba(255,255,255,.1); color: #fff; margin-bottom: var(--sp-3); }
.page-recruitment .rwhy__ic svg { width: 22px; height: 22px; }
.page-recruitment .rwhy h3 { color: #fff; font-size: 1.05rem; margin-bottom: .35rem; }
.page-recruitment .rwhy p { color: var(--on-dark-muted); font-size: var(--fs-small); }

/* FAQ accordion */
.page-recruitment .rfaqs { display: flex; flex-direction: column; gap: var(--sp-3); margin-top: var(--sp-6); }
.page-recruitment .rfaq { border: 1px solid var(--border); border-radius: var(--r-md); background: var(--white); overflow: hidden; }
.page-recruitment .rfaq summary {
  cursor: pointer; list-style: none; padding: var(--sp-4) var(--sp-5); min-height: 56px;
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-4);
  font-weight: 600; color: var(--ink);
}
.page-recruitment .rfaq summary::-webkit-details-marker { display: none; }
.page-recruitment .rfaq summary:hover { background: var(--bg-alt); }
.page-recruitment .rfaq__x { position: relative; width: 16px; height: 16px; flex-shrink: 0; }
.page-recruitment .rfaq__x::before, .page-recruitment .rfaq__x::after {
  content: ""; position: absolute; inset: 50% 0 auto 0; height: 2px; background: var(--teal);
  border-radius: 2px; transition: transform .28s var(--ease);
}
.page-recruitment .rfaq__x::after { transform: rotate(90deg); }
.page-recruitment .rfaq[open] .rfaq__x::after { transform: rotate(0); }
.page-recruitment .rfaq__a { padding: 0 var(--sp-5) var(--sp-5); color: var(--muted); font-size: var(--fs-small); }
.page-recruitment .rfaq[open] .rfaq__a { animation: rfaq-in .32s var(--ease); }
@keyframes rfaq-in { from { opacity: 0; transform: translateY(-6px); } }

@media (prefers-reduced-motion: reduce) {
  .page-recruitment .rec-hero__mesh,
  .page-recruitment .rstep__ic { animation: none; }
  .page-recruitment .rpath:hover, .page-recruitment .rstep:hover, .page-recruitment .rwhy:hover { transform: none; }
  .page-recruitment .rpath:hover::after { animation: none; }
  .page-recruitment .rfaq[open] .rfaq__a { animation: none; }
}

/* ==========================================================================
   CONTACT — hero, contact methods, form switcher. Form internals untouched.
   ========================================================================== */
.page-contact { overflow-x: clip; }

.page-contact .con-hero {
  position: relative; overflow: hidden; text-align: center;
  padding-block: clamp(3rem,7vw,5rem) clamp(2.5rem,6vw,3.5rem);
  background:
    radial-gradient(120% 120% at 85% 0%, rgba(0,169,157,.10), transparent 55%),
    radial-gradient(90% 90% at 0% 100%, rgba(107,78,255,.09), transparent 55%),
    var(--bg-tint);
}
.page-contact .con-hero__mesh {
  position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: .5;
  background-image: radial-gradient(rgba(13,27,61,.13) 1px, transparent 1px);
  background-size: 26px 26px; animation: ind-mesh 26s linear infinite;
}
.page-contact .con-hero__inner {
  max-width: min(100%,46rem); margin-inline: auto; position: relative; z-index: 2;
  display: flex; flex-direction: column; gap: var(--sp-4); align-items: center;
}
.page-contact .con-hero .rule-grad { margin-inline: auto; }
.page-contact .con-hero__title { font-size: clamp(2.2rem,5.4vw,3.9rem); line-height: 1.05; }
.page-contact .con-hero__title span { display: block; }
.page-contact .con-hero .lede { max-width: 46ch; }

/* contact methods */
.page-contact .con-methods {
  position: relative; z-index: 2; display: grid; gap: var(--sp-3);
  margin-top: clamp(2rem,5vw,3rem); grid-template-columns: 1fr; text-align: left;
}
@media (min-width: 40rem){ .page-contact .con-methods { grid-template-columns: 1fr 1fr; } }
@media (min-width: 68rem){ .page-contact .con-methods { grid-template-columns: repeat(4,1fr); } }
.page-contact .conm {
  display: flex; flex-direction: column; gap: .25rem; text-decoration: none; color: inherit;
  background: rgba(255,255,255,.9); backdrop-filter: blur(6px);
  border: 1px solid var(--border); border-radius: var(--r-lg); padding: var(--sp-4);
  transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
a.conm:hover, a.conm:focus-visible { transform: translateY(-5px); box-shadow: var(--shadow-lift); border-color: var(--teal); }
.page-contact .conm__ic {
  width: 42px; height: 42px; border-radius: var(--r-md); display: grid; place-items: center;
  background: rgba(0,169,157,.12); color: var(--teal); margin-bottom: var(--sp-2);
  animation: ind-float 5.5s ease-in-out infinite;
}
.page-contact .conm__ic--purple { background: rgba(107,78,255,.12); color: var(--purple); animation-delay: -1.4s; }
.page-contact .conm__ic--yellow { background: rgba(255,184,28,.16); color: #B07C00; animation-delay: -2.8s; }
.page-contact .conm__ic--coral  { background: rgba(255,90,95,.12);  color: var(--coral-cta); animation-delay: -4.2s; }
.page-contact .conm__ic svg { width: 21px; height: 21px; }
.page-contact .conm__k { font-family: var(--font-mono,monospace); font-size: .68rem; letter-spacing: .15em; text-transform: uppercase; color: var(--muted); }
.page-contact .conm__v { font-weight: 700; color: var(--ink); font-size: .98rem; }

/* switcher */
.page-contact .con-forms { position: relative; overflow: hidden; background: var(--bg-alt); }
.page-contact .con-forms__mesh {
  position: absolute; inset: 0; pointer-events: none; z-index: 0;
  background:
    radial-gradient(circle at 12% 15%, rgba(0,169,157,.08), transparent 45%),
    radial-gradient(circle at 88% 80%, rgba(107,78,255,.07), transparent 45%);
}
.page-contact .con-forms .wrap { position: relative; z-index: 1; }
.page-contact .con-switch {
  display: flex; flex-wrap: wrap; gap: var(--sp-2); justify-content: center; margin-bottom: var(--sp-6);
}
.page-contact .con-switch__b {
  display: inline-flex; align-items: center; gap: .55rem; min-height: 48px;
  padding: .6rem 1.25rem; border: 1.5px solid var(--border); border-radius: var(--r-pill);
  background: var(--white); color: var(--text); font: inherit; font-weight: 600; cursor: pointer;
  transition: transform .2s var(--ease), background .2s, color .2s, border-color .2s;
}
.page-contact .con-switch__b:hover { transform: translateY(-2px); }
.page-contact .con-switch__dot { width: 9px; height: 9px; border-radius: 50%; background: var(--teal); flex-shrink: 0; }
.page-contact .con-switch__b:last-child .con-switch__dot { background: var(--coral-cta); }
.page-contact .con-switch__b[aria-pressed="true"] { background: var(--navy); border-color: var(--navy); color: #fff; }
.page-contact .con-switch__b[aria-pressed="true"] .con-switch__dot { box-shadow: 0 0 0 3px rgba(255,255,255,.25); }

.page-contact .con-panel__head { text-align: center; margin-bottom: var(--sp-5); }
.page-contact .con-panel__head h2 { outline: none; }
.page-contact .con-panel__head p { color: var(--muted); margin-top: var(--sp-2); }
.page-contact .con-panel.is-active { animation: con-in .4s var(--ease); }
@keyframes con-in { from { opacity: 0; transform: translateY(10px); } }
.page-contact .con-card {
  max-width: 56rem; margin-inline: auto;
  background: var(--white); border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: clamp(1.5rem,4vw,2.5rem); box-shadow: var(--shadow-card);
}

@media (prefers-reduced-motion: reduce) {
  .page-contact .con-hero__mesh, .page-contact .conm__ic { animation: none; }
  .page-contact .con-panel.is-active { animation: none; }
  a.conm:hover, .page-contact .con-switch__b:hover { transform: none; }
}

/* ==========================================================================
   LEGAL PAGES (Privacy, Candidate Privacy)
   Presentation only — the policy wording is unchanged.
   ========================================================================== */
.page-legal { overflow-x: clip; }

.legal-progress { position: fixed; inset: 0 0 auto 0; height: 3px; z-index: 60; background: transparent; pointer-events: none; }
.legal-progress span { display: block; height: 100%; background: var(--grad); transform: scaleX(0); transform-origin: 0 50%; }

.page-legal .legal-hero {
  position: relative; overflow: hidden; text-align: center;
  padding-block: clamp(3rem,7vw,5rem) clamp(2rem,5vw,3rem);
  background:
    radial-gradient(120% 120% at 85% 0%, rgba(0,169,157,.10), transparent 55%),
    radial-gradient(90% 90% at 0% 100%, rgba(107,78,255,.09), transparent 55%),
    var(--bg-tint);
}
.page-legal .legal-hero__mesh {
  position: absolute; inset: 0; pointer-events: none; opacity: .45;
  background-image: radial-gradient(rgba(13,27,61,.13) 1px, transparent 1px);
  background-size: 26px 26px; animation: ind-mesh 26s linear infinite;
}
.page-legal .legal-hero__inner { position: relative; z-index: 2; max-width: min(100%,44rem); margin-inline: auto; display: flex; flex-direction: column; gap: var(--sp-4); align-items: center; }
.page-legal .legal-hero .rule-grad { margin-inline: auto; }
.page-legal .legal-hero__title { font-size: clamp(2.1rem,5vw,3.5rem); line-height: 1.06; }
.page-legal .legal-hero__title span { display: block; }
.page-legal .legal-hero__meta { display: inline-flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: var(--sp-3); font-size: var(--fs-small); color: var(--muted); }
.page-legal .legal-hero__meta .dot { width: 5px; height: 5px; border-radius: 50%; background: var(--grad); }

/* at-a-glance */
.page-legal .legal-glance-sec { background: var(--bg-alt); }
.page-legal .legal-glances { display: grid; gap: var(--sp-4); margin-top: var(--sp-5); grid-template-columns: 1fr; }
@media (min-width: 44rem){ .page-legal .legal-glances { grid-template-columns: 1fr 1fr; } }
@media (min-width: 70rem){ .page-legal .legal-glances { grid-template-columns: repeat(4,1fr); } }
.page-legal .legal-glance {
  background: var(--white); border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: var(--sp-5); transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}
.page-legal .legal-glance:hover { transform: translateY(-5px); box-shadow: var(--shadow-lift); }
.page-legal .legal-glance__ic {
  display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--r-md);
  background: rgba(0,169,157,.12); color: var(--teal); margin-bottom: var(--sp-3);
  animation: ind-float 5.5s ease-in-out infinite;
}
.page-legal .legal-glance:nth-child(2) .legal-glance__ic { background: rgba(107,78,255,.12); color: var(--purple); animation-delay: -1.4s; }
.page-legal .legal-glance:nth-child(3) .legal-glance__ic { background: rgba(255,184,28,.16); color: #B07C00; animation-delay: -2.8s; }
.page-legal .legal-glance:nth-child(4) .legal-glance__ic { background: rgba(255,90,95,.12); color: var(--coral-cta); animation-delay: -4.2s; }
.page-legal .legal-glance__ic svg { width: 22px; height: 22px; }
.page-legal .legal-glance h3 { font-size: 1.02rem; color: var(--ink); margin-bottom: .3rem; }
.page-legal .legal-glance p { font-size: var(--fs-small); color: var(--muted); }
.page-legal .legal-glance-sec__note { text-align: center; margin-top: var(--sp-5); font-size: var(--fs-small); color: var(--muted); }

/* layout: sticky TOC + body */
.page-legal .legal-layout { display: grid; gap: clamp(2rem,4vw,3rem); grid-template-columns: 1fr; }
@media (min-width: 62rem){ .page-legal .legal-layout { grid-template-columns: 16rem 1fr; align-items: start; } }
.page-legal .legal-toc { display: none; }
@media (min-width: 62rem){
  .page-legal .legal-toc { display: block; position: sticky; top: 96px; }
}
.page-legal .legal-toc__k { font-family: var(--font-mono,monospace); font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); margin-bottom: var(--sp-3); }
.page-legal .legal-toc ol { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .1rem; border-left: 2px solid var(--border); }
.page-legal .legal-toc a {
  display: flex; gap: .6rem; align-items: baseline; padding: .5rem .8rem;
  margin-left: -2px; border-left: 2px solid transparent;
  text-decoration: none; color: var(--muted); font-size: .88rem; line-height: 1.35;
  transition: color .2s, border-color .2s, background .2s;
}
.page-legal .legal-toc a:hover { color: var(--ink); background: var(--bg-alt); }
.page-legal .legal-toc__n { font-family: var(--font-mono,monospace); font-size: .68rem; opacity: .6; flex-shrink: 0; }
.page-legal .legal-toc li.is-current a { color: var(--teal-text); border-left-color: var(--teal); font-weight: 600; }
.page-legal .legal-toc li.is-current .legal-toc__n { opacity: 1; }

.page-legal .legal-body { max-width: 68ch; }
.page-legal .legal-body h2 {
  font-size: var(--fs-h3); color: var(--ink); scroll-margin-top: 100px;
  margin-top: var(--sp-7); padding-top: var(--sp-5); border-top: 1px solid var(--border);
}
.page-legal .legal-body h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.page-legal .legal-body p, .page-legal .legal-body li { color: var(--text); }
.page-legal .legal-body p, .page-legal .legal-body ul, .page-legal .legal-body ol { margin-top: var(--sp-3); }
.page-legal .legal-body a { color: var(--teal-text); }
.legal-rv { opacity: 0; transform: translateY(14px); transition: opacity .55s var(--ease), transform .55s var(--ease); }
.legal-rv.in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .page-legal .legal-hero__mesh, .page-legal .legal-glance__ic { animation: none; }
  .page-legal .legal-glance:hover { transform: none; }
  .legal-rv { opacity: 1; transform: none; }
}
