/* SCHWAN hero. Reset the legacy section padding so controls occupy no extra band. */
.schwan-hero { --hero-gutter: max(24px, calc((100% - 1180px) / 2)); position: relative; width: 100%; margin: 0; padding: 0; background: #161b1f; color: #fff; isolation: isolate; touch-action: pan-y pinch-zoom; }
.schwan-hero *, .schwan-hero *::before, .schwan-hero *::after { box-sizing: border-box; }
.schwan-hero [hidden] { display: none !important; }
.schwan-hero__slide { position: relative; display: grid; align-items: center; min-height: 660px; min-height: clamp(640px, 100svh, 860px); isolation: isolate; overflow: hidden; padding: 128px var(--hero-gutter) 112px; }
.schwan-hero__background { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 65% center; z-index: 0; pointer-events: none; }
.schwan-hero__slide::after { content: ''; position: absolute; inset: 0; z-index: 7; pointer-events: none; background: linear-gradient(90deg, rgb(10 16 21 / .94) 0%, rgb(10 16 21 / .78) 37%, rgb(10 16 21 / .18) 67%, rgb(10 16 21 / .02)); }
.schwan-hero__slide::before { content: ''; position: absolute; inset: 0; z-index: 8; pointer-events: none; background: linear-gradient(180deg, rgb(10 16 21 / .94), rgb(10 16 21 / .78) 88px, transparent 148px), linear-gradient(0deg, rgb(10 16 21 / .82), transparent 120px); }
.schwan-hero__slide--tradition .schwan-hero__background { object-position: var(--hero-ken-image-x, 72%) var(--hero-ken-image-y, 46%); transform-origin: 72% 46%; }
.schwan-hero__slide--connect .schwan-hero__background { object-position: 63% center; transform-origin: 63% 56%; }
.schwan-hero__slide--craft .schwan-hero__background { transform-origin: 60% 50%; }
.schwan-hero__slide--trowel .schwan-hero__background { object-position: 76% center; transform-origin: 76% 50%; }
.schwan-hero__slide:not(.schwan-hero__slide--manufacturing) .schwan-hero__background { animation: schwan-ken-burns var(--hero-ken-duration, 30s) cubic-bezier(.42, 0, .58, 1) infinite alternate; animation-play-state: paused; transform-origin: var(--hero-ken-origin-x, 65%) var(--hero-ken-origin-y, 50%); backface-visibility: hidden; }
.schwan-hero[data-ken-burns='false'] .schwan-hero__slide .schwan-hero__background { animation: none; }
.schwan-hero[data-motion-state='running'] .schwan-hero__slide:not([hidden]):not(.schwan-hero__slide--manufacturing) .schwan-hero__background { animation-play-state: running; will-change: transform; }
@keyframes schwan-ken-burns {
    from { transform: translate3d(var(--hero-ken-from-x, 0%), var(--hero-ken-from-y, 0%), 0) scale3d(var(--hero-ken-start, 1.025), var(--hero-ken-start, 1.025), 1) rotate(var(--hero-ken-angle, 0deg)); }
    to { transform: translate3d(var(--hero-ken-pan-x, -.35%), var(--hero-ken-pan-y, .2%), 0) scale3d(var(--hero-ken-end, 1.075), var(--hero-ken-end, 1.075), 1) rotate(var(--hero-ken-angle, 0deg)); }
}
/* Gecko-only sampling mitigation; constant at both endpoints, no visible rotating motion.
   Mozilla Bug 739176 discusses subpixel snapping and this small-angle workaround.
   The transform remains compositor eligible; no per-frame JS style writes are added. */
@supports (-moz-appearance: none) {
    .schwan-hero { --hero-ken-angle: var(--hero-ken-firefox-angle, .01deg); }
}
.schwan-hero__depth { transform: translate3d(var(--depth-x, 0px), var(--depth-y, 0px), 0); pointer-events: none; }
.schwan-hero[data-motion-state='running'] .schwan-hero__slide--manufacturing:not([hidden]) .schwan-hero__depth { will-change: transform; }
.schwan-hero__tools-back { position: absolute; top: 16%; left: 49%; width: 25%; height: auto; z-index: 2; }
.schwan-hero__tools-mid { position: absolute; top: 38%; left: 41%; width: 42%; height: auto; z-index: 3; }
.schwan-hero__person { position: absolute; bottom: -10%; right: -4%; height: 109%; width: 67%; object-fit: contain; object-position: right bottom; z-index: 4; }
.schwan-hero__tools { position: absolute; bottom: -10%; right: -9%; width: 73%; height: auto; z-index: 6; }
.schwan-hero__copy { position: relative; z-index: 9; max-width: 600px; min-width: 0; }
.schwan-hero .schwan-hero__eyebrow { margin: 0 0 16px; color: #fff; font: 700 13px/1.5 'Open Sans', Arial, sans-serif; letter-spacing: .14em; text-transform: uppercase; }
.schwan-hero .schwan-hero__title { margin: 0 0 24px; color: #fff; max-width: 20ch; font: 400 clamp(48px, 4.2vw, 76px)/1.06 'bebas_neue_regularregular', Impact, 'Arial Narrow', sans-serif; letter-spacing: .01em; text-transform: none; overflow-wrap: normal; word-break: normal; }
.schwan-hero__slide--manufacturing .schwan-hero__title { max-width: none; }
.schwan-hero .schwan-hero__lead { margin: 0 0 28px; color: #fff; max-width: 43ch; font: 400 clamp(16px, 1.35vw, 19px)/1.65 'Open Sans', Arial, sans-serif; text-wrap: pretty; }
.schwan-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.schwan-hero .schwan-hero__action { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; min-width: 132px; width: auto; margin: 0; padding: 13px 24px; border: 1px solid #ca171f; border-radius: 5px; background: #ca171f; color: #fff; font: 700 15px/1.4 'Open Sans', Arial, sans-serif; text-align: center; text-decoration: none; cursor: pointer; }
.schwan-hero .schwan-hero__action--secondary { border-color: rgb(255 255 255 / .75); background: rgb(10 16 21 / .5); }
.schwan-hero .schwan-hero__action:hover { background: #a81119; color: #fff; border-color: #a81119; }
.schwan-hero .schwan-hero__action--secondary:hover { background: #fff; color: #181d21; border-color: #fff; }
.schwan-hero__controls { position: absolute; z-index: 10; left: var(--hero-gutter); right: calc(var(--hero-gutter) + 50px); bottom: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: nowrap; gap: 12px; height: 44px; min-height: 44px; margin: 0; padding: 0; border: 0; background: transparent; }
.schwan-hero__selection, .schwan-hero__arrows { display: flex; align-items: center; gap: 6px; margin: 0; padding: 0; }
.schwan-hero .schwan-hero__control { position: relative; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 44px; height: 44px; min-height: 44px; margin: 0; padding: 0; border: 1px solid #ffffff60; border-radius: 4px; background: rgb(10 16 21 / .7); color: #fff; font: 700 12px/1 'Open Sans', Arial, sans-serif; cursor: pointer; }
.schwan-hero .schwan-hero__motion { position: absolute; z-index: 11; right: var(--hero-gutter); bottom: 20px; }
.schwan-hero .schwan-hero__control[data-hero-select] { padding-bottom: 8px; border-color: transparent; background: transparent; }
.schwan-hero__control[data-hero-select]::after { content: ''; position: absolute; left: 9px; right: 9px; bottom: 5px; height: 3px; border-radius: 2px; background: rgb(255 255 255 / .45); }
.schwan-hero .schwan-hero__control[aria-current='true'] { background: transparent; color: #fff; }
.schwan-hero__control[aria-current='true']::after { left: 3px; right: 3px; background: #fff; }
.schwan-hero .schwan-hero__control:hover { border-color: #fff; }
.schwan-hero__control svg { display: block; width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; }
.schwan-hero .schwan-hero__count { margin: 0 10px 0 0; padding: 0; font: 400 12px/1.5 'Open Sans', Arial, sans-serif; color: #fff; letter-spacing: .1em; font-variant-numeric: tabular-nums; }
.schwan-hero__sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.schwan-hero a:focus-visible, .schwan-hero button:focus-visible { outline: 3px solid #fff; outline-offset: 3px; box-shadow: 0 0 0 5px #161b1f; }
.schwan-hero__mood { opacity: 0; }
.schwan-hero__mood[data-playing='true'] { opacity: 1; }
.schwan-hero__slide video.schwan-hero__mood { animation: none !important; transform: translateZ(0); will-change: auto !important; }
.schwan-hero__slide[data-mood-playing='true'] > img.schwan-hero__background { visibility: hidden; animation-play-state: paused !important; will-change: auto !important; }
.schwan-hero__fallback { margin: 0; padding: 20px var(--hero-gutter); font: 400 16px/1.5 'Open Sans', Arial, sans-serif; }
.schwan-hero__fallback a { color: #fff; text-decoration: underline; margin-right: 18px; }
@media (max-width: 1100px) {
    .schwan-hero { --hero-gutter: 32px; }
    .schwan-hero__copy { max-width: 58%; }
    .schwan-hero .schwan-hero__title { font-size: clamp(48px, 5.5vw, 64px); }
    .schwan-hero__person { width: 73%; right: -14%; }
    .schwan-hero__tools { width: 80%; right: -17%; }
}
@media (max-width: 767px) {
    .schwan-hero { --hero-gutter: 24px; }
    .schwan-hero__slide { align-items: start; min-height: 740px; min-height: max(740px, 100svh); padding: 104px var(--hero-gutter) 280px; }
    .schwan-hero__copy { max-width: none; width: 100%; }
    .schwan-hero .schwan-hero__eyebrow { font-size: 12px; margin-bottom: 14px; }
    .schwan-hero .schwan-hero__title { font-size: clamp(40px, 10.8vw, 58px); max-width: none; margin-bottom: 20px; }
    .schwan-hero .schwan-hero__lead { max-width: 40ch; font-size: 16px; line-height: 1.6; margin-bottom: 24px; }
    .schwan-hero__slide::after { background: linear-gradient(180deg, rgb(10 16 21 / .9), rgb(10 16 21 / .82) 48%, rgb(10 16 21 / .18) 77%, rgb(10 16 21 / .35)); }
    .schwan-hero__person { height: 330px; width: 440px; max-width: 115%; right: -38px; bottom: 35px; }
    .schwan-hero__tools-back { top: auto; left: 41%; bottom: 205px; width: 150px; }
    .schwan-hero__tools-mid { top: auto; left: 6%; bottom: 90px; width: 340px; }
    .schwan-hero__tools { width: 520px; max-width: none; right: -135px; bottom: 24px; }
    .schwan-hero__background { object-position: 64% center; }
    .schwan-hero__slide--trowel .schwan-hero__background { object-position: 62% center; }
    .schwan-hero__controls { bottom: 16px; }
    .schwan-hero .schwan-hero__motion { bottom: 16px; }
    .schwan-hero__selection { gap: 4px; }
    .schwan-hero .schwan-hero__action { padding: 12px 18px; font-size: 15px; min-height: 48px; }
}
@media (max-width: 639px) {
    .schwan-hero__arrows { display: none; }
    .schwan-hero__arrows [data-hero-prev], .schwan-hero__arrows [data-hero-next], .schwan-hero__count { display: none !important; }
    .schwan-hero__controls { justify-content: space-between; }
}
@media (max-width: 374px) {
    .schwan-hero { --hero-gutter: 16px; }
    .schwan-hero__actions { align-items: stretch; }
    .schwan-hero .schwan-hero__action { min-width: 0; flex: 1 1 100%; }
    .schwan-hero__selection { gap: 0; }
    .schwan-hero__controls { gap: 8px; }
}
@media (max-height: 600px) and (min-width: 768px) {
    .schwan-hero__slide { min-height: 560px; padding-top: 115px; padding-bottom: 100px; }
}
@media (prefers-reduced-motion: reduce) {
    .schwan-hero:not([data-motion-user='enabled']) .schwan-hero__depth { transform: none !important; }
    .schwan-hero:not([data-motion-user='enabled']) .schwan-hero__slide .schwan-hero__background { animation: none !important; }
    .schwan-hero *, .schwan-hero *::before, .schwan-hero *::after { transition: none !important; scroll-behavior: auto !important; }
}
