:root{--paper:#f4f2ec;--ink:#13261f;--pine:#163a2c;--muted:#5d6a63;--line:#dfddd4;--accent:#2f7d57;--sage:#cfe3c1;--cool:#5b9bb5;--warm:#d9774b}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{font:400 17px/1.65 Manrope,system-ui,sans-serif;color:var(--ink);background:var(--paper);overflow-x:hidden}
img{display:block;max-width:100%;height:auto}a{color:inherit}
h1,h2{font-family:"Instrument Serif",Georgia,serif;font-weight:400;letter-spacing:-.01em;line-height:1.05}
h1{font-size:clamp(44px,5.6vw,78px)}h1 i{color:var(--sage)}
h2{font-size:clamp(32px,3.4vw,48px)}h3{font-size:19px;font-weight:700;letter-spacing:-.01em}
.eyebrow{font-size:12.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:16px}
.top{position:sticky;top:0;z-index:30;height:70px;display:flex;align-items:center;gap:28px;padding:14px clamp(20px,4vw,56px);background:rgba(22,58,44,.0);color:#f4f2ec;transition:background .3s,box-shadow .3s}
.top.scrolled{background:rgba(22,58,44,.94);backdrop-filter:blur(10px);box-shadow:0 1px 0 rgba(255,255,255,.08)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:700;font-size:18px;letter-spacing:-.01em}
.brand svg{width:32px;height:32px;--accent:#cfe3c1}
.brand em{font-style:normal;font-weight:500;opacity:.7;margin-left:6px}
.top nav{margin-left:auto;display:flex;gap:28px;font-size:15px}
.top nav a{text-decoration:none;opacity:.78}.top nav a:hover{opacity:1}
.call{display:flex;align-items:center;gap:8px;background:var(--sage);color:var(--pine);text-decoration:none;padding:10px 18px;border-radius:999px;font-weight:700;font-size:15px}
.call svg{width:16px;height:16px;fill:currentColor}
.hero{background:var(--pine);color:#f4f2ec;margin-top:-70px;padding:calc(70px + clamp(50px,7vw,96px)) clamp(20px,4vw,56px) clamp(60px,7vw,100px);display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(30px,5vw,80px);align-items:center}
.hero>*{max-width:640px}.hero .eyebrow{color:var(--sage);opacity:.85}
.lede{font-size:18.5px;color:#c9d3cd;margin:24px 0 34px;max-width:32em}
.ctas{display:flex;gap:14px;flex-wrap:wrap}
.btn{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;padding:15px 26px;border-radius:999px;font:inherit;font-weight:700;border:0;cursor:pointer;transition:transform .2s,background .2s}
.hero .btn{background:var(--sage);color:var(--pine)}
.btn:hover{transform:translateY(-1px)}
.ghost{display:inline-block;padding:14px 24px;border-radius:999px;border:1px solid rgba(244,242,236,.3);text-decoration:none;font-weight:600}
.dial-wrap{position:relative;justify-self:center;width:min(440px,100%)}
.dial{width:100%;height:auto;overflow:visible}
.ticks line{stroke:#f4f2ec;stroke-opacity:.22;stroke-width:1.5}
.track{fill:none;stroke:rgba(244,242,236,.08);stroke-width:14}
.arc{fill:none;stroke-width:14;stroke-linecap:round;stroke-dasharray:942;stroke-dashoffset:942;transform:rotate(-90deg);transform-origin:200px 200px;transition:stroke-dashoffset 2s cubic-bezier(.2,.8,.2,1)}
.ready .arc{stroke-dashoffset:330}
.dial-wrap.heat .arc{stroke-dashoffset:390}
.s1{stop-color:var(--sage);transition:stop-color .8s}.s2{stop-color:var(--cool);transition:stop-color .8s}
.heat .s1{stop-color:#f0c7a1}.heat .s2{stop-color:var(--warm)}
.face{fill:#1b4535;stroke:rgba(244,242,236,.06)}
.temp{font:400 104px "Instrument Serif",Georgia,serif;fill:#f4f2ec;text-anchor:middle}
.deg{font:400 44px "Instrument Serif",Georgia,serif;fill:var(--sage)}
.mode{font:700 11px Manrope,sans-serif;letter-spacing:.28em;fill:var(--sage);text-anchor:middle;opacity:.8}
.modes{display:flex;justify-content:center;gap:6px;margin-top:18px}
.m{font:600 13px Manrope,sans-serif;color:#c9d3cd;background:transparent;border:1px solid rgba(244,242,236,.2);padding:7px 16px;border-radius:999px;cursor:pointer}
.m.on{background:#f4f2ec;color:var(--pine);border-color:#f4f2ec}
.facts{max-width:1240px;margin:0 auto;padding:0 clamp(20px,4vw,56px);display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line)}
.facts div{padding:30px 22px 30px 0}.facts div+div{padding-left:22px;border-left:1px solid var(--line)}
.facts b{display:block;font:400 30px "Instrument Serif",Georgia,serif}.facts span{font-size:14px;color:var(--muted)}
.services,.area,.about,.contact{max-width:1240px;margin:0 auto;padding:clamp(90px,10vw,140px) clamp(20px,4vw,56px) 0}
.head{max-width:680px;margin-bottom:44px}.sub{color:var(--muted);margin-top:14px}
.svc{list-style:none;display:grid;grid-template-columns:1fr 1fr;column-gap:56px}
.svc li{display:flex;gap:22px;padding:26px 0;border-top:1px solid var(--line)}
.svc .n{font-size:13px;font-weight:700;color:var(--accent);padding-top:3px}
.svc p{color:var(--muted);margin-top:6px;font-size:16px}
.about{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,6vw,90px);align-items:center}
.about figure img{border-radius:16px;width:100%}
.about figcaption{font-size:13px;color:var(--muted);margin-top:10px}
.about-copy h2{margin-bottom:18px}.about-copy>p{color:var(--muted)}
.ticks-list{list-style:none;margin-top:24px}
.ticks-list li{position:relative;padding:10px 0 10px 30px;border-bottom:1px solid var(--line)}
.ticks-list li:before{content:"";position:absolute;left:0;top:19px;width:14px;height:7px;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(-45deg)}
.towns{list-style:none;display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line)}
.towns li{padding:16px 0;border-bottom:1px solid var(--line);font-size:16px}
.contact{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding-bottom:clamp(90px,10vw,130px)}
.card{background:var(--pine);color:#f4f2ec;border-radius:20px;padding:clamp(28px,4vw,48px)}
.card .eyebrow{color:var(--sage)}.card h2{margin-bottom:26px}
.card dl div{padding:14px 0;border-top:1px solid rgba(244,242,236,.14)}
.card dt{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--sage);opacity:.8}
.card dd{font-size:17px;overflow-wrap:anywhere}.card a{text-decoration:none}
.form-wrap{background:#fff;border:1px solid var(--line);border-radius:20px;padding:clamp(28px,4vw,44px)}
.form-wrap h3{font-size:22px;margin-bottom:18px}
.quote label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:14px}
.quote input,.quote select,.quote textarea{display:block;width:100%;margin-top:6px;font:inherit;font-size:16px;color:var(--ink);padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.quote input:focus,.quote select:focus,.quote textarea:focus{outline:2px solid var(--accent);outline-offset:1px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.quote .btn{width:100%;margin-top:6px}.status{font-size:14px;color:var(--accent);margin-top:12px;min-height:1em}
.hp{position:absolute;left:-9999px}
footer{border-top:1px solid var(--line);padding:28px clamp(20px,4vw,56px);font-size:14px;color:var(--muted);text-align:center}
footer a{text-decoration:none}
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .8s ease,transform .8s ease}
.js .reveal.in{opacity:1;transform:none}
@media (max-width:900px){.top nav{display:none}.call{margin-left:auto}.hero,.about,.contact{grid-template-columns:1fr}.svc{grid-template-columns:1fr}.facts{grid-template-columns:1fr 1fr}.facts div:nth-child(3){border-left:0;padding-left:0}.facts div:nth-child(n+3){border-top:1px solid var(--line)}.towns{grid-template-columns:1fr 1fr}.dial-wrap{width:min(340px,86%)}}
@media (max-width:520px){.brand em{display:none}.call span{display:none}.call{padding:11px}.row2{grid-template-columns:1fr}h1{font-size:44px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
