:root {
  --ink:#2f2d2d; --muted:#635f60; --paper:#fff; --sand:#f8f6f6;
  --soft:#fdf0ed; --accent:#e5384c; --accent-end:#d95f42;
  --action:#007250; --action-hover:#00593f; --line:#ded9d8;
  --dark:#254b3f; --white:#fff; --radius:16px;
}
* { box-sizing:border-box }
html { scroll-behavior:smooth; scroll-padding-top:24px }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Arial,Helvetica,sans-serif; font-size:17px; line-height:1.6 }
a { color:inherit; text-underline-offset:4px }
button,input,select,textarea { font:inherit }
button,a,input,select,textarea,summary { -webkit-tap-highlight-color:transparent }
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible { outline:3px solid var(--action); outline-offset:5px }
img { display:block; max-width:100%; height:auto }
svg { flex-shrink:0 }
p { margin:0 0 1.25rem }
h1,h2,h3 { margin:0 0 1rem; line-height:1.12; letter-spacing:-.035em; font-weight:700; overflow-wrap:break-word; hyphens:none; text-wrap:balance }
h1 { font-size:clamp(2.35rem,4.4vw,3.5rem) }
h2 { font-size:clamp(1.95rem,3.2vw,2.75rem) }
h3 { font-size:1.45rem; letter-spacing:-.02em }
ul,ol { padding-left:1.3rem }
.wrap { width:min(1248px,calc(100% - 80px)); margin-inline:auto }
.narrow { max-width:880px }
.eyebrow { color:var(--action); font-size:.78rem; font-weight:700; letter-spacing:.035em; margin:0 0 14px }
.quiet { color:var(--muted); font-size:.82rem }
.topbar { background:#f3f0f0; font-size:.76rem }
.topbar .wrap { display:flex; align-items:center; gap:26px; min-height:40px; padding-block:7px }
.topbar a { text-decoration:none }
.topbar a:hover { text-decoration:underline }
.utility-nav { display:flex; gap:24px; margin-right:auto }
.phone-link { font-weight:700; white-space:nowrap }
.language { display:flex; align-items:center; gap:10px; font-size:.76rem; white-space:nowrap }
.language .active { font-weight:700; color:var(--action) }
.language a { text-decoration:underline }
.site-header { background:#fff; border-bottom:1px solid #eee9e8 }
.head-row { display:flex; align-items:center; gap:30px; min-height:100px }
.brand { display:block; flex-shrink:0 }
.brand img { width:246px; height:auto }
.primary-nav { display:flex; align-items:center; gap:29px; margin-left:auto; font-size:.94rem; font-weight:600 }
.primary-nav a { text-decoration:none; white-space:nowrap; padding:15px 0 }
.primary-nav a:hover,.primary-nav a[aria-current=page] { color:var(--action) }
.primary-nav .secondary-nav-item { display:none }
.head-row>.btn { font-size:.86rem; min-height:48px; padding:12px 18px; flex-shrink:0 }
.menu-toggle { display:none; align-items:center; gap:9px; border:1px solid var(--line); border-radius:8px; background:#fff; padding:9px 12px; color:var(--ink); cursor:pointer; min-height:44px }
.menu-toggle span { font-size:1.2rem }
.btn { display:inline-flex; align-items:center; justify-content:center; gap:16px; background:var(--action); border:2px solid var(--action); border-radius:8px; color:white; padding:13px 21px; min-height:52px; text-decoration:none; font-weight:700; font-size:.95rem; line-height:1.35; cursor:pointer; text-align:center }
.btn:hover { background:var(--action-hover); border-color:var(--action-hover) }
.btn.secondary { background:white; color:var(--action) }
.btn.secondary:hover { background:#edf6f2; border-color:var(--action-hover) }
.btn.small { padding:9px 14px; min-height:44px }
.btn.dark { background:var(--dark); border-color:var(--dark) }
.btn:disabled { cursor:wait; opacity:.7 }
.arrow { font-size:1.25em; flex-shrink:0 }
.text-link { color:var(--action); font-size:.94rem; font-weight:700; text-decoration:none; display:inline-flex; gap:12px; align-items:center }
.text-link:hover { text-decoration:underline }
.text-link span { flex-shrink:0; font-size:1.2em }
.actions { display:flex; flex-wrap:wrap; align-items:center; gap:18px; margin:24px 0 19px }
.line-icon { display:block; width:40px; height:40px; color:var(--action) }
.hero { background:var(--sand); padding:32px 0 42px }
.hero-grid { display:grid; grid-template-columns:1fr 1.1fr; align-items:center; gap:0 }
.hero-copy { position:relative; z-index:2; margin:24px -65px 24px 0 }
.hero-title { position:relative; z-index:1; width:calc(100% - 40px); padding:26px 32px 28px; margin-bottom:-8px; border-radius:16px 42px 12px 16px; background:linear-gradient(115deg,var(--accent),var(--accent-end)); color:#fff }
.hero-title h1 { font-size:clamp(2.1rem,3.05vw,2.75rem); line-height:1.06; letter-spacing:-.035em; margin:0; text-wrap:initial }
.hero-title h1 span { display:block }
.hero-body { background:#fff; border-radius:16px; padding:32px; box-shadow:0 5px 18px #1a171b18 }
.hero-body .lede { color:var(--ink); font-size:1.02rem; margin-bottom:19px; max-width:490px }
.hero-body .eyebrow { margin-bottom:9px }
.hero-benefits { list-style:none; padding:0; margin:0 }
.hero-benefits li { position:relative; padding-left:27px; font-size:.92rem; margin:8px 0 }
.hero-benefits li:before { content:'✓'; position:absolute; left:0; color:var(--action); font-weight:700 }
.hero-call { margin:0; color:var(--muted); font-size:.8rem }
.hero-call a { color:var(--action); font-weight:700; white-space:nowrap }
.hero-figure { position:relative; align-self:stretch; min-height:570px; margin:0 }
.hero-figure>img { position:absolute; inset:0; width:100%; height:100%; border-radius:20px; object-fit:cover; object-position:center top }
.assurance-stack { position:absolute; top:24px; right:22px; z-index:1; width:142px; display:flex; flex-direction:column; align-items:center; gap:12px }
.assurance-stack img { position:static; width:100%; height:auto; border-radius:0; object-fit:contain; filter:drop-shadow(0 3px 5px #36260d26) }
.assurance-stack .guarantee-badge { width:136px }
.hero-figure figcaption { position:absolute; bottom:22px; left:86px; right:22px; width:fit-content; background:#fff; color:var(--ink); border-radius:8px; padding:10px 15px; font-size:.77rem; box-shadow:0 3px 15px #0001 }
.quick-nav { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:34px }
.quick-card { display:flex; align-items:center; gap:16px; border:1px solid var(--line); border-radius:12px; padding:21px 22px; text-decoration:none; background:#fff; min-width:0; box-shadow:0 3px 8px #1a171b06 }
.quick-card:hover { border-color:var(--action); background:#f5faf7 }
.quick-card>span:not(.card-arrow) { min-width:0 }
.quick-card .line-icon { width:34px; height:34px }
.quick-card strong { display:block; font-size:1rem; line-height:1.3 }
.quick-card small { display:block; color:var(--muted); font-size:.77rem; margin-top:4px; line-height:1.45 }
.card-arrow { margin-left:auto; color:var(--action); font-size:1.35rem; flex-shrink:0 }
.section { padding:76px 0 }
.section.sand { background:var(--sand) }
.section.soft { background:var(--soft) }
.section.dark { background:var(--dark); color:#fff }
.section-head { display:flex; justify-content:space-between; align-items:flex-end; gap:40px; margin-bottom:35px }
.section-head>div { max-width:690px }
.section-head h2 { margin-bottom:0 }
.section-head>p { max-width:370px; color:var(--muted); margin:0 }
.section-head>.text-link { flex-shrink:0 }
.section-head.centered { text-align:center; justify-content:center }
.section-head.centered>div { max-width:770px }
.section-head.centered p:not(.eyebrow) { max-width:660px; margin:20px auto 0; color:var(--muted) }
.section-link { margin-top:28px; text-align:center }
.grid-3 { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px }
.grid-2 { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:36px }
.service-card { display:flex; flex-direction:column; align-items:flex-start; padding:30px; border-radius:16px; border:1px solid var(--line); background:#fff; box-shadow:0 5px 10px #1a171b0d; min-width:0 }
.service-icon { background:#edf6f2; border-radius:14px; padding:14px; margin-bottom:26px }
.service-icon .line-icon { width:42px; height:42px }
.service-card h3 { font-size:1.6rem; line-height:1.18 }
.service-card p { color:var(--muted); font-size:.94rem }
.service-card .text-link { margin-top:auto; padding-top:12px }
.service-card>.btn { width:100%; margin-top:auto; justify-content:space-between; gap:16px; min-height:54px; padding:13px 17px }
.service-card>.btn .arrow { margin-left:auto }
.detail-links { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:28px }
.detail-links a { padding:15px 20px; border:1px solid var(--line); border-radius:10px; font-size:.91rem }
.split { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:72px; align-items:center }
.split>div>p:not(.eyebrow) { color:var(--muted) }
.split img { width:100%; border-radius:16px; object-fit:cover }
.split figure { margin:0 }
.split figcaption { font-size:.8rem; color:var(--muted); padding-top:12px }
.number-list { list-style:none; margin:0; padding:0; counter-reset:steps }
.number-list li { position:relative; counter-increment:steps; padding:23px 0 23px 62px; border-bottom:1px solid #e7d8d3 }
.number-list li:first-child { padding-top:5px }
.number-list li:before { content:counter(steps); position:absolute; left:0; top:23px; width:40px; height:40px; border-radius:50%; background:#fff; color:var(--action); font-weight:700; display:grid; place-items:center }
.number-list li:first-child:before { top:5px }
.number-list strong { display:block; font-size:1.2rem; line-height:1.3; margin-bottom:7px }
.number-list p { font-size:.91rem; color:var(--muted); margin:0 }
.table-panel { border:1px solid var(--line); border-radius:16px; padding:4px 18px; background:white }
.cost-table { width:100%; border-collapse:collapse; font-size:.93rem }
.cost-table th { text-align:left; color:var(--ink); font-size:.82rem; font-weight:700; padding:19px 20px; border-bottom:2px solid var(--line) }
.cost-table td { padding:25px 20px; border-bottom:1px solid var(--line); vertical-align:top }
.cost-table tr:last-child td { border-bottom:0 }
.cost-table td:first-child { font-weight:700; width:25% }
.cost-table td:last-child { width:30%; color:var(--muted); font-size:.86rem }
.photo-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:start; gap:28px }
.work-photo { min-width:0; width:100%; margin:0; background:white; border:1px solid var(--line); border-radius:16px; overflow:hidden }
.photo-grid .work-photo { max-width:var(--photo-width); justify-self:center }
.photo-open { position:relative; display:block; color:white; background:var(--sand) }
.photo-open:focus-visible { outline-offset:-5px }
.photo-open img { display:block; width:100%; height:auto }
.photo-grid img { aspect-ratio:4/3; object-fit:cover; object-position:center }
.photo-zoom { display:grid; place-items:center; position:absolute; bottom:14px; right:14px; width:36px; height:36px; border-radius:50%; background:#fff; color:var(--action); font-size:1.25rem; box-shadow:0 2px 8px #0002 }
.work-photo figcaption { color:var(--muted); font-size:.85rem; padding:20px 23px 23px; line-height:1.55 }
.work-photo strong { display:block; font-size:1.1rem; color:var(--ink); margin-bottom:8px; line-height:1.3 }
.feature-photo { align-self:center; box-shadow:0 8px 28px #48271d0a }
.split .feature-photo figcaption { padding:20px 23px 23px }
.finish-feature { gap:54px }
.finish-feature .number-list { margin-top:28px }
.finish-feature h2 { font-size:clamp(1.8rem,3.5vw,2.6rem) }
.gallery-nav { display:flex; flex-wrap:wrap; gap:12px; margin:0 0 44px }
.gallery-nav a { border:1px solid var(--line); border-radius:999px; padding:11px 19px; text-decoration:none; color:var(--action); font-size:.9rem; font-weight:700 }
.gallery-nav a:hover { background:#edf6f2 }
.gallery-section { margin:0 0 66px; scroll-margin-top:120px }
.gallery-section h2 { font-size:2rem; margin-bottom:28px }
.prose .article-photo { max-width:min(100%,var(--photo-width)); margin:0 0 38px }
.article-photo .photo-open img { max-height:460px; object-fit:cover; object-position:center }
.prose .article-photo figcaption { font-size:.85rem }
.steps { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:30px; padding:0; margin:42px 0 0; list-style:none; counter-reset:none }
.steps li { min-width:0; position:relative }
.step-no { display:grid; place-items:center; width:52px; height:52px; background:var(--soft); color:#ac2539; border-radius:50%; font-size:1.4rem; font-weight:700; margin-bottom:23px }
.steps h3 { font-size:1.28rem; line-height:1.25; letter-spacing:-.02em }
.steps p { color:var(--muted); font-size:.89rem; margin:0 }
.contact-band { display:flex; justify-content:space-between; align-items:center; gap:35px; background:#edf6f2; border-radius:16px; padding:30px 36px; margin-top:44px }
.contact-band h3 { font-size:1.55rem }
.contact-band p { margin:0; color:var(--muted); max-width:730px; font-size:.92rem }
.contact-band .btn { flex-shrink:0 }
.article-card { display:flex; flex-direction:column; min-width:0; padding:29px; border:1px solid var(--line); border-radius:16px; background:#fff; text-decoration:none; box-shadow:0 4px 10px #1a171b08 }
.article-card small { color:var(--action); font-size:.76rem; font-weight:700 }
.article-card h3 { font-size:1.42rem; line-height:1.2; margin:17px 0 }
.article-card p { font-size:.89rem; color:var(--muted); margin:0 }
.article-card:after { content:'→'; color:var(--action); font-size:1.5rem; margin-top:auto; padding-top:20px }
.article-card:hover { border-color:var(--action) }
.article-card:hover h3 { color:var(--action) }
.faq { border-top:1px solid var(--line) }
.faq-heading { font-size:1.8rem }
details { border-bottom:1px solid var(--line) }
summary { list-style:none; padding:20px 38px 20px 0; cursor:pointer; font-weight:700; font-size:1rem; line-height:1.5; position:relative }
summary::-webkit-details-marker { display:none }
summary:after { content:'+'; position:absolute; right:3px; top:16px; font-weight:400; font-size:1.5rem; color:var(--action) }
details[open]>summary:after { content:'−' }
.faq details p { color:var(--muted); font-size:.94rem; padding-right:20px; max-width:900px }
.quote-layout { display:grid; grid-template-columns:.8fr 1.2fr; align-items:start; gap:70px }
.quote-layout aside { padding-top:20px }
.quote-layout aside p { color:var(--muted) }
.quote-layout aside .eyebrow { color:var(--action) }
.contact-line { display:block; font-size:1.7rem; color:var(--action); font-weight:700; text-decoration:none; margin:23px 0; letter-spacing:-.02em }
.quote-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; padding:32px; background:white; border-radius:16px; box-shadow:0 5px 16px #1a171b0e; border:1px solid var(--line) }
.field { display:flex; flex-direction:column; gap:7px; min-width:0 }
.field label { font-size:.86rem; font-weight:700 }
.field input,.field textarea,.field select { width:100%; min-width:0; min-height:51px; border:1px solid #9c9797; border-radius:8px; padding:12px; color:var(--ink); background:white; font-size:16px }
.field textarea { min-height:140px; resize:vertical }
.field.full,.quote-form>.full { grid-column:1/-1 }
.field small { font-size:.76rem; color:var(--muted); line-height:1.55 }
.field [aria-invalid=true] { border:2px solid #b6273d }
.file-input { background:#f8f6f6; padding:18px; border-radius:10px; border:1px dashed #b5b0ae }
.field input[type=file] { border:0; padding:6px 0; background:transparent; font-size:.82rem }
input[type=file]::file-selector-button { border:1px solid var(--action); border-radius:6px; background:#fff; color:var(--action); padding:9px 11px; margin-right:10px; font:inherit; cursor:pointer }
.file-list { font-size:.78rem; padding-left:18px; overflow-wrap:anywhere; margin:0 }
.honeypot { position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden }
.address-status { margin:0; font-size:.86rem; line-height:1.55; color:var(--muted); }
.address-choice-field[hidden] { display:none; }
.spam-protection { padding:18px; background:#f6f8f3; border:1px solid #dce4d9; border-radius:10px; min-width:0; }
.spam-protection>strong { display:block; margin-bottom:10px; font-size:.92rem; }
.spam-protection>small { display:block; margin-top:10px; line-height:1.5; }
altcha-widget { display:block; min-height:66px; max-width:100%; --altcha-max-width:100%; --altcha-border-radius:7px; }
altcha-widget[display="invisible"] { min-height:0; }
.status { padding:16px; font-size:.88rem; background:#fff0e8; border-left:3px solid var(--accent); border-radius:0 8px 8px 0 }
.status:empty { display:none }
.submit-row { display:flex; align-items:center; gap:18px; flex-wrap:wrap }
.submit-row p { color:var(--muted); font-size:.76rem; margin:0; max-width:320px }
.site-footer { background:#f3f0f0; padding:60px 0 0; border-top:1px solid #e8e3e2 }
.footer-grid { display:grid; grid-template-columns:1.2fr 1.2fr .8fr 1fr; gap:35px }
.footer-logo { width:242px; margin-bottom:23px }
.site-footer p,.site-footer li,.site-footer a { font-size:.87rem }
.site-footer p { color:var(--muted) }
.site-footer ul { list-style:none; margin:0; padding:0 }
.site-footer li { margin:11px 0 }
.site-footer a { text-decoration:none; overflow-wrap:anywhere }
.site-footer a:hover { color:var(--action); text-decoration:underline }
.site-footer h3 { font-size:1.06rem; margin-bottom:22px }
.footer-bottom { display:flex; justify-content:space-between; gap:20px; padding:23px 0; margin-top:40px; border-top:1px solid var(--line); color:var(--muted); font-size:.73rem }
.footer-bottom a { font-size:inherit }
.breadcrumb { padding:26px 0 18px; color:var(--muted); font-size:.78rem }
.breadcrumb a { text-decoration:none; color:var(--action) }
.breadcrumb ol { display:flex; flex-wrap:wrap; gap:7px 12px; list-style:none; margin:0; padding:0 }
.breadcrumb li { min-width:0; overflow-wrap:break-word }
.breadcrumb li+li:before { content:'/'; color:var(--muted); margin-right:12px }
.service-jumps { display:flex; flex-wrap:wrap; gap:12px }
.service-jumps a { display:flex; align-items:center; justify-content:space-between; gap:22px; min-height:48px; padding:11px 20px; border:1px solid var(--line); border-radius:8px; text-decoration:none; font-size:.95rem; font-weight:700; color:var(--action) }
.service-jumps a:hover { background:#edf6f2 }
.service-group+.service-group { border-top:1px solid var(--line) }
.structural-feature { display:grid; grid-template-columns:128px minmax(0,1fr); gap:36px; align-items:start; background:#edf6f2; border-radius:16px; padding:36px; margin-bottom:76px }
.structural-feature h2 { font-size:clamp(1.65rem,3vw,2.15rem) }
.structural-feature p { max-width:850px }
.structural-feature .eyebrow { margin-bottom:10px }
.structural-symbol { display:grid; place-items:center; background:#fff; border-radius:16px; width:128px; height:128px }
.structural-symbol .line-icon { width:72px; height:72px }
.article-toc { padding:24px; margin:0 0 30px; border:1px solid var(--line); border-radius:12px; background:var(--sand) }
.article-toc p { font-weight:700; color:var(--ink); margin-bottom:12px }
.article-toc ol { margin:0; padding-left:22px; display:grid; gap:9px }
.article-toc a { font-size:.92rem; line-height:1.45; text-decoration:none }
.article-toc a:hover { text-decoration:underline }
.prose .related-services { display:grid; gap:12px; margin:20px 0 32px }
.prose .related-services a { display:flex; justify-content:space-between; padding:16px 18px; border:1px solid var(--line); border-radius:10px; line-height:1.45; overflow-wrap:normal }
.prose section { scroll-margin-top:28px }
.page-heading { padding:20px 0 55px }
.page-heading h1 { max-width:1000px }
.page-heading .lede { max-width:830px; color:var(--muted); font-size:1.12rem }
.article-layout { display:grid; grid-template-columns:minmax(0,820px) 290px; justify-content:space-between; gap:60px; padding-bottom:76px }
.prose h2 { font-size:2rem; margin-top:40px }
.prose h2:first-child { margin-top:0 }
.prose h3 { margin-top:28px }
.prose p,.prose ul { color:#514e4e }
.prose a { color:var(--action); overflow-wrap:anywhere }
.sidebar { background:var(--sand); border:1px solid var(--line); border-radius:16px; padding:27px; align-self:start; position:sticky; top:24px; font-size:.88rem }
.sidebar h2 { font-size:1.35rem }
.sidebar ul { list-style:none; padding:0; margin-bottom:0 }
.sidebar li { margin:14px 0 }
.sidebar a { text-decoration:none }
.sidebar .btn { display:flex; margin-top:22px; white-space:normal }
.source-box { border-top:1px solid var(--line); padding-top:24px; margin-top:40px; font-size:.8rem; color:var(--muted) }
.source-box a { display:block; margin:10px 0 }
.source-box h2 { font-size:1.15rem }
.directory { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px }
.filterbar { display:flex; flex-wrap:wrap; gap:14px; margin:5px 0 28px }
.filterbar input,.filterbar select { min-height:50px; max-width:100%; padding:12px 15px; border:1px solid #9c9797; background:#fff; border-radius:8px; font-size:16px }
.filterbar input { flex:1; min-width:200px }
.empty { padding:25px }
.notice { border-left:4px solid var(--action); background:#edf6f2; padding:20px 24px; margin:26px 0; border-radius:0 10px 10px 0; font-size:.94rem }
.glossary dt { border-top:1px solid var(--line); font-size:1.22rem; font-weight:700; padding-top:22px; color:var(--ink) }
.glossary dd { margin:9px 0 28px; color:var(--muted) }
.skip-link { position:absolute; left:12px; top:-90px; background:white; color:var(--ink); padding:10px; z-index:100 }
.skip-link:focus { top:10px }
.reviewbar { background:#eaf3ee; color:#305340; padding:5px 15px; text-align:center; font-size:.7rem }
.error-page { padding:70px 0 100px }
.error-page .error-code { color:var(--accent); font-size:6rem; line-height:1; font-weight:700 }
.float-contact { position:static; display:flex; align-items:center; justify-content:center; margin:18px auto; width:52px; height:52px; border-radius:50%; background:var(--action); color:white }
.float-contact svg { width:24px; height:24px }
body:has(.quote-form) .float-contact { display:none }
[hidden] { display:none!important }

@media(max-width:1150px) {
  .wrap { width:calc(100% - 48px) }
  .head-row { gap:23px }
  .brand img { width:218px }
  .primary-nav { gap:20px; font-size:.88rem }
  .head-row>.btn { padding:11px 15px; font-size:.8rem }
  .hero-copy { margin-right:-48px }
  .hero-title,.hero-body { padding:28px }
  .hero-title { width:calc(100% - 26px) }
  .hero-body .actions { flex-direction:column; align-items:flex-start; gap:13px }
  .quick-card { padding:19px 17px; gap:13px }
  .split { gap:45px }
  .quote-layout { gap:40px }
  .article-layout { grid-template-columns:minmax(0,1fr) 270px; gap:36px }
  .service-card,.article-card { padding:25px }
}
@media(max-width:950px) {
  .head-row { min-height:90px; flex-wrap:wrap; gap:18px; padding-block:17px }
  .menu-toggle { display:flex; margin-left:auto }
  .primary-nav { display:none; width:100%; margin:0; order:5; flex-direction:column; align-items:stretch; gap:0; font-size:1rem; border-top:1px solid var(--line); padding-top:10px }
  .primary-nav.open { display:flex }
  .primary-nav a,.primary-nav .secondary-nav-item { display:block; padding:13px 5px; white-space:normal }
  .hero-grid { grid-template-columns:1fr 1fr }
  .hero-title h1 { font-size:2.25rem }
  .hero-body .lede { font-size:.94rem }
  .hero-benefits li { font-size:.84rem }
  .hero-figure figcaption { left:70px; font-size:.7rem }
  .assurance-stack { width:120px; right:16px; top:18px; gap:9px }
  .assurance-stack .guarantee-badge { width:116px }
  .quick-nav { gap:12px }
  .quick-card .line-icon { width:29px; height:29px }
  .quick-card { gap:10px; padding:17px 14px }
  .quick-card strong { font-size:.9rem }
  .quick-card small { font-size:.72rem }
  .quick-card .card-arrow { display:none }
  .grid-3 { gap:17px }
  .service-card h3 { font-size:1.4rem }
  .section-head { gap:28px }
  .section-head>p { max-width:300px; font-size:.94rem }
  .steps { grid-template-columns:repeat(2,minmax(0,1fr)); gap:35px }
  .photo-grid { grid-template-columns:repeat(2,minmax(0,1fr)) }
  .finish-feature { gap:32px }
  .quote-layout { grid-template-columns:1fr }
  .quote-layout aside { max-width:730px; padding:0 }
  .footer-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:35px }
  .article-layout { grid-template-columns:1fr; gap:35px }
  .sidebar { position:static }
  .sidebar ul { display:flex; gap:0 24px; flex-wrap:wrap }
  .sidebar .btn { display:inline-flex }
  .directory { grid-template-columns:repeat(2,minmax(0,1fr)) }
}
@media(max-width:700px) {
  .structural-feature { grid-template-columns:1fr; gap:20px; padding:25px; margin-bottom:56px }
  .structural-symbol { width:70px; height:70px; border-radius:12px }
  .structural-symbol .line-icon { width:44px; height:44px }
  .service-jumps { gap:10px }
  .service-jumps a { width:100% }
  .detail-links { grid-template-columns:1fr }
  .article-toc { padding:20px }
  .wrap { width:calc(100% - 40px) }
  .head-row>.btn { display:none }
  .utility-nav { display:none }
  .topbar .wrap { justify-content:space-between; gap:15px }
  .hero { padding:20px 0 29px }
  .hero-grid { display:flex; flex-direction:column }
  .hero-copy { width:100%; margin:0 }
  .hero-title { width:calc(100% - 20px); padding:24px; border-radius:14px 32px 10px 14px }
  .hero-title h1 { font-size:clamp(1.95rem,6.7vw,2.65rem) }
  .hero-body { padding:26px 24px; border-radius:14px }
  .hero-body .lede { font-size:1rem; max-width:none }
  .hero-benefits li { font-size:.91rem }
  .hero-body .actions { flex-direction:row; align-items:center; gap:17px }
  .hero-figure { order:-1; min-height:0; height:auto; aspect-ratio:4/3; width:100%; margin-bottom:-36px }
  .hero-figure>img { object-position:center top; border-radius:16px }
  .hero-figure figcaption { display:none }
  .assurance-stack { width:118px; top:16px; right:16px }
  .assurance-stack .guarantee-badge { width:110px }
  .quick-nav { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:25px }
  .quick-card { flex-direction:column; align-items:flex-start; padding:20px; gap:12px }
  .quick-card .line-icon { width:32px; height:32px }
  .quick-card strong { font-size:1rem }
  .quick-card small { font-size:.77rem }
  .section { padding:56px 0 }
  .section-head { display:block; margin-bottom:28px }
  .section-head>p { max-width:none; margin-top:20px }
  .section-head>.text-link { margin-top:20px }
  .section-head.centered { text-align:left }
  .section-head.centered p:not(.eyebrow) { margin-top:17px }
  .grid-3,.grid-2,.split,.photo-grid,.directory { grid-template-columns:1fr }
  .grid-3 { gap:20px }
  .service-card { padding:28px }
  .service-icon { margin-bottom:22px }
  .service-card h3 { font-size:1.55rem }
  .service-card .text-link { padding-top:7px }
  .split { gap:35px }
  .number-list strong { font-size:1.17rem }
  .table-panel { padding:0 20px }
  .cost-table thead { display:none }
  .cost-table tr { display:block; border-bottom:1px solid var(--line); padding:22px 0 }
  .cost-table tr:last-child { border-bottom:0 }
  .cost-table td { display:block; width:100%!important; padding:4px 0!important; border:0 }
  .cost-table td:first-child { font-size:1.15rem; margin-bottom:5px }
  .cost-table td:last-child { margin-top:7px }
  .cost-table td[data-label]:before { content:attr(data-label) ': '; font-weight:700 }
  .photo-grid img { height:auto; aspect-ratio:4/3; object-position:center }
  .photo-grid figcaption { padding:21px 23px }
  .gallery-nav { gap:9px; margin-bottom:32px }
  .gallery-nav a { font-size:.83rem; padding:10px 15px }
  .gallery-section { margin-bottom:46px }
  .gallery-section h2 { font-size:1.7rem }
  .finish-feature { gap:30px }
  .steps { gap:30px 22px; margin-top:30px }
  .step-no { margin-bottom:18px; width:46px; height:46px }
  .steps h3 { font-size:1.2rem }
  .steps p { font-size:.87rem }
  .contact-band { flex-direction:column; align-items:flex-start; padding:26px; gap:23px; margin-top:36px }
  .quote-layout { gap:30px }
  .quote-form { grid-template-columns:1fr; padding:24px; gap:19px }
  .field { grid-column:1/-1 }
  .file-input { padding:15px }
  .submit-row { align-items:stretch }
  .submit-row .btn { width:100% }
  .site-footer { padding-top:45px }
  .footer-grid>div:first-child { grid-column:1/-1 }
  .footer-bottom { flex-direction:column; gap:9px; margin-top:30px; padding-bottom:30px }
  .page-heading { padding:16px 0 38px }
  .page-heading h1 { font-size:clamp(2rem,7.5vw,2.8rem) }
  .page-heading .lede { font-size:1.04rem }
  .breadcrumb { font-size:.73rem; padding-top:22px }
  .prose h2 { font-size:1.75rem; margin-top:32px }
  .article-layout { padding-bottom:55px; gap:30px }
  .filterbar input { min-width:0; flex-basis:100%; width:100% }
  .detail-links { grid-template-columns:1fr }
}
@media(max-width:480px) {
  body { font-size:16px }
  .wrap { width:calc(100% - 36px) }
  .topbar .wrap { font-size:.72rem; min-height:36px; gap:10px }
  .language { font-size:.7rem; gap:8px }
  .head-row { min-height:80px; padding:15px 0; gap:12px }
  .brand img { width:200px }
  .menu-toggle { font-size:.84rem; padding:7px 10px; gap:7px }
  .head-row>.btn { display:none }
  .assurance-stack { width:106px; top:12px; right:12px; gap:7px }
  .assurance-stack .guarantee-badge { width:104px }
  .hero-title { padding:22px; width:calc(100% - 15px) }
  .hero-body { padding:25px 22px }
  .hero-body .actions { flex-direction:column; align-items:stretch; gap:17px; margin-bottom:20px }
  .hero-body .actions .text-link { justify-content:center }
  .hero-benefits li { font-size:.88rem; padding-left:24px }
  .hero-call { font-size:.78rem }
  .quick-card { padding:19px 17px }
  h2 { font-size:1.95rem }
  .section { padding:48px 0 }
  .section-head { margin-bottom:25px }
  .service-card { padding:25px }
  .quote-form { padding:22px 18px }
  .footer-grid { gap:28px 20px }
  .site-footer h3 { font-size:1rem }
  .site-footer p,.site-footer a { font-size:.82rem }
  .contact-line { font-size:1.55rem }
  .notice { padding:18px 20px }
}
@media(max-width:359px) {
  .wrap { width:calc(100% - 28px) }
  .brand img { width:178px }
  .head-row { gap:10px }
  .menu-toggle { padding:7px 8px }
  .assurance-stack { width:100px; top:10px; right:10px; gap:6px }
  .assurance-stack .guarantee-badge { width:98px }
  .hero-title { padding:20px; width:calc(100% - 12px) }
  .hero-title h1 { font-size:1.9rem }
  .hero-body { padding:24px 18px }
  .quick-card { padding:17px 14px }
  .quick-card strong { font-size:.93rem }
  .steps { grid-template-columns:1fr }
  .section-link .btn { width:100% }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto }
  *,*:before,*:after { transition:none!important; animation:none!important }
}
@media print {
  .site-header,.topbar,.reviewbar,.site-footer,.quote-form,.float-contact,.filterbar,.actions,.sidebar,.quick-nav { display:none!important }
  .wrap { width:100% }
  .article-layout,.hero-grid { display:block }
  .hero-copy { margin:0 }
  .hero-title { width:100%; background:none; color:#000 }
  .hero-body { padding:0; box-shadow:none }
  .hero-figure { display:none }
  .section { padding:20px 0 }
  body { color:#000; background:#fff; font-size:11pt }
  a { color:#000 }
}
