:root{--ink:#211f1c;--stone:#4a4744;--paper:#ede9e1;--cedar:#8a6e4b;--cedar-d:#6f5435;--patina:#6e7568;--brass:#c7a76c;--hero:#F7F5F0;--band:#D8D4CC;--line:#d3cdc1;--max:1120px}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;font-family:"Work Sans",system-ui,sans-serif;color:var(--ink);background:var(--hero);line-height:1.65;font-size:17px}
img{max-width:100%;height:auto;display:block}
a{color:var(--cedar-d)}a:hover{color:var(--ink)}
h1,h2,h3{font-family:"Fraunces",Georgia,serif;font-weight:600;line-height:1.15;margin:0 0 .5em;color:var(--ink)}
h1{font-size:clamp(2rem,5vw,3.2rem)}h2{font-size:clamp(1.5rem,3.2vw,2.1rem)}h3{font-size:1.2rem}
p{margin:0 0 1em}
.wrap{max-width:var(--max);margin:0 auto;padding:0 20px}
.narrow{max-width:760px}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:10px 14px;z-index:99}.skip:focus{left:8px;top:8px}
header.site{background:var(--hero);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 20px;max-width:var(--max);margin:0 auto}
.brand img{height:46px;width:auto}
nav.main ul{display:flex;gap:22px;list-style:none;margin:0;padding:0;align-items:center}
nav.main a{text-decoration:none;color:var(--ink);font-weight:500;font-size:.97rem}
nav.main a:hover,nav.main a[aria-current]{color:var(--cedar-d)}
.btn{display:inline-block;background:var(--cedar-d);color:#fff!important;padding:12px 22px;border-radius:4px;text-decoration:none;font-weight:600;border:2px solid var(--cedar-d);cursor:pointer;font-size:1rem;font-family:inherit}
.btn:hover{background:var(--ink);border-color:var(--ink)}
.btn.alt{background:transparent;color:var(--ink)!important;border-color:var(--ink)}.btn.alt:hover{background:var(--ink);color:#fff!important}
.menu-btn{display:none;background:none;border:2px solid var(--ink);border-radius:4px;padding:8px 12px;font:inherit;font-weight:600;color:var(--ink)}
@media(max-width:860px){.menu-btn{display:block}nav.main{display:none;position:absolute;left:0;right:0;top:100%;background:var(--hero);border-bottom:1px solid var(--line);padding:12px 20px 20px}nav.main.open{display:block}nav.main ul{flex-direction:column;align-items:flex-start;gap:14px}}
.hero{padding:64px 0 56px;text-align:center}
.hero img.logo{margin:0 auto 28px;width:min(360px,80%)}
.hero p.lede{max-width:640px;margin:0 auto 28px;font-size:1.15rem;color:var(--stone)}
.cta-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.pagehead{padding:44px 0 28px;background:var(--hero)}
.pagehead .lede{font-size:1.15rem;color:var(--stone);max-width:720px}
.crumbs{font-size:.88rem;color:var(--stone);margin-bottom:14px}.crumbs a{color:var(--stone)}
section.block{padding:56px 0}
section.band{background:var(--band)}
section.paper{background:var(--paper)}
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.card{background:#fff;border:1px solid var(--line);border-radius:6px;padding:20px;text-decoration:none;color:var(--ink);display:block}
a.card:hover{border-color:var(--cedar);box-shadow:0 2px 10px rgba(0,0,0,.07)}
.card h3{margin-bottom:.3em}.card p{margin:0;color:var(--stone);font-size:.95rem}
.card .mat{font-size:.85rem;color:var(--cedar-d);font-weight:600;margin-bottom:6px}
.group-title{margin:40px 0 16px;padding-bottom:8px;border-bottom:2px solid var(--brass)}.group-title:first-child{margin-top:0}
ul.check{padding-left:0;list-style:none}ul.check li{padding:6px 0 6px 26px;position:relative}ul.check li::before{content:"";position:absolute;left:4px;top:15px;width:10px;height:10px;background:var(--cedar);border-radius:2px}
ol.steps{list-style:none;padding:0;margin:0;counter-reset:s}
ol.steps li{counter-increment:s;padding:0 0 22px 56px;position:relative}
ol.steps li::before{content:counter(s);position:absolute;left:0;top:-2px;width:38px;height:38px;border-radius:50%;background:var(--cedar-d);color:#fff;font-family:Fraunces,serif;font-weight:600;display:grid;place-items:center}
ol.steps h3{margin-bottom:.2em}ol.steps p{margin:0;color:var(--stone)}
.two{display:grid;gap:40px;grid-template-columns:1fr 1fr;align-items:start}
@media(max-width:800px){.two{grid-template-columns:1fr}}
figure{margin:0}figure img{border-radius:6px;width:100%}figcaption{font-size:.88rem;color:var(--stone);margin-top:8px}
details{background:#fff;border:1px solid var(--line);border-radius:6px;margin-bottom:10px}
summary{cursor:pointer;padding:16px 18px;font-weight:600;list-style:none}summary::-webkit-details-marker{display:none}
summary::after{content:"+";float:right;color:var(--cedar-d);font-size:1.3rem;line-height:1}details[open] summary::after{content:"\2212"}
details p{padding:0 18px;margin:0 0 16px;color:var(--stone)}
.note{border-left:4px solid var(--brass);background:var(--paper);padding:16px 20px;border-radius:0 6px 6px 0;margin:28px 0}
.quote{background:var(--cedar-d);color:#fff;padding:56px 0}
.quote h2{color:#fff}.quote p{color:#f1ebe0}
form.q{display:grid;gap:14px;max-width:640px}
form.q label{font-weight:600;font-size:.92rem;display:block;margin-bottom:4px}
form.q input,form.q textarea,form.q select{width:100%;padding:12px;border:1px solid #cfc7b8;border-radius:4px;font:inherit;background:#fff;color:var(--ink)}
form.q .row{display:grid;gap:14px;grid-template-columns:1fr 1fr}@media(max-width:560px){form.q .row{grid-template-columns:1fr}}
.quote form.q .btn{background:var(--ink);border-color:var(--ink)}.quote form.q .btn:hover{background:#000}
.hp{position:absolute;left:-9999px}
.compact{background:var(--paper);border-radius:8px;padding:28px;margin-top:40px}.compact .btn{width:max-content}
.tags{display:flex;flex-wrap:wrap;gap:8px;padding:0;list-style:none;margin:0}.tags a{display:inline-block;padding:6px 14px;border:1px solid var(--line);border-radius:20px;background:#fff;text-decoration:none;font-size:.93rem}
footer.site{background:var(--ink);color:#d9d3c7;padding:48px 0 28px;font-size:.95rem}
footer.site a{color:#e8dcc3}footer.site h3{color:#fff;font-size:1rem}
.fgrid{display:grid;gap:32px;grid-template-columns:1.4fr 1fr 1fr}@media(max-width:760px){.fgrid{grid-template-columns:1fr}}
footer.site ul{list-style:none;padding:0;margin:0}footer.site li{margin-bottom:6px}
.legal{border-top:1px solid #45413b;margin-top:28px;padding-top:18px;font-size:.85rem;color:#a9a294}
.swatches{display:flex;gap:6px;margin-bottom:12px}.swatches i{width:22px;height:22px;border-radius:3px;display:block}
.prose h2{margin-top:1.6em}
.gal{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-items:start}.gal img{aspect-ratio:4/3;object-fit:cover}
.vids{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start}.vids video{width:100%;max-height:70vh;background:#000;border-radius:6px;display:block;object-fit:contain}
.vids:has(figure:only-child){grid-template-columns:minmax(0,340px)}
.hero p.welcome{max-width:640px;margin:0 auto 14px;font-family:Fraunces,Georgia,serif;font-size:1.2rem;color:var(--ink)}
.card .more{display:block;margin-top:12px;font-size:.9rem;font-weight:600;color:var(--cedar-d)}
a.card:hover .more{text-decoration:underline}
.tap-hint{max-width:680px;margin:0 0 4px;padding:10px 14px;background:#fff;border-left:4px solid var(--cedar);border-radius:4px}
#services,#quote{scroll-margin-top:84px}
.callbar{display:none}
@media(max-width:720px){.callbar{display:flex;gap:10px;position:fixed;left:0;right:0;bottom:0;z-index:30;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:var(--hero);border-top:1px solid var(--line);box-shadow:0 -2px 10px rgba(0,0,0,.08)}.callbar .btn{flex:1;text-align:center;padding:13px 8px;min-height:48px}body{padding-bottom:76px}}
footer.site li a{display:inline-block;padding:7px 0}
.crumbs a{display:inline-block;padding:10px 2px}
.trust{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0}
.trust ul{list-style:none;margin:0;padding:0;display:grid;gap:14px 22px;grid-template-columns:repeat(auto-fit,minmax(176px,1fr))}
.trust li{display:flex;flex-direction:column;gap:2px}.trust strong{font-family:Fraunces,Georgia,serif;font-size:1.05rem;color:var(--ink)}.trust span{font-size:.9rem;color:var(--stone)}
.revgrid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:8px}
.rev{background:#fff;border:1px solid var(--line);border-radius:6px;padding:22px}.rev blockquote{margin:0 0 12px;font-size:1.02rem}.rev figcaption{font-size:.88rem;color:var(--stone);margin:0}
.rev-empty{max-width:680px;margin:0}
form.q input[type=file]{padding:10px;background:#fff}
form.q .hint{margin:6px 0 0;font-size:.85rem;color:var(--stone)}
form.q .form-msg{margin:10px 0 0;color:#8a2a1a;font-size:.95rem;min-height:1em}

/* welcome letter */
#welcome{border:0;border-radius:10px;padding:0;max-width:min(520px,92vw);width:100%;background:var(--hero);color:var(--ink);box-shadow:0 20px 60px rgba(0,0,0,.35)}
#welcome::backdrop{background:rgba(33,31,28,.72)}
#welcome .wl{position:relative;padding:34px 32px 30px;text-align:center}
#welcome .wl img{margin:0 auto 14px}
#welcome h2{font-size:clamp(1.5rem,5vw,2rem);margin-bottom:.6em}
#welcome p{text-align:left}
#welcome .wl-sig{font-family:"Fraunces",Georgia,serif;font-size:1.1rem;margin:1.2em 0 1.4em}
#welcome .wl-sig span{display:block;font-family:"Work Sans",system-ui,sans-serif;font-size:.9rem;color:var(--stone)}
#welcome .wl-x{position:absolute;top:6px;right:8px;width:44px;height:44px;border:0;background:transparent;font-size:1.9rem;line-height:1;color:var(--stone);cursor:pointer}
#welcome .wl-x:hover{color:var(--ink)}
body:has(#welcome[open]){overflow:hidden}

/* home photos */
.hero{background:linear-gradient(rgba(247,245,240,.7),rgba(247,245,240,.86)),url(/assets/img/cedar-shake-roof-timber-pavilion-after-restoration-800.webp) center/cover no-repeat}
.card .cardimg{width:calc(100% + 40px);max-width:none;margin:-20px -20px 14px;aspect-ratio:8/5;height:auto;object-fit:cover;border-radius:5px 5px 0 0}
.pagehead[style]{background:linear-gradient(rgba(247,245,240,.78),rgba(247,245,240,.92)),var(--bg) center/cover no-repeat}
