/* Transit & Flow Group — custom site chrome (header, mega menu, footer, mobile drawer).
   Replaces the Megafactory theme header/footer. v1 */
/* Hide the theme's native header + footer (and its off-canvas mobile menu, which
   sits off-screen and was adding a few px of horizontal scroll). */
.mobile-header, header.megafactory-header, .site-footer,
.megafactory-mobile-menu, .megafactory-mobile-header, [class*="megafactory-mobile"]{ display:none !important; }
html{ overflow-x:hidden; }
body{ margin:0; padding-top:122px !important; overflow-x:hidden; }
@media(max-width:1120px){ body{ padding-top:95px !important; } }
@media(max-width:520px){ body{ padding-top:94px !important; } }
/* Fixed-header offset for the WordPress admin bar (logged-in only). Force the admin bar
   fixed and neutralize WP's html margin so the header pins cleanly with no gap. */
html{ margin-top:0 !important; }
#wpadminbar{ position:fixed !important; top:0 !important; }
body.admin-bar .tfh{ top:32px; }
@media screen and (max-width:782px){ body.admin-bar .tfh{ top:46px; } }
.tfh, .tfd, .tff{ font-family:'Poppins','Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; }

*{margin:0;padding:0;box-sizing:border-box}

a{text-decoration:none;color:inherit}

/* ============ HEADER ============ */
.tfh{position:fixed;top:0;left:0;right:0;width:100%;z-index:1000;font-family:'Manrope',sans-serif}
.tfh-util{background:linear-gradient(90deg,#02264A,#063a63);color:#cfe1ee;font-size:12.5px;font-weight:600;max-height:60px;overflow:hidden;transition:max-height .3s ease,opacity .25s ease}
.tfh.tfh-shrunk .tfh-util{max-height:0;opacity:0}
.tfh-util .in{max-width:1280px;margin:0 auto;padding:8px 30px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.tfh-util .trust{display:flex;align-items:center;gap:14px;letter-spacing:.2px}
.tfh-util .trust b{color:#fff}
.tfh-util .star{color:#4FC3F7}
.tfh-util .u-right{display:flex;align-items:center;gap:18px}
.tfh-util .u-right a{color:#cfe1ee;transition:color .15s}
.tfh-util .u-right a:hover{color:#fff}
.tfh-util .u-soc{display:flex;gap:12px}
.tfh-util .u-soc svg{width:15px;height:15px;fill:#9fc4de;transition:fill .15s}
.tfh-util .u-soc a:hover svg{fill:#fff}
.tfh-main{background:#fff;box-shadow:0 1px 0 rgba(2,38,74,.06);transition:box-shadow .2s ease}
.tfh-main.tfh-stuck{box-shadow:0 6px 22px rgba(2,38,74,.12)}
.tfh-main .in{max-width:1280px;margin:0 auto;padding:0 30px;height:78px;display:flex;align-items:center;gap:22px;transition:height .25s ease}
.tfh-main.tfh-stuck .in{height:66px}
.tfh-logo{flex:0 0 auto;display:flex;align-items:center}
.tfh-logo img{height:40px;width:auto;max-width:none;object-fit:contain;flex:0 0 auto;display:block;transition:height .25s ease}
.tfh-main.tfh-stuck .tfh-logo img{height:36px}
.tfh-nav{display:flex;align-items:center;gap:2px;margin:0 auto}
.tfh-nav>a,.tfh-nav>.has-mega>a{display:inline-flex;align-items:center;gap:5px;padding:9px 14px;border-radius:9px;font-weight:600;font-size:15px;letter-spacing:.1px;color:#02264A;white-space:nowrap;transition:background .15s,color .15s}
.tfh-nav>a:hover,.tfh-nav>.has-mega:hover>a{background:#EAF4FA;color:#0092CD}
.tfh-nav .caret{width:11px;height:11px;fill:currentColor;transition:transform .2s}
.tfh-has-mega{position:static}
.tfh-cta{flex:0 0 auto;display:flex;align-items:center;gap:12px}
.tfh-search{position:relative;flex:0 0 auto}
.tfh-srch-btn{width:42px;height:42px;border-radius:11px;border:1.5px solid #d9e5ef;background:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:.16s;padding:0}
.tfh-srch-btn:hover{border-color:#0092CD;background:#f3fbff}
.tfh-srch-btn svg{width:18px;height:18px;fill:none;stroke:#02264A;stroke-width:2;stroke-linecap:round}
.tfh-srch-btn:hover svg{stroke:#0092CD}
.tfh-srch-panel{position:absolute;top:calc(100% + 12px);right:0;width:340px;max-width:80vw;background:#fff;border:1px solid #e6eef4;border-radius:13px;box-shadow:0 20px 44px rgba(2,38,74,.18);padding:10px;display:flex;gap:8px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s,transform .2s,visibility .2s;z-index:1002}
.tfh-search.open .tfh-srch-panel{opacity:1;visibility:visible;transform:none}
.tfh-search.open .tfh-srch-btn{border-color:#0092CD;background:#f3fbff}
.tfh-srch-panel input{flex:1;min-width:0;border:1.5px solid #e2ebf2;border-radius:9px;padding:11px 13px;font:inherit;font-size:14.5px;color:#02264A}
.tfh-srch-panel input:focus{outline:0;border-color:#0092CD;box-shadow:0 0 0 3px rgba(0,146,205,.12)}
.tfh-srch-panel button{width:44px;flex:0 0 auto;border:0;border-radius:9px;background:linear-gradient(135deg,#12a9e6,#0092CD);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}
.tfh-srch-panel button svg{width:18px;height:18px;fill:none;stroke:#fff;stroke-width:2.2;stroke-linecap:round}
.tfh-phone{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:14.5px;color:#02264A;padding:9px 15px;border:1.5px solid #d9e5ef;border-radius:11px;transition:.16s;white-space:nowrap}
.tfh-phone svg{width:16px;height:16px;fill:#0092CD}
.tfh-phone:hover{border-color:#0092CD;color:#0092CD;background:#f3fbff}
.tfh-est{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:11px;background:linear-gradient(135deg,#12a9e6 0%,#0092CD 55%,#0079b8 100%);color:#fff !important;font-weight:800;font-size:14.5px;white-space:nowrap;box-shadow:0 8px 20px rgba(0,146,205,.30),inset 0 1px 0 rgba(255,255,255,.28);transition:transform .18s ease,box-shadow .18s ease}
.tfh-est::after{content:"";position:absolute;top:0;left:-50%;width:45%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-18deg);transition:left .55s ease;pointer-events:none}
.tfh-est:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,146,205,.42),inset 0 1px 0 rgba(255,255,255,.28)}
.tfh-est:hover::after{left:130%}
.tfh-est svg{width:16px;height:16px;fill:#fff;position:relative}
/* Visible keyboard focus for accessibility */
.tfh-nav>a:focus-visible,.tfh-nav>.has-mega>a:focus-visible,.tfh-est:focus-visible,.tfh-phone:focus-visible,.tfh-util a:focus-visible,.mega-col a:focus-visible,.mega-promo a:focus-visible{outline:2px solid #0092CD;outline-offset:3px;border-radius:8px}
/* Keyboard users can open the mega menu by tabbing into Services */
.tfh-has-mega:focus-within .tfh-mega{opacity:1;visibility:visible;transform:translateY(0)}
/* mega */
.tfh-mega{position:absolute;left:0;right:0;top:100%;background:#fff;box-shadow:0 30px 60px -20px rgba(2,38,74,.35);border-top:1px solid #eef3f7;
  opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s,transform .2s,visibility .2s;z-index:1001}
.tfh-has-mega:hover .tfh-mega{opacity:1;visibility:visible;transform:translateY(0)}
.tfh-mega .mega-in{max-width:1280px;margin:0 auto;padding:28px 24px;display:grid;grid-template-columns:repeat(5,1fr) 1.15fr;gap:26px}
.mega-col h4{display:flex;align-items:center;gap:9px;font-size:11.5px;letter-spacing:1.1px;text-transform:uppercase;color:#0092CD;font-weight:800;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid #eef3f7}
.mega-col .mc-ic{width:26px;height:26px;flex:0 0 auto;border-radius:8px;background:linear-gradient(135deg,#e8f4fb,#d3ecf9);display:inline-flex;align-items:center;justify-content:center}
.mega-col .mc-ic svg{width:15px;height:15px;fill:none;stroke:#0092CD;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.mega-col a{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:#334a5e;padding:7px 9px;margin:1px 0;border-radius:9px;line-height:1.2;transition:background .14s ease,color .14s ease}
.mega-col a::before{content:"";width:5px;height:5px;border-radius:50%;background:#cbdcea;flex:0 0 auto;transition:background .14s ease,transform .14s ease}
.mega-col a:hover{background:#f1f8fd;color:#0092CD}
.mega-col a:hover::before{background:#0092CD;transform:scale(1.35)}
.mega-col a.mhot{font-weight:800;color:#02264A}
.mega-col a.mhot::after{content:"Popular";margin-left:auto;font-size:9px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#0092CD;background:#e8f4fb;border:1px solid #d3ecf9;padding:2px 7px;border-radius:20px}
.mega-promo{background:radial-gradient(400px 260px at 120% -20%,#0b3a63,#02223f 70%);border-radius:16px;padding:24px;color:#fff;display:flex;flex-direction:column;justify-content:center}
.mega-promo .k{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:#7fd3ef;font-weight:700}
.mega-promo h3{font-size:21px;font-weight:800;margin:9px 0 8px;line-height:1.2;color:#fff !important;-webkit-text-fill-color:#fff}
.mega-promo h3 b{color:#5fd0f0;-webkit-text-fill-color:#5fd0f0}
.mega-promo p{font-size:13px;color:#cfe6f4;line-height:1.45;margin-bottom:16px}
.mega-promo .pbtn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:linear-gradient(135deg,#12a9e6,#0092CD);color:#fff;font-weight:800;font-size:14px;padding:13px 18px;border-radius:11px;margin-bottom:12px;box-shadow:0 8px 20px rgba(0,146,205,.3);transition:transform .16s ease}
.mega-promo .pbtn:hover{transform:translateY(-2px)}
.mega-promo .pcall{font-size:14px;font-weight:700;color:#dff1fb;display:inline-flex;align-items:center;gap:8px}
.mega-promo .pcall svg{width:15px;height:15px;fill:#5fd0f0}
/* mobile bits */
.tfh-burger,.tfh-mphone,.tfh-mobtn{display:none}
/* ============ MOBILE ============ */
@media(max-width:1120px){
  .tfh-nav,.tfh-cta{display:none}
  .tfh-main .in{height:64px}
  .tfh-logo img{height:34px}
  .tfh-mobtn{margin-left:auto;display:flex !important;align-items:center;gap:10px}
  .tfh-mphone{display:inline-flex;width:46px;height:46px;border-radius:12px;background:linear-gradient(150deg,#0092CD,#22b6e6);align-items:center;justify-content:center}
  .tfh-mphone svg{width:20px;height:20px;fill:#fff}
  .tfh-burger{display:inline-flex;flex-direction:column;gap:5px;width:46px;height:46px;border:1.5px solid #dbe6ee;border-radius:12px;background:#fff;align-items:center;justify-content:center;cursor:pointer}
  .tfh-burger span{width:20px;height:2px;background:#02264A;border-radius:2px;transition:.2s}
  .tfh-util .trust span:not(.star){display:none}
  .tfh-util .u-right a:not(.u-tel){display:none}
}
@media(max-width:520px){ .tfh-util .in{padding:7px 16px} .tfh-main .in{padding:0 16px} }
/* drawer */
.tfd-scrim{position:fixed !important;inset:0;background:rgba(2,26,49,.55);opacity:0;visibility:hidden;transition:.25s;z-index:1200}
.tfd-scrim.open{opacity:1 !important;visibility:visible !important}
.tfd{position:fixed !important;top:0;right:0;bottom:0;width:min(92vw,400px);background:#fff;z-index:1201;transform:translateX(100%) !important;transition:transform .28s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;box-shadow:-20px 0 50px rgba(2,26,49,.3)}
.tfd.open{transform:translateX(0) !important}
.tfd-top{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid #eef3f7}
.tfd-top img{height:32px;width:auto}
.tfd-close{width:40px;height:40px;border-radius:10px;border:1.5px solid #e4edf3;background:#fff;font-size:22px;color:#02264A;cursor:pointer;line-height:1}
.tfd-body{flex:1;overflow-y:auto;padding:8px 0}
.tfd-body>a,.tfd-acc>button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:15px 20px;font-size:16px;font-weight:700;color:#02264A;background:none;border:none;text-align:left;cursor:pointer;border-bottom:1px solid #f2f6f9}
.tfd-acc>button .c{width:14px;height:14px;fill:#9fb3c2;transition:transform .2s}
.tfd-acc.open>button .c{transform:rotate(180deg)}
.tfd-sub{max-height:0;overflow:hidden;transition:max-height .3s ease;background:#fbfdff}
.tfd-acc.open .tfd-sub{max-height:1400px}
.tfd-sub h5{font-size:10.5px;letter-spacing:1.2px;text-transform:uppercase;color:#0092CD;font-weight:800;padding:14px 20px 4px}
.tfd-sub a{display:block;padding:9px 20px 9px 20px;font-size:14px;font-weight:600;color:#41586b}
.tfd-cta{padding:18px 20px;border-top:1px solid #eef3f7;display:flex;flex-direction:column;gap:10px;background:#fff}
.tfd-cta a{display:flex;align-items:center;justify-content:center;gap:9px;padding:15px;border-radius:12px;font-weight:800;font-size:15.5px}
.tfd-cta .d-est{background:linear-gradient(150deg,#0092CD,#22b6e6);color:#fff}
.tfd-cta .d-call{background:#02264A;color:#fff}
.tfd-cta svg{width:17px;height:17px;fill:currentColor}
.tfd-trust{padding:6px 20px 20px;font-size:12px;color:#7c8b98;text-align:center;font-weight:600}
.tfd-soc{display:flex;justify-content:center;gap:16px;padding:0 20px 22px}
.tfd-soc svg{width:20px;height:20px;fill:#9fb3c2}
/* ============ FOOTER (clean white) ============ */
/* ===== v1.88 clean white footer — logo + single-line nav, compact brand/contact ===== */
.tff{background:#ffffff;color:#5b6b78;font-family:'Manrope',sans-serif;border-top:1px solid #eaf0f5}
.tff-cta{background:#f7fafc;border-bottom:1px solid #eef3f7}
.tff-cta .in{max-width:1280px;margin:0 auto;padding:28px 24px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.tff-cta h3{color:#02264A;font-size:23px;font-weight:800;letter-spacing:-.3px}
.tff-cta p{color:#5b6b78;font-size:14px;margin-top:4px}
.tff-cta .acts{display:flex;gap:12px;flex-wrap:wrap}
.tff-cta .acts a{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:12px;font-weight:800;font-size:15px}
.tff-cta .a-est{background:linear-gradient(150deg,#0092CD,#22b6e6);color:#fff;box-shadow:0 12px 26px -12px rgba(0,146,205,.55)}
.tff-cta .a-call{background:#fff;color:#02264A;border:1.5px solid #d6e3ec}
.tff-cta .a-call:hover{border-color:#0092CD;color:#0092CD}
.tff-cta svg{width:16px;height:16px;fill:currentColor}
/* Top row: logo left, one line of primary menu items right */
.tff-top{max-width:1280px;margin:0 auto;padding:34px 24px 22px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;border-bottom:1px solid #eef3f7}
.tff-logo img{height:38px;width:auto;display:block}
.tff-nav{display:flex;align-items:center;gap:8px 4px;flex-wrap:wrap;justify-content:flex-end}
.tff-nav a{font-size:14px;font-weight:700;color:#33475b;text-decoration:none;padding:7px 14px;border-radius:9px;transition:color .13s,background .13s;white-space:nowrap}
.tff-nav a:hover{color:#0092CD;background:#f2f8fc}
/* Info row: brand blurb + trust (left), contact + social (right) */
.tff-info{max-width:1280px;margin:0 auto;padding:26px 24px 30px;display:grid;grid-template-columns:1.4fr 1fr;gap:40px;align-items:start}
.tff-brand p{font-size:13.5px;line-height:1.65;color:#6b7c89;max-width:520px;margin:0 0 16px}
.tff-badges{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.tff-badge{font-size:11.5px;font-weight:700;color:#33566f;background:#f2f7fb;border:1px solid #e3edf4;padding:6px 11px;border-radius:20px}
.tff-trust{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.tff-bbb img{display:block;width:120px;height:auto;border-radius:4px}
.tff-revlinks{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tff-revlinks a{font-size:12.5px;font-weight:700;color:#5b6b78;text-decoration:none;padding:5px 11px;border:1px solid #e3edf4;border-radius:20px;transition:.13s}
.tff-revlinks a:hover{color:#0092CD;border-color:#bfe0f2;background:#f2f8fc}
.tff-contact{display:flex;flex-direction:column;gap:0}
.tff-contact div{display:flex;gap:10px;align-items:flex-start;margin-bottom:12px;font-size:13.5px;color:#5b6b78;line-height:1.45}
.tff-contact svg{width:16px;height:16px;fill:#0092CD;flex:0 0 16px;margin-top:2px}
.tff-contact a{color:#02264A;font-weight:700;text-decoration:none}
.tff-contact a:hover{color:#0092CD}
.tff-soc{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap}
.tff-soc a{width:36px;height:36px;border-radius:9px;background:#f2f7fb;border:1px solid #e6eef4;display:flex;align-items:center;justify-content:center;transition:.15s}
.tff-soc a:hover{background:#0092CD;border-color:#0092CD}
.tff-soc svg{width:16px;height:16px;fill:#5b7488;transition:fill .15s}
.tff-soc a:hover svg{fill:#fff}
.tff-bottom{border-top:1px solid #eaf0f5}
.tff-bottom .in{max-width:1280px;margin:0 auto;padding:20px 24px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:12.5px;color:#8296a5}
.tff-bottom a{color:#5b6b78;text-decoration:none}.tff-bottom a:hover{color:#0092CD}
.tff-bottom .links{display:flex;gap:18px}
@media(max-width:900px){
  .tff-top{flex-direction:column;align-items:flex-start;gap:16px}
  .tff-nav{justify-content:flex-start}
  .tff-info{grid-template-columns:1fr;gap:28px}
  .tff-cta .in{flex-direction:column;align-items:flex-start}
}
@media(max-width:560px){ .tff-cta h3{font-size:20px} .tff-nav a{padding:7px 11px} }
.tff-disclosure{max-width:1280px;margin:0 auto;padding:0 24px;font-size:12px;color:#8a9bab;line-height:1.55}

/* ===== v1.33 — mobile utility bar removal + social row wrap ===== */
@media(max-width:768px){
  .tfh-util{display:none !important}
  body{padding-top:64px !important}
}
.tff-soc{flex-wrap:wrap}

/* v1.43: live Google rating badge (footer + [tf_google_rating] shortcode) */
.tf-gbadge{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;background:#fff;border:1px solid #e3ebf2;border-radius:999px;text-decoration:none;box-shadow:0 1px 4px rgba(2,38,74,.08);transition:transform .15s ease,box-shadow .15s ease}
.tf-gbadge:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(2,38,74,.14);text-decoration:none}
.tf-gbadge-g{width:18px;height:18px;flex:0 0 18px}
.tf-gbadge-stars{color:#fbbc04;font-size:14px;letter-spacing:1px;line-height:1}
.tf-gbadge-num{font-weight:800;color:#02264A;font-size:15px}
.tf-gbadge-txt{color:#5b6b78;font-size:13px;white-space:nowrap}
/* v1.88: footer Google rating badge sits inline within the white trust row */
.tff .tf-gbadge{margin:0 4px 0 0}
/* v1.44/v1.88: trust row (BBB seal + Angi/Thumbtack/Yelp) — styled in the white
   footer block above; overrides removed so the white treatment applies. */

/* v1.45: Housecall Pro chat bubble — keep clear of content on phones and
   below our modal/menu layers */
#hcp-chat-widget, .hcp-chat-widget, iframe[src*="chat.housecallpro"], #housecall-pro-chat-widget{ z-index: 99990 !important; }

/* v1.46: instant property snapshot card under any address field */
.tf-prop-card{display:block;margin:12px 0 4px;background:#fff;border:1px solid #e3ebf2;border-radius:16px;box-shadow:0 10px 28px -14px rgba(2,38,74,.28);overflow:hidden;text-align:left}
.tf-prop-photos{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:#e3ebf2}
.tf-prop-fig{margin:0;position:relative;background:#f2f6fa}
.tf-prop-fig img{display:block;width:100%;height:128px;object-fit:cover}
.tf-prop-fig figcaption{position:absolute;left:8px;bottom:8px;font-size:10px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:#fff;background:rgba(2,38,74,.72);padding:3px 9px;border-radius:999px;line-height:1.2}
.tf-prop-body{padding:13px 16px 14px;display:flex;flex-direction:column;gap:5px}
.tf-prop-chip{align-self:flex-start;font-size:10.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;padding:3px 10px;border-radius:999px}
.tf-prop-chip-res{background:#e7f6ec;color:#1e7c3c}
.tf-prop-chip-com{background:#eaf1fd;color:#1d4fd7}
.tf-prop-head{font-size:18px;font-weight:800;color:#02264A;letter-spacing:-.2px}
.tf-prop-facts{font-size:13.5px;color:#3d5468;font-weight:600}
.tf-prop-note{font-size:11.5px;color:#8296a7;border-top:1px solid #eef3f7;padding-top:7px;margin-top:3px}
@media (max-width:400px){.tf-prop-fig img{height:104px}}

/* ================================================================
   v2.0.6 — Chrome geometry + hero presentation corrections
   1. Admin-bar compensation (single source of truth, no clipped header text)
   2. Mobile drawer: clears admin bar + device bottom bar, accordions open
   3. Hero: grid-stacked slides, dedicated control rail, zero dot/CTA collision
   4. Desktop hero: full-bleed, aligned to the header grid, cinematic scrim
   ================================================================ */

/* ---------- 1. HEADER OFFSET: one variable drives every breakpoint ---------- */
:root{ --tf-hdr:122px; --tf-ab:0px; --tf-bottombar:0px; }
@media(max-width:1120px){ :root{ --tf-hdr:95px; } }
@media(max-width:768px){  :root{ --tf-hdr:64px; } }
body{ padding-top:calc(var(--tf-hdr) + var(--tf-ab)) !important; }
body.admin-bar{ --tf-ab:32px; }
@media screen and (max-width:782px){ body.admin-bar{ --tf-ab:46px; } }
.tfh, body.admin-bar .tfh{ top:var(--tf-ab) !important; }

/* ---------- 2. MOBILE DRAWER ---------- */
.tfd, .tfd-scrim{ top:var(--tf-ab) !important; }
.tfd{ bottom:0 !important; max-height:none !important; }
/* The drawer CTA block must clear any device/app bottom bar and the iOS home bar. */
.tfd-cta{ padding-bottom:calc(18px + var(--tf-bottombar) + env(safe-area-inset-bottom,0px)) !important; }
.tfd-body{ -webkit-overflow-scrolling:touch; overscroll-behavior:contain; }
/* Full Services panel is ~950px of links; the old 1400px cap was fine, this is headroom. */
.tfd-acc.open .tfd-sub{ max-height:2600px; }
.tfd-acc>button{ -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
.tfd-acc>button *{ pointer-events:none; }
.tfd-acc>button:focus-visible{ outline:2px solid #0092CD; outline-offset:-2px; }

/* ---------- 3. HERO SLIDER: stacked grid, no absolute overflow ---------- */
/* Slides stack in a single grid cell, so the container height is driven by the
   tallest slide instead of a fixed min-height that content can spill out of. */
.tf-hero-slider .tf-slides{ display:grid !important; grid-template-columns:100%; }
.tf-hero-slider .tf-slide{ position:relative !important; inset:auto !important;
  grid-column:1 / 2 !important; grid-row:1 / 2 !important; }
/* Controls stay absolute, so they are outside the grid flow. */
.tf-hero-slider .tf-slider-arrow,
.tf-hero-slider .tf-slider-dots,
.tf-hero-slider .tf-hero-trust{ position:absolute !important; }

/* Each slide already carries its own gradient scrim inline, so no extra overlay. */
.tf-hero-slider .tf-slide-inner{ position:relative; z-index:2; }

/* Desktop: full-bleed banner, copy aligned to the header grid, one control
   cluster in the bottom-LEFT reserved rail. Left, not right, because the
   fixed chat launcher and booking widgets own the bottom-right corner of
   the viewport at scroll position zero. */
@media(min-width:641px){
  .tf-hero-slider{ margin-left:calc(50% - 50vw) !important; margin-right:calc(50% - 50vw) !important;
    width:auto !important; max-width:none !important; min-height:640px !important; }
  .tf-hero-slider .tf-slide-inner{ max-width:1280px !important;
    padding:110px 30px 156px !important; }
  .tf-hero-slider .tf-slide-copy{ max-width:680px !important; }
  .tf-hero-slider .tf-hero-ctas{ margin-top:30px; }
  /* Control rail: arrows then dots, left-aligned to the copy column. */
  .tf-hero-slider .tf-slider-arrow{ top:auto !important; bottom:76px !important;
    right:auto !important; transform:none !important; }
  .tf-hero-slider .tf-slider-prev{
    left:max(30px, calc((100% - 1280px)/2 + 30px)) !important; }
  .tf-hero-slider .tf-slider-next{
    left:max(84px, calc((100% - 1280px)/2 + 84px)) !important; }
  .tf-hero-slider .tf-slider-dots{ right:auto !important; bottom:76px !important;
    left:max(148px, calc((100% - 1280px)/2 + 148px)) !important;
    height:44px; align-items:center; justify-content:flex-start; }
}
@media(min-width:641px) and (max-width:1024px){
  .tf-hero-slider{ min-height:580px !important; }
  .tf-hero-slider .tf-slide-inner{ padding:80px 24px 150px !important; }
}

/* Mobile: content top-aligned, dots centred in their own reserved rail above
   the trust bar. The CTA stack can grow without ever reaching them. */
@media(max-width:640px){
  .tf-hero-slider{ min-height:480px !important; }
  .tf-hero-slider .tf-slide{ align-items:flex-start !important; }
  .tf-hero-slider .tf-slide-inner{ padding:26px 20px 112px !important; max-width:none !important; }
  .tf-hero-slider .tf-slider-dots{ left:0 !important; right:0 !important; bottom:66px !important;
    justify-content:center !important; height:auto; }
  .tf-hero-slider .tf-slider-arrow{ display:none !important; }
}

/* ---------- 3b. HERO SLIDER AUTO-HEIGHT ----------
   All slides share one grid cell, so the container locks to the TALLEST
   slide and short slides show dead space under the CTAs. The autoheight
   module measures the active slide's inner content and sets an explicit,
   transitioned height, so every slide is exactly as tall as it needs. */
.tf-hero-slider.tf-slider-autoheight .tf-slides{
  height:auto; overflow:hidden;
  transition:height .42s cubic-bezier(.4,0,.2,1);
  will-change:height;
}
@media(prefers-reduced-motion: reduce){
  .tf-hero-slider.tf-slider-autoheight .tf-slides{ transition:none; }
}
/* With autoheight driving the box, the fixed floors only need to keep the
   control rail from crowding the copy on the shortest slide. */
@media(min-width:641px){
  .tf-hero-slider.tf-slider-autoheight{ min-height:0 !important; }
  .tf-hero-slider.tf-slider-autoheight .tf-slide-inner{ padding:96px 30px 108px !important; }
}
@media(min-width:641px) and (max-width:1024px){
  .tf-hero-slider.tf-slider-autoheight .tf-slide-inner{ padding:76px 24px 102px !important; }
}
@media(max-width:640px){
  .tf-hero-slider.tf-slider-autoheight{ min-height:0 !important; }
  .tf-hero-slider.tf-slider-autoheight .tf-slide-inner{ padding:26px 20px 56px !important; }
  .tf-hero-slider.tf-slider-autoheight .tf-slider-dots{ bottom:58px !important; }
}
