/* A continuous pointer light across the original partner grid. */
.partner-glow {display:none}
.partners-logos {--partner-light:0;isolation:isolate}
.partners-logos>div {position:relative;z-index:1;isolation:isolate;background:none!important}
.partners-logos>div::before,.partners-logos>div::after {content:"";position:absolute;inset:0;pointer-events:none;opacity:var(--partner-light)}
/* One feathered light behind the grid avoids hard seams at cell boundaries. */
.partners-logos>div::before {display:none}
.partners-logos::before {content:"";position:absolute;inset:-48px;z-index:0;pointer-events:none;opacity:var(--partner-light);background:radial-gradient(circle var(--partner-radius,180px) at calc(var(--partner-x,-999px) + 48px) calc(var(--partner-y,-999px) + 48px),#82da9638 0%,#99e4a738 38%,#b3ebbc24 62%,#d5f4d90c 82%,transparent 100%);filter:blur(clamp(12px,1.1vw,24px))}

.partners-logos>div::after {border:1px solid #87d56c;mask-image:radial-gradient(var(--partner-radius,180px) circle at var(--pointer-x) var(--pointer-y),#000 5%,#0008 45%,transparent 100%);-webkit-mask-image:radial-gradient(var(--partner-radius,180px) circle at var(--pointer-x) var(--pointer-y),#000 5%,#0008 45%,transparent 100%)}
.partners-logos img {transition:filter 350ms ease}
.partners-logos>div:hover img {filter:brightness(.65)}


@media(prefers-reduced-motion:reduce){.contact-background {transform:none}.partners-logos img {transition:none}}
/* Both grid layers share the same SVG coordinates and the same box. */
.partners-logos>div::after {display:none}
.partner-grid-light {opacity:var(--partner-light,0);mask-image:radial-gradient(var(--partner-radius,180px) circle at var(--grid-x,-999px) var(--grid-y,-999px),#000,transparent);-webkit-mask-image:radial-gradient(var(--partner-radius,180px) circle at var(--grid-x,-999px) var(--grid-y,-999px),#000,transparent)}
.footer-wordmark {--footer-light:0;--footer-x:-999px;--footer-y:-999px;overflow:visible}
.footer-light {position:absolute;inset:-28px;pointer-events:none;background:url('https://spin-assets.onew.design/assets/footer-wordmark-white.svg') center / calc(100% - 56px) calc(100% - 56px) no-repeat;mask-image:radial-gradient(circle clamp(130px,18vw,360px) at var(--footer-x) var(--footer-y),#000 0%,#000b 30%,transparent 100%);opacity:var(--footer-light)}
.footer-light-core {filter:blur(.6px)}
.footer-light-soft {filter:blur(9px)}
.country-field {position:relative;min-width:0}
.country-trigger {display:none}
.country-field select {width:100%;height:calc(42 * var(--v));border:0;border-bottom:1px solid #0003;background:transparent;color:#666}
.custom-select-ready .country-trigger {display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:calc(42 * var(--v));padding:calc(10 * var(--v)) 0;border:0;border-bottom:1px solid #0003;background:transparent;text-align:left;color:#666;font-size:calc(16 * var(--u));line-height:1.25}
.country-value {overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.has-value .country-trigger {color:#111}
.country-arrow {display:grid;place-items:center;width:24px;height:24px;flex-shrink:0;background:transparent;border-radius:0}
.country-arrow img {width:6px;height:11px;transform:rotate(90deg);transition:transform 250ms ease}
.country-trigger[aria-expanded=true] .country-arrow img {transform:rotate(-90deg)}
.country-options {position:fixed;z-index:100;left:0;top:0;max-height:240px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#0f645355 transparent;padding:6px;border:1px solid #0f645326;border-radius:6px;background:#fafafa;box-shadow:0 12px 40px #04242426;color:#203c38;font-size:max(13px,calc(16 * var(--u)))}
.country-options[hidden] {display:none}
.country-options [role=option] {padding:10px 12px;line-height:1.3;border-radius:3px;cursor:pointer}
.country-options [role=option]:is(:hover,.is-highlighted) {background:#0f645310}
.country-options [aria-selected=true] {color:white;background:var(--green)!important}
@media(max-width:1023px){.partners-logos>div::after {display:block}.country-field select,.custom-select-ready .country-trigger {height:42px;font-size:16px;padding:10px 0}.partner-grid-light {display:none}}
@media(prefers-reduced-motion:reduce){.footer-light {display:none}.country-arrow img {transition:none}}

/* Bright, feathered fill and exact dotted glyph contours share the same pointer. */
.footer-light-core {filter:none;mask-image:radial-gradient(circle clamp(130px,18vw,360px) at var(--footer-x) var(--footer-y),#000 0%,#000 35%,#0008 65%,transparent 100%)}
.footer-light-outline {background-image:url('https://spin-assets.onew.design/assets/footer-wordmark-outline.svg');filter:none;mask-image:radial-gradient(circle clamp(160px,21vw,410px) at var(--footer-x) var(--footer-y),#000 0%,#000 65%,transparent 100%)}
.site-header {position:fixed;inset:0 0 auto;z-index:60;opacity:1;transition:transform 300ms cubic-bezier(.22,1,.36,1),opacity 220ms ease;pointer-events:none}
.site-header>* {pointer-events:auto}
.site-header.nav-hidden:not(:focus-within) {transform:translateY(-110%);opacity:0;pointer-events:none}
.site-header.nav-hidden:not(:focus-within)>* {pointer-events:none}
.site-header .main-nav,.site-header .contact-button {transition:background-color 240ms ease,color 240ms ease}
.site-header.on-light .main-nav {background:#0f6453;color:white;backdrop-filter:none}
.site-header.on-light .main-nav .active {color:#0f6453;background:#fff}
.site-header.on-light .contact-button {background:#efefef;color:#0f6453}
.site-header.on-light .contact-button .button-icon {background:#0f6453}
@media(prefers-reduced-motion:reduce){.site-header {transition:none}}

.contact-form :is(input,textarea,.country-trigger):focus {outline:none;box-shadow:none;border-bottom-color:#777}
.site-header.on-light .brand-word {content:url('https://spin-assets.onew.design/assets/brand-word-green.svg')}

/* Smooth periodic paths have continuous velocity through the loop boundary. */
@property --title-scan-x {syntax:'<percentage>';inherits:false;initial-value:56.36%}
@property --title-scan-y {syntax:'<percentage>';inherits:false;initial-value:60.9%}
@property --title-scan-radius {syntax:'<percentage>';inherits:false;initial-value:28%}
.title-auto-light {
 opacity:0;transition:opacity 360ms ease;
 mask-image:radial-gradient(ellipse var(--title-scan-radius) 70% at var(--title-scan-x) var(--title-scan-y),#000 0%,#000c 30%,#0005 65%,transparent 100%),radial-gradient(ellipse 19% 48% at calc(100% - var(--title-scan-x)) calc(100% - var(--title-scan-y)),#0005 0%,#0002 48%,transparent 100%);
 animation:title-light-wander 5.8s linear infinite;animation-play-state:paused;
}
.title-light-ready.auto-light-active:not(.auto-light-paused) .title-auto-light {opacity:1;animation-play-state:running}
.title-light-ready.auto-light-active.pointer-engaged .title-auto-light {opacity:.18}
#hero-heading.title-entering .title-auto-light,
#swarm-heading.title-entering .title-auto-light,
#swarm-heading.swarm-pending .title-auto-light {visibility:hidden;animation-play-state:paused;opacity:0}

.hero-scroll.title-dismissed .title-auto-light {animation-play-state:paused}
#hero-heading>img,#swarm-heading>img {transition:opacity 300ms ease}
#hero-heading.pointer-engaged>img {opacity:.48}
#swarm-heading.pointer-engaged>img {opacity:.48}
@keyframes title-light-wander {
 0% { --title-scan-x:56.365%;--title-scan-y:60.904%;--title-scan-radius:28.000% }
 2% { --title-scan-x:61.005%;--title-scan-y:66.975%;--title-scan-radius:29.472% }
 4% { --title-scan-x:65.124%;--title-scan-y:71.979%;--title-scan-radius:30.738% }
 6% { --title-scan-x:68.633%;--title-scan-y:75.603%;--title-scan-radius:31.619% }
 8% { --title-scan-x:71.473%;--title-scan-y:77.617%;--title-scan-radius:31.992% }
 10% { --title-scan-x:73.622%;--title-scan-y:77.897%;--title-scan-radius:31.804% }
 12% { --title-scan-x:75.089%;--title-scan-y:76.423%;--title-scan-radius:31.082% }
 14% { --title-scan-x:75.913%;--title-scan-y:73.290%;--title-scan-radius:29.927% }
 16% { --title-scan-x:76.161%;--title-scan-y:68.693%;--title-scan-radius:28.501% }
 18% { --title-scan-x:75.917%;--title-scan-y:62.921%;--title-scan-radius:27.005% }
 20% { --title-scan-x:75.280%;--title-scan-y:56.338%;--title-scan-radius:25.649% }
 22% { --title-scan-x:74.353%;--title-scan-y:49.356%;--title-scan-radius:24.623% }
 24% { --title-scan-x:73.236%;--title-scan-y:42.415%;--title-scan-radius:24.071% }
 26% { --title-scan-x:72.021%;--title-scan-y:35.950%;--title-scan-radius:24.071% }
 28% { --title-scan-x:70.784%;--title-scan-y:30.368%;--title-scan-radius:24.623% }
 30% { --title-scan-x:69.583%;--title-scan-y:26.020%;--title-scan-radius:25.649% }
 32% { --title-scan-x:68.449%;--title-scan-y:23.178%;--title-scan-radius:27.005% }
 34% { --title-scan-x:67.390%;--title-scan-y:22.022%;--title-scan-radius:28.501% }
 36% { --title-scan-x:66.392%;--title-scan-y:22.624%;--title-scan-radius:29.927% }
 38% { --title-scan-x:65.415%;--title-scan-y:24.946%;--title-scan-radius:31.082% }
 40% { --title-scan-x:64.403%;--title-scan-y:28.842%;--title-scan-radius:31.804% }
 42% { --title-scan-x:63.289%;--title-scan-y:34.068%;--title-scan-radius:31.992% }
 44% { --title-scan-x:61.998%;--title-scan-y:40.294%;--title-scan-radius:31.619% }
 46% { --title-scan-x:60.455%;--title-scan-y:47.131%;--title-scan-radius:30.738% }
 48% { --title-scan-x:58.594%;--title-scan-y:54.148%;--title-scan-radius:29.472% }
 50% { --title-scan-x:56.365%;--title-scan-y:60.904%;--title-scan-radius:28.000% }
 52% { --title-scan-x:53.735%;--title-scan-y:66.975%;--title-scan-radius:26.528% }
 54% { --title-scan-x:50.700%;--title-scan-y:71.979%;--title-scan-radius:25.262% }
 56% { --title-scan-x:47.282%;--title-scan-y:75.603%;--title-scan-radius:24.381% }
 58% { --title-scan-x:43.532%;--title-scan-y:77.617%;--title-scan-radius:24.008% }
 60% { --title-scan-x:39.530%;--title-scan-y:77.897%;--title-scan-radius:24.196% }
 62% { --title-scan-x:35.385%;--title-scan-y:76.423%;--title-scan-radius:24.918% }
 64% { --title-scan-x:31.223%;--title-scan-y:73.290%;--title-scan-radius:26.073% }
 66% { --title-scan-x:27.190%;--title-scan-y:68.693%;--title-scan-radius:27.499% }
 68% { --title-scan-x:23.437%;--title-scan-y:62.921%;--title-scan-radius:28.995% }
 70% { --title-scan-x:20.119%;--title-scan-y:56.338%;--title-scan-radius:30.351% }
 72% { --title-scan-x:17.380%;--title-scan-y:49.356%;--title-scan-radius:31.377% }
 74% { --title-scan-x:15.350%;--title-scan-y:42.415%;--title-scan-radius:31.929% }
 76% { --title-scan-x:14.135%;--title-scan-y:35.950%;--title-scan-radius:31.929% }
 78% { --title-scan-x:13.812%;--title-scan-y:30.368%;--title-scan-radius:31.377% }
 80% { --title-scan-x:14.421%;--title-scan-y:26.020%;--title-scan-radius:30.351% }
 82% { --title-scan-x:15.969%;--title-scan-y:23.178%;--title-scan-radius:28.995% }
 84% { --title-scan-x:18.419%;--title-scan-y:22.022%;--title-scan-radius:27.499% }
 86% { --title-scan-x:21.702%;--title-scan-y:22.624%;--title-scan-radius:26.073% }
 88% { --title-scan-x:25.711%;--title-scan-y:24.946%;--title-scan-radius:24.918% }
 90% { --title-scan-x:30.312%;--title-scan-y:28.842%;--title-scan-radius:24.196% }
 92% { --title-scan-x:35.347%;--title-scan-y:34.068%;--title-scan-radius:24.008% }
 94% { --title-scan-x:40.646%;--title-scan-y:40.294%;--title-scan-radius:24.381% }
 96% { --title-scan-x:46.031%;--title-scan-y:47.131%;--title-scan-radius:25.262% }
 98% { --title-scan-x:51.325%;--title-scan-y:54.148%;--title-scan-radius:26.528% }
 100% { --title-scan-x:56.365%;--title-scan-y:60.904%;--title-scan-radius:28.000% }
}
@media(prefers-reduced-motion:reduce){.title-auto-light {display:none;animation:none}}

/* Identical relative spotlight size, feather and rest tone for both headlines. */
#swarm-heading>img {opacity:.6}
#hero-heading,#swarm-heading {--headline-radius:calc(var(--glyph-width) * .239);--light-radius:var(--headline-radius);--glow-radius:var(--headline-radius)}
#hero-heading .heading-light-soft,#swarm-heading .swarm-light-soft {filter:blur(calc(var(--glyph-width) * .0078))}
.title-preparing>img,.title-preparing .title-letters,.title-preparing .title-auto-light {visibility:hidden!important}
.title-preparing .title-auto-light {animation-play-state:paused!important;opacity:0!important}
.contact h2 {font-weight:500}

/* Hide the completed artwork from first paint until the last glyph settles. */
.js :is(#hero-heading,#swarm-heading):not(.title-light-ready)>img {visibility:hidden}

/* Let the second title catch the scroll rhythm as soon as its letters settle. */
#swarm-heading .title-auto-light {transition-duration:80ms;transition-timing-function:ease-out}
