/*!
 * Confetti — 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(--ink);color:#fff;border-radius:12px;font-weight:700}
.menu a:focus-visible,.btn:focus-visible,.faqlist summary:focus-visible,.navcart:focus-visible,.burger:focus-visible,.fld input:focus-visible,.fld select:focus-visible{outline:3px solid var(--mint);outline-offset:2px}

/* ---------- icons where the design used emoji ---------- */
.topbar .ic{width:14px;height:14px;vertical-align:-2px;color:var(--lemon)}
.topbar a{color:inherit;text-decoration:none}
.hbadge .ic{width:15px;height:15px}
.ti .ic{color:var(--mint-d);background:var(--mint-l)}
.ti:nth-child(2) .ic{color:var(--lemon-d);background:var(--lemon-l)}
.ti:nth-child(3) .ic{color:var(--coral);background:var(--coral-l)}
.ti:nth-child(4) .ic{color:var(--sky-d);background:var(--sky-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}
.fcol .ic{width:15px;height:15px;vertical-align:-2px}
.nav-phone .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(--mint);color:var(--mint-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 ---------- */
.pbd h3 a{color:inherit;text-decoration:none}
.pbd h3 a:hover{color:var(--mint-d)}
.about-title{margin-bottom:18px}


/* ---------- 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(--mint-l),var(--sky-l));color:var(--ink);padding:clamp(40px,6vw,76px) 0 clamp(34px,5vw,60px);overflow:hidden}
.pagehead .klabel{background:#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}

.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:"›";content:"›" / '';margin-right:.4em;opacity:.6}
.crumbs a{color:var(--mint-d);text-decoration:none}
.pagehead--io .crumbs a{color:var(--mint-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(--mint-d)}
.prt-page .entry-content img{border-radius:var(--rs);height:auto}
.pager .nav-links{display:flex;gap:8px;justify-content:center;margin-top:40px}
.pager .page-numbers{display:inline-grid;place-items:center;min-width:44px;height:44px;padding:0 12px;border-radius:14px;background:#fff;border:1px solid var(--line);font-weight:700;color:var(--ink);text-decoration:none}
.pager .page-numbers.current{background:var(--mint);border-color:var(--mint);color:#fff}
.post-navigation{margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}
.post-navigation .nav-links{display:flex;justify-content:space-between;gap:20px}
.post-navigation a{color:var(--mint-d);text-decoration:none;font-weight:700}
.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)}



/* 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}
}


/* Confetti's own: the datebar is a real form. */
.datebar .btn{border:0;cursor:pointer;font:inherit;font-weight:800}
.htrust{margin-top:22px}
.about-title{margin-bottom:18px}
.aright a .ic,.cbtns .ic{width:15px;height:15px;vertical-align:-2px}
.evt h3 i .ic{width:18px;height:18px;vertical-align:-3px;color:var(--coral)}
.faqlist summary .em .ic{width:16px;height:16px;color:var(--mint-d)}
.hbadge .ic{width:14px;height:14px;vertical-align:-2px}
.card h3 a{color:inherit;text-decoration:none}
.card h3 a:hover{color:var(--coral-d)}
.cico .ic{width:26px;height:26px;color:var(--coral)}
.cat:nth-child(4n+2) .cico .ic{color:var(--mint-d)}
.cat:nth-child(4n+3) .cico .ic{color:var(--grape-d)}
.cat:nth-child(4n) .cico .ic{color:var(--sky-d)}

/* Contrast: the design's mint is too light behind white text. */
.b-mint{color:#083b30}
.aleft,.aleft h3,.aleft p{color:#083b30}
/* Readable on the dark footer (the design sets it in ink). */
.fband h2{color:var(--lemon)}
/* Small phones: the header keeps every control on screen. */
@media(max-width:400px){.navcta{gap:6px}.navcart{width:40px;height:40px}.lname{font-size:15px}.lname small{display:none}.mark{width:40px;height:40px}}
/* Tablets: four small category cards across rather than two huge ones. */
@media(min-width:760px) and (max-width:1080px){.cats{grid-template-columns:repeat(4,1fr);gap:20px 16px}.cat h3{font-size:16px}}
/* A short screen scrolls inside the mega menu instead of losing its footer. */
@media(min-width:901px){.mega{max-height:calc(100vh - 140px);overflow-y:auto}}

.has-mega.is-open .mega{opacity:1;visibility:visible;transform:none}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hbadge,.sticker,.abadge,.ctapop,.conv .arrow,.cico{animation:none!important}}
:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
footer :focus-visible,.topbar :focus-visible,.aleft :focus-visible{outline-color:#fff}

html{scroll-padding-top:96px}

/* The favourites rail fades at its edge, so the next card reads as more to swipe. */
@media(min-width:700px){.rail{-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}}
.htrust{flex-wrap:wrap;row-gap:10px}.htrust span{white-space:normal}
/* 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){.conv .arrow{transform:none;rotate:90deg}}
:root{--body:#4f6a76}
.b-sky,.b-mint,.b-lemon{color:var(--ink)!important}
.ctatx p{color:#fff}

/* round 29 */
.is-closed > .mega, .is-closed .mega { transition: none !important; visibility: hidden !important; opacity: 0 !important; pointer-events: none !important; }
.lname small{color:#c0392b}
.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}
}
@media (min-width:600px) and (max-width:900px){.conv{grid-template-columns:repeat(3,1fr)!important;gap:14px}.conv .arrow{display:none}}
@media (min-width:700px) and (max-width:1100px){.evts{grid-template-columns:1fr 1fr}}

/* =====================================================================
   Sections (parts/section-*.php): each one works anywhere — on the home
   page, or stacked on an Elementor page, as often as needed.
   ===================================================================== */
.cf-sec{padding:88px 0}
.shead--left{text-align:left;margin:0 0 30px;max-width:none}
.shead--left .sub{max-width:56ch}

/* The FAQ by class, so a second FAQ on a page (id faq-2) is styled too. */
.cf-faq details{background:#fff;border-radius:26px;margin-bottom:14px;transition:.26s;overflow:hidden;box-shadow:0 7px 0 var(--line)}
.cf-faq details[open]{box-shadow:0 7px 0 var(--mint)}
.cf-faq summary{padding:22px 26px;cursor:pointer;font-weight:800;font-size:16px;color:var(--ink);list-style:none;display:flex;gap:16px;align-items:center}
.cf-faq summary::-webkit-details-marker{display:none}
.cf-faq summary .em{width:46px;height:46px;flex:none;border-radius:50%;background:var(--mint-l);display:grid;place-items:center;font-size:21px}
.cf-faq details:nth-child(5n+2) summary .em{background:var(--coral-l)}
.cf-faq details:nth-child(5n+3) summary .em{background:var(--lemon-l)}
.cf-faq details:nth-child(5n+4) summary .em{background:var(--sky-l)}
.cf-faq details:nth-child(5n+5) summary .em{background:var(--grape-l)}
.cf-faq summary .pl{margin-left:auto;font-size:28px;font-weight:400;color:var(--coral);transition:.24s;line-height:1}
.cf-faq details[open] summary .pl{transform:rotate(45deg)}
.cf-faq details p{padding:0 26px 24px 88px;font-size:14.8px;font-weight:400}
.cf-faq summary:focus-visible{outline:3px solid var(--mint);outline-offset:2px}

/* Events: an even number of rows never leaves the last one stretched. */
.evts .evt:nth-child(even):last-child{grid-column:auto}
/* Cleaning steps other than three: a wrapping row. */
.conv--n{display:flex;flex-wrap:wrap;justify-content:center;align-items:center}
.conv--n .cstep{flex:1 1 220px;max-width:330px}
/* Towns without a page of their own. */
.aright span{background:var(--page);border:3px solid var(--line);border-radius:999px;padding:11px 22px;font-size:15px;font-weight:800;color:var(--ink)}
/* About without a photo: the words take the full width. */
.about--solo{grid-template-columns:1fr;max-width:820px;margin:0 auto}
/* Closing card without its round photo. */
.ctacard--solo{grid-template-columns:1fr;text-align:center}
.ctacard--solo .ctatx p{max-width:60ch;margin-left:auto;margin-right:auto}
.ctacard--solo .cbtns{justify-content:center}
.cta-label{background:rgba(255,255,255,.92)}

/* ---------- page header: the hero card, sized for inner pages ---------- */
.cfhead{padding:26px 0 0}
.cfhead__card{max-width:1330px;margin:0 auto;position:relative;overflow:hidden;text-align:center;
  background:linear-gradient(150deg,var(--mint-l) 0%,#CFF6EC 55%,var(--sky-l) 100%);
  border-radius:52px;padding:64px 56px 112px;
  -webkit-mask:radial-gradient(circle at 50% 100%,transparent 24px,#000 25px) 0 100%/52px 48px repeat-x,linear-gradient(#000,#000) 0 0/100% calc(100% - 48px) no-repeat;
  mask:radial-gradient(circle at 50% 100%,transparent 24px,#000 25px) 0 100%/52px 48px repeat-x,linear-gradient(#000,#000) 0 0/100% calc(100% - 48px) no-repeat}
.cfhead__in{position:relative;z-index:3;max-width:820px;margin:0 auto;display:flex;flex-direction:column;align-items:center}
.cfhead .hbadge{margin-bottom:20px}
.cfhead__title{font-size:clamp(34px,4.6vw,58px);margin-bottom:14px;line-height:1.1}
.cfhead__intro{font-size:17px;max-width:60ch;margin:0 auto;color:var(--body)}
.cfhead__btns{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:30px}
.cfhead__btns .ic{width:16px;height:16px}
.cfhead__crumbs{display:inline-block;background:rgba(255,255,255,.78);border-radius:999px;padding:7px 18px;margin-bottom:22px;box-shadow:0 5px 0 rgba(31,58,71,.06)}
.cfhead__crumbs ol{justify-content:center;font-size:12.5px}
.cfhead__crumbs li[aria-current]{color:var(--ink)}
.cfhead__st1{top:58px;left:6%;animation-delay:-1s}
.cfhead__st2{bottom:92px;right:7%;animation-delay:-2.6s}
.cfhead__bits i{position:absolute;display:block;border-radius:4px;opacity:.9}
.cfhead__bits i:nth-child(1){width:14px;height:14px;border-radius:50%;background:var(--coral);top:22%;left:17%}
.cfhead__bits i:nth-child(2){width:22px;height:8px;background:var(--lemon-d);top:16%;right:21%;transform:rotate(28deg)}
.cfhead__bits i:nth-child(3){width:10px;height:10px;border-radius:50%;background:var(--grape);bottom:34%;left:11%}
.cfhead__bits i:nth-child(4){width:18px;height:7px;background:var(--sky-d);bottom:28%;right:16%;transform:rotate(-24deg)}
.cfhead__bits i:nth-child(5){width:12px;height:12px;border-radius:50%;background:var(--mint-d);top:48%;right:5%}
.cfhead__bits i:nth-child(6){width:20px;height:7px;background:var(--coral);top:62%;left:4%;transform:rotate(40deg)}
.cfhead.has-img .cfhead__card{background:linear-gradient(150deg,rgba(21,184,139,.86),rgba(31,58,71,.82) 62%,rgba(38,170,238,.78)),var(--cfh-img) center/cover no-repeat}
.cfhead.has-img .cfhead__title,.cfhead.has-img .cfhead__intro{color:#fff}
.cfhead.has-img .cfhead__title em{color:var(--lemon)}
.cfhead.has-img .cfhead__title em::after{background:var(--coral);opacity:.75}
.cfhead.has-img .cfhead__crumbs{background:rgba(255,255,255,.16)}
.cfhead.has-img .cfhead__crumbs,.cfhead.has-img .cfhead__crumbs a,.cfhead.has-img .cfhead__crumbs li[aria-current]{color:#fff}
.cfhead.has-img .cfhead__bits{opacity:.6}
.cfhead + .cf-sec{padding-top:72px}

/* ---------- ticker: a tilted candy ribbon ---------- */
.cfticker{padding:34px 0;overflow:hidden}
.cfticker__band{background:var(--coral);transform:rotate(-1.4deg);margin:0 -40px;box-shadow:0 8px 0 var(--coral-d);overflow:hidden}
.cfticker__track{display:flex;width:max-content;animation:cfticker 38s linear infinite}
/* Hover pauses it where there is a real pointer; on touch :hover sticks after a tap, which kept it paused after the
   pause button said "playing" (round 11). */
@media(hover:hover){.cfticker:hover .cfticker__track{animation-play-state:paused}}
.cfticker__row{list-style:none;display:flex;flex:none;margin:0;padding:0}
.cfticker__row li{display:flex;align-items:center;gap:12px;padding:16px 28px;color:#fff;font-weight:800;font-size:15px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.cfticker__row .ic{width:18px;height:18px;color:var(--lemon)}
@keyframes cfticker{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){
  .cfticker__track{animation:none;width:auto}
  .cfticker__row{flex-wrap:wrap;justify-content:center;width:100%}
  .cfticker__row[aria-hidden]{display:none}
}

/* ---------- stats: sticker cards ---------- */
.cf-sec.cf-stats{padding:64px 0}
.cfstats{list-style:none;display:grid;grid-template-columns:repeat(var(--n,4),1fr);gap:26px}
.cfstat{background:#fff;border-radius:34px;padding:30px 20px 26px;text-align:center;box-shadow:0 9px 0 var(--line);transition:.3s cubic-bezier(.34,1.56,.64,1);position:relative}
.cfstat::before{content:'';position:absolute;top:16px;right:18px;width:12px;height:12px;border-radius:50%;background:var(--coral-l)}
.cfstat b{display:block;font-size:clamp(38px,4.2vw,54px);font-weight:900;letter-spacing:-.05em;line-height:1;color:var(--coral);margin-bottom:10px}
.cfstat span{display:block;font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);opacity:.8}
.cfstat:nth-child(4n+2) b{color:var(--mint-d)}
.cfstat:nth-child(4n+3) b{color:var(--sky-d)}
.cfstat:nth-child(4n+4) b{color:var(--grape-d)}
.cfstat:nth-child(4n+2)::before{background:var(--mint-l)}
.cfstat:nth-child(4n+3)::before{background:var(--sky-l)}
.cfstat:nth-child(4n+4)::before{background:var(--grape-l)}
.cfstat:hover{transform:translateY(-7px) rotate(-1deg);box-shadow:0 16px 0 var(--lemon)}

/* ---------- steps: numbered sticker cards ---------- */
.cfsteps{list-style:none;display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:34px}
.cfstep{position:relative;background:#fff;border-radius:34px;padding:36px 28px 32px;text-align:center;box-shadow:0 9px 0 var(--line);transition:.3s cubic-bezier(.34,1.56,.64,1)}
.cfstep:hover{transform:translateY(-7px);box-shadow:0 16px 0 var(--mint)}
.cfstep:nth-child(4n+2):hover{box-shadow:0 16px 0 var(--lemon)}
.cfstep:nth-child(4n+3):hover{box-shadow:0 16px 0 var(--coral)}
.cfstep:nth-child(4n+4):hover{box-shadow:0 16px 0 var(--sky)}
.cfstep__ic{position:relative;width:92px;height:92px;border-radius:50%;margin:0 auto 20px;display:grid;place-items:center;background:var(--mint-l);color:var(--mint-d);border:5px solid #fff;box-shadow:0 7px 0 var(--line)}
.cfstep__ic .ic{width:36px;height:36px}
.cfstep__ic b{position:absolute;top:-8px;right:-10px;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--coral);color:#fff;font-size:16px;font-weight:900;border:3px solid #fff;box-shadow:0 4px 0 var(--coral-d)}
.cfstep:nth-child(4n+2) .cfstep__ic{background:var(--lemon-l);color:var(--lemon-d)}
.cfstep:nth-child(4n+3) .cfstep__ic{background:var(--coral-l);color:var(--coral)}
.cfstep:nth-child(4n+4) .cfstep__ic{background:var(--sky-l);color:var(--sky-d)}
.cfstep:nth-child(4n+2) .cfstep__ic b{background:var(--mint);box-shadow:0 4px 0 var(--mint-d);color:#083b30}
.cfstep:nth-child(4n+3) .cfstep__ic b{background:var(--sky-d);box-shadow:0 4px 0 #1488c4}
.cfstep:nth-child(4n+4) .cfstep__ic b{background:var(--grape);box-shadow:0 4px 0 var(--grape-d)}
.cfstep:hover .cfstep__ic{animation:wiggle .5s ease-in-out 2}
.cfstep h3{font-size:19px;font-weight:900;margin-bottom:8px}
.cfstep p{font-size:14.2px;font-weight:400;margin:0}
.cfstep:not(:last-child)::after{content:'\279C';content:'\279C' / '';position:absolute;top:72px;right:-31px;z-index:2;font-size:26px;font-weight:900;color:var(--mint);animation:nudge 1.7s ease-in-out infinite}
.cfsteps[style*="--n:4"] .cfstep:nth-child(4n)::after,.cfsteps[style*="--n:3"] .cfstep:nth-child(3n)::after,.cfsteps[style*="--n:2"] .cfstep:nth-child(2n)::after{display:none}

/* ---------- contact: chips + map beside a form card ---------- */
.cfcontact{display:grid;grid-template-columns:1fr 1.05fr;gap:56px;align-items:start}
.cfinfo{list-style:none;display:grid;gap:14px;margin:0 0 28px}
.cfinfo li{display:flex;gap:16px;align-items:center;background:#fff;border-radius:24px;padding:14px 20px;box-shadow:0 7px 0 var(--line)}
.cfinfo__ic{width:48px;height:48px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--mint-l);color:var(--mint-d)}
.cfinfo li:nth-child(4n+2) .cfinfo__ic{background:var(--coral-l);color:var(--coral)}
.cfinfo li:nth-child(4n+3) .cfinfo__ic{background:var(--lemon-l);color:var(--lemon-d)}
.cfinfo li:nth-child(4n+4) .cfinfo__ic{background:var(--sky-l);color:var(--sky-d)}
.cfinfo__ic .ic{width:22px;height:22px}
.cfinfo small{display:block;font-size:10.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--coral-d);line-height:1.3}
.cfinfo li>span:last-child{font-size:15.5px;font-weight:700;color:var(--ink);line-height:1.45;min-width:0;overflow-wrap:anywhere}
.cfinfo a:hover{color:var(--mint-d)}
.cfmap{border-radius:34px;overflow:hidden;border:8px solid #fff;box-shadow:0 12px 0 var(--mint-l)}
.cfmap iframe{display:block;width:100%;height:280px;border:0}
.cfformcard{position:relative;background:#fff;border-radius:40px;padding:44px 40px 40px;box-shadow:0 12px 0 var(--line);overflow:hidden}
.cfformcard::before{content:'';position:absolute;top:0;left:0;right:0;height:9px;background:linear-gradient(90deg,var(--coral),var(--lemon),var(--mint),var(--sky),var(--grape))}
.cfformcard__pop{position:absolute;top:26px;right:26px;width:60px;height:60px;border-radius:50%;display:grid;place-items:center;font-size:27px;background:var(--lemon-l);animation:bouncey 3.8s ease-in-out infinite}
.cfformcard h3{font-size:clamp(22px,2.4vw,28px);font-weight:900;margin:0 70px 8px 0}
.cfformcard>p{font-size:14.8px;margin:0 70px 24px 0}
.cfform{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cfform>label{display:grid;gap:6px;font-size:10.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--coral-d)}
.cfform>label:nth-of-type(n+3){grid-column:1/-1}
.cfform input,.cfform textarea{width:100%;border:3px solid var(--line);border-radius:16px;padding:12px 15px;font:inherit;font-size:14.5px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink);background:var(--page);outline:none;transition:.2s}
.cfform textarea{resize:vertical;min-height:120px}
.cfform input:focus,.cfform textarea:focus{border-color:var(--mint);background:#fff}
.cfform .btn{grid-column:1/-1;width:100%;margin-top:6px;border:0;font-size:15px}
.cfform .prt-contact-status{grid-column:1/-1;margin:0;font-weight:700;color:var(--ink)}
.cfform .prt-contact-status:empty{display:none}
.cfform .prt-contact-status.is-ok{color:var(--mint-d)}
.cfform .prt-contact-status.is-err{color:var(--coral-d)}

/* ---------- text block ---------- */
.cftext{max-width:820px;margin:0 auto}
.cftext--split{max-width:none;display:grid;grid-template-columns:1.1fr .9fr;gap:58px;align-items:center}
.cftext__body{font-size:16px;color:var(--body)}
.cftext__body>*+*{margin-top:1em}
.cftext__body h2,.cftext__body h3,.cftext__body h4{color:var(--ink);font-weight:900;margin-top:1.4em;line-height:1.2}
.cftext__body h3{font-size:22px}
.cftext__body a{color:var(--coral-d);font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.cftext__body strong{color:var(--ink)}
.cftext__body ul{list-style:none;display:grid;gap:12px;padding:0}
.cftext__body ul li{position:relative;padding-left:44px;color:var(--ink);font-weight:600;font-size:15px;min-height:30px;display:flex;align-items:center}
.cftext__body ul li::before{content:'\2713';content:'\2713' / '';position:absolute;left:0;top:0;width:30px;height:30px;border-radius:50%;background:var(--mint);color:#fff;display:grid;place-items:center;font-size:14px;font-weight:900}
.cftext__body ul li:nth-child(4n+2)::before{background:var(--coral)}
.cftext__body ul li:nth-child(4n+3)::before{background:var(--lemon-d)}
.cftext__body ul li:nth-child(4n+4)::before{background:var(--sky-d)}
.cftext__body ol{padding-left:1.3em;display:grid;gap:10px}
.cftext__body blockquote{background:var(--coral-l);border:3px solid var(--coral);border-radius:28px;padding:22px 26px;color:var(--ink)}
.cftext__body img{border-radius:28px;height:auto}
.cftext__pic{position:relative}
.cftext__pic .ph{border-radius:44px;aspect-ratio:4/4.2;border:8px solid #fff;box-shadow:0 16px 0 var(--lemon-l);transform:rotate(1.5deg)}
.cftext__pic .sticker{top:-18px;left:-18px}

/* A one-column text block sits on a sticker card, so it never reads as a bare page. */
.cftext:not(.cftext--split) .cftext__main{position:relative;background:#fff;border-radius:40px;padding:52px 56px 48px;box-shadow:0 10px 0 var(--line)}
.cftext__pop{top:-24px;right:34px;width:62px;height:62px;font-size:26px}
.cfstat--long b{font-size:clamp(28px,2.9vw,38px);padding:7px 0 5px}
.cfmap{background:linear-gradient(150deg,var(--mint-l),var(--sky-l))}
/* More than three reviews: rows of three, a short last row centred. */

@media(max-width:1080px){
  .cfsteps{grid-template-columns:repeat(min(var(--n,3),2),1fr)}
  .cfstep::after{display:none}
  .cfstats{grid-template-columns:repeat(2,1fr)}
  .cfcontact{gap:36px}
}
@media(max-width:900px){
  .cfcontact,.cftext--split{grid-template-columns:1fr}
  .cftext__pic{max-width:440px;margin:0 auto}
  .cfhead__card{padding:48px 28px 96px;border-radius:38px}
}
@media(max-width:620px){
  .cf-sec{padding:58px 0}
  .cf-sec.cf-stats{padding:44px 0}
  .cfhead + .cf-sec{padding-top:50px}
  .cfhead__card{padding:38px 20px 84px;border-radius:30px}
  .cfhead__title{font-size:clamp(30px,8.4vw,40px)}
  .cfhead__intro{font-size:15.5px}
  .cfhead__bits{display:none}
  .cfhead__btns .btn{flex:1 1 100%}
  .cfsteps{grid-template-columns:1fr}
  .cfstats{gap:16px}
  .cfstat{padding:24px 14px 20px;border-radius:28px}
  .cfformcard{padding:34px 22px 26px;border-radius:32px}
  .cfformcard__pop{width:48px;height:48px;font-size:22px;top:22px;right:18px}
  .cfformcard h3,.cfformcard>p{margin-right:56px}
  .cfform{grid-template-columns:1fr}
  .cfform>label{grid-column:1/-1}
  .cf-faq details p{padding-left:26px}
  .cfticker__row li{padding:13px 20px;font-size:13px}
  .cfinfo li{padding:12px 16px}
  .cftext:not(.cftext--split) .cftext__main{padding:40px 22px 30px;border-radius:32px}
  .cftext__pop{width:50px;height:50px;font-size:21px;right:20px;top:-20px;display:grid}
}
@media(prefers-reduced-motion:reduce){.cfstep::after,.cfformcard__pop,.cfstep__ic{animation:none!important}}

/* =====================================================================
   Inner-page audit fixes
   ===================================================================== */
/* Page header: the stickers sit in the card's top corners, never on the words. */
@media(max-width:1080px){
  .cfhead__st1,.cfhead__st2{top:24px;bottom:auto;width:56px;height:56px;font-size:24px}
  .cfhead__st1{left:24px}
  .cfhead__st2{right:24px}
}
@media(max-width:900px){.cfhead__card .sticker,.cfhead__bits{display:none}}

/* Events: an odd last card sits centred at half width, not stretched across a row. */
.evts>.evt:last-child:nth-child(odd):not(:first-child){grid-column:1/-1;width:100%;max-width:calc(50% - 11px);justify-self:center}
@media(max-width:699px){.evts>.evt:last-child:nth-child(odd):not(:first-child){max-width:none}}

/* Call to action: deep coral behind the words (white text 4.5:1 or better), the
   lemon kept to the photo's side; no backdrop photo behind the words when the round one shows. */
.ctacard{background:linear-gradient(100deg,#C8321F 0%,#D13924 56%,#EE6440 76%,#FFB347 100%)}
.ctacard .bgimg{opacity:.1}
.ctacard:not(.ctacard--solo) .bgimg{display:none}
.ctacard--solo{background:linear-gradient(150deg,#C8321F,#D13924)}
.ctatx p{color:#fff}
.ctatx h2 em{color:var(--lemon);z-index:0}
.ctatx h2 em::after{bottom:.14em;height:.42em;border-radius:.21em;background:rgba(31,58,71,.32)}
@media(max-width:900px){
  .ctacard{background:linear-gradient(180deg,#C8321F 0%,#D13924 58%,#EE6440 80%,#FFB347 100%)}
  .ctapic{width:100%}
}
@media(max-width:620px){
  .ctacard{background:linear-gradient(180deg,#C8321F,#D13924)}
  .ctacard .ctapic,.ctacard .ctapop{display:none}
  .ctacard:not(.ctacard--solo){grid-template-columns:1fr}
}

/* Steps: three across on tablets rather than two and an orphan. */
@media(min-width:621px) and (max-width:1080px){
  .cfsteps{grid-template-columns:repeat(3,1fr);gap:18px}
  .cfsteps[style*="--n:2"],.cfsteps[style*="--n:4"]{grid-template-columns:repeat(2,1fr)}
  .cfstep{padding:30px 18px 26px}
  .cfstep__ic{width:78px;height:78px}
}

/* Stacked sections on a built page: tighter, and alternating cream bands so two
   sections never run together. Elementor wraps every section, so the count is
   taken on its wrappers (or on the sections themselves without Elementor). */
.prt-sections .cf-sec{padding:clamp(48px,5.4vw,72px) 0;background:var(--page)}
.prt-sections .cf-sec.cf-stats{padding:clamp(36px,4vw,52px) 0}
.prt-sections .elementor>:nth-child(even) .cf-sec,
.prt-sections>.cf-sec:nth-child(even){background:var(--cream)}
.prt-sections .elementor>:nth-child(odd) .cf-sec.alt,
.prt-sections>.cf-sec.alt:nth-child(odd){background:var(--page)}

/* Contact: the form beside the chips, the map across the foot of both. */
.cfcontact>.cfmap{grid-column:1/-1}
.cfcontact>.cfmap iframe{height:300px}
@media(max-width:620px){.cfcontact>.cfmap iframe{height:240px}}

/* Category cards: the first sentence, clamped at two lines. */
.cat p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;min-height:calc(2em * 1.55)}

/* Footer: links are full-size touch targets on phones (and on tablets that get the
   desktop footer). */
@media(max-width:900px),(pointer:coarse){
  .fcol ul{gap:0}
  .fcol ul a,.flinks a,.fareas a{min-height:44px;align-items:center}
  .fcol ul a,.flinks a,.fareas a{display:inline-flex}
  .fcol li{align-items:center;min-height:44px}
}
/* QA: the phone menu starts at the top, so its first heading can't be pushed out of reach. */
@media(max-width:900px){.menu{justify-content:flex-start!important}}

/* =====================================================================
   Polish round, 2026-10-02
   ===================================================================== */
:root{--mint-ink:#0b7a5c}

/* Buttons keep their sticker shadow inside Elementor pages too
   (Elementor's ".elementor a{box-shadow:none}" outranks a single class). */
.btn.b-coral{box-shadow:0 8px 0 var(--coral-d)}
.btn.b-mint{box-shadow:0 8px 0 var(--mint-d)}
.btn.b-lemon{box-shadow:0 8px 0 var(--lemon-d)}
.btn.b-sky{box-shadow:0 8px 0 var(--sky-d)}
.btn.b-grape{box-shadow:0 8px 0 var(--grape-d)}
.btn.b-out{box-shadow:0 6px 0 var(--line);border-color:var(--line)}
.btn.b-white{box-shadow:0 8px 0 rgba(0,0,0,.13)}
.btn.b-coral:hover{box-shadow:0 5px 0 var(--coral-d)}
.btn.b-mint:hover{box-shadow:0 5px 0 var(--mint-d)}
.btn.b-lemon:hover{box-shadow:0 5px 0 var(--lemon-d)}
.btn.b-sky:hover{box-shadow:0 5px 0 var(--sky-d)}
.btn.b-grape:hover{box-shadow:0 5px 0 var(--grape-d)}
.btn.b-out:hover{box-shadow:0 3px 0 var(--line);border-color:var(--coral)}
.btn.b-white:hover{box-shadow:0 5px 0 rgba(0,0,0,.13)}
/* On the mint hero card a white button needs an edge to read as a button. */
.hbtns .btn.b-white,.cfhead__btns .btn.b-white{box-shadow:0 8px 0 rgba(21,184,139,.28)}
.hbtns .btn.b-white:hover,.cfhead__btns .btn.b-white:hover{box-shadow:0 5px 0 rgba(21,184,139,.28)}

/* Category squircles: each card is its own height, so the unstaggered ones
   don't carry an empty band at the foot. */
.cats{align-items:start}

/* Three-step clean: the cards share a height, the arrows sit between them. */
.conv{align-items:stretch}
.conv .arrow{align-self:center}

/* Reviews: bubbles in a row share a height, so the names line up. */
.revwrap>.rev{flex:1}

/* Stats: the long label ("3-step") sits on the same line as the numbers. */
.cfstat{display:flex;flex-direction:column;justify-content:center}
.cfstat b,.cfstat--long b{min-height:58px;display:flex;align-items:center;justify-content:center;padding:0;margin-bottom:10px}

/* Contrast: links and crumbs in a deeper mint than the decorative one. */
.crumbs a,.pagehead--io .crumbs a,.cfhead__crumbs a{color:var(--mint-ink)}
.prt-page .entry-content a:not(.btn){color:var(--ink);font-weight:600;text-decoration:underline;text-decoration-color:var(--coral);text-decoration-thickness:2px;text-underline-offset:3px}
.prt-page .entry-content a:not(.btn):hover{color:var(--coral-d)}

/* Footer: the service-area label matches the column headings. */
.fband h2{font-size:12px;font-weight:900;letter-spacing:.16em;text-transform:uppercase}

/* ---------- inner page header (blog, posts, search, 404): the hero card ---------- */
.pagehead:not(.pagehead--io){max-width:1330px;margin:26px auto 0;border-radius:52px;
  background:linear-gradient(150deg,var(--mint-l) 0%,#CFF6EC 55%,var(--sky-l) 100%);
  padding:clamp(48px,6vw,76px) 0 clamp(84px,8vw,108px);
  -webkit-mask:radial-gradient(circle at 50% 100%,transparent 24px,#000 25px) 0 100%/52px 48px repeat-x,linear-gradient(#000,#000) 0 0/100% calc(100% - 48px) no-repeat;
  mask:radial-gradient(circle at 50% 100%,transparent 24px,#000 25px) 0 100%/52px 48px repeat-x,linear-gradient(#000,#000) 0 0/100% calc(100% - 48px) no-repeat}
.pagehead:not(.pagehead--io)::before,.pagehead:not(.pagehead--io)::after{content:'';position:absolute;border-radius:50%;pointer-events:none}
.pagehead:not(.pagehead--io)::before{width:14px;height:14px;background:var(--coral);top:22%;right:11%;box-shadow:-140px 96px 0 -3px var(--grape),-90px -18px 0 -4px var(--lemon-d)}
.pagehead:not(.pagehead--io)::after{width:260px;height:260px;right:-70px;bottom:-110px;background:rgba(255,255,255,.4)}
.pagehead .pagehead__title{font-weight:900;letter-spacing:-.04em}
.pagehead .wrap{position:relative;z-index:1}
.pagehead .klabel{box-shadow:0 5px 0 rgba(31,58,71,.06)}
.pagehead p.pagehead__btns{opacity:1;margin:26px 0 22px!important}
.pagehead .search-form{max-width:520px}
.pagehead .search-form .search-field{border:3px solid #fff;border-radius:999px;padding:13px 22px;background:#fff;box-shadow:0 6px 0 rgba(21,184,139,.18)}
.pagehead .search-form .search-field:focus{outline:none;border-color:var(--mint)}
.search-form .search-submit{border-radius:999px;padding:13px 26px;font-weight:800;box-shadow:0 6px 0 var(--coral-d);transition:.2s}
.search-form .search-submit:hover{transform:translateY(3px);box-shadow:0 3px 0 var(--coral-d)}
.error404 .pagehead .wrap,.blog .pagehead .wrap,.search .pagehead .wrap,.archive .pagehead .wrap{text-align:center;display:flex;flex-direction:column;align-items:center}
.error404 .pagehead__btns{justify-content:center}
.error404 .pagehead .search-form{width:100%}

/* Post navigation and the reading column. */
.post-navigation .nav-links>div{flex:1}
.post-navigation a{display:block;background:#fff;border-radius:26px;padding:18px 24px;box-shadow:0 7px 0 var(--line);color:var(--ink);font-weight:800;transition:.25s cubic-bezier(.34,1.56,.64,1)}
.post-navigation a:hover{transform:translateY(-4px);box-shadow:0 11px 0 var(--mint);color:var(--ink)}
.post-navigation{border-top:3px dotted var(--line)}
.single-post .entry-content h2{font-size:clamp(24px,2.6vw,32px);font-weight:900;letter-spacing:-.03em}
.single-post .entry-content h3{font-size:20px;font-weight:800}

/* ---------- mobile menu ---------- */
@media(max-width:900px){
  .menu .menu-cta .btn.b-coral{color:#fff}
  .menu>li.has-mega>.mega{background:var(--mint-l);border-radius:22px;padding:10px 12px 12px;margin:2px 0 8px}
  .menu .megacats{gap:4px 10px}
  .menu .mcat{padding:4px 8px;border-radius:14px}
  .menu .mcat b{font-weight:700;font-size:14px}
  .menu .mcat:hover{transform:none;background:#fff}
}

/* ---------- phones ---------- */
@media(max-width:620px){
  /* Hero buttons share the row's width rather than ragged pills. */
  .hbtns .btn{flex:1 1 100%}
  .klabel{font-size:11px;padding:8px 16px;letter-spacing:.06em}
  /* Event cards are centred, so is their title. */
  .ebd h3{justify-content:center}
  /* Categories: two small squircles per row instead of eight full-width ones. */
  .cats{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 14px}
  .cat{padding:10px 10px 16px;border-radius:26px}
  .cat:nth-child(even){margin-top:28px}
  .csq{border-radius:20px;margin-bottom:-22px}
  .cico{width:44px;height:44px;margin-bottom:8px}
  .cico .ic{width:20px;height:20px}
  .ccount{top:8px;right:8px;font-size:9.5px;padding:4px 9px}
  .cat h3{font-size:15px;margin-bottom:4px}
  .cat p{font-size:12px;line-height:1.45;min-height:0;margin-bottom:8px}
  .cgo{font-size:10.5px}
  /* Footer: the two link lists side by side. */
  .fgrid{grid-template-columns:1fr 1fr;gap:34px 18px}
  .fgrid>.fbrand,.fgrid>.fcol:last-child{grid-column:1/-1}
  .fcol ul a{font-size:13.6px}
  .pagehead:not(.pagehead--io){margin:16px 10px 0;border-radius:30px}
}
@media(max-width:360px){.cat p{display:none}}

/* =====================================================================
   The booking platform's pages in Confetti's clothes: inventory, category
   and item pages. Plain overrides of the shared IO styles, theme only.
   ===================================================================== */
body.prt .prt-io .entry-content>center{display:block;max-width:860px;margin:0 auto}
body.prt .prt-io .entry-content>center h1{font-size:clamp(34px,4.6vw,56px);font-weight:900;letter-spacing:-.04em;margin:8px 0 14px}
body.prt .prt-io .entry-content>center p,body.prt .prt-io .entry-content>center p strong{font-weight:400;font-size:16.5px;color:var(--body);line-height:1.7}
body.prt .prt-io .entry-content>center h2{font-size:22px;font-weight:900;margin:22px 0 4px}

/* "Set Event Date": the design's coral sticker button. */
body.prt .pageDateRangeWrapper{margin:18px auto 10px!important}
body.prt .pageDateRangeWrapper .elementor-button{background:var(--coral)!important;color:#fff!important;border:0!important;border-radius:999px!important;
  padding:15px 34px!important;min-width:0!important;width:auto!important;display:inline-flex!important;box-shadow:0 8px 0 var(--coral-d)!important;
  font-family:inherit!important;font-weight:800!important;font-size:15px!important;letter-spacing:0!important;transition:.24s cubic-bezier(.34,1.56,.64,1)!important}
body.prt .pageDateRangeWrapper .elementor-button:hover{transform:translateY(3px)!important;box-shadow:0 5px 0 var(--coral-d)!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.4' 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.4' 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": Confetti's heading, the highlight in coral on a lemon underline. */
body.prt .io_category_wrapper .catNameIO{font-weight:900!important;letter-spacing:-.04em!important;font-size:clamp(34px,4.6vw,56px)!important;margin:.35em 0 .5em!important}
body.prt .io_category_wrapper .catNameIO .io_forrent{color:var(--coral)!important;font-weight:900!important;position:relative;display:inline-block;z-index:0;margin-left:.22em}
body.prt .io_category_wrapper .catNameIO .io_forrent::after{content:'';position:absolute;left:0;right:0;bottom:.08em;height:.2em;border-radius:99px;background:var(--lemon);z-index:-1}
body.prt .io_category_wrapper .catNameIO::after{display:none!important}

/* The inventory page's categories: sticker squircles, four across. */
body.prt .io_catdiv2:not(.list-view){display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:28px 24px!important;
  width:100%!important;max-width:none!important;margin:20px 0 10px!important}
body.prt .io_catdiv2 .io_item2_listcat{width:auto!important;max-width:none!important;margin:0!important;background:#fff!important;border:0!important;
  border-radius:30px!important;padding:12px 12px 6px!important;box-shadow:0 9px 0 var(--line)!important;overflow:visible!important;
  transition:.3s cubic-bezier(.34,1.56,.64,1)!important}
body.prt .io_catdiv2 .io_item2_listcat:nth-child(4n+1):hover{box-shadow:0 16px 0 var(--coral)!important}
body.prt .io_catdiv2 .io_item2_listcat:nth-child(4n+2):hover{box-shadow:0 16px 0 var(--lemon)!important}
body.prt .io_catdiv2 .io_item2_listcat:nth-child(4n+3):hover{box-shadow:0 16px 0 var(--mint)!important}
body.prt .io_catdiv2 .io_item2_listcat:nth-child(4n+4):hover{box-shadow:0 16px 0 var(--sky)!important}
body.prt .io_catdiv2 .io_item2_listcat:hover{transform:translateY(-7px) rotate(-1deg)!important}
body.prt .io_catdiv2 .io_item2_listcat .cat_div{border-radius:22px!important;overflow:hidden!important;background:var(--mint-l)!important}
body.prt .io_catdiv2 .io_item2_listcat img{aspect-ratio:1/1!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 .view-product-button{background:var(--lemon)!important;color:var(--ink)!important;border:0!important;border-radius:999px!important;
  font-weight:800!important;font-size:13px!important;padding:10px 20px!important;box-shadow:0 5px 0 var(--lemon-d)!important;z-index:3}
body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner{padding:16px 8px 14px!important;text-align:center}
body.prt .io_catdiv2 .io_item2_listcat .rentNameIO{font-size:18px!important;font-weight:900!important;letter-spacing:-.02em!important;margin:0 0 6px!important}
body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO,body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO *{font-size:13px!important;line-height:1.5!important;color:var(--body)!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:3em!important;padding:0!important}
body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner>a::after{content:'View rentals \2192';content:'View rentals \2192' / '';display:block;margin-top:10px;font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--coral-d)}
@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:18px 14px!important}
  body.prt .io_catdiv2 .io_item2_listcat{padding:8px 8px 2px!important;border-radius:24px!important}
  body.prt .io_catdiv2 .io_item2_listcat .cat_div{border-radius:18px!important}
  body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner{padding:12px 4px 10px!important}
  body.prt .io_catdiv2 .io_item2_listcat .rentNameIO{font-size:15px!important}
  body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO,body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO *{font-size:12px!important}
  body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner>a::after{font-size:10.5px;margin-top:8px}}

/* "Professional delivery to Tulsa OK…": a note chip, not a stray line. */
body.prt .prt-io .io_landingpages{max-width:760px;margin:44px auto 10px!important;padding:16px 26px 16px 64px!important;background:#fff;border-radius:26px;
  box-shadow:0 7px 0 var(--line);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}
body.prt .prt-io .io_landingpages::before{content:'';position:absolute;left:18px;top:50%;width:32px;height:32px;margin-top:-16px;border-radius:50%;
  background:var(--mint-l) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2315B88B' stroke-width='2.2' 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/17px no-repeat}
body.prt .prt-io .io_landingpages .io_city_list{color:var(--ink)!important;font-weight:800}

/* A category's long description: on a card, like the theme's text blocks. */
body.prt .prt-io .io_cat_longdescription:not(:empty){max-width:860px!important;background:#fff;border-radius:40px;padding:44px 52px!important;box-shadow:0 10px 0 var(--line);margin-top:34px!important;margin-bottom:10px!important}
body.prt .prt-io .io_cat_longdescription:empty{display:none}
body.prt .cat_div_wrapper>.io_cat_description{border-radius:30px!important;border:0!important;box-shadow:0 9px 0 var(--line)!important}
body.prt .wdz-cat-h2{font-weight:900!important;letter-spacing:-.03em!important}
body.prt .io_view_toggle_btn{border-radius:12px!important}

/* BookFlow's rental cards on a category page. */
body.prt .wdz-browse__cat-title{font-weight:900!important;letter-spacing:-.03em!important;text-shadow:none!important}
body.prt .wdz-browse__row{gap:26px!important;padding:6px 4px 22px!important}
body.prt .wdz-browse__card{border:0!important;border-radius:30px!important;box-shadow:0 9px 0 var(--line)!important;overflow:hidden!important;background:#fff!important;transition:.3s cubic-bezier(.34,1.56,.64,1)!important}
body.prt .wdz-browse__card:hover{transform:translateY(-7px) rotate(-.8deg);box-shadow:0 16px 0 var(--mint)!important}
body.prt .wdz-browse__card:nth-child(3n+2):hover{box-shadow:0 16px 0 var(--coral)!important}
body.prt .wdz-browse__card:nth-child(3n+3):hover{box-shadow:0 16px 0 var(--sky)!important}
body.prt .wdz-browse__card-img{border-radius:0!important;transition:.6s cubic-bezier(.2,.8,.2,1)}
body.prt .wdz-browse__card-body{padding:18px 20px 22px!important}
body.prt .wdz-browse__card-name,body.prt .wdz-browse__card-name a{font-size:18px!important;font-weight:900!important;letter-spacing:-.02em;color:var(--ink)!important;text-decoration:none!important}
body.prt .wdz-browse__card-name a:hover{color:var(--coral-d)!important}
body.prt .wdz-browse__card-price{display:inline-block;width:auto!important;color:var(--coral-d)!important;font-weight:900!important;font-size:17px!important;margin:4px 0 6px}
body.prt .wdz-browse__add{border-radius:999px!important;font-weight:800!important;box-shadow:0 6px 0 var(--coral-d)!important;transition:.2s!important}
body.prt .wdz-browse__add:hover{transform:translateY(3px);box-shadow:0 3px 0 var(--coral-d)!important}
body.prt .wdz-browse__qty{border-radius:999px!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{position:relative}
body.prt .io_product_picbox>br{display:none}
body.prt .io_product_picbox #io_main_media_container{border:8px solid #fff;border-radius:40px!important;box-shadow:0 14px 0 var(--mint-l);overflow:hidden}
body.prt .io_product_picbox .io_image_big{border-radius:0!important}
body.prt .io_product_picbox .io_image_thumbbox{margin-top:22px!important;display:flex;gap:10px}
body.prt .io_product_picbox .io_image_thumb{border:4px solid #fff!important;border-radius:18px!important;box-shadow:0 5px 0 var(--line);cursor:pointer}
body.prt .io_product_infobox{border:0!important;border-radius:40px!important;box-shadow:0 10px 0 var(--line)!important;padding:clamp(24px,3.4vw,44px)!important}
body.prt .io_product_title{font-weight:900!important;letter-spacing:-.04em!important;font-size:clamp(30px,3.4vw,44px)!important}
body.prt .io_product_infobox .io_product_price_box{background:var(--lemon-l)!important;border:3px solid var(--lemon)!important;border-radius:999px!important;padding:10px 26px!important;box-shadow:0 6px 0 var(--lemon-d)!important;margin:6px 0 4px!important}
body.prt .io_product_infobox .io_product_price_left{font-size:26px!important;font-weight:900!important;color:var(--ink)!important;letter-spacing:-.03em}
body.prt .io_product_infobox .io_product_price_right{font-weight:700!important;color:var(--body)!important}
/* Set Date / Check Delivery: sticker pills, side by side. */
body.prt .io_product_infobox>div:has(> div > .elementor-widget-button){display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:14px 0 6px}
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:999px!important;padding:14px 26px!important;font-family:inherit!important;font-weight:800!important;font-size:14.5px!important;
  text-decoration:none!important;border:0!important;transition:.24s cubic-bezier(.34,1.56,.64,1)!important}
body.prt .io_product_infobox .elementor-button.io_button *{text-decoration:none!important;font-weight:800!important}
body.prt .io_product_infobox .item_add_set_date{background:var(--coral)!important;color:#fff!important;box-shadow:0 7px 0 var(--coral-d)!important}
body.prt .io_product_infobox .item_add_set_date:hover{transform:translateY(3px);box-shadow:0 4px 0 var(--coral-d)!important}
body.prt .io_product_infobox #checkDeliveryButton{background:#fff!important;color:var(--ink)!important;box-shadow:0 0 0 3px var(--line) inset,0 6px 0 var(--line)!important}
body.prt .io_product_infobox #checkDeliveryButton:hover{transform:translateY(3px);box-shadow:0 0 0 3px var(--mint) inset,0 3px 0 var(--line)!important}
body.prt .io_product_infobox #checkDeliveryButton i,body.prt .io_product_infobox #checkDeliveryButton svg{color:var(--mint-d)!important;fill:var(--mint-d)!important}
body.prt .io_product_detailbox{border-top:3px dotted var(--line)!important;padding-top:6px}
body.prt .io_product_subtitle{font-weight:900!important;font-size:21px!important;letter-spacing:-.02em}
body.prt .io_product_desc{font-size:15.5px!important;line-height:1.75!important;color:var(--body)!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(--cream)!important;border:0!important;
  border-radius:18px!important;padding:12px 18px!important;margin:10px 0 0!important;width:auto!important;max-width:100%!important;box-sizing:border-box!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:800!important;letter-spacing:.1em;text-transform:uppercase;color:var(--coral-d)!important}
body.prt .io_product_infobox .io_product_detail_box p:last-child{font-size:15px!important;font-weight:800!important;color:var(--ink)!important;text-align:right}
/* BookFlow's availability card: a sticker card like the rest. */
body.prt .wdz-itemcal__card{border:0!important;border-radius:36px!important;box-shadow:0 10px 0 var(--line)!important;position:relative;overflow:hidden}
body.prt .wdz-itemcal__card::before{content:'';position:absolute;top:0;left:0;right:0;height:8px;background:linear-gradient(90deg,var(--coral),var(--lemon),var(--mint),var(--sky),var(--grape))}
body.prt .wdz-itemcal__title{font-weight:900!important;letter-spacing:-.03em!important;font-size:26px!important}
@media(max-width:620px){
  body.prt .io_product_picbox #io_main_media_container{border-width:6px;border-radius:30px!important}
  body.prt .io_product_infobox{border-radius:30px!important}
  body.prt .io_product_infobox .elementor-button.io_button{padding:13px 20px!important}
  body.prt .prt-io .io_cat_longdescription:not(:empty){padding:30px 22px!important;border-radius:30px}
  body.prt .prt-io .io_landingpages{margin-top:30px!important}
}

/* Second pass */
.error404 .pagehead{margin-bottom:clamp(40px,6vw,80px)}
.single-post .cf-cta{padding-top:20px}
.post-navigation a{border:0}
body.prt .io_product_infobox .io_product_price_box>p:last-child{margin-right:0!important}
@media(max-width:620px){
  body.prt .io_product_title{text-align:left!important}
  body.prt .prt-io .entry-content>center p,body.prt .prt-io .entry-content>center p strong{font-size:15px}
}
/* The quote form: rental tiles and category rows as Confetti stickers. */
body.prt .io_form .thumbnail{border:0!important;border-radius:24px!important;box-shadow:0 7px 0 var(--line)!important;padding:14px!important;transition:.25s cubic-bezier(.34,1.56,.64,1)}
body.prt .io_form .thumbnail:hover{transform:translateY(-4px);box-shadow:0 11px 0 var(--mint)!important}
body.prt .io_form .thumbnail img{border-radius:16px!important}
body.prt .io_form .rental-name{font-weight:900!important;letter-spacing:-.02em;color:var(--ink)!important}
body.prt .io_form .accordion-group{border:0!important;border-radius:24px!important;box-shadow:0 7px 0 var(--line)!important}
body.prt .io_form .accordion-group img{border-radius:12px}
body.prt .io_form .btn-success{box-shadow:0 5px 0 var(--coral-d)!important;font-weight:800!important}
body.prt .io_form .btn-success:hover{transform:translateY(2px);box-shadow:0 3px 0 var(--coral-d)!important}

/* Small coral text (labels, prices, eyebrows) in a deeper coral that reads at
   5:1 on white; the bright coral stays for headings, shapes and buttons. */
:root{--coral-ink:#C93A2C}
.lname small,.fld label,.cfinfo small,.cfform>label,
body.prt .io_catdiv2 .io_item2_listcat .cat_div_inner>a::after,body.prt .wdz-browse__card-price,
body.prt .io_product_infobox .io_product_detail_box p:first-child{color:var(--coral-ink)!important}

/* =====================================================================
   Round 2026-10-06: menu panels, sliders, sharper photos
   ===================================================================== */
/* Only one menu panel at a time: the one under the pointer wins over a focused one. */
@media(min-width:901px){.menu:has(>li.has-mega:hover)>li.has-mega:not(:hover) .mega{opacity:0;visibility:hidden;pointer-events:none}}
.subtog{display:none}

/* Service Area: every town, beside a count card. */
.mtowns{display:grid;grid-template-columns:230px 1fr;gap:28px;align-items:start}
.mtowns__card{background:var(--lemon-l);border-radius:26px;padding:24px 22px;box-shadow:0 7px 0 var(--lemon);color:var(--ink)}
.mtowns__card b{display:block;font-size:52px;font-weight:900;letter-spacing:-.05em;line-height:1;color:var(--ink)}
.mtowns__card span{display:block;font-size:14px;font-weight:700;margin:4px 0 14px}
.mtowns__card a{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:800;color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.mtowns__card .ic{width:15px;height:15px}
.mtowns__list{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 12px}
.mtowns__list a,.mtowns__list span{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:var(--page);
  border:2px solid var(--line);font-size:14px;font-weight:700;color:var(--ink);line-height:1.25;transition:.2s}
.mtowns__list .ic{width:15px;height:15px;flex:none;color:var(--coral-d)}
.mtowns__list a:hover,.mtowns__list a:focus-visible{background:var(--mint-l);border-color:var(--mint);transform:translateY(-2px)}
.mtowns__list a[aria-current]{background:var(--mint-l);border-color:var(--mint-d)}

/* Company: a compact dropdown under its link. */
.menu>li.has-drop{position:relative}
.menu>li.has-drop>.mega{left:50%;right:auto;width:350px;margin-left:-175px;top:calc(100% + 14px);border-radius:28px;padding:0}
.menu>li.has-drop:hover::after{content:'';position:absolute;left:-20px;right:-20px;top:100%;height:18px}
.mdrop{list-style:none;padding:10px;display:grid;gap:2px}
.mdrop a{display:flex;gap:12px;align-items:center;padding:9px 12px;border-radius:18px;color:var(--ink);transition:.2s}
.mdrop a:hover,.mdrop a:focus-visible{background:var(--mint-l)}
.mdrop a[aria-current] b{color:var(--mint-d)}
.mdrop b{display:block;font-size:14.5px;font-weight:800;line-height:1.3}
.mdrop small{display:block;font-size:12.2px;color:var(--body);line-height:1.35}
.mdrop__ic{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--coral-l);color:var(--coral-d)}
.mdrop__ic .ic{width:18px;height:18px}
.mdrop__ic--1{background:var(--mint-l);color:var(--mint-d)}
.mdrop__ic--2{background:var(--lemon-l);color:var(--ink)}
.mdrop__ic--3{background:var(--sky-l);color:#0f7fb8}
.mdrop__ic--4{background:var(--grape-l);color:var(--grape-d)}

@media(min-width:901px) and (max-width:1180px){.mtowns{grid-template-columns:1fr}.mtowns__card{display:none}.mtowns__list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){
  .menu>li.has-mega{display:flex;flex-wrap:wrap;align-items:center}
  .menu>li.has-mega>a{flex:1}
  .subtog{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:14px;background:var(--mint-l);color:var(--mint-d);cursor:pointer;flex:none}
  .subtog .ic{width:18px;height:18px;transition:transform .2s}
  .subtog[aria-expanded="true"] .ic{transform:rotate(180deg)}
  .subtog:focus-visible{outline:3px solid var(--mint-d);outline-offset:2px}
  .menu>li.has-mega>.mega{flex-basis:100%}
  .menu>li.has-mega:not(.sub-open)>.mega{display:none}
  .menu>li.has-drop>.mega{position:static;width:auto;margin-left:0;border-radius:22px}
  .mtowns{grid-template-columns:1fr;gap:0}
  .mtowns__card{display:none}
  .mtowns__list{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px}
  .mtowns__list a,.mtowns__list span{background:#fff;border:0;padding:10px 12px;min-height:44px;font-size:14px}
  .mdrop{padding:0}
  .mdrop a{min-height:44px;padding:6px 8px}
  .mdrop a:hover{background:#fff}
  .mdrop small{display:none}
  .mdrop__ic{width:32px;height:32px}
}

/* Sliders (core data-prt-slider): arrows, dots and a pause button in Confetti's candy style. */
.cfslide{position:relative}
.cfarrow{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;flex:none;cursor:pointer;padding:0;
  background:#fff;color:var(--ink);border:3px solid var(--line);box-shadow:0 6px 0 var(--line);
  transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s,background .2s,opacity .2s}
.cfarrow[hidden]{display:none}
.cfarrow .ic,.cfarrow svg{width:22px;height:22px}
.cfarrow:hover:not(:disabled){background:var(--mint);border-color:var(--mint);box-shadow:0 6px 0 var(--mint-d);transform:translateY(-2px)}
.cfarrow:active:not(:disabled){transform:translateY(3px);box-shadow:0 3px 0 var(--mint-d)}
.cfarrow:disabled{opacity:.35;cursor:default}
.cfarrow:focus-visible,.cfdots .prt-slider__dot:focus-visible,.cfslide [data-prt-slider]:focus-visible{outline:3px solid var(--mint-d);outline-offset:3px}
.cfslide--rail{container-type:inline-size;--cf-card:calc((100cqw - 60px) / 3.25)}
@media(max-width:1080px){.cfslide--rail{--cf-card:calc((100cqw - 34px) / 2.25)}}
@media(max-width:700px){.cfslide--rail{--cf-card:calc((100cqw - 8px) * .84)}}
/* Safari before 16 has no container units: the arrows' height comes from the viewport instead (round 19). */
@supports not (width:1cqw){.cfslide--rail{--cf-card:calc((min(100vw - 48px,1152px) - 60px) / 3.25)}@media(max-width:1080px){.cfslide--rail{--cf-card:calc((100vw - 82px) / 2.25)}}@media(max-width:700px){.cfslide--rail{--cf-card:calc((100vw - 40px) * .84)}}}
/* Arrows sit on the middle of the photos (4:3, below the rail's 10px top padding). */
.cfslide--rail .cfarrow{position:absolute;top:calc(10px + var(--cf-card) * .375 - 26px);z-index:5}
.cfslide--rail .cfarrow--prev{left:-22px}
.cfslide--rail .cfarrow--next{right:-22px}
.cfslide--rail .cfarrow:disabled{opacity:0;pointer-events:none}
.rail[data-prt-slider]{--prt-gap:26px;gap:26px;scrollbar-width:auto;scroll-padding-inline:4px}
/* The core slider moves by as many cards as it counts in view (rounded), so
   each width leaves a peek of the next card under half a card: the arrows
   then never skip a card the visitor has only half seen. */
.rail[data-prt-slider]>.card{flex:0 0 calc((100% - 52px)/3.25)}
@media(max-width:1080px){.rail[data-prt-slider]>.card{flex-basis:calc((100% - 26px)/2.25)}}
@media(max-width:700px){.rail[data-prt-slider]>.card{flex-basis:84%}}
@media(min-width:700px){.cfslide--rail:has(.cfarrow--next:disabled) .rail{-webkit-mask-image:none;mask-image:none}}
@media(max-width:700px){
  .cfslide--rail .cfarrow{width:44px;height:44px;top:calc(10px + var(--cf-card) * .375 - 22px)}
  .cfslide--rail .cfarrow--prev{left:-8px}
  .cfslide--rail .cfarrow--next{right:-8px}
}

.revs--slide[data-prt-slider]{display:flex;--prt-slides:3;--prt-gap:28px;padding:12px 4px 30px}
@media(max-width:1080px){.revs--slide[data-prt-slider]{--prt-slides:2}}
@media(max-width:700px){.revs--slide[data-prt-slider]{--prt-slides:1;--prt-gap:16px}}
.cfslide__bar{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:6px}
.cfdots{display:flex;align-items:center;gap:2px}
.cfdots[hidden]{display:none}
.cfdots .prt-slider__dot::before{width:11px;height:11px;background:#c9ddd7;box-shadow:none}
.cfdots .prt-slider__dot.is-active{width:36px}
.cfdots .prt-slider__dot.is-active::before{width:28px;background:var(--mint-d)}
.cfdots .prt-slider__dot:hover::before{background:var(--mint)}
.cfslide .cfpause{width:40px;height:40px;box-shadow:0 4px 0 var(--line)}
.cfslide .cfpause svg{width:16px;height:16px}
@media(max-width:700px){.cfdots{display:none}}
@media(prefers-reduced-motion:reduce){.cfarrow,.cfdots .prt-slider__dot::before{transition:none}}

/* Blog (core prt-blog-*): Confetti's chunky candy shadows and bouncy hovers. */
.prt-blog-card,.prt-blog-feature__card{border:0;box-shadow:0 9px 0 var(--line);transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}
.prt-blog-card{border-radius:var(--r)}
.prt-blog-card:hover{transform:translateY(-7px) rotate(-.6deg);box-shadow:0 16px 0 var(--mint)}
.prt-blog-card:nth-child(3n+2):hover{box-shadow:0 16px 0 var(--coral)}
.prt-blog-card:nth-child(3n+3):hover{box-shadow:0 16px 0 var(--sky)}
.prt-blog-card__title,.prt-blog-feature__title{font-weight:900;letter-spacing:-.02em}
.prt-blog-feature__card{box-shadow:0 12px 0 var(--line);border-radius:40px}
/* White text on the newsletter strip needs a deeper mint than the brand's (2.5:1 → 5.1:1). */
.prt-blog-news__in{background:linear-gradient(150deg,#0b7d5e,#0f7f86);box-shadow:0 12px 0 rgba(11,125,94,.25)}
.prt-blog-author,.prt-blog-inline,.prt-blog-toc{box-shadow:0 8px 0 var(--line)}
@media(prefers-reduced-motion:reduce){.prt-blog-card,.prt-blog-feature__card{transition:none}.prt-blog-card:hover{transform:none}}

/* Item page (core 1.2 layout): the price pill and spec rows stay inside the
   narrow middle card of the three-column row. */
body.prt .io_product_infobox .io_product_price_box{white-space:normal!important;padding:10px 22px!important}
body.prt .io_product_infobox .io_product_price_box>p{white-space:nowrap}
body.prt .io_product_infobox .io_product_price_left{margin-right:.35em!important}
body.prt .io_product_infobox .io_product_detail_box{flex-wrap:wrap;row-gap:2px;min-width:0!important}

/* FAQ "Still have questions" card (core faq_contact): a deeper mint so its
   white text reads (2.5:1 → 5.1:1), the candy shadow, and room under the
   sticky header while it follows the form. */
.prts-fqcard{background:linear-gradient(150deg,#0b7d5e,#0f7f86);box-shadow:0 10px 0 rgba(11,125,94,.25)}
@media(min-width:961px){.prt-sticky-side{top:calc(var(--prt-sticky-top,96px) + 20px + var(--wp-admin--admin-bar--height,0px))}}

/* =====================================================================
   Polish 2026-10-06: readable grounds. White text sits on a deeper coral
   (#D63B2B, 4.65:1) and a deeper grape; the bright coral stays for shapes,
   stickers and big decoration. Small coral text uses --coral-ink (5:1).
   ===================================================================== */
:root{--coral-btn:#D63B2B;--coral-btn-d:#A82A1D;--grape-btn:#7B45E0;--grape-btn-d:#5E2FC0;--coral-head:#E64535;--star:#B58600}
.b-coral,.btn.b-coral,.search-form .search-submit,.ptag,.navcart b,.cfstep__ic b,.av1,
.cfticker__band,
body.prt .pageDateRangeWrapper .elementor-button,
body.prt .io_product_infobox .item_add_set_date{background:var(--coral-btn)!important}
.b-coral,.btn.b-coral,.btn.b-coral:hover,.b-coral:hover{color:#fff}
.btn.b-coral,.ptag,.cfticker__band,.cfstep__ic b{box-shadow:0 8px 0 var(--coral-btn-d)}
.ptag{box-shadow:0 5px 0 var(--coral-btn-d)}
.cfstep__ic b{box-shadow:0 4px 0 var(--coral-btn-d)}
.btn.b-coral:hover{box-shadow:0 5px 0 var(--coral-btn-d)}
.search-form .search-submit{box-shadow:0 6px 0 var(--coral-btn-d)}
.search-form .search-submit:hover{box-shadow:0 3px 0 var(--coral-btn-d)}
body.prt .pageDateRangeWrapper .elementor-button{box-shadow:0 8px 0 var(--coral-btn-d)!important}
body.prt .pageDateRangeWrapper .elementor-button:hover{box-shadow:0 5px 0 var(--coral-btn-d)!important}
body.prt .io_product_infobox .item_add_set_date{box-shadow:0 7px 0 var(--coral-btn-d)!important}
body.prt .io_product_infobox .item_add_set_date:hover{box-shadow:0 4px 0 var(--coral-btn-d)!important}
body.prt .wdz-browse__add,body.prt .io_form .btn-success{box-shadow:0 6px 0 var(--coral-btn-d)!important}
body.prt .wdz-browse__add:hover{box-shadow:0 3px 0 var(--coral-btn-d)!important}
.b-grape,.btn.b-grape{background:var(--grape-btn);color:#fff;box-shadow:0 8px 0 var(--grape-btn-d)}
.btn.b-grape:hover{box-shadow:0 5px 0 var(--grape-btn-d)}

/* Coral words on white or cream. */
.b-white,.btn.b-white,.cgo,.ebd span,.b-out:hover{color:var(--coral-ink)}
.klabel{color:#B8301F}
h1 em,h2 em,.rscore .big,body.prt .io_category_wrapper .catNameIO .io_forrent{color:var(--coral-head)!important}
.cfhead.has-img .cfhead__title em,.ctatx h2 em{color:var(--lemon)!important}
.railhint{color:var(--mint-ink)}
/* Star rows are images (role="img"): 3:1 against the card. */
.gstars,.rscore .st{color:var(--star)}
/* The footer brand line sits on ink: mint, as the design drew it. */
.fbrand .lname small{color:var(--mint)!important}
/* Mint words on white or pale mint: the deeper --mint-ink (4.9:1+), so hovered
   and current menu items stay readable; mint stays for shapes and icons. */
.menu>li>a:hover,.has-mega:hover>a,.has-mega:focus-within>a,.mcat:hover b,.mf em,.mdrop a[aria-current] b,
.pbd h3 a:hover,.cfinfo a:hover,.cfform .prt-contact-status.is-ok{color:var(--mint-ink)}
/* Focus rings: deep mint (4.9:1 on cream) instead of the bright mint (1.8:1);
   white stays on the dark footer and top bar. */
.menu a:focus-visible,.btn:focus-visible,.faqlist summary:focus-visible,.navcart:focus-visible,.burger:focus-visible,
.fld input:focus-visible,.fld select:focus-visible,.cf-faq summary:focus-visible,.subtog:focus-visible,.cfarrow:focus-visible,
.cfdots .prt-slider__dot:focus-visible,.cfslide [data-prt-slider]:focus-visible,.mtowns__list a:focus-visible,.mdrop a:focus-visible,
[data-prt-slider]:focus-visible,.prt-atc:focus-visible{outline:3px solid var(--mint-ink);outline-offset:3px}
footer .btn:focus-visible,footer a:focus-visible,.topbar a:focus-visible{outline-color:#fff}
/* Tablets (621–900px): the stacked hero collage and about photo stay a
   sensible size instead of filling the full width at portrait height. */
@media(min-width:621px) and (max-width:900px){
  .hpics{max-width:560px;margin:8px auto 0;width:100%}
  .aimg{max-width:560px;margin:0 auto;width:100%}
  .aimg .ph{aspect-ratio:4/3.4}
}
.aleft :focus-visible{outline-color:var(--ink)}
/* Item page ≤1100px: the availability calendar lines up with the photo above it (720px), not a narrower 560px column. */
@media(max-width:1100px){html body.prt .prt-item>.simpleCart_ioShelfItem>#wdz-itemcal.wdz-itemcal,body.prt .wdz-itemcal-row .wdz-itemcal.is-beside{max-width:720px!important;width:100%!important;margin-left:auto!important;margin-right:auto!important}}
/* Blog search on phones: a slimmer button leaves room for the placeholder. */
@media(max-width:480px){.prt-blog-search .btn{padding:11px 18px;font-size:13.5px}.prt-blog-search .btn.b-coral{box-shadow:0 5px 0 var(--coral-btn-d)}}

/* =====================================================================
   Round 1 (desktop rhythm)
   ===================================================================== */
/* Section spacing on the built pages: the shared sections use the same
   padding as Confetti's own bands there (they had 88px each, so two of them
   in a row left 180-300px of empty cream). */
.prt-sections{--prt-section-y:clamp(48px,5.4vw,72px)}
/* The shared sections speak Confetti: the tilted pill label over a heading
   (it was plain green caps), coral accent words with the lemon marker on the
   event rows too, and the chunky bottom shadow on their cards. */
.prts .prts-eyebrow{display:inline-flex;align-items:center;background:var(--coral-l);color:#B8301F;padding:9px 22px;border-radius:999px;
  font-size:12.5px;font-weight:800;letter-spacing:.08em;margin-bottom:18px;transform:rotate(-1.2deg)}
.prts :is(.prts-ctabox,.prts-rfeat__box,.prts-strip.is-bold) .prts-eyebrow,.prts.prts-rfeat .prts-eyebrow,.prts-fqcard .prts-eyebrow{background:rgba(0,0,0,.16);color:#fff}
.pe-row h3 em{color:var(--coral-head);position:relative;display:inline-block}
.pe-row h3 em::after{content:'';position:absolute;left:0;right:0;bottom:1px;height:8px;border-radius:8px;background:var(--lemon);z-index:-1}
body .prts-card,body .prts-box,body .prts-values__card,body .prts-minirev__card{box-shadow:var(--sh)}
/* Event pages' rental picks: Add to Cart is a chunky pill like the theme's buttons. */
.pe-pick__actions .prt-atc:not([class*="btn"]){border-radius:999px;padding:11px 20px;box-shadow:0 6px 0 #085842;box-shadow:0 6px 0 color-mix(in srgb,var(--prt-primary-ground,#0b7d5e) 70%,#000);transition:transform .2s,box-shadow .2s}
.pe-pick__actions .prt-atc:not([class*="btn"]):hover{filter:none;transform:translateY(3px);box-shadow:0 3px 0 #085842;box-shadow:0 3px 0 color-mix(in srgb,var(--prt-primary-ground,#0b7d5e) 70%,#000)}
/* Item page: the price and "per day" sat on top of each other (the platform's
   equal grid columns were narrower than "$250.00"); they share a line again. */
body.prt .io_product_infobox .io_product_price_box{grid-template-columns:auto auto!important;justify-content:start;align-items:baseline}

/* =====================================================================
   Round 2 (phones, 320-414)
   ===================================================================== */
/* Core sections and the blog use the theme's own side gutter (core reads --prt-gutter). */
body{--prt-gutter:24px}
@media(max-width:620px){body{--prt-gutter:16px}}
@media(max-width:900px){
  /* Menu button: a 46px square (it was 43px wide). */
  .burger{display:grid;place-items:center;width:46px;height:46px;padding:0;line-height:1}
}
@media(max-width:620px){
  /* 44px tap targets: the logo, the cart, the slider's pause, the top-bar phone link,
     rental names, contact links and short footer links ("FAQ", "Tents"). */
  header .logo,.fbrand .logo{min-height:44px}
  .navcart{width:44px;height:44px}
  .cfslide .cfpause{width:44px;height:44px}
  .tbl a{display:inline-block;padding:12px 0;margin:-12px 0}
  .pbd h3 a{display:block;padding:11px 0;margin:-11px 0}
  .cfinfo li{position:relative}
  .cfinfo li a::after{content:"";position:absolute;inset:0;border-radius:inherit}
  .fcol ul a{min-width:44px}
  /* Breadcrumbs: 14px, with a 44px tap area that the negative margin takes back. */
  .crumbs ol{font-size:14px}
  .crumbs a{display:inline-block;padding:12px 2px;margin:-12px -2px}
  /* Small print up to a readable size (some of it was 8.5-10.5px). */
  .lname small{display:none}
  .ccount{font-size:11px}
  .cgo,.ebd span{font-size:11.5px}
  .ptag small{font-size:10px}
  .pcat{font-size:11px}
  .spec span{font-size:12.5px}
  .abadge span{font-size:11.5px}
  .fld label,.cfform>label{font-size:12px}
  .dbttl span{font-size:13px}
  .cfinfo small{font-size:11.5px}
  .who span{font-size:13px}
  .cat p{font-size:13px}
  .ebd p,.cstep p{font-size:14.5px}
  .railhint{font-size:14px}
  .fcol ul a{font-size:14.5px}
  .fareas a,.fareas span{font-size:13.5px}
}
@media(max-width:800px){
  body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO,body.prt .io_catdiv2 .io_item2_listcat .catDescriptionIO *{font-size:13px!important}
}
/* At 320-400px the 44px cart and menu buttons take the room from the gaps, not from the name. */
@media(max-width:400px){header nav.bar{gap:10px}header .logo{gap:9px}}

/* =====================================================================
   Round 3 (tablets, 768-1180 portrait and landscape)
   ===================================================================== */
/* Small print on tablets: the same floors as phones (some of it was 8.5-10.5px). */
@media(min-width:621px) and (max-width:1180px){
  .lname small{font-size:10.5px}
  .ccount{font-size:11px}
  .cgo,.ebd span{font-size:11.5px}
  .ptag small{font-size:10px}
  .pcat{font-size:11px}
  .spec span{font-size:12.5px}
  .abadge span{font-size:11.5px}
  .fld label,.cfform>label{font-size:12px}
  .dbttl span{font-size:13px}
  .cfinfo small{font-size:11.5px}
  .who span{font-size:13px}
}
/* Touch screens with the desktop layout (landscape tablets) and portrait tablets: 44px targets. */
@media(pointer:coarse) and (min-width:901px){
  .menu>li>a{display:inline-flex;align-items:center;min-height:44px}
  .mtowns__list a{min-height:44px}
}
@media(pointer:coarse){
  header .logo{min-height:44px}
  .navcart{width:44px;height:44px}
  .cfslide .cfpause{width:44px;height:44px}
  .tbl a{display:inline-block;padding:12px 0;margin:-12px 0}
  .pbd h3 a{display:block;padding:11px 0;margin:-11px 0}
  .cfinfo li{position:relative}
  .cfinfo li a::after{content:"";position:absolute;inset:0;border-radius:inherit}
  .fcol ul a{min-width:44px}
  .crumbs a{display:inline-block;padding:12px 2px;margin:-12px -2px}
}

/* =====================================================================
   Round 4 (keyboard)
   ===================================================================== */
/* Focus alone no longer opens a menu panel: Tab goes Inventory > Service Area > Company >
   phone, cart, Book Now (8 stops from the skip link to Book Now instead of 36). Enter, Space or Arrow Down
   opens a panel (theme.js adds .is-open); hover still opens it for the mouse. */
@media(min-width:901px){
  .has-mega:focus-within:not(:hover):not(.is-open) .mega{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(14px)}
  .has-mega.is-open .cv{transform:rotate(180deg)}
}
/* Skip link: ink on the ink top bar was a dark box on dark; white with an ink outline stands out. */
.skip:focus{background:#fff;color:var(--ink);outline:3px solid var(--mint-ink);outline-offset:2px;box-shadow:0 6px 20px rgba(31,58,71,.35)}

/* =====================================================================
   Round 5 (screen-reader semantics / axe).
   ===================================================================== */
/* Breadcrumb links: the list's .9 opacity took --mint-ink to 4.3:1 on cream. */
.crumbs ol{opacity:1}
/* "Years" on the lemon badge: full ink (was 3:1 at 75%). */
.abadge span{opacity:1}
/* Review initials on the bright mint and sky circles: ink, not white (1.9:1 -> 6:1+). */
.av2,.av3{color:var(--ink)}
/* "From" on the coral price tag: solid white (90% white was 3.9:1). */
.ptag small{opacity:1}

/* =====================================================================
   Round 6 (colour and states)
   ===================================================================== */
/* CTA band: the mint-ink focus ring on the deep coral band was 1.1:1; white reads (4.7:1+). */
.ctacard :focus-visible{outline-color:#fff}
/* Town chips (footer, service-area block): hover turned white text onto bright mint (1.9:1). */
.fareas a:hover,.aright a:hover{color:var(--ink)}
/* Menu chevrons: bright mint-d on white was 2.5:1 (it marks the panel menus). */
.cv{color:var(--mint-ink)}
/* FAQ +: it shows open/closed, so 3:1 at least (coral 2.7:1 on white). */
#faq summary .pl,.cf-faq summary .pl{color:var(--coral-head)}
/* Photo page headers: mint-ink rings vanished on the dark teal photo wash, and white crumbs on a
   16% white pill read 2.4-3.1:1 where the photo is light. White rings; a dark glass pill. */
.cfhead.has-img :focus-visible{outline-color:#fff}
.cfhead.has-img .cfhead__crumbs{background:rgba(16,42,52,.55)}
.cfhead.has-img .cfhead__crumbs ol{opacity:1}
/* How-it-works step badges: every badge is the deep coral (polish pass), but the 2nd kept its
   mint-era dark green text (2.7:1) and the 2nd-4th their mint/sky/grape shadows. */
.cfstep:nth-child(n) .cfstep__ic b{color:#fff;box-shadow:0 4px 0 var(--coral-btn-d)}
/* Newsletter panel: white body text was 4.3:1 on its lighter end; the ring was mint on mint. */
.prt-blog-news__in{background:linear-gradient(150deg,#096c52,#0b6d73)}
.prt-blog-news :focus-visible{outline-color:#fff}
/* Phone burger glyph: mint-d on white was 2.3:1. */
.burger{color:var(--mint-ink)}
/* Footer town chips: #B0CBD5 on the glass chip over the footer glow was 4.3:1 at 13.5px. */
.fareas a{color:#D3E4EA}
/* Cleaning-step numbers: white on bright mint was 1.9:1 and on bright coral 2.8:1; ink on the
   same candy discs (6.4 / 4.3:1), as the lemon one already was. */
.cstep .n{color:var(--ink)}
/* BookFlow cards: the price and the name's hover were bright --coral-d on white (3.8:1 at 17-18px). */
body.prt .wdz-browse__card-name a:hover,body.prt .wdz-browse__card-price{color:var(--coral-ink)!important}

/* ===== Round 7 (performance) =====
   Poppins' stand-in while its files load: Arial scaled to Poppins' width (measured: 111% regular, 107% bold) with
   Poppins' line metrics, so the swap no longer re-wraps the top bar and headings and pushes the page down (CLS). */
@font-face{font-family:'Poppins Fallback';src:local('Arial'),local('ArialMT'),local('Liberation Sans'),local('Helvetica'),local('Roboto');font-weight:100 549;size-adjust:111%;ascent-override:94.6%;descent-override:31.5%;line-gap-override:9%}
@font-face{font-family:'Poppins Fallback';src:local('Arial Bold'),local('Arial-BoldMT'),local('Liberation Sans Bold'),local('Helvetica Bold'),local('Roboto Bold');font-weight:550 749;size-adjust:107%;ascent-override:98.1%;descent-override:32.7%;line-gap-override:9.3%}
/* Round 8: Poppins ExtraBold/Black run 1.6-2.7% wider than its Bold (measured on headline strings), so one bold face left the
   800/900 headings narrower in the fallback: the FAQ and Reviews page-header h1 sat on one line and jumped to two (66px) when
   Poppins arrived. Each weight band gets its own scale; the line metrics are Poppins' own, divided by the scale. */
@font-face{font-family:'Poppins Fallback';src:local('Arial Bold'),local('Arial-BoldMT'),local('Liberation Sans Bold'),local('Helvetica Bold'),local('Roboto Bold');font-weight:750 849;size-adjust:108.7%;ascent-override:96.6%;descent-override:32.2%;line-gap-override:9.2%}
@font-face{font-family:'Poppins Fallback';src:local('Arial Bold'),local('Arial-BoldMT'),local('Liberation Sans Bold'),local('Helvetica Bold'),local('Roboto Bold');font-weight:850 900;size-adjust:109.7%;ascent-override:95.7%;descent-override:31.9%;line-gap-override:9.1%}
body{font-family:'Poppins','Poppins Fallback',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
/* Page-header photo: a 1200px copy on phones (confetti_header_photo() preloads the same file per width). */
@media(max-width:620px){.cfhead.has-img .cfhead__card{background:linear-gradient(150deg,rgba(21,184,139,.86),rgba(31,58,71,.82) 62%,rgba(38,170,238,.78)),var(--cfh-img-s,var(--cfh-img)) center/cover no-repeat}}
/* Carry-over from round 6: the FAQ "+" was --coral-head (4.0:1 on white); the darker coral reads 5:1. */
#faq summary .pl,.cf-faq summary .pl{color:var(--coral-ink)}

/* ===== Round 8 (booking flow) ===== */
/* Inventory panel photos are held in data-* until the menu is used (confetti_defer_img()); the <noscript> copy shows without JS. */
.mshot img[data-src]{display:none}
/* Item page on phones: the price tag and the booking buttons fill the details card instead of hanging left at their own
   width (228/121/195px of 310). */
@media(max-width:620px){
  html body.prt .prt-item .io_product_infobox .io_product_price_box{width:100%!important;box-sizing:border-box;justify-content:start}
  html body.prt .prt-item .io_product_infobox div:has(>[class*="add_cart_"]){flex:1 1 100%;width:100%}
  html body.prt .prt-item .io_product_infobox :is([class*="add_cart_"],.delivery_charge_check_container,[class*="check_delivery_"]){width:100%}
  html body.prt .prt-item .io_product_infobox :is(#bookNowBtn,#checkDeliveryButton,#calcPriceOpenMap,.item_add_set_date){display:flex!important;width:100%!important;justify-content:center;align-items:center;gap:8px;box-sizing:border-box}
}
/* Touch screens keep :hover on the last thing tapped: a BookFlow card stayed tilted and lifted with a coral name after the
   finger left it (seen at 390 after the date window closed). The lift is for a mouse only. */
@media(hover:none){
  body.prt .wdz-browse__card:hover{transform:none;box-shadow:0 9px 0 var(--line)!important}
  body.prt .wdz-browse__card:hover .wdz-browse__card-name a{color:var(--ink)!important}
}

/* ===== Round 9 (typography) ===== */
/* Headings break into even lines instead of leaving one word behind ("planning?", "lifting", "towns" at 1440; FAQ
   questions, rental and event-pick names at 390); running text avoids a lone last word. Longhands on purpose: the
   `text-wrap` shorthand would also reset a `white-space:nowrap` set elsewhere. :where() keeps any explicit rule winning. */
:where(h1,h2,h3,h4,h5,h6,summary,.prts-fqq,.pe-pick__name,.prts-strip__title){text-wrap-style:balance}
:where(p,li,dd,blockquote,figcaption,.sub,.cfhead__intro,.catDescriptionIO,.io_cat_description,.io_cat_longdescription){text-wrap-style:pretty}
/* Measure: the home/event/town FAQ answers ran 103-109 characters a line, centred intros 87-102. */
.shead .sub{max-width:52ch;margin-inline:auto}
#faq details p,.cf-faq details p{max-width:calc(62ch + 114px)}
@media(max-width:760px){#faq details p,.cf-faq details p{max-width:none}}
body.prt .prt-io .entry-content>center p{max-width:60ch;margin-inline:auto}
body.prt .prt-io .entry-content>center p br{display:none}
body.prt .prt-io .entry-content>center p{text-wrap-style:balance}
/* Category long description: the 860px white card held 96-character lines; 720px keeps them near 75. */
body.prt .prt-io .io_cat_longdescription:not(:empty){max-width:720px!important}
/* Weights: Confetti sets every heading and big number in Black (900); core's card/step/package headings and its big numbers
   (about stats/band, story badge, review scores, package prices) were plain bold 700 among them. */
.prts :is(h3,h4),.pe-row__body h3{font-weight:900}
.prts .prts-fqq{font-weight:800}
/* ...but at card size (17-24px) Black with -.03em closed the word spaces up ("Deliveredandsetup", "UnderTheSea"): card-size
   headings, Confetti's own and core's, track -.01em; the big ones (event rows, form card) keep -.03em. */
h3,h4{letter-spacing:-.01em}
.pe-row__body h3,.cfformcard h3{letter-spacing:-.03em}
.prts :is(.prts-stat b,.prts-band__list b,.prts-story__badge b,.prts-minirev__score>b,.pe-pack__price b,.prts-rsum__score>b){font-weight:900;letter-spacing:-.04em}
/* Leading: two- and three-line FAQ questions (phones) sat at the body's 1.65. */
#faq summary,.cf-faq summary{line-height:1.35}
/* IO's rental names on phones (15px Black at -.02em) likewise. */
@media(max-width:620px){body.prt .io_catdiv2 .io_item2_listcat .rentNameIO{letter-spacing:-.01em!important}}
/* Item page, three columns (>1100px): the details column is ~234px, so a 35px Black title took four lines for "Party Palace
   Double Lane Combo - Wet or Dry" and the calendar heading three beside it. Smaller title; the calendar heading steps below. */
@media(min-width:1101px){
  html body.prt .prt-item .io_product_title{font-size:clamp(26px,2.1vw,30px)!important;line-height:1.12!important}
  html body.prt .wdz-itemcal__title{font-size:21px!important;line-height:1.2!important}
}

/* ===== Round 10 (imagery) ===== */
/* Cover photos fill their frames on Elementor-built pages (home, about, events, safety, FAQ, reviews, towns): Elementor's
   `.elementor img{height:auto;border-radius:0}` loads after this sheet and our own `.prt-page .entry-content img` (0,2,1)
   both beat `.ph img`/`.csq img`/`.eimg img`, so hero, category, event, clean-step and CTA photos stopped partway down
   their frames with the pastel ground showing below. */
body :is(.ph,.csq,.eimg,.bgimg) img,.prt-page .entry-content :is(.ph,.csq,.eimg,.bgimg) img{height:100%;border-radius:0}
/* People photos in the About, text and CTA frames: a portrait photo cropped from its centre cut faces off;
   weight the crop toward the top third. */
.aimg .ph img,.cftext__pic .ph img,.ctapic .ph img{object-position:center 30%}

/* ===== Round 11 (motion & interaction) ===== */
/* Ticker: a pause button at the right end of the ribbon (hover still pauses it). The points fade out before they reach
   it. The ribbon runs 40px past each window edge, so the fade is measured from the ribbon's own edge. With reduced
   motion the ribbon is still (and wraps), so the button and the fade go. */
.cfticker{position:relative}
.cfticker__band{position:relative}
.cfticker__view{overflow:hidden;
  --cf-btn:calc(max(16px,(100% - 80px - var(--max)) / 2 + 24px) + 40px + 44px);
  -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - var(--cf-btn) - 90px),transparent calc(100% - var(--cf-btn) - 10px));
  mask-image:linear-gradient(90deg,#000 calc(100% - var(--cf-btn) - 90px),transparent calc(100% - var(--cf-btn) - 10px))}
.cfticker.is-paused .cfticker__track{animation-play-state:paused}
/* The ribbon is tilted -1.4deg, so at the button's x it sits higher than the section's middle: tan(1.4deg) = .0244. */
.cfticker__pause{position:absolute;z-index:2;right:max(16px,calc((100% - var(--max)) / 2 + 24px));transform:translateY(-50%);
  top:calc(50% - (50vw - max(16px,(100vw - var(--max)) / 2 + 24px) - 22px) * .0244);
  width:44px;height:44px;display:grid;place-items:center;padding:0;border:3px solid #fff;border-radius:50%;cursor:pointer;
  background:var(--ink);color:#fff;box-shadow:0 4px 0 rgba(31,58,71,.28);
  transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s,background-color .2s}
.cfticker__pause:hover{background:#2c5163;transform:translateY(calc(-50% + 2px));box-shadow:0 2px 0 rgba(31,58,71,.28)}
.cfticker__pause:active{transform:translateY(calc(-50% + 4px));box-shadow:0 0 0 rgba(31,58,71,.28);transition-duration:.06s}
.cfticker__pause:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.cfticker__pause svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}
.cfticker__pause .tp-play{display:none;fill:currentColor;stroke-width:1.5}
.cfticker__pause[aria-pressed="true"] .tp-pause{display:none}
.cfticker__pause[aria-pressed="true"] .tp-play{display:block}
@media(prefers-reduced-motion:reduce){
  .cfticker__pause{display:none}
  .cfticker__view{-webkit-mask-image:none;mask-image:none}
}
/* Hover/press transitions name their properties instead of `all`, so nothing that changes size or spacing is ever
   animated (with this springy easing a resize or class swap could overshoot); colour, shadow, opacity and transform glide. */
.menu>li>a,.btn,.cv,.mcat,.mshot,.mshot img,.mcat b,.fld input,.fld select,.cat,.csq img,.cgo,.card,.card .ph img,.evt,
.eimg img,.cfstat,.cfstep,.aright a,#faq details,#faq summary .pl,.cf-faq details,.cf-faq summary .pl,.fcol ul a,.fsoc a,
.fareas a,.navcart,.post-navigation a,.search-form .search-submit,.cfform input,.cfform textarea,
.mdrop a,.mtowns a{
  transition-property:color,background-color,border-color,box-shadow,opacity,transform,filter}
body.prt .pageDateRangeWrapper .elementor-button,body.prt .io_product_infobox .item_add_set_date,body.prt .io_product_infobox .io_button{
  transition-property:color,background-color,border-color,box-shadow,opacity,transform!important}
.js .reveal{transition-property:opacity,transform}
/* "View Rentals →" on category cards nudged by widening its gap (a layout change, and with one text node it never
   moved); the label now slides 4px instead. */
.cat:hover .cgo{gap:6px;transform:translateX(4px)}
/* Press feedback: the sticker buttons already sink 3px on hover; pressed, they sit down into their shadow. */
.btn:active,.search-form .search-submit:active,
body.prt .pageDateRangeWrapper .elementor-button:active,body.prt .io_product_infobox .item_add_set_date:active{
  transform:translateY(6px)!important;box-shadow:0 2px 0 rgba(31,58,71,.22)!important;transition-duration:.06s!important}
.navcart:active,.burger:active{transform:scale(.94)}
/* Hover cues that were missing: FAQ questions (home, event and town pages) and the top-bar phone number. */
#faq summary:hover,.cf-faq summary:hover{color:var(--coral-ink)}
#faq summary .em,.cf-faq summary .em{transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
#faq summary:hover .em,.cf-faq summary:hover .em{transform:rotate(-8deg) scale(1.08)}
.topbar a[href^="tel:"]:hover b{color:#fff;text-decoration:underline;text-underline-offset:3px}
/* Reduced motion: hover wiggles (logo mark, event icons) and the rail hint's nudge stop too. Elementor-built pages
   already drop all transitions (Elementor's own `html *` rule); the platform, blog, search and 404 pages kept their
   0.2–0.3s springy slides. Same rule here, so every page behaves alike. */
@media(prefers-reduced-motion:reduce){
  .logo:hover .mark,.evt:hover .ebd h3 i,.railhint i{animation:none!important}
  /* :is(html,#prt-rm) counts as an id, so this also beats the class-based !important transitions on the platform's
     buttons (core, plugin and this theme's own); it only ever matches through html. */
  :is(html,#prt-rm) *,:is(html,#prt-rm) *::before,:is(html,#prt-rm) *::after{transition-delay:0s!important;transition-duration:0s!important}
}
/* Phones: the favourites rail's "Book It" links carry the rental's name in a .screen-reader-text span (round 5). That span
   is position:absolute and its nearest positioned ancestor was .cfslide, outside the rail's scroll box, so the rail did not
   clip it: the hidden names of cards 2–8 reached x≈2700px and Chrome widened a phone's layout viewport to 1560px on the
   home page (the page drew zoomed out). Cards are positioned now, so the spans stay inside the scroller. */
.card{position:relative}
/* Touch screens: :hover sticks to whatever was tapped, so a card stayed tilted and lifted with its photo zoomed (back on the
   page, or under the finger while scrolling). No lift/tilt/zoom there; colour and shadow cues stay. Link cards give a small
   press instead. */
@media(hover:none){
  .mcat:hover,.cat:hover,.card:hover,.evt:hover,.rev:hover,.aright a:hover,.fsoc a:hover,.cfstat:hover,.cfstep:hover,
  .post-navigation a:hover,.mtowns__list a:hover,.prt-blog-card:hover,body.prt .wdz-browse__card:hover,body.prt .io_form .thumbnail:hover{transform:none}
  body.prt .io_catdiv2 .io_item2_listcat:hover{transform:none!important}
  .mcat:hover .mshot img,.cat:hover .csq img,.card:hover .ph img,.evt:hover .eimg img,
  body.prt .io_catdiv2 .io_item2_listcat:hover img{transform:none}
  .cat:hover .cgo{transform:none}
  .cat:active,.evt:active,.mcat:active,.prt-blog-card:active{transform:scale(.985);transition-duration:.08s}
}

/* ---------- Round 12 polish (inner pages + lead notes) ---------- */
/* "Pause animations" (WCAG 2.2.2, as Splash): the clouds, balloons and bubbles behind the page, the bouncing badges and
   stickers, the nudging arrows and the ticker never stopped. The footer button and the ticker's own button still them
   all; the choice is remembered from page to page (html.cf-still, set before the page paints by the head script). */
.cf-still :is(.scene i,.hbadge,.sticker,.abadge,.ctapop,.conv .arrow,.cico,.railhint i,.cfformcard__pop,.cfticker__track),
.cf-still .cfstep::after{animation-play-state:paused!important}
.fmotion{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;cursor:pointer;
  border:2px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);color:rgba(255,255,255,.86);font:inherit;font-size:13px;
  font-weight:700;transition:color .2s,background-color .2s,border-color .2s,transform .2s}
.fmotion:hover{border-color:var(--lemon);color:var(--lemon);background:rgba(255,255,255,.1)}
.fmotion:active{transform:translateY(2px);transition-duration:.06s}
.fmotion svg{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:2.8;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-left:auto}
@media(max-width:620px){.fbot{justify-content:center;text-align:center}.fbot .fmotion{margin-inline:auto}}
/* Reduced motion: nothing loops, so there is nothing to pause. */
@media(prefers-reduced-motion:reduce){.fmotion{display:none!important}}
/* About page on phones: the four-figure stats band stood one figure per row (core goes 2 × 2 only from 420px), a
   ~520px green block; two by two like Glow and the tablet layout. */
@media(max-width:600px){body .prts-band__list{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 12px}body .prts-band__list b{font-size:2rem}}
/* Lead note R12: transitions on "all" — the menu panel (it only fades/slides) and the review cards. */
.mega{transition-property:opacity,visibility,transform}
.rev{transition-property:transform,box-shadow}
/* Phones: at the very end of the page FrontDesk's chat bubble sits over the bottom-right corner, which covered the
   right end of "Pause animations" at 320px. The footer ends below the bubble when FrontDesk is on the page. */
@media(max-width:620px){body:has(#wdz-frontdesk-root) .fbot{padding-bottom:92px}}
/* Two by two on phones: when one label wraps to more lines, both figures in that row stay on one line (top-aligned). */
@media(max-width:600px){body .prts-band__list li{align-content:start}}
/* ===== Round 13 polish: service area hub + town pages ===== */
/* A highlighted word is an inline-block (its lemon marker), so the punctuation after it could start the next line
   alone ("Renting in Tulsa" / ": your questions" on every town page). confetti_accent() and theme.js glue them. */
.cf-glue{white-space:nowrap}
.cf-glue em{white-space:normal}
/* Shared sections' pill labels carry an icon like Confetti's own (they were text only, e.g. "Coverage" above the
   map beside "Delivery & setup" with its sparkle): a sparkle, a pin over the towns-and-map section. */
.prts .prts-eyebrow::before{content:"";flex:none;width:14px;height:14px;margin-right:8px;background:currentColor;
  -webkit-mask:var(--cf-eb-ic) center/contain no-repeat;mask:var(--cf-eb-ic) center/contain no-repeat;
  --cf-eb-ic: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-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")}
.prts-amap .prts-eyebrow::before{--cf-eb-ic: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-linejoin='round'%3E%3Cpath d='M12 21.5s7-6.1 7-11.5a7 7 0 1 0-14 0c0 5.4 7 11.5 7 11.5z'/%3E%3Ccircle cx='12' cy='10' r='2.6'/%3E%3C/svg%3E")}
/* Footer towns: a town without a page is a plain chip (it linked to the page you were on); on a town page that
   town's chip is marked as the current page. */
.fareas span{font-size:12.8px;font-weight:600;background:rgba(255,255,255,.09);border-radius:999px;padding:8px 16px;color:#D3E4EA}
.fareas a[aria-current]{background:var(--mint);color:var(--ink)}
@media(max-width:900px),(pointer:coarse){.fareas span{display:inline-flex;align-items:center;min-height:44px}}
/* The lemon marker under a highlighted word (z-index:-1) painted behind the section's own cream/peach ground as soon
   as a section had faded in (.reveal.in drops the transform that had made the section a stacking context), so on
   every opaque Confetti section the marker vanished — only headings on see-through sections kept it. The word
   is now its own stacking context: the marker sits behind the word, above any ground. */
h1 em,h2 em,.pe-row h3 em{isolation:isolate}
/* ===== Round 14 polish: blog, search, 404, empty states ===== */
/* A post with no photo showed a near-white panel on a white card (the icon alone, light on light); it now gets a
   candy picture of its own: a pastel ground with confetti dots and the icon on a white sticker with a chunky shadow.
   Cards in a row take mint, coral and sky in turn, like the cards' own hover shadows. */
.prt-blog-card__ph,.prt-blog-feature__ph{--cf-ph:var(--mint-l);--cf-ph-d:var(--mint-d);position:relative;isolation:isolate;overflow:hidden;color:var(--cf-ph-d);
  background:radial-gradient(circle at 14% 24%,var(--coral) 0 5px,transparent 5.5px),radial-gradient(circle at 82% 18%,var(--lemon-d) 0 6px,transparent 6.5px),
    radial-gradient(circle at 26% 80%,var(--sky) 0 4px,transparent 4.5px),radial-gradient(circle at 72% 76%,var(--grape) 0 5px,transparent 5.5px),
    radial-gradient(circle at 92% 54%,var(--mint) 0 3.5px,transparent 4px),radial-gradient(circle at 6% 58%,var(--lemon-d) 0 3.5px,transparent 4px),
    radial-gradient(circle at 50% 50%,rgba(255,255,255,.75),transparent 62%),var(--cf-ph)}
.prt-blog-card:nth-child(3n+2) .prt-blog-card__ph{--cf-ph:var(--coral-l);--cf-ph-d:var(--coral-d)}
.prt-blog-card:nth-child(3n+3) .prt-blog-card__ph{--cf-ph:var(--sky-l);--cf-ph-d:#0b7fc0}
.prt-blog-card__ph .ic,.prt-blog-feature__ph .ic{box-sizing:border-box;width:1.9em;height:1.9em;padding:.48em;border-radius:50%;background:#fff;
  box-shadow:0 7px 0 rgba(31,58,71,.14);box-shadow:0 7px 0 color-mix(in srgb,var(--cf-ph-d) 30%,transparent);transform:rotate(-8deg);transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.prt-blog-card__ph{font-size:2.1rem}
.prt-blog-card:hover .prt-blog-card__ph .ic,.prt-blog-feature__card:hover .prt-blog-feature__ph .ic{transform:rotate(6deg) scale(1.06)}
/* No results / empty archive (core's card: icon, title, advice, rental pills, buttons): a white sticker card with
   the icon on a lemon bubble, like Confetti's other cards. */
.prt-blog-empty{border:0;border-radius:var(--r);background:#fff;box-shadow:0 9px 0 var(--line)}
.prt-blog-empty__ic{width:66px;height:66px;background:var(--lemon);color:var(--ink);transform:rotate(-8deg);box-shadow:0 6px 0 var(--lemon-d)}
.prt-blog-empty__title{font-weight:900;letter-spacing:-.02em}
/* 404: the rental categories now follow the hero card, so the card no longer needs the 80px it kept above the footer. */
.error404 .pagehead{margin-bottom:0}

/* ===== Round 18 (resilience: missing, long and odd data) ===== */
/* A word longer than its box (a long town, reviewer name, e-mail address or pasted URL in Site content) breaks
   instead of widening the page (the reviews slider was 2001px wide at 1440). Text that fits is unchanged. */
body{overflow-wrap:anywhere}
.menu>li>a,.lname{overflow-wrap:normal}
/* Buttons keep one line while their label fits; a label longer than the screen (a long phone number in the page
   header, a long button text) wraps inside the pill instead of running off it. */
.btn:is(.b-coral,.b-mint,.b-lemon,.b-sky,.b-grape,.b-out,.b-white){white-space:normal;text-wrap:balance;max-width:100%;text-align:center}
/* No photos at all (hero, events, cleaning steps): the hero copy takes the card, an event's icon fills its ring and a
   cleaning step leads with its number, instead of an empty half card, empty circles and blank panels. */
@media(min-width:901px){.hgrid--solo{grid-template-columns:minmax(0,760px)}}
.eimg--ic{display:grid;place-items:center;background:var(--mint-l)}
.evt:nth-child(5n+2) .eimg--ic{background:var(--lemon-l)}.evt:nth-child(5n+3) .eimg--ic{background:var(--coral-l)}
.evt:nth-child(5n+4) .eimg--ic{background:var(--sky-l)}.evt:nth-child(5n+5) .eimg--ic{background:var(--grape-l)}
.eimg--ic .ic{width:44px;height:44px;color:var(--ink)}
.eimg--ic+.ebd h3 i{display:none}
.cstep--noimg{padding-top:26px}
/* A rental with no photo (core's tinted tile) keeps the card's pastel ground. */
.card .ph img[src*="prt-noimg"]{background-color:var(--mint-l)}
/* 1-3 categories, or a part row (5, 6, 7…): the cards keep their size and the last row is centred. */
@media(min-width:760px){
  .cats:is(.cats--r1,.cats--r2,.cats--r3){display:flex;flex-wrap:wrap;justify-content:center;--cg:26px}
  .cats:is(.cats--r1,.cats--r2,.cats--r3)>.cat{flex:0 0 calc((100% - 3 * var(--cg)) / 4);min-width:0}
}
@media(min-width:760px) and (max-width:1080px){.cats{--cg:16px}}
@media(max-width:759px){.cats--odd>.cat:last-child{grid-column:1/-1;justify-self:center;width:calc(50% - 10px)}}
/* A long category name on a rental card's photo stays one line (…), not a band across the picture. */
.card .pcat{max-width:calc(100% - 28px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* JavaScript off (or blocked): the phone menu button could not open anything. The main links sit in a row under
   the bar instead (Inventory, Service Area, Company and the site's own menu items). */
@media(max-width:900px){
  :is(html:not(.js),html.no-menujs) .burger{display:none}
  :is(html:not(.js),html.no-menujs) body>header .bar{flex-wrap:wrap;row-gap:4px}
  :is(html:not(.js),html.no-menujs) .menu{display:flex;position:static;order:5;flex:1 1 100%;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:4px;
    padding:0 0 10px;background:none;box-shadow:none;max-height:none;overflow:visible;border-radius:0}
  :is(html:not(.js),html.no-menujs) .menu>li>a{padding:10px 14px;font-size:14px;min-height:44px;display:flex;align-items:center}
  :is(html:not(.js),html.no-menujs) .menu :is(.mega,.subtog),:is(html:not(.js),html.no-menujs) .menu>.menu-cta{display:none}
}

/* Touch screens (round 19, cross-browser): iOS Safari zooms the page into any field set under 16px when it is
   tapped, so the date bar and contact form fields are 16px there. iOS also draws an empty date field shorter than
   the selects beside it, with its text centred: held at the selects' height, text to the left. */
@media (pointer:coarse){.fld input,.fld select,.cfform input,.cfform textarea{font-size:16px}}
@supports (-webkit-touch-callout:none){.fld input[type=date]{min-height:3.3em;display:block}.fld input[type=date]::-webkit-date-and-time-value{text-align:left}}
/* 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. */
.wrap.pagebody>.prt-page>.prt-page__body{max-width:860px;margin-inline:auto}
.wrap.pagebody .prt-page__body>.wdz-entry-faq{max-width:none;margin-inline:0}
/* Round 20 (premium pass): on phones the closing CTA's two buttons were two ragged pills of different widths
   under full-width hero and page-head buttons; they now share the row the same way. */
@media(max-width:620px){.cbtns .btn{flex:1 1 100%}}
