/* ==========================================================================
   R/T Tuning — theme styles
   1.  Tokens
   2.  Base
   3.  Utility type
   4.  Buttons
   5.  Announcement bar
   6.  Header
   7.  Mobile nav
   8.  Hero
   9.  Sections (about, services, verified, stats, platforms, video, news,
       packages, trust, cta, media/text, rich text)
   10. Footer
   11. Page hero + inner pages
   12. Blog / archives / comments / forms
   13. WordPress core + block support
   14. Light theme overrides
   15. Reveal animation
   ========================================================================== */

/* 1. Tokens ---------------------------------------------------------------- */
:root{
  --red:#e10600;
  --red-dark:#a80400;
  /* Channel list for the rgba() tints below, which cannot take a hex variable.
     The brand layer overrides this alongside --red. */
  --red-rgb:225,6,0;
  --bg:#0a0a0b;
  --bg-2:#121214;
  --bg-3:#1a1a1d;
  /* Channels of --bg, for the scrims layered over hero and video imagery. */
  --bg-rgb:10,10,11;
  /* Footer sits a shade below the page. */
  --bg-deep:#070708;
  /* Placeholder tones: the diagonal hatch shown where a photograph has not
     been uploaded yet, and the ghost lettering drawn on top of it. */
  --ph-1:#131316;
  --ph-2:#0e0e11;
  --ph-3:#1c1c20;
  --ph-text:#22222a;
  --line:#26262a;
  --text:#f4f4f5;
  --muted:#c9c9d2;
  --dim:#84848e;
  --display:'Oswald',sans-serif;
  --body:'Inter',sans-serif;
  --tech:'Chakra Petch',monospace;
  --wrap:1280px;
  --gutter:32px;
}
@media(max-width:480px){:root{--gutter:20px}}

/* 2. Base ------------------------------------------------------------------ */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--body);font-size:18px;line-height:1.65;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{font-family:inherit}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-9999px;z-index:999;padding:14px 22px;background:var(--red);color:#fff;font-family:var(--display);letter-spacing:.14em;text-transform:uppercase}
.skip-link:focus{left:12px;top:12px}
:focus-visible{outline:2px solid var(--red);outline-offset:3px}

/* 3. Utility type ---------------------------------------------------------- */
.kicker{font-family:var(--tech);font-size:11px;letter-spacing:.35em;text-transform:uppercase;color:var(--red);display:flex;align-items:center;gap:14px}
.kicker::before{content:"";width:34px;height:2px;background:var(--red);flex-shrink:0}
.h-display{font-family:var(--display);font-weight:600;text-transform:uppercase;line-height:.95;letter-spacing:.01em}
.text-red{color:var(--red)}

/* 4. Buttons --------------------------------------------------------------- */
:root{
  --tread-w:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='40'%3E%3Cg fill='%23fff' transform='skewX(-12)'%3E%3Crect x='6' y='0' width='10' height='9' rx='2'/%3E%3Crect x='24' y='0' width='10' height='9' rx='2'/%3E%3Crect x='42' y='0' width='10' height='9' rx='2'/%3E%3Crect x='60' y='0' width='10' height='9' rx='2'/%3E%3Crect x='15' y='31' width='10' height='9' rx='2'/%3E%3Crect x='33' y='31' width='10' height='9' rx='2'/%3E%3Crect x='51' y='31' width='10' height='9' rx='2'/%3E%3Crect x='69' y='31' width='10' height='9' rx='2'/%3E%3C/g%3E%3C/svg%3E");
  --tread-k:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='40'%3E%3Cg fill='%23000' transform='skewX(-12)'%3E%3Crect x='6' y='0' width='10' height='9' rx='2'/%3E%3Crect x='24' y='0' width='10' height='9' rx='2'/%3E%3Crect x='42' y='0' width='10' height='9' rx='2'/%3E%3Crect x='60' y='0' width='10' height='9' rx='2'/%3E%3Crect x='15' y='31' width='10' height='9' rx='2'/%3E%3Crect x='33' y='31' width='10' height='9' rx='2'/%3E%3Crect x='51' y='31' width='10' height='9' rx='2'/%3E%3Crect x='69' y='31' width='10' height='9' rx='2'/%3E%3C/g%3E%3C/svg%3E");
}
.btn{display:inline-flex;align-items:center;gap:12px;font-family:var(--display);font-weight:500;text-transform:uppercase;letter-spacing:.14em;font-size:13px;padding:15px 30px;border:none;cursor:pointer;position:relative;transition:.25s;clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,14px 100%,0 calc(100% - 14px));overflow:hidden;--tread:var(--tread-w)}
.btn::before{content:"";position:absolute;top:0;bottom:0;left:-40%;width:180%;z-index:-1;background-image:var(--tread);background-repeat:repeat-x;background-size:44px 100%;opacity:.1;transform:translateX(-14%);transition:transform .55s ease,opacity .4s ease;pointer-events:none;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 30%,#000 78%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 30%,#000 78%,transparent 100%)}
.btn:hover::before{opacity:.22;transform:translateX(6%)}
.btn-red{background:var(--red);color:#fff}
.btn-red:hover{background:#fff;color:var(--bg);--tread:var(--tread-k)}
.btn-ghost{background:transparent;color:#fff;box-shadow:inset 0 0 0 1px #3a3a40}
.btn-ghost:hover{box-shadow:inset 0 0 0 1px var(--red);color:var(--red)}
.btn .arr{font-family:var(--body)}

/* 5. Announcement bar ------------------------------------------------------ */
.announce{background:var(--red);overflow:hidden;position:relative;z-index:60}
.announce-track{display:flex;gap:64px;white-space:nowrap;padding:8px 0;animation:marq 22s linear infinite;font-family:var(--tech);font-size:11px;letter-spacing:.3em;text-transform:uppercase;font-weight:600}
.announce-track span{display:flex;align-items:center;gap:64px}
.announce-track b{font-weight:400;opacity:.75}
@keyframes marq{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.announce-track{animation:none}}

/* 6. Header ---------------------------------------------------------------- */

/* Utility bar — address, hours and a tappable number above the header. For a
   workshop these are the most-wanted facts on the page. */
.utility-bar{background:var(--bg-2);border-bottom:1px solid var(--line);font-family:var(--tech);font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.utility-inner{display:flex;align-items:center;justify-content:flex-end;gap:30px;height:38px}
.utility-inner>.locations-switch~.utility-item{flex-shrink:0}
.utility-item{display:inline-flex;align-items:center;gap:9px;color:var(--muted);white-space:nowrap}
.utility-item svg{width:14px;height:14px;stroke:var(--red);fill:none;stroke-width:1.6;flex-shrink:0}
a.utility-item:hover{color:var(--red)}
.utility-phone{font-weight:600;color:var(--text)}
/* Light-header brands: the wordmark and burger must not inherit the dark
   theme's near-white text. */
.brand-header-light .logo{color:#131316}
.brand-header-light .logo small{color:#6f6f79}
.brand-header-light .nav-toggle{border-color:#d9d9e0}
.brand-header-light .nav-toggle:hover{border-color:var(--red)}
.brand-header-light .nav-toggle span{background:#131316}
.brand-header-light .utility-bar{background:#f0f0f3;border-bottom-color:#e3e3e8}
.brand-header-light .utility-item{color:#5a5a64}
.brand-header-light .utility-phone{color:#131316}
@media(max-width:860px){.utility-bar{display:none}}

header.site-header{position:sticky;top:0;z-index:50;background:var(--header-bg,rgba(var(--bg-rgb),.88));backdrop-filter:blur(12px);border-bottom:1px solid var(--header-line,var(--line));transition:box-shadow .25s}
header.site-header.is-scrolled{box-shadow:0 6px 24px rgba(0,0,0,.28)}
.brand-header-light header.site-header.is-scrolled{box-shadow:0 4px 20px rgba(10,10,20,.12)}
.nav{display:flex;align-items:center;gap:36px;height:84px;transition:height .25s}
header.site-header.is-scrolled .nav{height:70px}
@media(max-width:1360px){.nav{gap:24px}}

.logo{font-family:var(--display);font-weight:700;font-size:clamp(18px,4.4vw,26px);text-transform:uppercase;letter-spacing:.02em;display:flex;align-items:baseline;line-height:1;min-width:0}
.logo-img{height:38px;width:auto;align-self:center}
.logo .txt{display:none}
.logo.no-img .txt{display:inline}
.logo .slash{color:var(--red);font-style:italic;margin:0 2px;transform:skewX(-12deg);display:inline-block}
.logo small{font-family:var(--tech);font-size:9px;letter-spacing:.32em;color:var(--muted);margin-left:10px;font-weight:400;white-space:nowrap}
@media(max-width:1560px){.logo small{display:none}}

.nav-links-wrap{margin-left:auto}
.nav-links{display:flex;gap:30px;align-items:center}
.nav-links li{position:relative}
.nav-links>li>a{font-family:var(--display);font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.14em;color:var(--header-link,var(--muted));transition:.2s;position:relative;display:flex;align-items:center;gap:7px;white-space:nowrap;height:84px;transition:height .25s,color .2s}
header.site-header.is-scrolled .nav-links>li>a{height:70px}
.nav-links>li>a:hover,.nav-links>li.current-menu-item>a,.nav-links>li.current_page_item>a,.nav-links>li.current-menu-ancestor>a,.nav-links>li.current-menu-parent>a{color:var(--header-hover,#fff)}
/* Underline sits on the header's bottom edge rather than floating under the text. */
.nav-links>li>a::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .22s ease}
.nav-links>li>a:hover::after,.nav-links>li.current-menu-item>a::after,.nav-links>li.current_page_item>a::after,.nav-links>li.current-menu-ancestor>a::after,.nav-links>li.current-menu-parent>a::after,.nav-links>li.is-open>a::after{transform:scaleX(1)}

/* Caret on items that have a dropdown. */
.nav-links>li.rt-has-children>a::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);order:2;opacity:.65;transition:.2s}
.nav-links>li.rt-has-children:hover>a::before,.nav-links>li.rt-has-children.is-open>a::before{opacity:1;transform:rotate(225deg) translateY(-3px)}

/* Dropdowns */
.nav-links .sub-menu{position:absolute;top:100%;left:-20px;min-width:250px;background:var(--bg-2);border:1px solid var(--line);border-top:2px solid var(--red);padding:10px 0;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s,transform .2s,visibility .2s;box-shadow:0 20px 40px rgba(0,0,0,.35);z-index:20}
.nav-links li:hover>.sub-menu,.nav-links li:focus-within>.sub-menu,.nav-links li.is-open>.sub-menu{opacity:1;visibility:visible;transform:none}
.nav-links .sub-menu a{display:block;padding:11px 22px;letter-spacing:.06em;font-size:13px;font-family:var(--body);color:var(--muted);transition:.18s;border-left:2px solid transparent}
.nav-links .sub-menu a:hover{color:var(--red);background:var(--bg-3);border-left-color:var(--red)}
.nav-links .sub-menu .current-menu-item>a{color:var(--header-hover,#fff);border-left-color:var(--red)}

/* Mega menu — a long service list in columns instead of one endless strip. */
.nav-links>li.rt-mega{position:static}
.nav-links>li.rt-mega>.sub-menu{left:0;right:0;width:100%;min-width:0;display:grid;gap:2px 34px;padding:30px max(var(--gutter),calc((100vw - 1216px)/2));border-left:0;border-right:0;box-shadow:0 24px 44px rgba(0,0,0,.32)}
.nav-links>li.rt-mega-cols-2>.sub-menu{grid-template-columns:repeat(2,1fr)}
.nav-links>li.rt-mega-cols-3>.sub-menu{grid-template-columns:repeat(3,1fr)}
.nav-links>li.rt-mega>.sub-menu a{padding:10px 14px;border-left-width:2px}

.brand-header-light .nav-links .sub-menu{background:#fff;border-color:#e3e3e8;box-shadow:0 20px 40px rgba(10,10,20,.13)}
.brand-header-light .nav-links .sub-menu a{color:#43434c}
.brand-header-light .nav-links .sub-menu a:hover{background:#f6f6f8;color:var(--red)}
.brand-header-light .nav-links .sub-menu .current-menu-item>a{color:#131316}

/* Header actions */
.nav-actions{display:flex;align-items:center;gap:18px;flex-shrink:0}
.nav-call{display:inline-flex;align-items:center;gap:10px;font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:.04em;color:var(--header-hover,#fff);white-space:nowrap;transition:.2s}
.nav-call svg{width:17px;height:17px;stroke:var(--red);fill:none;stroke-width:1.7;flex-shrink:0}
.nav-call:hover{color:var(--red)}
.nav .btn.nav-cta{padding:13px 24px;font-size:12px}
/* The utility bar already carries the number on wide screens. */
@media(min-width:861px){.nav-call{display:none}}

@media(max-width:1120px){
  .nav-links-wrap{display:none}
  .nav-actions{margin-left:auto}
}
@media(max-width:720px){
  .nav{height:70px;gap:14px}
  .nav-call-number{display:none}
  .nav-call{padding:0 4px}
  .nav .btn.nav-cta{display:none}
}


/* Locations switcher — two shops, so the bar leads with the choice and names
   them outright rather than hiding both behind a caret. */
.locations-switch{position:relative;display:flex;align-items:center;gap:14px;margin-right:auto}
.locations-toggle{background:none;border:none;cursor:pointer;font:inherit;letter-spacing:inherit;text-transform:inherit;padding:0;height:38px}
.locations-badge{background:var(--red);color:#fff;font-weight:600;letter-spacing:.18em;padding:5px 11px;clip-path:polygon(0 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%)}
.locations-quick{display:inline-flex;align-items:center;gap:10px;color:var(--muted)}
.brand-header-light .locations-quick{color:#5a5a64}
.locations-quick a:hover{color:var(--red);text-decoration:underline;text-underline-offset:3px}
.locations-quick-sep{color:var(--dim)}
.locations-toggle .locations-names{color:var(--dim);letter-spacing:.1em}
.locations-toggle .locations-names::before{content:"·";margin:0 8px;color:var(--dim)}
.locations-caret{width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.65;transition:.2s;flex-shrink:0;margin-left:2px}
.locations-toggle[aria-expanded="true"] .locations-caret{transform:rotate(225deg) translateY(-3px);opacity:1}
.locations-toggle[aria-expanded="true"]{color:var(--red)}
.locations-panel{position:absolute;top:100%;left:-20px;z-index:60;min-width:520px;background:var(--bg-2);border:1px solid var(--line);border-top:2px solid var(--red);box-shadow:0 22px 44px rgba(0,0,0,.4);padding:8px}
.locations-panel[hidden]{display:none}
.brand-header-light .locations-panel{background:#fff;border-color:#e3e3e8;box-shadow:0 22px 44px rgba(10,10,20,.16)}

.location-list{display:grid;gap:2px}
.location-list-panel{grid-template-columns:repeat(2,1fr)}
.location{display:flex;flex-direction:column;gap:7px;padding:20px 22px;text-transform:none;letter-spacing:0;font-family:var(--body);font-size:15px}
.location-list-panel .location{background:var(--bg-3)}
.brand-header-light .location-list-panel .location{background:#f7f7f9}
.location-name{font-family:var(--display);text-transform:uppercase;letter-spacing:.12em;font-size:13px;color:var(--red);font-weight:600}
.location-address{color:var(--muted);line-height:1.5}
.location-phone{display:inline-flex;align-items:center;gap:9px;font-family:var(--display);font-size:19px;font-weight:600;letter-spacing:.03em;color:var(--text)}
.location-phone svg{width:15px;height:15px;stroke:var(--red);fill:none;stroke-width:1.7;flex-shrink:0}
.location-phone:hover{color:var(--red)}
.location-hours{font-family:var(--tech);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);line-height:1.9}
.location-directions{font-family:var(--tech);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--red);margin-top:2px}
.location-directions:hover{text-decoration:underline;text-underline-offset:3px}
.brand-header-light .location-address{color:#43434c}
.brand-header-light .location-phone{color:#131316}
.brand-header-light .location-hours{color:#8f8f98}
@media(max-width:1000px){.locations-panel{min-width:0;width:min(92vw,520px)}.location-list-panel{grid-template-columns:1fr}}
@media(max-width:1100px){.locations-quick{display:none}}

/* Locations in the mobile menu and the footer */
.mobile-locations-title{font-family:var(--tech);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-top:4px}
.location-list-mobile{width:100%;gap:12px}
.location-list-mobile .location{padding:16px 18px;border:1px solid var(--line)}
.brand-header-light .location-list-mobile .location{border-color:#e3e3e8;background:#fafafb}
.location-list-foot{gap:20px}
.location-list-foot .location{padding:0;gap:5px;font-size:15px}
/* The number is the reason most people scroll to a footer, so it is the
   brightest thing in the column rather than the dimmest. */
.location-list-foot .location-phone{font-size:20px;color:#fff;gap:11px}
.location-list-foot .location-phone svg{width:16px;height:16px}
.location-list-foot .location-phone:hover{color:var(--red)}
.location-list-foot .location-hours{color:var(--muted);letter-spacing:.1em}
footer.lite .location-list-foot .location-phone{color:#131316}
footer.lite .location-list-foot .location-hours{color:#55555f}
footer.lite .location-address{color:#40404a}
footer.lite .location-phone{color:#131316}
footer.lite .location-hours{color:#6f6f79}
.location-list-form{gap:18px}
.location-list-form .location{padding:0;gap:5px}
.lite .location-address{color:#3e3e48}
.lite .location-phone{color:#131316}

/* 7. Mobile nav ------------------------------------------------------------ */
.nav-toggle{display:none;width:46px;height:46px;background:none;border:1px solid var(--line);cursor:pointer;position:relative;flex-shrink:0;transition:.2s}
.nav-toggle:hover{border-color:var(--red)}
.nav-toggle span{position:absolute;left:50%;top:50%;width:18px;height:2px;background:var(--header-hover,#fff);transform:translate(-50%,-50%);transition:.25s}
.nav-toggle span:nth-child(1){transform:translate(-50%,-7px)}
.nav-toggle span:nth-child(3){transform:translate(-50%,5px)}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translate(-50%,-50%) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translate(-50%,-50%) rotate(-45deg)}
@media(max-width:1120px){.nav-toggle{display:block}}

.mobile-nav{display:none;border-top:1px solid var(--line);background:var(--bg);max-height:calc(100vh - 84px);overflow-y:auto;overscroll-behavior:contain}
.mobile-nav.open{display:block}
.mobile-nav .mobile-menu>li{border-bottom:1px solid var(--line);position:relative}
.mobile-nav a{display:block;padding:16px var(--gutter);font-family:var(--display);text-transform:uppercase;letter-spacing:.12em;font-size:15px;color:var(--muted)}
.mobile-nav a:hover,.mobile-nav .current-menu-item>a{color:var(--header-hover,#fff)}
/* Parent items get a separate toggle, so tapping the label still navigates. */
.mobile-nav .sub-toggle{position:absolute;top:0;right:0;width:58px;height:53px;background:none;border:none;border-left:1px solid var(--line);cursor:pointer;display:grid;place-items:center}
.mobile-nav .sub-toggle::after{content:"";width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg) translate(-2px,-2px);transition:.25s}
.mobile-nav .sub-toggle[aria-expanded="true"]::after{transform:rotate(225deg) translate(-3px,-3px);border-color:var(--red)}
.mobile-nav .sub-menu{display:none;background:var(--bg-2);border-top:1px solid var(--line)}
.mobile-nav li.is-open>.sub-menu{display:block}
.mobile-nav .sub-menu a{padding:13px var(--gutter) 13px calc(var(--gutter) + 18px);font-family:var(--body);text-transform:none;letter-spacing:.01em;font-size:15px;border-bottom:1px solid rgba(255,255,255,.04)}
.mobile-nav .sub-menu li:last-child a{border-bottom:none}
.mobile-nav-foot{padding:24px var(--gutter) 30px;display:flex;flex-direction:column;gap:16px;align-items:flex-start}
.mobile-nav-foot .btn{justify-content:center;width:100%}
.mobile-phone{display:inline-flex!important;align-items:center;gap:10px;padding:0!important;font-family:var(--display);font-size:22px;font-weight:600;letter-spacing:.03em;color:var(--header-hover,#fff)!important;text-transform:none!important}
.mobile-phone svg{width:18px;height:18px;stroke:var(--red);fill:none;stroke-width:1.7}
.mobile-hours{font-family:var(--tech);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.brand-header-light .mobile-nav{background:#fff;border-top-color:#e3e3e8}
.brand-header-light .mobile-nav .mobile-menu>li{border-bottom-color:#e3e3e8}
.brand-header-light .mobile-nav a{color:#43434c}
.brand-header-light .mobile-nav .sub-menu{background:#f7f7f9;border-top-color:#e3e3e8}
.brand-header-light .mobile-nav .sub-menu a{border-bottom-color:#ececf0}
.brand-header-light .mobile-nav .sub-toggle{border-left-color:#e3e3e8}
.brand-header-light .mobile-nav .sub-toggle::after{border-color:#8a8a95}
.brand-header-light .mobile-hours{color:#8f8f98}

/* 8. Hero ------------------------------------------------------------------ */
.hero{position:relative;min-height:92vh;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}
.hero-media{position:absolute;inset:0;background:
  radial-gradient(1000px 500px at 78% 38%,rgba(var(--red-rgb),.22),transparent 65%),
  linear-gradient(115deg,var(--ph-1) 0%,var(--ph-1) 46%,var(--ph-2) 46.2%,var(--ph-2) 62%,var(--ph-3) 62.2%),
  var(--bg)}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:center 62%;filter:saturate(1.05) contrast(1.05)}
.hero-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(var(--bg-rgb),.55) 0%,rgba(var(--bg-rgb),.18) 40%,rgba(var(--bg-rgb),.92) 88%,var(--bg) 100%)}
.hero-media::before{content:"";position:absolute;inset:0;background:linear-gradient(105deg,rgba(var(--bg-rgb),.92) 0%,rgba(var(--bg-rgb),.55) 38%,transparent 68%);z-index:1}
.hero-inner{position:relative;z-index:2;padding:120px 0 120px}
.hero .kicker{margin-bottom:26px}
.hero h1{font-size:clamp(56px,9.5vw,150px);text-shadow:0 4px 40px rgba(0,0,0,.45)}
.hero h1 .line2{display:block}
.hero h1 .fill-red{color:var(--red);text-shadow:0 3px 24px rgba(0,0,0,.85)}
.hero-sub{max-width:560px;color:var(--muted);font-size:20px;margin:28px 0 38px}
.hero-sub b{color:#fff;font-weight:600}
.hero-ctas{display:flex;gap:18px;flex-wrap:wrap}
.hero-meta{position:absolute;right:var(--gutter);bottom:130px;z-index:2;display:flex;flex-direction:column;gap:10px;align-items:flex-end}
.dyno-chip{font-family:var(--tech);font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);padding:9px 16px;background:rgba(var(--bg-rgb),.6);backdrop-filter:blur(4px)}
.dyno-chip b{color:#fff;font-weight:500}
.hero-index{position:absolute;right:var(--gutter);bottom:56px;z-index:2;font-family:var(--tech);font-size:12px;letter-spacing:.3em;color:var(--muted)}
.hero-index b{color:var(--red);font-size:20px}
@media(max-width:800px){.hero-meta,.hero-index{display:none}.hero-inner{padding:90px 0}}

/* Split hero — a shop with more than one address opens on all of them. */
.hero-split{min-height:0;justify-content:flex-start}
.hero-split .hero-inner{width:100%;padding:104px var(--gutter) 52px}
.hero-split h1{font-size:clamp(46px,7vw,112px)}
.hero-split .hero-sub{margin-bottom:0}
/* Phone only: the shop panels are hidden at this width, so the hero foot
   carries a booking button per shop under the locations count instead. The
   rules themselves sit after the panel block below, where they can reach it. */
.hero-split-book{display:none}
.hero-split-foot{display:flex;align-items:center;justify-content:space-between;gap:26px 40px;flex-wrap:wrap;margin-top:38px}
.hero-split-count{display:flex;align-items:center;gap:18px;font-family:var(--tech);font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--muted)}
.hero-split-count b{font-family:var(--display);font-weight:700;font-size:clamp(56px,7vw,88px);line-height:.82;letter-spacing:0;color:var(--red)}
.hero-split-count span{max-width:18ch}
.hero-split-panes{position:relative;z-index:2;display:grid;grid-template-columns:repeat(var(--panes,2),minmax(0,1fr));border-top:1px solid var(--line)}
/* The panes stay full-bleed -- the grounds and the divider should run edge to
   edge -- but the copy in the outer two lines up with the page's content
   column instead of hugging the viewport.
   --pane-edge reproduces where a .wrap's copy starts. It is written in
   pane-local terms on purpose: a percentage in padding resolves against the
   containing block, so `100%` here is one pane, and `--panes * 100%` is the
   row. Viewport units would have been the obvious reach, but 100vw includes
   the scrollbar and would sit a few pixels out wherever one is shown. */
.hero-loc{position:relative;overflow:hidden;min-height:340px;display:flex;align-items:stretch;border-left:1px solid var(--line)}
.hero-loc:first-child{border-left:0}
.hero-loc-media{position:absolute;inset:0;background:repeating-linear-gradient(45deg,var(--ph-1) 0 12px,var(--ph-2) 12px 24px)}
.hero-loc-media img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.hero-loc-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(var(--bg-rgb),.3) 0%,rgba(var(--bg-rgb),.9) 70%,rgba(var(--bg-rgb),.97) 100%)}
/* A plate is already a designed dark panel, so it does not need a photograph's
   worth of scrim on top -- at .97 the two shop panels read as plain text
   blocks rather than as a split showing each shop. A real photograph keeps the
   heavier gradient above. */
.hero-loc-media.has-plate::after{background:linear-gradient(180deg,rgba(var(--bg-rgb),.18) 0%,rgba(var(--bg-rgb),.62) 62%,rgba(var(--bg-rgb),.82) 100%)}
.hero-loc:hover .hero-loc-media img{transform:scale(1.04)}
.hero-loc-body{position:relative;z-index:2;width:100%;padding:44px clamp(20px,3vw,46px) 48px;display:flex;flex-direction:column;align-items:flex-start}
/* Two columns inside each panel: who and where on the left, how to reach them
   on the right.
   The history matters, because three earlier passes each fixed the wrong
   thing. Aligning the panel's edge to the content column stopped it hugging
   the viewport but left the copy pinned to the left of an 800px panel with 46%
   of it empty. Centring the copy balanced the panel but floated it off the
   page's grid, so it no longer lined up with anything above it. The real
   problem was always that a 340px block cannot fill an 800px panel however it
   is positioned -- so the copy is laid out to fill it instead.
   A two-column split was tried once before and abandoned. It failed because
   the base .hero-loc-body rule declares display:flex further down this file,
   so display:grid lost on source order and the placement below was being
   applied to flex items, which ignore it. This block now sits after it. */
.hero-loc-body{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,auto);
  column-gap:clamp(24px,3vw,52px);
  align-content:start;
}
.hero-loc-num{grid-area:1/1/2/2}
.hero-loc-name{grid-area:2/1/3/2}
.hero-loc-address{grid-area:3/1/4/2}
.hero-loc-blurb{grid-area:4/1/5/2}
.hero-loc-phone{grid-area:2/2/3/3;margin-top:0;align-self:end;white-space:nowrap}
.hero-loc-hours{grid-area:3/2/4/3;margin-top:0}
/* Across both columns: pinned to the first, a shop's own booking button and
   Directions could not sit on one line. */
.hero-loc-actions{grid-area:5/1/6/3;margin-top:0;padding-top:30px;justify-self:start}

/* Outer edges on the page's content column, inner edges a fixed inset off the
   divider, so both panels sit on the same grid as everything above them. */
.hero-loc-body{--pane-edge:max(var(--gutter),calc((var(--panes,2) * 100% - var(--wrap))/2 + var(--gutter)))}
.hero-loc:first-child .hero-loc-body{padding-left:var(--pane-edge);padding-right:40px}
.hero-loc:last-child .hero-loc-body{padding-right:var(--pane-edge);padding-left:40px}

@media(max-width:1100px){
  .hero-loc-body{display:flex;flex-direction:column;align-items:flex-start}
  .hero-loc-phone{margin-top:14px}
  .hero-loc-hours{margin-top:14px}
  .hero-loc-actions{margin-top:auto;padding-top:28px}
  .hero-loc:first-child .hero-loc-body,
  .hero-loc:last-child .hero-loc-body{padding-left:var(--gutter);padding-right:var(--gutter)}
}
.hero-loc-num{font-family:var(--tech);font-size:11px;letter-spacing:.3em;color:var(--red)}
.hero-loc-name{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(32px,3.8vw,54px);line-height:1;margin:10px 0 0;letter-spacing:.01em}
.hero-loc-blurb{color:var(--muted);margin-top:12px;max-width:36ch}
.hero-loc-address{font-style:normal;color:var(--muted);margin-top:18px;line-height:1.55;font-size:16px}
.hero-loc-phone{display:inline-flex;align-items:center;gap:10px;margin-top:14px;font-family:var(--display);font-weight:600;font-size:24px;letter-spacing:.02em;color:#fff}
.hero-loc-phone svg{width:17px;height:17px;stroke:var(--red);fill:none;stroke-width:1.7;flex-shrink:0}
.hero-loc-phone:hover{color:var(--red)}
.hero-loc-hours{font-family:var(--tech);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);margin-top:14px;line-height:1.9}
/* Pinned to the foot of the panel so unequal detail — one shop with a
   direct line, one without — still lines the buttons up. */
.hero-loc-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:auto;padding-top:28px}
@media(max-width:900px){
  .hero-split .hero-inner{padding:80px var(--gutter) 40px}
  .hero-split-panes{grid-template-columns:1fr}
  /* Stacked, a pane is the whole row, so the two-column maths no longer holds
     and every pane is both the first and the last one on screen -- the second
     pane needs its leading edge set too, which the :first-child rule alone
     never reaches. */
  .hero-loc-body{--pane-edge:var(--gutter);padding-left:var(--pane-edge);padding-right:var(--pane-edge)}
  .hero-loc{min-height:0;border-left:0;border-top:1px solid var(--line)}
  .hero-loc:first-child{border-top:0}
}
@media(max-width:720px){
  .hero-split-foot{flex-direction:column;align-items:stretch;gap:22px;margin-top:30px}
  .hero-split-book{display:grid;gap:12px}
  .hero-split-book .btn{width:100%;justify-content:center;text-align:center;padding-left:18px;padding-right:18px}
  .hero-split-foot .hero-ctas{width:100%}
  .hero-split-foot .hero-ctas .btn{flex:1;justify-content:center;text-align:center}
  /* The panels repeat what the footer already lists, and stacked they turned
     the first screen into a scroll past two address cards before the page
     had said anything. The booking buttons above stand in for them. */
  .hero-split-panes{display:none}
}

/* 9. Sections -------------------------------------------------------------- */
section{position:relative}
.sec-pad{padding:110px 0}
/* Heading left, intro right. Without a flex-basis on the two children the
   heading took its full text width -- around 900px at the top clamp -- which
   pushed the intro past the wrap and dropped it underneath. Every section then
   read as one tall left-hand column, one after another down the page.
   A flex line is broken on the children's *base* sizes, before any shrinking,
   so both bases have to fit the row or it wraps anyway: 420 + 380 + 48 = 848,
   which clears the 960px content box at 1024 and only wraps below ~900. */
/* Tops aligned, not bottoms. Aligning the bottoms looks deliberate while the
   intro is a line or two, but a nine-line intro beside a three-line headline
   then hangs above it with a hole underneath. */
.sec-head{display:flex;align-items:flex-start;justify-content:space-between;gap:30px 56px;margin-bottom:56px;flex-wrap:wrap}
.sec-head>div{flex:1 1 420px;min-width:0;max-width:640px}
.sec-head h2{font-size:clamp(34px,4.5vw,58px)}
.sec-head .kicker{margin-bottom:16px}
.sec-head p{color:var(--muted);flex:1 1 380px;max-width:480px;margin-top:8px}
@media(max-width:900px){.sec-head>div{flex-basis:100%;max-width:none}.sec-head p{flex-basis:100%}}

/* section dividers */
.tick{border-top:1px solid var(--line);position:relative}
.tick::after{content:"";position:absolute;top:-2px;height:3px;width:64px;background:var(--red);left:max(var(--gutter),calc((100% - 1216px)/2))}
.tick[data-sec]::before{content:"// " attr(data-sec);position:absolute;top:22px;left:max(var(--gutter),calc((100% - 1216px)/2));font-family:var(--tech);font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--dim)}

/* about band */
.about{background:var(--bg-2)}
.about-grid{display:grid;grid-template-columns:auto 1fr;gap:80px;align-items:center}
.badge25{width:190px;height:210px;background:linear-gradient(180deg,var(--red),var(--red-dark));clip-path:polygon(50% 0,100% 14%,100% 86%,50% 100%,0 86%,0 14%);display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0}
.badge25 b{font-family:var(--display);font-weight:700;font-size:74px;line-height:1}
.badge25 b i{font-style:normal;font-size:40px;vertical-align:26px}
.badge25 span{font-family:var(--tech);font-size:12px;letter-spacing:.5em;text-transform:uppercase;margin-top:6px;margin-left:.5em}
.about h2{font-size:clamp(28px,3.4vw,44px);margin-bottom:20px;max-width:820px}
.about-p{color:var(--muted);max-width:760px;margin-bottom:32px}
.about-p b{color:#fff}
@media(max-width:800px){.about-grid{grid-template-columns:1fr;gap:40px}}

/* platform bands */
.band{position:relative;border-top:1px solid var(--line);overflow:hidden}
.band-grid{display:grid;grid-template-columns:1fr 1fr;min-height:430px}
.band-media{position:relative;background:repeating-linear-gradient(45deg,var(--ph-1) 0 12px,var(--ph-2) 12px 24px);order:2}
.band-media .ghost-brand{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:clamp(40px,6vw,84px);color:var(--ph-text);text-transform:uppercase;letter-spacing:.04em}
.band-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.band-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--bg) 0%,transparent 45%)}
.band-copy{order:1;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:80px 60px;padding-left:max(var(--gutter),calc((100vw - 1216px)/2))}
.band.rev .band-media{order:1}
.band.rev .band-copy{order:2;padding-left:60px;padding-right:max(var(--gutter),calc((100vw - 1216px)/2))}
.band.rev .band-media::after{background:linear-gradient(270deg,var(--bg) 0%,transparent 45%)}
.band-copy .idx{font-family:var(--tech);font-size:11px;letter-spacing:.25em;color:var(--red)}
.band-copy h2{font-family:var(--display);font-weight:700;font-size:clamp(34px,3.6vw,52px);text-transform:uppercase;margin:12px 0 14px}
.band-copy p{color:var(--muted);max-width:480px;margin-bottom:18px}
.band-copy .flag{font-family:var(--tech);font-size:10px;letter-spacing:.24em;color:var(--dim);text-transform:uppercase;margin-bottom:28px}
@media(max-width:900px){.band-grid{grid-template-columns:1fr}.band-media{min-height:260px;order:1!important}.band-copy{order:2!important;padding:50px var(--gutter)!important}.band-media::after{background:linear-gradient(0deg,var(--bg) 0%,transparent 45%)!important}}

/* services accordion */
.services{background:var(--bg)}
.acc{border-top:1px solid var(--line)}
.acc-item{border-bottom:1px solid var(--line);transition:background .25s}
.acc-item.open{background:linear-gradient(90deg,rgba(var(--red-rgb),.06),transparent 60%)}
.acc-head{width:100%;background:none;border:none;cursor:pointer;display:flex;align-items:center;gap:28px;padding:22px 0;text-align:left;color:inherit;font:inherit}
@media(max-width:480px){.acc-head{gap:14px}}
.acc-head .num{font-family:var(--tech);font-size:13px;color:var(--dim);letter-spacing:.2em;transition:.25s;flex-shrink:0}
.acc-head .name{font-family:var(--display);font-weight:600;text-transform:uppercase;font-size:clamp(22px,3.4vw,46px);line-height:1.1;color:#8a8a95;transition:.25s;min-width:0;overflow-wrap:anywhere}
.acc-head:hover .name{color:#fff}
.acc-item.open .acc-head .name{color:#fff}
.acc-item.open .acc-head .num{color:var(--red)}
.acc-head .sign{margin-left:auto;flex-shrink:0;width:38px;height:38px;position:relative;border:1px solid var(--line);transition:.3s}
.acc-head .sign::before,.acc-head .sign::after{content:"";position:absolute;background:var(--muted);left:50%;top:50%;transform:translate(-50%,-50%);transition:.3s}
.acc-head .sign::before{width:14px;height:2px}
.acc-head .sign::after{width:2px;height:14px}
.acc-head:hover .sign{border-color:var(--red)}
.acc-item.open .sign{background:var(--red);border-color:var(--red)}
.acc-item.open .sign::before,.acc-item.open .sign::after{background:#fff}
.acc-item.open .sign::after{transform:translate(-50%,-50%) rotate(90deg);opacity:0}
.acc-body{max-height:0;overflow:hidden;transition:max-height .45s cubic-bezier(.4,0,.2,1)}
.acc-inner{padding:0 0 32px 62px;display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:start}
.acc-inner p{color:var(--muted);font-size:17px;margin-bottom:18px;max-width:560px}
.acc-inner ul{margin:0}
.acc-inner li{color:var(--muted);font-size:16px;padding:7px 0;border-bottom:1px solid var(--line);display:flex;gap:12px}
.acc-inner li::before{content:"//";color:var(--red);font-family:var(--tech);font-size:12px;flex-shrink:0}
.acc-inner .side{border-left:2px solid var(--red);padding-left:22px}
.acc-inner .side h4{font-family:var(--display);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:15px;margin-bottom:8px}
.acc-inner .side p{font-size:15px;margin-bottom:20px}
@media(max-width:820px){.acc-inner{grid-template-columns:1fr;gap:28px;padding-left:0}}

/* verified statement */
.verified{background:var(--bg-2);border-top:1px solid var(--line);position:relative;overflow:hidden}
.verified .curve{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.75}
.verified .curve path{fill:none;stroke-linecap:round}
/* The power curve takes the brand accent. Set here rather than on the <stop>
   elements because var() is not allowed in SVG presentation attributes. */
.verified .curve .curve-accent{stop-color:var(--red)}
.verified .curve .curve-white{stop-color:#fff}
.verified-inner{position:relative;z-index:2;padding:96px 0 88px;text-align:center;display:flex;flex-direction:column;align-items:center}
.verified .kicker{justify-content:center;margin-bottom:24px}
.verified h3{font-family:var(--display);font-weight:600;text-transform:uppercase;font-size:clamp(30px,4.4vw,60px);line-height:1.04;letter-spacing:.01em;max-width:24ch}
.verified h3 span{color:var(--red)}
.verified p{color:var(--muted);max-width:660px;margin-top:22px;font-size:19px}
.verified .proof{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:34px}
.verified .proof span{font-family:var(--tech);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);background:rgba(var(--bg-rgb),.5);padding:11px 18px}
.verified .proof span b{color:var(--red);font-weight:500}
@media(max-width:640px){.verified-inner{padding:70px 0 64px}}

/* stats band */
.stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg-2)}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr)}
.stat{padding:48px 36px;border-left:1px solid var(--line);min-width:0}
.stat:first-child{border-left:none}
.stat .val{font-family:var(--display);font-weight:600;font-size:clamp(36px,4vw,56px);line-height:1}
.stat .val em{color:var(--red);font-style:normal}
.stat .lbl{font-family:var(--tech);font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:var(--muted);margin-top:12px}
@media(max-width:800px){.stats-grid{grid-template-columns:1fr 1fr}.stat{border-top:1px solid var(--line);padding:34px 22px}}
@media(max-width:420px){.stat{padding:28px 18px}}

/* products */
.products{background:var(--bg)}
.prod-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.prod{background:var(--bg-2);padding:28px;display:flex;flex-direction:column;gap:0;position:relative;transition:.25s;overflow:hidden}
.prod:hover{background:var(--bg-3)}
.prod::after{content:"";position:absolute;top:0;left:0;width:0;height:2px;background:var(--red);transition:.3s}
.prod:hover::after{width:100%}
.prod .brand{font-family:var(--tech);font-size:10px;letter-spacing:.3em;color:var(--red);text-transform:uppercase}
.prod .thumb{aspect-ratio:4/3;background:linear-gradient(145deg,var(--ph-3),var(--ph-2));margin:18px 0;display:grid;place-items:center;position:relative;overflow:hidden}
.prod .thumb img{width:100%;height:100%;object-fit:cover;transition:.4s}
.prod:hover .thumb img{transform:scale(1.05)}
.prod .thumb .ph{font-family:var(--display);font-weight:700;font-size:44px;color:var(--ph-text);text-transform:uppercase;letter-spacing:.05em}
.prod h3{font-family:var(--body);font-weight:600;font-size:15px;line-height:1.45;min-height:66px}
.prod .price-row{display:flex;align-items:baseline;gap:10px;margin:14px 0 20px}
.prod .price{font-family:var(--display);font-weight:600;font-size:24px}
.prod .msrp{color:var(--dim);text-decoration:line-through;font-size:13px}
.prod .btn{margin-top:auto;justify-content:center;padding:13px 10px;font-size:12px;background:var(--ph-2);box-shadow:inset 0 0 0 1px var(--line);color:#fff}
.prod .btn:hover{background:var(--red);box-shadow:none}
@media(max-width:1050px){.prod-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.prod-grid{grid-template-columns:1fr}}

/* platform grid (compact cards) */
.plat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.plat{background:var(--bg);padding:44px 36px;position:relative;overflow:hidden;transition:.3s;min-height:220px;display:flex;flex-direction:column}
.plat:hover{background:var(--bg-3)}
.plat .idx{font-family:var(--tech);font-size:11px;color:var(--dim);letter-spacing:.2em}
.plat h3{font-family:var(--display);font-weight:700;font-size:clamp(28px,2.6vw,40px);text-transform:uppercase;margin:14px 0 8px;transition:.25s}
.plat:hover h3{color:var(--red)}
.plat p{color:var(--muted);font-size:14px;max-width:300px}
.plat .go-arr{position:absolute;bottom:30px;right:30px;font-size:20px;color:var(--dim);transition:.25s}
.plat:hover .go-arr{color:var(--red);transform:translate(4px,-4px)}
.plat .flag{margin-top:auto;padding-top:18px;font-family:var(--tech);font-size:10px;letter-spacing:.22em;color:var(--red);text-transform:uppercase}
@media(max-width:900px){.plat-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.plat-grid{grid-template-columns:1fr}}

/* video break */
.vbreak{position:relative;min-height:520px;display:grid;place-items:center;overflow:hidden;background:radial-gradient(900px 480px at 50% 60%,rgba(var(--red-rgb),.14),transparent 70%),repeating-linear-gradient(45deg,var(--ph-1) 0 12px,var(--ph-2) 12px 24px)}
.vbreak>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 70%}
.vbreak::after{content:"";position:absolute;inset:0;background:rgba(var(--bg-rgb),.45)}
.vbreak .play{position:relative;z-index:2;width:96px;height:96px;border-radius:50%;border:1px solid rgba(255,255,255,.4);display:grid;place-items:center;cursor:pointer;transition:.3s;background:rgba(var(--bg-rgb),.35);backdrop-filter:blur(3px);padding:0}
.vbreak .play:hover{background:var(--red);border-color:var(--red);transform:scale(1.08)}
.vbreak .play svg{width:26px;height:26px;fill:#fff;margin-left:5px}
.vbreak .cap{position:absolute;bottom:36px;left:0;right:0;z-index:2}
.vbreak .cap .wrap{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.vbreak .cap h3{font-family:var(--display);font-weight:600;text-transform:uppercase;font-size:clamp(20px,2.4vw,30px)}
.vbreak .cap span{font-family:var(--tech);font-size:11px;letter-spacing:.28em;color:var(--muted);text-transform:uppercase}
.video-modal{position:fixed;inset:0;z-index:200;background:rgba(var(--bg-rgb),.94);display:none;place-items:center;padding:var(--gutter)}
.video-modal.open{display:grid}
.video-modal .frame{width:min(1100px,100%);aspect-ratio:16/9;position:relative}
.video-modal iframe{width:100%;height:100%;border:0}
.video-modal .close{position:absolute;top:-46px;right:0;background:none;border:none;color:#fff;font-size:30px;cursor:pointer;line-height:1}

/* news */
.news{background:var(--bg)}
.news-list{border-top:1px solid var(--line)}
.news-item{display:grid;grid-template-columns:110px 200px 1fr auto;gap:36px;align-items:center;padding:30px 0;border-bottom:1px solid var(--line);transition:.25s}
.news-item:hover{background:var(--bg-2);padding-left:20px;padding-right:20px}
.news-item .date{font-family:var(--display);font-weight:600;line-height:1}
.news-item .date b{display:block;font-size:38px}
.news-item .date span{font-family:var(--tech);font-size:10px;letter-spacing:.3em;color:var(--red);text-transform:uppercase}
.news-item .cat{font-family:var(--tech);font-size:10px;letter-spacing:.24em;color:var(--dim);text-transform:uppercase}
.news-item h3{font-family:var(--display);font-weight:500;text-transform:uppercase;font-size:clamp(17px,1.9vw,24px);letter-spacing:.03em;transition:.25s}
.news-item:hover h3{color:var(--red)}
.news-item .arr{color:var(--dim);font-size:20px;transition:.25s}
.news-item:hover .arr{color:var(--red);transform:translateX(6px)}
@media(max-width:800px){.news-item{grid-template-columns:80px 1fr auto;gap:20px}.news-item .cat{display:none}}

/* packages */
.packs{background:var(--bg-2);border-top:1px solid var(--line)}
.packs-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.pack{background:var(--bg);border:1px solid var(--line);padding:36px 30px;display:flex;flex-direction:column;position:relative;transition:.3s;clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,0 100%)}
.pack:hover{border-color:var(--red);transform:translateY(-6px)}
.pack.hot{border-color:var(--red);background:linear-gradient(180deg,rgba(var(--red-rgb),.08),transparent 55%),var(--bg)}
.pack .tier{font-family:var(--tech);font-size:10px;letter-spacing:.3em;color:var(--muted);text-transform:uppercase}
.pack .tier b{color:var(--red);font-weight:500}
.pack .price{font-family:var(--display);font-weight:600;font-size:44px;margin:16px 0 4px}
.pack .price small{font-size:16px;color:var(--muted);font-weight:400}
.pack .name{font-family:var(--display);text-transform:uppercase;letter-spacing:.08em;font-size:15px;color:var(--muted);margin-bottom:22px}
.pack ul{margin-bottom:30px}
.pack li{font-size:16px;color:var(--muted);padding:8px 0;border-bottom:1px solid var(--line);display:flex;gap:10px}
.pack li::before{content:"+";color:var(--red);font-weight:700}
.pack .btn{margin-top:auto;justify-content:center;font-size:12px;padding:13px}
@media(max-width:1050px){.packs-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.packs-grid{grid-template-columns:1fr}}

/* trust strip */
.trust{background:var(--red)}
.trust-grid{display:grid;grid-template-columns:repeat(4,1fr)}
.trust-item{display:flex;align-items:center;gap:16px;padding:26px 30px;border-left:1px solid rgba(255,255,255,.18);min-width:0}
.trust-item:first-child{border-left:none}
.trust-item svg{width:30px;height:30px;stroke:#fff;fill:none;stroke-width:1.5;flex-shrink:0}
.trust-item span{font-family:var(--display);font-weight:500;text-transform:uppercase;letter-spacing:.12em;font-size:13px;min-width:0;overflow-wrap:anywhere}
@media(max-width:900px){.trust-grid{grid-template-columns:1fr 1fr}.trust-item{border-top:1px solid rgba(255,255,255,.18);padding:22px}}
@media(max-width:560px){.trust-grid{grid-template-columns:1fr}}

/* contact cta */
.contact-cta{background:var(--bg-2);border-bottom:1px solid var(--line)}
/* One layout, not two. The heading and the copy always split the row; the
   arrow takes a third column when there is one. This used to switch on whether
   the shop panels were showing, so a page that had already listed its shops
   higher up got the old layout back: a full-width heading, copy in a 440px
   column, and the rest of the row empty. */
.cta-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr) auto;align-items:start;gap:24px 64px}
.cta-grid>div{display:contents}
.cta-grid .kicker{grid-column:1}
.cta-grid h2{grid-column:1;grid-row:2;font-size:clamp(30px,4vw,54px);word-break:break-word}
.cta-grid h2 span{color:var(--red)}
.cta-grid p{grid-column:2;grid-row:2;color:var(--muted);max-width:520px;margin-top:10px;font-size:17px;line-height:1.65}
.cta-grid .cta-arrow{grid-column:3;grid-row:2;align-self:center}
/* A long body sits beside the heading, not in newspaper columns under it.
   Columns broke sentences across the gap -- "...from 7:30 a.m." in one and
   "to 4:00 p.m." in the next -- and three narrow measures of grey text read
   like a classified notice. One column at a proper reading measure, with the
   heading given enough width to finish at about the same height, balances the
   block and lets it be read straight through. */
.cta-grid.is-long{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:24px 64px;align-items:start}
.cta-grid.is-long .kicker{grid-column:1;grid-row:1}
.cta-grid.is-long h2{grid-column:1;grid-row:2}
.cta-grid.is-long p{grid-column:2;grid-row:2;columns:auto;column-count:1;max-width:58ch;font-size:17px;line-height:1.7;margin-top:6px}
.cta-grid.is-long .cta-arrow{grid-column:2;grid-row:3;justify-self:start;margin-top:8px}
@media(max-width:900px){.cta-grid.is-long{grid-template-columns:1fr}.cta-grid.is-long .kicker,.cta-grid.is-long h2,.cta-grid.is-long p,.cta-grid.is-long .cta-arrow{grid-column:1;grid-row:auto}.cta-grid.is-long p{max-width:none}}
/* Without the arrow there is nothing in the right-hand half, so the heading
   and the copy split the row instead of the copy hugging the left edge. */
@media(max-width:900px){.cta-grid{grid-template-columns:1fr}.cta-grid h2,.cta-grid p,.cta-grid .cta-arrow{grid-column:1}.cta-grid h2,.cta-grid p{grid-row:auto}.cta-grid p{max-width:none}.cta-grid .cta-arrow{grid-row:auto;justify-self:start}}
.cta-arrow{width:88px;height:88px;background:var(--red);display:grid;place-items:center;font-size:30px;color:#fff;clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,16px 100%,0 calc(100% - 16px));cursor:pointer;transition:.25s;flex-shrink:0}
.cta-arrow:hover{background:#fff;color:var(--red)}
/* Two shops, two booking buttons. */
/* Addresses ---------------------------------------------------------------
   Every address on the site is a link to that shop's place on Google Maps, so
   it can be tapped wherever it appears rather than only where a separate
   "Directions" button happened to sit. The pin only shows on the linked form,
   so a plain address never looks like one. */
.address{display:block}
a.address{transition:color .2s}
a.address:hover{color:var(--red)}
a.address.is-link>span{display:inline}
a.address svg{width:13px;height:13px;margin-left:7px;stroke:var(--red);fill:none;stroke-width:1.6;vertical-align:-1px;opacity:0;transform:translateX(-4px);transition:opacity .2s,transform .2s}
a.address:hover svg{opacity:1;transform:none}
@media(hover:none){a.address svg{opacity:.75;transform:none}}

/* Shop panels. Shared by the closing call to action and the locations band. */
.shop-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.cta-shops{margin-top:64px}
.shop-panel{background:var(--bg);position:relative;display:flex;flex-direction:column}
.shop-panel-body{padding:38px 40px;position:relative;flex:1}
/* The map runs to the edges; the panel's own padding lives on the body. */
.shop-panel-map{aspect-ratio:16/9;border-bottom:1px solid var(--line);overflow:hidden;background:var(--ph-1)}
.shop-panel-map iframe{width:100%;height:100%;border:0;display:block;filter:grayscale(1) contrast(1.05);transition:filter .3s}
.shop-panel:hover .shop-panel-map iframe{filter:none}
.shop-panel-num{position:absolute;top:30px;right:34px;font-family:var(--tech);font-size:11px;letter-spacing:.28em;color:var(--red)}
.shop-panel h3{font-family:var(--display);font-weight:600;text-transform:uppercase;letter-spacing:.02em;font-size:clamp(24px,2.4vw,32px);line-height:1}
.shop-panel-address{color:var(--muted);margin-top:16px;font-size:15px}
.shop-panel-phone{display:inline-flex;align-items:center;gap:10px;margin-top:14px;font-family:var(--display);font-weight:600;font-size:22px;color:inherit;transition:.2s}
.shop-panel-phone svg{width:17px;height:17px;stroke:var(--red);fill:none;stroke-width:1.6}
.shop-panel-phone:hover{color:var(--red)}
.shop-panel-hours{font-family:var(--tech);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-top:12px;line-height:1.9}
.shop-panel-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.lite .shop-panels{background:#e3e3e8;border-color:#e3e3e8}
.lite .shop-panel{background:#fff}
.lite .shop-panel-address{color:#3e3e48}
.lite .shop-panel-hours{color:#8f8f98}
/* The band under a page header: tight to the hero above it, red rule on top. */
.locations-band{border-top:3px solid var(--red)}
.locations-band.sec-pad{padding:68px 0 78px}
.lite .shop-panel-map{border-bottom-color:#e3e3e8;background:#ececef}
.lite .shop-panel-map iframe{filter:grayscale(.85) contrast(1.02)}
@media(max-width:820px){.shop-panel-body{padding:30px 26px}}

/* generic media + text */
.mediatext{border-top:1px solid var(--line)}
.mediatext-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}
.mediatext.rev .mediatext-media{order:2}
.mediatext-media img{width:100%;object-fit:cover}
.mediatext-media.has-plate{position:relative;aspect-ratio:4/3;border:1px solid var(--line);overflow:hidden}
.mediatext-media.has-plate .plate{width:100%;height:100%;display:block}
.lite .mediatext-media.has-plate{border-color:#e0e0e7}
/* No image set yet: fall back to a single readable column rather than
   leaving an empty grid track. */
.mediatext-grid.is-single{grid-template-columns:1fr;max-width:820px}
.mediatext-copy h2{font-size:clamp(28px,3.4vw,44px);margin-bottom:18px}
.mediatext-copy .rt-rich{margin-bottom:28px}
@media(max-width:900px){.mediatext-grid{grid-template-columns:1fr;gap:36px}.mediatext.rev .mediatext-media{order:0}}

/* rich text section */
.rt-rich{color:var(--muted)}
.rt-rich>*+*{margin-top:1.1em}
.rt-rich h2{font-family:var(--display);font-weight:600;text-transform:uppercase;color:var(--text);font-size:clamp(26px,3vw,40px);line-height:1.1}
.rt-rich h3{font-family:var(--display);font-weight:600;text-transform:uppercase;color:var(--text);font-size:clamp(20px,2.2vw,28px)}
.rt-rich h4{font-family:var(--display);font-weight:600;text-transform:uppercase;color:var(--text);font-size:18px;letter-spacing:.06em}
.rt-rich a{color:var(--red);text-decoration:underline;text-underline-offset:3px}
.rt-rich a:hover{color:#fff}
.rt-rich strong,.rt-rich b{color:var(--text)}
.rt-rich ul,.rt-rich ol{padding-left:0;margin-left:0}
.rt-rich ul li{padding:7px 0 7px 26px;border-bottom:1px solid var(--line);position:relative}
.rt-rich ul li::before{content:"//";color:var(--red);font-family:var(--tech);font-size:12px;position:absolute;left:0;top:10px}
.rt-rich ol{list-style:decimal;padding-left:22px}
.rt-rich ol li{padding:6px 0}
.rt-rich blockquote{border-left:2px solid var(--red);padding-left:24px;font-size:20px;color:var(--text)}
.rt-rich img{margin:0 auto}
.rt-rich table{width:100%;border-collapse:collapse}
.rt-rich th,.rt-rich td{border:1px solid var(--line);padding:12px 14px;text-align:left}
.rt-rich th{font-family:var(--tech);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--text)}
.rt-rich code{font-family:var(--tech);background:var(--bg-2);padding:2px 6px}
.rt-rich hr{border:none;border-top:1px solid var(--line)}
.rt-narrow{max-width:820px;margin:0 auto}

/* booking / contact form section */
.rt-form .form-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:70px;align-items:start}
.rt-form .form-grid.is-single{grid-template-columns:1fr;max-width:820px}
.rt-form .form-detail{padding:0 0 22px;margin-bottom:22px;border-bottom:1px solid var(--line)}
.rt-form .form-detail:last-child{border-bottom:none;margin-bottom:0}
.rt-form .form-detail h4{font-family:var(--tech);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--dim);margin-bottom:10px}
.rt-form .form-detail p,.rt-form .form-detail a{color:var(--muted)}
.rt-form .form-detail a:hover{color:var(--red)}
.rt-form .form-phone{font-family:var(--display);font-size:26px;font-weight:600;color:#fff;letter-spacing:.04em;display:block}
.rt-form .form-hours{font-family:var(--tech);font-size:12px;letter-spacing:.12em;text-transform:uppercase;line-height:2}
.rt-form .form-note{border-left:2px solid var(--red);border-bottom:none;padding:2px 0 2px 20px;color:var(--muted);font-size:15px}
.rt-form .form-map{aspect-ratio:4/3;border:1px solid var(--line);overflow:hidden}
.rt-form .form-map iframe{width:100%;height:100%;border:0;filter:grayscale(1) invert(.92) contrast(.85)}
.rt-form .rt-form-notice{font-family:var(--tech);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border:1px dashed var(--line);padding:22px}
.rt-form.lite .form-detail{border-bottom-color:#e3e3e8}
.rt-form.lite .form-detail h4{color:#6f6f79}
.rt-form.lite .form-detail p,.rt-form.lite .form-detail a{color:#3e3e48}
.rt-form.lite .form-phone{color:#131316}
.rt-form.lite .form-map{border-color:#e3e3e8}
.rt-form.lite .form-map iframe{filter:grayscale(1) contrast(.95)}
@media(max-width:900px){.rt-form .form-grid{grid-template-columns:1fr;gap:44px}}

/* --- Gravity Forms ---
   Gravity Forms ships its own stylesheet, so these rules are deliberately
   specific enough to win without !important. Covers both color schemes. */
.gform_wrapper.gravity-theme,
.gform_wrapper{margin:0}
.gform_wrapper.gravity-theme .gform_fields{grid-row-gap:26px}
.gform_wrapper.gravity-theme .gfield_label,
.gform_wrapper .gfield_label{font-family:var(--tech);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-weight:400;margin-bottom:10px}
.gform_wrapper.gravity-theme .gfield_required{color:var(--red)}
.gform_wrapper.gravity-theme .gfield_description{font-size:13px;color:var(--dim);padding-top:8px}

.gform_wrapper.gravity-theme input[type=text],
.gform_wrapper.gravity-theme input[type=email],
.gform_wrapper.gravity-theme input[type=tel],
.gform_wrapper.gravity-theme input[type=url],
.gform_wrapper.gravity-theme input[type=number],
.gform_wrapper.gravity-theme input[type=password],
.gform_wrapper.gravity-theme input[type=date],
.gform_wrapper.gravity-theme select,
.gform_wrapper.gravity-theme textarea{background:var(--bg-2);border:1px solid var(--line);color:var(--text);font-family:var(--body);font-size:16px;padding:14px 16px;border-radius:0;transition:.2s}
.gform_wrapper.gravity-theme input:focus,
.gform_wrapper.gravity-theme select:focus,
.gform_wrapper.gravity-theme textarea:focus{border-color:var(--red);outline:none}
.gform_wrapper.gravity-theme input::placeholder,
.gform_wrapper.gravity-theme textarea::placeholder{color:var(--dim)}
.gform_wrapper.gravity-theme textarea{min-height:170px}

.gform_wrapper.gravity-theme .gfield_checkbox label,
.gform_wrapper.gravity-theme .gfield_radio label{font-family:var(--body);font-size:16px;letter-spacing:0;text-transform:none;color:var(--muted);margin:0}
.gform_wrapper.gravity-theme .gfield_checkbox input,
.gform_wrapper.gravity-theme .gfield_radio input{accent-color:var(--red)}

.gform_wrapper.gravity-theme .gform_footer{padding:26px 0 0;margin:0}
.gform_wrapper.gravity-theme .gform_footer input[type=submit],
.gform_wrapper.gravity-theme .gform_page_footer input[type=submit],
.gform_wrapper .gform_button{background:var(--red);color:#fff;border:none;border-radius:0;font-family:var(--display);font-weight:500;text-transform:uppercase;letter-spacing:.14em;font-size:13px;padding:16px 32px;cursor:pointer;transition:.25s;width:auto;clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,14px 100%,0 calc(100% - 14px))}
.gform_wrapper.gravity-theme .gform_footer input[type=submit]:hover,
.gform_wrapper .gform_button:hover{background:#fff;color:var(--bg)}

.gform_wrapper.gravity-theme .gform_validation_errors{background:rgba(var(--red-rgb),.08);border:1px solid var(--red);border-radius:0;box-shadow:none;padding:18px 22px}
.gform_wrapper.gravity-theme .gform_validation_errors>h2{color:var(--red);font-family:var(--display);text-transform:uppercase;letter-spacing:.06em;font-size:16px}
.gform_wrapper.gravity-theme .gfield_validation_message,
.gform_wrapper.gravity-theme .validation_message{background:transparent;border:none;border-left:2px solid var(--red);color:var(--red);font-size:14px;padding:6px 0 6px 14px}
.gform_wrapper.gravity-theme .gfield_error input,
.gform_wrapper.gravity-theme .gfield_error textarea,
.gform_wrapper.gravity-theme .gfield_error select{border-color:var(--red)}
.gform_confirmation_message{font-family:var(--display);text-transform:uppercase;letter-spacing:.04em;font-size:clamp(20px,2.4vw,28px);border-left:3px solid var(--red);padding-left:24px;color:var(--text)}
.gform_wrapper.gravity-theme .gform_ajax_spinner{filter:invert(1)}

/* light scheme */
.lite .gform_wrapper.gravity-theme .gfield_label{color:#63636d}
.lite .gform_wrapper.gravity-theme input[type=text],
.lite .gform_wrapper.gravity-theme input[type=email],
.lite .gform_wrapper.gravity-theme input[type=tel],
.lite .gform_wrapper.gravity-theme input[type=url],
.lite .gform_wrapper.gravity-theme input[type=number],
.lite .gform_wrapper.gravity-theme input[type=date],
.lite .gform_wrapper.gravity-theme select,
.lite .gform_wrapper.gravity-theme textarea{background:#fff;border-color:#d9d9e0;color:#131316}
.lite .gform_wrapper.gravity-theme .gfield_checkbox label,
.lite .gform_wrapper.gravity-theme .gfield_radio label{color:#3e3e48}
.lite .gform_wrapper.gravity-theme .gfield_description{color:#6f6f79}
.lite .gform_confirmation_message{color:#131316}
.lite .gform_wrapper.gravity-theme .gform_ajax_spinner{filter:none}
.lite .rt-form-notice{color:#3e3e48;border-color:#d9d9e0}


/* warranty promise band */
.warranty{background:linear-gradient(120deg,var(--red-dark),var(--red));border-top:1px solid rgba(255,255,255,.14)}
.warranty-grid{display:grid;grid-template-columns:auto 1fr;gap:56px;align-items:center}
.warranty-mark{flex-shrink:0}
.warranty-term{width:210px;padding:26px 18px;text-align:center;border:2px solid rgba(255,255,255,.5);background:rgba(0,0,0,.14);clip-path:polygon(0 0,calc(100% - 18px) 0,100% 18px,100% 100%,18px 100%,0 calc(100% - 18px))}
.warranty-term b{display:block;font-family:var(--display);font-weight:700;font-size:54px;line-height:1;color:#fff}
.warranty-term span{display:block;margin-top:8px;font-family:var(--tech);font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:rgba(255,255,255,.85)}
.warranty-badge{max-width:210px}
.warranty-copy h2{font-size:clamp(26px,3.4vw,44px);color:#fff}
.warranty-copy p{color:rgba(255,255,255,.9);margin-top:16px;max-width:640px}
.warranty-points{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:22px}
.warranty-points li{font-family:var(--tech);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#fff;display:flex;gap:10px}
.warranty-points li::before{content:"✓";color:#fff}
.warranty .btn-ghost{color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.55);margin-top:26px}
.warranty .btn-ghost:hover{background:#fff;color:var(--red-dark);box-shadow:none}
@media(max-width:800px){.warranty-grid{grid-template-columns:1fr;gap:32px}}

/* service directory */
/* Bordered cells rather than a background showing through 1px gaps, so an
   uneven last row leaves empty space instead of a stray filler block. */
.dir-grid{display:grid;grid-template-columns:repeat(var(--dir-cols,3),1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.dir-item{background:var(--bg);border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.dir-item>a,.dir-item>.dir-plain{display:flex;align-items:center;gap:16px;padding:20px 22px;transition:.2s;height:100%}
.dir-item>a:hover{background:var(--bg-3)}
.dir-icon{display:flex;flex-shrink:0}
.dir-icon svg{width:22px;height:22px;stroke:var(--red);fill:none;stroke-width:1.5}
.dir-name{font-family:var(--display);font-weight:500;text-transform:uppercase;letter-spacing:.06em;font-size:15px;line-height:1.25}
.dir-arr{margin-left:auto;color:var(--dim);transition:.2s;flex-shrink:0}
.dir-item>a:hover .dir-name{color:var(--red)}
.dir-item>a:hover .dir-arr{color:var(--red);transform:translateX(4px)}
/* Last cell of the grid, in red, rather than a button floating underneath. */
.dir-item.is-more{background:var(--red)}
.dir-item.is-more>a{justify-content:space-between}
.dir-item.is-more .dir-name{color:#fff}
.dir-item.is-more .dir-arr{color:#fff}
.dir-item.is-more>a:hover{background:var(--red-dark)}
.dir-item.is-more>a:hover .dir-name,.dir-item.is-more>a:hover .dir-arr{color:#fff}
.lite .dir-item.is-more{background:var(--red)}
.lite .dir-item.is-more>a:hover{background:var(--red-dark)}
.lite .dir-item.is-more .dir-arr{color:#fff}
.lite .dir-grid{border-color:#e3e3e8}
.lite .dir-item{background:#fff;border-color:#e3e3e8}
.lite .dir-item>a:hover{background:#fafafb}
.lite .dir-arr{color:#b9b9c1}
@media(max-width:1000px){.dir-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.dir-grid{grid-template-columns:1fr}}

/* FAQ ---------------------------------------------------------------------- */
.faq-list{border-top:1px solid var(--line)}
.faq-item{border-bottom:1px solid var(--line)}
/* The summary row spans the full width so the section does not read as a
   narrow column with the right third left empty. */
.faq-q{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:20px;padding:26px 0;cursor:pointer;list-style:none;transition:.2s}
.faq-q::-webkit-details-marker{display:none}
.faq-q:hover h3,.faq-item[open] .faq-q h3{color:var(--red)}
.faq-q h3{font-family:var(--display);font-weight:600;text-transform:uppercase;letter-spacing:.02em;font-size:clamp(18px,1.9vw,23px);line-height:1.25;transition:.2s}
.faq-num{font-family:var(--tech);font-size:11px;letter-spacing:.28em;color:var(--red)}
.faq-mark{position:relative;width:16px;height:16px;flex-shrink:0}
.faq-mark::before,.faq-mark::after{content:"";position:absolute;background:var(--red);transition:.25s}
.faq-mark::before{top:7px;left:0;width:16px;height:2px}
.faq-mark::after{left:7px;top:0;width:2px;height:16px}
.faq-item[open] .faq-mark::after{transform:scaleY(0)}
.faq-a{color:var(--muted);padding:0 44px 30px 54px;max-width:96ch}
.faq-a p+p{margin-top:14px}
.faq-a>*:first-child{margin-top:0}
.lite .faq-list,.lite .faq-item{border-color:#e3e3e8}
.lite .faq-a{color:#3e3e48}
@media(max-width:640px){.faq-q{gap:14px;padding:22px 0}.faq-a{padding:0 0 26px 0}}

/* checklists --------------------------------------------------------------- */
.check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.check-panel{background:var(--bg-2);padding:40px 40px 44px;position:relative}
.check-num{font-family:var(--tech);font-size:11px;letter-spacing:.28em;color:var(--red)}
.check-panel h3{font-family:var(--display);font-weight:600;text-transform:uppercase;letter-spacing:.02em;font-size:clamp(21px,2.2vw,28px);line-height:1.15;margin-top:14px}
.check-lede{color:var(--muted);margin-top:14px;font-size:15px}
.check-list{margin-top:26px;border-top:1px solid var(--line)}
.check-list li{display:flex;gap:14px;padding:15px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:16px;line-height:1.5}
.check-list li::before{content:"";flex-shrink:0;width:18px;height:18px;margin-top:3px;background:var(--red);clip-path:polygon(0 0,calc(100% - 5px) 0,100% 5px,100% 100%,5px 100%,0 calc(100% - 5px))}
.lite .check-panel{background:#fff}
.lite .check-grid{background:#e3e3e8;border-color:#e3e3e8}
.lite .check-lede,.lite .check-list li{color:#3e3e48}
.lite .check-list,.lite .check-list li{border-color:#ececf0}
@media(max-width:600px){.check-panel{padding:28px 24px 32px}}

/* service showcase --------------------------------------------------------- */
/* The one part of the page above the directory that carries a picture. Tiles
   take a photograph when there is one and the brand plate until then, both
   behind the same scrim so the caption stays readable either way. */
.show-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;grid-auto-flow:dense}
.show-tile{position:relative;display:block;overflow:hidden;aspect-ratio:4/3;background:var(--bg-2);border:1px solid var(--line);transition:border-color .25s,transform .35s}
.show-tile.is-feature{grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
.show-art{position:absolute;inset:0}
.show-art img,.show-art .plate{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s ease}
.show-tile:hover .show-art img,.show-tile:hover .show-art .plate{transform:scale(1.05)}
.show-art::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(var(--bg-rgb),.92) 0%,rgba(var(--bg-rgb),.44) 46%,rgba(var(--bg-rgb),0) 88%)}
.show-cap{position:absolute;left:0;right:0;bottom:0;padding:28px 30px;z-index:2;color:#fff}
.show-k{display:block;font-family:var(--tech);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--red);margin-bottom:10px}
.show-cap h3{font-family:var(--display);font-weight:600;text-transform:uppercase;letter-spacing:.02em;font-size:22px;line-height:1.1;color:#fff}
.show-cap p{color:rgba(255,255,255,.72);font-size:15px;margin-top:12px;max-width:46ch}
.show-arr{position:absolute;top:26px;right:30px;width:40px;height:40px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.28);color:#fff;transition:.25s}
a.show-tile:hover{border-color:var(--red);transform:translateY(-3px)}
a.show-tile:hover .show-arr{background:var(--red);border-color:var(--red)}
.show-tile.is-feature .show-cap{padding:40px 42px}
.show-tile.is-feature .show-cap h3{font-size:clamp(28px,3vw,40px)}
.show-tile.is-feature .show-cap p{font-size:16px}
.show-foot{margin-top:40px}
.lite .show-tile{border-color:#e0e0e7}
@media(max-width:1000px){.show-grid{grid-template-columns:repeat(2,1fr)}.show-tile.is-feature{grid-column:span 2;grid-row:span 1;aspect-ratio:16/9}}
@media(max-width:640px){.show-grid{grid-template-columns:1fr;gap:14px}.show-tile.is-feature{grid-column:span 1;aspect-ratio:4/3}.show-cap,.show-tile.is-feature .show-cap{padding:22px 22px}}

/* service areas */
.areas-grid{display:grid;grid-template-columns:1fr .9fr;gap:60px;align-items:start}
.areas-intro{color:var(--muted);margin-top:18px;max-width:620px}
.areas-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.areas-list li{font-family:var(--tech);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);padding:11px 18px;transition:.2s}
.areas-list li:hover{border-color:var(--red);color:var(--red)}
.areas-map{aspect-ratio:4/3;border:1px solid var(--line);overflow:hidden}
.areas-map iframe{width:100%;height:100%;border:0}
/* No map: the towns take the right-hand column themselves rather than running
   on under the copy, which left the whole section as one column down the left. */
.areas-towns{border-top:3px solid var(--red);padding-top:26px}
.areas-towns-label{font-family:var(--tech);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--dim)}
.areas-list.is-column{margin-top:20px}
.lite .areas-intro{color:#3e3e48}
.lite .areas-list li{color:#3e3e48;border-color:#d9d9e0;background:#fff}
.lite .areas-map{border-color:#e3e3e8}
.lite .areas-towns-label{color:#8f8f98}
@media(max-width:900px){.areas-grid{grid-template-columns:1fr;gap:36px}}

/* certifications strip */
.logos-title{font-family:var(--tech);font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--dim);text-align:center;margin-bottom:30px}
/* Boxed cells. As loose centered text these read as four stray words on a
   black field rather than a row of accreditations. */
.logos-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.logo-item{background:var(--bg);min-height:118px;display:grid;place-items:center;padding:26px 22px;text-align:center;transition:background .25s}
.logo-item:hover{background:var(--bg-3)}
.logo-item a{display:grid;place-items:center;gap:0}
.logo-item img{max-height:64px;width:auto;opacity:.85;transition:.2s}
.logo-item a:hover img{opacity:1}
.logo-text{font-family:var(--display);font-weight:600;text-transform:uppercase;letter-spacing:.1em;font-size:17px;color:#fff}
.lite .logos-title{color:#8f8f98}
.lite .logos-grid{background:#e3e3e8;border-color:#e3e3e8}
.lite .logo-item{background:#fff}
.lite .logo-item:hover{background:#fafafb}
.lite .logo-text{color:#43434c}

/* 10. Footer --------------------------------------------------------------- */
footer.site-footer{background:var(--bg-deep);padding:90px 0 0}
.foot-grid{display:grid;grid-template-columns:1fr .75fr .75fr 2fr;gap:44px;padding-bottom:70px}
.foot-grid h4{font-family:var(--tech);font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--dim);margin-bottom:24px}
.foot-grid a,.foot-grid p{color:var(--muted);font-size:16px}
.foot-grid ul a{display:block;padding:6px 0;transition:.2s}
.foot-grid ul a:hover{color:var(--red);padding-left:6px}
.foot-about .logo{margin-bottom:20px}
.foot-about p{margin-bottom:24px;max-width:300px}
.foot-phone{font-family:var(--display);font-size:26px;font-weight:600;color:#fff;letter-spacing:.04em}
.foot-hours{font-family:var(--tech);font-size:11px;letter-spacing:.14em;color:var(--dim);margin-top:12px;text-transform:uppercase;line-height:2}
.newsletter p{margin-bottom:18px}
/* Contact column: the shops sit side by side rather than stacked, which is
   most of what made the footer tall -- one column was carrying two full
   addresses while the three beside it ran out after a few links. */
.foot-contact .location-list{grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:24px 30px}
.foot-contact .location-name{font-family:var(--display);font-weight:600;text-transform:uppercase;letter-spacing:.06em;font-size:15px;color:#fff}
.foot-email{display:inline-flex;align-items:center;gap:10px;margin-top:26px;color:var(--muted);transition:.2s;word-break:break-word}
.foot-email svg{width:15px;height:15px;flex-shrink:0;stroke:var(--red);fill:none;stroke-width:1.5}
.foot-email:hover{color:var(--red)}
.foot-grid .newsletter{margin-top:34px;padding-top:30px;border-top:1px solid var(--line)}
.foot-grid .newsletter h4{margin-bottom:14px}
footer.lite .foot-contact .location-name{color:#131316}
footer.lite .foot-email{color:#40404a}
footer.lite .foot-grid .newsletter{border-top-color:#d8d8de}
/* Stacked, not side by side: in a footer column this narrow the field was
   squeezed down to a couple of characters beside the button. */
.nl-form{display:flex;flex-direction:column;border:1px solid var(--line)}
.nl-form input{background:transparent;border:none;padding:14px 16px;color:#fff;font-family:var(--body);font-size:15px;outline:none;min-width:0;width:100%}
.nl-form button{background:var(--red);border:none;color:#fff;font-family:var(--display);font-weight:600;letter-spacing:.16em;text-transform:uppercase;font-size:12px;padding:13px 26px;cursor:pointer;transition:.2s;width:100%}
.nl-form button:hover{background:#fff;color:#000}
.socials{display:flex;gap:14px;margin-top:26px}
.socials a{width:38px;height:38px;border:1px solid var(--line);display:grid;place-items:center;color:var(--muted);transition:.2s}
.socials a:hover{border-color:var(--red);color:var(--red)}
.socials svg{width:16px;height:16px;fill:currentColor}
.foot-bottom{border-top:1px solid var(--line);padding:26px 0;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.foot-bottom span{font-family:var(--tech);font-size:11px;letter-spacing:.16em;color:var(--dim);text-transform:uppercase}
.foot-bottom .legal{display:flex;gap:26px;flex-wrap:wrap}
.foot-bottom .legal a{color:var(--dim);font-size:12px;transition:.2s}
.foot-bottom .legal a:hover{color:#fff}
.foot-logo .logo-img{height:auto;width:200px;max-width:100%}
@media(max-width:1020px){.foot-grid{grid-template-columns:1fr 1fr;gap:44px}.foot-contact{grid-column:span 2}}
@media(max-width:560px){.foot-grid{grid-template-columns:1fr;gap:40px}}

/* 11. Page hero + inner pages ---------------------------------------------- */
.page-hero{position:relative;overflow:hidden;background:
  radial-gradient(900px 420px at 80% 30%,rgba(var(--red-rgb),.18),transparent 65%),
  repeating-linear-gradient(45deg,var(--ph-1) 0 12px,var(--ph-2) 12px 24px),var(--bg);
  border-bottom:1px solid var(--line)}
.page-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
/* Brand plates -------------------------------------------------------------
   Drawn wherever an image slot has no photograph yet. See inc/arties-plates.php
   for why these are vector rather than stock photography. They sit in the same
   place a photo would, so swapping one in changes nothing else. */
.plate{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:0}
/* The plate is already dark and already carries its own scrim, so the hero's
   heavier overlay would only mud it. */
.page-hero.has-plate::after{background:linear-gradient(105deg,rgba(var(--bg-rgb),.86) 0%,rgba(var(--bg-rgb),.42) 52%,transparent 100%)}
/* The hatch underneath is what the plate replaces. */
.hero-loc-media.has-plate{background:none}
.thumb.has-plate{position:relative;background:none}
.page-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,rgba(var(--bg-rgb),.92) 0%,rgba(var(--bg-rgb),.6) 45%,rgba(var(--bg-rgb),.3) 100%)}
.page-hero-inner{position:relative;z-index:2;padding:96px 0 84px}
.page-hero .kicker{margin-bottom:22px}
.page-hero h1{font-size:clamp(38px,6.5vw,86px);max-width:20ch}
.page-hero .lede{color:var(--muted);max-width:620px;margin-top:22px;font-size:19px}
/* An inner page opened on a title and nothing else. The hero now closes with
   something to do, on the page where the customer has just decided. */
.page-hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 26px;margin-top:36px}
.page-hero-call{display:inline-flex;align-items:center;gap:11px;font-family:var(--display);font-weight:600;font-size:21px;color:#fff;transition:.2s}
.page-hero-call svg{width:17px;height:17px;stroke:var(--red);fill:none;stroke-width:1.6}
.page-hero-call:hover{color:var(--red)}
.breadcrumbs{font-family:var(--tech);font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:var(--dim);margin-bottom:22px;display:flex;gap:10px;flex-wrap:wrap}
.breadcrumbs a{color:var(--dim)}
.breadcrumbs a:hover{color:var(--red)}
.breadcrumbs .sep{color:var(--red)}
@media(max-width:800px){.page-hero-inner{padding:64px 0 56px}}

.page-body{padding:90px 0}
.page-body .rt-rich{font-size:18px}

/* 12. Blog / archives / comments / forms ----------------------------------- */
.post-grid{display:grid;grid-template-columns:repeat(var(--card-cols,3),1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.post-card{background:var(--bg-2);display:flex;flex-direction:column;transition:.25s;position:relative;overflow:hidden}
.post-card:hover{background:var(--bg-3)}
.post-card::after{content:"";position:absolute;top:0;left:0;width:0;height:2px;background:var(--red);transition:.3s}
.post-card:hover::after{width:100%}
.post-card .thumb{aspect-ratio:16/10;background:repeating-linear-gradient(45deg,var(--ph-1) 0 10px,var(--ph-2) 10px 20px);overflow:hidden}
.post-card .thumb img{width:100%;height:100%;object-fit:cover;transition:.4s}
.post-card:hover .thumb img{transform:scale(1.04)}
.post-card .body{padding:28px;display:flex;flex-direction:column;flex:1}
.post-card .meta{font-family:var(--tech);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--dim);margin-bottom:14px;display:flex;gap:12px;flex-wrap:wrap}
.post-card .meta .cat{color:var(--red)}
.post-card h2,.post-card h3{font-family:var(--display);font-weight:500;text-transform:uppercase;font-size:21px;line-height:1.2;letter-spacing:.02em;transition:.25s}
.post-card:hover h2,.post-card:hover h3{color:var(--red)}
.post-card p{color:var(--muted);font-size:15px;margin-top:14px}
.post-card .more{margin-top:auto;padding-top:20px;font-family:var(--tech);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--red)}
/* Card grids built from copy alone (the "why us" row) have no thumbnail to
   anchor them, so each card carries its own index as a large ghosted numeral in
   the top right. It gives the row a rhythm and pulls weight off the left edge. */
.rt-cards .post-grid{counter-reset:rtcard}
.rt-cards .post-card{counter-increment:rtcard}
/* The number sits beside the title rather than behind the card, so a short
   title can never leave the paragraph running underneath it. */
.post-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.post-card-titles{min-width:0}
.post-card-num{display:none}
.rt-cards .post-card-num{display:block;font-family:var(--display);font-weight:700;font-size:52px;line-height:.86;color:var(--line);flex-shrink:0;transition:.25s}
.rt-cards .post-card-num::before{content:counter(rtcard,decimal-leading-zero)}
.rt-cards .post-card:hover .post-card-num{color:rgba(var(--red-rgb),.5)}
.lite .rt-cards .post-card-num{color:#e3e3e8}
/* The closing card is not one of the numbered services, so it takes neither
   the counter nor the room the counter reserves. */
.rt-cards .post-card-tail{counter-increment:none}
.rt-cards .post-card-tail .post-card-num{display:none}
.post-card-tail{background:var(--bg-3);grid-column:span var(--tail-span,1)}
.post-card-tail::after{display:none}
.post-card-tail:hover h3{color:inherit}
.post-card-tail .body{justify-content:center}
.post-card-tail-cta{margin-top:auto;padding-top:24px}
.post-card-tail-cta .btn-red{width:100%;justify-content:center}
.lite .post-card-tail{background:#f4f4f6}
@media(max-width:1100px){.rt-cards .post-card-num{font-size:44px}}
@media(max-width:600px){.rt-cards .post-card-num{font-size:38px}.post-card-head{gap:14px}}
@media(max-width:1000px){.post-grid{grid-template-columns:1fr 1fr}.post-card-tail{grid-column:auto}}
@media(max-width:640px){.post-grid{grid-template-columns:1fr}}

.single-hero-media{margin-bottom:0}
.single-hero-media img{width:100%;max-height:620px;object-fit:cover}
.entry-meta{font-family:var(--tech);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--dim);display:flex;gap:16px;flex-wrap:wrap;margin-bottom:26px}
.entry-meta .cat{color:var(--red)}
.entry-footer{margin-top:50px;padding-top:30px;border-top:1px solid var(--line);display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.tag-list{display:flex;gap:10px;flex-wrap:wrap}
.tag-list a{font-family:var(--tech);font-size:10px;letter-spacing:.2em;text-transform:uppercase;border:1px solid var(--line);padding:8px 14px;color:var(--muted)}
.tag-list a:hover{border-color:var(--red);color:var(--red)}

.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:70px}
.post-nav a{background:var(--bg-2);padding:34px var(--gutter);transition:.25s}
.post-nav a:hover{background:var(--bg-3)}
.post-nav .lbl{font-family:var(--tech);font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:var(--red);display:block;margin-bottom:10px}
.post-nav .ttl{font-family:var(--display);text-transform:uppercase;font-size:19px;letter-spacing:.02em}
.post-nav .next{text-align:right}
@media(max-width:700px){.post-nav{grid-template-columns:1fr}.post-nav .next{text-align:left}}

.pagination{display:flex;gap:10px;justify-content:center;margin-top:60px;flex-wrap:wrap}
.pagination .page-numbers{font-family:var(--display);letter-spacing:.1em;padding:12px 18px;border:1px solid var(--line);color:var(--muted);transition:.2s}
.pagination .page-numbers:hover{border-color:var(--red);color:#fff}
.pagination .page-numbers.current{background:var(--red);border-color:var(--red);color:#fff}

/* forms */
input[type=text],input[type=email],input[type=url],input[type=tel],input[type=search],input[type=password],input[type=number],input[type=date],select,textarea{
  width:100%;background:var(--bg-2);border:1px solid var(--line);color:var(--text);font-family:var(--body);font-size:16px;padding:14px 16px;outline:none;transition:.2s;border-radius:0;-webkit-appearance:none}
input:focus,select:focus,textarea:focus{border-color:var(--red)}
textarea{min-height:170px;resize:vertical}
label{display:block;font-family:var(--tech);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
input[type=submit],button[type=submit],.wpcf7-submit{display:inline-flex;align-items:center;gap:12px;width:auto;font-family:var(--display);font-weight:500;text-transform:uppercase;letter-spacing:.14em;font-size:13px;padding:15px 30px;border:none;cursor:pointer;background:var(--red);color:#fff;transition:.25s}
input[type=submit]:hover,button[type=submit]:hover,.wpcf7-submit:hover{background:#fff;color:var(--bg)}
.search-form{display:flex;gap:0;border:1px solid var(--line);max-width:520px}
.search-form input[type=search]{border:none;background:transparent}
.search-form button{background:var(--red);border:none;color:#fff;padding:0 24px;cursor:pointer;font-family:var(--display);letter-spacing:.16em;text-transform:uppercase;font-size:12px}

/* comments */
.comments-area{margin-top:70px;padding-top:50px;border-top:1px solid var(--line)}
.comments-area h2,.comments-area h3{font-family:var(--display);text-transform:uppercase;font-size:24px;margin-bottom:26px}
.comment-list{margin-bottom:40px}
.comment-list li{border-bottom:1px solid var(--line);padding:22px 0}
.comment-list .children{padding-left:28px;border-left:1px solid var(--line);margin-top:18px}
.comment-meta{font-family:var(--tech);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin-bottom:10px}
.comment-body p{color:var(--muted)}
.comment-form p{margin-bottom:18px}
.comment-reply-link{font-family:var(--tech);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--red)}

/* 13. WordPress core + block support --------------------------------------- */
.alignleft{float:left;margin:0 2em 1.4em 0}
.alignright{float:right;margin:0 0 1.4em 2em}
.aligncenter{margin-left:auto;margin-right:auto;display:block}
.alignwide{width:min(1180px,92vw);margin-left:50%;transform:translateX(-50%);max-width:none}
.alignfull{width:100vw;margin-left:50%;transform:translateX(-50%);max-width:none}
.wp-caption{max-width:100%}
.wp-caption-text,figcaption{font-family:var(--tech);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);margin-top:10px;text-align:center}
.sticky .post-card{border:1px solid var(--red)}
.wp-block-button__link{background:var(--red);color:#fff;font-family:var(--display);text-transform:uppercase;letter-spacing:.14em;padding:15px 30px;border-radius:0}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.gallery br{display:none}
.admin-bar header.site-header{top:32px}
@media(max-width:782px){.admin-bar header.site-header{top:46px}}

/* 14. Light theme overrides ------------------------------------------------ */
.lite{background:#f5f5f7;color:#131316}
.lite .sec-head p{color:#3e3e48}
.lite.tick{border-top-color:#e3e3e8}
.lite.tick[data-sec]::before{color:#9c9ca4}
.lite .btn{--tread:var(--tread-k)}
.lite .btn-ghost{box-shadow:inset 0 0 0 1px #c6c6cf;color:#131316}
.lite .btn-ghost:hover{box-shadow:inset 0 0 0 1px var(--red);color:var(--red)}
.lite .rt-rich{color:#3e3e48}
.lite .rt-rich h2,.lite .rt-rich h3,.lite .rt-rich h4,.lite .rt-rich strong{color:#131316}
.lite .rt-rich ul li{border-bottom-color:#e3e3e8}
/* The hover state went white, which is invisible on a light section. */
.lite .rt-rich a:hover,footer.lite .rt-rich a:hover{color:#131316}
.lite .acc-head:hover .name,.lite .acc-item.open .acc-head .name{color:#131316}
footer.lite .foot-bottom .legal a:hover{color:#131316}
.news.lite .news-list{border-top-color:#e3e3e8}
.news.lite .news-item{border-bottom-color:#e3e3e8}
.news.lite .news-item:hover{background:#fff}
.news.lite .news-item .cat{color:#9c9ca4}
.news.lite .news-item .arr{color:#b9b9c1}
.packs.lite{background:#ececef;border-top:1px solid #e3e3e8}
.packs.lite .pack{background:#fff;border-color:#e0e0e7}
.packs.lite .pack li{color:#3e3e48;border-bottom-color:#ececf0}
.packs.lite .pack .tier,.packs.lite .pack .name{color:#63636d}
.packs.lite .pack.hot{border-color:var(--red);background:linear-gradient(180deg,rgba(var(--red-rgb),.05),transparent 55%),#fff}
.contact-cta.lite{background:#fff;border-bottom:1px solid #e3e3e8}
.contact-cta.lite p{color:#3e3e48}
.contact-cta .ph{color:#fff}
.contact-cta.lite .ph{color:#131316}
.about.lite{background:#ececef}
.about.lite .about-p{color:#3e3e48}
.about.lite .about-p b{color:#131316}
.verified.lite{background:#ececef;border-top-color:#e3e3e8}
.verified.lite p{color:#3e3e48}
.verified.lite .proof span{color:#3e3e48;border-color:#d9d9e0;background:#fff}
.stats.lite{background:#ececef;border-color:#e3e3e8}
.stats.lite .stat{border-color:#e3e3e8}
.stats.lite .stat .lbl{color:#63636d}
.mediatext.lite{border-top-color:#e3e3e8}
.lite .post-grid{background:#e3e3e8;border-color:#e3e3e8}
.lite .post-card{background:#fff}
.lite .post-card:hover{background:#fafafb}
.lite .post-card p{color:#3e3e48}
footer.lite{background:#ececef}
footer.lite .logo{color:#131316}
footer.lite .foot-grid a,footer.lite .foot-grid p{color:#40404a}
footer.lite .foot-grid h4,footer.lite .foot-hours{color:#6f6f79}
footer.lite .foot-phone{color:#131316}
footer.lite .nl-form{border-color:#cfcfd6;background:#fff}
footer.lite .nl-form input{color:#131316}
footer.lite .socials a{border-color:#c9c9d1;color:#6a6a73}
footer.lite .socials a:hover{border-color:var(--red);color:var(--red)}
footer.lite .foot-bottom{border-top-color:#d8d8de}
footer.lite .foot-bottom span,footer.lite .legal a{color:#8f8f98}
footer.lite .legal a:hover{color:#131316}

/* 15. Reveal animation ----------------------------------------------------- */
.rv{opacity:0;transform:translateY(28px);transition:opacity .7s ease,transform .7s ease}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}
