/* ==========================================================================
   BEYRSOL — Site stylesheet
   A 1:1 translation of the approved design comp into plain CSS.
   Section order:  01 base · 02 primitives · 03 layout chrome ·
                   04 home · 05 services · 06 pods · 07 cases ·
                   08 case study · 09 about · 10 contact · 11 responsive
   ========================================================================== */

/* ---------- 01 base ------------------------------------------------------ */

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  line-height:var(--lh-body);
  color:var(--ink-900);
  background:var(--white);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

h1,h2,h3,h4,h5{margin:0;font-weight:var(--fw-demibold);line-height:var(--lh-heading);letter-spacing:var(--ls-tight)}
p{margin:0}
img{max-width:100%}

a{
  color:var(--blue-600);
  text-decoration:none;
  transition:color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard);
}
a:hover{color:var(--blue-700)}

::selection{background:var(--blue-100);color:var(--ink-900)}

:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

.page{min-height:100vh;display:flex;flex-direction:column}
.page__main{flex:1 1 auto}

.shell{
  max-width:var(--shell-w);
  margin:0 auto;
  padding:0 var(--shell-pad);
  box-sizing:border-box;
}

.label{
  font-size:var(--fs-label);
  font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
}
.label--brand{color:var(--blue-600)}
.label--muted{color:var(--ink-500)}
.label--on-brand{color:rgba(255,255,255,.72)}
.label--mega{letter-spacing:var(--ls-mega)}

.eyebrow-caption{
  font-size:var(--fs-caption);
  letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase;
  color:var(--ink-300);
}

.lead{
  font-size:var(--fs-body-lg);
  line-height:var(--lh-body);
  color:var(--ink-500);
}

.link-cta{
  font-size:var(--fs-label);
  font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
  border-bottom:1px solid var(--blue-600);
  padding-bottom:4px;
  white-space:nowrap;
}

.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:40px}

/* motion --------------------------------------------------------------- */
@keyframes bsUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes bsIn{from{opacity:0}to{opacity:1}}

.a-up{animation:bsUp 480ms var(--ease-standard) both}
.a-in{animation:bsIn 420ms var(--ease-standard) both}
.a-d1{animation-delay:80ms}
.a-d2{animation-delay:140ms}
.a-d3{animation-delay:180ms}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-delay:0 !important;transition-duration:.001ms !important}
}

/* ---------- 02 primitives ------------------------------------------------ */

/* Button ---------------------------------------------------------------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--space-2);
  font-family:var(--font-sans);
  font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase;
  border:1px solid transparent;
  border-radius:var(--radius-pill);
  cursor:pointer;
  text-decoration:none;
  white-space:nowrap;
  font-size:var(--fs-caption);
  padding:12px 24px;
  transition:background-color var(--dur-fast) var(--ease-standard),
             color var(--dur-fast) var(--ease-standard),
             border-color var(--dur-fast) var(--ease-standard),
             transform var(--dur-instant) var(--ease-standard);
}
.btn:active{transform:scale(.97)}

.btn--sm{font-size:var(--fs-label);padding:8px 16px}
.btn--md{font-size:var(--fs-caption);padding:12px 24px}
.btn--lg{font-size:var(--fs-body-sm);padding:16px 34px}
.btn--full{width:100%}

.btn--primary{background:var(--brand);color:var(--white);border-color:var(--brand)}
.btn--primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);color:var(--white)}

.btn--secondary{background:var(--brand-tint);color:var(--brand);border-color:var(--brand-tint)}
.btn--secondary:hover{background:var(--blue-050);border-color:var(--blue-200);color:var(--brand)}

.btn--outline{background:transparent;color:var(--brand);border-color:var(--border-brand)}
.btn--outline:hover{background:var(--brand-tint);color:var(--brand)}

.btn--ghost{background:transparent;color:var(--ink-900);border-color:transparent}
.btn--ghost:hover{background:var(--surface-sunken);color:var(--ink-900)}

.btn--inverse{background:var(--white);color:var(--brand);border-color:var(--white)}
.btn--inverse:hover{background:var(--blue-100);color:var(--brand)}

.btn--inverse-outline{background:transparent;color:var(--white);border-color:var(--border-on-brand)}
.btn--inverse-outline:hover{background:rgba(255,255,255,.12);border-color:var(--white);color:var(--white)}

.btn-row{display:flex;gap:12px;flex-wrap:wrap}
.btn-row--end{justify-content:flex-end}

/* Card ------------------------------------------------------------------ */
.card{
  border-radius:var(--radius-lg);
  padding:var(--space-6);
  box-shadow:var(--shadow-none);
  background:var(--white);
  color:var(--ink-900);
  border:1px solid var(--border-subtle);
  transition:box-shadow var(--dur-base) var(--ease-standard),
             transform var(--dur-base) var(--ease-standard);
}
.card--tint{background:var(--surface-tint);color:var(--ink-900);border:1px solid var(--blue-100)}
.card--brand{background:var(--surface-brand);color:var(--white);border:1px solid var(--brand)}
.card--ink{background:var(--surface-ink);color:var(--white);border:1px solid var(--ink-900)}
.card--outline{background:transparent;color:var(--ink-900);border:1px solid var(--border-default)}
.card--glass{background:rgba(255,255,255,.1);color:var(--white);border:1px solid var(--border-on-brand);backdrop-filter:blur(10px)}

.card--interactive{cursor:pointer;overflow:hidden;display:block;color:inherit}
.card--interactive:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);color:inherit}

.card--p0{padding:0}
.card--p26{padding:26px}
.card--p30{padding:30px}
.card--p32{padding:32px}
.card--p34{padding:34px}
.card--p38{padding:38px}

/* StatBlock ------------------------------------------------------------- */
.stat__value{
  font-size:var(--fs-display-md);
  font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-tighter);
  line-height:var(--lh-tight);
  color:var(--brand);
}
.stat__label{
  margin-top:var(--space-2);
  font-size:var(--fs-label);
  font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
  color:var(--ink-900);
}
.stat--lg .stat__value{font-size:var(--fs-display-lg)}
.stat--sm .stat__value{font-size:var(--fs-display-sm)}
.stat--inverse .stat__value{color:var(--white)}
.stat--inverse .stat__label{color:rgba(255,255,255,.72)}

/* Icon ------------------------------------------------------------------ */
.icon{display:inline-block;flex:0 0 auto;color:var(--blue-600)}
.icon svg{display:block;width:100%;height:100%;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* Form fields ------------------------------------------------------------ */
.field{display:block}
.field__label{
  display:block;
  font-size:var(--fs-label);
  font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
  color:var(--ink-900);
  margin-bottom:8px;
}
.input,.textarea,.select{
  width:100%;
  font-family:var(--font-sans);
  font-size:var(--fs-body-sm);
  color:var(--ink-900);
  background:var(--white);
  padding:11px 14px;
  border-radius:var(--radius-sm);
  border:1px solid var(--border-default);
  box-shadow:none;
  outline:none;
  transition:border-color var(--dur-fast) var(--ease-standard),
             box-shadow var(--dur-fast) var(--ease-standard);
}
.input:focus,.textarea:focus,.select:focus{
  border-color:var(--border-brand);
  box-shadow:0 0 0 3px rgba(1,14,208,.14);
}
.input--invalid,.textarea--invalid,.select--invalid{border-color:var(--red-600)}
.textarea{resize:vertical;line-height:var(--lh-body)}
.field__error{display:block;margin-top:var(--space-2);font-size:var(--fs-caption);color:var(--red-600)}

.select-wrap{position:relative;display:block}
.select{appearance:none;-webkit-appearance:none;padding-right:38px}
.select-wrap::after{
  content:"";
  position:absolute;
  right:14px;top:50%;
  width:8px;height:8px;
  border-right:1.5px solid var(--ink-500);
  border-bottom:1.5px solid var(--ink-500);
  transform:translateY(-70%) rotate(45deg);
  pointer-events:none;
}

/* DataTable -------------------------------------------------------------- */
.table{width:100%;border-collapse:collapse}
.table th{
  text-align:left;
  padding:15px 18px;
  font-size:var(--fs-label);
  font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
  color:var(--ink-500);
  border-bottom:1px solid var(--border-strong);
  white-space:nowrap;
}
.table td{
  text-align:left;
  padding:15px 18px;
  font-size:var(--fs-body-sm);
  line-height:var(--lh-body);
  color:var(--ink-500);
  font-weight:var(--fw-regular);
  border-bottom:1px solid var(--border-subtle);
  vertical-align:top;
}
.table td:first-child{color:var(--ink-900);font-weight:var(--fw-medium)}
.table .is-right{text-align:right}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* Point list ------------------------------------------------------------- */
.points{display:flex;flex-direction:column;gap:10px}
.point{display:flex;gap:12px;font-size:var(--fs-body-sm);line-height:var(--lh-body);color:var(--ink-700)}
.point__bullet{color:var(--blue-600)}

/* Brand banded section --------------------------------------------------- */
.band-brand{position:relative;overflow:hidden;background:var(--blue-600);color:var(--white)}
.band-brand__grid{position:absolute;inset:0;background:var(--brand-grid);pointer-events:none}
.band-brand > .shell{position:relative}

/* ---------- 03 layout chrome --------------------------------------------- */

.site-header{
  position:sticky;top:0;z-index:40;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--ink-100);
}
.site-header__inner{
  max-width:var(--shell-w);
  margin:0 auto;
  padding:0 var(--shell-pad);
  box-sizing:border-box;
  height:74px;
  display:flex;
  align-items:center;
  gap:40px;
}
.site-header__logo{display:flex;align-items:center;flex:0 0 auto}
.site-header__logo img{height:26px;width:auto;display:block}

.nav{display:flex;align-items:center;gap:28px;margin-left:auto}
.nav a{
  font-size:var(--fs-body-sm);
  font-weight:var(--fw-regular);
  color:var(--ink-700);
  border-bottom:1px solid transparent;
  padding-bottom:3px;
  text-decoration:none;
  white-space:nowrap;
}
.nav a:hover{color:var(--blue-600)}
.nav a.is-active{font-weight:var(--fw-medium);color:var(--blue-600);border-bottom-color:var(--blue-600)}

.site-header__cta{flex:0 0 auto}

.nav-toggle{
  display:none;
  margin-left:auto;
  width:42px;height:42px;
  align-items:center;justify-content:center;
  background:transparent;
  border:1px solid var(--ink-200);
  border-radius:var(--radius-sm);
  cursor:pointer;
}
.nav-toggle span{
  position:relative;
  display:block;width:18px;height:1.5px;background:var(--ink-900);
  transition:background var(--dur-fast) var(--ease-standard);
}
.nav-toggle span::before,.nav-toggle span::after{
  content:"";position:absolute;left:0;width:18px;height:1.5px;background:var(--ink-900);
  transition:transform var(--dur-base) var(--ease-standard),top var(--dur-base) var(--ease-standard);
}
.nav-toggle span::before{top:-6px}
.nav-toggle span::after{top:6px}
.nav-toggle.is-open span{background:transparent}
.nav-toggle.is-open span::before{top:0;transform:rotate(45deg)}
.nav-toggle.is-open span::after{top:0;transform:rotate(-45deg)}

.mobile-nav{
  display:none;
  border-bottom:1px solid var(--ink-100);
  background:var(--white);
  position:sticky;top:74px;z-index:39;
}
.mobile-nav.is-open{display:block}
.mobile-nav__inner{
  max-width:var(--shell-w);margin:0 auto;
  padding:14px var(--shell-pad) 22px;
  display:flex;flex-direction:column;gap:2px;
}
.mobile-nav a{
  padding:13px 0;
  font-size:var(--fs-body);
  color:var(--ink-700);
  border-bottom:1px solid var(--ink-100);
}
.mobile-nav a.is-active{color:var(--blue-600);font-weight:var(--fw-medium)}
.mobile-nav .btn{margin-top:16px}

/* Footer ------------------------------------------------------------------ */
.site-footer{background:var(--ink-900);color:var(--white);padding:64px 0 34px;margin-top:auto}
.site-footer__cols{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:44px}
.site-footer__brand img{height:24px;width:auto;display:block}
.site-footer__brand p{
  margin:22px 0 0;font-size:var(--fs-body-sm);line-height:var(--lh-body);
  color:rgba(255,255,255,.72);max-width:34ch;
}
.footer-col__list{margin-top:18px;display:flex;flex-direction:column;gap:10px}
.footer-col__list a{font-size:var(--fs-body-sm);color:rgba(255,255,255,.72)}
.footer-col__list a:hover{color:var(--white)}
.site-footer__bottom{
  margin-top:56px;padding-top:22px;
  border-top:1px solid rgba(255,255,255,.28);
  display:flex;justify-content:space-between;align-items:center;gap:24px;
}
.site-footer__bottom .copy{font-size:var(--fs-caption);color:rgba(255,255,255,.72)}
.site-footer__bottom .wordmark{
  font-size:var(--fs-label);font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-mega);text-transform:uppercase;color:rgba(255,255,255,.72);
}

/* Hero switcher ----------------------------------------------------------- */
.hero-switch{
  position:fixed;left:50%;transform:translateX(-50%);bottom:22px;z-index:60;
  display:flex;align-items:center;gap:4px;
  background:var(--ink-900);border-radius:var(--radius-pill);
  padding:6px 8px;box-shadow:var(--shadow-lg);
}
.hero-switch__label{
  font-size:var(--fs-label);font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-label);text-transform:uppercase;
  color:rgba(255,255,255,.72);padding:0 10px 0 6px;
}
.hero-switch a{
  width:32px;height:28px;border-radius:var(--radius-pill);border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-sans);font-size:var(--fs-label);font-weight:600;
  letter-spacing:var(--ls-eyebrow);
  background:rgba(255,255,255,.12);color:rgba(255,255,255,.72);
  transition:background var(--dur-fast) var(--ease-standard);
}
.hero-switch a:hover{background:rgba(255,255,255,.24);color:var(--white)}
.hero-switch a.is-active{background:var(--white);color:var(--ink-900)}

/* ---------- 04 home ------------------------------------------------------- */

/* Hero A */
.heroA{padding:104px 0 72px;border-bottom:1px solid var(--ink-100)}
.heroA__title{
  margin:26px 0 0;max-width:15ch;
  font-size:clamp(38px,7.7vw,96px);
  line-height:0.96;letter-spacing:var(--ls-tighter);
  font-weight:var(--fw-demibold);text-wrap:pretty;
}
.heroA__split{display:grid;grid-template-columns:1.15fr 1fr;gap:64px;align-items:end;margin-top:44px}
.heroA__split p{max-width:52ch}
.heroA__stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:34px;
  margin-top:72px;padding-top:28px;border-top:2px solid var(--blue-600);
}

/* Hero B */
.heroB{padding:96px 0 84px}
.heroB__title{
  margin:34px 0 0;
  font-size:clamp(40px,9.5vw,118px);
  line-height:0.92;letter-spacing:var(--ls-tighter);
  font-weight:var(--fw-demibold);text-transform:uppercase;
}
.heroB__title span{display:block}
.heroB__title .accent{color:var(--blue-200)}
.heroB__split{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:end;margin-top:56px}
.heroB__split p{
  margin:0;font-size:var(--fs-body-lg);line-height:var(--lh-body);
  color:rgba(255,255,255,.72);max-width:46ch;
}
.heroB__stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:34px;
  margin-top:76px;padding-top:28px;border-top:1px solid rgba(255,255,255,.28);
}

/* Hero C */
.heroC{position:relative;background:var(--blue-200);border-bottom:1px solid var(--ink-100)}
.heroC__wash{position:absolute;inset:0;background:var(--wash-cover)}
.heroC__note{
  position:absolute;left:50%;transform:translateX(-50%);bottom:14px;
  text-align:center;width:100%;padding:0 20px;
}
.heroC__inner{
  position:relative;max-width:var(--shell-w);margin:0 auto;
  padding:96px var(--shell-pad);box-sizing:border-box;
  display:grid;grid-template-columns:1.05fr .95fr;gap:72px;align-items:center;
}
.heroC__title{
  margin:24px 0 0;
  font-size:clamp(32px,5.9vw,72px);
  line-height:1;letter-spacing:var(--ls-tighter);
  font-weight:var(--fw-demibold);text-wrap:pretty;
}
.heroC__title mark{background:var(--blue-100);color:inherit;padding:0 8px}
.heroC__lead{
  margin:28px 0 0;font-size:var(--fs-body-lg);line-height:var(--lh-body);
  color:var(--ink-700);max-width:46ch;
}
.heroC__card{background:rgba(255,255,255,.72);backdrop-filter:blur(10px)}
.timeline{margin-top:26px;display:flex;flex-direction:column}
.timeline__row{
  display:grid;grid-template-columns:78px 1fr;gap:20px;
  padding:18px 0;border-top:1px solid var(--ink-100);
}
.timeline__when{
  font-size:var(--fs-caption);font-weight:var(--fw-demibold);
  letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--blue-600);
}
.timeline__title{font-size:var(--fs-body);font-weight:var(--fw-medium)}
.timeline__body{margin-top:4px;font-size:var(--fs-body-sm);line-height:var(--lh-body);color:var(--ink-500)}

/* Logo strip */
.logos{padding:38px 0;border-bottom:1px solid var(--ink-100);background:var(--ink-050)}
.logos__inner{display:flex;align-items:center;gap:40px}
.logos__eyebrow{flex:0 0 auto;max-width:14ch;color:var(--ink-500)}
.logos__grid{flex:1 1 auto;display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.logo-tile{
  height:52px;border:1px dashed var(--ink-200);border-radius:var(--radius-sm);
  display:flex;align-items:center;justify-content:center;
  font-size:var(--fs-caption);letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase;color:var(--ink-300);text-align:center;padding:0 6px;
}

/* Capabilities */
.caps{padding:96px 0}
.caps h2{
  margin:18px 0 0;font-size:var(--fs-display-md);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);max-width:24ch;
}
.caps__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:44px}
.svc-card__title{
  margin-top:22px;font-size:var(--fs-title);line-height:var(--lh-heading);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.svc-card p{margin:12px 0 0;font-size:var(--fs-body-sm);line-height:var(--lh-body);color:var(--ink-500)}

/* Pod band */
.podband{padding:88px 0}
.podband__inner{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center}
.podband h2{
  margin:18px 0 0;font-size:var(--fs-display-lg);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);max-width:20ch;
}
.podband p{
  margin:24px 0 0;font-size:var(--fs-body-lg);line-height:var(--lh-body);
  color:rgba(255,255,255,.72);max-width:46ch;
}
.podfacts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.28)}
.podfacts__cell{background:var(--blue-600);padding:30px 26px}
.podfacts__value{
  font-size:var(--fs-display-sm);line-height:var(--lh-tight);
  letter-spacing:var(--ls-tighter);font-weight:var(--fw-demibold);
}
.podfacts__label{margin-top:10px;color:rgba(255,255,255,.72)}

/* Selected work */
.work{padding:96px 0;border-bottom:1px solid var(--ink-100)}
.work h2{
  margin:0;font-size:var(--fs-display-md);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.work__grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:44px}
.case-card__media{
  height:190px;background:var(--blue-200);position:relative;
  display:flex;align-items:flex-end;padding:22px;box-sizing:border-box;
}
.case-card__media::before{content:"";position:absolute;inset:0;background:var(--wash-protect)}
.case-card__sector{position:relative;color:var(--white)}
.case-card__body{padding:30px}
.case-card__title{
  font-size:var(--fs-title);line-height:var(--lh-heading);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.case-card__body p{margin:12px 0 0;font-size:var(--fs-body-sm);line-height:var(--lh-body);color:var(--ink-500)}
.case-card__stats{
  display:grid;grid-template-columns:1fr 1fr;gap:20px;
  margin-top:26px;padding-top:20px;border-top:2px solid var(--blue-600);
}
.case-card__stat-value{
  font-size:var(--fs-display-sm);line-height:var(--lh-tight);
  letter-spacing:var(--ls-tighter);font-weight:var(--fw-demibold);color:var(--blue-600);
}
.case-card__stat-label{margin-top:8px}

/* Start here */
.start{padding:96px 0}
.start__inner{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:start}
.start h2{
  margin:18px 0 0;font-size:var(--fs-display-md);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);max-width:22ch;
}
.start p{margin:22px 0 0;max-width:44ch}
.start__meta{margin-top:34px;font-size:var(--fs-body-sm);line-height:var(--lh-relaxed);color:var(--ink-500)}
.mini-form{display:grid;gap:18px}

/* ---------- 05 services --------------------------------------------------- */

.page-head{padding:88px 0 64px;border-bottom:1px solid var(--ink-100)}
.page-head h1{
  margin:22px 0 0;font-size:var(--fs-display-xl);line-height:var(--lh-tight);
  letter-spacing:var(--ls-tighter);font-weight:var(--fw-demibold);max-width:20ch;
}
.page-head p{margin:26px 0 0;max-width:58ch}

.svc-list{padding:0 0 96px}
.svc-row{
  display:grid;grid-template-columns:96px 1fr 1fr;gap:44px;
  padding:44px 0;border-bottom:1px solid var(--ink-100);align-items:start;
}
.svc-row__num{
  font-size:var(--fs-display-sm);line-height:1;letter-spacing:var(--ls-tighter);
  font-weight:var(--fw-demibold);color:var(--blue-200);
}
.svc-row__title{
  font-size:var(--fs-display-sm);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.svc-row__body{margin:14px 0 0;font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-500);max-width:44ch}
.svc-row__points{padding-top:6px}

.engagements{margin-top:64px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.engagement__kicker{opacity:.72}
.engagement__title{
  margin-top:18px;font-size:var(--fs-title);line-height:var(--lh-heading);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.engagement p{margin:12px 0 0;font-size:var(--fs-body-sm);line-height:var(--lh-body);opacity:.72}
.engagement__terms{margin-top:22px;font-size:var(--fs-body-sm);font-weight:var(--fw-medium)}

/* ---------- 06 pods ------------------------------------------------------- */

.pods-hero{padding:88px 0 72px}
.pods-hero h1{
  margin:22px 0 0;font-size:var(--fs-display-xl);line-height:var(--lh-tight);
  letter-spacing:var(--ls-tighter);font-weight:var(--fw-demibold);max-width:18ch;
}
.pods-hero__stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:34px;
  margin-top:64px;padding-top:26px;border-top:1px solid rgba(255,255,255,.28);
}

.pods{padding:88px 0}
.pods h2{
  margin:0;font-size:var(--fs-display-md);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.pods__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:36px}
.pod-card__kicker{opacity:.72}
.pod-card__title{
  margin-top:18px;font-size:var(--fs-display-sm);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.pod-card__price{margin-top:20px;font-size:var(--fs-title);font-weight:var(--fw-medium)}
.pod-card__unit{margin-top:6px;font-size:var(--fs-caption);opacity:.72}
.pod-card__roles{margin-top:24px;display:flex;flex-direction:column;gap:12px}
.pod-card__role{
  display:flex;justify-content:space-between;gap:16px;
  padding-bottom:10px;border-bottom:1px solid rgba(0,0,0,.08);
  font-size:var(--fs-body-sm);
}
.card--brand .pod-card__role{border-bottom-color:rgba(255,255,255,.28)}
.pod-card__role span:last-child{opacity:.72}

.bench{padding:0 0 88px}
.bench__inner{display:grid;grid-template-columns:1fr 1.35fr;gap:64px;align-items:start}
.bench h2{
  margin:0;font-size:var(--fs-display-sm);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.bench p{margin:16px 0 0;font-size:var(--fs-body-sm);line-height:var(--lh-body);color:var(--ink-500)}

/* ---------- 07 cases ------------------------------------------------------ */

.cases-head{padding:88px 0 56px;border-bottom:1px solid var(--ink-100)}
.cases-head h1{
  margin:22px 0 0;font-size:var(--fs-display-xl);line-height:var(--lh-tight);
  letter-spacing:var(--ls-tighter);font-weight:var(--fw-demibold);max-width:18ch;
}
.cases{padding:56px 0 96px}
.cases__list{display:flex;flex-direction:column;gap:20px}
.case-row{display:grid;grid-template-columns:300px 1fr;align-items:stretch}
.case-row__media{
  background:var(--blue-200);position:relative;min-height:200px;
  display:flex;align-items:flex-end;padding:22px;box-sizing:border-box;
}
.case-row__media::before{content:"";position:absolute;inset:0;background:var(--wash-protect)}
.case-row__sector{position:relative;color:var(--white)}
.case-row__body{padding:30px 34px;display:grid;grid-template-columns:1.4fr 1fr;gap:34px;align-items:center}
.case-row__title{
  font-size:var(--fs-title);line-height:var(--lh-heading);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.case-row__body p{margin:10px 0 0;font-size:var(--fs-body-sm);line-height:var(--lh-body);color:var(--ink-500)}
.case-row__stats{display:flex;gap:28px;border-left:2px solid var(--blue-600);padding-left:24px}
.case-row__stat-value{
  font-size:var(--fs-display-sm);line-height:var(--lh-tight);
  letter-spacing:var(--ls-tighter);font-weight:var(--fw-demibold);color:var(--blue-600);
}
.case-row__stat-label{margin-top:6px}

/* ---------- 08 case study ------------------------------------------------- */

.case-hero{position:relative;background:var(--blue-200);min-height:420px;display:flex;align-items:flex-end}
.case-hero__wash{position:absolute;inset:0;background:var(--wash-cover)}
.case-hero__inner{
  position:relative;max-width:var(--shell-w);margin:0 auto;
  padding:88px var(--shell-pad) 56px;box-sizing:border-box;width:100%;
}
.case-hero__back{border-bottom:none}
.case-hero h1{
  margin:30px 0 0;
  font-size:clamp(34px,6.7vw,84px);
  line-height:0.96;letter-spacing:var(--ls-tighter);
  font-weight:var(--fw-demibold);text-transform:uppercase;
}
.case-meta{margin-top:34px;display:flex;gap:44px;flex-wrap:wrap;font-size:var(--fs-body-sm);color:var(--ink-700)}
.case-meta__value{margin-top:6px}

.chapters{padding:80px 0 96px}
.chapter{display:grid;grid-template-columns:300px 1fr;gap:64px;padding:44px 0;border-top:1px solid var(--ink-100)}
.chapter__num{
  font-size:var(--fs-display-md);line-height:1;letter-spacing:var(--ls-tighter);
  font-weight:var(--fw-demibold);color:var(--blue-200);
}
.chapter__label{margin-top:14px}
.chapter h2{
  margin:0;font-size:var(--fs-display-sm);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);max-width:26ch;
}
.chapter__body{margin:18px 0 0;font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-700);max-width:64ch}
.chapter .points{margin-top:20px}
.case-results{
  margin-top:56px;padding-top:32px;border-top:2px solid var(--blue-600);
  display:grid;grid-template-columns:repeat(4,1fr);gap:34px;
}

/* ---------- 09 about ------------------------------------------------------ */

.about-head{padding:88px 0 64px;border-bottom:1px solid var(--ink-100)}
.about-head__inner{display:grid;grid-template-columns:1.1fr .9fr;gap:72px;align-items:end}
.about-head h1{
  margin:22px 0 0;font-size:var(--fs-display-xl);line-height:var(--lh-tight);
  letter-spacing:var(--ls-tighter);font-weight:var(--fw-demibold);max-width:18ch;
}
.about-body{padding:72px 0}
.centres{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.centre__city{margin-top:16px;font-size:var(--fs-title);letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold)}
.centre__detail{margin-top:8px;font-size:var(--fs-body-sm);color:var(--ink-500)}
.about-split{margin-top:72px;display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:start}
.about-split h2{
  margin:0;font-size:var(--fs-display-sm);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tight);font-weight:var(--fw-demibold);
}
.about-split p{margin:18px 0 0;font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-700);max-width:52ch}
.leaders{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.leader__portrait{
  aspect-ratio:1/1;background:var(--blue-100);border-radius:var(--radius-md);
  display:flex;align-items:center;justify-content:center;
  font-size:var(--fs-caption);letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase;color:var(--blue-200);
}
.leader__name{margin-top:14px;font-size:var(--fs-body);font-weight:var(--fw-medium)}
.leader__role{margin-top:4px;font-size:var(--fs-caption);color:var(--ink-500)}

/* ---------- 10 contact ---------------------------------------------------- */

.contact{padding:88px 0 96px}
.contact__inner{display:grid;grid-template-columns:.9fr 1.1fr;gap:80px;align-items:start}
.contact h1{
  margin:22px 0 0;font-size:var(--fs-display-lg);line-height:var(--lh-snug);
  letter-spacing:var(--ls-tighter);font-weight:var(--fw-demibold);max-width:16ch;
}
.contact-facts{margin-top:38px;display:flex;flex-direction:column;gap:24px}
.fact{padding-top:18px;border-top:1px solid var(--ink-100)}
.fact__value{margin-top:8px;font-size:var(--fs-body-lg);font-weight:var(--fw-medium)}
.form-grid{display:grid;gap:20px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.form-note{font-size:var(--fs-caption);color:var(--ink-300);text-align:center}
.form-alert{
  padding:14px 16px;border-radius:var(--radius-sm);
  background:var(--red-050);border:1px solid rgba(192,32,38,.3);
  color:var(--red-600);font-size:var(--fs-body-sm);
}
.sent{padding:40px 0;text-align:center}
.sent__title{
  font-size:var(--fs-display-sm);letter-spacing:var(--ls-tight);
  font-weight:var(--fw-demibold);color:var(--blue-600);
}
.sent p{margin:14px auto 0;max-width:34ch;font-size:var(--fs-body-sm);line-height:var(--lh-body);color:var(--ink-500)}
.sent__action{display:flex;justify-content:center;margin-top:26px}

/* ---------- 11 responsive -------------------------------------------------- */

/* Laptop --------------------------------------------------------------- */
@media (max-width:1180px){
  .heroA{padding:80px 0 60px}
  .heroA__split{gap:44px}
  .heroA__stats,.heroB__stats,.pods-hero__stats,.case-results{gap:24px}
  .podband__inner,.heroC__inner{gap:48px}
  .chapter{grid-template-columns:220px 1fr;gap:44px}
  .case-row{grid-template-columns:250px 1fr}
  .site-header__inner{gap:26px}
  .nav{gap:20px}
}

/* Tablet --------------------------------------------------------------- */
@media (max-width:980px){
  .nav,.site-header__cta{display:none}
  .nav-toggle{display:flex}
  .site-header__inner{gap:16px}

  .heroA{padding:64px 0 52px}
  .heroA__split{grid-template-columns:1fr;gap:28px;align-items:start;margin-top:32px}
  .heroA__stats{grid-template-columns:repeat(2,1fr);gap:28px;margin-top:52px}

  .heroB{padding:72px 0 64px}
  .heroB__split{grid-template-columns:1fr;gap:30px;align-items:start;margin-top:38px}
  .heroB__actions{justify-content:flex-start}
  .heroB__stats{grid-template-columns:repeat(2,1fr);gap:28px;margin-top:52px}

  .heroC__inner{grid-template-columns:1fr;gap:40px;padding:64px var(--shell-pad) 72px}
  .heroC__note{position:static;transform:none;margin-top:26px;padding:0}

  .logos__inner{flex-direction:column;align-items:flex-start;gap:22px}
  .logos__eyebrow{max-width:none}
  .logos__grid{width:100%;grid-template-columns:repeat(3,1fr)}

  .caps{padding:72px 0}
  .caps__grid{grid-template-columns:repeat(2,1fr);margin-top:34px}

  .podband{padding:72px 0}
  .podband__inner{grid-template-columns:1fr;gap:40px}

  .work{padding:72px 0}
  .work__grid{grid-template-columns:1fr;margin-top:34px}

  .start{padding:72px 0}
  .start__inner{grid-template-columns:1fr;gap:40px}

  .page-head,.cases-head,.about-head{padding:64px 0 44px}
  .svc-row{grid-template-columns:64px 1fr;gap:24px;padding:34px 0}
  .svc-row__points{grid-column:2/-1;padding-top:0}
  .engagements{grid-template-columns:1fr;margin-top:44px}

  .pods-hero{padding:64px 0 56px}
  .pods-hero__stats{grid-template-columns:repeat(2,1fr);gap:28px;margin-top:44px}
  .pods{padding:64px 0}
  .pods__grid{grid-template-columns:1fr;gap:16px}
  .bench__inner{grid-template-columns:1fr;gap:32px}

  .cases{padding:40px 0 72px}
  .case-row{grid-template-columns:1fr}
  .case-row__media{min-height:170px}
  .case-row__body{grid-template-columns:1fr;gap:24px;padding:26px}

  .case-hero{min-height:340px}
  .case-hero__inner{padding:64px var(--shell-pad) 44px}
  .case-meta{gap:26px}
  .chapters{padding:56px 0 72px}
  .chapter{grid-template-columns:1fr;gap:20px;padding:34px 0}
  .chapter__num{display:inline-block}
  .chapter__label{display:inline-block;margin-top:0;margin-left:14px;vertical-align:middle}
  .case-results{grid-template-columns:repeat(2,1fr);gap:28px}

  .about-head__inner{grid-template-columns:1fr;gap:26px;align-items:start}
  .about-body{padding:56px 0}
  .centres{grid-template-columns:repeat(2,1fr)}
  .about-split{grid-template-columns:1fr;gap:40px;margin-top:52px}

  .contact{padding:64px 0 72px}
  .contact__inner{grid-template-columns:1fr;gap:40px}

  .site-footer__cols{grid-template-columns:1fr 1fr;gap:34px}
  .site-footer__bottom{flex-direction:column;align-items:flex-start;gap:14px}

  .hero-switch{bottom:16px}
}

/* Phone ---------------------------------------------------------------- */
@media (max-width:600px){
  .site-header__inner{height:64px}
  .mobile-nav{top:64px}
  .site-header__logo img{height:22px}

  .heroA{padding:48px 0 40px}
  .heroA__title{margin-top:18px}
  .heroA__stats{grid-template-columns:1fr 1fr;gap:22px;margin-top:40px;padding-top:22px}

  .heroB{padding:52px 0 48px}
  .heroB__title{margin-top:24px}
  .heroB__stats{grid-template-columns:1fr 1fr;gap:22px;margin-top:40px}

  .heroC__inner{padding:48px var(--shell-pad) 56px}
  .heroC__card{padding:24px}
  .timeline__row{grid-template-columns:1fr;gap:6px;padding:14px 0}

  .logos{padding:28px 0}
  .logos__grid{grid-template-columns:repeat(2,1fr);gap:12px}

  .caps{padding:52px 0}
  .caps__grid{grid-template-columns:1fr;gap:16px}
  .sec-head{flex-direction:column;align-items:flex-start;gap:20px}

  .podband{padding:52px 0}
  .podfacts{grid-template-columns:1fr}
  .podfacts__cell{padding:24px 20px}

  .work{padding:52px 0}
  .start{padding:52px 0}

  .btn-row .btn{flex:1 1 100%}
  .btn--lg{padding:14px 24px}

  .page-head,.cases-head,.about-head{padding:48px 0 36px}
  .svc-list{padding:0 0 64px}
  .svc-row{grid-template-columns:1fr;gap:14px;padding:28px 0}
  .svc-row__points{grid-column:auto}
  .engagements{margin-top:34px}

  .pods-hero{padding:48px 0 44px}
  .pods-hero__stats{grid-template-columns:1fr 1fr;gap:22px;margin-top:36px}
  .pods{padding:48px 0}
  .bench{padding:0 0 64px}

  .case-hero{min-height:280px}
  .case-hero__inner{padding:48px var(--shell-pad) 36px}
  .case-meta{gap:18px;flex-direction:column}
  .case-results{grid-template-columns:1fr 1fr;gap:22px}
  .case-row__stats{gap:18px;padding-left:16px}

  .centres{grid-template-columns:1fr}
  .leaders{gap:18px}

  .contact{padding:48px 0 64px}
  .form-row{grid-template-columns:1fr}
  .card--p38,.card--p34{padding:24px}

  .site-footer{padding:48px 0 28px}
  .site-footer__cols{grid-template-columns:1fr;gap:28px}
  .site-footer__bottom{margin-top:36px}
  .site-footer__bottom .wordmark{letter-spacing:var(--ls-label)}

  .hero-switch{bottom:12px;padding:5px 6px}
  .hero-switch__label{padding:0 6px 0 4px}
}


/* ---------- 08 motion system, scroll showreel & premium hover ------------- */
/* Added with the homepage showreel. Everything here degrades to a static
   layout under prefers-reduced-motion (guard at the top of this file). */

/* Scroll progress hairline (injected by main.js) */
.scroll-progress{
  position:fixed;top:0;left:0;height:2px;width:0;z-index:60;
  background:var(--blue-600);
  transition:width 90ms linear;
  pointer-events:none;
}

/* Header settles into a denser bar once the page moves */
.site-header{transition:box-shadow var(--dur-base) var(--ease-standard),background var(--dur-base) var(--ease-standard)}
.site-header.is-scrolled{box-shadow:0 1px 0 var(--ink-100),0 10px 30px rgba(21,21,21,.06);background:rgba(255,255,255,.97)}
.site-header.is-scrolled .site-header__inner{height:64px}
.site-header__inner{transition:height var(--dur-base) var(--ease-standard)}
.site-header__logo img{transition:transform var(--dur-base) var(--ease-standard)}
.site-header__logo:hover img{transform:translateY(-1px) scale(1.02)}

/* Nav underline sweeps in from the left */
.nav a{position:relative}
.nav a::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:var(--blue-600);transform:scaleX(0);transform-origin:left;
  transition:transform var(--dur-base) var(--ease-standard);
}
.nav a:hover::after,.nav a.is-active::after{transform:scaleX(1)}

/* Mobile nav links stagger in */
.mobile-nav.is-open .mobile-nav__inner > *{animation:bsUp 420ms var(--ease-standard) both}
.mobile-nav.is-open .mobile-nav__inner > *:nth-child(2){animation-delay:50ms}
.mobile-nav.is-open .mobile-nav__inner > *:nth-child(3){animation-delay:100ms}
.mobile-nav.is-open .mobile-nav__inner > *:nth-child(4){animation-delay:150ms}
.mobile-nav.is-open .mobile-nav__inner > *:nth-child(5){animation-delay:200ms}
.mobile-nav.is-open .mobile-nav__inner > *:nth-child(6){animation-delay:250ms}

/* ---- on-load: heading words fall into place ----------------------------- */
@keyframes bsDrop{
  0%{opacity:0;transform:translate3d(0,-130%,0) rotate(-14deg)}
  55%{opacity:1;transform:translate3d(0,5%,0) rotate(3deg)}
  78%{transform:translate3d(0,-3%,0) rotate(-1deg)}
  100%{opacity:1;transform:none}
}
.drop-line{display:block;perspective:900px}
.drop-word{display:inline-block;transform-origin:50% 100%;animation:bsDrop 720ms var(--d,0ms) cubic-bezier(.2,.8,.2,1) both}

/* ---- on-scroll reveal --------------------------------------------------- */
.js [data-reveal]{opacity:0;transform:translateY(20px);will-change:opacity,transform}
[data-reveal].is-in{
  opacity:1;transform:none;
  transition:opacity 620ms var(--ease-standard),transform 620ms var(--ease-standard);
  transition-delay:calc(var(--i,0) * 70ms);
}
.js [data-reveal-x]{opacity:0;transform:translateX(-24px)}
[data-reveal-x].is-in{opacity:1;transform:none;transition:opacity 620ms var(--ease-standard),transform 620ms var(--ease-standard)}

/* ---- homepage showreel -------------------------------------------------- */
.heroV{background:transparent;padding-bottom:0;border-bottom:0}
.heroV__copy,.heroV__foot{position:relative;z-index:2;background:var(--white)}
.heroV__copy{padding-bottom:40px}
.heroV__title{max-width:18ch}
.heroV__foot .heroA__stats{margin-top:0;padding-bottom:64px}

.hero-video{position:relative;height:70vh;margin-top:8px}
.hero-video__frame{
  position:absolute;top:0;bottom:0;
  left:var(--shell-pad,64px);right:var(--shell-pad,64px);
  overflow:hidden;border-radius:var(--radius-md);background:var(--ink-900);
  z-index:1;
}
.hero-video__frame video{width:100%;height:100%;object-fit:cover;display:block}
.hero-video__caption{
  position:absolute;left:24px;bottom:22px;
  color:rgba(255,255,255,.72);
}
/* Sections after the hero ride over the pinned video */
.page__main > section,.site-footer,.site-header{position:relative;z-index:2}
.page__main > section:not(.band-brand):not(.logos):not(.heroV):not(.heroC){background:var(--white)}

/* ---- premium hover ------------------------------------------------------ */
.card{transition:transform var(--dur-base) var(--ease-standard),box-shadow var(--dur-base) var(--ease-standard),border-color var(--dur-base) var(--ease-standard)}
.card--interactive:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--blue-200)}
.card--interactive:active{transform:translateY(-1px) scale(.995)}

.svc-card .icon{transition:transform var(--dur-base) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}
.svc-card:hover .icon{transform:translateY(-2px) scale(1.06)}
.svc-card__title{transition:color var(--dur-fast) var(--ease-standard)}
.svc-card:hover .svc-card__title{color:var(--blue-600)}

.case-card__media{overflow:hidden}
.case-card__media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(120deg,rgba(255,255,255,0) 40%,rgba(255,255,255,.28) 50%,rgba(255,255,255,0) 60%);
  transform:translateX(-120%);
}
.card--interactive:hover .case-card__media::after{transform:translateX(120%);transition:transform 900ms var(--ease-standard)}

.btn{transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),transform var(--dur-base) var(--ease-standard),box-shadow var(--dur-base) var(--ease-standard)}
.btn:hover{transform:translateY(-2px)}
.btn--primary:hover{box-shadow:var(--shadow-brand,0 10px 24px rgba(1,14,208,.22))}
.btn:active{transform:scale(.97)}

.link-cta{position:relative;display:inline-flex;align-items:center;gap:8px}
.link-cta::after{content:"\2192";transition:transform var(--dur-base) var(--ease-standard)}
.link-cta:hover::after{transform:translateX(5px)}

.logo-tile{transition:border-color var(--dur-base) var(--ease-standard),color var(--dur-base) var(--ease-standard),transform var(--dur-base) var(--ease-standard),background var(--dur-base) var(--ease-standard)}
.logo-tile:hover{border-color:var(--blue-600);color:var(--blue-600);background:var(--white);transform:translateY(-2px)}

.podfacts__cell{transition:background var(--dur-base) var(--ease-standard)}
.podfacts__cell:hover{background:var(--blue-700,#000ba8)}

.stat{transition:transform var(--dur-base) var(--ease-standard)}
.stat:hover{transform:translateY(-2px)}

.timeline__row,.chapter,.svc-row{transition:background var(--dur-base) var(--ease-standard)}
.svc-row:hover,.timeline__row:hover{background:var(--ink-050)}

table tbody tr{transition:background var(--dur-fast) var(--ease-standard)}
table tbody tr:hover{background:var(--ink-050)}

.footer-col__list a{transition:color var(--dur-fast) var(--ease-standard),transform var(--dur-base) var(--ease-standard);display:inline-block}
.footer-col__list a:hover{color:var(--white);transform:translateX(3px)}

.input,.select,.textarea{transition:border-color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}

.hero-switch a{transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}

/* ---- showreel responsive ------------------------------------------------ */
@media (max-width:1180px){.hero-video__frame{left:var(--shell-pad,40px);right:var(--shell-pad,40px)}}
@media (max-width:980px){
  .hero-video{height:56vh}
  .heroV__copy{padding-bottom:28px}
}
@media (max-width:600px){
  .hero-video{height:46vh}
  .hero-video__caption{left:16px;bottom:14px}
  .heroV__foot .heroA__stats{padding-bottom:44px}
}


/* ---------- 09 hover & entrance, second pass ------------------------------ */
/* The reveal transition must not own hover: once an element has appeared its
   stagger delay is cleared (main.js) and hover transitions take over. */

.js [data-reveal].is-in{transition-delay:calc(var(--i,0) * 70ms)}
.js [data-reveal].is-done{
  transition:opacity var(--dur-base) var(--ease-standard),
             transform var(--dur-base) var(--ease-standard),
             box-shadow var(--dur-base) var(--ease-standard),
             border-color var(--dur-base) var(--ease-standard),
             background var(--dur-base) var(--ease-standard);
  transition-delay:0ms;
}

/* Cards: lift, hairline shift, brand glow */
.card{position:relative}
.card--interactive::before{
  content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;
  box-shadow:0 0 0 0 rgba(1,14,208,0);
  transition:box-shadow var(--dur-base) var(--ease-standard);
}
.card--interactive:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:var(--blue-600)}
.card--interactive:hover::before{box-shadow:0 0 0 3px rgba(1,14,208,.12)}
.card--interactive:active{transform:translateY(-2px) scale(.994)}

/* Service tiles */
.svc-card .icon{transition:transform var(--dur-base) var(--ease-standard)}
.svc-card:hover .icon{transform:translateY(-4px) rotate(-6deg) scale(1.12)}
.svc-card p{transition:color var(--dur-base) var(--ease-standard)}
.svc-card:hover p{color:var(--ink-700)}

/* Case-card media zooms and warms under the wash */
.case-card__media{transition:transform 700ms var(--ease-standard),filter 700ms var(--ease-standard)}
.card--interactive:hover .case-card__media{transform:scale(1.04)}
.card--interactive:hover .case-card__sector{transform:translateY(-3px)}
.case-card__sector{transition:transform var(--dur-base) var(--ease-standard)}

/* Buttons fill with a sweep */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(90deg,rgba(255,255,255,.22),rgba(255,255,255,0));
  transform:translateX(-101%);
  transition:transform 520ms var(--ease-standard);
}
.btn:hover::before{transform:translateX(0)}
.btn--outline::before,.btn--ghost::before{background:linear-gradient(90deg,var(--blue-100),rgba(222,223,255,0))}
.btn--primary:hover{box-shadow:var(--shadow-brand)}
.btn:hover{transform:translateY(-3px)}
.btn:active{transform:translateY(0) scale(.97)}

/* Text links and CTAs */
.link-cta::after{content:"\2192";transition:transform var(--dur-base) var(--ease-standard)}
.link-cta:hover::after{transform:translateX(7px)}
.link-cta{transition:color var(--dur-fast) var(--ease-standard)}
.link-cta:hover{color:var(--blue-700)}

/* Nav */
.nav a{transition:color var(--dur-fast) var(--ease-standard),transform var(--dur-base) var(--ease-standard)}
.nav a:hover{color:var(--blue-600);transform:translateY(-1px)}

/* Figures pick up a rule on hover */
.stat{position:relative;padding-bottom:6px}
.stat::after{
  content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;
  background:var(--blue-600);transform:scaleX(0);transform-origin:left;
  transition:transform 420ms var(--ease-standard);
}
.stat--inverse::after{background:var(--white)}
.stat:hover::after{transform:scaleX(1)}

/* Logo strip: the row dims, the hovered tile stays sharp */
.logos__grid:hover .logo-tile{opacity:.55;transition:opacity var(--dur-base) var(--ease-standard)}
.logos__grid .logo-tile:hover{opacity:1;border-style:solid;border-color:var(--blue-600);color:var(--blue-600);transform:translateY(-3px)}

/* Brand band arcs drift, and shift slightly with scroll (main.js sets --par) */
.band-brand__grid{
  transform:translate3d(0,calc(var(--par,0) * 1px),0);
  transition:transform 200ms linear;
}
.podfacts__cell{transition:background var(--dur-base) var(--ease-standard),transform var(--dur-base) var(--ease-standard)}
.podfacts__cell:hover{background:var(--blue-700);transform:translateY(-2px)}

/* Rows */
.timeline__row:hover,.svc-row:hover,.chapter:hover{background:var(--ink-050)}
.timeline__row,.svc-row,.chapter{transition:background var(--dur-base) var(--ease-standard);border-radius:var(--radius-sm)}

/* Footer */
.site-footer__brand img{transition:transform var(--dur-base) var(--ease-standard)}
.site-footer__brand:hover img{transform:translateY(-2px) scale(1.03)}
.wordmark{transition:letter-spacing 600ms var(--ease-standard)}
.site-footer__bottom:hover .wordmark{letter-spacing:.42em}

/* Form focus polish */
.input:focus,.select:focus,.textarea:focus{box-shadow:0 0 0 3px rgba(1,14,208,.14)}


/* ---------- 10 on-load entrance, every page ------------------------------ */
/* main.js tags the first section of each page: the h1 falls into place word
   by word, everything else fades up behind it. */
.a-load{animation:bsUp 560ms var(--ld,0ms) var(--ease-standard) both}
.js .page__main > section:first-child h1{opacity:1}
.drop-word{white-space:pre}

/* Homepage showreel heading runs at poster scale, uppercase, one word a line */
.heroV__title--mega{
  max-width:none;
  font-size:clamp(56px,10.5vw,168px);
  line-height:.88;letter-spacing:-.035em;text-transform:uppercase;
}
