/* ---------------------------------------------------------------------------
   Self-hosted type. Replaces the two render-blocking third-party stylesheets
   (api.fontshare.com + fonts.googleapis.com) that used to sit in every page
   head. Same faces, same weights, one origin, no extra DNS/TLS on first paint.
   Files: assets/fonts/*.woff2  (Satoshi = ITF Free Font License,
   JetBrains Mono = SIL OFL — both licensed for web embedding.)
--------------------------------------------------------------------------- */
@font-face{font-family:"Satoshi";src:url("fonts/satoshi-500.woff2") format("woff2");
  font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Satoshi";src:url("fonts/satoshi-700.woff2") format("woff2");
  font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Satoshi";src:url("fonts/satoshi-900.woff2") format("woff2");
  font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("fonts/jetbrains-mono.woff2") format("woff2");
  font-weight:400 700;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ---------------------------------------------------------------------------
   site-light.css — the bright "honest work order" design system, ported from
   the cooltech-demo. Replaces cool-tech.css + site.css on index + subpages
   (review/thank-you/404 keep the old stylesheet). Tokens: paper ground,
   brand navy ink, brand green accent, Satoshi + JetBrains Mono.
--------------------------------------------------------------------------- */
.lt-page{--paper:#FAFAF7;--tint:#ECF2EE;--line:#D8E0DC;--navy:#0A2540;--ink:#123048;
  --grn:#16A34A;--grn-deep:#12803B;--radius:12px;
  --font:"Satoshi","Avenir Next","Segoe UI",system-ui,sans-serif;
  --mono:"JetBrains Mono","SF Mono",ui-monospace,monospace;
  background:var(--paper);color:var(--ink);font-family:var(--font);line-height:1.55;
  -webkit-font-smoothing:antialiased}
.lt-page ::selection{background:#16a34a33}
.lt-container{max-width:1160px;margin:0 auto;padding:0 22px}

/* ---- Nav ---- */
.lt-nav{position:fixed;inset:0 0 auto;z-index:60;background:#fafaf7e6;
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.lt-nav-inner{display:flex;align-items:center;justify-content:space-between;gap:14px;height:64px}
.lt-brand{display:flex;align-items:center;gap:11px;min-width:0;text-decoration:none;color:var(--ink)}
.lt-brand img{height:36px;width:auto;border-radius:6px}
.lt-brand-name{display:block;font-size:.95rem;font-weight:700;letter-spacing:-.01em;color:var(--navy);white-space:nowrap}
.lt-brand-sub{display:block;font-family:var(--mono);font-size:.55rem;letter-spacing:.18em;text-transform:uppercase;color:#123048b3}
.lt-nav-links{display:flex;align-items:center;gap:26px;font-size:.92rem;font-weight:600}
.lt-nav-links a{color:#123048cc;text-decoration:none;transition:color .15s}
.lt-nav-links a:hover{color:var(--navy)}
.lt-nav-call{display:inline-flex;align-items:center;gap:8px;background:var(--grn);color:#fff;
  border-radius:10px;padding:10px 15px;font-size:.9rem;font-weight:700;text-decoration:none;
  transition:transform .15s,background .15s}
.lt-nav-call:hover{background:var(--grn-deep);transform:translateY(-1px)}
.lt-nav-call:active{transform:scale(.98)}
.lt-nav-call .lt-num{font-family:var(--mono);font-size:.82rem;font-weight:500}
@media (max-width:900px){.lt-nav-links{display:none}.lt-nav-call .lt-num{display:none}}

/* ---- Hero: the scroll-driven sunrise ---- */
.lt-hero-wrap{position:relative;height:200dvh;background:var(--paper)}
/* Phones: the full 200dvh scrub costs two thumb-scrolls of the same hero
   before any content — Clarity measured 31.5% average scroll depth. 150dvh
   keeps the sunrise (50dvh of travel) but gets the price receipt and cost
   widget on screen a full viewport sooner. */
@media (max-width:820px){.lt-hero-wrap{height:150dvh}}
.lt-hero{position:sticky;top:0;height:100dvh;overflow:hidden}
.lt-hero-img,.lt-hero-night,.lt-hero-sweep{position:absolute;inset:0}
.lt-hero-img{width:100%;height:100%;object-fit:cover;object-position:72% center}
.lt-hero-night{background-size:cover;background-position:72% center;opacity:1}
.lt-hero-sweep{opacity:0;mix-blend-mode:screen;
  background:linear-gradient(100deg,#ffc46e8c 0%,#ffdca040 38%,#fff0 65%)}
.lt-hero-scrimx{position:absolute;inset:0;
  background:linear-gradient(90deg,var(--paper) 0%,#fafaf7b3 42%,#fafaf700 78%)}
.lt-hero-scrimy{position:absolute;inset:auto 0 0;height:170px;
  background:linear-gradient(0deg,var(--paper),#fafaf700)}
.lt-hero-chip{position:absolute;right:20px;top:88px;z-index:5;pointer-events:none}
.lt-hero-chip span{position:absolute;right:0;top:0;white-space:nowrap;padding:7px 12px;
  font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:#fff;transition:opacity .35s}
.lt-chip-night{background:var(--navy);opacity:1}
.lt-chip-morn{background:var(--grn);opacity:0}
.lt-hero-copy{position:relative;z-index:4;display:flex;flex-direction:column;
  justify-content:flex-end;height:100dvh;padding-bottom:60px;padding-top:90px}
.lt-hero-copy h1{margin:0;font-size:clamp(2.6rem,6vw,4rem);font-weight:900;
  letter-spacing:-.035em;line-height:1.02;color:var(--navy);max-width:13ch}
.lt-hero-body{margin:16px 0 0;max-width:30rem;font-size:1.13rem;line-height:1.6;color:#123048cc}
.lt-spec{display:grid;grid-template-columns:repeat(3,auto);justify-content:start;
  margin-top:26px;max-width:30rem;border-top:1px solid #0a254033;border-bottom:1px solid #0a254033}
.lt-spec div{padding:11px 18px 11px 0}
.lt-spec div+div{border-left:1px solid #0a254033;padding-left:18px}
.lt-spec-k{font-family:var(--mono);font-size:.55rem;letter-spacing:.16em;text-transform:uppercase;color:#123048b3}
.lt-spec-v{font-family:var(--mono);font-size:.8rem;font-weight:600;color:var(--navy);margin-top:2px}
.lt-hero-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:16px 36px;margin-top:30px}

/* CTA garment: the phone number IS the button */
.lt-callnum{display:inline-block;text-decoration:none}
.lt-callnum b{display:block;font-family:var(--mono);font-weight:700;color:var(--grn);
  font-size:clamp(1.7rem,4vw,2.6rem);letter-spacing:0;
  transition:letter-spacing .25s,color .2s}
.lt-callnum:hover b{letter-spacing:.02em;color:var(--grn-deep)}
.lt-callnum:active{transform:scale(.99)}
.lt-callnum i{display:block;margin-top:3px;font-style:normal;font-family:var(--mono);
  font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:#123048b3}
.lt-callnum.lt-callnum-sm b{font-size:1.5rem}

/* CTA garment: the work-order stamp */
.lt-stamp{display:inline-block;background:var(--navy);color:#fff;padding:15px 26px;
  font-size:1rem;font-weight:700;text-decoration:none;border:none;cursor:pointer;
  font-family:var(--font);transition:transform .12s,box-shadow .15s}
.lt-stamp:hover{box-shadow:4px 4px 0 0 var(--grn)}
.lt-stamp:active{transform:scale(.97) skewX(-.5deg) translateY(1px);box-shadow:1px 1px 0 0 var(--grn)}
.lt-stamp.lt-stamp-grn{background:var(--grn)}

/* ---- Sections ---- */
.lt-section{padding:84px 0}
.lt-section.lt-tint{background:var(--tint)}
.lt-eyebrow{font-family:var(--mono);font-size:.66rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--grn);margin-bottom:12px}
.lt-h2{margin:0 0 14px;font-size:clamp(1.9rem,4.2vw,2.9rem);font-weight:900;
  letter-spacing:-.03em;line-height:1.05;color:var(--navy)}
.lt-sub{margin:0 0 38px;max-width:38rem;font-size:1.08rem;line-height:1.6;color:#123048bf}

/* ---- Work-order receipt band ---- */
.lt-receipt{position:relative;border-bottom:1px solid var(--line);overflow:hidden}
.lt-receipt-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
.lt-receipt-in{position:relative;max-width:760px;margin:0 auto;padding:72px 22px 80px}
.lt-receipt-rule{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;
  border-bottom:1px solid #0a254040;font-family:var(--mono);font-size:.62rem;
  letter-spacing:.16em;text-transform:uppercase;color:#123048b3}
.lt-zero{text-align:center;padding-top:34px}
.lt-zero b{font-family:var(--mono);font-weight:700;color:var(--navy);
  font-size:clamp(5rem,22vw,10rem);line-height:.95;letter-spacing:-.03em}
.lt-zero p{margin:8px auto 0;max-width:26rem;font-size:1.3rem;font-weight:700;color:var(--navy)}
.lt-receipt-items{max-width:560px;margin:44px auto 0;padding:0;list-style:none}
.lt-receipt-items li{display:flex;align-items:center;gap:18px;padding:17px 0;border-top:1px solid #0a254026}
.lt-receipt-items li:last-child{border-bottom:1px solid #0a254026}
.lt-ri-t{font-size:1.1rem;font-weight:700;color:var(--navy)}
.lt-ri-t.lt-grn{color:var(--grn)}
.lt-ri-s{font-size:.88rem;color:#123048b3}
.lt-receipt-foot{margin-top:36px;text-align:center;font-family:var(--mono);font-size:.62rem;
  letter-spacing:.16em;text-transform:uppercase;color:#123048b3}

/* ---- Cost answer widget ---- */
.lt-cost{max-width:640px;margin:44px auto 0;border-top:1px solid #0a254040;padding-top:30px}
.lt-cost-k{text-align:center;font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;
  text-transform:uppercase;color:#123048b3}
.lt-cost-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:14px}
.lt-chip-btn{border:1px solid #0a254040;background:#ffffff99;color:var(--navy);
  border-radius:999px;padding:8px 15px;font-family:var(--font);font-size:.88rem;
  font-weight:700;cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.lt-chip-btn:hover{border-color:var(--grn)}
.lt-chip-btn[aria-pressed="true"]{background:var(--grn);border-color:var(--grn);color:#fff}
.lt-cost-card{margin-top:18px;border:1px solid #0a254026;border-radius:var(--radius);
  background:#ffffffb3;padding:22px;text-align:center}
.lt-cost-card p{margin:0;font-size:.98rem;line-height:1.6;color:#123048d9}
.lt-cost-ctas{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:12px 26px;margin-top:18px}
.lt-textlink{font-family:var(--mono);font-size:.9rem;font-weight:700;color:var(--grn);
  text-decoration:underline;text-underline-offset:4px}

/* ---- Services asymmetric grid ---- */
.lt-svc-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:24px;margin-top:44px}
.lt-svc{grid-column:span 5;text-decoration:none;color:inherit;display:block}
.lt-svc.lt-wide{grid-column:span 7}
.lt-svc-frame{position:relative;overflow:hidden;border-radius:var(--radius);border:1px solid var(--line)}
.lt-svc-frame img{display:block;width:100%;height:224px;object-fit:cover;
  transition:transform .5s cubic-bezier(.22,1,.36,1)}
.lt-svc.lt-wide .lt-svc-frame img{height:272px}
.lt-svc:hover .lt-svc-frame img{transform:scale(1.03)}
.lt-svc-tag{position:absolute;left:14px;top:14px;background:var(--grn);color:#fff;
  padding:4px 11px;font-family:var(--mono);font-size:.6rem;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase}
.lt-svc-body{display:flex;gap:12px;align-items:baseline;padding-top:14px}
.lt-svc-idx{font-family:var(--mono);font-size:.72rem;font-weight:600;color:var(--grn)}
.lt-svc-body h3{margin:0;font-size:1.22rem;font-weight:700;letter-spacing:-.01em;color:var(--navy)}
.lt-svc-body p{margin:4px 0 0;max-width:26rem;font-size:.92rem;line-height:1.55;color:#123048b3}
.lt-svc-more{display:inline-block;margin-top:8px;font-size:.85rem;font-weight:700;color:var(--grn)}
.lt-svc:hover .lt-svc-more{text-decoration:underline;text-underline-offset:3px}
@media (max-width:820px){.lt-svc,.lt-svc.lt-wide{grid-column:span 12}.lt-svc-frame img,.lt-svc.lt-wide .lt-svc-frame img{height:210px}}

/* ---- Process rail ---- */
.lt-steps{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:44px}
.lt-steps::before{content:"";position:absolute;left:0;right:0;top:40px;height:1px;background:#0a254033}
.lt-step{position:relative;background:var(--paper);border:1px solid #0a25401a;
  border-radius:var(--radius);padding:26px}
.lt-step-top{display:flex;justify-content:space-between;align-items:center}
.lt-step-n{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;
  border:2px solid var(--grn);border-radius:50%;font-family:var(--mono);font-size:.85rem;
  font-weight:700;color:var(--grn)}
.lt-step h3{margin:18px 0 0;font-size:1.22rem;font-weight:700;letter-spacing:-.01em;color:var(--navy)}
.lt-step p{margin:8px 0 0;font-size:.92rem;line-height:1.55;color:#123048b3}
@media (max-width:820px){.lt-steps{grid-template-columns:1fr}.lt-steps::before{display:none}}

/* ---- Reviews split ---- */
.lt-rev{display:grid;grid-template-columns:1fr 1fr;gap:44px}
.lt-rev-big{border-left:2px solid var(--grn);padding-left:24px;margin-top:30px}
.lt-rev-big p{margin:0;font-size:clamp(1.35rem,2.6vw,1.8rem);font-weight:700;
  letter-spacing:-.015em;line-height:1.35;color:var(--navy)}
.lt-rev-who{margin-top:14px;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;
  text-transform:uppercase;color:#123048b3}
.lt-rev-who b{color:var(--grn)}
.lt-rev-cards{display:flex;flex-direction:column;justify-content:center;gap:18px}
.lt-rev-card{background:var(--tint);border-radius:var(--radius);padding:22px}
.lt-rev-card p{margin:0;font-size:.94rem;line-height:1.6;color:#123048d9}
.lt-rev-card footer{margin-top:10px;font-family:var(--mono);font-size:.64rem;
  letter-spacing:.14em;text-transform:uppercase;color:#123048b3}
.lt-rev-card footer b{color:var(--navy)}
.lt-review-link{display:inline-block;align-self:flex-start;margin-top:4px;color:var(--navy);
  font-weight:700;text-decoration:none;border-bottom:2px solid var(--grn);padding-bottom:3px}
.lt-review-link .lt-arrow{display:inline-block;color:var(--grn);transition:transform .25s}
.lt-review-link:hover .lt-arrow{transform:translateX(6px)}
@media (max-width:820px){.lt-rev{grid-template-columns:1fr}}

/* ---- Meet Edward ---- */
.lt-meet{display:grid;grid-template-columns:360px 1fr;gap:40px;align-items:center}
.lt-meet-photo{overflow:hidden;border-radius:var(--radius);border:1px solid #0a25401a}
.lt-meet-photo img{display:block;width:100%;height:100%;object-fit:cover}
.lt-meet-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:16px 32px;margin-top:26px}
@media (max-width:820px){.lt-meet{grid-template-columns:1fr}.lt-meet-photo img{max-height:420px}}

/* ---- FAQ ---- */
.lt-faq-grid{display:grid;grid-template-columns:230px 1fr;gap:40px}
.lt-faq-rail .lt-rule{width:40px;height:2px;background:var(--grn);margin:16px 0}
.lt-faq-rail p{font-size:.92rem;color:#123048b3}
.lt-faq{border-bottom:1px solid #0a254026}
.lt-faq summary{display:flex;align-items:baseline;gap:16px;padding:19px 0;cursor:pointer;list-style:none}
.lt-faq summary::-webkit-details-marker{display:none}
.lt-faq-idx{font-family:var(--mono);font-size:.72rem;font-weight:600;color:var(--grn)}
.lt-faq-q{flex:1;font-size:1.08rem;font-weight:700;letter-spacing:-.01em;color:var(--navy)}
.lt-faq-plus{font-family:var(--mono);font-size:1.15rem;color:var(--grn);transition:transform .2s}
.lt-faq[open] .lt-faq-plus{transform:rotate(45deg)}
.lt-faq-a{padding:0 30px 22px 34px;font-size:.95rem;line-height:1.65;color:#123048bf}
@media (max-width:820px){.lt-faq-grid{grid-template-columns:1fr}}

/* ---- Book ---- */
.lt-book{display:grid;grid-template-columns:1fr 1fr;gap:44px}
.lt-locs{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:34px}
.lt-loc{border:1px solid var(--line);border-radius:var(--radius);padding:19px}
.lt-loc h3{margin:0;font-size:1.1rem;font-weight:700;color:var(--navy)}
.lt-loc-r{font-family:var(--mono);font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:#123048b3}
.lt-loc p{margin:10px 0 0;font-size:.88rem;color:#123048bf}
.lt-loc-links{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;align-items:center}
.lt-loc-links .lt-tel{font-family:var(--mono);font-size:.88rem;font-weight:700;color:var(--grn);text-decoration:none}
.lt-dir{font-family:var(--mono);font-size:.72rem;color:#123048a6;text-decoration:none;
  border-bottom:1px solid #0a25404d;transition:color .15s,border-color .15s}
.lt-dir:hover{color:var(--navy);border-color:var(--grn)}
.lt-form-frame{position:relative;border:2px solid var(--navy);border-radius:var(--radius);
  background:var(--paper);padding:30px}
.lt-form-frame>.lt-frame-tag{position:absolute;top:-9px;left:22px;background:var(--paper);
  padding:0 8px;font-family:var(--mono);font-size:.6rem;letter-spacing:.16em;
  text-transform:uppercase;color:#123048b3}
.lt-form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.lt-field{margin-bottom:16px}
.lt-field label{display:block;margin-bottom:7px;font-family:var(--mono);font-size:.6rem;
  letter-spacing:.16em;text-transform:uppercase;color:#123048b3}
.lt-field input,.lt-field select,.lt-field textarea{width:100%;border:1px solid var(--line);
  border-radius:10px;background:#fff;color:var(--navy);font-family:var(--font);
  font-size:1rem;padding:12px 14px;transition:border-color .15s;box-sizing:border-box}
.lt-field input:focus,.lt-field select:focus,.lt-field textarea:focus{border-color:var(--grn);outline:none}
.lt-more{border:1px solid var(--line);border-radius:10px;margin-bottom:16px;background:#ffffff80}
.lt-more summary{display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:12px 14px;cursor:pointer;list-style:none;font-family:var(--mono);font-size:.62rem;
  letter-spacing:.14em;text-transform:uppercase;color:#123048b3}
.lt-more summary::-webkit-details-marker{display:none}
.lt-more summary:after{content:"+";color:var(--grn);font-size:1.05rem}
.lt-more[open] summary:after{content:"\00d7"}
.lt-more-in{padding:2px 14px 4px}
.lt-when{margin:4px 0 18px}
.lt-when-chips{display:flex;flex-wrap:wrap;gap:8px}
.lt-when-note{margin:11px 0 0;font-size:.9rem;font-weight:700;color:var(--navy)}
.lt-when-note a{color:var(--grn)}
.lt-chip-btn.lt-chip-navy[aria-pressed="true"]{background:var(--navy);border-color:var(--navy)}
.lt-submit{width:100%;margin-top:8px;padding:16px;font-size:1.08rem}
.lt-form-status{display:none;border-radius:10px;margin-top:14px;padding:13px 15px;font-size:.92rem}
.lt-form-status.ok{background:#16a34a1f;border:1px solid #16a34a80}
.lt-form-status.err{background:#dc503c17;border:1px solid #dc503c66}
.lt-form-status p{margin:0}
.lt-form-status a{color:var(--grn);font-weight:700}
.lt-form-note{margin-top:12px;text-align:center;font-size:.78rem;color:#123048b3}
.lt-form-note a{color:var(--grn)}
@media (max-width:900px){.lt-book{grid-template-columns:1fr}}
@media (max-width:560px){.lt-form-row,.lt-locs{grid-template-columns:1fr}}

/* ---- Footer ---- */
.lt-footer{background:var(--navy);color:#ffffffcc;padding:56px 0 26px}
.lt-footer-cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:34px;
  padding-bottom:32px;margin-bottom:26px;border-bottom:1px solid #ffffff26}
/* Grid items default to min-content width, so without this the four columns
   refuse to shrink and push the whole page into a horizontal scroll. */
.lt-fcol{min-width:0}
@media (max-width:820px){
  .lt-footer-cols{grid-template-columns:1fr 1fr;gap:30px 26px}
  .lt-fcol:first-child{grid-column:1/-1}
}
@media (max-width:420px){
  .lt-footer-cols{grid-template-columns:1fr}
  .lt-fcol:first-child{grid-column:auto}
}
.lt-fcol h3{margin:0 0 13px;font-family:var(--mono);font-size:.62rem;font-weight:500;
  letter-spacing:.16em;text-transform:uppercase;color:#fff}
.lt-fcol ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.lt-fcol a{color:#ffffffb3;font-size:.9rem;text-decoration:none;transition:color .15s}
.lt-fcol a:hover{color:#fff}
.lt-fcol p{margin:0 0 10px;max-width:34ch;font-size:.9rem;line-height:1.6;color:#ffffffb3}
.lt-fphone{display:inline-block;margin-bottom:4px;font-family:var(--mono);font-size:.92rem;
  font-weight:700;color:#4ade80 !important}
.lt-footer-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;
  gap:14px;font-family:var(--mono);font-size:.68rem;color:#ffffff80}
.lt-footer-row a{color:#ffffffa6;text-decoration:none;border-bottom:1px solid #ffffff4d;
  padding-bottom:1px;letter-spacing:.12em;text-transform:uppercase;transition:color .15s,border-color .15s}
.lt-footer-row a:hover{color:#fff;border-color:var(--grn)}

/* ---- Mobile call/text bar ---- */
.lt-callbar{display:none;position:fixed;inset:auto 0 0;z-index:70;
  padding-bottom:env(safe-area-inset-bottom)}
.lt-callbar a{flex:1;display:flex;align-items:center;justify-content:center;gap:9px;
  padding:15px 10px;font-size:1rem;font-weight:700;color:#fff;text-decoration:none}
.lt-callbar .lt-cb-call{background:var(--grn-deep)}
.lt-callbar .lt-cb-text{background:var(--navy);border-left:1px solid #ffffff40}
@media (max-width:900px){.lt-callbar{display:flex}.lt-page{padding-bottom:56px}}

/* ---- Subpage building blocks ---- */
.lt-subhero{position:relative;overflow:hidden;background:var(--tint);padding:140px 0 60px}
.lt-subhero::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(680px 400px at 85% -10%,#16a34a24 0%,transparent 62%)}
.lt-subhero .lt-container{position:relative}
.lt-subhero h1{margin:0 0 14px;font-size:clamp(2.1rem,5vw,3.3rem);font-weight:900;
  letter-spacing:-.033em;line-height:1.05;color:var(--navy);max-width:22ch}
.lt-subhero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:44px;align-items:center}
.lt-subhero-media{overflow:hidden;border-radius:var(--radius);border:1px solid var(--line)}
.lt-subhero-media img{display:block;width:100%;height:300px;object-fit:cover}
@media (max-width:900px){.lt-subhero{padding:120px 0 50px}
  .lt-subhero-grid{grid-template-columns:1fr;gap:26px}.lt-subhero-media img{height:210px}}
.lt-crumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 16px;padding:0;
  list-style:none;font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;
  text-transform:uppercase;color:#123048b3}
.lt-crumbs a{color:#123048b3;text-decoration:none;transition:color .15s}
.lt-crumbs a:hover{color:var(--grn)}
.lt-crumbs li:not(:last-child)::after{content:"/";margin-left:8px;color:#0a254040}
.lt-crumbs li:last-child{color:var(--grn)}
.lt-checks{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 30px;max-width:840px}
.lt-checks li{position:relative;padding:14px 16px 14px 42px;font-size:.96rem;color:var(--navy);
  border:1px solid var(--line);border-radius:10px;background:#ffffff8c}
.lt-checks li::before{content:"";position:absolute;left:15px;top:50%;width:15px;height:15px;
  transform:translateY(-50%);border-radius:50%;background:var(--grn)}
.lt-checks li::after{content:"";position:absolute;left:19px;top:calc(50% - 2px);width:7px;height:4px;
  border-left:2px solid #fff;border-bottom:2px solid #fff;transform:translateY(-50%) rotate(-45deg)}
.lt-checks a{color:var(--grn);text-decoration:none;font-weight:700}
.lt-checks a:hover{text-decoration:underline}
@media (max-width:640px){.lt-checks{grid-template-columns:1fr}}
.lt-chips{display:flex;flex-wrap:wrap;gap:10px;padding:0;margin:0;list-style:none}
.lt-chips a{display:inline-flex;align-items:center;gap:8px;padding:8px 15px;
  border:1px solid var(--line);border-radius:999px;background:#ffffff8c;color:var(--navy);
  font-size:.88rem;font-weight:700;text-decoration:none;
  transition:border-color .15s,background .15s,transform .15s}
.lt-chips a::before{content:"";width:6px;height:6px;border-radius:2px;background:var(--grn)}
.lt-chips a:hover{border-color:var(--grn);background:#16a34a14;transform:translateY(-1px)}
.lt-chips a:active{transform:scale(.98)}
.lt-chips a[aria-current="page"]{border-color:var(--grn);background:#16a34a1f}
.lt-cta-band{background:var(--tint);border-top:1px solid var(--line);padding:64px 0}
.lt-cta-band .lt-h2{margin-bottom:8px}
.lt-cta-band .lt-sub{margin-bottom:24px}
.lt-quote-one{border-left:2px solid var(--grn);padding-left:24px;max-width:640px}
.lt-quote-one p{margin:0;font-size:clamp(1.2rem,2.2vw,1.5rem);font-weight:700;
  letter-spacing:-.015em;line-height:1.4;color:var(--navy)}

/* ---- Motion hygiene ---- */
/* transform-only: an element that fades in from opacity 0 is not an LCP
   candidate until it is visible, which pushed the hero text's paint ~2s late. */
@keyframes lt-rise{from{transform:translateY(14px)}to{transform:translateY(0)}}
.lt-rise{animation:lt-rise .7s cubic-bezier(.22,1,.36,1) backwards}
.lt-rise-2{animation-delay:.08s}
.lt-rise-3{animation-delay:.16s}
@media (prefers-reduced-motion:reduce){
  .lt-page *,.lt-page *::before,.lt-page *::after{animation:none !important;transition:none !important}
}

/* ---- Offers strip (subpages) ---- */
.lt-offers{background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0}
.lt-offers-row{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 34px}
.lt-offer{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);
  font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--navy)}
.lt-offer::before{content:"";width:7px;height:7px;border-radius:2px;background:var(--grn)}

/* ---- Accessibility: skip link + visible focus ---- */
.lt-skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--navy);
  color:#fff;padding:10px 18px;font-weight:700;text-decoration:none}
.lt-skip:focus{left:10px;top:10px}
.lt-page a:focus-visible,.lt-page button:focus-visible,.lt-page input:focus-visible,
.lt-page select:focus-visible,.lt-page textarea:focus-visible,.lt-page summary:focus-visible{
  outline:2px solid var(--grn);outline-offset:2px}

/* ---- Map embed ---- */
.lt-map{display:block;width:100%;height:260px;border:1px solid var(--line);
  border-radius:var(--radius);margin-top:14px}

/* ---- Data table (AI-extractable comparisons) ---- */
.lt-table{width:100%;max-width:680px;border-collapse:collapse;margin-top:26px;
  background:#ffffff8c;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.lt-table th{font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;
  text-transform:uppercase;color:#123048b3;text-align:left;padding:12px 16px;
  border-bottom:1px solid #0a254033;background:var(--tint)}
.lt-table td{padding:13px 16px;font-size:.95rem;color:var(--navy);
  border-bottom:1px solid #0a254014}
.lt-table tr:last-child td{border-bottom:none}
.lt-table td b{color:var(--grn)}
.lt-table-note{margin-top:10px;font-size:.82rem;color:#123048b3;max-width:60ch}

/* ===== merged from spark.css (was a second render-blocking request) ===== */
/* ---------------------------------------------------------------------------
   spark.css — the attention + reward layer.

   Everything here animates ONLY transform and opacity, so it runs on the
   compositor thread and costs nothing in Total Blocking Time. Scroll-linked
   effects prefer the native `animation-timeline` (off the main thread
   entirely) and fall back to an IntersectionObserver in spark.js.

   Design rule taken from the research: the ground stays neutral paper, and
   saturation is spent only on things you can act on — the call button, the
   book button, a field that just went valid. Motion marks a state CHANGE;
   nothing loops forever except the one "we are open" pulse, which is a fact.

   Every block ends at `prefers-reduced-motion: reduce`, where the layer
   degrades to the final state with no movement at all.
--------------------------------------------------------------------------- */

/* <picture> must not become a layout box, or percentage heights on the inner
   <img> (.lt-hero-img, .lt-meet-photo img) resolve against it and collapse. */
picture { display: contents; }

.lt-page {
  --spring: cubic-bezier(.34,1.56,.64,1);   /* overshoot, for rewards   */
  --ease:   cubic-bezier(.22,.61,.36,1);    /* calm, for state changes  */
  --grn-hot:#12C254;                        /* the saturated accent     */
  --shadow-1:0 1px 2px #0a254012, 0 4px 10px #0a25400d;
  --shadow-2:0 2px 6px #0a254014, 0 14px 32px -6px #0a254021, 0 0 0 1px #0a25400a;
  --shadow-grn:0 6px 18px -4px #16a34a4d, 0 2px 6px #16a34a26;
}

/* ---- 1. Scroll progress: orientation, and a bar that visibly fills ------- */
.sp-progress{position:fixed;inset:0 0 auto;height:3px;z-index:80;
  background:var(--grn);transform:scaleX(0);transform-origin:0 50%;
  will-change:transform;pointer-events:none}
@supports (animation-timeline: scroll()) {
  .sp-progress{animation:sp-fill linear both;animation-timeline:scroll(root block)}
  @keyframes sp-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
}

/* ---- 2. Reveal on scroll ------------------------------------------------- */
/* Base state is the FINISHED state on purpose: if the script never runs and
   the browser has no view() timeline, the content is still visible. */
.sp-reveal{opacity:1;transform:none}
@supports (animation-timeline: view()) {
  .sp-reveal{animation:sp-rise .7s var(--ease) both;
    animation-timeline:view();animation-range:entry 0% cover 26%}
}
@supports not (animation-timeline: view()) {
  .sp-js .sp-reveal{opacity:0;transform:translate3d(0,22px,0);
    transition:opacity .7s var(--ease),transform .7s var(--ease)}
  .sp-js .sp-reveal.sp-in{opacity:1;transform:none}
}
@keyframes sp-rise{from{opacity:0;transform:translate3d(0,26px,0)}
                   to{opacity:1;transform:none}}
/* stagger children of a group */
.sp-stagger > *:nth-child(1){--sp-d:0ms}
.sp-stagger > *:nth-child(2){--sp-d:70ms}
.sp-stagger > *:nth-child(3){--sp-d:140ms}
.sp-stagger > *:nth-child(4){--sp-d:210ms}
.sp-stagger > *:nth-child(5){--sp-d:280ms}
.sp-stagger > *:nth-child(6){--sp-d:350ms}
.sp-js .sp-stagger > .sp-reveal{transition-delay:var(--sp-d,0ms)}

/* ---- 3. Press physics + ripple on primary actions ------------------------ */
.lt-stamp,.lt-nav-call,.lt-callnum,.lt-cb-call,.lt-cb-text,.lt-chip-btn{
  position:relative;overflow:hidden;
  transition:transform .18s var(--spring),box-shadow .18s var(--ease),
             background-color .18s var(--ease)}
.lt-stamp:active,.lt-nav-call:active,.lt-cb-call:active,.lt-cb-text:active,
.lt-chip-btn:active{transform:scale(.965)}
.lt-stamp:hover{box-shadow:var(--shadow-grn)}

.sp-ripple{position:absolute;border-radius:50%;pointer-events:none;
  background:currentColor;transform:scale(0);opacity:.22;
  animation:sp-rip .55s var(--ease) forwards}
@keyframes sp-rip{to{transform:scale(2.6);opacity:0}}

/* the two hero CTAs lean toward the cursor — desktop pointers only */
@media (pointer:fine){
  .sp-magnet{transition:transform .28s var(--spring)}
}

/* ---- 4. Cards that lift ------------------------------------------------- */
.lt-svc{transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.lt-svc:hover{transform:translate3d(0,-5px,0);box-shadow:var(--shadow-2)}
.lt-svc .lt-svc-more{transition:transform .28s var(--spring)}
.lt-svc:hover .lt-svc-more{transform:translate3d(5px,0,0)}
/* Review cards and process steps are NOT links. Giving them the same lift as
   the clickable service cards made people tap them expecting something to
   happen — Clarity measured dead clicks in 25% of sessions. Lift removed:
   only elements that actually go somewhere get the button affordance. */

/* ---- 5. Numbers that count up ------------------------------------------- */
/* Tabular figures so the width cannot jitter while the digits run. */
.sp-count{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

/* ---- 6. "Open now" — a fact, so it is allowed to keep moving ------------- */
.lt-page .sp-live{display:inline-flex;align-items:center;gap:7px}
.sp-dot{position:relative;flex:none;width:8px;height:8px;border-radius:50%;
  background:var(--grn-hot)}
.sp-dot::after{content:"";position:absolute;inset:0;border-radius:50%;
  background:var(--grn-hot);animation:sp-pulse 2.4s var(--ease) infinite}
@keyframes sp-pulse{0%{transform:scale(1);opacity:.6}
                    70%,100%{transform:scale(2.8);opacity:0}}

/* ---- 7. Form: per-field feedback, progress, loading, success ------------- */
.lt-field{position:relative}
.lt-field input,.lt-field select,.lt-field textarea{
  transition:border-color .18s var(--ease),box-shadow .18s var(--ease),
             background-color .18s var(--ease)}
.lt-field input:focus,.lt-field select:focus,.lt-field textarea:focus{
  box-shadow:0 0 0 3px #16a34a2e}

.sp-tick{position:absolute;right:12px;bottom:13px;width:19px;height:19px;
  border-radius:50%;background:var(--grn);display:grid;place-items:center;
  transform:scale(0) rotate(-25deg);opacity:0;pointer-events:none;
  transition:transform .34s var(--spring),opacity .2s var(--ease)}
.sp-tick svg{width:11px;height:11px;stroke:#fff;stroke-width:3.2;fill:none;
  stroke-linecap:round;stroke-linejoin:round}
.lt-field.sp-ok .sp-tick{transform:scale(1) rotate(0);opacity:1}
.lt-field.sp-ok input,.lt-field.sp-ok select{border-color:#16a34a80}
/* selects carry their own chevron on the right — shift the tick clear of it */
.lt-field.sp-sel .sp-tick{right:38px}

.lt-field.sp-bad input,.lt-field.sp-bad select{
  border-color:#C8382E;background:#c8382e08}
.sp-err{display:block;margin-top:6px;font-size:.78rem;font-weight:600;
  color:#B5312899;color:#A62B22;min-height:0;opacity:0;transform:translateY(-3px);
  transition:opacity .2s var(--ease),transform .2s var(--ease)}
.lt-field.sp-bad .sp-err{opacity:1;transform:none}
.sp-shake{animation:sp-shake .4s var(--ease)}
@keyframes sp-shake{10%,90%{transform:translateX(-2px)}
                    30%,70%{transform:translateX(4px)}
                    50%{transform:translateX(-4px)}}

/* progress toward a finished booking — the goal-gradient pull */
.sp-formbar{margin:22px 0 12px}
.sp-formbar-top{display:flex;justify-content:space-between;align-items:baseline;
  font-family:var(--mono);font-size:.68rem;letter-spacing:.13em;
  text-transform:uppercase;color:#123048a6;margin-bottom:7px}
.sp-formbar-n{color:var(--grn-deep);font-weight:700}
.sp-formbar-track{height:6px;border-radius:99px;background:#0a254021;overflow:hidden;
  box-shadow:inset 0 1px 2px #0a254014}
.sp-formbar-fill{height:100%;border-radius:99px;background:var(--grn);
  transform:scaleX(0);transform-origin:0 50%;
  transition:transform .5s var(--spring)}
.sp-formbar.sp-full .sp-formbar-fill{background:var(--grn-hot)}

/* submit: idle -> working -> done */
.lt-submit{display:inline-flex;align-items:center;justify-content:center;gap:9px}
.lt-submit[disabled]{cursor:progress}
.lt-submit .sp-spin{display:none;width:15px;height:15px;flex:none;
  border:2.2px solid #ffffff59;border-top-color:#fff;border-radius:50%}
.lt-submit.sp-working .sp-spin{display:block;animation:sp-spin .7s linear infinite}
@keyframes sp-spin{to{transform:rotate(360deg)}}

/* ---- 8. Map: a facade, so an iframe never touches first paint ----------- */
.sp-map{position:relative;margin-top:22px;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;background:var(--tint)}
.sp-map-btn{display:block;width:100%;padding:0;border:0;background:none;
  cursor:pointer;text-align:left;font:inherit;color:inherit}
.sp-map-still{display:block;width:100%;height:230px;object-fit:cover;
  background:
    linear-gradient(#ecf2ee00,#ecf2ee00),
    repeating-linear-gradient(0deg,#0a254010 0 1px,#0000 1px 34px),
    repeating-linear-gradient(90deg,#0a254010 0 1px,#0000 1px 34px),
    linear-gradient(135deg,#e7efe9,#dfe9e3);
  display:grid;place-items:center}
.sp-map-pin{display:inline-flex;align-items:center;gap:9px;padding:11px 17px;
  border-radius:99px;background:#fff;box-shadow:var(--shadow-2);
  font-weight:700;font-size:.92rem;color:var(--navy);
  transition:transform .26s var(--spring)}
.sp-map-btn:hover .sp-map-pin{transform:translate3d(0,-3px,0) scale(1.03)}
.sp-map-pin i{width:9px;height:9px;border-radius:50%;background:var(--grn);
  box-shadow:0 0 0 4px #16a34a2e;font-style:normal}
.sp-map iframe{display:block;width:100%;height:230px;border:0}
.sp-map-note{padding:10px 14px;font-family:var(--mono);font-size:.66rem;
  letter-spacing:.12em;text-transform:uppercase;color:#123048a6;
  border-top:1px solid var(--line);background:#fff}

/* ---- 9. Depth: one grain pass so flat fills stop reading as flat -------- */
.sp-grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.028;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---- 10. Focus that is always visible ---------------------------------- */
.lt-page a:focus-visible,.lt-page button:focus-visible,
.lt-page input:focus-visible,.lt-page select:focus-visible,
.lt-page textarea:focus-visible,.lt-page summary:focus-visible{
  outline:3px solid var(--grn-deep);outline-offset:2px;border-radius:4px}
.lt-page :focus:not(:focus-visible){outline:none}

/* ---- 11. Sticky call bar arrives once the hero is behind you ------------ */
@media (max-width:900px){
  .lt-callbar{transform:translate3d(0,110%,0);
    transition:transform .4s var(--spring)}
  .sp-js .lt-callbar.sp-show{transform:none}
  .sp-js body:not(.sp-ready) .lt-callbar{transform:none}
}

/* ---- 12. Reduced motion: keep the feedback, drop the movement ----------- */
@media (prefers-reduced-motion: reduce){
  .sp-progress{display:none}
  .sp-reveal,.sp-js .sp-reveal{opacity:1!important;transform:none!important;
    animation:none!important;transition:none!important}
  .sp-dot::after{animation:none;opacity:0}
  .lt-svc:hover{transform:none}
  .sp-ripple{display:none}
  .sp-shake{animation:none}
  .lt-callbar{transform:none!important}
  .sp-tick{transition:opacity .15s linear}
  .lt-field.sp-ok .sp-tick{transform:scale(1)}
  .sp-formbar-fill{transition:transform .2s linear}
  *,*::before,*::after{animation-duration:.01ms!important;
    animation-iteration-count:1!important;scroll-behavior:auto!important}
}

/* ---- 13. Receipt paper texture (was a decorative <img> with empty alt) --- */
.lt-receipt::before{content:"";position:absolute;inset:0;opacity:.5;
  background-image:url("brand/plate-paper.jpg");
  background-image:-webkit-image-set(url("brand/plate-paper.webp") type("image/webp"),
                                     url("brand/plate-paper.jpg")  type("image/jpeg"));
  background-image:image-set(url("brand/plate-paper.webp") type("image/webp"),
                             url("brand/plate-paper.jpg")  type("image/jpeg"));
  background-size:cover;background-position:center;pointer-events:none}

/* ---- 14. The terminal action carries the accent ------------------------- */
.lt-page .lt-submit{width:100%;background:var(--grn);border-color:var(--grn);color:#fff}
.lt-page .lt-submit:hover{background:var(--grn-deep);border-color:var(--grn-deep)}
.lt-page .lt-submit[disabled]{background:var(--grn-deep);opacity:.85}

/* ---- 15. Thumb-sized hit areas -----------------------------------------
   WCAG 2.2 SC 2.5.8 wants 24x24 CSS px minimum; the mobile guidance for a
   service business is closer to 44. These links were 13-22px tall, which is
   a real problem for the actual use case: someone tapping a phone number
   one-handed while their furnace is out. Padding is added rather than
   font-size, so the visual rhythm of the page is unchanged. */
.lt-page .lt-nav-links a{padding:11px 4px}
.lt-page .lt-fcol ul{gap:2px}
.lt-page .lt-fcol a{display:inline-block;padding:6px 0;min-height:24px}
.lt-page .lt-fphone{padding:6px 0;min-height:32px}
.lt-page .lt-fcol > a[href^="mailto:"]{display:inline-block;padding:6px 0}
.lt-page .lt-footer-row a{display:inline-block;padding:7px 0}
.lt-page .lt-loc-links{gap:6px 18px}
.lt-page .lt-loc-links a{display:inline-flex;align-items:center;min-height:44px;padding:4px 0}
.lt-page .lt-textlink{display:inline-flex;align-items:center;min-height:44px;padding:0 4px}
.lt-page .lt-gbadge{padding:8px 0;min-height:36px;display:inline-flex!important;align-items:center}
.lt-page .lt-review-link{display:inline-flex;align-items:center;min-height:44px}
.lt-page .lt-chips a{display:inline-flex;align-items:center;min-height:36px}
.lt-page .lt-svc-more{display:inline-block;padding:4px 0}
.lt-page .lt-faq summary{min-height:44px}
.lt-page .lt-form-note a,.lt-page .lt-when-note a{display:inline-block;padding:3px 0}
.lt-page .lt-crumbs a{display:inline-block;padding:6px 2px}

/* ---- 16. Contrast: the brand green needed one step down ----------------
   #16A34A measures 3.15:1 as text on the paper ground and 3.26:1 behind
   white button text. Both miss WCAG AA (4.5:1 for anything under 18.66px
   bold). #12803B — already in the palette as --grn-deep — reads as the same
   brand green and measures 4.81:1 and 5.03:1 respectively.

   Large display text is left alone on purpose: the 42px hero phone number
   only needs 3:1 and already clears it, and it is the loudest green on the
   page. This is a legibility fix, not a repaint. */
.lt-page .lt-nav-call{background:var(--grn-deep)}
.lt-page .lt-nav-call:hover{background:#0E6B31}
.lt-page .lt-svc-tag{background:var(--grn-deep)}
.lt-page .lt-svc-more{color:var(--grn-deep)}
.lt-page .lt-ri-t.lt-grn{color:var(--grn-deep)}
.lt-page .lt-textlink{color:var(--grn-deep)}
.lt-page .lt-loc-links .lt-tel{color:var(--grn-deep)}
.lt-page .lt-chip-btn[aria-pressed="true"]{background:var(--grn-deep);border-color:var(--grn-deep)}
.lt-page .lt-review-link .lt-arrow{color:var(--grn-deep)}
.lt-page .lt-callnum.lt-callnum-sm b{color:var(--grn-deep)}
.lt-page .lt-callnum.lt-callnum-sm:hover b{color:#0E6B31}
.lt-page .lt-gbadge span{color:var(--grn-deep)!important}
.lt-page .lt-submit{background:var(--grn-deep);border-color:var(--grn-deep)}
.lt-page .lt-submit:hover{background:#0E6B31;border-color:#0E6B31}
.lt-page .lt-submit[disabled]{background:#0E6B31}
.lt-page .lt-stamp-grn{background:var(--grn-deep)}
.lt-page .lt-stamp-grn:hover{background:#0E6B31}
.lt-page .lt-form-note a,.lt-page .lt-when-note a,
.lt-page a[style*="color:var(--grn)"]{color:var(--grn-deep)!important}
.lt-page .lt-fphone{color:#6EE7A0!important}   /* on navy: 8.1:1 */

/* ---- 17. Contrast, second pass ----------------------------------------
   Measured, not guessed. Two grounds are in play — paper #FAFAF7 and the
   tinted band #ECF2EE — and #12803B cleared the first (4.81:1) but landed
   at 4.43:1 on the second, just under AA. #0E6B31 clears both with room:
   6.42:1 on paper, 5.92:1 on tint, 6.71:1 behind white button text. So the
   green-text token moves once more and every green that reads at body size
   points at it. The 42px hero number is included this time: it measured
   2.90:1 against the tinted band and large text still needs 3:1. */
.lt-page{--grn-deep:#0E6B31}
.lt-page .lt-eyebrow{color:var(--grn-deep)}
.lt-page .lt-callnum b{color:var(--grn-deep)}
.lt-page .lt-callnum:hover b{color:#0B5527}
.lt-page .lt-rev-who b,.lt-page .lt-rev-card footer b{color:var(--grn-deep)}
.lt-page .lt-crumbs li{color:var(--grn-deep)}
.lt-page main p a:not([class]),.lt-page .lt-faq-a a:not([class]),
.lt-page .lt-check a:not([class]){color:var(--grn-deep)}
/* 65% navy measured 4.31:1 on the tinted band; 80% lands at 6.2:1 */
.lt-page .lt-dir{color:#123048cc}
.lt-page .sp-formbar-top{color:#123048cc}

/* about.html stat captions were 56.5% navy on paper = 3.50:1 */
.lt-page .ab-stat span{color:#123048cc}
.lt-page .lt-checks a,.lt-page .lt-checks b{color:var(--grn-deep)}
.lt-page .lt-table b{color:var(--grn-deep)}
