/* Home-only layouts. Shared primitives live in website.css. */
.home-intro { position: relative; padding-inline: var(--site-gutter); }
.home-intro__composition { width: min(1480px, 100%); margin-inline: auto; display: grid; grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr); align-items: center; gap: 24px; }
.home-intro__copy { position: relative; z-index: 1; padding-left: clamp(0px, calc((100vw - 1280px) / 2), 100px); }
.home-intro .home-intro__title { max-width: 580px; margin: 0; text-align: left; font-size: 44px; line-height: 1.12; letter-spacing: 0; }
.home-intro .site-lead { max-width: 480px; margin: 28px 0 0; font-size: 22px; }
.home-intro__portrait { min-width: 0; width: 100%; margin: 0; }
.home-intro__portrait img { display: block; width: 100%; height: auto; aspect-ratio: 1; object-fit: contain; }
.home-split { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: clamp(32px, 6vw, 80px); margin-top: clamp(40px, 5vw, 72px); }
.home-split > .site-lead { max-width: 530px; margin-bottom: 0; }
.home-about__visual { position: relative; }
.home-about__caption { position: relative; z-index: 1; margin: -22px -30px 0 25px; color: var(--fp-yellow-joy); text-shadow: 0 3px 4px rgb(0 0 0 / 20%); font: 800 clamp(24px, 3vw, 40px)/1.2 var(--fp-website-heading-family); text-transform: uppercase; }
/* Service panels: fixed-size typography, a moving SVG mark and image-ready layers. */
.home-services { --service-duration: 1.05s; --service-ease: cubic-bezier(.22, 1, .36, 1); }
.home-services__panels { display: grid; gap: 16px; }
.home-service { position: relative; isolation: isolate; overflow: hidden; border-radius: var(--site-radius); background: var(--media-tone); padding: 32px; }
.home-service__media { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -2; aspect-ratio: auto; border-radius: inherit; }
.home-service__media img { transform: scale(1.09); transition: transform 1.4s var(--service-ease); }
.home-service.is-active .home-service__media img { transform: scale(1); }
.home-service:has(img)::after { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgb(0 24 36 / 64%), rgb(0 24 36 / 24%) 35%, rgb(0 24 36 / 78%)); }
.home-service:has(img) { color: #fff; }
.home-service__heading { margin: 0; }
.home-service__trigger { display: flex; align-items: center; gap: 18px; width: 100%; min-height: 64px; border: 0; padding: 0; text-align: left; background: none; color: inherit; font: 800 clamp(24px, 2.5vw, 34px)/1.15 var(--fp-website-heading-family); text-transform: uppercase; }
.home-service__icon-wrap { display: block; width: 64px; height: 64px; flex: 0 0 64px; }
.home-service__icon { display: block; width: 100%; height: 100%; overflow: visible; }
.home-service__title { display: block; }
.home-service__body { margin-top: 28px; }
.home-service__body > p { max-width: 430px; margin: 0 0 36px; }
.home-service__actions { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 12px 20px; }
.home-service__details { max-width: 440px; }
.home-service__details summary { min-height: 54px; display: flex; align-items: center; gap: 12px; cursor: pointer; list-style: none; font: 700 14px/1.4 var(--fp-website-heading-family); text-transform: uppercase; }
.home-service__details summary::-webkit-details-marker { display: none; }
.home-service__details summary .bi { transition: transform .4s var(--service-ease); }
.home-service__details[open] summary .bi { transform: rotate(-45deg); }
.home-service__details p { margin: 12px 0 0; }
.home-service__details[open] { flex-basis: 100%; }
/* No display/font-size/writing-mode switches during the transition. */
.home-services.is-enhanced .home-service { padding: 0; }
.home-services.is-enhanced .home-service__trigger { position: absolute; inset: 0; display: block; z-index: 1; }
.home-services.is-enhanced .home-service__trigger:focus-visible { outline-offset: -7px; border-radius: inherit; }
.home-services.is-enhanced .home-service__icon-wrap {
    position: absolute; left: calc(50% - 32px); top: calc(50% - 32px);
    transform: scale(1) rotate(-8deg);
    transition: left var(--service-duration) var(--service-ease), top var(--service-duration) var(--service-ease), transform var(--service-duration) var(--service-ease);
}
.home-services.is-enhanced .home-service.is-active .home-service__icon-wrap { left: 26px; top: 30px; transform: scale(.75) rotate(0deg); }
.home-services.is-enhanced .home-service__title { position: absolute; top: 43px; left: 100px; width: calc(var(--service-content-width, 400px) - 64px); opacity: 0; visibility: hidden; transform: translateY(18px); transition: opacity .3s, transform .6s var(--service-ease), visibility .3s; }
.home-services.is-enhanced .home-service.is-active .home-service__title { opacity: 1; visibility: visible; transform: translateY(0); transition-delay: .18s; }
.home-services.is-enhanced .home-service__body { position: absolute; top: 136px; left: 36px; z-index: 2; width: var(--service-content-width, calc(100% - 72px)); margin: 0; opacity: 0; visibility: hidden; transform: translateY(18px); transition: opacity .25s, transform .6s var(--service-ease), visibility .25s; }
.home-services.is-enhanced .home-service.is-active .home-service__body { opacity: 1; visibility: visible; transform: translateY(0); transition-delay: .25s; }
.home-services.is-motion .home-service__title, .home-services.is-motion .home-service__body { transition: none; }
@media (min-width: 1001px) {
    .home-services.is-enhanced .home-services__panels { display: flex; gap: 0; }
    .home-services.is-enhanced .home-service { flex: 1 1 0; min-width: 0; height: var(--service-row-height, 520px); transition: flex-grow var(--service-duration) var(--service-ease), height .5s var(--service-ease); }
    .home-services.is-enhanced .home-service + .home-service { margin-left: -20px; }
    .home-services.is-enhanced .home-service.is-active { flex-grow: 3.3; }
}
@media (max-width: 1000px) {
    .home-services.is-enhanced .home-service { height: 96px; transition: height .85s var(--service-ease); }
    .home-services.is-enhanced .home-service.is-active { height: var(--service-open-height, 370px); }
    .home-services.is-enhanced .home-service__icon-wrap { transform: scale(.7) rotate(-8deg); }
    .home-services.is-enhanced .home-service.is-active .home-service__icon-wrap { left: 18px; top: 24px; transform: scale(.7) rotate(0); }
    .home-services.is-enhanced .home-service__title { left: 88px; top: 40px; }
    .home-services.is-enhanced .home-service__body { left: 26px; top: 124px; }
}
.home-benefits, .home-cta { background: var(--fp-green-balance); }
.home-benefits > .site-section-title { max-width: 1100px; margin-inline: auto; }
.home-benefits__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(24px, 4vw, 56px); margin-top: 64px; }
.home-benefit { text-align: center; }
.home-benefit__image { width: min(100%, 218px); aspect-ratio: 1; border-radius: 50%; margin: 0 auto 32px; }
.home-benefit h3 { font-size: clamp(18px, 1.6vw, 22px); font-weight: 800; text-transform: uppercase; line-height: 1.25; margin-bottom: 20px; }
.home-benefit p { font-size: 18px; line-height: 1.5; max-width: 340px; margin: auto; }
.home-gallery { position: relative; max-width: 1600px; margin-inline: auto; overflow: clip; }
.home-gallery__grid { display: grid; grid-template-columns: 35fr 26.4fr 38.6fr; grid-template-rows: repeat(16, minmax(0, 1fr)); aspect-ratio: 1366 / 1381; }
.home-gallery__item { border-radius: 0; aspect-ratio: auto; min-height: 0; }
.home-gallery__layers { position: absolute; inset: 0; }
.home-gallery .home-gallery__photo { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; opacity: 1; }
.home-gallery .home-gallery__photo--incoming { opacity: 0; z-index: 1; transition: opacity var(--photo-fade-duration, 1200ms) ease-in-out; }
.home-gallery .home-gallery__photo--incoming.is-visible { opacity: 1; }
.home-gallery.is-photo-motion-enabled .home-gallery__photo { animation: gallery-photo-zoom var(--photo-zoom-duration, 12s) ease-in-out infinite alternate; animation-play-state: paused; transform-origin: 50% 50%; }
.home-gallery.is-photo-motion-running .home-gallery__photo { animation-play-state: running; }
@keyframes gallery-photo-zoom {
    from { transform: scale(var(--photo-zoom-from, 1.01)); }
    to { transform: scale(var(--photo-zoom-to, 1.075)); }
}
.home-gallery__title { z-index: 2; }
.home-gallery__title::before { content: ''; position: absolute; z-index: -1; inset: -28px -4vw; background: radial-gradient(ellipse, rgb(0 24 36 / 48%), transparent 72%); pointer-events: none; }
.home-gallery__pause { position: absolute; bottom: 24px; right: 24px; z-index: 3; min-height: 44px; padding: 10px 18px; border: 1px solid rgb(255 255 255 / 65%); border-radius: var(--site-radius-pill); color: #fff; background: rgb(0 40 56 / 85%); font-size: 14px; }
.home-gallery__pause[hidden] { display: none; }
.home-gallery__item--1 { grid-area: 1 / 1 / 7 / 2; }
.home-gallery__item--2 { grid-area: 1 / 2 / 5 / 3; }
.home-gallery__item--3 { grid-area: 1 / 3 / 9 / 4; }
.home-gallery__item--4 { grid-area: 7 / 1 / 11 / 2; }
.home-gallery__item--5 { grid-area: 5 / 2 / 13 / 3; }
.home-gallery__item--6 { grid-area: 9 / 3 / 13 / 4; }
.home-gallery__item--7 { grid-area: 11 / 1 / 16 / 2; }
.home-gallery__item--8 { grid-area: 13 / 2 / 17 / 4; margin-right: 16%; }
.home-gallery__title { position: absolute; top: 46%; inset-inline: var(--site-gutter); color: white; text-shadow: 0 2px 18px rgb(0 32 46 / 35%); pointer-events: none; }
.home-cta { text-align: center; min-height: 500px; display: grid; place-items: center; }
.home-cta .site-lead { max-width: 730px; margin: 28px auto 36px; }
@media (max-width: 767px) {
    .home-intro { padding-inline: 12px; }
    .home-intro__composition { grid-template-columns: minmax(0, 1fr); gap: 8px; }
    .home-intro__copy { padding-inline: 12px; }
    .home-intro .home-intro__title { max-width: 540px; font-size: 30px; margin-inline: auto; text-align: center; }
    .home-intro .site-lead { font-size: 18px; margin: 20px auto 0; text-align: center; }
    .home-intro__portrait { width: 100%; max-width: 600px; margin: 0 auto; }
    .home-split { grid-template-columns: 1fr; gap: 32px; }
    .home-about__caption { margin: -15px 0 0 16px; }
    .home-benefits__grid { grid-template-columns: 1fr; gap: 48px; margin-top: 44px; }
    .home-benefit__image { width: 160px; margin-bottom: 24px; }
    .home-gallery__grid { aspect-ratio: 3 / 4; }
    .home-gallery__title { top: 40%; inset-inline: 24px; }
    .home-gallery__title .site-section-title { font-size: clamp(26px, 6.8vw, 40px); }
    .home-cta { min-height: 420px; }
}
