/* Home banner: photos flow into each other, the text is revealed line by line. */
body.home{overflow-x:clip}
/* The project photos block sits on the page background, without the blue band. */
body.home .rwc-projects-section{background:transparent!important}
.rwc-banner{--rwc-banner-red:var(--wp--preset--color--rockwalls-accent,#c4262e);--rwc-banner-blue:var(--wp--preset--color--rockwalls-blue,#3f5da3);--rwc-banner-time:7s;position:relative;width:100vw;margin:0 calc(50% - 50vw) clamp(28px,4vw,56px);height:clamp(380px,31.25vw,600px);overflow:hidden;background:var(--wp--preset--color--rockwalls-ink,#263453);color:#fff;isolation:isolate;touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none}
.rwc-banner-track,.rwc-banner-slide{position:absolute;inset:0}
.rwc-banner-slide{z-index:0;opacity:0;visibility:hidden;transition:opacity 1.4s cubic-bezier(.45,0,.2,1),visibility 0s 1.4s}
.rwc-banner-slide.is-leaving{z-index:1;opacity:1;visibility:visible;transition:none}
.rwc-banner-slide.is-active{z-index:2;opacity:1;visibility:visible;transition:opacity 1.4s cubic-bezier(.45,0,.2,1),visibility 0s}
.rwc-banner-slide:not(:has(.rwc-banner-photo)){background:linear-gradient(120deg,var(--wp--preset--color--rockwalls-ink,#263453),var(--wp--preset--color--rockwalls-blue,#3f5da3))}
.rwc-banner-photo{position:absolute;inset:0;width:100%!important;height:100%!important;max-width:none!important;object-fit:cover;object-position:50% 50%;transform-origin:62% 45%;transform:scale3d(1.16,1.16,1) rotate(.01deg);will-change:transform;backface-visibility:hidden;-webkit-user-drag:none}
/* The motion: 1.16 → 1.02 in 9.4 s with a soft stop. The animation itself runs 60 s and only holds the
   final size after 9.4 s, so it never ends on screen (ending made the browser redraw the photo — a jump),
   even when the slide is held under the mouse. The zoom is never paused. The tiny rotation stops the
   browser from snapping the slowly growing photo to whole pixels, which made it shake at the slow end. */
.rwc-banner-slide:is(.is-active,.is-leaving) .rwc-banner-photo{animation:rwc-banner-zoom 60s linear both}
@keyframes rwc-banner-zoom{0%{transform:scale3d(1.16,1.16,1) rotate(.01deg);animation-timing-function:cubic-bezier(.2,.6,.35,1)}15.667%{transform:scale3d(1.02,1.02,1) rotate(.01deg)}100%{transform:scale3d(1.02,1.02,1) rotate(.01deg)}}
.rwc-banner-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(18,26,46,.78) 0%,rgba(18,26,46,.5) 38%,rgba(18,26,46,.08) 72%),linear-gradient(0deg,rgba(18,26,46,.45),transparent 38%)}
/* Keep clear of the 52-px arrows on both sides. */
.rwc-banner-content{position:absolute;z-index:1;left:max(80px,calc((100vw - 1200px)/2));top:50%;width:min(620px,calc(100vw - 170px));transform:translateY(-50%)}
.rwc-banner-mask{overflow:hidden;padding-bottom:.06em}
.rwc-banner-title{margin:0!important;font:700 clamp(34px,4.4vw,62px)/1.04 Roboto,Arial,sans-serif!important;letter-spacing:.01em;text-transform:uppercase;color:#fff!important;text-shadow:0 2px 18px rgba(0,0,0,.25);text-wrap:balance}
.rwc-banner-line{display:block;width:min(360px,70%);height:4px;margin:22px 0 20px;background:var(--rwc-banner-red);transform-origin:0 50%}
.rwc-banner-text{max-width:520px;margin:0 0 30px!important;font:500 clamp(17px,1.45vw,22px)/1.4 Roboto,Arial,sans-serif!important;color:rgba(255,255,255,.94)!important;text-wrap:pretty}
.rwc-banner-button{display:inline-flex;align-items:center;min-height:50px;padding:0 30px;border-radius:4px;background:var(--rwc-banner-blue);color:#fff!important;font:500 17px/1 Roboto,Arial,sans-serif;text-decoration:none!important;box-shadow:0 10px 26px rgba(10,20,45,.3);transition:background-color .2s,transform .2s}
.rwc-banner-button:hover{background:var(--wp--preset--color--rockwalls-blue-dark,#354f91);transform:translateY(-2px)}
.rwc-banner-button:focus-visible,.rwc-banner-arrow:focus-visible,.rwc-banner-dots button:focus-visible{outline:3px solid #fff;outline-offset:3px}
/* Staggered entrance of the active slide; the leaving slide fades its text out first. */
.rwc-banner-slide .rwc-banner-title{transform:translateY(105%)}
.rwc-banner-slide .rwc-banner-line{transform:scaleX(0)}
.rwc-banner-slide :is(.rwc-banner-text,.rwc-banner-button){opacity:0;transform:translateY(22px)}
.rwc-banner-slide.is-active .rwc-banner-title{transform:none;transition:transform .9s cubic-bezier(.2,.8,.2,1) .55s}
.rwc-banner-slide.is-active .rwc-banner-line{transform:none;transition:transform .8s cubic-bezier(.65,0,.25,1) .95s}
.rwc-banner-slide.is-active .rwc-banner-text{opacity:1;transform:none;transition:opacity .7s ease 1.2s,transform .8s cubic-bezier(.2,.8,.2,1) 1.2s}
.rwc-banner-slide.is-active .rwc-banner-button{opacity:1;transform:none;transition:opacity .7s ease 1.4s,transform .8s cubic-bezier(.2,.8,.2,1) 1.4s,background-color .2s}
.rwc-banner-slide.is-leaving :is(.rwc-banner-title,.rwc-banner-line,.rwc-banner-text,.rwc-banner-button){opacity:1;transform:none;transition:none}
.rwc-banner-slide.is-leaving .rwc-banner-content{opacity:0;transform:translateY(calc(-50% - 16px));transition:opacity .45s ease,transform .45s ease}
.rwc-banner.is-booting .rwc-banner-slide.is-active .rwc-banner-title{transform:translateY(105%);transition:none}
.rwc-banner.is-booting .rwc-banner-slide.is-active .rwc-banner-line{transform:scaleX(0);transition:none}
.rwc-banner.is-booting .rwc-banner-slide.is-active :is(.rwc-banner-text,.rwc-banner-button){opacity:0;transform:translateY(22px);transition:none}
.rwc-banner.is-first .rwc-banner-slide.is-active .rwc-banner-title{transition-delay:.15s}
.rwc-banner.is-first .rwc-banner-slide.is-active .rwc-banner-line{transition-delay:.5s}
.rwc-banner.is-first .rwc-banner-slide.is-active .rwc-banner-text{transition-delay:.7s,.7s}
.rwc-banner.is-first .rwc-banner-slide.is-active .rwc-banner-button{transition-delay:.85s,.85s,0s}
/* Light chevrons without a plate; the shadow keeps them visible on light photos too. */
.rwc-banner-arrow{position:absolute;z-index:3;top:50%;display:grid;place-items:center;width:48px;height:48px;margin-top:-24px;padding:0;border:0;border-radius:50%;background:transparent;color:rgba(255,255,255,.9);cursor:pointer;filter:drop-shadow(0 1px 3px rgba(0,0,0,.45));transition:background-color .2s,color .2s}
.rwc-banner-arrow svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s}
.rwc-banner-arrow.is-prev{left:16px}.rwc-banner-arrow.is-next{right:16px}.rwc-banner-arrow.is-next svg{transform:scaleX(-1)}
.rwc-banner-arrow:hover{background:rgba(20,28,48,.28);color:#fff}.rwc-banner-arrow.is-prev:hover svg{transform:translateX(-2px)}.rwc-banner-arrow.is-next:hover svg{transform:scaleX(-1) translateX(-2px)}
.rwc-banner-dots{position:absolute;z-index:3;left:50%;bottom:26px;display:flex;gap:10px;transform:translateX(-50%)}
.rwc-banner-dots button{width:14px;height:14px;padding:0;border:2px solid #fff;border-radius:50%;background:transparent;cursor:pointer;transition:background-color .3s,transform .3s}
.rwc-banner-dots button[aria-current="true"]{background:#fff;transform:scale(1.15)}
.rwc-banner-progress{position:absolute;z-index:3;left:0;right:0;bottom:0;height:4px;background:rgba(255,255,255,.18)}
.rwc-banner-progress span{display:block;width:100%;height:100%;background:var(--rwc-banner-red);transform:scaleX(0);transform-origin:0 50%}
.rwc-banner-progress span.is-running{animation:rwc-banner-progress var(--rwc-banner-time) linear forwards}
.rwc-banner.is-paused .rwc-banner-progress span{animation-play-state:paused}
@keyframes rwc-banner-progress{to{transform:scaleX(1)}}
@media(max-width:780px){
 .rwc-banner{height:min(560px,calc(100svh - 120px));min-height:440px;margin-bottom:28px}
 .rwc-banner-shade{background:linear-gradient(0deg,rgba(18,26,46,.88) 0%,rgba(18,26,46,.55) 45%,rgba(18,26,46,.1) 80%)}
 .rwc-banner-content{left:20px;right:20px;top:auto;bottom:62px;width:auto;transform:none}
 .rwc-banner-slide.is-leaving .rwc-banner-content{transform:translateY(-16px)}
 .rwc-banner-title{font-size:clamp(28px,8.4vw,40px)!important}
 .rwc-banner-line{margin:16px 0 14px;height:3px}
 .rwc-banner-text{margin-bottom:22px!important;font-size:16px!important}
 .rwc-banner-button{min-height:48px;padding:0 24px;font-size:16px}
 .rwc-banner-arrow{display:none}
 .rwc-banner-dots{bottom:22px}
}
@media(prefers-reduced-motion:reduce){
 .rwc-banner-slide,.rwc-banner-slide.is-active{transition:opacity .3s,visibility 0s}
 .rwc-banner-slide:is(.is-active,.is-leaving) .rwc-banner-photo{animation:none}
 .rwc-banner-slide.is-active :is(.rwc-banner-title,.rwc-banner-line,.rwc-banner-text,.rwc-banner-button){transition:none}
 .rwc-banner-progress{display:none}
}
