/* Shared controls: no font-dependent arrows or decorative glyphs. */
.round-link{font-size:15px;min-height:48px;padding:8px 0;gap:0}
.detail-symbol{display:block;position:relative;width:16px;height:16px;opacity:1;flex:none}
.detail-symbol:before,.detail-symbol:after{content:'';position:absolute;background:currentColor;top:7px;left:1px;width:14px;height:1px}
.detail-symbol:after{transform:rotate(90deg)}
.dialog-close{font-size:0;position:absolute;width:48px;height:48px}
.dialog-close:before,.dialog-close:after{content:'';position:absolute;left:14px;top:23px;width:20px;height:1.5px;background:currentColor;transform:rotate(45deg)}
.dialog-close:after{transform:rotate(-45deg)}
.rate{font-size:18px;color:var(--ink);margin:24px 0 0;line-height:1.5}
.services-copy>.lead{max-width:430px;font-size:16px}
@media(max-width:899px){
 :root{--gutter:24px;--chapter:64px}
 body{font-size:16px;line-height:1.7}
 .section-pad{padding:64px var(--gutter)}
 .header{padding:24px var(--gutter);gap:20px;align-items:center}
 .wordmark{font-size:44px}
 .desktop-nav,.header-contact{display:none}
 .menu-button{display:flex;margin-left:auto;width:auto;min-width:60px;height:48px;padding:8px 0 8px 16px;align-items:center;justify-content:center;background:none;color:inherit}
 .menu-button .menu-label{display:block;position:static;width:auto;height:auto;background:none;transform:none!important;font:15px/1.4 var(--sans);color:inherit}
 .mobile-menu{padding:110px var(--gutter) 48px;gap:28px;justify-content:center}
 .mobile-menu>a{font-size:34px;line-height:1.2}
 .mobile-menu button{font-size:16px;padding:12px 0;margin-top:8px}
 .hero{height:100svh;min-height:660px;max-height:1000px}
 .hero-content{padding:140px var(--gutter) 80px}
 .hero h1{font-size:clamp(44px,13.4vw,80px);line-height:1.08;max-width:650px}
 .hero h1 .line:nth-child(2){max-width:none}
 .hero-bottom{display:flex;align-items:flex-start;flex-direction:column;gap:24px;margin-top:32px}
 .hero-bottom p{font-size:15px;line-height:1.65;max-width:370px}
 .hero-cta{font-size:15px;min-height:48px}
 .hero-image img{object-position:64% center}
 h2,.intro h2,.services-copy h2,.play-heading h2,.care h2,.brand-intro h2,.faq h2{font-size:clamp(38px,10.3vw,66px);line-height:1.12;letter-spacing:-.05em}
 .intro{padding-bottom:32px}
 .statement{font-size:25px;line-height:1.48;margin-top:32px;letter-spacing:-.025em}
 .lead,.intro-tail p,.services-copy .lead,.play-heading .lead,.care-heading .lead,.brand-intro>.lead,.editorial-item p,.process .editorial-item p,.faq-list details p{font-size:16px;line-height:1.75;max-width:620px}
 .services{display:flex;flex-direction:column;gap:32px;align-items:stretch;padding-top:24px;padding-bottom:40px}
 .services-copy{order:-1;width:100%}
 .services-copy h2{margin-bottom:24px}
 .services-photo{width:100%;height:auto;max-height:none;aspect-ratio:4/5}
 .services-photo img{transform:none}
 .play{padding-top:32px;padding-bottom:36px}
 .play-heading{margin-bottom:28px;max-width:none}
 .play-heading .lead{margin-top:24px}
 .play-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 16px;align-items:start}
 .estimate{display:contents}
 .metric{grid-row:1;grid-column:1;margin:0 0 24px;min-width:0}
 .metric.cost{grid-column:2;margin:0 0 24px}
 .metric>span{font-size:14px;color:var(--ink);line-height:1.5}
 .metric output,.cost output{font-size:44px;line-height:1.25;white-space:nowrap}
 .metric output small{font-size:16px;margin-left:3px}
 .scene-wrap{grid-row:2;grid-column:1/-1;margin:0;padding:0;min-width:0}
 .scene-wrap canvas{width:100%;height:auto;aspect-ratio:1000/720;border-radius:12px;mask-image:none;cursor:auto}
 .scene-cursor{display:none!important}
 .scene-toolbar{display:grid;grid-template-columns:1.5fr 1fr;gap:12px;margin:16px 0 0}
 .scene-toolbar button{min-height:48px;padding:12px 8px;font-size:15px;line-height:1.4;border-radius:4px;background:#e6ebe1;color:var(--ink)}
 .scene-toolbar #paint-toggle{display:block;background:var(--pine);color:#fff}
 .scene-toolbar #paint-toggle[aria-pressed=true]{background:#315e46}
 .scene-toolbar button:active{opacity:.8}
 #scene-help.sr-only{position:absolute;margin:0;width:1px;height:1px;overflow:hidden}
 .rate,.estimate>.round-link,.accessible-controls,#clearing-status{grid-column:1/-1}
 .rate{font-size:18px;line-height:1.5;margin-top:24px}
 .estimate .round-link{font-size:16px;margin-top:16px;min-height:48px;padding:8px 0;justify-self:start}
 .accessible-controls{margin-top:8px;font-size:15px;color:var(--ink)}
 .accessible-controls summary{min-height:48px;font-size:15px;display:flex;align-items:center}
 .accessible-controls label{font-size:16px;margin-top:16px}
 .accessible-controls>span{display:none}
 .accessible-controls input{height:48px;margin:8px 0 0}
 .care{padding-top:40px;padding-bottom:64px}
 .care-heading .lead{margin-top:24px}
 .care-options{display:grid;grid-template-columns:1fr;gap:32px;padding:0;margin:32px 0 24px}
 .editorial-item h3{font-size:29px;line-height:1.2;margin-bottom:14px}
 .care>.round-link{margin-left:0;font-size:16px}
 .season-stage{height:auto;min-height:760px;max-height:none}
 .season-content{padding:88px var(--gutter);min-height:760px}
 .season-content h2{font-size:clamp(40px,11vw,70px);line-height:1.1}
 .season-content>p{font-size:16px;line-height:1.75;max-width:580px;margin-top:28px}
 .summer-copy{margin-top:32px}
 .summer-copy>span{font-size:14px}
 .summer-services{display:flex;flex-direction:column;gap:12px;margin-top:16px;font-size:16px}
 .brand{padding-top:64px;padding-bottom:32px}
 .brand-intro>.lead{margin-top:24px}
 .brand-body{display:flex;flex-direction:column;gap:24px;margin-top:24px}
 .mascot-wrap{height:280px;width:100%;max-width:360px;margin:auto}
 .process{display:grid;gap:28px;padding:0;margin:0}
 .process .editorial-item h3{font-size:27px;margin-bottom:12px}
 .faq{padding-top:32px;padding-bottom:48px}
 .faq-list{margin-top:24px;max-width:none}
 .faq-list details{margin:10px 0}
 .faq-list summary{font-size:16px;line-height:1.5;min-height:56px;gap:18px}
 .faq-list details p{padding:8px 0 12px;margin:0}
 .contact{padding-top:24px;padding-bottom:56px}
 .contact h2{font-size:clamp(44px,12vw,78px);line-height:1.1}
 .contact-bottom{display:block;margin-top:24px}
 .contact-bottom p{font-size:16px;line-height:1.7}
 .contact-bottom .round-link{font-size:16px;margin-top:20px}
 footer{padding:32px var(--gutter);grid-template-columns:1fr 1fr;gap:24px}
 footer .wordmark{font-size:52px}
 footer p,footer>span{font-size:13px;line-height:1.65}
 footer>span{grid-column:1/-1;text-align:left}
 footer small{font-size:12px;margin-top:0}
 dialog{width:calc(100% - 32px);max-height:calc(100svh - 32px);padding:72px 24px 32px}
 dialog h2{font-size:42px;line-height:1.1}
 dialog>p{font-size:16px;line-height:1.65;margin-top:24px}
 .dialog-close{top:12px;right:12px}
 #contact-links{gap:12px;grid-template-columns:1fr 1fr;margin-top:24px}
 .contact-item{font-size:16px;padding:12px 0}
 .contact-item small{display:none}
 #contact-status{font-size:14px}
}
@media(max-width:359px){:root{--gutter:20px}.hero h1{font-size:44px}.metric output,.cost output{font-size:40px}.metric>span{font-size:13px}.mobile-menu>a{font-size:31px}.hero-bottom p{font-size:15px}}

/* The scene invites the gesture; the estimate reports its result. */
.play-layout{grid-template-columns:minmax(0,1.65fr) minmax(320px,1fr);gap:clamp(40px,5vw,88px)}
.estimate{display:block;padding:0;max-width:420px;width:100%;align-self:center}
.estimate-main{display:flex;flex-direction:column;gap:28px}
.estimate .metric.cost{margin:0;display:flex;flex-direction:column;gap:16px}
.estimate .cost>span{font:15px/1.5 var(--sans);color:var(--muted)}
.estimate .cost output{font-size:clamp(76px,7.5vw,118px);line-height:1;letter-spacing:-.055em}
.estimate .cost output small{font:26px/1 var(--serif);margin-left:10px}
.estimate .area-metric{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;gap:20px;margin:0;padding-bottom:25px;border-bottom:1px solid #203d3026}
.estimate .area-metric>span{font:15px/1.5 var(--sans);color:var(--muted)}
.estimate .area-metric output{font:22px/1.3 var(--sans);letter-spacing:-.04em}
.estimate .area-metric output small{font-size:14px;margin-left:3px}
.estimate-context{font-size:15px;line-height:1.75;color:var(--muted);margin:24px 0 28px;max-width:360px;text-wrap:pretty}
.estimate-cta{display:flex;align-items:center;justify-content:center;width:100%;min-height:58px;background:var(--pine);color:var(--paper);padding:16px 24px;font:15px/1.5 var(--sans);border-radius:2px;transition:background .3s,transform .3s}
.estimate-cta:hover{background:#315e46;transform:translateY(-2px)}
.estimate .accessible-controls{margin:10px 0 0;font-size:15px;color:var(--ink)}
.estimate .accessible-controls summary{min-height:48px;display:flex;align-items:center;justify-content:center;font-size:14px;text-decoration:underline;text-underline-offset:5px;text-decoration-color:#203d3040;cursor:pointer}
.estimate .accessible-controls label{font-size:14px;margin-top:12px}
.estimate .accessible-controls input{height:44px;margin:8px 0 0}
@media(max-width:899px){
 .play-layout{display:flex;flex-direction:column;gap:32px;align-items:stretch}
 .scene-wrap{order:0}
 .estimate{order:1;max-width:none;margin:0}
 .estimate-main{gap:22px}
 .estimate .cost>span{font-size:15px}
 .estimate .cost output{font-size:82px;line-height:1.05}
 .estimate .cost output small{font-size:25px}
 .estimate .area-metric{padding-bottom:22px}
 .estimate-context{font-size:15px;line-height:1.7;max-width:500px;margin:22px 0 26px}
 .estimate-cta{min-height:56px;font-size:16px}
 .estimate .accessible-controls summary{font-size:15px;min-height:52px}
}
@media(max-width:359px){.estimate .cost output{font-size:72px}}

/* Season story: one editorial composition, held while winter gives way to summer. */
.season-content{justify-content:space-between;padding-top:clamp(64px,9vh,110px);padding-bottom:clamp(64px,9vh,110px)}
.season-content h2{max-width:1050px}
.season-content>p{font-size:17px;line-height:1.7;max-width:430px;margin:28px 0 auto;text-wrap:pretty}
.summer-copy{margin-top:48px;display:grid;grid-template-columns:200px minmax(0,1fr);align-items:start;gap:32px;max-width:900px}
.summer-copy>span{font-size:13px;line-height:1.6;max-width:170px;color:#d9e2d5}
.summer-services{display:flex;flex-wrap:wrap;gap:8px 28px;margin:0;padding:0;list-style:none;font:22px/1.5 var(--serif);letter-spacing:-.015em}
.season-overlay{background:linear-gradient(90deg,#10281dd4,#10281d35),linear-gradient(0deg,#10281d99,transparent 55%)}
@media(max-width:899px){
 .season-stage{height:100svh;min-height:640px;max-height:none}
 .season-content{height:100%;min-height:0;padding:64px var(--gutter) 56px;justify-content:center}
 .season-content h2{font-size:clamp(40px,11.3vw,68px);line-height:1.09;letter-spacing:-.045em;max-width:600px}
 .season-content>p{font-size:16px;line-height:1.65;max-width:340px;margin:26px 0 0}
 .summer-copy{grid-template-columns:1fr;gap:16px;margin-top:40px;max-width:550px}
 .summer-copy>span{font-size:14px;max-width:none;line-height:1.5;color:#d6e0d1}
 .summer-services{display:flex;flex-direction:row;gap:4px 18px;font:20px/1.5 var(--serif);letter-spacing:-.015em;margin:0;max-width:340px}
 .season-overlay{background:linear-gradient(0deg,#0d251dd9,#0d251d35 95%),linear-gradient(90deg,#0d251d70,transparent)}
}
@media(max-width:359px){.season-content{padding-top:48px;padding-bottom:48px}.summer-copy{margin-top:28px}.season-content>p{margin-top:22px}}

.hero-snow{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;--snow-height:1100px}
.hero-snow span{position:absolute;top:-12px;border-radius:50%;background:#fff;animation:gentle-snowfall linear infinite;will-change:transform;box-shadow:0 0 2px #ffffff30}
.hero-snow.is-paused span{animation-play-state:paused}
@keyframes gentle-snowfall{from{transform:translate3d(0,-10px,0)}to{transform:translate3d(var(--drift),var(--snow-height),0)}}
@media(max-width:899px){.hero-snow span:nth-child(n+33){display:none}}
@media(prefers-reduced-motion:reduce){.hero-snow{display:none}}
.hero-snow{z-index:0}
.hero-content{position:relative;z-index:1}
