:root {
  --navy:#071d41; --ink:#102543; --blue:#0b4c9c; --cyan:#38bdf8;
  --red:#c91d25; --ice:#f3f8ff; --slate:#33465f; --line:#dce7f5;
  --heading:Sora, "Trebuchet MS", sans-serif; --body:Manrope, system-ui, sans-serif;
}
*, *::before, *::after { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:#fff; font:500 16px/1.62 var(--body); }
img { display:block; max-width:100%; }
a { color:inherit; }
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline:3px solid #197bd6; outline-offset:3px; }
p, h1, h2, h3 { margin:0; }
h1, h2, h3 { font-family:var(--heading); font-weight:750; line-height:1.09; letter-spacing:-.055em; }
h2 { font-size:clamp(2.1rem,4.3vw,3.85rem); }
h3 { font-size:1.37rem; letter-spacing:-.045em; }
.wrap { width:min(100% - 72px, 1240px); margin-inline:auto; }
.section { padding-block:clamp(64px,8vw,112px); }
section[id], #service-area { scroll-margin-top:105px; }
.sprite { position:absolute; width:0; height:0; overflow:hidden; }
.icon { width:20px; height:20px; flex:none; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; vertical-align:middle; }
.skip-link { position:fixed; top:12px; left:12px; transform:translateY(-150%); z-index:10; background:#fff; padding:10px 14px; }
.skip-link:focus { transform:none; }
.kicker { margin-bottom:13px; font-size:.72rem; font-weight:800; letter-spacing:.19em; color:var(--blue); }
.topline { background:#eaf3ff; color:#203d63; font-weight:800; font-size:.73rem; }
.topline-inner { min-height:35px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.topline .icon { width:14px; height:14px; margin-right:4px; }
.header { position:sticky; top:0; z-index:5; background:white; border-bottom:1px solid #dfe9f6; }
.nav { min-height:83px; display:flex; align-items:center; justify-content:space-between; gap:20px; }
.logo { flex:none; }
.logo img { width:211px; height:auto; }
.nav nav { display:flex; align-items:center; gap:clamp(12px,2.1vw,30px); }
.nav nav a { font-size:.83rem; font-weight:800; text-decoration:none; white-space:nowrap; }
.nav nav a:hover { color:var(--blue); }
.menu-toggle { display:none; }
.btn { display:inline-flex; align-items:center; justify-content:center; gap:9px; min-height:50px; padding:12px 18px; border:1px solid transparent; border-radius:9px; font:800 .89rem/1.2 var(--body); text-decoration:none; cursor:pointer; transition:background .18s ease, border-color .18s ease; }
.btn .icon { width:17px; height:17px; }
.btn-red { background:var(--red); color:white; }
.btn-red:hover { background:#a91420; }
.btn-blue { background:var(--blue); color:white; }
.btn-blue:hover { background:#083875; }
.header-call { min-height:45px; white-space:nowrap; }
.btn-outline { border-color:#7694bf; color:white; background:#ffffff0b; }
.btn-outline:hover { background:#ffffff22; border-color:#d9eaff; }
.hero { position:relative; isolation:isolate; overflow:hidden; background:radial-gradient(ellipse at 75% 28%,#124f96,transparent 62%),linear-gradient(120deg,#071a38 32%,#0a3367); color:white; }
.hero::before { content:""; position:absolute; inset:0; z-index:-2; background:repeating-linear-gradient(116deg,transparent 0 20px,#8fcaff0e 21px 22px,transparent 23px 45px); mask-image:linear-gradient(110deg,transparent 36%,black 100%); }
.hero-air { position:absolute; right:-110px; bottom:-130px; width:min(1050px,100%); stroke:#38bdf857; stroke-width:1.4; z-index:-1; }
.hero-air path { stroke-dasharray:1400; animation:airflow 1.35s ease-out both; }
@keyframes airflow { from { stroke-dashoffset:1400; } to { stroke-dashoffset:0; } }
.hero-grid { min-height:570px; display:grid; grid-template-columns:1fr .96fr; align-items:center; gap:clamp(28px,5.7vw,80px); padding-block:62px 70px; }
.hero-kicker { color:#a0dcff; display:flex; align-items:center; gap:9px; }
.hero-kicker span { display:inline-block; width:22px; height:2px; background:var(--cyan); }
.hero h1 { font-size:clamp(2.6rem,4.65vw,4.8rem); }
.hero h1 em { color:#82d8ff; font-style:normal; white-space:nowrap; }
.hero-lede { max-width:45ch; color:#e2efff; margin:23px 0 26px; font-size:clamp(1rem,1.3vw,1.13rem); }
.actions { display:flex; flex-wrap:wrap; gap:10px; }
.hero-visual { position:relative; min-width:0; }
.hero-frame { position:relative; border:1px solid #9ad7ff8c; border-radius:26px 26px 78px 26px; padding:7px; background:#a3d8ff16; box-shadow:0 20px 70px #020e2980; }
.hero-frame img { width:100%; height:auto; aspect-ratio:1.24; object-fit:cover; border-radius:20px 20px 71px 20px; background:#17395d; }
.visual-label { position:absolute; left:-24px; bottom:22px; display:flex; gap:11px; align-items:center; padding:12px 17px; border:1px solid #dfeeff; border-radius:12px; background:#fff; color:var(--navy); box-shadow:0 8px 30px #0a1f4c40; }
.visual-label > .icon { color:var(--blue); width:27px; height:27px; }
.visual-label strong,.visual-label small { display:block; }
.visual-label small { color:var(--slate); font-size:.71rem; }
.trust { background:#fff; border-bottom:1px solid var(--line); }
.trust-grid { min-height:96px; display:grid; grid-template-columns:repeat(3,1fr); }
.trust-grid > * { display:flex; align-items:center; gap:12px; padding:14px 20px; text-decoration:none; }
.trust-grid > * + * { border-left:1px solid var(--line); }
.trust-grid strong,.trust-grid small { display:block; }
.trust-grid small { color:var(--slate); font-size:.75rem; }
.trust-arrow { width:14px; height:14px; color:var(--blue); }
.trust-grid a:hover strong { color:var(--blue); text-decoration:underline; }
.badge-icon,.service-icon,.strip-icon { display:inline-grid; place-items:center; flex:none; width:43px; height:43px; border-radius:10px; color:var(--blue); background:#eaf4ff; }
.services { background:radial-gradient(ellipse at 82% 0%,#e0efff,transparent 60%),#f7fbff; }
.section-intro { display:grid; grid-template-columns:1.4fr 1fr; gap:24px; align-items:end; margin-bottom:34px; }
.services-actions { display:flex; justify-content:center; margin-top:26px; }
.section-intro > p { color:var(--slate); max-width:39ch; margin-bottom:3px; }
.services-grid { display:grid; grid-template-columns:1.12fr 1fr 1fr; gap:14px; }
.service-card { position:relative; isolation:isolate; display:flex; flex-direction:column; min-width:0; padding:22px; background:#fff; border:1px solid var(--line); border-radius:17px; transition:border-color .2s ease, box-shadow .2s ease; }
.service-card:hover { border-color:#7bb7ef; box-shadow:0 8px 23px #0b4c9c16; }
.card-top { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:15px; }
.card-index { color:#526d8e; font-size:.67rem; letter-spacing:.1em; font-weight:800; }
.service-icon { width:48px; height:48px; }
.service-icon .icon { width:24px; height:24px; }
.heating .service-icon { color:#ab2129; background:#fcecef; }
.service-card p,.customer-card p { margin:8px 0 16px; color:var(--slate); font-size:.94rem; }
.service-card a,.customer-card a,.inline-link { display:inline-flex; align-items:center; gap:6px; color:var(--blue); font-size:.82rem; font-weight:800; text-decoration:none; }
.service-card a { margin-top:auto; align-self:flex-start; }
.service-card a:hover,.customer-card a:hover,.inline-link:hover { text-decoration:underline; }
.service-card a .icon,.customer-card a .icon,.inline-link .icon { width:15px; height:15px; }
.featured { grid-row:span 2; padding:26px; min-height:345px; overflow:hidden; background:radial-gradient(ellipse at 100% 10%,#1d62a7,transparent 70%),#092e61; color:white; border-color:#174782; }
.featured .card-index { color:#b0d8ff; }
.featured-body { margin-top:auto; }
.featured-body h3 { font-size:clamp(1.9rem,3vw,2.85rem); }
.featured p { color:#e1edff; max-width:34ch; }
.featured a { color:#b8e7ff; }
.feature-art { position:absolute; z-index:-1; width:195px; height:195px; right:-35px; top:42px; color:#82c8ff35; stroke-width:.5; transform:rotate(14deg); }
.service-strip { background:repeating-linear-gradient(125deg,#fff0 0 27px,#ffffff12 28px 29px,#fff0 30px 48px),linear-gradient(110deg,#0a3f81,#0d599e); color:white; }
.strip-inner { display:flex; align-items:center; gap:16px; min-height:101px; padding-block:15px; }
.strip-icon { background:#ffffff24; color:#d1edff; }
.strip-inner strong,.strip-inner div > span { display:block; }
.strip-inner div > span { font-size:.86rem; color:#e1efff; }
.strip-inner a { margin-left:auto; display:inline-flex; gap:8px; align-items:center; color:white; font-size:.85rem; font-weight:800; text-underline-offset:4px; }
.customer-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.customer-card { padding:28px; border-radius:17px; border:1px solid #dce8f5; background:radial-gradient(ellipse at top right,#dfedfd,transparent 70%),#f7fbff; }
.customer-card + .customer-card { background:radial-gradient(ellipse at top right,#f6e5e8,transparent 74%),#fffbfc; border-color:#f2e0e4; }
.customer-card h3 { margin-top:15px; font-size:1.63rem; }
.about { background:radial-gradient(ellipse at 88% 10%,#e9f4ff,transparent 59%),#fff; }
.about-grid { display:grid; grid-template-columns:1.08fr .92fr; align-items:center; gap:clamp(24px,6vw,92px); }
.about-copy p:not(.kicker) { color:var(--slate); max-width:55ch; margin:14px 0; }
.about-copy .inline-link { margin-top:3px; }
.about-panel { position:relative; isolation:isolate; overflow:hidden; min-height:318px; display:flex; flex-direction:column; justify-content:space-between; gap:24px; padding:clamp(24px,4vw,48px); border-radius:23px; color:#fff; background:repeating-linear-gradient(122deg,transparent 0 32px,#9dc8ff18 33px 34px,transparent 35px 50px),radial-gradient(ellipse at 100% 0%,#1764aa,#071d41 78%); }
.about-panel-art { position:absolute; z-index:-1; color:#a6e0ff37; stroke-width:.6; width:235px; height:235px; right:-29px; top:-22px; transform:rotate(-18deg); }
.about-panel-label,.about-panel-note { display:flex; align-items:center; gap:8px; }
.about-panel-label { color:#bce8ff; font-size:.72rem; font-weight:800; letter-spacing:.13em; }
.about-panel-year { font:750 clamp(3.6rem,7vw,7rem)/.98 var(--heading); letter-spacing:-.06em; color:#fff; }
.about-panel p { color:#d7eaff; margin-top:8px; }
.about-panel-note { border-top:1px solid #9bc9f35c; padding-top:12px; color:#d7eaff; font-size:.82rem; }
.trust { border-top:1px solid var(--line); }
.why { background:radial-gradient(ellipse at 10% 28%,#e5f2ff,transparent 70%),#f5f9ff; }
.why-grid { display:grid; grid-template-columns:.88fr 1.12fr; gap:clamp(24px,6vw,88px); align-items:center; }
.why-intro > p:not(.kicker) { margin:15px 0 18px; max-width:44ch; color:var(--slate); }
.why-points { display:grid; gap:10px; }
.why-points article { display:flex; gap:14px; align-items:flex-start; padding:18px; border:1px solid var(--line); border-radius:13px; background:#fff; }
.why-points h3 { font-size:1.12rem; }
.why-points p { margin-top:5px; font-size:.9rem; color:var(--slate); }
.proof-strip { background:linear-gradient(115deg,#071d41,#183b66); color:white; }
.quick-request { background:linear-gradient(125deg,#ecf5ff,#f7fbff); border-bottom:1px solid var(--line); padding-block:clamp(38px,5vw,70px); }
.quick-request-grid { display:grid; grid-template-columns:.9fr 1.1fr; align-items:center; gap:clamp(18px,4vw,55px); }
.quick-request h2 { font-size:clamp(1.7rem,3vw,2.75rem); }
.quick-request-grid > div > p:last-child { margin-top:8px; font-size:.9rem; color:var(--slate); }
.quick-request form { min-width:0; display:grid; grid-template-columns:minmax(0,1fr) minmax(5.5rem,.55fr) auto; align-items:end; gap:10px; padding:16px; background:white; border:1px solid var(--line); border-radius:14px; }
.quick-fields { min-width:0; }
.quick-fields label { display:block; font-size:.77rem; font-weight:800; }
.quick-request form .btn { min-height:45px; padding-inline:12px; }
.directory-hero { color:white; background:radial-gradient(ellipse at 85% 5%,#125499,transparent 70%),#071d41; padding-block:clamp(55px,9vw,110px); }
.directory-hero .kicker,.directory-hero .inline-link { color:#b1e3ff; }
.directory-hero h1 { font-size:clamp(2.4rem,5.5vw,4.7rem); margin-bottom:13px; }
.directory-hero p:not(.kicker) { max-width:52ch; color:#e2efff; }
.directory-hero .inline-link { margin-bottom:14px; }
.directory-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:14px; }
.directory-grid article { scroll-margin-top:105px; }
.directory-grid h2 { font-size:clamp(1.35rem,2.7vw,2rem); }
.faq-grid { display:grid; grid-template-columns:.85fr 1.15fr; gap:30px; }
.questions { border-top:1px solid var(--line); }
details { border-bottom:1px solid var(--line); padding:15px 3px; }
summary { display:flex; justify-content:space-between; gap:8px; list-style:none; cursor:pointer; font-weight:800; }
summary::-webkit-details-marker { display:none; }
summary::after { content:"+"; font-size:1.15rem; color:var(--blue); }
details[open] summary::after { content:"−"; }
details p { color:var(--slate); padding-top:8px; font-size:.92rem; }
.request { position:relative; background:radial-gradient(ellipse at 92% 7%,#195690,transparent 63%),#071d41; color:white; }
.request-intro { margin-bottom:29px; }
.request-intro .kicker { color:#a4dfff; }
.request-intro > p:last-child { color:#d9eaff; margin-top:10px; }
.request-grid { display:grid; grid-template-columns:1fr 1fr; align-items:stretch; gap:18px; }
.form,.map-card { min-width:0; background:white; color:var(--ink); border-radius:17px; padding:clamp(17px,3vw,31px); }
.form h3,.map-card h3 { font-size:1.52rem; }
.form-note,.map-heading p { color:var(--slate); font-size:.84rem; margin-top:4px; }
.fields { margin-block:17px; display:grid; grid-template-columns:1fr 1fr; gap:13px; }
.fields label { display:block; font-size:.83rem; font-weight:800; min-width:0; }
.field-wide { grid-column:1/-1; }
.fields small { color:var(--slate); }
input,select,textarea { margin-top:5px; display:block; min-width:0; width:100%; padding:10px 11px; border:1px solid #c5d5e8; border-radius:8px; background:#f7faff; color:var(--ink); font:500 1rem/1.3 var(--body); }
input,select { min-height:45px; }
textarea { resize:vertical; }
.btn:disabled { opacity:.6; cursor:not-allowed; }
.form-status { color:var(--blue); font-size:.84rem; font-weight:800; }
.form-status:not(:empty) { margin-top:10px; }
.map-card { display:flex; flex-direction:column; }
.map-heading { display:flex; align-items:center; gap:11px; margin-bottom:15px; }
.map-card iframe { width:100%; flex:1 1 310px; min-height:280px; border:1px solid #d1e0ef; border-radius:11px; background:#e8f3f9; }
.map-meta,.contact-links { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px 12px; }
.map-meta { margin-top:8px; font-size:.73rem; color:var(--blue); }
.map-meta .icon { width:12px; height:12px; }
.contact-links { border-top:1px solid var(--line); margin-top:13px; padding-top:11px; font-weight:800; font-size:.8rem; overflow-wrap:anywhere; }
.contact-links .icon { width:15px; height:15px; color:var(--blue); }
.footer { color:#e1edff; background:radial-gradient(ellipse at 0 0,#12335c,transparent 58%),#06152f; border-top:3px solid #2f8ed0; }
.footer-inner { display:grid; grid-template-columns:1.2fr .78fr .93fr 1.05fr; gap:clamp(18px,3vw,44px); padding-block:clamp(30px,5vw,62px); }
.footer-inner > * { min-width:0; }
.footer-logo { display:inline-block; width:min(196px,100%); border-radius:10px; padding:7px 10px; background:#fff; }
.footer-logo img { width:100%; height:auto; }
.footer-brand p { color:#c8d8ee; font-size:.86rem; margin:12px 0; max-width:30ch; }
.footer-column h2 { margin:2px 0 6px; color:white; font-size:.99rem; letter-spacing:-.025em; }
.footer-column { display:flex; flex-direction:column; align-items:flex-start; gap:8px; }
.footer-column > a,.footer-bbb { font-size:.85rem; color:#d5e6fc; text-decoration:none; overflow-wrap:anywhere; }
.footer-column > a:hover,.footer-bbb:hover,.footer-bottom a:hover { text-decoration:underline; }
.footer-contact a:not(.btn),.footer-bbb { display:inline-flex; align-items:center; gap:6px; }
.footer-contact .btn { margin-top:4px; min-height:40px; color:white; padding:8px 11px; }
.footer-contact .icon,.footer-bbb .icon { width:15px; height:15px; }
.footer-contact a:not(.btn) .icon,.footer-bbb .icon { color:#96d8ff; }
.footer-bottom { border-top:1px solid #334b6b; color:#bfcee5; padding-block:15px 19px; font-size:.78rem; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.footer-bottom a { flex:none; text-underline-offset:3px; }
.footer-bottom .icon { transform:rotate(-90deg); width:13px; height:13px; }
.mobile-actions { display:none; }

@media (max-width:1050px) {
  .wrap { width:calc(100% - 52px); }
  .logo img { width:177px; }
  .hero-grid { min-height:490px; }
  .trust-grid > * { padding-inline:12px; }
}
@media (max-width:850px) {
  .nav { min-height:68px; }
  .nav nav { gap:12px; }
  .nav nav a { font-size:.78rem; }
  .header-call { display:none; }
  .hero-grid { min-height:0; }
  .services-grid { grid-template-columns:1fr 1fr; }
  .featured { grid-column:1/-1; grid-row:auto; min-height:248px; }
  .quick-request form { grid-template-columns:1fr 1fr; }
  .quick-request form .btn { grid-column:1/-1; justify-self:start; }
  .footer-inner { grid-template-columns:repeat(2,minmax(0,1fr)); row-gap:24px; }
}
@media (max-width:650px) {
  .wrap { width:calc(100% - 36px); }
  .topline-inner { font-size:.65rem; }
  .header { position:relative; }
  .nav { min-height:63px; }
  .logo img { width:160px; }
  .menu-toggle { display:grid; place-content:center; gap:4px; width:44px; height:44px; border:1px solid var(--line); border-radius:8px; background:var(--ice); color:var(--navy); }
  .menu-toggle span { height:2px; width:17px; background:currentColor; }
  .nav nav { display:flex; flex-wrap:wrap; gap:8px 12px; }
  .js .nav nav { display:none; position:absolute; top:100%; left:0; right:0; background:#fff; border-top:1px solid var(--line); padding:10px 18px 15px; box-shadow:0 15px 25px #0a21402c; }
  .js .nav nav.open { display:grid; }
  .js .nav nav a { display:block; padding:7px; font-size:.92rem; }
  html:not(.js) .menu-toggle { display:none; }
  section[id], #service-area { scroll-margin-top:15px; }
  .hero-grid { grid-template-columns:1fr; padding-block:42px 31px; gap:22px; }
  .desktop-break { display:none; }
  .hero h1 { font-size:clamp(2.15rem,8.9vw,3.5rem); }
  .hero-lede { margin:16px 0 19px; }
  .actions { gap:8px; }
  .actions .btn { padding:10px 12px; font-size:.8rem; min-height:45px; }
  .actions .icon { width:14px; height:14px; }
  .hero-frame,.hero-frame img { border-radius:15px 15px 49px 15px; }
  .hero-frame img { aspect-ratio:1.58; }
  .hero-air path { animation:none; }
  .visual-label { left:6px; bottom:10px; padding:7px 9px; gap:6px; }
  .visual-label strong { font-size:.8rem; }
  .visual-label small { font-size:.63rem; }
  .visual-label > .icon { width:20px; height:20px; }
  .trust-grid { grid-template-columns:1fr; padding-block:5px; }
  .trust-grid > * { padding:8px 0; }
  .trust-grid > * + * { border-left:0; border-top:1px solid var(--line); }
  .trust .badge-icon { width:34px; height:34px; }
  .trust-grid strong { font-size:.87rem; }
  .trust-grid small { font-size:.72rem; }
  .section { padding-block:53px; }
  .section-intro,.services-grid,.customer-grid,.about-grid,.why-grid,.quick-request-grid,.faq-grid,.request-grid,.directory-grid { grid-template-columns:1fr; gap:14px; }
  .section-intro { margin-bottom:23px; }
  .featured { min-height:230px; }
  .strip-inner { display:grid; grid-template-columns:auto 1fr; gap:9px 12px; padding-block:15px; }
  .strip-inner a { margin-left:0; grid-column:2; }
  .about-panel { min-height:245px; gap:16px; }
  .why-grid { gap:20px; }
  .quick-request-grid { gap:18px; }
  .quick-request form { grid-template-columns:1fr; }
  .proof-strip .strip-inner a { grid-column:2; }
  .faq-grid { gap:23px; }
  .map-card iframe { flex-basis:265px; min-height:265px; }
  .footer { padding-bottom:57px; }
  .footer-inner { gap:23px 15px; }
  .footer-brand,.footer-contact { grid-column:1/-1; }
  .footer-bottom { flex-wrap:wrap; }
  .mobile-actions { display:grid; grid-template-columns:1fr 1fr; position:fixed; bottom:0; left:0; right:0; z-index:4; background:var(--navy); color:white; box-shadow:0 -3px 20px #081c3f28; padding-bottom:env(safe-area-inset-bottom); }
  .mobile-actions a { display:flex; align-items:center; justify-content:center; gap:7px; padding:10px 5px; min-height:47px; font-size:.82rem; font-weight:800; text-decoration:none; }
  .mobile-actions a:first-child { background:var(--red); }
  .mobile-actions .icon { width:15px; height:15px; }
}
@media (max-width:350px) { .fields { grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce) {
  *, *::before, *::after { animation:none !important; transition:none !important; }
}
