/* Layout and interaction refinements. */
:root{--paper:#fff;--mist:#f7faff;--dark:var(--blue);--site-gutter:clamp(24px,3.3vw,64px)}
body{background:#fff}
.about,.expertise,.projects{background:#fff}
.services,.digital{background:var(--mist)}

/* One custom cursor: cool shadow on light surfaces, pale ring on blue. */
@media (hover:hover) and (pointer:fine){
  html.custom-cursor-enabled,html.custom-cursor-enabled *{cursor:none!important}
  .cursor-ring{
    width:26px;height:26px;opacity:0;
    border:2px solid var(--ink);
    background:rgba(28,69,135,.08);
    box-shadow:0 0 0 1px rgba(255,255,255,.36) inset;
    mix-blend-mode:normal;
    transition:width .28s ease,height .28s ease,border-color .25s ease,background-color .25s ease,opacity .2s ease;
  }
  .cursor-ring.visible{opacity:1}
  .cursor-ring::before{
    content:"";position:absolute;left:50%;top:50%;width:190px;height:190px;
    transform:translate(-50%,-50%);border-radius:50%;
    background:radial-gradient(circle,rgba(28,69,135,.16) 0%,rgba(28,69,135,.07) 36%,transparent 72%);
    pointer-events:none;transition:opacity .25s ease;
  }
  .cursor-ring.active{width:40px;height:40px;background:rgba(28,69,135,.11)}
  .cursor-ring.on-blue{width:36px;height:36px;border-color:#f7faff;background:rgba(247,250,255,.12);box-shadow:0 0 0 1px rgba(28,69,135,.16) inset}
  .cursor-ring.on-blue::before{opacity:0}
  .cursor-ring.on-blue.active{width:50px;height:50px;background:rgba(247,250,255,.18)}
  html.custom-cursor-enabled:has(.privacy-dialog[open]),
  html.custom-cursor-enabled:has(.privacy-dialog[open]) *{cursor:auto!important}
  html.custom-cursor-enabled:has(.privacy-dialog[open]) .cursor-ring{display:none}
}

/* Let the opening wordmark fill the available screen without clipping. */
.hero-title{font-size:clamp(120px,min(21vw,34vh),320px);line-height:.92}
.hero-word:first-child{padding-bottom:.035em}
.hero-word-second{margin-top:-.11em;margin-right:clamp(36px,10vw,140px)}
@media(max-width:700px){
  .hero-title{font-size:min(29vw,20vh,150px);line-height:.94}
  .hero-word-second{margin-top:-.04em}
}

/* Section labels work as clear, consistent running heads. */
.section-topline .eyebrow,.statement-top .eyebrow,.digital-topline .eyebrow{
  font:600 clamp(16px,1.3vw,21px)/1.25 Manrope,Arial,sans-serif;
  letter-spacing:-.01em;
  text-transform:none;
}
.course-banner-label{font:600 clamp(16px,1.3vw,21px)/1.25 Manrope,Arial,sans-serif;text-transform:none;letter-spacing:-.01em}
.section-topline{margin-bottom:clamp(28px,4vh,52px)}
.statement-top{align-items:center}

/* The editorial cards share the hero's moving diagonals and orbital language. */
.principle{
  isolation:isolate;
  overflow:hidden;
  background:#fff;
  transition:background-color .55s ease,color .55s ease,border-color .55s ease;
}
.principle::before{
  content:"";
  position:absolute;
  inset:0;
  opacity:.65;
  background:repeating-linear-gradient(115deg,transparent 0 88px,rgba(28,69,135,.085) 89px,transparent 90px);
  animation:blue-field 24s linear infinite;
  pointer-events:none;
}
.principle:hover::before{background:repeating-linear-gradient(115deg,transparent 0 88px,rgba(255,255,255,.14) 89px,transparent 90px)}
.principle-scene{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;opacity:.55;transition:opacity .55s ease}
.principle:hover .principle-scene{opacity:.82}
.principle-orbit{position:absolute;width:265px;height:265px;right:-30px;top:-75px;border:1px solid currentColor;border-radius:50%;opacity:.42;transform-style:preserve-3d}
.principle-orbit-one{animation:blue-ring-a 14s linear infinite}
.principle-orbit-two{animation:blue-ring-b 20s linear infinite}
.principle-orbit-three{width:165px;height:165px;right:20px;top:-25px;border-style:dashed;opacity:.3;animation:spin 26s linear infinite}
.principle-satellite{position:absolute;right:142px;top:21px;width:8px;height:8px;border-radius:50%;background:var(--lime);border:1px solid var(--ink);animation:principle-satellite 9s ease-in-out infinite alternate}
.principle:nth-child(2) .principle-orbit{width:340px;height:340px;right:-105px;top:-62px}
.principle:nth-child(2) .principle-orbit-one{animation-direction:reverse}
.principle:nth-child(2) .principle-orbit-two{animation-duration:24s}
.principle:nth-child(2) .principle-orbit-three{width:190px;height:190px;right:-30px;top:10px}
.principle:nth-child(2) .principle-satellite{right:52px;top:163px;animation-direction:alternate-reverse}
@keyframes principle-satellite{to{transform:translate(64px,75px)}}
.principle h3,.principle p{position:relative;z-index:1;transition:transform .55s cubic-bezier(.2,.7,.2,1)}
.principle:hover h3{transform:translateY(-6px)}
.principle:hover p{transform:translateY(-3px)}

/* Service rows reveal their hover state instead of changing padding suddenly. */
.service-row{position:relative;isolation:isolate;overflow:hidden;padding-left:14px;padding-right:14px}
.service-row::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:#fff;
  transform:scaleY(0);
  transform-origin:top;
  transition:transform .48s cubic-bezier(.2,.75,.2,1);
}
.service-row:hover{padding-left:14px;padding-right:14px;background:transparent}
.service-row:hover::before{transform:scaleY(1)}
.service-row h3,.service-row ul,.service-row .service-symbol{transition:transform .48s cubic-bezier(.2,.75,.2,1),color .35s ease}
.service-row:hover h3{transform:translateX(13px)}
.service-row:hover ul{transform:translateX(8px)}
.service-row:hover .service-symbol{transform:translate(-8px,-3px) rotate(45deg)}

/* One continuous blue section: statement, expertise, then consultation. */
.statement{display:flex;flex-direction:column;justify-content:flex-start;gap:0}
.statement p{margin:clamp(42px,5vh,68px) 0 clamp(38px,5vh,65px)}
.statement-consultation{
  width:max-content;
  min-width:min(330px,100%);
  max-width:100%;
  gap:26px;
  font:600 clamp(16px,1.4vw,20px)/1.3 Manrope,Arial,sans-serif!important;
  text-transform:none!important;
  letter-spacing:0!important;
  transition:color .35s ease,border-color .35s ease;
}
.statement-consultation:hover{color:var(--lime);border-color:var(--lime)}
.statement-consultation span{transition:transform .35s ease}
.statement-consultation:hover span{transform:translate(5px,-5px)}
.expertise{align-items:center}
.expertise-grid{display:block;width:100%}
.expertise-items{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  grid-template-rows:repeat(3,auto);
  grid-auto-flow:column;
  column-gap:clamp(36px,7vw,110px);
}
.expertise-item{min-width:0;min-height:175px;padding:23px 12px 25px;transition:background-color .4s ease}
.expertise-item:hover{padding-left:12px;background:var(--mist)}
.expertise-item h3{font-size:clamp(22px,2vw,31px)}
.expertise-item p{font-size:15px}
.expertise-item:nth-child(3),.expertise-item:nth-child(6){border-bottom:1px solid var(--line)}
.statement .expertise-items{position:relative;z-index:2;width:100%;margin-bottom:26px}
.statement .expertise-item{color:#f7f7f4;border-top-color:rgba(235,244,255,.27)}
.statement .expertise-item:nth-child(3),.statement .expertise-item:nth-child(6){border-bottom-color:rgba(235,244,255,.27)}
.statement .expertise-item p{color:#dce8fa;margin:9px 0 0;font-size:15px;line-height:1.6}
.statement .expertise-number{color:#dce8fa}
.statement .expertise-item:hover{background:rgba(255,255,255,.07)}
.statement .statement-consultation{position:relative;z-index:2;align-self:flex-start;margin-top:6px}

/* Digital products: running head above an editorial headline. */
.digital{justify-content:center;padding-top:28px;padding-bottom:28px}
.digital-topline{width:100%;margin-bottom:24px}
.digital-head{display:block}
.digital-head .display-heading{
  max-width:1280px;
  font-size:clamp(40px,4.6vw,70px);
  line-height:1.1;
  letter-spacing:-.04em;
  text-wrap:balance;
}
.digital-head .display-heading em{font-style:italic}
.digital-headline-line{display:block;white-space:nowrap}
.digital-grid{margin-top:28px}
.digital-footer{margin-top:22px}
.digital-point{padding:9px 12px 13px;transition:background-color .4s ease}
.digital-point:hover{padding-left:12px;background:rgba(255,255,255,.7)}
.digital-point h3{transition:transform .4s ease}
.digital-point:hover h3{transform:translateX(4px)}

/* Original project artwork is shown whole against white. */
.projects{background:#fff}
.project-card{--project-art-height:clamp(205px,19vw,285px);isolation:isolate;overflow:visible;padding-left:14px;padding-right:14px}
.project-card::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:var(--mist);
  transform:scaleY(0);
  transform-origin:top;
  transition:transform .48s cubic-bezier(.2,.75,.2,1);
}
.project-card:hover,.project-card:focus-within{padding-left:14px;padding-right:14px}
.project-card:hover::before,.project-card:focus-within::before{transform:scaleY(1)}
.project-main h3,.project-arrow{transition:transform .45s cubic-bezier(.2,.75,.2,1),color .35s ease}
.project-card:hover .project-main h3,.project-card:focus-within .project-main h3{transform:translateX(8px)}
.project-card:hover .project-arrow,.project-card:focus-within .project-arrow{transform:translate(3px,-4px) rotate(15deg)}
.project-visual,.project-card:nth-child(even) .project-visual,
.project-card:hover .project-visual,.project-card:focus-within .project-visual{
  background:transparent;
  border:0;
  box-shadow:none;
  display:block;
  overflow:visible;
  height:var(--project-art-height);
  min-height:0;
}
.project-visual img{display:block;width:100%;height:var(--project-art-height);min-height:0;max-height:var(--project-art-height);padding:0;object-fit:contain;transition:transform .55s cubic-bezier(.2,.75,.2,1)}
.project-card:hover .project-visual img,.project-card:focus-within .project-visual img{transform:translateY(-5px);filter:none}
.project-card:nth-child(2) .project-visual img,
.project-card:nth-child(3) .project-visual img,
.project-card:nth-child(4) .project-visual img,
.project-card:nth-child(5) .project-visual img,
.project-card:nth-child(6) .project-visual img,
.project-card:nth-child(7) .project-visual img,
.project-card:nth-child(8) .project-visual img,
.project-card:nth-child(9) .project-visual img,
.project-card:nth-child(10) .project-visual img{mask-size:contain;mask-position:center;mask-repeat:no-repeat}
.project-card:nth-child(2) .project-visual img{mask-image:url('assets/project-02-mask.webp')}
.project-card:nth-child(3) .project-visual img{mask-image:url('assets/project-03-mask.webp')}
.project-card:nth-child(4) .project-visual img{mask-image:url('assets/project-04-mask.webp')}
.project-card:nth-child(5) .project-visual img{mask-image:url('assets/project-05-mask.webp')}
.project-card:nth-child(6) .project-visual img{mask-image:url('assets/project-06-mask.webp')}
.project-card:nth-child(7) .project-visual img{mask-image:url('assets/project-07-mask.webp')}
.project-card:nth-child(8) .project-visual img{mask-image:url('assets/project-08-mask.webp')}
.project-card:nth-child(9) .project-visual img{mask-image:url('assets/project-09-mask.webp')}
.project-card:nth-child(10) .project-visual img{mask-image:url('assets/project-10-mask.webp')}
.arrow-link span{transition:transform .35s ease}
.arrow-link:hover span{transform:translate(4px,-4px)}

/* One interaction for all text calls to action: a lime highlight, dark readable text. */
.cta-link,.statement .cta-link{
  position:relative;
  isolation:isolate;
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:36px;
  width:max-content;
  min-width:220px;
  max-width:100%;
  padding:10px 12px;
  border:0;
  border-bottom:1px solid currentColor;
  font:600 clamp(15px,1.25vw,18px)/1.3 Manrope,Arial,sans-serif!important;
  letter-spacing:0!important;
  text-transform:none!important;
  transition:color .35s ease,border-color .35s ease;
}
.statement .cta-link{border-top:0;color:#fff}
.cta-link::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:var(--lime);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .45s cubic-bezier(.2,.75,.2,1);
}
.cta-link:hover,.cta-link:focus-visible,.statement .cta-link:hover,.statement .cta-link:focus-visible{color:var(--ink);border-color:var(--ink);gap:36px}
.cta-link:hover::before,.cta-link:focus-visible::before{transform:scaleX(1)}
.cta-link span{font-size:22px;line-height:1;transition:transform .35s ease}
.cta-link:hover span,.cta-link:focus-visible span{transform:translate(4px,-4px)}

@media(max-width:1050px){
  .expertise{display:block}
  .expertise-item{min-height:0}
  .digital-head .display-heading{font-size:clamp(39px,6vw,62px)}
}
@media(max-width:700px){
  .section-topline .eyebrow,.statement-top .eyebrow,.digital-topline .eyebrow{font-size:17px}
  .principle-orbit{width:210px;height:210px;right:-75px;top:-75px}
  .principle-orbit-three{width:125px;height:125px;right:-32px;top:-32px}
  .principle:nth-child(2) .principle-orbit{width:250px;height:250px;right:-115px;top:-55px}
  .principle:nth-child(2) .principle-orbit-three{width:145px;height:145px;right:-65px;top:0}
  .service-row:hover h3{transform:translateX(8px)}
  .expertise-items{grid-template-columns:1fr;grid-template-rows:none;grid-auto-flow:row}
  .expertise-item{padding:22px 12px;min-height:0}
  .expertise-item:nth-child(3){border-bottom:0}
  .digital-head .display-heading{font-size:clamp(37px,9vw,56px);line-height:1.13}
  .digital-headline-line{white-space:normal}
  .project-card{--project-art-height:clamp(185px,44vw,280px)}
}
@media(prefers-reduced-motion:reduce){
  .principle::before,.principle-orbit,.principle-satellite{animation:none!important}
  .service-row::before,.project-card::before{transition:none}
}

/* Shared section rhythm. */
.section-shell{padding-top:clamp(56px,6vw,86px);padding-bottom:clamp(56px,6vw,86px)}
.section-topline{padding-top:16px;margin-bottom:clamp(42px,5vw,72px)}
.principles{margin-top:clamp(48px,5.5vw,80px)}
.services-heading{margin-bottom:clamp(44px,5vw,72px)}
.service-footer{margin-top:clamp(28px,3.5vw,48px)}
.projects-head{margin-bottom:clamp(40px,4.5vw,64px)}
.statement{padding-top:clamp(56px,6vw,86px);padding-bottom:clamp(56px,6vw,86px)}
.statement p.reveal{margin:clamp(48px,5vw,72px) 0 clamp(44px,5vw,70px)}
.statement .expertise-items{margin-bottom:clamp(24px,3vw,40px)}

/* A full-width field of the technologies shown on the original site. */
.digital{min-height:0;display:block;padding-top:clamp(56px,6vw,86px);padding-bottom:clamp(56px,6vw,86px)}
.digital-topline{margin-bottom:clamp(42px,5vw,72px)}
.digital-head .display-heading{max-width:none;font-size:clamp(62px,7.7vw,118px);line-height:1.02;letter-spacing:-.065em;text-wrap:initial}
.digital-illustration{position:relative;isolation:isolate;width:100%;min-height:clamp(280px,27vw,390px);padding:clamp(28px,3.5vw,56px);margin-top:clamp(48px,5.5vw,78px);overflow:hidden;border:1px solid rgba(28,69,135,.38);background:transparent;color:var(--ink);transition:background-color .6s ease,color .6s ease,border-color .6s ease}
.digital-illustration:hover{background:var(--blue);color:#fff;border-color:var(--blue)}
.digital-illustration::before{content:"";position:absolute;inset:-100% -20%;z-index:-2;opacity:.8;background:repeating-linear-gradient(115deg,transparent 0 115px,rgba(28,69,135,.095) 116px,transparent 117px);animation:blue-field 25s linear infinite;transition:opacity .6s ease}
.digital-illustration:hover::before{background:repeating-linear-gradient(115deg,transparent 0 115px,rgba(255,255,255,.095) 116px,transparent 117px)}
.digital-illustration-field{position:absolute;inset:0;z-index:-1;pointer-events:none}
.digital-path{position:absolute;border:1px solid currentColor;border-radius:50%;opacity:.18;transform:rotate(-24deg);transition:opacity .6s ease}
.digital-illustration:hover .digital-path{opacity:.3}
.digital-path-one{width:clamp(480px,57vw,880px);height:35%;left:38%;top:15%;animation:digital-path 22s linear infinite}
.digital-path-two{width:clamp(420px,47vw,720px);height:62%;left:55%;top:5%;animation:digital-path 28s linear infinite reverse}
.digital-path-three{width:38%;aspect-ratio:1;left:66%;top:-40%;border-style:dashed;opacity:.14;animation:spin 40s linear infinite}
.digital-signal{position:absolute;width:9px;height:9px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 7px rgba(217,255,104,.1);animation:digital-signal 7s ease-in-out infinite alternate}
.digital-signal-one{right:24%;top:17%}.digital-signal-two{right:11%;bottom:12%;animation-delay:-3.5s}
@keyframes digital-path{50%{transform:rotate(14deg) scale(1.06)}}
@keyframes digital-signal{to{transform:translate(40px,55px)}}
.technology-list{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 clamp(20px,4vw,64px);list-style:none;margin:0;padding:0}
.technology-list li{min-width:0;padding:16px 0 17px;border-top:1px solid currentColor;font-size:clamp(17px,1.75vw,25px);line-height:1.25;letter-spacing:-.025em;transition:transform .45s cubic-bezier(.2,.7,.2,1),border-color .6s ease}
.technology-list li:hover{transform:translateX(7px)}
.digital-illustration:not(:hover) .technology-list li{border-color:rgba(20,59,120,.3)}
.digital-illustration:hover .technology-list li{border-color:rgba(255,255,255,.35)}
.digital-points{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,auto);grid-auto-flow:row;column-gap:clamp(36px,7vw,110px);margin-top:clamp(52px,6vw,86px);align-content:start}
.digital-point{min-width:0;min-height:165px;padding:22px 12px 26px;border-top:1px solid var(--line)}
.digital-point:nth-child(3),.digital-point:nth-child(4){border-bottom:1px solid var(--line)}
.digital-point h3{font-size:clamp(22px,2vw,31px);margin:0 0 10px}
.digital-point p{font-size:15px;line-height:1.6;margin:0;max-width:600px}
.digital-footer{margin-top:clamp(28px,3.5vw,48px)}

@media(max-width:1050px){
  .digital-head .display-heading{font-size:clamp(56px,8vw,83px)}
  .technology-list{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:700px){
  .section-shell{padding-top:56px;padding-bottom:56px}
  .section-topline{margin-bottom:40px}
  .principles{margin-top:46px}
  .services-heading{margin-bottom:42px}
  .digital-head .display-heading{font-size:clamp(39px,9vw,62px);line-height:1.08;letter-spacing:-.05em}
  .digital-head br{display:none}
  .digital-illustration{min-height:0;padding:30px 20px 38px;margin-top:42px}
  .digital-illustration h3{font-size:42px;margin-bottom:48px}
  .technology-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}
  .technology-list li{font-size:16px;padding:13px 0 14px;overflow-wrap:anywhere}
  .digital-points{grid-template-columns:1fr;margin-top:50px}
  .digital-point{min-height:0;padding:20px 12px 24px}
  .digital-point:nth-child(3){border-bottom:0}
  .digital-footer{margin-top:28px}
  .statement{padding-top:56px;padding-bottom:56px}
  .partners{min-height:100svh;padding-top:34px;padding-bottom:34px;gap:24px}
}
@media(prefers-reduced-motion:reduce){
  .digital-illustration::before,.digital-path,.digital-signal{animation:none!important}
}

/* One type scale for the main section headings, keyed to the blue expertise title. */
:root{--section-title-size:clamp(46px,6vw,95px)}
.about .display-heading,
.services-heading .display-heading,
.statement p.reveal,
.digital-head .display-heading,
.projects .display-heading,
.partners .display-heading,
.contact-title{font-size:var(--section-title-size)}
.course-banner-heading{font-size:var(--section-title-size)}
@media(max-width:700px){
  :root{--section-title-size:clamp(42px,9vw,60px)}
}

/* Expertise rows respond with a soft wipe; list numbers stay anchored. */
.statement .expertise-item{position:relative;isolation:isolate;overflow:hidden;transition:border-color .45s ease}
.statement .expertise-item::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(rgba(255,255,255,.075),rgba(255,255,255,.075)),repeating-linear-gradient(115deg,transparent 0 90px,rgba(255,255,255,.075) 91px,transparent 92px);transform:scaleY(0);transform-origin:top;transition:transform .48s cubic-bezier(.2,.75,.2,1)}
.statement .expertise-item:hover::before{transform:scaleY(1)}
.statement .expertise-item:hover{background:transparent;border-top-color:rgba(255,255,255,.6)}
.statement .expertise-item h3,.statement .expertise-item p{transition:transform .48s cubic-bezier(.2,.75,.2,1),color .4s ease}
.statement .expertise-item:hover h3,.statement .expertise-item:hover p{transform:translateX(8px)}
.statement .expertise-item:hover p{color:#fff}
.statement .expertise-number{transition:color .4s ease}
.statement .expertise-item:hover .expertise-number{color:var(--lime)}

/* The small animated accents share one visual token across the site. */
:root{--motion-dot-size:10px;--motion-dot-halo:0 0 0 5px rgba(217,255,104,.12),0 0 15px rgba(217,255,104,.38)}
.blue-art-dot,.principle-satellite,.digital-signal{width:var(--motion-dot-size);height:var(--motion-dot-size);background:var(--lime);border:1px solid rgba(20,59,120,.5);border-radius:50%;box-shadow:var(--motion-dot-halo)}

/* Header and form actions use the same left-to-right lime reveal as text CTAs. */
.form-honeypot{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;clip-path:inset(50%)!important}
.form-status{margin:12px 0 0;font-size:13px;line-height:1.4;color:#f7faff}
#contact-form>button[type=submit]:disabled{opacity:.65;cursor:wait}
.header-contact,#contact-form>button[type=submit]{position:relative;isolation:isolate;overflow:hidden;transition:color .35s ease,border-color .35s ease}
.header-contact::before,#contact-form>button[type=submit]::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--lime);transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.75,.2,1)}
.header-contact:hover,.header-contact:focus-visible{opacity:1;color:var(--ink);border-color:var(--lime)}
.header-contact:hover::before,.header-contact:focus-visible::before,#contact-form>button[type=submit]:hover::before,#contact-form>button[type=submit]:focus-visible::before{transform:scaleX(1)}
.header-contact span,#contact-form>button[type=submit] span{transition:transform .35s ease}
.header-contact:hover span,.header-contact:focus-visible span,#contact-form>button[type=submit]:hover span,#contact-form>button[type=submit]:focus-visible span{transform:translate(4px,-4px)}
#contact-form>button[type=submit]{background:transparent;color:#f7faff;border:1px solid rgba(247,250,255,.65)}
#contact-form>button[type=submit]:hover,#contact-form>button[type=submit]:focus-visible{background:transparent;color:var(--ink);border-color:var(--lime);transform:none}

/* Contact information belongs with the invitation; the footer stays quiet. */
.contact-layout{padding:clamp(70px,9vh,110px) 0 clamp(65px,8vh,100px)}
.contact-title{margin-bottom:clamp(44px,6vh,75px)}
.contact-info{min-width:0}
.contact-details{max-width:580px;margin-top:clamp(64px,10vh,105px)}
.contact-detail{display:grid;grid-template-columns:clamp(92px,9vw,132px) minmax(0,1fr);gap:18px;padding:18px 0 21px;border-top:1px solid rgba(247,250,255,.36)}
.contact-detail:last-child{border-bottom:1px solid rgba(247,250,255,.36)}
.contact-detail-label{font:500 11px/1.5 'DM Mono',monospace;letter-spacing:.09em;text-transform:uppercase;color:rgba(247,250,255,.65)}
.contact-detail address,.contact-detail a{font:500 clamp(16px,1.55vw,22px)/1.45 Manrope,Arial,sans-serif;letter-spacing:-.02em}
.contact-detail address{font-style:normal}
.contact-detail a{width:max-content;max-width:100%;transition:color .3s ease}
.contact-detail a:hover,.contact-detail a:focus-visible{color:var(--lime)}
.contact footer{grid-template-columns:1fr 1fr auto;column-gap:clamp(25px,5vw,80px);row-gap:clamp(45px,7vh,85px);padding-top:29px}
.footer-brand{display:inline-flex;width:max-content;height:max-content;background:transparent}
.footer-brand img{display:block;width:62px;height:auto;filter:brightness(0) invert(1)}
.footer-links{grid-template-columns:repeat(3,max-content);column-gap:clamp(20px,3vw,48px);row-gap:13px;align-content:start}
.footer-links a,.back-top{transition:color .3s ease}
.footer-links a:hover,.back-top:hover,.footer-links a:focus-visible,.back-top:focus-visible{color:var(--lime)}
.footer-legal{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:12px clamp(22px,4vw,55px);padding:16px 0 0;border-top:1px solid rgba(247,250,255,.28);color:rgba(247,250,255,.68);font:500 11px/1.5 'DM Mono',monospace;letter-spacing:.02em}
.footer-legal .privacy-open{margin-left:auto;text-decoration:none;text-align:left;color:inherit;transition:color .3s ease}
.footer-legal .privacy-open:hover,.footer-legal .privacy-open:focus-visible{color:var(--lime)}
/* The expertise running head follows the same top-rule alignment as other sections. */
.statement-top{width:100%;border-top:1px solid rgba(247,250,255,.35);border-bottom:0;padding-top:16px;padding-bottom:0}

/* One short navigation label per section. */
@media(min-width:1051px){
  .desktop-nav{gap:clamp(10px,1.25vw,20px)}
  .desktop-nav a{white-space:nowrap;font-size:clamp(12px,1vw,14px);font-weight:600;letter-spacing:0;text-transform:none}
  .header-contact{white-space:nowrap;gap:14px}
}
.footer-links{font-size:12px}
@media(max-width:1050px){
  .mobile-menu{padding:100px 7vw 28px;gap:0;overflow-y:auto}
  .mobile-menu a{font-size:clamp(33px,5.8vh,54px);line-height:1.05;letter-spacing:-.05em;padding:clamp(6px,1.3vh,12px) 0}
}
@media(max-width:700px){
  .contact-layout{padding:68px 0 75px}
  .contact-title{margin-bottom:43px}
  .contact-details{margin-top:64px}
  .contact-detail{grid-template-columns:90px minmax(0,1fr)}
  .contact-form-wrap{margin-top:85px}
  .contact footer{grid-template-columns:1fr auto;row-gap:35px}
  .footer-brand img{width:56px}
  .footer-links{grid-column:1/-1;grid-row:2;grid-template-columns:repeat(2,max-content);row-gap:12px}
  .back-top{grid-column:2;grid-row:1}
  .footer-legal{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:10px 20px}
  .footer-legal .privacy-open{grid-column:1/-1;margin-left:0}
}

/* A brief blue opening scene that hands off to the blue hero. */
.page-loader{background:var(--blue);overflow:hidden;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;padding:clamp(24px,3.3vw,64px);transition:transform .79s cubic-bezier(.76,0,.24,1)}
.page-loader::before{content:"";position:absolute;inset:-15%;background:repeating-linear-gradient(115deg,transparent 0 110px,rgba(247,250,255,.045) 111px,transparent 112px);animation:blue-field 24s linear infinite;pointer-events:none}
.page-loader.done{transform:translate3d(0,-101%,0)}
.loader-topline{position:relative;z-index:1;width:100%;border-top:1px solid rgba(247,250,255,.35);padding-top:16px;color:#f7faff;font:600 clamp(16px,1.3vw,21px)/1.25 Manrope,Arial,sans-serif}
.loader-stage{position:relative;display:flex;align-items:center;flex:1;min-height:0}
.loader-orbit{position:absolute;left:72%;top:50%;width:min(44vw,62vh,620px);aspect-ratio:1;border:1px solid rgba(247,250,255,.25);border-radius:50%;transform:translate(-50%,-50%);animation:loader-orbit-spin 9s linear infinite}
.loader-orbit::before{content:"";position:absolute;inset:11%;border:1px solid rgba(247,250,255,.19);border-radius:50%;transform:rotate(-28deg) scaleY(.42)}
.loader-orbit::after{content:"";position:absolute;left:50%;top:-6px;width:10px;height:10px;border:1px solid var(--blue);border-radius:50%;background:var(--lime);box-shadow:0 0 0 5px rgba(217,255,104,.12),0 0 18px rgba(217,255,104,.4);transform:translateX(-50%)}
.loader-logo{position:relative;z-index:1;width:clamp(170px,24vw,320px);aspect-ratio:50/49;display:grid;place-items:center;animation:loader-logo-enter .86s cubic-bezier(.2,.75,.2,1) both}
.loader-logo::before,.loader-logo::after{content:"";position:absolute;width:25px;height:25px;border-color:rgba(247,250,255,.48);border-style:solid}
.loader-logo::before{left:-25px;top:-25px;border-width:1px 0 0 1px}
.loader-logo::after{right:-25px;bottom:-25px;border-width:0 1px 1px 0}
.loader-logo img{display:block;width:100%;height:auto;filter:brightness(0) invert(1)}
.loader-progress{position:relative;z-index:1;width:100%;height:1px;margin-bottom:clamp(12px,2vh,28px);background:rgba(247,250,255,.28)}
.loader-progress span{display:block;width:100%;height:100%;background:var(--lime);transform:scaleX(0);transform-origin:left;animation:loader-progress 1.725s cubic-bezier(.25,.55,.2,1) forwards}
@keyframes loader-logo-enter{from{opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(22px) scale(.94)}to{opacity:1;clip-path:inset(0 0 0 0);transform:none}}
@keyframes loader-orbit-spin{to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes loader-progress{to{transform:scaleX(1)}}
@media(max-width:700px){
  .page-loader{padding:28px 20px}
  .loader-stage{align-items:center}
  .loader-logo{width:min(58vw,240px)}
  .loader-orbit{left:74%;top:50%;width:min(76vw,350px)}
  .loader-progress{margin-bottom:8px}
}
@media(prefers-reduced-motion:reduce){.page-loader::before,.loader-orbit,.loader-logo,.loader-progress span{animation:none!important}.loader-progress span{transform:scaleX(1)}}

/* Final spacing and hierarchy pass. */
#contacts{scroll-margin-top:0}
/* Keep the closed navigation out of the paint tree: its links can be taller
   than the viewport and otherwise protrude below the translated panel. */
.mobile-menu{visibility:hidden;pointer-events:none;overflow:hidden;transition:transform .6s cubic-bezier(.76,0,.24,1),visibility 0s linear .6s}
.menu-open .mobile-menu{visibility:visible;pointer-events:auto;overflow-y:auto;transition:transform .6s cubic-bezier(.76,0,.24,1),visibility 0s}
@media(min-width:1051px){.mobile-menu{display:none}}
.header-contact{padding:10px 12px 9px;margin:-10px -12px -9px;border:1px solid transparent;border-bottom-color:currentColor}
.header-contact:hover,.header-contact:focus-visible{border-color:var(--lime)}
.contact-layout{padding-top:clamp(28px,3.2vh,40px);padding-bottom:4px}
.contact-title{margin-bottom:clamp(28px,3vh,42px)}
.contact-title em{font-family:Georgia,serif;font-weight:400;letter-spacing:-.08em}
.contact-details{margin-top:clamp(28px,4vh,46px)}
.contact-detail{display:grid;grid-template-columns:minmax(0,1fr) max-content;align-items:end;gap:25px;padding:15px 0 17px}
.contact-detail address,.contact-detail a{font-size:clamp(14px,1.25vw,18px)}
.contact-detail address{line-height:1.35}
.contact-form-wrap{padding-top:0}
.contact-form-wrap #contact-form label{margin-bottom:20px}
.contact footer{row-gap:14px;padding-top:12px}
.footer-legal{border-top:0;padding-top:0;gap:12px 28px}
.footer-legal .privacy-open{margin-left:auto}

/* The opening stays on the site's grid, with only the logo, orbit and progress line. */
.loader-topline{display:none}
.loader-stage{justify-content:center}
.loader-logo{width:clamp(150px,18vw,250px)}
.loader-orbit{left:50%;top:50%;width:min(42vw,58vh,560px)}

/* All numbered lists use the same mono scale. */
.service-number,.expertise-number,.digital-number,.project-no{font:500 12px/1.2 'DM Mono',monospace;letter-spacing:0}
.service-row .service-number,.statement .expertise-number,.digital-point .digital-number,.project-card .project-no{font:500 12px/1.2 'DM Mono',monospace;letter-spacing:0}
.technology-list{padding-bottom:clamp(8px,1.5vw,18px)}
.digital-illustration{padding-bottom:clamp(22px,2.5vw,36px)}

/* Education is the only external destination: taller, distinct and interactive. */
.course-banner{min-height:clamp(520px,72svh,760px);padding:clamp(38px,5vw,76px);border-top:1px solid rgba(28,69,135,.3);border-bottom:1px solid rgba(28,69,135,.3);transition:background-color .55s ease,color .55s ease}
.course-banner:hover,.course-banner:focus-visible{background-color:#cfff3f}
.course-banner-label{border-top:1px solid rgba(28,69,135,.55);padding-top:14px}
.course-banner-more{margin-top:auto}
.course-banner-circle{width:76px;height:76px;border:1px solid var(--ink);border-radius:50%;display:grid;place-items:center;font-size:30px!important;transition:background-color .35s ease,color .35s ease,transform .35s ease}
.course-banner:hover .course-banner-circle,.course-banner:focus-visible .course-banner-circle{background:var(--ink);color:var(--lime);transform:rotate(45deg)}

@media(max-width:700px){
  .contact-layout{padding-top:42px;padding-bottom:20px}
  .contact-details{margin-top:40px}
  .contact-detail{grid-template-columns:1fr;gap:12px}
  .contact-detail a{justify-self:start}
  .contact footer{row-gap:14px;padding-top:15px}
  .footer-legal{gap:8px 18px}
  .footer-legal .privacy-open{margin-left:0}
  .course-banner{min-height:590px;padding:30px 20px 27px}
  .course-banner-circle{width:58px;height:58px;font-size:24px!important}
}

/* Quiet actions and a tighter technology panel. */
.header-contact{border:0;border-bottom:1px solid currentColor}
.header-contact:hover,.header-contact:focus-visible{border-color:currentColor}
.digital-illustration{min-height:0;padding:22px clamp(20px,2.5vw,36px) 18px;margin-top:clamp(32px,3.8vw,54px)}
.technology-list{padding-bottom:0}
.technology-list li{padding:10px 0 11px}

/* The education card itself fills blue from its left edge. */
.course-banner{transition:color .45s ease;}
.course-banner::after{content:"";position:absolute;inset:0;z-index:0;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .7s cubic-bezier(.2,.75,.2,1);pointer-events:none}
.course-banner:hover,.course-banner:focus-visible{background-color:var(--lime);color:#fff}
.course-banner:hover::after,.course-banner:focus-visible::after{transform:scaleX(1)}
.course-banner-label,.course-banner-heading,.course-banner-more,.course-banner-visual{position:relative;z-index:1}
.course-banner-label,.course-banner-more{transition:border-color .45s ease}
.course-banner:hover .course-banner-label,.course-banner:focus-visible .course-banner-label,.course-banner:hover .course-banner-more,.course-banner:focus-visible .course-banner-more{border-color:rgba(255,255,255,.55)}
.course-banner-more-label{display:inline-block;transition:transform .45s cubic-bezier(.2,.75,.2,1)}
.course-banner:hover .course-banner-more-label,.course-banner:focus-visible .course-banner-more-label{transform:translateX(9px)}
.course-banner-arrow{display:inline-block;font-size:clamp(24px,2vw,32px);line-height:1;transition:transform .45s ease}
.course-banner:hover .course-banner-arrow,.course-banner:focus-visible .course-banner-arrow{transform:translate(5px,-5px)}
.course-banner-visual{position:absolute}
.course-banner-visual i{border-color:currentColor}

/* A quiet logo field, divided like the technology illustration. */
.partners{min-height:100svh;justify-content:flex-start;gap:0;padding:clamp(56px,6vw,86px) var(--site-gutter);background:var(--mist);border-top:0}
.partners .section-topline{width:100%;margin-bottom:clamp(42px,5vw,72px)}
.partners .display-heading{margin:0 0 clamp(40px,4.5vw,64px);padding:0}
.partner-grid{position:relative;isolation:isolate;display:grid;width:100%;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden;border-top:1px solid var(--line);border-left:1px solid var(--line);background:transparent;transition:background-color .6s ease,border-color .6s ease;cursor:default}
.partner-grid::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:repeating-linear-gradient(115deg,transparent 0 115px,rgba(28,69,135,.095) 116px,transparent 117px);animation:blue-field 25s linear infinite}
.partner-grid .partner-logo{position:relative;isolation:isolate;display:grid;place-items:center;min-width:0;width:auto;height:clamp(138px,18vh,190px);padding:24px clamp(16px,2vw,34px);margin:0;overflow:hidden;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:transparent;transition:border-color .6s ease;cursor:default}
.partner-grid .partner-logo:hover{background:transparent}
.partner-logo::before{content:"";position:absolute;inset:0;z-index:0;background:repeating-linear-gradient(115deg,transparent 0 115px,rgba(255,255,255,.095) 116px,transparent 117px),var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .55s cubic-bezier(.2,.75,.2,1);pointer-events:none}
.partner-grid .partner-logo img{position:relative;z-index:1;display:block;width:min(100%,var(--logo-width));height:auto;max-width:100%;max-height:72px;object-fit:contain;filter:none;mix-blend-mode:normal;pointer-events:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;transition:filter .55s ease}
@media(hover:hover){.partner-logo:hover::before{transform:scaleX(1)}.partner-grid .partner-logo:hover img{filter:brightness(0) invert(1)}}

/* The closing screen and its rule use the same blue and grid as the opening. */
.contact{background:var(--blue)}
.contact footer{position:relative;border-top:0;padding-top:21px}
.contact footer::before{content:"";position:absolute;top:0;left:calc(-1 * var(--site-gutter));right:calc(-1 * var(--site-gutter));border-top:1px solid rgba(235,244,255,.24);pointer-events:none}
.footer-brand{display:grid;place-items:center;width:62px;height:62px}
.footer-brand img{width:50px;height:auto}

.contact-detail a[href^="tel:"]{display:inline-flex;align-items:baseline;justify-content:flex-end;gap:clamp(20px,1.8vw,28px);padding-right:14px;white-space:nowrap}
.contact-phone-arrow{font-size:1.15em;line-height:1}
@media(max-width:700px){
  :root{--site-gutter:20px}
  .digital-illustration{padding:19px 18px 16px;margin-top:32px}
  .technology-list li{padding:9px 0 10px}
  .partners{min-height:100svh;padding:56px var(--site-gutter)}
  .partners .section-topline{margin-bottom:40px}
  .partners .display-heading{margin-bottom:40px}
  .partner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .partner-grid .partner-logo{height:136px;padding:19px}
  .partner-grid .partner-logo img{width:min(100%,var(--logo-mobile-width));max-height:56px}
  .contact footer{padding-top:17px}
  .footer-brand{width:51px;height:51px}
  .footer-brand img{width:43px}
  .contact-detail a[href^="tel:"]{justify-content:flex-start}
}
@media(min-width:701px) and (max-width:1100px){.partner-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.partner-grid::before{animation:none}}
@media(max-width:700px){
  .numbers{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;column-gap:0}
  .number{justify-content:flex-start;align-items:flex-start}
  .number:nth-child(-n+2){border-bottom:0}
  .number:nth-child(-n+2)::after{content:"";position:absolute;bottom:0;left:0;right:12px;height:1px;background:rgba(233,244,255,.27)}
  .number:nth-child(2)::after{left:12px;right:0}
  .number strong{display:block;line-height:1.05;min-height:1.05em}
  .number span{display:block;line-height:1.4}
}

/* Navigation uses the same sentence case above and below. */
.footer-links{text-transform:none;font:500 clamp(14px,1.15vw,17px)/1.25 Manrope,Arial,sans-serif;letter-spacing:-.02em}
.footer-links a{color:#f7faff;transition:color .3s ease,transform .3s ease}
.footer-links a:hover,.footer-links a:focus-visible{color:var(--lime)}
.footer-links a.footer-special{text-decoration:underline;text-decoration-color:rgba(217,255,104,.75);text-underline-offset:5px}
.desktop-nav a:hover,.desktop-nav a:focus-visible{color:var(--lime);opacity:1}
.mobile-menu a{transition:color .3s ease,padding-left .3s ease}
.mobile-menu a:hover,.mobile-menu a:focus-visible{color:#739820;padding-left:10px}

/* The two standalone pages remain visible within the shared navigation. */
.desktop-nav a.nav-special{display:inline-flex;align-items:center;gap:5px;padding:7px 0 6px;border-bottom:1px solid rgba(217,255,104,.75)}
.desktop-nav a.nav-special span{font-size:15px;line-height:1;transition:transform .3s ease}
.desktop-nav a.nav-special:hover span,.desktop-nav a.nav-special:focus-visible span{transform:translate(3px,-3px)}
.mobile-menu a.nav-special{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-left:14px;border-left:2px solid var(--ink);background:#f7faff}
.mobile-menu a.nav-special:hover,.mobile-menu a.nav-special:focus-visible{padding-left:22px}
.mobile-menu a.nav-special span{font-size:.7em}
@media(max-width:1350px){
  .site-header .desktop-nav,.site-header .header-contact{display:none}
  .site-header .menu-button{display:block}
  .mobile-menu{display:flex;justify-content:flex-start;padding-top:clamp(88px,12vh,120px)}
  .mobile-menu a{font-size:clamp(24px,4.2vh,38px);padding:clamp(5px,1vh,10px) 0}
}

/* The education action shares the type, underline and spacing of the other CTAs. */
.course-banner-more{display:inline-flex;align-items:center;justify-content:space-between;gap:36px;width:max-content;min-width:220px;max-width:100%;padding:10px 12px;margin-top:auto;border-top:0;border-bottom:1px solid currentColor;font:600 clamp(15px,1.25vw,18px)/1.3 Manrope,Arial,sans-serif;letter-spacing:0;text-transform:none}
.course-banner-more .course-banner-more-label{font:inherit;line-height:inherit}
.course-banner-more .course-banner-arrow{font-size:22px;line-height:1}
.course-banner:hover .course-banner-more .course-banner-more-label,.course-banner:focus-visible .course-banner-more .course-banner-more-label{transform:translateX(9px)}
.course-banner:hover .course-banner-more .course-banner-arrow,.course-banner:focus-visible .course-banner-more .course-banner-arrow{transform:translate(5px,-5px)}
.course-banner{min-height:clamp(350px,50svh,550px);padding:clamp(34px,5vw,76px);gap:45px;border:0}
.course-banner-heading{max-width:1100px;font-size:clamp(38px,4.2vw,66px);line-height:1.1;letter-spacing:-.045em}
.course-banner-line{display:block;white-space:nowrap}
@media(max-width:899px){.course-banner-line{display:inline;white-space:normal}}
@media(max-width:700px){
  .course-banner{min-height:390px;padding:32px 20px 27px}
  .course-banner-heading{font-size:clamp(30px,7.5vw,43px);line-height:1.14}
  .course-banner-visual{width:330px;right:-35%;top:-20%}
}
@media(max-width:700px){
  .contact footer{grid-template-columns:1fr auto}
  .footer-links{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:minmax(0,1fr);gap:0;width:100%;font-size:clamp(22px,5.8vw,28px)}
  .footer-links a{display:flex;align-items:center;justify-content:space-between;min-height:54px;padding:10px 0;border-bottom:1px solid rgba(247,250,255,.25)}
  .footer-links a:first-child{border-top:1px solid rgba(247,250,255,.25)}
  .footer-links a::after{content:"↗";font-size:.8em;opacity:0;transform:translate(-8px,8px);transition:opacity .3s ease,transform .3s ease}
  .footer-links a:hover::after,.footer-links a:focus-visible::after{opacity:1;transform:none}
  .footer-legal{grid-column:1/-1}
}

