/* shared.css — rules every template stylesheet repeated.
   Loaded before the per-template sheet, so a template can still override
   anything here simply by restating it. Generated by stage/css-consolidate.py. */

*,*::before,*::after{box-sizing:border-box;}
body{margin:0;font-family:var(--sans);color:var(--charcoal);background:var(--white);line-height:1.65;font-size:17px;-webkit-font-smoothing:antialiased;}
p{margin:0 0 1em;}
a{color:var(--orange-700);text-decoration:none;}
img{max-width:100%;display:block;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}
.lead{font-size:clamp(16.5px,1.8vw,19px);color:var(--charcoal);line-height:1.6;max-width:62ch;}
.uline{box-shadow:inset 0 -.14em 0 var(--orange);}
.ic{display:inline-block;width:24px;height:24px;background:currentColor;flex:none;vertical-align:middle;
    -webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat;}
.ic-phone{--m:url(../icons/phone.svg)}
.ic-check{--m:url(../icons/check.svg)}
.ic-calendar{--m:url(../icons/calendar.svg)}
.ic-ruler{--m:url(../icons/ruler.svg)}
.ic-home{--m:url(../icons/home.svg)}
.btn-primary{background:var(--orange);color:#fff;}
.btn-primary:hover{background:var(--orange-600);transform:translateY(-2px);}
.btn-dark{background:var(--ink);color:#fff;border-color:var(--ink);}
.btn-dark:hover{background:#000;transform:translateY(-2px);}
.btn-lg{padding:17px 36px;font-size:16px;}
/* header */
  .topbar{background:#101010;color:#d9d3c9;font-size:13px;text-align:center;padding:10px 44px;position:relative;}
.topbar b{color:var(--orange);}
.topbar a{color:#fff;text-decoration:underline;text-underline-offset:2px;}
.topbar .x{position:absolute;right:14px;top:50%;transform:translateY(-50%);cursor:pointer;opacity:.55;background:none;border:none;color:#fff;font-size:17px;}
header.nav{position:sticky;top:0;z-index:70;background:var(--ink);border-bottom:1px solid var(--line-d);}
.nav .row{display:flex;align-items:center;gap:26px;height:var(--nav-h);}
.wm{font-family:var(--slab);font-weight:800;font-size:21px;letter-spacing:-.02em;color:#fff;line-height:1;}
.wm .o{color:var(--orange);}
.wm small{display:block;font-family:var(--sans);font-weight:400;font-size:9.5px;letter-spacing:.19em;
    text-transform:uppercase;color:#8d867c;margin-top:5px;}
.nav .menu{display:flex;gap:26px;margin-left:18px;}
.nav .menu a{color:#cdc7bd;font-size:14.5px;font-weight:500;position:relative;padding:4px 0;}
.nav .menu a::after{content:"";position:absolute;left:0;right:100%;bottom:-1px;height:1.5px;background:var(--orange);transition:right .22s;}
.nav .menu a:hover{color:#fff;}
.nav .menu a:hover::after{right:0;}
.nav .right{margin-left:auto;display:flex;align-items:center;gap:16px;}
.nav .tel{color:#fff;font-weight:700;font-size:14.5px;display:inline-flex;align-items:center;gap:8px;white-space:nowrap;}
.nav .tel .ic{color:var(--orange);width:17px;height:17px;}
.nav .btn{padding:11px 22px;font-size:14px;}
.burger{display:none;background:none;border:none;cursor:pointer;flex-direction:column;gap:5px;padding:8px;margin-left:auto;}
.burger span{width:23px;height:2px;background:#fff;border-radius:2px;transition:.22s;}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0;}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
.mnav{display:none;flex-direction:column;background:var(--ink);padding:8px 20px 22px;border-bottom:1px solid var(--line-d);}
.mnav a{padding:14px 0;border-bottom:1px solid var(--line-d);color:#e6e1d9;font-weight:500;}
.mnav .btn{margin-top:16px;justify-content:center;}
.mnav .btn-primary{color:#fff;}
.crumb a{color:#8d867c;}
.crumb a:hover{color:var(--orange);}
.crumb .sep{margin:0 9px;opacity:.45;}
footer{background:#101010;color:#a29b91;padding:70px 0 34px;}
footer .cols{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:40px;}
footer a{color:#a29b91;font-size:14.5px;}
footer a:hover{color:var(--orange);}
footer ul{list-style:none;padding:0;margin:0;}
footer li{padding:6px 0;}
footer .np{font-size:14.5px;line-height:1.85;}
footer .np b{color:#fff;}
.soc{display:flex;gap:10px;margin-top:18px;}
.soc a:hover{background:var(--orange);transform:translateY(-2px);}
.soc img{width:16px;height:16px;filter:brightness(0) invert(1);}
footer .bottom{border-top:1px solid rgba(255,255,255,.1);margin-top:46px;padding-top:22px;font-size:12.5px;
    color:#75706a;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;}
.reveal.in{opacity:1;transform:none;}
/* --- theme chrome addon: Products dropdown --- */
.nav .menu .has-sub{position:relative;align-self:stretch;display:flex;align-items:center;}
.nav .menu .has-sub>a .car{display:inline-block;width:7px;height:7px;border-right:1.6px solid currentColor;
  border-bottom:1.6px solid currentColor;transform:rotate(45deg) translateY(-3px);margin-left:7px;}
.nav .menu .sub{position:absolute;top:100%;left:-18px;background:#141414;
  border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:12px;opacity:0;visibility:hidden;
  transform:translateY(8px);transition:opacity .18s,transform .18s,visibility .18s;z-index:90;
  box-shadow:0 18px 40px rgba(0,0,0,.35);display:flex;gap:8px;}
.nav .menu .sub .subcol{min-width:196px;}
.nav .menu .sub::before{content:"";position:absolute;top:-12px;left:0;right:0;height:12px;}
.nav .menu .has-sub:hover .sub,.nav .menu .has-sub:focus-within .sub{opacity:1;visibility:visible;transform:none;}
.nav .menu .sub a{display:block;padding:9px 12px;border-radius:8px;color:#cdc7bd;font-size:14px;font-weight:500;}
.nav .menu .sub a:hover{background:rgba(255,255,255,.07);color:#fff;}
.nav .menu .sub a::after{display:none;}
.nav .menu .sub .grp{display:block;font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:#8d867c;padding:10px 12px 4px;}
.mnav .msub,.mobile-menu .msub{padding-left:24px;font-size:14px;opacity:.92;}
/* NAVCALL_ADDON */
/* Mobile click-to-call, sitting to the right of the hamburger. Deliberately a
   different colour from the bar itself so it reads as an action, not chrome.
   The header's phone number is display:none on mobile, so without this there is
   no one-tap call anywhere in the sticky header. */
.navcall{display:none;}
/* MOBILE_OVERFLOW_GUARD */
/* Grid and flex items default to min-width:auto and will not shrink below their
   content, which is what pushed four pages sideways on a phone. Harmless on
   ordinary blocks, where min-width:auto already computes to 0. */
.wrap > *,
.hero-grid > *, .visit-grid > *, .faq-grid > *, .split > *, .pgrid > *,
.proc-grid > *, .beyond-row > *, .hero-grid, .visit-grid, .faq-grid {
  min-width: 0;
}
/* An image must never be the thing that sets a track's minimum width. */
.hero-fig, .hero-fig img, .sfig, .sfig img, .beyond-fig, .beyond-fig img {
  max-width: 100%;
}
/* MOBILE_ACCORDION */
.mnav, .mobile-menu{
  max-height: calc(100vh - 62px);
  max-height: calc(100dvh - 62px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.mtog{
  display: flex; align-items: center; justify-content: space-between;
  width: 100%; padding: 14px 0;
  background: none; border: 0; border-bottom: 1px solid var(--line);
  font: inherit; font-weight: 500; color: inherit;
  text-align: left; cursor: pointer;
}
.mnav .mtog{ color: #e6e1d9; border-bottom-color: var(--line-d); }
.mobile-menu .mtog{ color: var(--ink); border-bottom-color: var(--line); }
/* Chevron drawn from two borders so it inherits the link colour and needs no asset. */
.mcar{
  flex: none; width: 8px; height: 8px; margin-right: 3px;
  border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform .18s ease;
  opacity: .65;
}
.mtog[aria-expanded="true"] .mcar{ transform: translateY(2px) rotate(-135deg); }
.msubs{ display: none; }
.macc.open > .msubs{ display: flex; flex-direction: column; }
.msubs a{ display: block; }
.msubs a{ padding-left: 22px; font-size: 14px; opacity: .92; }

.nav .menu a.active::after{right:0;}
