/* GIN FOOTER V26 — premium typographic / grid footer, reference direction: footer.design.
   This is one canonical, self-contained footer component for every page.
   The one and only brand green is #00F5A0. Designed mobile-first and emoji-free.
*/
:root {
  --mint:#00f5a0!important;
  --gf-accent:#00f5a0!important;
  --gin-accent:#00f5a0;
  --gin-page-title-accent:#00f5a0;
  --gin-footer-green:#00f5a0;
}
footer.v18-foot.gin-footer-v26 {
  --gfv-text:#f4f5f3;
  --gfv-muted:#a6aca8;
  --gfv-rule:#353937;
  --gfv-ink:#0a0b0a;
  --gfv-green:#00f5a0;
  display:block!important;
  position:relative;
  isolation:isolate;
  clear:both;
  box-sizing:border-box;
  width:100%;
  max-width:100%;
  overflow:hidden;
  margin:0!important;
  padding:0 clamp(20px,4.6vw,82px)!important;
  background:#0a0b0a!important;
  border:0!important;
  border-radius:0!important;
  color:var(--gfv-text)!important;
  font-family:Manrope,Arial,sans-serif!important;
  font-size:14px;
  line-height:1.65;
}
footer.v18-foot.gin-footer-v26 *,footer.v18-foot.gin-footer-v26 *::before,footer.v18-foot.gin-footer-v26 *::after{box-sizing:border-box}
footer.gin-footer-v26 .ginf-wrap{max-width:1580px;margin:0 auto;width:100%}
footer.gin-footer-v26 a{color:inherit!important;text-decoration:none!important}
footer.gin-footer-v26 a:focus-visible{outline:2px solid var(--gfv-green);outline-offset:4px}
footer.gin-footer-v26 :is(a,button){-webkit-tap-highlight-color:transparent}
footer.gin-footer-v26 .ginf-topline{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:12px 24px;
  padding:clamp(22px,3vw,42px) 0 16px;
  border-bottom:1px solid var(--gfv-rule);
  font:800 10px/1.5 Manrope,Arial,sans-serif;
  letter-spacing:.12em;
  color:var(--gfv-muted)!important;
}
footer.gin-footer-v26 .ginf-status{display:inline-flex;align-items:center;gap:11px}
footer.gin-footer-v26 .ginf-status::before{
  content:"";width:8px;height:8px;flex:none;border-radius:50%;background:var(--gfv-green);
  box-shadow:0 0 0 3px rgba(0,245,160,.12);
}
footer.gin-footer-v26 .ginf-stage{
  display:grid;
  grid-template-columns:minmax(0,1.65fr) minmax(245px,.58fr);
  gap:clamp(34px,5vw,96px);
  align-items:end;
  padding:clamp(67px,8vw,132px) 0 clamp(76px,8.5vw,142px);
  border-bottom:1px solid var(--gfv-rule);
}
footer.gin-footer-v26 .ginf-stage-title{
  margin:0!important;
  padding:0!important;
  font:800 clamp(58px,8.3vw,139px)/.965 Manrope,Arial,sans-serif!important;
  letter-spacing:-.083em!important;
  color:var(--gfv-text)!important;
  text-transform:uppercase;
  overflow-wrap:normal;
  text-wrap:balance;
}
footer.gin-footer-v26 .ginf-stage-title span{display:block;white-space:nowrap;color:inherit!important}
footer.gin-footer-v26 .ginf-stage-title .ginf-accent,
footer.gin-footer-v26 .ginf-stage-title .ginf-accent span{color:var(--gfv-green)!important}
footer.gin-footer-v26 .ginf-aside{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  max-width:360px;
  padding-bottom:clamp(0px,1.1vw,20px);
}
footer.gin-footer-v26 .ginf-aside .ginf-eyebrow{
  display:block;
  border-top:1px solid #707672;
  width:100%;
  padding-top:16px;
  font:800 10px/1.4 Manrope,Arial,sans-serif;
  letter-spacing:.12em;
  color:#c7cac8!important;
}
footer.gin-footer-v26 .ginf-aside p{
  margin:19px 0 30px!important;
  padding:0!important;
  max-width:330px;
  color:#c7cac8!important;
  font:500 clamp(14px,1.22vw,17px)/1.76 Manrope,Arial,sans-serif!important;
}
footer.gin-footer-v26 .ginf-cta{
  display:flex!important;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  width:100%;
  max-width:360px;
  min-height:62px;
  border:1px solid #e8eae8!important;
  border-radius:0!important;
  background:transparent!important;
  color:#f8faf7!important;
  padding:8px 8px 8px 20px!important;
  font:800 12px/1.35 Manrope,Arial,sans-serif!important;
  letter-spacing:.05em;
  transition:background-color .22s ease,color .22s ease,border-color .22s ease;
}
footer.gin-footer-v26 .ginf-cta .ginf-cta-icon{
  display:grid!important;place-items:center;
  width:44px;height:44px;flex:none;
  background:var(--gfv-green)!important;color:#090a09!important;
  transition:transform .22s ease,background-color .22s ease,color .22s ease;
}
footer.gin-footer-v26 .ginf-cta .ginf-cta-icon svg,
footer.gin-footer-v26 .ginf-arrow svg{display:block;width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
footer.gin-footer-v26 .ginf-cta:hover{background:var(--gfv-green)!important;color:#0b0b0b!important;border-color:var(--gfv-green)!important}
footer.gin-footer-v26 .ginf-cta:hover .ginf-cta-icon{background:#0b0b0b!important;color:var(--gfv-green)!important;transform:translate(2px,-2px)}
footer.gin-footer-v26 .ginf-details{
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(150px,.65fr) minmax(240px,1fr);
  align-items:start;
  gap:clamp(32px,7vw,124px);
  padding:clamp(45px,5vw,76px) 0 clamp(55px,6vw,94px);
  border-bottom:1px solid var(--gfv-rule);
}
footer.gin-footer-v26 .ginf-brand{min-width:0}
footer.gin-footer-v26 .ginf-brand img{
  display:block!important;width:clamp(145px,17vw,250px)!important;max-width:100%!important;height:auto!important;
  margin:0 0 22px!important;object-fit:contain!important;object-position:left center!important;
  filter:brightness(0) invert(1)!important;
}
footer.gin-footer-v26 .ginf-brand p{
  max-width:365px;
  margin:0!important;padding:0!important;
  color:var(--gfv-muted)!important;
  font:500 13px/1.85 Manrope,Arial,sans-serif!important;
}
footer.gin-footer-v26 .ginf-heading{
  display:block;margin:2px 0 25px!important;
  color:#858d87!important;
  font:800 10px/1.4 Manrope,Arial,sans-serif!important;
  letter-spacing:.13em;
}
footer.gin-footer-v26 .ginf-menu,
footer.gin-footer-v26 .ginf-contact-col{min-width:0}
footer.gin-footer-v26 .ginf-menu a{
  display:flex!important;align-items:center;justify-content:space-between;gap:12px;
  width:fit-content;max-width:100%;min-height:30px;
  padding:3px 0!important;margin:0 0 10px!important;
  color:#f6f7f6!important;
  font:700 13px/1.5 Manrope,Arial,sans-serif!important;
  transition:color .2s,transform .2s;
}
footer.gin-footer-v26 .ginf-menu a svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.7;transition:transform .2s}
footer.gin-footer-v26 .ginf-menu a:hover{color:var(--gfv-green)!important;transform:translateX(4px)}
footer.gin-footer-v26 .ginf-menu a:hover svg{transform:translate(2px,-2px)}
footer.gin-footer-v26 .ginf-email{
  display:inline-flex!important;align-items:center;gap:8px;
  max-width:100%;width:fit-content;padding:1px 0 9px!important;
  border-bottom:1px solid #a6aca8;
  font:700 clamp(13px,1.25vw,17px)/1.55 Manrope,Arial,sans-serif!important;
  overflow-wrap:anywhere;word-break:break-word;color:#f8f8f7!important;
  transition:color .2s,border-color .2s;
}
footer.gin-footer-v26 .ginf-email:hover{color:var(--gfv-green)!important;border-color:var(--gfv-green)}
footer.gin-footer-v26 .ginf-email svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.8;fill:none;flex:none}
footer.gin-footer-v26 .ginf-contact-col p{
  margin:18px 0 0!important;padding:0!important;
  color:#b7bdb9!important;
  font:450 13px/1.78 Manrope,Arial,sans-serif!important;
}
footer.gin-footer-v26 .ginf-signature{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  padding:clamp(26px,3.8vw,54px) 0 20px;
}
footer.gin-footer-v26 .ginf-signature .ginf-giant{
  display:flex;align-items:baseline;justify-content:space-between;
  gap:10px;max-width:100%;overflow:hidden;
}
footer.gin-footer-v26 .ginf-giant strong{
  font:800 clamp(78px,15.7vw,255px)/.83 Manrope,Arial,sans-serif!important;
  letter-spacing:-.105em;
  white-space:nowrap;
  color:#202523!important;
  user-select:none;
}
footer.gin-footer-v26 .ginf-giant strong .ginf-dot{color:var(--gfv-green)!important}
footer.gin-footer-v26 .ginf-giant em{
  font:italic 500 clamp(20px,2.7vw,42px)/1 "Cormorant Garamond",Georgia,serif;
  color:#c5cbc5!important;white-space:nowrap;
  margin-bottom:clamp(0px,1.4vw,24px);
}
footer.gin-footer-v26 .ginf-bottom{
  display:flex;justify-content:space-between;align-items:center;gap:14px 25px;flex-wrap:wrap;
  border-top:1px solid var(--gfv-rule);padding:22px 0 25px;
  color:var(--gfv-muted)!important;
  font:750 10px/1.6 Manrope,Arial,sans-serif!important;letter-spacing:.09em;
}
footer.gin-footer-v26 .ginf-bottom a{
  display:inline-flex;align-items:center;gap:9px;
  color:#cbd0cc!important;transition:color .2s;
}
footer.gin-footer-v26 .ginf-bottom a:hover{color:var(--gfv-green)!important}
footer.gin-footer-v26 .ginf-bottom svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8}
@media(max-width:1050px){
 footer.gin-footer-v26 .ginf-stage{grid-template-columns:minmax(0,1fr) minmax(240px,.65fr);gap:40px}
 footer.gin-footer-v26 .ginf-stage-title{font-size:clamp(56px,8vw,108px)!important}
 footer.gin-footer-v26 .ginf-details{grid-template-columns:1.1fr .75fr 1fr;gap:35px}
 footer.gin-footer-v26 .ginf-giant strong{font-size:clamp(75px,15vw,175px)!important}
}
@media(max-width:800px){
 footer.gin-footer-v26 .ginf-stage{grid-template-columns:1fr;gap:38px;padding:70px 0 77px}
 footer.gin-footer-v26 .ginf-stage-title{font-size:clamp(55px,10.7vw,92px)!important}
 footer.gin-footer-v26 .ginf-aside{max-width:520px;padding:0}
 footer.gin-footer-v26 .ginf-cta{max-width:430px}
 footer.gin-footer-v26 .ginf-details{grid-template-columns:1fr 1fr;gap:35px 45px}
 footer.gin-footer-v26 .ginf-brand{grid-column:1/-1}
 footer.gin-footer-v26 .ginf-giant strong{font-size:clamp(72px,15.7vw,150px)!important}
 footer.gin-footer-v26 .ginf-giant em{font-size:clamp(21px,4vw,36px)}
}
@media(max-width:560px){
 footer.v18-foot.gin-footer-v26{padding:0 20px!important;max-width:100vw}
 footer.gin-footer-v26 .ginf-topline{padding:24px 0 13px;align-items:start;font-size:9px;gap:11px}
 footer.gin-footer-v26 .ginf-topline>span:last-child{max-width:195px}
 footer.gin-footer-v26 .ginf-stage{padding:60px 0 66px;gap:34px}
 footer.gin-footer-v26 .ginf-stage-title{font-size:clamp(43px,11.2vw,65px)!important;letter-spacing:-.074em!important;line-height:.99!important}
 footer.gin-footer-v26 .ginf-aside{max-width:100%}
 footer.gin-footer-v26 .ginf-aside p{font-size:14px!important;margin:15px 0 24px!important}
 footer.gin-footer-v26 .ginf-cta{width:100%;max-width:100%;min-height:56px;font-size:11px!important}
 footer.gin-footer-v26 .ginf-cta .ginf-cta-icon{width:40px;height:40px}
 footer.gin-footer-v26 .ginf-details{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px 18px;padding:49px 0 55px}
 footer.gin-footer-v26 .ginf-brand{grid-column:1/-1}
 footer.gin-footer-v26 .ginf-brand img{width:clamp(155px,48vw,225px)!important}
 footer.gin-footer-v26 .ginf-heading{margin-bottom:18px!important;font-size:9px!important}
 footer.gin-footer-v26 .ginf-menu a{font-size:12px!important;min-height:34px}
 footer.gin-footer-v26 .ginf-contact-col .ginf-email{font-size:12px!important;line-height:1.65}
 footer.gin-footer-v26 .ginf-contact-col .ginf-email svg{display:none}
 footer.gin-footer-v26 .ginf-contact-col p{font-size:12px!important}
 footer.gin-footer-v26 .ginf-signature{padding:38px 0 10px}
 footer.gin-footer-v26 .ginf-giant{flex-direction:column;align-items:start!important;gap:12px}
 footer.gin-footer-v26 .ginf-giant strong{font-size:clamp(75px,17vw,120px)!important}
 footer.gin-footer-v26 .ginf-giant em{align-self:flex-end;font-size:28px!important}
 footer.gin-footer-v26 .ginf-bottom{padding:17px 0 23px;font-size:9px!important;gap:9px 18px}
}
@media(max-width:360px){
 footer.gin-footer-v26 .ginf-stage-title{font-size:39px!important}
 footer.gin-footer-v26 .ginf-details{grid-template-columns:1fr}
 footer.gin-footer-v26 .ginf-brand{grid-column:auto}
 footer.gin-footer-v26 .ginf-giant strong{font-size:68px!important}
}
@media(prefers-reduced-motion:reduce){
 footer.gin-footer-v26 *,footer.gin-footer-v26 *::before,footer.gin-footer-v26 *::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}
}



/* GIN 2026 / V28 SITE-WIDE CONTRAST PASS
   Last shared stylesheet. Respect section luminance instead of reusing old dark ink
   for the new #030014 panels. Avoid globally forcing white on light case studies. */
body.ginx-theme{--gin-contrast-light:#f4f4f8;--gin-contrast-muted:#c5c5d3;--gin-contrast-dark:#171822;--gin-contrast-dark-muted:#494b56}

/* Homepage: V21 split-line animation had a black-to-gray fill on the new blue canvas.
   Keep the scroll-color transition, but replace black with white. */
body.ginx-theme.gin-motion-home .v18-manifest .gin-motion-line,
body.ginx-theme.gin-motion-home .v18-showcase .gin-motion-line,
body.ginx-theme.gin-motion-home .v18-journal-tease .gin-motion-line,
body.ginx-theme.gin-motion-home .v18-universe .gin-motion-line{
 --gin-line-active:#fff!important;
 --gin-line-idle:#b2b2c5!important;
}
body.ginx-theme.gin-motion-home .v18-manifest .gin-motion-line:nth-child(3){--gin-line-idle:#c3c4d2!important}
body.ginx-theme.gin-motion-home .v18-universe .gin-motion-line{--gin-line-idle:#a5a5ba!important}
body.ginx-theme.gin-motion-home .v18-manifest .gin-motion-line .mint,
body.ginx-theme.gin-motion-home .v18-journal-tease .gin-motion-line .mint{color:#ccff00!important;-webkit-text-fill-color:#ccff00!important}
body.ginx-theme .v18-showcase .v18-section-title h2{color:#f6f6fa!important}
body.ginx-theme .v18-showcase .v18-micro,
body.ginx-theme .v18-manifest .v18-micro,
body.ginx-theme .v18-journal-tease .v18-micro{color:#c6c6d2!important}
body.ginx-theme .v18-journal-row :is(small,strong,span),
body.ginx-theme .v18-last :is(small,span){color:#f2f2f7!important}
body.ginx-theme .v18-journal-row small,
body.ginx-theme .v18-last>span{color:#bdbdce!important}
body.ginx-theme .v18-stats p,
body.ginx-theme .v18-universe :is(p,small){color:#d1d0de!important}
body.ginx-theme .v18-system a:not(:hover) :is(p,small,b){color:#d1d0de!important}

/* Archive, Lab, Blog and old intro screens now use dark blue. */
body.ginx-theme .v18-intro h1.gin-page-title,
body.ginx-theme .v18-intro h1.gin-page-title:not(.mint),
body.ginx-theme .v18-intro h1.gin-page-title:not(.mint) em{
 color:#fafaff!important;-webkit-text-fill-color:#fafaff!important;
}
body.ginx-theme .v18-intro h1.gin-page-title .mint,
body.ginx-theme .v18-intro h1.gin-page-title .gin-title-accent{
 color:#ccff00!important;-webkit-text-fill-color:#ccff00!important;
}
body.ginx-theme :is(.v18-intro,.v18-archive,.v18-career,.v18-blog,.v18-about)
 :is(p,small,li,span,blockquote){color:#d1d1dd}
body.ginx-theme .v18-intro>p,
body.ginx-theme .v18-archive>p,
body.ginx-theme .v18-career>p,
body.ginx-theme .v18-about p{color:#d6d6e0!important}
body.ginx-theme .v18-archive .v18-project-meta strong{color:#f8f8fb!important}
body.ginx-theme .v18-archive .v18-project-meta small{color:#c8c8d4!important}
body.ginx-theme .v18-archive .v18-filterbar,
body.ginx-theme .v18-archive .v18-filterbar strong{color:#f8f8fa!important}
body.ginx-theme .v18-archive #result-count{color:#fff!important}
body.ginx-theme .v18-blog .v18-postgrid .v18-post{
 background:#11102d!important;color:#f5f5f9!important;
}
body.ginx-theme .v18-blog .v18-postgrid .v18-post p,
body.ginx-theme .v18-post p{color:#c8c8d5!important}
body.ginx-theme .v18-blog .v18-postgrid .v18-post small{color:#bfbfce!important}
body.ginx-theme .v18-blog .v18-postgrid .v18-post h3{color:#fff!important}
body.ginx-theme .v18-career>div{border-color:rgba(255,255,255,.24)!important}

/* About story: new blue sections were still carrying old black text declarations. */
body.ginx-theme .gin-story,
body.ginx-theme .gin-story :is(.gin-story-hero,.gin-story-chapter,.gin-story-cases,.gin-story-lab,.gin-story-facts){color:#f5f5fa!important}
body.ginx-theme .gin-story h1.gin-page-title.gin-story-h1,
body.ginx-theme .gin-story :is(h2,h3){color:#f7f7fc!important;-webkit-text-fill-color:initial!important}
body.ginx-theme .gin-story h1.gin-page-title.gin-story-h1{color:#fff!important;-webkit-text-fill-color:#fff!important}
body.ginx-theme .gin-story h1.gin-page-title.gin-story-h1 .mint{color:#ccff00!important;-webkit-text-fill-color:#ccff00!important}
body.ginx-theme .gin-story :is(.gin-story-overline,.gin-story-eyebrow,.gin-story-hero-lede,.gin-story-hero-body,.gin-story-prose,.gin-story-prose p,.gin-story-quote,.gin-story-facts-bottom,.gin-story-case p,.gin-story-case strong,.gin-story-hero-figure figcaption){color:#d1d1de!important}
body.ginx-theme .gin-story .gin-story-eyebrow{color:#c0c0ce!important}
body.ginx-theme .gin-story .gin-story-quote{color:#eeeef5!important}
body.ginx-theme .gin-story .gin-story-case strong{color:#fff!important}
body.ginx-theme .gin-story .gin-story-case p{color:#cccdda!important}
body.ginx-theme .gin-story .gin-story-fact span{color:#c5c5d1!important}
body.ginx-theme .gin-story .gin-story-hero-links .gin-story-link:not(.gin-story-link--solid){color:#fff!important}
body.ginx-theme .gin-story .gin-story-hero-links .gin-story-link--solid{color:#030014!important;background:#ccff00!important}
body.ginx-theme .gin-story .gin-story-discipline a:not(:hover){color:#f0f0f8!important}
body.ginx-theme .gin-story .gin-story-discipline a:hover{background:#ccff00!important;color:#030014!important}

/* Invert button and label colors on lime (or white) surfaces. */
body.ginx-theme :is(.v18-round,.ginx-button,.ginx-commission,.ginx-send,.v18-filters button[aria-pressed="true"]){color:#030014!important}
body.ginx-theme .v18-round :is(b,span){color:#030014!important}
body.ginx-theme :is(.v18-pill,.v18-link) :is(b,span){color:inherit}
body.ginx-theme footer.gin-footer-v26 .ginf-cta:hover,
body.ginx-theme footer.gin-footer-v26 .ginf-cta:hover *{color:#030014!important}
body.ginx-theme footer.gin-footer-v26 .ginf-cta:hover .ginf-cta-icon,
body.ginx-theme footer.gin-footer-v26 .ginf-cta:hover .ginf-cta-icon *{color:#ccff00!important}

/* Legacy case studies, blog detail and contact form intentionally retain light panels.
   Avoid copying the homepage's white body-text colors onto light backgrounds. */
body.ginx-theme.case-page .case-main,
body.ginx-theme.case-page .case-reading{color:#191923!important}
/* Preserve the light case-reading surface while respecting nested dark visual blocks. */
body.ginx-theme .gin-c2 :is(.gin-c2-hero,.gin-c2-brief-section,.gin-c2-form){color:#16171c}
body.ginx-theme .gin-c2 :is(input,textarea,select){color:#17181d}
body.ginx-theme .gin-c2 :is(input,textarea)::placeholder{color:#61646b}
body.ginx-theme :is(.ginx-drawer-head,.ginx-contact-pane,.ginx-menu-pane){color:#fff}

/* Remove the old playful runway completely, including any stale injected markup. */
body.ginx-theme .gm-runway,body.ginx-theme .gm-runner{display:none!important}

/* A11y and mobile consistency */
body.ginx-theme :is(a,button,input,select,textarea):focus-visible{outline:2px solid #ccff00!important;outline-offset:4px}
@media (max-width:760px){
 body.ginx-theme .v18-post p,body.ginx-theme .v18-journal-row small{color:#d2d2df!important}
 body.ginx-theme .gin-story .gin-story-hero-body{color:#e3e3eb!important}
 body.ginx-theme .v18-intro h1.gin-page-title{overflow-wrap:anywhere}
}
@media(prefers-reduced-motion:reduce){
 body.ginx-theme.gin-motion-home .gin-motion-line{background-image:none!important;color:#f7f7fc!important;-webkit-text-fill-color:#f7f7fc!important}
 body.ginx-theme.gin-motion-home .gin-motion-line .mint{color:#ccff00!important;-webkit-text-fill-color:#ccff00!important}
}
