/* Gorilla Car Wash — frosted glass theme (matches the React version). Loaded after style.css. */
:root{--gcw-red:#d80000;--gcw-dark-red:#a80000;--gcw-cream:#f2e5d2;--gcw-mist:#f4f4f4;--gcw-ink:#151515;--gcw-muted:#5f5f5f;--gcw-line:rgba(21,21,21,.12)}
body{background:radial-gradient(circle at 7% 5%,rgba(216,0,0,.16) 0,transparent 28rem),radial-gradient(circle at 94% 43%,rgba(168,0,0,.10) 0,transparent 30rem),radial-gradient(circle at 44% 100%,rgba(242,229,210,.7) 0,transparent 25rem),var(--gcw-mist);background-attachment:fixed;color:var(--gcw-ink);font-family:"Inter",system-ui,sans-serif}
h1,h2,h3,h4,.display{font-family:"Barlow Condensed",system-ui,sans-serif;font-weight:800;text-transform:uppercase}
.glass{background:rgba(255,255,255,.68);backdrop-filter:blur(22px) saturate(135%);-webkit-backdrop-filter:blur(22px) saturate(135%);border:1px solid rgba(255,255,255,.65);box-shadow:0 20px 50px rgba(0,0,0,.08)}
.r-2xl{border-radius:1.25rem}.r-3xl{border-radius:1.5rem}
.eyebrow-red{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.2em;color:var(--gcw-red)}
.btn-hero{background:var(--gcw-red);color:#fff;border:0;border-radius:30px;font-weight:600;padding:.65rem 1.15rem;box-shadow:0 10px 24px rgba(216,0,0,.25);display:inline-flex;align-items:center;gap:.5rem;transition:all .2s ease;position:relative;overflow:hidden;text-transform:uppercase}
.btn-hero::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease}
.btn-hero:hover{background:var(--gcw-dark-red);color:#fff;transform:translateY(-2px);box-shadow:0 14px 32px rgba(216,0,0,.35)}
.btn-hero:hover::before{left:100%}
.btn-hero:active{transform:translateY(0);box-shadow:0 8px 20px rgba(216,0,0,.3)}
.btn-glass{background:var(--gcw-ink);border:1px solid var(--gcw-line);color:#fff;border-radius:30px;font-weight:600;padding:.65rem 1.15rem;backdrop-filter:blur(16px);display:inline-flex;align-items:center;gap:.5rem;text-transform:uppercase}
.btn-glass:hover{background:var(--gcw-cream);color:var(--gcw-ink)}
.btn-icon{width:2.6rem;height:2.6rem;padding:0;justify-content:center}
/* header */
.gx-header{position:sticky;top:0;z-index:1030;padding:.75rem .75rem 0}
.gx-nav{max-width:1280px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 1rem;border-radius:1rem}
.gx-brand{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--gcw-ink);min-width:0}
.gx-brand img{width:46px;height:46px;object-fit:contain}
.gx-brand b{display:block;font-family:"Barlow Condensed";font-size:1.25rem;font-weight:800;line-height:1}
.gx-brand small{display:block;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gcw-muted);margin-top:2px}
.gx-links{display:none;gap:.25rem}
.gx-links a{padding:.5rem .75rem;border-radius:.6rem;font-size:.9rem;font-weight:500;color:rgba(21,21,21,.7);text-decoration:none}
.gx-links a:hover{background:var(--gcw-cream);color:var(--gcw-ink)}
.gx-links a.active{color:var(--gcw-red);background:rgba(216,0,0,.08)}
.gx-actions{display:flex;align-items:center;gap:.5rem}
.gx-actions .gx-burger{background: var(--gcw-red);color: #fff}
.gx-cart{position:relative}
.gx-cart .cart-count{position:absolute;top:-6px;right:-6px;background:var(--gcw-red);color:#fff;border-radius:999px;font-size:.65rem;min-width:18px;height:18px;display:grid;place-items:center;padding:0 4px}
.gx-cart .cart-count.hidden{display:none}
.gx-book,.gx-hide-sm{display:none!important}
@media(min-width:576px){.gx-hide-sm{display:inline-flex!important}}
@media(min-width:992px){.gx-links{display:flex}.gx-book{display:inline-flex!important}.gx-burger{display:none!important}}
.gx-sheet{background:rgba(244,244,244,.96);backdrop-filter:blur(20px);width:90%!important;max-width:380px}
.gx-sheet .offcanvas-header{border-bottom:1px solid var(--gcw-line)}
.gx-sheet-link{display:block;padding:1rem .75rem;border-bottom:1px solid var(--gcw-line);font-family:"Barlow Condensed";font-size:1.6rem;font-weight:600;color:var(--gcw-ink);text-decoration:none}
.gx-sheet-link:hover{color:var(--gcw-red)}
/* home */
.gx-wrap{max-width:1280px;margin:0 auto;padding:1.5rem .75rem 4rem}
@media(min-width:576px){.gx-wrap{padding-left:1.5rem;padding-right:1.5rem}}
.gx-announcement{position:relative;display:flex;align-items:center;gap:.65rem;min-height:3.4rem;margin-bottom:1.25rem;padding:.65rem .8rem;border-radius:1rem;overflow:hidden;color:var(--gcw-ink); background: rgba(216,0,0,.08);}
.gx-announcement::after{content:'';position:absolute;inset:auto 0 0;height:2px;background:linear-gradient(90deg,var(--gcw-red),transparent 72%);opacity:.7}
.gx-announcement-icon{display:grid;flex:0 0 2rem;width:2rem;height:2rem;place-items:center;border-radius:.65rem;color:var(--gcw-red)}
.gx-announcement-label{flex:0 0 auto;color:var(--gcw-red);font-family:"Barlow Condensed",system-ui,sans-serif;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.gx-announcement-divider{width:1px;height:1.25rem;flex:0 0 auto;background:var(--gcw-line)}
.gx-announcement-track{position:relative;flex:1;min-width:0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 2rem,#000 calc(100% - 2rem),transparent);mask-image:linear-gradient(90deg,transparent,#000 2rem,#000 calc(100% - 2rem),transparent)}
.gx-announcement-marquee{--gx-ann-copies:2;--gx-ann-duration:15s;display:flex;width:max-content;animation:gxAnnouncementMarquee var(--gx-ann-duration) linear infinite}
.gx-announcement-marquee:hover{animation-play-state:paused}
.gx-announcement-group{display:flex;flex:0 0 auto;align-items:center}
.gx-announcement-item{display:flex;align-items:center;color:var(--gcw-muted);font-size:16px;line-height:1.5rem;white-space:nowrap}
.gx-announcement-item strong{color:var(--gcw-ink);font-weight:700;margin:0 .25rem}
.gx-announcement-bolt{display:inline-flex;flex:0 0 auto;align-items:center;margin:0 1.15rem;color:var(--gcw-red);opacity:.7}
@keyframes gxAnnouncementMarquee{from{transform:translateX(0)}to{transform:translateX(calc(-100% / var(--gx-ann-copies)))}}
@media(min-width:576px){.gx-announcement{padding:.7rem 1rem}.gx-announcement-item{font-size:14px}.gx-announcement-bolt{margin:0 1.4rem}}
@media(prefers-reduced-motion:reduce){.gx-announcement-marquee{animation:none}.gx-announcement-group[aria-hidden="true"]{display:none}.gx-announcement-track{overflow-x:auto;-webkit-mask-image:none;mask-image:none}}
.gx-hero-grid{display:grid;gap:1.25rem}
.gx-hero{position:relative;overflow:hidden;min-height:38rem;display:flex;flex-direction:column;justify-content:space-between;padding:2.5rem 1.75rem}
@media(min-width:576px){.gx-hero{padding:2.5rem}}
.gx-hero-mark{position:absolute;right:0;top:5rem;width:28rem;opacity:.09;pointer-events:none}
.gx-pill{display:inline-flex;border:1px solid rgba(216,0,0,.2);background:rgba(216,0,0,.08);color:var(--gcw-dark-red);border-radius:999px;padding:.25rem .8rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.15em}
.gx-hero h1{font-size:clamp(3.4rem,7vw,4.6rem);line-height:.88;margin:1.5rem 0 0}
.gx-hero h1 span{color:var(--gcw-red)}
.gx-hero p.lead{color:var(--gcw-muted);max-width:32rem;margin-top:1.25rem;font-size:14px; text-transform:uppercase}
.gx-hero p.lead b{font-weight:700}
.gx-stats{display:grid;grid-template-columns:repeat(3,1fr);margin-top:3rem}
.gx-stats>div+div{border-left:1px solid var(--gcw-line);padding-left:1.25rem}
.gx-stats b{display:block;font-family:"Barlow Condensed";font-size:1.9rem;font-weight:800}
.gx-stats small{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--gcw-muted)}
@media(max-width:495px){.gx-stats b{font-size:22px}.gx-stats small{font-size:1.30}}
.gx-features{display:grid;gap:1rem;margin-top:1.25rem}
@media(min-width:576px){.gx-features{grid-template-columns:repeat(3,1fr)}}
.gx-features article{padding:1.25rem}
.gx-features svg{color:var(--gcw-red)}
.gx-features h2{font-size:1.5rem;margin:1rem 0 .25rem;color:#fff}
.gx-features p{font-size:12px;color:#fed000;margin:0;text-transform:uppercase}
/* form */
.gx-form{padding:1.5rem}
@media(min-width:576px){.gx-form{padding:2rem}}
.gx-form h2{font-size:2rem;margin:0}
.gx-form .form-label{font-size:.85rem;font-weight:600;margin-bottom:.4rem;color:var(--gcw-ink)}
.gx-form .form-control,.gx-form .form-select{height:2.9rem;border-radius:.75rem;border:1.5px solid var(--gcw-line);background-color:rgba(255,255,255,.85);transition:all .2s ease;font-size:.95rem}
.gx-form input[type="number"]{-moz-appearance:textfield;appearance:textfield}
.gx-form input[type="number"]::-webkit-outer-spin-button,.gx-form input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}
.gx-form textarea.form-control{height:auto;padding:.75rem}
.gx-form .form-control:focus,.gx-form .form-select:focus{border-color:var(--gcw-red);box-shadow:0 0 0 .25rem rgba(216,0,0,.12);background-color:rgba(255,255,255,.95);transform:translateY(-1px)}
.gx-form .form-control::placeholder{color:rgba(95,95,95,.5)}
.gx-form .is-invalid{border-color:var(--gcw-red)!important;background-color:rgba(216,0,0,.04)}
.gx-form .invalid-feedback{font-size:.8rem;margin-top:.35rem}
/* service picker */
.gx-services{border:0;padding:0;margin:0;min-width:0}
.gx-services legend{float:none;width:auto;padding:0}
.gx-services.is-invalid{border:1.5px solid var(--gcw-red);border-radius:1rem;padding:.85rem;background-color:rgba(216,0,0,.04)}
.gx-services-hint{font-weight:500;font-size:.78rem;color:var(--gcw-muted)}
.gx-services-empty{padding:.85rem 1rem;border:1px dashed var(--gcw-line);border-radius:.75rem;background:rgba(255,255,255,.6);color:var(--gcw-muted);font-size:.88rem;line-height:1.55}
.gx-service-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:.7rem}
@media(max-width:495px){.gx-service-grid{grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));gap:.55rem}}
.gx-service-card{position:relative;display:flex;flex-direction:column;overflow:hidden;border:1.5px solid var(--gcw-line);border-radius:1rem;background:rgba(255,255,255,.85);cursor:pointer;transition:all .2s ease}
.gx-service-card:hover{border-color:rgba(216,0,0,.45);transform:translateY(-2px);box-shadow:0 10px 24px rgba(21,21,21,.08)}
.gx-service-card:has(.gx-service-input:checked){border-color:var(--gcw-red);box-shadow:0 8px 22px rgba(216,0,0,.18)}
.gx-service-card:focus-within{border-color:var(--gcw-red);box-shadow:0 0 0 .25rem rgba(216,0,0,.12)}
.gx-service-input{position:absolute;width:1px;height:1px;margin:0;padding:0;opacity:0;pointer-events:none}
.gx-service-card img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;background:var(--gcw-cream)}
.gx-service-body{display:flex;flex-direction:column;gap:.1rem;padding:.55rem .7rem .7rem}
.gx-service-name{font-size:.82rem;font-weight:600;line-height:1.25;color:var(--gcw-ink)}
.gx-service-price{font-family:"Barlow Condensed",system-ui,sans-serif;font-size:1.05rem;font-weight:700;line-height:1.1;color:var(--gcw-red)}
.gx-service-check{position:absolute;top:.45rem;right:.45rem;display:grid;width:1.5rem;height:1.5rem;place-items:center;border-radius:50%;background:var(--gcw-red);color:#fff;box-shadow:0 4px 10px rgba(216,0,0,.35);opacity:0;transform:scale(.6);transition:all .2s ease}
.gx-service-input:checked~.gx-service-check{opacity:1;transform:scale(1)}
.gx-services-total{margin:.85rem 0 0;font-size:.85rem;color:var(--gcw-muted)}
.gx-services-total strong{font-family:"Barlow Condensed",system-ui,sans-serif;font-size:1.15rem;font-weight:700;color:var(--gcw-ink)}
.gx-ref{display:inline-block;background:var(--gcw-ink);color:#fff;border-radius:.75rem;padding:.75rem 1.25rem;font-family:"Barlow Condensed";font-size:1.6rem;font-weight:700}
.gx-success{min-height:36rem;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem;animation:slideUp .5s ease-out}
@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.gx-success svg{animation:checkPop .6s ease-out .2s both}
@keyframes checkPop{0%{transform:scale(0);opacity:0}50%{transform:scale(1.1)}100%{transform:scale(1);opacity:1}}
.gx-section-glass{padding:1.5rem}
/* appointment page enhancements */
.gx-form{animation:fadeInUp .6s ease-out}
@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
.gx-form .row{position:relative}
.gx-form .col-sm-6:nth-child(odd){animation:slideInLeft .5s ease-out}
.gx-form .col-sm-6:nth-child(even){animation:slideInRight .5s ease-out}
@keyframes slideInLeft{from{opacity:0;transform:translateX(-15px)}to{opacity:1;transform:translateX(0)}}
@keyframes slideInRight{from{opacity:0;transform:translateX(15px)}to{opacity:1;transform:translateX(0)}}
/* restyle legacy blocks */
.site-footer{background:var(--gcw-ink)}
.card{background:rgba(255,255,255,.7);backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.65)!important;border-radius:1.25rem!important;box-shadow:0 14px 36px rgba(0,0,0,.06)}
.product-section .section-head h2{font-size:2.4rem}
/* 404 */
.gx-404-page{max-width:1280px;margin:0 auto;min-height:clamp(34rem,calc(100vh - 10rem),48rem);display:grid;place-items:center;padding:2rem .75rem 4rem}
.gx-404-card{position:relative;isolation:isolate;overflow:hidden;width:min(100%,72rem);min-height:34rem;display:grid;grid-template-columns:minmax(15rem,1fr) minmax(18rem,1.05fr);align-items:center;gap:clamp(1.5rem,5vw,5rem);padding:clamp(2rem,6vw,5rem);border:1px solid rgba(255,255,255,.72);border-radius:2rem;background:linear-gradient(135deg,rgba(255,255,255,.82),rgba(255,255,255,.48));backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%);box-shadow:0 28px 80px rgba(21,21,21,.11),inset 0 1px 0 rgba(255,255,255,.8);animation:gx404Reveal .65s ease-out both}
.gx-404-card::before{content:'';position:absolute;z-index:-1;width:24rem;height:24rem;left:-10rem;top:-12rem;border-radius:50%;background:rgba(216,0,0,.12);filter:blur(2px)}
.gx-404-card::after{content:'';position:absolute;z-index:-1;width:20rem;height:20rem;right:-9rem;bottom:-11rem;border-radius:50%;background:rgba(242,229,210,.78)}
.gx-404-art{position:relative;display:grid;place-items:center;min-height:20rem;color:var(--gcw-ink);transform:rotate(-7deg);animation:gx404Float 6s ease-in-out 1s infinite}
.gx-404-number{font-family:"Barlow Condensed",system-ui,sans-serif;font-size:clamp(9rem,23vw,18rem);font-weight:800;line-height:.72;letter-spacing:-.08em;color:transparent;background:linear-gradient(135deg,var(--gcw-ink) 8%,#444 52%,var(--gcw-red) 100%);-webkit-background-clip:text;background-clip:text;filter:drop-shadow(12px 18px 0 rgba(216,0,0,.08))}
.gx-404-slash{position:absolute;width:clamp(11rem,23vw,18rem);height:.65rem;border-radius:999px;background:var(--gcw-red);box-shadow:0 0 0 .5rem rgba(216,0,0,.08),0 10px 24px rgba(216,0,0,.28);transform:rotate(-48deg);animation:gx404Slash .65s cubic-bezier(.34,1.56,.64,1) .35s both}
.gx-404-copy{position:relative;z-index:1;max-width:28rem}
.gx-404-copy h1{font-size:clamp(3.4rem,7vw,5.8rem);line-height:.86;letter-spacing:-.025em;margin:.75rem 0 1.35rem}
.gx-404-copy h1 span{color:var(--gcw-red)}
.gx-404-message{max-width:25rem;margin:0;color:var(--gcw-muted);font-size:1rem;line-height:1.7}
.gx-404-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:2rem}
.gx-404-actions .btn-hero,.gx-404-actions .btn-glass{min-height:3rem;text-decoration:none}
.gx-404-actions .btn-glass{border-color:rgba(21,21,21,.14);padding:.65rem 1.15rem}
.gx-404-route{position:absolute;right:clamp(1.5rem,5vw,4rem);bottom:1.35rem;display:flex;align-items:center;gap:.4rem;opacity:.52}
.gx-404-route::before{content:'';width:2.5rem;height:1px;background:var(--gcw-red)}
.gx-404-route span{display:block;width:.35rem;height:.35rem;border-radius:50%;background:var(--gcw-red)}
.gx-404-route span:nth-child(2n){transform:translateY(-.4rem)}
.gx-404-orbit{position:absolute;border:1px solid rgba(216,0,0,.18);border-radius:50%;pointer-events:none}
.gx-404-orbit-one{width:16rem;height:16rem;left:20%;top:-11rem}
.gx-404-orbit-two{width:8rem;height:8rem;right:11%;top:12%;border-color:rgba(21,21,21,.1)}
@keyframes gx404Reveal{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes gx404Float{0%,100%{transform:rotate(-7deg) translateY(0)}50%{transform:rotate(-5deg) translateY(-8px)}}
@keyframes gx404Slash{from{opacity:0;transform:rotate(-48deg) scaleX(0)}to{opacity:1;transform:rotate(-48deg) scaleX(1)}}
@media(max-width:767.98px){.gx-404-page{min-height:0;padding:1.5rem .75rem 3rem}.gx-404-card{grid-template-columns:1fr;gap:0;min-height:0;padding:2rem 1.35rem 4.25rem;border-radius:1.5rem}.gx-404-art{min-height:13rem;margin:-.4rem 0 .7rem}.gx-404-number{font-size:clamp(9rem,43vw,14rem)}.gx-404-slash{width:clamp(10rem,45vw,15rem)}.gx-404-copy{text-align:center;margin:0 auto}.gx-404-copy h1{font-size:clamp(3.5rem,15vw,5rem)}.gx-404-message{margin-inline:auto}.gx-404-actions{justify-content:center}.gx-404-actions .btn-hero,.gx-404-actions .btn-glass{flex:1 1 12rem;justify-content:center}.gx-404-route{right:50%;transform:translateX(50%)}}
@media(prefers-reduced-motion:reduce){.gx-404-card,.gx-404-art,.gx-404-slash{animation:none}}

/* Bootstrap row gutters only space rows from each other, so the final row ends
   flush against the section padding. Match it with bottom space on the grid. */
#product-grid{padding-bottom:1rem}
@media(min-width:768px){#product-grid{padding-bottom:1.5rem}}

/* Home banner slider.
   Slick comes from a CDN and slick-theme.css is not loaded at all, so the arrows
   and dots below are drawn entirely from scratch. slick.css also arrives after
   this file, which is why every override carries two classes. */
.gx-banner-slider{--gx-banner-delay:5500ms;position:relative;isolation:isolate;overflow:hidden;margin-bottom:1.25rem;border-radius:1.5rem;border:1px solid rgba(255,255,255,.7);background:var(--gcw-ink);box-shadow:0 24px 60px rgba(21,21,21,.16)}

/* The three banners are 1.60–1.78 wide. Pinning the frame at 1.70 leaves the
   worst of them about 6% cropped, which keeps the corner artwork in shot, and
   cover turns that into a crop rather than a squash. Fade mode needs a definite
   height from the top: slick floats the slides and gives each one height:100%,
   so an explicit .slick-list height is what lets the whole chain resolve. */
.gx-banner-slider-inner .slick-list{aspect-ratio:17/10}
.gx-banner-slider-inner .slick-track{height:100%}
.gx-banner-slider-inner .slick-slide>a{display:block;height:100%}
/* A banner whose link column is empty renders no anchor, so the same sizing is
   applied to the slide itself as well. */
.gx-banner-slider-inner .slick-slide>img{display:block;height:100%}
.gx-banner-slider-inner .slick-slide img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.gx-banner-slider .slick-current img{transform:scale(1.035)}
.gx-banner-slider .slick-slide a:focus-visible{outline:2px solid #fff;outline-offset:-4px}

/* Legibility scrim for the dots, counter and arrows sitting on the artwork.
   Slick writes inline z-index 998–1000 onto every .slick-slide, and .slick-list
   and .slick-track are position:relative with z-index:auto, so they never open a
   stacking context — the slides compete with these overlays directly inside the
   isolated section. Every overlay below therefore has to outrank 1000. */
.gx-banner-slider::after{content:'';position:absolute;inset:auto 0 0;height:44%;z-index:1001;pointer-events:none;background:linear-gradient(to top,rgba(21,21,21,.62),rgba(21,21,21,.18) 46%,transparent)}

/* Autoplay rail. JS adds is-playing on every slide change and sets
   --gx-banner-delay to the real autoplay speed, so the bar and the timer can
   never drift apart. It stays empty when the class is absent. */
.gx-banner-slider-rail{position:absolute;left:0;right:0;bottom:0;height:3px;z-index:1003;background:rgba(255,255,255,.16)}
.gx-banner-slider-rail::after{content:'';display:block;height:100%;background:linear-gradient(90deg,var(--gcw-red),#ff5a3c);transform:scaleX(0);transform-origin:left center}
.gx-banner-slider.is-playing .gx-banner-slider-rail::after{animation:gxBannerRail var(--gx-banner-delay) linear forwards}
.gx-banner-slider.is-paused .gx-banner-slider-rail::after{animation-play-state:paused}
@keyframes gxBannerRail{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Arrows stay out of the way and fade in on hover or keyboard focus. */
.gx-banner-slider .slick-arrow{position:absolute;top:50%;z-index:1010;display:grid;place-items:center;width:3rem;height:3rem;padding:0;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:rgba(21,21,21,.42);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#fff;cursor:pointer;opacity:0;transform:translateY(-50%);transition:opacity .3s ease,background .25s ease,transform .25s ease}
.gx-banner-slider .slick-arrow::before{content:'';width:.6rem;height:.6rem;border-top:2px solid currentColor;border-right:2px solid currentColor}
.gx-banner-slider .slick-prev{left:1.1rem}
.gx-banner-slider .slick-next{right:1.1rem}
.gx-banner-slider .slick-prev::before{transform:rotate(-135deg);margin-left:3px}
.gx-banner-slider .slick-next::before{transform:rotate(45deg);margin-right:3px}
.gx-banner-slider:hover .slick-arrow,.gx-banner-slider .slick-arrow:focus-visible{opacity:1}
.gx-banner-slider .slick-arrow:hover{background:var(--gcw-red);border-color:var(--gcw-red);transform:translateY(-50%) scale(1.06)}
.gx-banner-slider .slick-arrow:focus-visible{outline:2px solid #fff;outline-offset:3px}
.gx-banner-slider .slick-disabled{cursor:default;opacity:.25}
/* No hover on touch, so a fade-in arrow would never appear there. */
@media(hover:none){.gx-banner-slider .slick-arrow{opacity:1}}

.gx-banner-slider .slick-dots{position:absolute;left:0;right:0;bottom:1.15rem;z-index:1004;display:flex;align-items:center;justify-content:center;gap:.45rem;margin:0;padding:0;list-style:none}
.gx-banner-slider .slick-dots li{margin:0;line-height:0}
.gx-banner-slider .slick-dots button{display:block;width:.6rem;height:.6rem;padding:0;border:0;border-radius:999px;background:rgba(255,255,255,.5);box-shadow:0 1px 5px rgba(0,0,0,.35);cursor:pointer;transition:width .3s ease,background .3s ease;font-size:0;color:transparent}
.gx-banner-slider .slick-dots li.slick-active button{width:1.7rem;background:var(--gcw-red)}
.gx-banner-slider .slick-dots button:hover{background:#fff}
.gx-banner-slider .slick-dots button:focus-visible{outline:2px solid #fff;outline-offset:2px}

/* Slick missing: show the first banner as a plain image so the section never
   stacks three banners tall. .gx-banner-fallback from the JS is the same state. */
.gx-banner-slider-inner:not(.slick-initialized)>div:not(:first-child){display:none}
.gx-banner-slider-inner:not(.slick-initialized)>div:first-child a{display:block}
.gx-banner-slider-inner:not(.slick-initialized)>div:first-child img{display:block;width:100%;aspect-ratio:17/10;object-fit:cover}

@media(max-width:575.98px){
  .gx-banner-slider .slick-arrow{width:2.5rem;height:2.5rem}
  .gx-banner-slider .slick-prev{left:.6rem}
  .gx-banner-slider .slick-next{right:.6rem}
  .gx-banner-slider .slick-dots{bottom:.85rem;gap:.35rem}
}
/* Autoplay now runs regardless of this preference, so the rail is kept: it is the
   only cue that a slide change is coming. Only the decorative motion is dropped. */
@media(prefers-reduced-motion:reduce){
  .gx-banner-slider-inner .slick-slide img{transition:none}
  .gx-banner-slider .slick-current img{transform:none}
  .gx-banner-slider .slick-arrow{transition:none}
}

/* At 768px .service-band-inner becomes a flex row (style.css:1464), which shrinks
   this button to its min-content width — narrow enough that "Book via WhatsApp"
   wraps after "via". A flex item's automatic minimum size is its min-content, and
   min-content is the longest word, so the button collapses to "WhatsApp" and then
   breaks. nowrap makes min-content the whole label, so the button stops shrinking
   past it; the row still fits inside .service-band-inner's 1200px, and below 768px
   the band is not flex, so a 20rem button cannot overflow. */
.service-band-cta{white-space:nowrap}
