/* ============================================================
+   GRV — reveal and desktop hover motion
+   Extracted without selector or value changes.
+   ============================================================ */

/* ---------- Safe production reveal layer ---------- */
:root{
  --text-reveal-ease:cubic-bezier(.22,1,.36,1);
  --text-reveal-title-duration:1.08s;
  --text-reveal-body-duration:.9s;
  --text-reveal-label-duration:.74s;
}

/* Touch navigation: hover must never become an intermediate interaction state. */
@media (hover:none) and (pointer:coarse){
  .gx-btn::before,
  .tariff-card .gx-btn::before{display:none!important;}
  .gx-btn:hover .gx-btn-label,
  .gx-primary:hover .gx-btn-label,
  .gx-secondary:hover .gx-btn-label,
  .gx-ghost:hover .gx-btn-label,
  .gx-ghost.gx-curtain:hover .gx-btn-label{color:inherit!important;}
  .gx-secondary:hover{border-color:currentColor!important;}
  .gx-ghost:hover .gx-arw,
  .gx-ghost.gx-curtain:hover .gx-arw,
  .grv-text-link:hover .grv-text-link__arrow,
  .arrow-link:hover .arw{color:inherit!important;transform:none!important;}
  .grv-text-link:hover,
  .arrow-link:hover,
  .site-footer-column a:hover,
  .social a:hover,
  .addon-link:hover{color:inherit!important;transform:none!important;}

  .tariff-card:hover::before{transform:translateY(101%)!important;}
  .tariff-tab:hover:not(.is-active):not([aria-selected="true"]),
  .situation-tab:hover:not(.is-active):not([aria-selected="true"]){background:transparent!important;opacity:.46!important;}
  .home-hero-thumbs button:hover{opacity:.58!important;transform:none!important;}

  .project-row:hover,
  .portfolio-project-card:hover,
  .member:hover,
  .rem-person:hover,
  .plogo:hover{transform:none!important;}
  .project-row:hover .project-info h3{color:inherit!important;}
  .project-row:hover img,
  .portfolio-project-card:hover .portfolio-project-media img,
  .result-shot:hover img,
  .build-site-card:hover>picture>img,
  .realisation-hero__media:hover img,
  .realisation-person:hover img,
  .realisation-build figure:hover img,
  .realisation-project-card:hover img,
  .project-realisation-card:hover img,
  .project-next:hover>img,
  .project-next-card:hover>img{filter:none!important;transform:none!important;}
  .portfolio-project-card:hover .portfolio-project-arrow,
  .result-shot:hover .result-shot__arrow,
  .realisation-projects__head .grv-text-link:hover span{color:inherit!important;transform:none!important;}

  .site-car-nav button:hover,
  .realisation-controls button:hover,
  .team-showcase__controls button:hover,
  .project-gallery-arrow:hover,
  .project-realisation-arrow:hover{background:transparent!important;border-color:currentColor!important;color:inherit!important;}

  .addon-card:hover{border-color:var(--grv-line)!important;color:var(--grv-ink)!important;}
  .addon-card:hover .addon-photo,
  .addon-card:hover .addon-scrim{opacity:0!important;}
  .addon-card:hover .addon-reveal{max-height:0!important;margin-top:0!important;opacity:0!important;}
}

/* Content is visible by default. Hidden states only exist after JS is ready. */
.gx-mask,.text-reveal,.reveal-mask{display:block;overflow:hidden;}
.text-reveal__inner,.reveal-inner{display:block;}
.gx-image-shell{overflow:hidden;}

/* Apply the JS-only hidden state without animating content backwards on boot. */
html.text-motion-preparing .gx-reveal,
html.text-motion-preparing .gx-image-motion,
html.text-motion-preparing .text-reveal__inner,
html.text-motion-preparing .reveal-inner,
html.text-motion-preparing .text-reveal--lead,
html.text-motion-preparing .text-reveal--body,
html.text-motion-preparing .text-reveal--action,
html.text-motion-preparing .reveal-lead,
html.text-motion-preparing .reveal-body,
html.text-motion-preparing .reveal-action,
html.text-motion-preparing .text-reveal--eyebrow .ey-mark,
html.text-motion-preparing .text-reveal--eyebrow>span:last-child,
html.text-motion-preparing .reveal-eyebrow .reveal-line,
html.text-motion-preparing .reveal-eyebrow>span:last-child{
  transition:none!important;
}

html.js .gx-reveal{
  opacity:0;
  transform:translate3d(0,var(--reveal-y,26px),0);
  transition:
    opacity .78s var(--text-reveal-ease) var(--reveal-delay,0ms),
    transform .82s var(--text-reveal-ease) var(--reveal-delay,0ms);
  will-change:opacity,transform;
}
html.js .gx-reveal.is-visible{opacity:1;transform:none;will-change:auto;}
html.js .gx-image-motion{
  opacity:0;
  transform:scale(1.055);
  transition:opacity .95s var(--text-reveal-ease),transform 1.25s var(--text-reveal-ease);
}
html.js .gx-image-shell.is-visible .gx-image-motion{opacity:1;transform:scale(1);}

/* ---------- Universal text reveal ---------- */
.text-reveal--delay-0,.reveal-delay-0{--text-reveal-delay:0ms;}
.text-reveal--delay-1,.reveal-delay-1{--text-reveal-delay:220ms;}
.text-reveal--delay-2,.reveal-delay-2{--text-reveal-delay:380ms;}
.text-reveal--delay-3,.reveal-delay-3{--text-reveal-delay:520ms;}
.reveal-group{--reveal-card-delay:0ms;}
.reveal-card-delay-1{--reveal-card-delay:80ms;}
.reveal-card-delay-2{--reveal-card-delay:160ms;}
.reveal-card-delay-3{--reveal-card-delay:240ms;}
.reveal-group .text-reveal--delay-1,
.reveal-group .reveal-delay-1{--text-reveal-delay:120ms;}
.reveal-group .text-reveal--delay-2,
.reveal-group .reveal-delay-2{--text-reveal-delay:240ms;}
.reveal-group .text-reveal--delay-3,
.reveal-group .reveal-delay-3{--text-reveal-delay:360ms;}

html.js .text-reveal:not(.is-revealed)>.text-reveal__inner,
html.js .reveal-mask:not(.is-revealed)>.reveal-inner{
  opacity:0;
  transform:translate3d(0,105%,0);
}
html.js .text-reveal>.text-reveal__inner,
html.js .reveal-mask>.reveal-inner{
  transition:
    opacity var(--text-reveal-title-duration) var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms)),
    transform var(--text-reveal-title-duration) var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms));
  will-change:opacity,transform;
}
html.js .text-reveal.is-revealed>.text-reveal__inner,
html.js .reveal-mask.is-revealed>.reveal-inner{
  opacity:1;
  transform:translate3d(0,0,0);
  will-change:auto;
}

html.js .text-reveal--lead,
html.js .text-reveal--body,
html.js .text-reveal--action,
html.js .reveal-lead,
html.js .reveal-body,
html.js .reveal-action{
  opacity:0;
  transform:translate3d(0,20px,0);
}
html.js .text-reveal--lead,
html.js .reveal-lead{
  transition:
    opacity .94s var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms)),
    transform .98s var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms));
}
html.js .text-reveal--body,
html.js .reveal-body{
  transition:
    opacity var(--text-reveal-body-duration) var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms)),
    transform var(--text-reveal-body-duration) var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms));
}
html.js .text-reveal--action,
html.js .reveal-action{
  transition:
    opacity .8s var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms)),
    transform .84s var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms));
}
html.js .text-reveal--lead.is-revealed,
html.js .text-reveal--body.is-revealed,
html.js .text-reveal--action.is-revealed,
html.js .reveal-lead.is-revealed,
html.js .reveal-body.is-revealed,
html.js .reveal-action.is-revealed{
  opacity:1;
  transform:none;
}

html.js .text-reveal--eyebrow .ey-mark,
html.js .reveal-eyebrow .reveal-line{
  transform:scaleX(0);
  transform-origin:left center;
  transition:transform .68s var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms));
}
html.js .text-reveal--eyebrow>span:last-child,
html.js .reveal-eyebrow>span:last-child{
  opacity:0;
  transform:translate3d(0,14px,0);
  transition:
    opacity var(--text-reveal-label-duration) var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms) + 100ms),
    transform var(--text-reveal-label-duration) var(--text-reveal-ease) calc(var(--text-reveal-delay,0ms) + var(--reveal-card-delay,0ms) + 100ms);
}
html.js .text-reveal--eyebrow.is-revealed .ey-mark,
html.js .reveal-eyebrow.is-revealed .reveal-line{transform:scaleX(1);}
html.js .text-reveal--eyebrow.is-revealed>span:last-child,
html.js .reveal-eyebrow.is-revealed>span:last-child{
  opacity:1;
  transform:none;
}

/* Hero text uses the same masked system for every slide change. */
.home-hero-title .text-reveal__inner{
  transition:
    opacity .86s var(--text-reveal-ease),
    transform .92s var(--text-reveal-ease);
}
.home-hero-title .home-hero-name-reveal .text-reveal__inner{
  transition-duration:.96s,1.02s;
  transition-delay:100ms;
}
.home-hero-title.is-changing .text-reveal__inner{
  opacity:0;
  transform:translate3d(0,14px,0);
  transition-duration:.24s;
  transition-delay:0ms;
}
.home-hero-title.is-entering .text-reveal__inner{
  opacity:0;
  transform:translate3d(0,105%,0);
  transition:none;
}

.stats-motion-row{position:relative;overflow:hidden;}
.stats-motion-row::after{
  content:"";
  position:absolute;
  right:0;
  bottom:0;
  left:0;
  height:1px;
  background:var(--grv-line);
  transform:scaleX(1);
  transform-origin:left center;
}
.stats-section.stats-motion-ready .stats-motion-row> *{
  opacity:0;
  transform:translate3d(0,18px,0);
}
.stats-section.stats-motion-ready .stats-motion-row::after{transform:scaleX(0);}
.stats-section.stats-motion-ready.is-visible .stats-motion-row::after{
  transform:scaleX(1);
  transition:transform .68s var(--text-reveal-ease) var(--stats-delay,0ms);
}
.stats-section.stats-motion-ready.is-visible .stats-motion-row> *{
  opacity:1;
  transform:none;
  transition:
    opacity .78s var(--text-reveal-ease) calc(var(--stats-delay,0ms) + 100ms),
    transform .82s var(--text-reveal-ease) calc(var(--stats-delay,0ms) + 100ms);
}

/* Philosophy: bottom-up image reveal transferred from the approved reference. */
.philosophy-band{
  --philosophy-image-offset:12%;
  --philosophy-image-scale:1.06;
  background:var(--grv-paper);
}
.philosophy-band>picture{
  position:absolute;
  inset:0;
  z-index:0;
  display:block;
  overflow:hidden;
  clip-path:inset(0 0 0 0);
}
.philosophy-band>picture>img{
  transform:translateY(0) scale(1);
  transform-origin:center;
}
.philosophy-band .philosophy-eyebrow,
.philosophy-band .philosophy-lead-reveal{
  overflow:hidden;
}
.philosophy-band .philosophy-eyebrow>span:last-child{
  display:inline-block;
}

html.js .philosophy-band.philosophy-motion-ready>picture{
  clip-path:inset(100% 0 0 0);
  will-change:clip-path;
}
html.js .philosophy-band.philosophy-motion-ready>picture>img{
  transform:translateY(var(--philosophy-image-offset)) scale(var(--philosophy-image-scale));
  will-change:transform;
}
html.js .philosophy-band.philosophy-motion-ready .philosophy-shade{
  opacity:0;
  will-change:opacity;
}
html.js .philosophy-band .philosophy-shade{opacity:0;}
html.js .philosophy-band.philosophy-motion-ready .philosophy-eyebrow .ey-mark{
  transform:scaleX(0);
  transform-origin:left center;
}
html.js .philosophy-band.philosophy-motion-ready .philosophy-eyebrow>span:last-child,
html.js .philosophy-band.philosophy-motion-ready .philosophy-lead{
  opacity:0;
  transform:translateY(110%);
  will-change:opacity,transform;
}
html.js .philosophy-band.philosophy-motion-ready .philosophy-detail{
  opacity:0;
  transform:translateY(22px);
  will-change:opacity,transform;
}

html.js .philosophy-band.philosophy-motion-ready.is-visible>picture{
  animation:grv-philosophy-mask-reveal 2.15s cubic-bezier(.22,1,.36,1) both;
}
html.js .philosophy-band.philosophy-motion-ready.is-visible>picture>img{
  animation:grv-philosophy-image-settle 2.35s cubic-bezier(.22,1,.36,1) both;
}
html.js .philosophy-band.philosophy-motion-ready.is-visible .philosophy-shade{
  animation:grv-philosophy-overlay-in .9s ease 1.42s both;
}
html.js .philosophy-band.philosophy-motion-ready.is-visible .philosophy-eyebrow .ey-mark{
  animation:grv-philosophy-line-in .78s cubic-bezier(.22,1,.36,1) 1.53s both;
}
html.js .philosophy-band.philosophy-motion-ready.is-visible .philosophy-eyebrow>span:last-child{
  animation:grv-philosophy-masked-text-in .94s cubic-bezier(.22,1,.36,1) 1.64s both;
}
html.js .philosophy-band.philosophy-motion-ready.is-visible .philosophy-lead{
  animation:grv-philosophy-masked-text-in 1.08s cubic-bezier(.22,1,.36,1) 1.79s both;
}
html.js .philosophy-band.philosophy-motion-ready.is-visible .philosophy-detail{
  animation:grv-philosophy-detail-in .98s cubic-bezier(.22,1,.36,1) 2.03s both;
}

/* Project cards reuse the approved bottom-up motion as one complete unit. */
html.js .project-card-motion .gx-image-motion{
  opacity:1;
  transform:none;
}
.project-card-motion{position:relative;}
html.js .project-card-motion.philosophy-motion-ready{
  opacity:0;
  transform:translate3d(0,48px,0);
  transition:
    opacity 1s var(--text-reveal-ease) var(--philosophy-motion-delay,0ms),
    transform 1.08s var(--text-reveal-ease) var(--philosophy-motion-delay,0ms);
  will-change:opacity,transform;
}
html.js .project-card-motion.philosophy-motion-ready::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:5;
  background:var(--grv-paper);
  pointer-events:none;
  clip-path:inset(0 0 0 0);
}
html.project-motion-preparing .project-card-motion.philosophy-motion-ready{
  transition:none!important;
}
html.js .project-card-motion.philosophy-motion-ready.is-visible{
  opacity:1;
  transform:none;
  will-change:auto;
}
html.js .project-card-motion.philosophy-motion-ready.is-visible::after{
  animation:grv-philosophy-mask-reveal-up 1.08s var(--text-reveal-ease) var(--philosophy-motion-delay,0ms) both;
}

@keyframes grv-philosophy-mask-reveal{
  from{clip-path:inset(100% 0 0 0);}
  to{clip-path:inset(0 0 0 0);}
}
@keyframes grv-philosophy-mask-reveal-up{
  from{clip-path:inset(0 0 0 0);}
  to{clip-path:inset(0 0 100% 0);}
}
@keyframes grv-philosophy-image-settle{
  from{transform:translateY(var(--philosophy-image-offset)) scale(var(--philosophy-image-scale));}
  to{transform:translateY(0) scale(1);}
}
@keyframes grv-philosophy-overlay-in{
  from{opacity:0;}
  to{opacity:1;}
}
@keyframes grv-philosophy-line-in{
  from{transform:scaleX(0);}
  to{transform:scaleX(1);}
}
@keyframes grv-philosophy-masked-text-in{
  from{opacity:0;transform:translateY(110%);}
  to{opacity:1;transform:translateY(0);}
}
@keyframes grv-philosophy-detail-in{
  from{opacity:0;transform:translateY(22px);}
  to{opacity:1;transform:translateY(0);}
}

/* The header CTA keeps its geometry while the clay curtain removes the dark edge. */
.site-header .site-header-action:hover{border-color:transparent;}

/* If the external script fails, the early .js marker never hides content. */
html.js:not(.reveal-ready) .gx-reveal,
html.js:not(.reveal-ready) .gx-mask>*,
html.js:not(.reveal-ready) .gx-image-motion,
html.js:not(.reveal-ready) .text-reveal__inner,
html.js:not(.reveal-ready) .text-reveal--lead,
html.js:not(.reveal-ready) .text-reveal--body,
html.js:not(.reveal-ready) .text-reveal--action,
html.js:not(.reveal-ready) .reveal-inner,
html.js:not(.reveal-ready) .reveal-lead,
html.js:not(.reveal-ready) .reveal-body,
html.js:not(.reveal-ready) .reveal-action,
html.js:not(.reveal-ready) .text-reveal--eyebrow>span:last-child,
html.js:not(.reveal-ready) .reveal-eyebrow>span:last-child,
html.js:not(.reveal-ready) .stats-section .stats-motion-row> *{
  opacity:1!important;
  transform:none!important;
  transition:none!important;
  will-change:auto!important;
}
html.js:not(.reveal-ready) .text-reveal--eyebrow .ey-mark,
html.js:not(.reveal-ready) .reveal-eyebrow .reveal-line,
html.js:not(.reveal-ready) .stats-section .stats-motion-row::after{
  transform:scaleX(1)!important;
}

@media (max-width:767px){
  :root{
    --text-reveal-title-duration:.82s;
    --text-reveal-body-duration:.78s;
    --text-reveal-label-duration:.68s;
  }
  .text-reveal--delay-1,.reveal-delay-1{--text-reveal-delay:120ms;}
  .text-reveal--delay-2,.reveal-delay-2{--text-reveal-delay:250ms;}
  .text-reveal--delay-3,.reveal-delay-3{--text-reveal-delay:360ms;}
  .reveal-card-delay-1{--reveal-card-delay:60ms;}
  .reveal-card-delay-2{--reveal-card-delay:120ms;}
  .reveal-card-delay-3{--reveal-card-delay:180ms;}
  .reveal-group .text-reveal--delay-1,
  .reveal-group .reveal-delay-1{--text-reveal-delay:90ms;}
  .reveal-group .text-reveal--delay-2,
  .reveal-group .reveal-delay-2{--text-reveal-delay:180ms;}
  .reveal-group .text-reveal--delay-3,
  .reveal-group .reveal-delay-3{--text-reveal-delay:270ms;}
  html.js .text-reveal:not(.is-revealed)>.text-reveal__inner,
  html.js .reveal-mask:not(.is-revealed)>.reveal-inner{transform:translate3d(0,75%,0);}
  html.js .text-reveal>.text-reveal__inner,
  html.js .reveal-mask>.reveal-inner{
    transition-duration:var(--text-reveal-title-duration);
  }
  html.js .text-reveal--lead,
  html.js .text-reveal--body,
  html.js .text-reveal--action,
  html.js .reveal-lead,
  html.js .reveal-body,
  html.js .reveal-action{transform:translate3d(0,14px,0);}
  html.js .text-reveal--lead,
  html.js .reveal-lead{transition-duration:.82s,.86s;}
  .stats-section.stats-motion-ready .stats-motion-row> *{transform:translate3d(0,12px,0);}
  .philosophy-band{
    --philosophy-image-offset:7%;
    --philosophy-image-scale:1.025;
  }
  html.js .project-card-motion.philosophy-motion-ready{
    transform:translate3d(0,28px,0);
    transition-duration:.86s,.92s;
  }
}

@media (min-width:768px) and (max-width:1023px){
  :root{
    --text-reveal-title-duration:.95s;
    --text-reveal-body-duration:.84s;
    --text-reveal-label-duration:.7s;
  }
  .text-reveal--delay-1,.reveal-delay-1{--text-reveal-delay:160ms;}
  .text-reveal--delay-2,.reveal-delay-2{--text-reveal-delay:300ms;}
  .text-reveal--delay-3,.reveal-delay-3{--text-reveal-delay:430ms;}
  .reveal-card-delay-1{--reveal-card-delay:70ms;}
  .reveal-card-delay-2{--reveal-card-delay:140ms;}
  .reveal-card-delay-3{--reveal-card-delay:210ms;}
  .reveal-group .text-reveal--delay-1,
  .reveal-group .reveal-delay-1{--text-reveal-delay:105ms;}
  .reveal-group .text-reveal--delay-2,
  .reveal-group .reveal-delay-2{--text-reveal-delay:210ms;}
  .reveal-group .text-reveal--delay-3,
  .reveal-group .reveal-delay-3{--text-reveal-delay:315ms;}
  html.js .text-reveal:not(.is-revealed)>.text-reveal__inner,
  html.js .reveal-mask:not(.is-revealed)>.reveal-inner{transform:translate3d(0,88%,0);}
  html.js .text-reveal>.text-reveal__inner,
  html.js .reveal-mask>.reveal-inner{transition-duration:var(--text-reveal-title-duration);}
  html.js .text-reveal--lead,
  html.js .reveal-lead{transition-duration:.88s,.92s;}
  .philosophy-band{
    --philosophy-image-offset:9%;
    --philosophy-image-scale:1.045;
  }
}

@media (prefers-reduced-motion:reduce){
  .gx-reveal,
  .gx-mask>*,
  .gx-image-motion,
  .text-reveal__inner,
  .reveal-inner,
  .text-reveal--lead,
  .text-reveal--body,
  .text-reveal--action,
  .reveal-lead,
  .reveal-body,
  .reveal-action,
  .text-reveal--eyebrow>span:last-child,
  .reveal-eyebrow>span:last-child,
  .stats-section .stats-motion-row> *,
  .stats-section .stats-motion-row::after,
  .philosophy-band>picture,
  .philosophy-band>picture>img,
  .philosophy-band .philosophy-shade,
  .philosophy-band .philosophy-motion-item,
  .philosophy-band .philosophy-eyebrow .ey-mark,
  .philosophy-band .philosophy-eyebrow>span:last-child,
  .philosophy-band .philosophy-lead,
  .philosophy-band .philosophy-detail,
  .project-card-motion,
  .project-card-motion::after{
    opacity:1!important;
    transform:none!important;
    clip-path:inset(0 0 0 0)!important;
    animation:none!important;
    transition:none!important;
    will-change:auto!important;
  }
  .gx-mask,
  .text-reveal,
  .reveal-mask{overflow:visible!important;}
  .text-reveal--eyebrow .ey-mark,
  .reveal-eyebrow .reveal-line{transform:scaleX(1)!important;transition:none!important;}
}

@media (hover:hover) and (pointer:fine){
  .gx-image-shell.is-visible:hover .gx-image-hover{transform:scale(1.035);}
}

/* ---------- Desktop hover polish ---------- */
@media (hover:hover) and (pointer:fine) {
  /* All image shells retain their original geometry and gently zoom. */
  html.local-file-preview .gx-image-shell:hover .gx-image-motion,
  .gx-image-shell.is-visible:hover .gx-image-motion,
  .project-row .frame:hover img,
  .founder-photo:hover img,
  .rem-person .frame:hover img,
  .member .frame:hover img {
    transform: scale(1.035) !important;
  }

  .project-row .frame,
  .founder-photo,
  .rem-person .frame,
  .member .frame {
    overflow: hidden;
  }

  .project-row .frame img,
  .founder-photo img,
  .rem-person .frame img,
  .member .frame img {
    transition: transform .75s var(--ease), filter .55s var(--ease);
  }

  /* Project rows: understated editorial hover. */
  .project-row {
    transition: transform .45s var(--ease);
  }
  .project-row:hover {
    transform: translateY(-4px);
  }
  .project-row:hover .project-info h3 {
    color: var(--grv-chocolate);
  }
  .project-info h3 {
    transition: color .35s var(--ease);
  }

  /* Tariff cards keep their geometry while the bottom-up curtain and shadow appear. */
  .tariff-grid > div > div {
    transition: transform .45s var(--ease), box-shadow .45s var(--ease), border-color .35s var(--ease);
  }
  .tariff-grid > div:hover > div {
    transform: none;
    box-shadow: 0 16px 38px rgba(48,28,27,.07);
  }

  /* Team and Rem25 portraits. */
  .member,
  .rem-person {
    transition: transform .45s var(--ease);
  }
  .member:hover,
  .rem-person:hover {
    transform: translateY(-4px);
  }

  /* Partner cells. */
  .plogo {
    transition: background-color .35s var(--ease), transform .35s var(--ease), border-color .35s var(--ease);
  }
  .plogo:hover {
    transform: translateY(-3px);
  }

  /* Footer links and text links get a visible but quiet response. */
  .site-footer-column a,
  .arrow-link,
  .addon-link {
    transition: color .3s var(--ease), opacity .3s var(--ease), transform .3s var(--ease);
  }
}
