/*
Theme Name:        1805 Laundry Theme Pro
Theme URI:         https://1805loaded.com
Description:       Premium laundry and garment-care WordPress theme with service listings, collection enquiries, pricing and business customization.
Version:           1.0.9
Requires at least: 6.0
Tested up to:      6.5
Requires PHP:      7.4
Author:            1805LOADED
Author URI:        https://1805loaded.com
License:           GNU General Public License v2 or later
License URI:       http://www.gnu.org/licenses/gpl-2.0.html
Text Domain:       1805-laundry-theme
Tags:              laundry, dry-cleaning, garment-care, pickup-delivery, modern, responsive, custom-colors, custom-logo
*/

/* ==========================================================================
   DESIGN SYSTEM — 1805 LAUNDRY THEME
   ========================================================================== */

:root {
  --sch-blue-dark:    #173C35;
  --sch-blue:         #246B58;
  --sch-blue-mid:     #2F806A;
  --sch-blue-light:   #4B927A;
  --sch-sky:          #B7CDBD;
  --sch-sky-pale:     #D9E5D9;
  --sch-sky-ultra:    #F1F5EF;
  --sch-accent:       #C58B55;
  --sch-accent-light: #E2C6A7;
  --sch-white:        #FFFFFF;
  --sch-off-white:    #F7F7F1;
  --sch-gray-100:     #F1F3EE;
  --sch-gray-200:     #E2E8DF;
  --sch-gray-400:     #B7CDBD;
  --sch-gray-600:     #687D73;
  --sch-gray-800:     #334A40;
  --sch-text:         #1E293B;
  --sch-text-light:   #66766D;
  --font-display:     'Nunito', 'Segoe UI', Georgia, sans-serif;
  --font-body:        'Inter', system-ui, sans-serif;
  --font-mono:        'JetBrains Mono', monospace;
  --space-xs:  0.25rem; --space-sm:  0.5rem; --space-md:  1rem;
  --space-lg:  1.5rem;  --space-xl:  2rem;   --space-2xl: 3rem;
  --space-3xl: 4rem;    --space-4xl: 6rem;
  --radius-sm:   6px;  --radius-md:   12px; --radius-lg:   20px;
  --radius-xl:   32px; --radius-full: 9999px;
  --shadow-sm:   0 1px 3px rgba(23,60,53,0.08), 0 1px 2px rgba(23,60,53,0.06);
  --shadow-md:   0 4px 16px rgba(23,60,53,0.10), 0 2px 4px rgba(23,60,53,0.06);
  --shadow-lg:   0 10px 40px rgba(23,60,53,0.14), 0 4px 6px rgba(23,60,53,0.05);
  --shadow-xl:   0 25px 60px rgba(23,60,53,0.18);
  --shadow-blue: 0 4px 20px rgba(23,60,53,0.30);
  --transition-fast: 0.15s ease; --transition-base: 0.25s ease;
  --transition-slow: 0.40s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --container-max: 1280px; --container-md: 960px; --container-sm: 720px;
  --header-height: 72px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px;-webkit-text-size-adjust:100%}
body{font-family:var(--font-body);color:var(--sch-text);background:var(--sch-white);line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
button{cursor:pointer;border:none;background:none;font-family:inherit}
input,textarea,select{font-family:inherit}

h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--sch-blue-dark);line-height:1.2;font-weight:800}
.display-1{font-size:clamp(2.5rem,6vw,5rem);letter-spacing:-.02em}
.display-2{font-size:clamp(2rem,4.5vw,3.75rem);letter-spacing:-.02em}
h1{font-size:clamp(1.875rem,3.5vw,3rem)} h2{font-size:clamp(1.5rem,2.8vw,2.25rem)}
h3{font-size:clamp(1.25rem,2.2vw,1.75rem)} h4{font-size:1.25rem}
.lead{font-size:1.125rem;line-height:1.7;color:var(--sch-text-light)}
.body-sm{font-size:.875rem}
.overline{font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--sch-blue-light)}

.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--space-xl)}
.container--sm{max-width:var(--container-sm)} .container--md{max-width:var(--container-md)}
.section{padding-block:var(--space-4xl)} .section--sm{padding-block:var(--space-3xl)}
.section--lg{padding-block:calc(var(--space-4xl)*1.5)}
.grid{display:grid} .grid-2{grid-template-columns:repeat(2,1fr)} .grid-3{grid-template-columns:repeat(3,1fr)} .grid-4{grid-template-columns:repeat(4,1fr)}
.gap-md{gap:var(--space-md)} .gap-lg{gap:var(--space-lg)} .gap-xl{gap:var(--space-xl)}
.flex{display:flex} .flex-center{display:flex;align-items:center;justify-content:center}
.flex-between{display:flex;align-items:center;justify-content:space-between}
.flex-col{flex-direction:column} .flex-wrap{flex-wrap:wrap}
.text-center{text-align:center} .text-left{text-align:left} .text-right{text-align:right}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:.875rem 2rem;font-size:.9375rem;font-weight:700;font-family:var(--font-body);border-radius:var(--radius-full);line-height:1;transition:all var(--transition-base);white-space:nowrap;cursor:pointer;position:relative;overflow:hidden}
.btn::before{content:'';position:absolute;inset:0;background:rgba(255,255,255,.12);transform:translateX(-100%);transition:transform .3s ease}
.btn:hover::before{transform:translateX(0)}
.btn-primary{background:linear-gradient(135deg,var(--sch-blue),var(--sch-blue-mid));color:#fff;box-shadow:var(--shadow-blue)}
.btn-primary:hover{background:linear-gradient(135deg,var(--sch-blue-dark),var(--sch-blue));transform:translateY(-2px);box-shadow:0 8px 28px rgba(23,60,53,.45)}
.btn-primary:active{transform:translateY(0)}
.btn-secondary{background:var(--sch-accent);color:#fff;box-shadow:var(--shadow-md)}
.btn-secondary:hover{background:#0891b2;transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.btn-outline{background:transparent;color:var(--sch-white);border:2px solid rgba(255,255,255,.6)}
.btn-outline:hover{background:rgba(255,255,255,.12);border-color:var(--sch-white)}
.btn-outline-blue{background:transparent;color:var(--sch-blue);border:2px solid var(--sch-blue)}
.btn-outline-blue:hover{background:var(--sch-blue);color:#fff}
.btn-ghost{background:transparent;color:var(--sch-blue);border:2px solid var(--sch-gray-200)}
.btn-ghost:hover{border-color:var(--sch-blue);background:var(--sch-gray-100)}
.btn-lg{padding:1.125rem 2.5rem;font-size:1.0625rem} .btn-sm{padding:.625rem 1.25rem;font-size:.8125rem}
.btn-icon{padding:.875rem;border-radius:var(--radius-full)}

/* ── Install App CTA — animated, visually distinct from standard buttons ── */
.btn-install-app{position:relative;display:inline-flex;align-items:center;gap:12px;padding:1.0625rem 2.375rem 1.0625rem 1.375rem;font-size:1.0625rem;font-weight:800;font-family:var(--font-body);color:#fff;background:linear-gradient(135deg,#7C3AED 0%,#2563EB 55%,#0EA5E9 100%);border:none;border-radius:var(--radius-full);cursor:pointer;box-shadow:0 10px 28px rgba(36,107,88,.4);transition:transform .25s ease,box-shadow .25s ease;animation:install-btn-intro .6s cubic-bezier(.34,1.56,.64,1) .3s both}
.btn-install-app:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(36,107,88,.5)}
.btn-install-app:active{transform:translateY(-1px)}
@keyframes install-btn-intro{from{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}
.btn-install-app__glow{position:absolute;inset:-6px;border-radius:999px;background:linear-gradient(135deg,#7C3AED,#0EA5E9);opacity:.45;filter:blur(14px);z-index:-1;animation:install-glow-pulse 2.6s ease-in-out infinite}
.btn-install-app__glow::after{content:'';position:absolute;inset:6px;border-radius:999px;border:1.5px solid rgba(255,255,255,.55);opacity:0;animation:install-ring-pulse 2.6s ease-out infinite}
@keyframes install-glow-pulse{0%,100%{opacity:.35;transform:scale(1)}50%{opacity:.7;transform:scale(1.08)}}
@keyframes install-ring-pulse{0%{opacity:.65;transform:scale(1)}80%,100%{opacity:0;transform:scale(1.35)}}
.btn-install-app__icon{position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:9px;background:rgba(255,255,255,.2);flex-shrink:0;font-size:1.05rem}
.btn-install-app__icon-arrow{position:absolute;bottom:-6px;right:-6px;width:17px;height:17px;border-radius:50%;background:#22C55E;color:#fff;display:flex;align-items:center;justify-content:center;font-size:9.5px;box-shadow:0 0 0 2.5px rgba(255,255,255,.95);animation:install-arrow-bob 1.8s ease-in-out infinite}
@keyframes install-arrow-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}
.btn-install-app.is-installable .btn-install-app__glow{animation-duration:1.6s}
html.sch1805-app-installed .js-install-app{display:none}
@media(prefers-reduced-motion:reduce){.btn-install-app,.btn-install-app__glow,.btn-install-app__glow::after,.btn-install-app__icon-arrow{animation:none}}
@media(max-width:480px){.btn-install-app{padding:.9375rem 1.875rem .9375rem 1.125rem;font-size:.9375rem}}

.card{background:var(--sch-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;transition:transform var(--transition-slow),box-shadow var(--transition-slow)}
.card:hover{transform:translateY(-6px);box-shadow:var(--shadow-xl)}
.card__body{padding:var(--space-xl)}
.card__image{width:100%;aspect-ratio:16/9;object-fit:cover}
.card__tag{display:inline-block;padding:.25rem .75rem;background:rgba(23,60,53,.10);color:var(--sch-blue);border-radius:var(--radius-full);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-md)}

.site-header{position:fixed;top:0;left:0;right:0;z-index:1000;height:var(--header-height);background:rgba(23,60,53,.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid rgba(255,255,255,.10);transition:all var(--transition-base)}
.site-header.scrolled{background:rgba(23,60,53,.99);box-shadow:0 4px 30px rgba(0,0,0,.25)}
.site-header .container{height:100%}
.header-inner{height:100%;display:flex;align-items:center;justify-content:space-between}
.site-logo{display:flex;align-items:center;gap:var(--space-sm);font-family:var(--font-display);font-size:1.375rem;font-weight:800;color:var(--sch-white)}
.site-logo span{color:var(--sch-sky)} .site-logo img{height:40px;width:auto}
.main-nav{display:flex;align-items:center;gap:var(--space-xs)}
.main-nav a{padding:.5rem 1rem;color:rgba(255,255,255,.82);font-size:.9375rem;font-weight:600;border-radius:var(--radius-sm);transition:all var(--transition-fast)}
.main-nav a:hover,.main-nav a.active{color:var(--sch-white);background:rgba(255,255,255,.12)}
.header-cta{display:flex;align-items:center;gap:12px}
.header-enroll-btn{padding:.625rem 1.375rem;font-size:.875rem;line-height:1}
.hamburger{display:none;flex-direction:column;gap:5px;padding:8px;border-radius:var(--radius-sm);transition:background var(--transition-fast)}
.hamburger:hover{background:rgba(255,255,255,.1)}
.hamburger span{display:block;width:22px;height:2px;background:var(--sch-white);border-radius:2px;transition:all var(--transition-base);transform-origin:center}
.hamburger.active span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hamburger.active span:nth-child(2){opacity:0;transform:scaleX(0)}
.hamburger.active span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

.mobile-nav{position:fixed;inset:0;z-index:999;background:var(--sch-blue-dark);padding:calc(var(--header-height) + 24px) var(--space-xl) var(--space-xl);display:flex;flex-direction:column;gap:var(--space-sm);transform:translateX(100%);transition:transform var(--transition-slow)}
.mobile-nav.open{transform:translateX(0)}
.mobile-nav a{display:block;padding:1rem var(--space-md);color:rgba(255,255,255,.85);font-size:1.125rem;font-weight:600;border-radius:var(--radius-md);transition:all var(--transition-fast);border-bottom:1px solid rgba(255,255,255,.06)}
.mobile-nav a:hover{color:#fff;background:rgba(255,255,255,.08)}

.hero-inner-grid{display:grid;grid-template-columns:1fr 460px;gap:56px;align-items:center}
.hero-inner-grid>*{min-width:0} /* prevents a fixed grid track from being forced wider by a nowrap child's intrinsic width */
@media(max-width:1080px){.hero-inner-grid{grid-template-columns:1fr 380px;gap:32px}}
@media(max-width:900px){.hero-inner-grid{grid-template-columns:1fr}.hero-widget-col{max-width:520px;margin:0 auto;width:100%}}

/* ── Hero background media slideshow (images / GIFs / MP4 video) ── */
.hero-bg-wrap{position:absolute;inset:0;z-index:0}
.hero-bg-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.2s ease;background:var(--sch-blue-dark)}
.hero-bg-slide.active{opacity:1}
.hero-bg-overlay{position:absolute;inset:0;z-index:1}
@media (prefers-reduced-motion: reduce){.hero-bg-slide{transition:none}}

/* ── Hero trust badges — real glass: blur + gradient tint + highlight, not a flat tint ── */
.hero-trust-badges{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:38px;padding-top:28px;border-top:1px solid rgba(255,255,255,.14)}
.hero-trust-badge{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;padding:11px 10px;background:linear-gradient(155deg,rgba(255,255,255,.18) 0%,rgba(255,255,255,.06) 100%);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border:1px solid rgba(255,255,255,.24);border-radius:999px;box-shadow:0 10px 24px rgba(0,0,0,.22),0 1px 0 rgba(255,255,255,.3) inset;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.hero-trust-badge:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.28),0 1px 0 rgba(255,255,255,.35) inset;border-color:rgba(255,255,255,.4)}
.hero-trust-badge__icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,rgba(183,205,189,.4),rgba(75,146,122,.18));box-shadow:0 0 0 1px rgba(217,229,217,.3) inset;color:var(--sch-sky);flex-shrink:0;animation:badge-icon-pulse 3.4s ease-in-out infinite}
@keyframes badge-icon-pulse{0%,100%{box-shadow:0 0 0 1px rgba(217,229,217,.3) inset}50%{box-shadow:0 0 0 1px rgba(217,229,217,.3) inset,0 0 10px 3px rgba(183,205,189,.4)}}
.hero-trust-badge__icon svg{width:15px;height:15px}
.hero-trust-badge__label{font-size:.75rem;font-weight:700;color:#fff;white-space:nowrap;text-shadow:0 1px 3px rgba(0,0,0,.25)}
@media(max-width:640px){.hero-trust-badges{grid-template-columns:1fr 1fr}.hero-trust-badge__label{font-size:.6875rem}}
@media(max-width:340px){.hero-trust-badge__label{white-space:normal}}

/* ── Idle motion for badges that were static despite being called "floating" ── */
.about-hp-award-badge{animation:badge-float 4.5s ease-in-out infinite}
@keyframes badge-float{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-8px) rotate(-3deg)}}
.hero-prog-row__icon{animation:badge-icon-pulse 3.2s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.about-hp-award-badge,.hero-trust-badge__icon,.hero-prog-row__icon{animation:none}}

/* ── Hero widget card — richer glass: gradient tint, saturation, top highlight, soft glow ── */
.hero-widget-card{position:relative;background:linear-gradient(160deg,rgba(255,255,255,.16) 0%,rgba(255,255,255,.05) 65%);backdrop-filter:blur(30px) saturate(1.5);-webkit-backdrop-filter:blur(30px) saturate(1.5);border:1px solid rgba(255,255,255,.24);border-radius:22px;padding:28px 24px;box-shadow:0 30px 70px rgba(0,0,0,.35),0 1px 0 rgba(255,255,255,.3) inset;overflow:hidden}
.hero-widget-card::before{content:'';position:absolute;top:0;left:10%;right:10%;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent)}
.hero-widget-card::after{content:'';position:absolute;top:-50%;left:-10%;width:65%;height:150%;background:radial-gradient(circle,rgba(255,255,255,.1),transparent 72%);transform:rotate(12deg);pointer-events:none}
.hero-prog-row:hover{background:linear-gradient(135deg,rgba(255,255,255,.15),rgba(255,255,255,.06))!important;border-color:rgba(255,255,255,.2)!important}

.stats-bar{background:linear-gradient(135deg,var(--sch-blue-dark) 0%,var(--sch-blue) 100%);padding:var(--space-2xl) 0}
.stats-bar__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-xl);text-align:center}
.stats-bar__value{font-family:var(--font-display);font-size:clamp(1.75rem,3vw,2.5rem);font-weight:800;color:var(--sch-white);line-height:1}
.stats-bar__label{font-size:.8125rem;font-weight:600;color:rgba(255,255,255,.6);text-transform:uppercase;letter-spacing:.1em;margin-top:6px}
@media(max-width:768px){.stats-bar__grid{grid-template-columns:repeat(2,1fr)}}

.section-header{text-align:center;margin-bottom:var(--space-3xl)}
.section-header .overline{display:block;margin-bottom:var(--space-sm)}
.section-header h2{margin-bottom:var(--space-md)}
.section-header p{max-width:600px;margin:0 auto;color:var(--sch-text-light);font-size:1.0625rem;line-height:1.7}

/* ── Decorative floating/orbiting icons — see sch1805_decor_icons() ── */
.section-header,.hero-decor-anchor{position:relative}
.sch-decor{position:absolute;inset:0;overflow:visible;pointer-events:none;z-index:0}
.sch-decor__icon{position:absolute;color:var(--sch-blue-light);opacity:var(--decor-opacity,.14);mix-blend-mode:var(--decor-blend,normal);animation-delay:var(--decor-delay,0s);will-change:transform}
.sch-decor__icon--float{animation:decor-float var(--decor-dur,7s) ease-in-out infinite}
.sch-decor__icon--orbit{animation:decor-orbit var(--decor-dur,16s) linear infinite}
.sch-decor__icon--pulse{animation:decor-pulse var(--decor-dur,4s) ease-in-out infinite}
.sch-decor__icon--spin{animation:decor-spin var(--decor-dur,20s) linear infinite}
@keyframes decor-float{0%,100%{transform:translateY(0) rotate(var(--decor-rot,0deg))}50%{transform:translateY(-16px) rotate(calc(var(--decor-rot,0deg) + 8deg))}}
@keyframes decor-orbit{from{transform:rotate(0deg) translateX(var(--decor-r,36px)) rotate(0deg)}to{transform:rotate(360deg) translateX(var(--decor-r,36px)) rotate(-360deg)}}
@keyframes decor-pulse{0%,100%{transform:scale(1) rotate(var(--decor-rot,0deg));opacity:var(--decor-opacity,.14)}50%{transform:scale(1.35) rotate(var(--decor-rot,0deg));opacity:calc(var(--decor-opacity,.14) * 1.8)}}
@keyframes decor-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.sch-decor__icon{animation:none!important}}
@media(max-width:900px){.sch-decor{display:none}}
.hero-decor-anchor .sch-decor__icon{color:#fff}

.classes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.class-card{background:var(--sch-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;transition:transform var(--transition-slow),box-shadow var(--transition-slow);border:1px solid var(--sch-gray-200)}
.class-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-xl);border-color:var(--sch-sky-pale)}
.class-card__top{padding:28px 24px 20px;background:linear-gradient(135deg,var(--sch-sky-ultra),var(--sch-white));border-bottom:1px solid var(--sch-gray-200)}
.class-card__icon{width:52px;height:52px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:1.625rem;margin-bottom:14px}
.class-card__body{padding:20px 24px 24px}
.class-card__meta{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.class-card__badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-full);font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:rgba(23,60,53,.08);color:var(--sch-blue)}
@media(max-width:900px){.classes-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.classes-grid{grid-template-columns:1fr}}

.educators-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.educator-card{background:var(--sch-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;transition:transform var(--transition-slow),box-shadow var(--transition-slow);border:1px solid var(--sch-gray-200);text-align:center}
.educator-card:hover{transform:translateY(-8px);box-shadow:var(--shadow-xl)}
.educator-card__photo{width:100%;aspect-ratio:1/1;object-fit:cover}
.educator-card__avatar{width:100%;aspect-ratio:1/1;background:linear-gradient(135deg,var(--sch-blue),var(--sch-blue-light));display:flex;align-items:center;justify-content:center;font-size:3rem;color:#fff}
.educator-card__body{padding:20px 20px 24px}
.educator-card__name{font-family:var(--font-display);font-weight:800;font-size:1.125rem;color:var(--sch-blue-dark);margin-bottom:4px}
.educator-card__role{font-size:.8125rem;font-weight:600;color:var(--sch-blue-light);margin-bottom:10px}
.educator-card__subject{display:inline-block;padding:3px 12px;background:var(--sch-sky-ultra);border-radius:var(--radius-full);font-size:.75rem;font-weight:700;color:var(--sch-blue);border:1px solid var(--sch-sky-pale)}
@media(max-width:900px){.educators-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.educators-grid{grid-template-columns:1fr}}

.testimonials-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.testimonial-card{background:var(--sch-white);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-md);border:1px solid var(--sch-gray-200);position:relative;transition:transform var(--transition-slow),box-shadow var(--transition-slow)}
.testimonial-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-xl)}
.testimonial-card__quote{font-size:3rem;line-height:1;color:var(--sch-sky-pale);font-family:Georgia,serif;position:absolute;top:16px;left:24px}
.testimonial-card__text{color:var(--sch-text-light);font-size:.9375rem;line-height:1.75;margin-top:28px;margin-bottom:20px}
.testimonial-card__author{display:flex;align-items:center;gap:12px}
.testimonial-card__avatar{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--sch-blue-light),var(--sch-accent));display:flex;align-items:center;justify-content:center;font-size:1.125rem;color:#fff;font-weight:700;flex-shrink:0}
.testimonial-card__name{font-weight:700;font-size:.9375rem;color:var(--sch-blue-dark)}
.testimonial-card__meta{font-size:.75rem;color:var(--sch-text-light)}
@media(max-width:900px){.testimonials-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.testimonials-grid{grid-template-columns:1fr}}

.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media(max-width:900px){.blog-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.blog-grid{grid-template-columns:1fr}}

.cta-section{background:linear-gradient(135deg,var(--sch-blue-dark) 0%,var(--sch-blue) 60%,var(--sch-blue-light) 100%);padding:var(--space-4xl) 0;text-align:center;position:relative;overflow:hidden}

.apply-widget input,.apply-widget select{width:100%;padding:12px 16px;border:1.5px solid rgba(255,255,255,.2);border-radius:var(--radius-md);background:rgba(255,255,255,.08);color:#fff;font-size:.9375rem;margin-bottom:10px;outline:none;transition:border-color var(--transition-fast)}
.apply-widget input::placeholder{color:rgba(255,255,255,.45)}
.apply-widget select option{color:var(--sch-text);background:#fff}
.apply-widget input:focus,.apply-widget select:focus{border-color:var(--sch-sky);background:rgba(255,255,255,.12)}

.site-footer{background:var(--sch-blue-dark);color:rgba(255,255,255,.7)}
.footer-main{padding:var(--space-4xl) 0 var(--space-3xl)}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:var(--space-3xl)}
.footer-brand__logo{margin-bottom:var(--space-md)}
.footer-brand__tagline{font-family:var(--font-display);font-size:1rem;color:var(--sch-sky);font-weight:700;margin-bottom:var(--space-md)}
.footer-brand__social{display:flex;gap:var(--space-sm);flex-wrap:wrap}
.social-link{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.7);transition:all var(--transition-fast)}
.social-link:hover{background:var(--sch-blue-light);color:#fff;transform:translateY(-2px)}
.footer-col h4{color:var(--sch-white);font-size:1rem;font-weight:800;margin-bottom:var(--space-lg);font-family:var(--font-display)}
.footer-links{display:flex;flex-direction:column;gap:10px}
.footer-links a,.footer-links span{color:rgba(255,255,255,.6);font-size:.9rem;transition:color var(--transition-fast);line-height:1.4}
.footer-links a:hover{color:var(--sch-sky)}
.footer-divider{border:none;border-top:1px solid rgba(255,255,255,.08)}
.footer-bottom{display:flex;align-items:center;justify-content:space-between;padding-block:var(--space-lg);flex-wrap:wrap;gap:var(--space-md)}
.footer-bottom__copy{font-size:.85rem;color:rgba(255,255,255,.45)}
.footer-bottom__credit a{color:var(--sch-sky);font-weight:600}
.footer-bottom__credit a:hover{color:var(--sch-sky-pale);text-decoration:underline}
@media(max-width:960px){.footer-grid{grid-template-columns:1fr 1fr;gap:var(--space-xl)}}
@media(max-width:600px){.footer-grid{grid-template-columns:1fr}}

.enrol-float{position:fixed;bottom:24px;right:24px;z-index:900;animation:float-in .6s 1s both}
@keyframes float-in{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.enrol-float__btn{display:flex;align-items:center;gap:8px;padding:14px 22px;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--sch-blue),var(--sch-blue-mid));color:#fff;font-size:.9375rem;font-weight:700;box-shadow:0 8px 32px rgba(23,60,53,.45);transition:all var(--transition-base);cursor:pointer;border:none;font-family:var(--font-body)}
.enrol-float__btn:hover{transform:translateY(-3px);box-shadow:0 14px 40px rgba(23,60,53,.55)}

.contact-form input,.contact-form textarea,.contact-form select{width:100%;padding:14px 18px;border:2px solid var(--sch-gray-200);border-radius:var(--radius-md);font-size:1rem;background:var(--sch-white);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none;margin-bottom:16px;color:var(--sch-text)}
.contact-form input:focus,.contact-form textarea:focus{border-color:var(--sch-blue-light);box-shadow:0 0 0 3px rgba(75,146,122,.15)}
.contact-form textarea{min-height:140px;resize:vertical}

@keyframes pulse-dot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.25)}}
@keyframes fadeInUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
.animate-up{animation:fadeInUp .65s ease both}
.delay-1{animation-delay:.1s} .delay-2{animation-delay:.2s} .delay-3{animation-delay:.3s} .delay-4{animation-delay:.4s}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
*:focus-visible{outline:3px solid var(--sch-blue-light);outline-offset:3px;border-radius:var(--radius-sm)}

@media(max-width:900px){.main-nav{display:none}.hamburger{display:flex}.section{padding-block:var(--space-3xl)}.header-enroll-btn .btn-text-full{display:none}.header-enroll-btn .btn-text-short{display:inline}}
@media(max-width:600px){.container{padding-inline:var(--space-md)}.section{padding-block:var(--space-2xl)}.footer-bottom{flex-direction:column;text-align:center}}

.bg-blue-ultra{background:var(--sch-sky-ultra)} .bg-blue{background:var(--sch-blue)} .bg-blue-dark{background:var(--sch-blue-dark)}
.text-white{color:#fff} .text-blue{color:var(--sch-blue)} .text-sky{color:var(--sch-sky)}
.rounded-full{border-radius:var(--radius-full)} .w-full{width:100%} .mt-auto{margin-top:auto}

.page-hero{background:linear-gradient(135deg,var(--sch-blue-dark) 0%,var(--sch-blue) 100%);padding:calc(var(--header-height) + 60px) 0 80px;text-align:center;position:relative;overflow:hidden}
.page-hero::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:60px;background:var(--sch-white);clip-path:ellipse(60% 100% at 50% 100%)}
.page-hero h1{color:#fff;margin-bottom:12px}
.page-hero p{color:rgba(255,255,255,.75);max-width:560px;margin:0 auto;font-size:1.0625rem}

/* ==========================================================================
   v4 FIXES
   ========================================================================== */

/* ── Header logo must stay within header height ── */
.site-header .site-logo img,
.site-header a > img {
    max-height: 52px !important;
    width: auto !important;
    display: block;
}
.site-header a[href] > div {
    display: flex;
    align-items: center;
}

/* ── Hero section PC fix: reduce top padding ── */
@media (min-width: 901px) {
    #hero-section {
        padding-top: calc(var(--header-height, 72px) + 40px) !important;
        padding-bottom: 60px !important;
        min-height: auto !important;
    }
}

/* ── Remove any age badge elements globally ── */
.age-badge, .prog-age-badge, [class*="age-label"] {
    display: none !important;
}

/* ── Class card image age overlay ── */
.class-age-overlay { display: none !important; }

/* ── Hero widget age text ── */
.hero-prog-age { display: none !important; }

/* ── Ensure header stays at fixed height, logo doesn't overflow ── */
.site-header {
    height: var(--header-height, 72px);
    overflow: visible;
}
.site-header .container {
    height: var(--header-height, 72px);
    display: flex;
    align-items: center;
}
.header-inner {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    position: relative;
}

/* ── Services page: hide age range spans ── */
.class-card__age,
.prog-age,
.age-range,
span[class*="age"] {
    display: none !important;
}


/* ======================================================================
   1805 Laundry v1.0.2 — targeted responsive refinements
   Preserve the existing theme layout; correct only the reported issues.
   ====================================================================== */
@media (max-width: 899px) {
  .site-header { height: 70px !important; min-height: 70px; }
  .site-header > .container {
    height: 70px !important;
    min-height: 70px;
    padding-left: 18px !important;
    padding-right: 18px !important;
    box-sizing: border-box;
  }
  .header-mobile {
    display: flex !important;
    width: 100%;
    min-width: 0;
    position: relative;
    gap: 12px;
  }
  .header-mobile .hamburger {
    width: 42px;
    height: 42px;
    min-width: 42px;
    display: flex !important;
    align-items: center;
    justify-content: center;
    padding: 8px !important;
    margin: 0;
    border-radius: 9px;
  }
  .header-mobile > div { min-width: 0; }
  .header-mobile img,
  .header-mobile .custom-logo,
  .header-mobile .site-logo img {
    max-height: 44px !important;
    max-width: min(48vw, 180px) !important;
    width: auto !important;
    height: auto !important;
    object-fit: contain;
  }
  .mobile-nav { top: 70px; height: calc(100dvh - 70px); padding-top: 18px; overflow-y: auto; }
}

/* Four trust points must fit the desktop text column without clipping. */
.hero-trust-badges {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.hero-trust-badge {
  min-width: 0;
  max-width: 100%;
  padding: 10px 5px;
  gap: 6px;
  box-sizing: border-box;
}
.hero-trust-badge__label {
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  text-align: center;
  line-height: 1.25;
  font-size: clamp(.62rem, .72vw, .75rem);
}
@media (min-width: 641px) and (max-width: 1100px) {
  .hero-trust-badges { gap: 6px; }
  .hero-trust-badge__icon { width: 24px; height: 24px; }
  .hero-trust-badge__label { font-size: .64rem; }
}
@media (max-width: 640px) {
  .hero-trust-badges { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hero-trust-badge__label { font-size: .6875rem; }
}


/* v1.0.4 — responsive corrections and editable homepage section presentation */
@media (max-width: 900px) {
  .site-header { height: 70px !important; min-height: 70px !important; }
  .site-header > .container { height: 70px !important; padding-inline: 16px !important; }
  .header-mobile { display:flex !important; align-items:center !important; justify-content:space-between !important; width:100%; min-width:0; position:relative; gap:10px; }
  .header-mobile > div { min-width:0; }
  .header-mobile > div:first-of-type { max-width:calc(100% - 112px); }
  .header-mobile .hamburger { flex:0 0 42px; width:42px; height:42px; padding:9px !important; display:flex !important; align-items:center; justify-content:center; position:relative; z-index:2; }
  .header-mobile .hamburger span { width:23px !important; }
  .header-mobile img, .header-mobile .custom-logo, .header-mobile .site-logo img { max-width: min(44vw,150px) !important; max-height:42px !important; width:auto !important; height:auto !important; object-fit:contain; }
  .header-mobile .site-logo { font-size:1.05rem; }
  .mobile-nav { top:70px !important; height:calc(100dvh - 70px) !important; padding:18px 18px 24px !important; overflow-y:auto; }
}
@media (max-width: 520px) {
  .header-mobile > div[style*="flex-direction:column"] { display:none !important; }
  .header-mobile > div[style*="position:absolute"] { max-width:calc(100% - 80px); }
}
/* Do not let the homepage's four benefit labels exceed the text column. */
.hero-trust-badges { grid-template-columns:repeat(4,minmax(0,1fr)) !important; width:100%; min-width:0; }
.hero-trust-badge { min-width:0; max-width:100%; padding-inline:7px; gap:6px; }
.hero-trust-badge__label { white-space:normal !important; overflow-wrap:anywhere; text-align:center; line-height:1.25; }
@media (max-width: 640px) { .hero-trust-badges { grid-template-columns:repeat(2,minmax(0,1fr)) !important; } }
/* Contact page must stack before tablet widths; the old inline grid must never force overflow. */
body.page-template-page-contact-new .form-grid,
.form-grid { display:grid !important; grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important; align-items:start; width:100%; max-width:100%; min-width:0; gap:24px !important; }
.form-grid > * { width:100% !important; max-width:100% !important; min-width:0 !important; box-sizing:border-box !important; }
.form-grid > div:first-child { padding:clamp(20px,4vw,40px) !important; }
.form-grid > div:last-child > div { max-width:100%; min-width:0; box-sizing:border-box; }
.form-grid > div:last-child > div[style*="linear-gradient"] { overflow-wrap:anywhere; }
.contact-form { width:100%; max-width:100%; min-width:0; }
.contact-form > div[style*="grid-template-columns"] { display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
.contact-form input,.contact-form textarea,.contact-form select { display:block; width:100% !important; min-width:0 !important; max-width:100% !important; box-sizing:border-box !important; }
.contact-form label { min-width:0; overflow-wrap:anywhere; }
@media(max-width:900px) {
  body.page-template-page-contact-new .form-grid, .form-grid { display:flex !important; flex-direction:column !important; align-items:stretch; }
}
@media(max-width:560px) {
  .contact-form > div[style*="grid-template-columns"] { grid-template-columns:minmax(0,1fr) !important; }
  .form-grid > div:first-child { padding:22px 18px !important; }
  .form-grid > div:last-child > div { padding:20px !important; }
  .form-grid > div:last-child > div:first-child > div[style*="justify-content:space-between"] { display:grid !important; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); gap:8px; }
  .form-grid > div:last-child > div:first-child > div[style*="justify-content:space-between"] > span { min-width:0; overflow-wrap:anywhere; }
}

/* Homepage service plans, price preview and collection section */
.laundry-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:stretch}
.laundry-plan-card{background:#fff;border:1px solid var(--sch-gray-200);border-radius:18px;padding:26px;box-shadow:var(--shadow-md);display:flex;flex-direction:column;min-width:0}
.laundry-plan-card__top{border-bottom:1px solid var(--sch-gray-200);padding-bottom:16px;margin-bottom:16px}
.laundry-plan-card h3{margin:0 0 10px;color:var(--sch-blue-dark)}
.laundry-plan-price{font-size:1.65rem;font-weight:800;color:var(--sch-blue-dark)}
.laundry-plan-price small{font-size:.8rem;font-weight:600;color:var(--sch-text-light)}
.laundry-plan-card p{color:var(--sch-text-light);line-height:1.65}
.laundry-plan-card ul,.laundry-pickup-copy ul{list-style:none;padding:0;margin:12px 0 22px}
.laundry-plan-card li,.laundry-pickup-copy li{padding:8px 0 8px 22px;position:relative;color:var(--sch-text);font-size:.9rem;line-height:1.5}
.laundry-plan-card li:before,.laundry-pickup-copy li:before{content:'';position:absolute;left:0;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--sch-blue-light)}
.laundry-plan-card .btn{margin-top:auto;justify-content:center}
.laundry-price-table-wrap{overflow-x:auto;border:1px solid var(--sch-gray-200);border-radius:16px;box-shadow:var(--shadow-sm)}
.laundry-price-table{width:100%;border-collapse:collapse;background:#fff;text-align:left}
.laundry-price-table th,.laundry-price-table td{padding:16px 20px;border-bottom:1px solid var(--sch-gray-200)}
.laundry-price-table th{background:var(--sch-sky-ultra);color:var(--sch-blue-dark);font-size:.82rem;text-transform:uppercase;letter-spacing:.04em}
.laundry-price-table td{color:var(--sch-text)}
.laundry-price-table td small{color:var(--sch-text-light)}
.laundry-pickup-section{background:#f4f7f3}
.laundry-pickup-inner{display:grid;grid-template-columns:1fr 1fr;gap:54px;align-items:center}
.laundry-pickup-copy p{color:var(--sch-text-light);line-height:1.8;font-size:1.02rem}
.laundry-pickup-image{min-height:330px;border-radius:22px;overflow:hidden;background:var(--sch-sky-ultra);box-shadow:var(--shadow-lg)}
.laundry-pickup-image img{width:100%;height:100%;min-height:330px;object-fit:cover;display:block}
.laundry-pickup-image-placeholder{min-height:330px;display:flex;align-items:center;justify-content:center;color:var(--sch-blue-dark);font-size:1.5rem;font-weight:800}
@media(max-width:900px){.laundry-plan-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.laundry-pickup-inner{grid-template-columns:1fr;gap:28px}}
@media(max-width:560px){.laundry-plan-grid{grid-template-columns:minmax(0,1fr)}.laundry-plan-card{padding:22px}.laundry-price-table th,.laundry-price-table td{padding:13px 12px;font-size:.84rem}}
/* 1805 Laundry v1.0.6 — permanent core service catalogue and protected demo cleanup */
.laundry-service-card{background:#fff;border:1px solid var(--sch-gray-200);border-radius:18px;overflow:hidden;box-shadow:0 5px 20px rgba(23,60,53,.07);transition:transform .22s ease,box-shadow .22s ease;min-width:0}
.laundry-service-card:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(23,60,53,.12)}
.laundry-service-card>a:first-child{display:block;height:180px;overflow:hidden}
.laundry-service-card>a:first-child img{width:100%;height:100%;object-fit:cover}
.laundry-service-card__placeholder{height:120px;background:linear-gradient(110deg,#edf3ed,#f8f8f3);display:flex;align-items:center;justify-content:center;color:var(--sch-blue);font-size:2rem;border-bottom:1px solid var(--sch-gray-200)}
.laundry-service-card__placeholder span{width:58px;height:58px;border:1px solid #cbd9ce;border-radius:50%;display:grid;place-items:center;background:#fff;font-size:1.6rem}
.laundry-service-card__body{padding:20px 21px 22px}
.laundry-service-card__tag{display:inline-block;color:var(--sch-blue);background:#edf4ef;border-radius:4px;padding:5px 8px;font-size:.66rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;margin-bottom:10px}
.laundry-service-card__body h3{font-size:1.12rem;line-height:1.3;margin:0 0 9px}
.laundry-service-card__body p{font-size:.88rem;color:var(--sch-text-light);line-height:1.7;margin:0 0 13px}
.laundry-service-card__meta{font-size:.75rem;color:var(--sch-text-light);margin:0 0 12px}
.laundry-service-card__tags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.laundry-service-card__tags span{font-size:.68rem;color:#52685d;background:#f4f6f1;border:1px solid #e4e9e1;border-radius:3px;padding:4px 7px}
.laundry-service-card__link{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #edf0eb;padding-top:13px;color:var(--sch-blue);font-size:.83rem;font-weight:800}
.laundry-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:stretch}
.laundry-plan-card{background:#fff;border:1px solid #e2e8df;border-radius:16px;padding:25px 24px;box-shadow:0 5px 18px rgba(23,60,53,.055);display:flex;flex-direction:column;min-width:0}
.laundry-plan-card:nth-child(2){border-color:var(--sch-blue-light);box-shadow:0 12px 30px rgba(23,60,53,.12);transform:translateY(-7px)}
.laundry-plan-card__top{padding-bottom:17px;border-bottom:1px solid #edf0eb;margin-bottom:16px}
.laundry-plan-card__top h3{font-size:1.1rem;margin-bottom:12px}
.laundry-plan-price{font-size:1.8rem;font-weight:900;color:var(--sch-blue-dark);letter-spacing:-.04em}
.laundry-plan-price small{font-size:.72rem;font-weight:600;letter-spacing:0;color:var(--sch-text-light)}
.laundry-plan-card>p{font-size:.86rem;color:var(--sch-text-light);line-height:1.65;min-height:48px}
.laundry-plan-card ul{margin:16px 0 22px;display:grid;gap:10px}
.laundry-plan-card li,.laundry-pickup-copy li{position:relative;padding-left:17px;font-size:.82rem;color:#52665b;line-height:1.5}
.laundry-plan-card li:before,.laundry-pickup-copy li:before{content:'';position:absolute;left:0;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--sch-blue-light)}
.laundry-plan-card .btn{margin-top:auto;white-space:normal;text-align:center}
.laundry-price-table-wrap{overflow-x:auto;border:1px solid #e4e9e1;border-radius:14px;background:#fff;box-shadow:0 5px 20px rgba(23,60,53,.05)}
.laundry-price-table{width:100%;border-collapse:collapse;min-width:500px}
.laundry-price-table th{background:#f1f5ef;color:#52685d;text-align:left;font-size:.72rem;letter-spacing:.07em;text-transform:uppercase;padding:15px 20px}
.laundry-price-table td{padding:15px 20px;border-top:1px solid #edf0eb;font-size:.88rem;color:#3c5147}
.laundry-price-table tr:hover td{background:#fbfcf9}
.laundry-price-table td strong{color:var(--sch-blue-dark);font-size:.95rem}
@media(max-width:900px){.laundry-plan-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.laundry-plan-card:nth-child(2){transform:none}}
@media(max-width:600px){.laundry-plan-grid{grid-template-columns:1fr}.laundry-plan-card{padding:22px}.laundry-service-card__body{padding:17px}.laundry-service-card>a:first-child{height:165px}}

.value-list-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--sch-blue-light);margin-top:7px}
@media(max-width:760px){.prog-hp-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:520px){.prog-hp-grid{grid-template-columns:1fr!important}}

/* 1805 Laundry v1.0.7 — refined service catalogue */
.laundry-services-hero{position:relative;isolation:isolate;overflow:hidden;padding:clamp(64px,8vw,112px) 0 clamp(58px,7vw,88px);background:linear-gradient(125deg,var(--services-hero-a),var(--services-hero-b));color:#fff}
.laundry-services-hero:after{content:"";position:absolute;z-index:-1;width:min(58vw,700px);height:min(58vw,700px);right:-15%;top:-70%;border:1px solid rgba(255,255,255,.12);border-radius:50%;box-shadow:0 0 0 42px rgba(255,255,255,.035),0 0 0 84px rgba(255,255,255,.025)}
.laundry-services-hero__inner{position:relative;z-index:1;text-align:center}
.laundry-eyebrow{margin:0 0 12px;color:#8fbba8;font-size:.68rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.laundry-services-hero h1{margin:0 auto 14px;color:#fff;font-size:clamp(2.15rem,5vw,3.7rem);line-height:1.06;letter-spacing:-.045em}
.laundry-services-hero__intro{max-width:620px;margin:0 auto;color:rgba(255,255,255,.78);font-size:clamp(.96rem,1.5vw,1.1rem);line-height:1.75}
.laundry-services-catalogue{padding:clamp(54px,7vw,88px) 0;background:#f5f6f0}
.laundry-services-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:30px}
.laundry-services-heading .laundry-eyebrow{margin-bottom:8px;color:var(--sch-blue-light,#4b927a)}
.laundry-services-heading h2{margin:0;color:var(--sch-blue-dark,#173c35);font-size:clamp(1.65rem,3vw,2.35rem);letter-spacing:-.035em;line-height:1.15}
.laundry-services-heading>p{max-width:390px;margin:0;color:#68776e;font-size:.92rem;line-height:1.7}
.laundry-services-bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:18px;align-items:stretch}
.laundry-service-tile{grid-column:span 4;display:flex;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border:1px solid #e4e9e1;border-radius:16px;box-shadow:0 5px 18px rgba(27,57,48,.045);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.laundry-service-tile:nth-child(1),.laundry-service-tile:nth-child(2){grid-column:span 6}
.laundry-service-tile:hover{transform:translateY(-3px);border-color:#cbdacf;box-shadow:0 14px 32px rgba(27,57,48,.09)}
.laundry-service-tile__visual{position:relative;display:block;min-height:190px;overflow:hidden;background:#e8eee7;color:#173c35;text-decoration:none}
.laundry-service-tile:nth-child(-n+2) .laundry-service-tile__visual{min-height:230px}
.laundry-service-tile__visual.has-image:after{content:"";position:absolute;inset:35% 0 0;background:linear-gradient(180deg,transparent,rgba(12,35,29,.5))}
.laundry-service-tile__image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .55s ease}
.laundry-service-tile:hover .laundry-service-tile__image{transform:scale(1.035)}
.laundry-service-tile__visual.is-editorial{background:linear-gradient(135deg,#e6eee7 0%,#f1f3eb 58%,#dce8df 100%)}
.laundry-service-tile:nth-child(2n) .laundry-service-tile__visual.is-editorial{background:linear-gradient(135deg,#e8ece7,#f3f0e7 65%,#e1e9e2)}
.laundry-service-tile__visual-word{position:absolute;left:24px;bottom:8px;color:rgba(31,76,62,.08);font-size:clamp(4.8rem,10vw,8.5rem);font-weight:900;letter-spacing:-.09em;line-height:1}
.laundry-service-tile__number{position:absolute;z-index:2;top:17px;left:18px;display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(255,255,255,.65);border-radius:50%;background:rgba(255,255,255,.88);color:#245c4b;font-size:.75rem;font-weight:800;letter-spacing:.04em}
.laundry-service-tile__visual-caption{position:absolute;z-index:2;right:18px;bottom:16px;color:#fff;font-size:.58rem;font-weight:800;letter-spacing:.14em;text-shadow:0 1px 8px rgba(0,0,0,.3)}
.laundry-service-tile__content{display:flex;flex:1;flex-direction:column;padding:23px 24px 22px}
.laundry-service-tile__kicker{margin:0 0 8px;color:#6d9882;font-size:.62rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase}
.laundry-service-tile__copy h3{margin:0 0 9px;color:var(--sch-blue-dark,#173c35);font-size:1.22rem;line-height:1.25;letter-spacing:-.025em}
.laundry-service-tile__copy h3 a{color:inherit;text-decoration:none}
.laundry-service-tile__description{max-width:62ch;margin:0;color:#69776f;font-size:.88rem;line-height:1.7}
.laundry-service-tile__facts{display:flex;flex-wrap:wrap;gap:18px;margin-top:17px;padding-top:14px;border-top:1px solid #edf0eb}
.laundry-service-tile__facts span{display:flex;flex-direction:column;gap:3px;color:#66766d;font-size:.75rem}
.laundry-service-tile__facts strong{color:#314c40;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.laundry-service-tile__tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:15px}
.laundry-service-tile__tags span{padding:5px 9px;border:1px solid #e5ebe3;border-radius:4px;background:#f7f8f4;color:#64756a;font-size:.68rem;line-height:1.2}
.laundry-service-tile__link{display:inline-flex;align-items:center;align-self:flex-start;margin-top:auto;padding-top:18px;color:#276b55;font-size:.82rem;font-weight:800;text-decoration:none}
.laundry-service-tile__link:after{content:"";width:24px;height:1px;margin-left:10px;background:#8db29c;transition:width .2s ease}
.laundry-service-tile__link:hover:after{width:38px}
.laundry-services-empty{padding:55px 24px;text-align:center;border:1px dashed #cbd8cd;border-radius:14px;background:rgba(255,255,255,.65)}
.laundry-services-empty h3{margin:0 0 8px;color:#234c3e}
.laundry-services-empty p{margin:0;color:#6b786f}
.laundry-services-bottom{display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap;margin-top:34px;text-align:center}
.laundry-services-bottom p{margin:0;color:#65736a;font-size:.88rem}
.laundry-services-bottom__button,.laundry-services-collection__inner>a{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 23px;border:1px solid #286b55;border-radius:999px;background:transparent;color:#286b55;font-size:.82rem;font-weight:800;text-decoration:none;transition:background .2s,color .2s}
.laundry-services-bottom__button:hover{background:#286b55;color:#fff}
.laundry-services-collection{padding:36px 0;background:#fff}
.laundry-services-collection__inner{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:clamp(26px,4vw,42px);border-radius:16px;background:linear-gradient(120deg,var(--services-hero-a),var(--services-hero-b));color:#fff}
.laundry-services-collection__inner .laundry-eyebrow{color:#a8cdb8}
.laundry-services-collection__inner h2{margin:0 0 8px;color:#fff;font-size:clamp(1.35rem,2.5vw,1.9rem);letter-spacing:-.03em}
.laundry-services-collection__inner p:not(.laundry-eyebrow){max-width:590px;margin:0;color:rgba(255,255,255,.76);font-size:.88rem;line-height:1.65}
.laundry-services-collection__inner>a{flex:0 0 auto;border-color:#fff;background:#fff;color:#205744}
.laundry-services-collection__inner>a:hover{background:transparent;color:#fff}
@media(max-width:900px){.laundry-services-heading{align-items:flex-start;flex-direction:column;gap:10px}.laundry-services-bento{grid-template-columns:repeat(2,minmax(0,1fr))}.laundry-service-tile,.laundry-service-tile:nth-child(1),.laundry-service-tile:nth-child(2){grid-column:span 1}.laundry-service-tile__visual,.laundry-service-tile:nth-child(-n+2) .laundry-service-tile__visual{min-height:190px}}
@media(max-width:600px){.laundry-services-hero{padding:58px 0 54px}.laundry-services-catalogue{padding:48px 0}.laundry-services-bento{grid-template-columns:1fr;gap:14px}.laundry-service-tile__visual,.laundry-service-tile:nth-child(-n+2) .laundry-service-tile__visual{min-height:178px}.laundry-service-tile__content{padding:20px}.laundry-service-tile__copy h3{font-size:1.13rem}.laundry-services-collection__inner{align-items:flex-start;flex-direction:column}.laundry-services-collection__inner>a{width:100%}.laundry-services-bottom{flex-direction:column;gap:12px}}
@media(prefers-reduced-motion:reduce){.laundry-service-tile,.laundry-service-tile__image,.laundry-service-tile__link:after{transition:none}}


/* 1805 Laundry v1.0.9 — visible service catalogue redesign */
.laundry-services-catalogue{background:#f4f5ef;padding:clamp(58px,7vw,100px) 0}
.laundry-services-heading{max-width:1160px;margin:0 auto 34px;display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.72fr);align-items:end;gap:42px}
.laundry-services-heading h2{max-width:680px;font-size:clamp(2rem,3.4vw,3.1rem);line-height:1.04;letter-spacing:-.055em;font-weight:800}
.laundry-services-heading>p{max-width:420px;font-size:.96rem;line-height:1.75;color:#68766d}
.laundry-services-bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:20px;align-items:stretch}
.laundry-service-tile,.laundry-service-tile:nth-child(1),.laundry-service-tile:nth-child(2){grid-column:span 4;border:1px solid #e1e6dc;border-radius:5px;background:#fff;box-shadow:0 8px 24px rgba(26,57,46,.045);overflow:hidden;transition:transform .22s ease,box-shadow .22s ease}
.laundry-service-tile:nth-child(1){grid-column:span 7;display:grid;grid-template-columns:1.05fr .95fr;grid-template-rows:1fr;min-height:380px}
.laundry-service-tile:nth-child(2){grid-column:span 5;min-height:380px}
.laundry-service-tile:nth-child(n+3){min-height:340px}
.laundry-service-tile:hover{transform:translateY(-3px);box-shadow:0 16px 34px rgba(26,57,46,.09)}
.laundry-service-tile__visual,.laundry-service-tile:nth-child(-n+2) .laundry-service-tile__visual{min-height:220px;height:100%;background:#e5ebe2;position:relative;overflow:hidden}
.laundry-service-tile:nth-child(1) .laundry-service-tile__visual{grid-row:1;grid-column:1;min-height:380px}
.laundry-service-tile:nth-child(1) .laundry-service-tile__content{grid-row:1;grid-column:2;justify-content:center;padding:clamp(22px,3vw,38px)}
.laundry-service-tile:nth-child(2) .laundry-service-tile__visual{min-height:205px}
.laundry-service-tile__visual.is-editorial{background:linear-gradient(145deg,#e5ece4 0%,#f2f2e9 54%,#d8e4da 100%)}
.laundry-service-tile:nth-child(2n) .laundry-service-tile__visual.is-editorial{background:linear-gradient(145deg,#e8e9df 0%,#f4f2e9 55%,#dce6dc 100%)}
.laundry-service-tile__visual-word{display:none}
.laundry-service-tile__fallback{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;padding:24px 26px;color:#234b3d;background:linear-gradient(145deg,rgba(255,255,255,.08),rgba(23,60,53,.035))}
.laundry-service-tile__fallback>span{font-size:clamp(4.5rem,9vw,8rem);line-height:.8;font-weight:900;letter-spacing:-.1em;color:rgba(35,75,61,.12)}
.laundry-service-tile__fallback strong{max-width:90%;margin-top:18px;font-size:clamp(1.2rem,2vw,1.8rem);line-height:1.05;letter-spacing:-.04em;color:#315b49}
.laundry-service-tile__fallback small{margin-top:9px;font-size:.58rem;font-weight:800;letter-spacing:.16em;color:#6d8e7a}
.laundry-service-tile__number{top:16px;left:16px;width:36px;height:36px;border:1px solid rgba(35,75,61,.18);background:rgba(255,255,255,.88);color:#315b49}
.laundry-service-tile__visual-caption{font-size:.56rem;letter-spacing:.15em;color:#fff}
.laundry-service-tile__content{padding:24px 25px 23px;display:flex;flex-direction:column;min-width:0}
.laundry-service-tile__kicker{font-size:.61rem;letter-spacing:.15em;color:#77927f;margin-bottom:11px}
.laundry-service-tile__copy h3{font-size:clamp(1.2rem,1.8vw,1.55rem);line-height:1.12;letter-spacing:-.04em;margin-bottom:11px}
.laundry-service-tile__description{font-size:.88rem;line-height:1.72;color:#68766d}
.laundry-service-tile__facts{margin-top:16px}
.laundry-service-tile__tags{margin-top:15px;gap:6px}
.laundry-service-tile__tags span{background:#f5f6f1;border:1px solid #e7ebe3;border-radius:2px;padding:5px 8px;font-size:.66rem}
.laundry-service-tile__link{margin-top:auto;padding-top:20px;color:#28644f;font-size:.78rem;letter-spacing:.015em;border-top:1px solid #edf0e9;align-self:stretch}
.laundry-service-tile__link:after{display:none!important;content:none!important}
.laundry-services-bottom{margin-top:42px}
.laundry-services-bottom__button{border-radius:3px;min-height:48px;padding-inline:27px;background:#245d49;color:#fff;border-color:#245d49}
.laundry-services-bottom__button:hover{background:#173c35;color:#fff}
/* The homepage catalogue uses the same visual language, not the old icon-circle cards. */
.prog-hp-grid{grid-template-columns:repeat(12,minmax(0,1fr))!important;gap:18px!important}
.laundry-service-card{grid-column:span 4;border-radius:5px;border:1px solid #e2e7df;box-shadow:0 7px 22px rgba(26,57,46,.045);display:flex;flex-direction:column}
.laundry-service-card:nth-child(1){grid-column:span 7;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr}
.laundry-service-card:nth-child(2){grid-column:span 5}
.laundry-service-card>a:first-child{height:205px!important;min-height:205px}
.laundry-service-card:nth-child(1)>a:first-child{grid-column:1;grid-row:1;height:100%!important;min-height:340px}
.laundry-service-card:nth-child(1) .laundry-service-card__body{grid-column:2;grid-row:1;justify-content:center;padding:28px}
.laundry-service-card__placeholder{height:205px;min-height:205px;position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;padding:22px 24px;background:linear-gradient(145deg,#e5ece4,#f1f2e9 58%,#dce6dc);color:#315b49;border-bottom:0;overflow:hidden}
.laundry-service-card:nth-child(1) .laundry-service-card__placeholder{height:100%;min-height:340px}
.laundry-service-card__placeholder span{display:none!important}
.laundry-service-card__placeholder-number{display:block!important;position:absolute;left:20px;top:16px;font-size:5.5rem;font-weight:900;line-height:1;letter-spacing:-.1em;color:rgba(35,75,61,.12)}
.laundry-service-card__placeholder strong{position:relative;z-index:1;font-size:1.4rem;line-height:1.05;letter-spacing:-.04em}
.laundry-service-card__placeholder small{position:relative;z-index:1;margin-top:8px;font-size:.58rem;letter-spacing:.15em;font-weight:800;color:#6d8e7a}
.laundry-service-card__body{display:flex;flex:1;flex-direction:column;padding:23px 24px}
.laundry-service-card__link{margin-top:auto;justify-content:flex-start;border-top:1px solid #edf0eb;padding-top:16px;font-size:.78rem}
.laundry-service-card__link:after{display:none!important;content:none!important}
@media(max-width:900px){.laundry-services-heading{grid-template-columns:1fr;gap:12px}.laundry-service-tile:nth-child(1),.laundry-service-tile:nth-child(2),.laundry-service-tile:nth-child(n+3){grid-column:span 6;display:flex;min-height:0}.laundry-service-tile:nth-child(1) .laundry-service-tile__visual{min-height:210px}.laundry-service-tile:nth-child(1) .laundry-service-tile__content{padding:23px}.prog-hp-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.laundry-service-card,.laundry-service-card:nth-child(1),.laundry-service-card:nth-child(2){grid-column:span 1;display:flex}.laundry-service-card:nth-child(1)>a:first-child{height:205px!important;min-height:205px}.laundry-service-card:nth-child(1) .laundry-service-card__body{padding:23px}}
@media(max-width:600px){.laundry-services-heading{margin-bottom:24px}.laundry-services-heading h2{font-size:2rem}.laundry-services-bento{grid-template-columns:1fr;gap:14px}.laundry-service-tile:nth-child(1),.laundry-service-tile:nth-child(2),.laundry-service-tile:nth-child(n+3){grid-column:1;display:flex}.laundry-service-tile__visual,.laundry-service-tile:nth-child(-n+2) .laundry-service-tile__visual,.laundry-service-tile:nth-child(1) .laundry-service-tile__visual{min-height:185px;height:185px}.laundry-service-tile:nth-child(1) .laundry-service-tile__content{padding:21px}.laundry-service-tile__content{padding:21px}.laundry-service-tile__fallback{padding:19px}.laundry-service-tile__fallback>span{font-size:5rem}.prog-hp-grid{grid-template-columns:1fr!important;gap:14px!important}.laundry-service-card,.laundry-service-card:nth-child(1),.laundry-service-card:nth-child(2){grid-column:1;display:flex}.laundry-service-card:nth-child(1)>a:first-child{height:185px!important;min-height:185px}.laundry-service-card:nth-child(1) .laundry-service-card__body{padding:20px}.laundry-service-card__body{padding:20px}}

/* 1805 Laundry booking request links */
.laundry-price-request{display:inline-flex;align-items:center;justify-content:center;padding:7px 13px;border:1px solid var(--sch-sky-pale,#d9e5d9);border-radius:999px;color:var(--sch-blue-dark,#173c35);font-size:.78rem;font-weight:800;text-decoration:none;white-space:nowrap;transition:background .18s,border-color .18s}
.laundry-price-request:hover{background:var(--sch-sky-ultra,#f1f5ef);border-color:var(--sch-blue-light,#2f806a)}
