/* Creative layer. Only loaded by home.html.twig; no framework dependencies. */
:root {
  --motion-ease: cubic-bezier(.22,.8,.25,1);
  --motion-duration: 650ms;
  --story-progress: 0;
}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.hero{grid-template-columns:.94fr 1.06fr;min-height:720px}
.hero-copy{padding-top:72px;padding-bottom:72px}
.hero-copy h1{max-width:650px;font-size:clamp(44px,3.6vw,68px)}
.hero-copy .eyebrow{gap:12px}
.hero-copy .eyebrow:before{box-shadow:0 0 0 6px #057f2f0d}
.hero-visual{isolation:isolate;--focus-x:50%;--focus-y:50%}
.hero-visual>img{object-position:center;transform-origin:var(--focus-x) var(--focus-y)}
.hero-visual:after{z-index:0;inset:35% 0 0;background:linear-gradient(transparent,#0d2b20c9)}
.hero-visual:before{content:'';position:absolute;z-index:1;left:24px;top:24px;right:24px;bottom:24px;border:1px solid #ffffff30;border-radius:3px;pointer-events:none}
.field-grid{position:absolute;z-index:1;inset:0;width:100%;height:100%;pointer-events:none;opacity:.16;mask-image:linear-gradient(135deg,#000,transparent 60%);transition:opacity 600ms}
.hero-visual:hover .field-grid{opacity:.4}
.gallery-controls{position:absolute;z-index:3;inset:28px 32px auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.gallery-controls[hidden]{display:none}
.gallery-choice{position:relative;border:0;background:#123726e8;color:#fff;text-align:left;padding:13px 12px 16px;cursor:pointer;min-height:76px;border-radius:3px;transition:background .25s}
.gallery-index{display:block;color:#d7ed9b;font-size:11px;letter-spacing:.1em;margin-bottom:6px}
.gallery-label{display:block;font-size:13px;font-weight:600;line-height:1.4}
.gallery-choice-line{position:absolute;bottom:0;left:0;right:0;height:2px;background:#ffffff40;overflow:hidden}
.gallery-choice-line:after{content:'';display:block;width:100%;height:100%;background:var(--lime);transform:scaleX(0);transform-origin:left;transition:transform .4s var(--motion-ease)}
.gallery-choice[aria-pressed=true]{background:#123726}
.gallery-choice[aria-pressed=true] .gallery-choice-line:after{transform:scaleX(1)}
.gallery-choice:hover{background:#153f2b}
.hero-visual[aria-busy=true] .gallery-choice[aria-pressed=true] .gallery-index{opacity:.55}
.image-caption{z-index:2;left:32px;right:32px;bottom:32px;background:#123726d9;backdrop-filter:blur(12px)}
.hero-visual [data-gallery-link]{min-height:44px;display:inline-flex;align-items:center}
.hero-actions .button,.solution-grid .button{position:relative;overflow:hidden}
.hero-actions .button span,.solution-grid .button span{transition:transform .3s var(--motion-ease)}
.hero-actions .button:hover span,.solution-grid .button:hover span{transform:translateX(5px)}
/* A field-plan inspired highlight follows the pointer, with one rAF write per frame. */
.need-card,.product-card{--pointer-x:50%;--pointer-y:50%;isolation:isolate}
.need-card{overflow:hidden}
.need-card:before{content:'';position:absolute;inset:0;z-index:-1;opacity:0;background:radial-gradient(240px circle at var(--pointer-x) var(--pointer-y),#d7ed9b26,transparent 75%);transition:opacity .3s;pointer-events:none}
.need-card:hover:before{opacity:1}
.need-icon path,.need-icon circle{transition:stroke-dashoffset .7s var(--motion-ease)}
.need-card:hover .need-icon{transform:translateY(-3px)}
.need-icon{transition:transform .4s var(--motion-ease)}
.product-grid{counter-reset:machine}
.product-card{position:relative;counter-increment:machine;container-type:inline-size;transition:border-color .3s,box-shadow .4s;overflow:hidden}
.product-card:hover{border-color:#87a58c;box-shadow:0 16px 40px #153f2b0c}
.product-card .card-content:before{content:counter(machine,decimal-leading-zero);display:block;font:500 12px/1.5 var(--font-body);letter-spacing:.12em;color:var(--green);margin-bottom:20px}
.product-card>img{transition:transform .8s var(--motion-ease);transform-origin:var(--pointer-x) var(--pointer-y)}
.product-card:hover>img{transform:scale(1.035)}
.product-card .button span{transition:transform .3s}
.product-card:hover .button span{transform:translateX(6px)}
@container (min-width:850px){.card-content ul{grid-template-columns:1fr;gap:12px}.card-content h3{max-width:36ch}}
/* Sticky introduction, regular document scrolling, and a progress rail. */
.solutions{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(44px,7vw,120px);align-items:start;position:relative;background:#113c29}
.solutions-intro{position:sticky;top:132px}
.solutions-intro h2{font-size:clamp(34px,3.3vw,54px);line-height:1.16;letter-spacing:-.025em;color:#fff;margin:0 0 28px}
.solutions-intro>hr{display:none}
.solutions-intro .section-lead{max-width:38ch;margin-bottom:36px}
.solution-index{display:flex;flex-direction:column;border-top:1px solid #ffffff30}
.solution-index a{display:grid;grid-template-columns:24px 1fr 20px;align-items:center;gap:16px;min-height:76px;padding:16px 0;border-bottom:1px solid #ffffff30;color:#d8e5d6;font-size:16px;line-height:1.5;transition:color .2s}
.solution-index a>span:first-child{font-size:11px;color:#b9cbb6}
.solution-index a svg{transition:transform .3s}
.solution-index a:hover,.solution-index a[aria-current=true]{color:var(--lime)}
.solution-index a[aria-current=true] svg{transform:translateX(4px)}
.solution-progress{height:2px;background:#ffffff16;margin-top:32px;overflow:hidden}
.solution-progress span{display:block;width:100%;height:100%;background:var(--lime);transform:scaleX(var(--story-progress));transform-origin:left}
.solution-grid{display:grid;grid-template-columns:1fr;gap:80px;counter-reset:solution}
.solution-grid article{display:flex;flex-direction:column;position:relative;counter-increment:solution;padding-top:0;border:0;scroll-margin-top:130px}
.solution-grid article:before{content:counter(solution,decimal-leading-zero);position:absolute;top:20px;left:20px;z-index:1;display:grid;place-items:center;width:44px;height:44px;font-size:13px;color:var(--forest);background:var(--lime);border-radius:50%}
.solution-grid article>img{width:100%;height:auto;aspect-ratio:16/11;object-fit:cover;border-radius:6px;transition:filter .6s,transform .6s}
.solution-grid article>div{padding:28px 0 0}
.solution-grid article h3{font-size:clamp(28px,2.5vw,40px);max-width:22ch;margin-bottom:18px}
.solution-grid p{max-width:55ch}
.solution-grid .button{min-width:180px}
.solution-grid article.is-current>img{filter:saturate(1.08)}
.proof-feature{transition:border-color .3s}
.proof-feature:hover{border-color:#87a58c}
.proof-feature>img{transition:filter .5s}
.proof-feature:hover>img{filter:saturate(1.12)}
.team{position:relative;overflow:hidden}
.team-panel{position:relative}
.team-panel:after{content:'';position:absolute;inset:24px;border:1px solid #153f2b18;pointer-events:none;border-radius:3px}
.team-panel>*{position:relative;z-index:1}
/**** Progressive scroll effects: unsupported browsers retain the static layout. ****/
@supports (animation-timeline:view()){
 @media(min-width:981px) and (prefers-reduced-motion:no-preference){
  .team-photo{animation:field-depth linear both;animation-timeline:view();animation-range:entry 0% exit 100%}
  @keyframes field-depth{from{transform:scale(1.07) translateY(-2%)}to{transform:scale(1.07) translateY(2%)}}
 }
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .field-route{stroke-dasharray:8 12;animation:field-route 20s linear infinite;animation-play-state:paused}
 .hero-visual:hover .field-route{animation-play-state:running}
 @keyframes field-route{to{stroke-dashoffset:-200}}
 .hero-copy .eyebrow{animation:hero-arrive .7s var(--motion-ease) both}
 .hero-copy h1{animation:hero-arrive .9s .08s var(--motion-ease) both}
 .hero-copy p{animation:hero-arrive .9s .16s var(--motion-ease) both}
 .hero-actions{animation:hero-arrive .9s .24s var(--motion-ease) both}
 @keyframes hero-arrive{from{opacity:0;transform:translateY(20px);clip-path:inset(0 0 10% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}
}
@media(max-width:1250px){.hero-copy h1{font-size:44px}.hero-copy{padding-right:32px}.gallery-controls{gap:8px;left:24px;right:24px}.gallery-choice{padding:12px 9px;min-height:82px}.gallery-label{font-size:12px}.solutions{gap:50px}}
@media(max-width:980px){
 .hero{grid-template-columns:1fr 1fr;min-height:680px}
 .hero-copy{padding:50px 28px 50px var(--page-gutter)}
 .hero-copy h1{font-size:40px}
 .gallery-controls{grid-template-columns:repeat(2,minmax(0,1fr));inset:24px 24px auto}
 .gallery-choice{min-height:65px;padding:10px}
 .gallery-label{font-size:13px}
 .gallery-index{margin-bottom:3px}
 .solutions{display:block}
 .solutions-intro{position:static;margin-bottom:44px}
 .solutions-intro h2{max-width:700px;font-size:40px}
 .solutions-intro .section-lead{max-width:65ch}
 .solution-index{display:none}
 .solution-progress{display:none}
 .solution-grid{gap:48px}
 .solution-grid article{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding-top:0}
 .solution-grid article>img{height:100%;min-height:320px;aspect-ratio:auto}
 .solution-grid article>div{padding:0}
 .solution-grid article h3{font-size:30px}
 .team-panel:after{inset:16px}
}
@media(max-width:767px){
 .hero{grid-template-columns:1fr;min-height:0}
 .hero-copy{padding:42px 22px 36px}
 .hero-copy h1{font-size:clamp(35px,8.5vw,48px)}
 .hero-visual{height:460px}
 .hero-visual:before{inset:16px}
 .hero-visual>img{object-position:center}
 .gallery-controls{inset:22px 22px auto;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
 .gallery-choice{min-height:54px;padding:10px 8px}
 .gallery-index{font-size:12px;margin:0}
 .gallery-label{display:none}
 .image-caption{inset:auto 22px 22px;padding:16px;backdrop-filter:none}
 .image-caption>span{max-width:170px}
 .image-caption a{font-size:13px}
 .field-grid{opacity:.12}
 .solutions-intro h2{font-size:34px}
 .solution-grid{gap:48px}
 .solution-grid article{display:flex;gap:0;scroll-margin-top:100px}
 .solution-grid article>img{aspect-ratio:4/3;height:auto;min-height:0}
 .solution-grid article>div{padding:24px 0 0}
 .solution-grid article:before{top:16px;left:16px;width:36px;height:36px}
 .solution-grid article h3{font-size:28px}
 .product-card .card-content:before{margin-bottom:14px}
 .team-panel:after{display:none}
}
@media(hover:none),(pointer:coarse){.need-card:before,.field-grid{display:none}.product-card:hover>img{transform:none}}
@media(prefers-reduced-motion:reduce){
 .solutions-intro{position:static}
 .field-grid{display:none}
 .product-card:hover>img,.need-card:hover .need-icon{transform:none}
}
@media print{.gallery-controls,.field-grid,.solution-index,.solution-progress{display:none}.solutions-intro{position:static}.solutions{display:block}}
/* Short laptop windows must never trap a tall sticky introduction. */
@media(min-width:981px) and (max-height:780px){.solutions-intro{position:static}}
.product-card .card-content:before{content:counter(machine,decimal-leading-zero) / ''}
.solution-grid article:before{content:counter(solution,decimal-leading-zero) / ''}
@media(prefers-reduced-motion:no-preference){
 .product-card.reveal-ready>img{clip-path:inset(0 0 12% 0);transition:clip-path .9s var(--motion-ease),transform .8s var(--motion-ease)}
 .product-card.reveal-ready.is-visible>img{clip-path:inset(0)}
}
@media(max-width:767px){
 .gallery-choice{min-height:72px;padding:10px 7px}
 .gallery-label{display:block;font-size:10px;line-height:1.4;margin-top:5px}
}
/* Native details navigation stays available when JavaScript cannot run. */
@media(max-width:1150px){
 .no-js .site-header{position:relative;flex-wrap:wrap}
 .no-js .menu-toggle{display:none}
 .no-js #navigation{display:flex;position:static;flex-basis:100%;max-height:none;padding:16px 0 0;gap:8px;align-items:stretch;flex-direction:column}
}
/* GSAP owns these properties while enabled; static CSS remains the fallback. */
.gsap-motion .hero-copy .eyebrow,.gsap-motion .hero-copy h1,.gsap-motion .hero-copy p,.gsap-motion .hero-actions,.gsap-motion .team-photo,.gsap-motion .field-route{animation:none!important}
.gsap-motion .team-photo,.gsap-motion .product-card>img{transition:none}
.gsap-motion .product-card:hover>img{transform:none}
@media(prefers-reduced-motion:reduce){.gsap-motion .hero-copy *,.gsap-motion .team-photo{transform:none!important}}
@media print{.gsap-motion main *{opacity:1!important;visibility:visible!important;transform:none!important;clip-path:none!important}}
