:root {
  --pine: #174a3d;
  --pine-dark: #113b32;
  --pine-deep: #0e2e28;
  --pine-soft: #2e6553;
  --cream: #f8f5ed;
  --cream-deep: #efeadd;
  --paper: #fffefa;
  --text: #252b28;
  --muted: #59645d;
  --cedar: #b6784e;
  --line: #dfdfd3;
  --sans: 'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
  --serif: Georgia, 'Times New Roman', serif;
}
*,*::before,*::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 88px; }
body { margin: 0; background: var(--cream); color: var(--text); font-family: var(--sans); font-size: 16px; line-height: 1.6; }
body.modal-open { overflow: hidden; }
img,svg { max-width: 100%; }
img { display: block; }
button,a { -webkit-tap-highlight-color: transparent; }
button { font: inherit; }
a { color: inherit; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 3px solid #dc9a57; outline-offset: 5px; }
.container { width: min(100% - 80px, 1230px); margin-inline: auto; }
.skip-link { position: fixed; top: -100px; left: 18px; z-index: 100; background: white; padding: 10px 16px; }
.skip-link:focus { top: 12px; }
.topbar { background: var(--pine-deep); color: #f7f1e4; font-size: 11px; font-weight: 650; letter-spacing: .08em; text-transform: uppercase; }
.topbar-inner { display: flex; justify-content: space-between; align-items: center; gap: 20px; min-height: 37px; }
.topbar-right { display: inline-flex; align-items: center; gap: 9px; }
.topbar-dot { width: 6px; height: 6px; background: #93c4a0; border-radius: 50%; }
.site-header { position: relative; z-index: 20; background: var(--cream); border-bottom: 1px solid #e6e5d8; }
.header-inner { display: flex; align-items: center; justify-content: space-between; min-height: 98px; gap: 28px; }
.brand { display: inline-flex; align-items: center; gap: 12px; color: var(--pine); text-decoration: none; flex-shrink: 0; }
.brand-mark { width: 50px; height: 50px; }
.brand-copy { display: flex; flex-direction: column; align-items: center; white-space: nowrap; line-height: 1; }
.brand-name { font-family: var(--serif); font-size: 31px; letter-spacing: .17em; line-height: 1; }
.brand-sub { font-size: 8px; letter-spacing: .27em; font-weight: 800; margin-top: 8px; }
.desktop-nav { display: flex; gap: clamp(15px,2.4vw,35px); align-items: center; }
.desktop-nav a { text-decoration: none; font-size: 13px; font-weight: 700; color: #343c36; white-space: nowrap; transition: color .2s; }
.desktop-nav a:hover { color: var(--cedar); }
.header-call { display: inline-flex; align-items: center; gap: 10px; padding: 14px 17px; background: var(--pine); color: white; text-decoration: none; font-size: 12px; font-weight: 780; white-space: nowrap; transition: background .2s,transform .2s; }
.header-call:hover { background: var(--pine-deep); transform: translateY(-1px); }
.header-call svg,.btn svg { width: 16px; height: 16px; stroke: currentColor; stroke-width: 1.8; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.menu-toggle { display: none; width: 46px; height: 46px; border: 1px solid var(--line); background: transparent; padding: 11px 10px; cursor: pointer; }
.menu-toggle span { display: block; height: 2px; background: var(--pine); margin: 5px 0; transition: transform .2s,opacity .2s; }
.menu-toggle[aria-expanded="true"] span:first-child { transform: translateY(7px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.menu-toggle[aria-expanded="true"] span:last-child { transform: translateY(-7px) rotate(-45deg); }
.mobile-nav[hidden] { display: none; }
.mobile-nav { position: absolute; z-index: 30; left: 0; top: 100%; width: 100%; background: var(--cream); padding: 16px 28px 24px; border-bottom: 2px solid var(--pine); box-shadow: 0 15px 30px #182e2418; }
.mobile-nav a { display: block; padding: 12px 0; border-bottom: 1px solid var(--line); text-decoration: none; font-weight: 700; }

.hero { padding: 74px 0 0; background: #f7f3e9; overflow: hidden; }
.hero-grid { display: grid; grid-template-columns: minmax(0,1.06fr) minmax(0,.94fr); gap: 55px; align-items: center; }
.hero-copy { padding: 0 0 18px; }
.eyebrow,.section-kicker { font-size: 11px; font-weight: 800; letter-spacing: .16em; color: var(--pine-soft); margin: 0 0 24px; text-transform: uppercase; }
.eyebrow { display: flex; align-items: center; gap: 12px; }
.tiny-line { width: 28px; height: 1px; background: var(--cedar); }
h1,h2,h3,p { margin-top: 0; }
h1,h2 { font-family: var(--serif); font-weight: normal; letter-spacing: -.04em; }
h1 { font-size: clamp(51px, 5.45vw, 82px); line-height: 1.05; margin: 0 0 29px; }
h1 em,h2 em { font-weight: normal; color: var(--pine); }
.hero-intro { font-size: 17px; line-height: 1.85; color: var(--muted); max-width: 545px; margin-bottom: 30px; }
.hero-actions { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 22px; text-decoration: none; padding: 15px 23px; min-height: 56px; font-size: 13px; font-weight: 750; transition: transform .2s, background .2s, color .2s; }
.btn:hover { transform: translateY(-2px); }
.btn-green { background: var(--pine); color: white; }
.btn-green:hover { background: var(--pine-deep); }
.btn span:last-child { font-size: 20px; font-weight: 400; line-height: 1; }
.text-link { color: var(--pine); font-size: 13px; font-weight: 800; text-decoration: none; border-bottom: 1px solid #afc2b6; padding: 6px 0 9px; }
.text-link span { margin-left: 10px; }
.text-link:hover { border-color: var(--pine); }
.hero-trust { margin-top: 53px; padding-top: 24px; border-top: 1px solid #dcded0; display: flex; align-items: center; gap: 24px; }
.trust-badge { display: flex; align-items: center; gap: 13px; }
.trust-badge strong { font-family: var(--serif); font-weight: normal; font-size: 47px; line-height: 1; color: var(--pine); letter-spacing: -.08em; }
.trust-badge strong span { font-size: 27px; vertical-align: top; }
.trust-badge>span { text-transform: uppercase; font-weight: 800; line-height: 1.45; letter-spacing: .07em; font-size: 10px; }
.trust-rule { width: 1px; height: 41px; background: #d3d5c7; }
.trust-text { display: flex; align-items: center; gap: 10px; font-size: 11px; font-weight: 800; line-height: 1.65; }
.trust-text small { font-weight: 500; color: var(--muted); font-size: 11px; }
.trust-text svg { width: 29px; height: 29px; stroke: var(--pine); stroke-width: 1.6; fill: none; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
.hero-art { height: 570px; min-width: 0; position: relative; background: linear-gradient(135deg,#1f5647,var(--pine-deep)); overflow: hidden; }
.hero-lines { position: absolute; inset: 0; opacity: .17; background: repeating-linear-gradient(90deg,transparent 0 35px,#f1e5ce 36px 37px,transparent 38px 73px); mask-image: linear-gradient(0deg, transparent,black); }
.hero-picture { position: absolute; background: #c1a483; box-shadow: 0 18px 35px #091a1450; overflow: hidden; }
.hero-picture img { width: 100%; height: 100%; object-fit: cover; }
.hero-picture-main { top: 39px; left: 39px; width: 57%; height: 78%; border: 9px solid #f4e8d3; }
.hero-picture-main img { object-position: 50% 55%; }
.hero-picture-secondary { right: 32px; bottom: 75px; width: 43%; height: 48%; border: 8px solid #f4e8d3; }
.hero-img-label { position: absolute; bottom: 0; left: 0; right: 0; padding: 12px; font-size: 9px; font-weight: 850; letter-spacing: .15em; text-align: center; background: #fbf7eee8; color: var(--pine); }
.hero-side-note { position: absolute; top: 66px; right: 14px; writing-mode: vertical-rl; font-size: 9px; font-weight: 800; letter-spacing: .26em; color: #d9e4cf; }
.hero-stamp { display: flex; align-items: center; position: absolute; bottom: 22px; left: 33px; gap: 12px; color: #f5ebd8; font-size: 9px; letter-spacing: .12em; font-weight: 750; line-height: 1.65; }
.hero-stamp svg { width: 31px; height: 31px; }
.hero-bottom { margin-top: 39px; padding: 19px 0 22px; display: flex; align-items: center; justify-content: space-between; border-top: 1px solid var(--line); font-size: 11px; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.hero-bottom>span { display: inline-flex; align-items: center; gap: 9px; }
.hero-accent { display: block; width: 18px; height: 3px; background: var(--cedar); }
.hero-bottom a { text-decoration: none; color: var(--pine); }
.hero-bottom a span { font-size: 17px; vertical-align: -1px; margin-left: 8px; }

.section { padding: 115px 0; }
.section-heading-row { display: grid; grid-template-columns: minmax(0,1.12fr) minmax(300px,.88fr); gap: clamp(32px,5vw,72px); align-items: center; margin-bottom: 52px; }
h2 { font-size: clamp(42px,4.3vw,62px); line-height: 1.14; margin: 0; }
.section-heading-row h2 { max-width: 740px; }
.section-heading-row-specialty { align-items: center; }
.section-heading-lead { max-width: 720px; }
.section-heading-lead h2 { max-width: 680px; text-wrap: balance; }
.section-accent-rule { display: block; width: 108px; margin-top: 24px; }
.section-accent-rule::before { content: ""; display: block; width: 100%; height: 1px; background: #d2b08f; }
.section-accent-rule::after { content: ""; display: block; width: 30px; height: 3px; margin-top: 10px; background: var(--cedar); }
.section-copy-panel { justify-self: end; align-self: center; max-width: 430px; padding: 16px 0 16px 30px; border-left: 1px solid #dcdcd0; }
.section-dek { color: var(--muted); font-size: 15px; line-height: 1.85; margin-bottom: 4px; }
.section-copy-panel .section-dek { margin: 0; font-size: 16px; line-height: 1.95; max-width: 34ch; }
.fences-section { background: var(--paper); }
.services-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; }
.service-card { display: flex; flex-direction: column; min-height: 363px; border: 1px solid var(--line); padding: 24px 28px 27px; background: #fbfaf5; transition: transform .2s,border-color .2s,box-shadow .2s; overflow: hidden; }
.service-card:hover { transform: translateY(-4px); border-color: #b3c6b8; box-shadow: 0 17px 35px #172a1a0b; }
/* Somerset's illustrated fence series — consistent 3:1 art direction across all six cards. */
.service-art {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 3 / 1;
  height: auto;
  margin-bottom: 18px;
  overflow: hidden;
  background: #dce5da;
  border: 1px solid #e3e6da;
}
.service-art img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform .45s ease;
}
.service-card:hover .service-art img { transform: scale(1.035); }
.service-number { color: #7e967f; font-size: 11px; font-weight: 800; letter-spacing: .12em; }
.service-card h3 { font-family: var(--serif); font-weight: normal; line-height: 1.2; font-size: 28px; margin: 6px 0 12px; letter-spacing: -.025em; }
.service-card p { color: var(--muted); font-size: 13px; line-height: 1.7; margin-bottom: 22px; }
.service-tags { display: block; margin-top: auto; color: var(--pine); font-size: 10px; font-weight: 800; letter-spacing: .1em; }
.service-tags b { font-weight: normal; color: var(--cedar); }
.services-note { display: flex; align-items: center; gap: 19px; margin-top: 25px; padding: 20px 23px; background: #e9f0e9; }
.note-icon { flex-shrink:0;display:flex;align-items:center;justify-content:center;border:1px solid #90ad98;width:39px;height:39px;border-radius:50%;color:var(--pine);font-family:var(--serif);font-size:22px; }
.services-note p { margin:0; font-size:13px; line-height:1.65; color:#475b4e; }
.services-note p strong { color:var(--pine); }
.services-note a { white-space:nowrap; margin-left:auto;color:var(--pine);font-size:12px;text-decoration:none;font-weight:800; }
.services-note a span { margin-left:7px; }

.work-section { background: var(--pine-deep); color: #fffaf0; }
.work-header { display:flex; justify-content:space-between; align-items:end; gap:30px; margin-bottom:43px; }
.light-kicker { color:#a5c8ae; }
.work-header h2 { max-width:700px; }
.work-header h2 em { color:#c5dcb9; }
.work-header p:not(.section-kicker) { font-size:13px; color:#bdcfc4;margin:15px 0 0; }
.filters { display:flex;flex-wrap:wrap;gap:5px;padding:4px;border:1px solid #476459; }
.filter-btn { color:#d6e1d5;background:transparent;border:0;cursor:pointer;padding:10px 14px;font-size:11px;font-weight:750;white-space:nowrap; }
.filter-btn.active { color:var(--pine-deep);background:#f4eada; }
.filter-btn:hover:not(.active) { background:#315c4e; }
.gallery-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px; }
.gallery-tile { position:relative;display:block;cursor:pointer;overflow:hidden;border:0;padding:0;min-width:0;aspect-ratio: .92;background:#294839;text-align:left; }
.gallery-tile[hidden] { display:none!important; }
.gallery-tile img { width:100%;height:100%;object-fit:cover;transition:transform .45s, filter .45s; }
.gallery-tile:hover img,.gallery-tile:focus-visible img { transform:scale(1.065);filter:brightness(.9); }
.gallery-overlay {position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;padding:18px;background:linear-gradient(0deg,#081d19d9,transparent 64%);color:white;}
.gallery-overlay small { font-size:9px;letter-spacing:.15em;font-weight:800;color:#e5e2c7; }
.gallery-overlay strong {font-family:var(--serif);font-size:21px;font-weight:normal;line-height:1.15;margin:7px 0 8px;}
.gallery-overlay>span { font-size:10px;color:#e8ecd9;font-weight:750;letter-spacing:.05em; }
.gallery-footnote { font-size:13px;margin:25px 0 0;text-align:center;color:#c0d0c2; }
.gallery-footnote a { color:#fff5df;font-weight:750;margin-left:5px;text-underline-offset:4px; }

.why-section { background:#f3efe6; }
.why-grid { display:grid; grid-template-columns:1.1fr .9fr; align-items:center;gap:clamp(40px,8vw,130px); }
.why-copy h2 {max-width:600px;margin-bottom:25px;}
.why-copy>p:not(.section-kicker) { color:var(--muted);font-size:15px;line-height:1.9;max-width:565px;margin-bottom:20px; }
.dark-text-link { display:inline-block;margin-top:12px; }
.why-feature { padding:44px 48px; min-height:420px; border:1px solid #d3d5c8; background:#fffdf6;position:relative;box-shadow:18px 18px 0 #e4e6d8; }
.quote-symbol { height:51px;color:var(--cedar);font-family:var(--serif);font-size:91px;line-height:1; }
.why-feature blockquote { margin:38px 0 20px;max-width:410px;font-family:var(--serif);font-size:clamp(25px,2.9vw,39px);line-height:1.23;letter-spacing:-.03em; }
.why-feature>p {color:var(--muted);font-size:11px;font-weight:700; }
.why-feature>p span {font-weight:400;}
.why-stat {display:flex;align-items:center;gap:15px;border-top:1px solid var(--line);padding-top:23px;margin-top:33px;}
.why-stat strong {font-family:var(--serif);font-size:25px;color:var(--pine);font-weight:normal;white-space:nowrap;}
.why-stat span {max-width:170px;font-size:10px;text-transform:uppercase;line-height:1.5;letter-spacing:.06em;color:#617063;font-weight:800;}

.decks-section { background:var(--paper); }
.decks-grid {display:grid;grid-template-columns:1fr 1fr;gap:clamp(45px,8vw,120px);align-items:center;}
.decks-photo { position:relative; height:520px;background:#d5c5af;margin-right:52px; }
.decks-photo>img {width:100%;height:100%;object-fit:cover;}
.decks-secondary {position:absolute;right:-48px;bottom:-38px;width:47%;height:47%;border:9px solid var(--paper);}
.decks-secondary img {width:100%;height:100%;object-fit:cover;}
.decks-photo-label {position:absolute;left:21px;top:23px;background:#153d34dc;color:white;padding:10px 12px;font-size:9px;font-weight:850;letter-spacing:.14em;}
.decks-copy h2 {margin-bottom:24px;}
.decks-copy>p:not(.section-kicker) {font-size:15px;color:var(--muted);line-height:1.85;margin-bottom:24px;}
.deck-list {list-style:none;padding:0;margin:0 0 33px;}
.deck-list li {display:flex;align-items:center;gap:20px;border-bottom:1px solid var(--line);font-size:13px;font-weight:650;padding:12px 0;}
.deck-list li span {font-size:10px;color:var(--cedar);font-weight:850;}
.btn-outline {border:1px solid var(--pine);color:var(--pine);background:transparent;}
.btn-outline:hover {background:var(--pine);color:white;}

.faq-section {background:#ebe9df;}
.faq-grid {display:grid;grid-template-columns: .8fr 1.2fr;gap:clamp(40px,7vw,115px);}
.faq-grid h2 {max-width:415px;}
.faq-intro {margin-top:20px;color:var(--muted);font-size:14px;max-width:300px;}
.faq-list details {border-bottom:1px solid #cdd1c5;padding:0 0 0;}
.faq-list details:first-child {border-top:1px solid #cdd1c5;}
.faq-list summary {display:flex;align-items:center;justify-content:space-between;gap:20px;list-style:none;cursor:pointer;padding:23px 0;font-size:15px;font-weight:750;color:#263b32;}
.faq-list summary::-webkit-details-marker {display:none;}
.faq-list .plus {position:relative;display:inline-flex;width:22px;height:22px;flex-shrink:0;}
.faq-list .plus::before,.faq-list .plus::after {content:'';position:absolute;top:10px;left:4px;width:15px;height:2px;background:var(--pine);transition:transform .2s;}
.faq-list .plus::after {transform:rotate(90deg);}
.faq-list details[open] .plus::after {transform:rotate(0deg);}
.faq-list details>p {color:var(--muted);font-size:14px;max-width:600px;padding-bottom:18px;margin:0;line-height:1.8;}
.faq-list details p a {color:var(--pine);font-weight:700;}

.contact-section {background:var(--pine);color:#f7f2e8;padding:108px 0;position:relative;overflow:hidden;}
.contact-section::before {content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(95deg,transparent 0 75px,#ffffff09 76px 77px,transparent 78px 150px);opacity:.6;}
.contact-grid {position:relative;display:grid;grid-template-columns:1fr .72fr;gap:clamp(55px,10vw,130px);align-items:center;}
.contact-kicker {color:#b8d1bc;}
.contact-copy h2 {font-size:clamp(48px,5.1vw,72px);max-width:640px;margin-bottom:25px;}
.contact-copy h2 em {color:#d5e3c7;}
.contact-copy>p:not(.section-kicker) {font-size:16px;max-width:540px;color:#d5e4d8;line-height:1.85;margin-bottom:29px;}
.btn-cream {background:#f3e9d7;color:var(--pine-deep);gap:12px;}
.btn-cream:hover {background:white;}
.btn-cream span:last-child {margin-left:12px;}
.contact-card {padding:31px 38px 28px;background:#f8f5ec;color:var(--pine-deep);box-shadow:20px 20px 0 #ffffff12;}
.contact-card-head {display:flex;align-items:center;justify-content:space-between;padding-bottom:25px;border-bottom:1px solid var(--line);margin-bottom:31px;font-size:10px;font-weight:850;letter-spacing:.18em;}
.contact-card-head svg {width:29px;height:29px;color:var(--pine);}
.contact-label {margin-bottom:6px;font-size:10px;color:#64756a;font-weight:850;letter-spacing:.15em;}
.contact-number {display:inline-block;margin-bottom:31px;font-family:var(--serif);font-size:clamp(27px,3vw,40px);text-decoration:none;letter-spacing:-.04em;line-height:1.2;white-space:nowrap;}
.contact-number:hover {text-decoration:underline;text-underline-offset:5px;}
.contact-card address {font-style:normal;font-size:15px;line-height:1.8;margin:0 0 31px;}
.contact-card-footer {display:flex;justify-content:space-between;gap:15px;padding-top:23px;border-top:1px solid var(--line);color:var(--pine);font-size:10px;font-weight:800;}
.site-footer {background:#092921;color:#b7c8bc;padding:43px 0;}
.footer-grid {display:grid;grid-template-columns:1.2fr .85fr 1fr;gap:50px;align-items:start;}
.footer-brand {font-family:var(--serif);font-size:24px;letter-spacing:.12em;color:#f7f0e4;text-decoration:none;white-space:nowrap;}
.footer-brand small {display:block;font:800 8px var(--sans);letter-spacing:.23em;margin-left:30px;margin-top:-1px;}
.footer-flower {font-size:29px;vertical-align:-2px;margin-right:5px;}
.site-footer p {font-size:11px;line-height:1.6;margin:13px 0 0;}
.footer-links {display:grid;grid-template-columns:repeat(2,max-content);gap:12px 28px;padding-top:7px;}
.footer-links a,.footer-end a {font-size:11px;color:#d8e3d6;text-decoration:none;}
.footer-links a:hover,.footer-end a:hover {color:white;text-decoration:underline;}
.footer-end {text-align:right;}
.footer-end p {margin:0 0 8px;}
.footer-end a {display:inline-block;margin-top:9px;}

.lightbox { width:min(90vw,930px); max-height:92vh; padding:20px; color:#fcf8ef;background:#112e27;border:1px solid #607267;box-shadow:0 30px 100px #0009; }
.lightbox::backdrop {background:#07160edb;}
.lightbox-bar {display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;color:#bbcabb;font-size:11px;font-weight:750;letter-spacing:.1em;}
.lightbox-close {border:1px solid #678071;background:none;color:white;cursor:pointer;padding:7px 11px;font-size:18px;}
.lightbox-frame {position:relative;display:flex;align-items:center;justify-content:center;height:min(68vh,650px);background:#1f3f32;}
.lightbox-frame img {width:100%;height:100%;object-fit:contain;}
.lightbox-arrow {position:absolute;z-index:3;top:50%;transform:translateY(-50%);background:#f5efece6;border:0;color:var(--pine-deep);width:42px;height:53px;cursor:pointer;font-size:29px;}
.lightbox-arrow.prev {left:8px;}
.lightbox-arrow.next {right:8px;}
.lightbox-caption {padding-top:14px;}
.lightbox-caption strong {font-family:var(--serif);font-weight:normal;font-size:23px;}
.lightbox-caption p {font-size:12px;color:#c0cec2;margin:3px 0 0;}


/* --------------------------------------------------------------
   v0002 / restrained craftsmanship details
   Keep the original layout; accents should stay secondary to work.
   -------------------------------------------------------------- */
.desktop-nav a {
  position: relative;
  padding-block: 8px;
  background-image: linear-gradient(var(--cedar), var(--cedar));
  background-size: 0 2px;
  background-position: 0 calc(100% - 2px);
  background-repeat: no-repeat;
  transition: color .22s ease, background-size .26s ease;
}
.desktop-nav a:hover, .desktop-nav a:focus-visible { background-size: 100% 2px; }
.section-kicker::before {
  content: '';
  display: inline-block;
  width: 13px;
  height: 2px;
  margin-right: 9px;
  background: var(--cedar);
  vertical-align: middle;
  transform: translateY(-2px);
}
.hero-art::after {
  content: '';
  position: absolute;
  top: 13px;
  right: 13px;
  width: 43px;
  height: 43px;
  border-top: 2px solid #ddb68b;
  border-right: 2px solid #ddb68b;
  opacity: .72;
  pointer-events: none;
}
.fence-flourish { display: none; }
.service-card { position: relative; }
.service-card::before {
  content: '';
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--cedar), #dab28b);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .3s ease;
}
.service-card:hover::before { transform: scaleX(1); }
.service-number { display: inline-flex; align-items: center; gap: 8px; }
.service-number::before {
  content: '';
  display: inline-block;
  width: 13px;
  height: 1px;
  background: #c79b74;
}
.gallery-tile::after {
  content: '';
  position: absolute;
  inset: 10px;
  z-index: 2;
  border: 1px solid #fff4dfb0;
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
}
.gallery-tile:hover::after, .gallery-tile:focus-visible::after { opacity: 1; }
.why-feature::before {
  content: '';
  position: absolute;
  width: 57px;
  height: 3px;
  top: -2px;
  left: 48px;
  background: var(--cedar);
}
.btn span:last-child { transition: transform .2s ease; }
.btn:hover span:last-child { transform: translate(2px,-2px); }
.faq-list details { border-left: 2px solid transparent; padding-left: 14px; }
.faq-list details[open] { border-left-color: var(--cedar); }
.faq-list details[open] summary { color: var(--pine); }
.contact-watermark {
  position: absolute;
  top: -126px;
  right: -100px;
  width: min(42vw, 430px);
  height: auto;
  color: #f4ead6;
  opacity: .07;
  transform: rotate(-12deg);
  pointer-events: none;
}
@media (max-width: 700px) {
  .why-feature::before { left: 30px; }
  .contact-watermark { top: -40px; right: -85px; width: 280px; opacity: .055; }
}

@media (max-width: 1180px) {
  .container {width:min(100% - 52px,1100px);}
  .header-inner {gap:16px;}
  .brand-mark {width:43px;height:43px;}
  .brand-name {font-size:27px;}
  .desktop-nav {gap:18px;}
  .header-call {padding:13px;}
  .hero-grid {gap:32px;}
  .hero-art {height:530px;}
  .hero-picture-main {left:30px;}
  .hero-picture-secondary {right:24px;}
}
@media (max-width: 990px) {
  .header-call {font-size:0;gap:0;padding:13px;}
  .header-call svg {width:20px;height:20px;}
  .desktop-nav {gap:18px;}
  .hero {padding-top:54px;}
  .hero-grid {grid-template-columns:1.05fr .95fr;gap:25px;}
  h1 {font-size:clamp(44px,5.6vw,60px);}
  .hero-intro {font-size:15px;line-height:1.75;}
  .hero-actions {gap:17px;}
  .hero-art {height:480px;}
  .hero-picture-main {border-width:6px;left:24px;top:35px;}
  .hero-picture-secondary {border-width:6px;right:17px;bottom:73px;}
  .section {padding:85px 0;}
  .section-copy-panel {padding-left:24px;}
  .service-card {padding:19px 20px;}
  .service-card h3 {font-size:25px;}
  .why-grid,.decks-grid {gap:55px;}
  .decks-photo {height:440px;}
}
@media (max-width: 900px) {
  .desktop-nav,.header-call {display:none;}
  .menu-toggle {display:block;}
  .header-inner {min-height:78px;}
  .hero-grid {grid-template-columns:1fr 1fr;}
  .hero-trust {gap:15px;margin-top:34px;}
  .trust-badge strong {font-size:39px;}
  .trust-badge>span {font-size:9px;}
  .trust-text {font-size:9px;}
  .trust-text svg {width:24px;height:24px;}
  .services-grid {grid-template-columns:repeat(2,minmax(0,1fr));}
  .gallery-grid {grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;}
  .gallery-overlay {padding:12px;}
  .gallery-overlay strong {font-size:17px;}
  .work-header {align-items:flex-start;flex-direction:column;}
  .why-grid {grid-template-columns:1fr 1fr;gap:35px;}
  .why-feature {padding:32px 30px;min-height:375px;}
  .decks-grid {grid-template-columns: .9fr 1.1fr;gap:44px;}
  .decks-photo {height:400px;margin-right:26px;}
  .decks-secondary {right:-32px;}
  .footer-grid {gap:20px;}
}
@media (max-width: 700px) {
  .container {width:min(100% - 36px,600px);}
  .topbar-inner {min-height:30px;justify-content:center;text-align:center;}
  .topbar-inner>span:first-child {display:none;}
  .topbar {font-size:10px;}
  .brand-name {font-size:26px;}
  .brand-sub {font-size:7px;}
  .brand-mark {width:43px;height:43px;}
  .hero {padding-top:48px;}
  .hero-grid {grid-template-columns:1fr;gap:40px;}
  h1 {font-size:clamp(46px,10vw,68px);}
  .hero-intro {font-size:15px;}
  .hero-copy {padding:0;}
  .hero-trust {margin-top:35px;}
  .hero-art {height:520px;}
  .hero-picture-main {left:33px;top:30px;width:55%;}
  .hero-picture-secondary {right:32px;width:43%;}
  .hero-bottom {font-size:10px;margin-top:20px;}
  .section {padding:74px 0;}
  .section-heading-row {grid-template-columns:1fr;gap:20px;margin-bottom:30px;}
  h2 {font-size:clamp(39px,8vw,52px);}
  .section-copy-panel {max-width:none;justify-self:stretch;padding:18px 0 0;border-left:0;border-top:1px solid var(--line);}
  .section-accent-rule {width:82px;margin-top:18px;}
  .section-dek {font-size:14px;}
  .section-copy-panel .section-dek {font-size:14px;line-height:1.85;max-width:none;}
  .services-grid {grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
  .service-card {padding:17px;min-height:315px;}
  .service-card h3 {font-size:23px;}
  .service-art {height:auto;}
  .service-card p {font-size:12px;}
  .service-tags {font-size:9px;}
  .services-note {align-items:flex-start;flex-wrap:wrap;gap:12px;}
  .services-note p {flex:1 1 75%;}
  .services-note a {margin-left:50px;}
  .gallery-grid {grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;}
  .gallery-tile {aspect-ratio:1;}
  .gallery-overlay strong {font-size:19px;}
  .why-grid,.decks-grid,.faq-grid,.contact-grid {grid-template-columns:1fr;}
  .why-grid {gap:45px;}
  .why-feature {min-height:0;}
  .decks-grid {gap:70px;}
  .decks-photo {height:420px;margin-right:36px;}
  .faq-grid {gap:28px;}
  .contact-section {padding:80px 0;}
  .contact-grid {gap:35px;}
  .contact-copy h2 {font-size:clamp(45px,9vw,66px);}
  .contact-card {max-width:520px;}
  .footer-grid {grid-template-columns:1fr 1fr;gap:30px 25px;}
  .footer-end {text-align:left;grid-column:1 / -1;}
}
@media (max-width: 430px) {
  .container {width:calc(100% - 30px);}
  .brand {gap:7px;}
  .brand-mark {width:35px;height:35px;}
  .brand-name {font-size:23px;}
  .brand-sub {font-size:6px;letter-spacing:.22em;}
  .hero-actions {align-items:stretch;flex-direction:column;gap:15px;}
  .hero-actions .btn {width:100%;justify-content:space-between;}
  .hero-actions .text-link {align-self:flex-start;}
  .hero-trust {gap:11px;}
  .trust-badge {gap:8px;}
  .trust-badge strong {font-size:33px;}
  .trust-badge>span {font-size:8px;}
  .trust-text {gap:5px;font-size:8px;}
  .trust-text small {font-size:9px;}
  .trust-rule {height:39px;}
  .hero-art {height:425px;}
  .hero-picture-main {left:20px;top:29px;}
  .hero-picture-secondary {right:18px;bottom:71px;}
  .hero-side-note {right:8px;font-size:7px;}
  .hero-stamp {left:21px;font-size:8px;}
  .hero-bottom {gap:10px;}
  .hero-bottom a {text-align:right;}
  .services-grid {grid-template-columns:1fr;}
  .service-card {min-height:0;}
  .service-art {height:auto;}
  .service-card h3 {font-size:27px;}
  .service-card p {font-size:13px;}
  .service-tags {margin-top:5px;}
  .work-header h2 {font-size:41px;}
  .filters {max-width:100%;}
  .filter-btn {font-size:10px;padding:9px 10px;}
  .gallery-overlay {padding:10px;}
  .gallery-overlay strong {font-size:17px;}
  .gallery-overlay small {font-size:8px;}
  .decks-photo {height:325px;}
  .decks-secondary {border-width:5px;}
  .contact-card {padding:24px;}
  .contact-number {font-size:29px;}
  .contact-card-footer {font-size:9px;}
  .footer-grid {grid-template-columns:1fr;gap:25px;}
  .footer-end {grid-column:auto;}
  .lightbox {padding:10px;width:96vw;}
  .lightbox-frame {height:65vh;}
  .lightbox-arrow {width:34px;height:44px;}
}
@media (prefers-reduced-motion: reduce) { *,*::before,*::after {scroll-behavior:auto!important;transition:none!important;animation:none!important;} }

/* v0005: photo portfolio — category filters and progressive reveal. */
.gallery-controls {display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:22px;}
.gallery-controls .filters {max-width:100%;}
.filter-count {display:inline-block;margin-left:7px;color:inherit;opacity:.64;font-size:10px;}
.gallery-summary {color:#c3d6c8;font-size:11px;letter-spacing:.04em;white-space:nowrap;}
.gallery-tile {aspect-ratio: 1.04;}
.gallery-more {display:flex;justify-content:center;margin-top:28px;}
.gallery-more-btn {border:1px solid #a6bfae;color:#f7f1e4;background:transparent;cursor:pointer;padding:13px 26px;font-size:12px;font-weight:800;letter-spacing:.05em;transition:background .2s,color .2s,border-color .2s;}
.gallery-more-btn:hover,.gallery-more-btn:focus-visible {background:#f7f1e4;color:var(--pine-deep);border-color:#f7f1e4;}
.gallery-more-btn span {margin-left:14px;font-size:16px;}
.gallery-more-btn[hidden] {display:none;}
.hero-picture-main img {object-position:50% 47%;}
.hero-picture-secondary img {object-position:50% 50%;}
.decks-photo>img {object-position:50% 50%;}
@media(max-width:700px){.gallery-controls{align-items:flex-start;flex-direction:column;gap:13px;}.gallery-grid{gap:10px;}.filter-btn{padding:9px 12px;}.gallery-summary{font-size:10px;}}
@media(max-width:430px){.gallery-controls .filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;}.filter-btn{white-space:nowrap;}}

/* v0007: restrained Google Business / Facebook profile connections */
.contact-profiles {
  border-top: 1px solid var(--line);
  padding-top: 22px;
  margin: 2px 0 24px;
}
.contact-profiles .contact-label { margin: 0 0 11px; }
.profile-links { display: flex; flex-wrap: wrap; gap: 9px; }
.profile-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 11px 12px;
  min-height: 42px;
  border: 1px solid #d4dbd0;
  background: #fffef9;
  color: var(--pine);
  font-size: 11px;
  font-weight: 750;
  line-height: 1.2;
  text-decoration: none;
  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}
.profile-link svg {
  flex: 0 0 auto;
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.profile-link:hover { background: #eef3e9; border-color: #8baa95; transform: translateY(-1px); }
.profile-arrow { margin-left: 1px; font-size: 13px; font-weight: 400; }
.facebook-letter {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 15px;
  height: 15px;
  font-family: Arial, sans-serif;
  font-size: 17px;
  font-weight: 900;
  line-height: 1;
}
@media (max-width: 430px) {
  .profile-links { gap: 8px; }
  .profile-link { font-size: 11px; }
}

/* v0008: verified service area and opening hours. Keeps fencing front-and-center. */
.contact-card-head { margin-bottom: 25px; }
.contact-number { margin-bottom: 22px; }
.business-facts { border-top: 1px solid var(--line); padding-top: 16px; margin-bottom: 20px; }
.business-fact + .business-fact { margin-top: 18px; }
.business-fact .contact-label { margin: 0 0 4px; }
.business-fact-value { margin: 0; font-size: 16px; font-weight: 750; color: var(--pine-deep); }
.business-hours { display: grid; grid-template-columns: 1fr auto; column-gap: 16px; row-gap: 4px; margin: 0; font-size: 12px; line-height: 1.65; }
.business-hours dt { color: #4e6257; }
.business-hours dd { margin: 0; color: var(--pine-deep); font-weight: 750; text-align: right; }
.business-fact-mail { padding-top: 12px; border-top: 1px solid #e7e6d9; }
.business-fact-mail address { color: #536359; font-size: 12px; line-height: 1.5; margin-bottom: 0; }
.contact-profiles { margin-top: 0; }
@media (max-width: 430px) {
  .business-hours { grid-template-columns: 1fr auto; font-size: 11px; }
  .business-facts { margin-bottom: 17px; }
}
