@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&display=swap');

:root { --white:#fff; --grey:#f5f5f5; --ink:#222321; --muted:#5c5e59; --line:#dedfdb; --accent:#bfe560; --accent-hover:#aed548; --accent-dark:#426015; --radius:18px; --content:1180px; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:164px; }
body { margin:0; color:var(--ink); background:var(--white); font-family:'DM Sans',Arial,sans-serif; font-size:1.0625rem; line-height:1.65; -webkit-font-smoothing:antialiased; }
body.menu-open { overflow:hidden; }
img { display:block; max-width:100%; height:auto; }
a { color:inherit; text-decoration-thickness:1px; text-underline-offset:5px; }
button, input, textarea { font:inherit; }
button, a { -webkit-tap-highlight-color:transparent; }
button { cursor:pointer; }
button:disabled { cursor:default; opacity:.4; }
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible { outline:3px solid var(--accent-dark); outline-offset:5px; }
h1,h2,h3,p,figure { margin:0; }
h1,h2,h3 { line-height:1.12; letter-spacing:-.045em; font-weight:600; text-wrap:balance; }
h1 { font-size:clamp(2.7rem,5.1vw,4.6rem); }
h2 { font-size:clamp(2.1rem,3.45vw,3.15rem); }
h3 { font-size:1.45rem; }
p { color:var(--muted); }
p+p { margin-top:16px; }
.container { width:min(var(--content),calc(100% - 80px)); margin-inline:auto; }
.section { padding-block:100px; }
.section-grey { background:var(--grey); }
.eyebrow { font-size:.84rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--ink); margin-bottom:18px; }
.eyebrow.light { color:#fff; }
.accent-dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--accent); margin-right:9px; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:24px; background:var(--accent); color:var(--ink); min-height:54px; padding:13px 24px; border:1px solid transparent; border-radius:100px; font-weight:600; font-size:.94rem; line-height:1.4; text-decoration:none; box-shadow:0 3px 0 var(--ink); transition:background .18s,transform .18s; }
.button:hover { background:var(--accent-hover); transform:translateY(-2px); }
.button-small { min-height:46px; padding:10px 19px; font-size:.85rem; gap:16px; }
.button-with-icon { gap:10px; }
.button-icon { width:22px; height:22px; flex-shrink:0; }
.button-white { background:#fff; color:var(--ink); box-shadow:none; }
.button-white:hover { background:#eee; }
.button-dark { background:var(--ink); color:#fff; box-shadow:none; }
.button-dark:hover { background:#3d3f39; }
.button-dark .button-icon,.hero-foot .link-icon { filter:brightness(0) invert(1); }
.button-row { display:flex; flex-wrap:wrap; gap:15px; align-items:center; margin-top:32px; }
.text-link { display:inline-flex; align-items:center; gap:20px; font-weight:600; text-decoration:none; }
.text-link:hover { text-decoration:underline; }
.inline-icon-link { display:inline-flex; align-items:center; gap:10px; }
.link-icon { display:inline-block; width:22px; height:22px; flex-shrink:0; vertical-align:middle; }
.skip-link { position:absolute; top:-100px; left:20px; padding:12px 20px; background:var(--accent); color:var(--ink); z-index:100; }
.skip-link:focus { top:15px; }
.site-header { position:sticky; top:0; z-index:30; background:#fff; border-bottom:1px solid #ededeb; }
.header-call-bar { display:flex; align-items:center; justify-content:center; padding:2px 20px; background:#000; color:var(--accent); }
.header-call-link { display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:44px; padding:8px 12px; font-size:1rem; font-weight:700; line-height:1.4; text-decoration:none; border-radius:6px; }
.header-call-link img { width:20px; height:20px; flex-shrink:0; }
.header-call-link:hover { text-decoration:underline; }
.header-call-link:focus-visible { outline-color:var(--accent); outline-offset:0; }
.header-inner { min-height:94px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.brand { display:inline-block; flex-shrink:0; }
.brand img { width:146px; }
.main-nav { display:flex; align-items:center; gap:24px; }
.main-nav>a:not(.button) { font-size:1.125rem; font-weight:700; font-style:italic; line-height:1.25; letter-spacing:-.02em; text-transform:uppercase; white-space:nowrap; text-decoration:none; }
.main-nav>.button { font-size:1rem; font-weight:700; }
.main-nav>a:not(.button):hover { text-decoration:underline; }
.menu-toggle { display:none; }
.hero { position:relative; isolation:isolate; width:100%; margin:0; border-radius:0; overflow:hidden; color:#fff; background:#30332c; }
.hero-image,.hero-shade { position:absolute; inset:0; width:100%; height:100%; z-index:-2; }
.hero-image { object-fit:cover; object-position:50% 49%; }
.hero-shade { z-index:-1; background:linear-gradient(90deg,rgba(15,20,15,.87) 0%,rgba(15,20,15,.68) 39%,rgba(15,20,15,.08) 82%); }
.hero-content { padding-block:74px 36px; }
.hero-copy { margin-top:25px; max-width:470px; font-size:1.08rem; color:#f1f2ed; }
.hero-foot { display:flex; gap:28px; margin-top:56px; font-size:.82rem; color:#e0e2dc; }
.hero-foot a { color:#fff; }
.photo-label { position:absolute; bottom:33px; right:32px; color:#fff; font-size:.75rem; }
.photo-label span { margin-inline:8px; }
.about-grid { display:grid; grid-template-columns:.95fr 1.05fr; align-items:center; gap:80px; }
.about-photo { border-radius:var(--radius); overflow:hidden; background:var(--grey); }
.about-photo img { aspect-ratio:1/1; object-fit:cover; object-position:center; }
.about-photo figcaption { padding:20px 24px; font-size:.9rem; font-weight:500; }
.about-grid h2 { margin-bottom:25px; }
.reasons { margin-top:30px; display:grid; gap:20px; }
.reasons>div { display:flex; gap:18px; border-top:1px solid var(--line); padding-top:20px; }
.reason-icon { display:grid; place-items:center; flex:0 0 48px; width:48px; height:48px; border-radius:14px; background:var(--accent); }
.reason-icon img { width:28px; height:28px; }
.reasons h3 { font-size:1.1rem; letter-spacing:-.025em; margin-bottom:7px; }
.reasons p { font-size:.95rem; }
.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:48px; margin-bottom:40px; }
.section-heading>p { max-width:360px; font-size:1rem; }
.service-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.service-card { padding:12px; background:#fff; border-radius:var(--radius); display:flex; flex-direction:column; }
.service-card>img { width:100%; aspect-ratio:1.37; object-fit:cover; border-radius:10px; }
.service-content { padding:22px 14px 16px; display:flex; flex-direction:column; flex:1; }
.small-label { font-size:.77rem; color:var(--muted); margin-bottom:10px; }
.service-content h3 { margin-bottom:13px; }
.service-content p { font-size:.98rem; margin-bottom:22px; }
.service-content .text-link { font-size:.93rem; margin-top:auto; justify-content:flex-start; gap:10px; }
.section-action { text-align:center; margin-top:38px; }
.mid-cta { background:var(--accent); padding-block:65px; }
.mid-cta-inner { display:flex; align-items:center; justify-content:space-between; gap:70px; }
.mid-cta h2 { font-size:clamp(2rem,3.1vw,2.85rem); }
.mid-cta p:not(.eyebrow) { max-width:530px; margin-top:20px; color:var(--ink); }
.mid-cta .button { flex-shrink:0; }
.gallery-wrap { position:relative; max-width:1440px; padding-inline:22px; margin:auto; }
.gallery-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.gallery-grid figure { min-width:0; }
.gallery-link { display:block; position:relative; overflow:hidden; border-radius:12px; background:var(--grey); }
.gallery-link img { aspect-ratio:1.4; width:100%; object-fit:cover; transition:transform .25s; }
.gallery-link:hover img { transform:scale(1.035); }
.gallery-brand { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:140px; height:140px; border-radius:50%; background:#fff; display:grid; place-items:center; border:4px solid var(--accent); box-shadow:0 5px 25px #0000000c; pointer-events:none; }
.gallery-brand img { width:108px; }
.review-summary { flex-shrink:0; }
.review-summary-brand { display:flex; align-items:center; gap:18px; }
.review-summary-brand .google-wordmark { width:100px; padding:5px 7px; border-radius:5px; background:#fff; }
.review-summary strong { font-size:2rem; font-weight:600; line-height:1; }
.review-summary strong>span { font-size:1rem; font-weight:400; color:var(--muted); }
.review-summary>p { margin:8px 0 4px; font-size:.94rem; }
.review-summary>a { font-size:.85rem; }
.review-track { display:flex; gap:20px; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scroll-padding-inline:max(40px,calc((100vw - var(--content))/2)); padding:0 max(40px,calc((100vw - var(--content))/2)) 22px; scrollbar-color:#a3a49d #e6e7e2; scrollbar-width:thin; }
.review-card { display:flex; flex-direction:column; flex:0 0 367px; padding:28px; background:#fff; border-radius:14px; scroll-snap-align:start; align-self:stretch; }
.review-card-head { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:42px; margin-bottom:18px; }
.review-person { display:flex; align-items:center; gap:12px; }
.review-avatar { display:grid; place-items:center; width:42px; height:42px; border-radius:50%; background:#f1f1ed; font-weight:500; font-size:1rem; }
.review-person h3 { font-size:1rem; letter-spacing:0; font-weight:600; }
.review-stars { color:var(--accent-dark); font-size:1rem; letter-spacing:1px; white-space:nowrap; }
.review-excerpt { height:10.2em; flex-shrink:0; font-size:.97rem; line-height:1.7; margin-bottom:16px; }
.review-card blockquote,.review-dialog blockquote { margin:0; font-size:.97rem; line-height:1.7; color:#474943; }
.review-card blockquote p,.review-dialog blockquote p { color:inherit; }
.review-preview { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:6; overflow:hidden; overflow-wrap:anywhere; }
.review-more,.review-more-spacer { min-height:24px; }
.review-more summary { cursor:pointer; font-size:.85rem; line-height:24px; text-decoration:underline; text-underline-offset:4px; }
.review-full-content { padding-top:16px; }
.review-full-content blockquote p { white-space:pre-line; overflow-wrap:anywhere; }
.owner-response { padding:14px; background:var(--grey); margin-top:20px; border-radius:8px; }
.owner-response strong { display:block; font-size:.8rem; font-weight:600; margin-bottom:5px; }
.owner-response p { font-size:.85rem; white-space:pre-line; }
.review-source { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-top:auto; padding-top:18px; border-top:1px solid var(--line); font-size:.8rem; text-decoration:none; }
.review-card>.review-source { margin-top:20px; }
.google-wordmark { width:76px; height:auto; flex-shrink:0; }
.review-source>span { display:inline-flex; align-items:center; gap:6px; }
.review-source:hover>span { text-decoration:underline; }
.review-source .link-icon { width:18px; height:18px; }
.review-dialog { width:min(640px,calc(100vw - 32px)); max-height:85dvh; overflow-y:auto; border:0; border-radius:18px; padding:28px; color:var(--ink); background:#fff; }
.review-dialog::backdrop { background:#151713c9; }
.review-dialog-heading { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:18px; }
.review-dialog-heading h2 { font-size:1.65rem; }
.review-dialog-heading .round-button { flex-shrink:0; }
.review-dialog-rating { margin-bottom:10px; }
.review-dialog .review-source { margin-top:24px; }
.rating-only { font-size:.94rem; }
.review-toolbar { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-top:24px; }
.review-note { font-size:.78rem; }
.slider-controls { display:flex; gap:10px; }
.round-button { display:grid; place-items:center; border:1px solid #c9cbc4; background:#fff; width:46px; height:46px; border-radius:50%; color:var(--ink); font-size:1.3rem; padding:0; }
.round-button:hover:not(:disabled) { background:var(--accent); border-color:var(--accent); }
.faq-grid { display:grid; grid-template-columns:.8fr 1.2fr; gap:100px; }
.faq-grid>div>p:not(.eyebrow) { max-width:340px; margin-top:22px; }
.faq-grid .text-link { margin-top:25px; font-size:.95rem; }
.faq-list { border-top:1px solid var(--line); }
.faq-list details { border-bottom:1px solid var(--line); }
.faq-list summary { display:flex; align-items:center; justify-content:space-between; gap:20px; list-style:none; cursor:pointer; font-weight:500; line-height:1.45; padding:22px 0; }
.faq-list summary::-webkit-details-marker { display:none; }
.faq-list summary::after { content:'+'; font-size:1.4rem; font-weight:400; }
.faq-list details[open] summary::after { content:'−'; }
.faq-list details>div { padding:0 28px 22px 0; font-size:1rem; }
.faq-list details a { display:inline-block; margin-top:12px; }
.contact-grid { display:grid; grid-template-columns:.9fr 1.1fr; gap:85px; align-items:start; }
.contact-copy { padding-top:24px; }
.contact-copy>p:not(.eyebrow) { margin-top:22px; }
.contact-details { margin-top:32px; }
.contact-details>a { display:flex; align-items:center; gap:16px; text-decoration:none; border-top:1px solid var(--line); padding:18px 0; font-size:1.1rem; }
.contact-details>a:hover { text-decoration:underline; }
.contact-icon { display:grid; place-items:center; flex:0 0 48px; width:48px; height:48px; border-radius:14px; background:var(--accent); }
.contact-icon-image { width:24px; height:24px; }
.contact-text { min-width:0; overflow-wrap:anywhere; }
.contact-label { display:block; color:var(--muted); font-size:.875rem; margin-bottom:3px; }
.contact-copy .contact-tip { font-size:.85rem; }
.form-panel { background:#fff; border-radius:var(--radius); padding:30px; }
.form-panel>p { font-size:.9rem; margin-top:10px; }
.form-panel iframe { display:block; margin-top:20px; min-height:734px; }
.form-panel p.embed-help { font-size:.8rem; }
.site-footer { padding-top:65px; background:#fff; }
.footer-grid { display:grid; grid-template-columns:1.15fr .7fr 1fr; gap:38px; }
.footer-grid>* { min-width:0; overflow-wrap:anywhere; }
.footer-brand img { width:160px; margin-bottom:22px; }
.footer-brand p { font-size:.91rem; max-width:270px; }
.social-links { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:20px; }
.social-link { display:grid; place-items:center; width:48px; height:48px; border-radius:8px; text-decoration:none; }
.social-link:hover { background:var(--grey); }
.social-links .social-logo { width:32px; height:32px; margin:0; object-fit:contain; }
.footer-grid h3 { font-size:.95rem; letter-spacing:-.02em; margin-block:12px 24px; }
.footer-grid nav>a { display:block; text-decoration:none; margin-top:9px; color:var(--muted); font-size:.88rem; }
.footer-grid nav>a:hover { text-decoration:underline; }
address { display:flex; flex-direction:column; gap:12px; font-style:normal; font-size:.85rem; color:var(--muted); }
address strong { color:var(--ink); font-weight:500; }
address a { text-decoration:none; }
address a:hover { text-decoration:underline; }
.footer-map { grid-column:1 / -1; }
.footer-map iframe { display:block; width:100%; height:450px; border:0; border-radius:12px; background:var(--grey); }
.footer-map>a { display:inline-flex; font-size:.78rem; margin-top:10px; }
.footer-bottom { border-top:1px solid var(--line); padding-block:22px; margin-top:48px; display:flex; justify-content:space-between; gap:20px; font-size:.75rem; color:var(--muted); }
.gallery-dialog { width:min(1080px,calc(100vw - 32px)); max-height:95dvh; border:0; border-radius:16px; padding:18px; background:#fff; color:var(--ink); }
.gallery-dialog::backdrop { background:#151713ed; }
.lightbox-top,.lightbox-bottom { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.lightbox-top { padding-bottom:14px; font-size:.9rem; }
.lightbox-bottom { padding-top:14px; }
.lightbox-bottom p { font-size:.9rem; text-align:center; }
.gallery-dialog .round-button { flex-shrink:0; }
#lightbox-image { max-height:calc(90dvh - 170px); width:100%; object-fit:contain; background:var(--grey); }
.page-intro { padding-block:75px 58px; background:var(--grey); }
.breadcrumb { font-size:.8rem; margin-bottom:24px; }
.page-intro h1 { max-width:800px; font-size:clamp(2.8rem,5vw,4.2rem); }
.page-intro p { max-width:660px; margin-top:24px; }
.service-jump { display:flex; flex-wrap:wrap; gap:10px; margin-top:32px; }
.service-jump a { display:inline-flex; border:1px solid #cbcdc6; border-radius:100px; padding:9px 18px; text-decoration:none; font-size:.9rem; }
.service-jump a:hover { background:var(--accent); border-color:var(--accent); }
.service-detail { display:grid; grid-template-columns:1fr 1fr; align-items:start; gap:70px; }
.service-detail>img { width:100%; aspect-ratio:1.2; object-fit:cover; border-radius:var(--radius); }
.service-detail h2 { margin-bottom:22px; }
.service-list { list-style:none; margin:24px 0 0; padding:0; }
.service-list>li { padding-block:20px; border-top:1px solid var(--line); }
.service-list h3 { font-size:1.12rem; letter-spacing:-.02em; margin-bottom:7px; }
.service-list p { font-size:.97rem; }
.service-detail .button { margin-top:26px; }
.service-secondary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin-top:35px; }
.service-secondary article { padding:28px; border:1px solid var(--line); border-radius:14px; }
.service-secondary h3 { font-size:1.25rem; margin-bottom:12px; }
.service-secondary p { font-size:.97rem; }
@media (max-width:1050px) { .main-nav { gap:18px; } .main-nav .button { max-width:200px; } .about-grid { gap:40px; } .photo-label { display:none; } }
@media (max-width:1024px) {
  html { scroll-padding-top:148px; }
  .header-inner { min-height:80px; } .brand img { width:126px; }
  .menu-toggle { display:flex; align-items:center; gap:12px; background:#fff; color:var(--ink); border:1px solid var(--line); border-radius:100px; padding:10px 16px; font-size:1rem; font-weight:700; text-transform:uppercase; min-height:44px; }
  .menu-lines { width:17px; height:10px; border-top:1px solid; border-bottom:1px solid; }
  .main-nav { display:none; position:absolute; left:0; top:100%; width:100%; max-height:calc(100dvh - 128px); overflow-y:auto; overscroll-behavior:contain; padding:24px 20px 32px; background:#fff; border-bottom:1px solid var(--line); box-shadow:0 15px 18px #0000000d; }
  .main-nav.is-open { display:flex; flex-direction:column; align-items:stretch; gap:0; } .main-nav>a:not(.button) { padding:15px 0; font-size:1.125rem; } .main-nav .button { max-width:none; margin-top:15px; }
}
@media (max-width:800px) {
  .container { width:calc(100% - 40px); } .section { padding-block:66px; }
  .hero-content { padding-block:54px 30px; } .hero-image { object-position:60% center; }
  .hero-shade { background:linear-gradient(90deg,#111710d9,#11171066); } .hero-copy { max-width:450px; } .hero-foot { flex-direction:column; gap:8px; margin-top:38px; }
  .about-grid { grid-template-columns:1fr; gap:35px; } .about-photo { max-width:560px; } .about-photo img { aspect-ratio:4/3; }
  .section-heading { display:block; } .section-heading>p { max-width:540px; margin-top:22px; }
  .service-grid { grid-template-columns:1fr; gap:22px; } .service-card { display:grid; grid-template-columns:.9fr 1.1fr; align-items:stretch; } .service-card>img { height:100%; aspect-ratio:auto; } .service-content { padding:16px 16px 18px; }
  .mid-cta { padding-block:50px; } .mid-cta-inner { flex-direction:column; align-items:flex-start; gap:30px; }
  .gallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .gallery-wrap { padding-inline:20px; } .gallery-brand { display:none; }
  .review-summary { margin-top:25px; } .review-track { padding-inline:20px; scroll-padding-inline:20px; } .review-card { flex-basis:min(340px,calc(100vw - 48px)); padding:24px; }
  .review-toolbar { align-items:flex-start; } .slider-controls { flex-shrink:0; }
  .faq-grid,.contact-grid { grid-template-columns:1fr; gap:40px; } .faq-grid>div>p:not(.eyebrow) { max-width:500px; }
  .contact-copy { padding-top:0; } .form-panel { padding:24px 15px; }
  .footer-grid { grid-template-columns:1fr 1fr; gap:36px; } .footer-bottom { flex-direction:column; gap:8px; }
  .service-detail { grid-template-columns:1fr; gap:35px; } .service-detail>img { max-height:440px; } .service-secondary { grid-template-columns:1fr; }
}
@media (max-width:480px) { .hero-content { padding-block:45px 26px; } .hero .eyebrow { font-size:.7rem; } .hero-copy { font-size:1rem; } .button-row { gap:14px; } .button-row .button { width:100%; } .service-card { display:flex; } .service-card>img { height:auto; aspect-ratio:1.45; } .hero-foot { font-size:.75rem; } }
@media (max-width:480px) { .footer-grid { grid-template-columns:1fr; } .gallery-grid { gap:10px; } .review-toolbar { gap:12px; } .lightbox-bottom p { font-size:.8rem; } .contact-grid { gap:25px; } .review-dialog { padding:22px; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none!important; animation:none!important; } }
