/*!
 * Splash — WordPress additions to the design: the cart, icons in place of the
 * design's emoji, the mobile menu, inner pages, and the booking platform's pages.
 */

/* ---------- accessibility ---------- */
.skip{position:absolute;left:-9999px;top:0}
.skip:focus{left:16px;top:16px;z-index:999;padding:.7em 1.2em;background:var(--deep);color:#fff;border-radius:12px;font-weight:700}
.menu a:focus-visible,.btn:focus-visible,.acols a:focus-visible,.faqlist summary:focus-visible,.navcart:focus-visible,.burger:focus-visible,.fld input:focus-visible,.fld select:focus-visible{outline:3px solid var(--aqua);outline-offset:2px}

/* ---------- icons where the design used emoji ---------- */
.topbar .ic{width:14px;height:14px;vertical-align:-2px;color:var(--sun)}
.topbar a{color:inherit;text-decoration:none}
.hbadge .ic{width:15px;height:15px}
.ti .ic{color:var(--aqua-d);background:var(--aqua-l)}
.ti:nth-child(2) .ic{color:var(--green);background:var(--green-l)}
.ti:nth-child(3) .ic{color:var(--coral);background:var(--coral-l)}
.ti:nth-child(4) .ic{color:#b98500;background:var(--sun-l)}
.ti .ic svg{width:24px;height:24px}
.klabel .ic{width:14px;height:14px}
.ebd .ic{color:#fff}
.ebd .ic svg{width:22px;height:22px}
.acols a i .ic{width:15px;height:15px;vertical-align:-2px}
.fcol .ic{width:15px;height:15px;vertical-align:-2px}
.nav-phone .ic,.b-ghost .ic{width:16px;height:16px}

/* ---------- header ---------- */
.has-mega.is-closed .mega{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
.navcart{position:relative;width:46px;height:46px;border-radius:14px;border:1px solid var(--line);background:#fff;color:var(--ink);display:grid;place-items:center;cursor:pointer;flex:none;transition:.2s}
.navcart:hover{border-color:var(--aqua);color:var(--aqua-d)}
.navcart .ic{width:20px;height:20px}
.navcart b{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:99px;background:var(--coral);color:#fff;font-size:11px;line-height:20px;text-align:center;transform:scale(0);transition:transform .25s ease}
.navcart b.has{transform:scale(1)}
.mcat{text-decoration:none;color:inherit}
@media(max-width:1180px){.nav-phone{display:none}}
@media(max-width:900px){
  .menu.open{display:flex}
  .nav-book{display:none}
}

/* ---------- home ---------- */
.bookcard .btn{width:100%;border:0;cursor:pointer;font:inherit;font-weight:700}
.bcnote a{color:inherit;text-decoration:none}
.pbd h3 a{color:inherit;text-decoration:none}
.pbd h3 a:hover{color:var(--aqua-d)}
.price-call{font-size:19px}
.about-title{margin-bottom:18px}
@media(min-width:621px){.cta{padding-top:120px}}
.cta .b-ghost:hover .ic{color:var(--aqua-d)}

/* ---------- footer ---------- */
.fsoc a .ic{width:17px;height:17px}
.flinks ul{list-style:none;display:flex;flex-wrap:wrap;gap:18px;margin:0;padding:0}
.fcol ul a{text-decoration:none}

/* =====================================================================
   Inner pages, blog and the booking platform's pages
   ===================================================================== */
.pagehead{position:relative;background:linear-gradient(120deg,var(--deep),var(--deep2));color:#fff;padding:clamp(40px,6vw,76px) 0 clamp(34px,5vw,60px);overflow:hidden}
.pagehead .klabel{background:rgba(255,255,255,.14);color:#fff}
.pagehead--io{padding:16px 0 6px;background:transparent;color:var(--ink)}
.pagehead__title{font-size:clamp(2rem,4.6vw,3.1rem);font-weight:800;line-height:1.1;margin:.3em 0 .15em;color:inherit}
.pagehead p{max-width:60ch;opacity:.85;margin:.4em 0 0}
.pagehead__btns{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0!important}
.pagehead .b-out{background:transparent;color:#fff;border-color:rgba(255,255,255,.55)}
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4em;font-size:13px;font-weight:600;opacity:.9}
.crumbs li+li::before{content:"›";margin-right:.4em;opacity:.6}
.crumbs a{color:inherit;text-decoration:none}
.pagehead--io .crumbs a{color:var(--aqua-d)}
.crumbs a:hover{text-decoration:underline}
.pagebody{padding-block:clamp(28px,4vw,54px) clamp(54px,6vw,90px)}
.pagebody--wide{padding:0}
.prt-page .entry-content{font-size:16px;color:var(--body)}
.prt-page .entry-content>*+*{margin-top:1em}
.prt-page .entry-content h2,.prt-page .entry-content h3{color:var(--ink);font-weight:800;margin:1.5em 0 .5em;line-height:1.2}
.prt-page .entry-content a{color:var(--aqua-d)}
.prt-page .entry-content img{border-radius:var(--rs);height:auto}
.search-form{display:flex;gap:8px;max-width:460px}
.search-form label{flex:1}
.search-form .search-field{width:100%;padding:13px 18px;border:1px solid var(--line);border-radius:14px;font:inherit}
.search-form .search-submit{border:0;border-radius:14px;padding:13px 22px;background:var(--coral);color:#fff;font:inherit;font-weight:700;cursor:pointer}
.comments{margin-top:48px}

/* The platform's pages: full width for their own grids. */
.prt-io-page .pagebody{padding-top:6px}
.prt-io-page .prt-io .elementor-section-boxed>.elementor-container{max-width:var(--max)}

/* Four hero stats on one row on wide screens, two per row on phones. */
.hstats{display:grid!important;grid-template-columns:repeat(4,auto);justify-content:start;column-gap:30px;row-gap:16px}
.hstat b{white-space:nowrap}
.hstat span{white-space:normal;display:block;line-height:1.35;max-width:15ch}
@media(max-width:900px){.hstats{grid-template-columns:repeat(2,minmax(0,1fr))}.hstat span{max-width:none}}

/* The header stays on one line from the burger breakpoint up. */
@media (min-width:901px) and (max-width:1120px){
  .lname small{display:none}
  .lname{font-size:16px}
  .bar{gap:10px}
  .menu>li>a{padding:9px 8px;font-size:13.5px}
  .navcta .btn{padding:12px 16px}
}

/* Readable on the dark footer (the design sets it in ink). */
.fband h2.ft-h{color:#fff}
/* The page head fades its text, not its buttons. */
.pagehead p.pagehead__btns{opacity:1}
@media(max-width:400px){.navcta{gap:6px}.navcart{width:40px;height:40px}.lname small{display:none}}
/* Tablets: favourites stay three across (nine cards, no orphan), stats two by two,
   step photos one height. */
@media(min-width:700px) and (max-width:1080px){.prods{grid-template-columns:repeat(3,1fr)}}
@media(min-width:901px) and (max-width:1180px){.hstats{grid-template-columns:repeat(2,auto)}}

.has-mega.is-open .mega{opacity:1;visibility:visible;transform:none}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media(max-width:380px){.logo{min-width:0;flex:1 1 auto}.lname{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.mark{width:38px;height:38px;flex:none}.burger{padding:9px 11px}}
/* A focus ring that shows on white as well as on the aqua bands. */
:focus-visible{outline:3px solid var(--deep);outline-offset:2px}
.hero :focus-visible,.aboutband :focus-visible,footer :focus-visible,.topbar :focus-visible,.cta :focus-visible{outline-color:#fff}

html{scroll-padding-top:96px}
/* A long business name wraps to two lines and gives way, never pushing the buttons off. */
header .logo{flex:0 1 auto;min-width:0}
header .lname{white-space:normal;max-width:240px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
header .lname small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- rounds 23/25 ---------- */
.menu-cta{display:none}
@media(max-width:900px){
  .menu-cta{display:flex;flex-wrap:wrap;gap:10px;padding:14px 14px 4px}
  .menu-cta .btn{flex:1 1 140px;justify-content:center}
  .menu .mega{padding-left:14px}
}
.rev{display:flex;flex-direction:column}
.rev>p{flex:1}
.single-post .pagehead .wrap{max-width:800px}

@media(max-width:900px){.cat .ph{aspect-ratio:16/10;height:auto;min-height:0}.cat .ph img{width:100%;height:100%;object-fit:cover}}
@media(min-width:901px){.cats{grid-auto-rows:1fr}}
.aboutband .inner{padding:24px 0}
.prt-page .entry-content{font-weight:400}
.fwave{transform:none}

/* round 29 */
.is-closed > .mega, .is-closed .mega { transition: none !important; visibility: hidden !important; opacity: 0 !important; pointer-events: none !important; }
.lname small{color:#04707f}
.lname{white-space:normal}
/* ---------- rounds 34/35 ---------- */
@media (max-width:900px){
  .menu>li.menu-cta>a{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 18px;width:auto;height:auto;border-radius:999px}
  .menu-cta .ic,.menu-cta svg{width:18px;height:18px;flex:none}
  .menu{max-height:calc(100svh - 200px);overflow-y:auto}
  .menu .mcat{display:flex;align-items:center;min-height:44px}
}

/* =====================================================================
   Page sections (parts/section-*.php): the home page and the inner pages
   built from them in Elementor, where they are not direct children of
   <main>, so their spacing is set here.
   ===================================================================== */
.spsec{padding:88px 0}
.spsec--tight{padding:60px 0}
.shead--left{text-align:left;margin:0 0 30px;max-width:none}
.hero :focus-visible,.pghd :focus-visible,.spticker :focus-visible{outline-color:#fff}

/* hero: without the date card, the copy keeps a readable width */
.hgrid--solo{grid-template-columns:minmax(0,760px)}
.trustbox--1{grid-template-columns:1fr}
.trustbox--2{grid-template-columns:1fr 1fr}
.trustbox--3{grid-template-columns:repeat(3,1fr)}

/* events: any number of photos keeps the bento rhythm */
.evts{grid-auto-rows:200px}
@media(min-width:901px){
  .evts--1{grid-template-columns:1fr;grid-template-rows:340px}
  .evts--1 .evt:first-child{grid-column:auto;grid-row:auto}
  .evts--2{grid-template-columns:1.4fr 1fr;grid-template-rows:340px}
  .evts--2 .evt:first-child{grid-column:auto;grid-row:auto}
  .evts--3{grid-template-columns:2fr 1fr}
  .evts--3 .evt:first-child{grid-column:auto}
  .evts--4 .evt:last-child{grid-column:span 2}
}
@media(max-width:900px){.evts{grid-auto-rows:auto}}

/* about: light version, straight after an inner page's header band */
.aboutband--light{background:transparent}
.aboutband--light.alt{background:rgba(234,247,250,.8)}
.aboutband--light h2{color:var(--ink)}
.aboutband--light .klabel{background:var(--aqua-l);color:var(--aqua-d)}
.aboutband--light p{color:var(--body)}
.aboutband--light .ticks li{color:var(--ink);font-weight:500}
.aboutband--light .ticks i{background:var(--green-l);color:var(--green)}
.aboutband--light .guar{background:#fff;border:1px solid var(--line);border-left:5px solid var(--sun);box-shadow:var(--sh)}
.aboutband--light .guar h3{color:#B98500}
.aboutband--light .astack .ph{border-color:#fff;box-shadow:0 14px 34px rgba(10,58,74,.14)}
.aboutband--light :focus-visible{outline-color:var(--deep)}
.aboutband--nophoto .inner{grid-template-columns:1fr;max-width:820px;margin:0 auto}
.astack--1{grid-template-columns:1fr}
.astack--1 .as1{grid-row:auto;min-height:420px}
.astack--2 .as2{grid-row:span 2;height:100%;min-height:380px}

/* reviews: four or more cards wrap into centred rows of three */
.revs--flex{display:flex;flex-wrap:wrap;justify-content:center}
.revs--flex .rev{flex:0 1 calc((100% - 48px) / 3)}
.rev:nth-child(3n+5){border-top-color:var(--coral)}
.rev:nth-child(3n+6){border-top-color:var(--green)}
@media(max-width:900px){.revs--flex .rev{flex-basis:100%}}

/* service area: a town without a link */
.acols span{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 18px;font-size:14.5px;
  font-weight:600;color:var(--ink);display:flex;align-items:center;gap:10px;box-shadow:0 3px 10px rgba(10,58,74,.05)}
.acols span i{font-style:normal;color:var(--aqua);font-size:13px}
.acols span i .ic{width:15px;height:15px;vertical-align:-2px}

/* FAQ: the design styles #faq; a second list on the same page looks the same */
.spfaq details{background:#fff;border:1px solid var(--line);border-radius:var(--rs);margin-bottom:13px;transition:.28s;overflow:hidden}
.spfaq details[open]{border-color:var(--aqua);box-shadow:0 12px 28px rgba(16,181,206,.14)}
.spfaq summary{padding:20px 24px;cursor:pointer;font-weight:600;font-size:16px;color:var(--ink);list-style:none;
  display:flex;justify-content:space-between;gap:18px;align-items:center}
.spfaq summary::-webkit-details-marker{display:none}
.spfaq summary::after{content:'+';width:30px;height:30px;flex:none;border-radius:10px;background:var(--aqua-l);color:var(--aqua-d);
  display:grid;place-items:center;font-size:19px;font-weight:600;line-height:1;transition:.25s}
.spfaq details[open] summary::after{transform:rotate(45deg);background:var(--aqua);color:#fff}
.spfaq details p{padding:0 24px 22px;font-size:14.8px;font-weight:300}
.spfaq summary:focus-visible{outline:3px solid var(--aqua);outline-offset:2px}

/* ---------- page header: the hero's language for inner pages ---------- */
.pghd{position:relative;overflow:hidden;color:#fff;text-align:center;padding:64px 0 150px;
  background:linear-gradient(120deg,var(--deep),var(--deep2) 62%,var(--aqua-d))}
.pghd .hbg::after{background:linear-gradient(100deg,rgba(10,58,74,.9) 0%,rgba(10,58,74,.76) 50%,rgba(7,144,166,.6) 100%)}
.pghd .wv{z-index:2}
.pghd__in{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center}
.pghd .crumbs{margin-bottom:22px;color:#CFEAF1}
.pghd .crumbs ol{justify-content:center}
.pghd .crumbs li[aria-current]{color:#fff}
.pghd .crumbs a:hover{color:var(--sun)}
.pghd .hbadge{margin-bottom:18px}
.pghd .hbadge .ic{color:var(--sun)}
.pghd__title{font-size:clamp(34px,4.6vw,56px);max-width:920px;margin-bottom:16px}
.pghd .hlede{max-width:640px;margin:0 auto;font-size:17px}
.pghd .hbtns{justify-content:center;margin:30px 0 0}
.pghd__fx{position:absolute;inset:0;z-index:1;pointer-events:none}
.pghd__fx i{position:absolute;border-radius:50%;display:block}
.pghd__fx .r1{width:460px;height:460px;border:2px solid rgba(255,255,255,.07);top:-200px;right:-120px}
.pghd__fx .r2{width:280px;height:280px;border:2px solid rgba(255,197,65,.16);bottom:10px;left:-90px}
.pghd__fx .r3{width:340px;height:340px;background:radial-gradient(circle,rgba(16,181,206,.32),transparent 68%);top:-60px;left:8%}
.pghd__fx .d1,.pghd__fx .d2,.pghd__fx .d3{border:1.5px solid rgba(255,255,255,.34);
  background:radial-gradient(circle at 30% 26%,rgba(255,255,255,.7),rgba(16,181,206,.22) 60%,rgba(16,181,206,.04));animation:pgbob 7s ease-in-out infinite alternate}
.pghd__fx .d1{width:26px;height:26px;top:26%;right:15%}
.pghd__fx .d2{width:14px;height:14px;top:60%;right:24%;animation-delay:-3s}
.pghd__fx .d3{width:34px;height:34px;top:52%;left:13%;animation-delay:-5s}
@keyframes pgbob{to{transform:translateY(-18px)}}
@media(prefers-reduced-motion:reduce){.pghd__fx i{animation:none}}

/* ---------- ticker: an aqua ribbon ---------- */
.spticker{position:relative;z-index:1;overflow:hidden;padding:15px 0;color:#fff;
  background:linear-gradient(100deg,#075A6B,#04707f 55%,#0B6F84)}
.spticker--after-hero{margin-top:56px}
.spticker__track{display:flex;width:max-content;animation:sptick 46s linear infinite}
.spticker:hover .spticker__track{animation-play-state:paused}
.spticker__set{display:flex;flex:none}
.spticker span{display:inline-flex;align-items:center;gap:14px;padding:0 20px;font-size:15px;font-weight:700;white-space:nowrap}
.spticker .ic{width:17px;height:17px;color:var(--sun)}
@keyframes sptick{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.spticker__track{animation:none}}

/* ---------- stats board ---------- */
.spstats__box{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid var(--line);
  border-radius:var(--r);box-shadow:0 16px 40px rgba(10,58,74,.1);overflow:hidden}
.spstats__box--1{grid-template-columns:1fr;max-width:420px;margin:0 auto}
.spstats__box--2{grid-template-columns:1fr 1fr;max-width:760px;margin:0 auto}
.spstats__box--3{grid-template-columns:repeat(3,1fr)}
.spstat{padding:32px 22px;text-align:center;border-right:1px solid var(--line)}
.spstat:last-child{border-right:none}
.spstat b{display:block;font-size:clamp(30px,3.4vw,42px);font-weight:800;letter-spacing:-.04em;line-height:1.05;color:var(--aqua-d)}
.spstat:nth-child(4n+2) b{color:var(--coral)}
.spstat:nth-child(4n+3) b{color:#22A877}
.spstat:nth-child(4n+4) b{color:#D99A00}
.spstat span{display:block;margin-top:9px;font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--body);line-height:1.4}

/* ---------- how it works ---------- */
.spsteps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:26px;position:relative}
.spsteps--1{grid-template-columns:minmax(0,420px);justify-content:center}
.spsteps--2{grid-template-columns:repeat(2,minmax(0,400px));justify-content:center}
.spsteps--4{grid-template-columns:repeat(4,1fr)}
.spsteps::before{content:'';position:absolute;top:63px;left:12%;right:12%;border-top:3px dashed rgba(16,181,206,.32)}
.spsteps--1::before{display:none}
.spstep{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);
  padding:30px 28px 32px;text-align:center;transition:.34s cubic-bezier(.2,.8,.2,1)}
.spstep:hover{transform:translateY(-7px);box-shadow:var(--sh-h)}
.spstep__ic{width:66px;height:66px;border-radius:20px;display:grid;place-items:center;margin:0 auto 18px;
  background:var(--aqua);color:#fff;box-shadow:0 10px 22px rgba(16,181,206,.34)}
.spstep:nth-child(4n+2) .spstep__ic{background:var(--green);box-shadow:0 10px 22px rgba(47,192,138,.34)}
.spstep:nth-child(4n+3) .spstep__ic{background:var(--coral);box-shadow:0 10px 22px rgba(255,107,74,.34)}
.spstep:nth-child(4n+4) .spstep__ic{background:var(--sun);color:#5A4100;box-shadow:0 10px 22px rgba(255,197,65,.4)}
.spstep__ic .ic,.spstep__ic svg{width:28px;height:28px}
.spstep small{display:block;font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--coral);margin-bottom:6px}
.spstep h3{font-size:20px;font-weight:700;margin-bottom:8px}
.spstep p{font-size:14.5px;font-weight:300;line-height:1.7}

/* ---------- contact ---------- */
.spcontact__grid{display:grid;grid-template-columns:1.05fr .95fr;grid-template-areas:"info form" "map form";grid-template-rows:auto 1fr;column-gap:56px;row-gap:24px;align-items:start}
.spcontact__info{grid-area:info}
.spform{grid-area:form}
.spmap{grid-area:map}
.ctiles{list-style:none;display:grid;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}
.ctile{display:flex;gap:16px;align-items:center;padding:16px 22px}
.ctile+.ctile{border-top:1px solid var(--line)}
.ctile .ic{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;flex:none;background:var(--aqua-l);color:var(--aqua-d)}
.ctile:nth-child(2) .ic{background:var(--coral-l);color:var(--coral)}
.ctile:nth-child(3) .ic{background:var(--green-l);color:#22A877}
.ctile:nth-child(4) .ic{background:var(--sun-l);color:#B98500}
.ctile .ic svg{width:22px;height:22px}
.ctile>span:last-child{min-width:0;line-height:1.4}
.ctile small{display:block;font-size:10.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--body);margin-bottom:2px}
.ctile a,.ctile b{font-size:15px;font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.ctile a:hover{color:var(--aqua-d)}
.spmap{border-radius:var(--r);overflow:hidden;border:5px solid #fff;box-shadow:var(--sh);
  background:repeating-linear-gradient(45deg,var(--aqua-l) 0 14px,#EEF9FB 14px 28px)}
.spmap iframe{display:block;width:100%;height:300px;border:0}
.spform{box-shadow:0 22px 50px rgba(10,58,74,.13);border:1px solid var(--line);padding:32px}
.spform h3{font-size:23px}
.spform__form label{display:block;font-size:10.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--aqua-d);margin-bottom:14px}
.spform__form input,.spform__form textarea{display:block;width:100%;margin-top:6px;border:1.5px solid var(--line);border-radius:13px;
  padding:12px 14px;font-family:inherit;font-size:14.5px;font-weight:400;letter-spacing:normal;text-transform:none;color:var(--ink);
  background:var(--page);outline:none;transition:.2s}
.spform__form textarea{resize:vertical;min-height:120px}
.spform__form input:focus,.spform__form textarea:focus{border-color:var(--aqua);background:#fff}
.spform__form .btn{width:100%;border:0;margin-top:4px;font:inherit;font-weight:700}
.spform .prt-contact-status{margin:12px 0 0;font-size:14px;font-weight:600;color:var(--ink);text-align:center}
.spform .prt-contact-status:empty{display:none}

/* ---------- text block ---------- */
.sptext__grid{max-width:860px;margin:0 auto}
.sptext__grid.has-img{max-width:none;display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center}
.sptext .entry-content{font-size:16px;font-weight:300;line-height:1.8;color:var(--body)}
.sptext .entry-content>*+*{margin-top:1em}
.sptext .entry-content :is(h2,h3,h4){color:var(--ink);font-weight:700;margin-top:1.4em}
.sptext .entry-content strong{color:var(--ink);font-weight:600}
.sptext .entry-content a{color:var(--aqua-d);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.sptext .entry-content ul{list-style:none;display:grid;gap:12px}
.sptext .entry-content ul li{position:relative;padding-left:40px}
.sptext .entry-content ul li::before{content:'\2713';position:absolute;left:0;top:1px;width:26px;height:26px;border-radius:50%;
  background:var(--aqua-l);color:var(--aqua-d);display:grid;place-items:center;font-size:13px;font-weight:800;line-height:1}
.sptext .entry-content ol{padding-left:1.3em}
.sptext__photo .ph{border-radius:28px;aspect-ratio:4/3;border:6px solid #fff;box-shadow:0 20px 44px rgba(10,58,74,.14)}

/* ---------- footer rising over a coloured last section ---------- */
body>footer.fover{margin-top:-89px;background:linear-gradient(180deg,transparent 89px,var(--deep) 89px)}

@media(max-width:1080px){
  .spsteps--4{grid-template-columns:1fr 1fr}
  .spsteps--4::before{display:none}
}
@media(max-width:900px){
  .spcontact__grid{grid-template-columns:1fr;grid-template-areas:"info" "form" "map";grid-template-rows:auto}
  .sptext__grid.has-img{grid-template-columns:1fr}
  .sptext__grid.has-img{gap:34px}
  .spsteps,.spsteps--2,.spsteps--3{grid-template-columns:1fr;max-width:520px;margin:0 auto}
  .spsteps::before{top:40px;bottom:40px;left:50%;right:auto;border-top:0;border-left:3px dashed rgba(16,181,206,.32)}
  .spstats__box--4{grid-template-columns:1fr 1fr}
  .spstats__box--4 .spstat:nth-child(2n){border-right:none}
  .spstats__box--4 .spstat:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .pghd{padding:52px 0 124px}
  .pghd__fx .r1{width:300px;height:300px}
}
@media(max-width:620px){
  .spsec{padding:60px 0}
  .spsec--tight{padding:40px 0}
  .ctile{padding:14px 16px}
  body>footer.fover{margin-top:-55px;background:linear-gradient(180deg,transparent 55px,var(--deep) 55px)}
  .fover .fwave svg{height:56px}
  .spform{padding:24px 20px}
  .spstats__box--3{grid-template-columns:1fr}
  .spstats__box--3 .spstat{border-right:none;border-bottom:1px solid var(--line)}
  .spstats__box--3 .spstat:last-child{border-bottom:none}
  .spstat{padding:24px 14px}
  .pghd .hlede{font-size:15.5px}
  .pghd .hbtns .btn{flex:1 1 100%}
  .spticker span{font-size:14px;padding:0 16px}
  .spticker--after-hero{margin-top:40px}
}

/* ---------- inner-page audit fixes ---------- */
/* The page header's wave is cut out of the band (a mask) instead of painted in
   the page colour, so the first section's background, and the drifting scene
   behind it, runs straight up into the wave with no lighter strip. */
.pghd{-webkit-mask:linear-gradient(#000,#000) top/100% calc(100% - 7vw) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 130' preserveAspectRatio='none'%3E%3Cpath d='M0,0H1440V32L1392,42.7C1344,53,1248,75,1152,80C1056,85,960,75,864,64C768,53,672,43,576,48C480,53,384,75,288,80C192,85,96,75,48,69.3L0,64Z'/%3E%3C/svg%3E") bottom/100% calc(100vw * 130 / 1440) no-repeat;
  mask:linear-gradient(#000,#000) top/100% calc(100% - 7vw) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 130' preserveAspectRatio='none'%3E%3Cpath d='M0,0H1440V32L1392,42.7C1344,53,1248,75,1152,80C1056,85,960,75,864,64C768,53,672,43,576,48C480,53,384,75,288,80C192,85,96,75,48,69.3L0,64Z'/%3E%3C/svg%3E") bottom/100% calc(100vw * 130 / 1440) no-repeat}
.pghd>.wv{display:none}

/* The scene's balloons and bubbles stay a background whisper behind body text. */
.bl1,.bl2,.bl3{opacity:.12}
.bu1,.bu2,.bu3,.bu4,.bu5{opacity:.22}

/* Category cards: the photo fills whatever height the copy needs, and
   "View rentals" follows the copy. */
.cats{grid-auto-rows:auto}
@media(min-width:901px){.cats{grid-auto-rows:auto}}
.cat .ph{min-height:0}
.cat .ph img{position:absolute;inset:0}
.cgo{margin-top:0}
.cat .cbd{padding:22px 24px 22px}
@media(min-width:621px){.cat{min-height:176px}}
/* Tablets: two across, photo on top. Phones: a compact two-column grid of
   photo, name and count. */
@media(max-width:900px){
  .cats{grid-template-columns:1fr 1fr;gap:18px}
  .cat{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .cat .ph{aspect-ratio:16/10;height:auto}
}
@media(max-width:620px){
  .cats{gap:12px}
  .cat .ph{aspect-ratio:4/3;min-height:0}
  .cat .cbd{padding:12px 13px 14px}
  .cat .cbd p,.cat .cgo{display:none}
  .cat .cbd h3{font-size:15.5px;line-height:1.25;margin:0;order:-1}
  .cat .cbd .tag{font-size:9.5px;letter-spacing:.06em;margin:5px 0 0}
  .cat:hover{transform:none}
}

/* Call to action: the outline phone button gets a deep-water fill so its white
   text reads on the sunny end of the gradient (5:1 or better). */
.cta .b-ghost{background:rgba(10,58,74,.6);border-color:rgba(255,255,255,.7)}
.cta .b-ghost:hover{background:#fff;color:var(--aqua-d)}

/* Safety rows: a white frame and a light aqua-to-sun wash pull any step photo
   (dark, muted or black-and-white) into the brand's bright palette; every row
   is one height on wide screens. */

/* =====================================================================
   Polish pass (2026-10): menus, toggles, phones, the blog's page head and
   the booking platform's pages in Splash's own clothes.
   ===================================================================== */

/* ---------- phone menu ---------- */
/* Items start at the top of the panel (centred, the first ones were pushed
   above it and could not be scrolled to), and the panel ends at the bottom of
   the screen, so its buttons are always reachable. theme.js sets --menu-top. */
@media(max-width:900px){
  .menu{justify-content:flex-start;max-height:calc(100svh - var(--menu-top,200px));overscroll-behavior:contain;
    border-top:1px solid var(--line);border-radius:0 0 22px 22px}
  .menu>li{border-bottom:1px solid var(--line)}
  .menu>li.menu-cta{border-bottom:0}
  .menu>li>a{display:flex;align-items:center;justify-content:space-between;font-size:15.5px}
  .menu>li:not(.menu-cta):not(.has-mega)>a::after{content:'\203A';font-size:20px;line-height:1;color:var(--aqua);font-weight:600}
  .menu>li.menu-cta>a.b-coral{color:#fff}
  .menu>li.menu-cta>a.b-out{color:var(--ink);border:2px solid var(--line);background:#fff}
  .menu .has-mega>a{color:var(--aqua-d);font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding-bottom:6px}
  .menu .megacats{gap:8px}
  .menu .mcat{gap:10px;padding:6px;border-radius:14px;background:var(--page);border:1px solid var(--line)}
  .menu .mcat:hover{transform:none;background:var(--aqua-l)}
  .menu .mshot{display:block;flex:none;width:42px;height:42px;aspect-ratio:auto;margin:0;border-radius:10px;box-shadow:none}
  .menu .mcat b{font-size:13px;line-height:1.25;margin:0}
  .menu .mega{padding:2px 0 14px}
}

/* ---------- FAQ: the toggle is a round button, so it turns cleanly ---------- */
#faq summary::after,.spfaq summary::after{border-radius:50%}
#faq summary:hover::after,.spfaq summary:hover::after{background:var(--aqua);color:#fff}

/* ---------- service areas: a short last row sits centred ---------- */
.acols{display:flex;flex-wrap:wrap;justify-content:center}
.acols>*{flex:0 1 calc((100% - 54px) / 4);min-width:0}
@media(max-width:1080px){.acols>*{flex-basis:calc((100% - 36px) / 3)}}
@media(max-width:620px){.acols{gap:10px}.acols>*{flex-basis:calc((100% - 10px) / 2);padding:13px 14px;font-size:14px}}

/* ---------- call to action: a clean deep-water phone button ---------- */
.cta .b-ghost{background:var(--deep);border-color:var(--deep);color:#fff;box-shadow:0 8px 22px rgba(10,58,74,.28)}
.cta .b-ghost .ic{color:var(--sun)}
.cta .b-ghost:hover{background:#fff;border-color:#fff;color:var(--aqua-d)}

/* ---------- phones ---------- */
@media(max-width:620px){
  /* Hero buttons share the row evenly. */
  .hero .hbtns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .hero .hbtns .btn{padding:13px 12px;font-size:14px}
  /* Favourites and reviews swipe sideways instead of stacking nine and five tall cards. */
  .prods,.revs,.revs--flex{display:flex;flex-wrap:nowrap;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;
    justify-content:flex-start;margin:-12px -16px 0;padding:12px 16px 22px;scroll-padding:0 16px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .prods::-webkit-scrollbar,.revs::-webkit-scrollbar{display:none}
  .prods>.card{flex:0 0 82%;scroll-snap-align:start}
  .revs>.rev,.revs--flex>.rev{flex:0 0 86%;scroll-snap-align:start}
  .prods>.card:hover,.revs>.rev:hover{transform:none}
  .prods>.card:only-child,.revs>.rev:only-child{flex-basis:100%}
  .morebtn{margin-top:22px}
  .rtop{margin-bottom:22px}
  /* Footer: the two link lists side by side, a shorter page end. */
  .fgrid{grid-template-columns:1fr 1fr;gap:34px 18px}
  .fgrid>.fbrand,.fgrid>.fcol:last-child{grid-column:1/-1}
  .fcol ul{gap:10px}
  .fcol ul a{font-size:13.8px}
  .fband{gap:14px}
  .fbot{justify-content:center;text-align:center}
}

/* ---------- blog, search, 404, single post: the inner-page header band ---------- */
.pagehead:not(.pagehead--io){background:linear-gradient(120deg,var(--deep),var(--deep2) 62%,var(--aqua-d));
  padding:clamp(48px,6vw,78px) 0 calc(clamp(40px,5vw,64px) + 7vw);isolation:isolate;
  -webkit-mask:linear-gradient(#000,#000) top/100% calc(100% - 7vw) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 130' preserveAspectRatio='none'%3E%3Cpath d='M0,0H1440V32L1392,42.7C1344,53,1248,75,1152,80C1056,85,960,75,864,64C768,53,672,43,576,48C480,53,384,75,288,80C192,85,96,75,48,69.3L0,64Z'/%3E%3C/svg%3E") bottom/100% calc(100vw * 130 / 1440) no-repeat;
  mask:linear-gradient(#000,#000) top/100% calc(100% - 7vw) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 130' preserveAspectRatio='none'%3E%3Cpath d='M0,0H1440V32L1392,42.7C1344,53,1248,75,1152,80C1056,85,960,75,864,64C768,53,672,43,576,48C480,53,384,75,288,80C192,85,96,75,48,69.3L0,64Z'/%3E%3C/svg%3E") bottom/100% calc(100vw * 130 / 1440) no-repeat}
.pagehead:not(.pagehead--io)::before,.pagehead:not(.pagehead--io)::after{content:'';position:absolute;border-radius:50%;pointer-events:none;z-index:-1}
.pagehead:not(.pagehead--io)::before{width:460px;height:460px;border:2px solid rgba(255,255,255,.07);top:-210px;right:-110px}
.pagehead:not(.pagehead--io)::after{width:360px;height:360px;background:radial-gradient(circle,rgba(16,181,206,.34),transparent 68%);top:-90px;left:6%}
.pagehead:not(.pagehead--io) .pagehead__title{font-size:clamp(34px,4.6vw,56px);letter-spacing:-.035em;max-width:900px}
.pagehead:not(.pagehead--io) .klabel{margin-bottom:6px}
.pagehead:not(.pagehead--io) p{color:#C3E0E9;font-size:17px;font-weight:300;opacity:1}
.pagehead .search-form{margin-top:6px}
.pagehead .search-form .search-field{border:0;box-shadow:0 10px 26px rgba(0,0,0,.18)}
.pagehead .b-out:hover{background:#fff;color:var(--aqua-d);border-color:#fff}
.pagehead+.pagebody{padding-top:clamp(18px,3vw,34px)}

/* Single post: a readable article column. */
.single-post .prt-page .entry-content{font-size:16.5px;line-height:1.8}
.single-post .prt-page .entry-content h2{font-size:clamp(24px,2.6vw,30px)}
.single-post .prt-page .entry-content :is(ul,ol){padding-left:1.3em}
.single-post .prt-page .entry-content li+li{margin-top:.35em}

/* =====================================================================
   The booking platform's pages: inventory, category and item pages.
   Theme-only overrides of the shared IO styles.
   ===================================================================== */
/* Inventory page intro. */
body.prt .prt-io .entry-content>center{display:block;max-width:880px;margin:0 auto}
body.prt .prt-io .entry-content>center h1{font-size:clamp(34px,4.6vw,56px);font-weight:800;letter-spacing:-.035em;margin:6px 0 14px;line-height:1.1}
body.prt .prt-io .entry-content>center p,body.prt .prt-io .entry-content>center p strong{font-weight:300;font-size:16.5px;color:var(--body);line-height:1.75}
body.prt .prt-io .entry-content>center h2{font-size:clamp(20px,2vw,24px);font-weight:700;margin:26px 0 4px}

/* "Set Event Date": the design's coral button with a calendar. */
body.prt .pageDateRangeWrapper{margin:14px auto 8px!important}
body.prt .pageDateRangeWrapper .elementor-button{background:var(--coral)!important;color:#fff!important;border:0!important;border-radius:14px!important;
  padding:14px 30px!important;min-width:0!important;width:auto!important;display:inline-flex!important;align-items:center;box-shadow:0 7px 20px rgba(255,107,74,.36)!important;
  font-family:inherit!important;font-weight:700!important;font-size:15px!important;letter-spacing:0!important;transition:.26s!important}
body.prt .pageDateRangeWrapper .elementor-button:hover{background:var(--coral-d)!important;transform:translateY(-2px)!important;box-shadow:0 14px 30px rgba(255,107,74,.44)!important}
body.prt .pageDateRangeWrapper .ioDateRangeHeader,body.prt .pageDateRangeWrapper .elementor-button *{font:inherit!important;color:inherit!important}
body.prt .pageDateRangeWrapper .ioDateRangeHeader::before{content:'';display:inline-block;width:18px;height:18px;margin:0 10px -3px 0;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='3'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='3'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E") center/contain no-repeat}

/* "Bounce Houses for Rent": Splash's heading, the highlight in aqua over a wave. */
body.prt .io_category_wrapper .catNameIO{font-weight:800!important;letter-spacing:-.035em!important;font-size:clamp(34px,4.6vw,54px)!important;margin:.35em 0 .45em!important;line-height:1.1!important}
body.prt .io_category_wrapper .catNameIO .io_forrent{color:var(--aqua)!important;font-weight:800!important;font-size:1em!important;margin-left:0}
body.prt .io_category_wrapper .catNameIO::after{width:96px!important;height:12px!important;border-radius:0!important;background:none!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 12'%3E%3Cpath d='M2 6c8-6 14-6 22 0s14 6 22 0 14-6 22 0 14 6 22 0' fill='none' stroke='%23FFC541' stroke-width='3.5' stroke-linecap='round'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important}
body.prt .wdz-cat-h2{font-weight:800!important;letter-spacing:-.025em!important;font-size:clamp(22px,2.4vw,28px)!important}
body.prt .cat_div_wrapper>.io_cat_description{border-radius:var(--r)!important;border:1px solid var(--line)!important;box-shadow:var(--sh)!important;
  font-weight:300!important;color:var(--body)!important;padding:26px 34px!important}
body.prt .io_view_toggle_btn{border-radius:11px!important}
body.prt .io_view_toggle_btn.active{background:var(--aqua)!important;border-color:var(--aqua)!important}

/* The inventory page's categories: Splash cards, four across. */
body.prt .io_catdiv2:not(.list-view){display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:26px 22px!important;
  width:100%!important;max-width:none!important;margin:24px 0 10px!important}
body.prt .io_catdiv2 .io_item2_listcat{width:auto!important;max-width:none!important;margin:0!important;background:#fff!important;
  border:1px solid var(--line)!important;border-radius:var(--r)!important;padding:0!important;box-shadow:var(--sh)!important;overflow:hidden!important;
  display:flex!important;flex-direction:column!important;transition:.34s cubic-bezier(.2,.8,.2,1)!important}
body.prt .io_catdiv2 .io_item2_listcat:hover{transform:translateY(-7px)!important;box-shadow:var(--sh-h)!important;border-color:transparent!important}
body.prt .io_catdiv2 .io_item2_listcat>a:first-child{display:block;position:relative;overflow:hidden}
body.prt .io_catdiv2 .io_item2_listcat>a:first-child::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:26px;pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 36' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0,18L33,14C67,10,133,2,200,6C267,10,333,26,367,30L400,34L400,36L0,36Z'/%3E%3C/svg%3E") bottom/100% 100% no-repeat}
body.prt .io_catdiv2 .io_item2_listcat .cat_div{border-radius:0!important;overflow:hidden!important;background:var(--aqua-l)!important}
body.prt .io_catdiv2 .io_item2_listcat img{aspect-ratio:4/3!important;object-fit:cover!important;width:100%!important;height:auto!important;transition:.6s cubic-bezier(.2,.8,.2,1)!important}
body.prt .io_catdiv2 .io_item2_listcat:hover img{transform:scale(1.07)}
body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner{padding:10px 20px 20px!important;text-align:left;flex:1}
body.prt .io_catdiv2 .io_item2_listcat .rentNameIO{font-size:18px!important;font-weight:700!important;letter-spacing:-.015em!important;margin:0 0 6px!important;text-align:left!important}
body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO,body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO *{font-size:13.4px!important;line-height:1.55!important;color:var(--body)!important;font-weight:300!important;text-align:left!important}
html body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO.catDescriptionIO_small{display:-webkit-box!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:2!important;line-clamp:2;overflow:hidden!important;height:auto!important;min-height:0!important;max-height:3.1em!important}
body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner>a::after{content:'View rentals \2192';display:block;margin-top:12px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--aqua-d)}
body.prt .io_catdiv2 .io_item2_listcat:hover .cat_div_inner>a::after{color:var(--coral)}
@media(max-width:1100px){body.prt .io_catdiv2:not(.list-view){grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:800px){
  body.prt .io_catdiv2:not(.list-view){grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px 12px!important}
  body.prt .io_catdiv2 .io_item2_listcat{border-radius:18px!important}
  body.prt .io_catdiv2 .io_item2_listcat:hover{transform:none!important}
  body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner{padding:6px 13px 14px!important}
  body.prt .io_catdiv2 .io_item2_listcat .rentNameIO{font-size:15px!important;line-height:1.25!important}
  html body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO.catDescriptionIO_small{display:none!important}
  body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner>a::after{font-size:11.5px;margin-top:6px}
  body.prt .io_catdiv2 .io_item2_listcat>a:first-child::after{height:16px}
}

/* "Professional delivery to Tulsa OK…": a note with a truck, not a stray line. */
body.prt .prt-io .io_landingpages{max-width:760px;margin:44px auto 10px!important;padding:16px 26px 16px 68px!important;background:#fff;border:1px solid var(--line);
  border-radius:var(--rs);box-shadow:var(--sh);position:relative;text-align:left}
body.prt .prt-io .io_landingpages,body.prt .prt-io .io_landingpages p{font-size:14.5px!important;color:var(--body)!important;font-weight:400!important}
body.prt .prt-io .io_landingpages::before{content:'';position:absolute;left:18px;top:50%;width:36px;height:36px;margin-top:-18px;border-radius:12px;
  background:var(--aqua-l) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230790A6' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 4h13v11H1zM14 8h4l3 3v4h-7'/%3E%3Ccircle cx='5.5' cy='17.5' r='2'/%3E%3Ccircle cx='17.5' cy='17.5' r='2'/%3E%3C/svg%3E") center/18px no-repeat}
body.prt .prt-io .io_landingpages .io_city_list,body.prt .prt-io .io_landingpages a{color:var(--aqua-d)!important;font-weight:700}

/* A category's long description: a card like the theme's text blocks. */
body.prt .prt-io .io_cat_longdescription:not(:empty){max-width:860px!important;background:#fff;border:1px solid var(--line);border-radius:28px;padding:40px 48px!important;
  box-shadow:var(--sh);margin:34px auto 10px!important;font-size:15.5px!important;font-weight:300!important;color:var(--body)!important;line-height:1.8!important}
body.prt .prt-io .io_cat_longdescription:empty{display:none}

/* BookFlow's rental cards on a category page. */
body.prt .wdz-browse__cat-title{font-weight:800!important;letter-spacing:-.025em!important;text-shadow:none!important}
body.prt .wdz-browse__row{gap:24px!important;padding:6px 4px 24px!important}
body.prt .wdz-browse__card{border:1px solid var(--line)!important;border-radius:var(--r)!important;box-shadow:var(--sh)!important;overflow:hidden!important;background:#fff!important;transition:.34s cubic-bezier(.2,.8,.2,1)!important}
body.prt .wdz-browse__card:hover{transform:translateY(-7px);box-shadow:var(--sh-h)!important}
body.prt .wdz-browse__card-img{border-radius:0!important}
body.prt .wdz-browse__card-body{padding:16px 20px 20px!important}
body.prt .wdz-browse__card-name,body.prt .wdz-browse__card-name a{font-size:18px!important;font-weight:700!important;letter-spacing:-.015em;color:var(--ink)!important;text-decoration:none!important}
body.prt .wdz-browse__card-name a:hover{color:var(--aqua-d)!important}
body.prt .wdz-browse__card-price{display:inline-block;width:auto!important;color:var(--coral)!important;font-weight:800!important;font-size:19px!important;letter-spacing:-.02em;margin:4px 0 8px}
body.prt .wdz-browse__add{border-radius:13px!important;font-weight:700!important;box-shadow:0 6px 16px rgba(255,107,74,.3)!important}
body.prt .wdz-browse__qty{border-radius:13px!important;overflow:hidden;border-color:var(--line)!important}

/* ---------- item page: the three-column layout is in core (prt-io.css); the look is here ---------- */
body.prt .io_product_picbox>br{display:none}
body.prt .io_product_picbox #io_main_media_container{border:6px solid #fff;border-radius:28px!important;box-shadow:0 20px 44px rgba(10,58,74,.14);overflow:hidden}
body.prt .io_product_picbox .io_image_big{border-radius:0!important}
body.prt .io_product_picbox .io_image_thumbbox{margin-top:16px!important;display:flex;gap:10px}
body.prt .io_product_picbox .io_image_thumb{border:3px solid #fff!important;border-radius:14px!important;box-shadow:var(--sh);cursor:pointer;transition:.2s}
body.prt .io_product_picbox .io_image_thumb:hover{box-shadow:0 0 0 2px var(--aqua)}
body.prt .io_product_infobox{border:1px solid var(--line)!important;border-radius:28px!important;box-shadow:var(--sh)!important;padding:clamp(22px,3.2vw,40px)!important}
body.prt .io_product_title{font-weight:800!important;letter-spacing:-.035em!important;font-size:clamp(30px,3.4vw,44px)!important}
body.prt .io_product_infobox .io_product_price_box{background:var(--aqua-l)!important;border:0!important;border-radius:16px!important}
body.prt .io_product_infobox .io_product_price_left{font-size:28px!important;font-weight:800!important;color:var(--coral)!important;letter-spacing:-.035em;line-height:1.1!important}
body.prt .io_product_infobox .io_product_price_right{font-weight:600!important;color:var(--body)!important;font-size:14px!important}
/* Set Date / Check Delivery: the theme's two buttons, side by side. */
body.prt .io_product_infobox>div:has(> div > .elementor-widget-button){display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:14px 0 4px}
body.prt .io_product_infobox>div:has(> div > .elementor-widget-button)>div{height:auto!important;min-height:0!important}
body.prt .io_product_infobox .elementor-button.io_button{border-radius:14px!important;padding:13px 24px!important;font-family:inherit!important;font-weight:700!important;font-size:14.5px!important;
  text-decoration:none!important;border:2px solid transparent!important;transition:.26s!important}
body.prt .io_product_infobox .elementor-button.io_button *{text-decoration:none!important;font-weight:700!important}
body.prt .io_product_infobox .item_add_set_date{background:var(--coral)!important;color:#fff!important;box-shadow:0 7px 20px rgba(255,107,74,.36)!important}
body.prt .io_product_infobox .item_add_set_date:hover{background:var(--coral-d)!important;transform:translateY(-2px)}
body.prt .io_product_infobox #checkDeliveryButton{background:#fff!important;color:var(--ink)!important;border-color:var(--line)!important;box-shadow:none!important}
body.prt .io_product_infobox #checkDeliveryButton:hover{border-color:var(--aqua)!important;color:var(--aqua-d)!important}
body.prt .io_product_infobox #checkDeliveryButton :is(i,svg){color:var(--aqua-d)!important;fill:var(--aqua-d)!important}
body.prt .io_product_detailbox{border-top:1px solid var(--line)!important;padding-top:8px;margin-top:14px}
body.prt .io_product_subtitle{font-weight:700!important;font-size:20px!important;letter-spacing:-.015em;margin:14px 0 8px!important}
body.prt .io_product_desc,body.prt .io_product_desc *{font-size:15.5px!important;line-height:1.8!important;color:var(--body)!important;font-weight:300!important}
/* Size and power: a tidy spec list. */
body.prt .io_product_infobox .io_product_detail_box{display:flex!important;justify-content:space-between;align-items:center;gap:14px;background:var(--page)!important;border:1px solid var(--line)!important;
  border-left:4px solid var(--aqua)!important;border-radius:14px!important;padding:12px 18px!important;margin:10px 0 0!important;width:100%!important;max-width:none!important}
body.prt .io_product_infobox .io_product_detail_box p{background:none!important;padding:0!important;margin:0!important;width:auto!important;float:none!important;border-radius:0!important}
body.prt .io_product_infobox .io_product_detail_box p:first-child{font-size:12px!important;font-weight:700!important;letter-spacing:.1em;text-transform:uppercase;color:var(--aqua-d)!important}
body.prt .io_product_infobox .io_product_detail_box p:last-child{font-size:15px!important;font-weight:700!important;color:var(--ink)!important;text-align:right}
/* BookFlow's availability card. */
body.prt .wdz-itemcal__card{border:1px solid var(--line)!important;border-radius:28px!important;box-shadow:0 20px 44px rgba(10,58,74,.12)!important;position:relative;overflow:hidden}
body.prt .wdz-itemcal__card::before{content:'';position:absolute;top:0;left:0;right:0;height:6px;background:linear-gradient(90deg,var(--aqua),var(--green) 50%,var(--sun) 75%,var(--coral))}
body.prt .wdz-itemcal__title{font-weight:800!important;letter-spacing:-.03em!important;font-size:24px!important;line-height:1.15!important}
@media(max-width:620px){
  body.prt .io_product_picbox #io_main_media_container{border-width:4px;border-radius:22px!important}
  body.prt .io_product_infobox{border-radius:22px!important}
  body.prt .io_product_title{text-align:left!important}
  body.prt .io_product_infobox .elementor-button.io_button{padding:12px 18px!important}
  body.prt .prt-io .io_cat_longdescription:not(:empty){padding:26px 22px!important;border-radius:22px}
  body.prt .cat_div_wrapper>.io_cat_description{padding:20px 20px!important}
  body.prt .prt-io .io_landingpages{margin-top:30px!important}
  body.prt .prt-io .entry-content>center p,body.prt .prt-io .entry-content>center p strong{font-size:15px}
  body.prt .wdz-browse__card:hover{transform:none}
}
/* Inner-page headers are centred, like the page header section. */
.pagehead:not(.pagehead--io) .wrap{display:flex;flex-direction:column;align-items:center;text-align:center}
.pagehead:not(.pagehead--io) .pagehead__btns{justify-content:center}
.pagehead:not(.pagehead--io) .search-form{width:100%;margin-inline:auto}
.error404 .spsec{padding-top:clamp(20px,3vw,40px)}
/* Phones: the chat and cart launchers float bottom-right; the copyright line stays clear of them. */
@media(max-width:620px){.fbot{padding-bottom:96px}}

/* Elementor's ".elementor a{box-shadow:none}" outranks a single class and was
   removing the soft shadows from buttons inside page sections. Restate them one step stronger. */
.elementor .b-coral{box-shadow:0 7px 20px rgba(255,107,74,.36)}
.elementor .b-coral:hover{box-shadow:0 14px 30px rgba(255,107,74,.44)}
.elementor .b-aqua{box-shadow:0 7px 20px rgba(16,181,206,.34)}
.elementor .b-white{box-shadow:0 8px 22px rgba(0,0,0,.16)}
/* ---------- Safety & cleaning: compact numbered photo cards (2026-10-06) ---------- */
.csteps{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:0;padding:0}
.csteps--1{grid-template-columns:minmax(0,560px);justify-content:center}
.csteps--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.csteps--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.cstep{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden;display:flex;flex-direction:column}
.cstep__img{aspect-ratio:16/10;border-radius:calc(var(--r) - 8px);margin:8px 8px 0}
.cstep__img img{width:100%;height:100%;object-fit:cover}
.cstep__bd{position:relative;padding:34px 24px 24px}
.cstep .znum{position:absolute;top:-24px;left:22px;width:46px;height:46px;border-radius:15px;font-size:19px;margin:0;border:3px solid #fff}
.cstep--noimg .cstep__bd{padding-top:24px}
.cstep--noimg .znum{position:static;margin-bottom:12px}
.cstep:nth-child(3n+2) .znum{background:var(--green);box-shadow:0 8px 20px rgba(47,192,138,.36)}
.cstep:nth-child(3n) .znum{background:var(--coral);box-shadow:0 8px 20px rgba(255,107,74,.36)}
.cstep h3{font-size:19px;font-weight:700;margin-bottom:6px}
.cstep p{font-size:14.5px;font-weight:300;line-height:1.6}
@media(max-width:900px){
  .csteps,.csteps--4{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  .csteps--3 .cstep:last-child{grid-column:1/-1;flex-direction:row;align-items:stretch}
  .csteps--3 .cstep:last-child .cstep__img{flex:0 0 46%;aspect-ratio:auto;margin:8px 0 8px 8px}
  .csteps--3 .cstep:last-child .cstep__bd{padding:24px;align-self:center}
  .csteps--3 .cstep:last-child .znum{position:static;margin-bottom:10px}
}
@media(max-width:620px){
  .csteps,.csteps--2,.csteps--4{grid-template-columns:1fr;gap:12px}
  .cstep,.csteps--3 .cstep:last-child{flex-direction:row;align-items:stretch}
  .cstep__img,.csteps--3 .cstep:last-child .cstep__img{flex:0 0 112px;aspect-ratio:auto;min-height:112px;margin:8px 0 8px 8px;border-radius:14px}
  .cstep__bd{padding:14px 16px 14px 14px}
  .cstep .znum{position:static;width:30px;height:30px;border-radius:10px;font-size:14px;border:0;margin:0 0 6px;box-shadow:none}
  .cstep h3{font-size:16.5px;margin-bottom:3px}
  .cstep p{font-size:13.5px;line-height:1.5}
  .csteps--3 .cstep:last-child .cstep__bd{padding:14px 16px 14px 14px;align-self:auto}
  .csteps--3 .cstep:last-child .znum{margin-bottom:6px}
  .csteps>.cstep:nth-child(n) .znum{box-shadow:none}
}

/* About photo stack: the small photos keep a 4:3 shape (not a thin strip), and every
   photo is framed from its upper part, where faces are, so heads are never cut off. */
.astack .ph img{object-position:50% 22%}
.astack--3 .as2,.astack--3 .as3{height:auto;aspect-ratio:4/3}
@media(max-width:620px){.astack--3{grid-template-columns:1fr 1fr}.astack--3 .as1{grid-column:1/-1;grid-row:auto;min-height:0;aspect-ratio:4/3}}

/* ---------- Service Area mega menu + Company dropdown (2026-10-06) ---------- */
.marea{display:grid;grid-template-columns:minmax(240px,300px) 1fr;gap:44px;align-items:start}
.marea__intro .klabel{margin-bottom:12px}
.marea__title{font-size:22px;font-weight:800;color:var(--ink);line-height:1.25;letter-spacing:-.02em;margin-bottom:8px}
.marea__text{font-size:13.5px;font-weight:300;line-height:1.6;margin-bottom:18px}
.marea__intro .btn{padding:11px 20px;font-size:13.5px}
.marea__towns{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 12px;margin:0;padding:0}
.marea__towns a,.marea__towns span{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:12px;font-size:14px;font-weight:600;color:var(--ink);background:var(--page);border:1px solid var(--line);transition:.2s;min-height:42px}
.marea__towns .ic{width:15px;height:15px;color:var(--aqua-d);flex:none}
.marea__towns a:hover,.marea__towns a:focus-visible,.marea__towns a[aria-current]{background:var(--aqua-l);border-color:var(--aqua);color:var(--aqua-d)}

.menu>li.has-drop{position:relative}
.has-drop:hover>a{background:var(--aqua-l);color:var(--aqua-d)}
.has-drop:hover .cv,.has-sub.is-open .cv{transform:rotate(180deg)}
.mega.drop{left:50%;right:auto;top:calc(100% + 12px);width:340px;padding:10px;border-radius:0 0 20px 20px;transform:translate(-50%,14px)}
.mega.drop::before{content:'';position:absolute;left:0;right:0;bottom:100%;height:16px}
.has-drop:hover .drop,.has-drop:focus-within .drop,.has-drop.is-open .drop{opacity:1;visibility:visible;transform:translate(-50%,0)}
.drop__list{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.drop__list a{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:14px;color:var(--ink);transition:.18s}
.drop__list a:hover,.drop__list a:focus-visible,.drop__list a[aria-current]{background:var(--aqua-l)}
.drop__ic{width:36px;height:36px;border-radius:11px;background:var(--aqua-l);color:var(--aqua-d);display:grid;place-items:center;flex:none;transition:.18s}
.drop__ic .ic{width:17px;height:17px}
.drop__list a:hover .drop__ic,.drop__list a:focus-visible .drop__ic{background:var(--aqua);color:#fff}
.drop__list b{display:block;font-size:14px;font-weight:700;line-height:1.3}
.drop__list small{display:block;font-size:12px;font-weight:300;color:var(--body);line-height:1.4}
@media (min-width:901px) and (max-width:1180px){.marea{grid-template-columns:1fr}.marea__towns{grid-template-columns:repeat(3,minmax(0,1fr))}}

@media(max-width:900px){
  /* Service Area and Company open in place, like an accordion. */
  .menu .has-acc>a{color:var(--ink);font-size:15.5px;font-weight:600;letter-spacing:0;text-transform:none;padding-bottom:12px}
  .menu .has-acc>a::after{content:none!important}
  .menu .has-acc .cv{display:inline-block;font-size:11px;margin-left:auto;transition:transform .2s}
  .menu .has-acc>.mega{display:none;position:static;width:auto;transform:none;opacity:1;visibility:visible;padding:0 0 14px;border-radius:0;box-shadow:none;border-top:0}
  .menu .has-acc.is-open>.mega{display:block}
  .menu .mega.drop::before{content:none}
  .marea{grid-template-columns:1fr;gap:12px}
  .marea__intro .klabel,.marea__title,.marea__text{display:none}
  .marea__intro{order:2}
  .marea__intro .btn{width:100%}
  .marea__towns{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .marea__towns a,.marea__towns span{font-size:13.5px;padding:8px 10px;min-height:44px}
  .drop__list a{min-height:48px;padding:6px 8px}
  .drop__list small{display:none}
}

/* ---------- Reviews slider (core data-prt-slider) ---------- */
.revs.revs--slider{display:flex;--prt-slides:3;--prt-gap:24px;padding:12px 6px 26px;margin:-12px -6px -26px}
.revs--slider>.rev{flex:0 0 calc((100% - (var(--prt-slides) - 1) * var(--prt-gap)) / var(--prt-slides))}
.revs--slider>.rev:hover{transform:translateY(-4px)}
.revslider .prt-slider__nav{margin-top:26px}
.revslider .prt-slider__dot.is-active::before{background:var(--aqua-d)}
@media(max-width:1080px){.revs.revs--slider{--prt-slides:2}}
@media(max-width:620px){.revs.revs--slider{--prt-slides:1;--prt-gap:14px}.revs--slider>.rev:hover{transform:none}}

/* Favourites: the photo links to the rental; Add to Cart sits beside the price. */
a.ph{display:block}
.prow .prt-atc{padding:11px 18px;font-size:13.5px;gap:7px}
.prow .prt-atc .prt-atc__ic{width:16px;height:16px}

/* ---------- Blog (core prt-blog), in Splash's look (2026-10-06) ----------
   The archive hero and the article head become the deep-water band the other
   inner pages use; the newsletter strip and the active pill use darker water
   so white text keeps 4.5:1 (white on the light aqua is only 2.6:1). */
.prt-blog-hero,.prt-blog-art{position:relative;overflow:hidden;isolation:isolate;
  background:linear-gradient(120deg,var(--deep),var(--deep2) 62%,#0B6F84)}
.prt-blog-hero::before,.prt-blog-art::before{content:'';position:absolute;z-index:-1;width:460px;height:460px;border-radius:50%;border:2px solid rgba(255,255,255,.07);top:-210px;right:-110px;pointer-events:none}
.prt-blog-hero::after,.prt-blog-art::after{content:'';position:absolute;z-index:-1;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,rgba(16,181,206,.34),transparent 68%);top:-90px;left:6%;pointer-events:none}
.prt-blog-hero{padding-bottom:clamp(48px,6vw,72px)}
.prt-blog .prt-blog-hero__title,.prt-blog .prt-blog-art__title{color:#fff;letter-spacing:-.035em}
.prt-blog-hero__intro,.prt-blog-art__dek,.prt-blog-art .prt-blog-meta{color:#C3E0E9;font-weight:300}
.prt-blog-art .prt-blog-meta{font-weight:600}
.prt-blog-art .prt-blog-meta__item .ic{color:var(--sun)}
.prt-blog-art .prt-blog-meta__by a{color:#fff}
.prt-blog-hero .prt-blog-eyebrow,.prt-blog-art .prt-blog-eyebrow{color:var(--sun)}
.prt-blog-hero .prt-blog-crumbs ol,.prt-blog-art .prt-blog-crumbs ol{color:#C3E0E9}
.prt-blog-hero .prt-blog-crumbs a,.prt-blog-art .prt-blog-crumbs a{color:#fff}
.prt-blog-hero .prt-blog-crumbs__here,.prt-blog-art .prt-blog-crumbs__here{color:#C3E0E9}
.prt-blog-hero .prt-blog-search{border-color:transparent;box-shadow:0 12px 30px rgba(0,0,0,.22)}
.prt-blog-hero :focus-visible,.prt-blog-art :focus-visible{outline-color:#fff}
/* Article head with a photo: the band stops part-way down the photo. */
.prt-blog-art--img{background:linear-gradient(180deg,transparent calc(100% - 230px),var(--page) calc(100% - 230px)),linear-gradient(120deg,var(--deep),var(--deep2) 62%,#0B6F84)}
.prt-blog-art__fig img{border:6px solid #fff;box-shadow:0 22px 50px rgba(10,58,74,.22)}
@media(max-width:620px){.prt-blog-art--img{background:linear-gradient(180deg,transparent calc(100% - 140px),var(--page) calc(100% - 140px)),linear-gradient(120deg,var(--deep),var(--deep2))}.prt-blog-art__fig img{border-width:4px}}
/* Cards: Splash's rounder cards with the aqua lift on hover. */
.prt-blog-card,.prt-blog-feature__card{border-radius:var(--r);border-color:var(--line);box-shadow:var(--sh)}
.prt-blog-card:hover,.prt-blog-card:focus-within{box-shadow:var(--sh-h);border-color:var(--aqua)}
.prt-blog-card__tag{color:var(--aqua-d);background:var(--aqua-l)}
.prt-blog-pill[aria-current]{background:#04707f;border-color:#04707f;color:#fff}
.prt-blog-pill:hover{border-color:var(--aqua)}
/* Newsletter strip: deep water, sun badge, coral button. */
.prt-blog-news__in{background:linear-gradient(120deg,var(--deep),var(--deep2));color:#fff}
.prt-blog-news__in::before{background:var(--aqua);opacity:.28}
.prt-blog-news__copy p{color:#C3E0E9;opacity:1;font-weight:300}
.prt-blog-meta__avatar,.prt-blog-author__avatar{background:#04707f;color:#fff}

/* Item page (core 1.2 photo layout): spec values never break mid-measurement
   ("20'x20'x1 / 0'"); the label wraps instead. */
body.prt .io_product_infobox .io_product_detail_box p:last-child{white-space:nowrap;flex:none}
body.prt .io_product_infobox .io_product_detail_box p:first-child{flex:1 1 auto;min-width:0}
/* The price and "per day" sit together (the columns were equal halves on phones). */
body.prt .io_product_infobox .io_product_price_box{grid-template-columns:auto auto minmax(0,1fr)!important;align-items:baseline!important;column-gap:8px!important}

/* =====================================================================
   Polish pass 2026-10-06 (after round 3): readable brand colours.
   The design's bright coral (#FF6B4A) and aqua (#10B5CE) stay for shapes,
   stripes and big decoration; wherever white text sits on them, or they
   colour small text, a deeper shade takes over so text reaches 4.5:1
   (3:1 for big headings and prices).
   ===================================================================== */
:root{
  --aqua-d:#067A8D;          /* small aqua text, aqua buttons: 5.0:1 on white, 4.6:1 on the pale aqua */
  --aqua-h:#0A899E;          /* heading highlights: 3.3:1 or better on every light ground (round 5: was #0C98AE, 2.8:1 over the pale blobs) */
  --coral-b:#D4401F;         /* coral button ground under white text: 4.6:1 */
  --coral-bh:#B8361A;        /* its hover */
  --coral-t:#C93D1E;         /* small coral text: 4.6:1 on the pale bands */
  --coral-p:#E14B2B;         /* big coral prices: 3.6:1 or better */
  --green-d:#1C805A;         /* green grounds under white numbers: 4.9:1 */
  --prt-cta-ground:#D4401F;  /* the shared parts and plugins use the same coral */
  --prt-cta-text:#C93D1E;
}
.b-coral,.elementor .b-coral{background:var(--coral-b);box-shadow:0 7px 20px rgba(212,64,31,.3)}
.b-coral:hover,.elementor .b-coral:hover{background:var(--coral-bh);box-shadow:0 14px 30px rgba(212,64,31,.38)}
.b-aqua,.elementor .b-aqua{background:var(--aqua-d);box-shadow:0 7px 20px rgba(6,122,141,.3)}
.b-aqua:hover{background:#05606F}
.navcart b{background:var(--coral-b)}
.search-form .search-submit{background:var(--coral-b)}
body.prt .pageDateRangeWrapper .elementor-button{background:var(--coral-b)!important;box-shadow:0 7px 20px rgba(212,64,31,.3)!important}
body.prt .pageDateRangeWrapper .elementor-button:hover{background:var(--coral-bh)!important}
body.prt .io_product_infobox .item_add_set_date{background:var(--coral-b)!important;box-shadow:0 7px 20px rgba(212,64,31,.3)!important}
body.prt .io_product_infobox .item_add_set_date:hover{background:var(--coral-bh)!important}
body.prt .wdz-browse__add{box-shadow:0 6px 16px rgba(212,64,31,.26)!important}
/* Small coral words, big coral prices. */
.cbd .tag,.spstep small{color:var(--coral-t)}
.price b,body.prt .wdz-browse__card-price,body.prt .io_product_infobox .io_product_price_left{color:var(--coral-p)!important}
/* Heading highlights in a deeper aqua (big text, 3:1). */
h2 em{color:var(--aqua-h)}
body.prt .io_category_wrapper .catNameIO .io_forrent{color:var(--aqua-h)!important}
/* Numbers and initials on colour. */
.znum{background:var(--aqua-d)}
.cstep:nth-child(3n+2) .znum{background:var(--green-d)}
.cstep:nth-child(3n) .znum{background:var(--coral-b)}
.av1{background:var(--aqua-d)}.av2{background:var(--coral-b)}.av3{background:var(--green-d)}
/* Mega menu: the unit count badge. */
.mcount{background:var(--aqua-d);font-size:11px}

/* Call to action: the coral-to-sun band runs deeper, and its photo only ever
   darkens it (multiply), so white text keeps 4.5:1 across the whole band. */
.cta{background:linear-gradient(115deg,#C2381B,#CF4A1E 52%,#BF530D)}
/* The sunny end of the design's band, kept as a glow in the corners, away from the text. */
.cta::after{content:'';position:absolute;z-index:1;pointer-events:none;inset:0;
  background:radial-gradient(520px 340px at 100% 0,rgba(255,197,65,.5),transparent 70%),radial-gradient(420px 300px at 0 100%,rgba(255,197,65,.28),transparent 70%)}
.cta .bgimg{opacity:.32;mix-blend-mode:multiply;filter:grayscale(.3)}
.ctain p{color:#fff;font-weight:400}
.ctain h2{text-shadow:0 2px 18px rgba(80,20,0,.25)}

/* Event photos: a firmer fade under the titles, so they read on bright photos. */
.evt::before{background:linear-gradient(180deg,rgba(10,58,74,0) 18%,rgba(10,58,74,.62) 50%,rgba(10,58,74,.95) 100%)}
.ebd h3,.ebd p{text-shadow:0 1px 10px rgba(5,30,40,.35)}

/* Review slider: quieter inactive dots that still reach 3:1, no dot rows on phones
   (arrows and swipe stay; eight dots wrapped onto two lines there). */
.revslider{--prt-dot:#6F939E;--prt-dot-hover:var(--aqua-d);--prt-dot-active:var(--aqua-d)}
.revslider .prt-slider__dot.is-active::before{background:var(--aqua-d)}
@media(max-width:620px){.revslider .prt-slider__dots{display:none}.revslider .prt-slider__nav{gap:18px}}

/* About page stats band: two by two on phones instead of four tall rows. */
@media(max-width:620px){.prts-band__list{grid-template-columns:1fr 1fr;gap:26px 12px}}
@media(max-width:900px){.cta::after{background:radial-gradient(220px 130px at 100% 0,rgba(255,197,65,.45),transparent 70%),radial-gradient(200px 120px at 0 100%,rgba(255,197,65,.25),transparent 70%)}}
/* Event pages' rental picks: Add to Cart in Splash's coral, as on the home page favourites. */
.pe-pick .prt-atc:not(.is-link){background:var(--coral-b);color:#fff;border-radius:13px;box-shadow:0 6px 16px rgba(212,64,31,.26)}
.pe-pick .prt-atc:not(.is-link):hover{background:var(--coral-bh);filter:none}

/* Round 1 polish (desktop rhythm).
   Shared page sections take turns with Splash's own page/pale bands: the theme
   prints a hidden .sp-alt marker before each one that lands on the pale band
   (functions.php), so two plain sections never stack into a 176px gap. Panels
   that are pale themselves turn white there so they still read as panels. */
@media(max-width:620px){:root{--prt-section-y:60px}}
.sp-alt+.prts{background:rgba(234,247,250,.8);padding-top:var(--prt-section-y)}
.sp-alt+.prts :is(.prts-check__rules,.prts-weather__box,.prts-rleave__box){background:#fff}
/* Headings break into even lines instead of leaving one word alone. */
:is(h1,h2){text-wrap:balance}

/* Round 2 polish (phones, 320-414).
   Every link and button a thumb can hit is at least 44px tall: footer lists and
   town chips, socials, the top bar's phone link, the header cart and burger,
   breadcrumbs and the phone menu's Inventory heading. */
@media(max-width:900px){
  .burger{min-width:44px;min-height:44px}
  .navcart{width:44px;height:44px}
  .menu .has-mega>a{min-height:44px;padding-top:12px}
  .fcol ul{gap:0}
  .fcol ul a{min-height:44px;min-width:44px;align-items:center}
  .logo{min-height:44px}
  .fcol li:not(:has(a)){padding:11px 0}
  .fareas a{display:inline-flex;align-items:center;min-height:44px;font-size:14px}
  .fsoc a{width:44px;height:44px}
  .crumbs a{display:inline-block;padding-block:12px;margin-block:-12px;min-width:44px;text-align:center}
  .ctile a{display:inline-flex;align-items:center;min-height:44px;margin-block:-11px}
  .topbar a{display:inline-flex;align-items:center;min-height:44px}
  .topbar{padding:0}
  .topbar .wrap{row-gap:0}
}

@media(max-width:620px){
  /* The opening hours are in the footer and on the contact page: on a phone the
     top bar keeps the rating and the phone number, one short line. */
  .topbar .tb-hours{display:none}
  /* Small uppercase labels stay at 12px or more. */
  .fld label,.spform__form label,.ctile small{font-size:12px}
  .hstat span{font-size:12px}
  .cat .cbd .tag{font-size:11px}
  body.prt .io_product_infobox .io_product_detail_box p:first-child{font-size:12px!important}
  .fcol ul a{font-size:14.2px}
}
/* The phone menu's category tiles: below 380px a thumbnail left about 70px for
   the name, so "Concessions" and "Equipment" broke mid-word. There the tiles
   show the name alone. */
@media(max-width:380px){
  .menu .mshot{display:none}
  .menu .mcat{padding:8px 12px}
}
/* Core sections and the blog use Splash's own side gutter (24px, 16px on phones), per CORE round 2. */
body{--prt-gutter:24px}
@media(max-width:620px){body{--prt-gutter:16px}}

/* Round 3 polish (tablets, 768-1366). */
/* The hero is a flex row, so below 900px its .wrap shrank to its content and
   the copy and the date card sat in a 540px column with 90px empty either
   side at 768. It takes the full width again; from 700px the copy and the
   date card sit side by side, as on desktop, instead of a 1,000px tall stack. */
.hero>.wrap{width:100%}
@media(min-width:700px) and (max-width:900px){
  .hgrid:not(.hgrid--solo){grid-template-columns:minmax(0,1fr) minmax(0,.82fr);gap:28px;align-items:center}
  .hgrid:not(.hgrid--solo) .hbtns{gap:10px}
  .hgrid:not(.hgrid--solo) .hbtns .btn{padding:13px 18px}
  .hgrid:not(.hgrid--solo) .bookcard{padding:24px 22px}
}
/* Hero stats on small laptops: two even columns, so "Cleaning between
   rentals" is one line instead of three stacked words. */
@media(min-width:901px) and (max-width:1180px){.hstats{grid-template-columns:repeat(2,minmax(0,1fr))}.hstat span{max-width:none}}
/* How it works: three across on tablets (a single 520px column left two
   thirds of a 768px screen empty and made the section 1,100px tall). */
@media(min-width:700px) and (max-width:900px){
  .spsteps,.spsteps--3{grid-template-columns:repeat(3,minmax(0,1fr));max-width:none;gap:18px}
  .spsteps--2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none}
  .spsteps::before{top:63px;bottom:auto;left:16%;right:16%;border-left:0;border-top:3px dashed rgba(16,181,206,.32)}
  .spstep{padding:26px 18px 28px}
  .spstep h3{font-size:18px}
}
/* Inventory page: four category cards a row from 1001px (three left a lone
   pair under two full rows at 1024), and on tablets each card keeps its
   two-line description (only phones drop it). */
@media(min-width:1001px) and (max-width:1100px){body.prt .io_catdiv2:not(.list-view){grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:24px 18px!important}}
@media(min-width:621px) and (max-width:800px){
  html body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO.catDescriptionIO_small{display:-webkit-box!important}
  body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner{padding:8px 18px 18px!important}
  body.prt .io_catdiv2 .io_item2_listcat .rentNameIO{font-size:17px!important}
  body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO,body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO *{font-size:14px!important}
}
/* Footer on tablets: the logo, blurb, socials and Book Now across the top,
   then the three lists side by side (two-by-two left a tall empty column). */
@media(min-width:621px) and (max-width:1080px){
  .fgrid{grid-template-columns:1fr 1fr 1.25fr;gap:34px 28px}
  .fgrid>.fbrand{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px}
  .fbrand p{margin:0;flex:1 1 300px;max-width:60ch}
  .fbrand .fsoc{margin:0}
}
@media(min-width:621px) and (max-width:1080px){
  .fgrid>.fbrand .logo{margin-right:auto}
  .fgrid>.fbrand p{order:5;flex:1 1 100%;max-width:72ch}
}
/* Card headings break evenly ("We deliver and set / up" at 768). */
.spstep h3,.cstep h3{text-wrap:balance}

/* ---------- Round 4 polish (keyboard) ---------- */
/* The ticker never stops on its own, and hover is no help from a keyboard:
   a pause button at the right end of the ribbon (hidden when motion is
   reduced, since the ribbon is static then). */
.spticker::after{content:"";position:absolute;top:0;right:0;bottom:0;pointer-events:none;
  width:calc(max(16px,(100% - var(--max)) / 2 + 24px) + 100px);background:linear-gradient(90deg,rgba(11,111,132,0),#0B6F84 50px)}
.spticker.is-paused .spticker__track{animation-play-state:paused}
.spticker__pause{position:absolute;z-index:2;top:50%;right:max(16px,calc((100% - var(--max)) / 2 + 24px));transform:translateY(-50%);
  width:44px;height:44px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;cursor:pointer;
  background:#fff;color:var(--deep);box-shadow:0 4px 12px rgba(10,58,74,.25);transition:background .2s}
.spticker__pause:hover{background:var(--aqua-l)}
.spticker .spticker__pause:focus-visible{outline:3px solid #fff;outline-offset:3px}
.spticker__pause svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.spticker__pause .tp-play{display:none;fill:currentColor;stroke-width:1.5}
.spticker__pause[aria-pressed="true"] .tp-pause{display:none}
.spticker__pause[aria-pressed="true"] .tp-play{display:block}
@media(prefers-reduced-motion:reduce){.spticker__pause,.spticker::after{display:none}}
/* Phone menu: the "See the full service area" button is now the last item of
   the town list, so Tab reaches it after the towns, where it sits (it was
   moved below them with CSS order, so focus jumped down and back up). */
.marea__all{display:none}
@media (max-width:900px){
  .marea__intro{display:none}
  .marea__towns .marea__all{display:block;grid-column:1/-1;margin-top:4px}
  .marea__towns .marea__all a{width:100%;justify-content:center;padding:12px 20px;border:0;border-radius:14px;font-size:13.5px;font-weight:700;
    background:var(--coral-b);color:#fff;box-shadow:0 7px 20px rgba(212,64,31,.3)}
}
/* Focus rings that read on white: the bright aqua was 2.4:1 against the white
   header, panels and cards (3:1 is the floor), the deeper aqua is 3.8:1.
   Dark bands keep their white ring; the white date card inside the hero gets
   the aqua one back (a white ring on a white card did not show at all). */
.menu a:focus-visible,.btn:focus-visible,.acols a:focus-visible,.faqlist summary:focus-visible,.navcart:focus-visible,.burger:focus-visible,
.fld input:focus-visible,.fld select:focus-visible,.spfaq summary:focus-visible,.marea__towns a:focus-visible{outline:3px solid var(--aqua-d);outline-offset:2px}
:is(.hero,.aboutband:not(.aboutband--light),footer,.topbar,.cta,.pghd,.spticker) :is(a,button,summary):focus-visible{outline-color:#fff}
.bookcard.bookcard :is(a,button,input,select,textarea):focus-visible{outline:3px solid var(--aqua-d);outline-offset:2px}
/* An open panel no longer hides the lower edge of its menu item's ring. */
.menu>li>a:focus-visible{position:relative;z-index:3}
/* Skip link: white on the dark top bar (it was dark on dark). */
.skip:focus{z-index:100001;background:#fff;color:var(--deep);box-shadow:0 8px 24px rgba(10,58,74,.35);text-decoration:none}
.skip:focus-visible{outline:3px solid var(--aqua-d);outline-offset:2px}
/* The maps take keyboard focus (to pan with the arrow keys): show it. */
.spmap:focus-within{outline:3px solid var(--aqua-d);outline-offset:3px}

/* ---------- Round 5 polish (screen readers / menu consistency) ---------- */
/* Desktop menu panels open on hover, a tap, or Enter / Space / Arrow Down
   (theme.js), no longer on keyboard focus alone, like the suite's other
   themes. A hidden panel's links are not Tab stops. */
@media (min-width:901px){
  .has-mega:focus-within:not(:hover):not(.is-open) > .mega,
  .has-drop:focus-within:not(:hover):not(.is-open) > .drop{opacity:0;visibility:hidden;pointer-events:none}
}
/* Focus rings: no fade in from the button's white text colour. */
.btn{transition-property:background-color,color,border-color,box-shadow,transform}

/* ---------- Round 6 polish (colour & states) ---------- */
/* Decorative CSS text is not read aloud: the FAQ +, list ticks, breadcrumb
   and phone-menu chevrons keep their look (old browsers use the first
   declaration) but drop out of the accessible name. */
#faq summary::after,.spfaq summary::after{content:'+';content:'+' / ''}
.sptext .entry-content ul li::before{content:'\2713';content:'\2713' / ''}
.crumbs li+li::before{content:"›";content:"›" / ""}
@media (max-width:900px){.menu>li:not(.menu-cta):not(.has-mega)>a::after{content:'\203A';content:'\203A' / ''}}
body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner>a::after{content:'View rentals \2192';content:'View rentals \2192' / ''}
/* White signs on the bright aqua were 2.4:1 (icons need 3:1): the open or
   hovered FAQ "+" and the hovered Company-menu icons sit on the deeper aqua. */
#faq details[open] summary::after,.spfaq details[open] summary::after,
#faq summary:hover::after,.spfaq summary:hover::after,
.drop__list a:hover .drop__ic,.drop__list a:focus-visible .drop__ic{background:var(--aqua-d)}
/* Hover and press states on aqua: white text and icons on the bright aqua were
   2.5:1 (footer socials and towns, service-area town buttons, the rentals grid
   toggle). They take the deeper aqua the buttons already use (5:1). */
.fsoc a:hover,.fareas a:hover,.acols a:hover{background:var(--aqua-d);border-color:var(--aqua-d)}
body.prt .io_view_toggle_btn.active{background:var(--aqua-d)!important;border-color:var(--aqua-d)!important}
/* IO's "Set Date" button on the item page was the bright coral (2.7:1). */
body.prt #bookNowBtn,body.prt [class*="add_cart_"] .elementor-button{background:var(--coral-b)!important;box-shadow:0 7px 20px rgba(212,64,31,.3)!important}
body.prt #bookNowBtn:hover,body.prt [class*="add_cart_"] .elementor-button:hover{background:var(--coral-bh)!important}
/* Breadcrumbs at full strength (the 90% fade left them at 4.1:1 on the page). */
.crumbs ol{opacity:1}
/* Photo page headers: a firmer wash on the bright right-hand side, and the
   ghost button on a dark glass instead of a light one (white text there
   dipped to 3.7:1 over pale photos on phones). */
.pghd .hbg::after{background:linear-gradient(100deg,rgba(10,58,74,.9) 0%,rgba(10,58,74,.8) 50%,rgba(6,104,122,.76) 100%)}
.pghd .b-ghost{background:rgba(6,40,52,.34)}
.pghd .b-ghost:hover{background:#fff}
/* Hero stat labels: a lighter mist (3.7:1 → 4.9:1 on the deep band). */
.hstat span{color:#AFD6E0}
/* Blog hero: the aqua glow sat right behind the sun-yellow eyebrow on phones. */
.prt-blog-hero::after,.prt-blog-art::after{background:radial-gradient(circle,rgba(16,181,206,.18),transparent 68%)}
/* Blog tag pills on hover: the pale aqua, not the line grey (4.2:1). */
.prt-blog-card__tag:hover{background:var(--aqua-l)}
/* Form fields had a 1.2:1 outline on white: a 3:1 one now, so each box is
   visible before it is clicked (the focus colour is unchanged). */
.fld input,.fld select,.spform__form input,.spform__form textarea{border-color:#6F939E}
.fld input:focus,.fld select:focus,.spform__form input:focus,.spform__form textarea:focus{border-color:var(--aqua-d)}
/* Review stars carry the rating: sun yellow alone was 1.6:1 on white, so each
   star gets a deeper amber edge (3.6:1) and keeps its fill. */
.stars,.rtop .st{-webkit-text-stroke:.8px #B87900;paint-order:stroke fill}
/* Small coral words on hover ("View rentals →", "Read more") take the readable
   coral: the bright one was 2.8:1 on the white cards. */
body.prt .io_catdiv2 .io_item2_listcat:hover .cat_div_inner>a::after{color:var(--coral-t)}
/* BookFlow draws its focus rings in the theme's accent (sun yellow: 1.6:1 on
   its white cards, qty buttons and date window). Deep aqua rings there (5:1);
   the close button on the window's aqua header keeps a white one. */
body.prt :is(.wdz-browse,.wdz-browse-fab,.wdz-browse-coupons,.wdz-form,.wdz-gate) :focus-visible{outline-color:var(--aqua-d)!important}
body.prt .wdz-gate .wdz-gate__close:focus-visible{outline-color:#fff!important}
/* With the deeper primary, core's small aqua words (eyebrows, tags) measured
   4.4:1 on the tinted coral and mint bands; one step deeper holds 5:1+ on every
   Splash ground. IO's breadcrumbs on the pale aqua header take the same. */
:root{--prt-primary-text:#05697A}
.pagehead--io .crumbs a{color:#05697A}
a.prt-blog-card__tag.prt-blog-card__tag:hover{background:var(--aqua-l)}
.pghd .hlede{color:#D5EBF1}
/* Home hero on phones and tablets: the diagonal wash is only a few hundred
   pixels wide there, so its bright aqua end lay under the words (stat labels
   2.5:1, "Browse rentals" 3.1:1 over the photo). An even deep wash instead. */
@media (max-width:900px){.hero .hbg::after{background:linear-gradient(180deg,rgba(10,58,74,.9) 0%,rgba(10,58,74,.84) 60%,rgba(8,70,88,.8) 100%)}}
/* Tick circles: a fainter sun wash so the yellow tick holds 4.5:1 on the deep
   band, and the deeper green on the light band (the bright green was 2.2:1). */
.ticks i{background:rgba(255,197,65,.13)}
.aboutband--light .ticks i{color:var(--green-d)}
/* Page-header badge on a darker glass (4.47:1 over the aqua side on phones). */
.pghd .hbadge{background:rgba(6,40,52,.3)}
/* Phone menu: the "›" beside a plain link in the deeper aqua (bright aqua 2.5:1). */
@media (max-width:900px){.menu>li:not(.menu-cta):not(.has-mega)>a::after{color:var(--aqua-d)}}

/* Round 7 polish (performance): the Inventory panel's photos wait in data-*
   until the menu is about to be used (theme.js); until then the tile shows
   its own ground. Without JavaScript the <noscript> copy is shown instead. */
.mshot img:not([src]){display:none}
/* Until Poppins arrives, text is set in Arial scaled to its width and line
   metrics (size-adjust/ascent/descent from the font files), so the swap does
   not re-wrap headings and push the page down. */
@font-face{font-family:'Poppins Fallback';src:local('Arial'),local('ArialMT');font-weight:100 500;size-adjust:110.6%;ascent-override:94.93%;descent-override:31.64%;line-gap-override:9.04%}
@font-face{font-family:'Poppins Fallback';src:local('Arial Bold'),local('Arial-BoldMT');font-weight:600 900;size-adjust:106.5%;ascent-override:98.6%;descent-override:32.87%;line-gap-override:9.39%}

/* Round 8 polish (booking flow).
   - Phones: the favourites rail scrolls sideways, and the screen-reader name
     inside each Add to Cart button (absolutely placed) was positioned against
     the section, not the rail, so the last card's one-pixel label stood 2,677px
     to the right. Chrome then widened the phone's layout viewport to 1,560px:
     BookFlow's date window, a fixed full-screen layer, opened centred in that
     wider box, off the screen. The rail is the labels' box now. */
.prods,.revs{position:relative}
/* - BookFlow's playful style blends the primary into the sun accent for its
     window header and main buttons; with Splash's teal that ends in olive
     (white text 2.4-3.7:1). A deep teal blend instead: white 5.3:1 and up.
   - BookFlow's own greys (weekday letters 2.5:1, "Earliest available date"
     and summary labels 3.1:1, item calendar legend 4.4:1) use Splash's muted
     ink. Buttons don't inherit a font, so BookFlow's buttons, calendar days
     and date bar were in Arial: they take Poppins. */
html body.prt.wdz-style-playful .wdz-gate__header{background:linear-gradient(135deg,var(--aqua-d),var(--deep2))!important}
html body.prt.wdz-style-playful :is(.wdz-gate__btn--primary,.wdz-form__btn--primary,.wdz-form__btn--submit){background:linear-gradient(135deg,var(--aqua-d),var(--deep2))!important;box-shadow:0 8px 18px rgba(10,58,74,.24)!important}
html body.prt.wdz-style-playful :is(.wdz-form__btn--primary,.wdz-form__btn--submit).is-disabled{background:#E2E5EA!important;box-shadow:none!important}
html body.prt :is(.wdz-gate,.wdz-form) :is(.wdz-cal__wd,.wdz-gate__hint,.wdz-gate__summary dt){color:#4E6D78!important}
html body.prt .wdz-itemcal__legend span{color:#4E6D78!important}
body.prt :is(.wdz-gate,.wdz-gate-sticky,.wdz-form,.wdz-itemcal,.wdz-browse,.wdz-browse-fab,.wdz-browse-coupons) :is(button,input,select,textarea){font-family:inherit}

/* Round 9 polish (typography).
   - Headings: h1/h2 were balanced in round 1; h3-h6, product and card names
     and FAQ questions now balance too, so a two-line title never ends on one
     word ("5000 Watt Quiet Inverter / Generator", "Does an adult need to be /
     watching?"). Running text wraps "pretty": no lone short word on the last
     line of a paragraph, list item, quote or caption.
   - Measure: the home/event/town FAQ answers ran 105-116 characters a line
     across the 860px card; they stop at about 70.
   - Hero: the trust line breaks only between its items ("5.0 from / 280
     reviews" no longer splits); the stat labels balance in a slightly wider
     column ("Cleaning between rentals" in two lines, not three).
   - Small print: uppercase labels and tags that were 9.5-10.5px are 10.5-
     11.5px on wide screens (phones already had 11-12px); the event cards'
     "Learn More" was 11.5px and is 13px.
   - Weights: Poppins 500 was fetched on every page for the closed Inventory
     panel's footer alone, and 900 for core's bold counts on FAQ/Safety/
     Reviews. Both use their neighbours (400, 800), two font files fewer. */
:is(h3,h4,h5,h6,summary,.prts-fqq,[class*="__title"],[class*="card-name"],[class*="__name"]){text-wrap:balance}
:is(p,li,dd,blockquote,figcaption){text-wrap:pretty}
:is(#faq,.spfaq) details p{max-width:72ch}
.h1sub .nw{white-space:nowrap}
.hstat span{max-width:17ch;text-wrap:balance}
@media(min-width:621px){
  .lname small{font-size:10.5px}
  :is(.fld label,.spform__form label,.cbd .tag,.spstep small){font-size:11.5px}
  .price small{font-size:11px}
}
.ebd > span:last-child{font-size:13px}
:is(.mf span,.rtop .tx,.fbot .by,.aboutband--light .ticks li){font-weight:400}
body.prt :is(.prts-fqtabs,.prts-check__count,.prts-rwall__filters) b{font-weight:800}

/* Round 10 polish (imagery).
   - Elementor's `.elementor img{height:auto}` weighs the same as the
     design's `.ph img`/`.hbg img` and loads later, so on every Elementor-built
     page the cover photos fell back to their own shape: the phone hero photo
     stopped 260px down a 980px hero, the About stack's tall photo filled 162 of
     395px, category and "how we clean" photos left a gradient strip under
     them, and the desktop hero photo hung from the top instead of centring.
     One step more weight puts the photos back to filling their frames. */
body :is(.ph,.hbg,.bgimg) > img{height:100%}

/* ---------- Round 11 polish (motion & interaction states) ---------- */
/* Only what is meant to move is animated. These rules animated every property
   ("all"): sections fading in with `.reveal` slid their padding for 0.8s when
   the window was resized, and the category arrow animated `gap` (a layout
   change on every frame). Colour, shadow and transform still ease as before. */
.js .reveal{transition-property:opacity,transform}
.menu>li>a,.mcat,.mshot,.mshot img,.mcat b,.cat,.cat .ph img,.card,.pimg .ph img,.evt,.evt .ph img,.rev,.acols a,
.fld input,.fld select,#faq details,#faq summary::after,.fsoc a,.fcol ul a,.fareas a,.navcart,
.spfaq details,.spfaq summary::after,.spstep,.spform__form input,.spform__form textarea,
.marea__towns a,.drop__list a,.drop__ic,body.prt .io_product_picbox .io_image_thumb,.cgo>span{
  transition-property:transform,opacity,color,background-color,border-color,box-shadow}
.mega{transition-property:opacity,transform,visibility}
body.prt .pageDateRangeWrapper .elementor-button,body.prt .io_catdiv2 .io_item2_listcat,body.prt .io_catdiv2 .io_item2_listcat img,
body.prt .wdz-browse__card,body.prt .io_product_infobox .elementor-button.io_button{
  transition-property:transform,opacity,color,background-color,border-color,box-shadow!important}
/* "View Rentals →": the arrow slides (transform) instead of the gap widening. */
.cat:hover .cgo{gap:7px}
.cgo>span{display:inline-block;transition-duration:.26s}
.cat:hover .cgo>span{transform:translateX(5px)}
/* Inline phone links had no hover change. */
:is(.tbl,.bcnote) a:hover{text-decoration:underline;text-underline-offset:3px}
/* The 404/search "Search" button and the hero date card's fields had no hover
   change. */
.search-form .search-submit{transition:background-color .2s,transform .12s}
.search-form .search-submit:hover{background:var(--coral-bh)}
.search-form .search-submit:active{transform:translateY(1px)}
.fld :is(input,select):hover{border-color:#6F939E}
/* Touch screens keep :hover after a tap, so a tapped card stayed lifted with
   its photo zoomed. The lift and zoom are for a mouse. */
@media (hover:none){
  :is(.btn,.cat,.card,.evt,.rev,.mcat,.acols a,.fsoc a,.fareas a,.spstep,.post-navigation .nav-links a):hover{transform:none}
  :is(.cat,.card,.evt,.mcat):hover :is(.ph img,.mshot img){transform:none}
  body.prt :is(.io_catdiv2 .io_item2_listcat,.wdz-browse__card,.pageDateRangeWrapper .elementor-button,.io_product_infobox .item_add_set_date):hover{transform:none!important}
  body.prt .io_catdiv2 .io_item2_listcat:hover img{transform:none}
}
/* Press feedback: buttons and cards lifted on hover but showed nothing while
   pressed, and touch screens (no hover) got no feedback at all. */
.btn:active{transform:translateY(1px)}
.b-coral:active,.elementor .b-coral:active{box-shadow:0 3px 10px rgba(212,64,31,.3)}
.b-aqua:active{box-shadow:0 3px 10px rgba(16,181,206,.3)}
@media (hover:hover){:is(.cat,.card,.evt,.mcat,.spstep):active{transform:translateY(-2px)}}
@media (hover:none){:is(.cat,.card,.evt,.mcat):active{transform:scale(.985)}}
:is(.acols a,.fsoc a,.fareas a,.post-navigation .nav-links a):active{transform:translateY(0)}
:is(.navcart,.burger):active{transform:scale(.94)}
.spticker .spticker__pause:active{transform:translateY(-50%) scale(.92)}
body.prt :is(.pageDateRangeWrapper .elementor-button,.io_product_infobox .item_add_set_date):active{transform:translateY(1px)!important}
.navcart,.burger{transition-property:transform,background-color,border-color,color;transition-duration:.12s}

/* The floating clouds, balloons and bubbles behind the page, the page-header
   bubbles and the ticker never stop (WCAG 2.2.2). "Pause animations" (footer,
   and the ticker's own button) stills all of them; the choice is remembered
   from page to page (html.sp-still, set before the page paints). */
.sp-still :is(.scene i,.pghd__fx i,.spticker__track){animation-play-state:paused!important}
.fmotion{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:12px;cursor:pointer;
  border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);color:#D5EAF1;font:inherit;font-size:13px;font-weight:400;
  transition:background-color .2s,border-color .2s,color .2s}
.fmotion:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.4);color:#fff}
.fmotion:active{transform:translateY(1px)}
footer .fmotion:focus-visible{outline:3px solid #fff;outline-offset:2px}
.fmotion svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.fmotion .tp-play{display:none;fill:currentColor;stroke-width:1.5}
/* Its words say what it will do ("Pause animations" / "Play animations"). */
.fmotion .fm-play,.fmotion[data-still="true"] .fm-pause,.fmotion[data-still="true"] .tp-pause{display:none}
.fmotion[data-still="true"] .fm-play,.fmotion[data-still="true"] .tp-play{display:block}
.fmotion[hidden]{display:none}
.fbot .fmotion{margin-right:auto}
@media(max-width:900px){.fbot .fmotion{margin-inline:auto}}

/* Reduced motion. Elementor's own rule cut transitions only on pages it builds
   (not the blog, posts, search or 404); hover still lifted cards 7–9px and
   zoomed photos; the stopped ticker hid every item past the right edge. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
  :is(.btn,.cat,.card,.evt,.rev,.mcat,.acols a,.fsoc a,.fareas a,.spstep,.post-navigation .nav-links a,.navcart,.burger):is(:hover,:active){transform:none}
  :is(.cat,.card,.evt,.mcat):hover :is(.ph img,.mshot img),.cat:hover .cgo>span{transform:none}
  body.prt :is(.io_catdiv2 .io_item2_listcat,.wdz-browse__card,.pageDateRangeWrapper .elementor-button,.io_product_infobox .item_add_set_date):is(:hover,:active){transform:none!important}
  body.prt .io_catdiv2 .io_item2_listcat:hover img{transform:none}
  .spticker .spticker__pause:active{transform:translateY(-50%)}
  /* The page-header bubbles kept bobbing: `.pghd__fx i{animation:none}` lost to `.pghd__fx .d1` (more specific). */
  .pghd__fx :is(.d1,.d2,.d3){animation:none}
  /* Theme rules whose transition is !important and more specific than the floor above. */
  body.prt :is(.pageDateRangeWrapper .elementor-button,.io_catdiv2 .io_item2_listcat,.io_catdiv2 .io_item2_listcat img,.wdz-browse__card,.io_product_infobox .elementor-button.io_button){transition-duration:.01ms!important}
  .search-form .search-submit:active{transform:none}
  .spticker__track{width:auto;justify-content:center}
  .spticker__set{flex:1 1 auto;flex-wrap:wrap;justify-content:center;row-gap:10px;padding:0 16px}
  .spticker__set[aria-hidden="true"],.spticker__set span[aria-hidden="true"]{display:none}
  .fmotion{display:none}
}

/* ---------- Round 12 polish (inner company pages) ---------- */
/* The inner pages' core sections (About, Safety, FAQ, Reviews, Events, event
   pages) labelled their headings with plain small caps and drew round-ended
   800-weight buttons with no shadow, while the home page uses Splash's pill
   label with a sparkle and its soft-cornered, shadowed buttons. They now
   match the home page. */
.prts .prts-eyebrow{display:inline-flex;align-items:center;gap:8px;background:var(--aqua-l);color:#067A8D;padding:7px 18px;border-radius:999px;
  font-size:12px;font-weight:700;letter-spacing:.09em;margin-bottom:16px}
.prts .prts-eyebrow::before{content:"";width:14px;height:14px;flex:none;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linejoin='round'%3E%3Cpath d='M12 3.5 13.8 10l6.7 2-6.7 2L12 20.5 10.2 14l-6.7-2 6.7-2z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linejoin='round'%3E%3Cpath d='M12 3.5 13.8 10l6.7 2-6.7 2L12 20.5 10.2 14l-6.7-2 6.7-2z'/%3E%3C/svg%3E") center/contain no-repeat}
.prts :is(.prts-ctabox,.prts-rfeat__box,.prts-strip.is-bold) .prts-eyebrow,.prts.prts-rfeat .prts-eyebrow,.prts-pagehead.has-img .prts-eyebrow{background:rgba(255,255,255,.14);color:#fff}
/* Buttons: Splash's 14px corners, 700 weight and soft coloured shadow. */
.prts-btn{border-radius:14px;font-weight:700;font-size:14.5px;padding:14px 26px;
  transition:transform .26s,box-shadow .26s,background-color .26s,border-color .26s,color .26s}
.prts-btn:not(.prts-btn--ghost){box-shadow:0 7px 20px rgba(212,64,31,.3)}
.prts-btn:not(.prts-btn--ghost):hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(212,64,31,.36)}
.prts-btn:not(.prts-btn--ghost):active{scale:none;transform:translateY(1px);box-shadow:0 3px 10px rgba(212,64,31,.3)}
.prts-values__guar .prts-btn:not(.prts-btn--ghost),.prts-values__guar .prts-btn:not(.prts-btn--ghost):is(:hover,:active){box-shadow:0 7px 20px rgba(10,58,74,.22)}
.prts:not(.prts-strip.is-bold) .prts-btn--ghost:not(.prts-ctabox .prts-btn--ghost){background:#fff;color:var(--ink);border-color:var(--line)}
.prts:not(.prts-strip.is-bold) .prts-btn--ghost:not(.prts-ctabox .prts-btn--ghost):hover{background:#fff;border-color:var(--aqua);color:#067A8D;transform:translateY(-2px)}
.prts:not(.prts-strip.is-bold) .prts-btn--ghost:not(.prts-ctabox .prts-btn--ghost):active,.prts-btn--ghost:active{scale:none;transform:translateY(1px)}
/* The FAQ search button stays a pill inside its pill-shaped field. */
.prts-fqsearch .prts-btn{border-radius:999px}
.prts-fqsearch .prts-btn:not(.prts-btn--ghost),.prts-fqsearch .prts-btn:not(.prts-btn--ghost):is(:hover,:active){box-shadow:none;transform:none}
/* Event-page rental picks: the home favourites' Add to Cart. Core's hover rule
   (one class heavier than the coral one above) turned it teal on hover, on a
   teal edge; it stays coral, deepening like the home page's. */
.pe-pick .prt-atc:not([class*="btn"]):not(.is-link){border-radius:14px;font-size:14.5px;background:var(--coral-b);border-color:var(--coral-b);
  box-shadow:0 7px 20px rgba(212,64,31,.3);transition:transform .26s,box-shadow .26s,background-color .26s,border-color .26s}
.pe-pick .prt-atc:not([class*="btn"]):not(.is-link):not(.is-waiting):hover{background:var(--coral-bh);border-color:var(--coral-bh);transform:translateY(-2px)}
.pe-pick .prt-atc:not([class*="btn"]):not(.is-link):not(.is-waiting):active{scale:none;transform:translateY(1px);box-shadow:0 3px 10px rgba(212,64,31,.3)}
/* Touch: no hover lift (a tapped button kept it), the press still shows.
   Reduced motion: no movement; colour and shadow carry it. */
@media (hover:none){
  :is(.prts-btn,.pe-pick .prt-atc):hover{transform:none!important}
  :is(.prts-btn,.pe-pick .prt-atc:not(.is-link)):active{transform:translateY(1px)!important}
  .prts-fqsearch .prts-btn:active{transform:none!important}
}
@media (prefers-reduced-motion:reduce){:is(.prts-btn,.pe-pick .prt-atc):is(:hover,:active){transform:none!important}}

/* ---------- Round 13 polish (service area hub + town pages) ---------- */
/* The hub's and town pages' town list ("Proud to serve the following areas")
   was core's plain link list in newspaper columns, while the home page draws
   its towns as Splash's white tiles with an aqua pin. Same tiles here, three
   across beside the map (two on phones), 44px+; the town being viewed is the
   filled teal tile, "All areas in between" a quiet dashed one. */
.prts-amap__list{columns:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.prts-amap__list li{margin:0;display:flex}
.prts-amap__list :is(a,span){flex:1;min-height:48px;padding:12px 16px;gap:9px;background:#fff;border:1px solid var(--line);border-radius:14px;
  font-size:14.5px;font-weight:600;line-height:1.3;color:var(--ink);box-shadow:0 3px 10px rgba(10,58,74,.05);
  transition:background-color .25s,color .25s,border-color .25s,transform .25s}
.prts-amap__list svg{width:15px;height:15px;flex:none;color:var(--aqua-d)}
.prts-amap__list a:hover{background:#067A8D;border-color:#067A8D;color:#fff;text-decoration:none;transform:translateY(-3px)}
.prts-amap__list a:active{transform:translateY(0)}
.prts-amap__list a:is(:hover,[aria-current]) svg{color:#fff}
.prts-amap__list a[aria-current]{background:#067A8D;border-color:#067A8D;color:#fff;box-shadow:0 8px 20px rgba(6,122,141,.22);margin:0;padding:12px 16px;border-radius:14px}
@media (max-width:480px){.prts-amap__list a[aria-current]{padding:11px 13px}}
.prts-amap__list .is-more span{background:transparent;border-style:dashed;border-color:#A9CFDA;box-shadow:none;color:var(--body);font-weight:500}
.prts-amap__list a:focus-visible{outline:3px solid var(--aqua-d);outline-offset:2px}
@media (max-width:480px){.prts-amap__list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.prts-amap__list :is(a,span){padding:11px 13px;font-size:14px}}
@media (hover:none){.prts-amap__list a:hover{transform:none}}
@media (prefers-reduced-motion:reduce){.prts-amap__list a:is(:hover,:active){transform:none}}
/* Hover on the home page's town tiles and the footer's town chips: white on
   the bright aqua-d was 3.8:1; the deeper teal is 5:1. */
.fsoc a:hover,.fareas a:hover,.acols a:hover{background:#067A8D;border-color:#067A8D}
/* The footer's town chips now say which town page is open (aria-current); a
   town without a page is a plain chip, not an empty link. */
.fareas a[aria-current]{background:#067A8D;border-color:#067A8D;color:#fff}
.fareas span{font-size:12.8px;background:rgba(255,255,255,.04);border:1px dashed rgba(255,255,255,.16);border-radius:10px;padding:7px 15px}
@media (max-width:900px),(pointer:coarse){.fareas span{display:inline-flex;align-items:center;min-height:44px;font-size:14px}}
.acols a[aria-current]{background:#067A8D;border-color:#067A8D;color:#fff}
.acols a[aria-current] i{color:#fff}
/* Home page: the towns end with a link to the service-area page. */
.amore{margin:26px 0 0;text-align:center}
.amore a{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-weight:600;font-size:15px;color:#067A8D;text-decoration:none}
.amore a:hover{text-decoration:underline;text-underline-offset:4px}
.amore a:focus-visible{outline:3px solid var(--aqua-d);outline-offset:2px;border-radius:6px}

/* ---------- Round 14 polish (blog, search, 404, empty states) ---------- */
/* 404: one search pill like the blog/search heroes (icon, field and button in
   one white pill) instead of WordPress's bare field + separate button. */
.pagehead .sp-search{position:relative;display:flex;align-items:center;gap:8px;width:100%;max-width:560px;margin:10px auto 0;padding:6px 6px 6px 50px;
  background:#fff;border-radius:999px;box-shadow:0 12px 30px rgba(0,0,0,.22)}
.pagehead .sp-search:focus-within{outline:3px solid #fff;outline-offset:3px}
.sp-search__ic{position:absolute;left:19px;top:50%;translate:0 -50%;display:flex;color:#067A8D;font-size:1.15rem}
.pagehead .sp-search .search-field{flex:1;min-width:0;padding:.6em .2em;border:0;background:none;box-shadow:none;font-weight:500;color:var(--ink)}
.pagehead .sp-search .search-field::placeholder{color:#4E6D78;opacity:1}
.pagehead .sp-search .search-field:focus{outline:none}
.pagehead .sp-search .search-submit{flex:none;min-height:44px;padding:11px 24px}
@media (max-width:560px){.pagehead .sp-search{padding-left:44px}.sp-search__ic{left:16px}.pagehead .sp-search .search-submit{padding:11px 16px}}
/* Posts (and search results) without a picture: the pale wash with a small
   teal pencil read as an image that failed to load. Splash's deep-water
   ground with an aqua glow and a sunshine mark instead. */
:is(.prt-blog-card__ph,.prt-blog-feature__ph){position:relative;overflow:hidden;color:var(--sun);
  background:radial-gradient(circle at 18% 12%,rgba(16,181,206,.42),transparent 55%),linear-gradient(120deg,var(--deep),var(--deep2) 62%,#0B6F84)}
:is(.prt-blog-card__ph,.prt-blog-feature__ph)::after{content:"";position:absolute;width:260px;height:260px;right:-90px;bottom:-120px;border-radius:50%;border:2px solid rgba(255,255,255,.1);pointer-events:none}
.prt-blog-card--noimg .prt-blog-card__img,.prt-blog-feature__card--noimg .prt-blog-feature__img{background:var(--deep)}
/* Long post titles: cards stop at four lines (the full title stays the
   link's name); a long article title is sized by core's --long class. */
.prt-blog-card__title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4;overflow:hidden;overflow-wrap:anywhere}
/* Empty states (core's card): white with Splash's pale-aqua dashed edge. */
.prt-blog-empty{background:#fff;border:2px dashed #A9D7E2;border-radius:var(--r);box-shadow:var(--sh)}
.prt-blog-empty__ic{background:var(--aqua-l);color:#067A8D}
.sp-search__ic svg{width:18px;height:18px}

/* ===== Round 15 (SEO): the hero date card's title is a real h2 and the event cards' titles
   real h3s (were h3/h4 with aria-level, so the HTML outline skipped levels); the guarantee
   tick is drawn by CSS so the heading's text is just its words. */
.sp-tick::before{content:"\2713";content:"\2713" / ""}
/* Footer column titles are h2s now (were h5 with aria-level 2): same size and weight as before. */
.fband h2.ft-h{font-size:.83em;font-weight:700}

/* ---------- Round 17 polish (editing: empty, very long and many values) ---------- */
/* A word longer than its box (a long town, e-mail, product or stat) breaks inside the
   box instead of running out of a card or past the screen. Text that fits is unchanged. */
:is(.topbar,.hero,.trust,.pghd,.spsec,.prts,.cta,footer,.spticker){overflow-wrap:anywhere}
.hgrid>*,.trustbox>*,.spstats__box>*,.acols>*{min-width:0}
/* Hero trust points keep each point on one line while it fits, and wrap a point
   that is longer than the line (it pushed the date card off the screen). */
.h1sub .nw{display:inline-block;white-space:normal}
.hstat b{white-space:normal}
@media (min-width:1181px){.hstats{grid-template-columns:repeat(4,minmax(0,max-content))}}
/* The hero without a photo: the page header's deep-water ground, so its white
   headline stays readable (it stood white on the pale page). */
.hero{background:linear-gradient(120deg,var(--deep),var(--deep2) 62%,var(--aqua-d))}
/* Long button labels wrap inside the button instead of being cut at the screen edge. */
:is(.hbtns,.cbtns,.morebtn,.bookcard,.sptext,.guar,.pghd) .btn,.prts-btn{white-space:normal;max-width:100%;text-align:center;text-wrap:balance}
/* Event cards keep their title in the card: titles stop at three lines, the big card's text at four. */
.ebd h3,.ebd p{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
.ebd h3{-webkit-line-clamp:3;line-clamp:3}
.ebd p{-webkit-line-clamp:4;line-clamp:4}
/* Other numbers of events than the design's five: rows end evenly, never one small card alone. */
@media (min-width:901px){
  .evts--6 .evt:last-child,.evts--10 .evt:last-child{grid-column:span 4}
  .evts--7 .evt:nth-child(n+6),.evts--8 .evt:nth-child(6){grid-column:span 2}
}
@media (min-width:621px) and (max-width:900px){.evts .evt:first-child ~ .evt:last-child:nth-child(even){grid-column:span 2}}
/* Reduced motion (the ticker stands still as a wrapped list): a long point wraps too. */
@media (prefers-reduced-motion:reduce){.spticker span{white-space:normal}}

/* ---------- Round 18 polish (resilience: no JavaScript, missing data) ---------- */
/* Without JavaScript, or when theme.js did not load (html loses .js, functions.php):
   desktop panels also open on keyboard focus (theme.js opens them with Enter otherwise),
   and the phone menu opens through the links to #menu beside the burger (header.php),
   with the Service Area and Company lists shown inside it. */
.burger-nojs{display:none}
@media (min-width:901px){
  html:not(.js) :is(.has-mega:focus-within:not(:hover)>.mega,.has-drop:focus-within:not(:hover)>.drop){opacity:1;visibility:visible;pointer-events:auto}
}
@media (max-width:900px){
  html:not(.js) .burger:not(.burger-nojs){display:none}
  html:not(.js) .burger-nojs--open,html:not(.js) header:has(#menu:target) .burger-nojs--close{display:grid;place-items:center;text-decoration:none}
  html:not(.js) header:has(#menu:target) .burger-nojs--open{display:none}
  html:not(.js) #menu:target{display:flex}
  html:not(.js) .menu .has-acc>.mega{display:block}
}
/* Footer without the Inventory or Company column (no rentals yet, no page list): no empty columns. */
@media (min-width:1081px){
  .fgrid:not(:has(>:nth-child(4))){grid-template-columns:1.75fr 1fr 1.25fr}
  .fgrid:not(:has(>:nth-child(3))){grid-template-columns:1.75fr 1.25fr}
}
/* The design's h1 is white (it sits on the hero's water). An h1 typed into a page's own
   content (a block heading, the platform's /rentals/ page) sat white on the pale page
   whenever Elementor's kit colour was not there to override it (Elementor or the booking
   platform switched off): content headings outside Elementor's sections take the ink. */
.prt-page__body h1:where(:not(.elementor *)),.prt-io-fb__title{color:var(--ink)}
/* Round 19 (cross-browser): Safari on iPhone draws an empty date field as a short, centred
   native control that can also push past its width; hold it to the selects' 48px and keep
   the date at the left like Chrome and Firefox. */
.fld input[type="date"]{min-height:48px;min-width:0;display:block}
.fld input[type="date"]::-webkit-date-and-time-value{text-align:left;min-height:1.3em}
/* Round 19 (cross-browser): Safari on iPhone enlarges text on its own when the phone is
   turned sideways; the layouts already set their own phone sizes. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
/* Round 20: iPhone Safari zooms into any field drawn under 16px when it is tapped — the hero
   date check and the contact form take 16px on touch screens (desktop keeps the 14.5px design). */
@media (pointer:coarse){.fld input,.fld select,.spform__form input,.spform__form textarea{font-size:16px}}
/* Round 20 (premium pass): plain pages (town pages written by WDZ Toolkit, pages pasted from an
   older site) read in one comfortable column instead of a 1160px line; core's message form
   centres its full-width "Send message" label like every other button. */
.wrap.pagebody>.prt-page>.prt-page__body{max-width:860px;margin-inline:auto}
form[data-contact] .prts-btn{justify-content:center}
.wrap.pagebody .prt-page__body>.wdz-entry-faq{max-width:none;margin-inline:0}
