.has-products .products-intro{min-height:0;padding-bottom:54px}.has-products .products-intro .button{display:none}
.product-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;max-width:1160px;margin:0 auto;padding:0 var(--space) 110px}.product-grid:empty{display:none}
.product-card{padding:38px;border:1px solid #dcebf0;border-radius:28px;background:#f5fafc;overflow:hidden;min-width:0}
.product-card img{display:block;width:100%;height:280px;object-fit:contain;margin-bottom:30px;border-radius:16px}
.product-card h2{font-size:clamp(26px,3vw,38px);letter-spacing:-.035em;line-height:1.2;margin:0 0 18px;overflow-wrap:anywhere}
.product-card p{white-space:pre-line;color:#627983;line-height:1.8;margin:0 0 24px;overflow-wrap:anywhere}.product-card a{display:inline-block;color:#1486a4;transition:transform .25s ease}.product-card a:hover{transform:translateY(-2px)}
.product-reveal{opacity:0;transform:translateY(22px);filter:blur(5px);transition:opacity .75s,transform .75s cubic-bezier(.22,1,.36,1),filter .75s;transition-delay:var(--delay,0ms)}.product-reveal.is-visible{opacity:1;transform:none;filter:none}

@media(max-width:680px){.product-grid{grid-template-columns:1fr;gap:20px}.product-card{padding:26px}.product-card img{height:220px}}
@media(prefers-reduced-motion:reduce){.product-card,.product-card a{transition:none;filter:none;opacity:1;transform:none}}

/* Product icon background and independent letter drift 0.1.4 */
.products-intro{position:relative;isolation:isolate;overflow:hidden}
.products-copy{position:relative;z-index:1;max-width:100%}
.product-float-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;user-select:none}
.product-float-word{display:inline-block;white-space:nowrap}
.product-float-glyph,.product-float-ink{display:inline-block}
.product-float-glyph{animation:product-glyph-sway var(--glyph-sway) ease-in-out var(--glyph-sway-phase) infinite;animation-play-state:paused}
.product-float-ink{animation:product-glyph-bob var(--glyph-bob) ease-in-out var(--glyph-bob-phase) infinite;animation-play-state:paused}
.products-intro .hero-copy>.product-action-float{display:inline-block;animation:product-action-drift 13.6s ease-in-out -3s infinite;animation-play-state:paused}
.products-intro .product-action-float>.button{animation:products-content-in 1s cubic-bezier(.22,1,.36,1) .4s both}
.products-intro.is-floating :is(.product-float-glyph,.product-float-ink,.product-action-float){animation-play-state:running}
.has-products .products-intro .product-action-float{display:none}
.products-ambient{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;user-select:none;opacity:0;transition:opacity 1.8s ease}
.products-ambient.is-ready{opacity:1}
.products-ambient::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 33% 28% at 50% 50%,#f4fbfde8 10%,#f4fbfd80 55%,transparent 100%)}
.product-ambient-icon{position:absolute;left:var(--x);top:var(--y);width:clamp(64px,var(--size),140px);aspect-ratio:1;transform:translate(-50%,-50%)}
.product-ambient-icon[hidden]{display:none}
.product-ambient-push{display:block;width:100%;height:100%;will-change:transform}
.product-ambient-drift{display:block;width:100%;height:100%;animation:product-water-drift var(--drift) cubic-bezier(.45,0,.55,1) var(--phase) infinite;animation-play-state:paused}
.product-ambient-icon img{display:block;width:100%;height:100%;object-fit:contain;border-radius:23%;opacity:calc(var(--presence)*.6);filter:saturate(.78);animation:product-water-presence var(--breath) ease-in-out var(--phase) infinite;animation-play-state:paused}
.products-ambient.is-playing .product-ambient-drift,.products-ambient.is-playing img{animation-play-state:running}
@keyframes product-water-drift{
  0%,100%{transform:translate3d(-7px,4px,0) rotate(calc(var(--angle) - 2deg))}
  25%{transform:translate3d(2px,-7px,0) rotate(calc(var(--angle) + .7deg))}
  50%{transform:translate3d(12px,-2px,0) rotate(calc(var(--angle) + 2deg))}
  75%{transform:translate3d(1px,8px,0) rotate(calc(var(--angle) - .5deg))}
}
@keyframes product-water-presence{0%,100%{opacity:calc(var(--presence)*.5)}50%{opacity:var(--presence)}}
@keyframes product-glyph-sway{0%,100%{transform:translateX(calc(var(--glyph-x)*-1))}50%{transform:translateX(var(--glyph-x))}}
@keyframes product-glyph-bob{0%,100%{transform:translateY(calc(var(--glyph-y)*-1)) rotate(calc(var(--glyph-tilt)*-1))}50%{transform:translateY(var(--glyph-y)) rotate(var(--glyph-tilt))}}
@keyframes product-action-drift{0%,100%{transform:translate3d(-1px,2px,0)}50%{transform:translate3d(1px,-2px,0)}}
@media(prefers-reduced-motion:reduce){
  .products-ambient{transition:none}
  .product-float-glyph,.product-float-ink,.products-intro .hero-copy>.product-action-float,.products-intro .product-action-float>.button{animation:none!important;transform:none}
  .product-ambient-drift{animation:none;transform:rotate(var(--angle))}
  .product-ambient-push{transform:none!important}
  .product-ambient-icon img{animation:none;opacity:calc(var(--presence)*.65)}
}
