:root {
  --ink: #12201b;
  --forest: #173e31;
  --forest-2: #0d2b22;
  --sage: #9ead98;
  --paper: #f3efe6;
  --cream: #fffaf0;
  --amber: #d88443;
  --line: rgba(18,32,27,.18);
  --max: 1240px;
  --radius: 2px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:"Segoe UI",Arial,sans-serif; line-height:1.6; overflow-x:hidden; }
img { display:block; width:100%; height:auto; }
a { color:inherit; }
button,input,select,textarea { font:inherit; }
button,a { -webkit-tap-highlight-color:transparent; }
:focus-visible { outline:3px solid var(--amber); outline-offset:3px; }
.skip-link { position:fixed; left:1rem; top:-5rem; z-index:1000; background:#fff; padding:.7rem 1rem; }
.skip-link:focus { top:1rem; }
.container { width:min(calc(100% - 40px),var(--max)); margin-inline:auto; }
.eyebrow { font-size:.76rem; text-transform:uppercase; letter-spacing:.18em; font-weight:700; }
h1,h2,h3 { font-family:Georgia,"Times New Roman",serif; font-weight:400; line-height:1.04; margin:0 0 1rem; }
h1 { font-size:clamp(3rem,7.2vw,7.6rem); letter-spacing:-.055em; }
h2 { font-size:clamp(2.3rem,4.7vw,5rem); letter-spacing:-.035em; }
h3 { font-size:clamp(1.45rem,2.3vw,2.3rem); }
p { margin:0 0 1.2rem; }
.lead { font-size:clamp(1.08rem,1.7vw,1.45rem); max-width:62ch; }
.btn { min-height:48px; display:inline-flex; align-items:center; justify-content:center; gap:.6rem; padding:.75rem 1.15rem; border:1px solid var(--ink); background:var(--ink); color:#fff; text-decoration:none; cursor:pointer; transition:.25s ease; }
.btn:hover { background:var(--amber); border-color:var(--amber); color:var(--ink); transform:translateY(-2px); }
.btn--light { background:var(--cream); color:var(--ink); border-color:var(--cream); }
.btn--ghost { background:transparent; color:inherit; }
.link-arrow { display:inline-flex; gap:.6rem; align-items:center; text-underline-offset:5px; }
.link-arrow::after { content:"→"; transition:transform .2s; }
.link-arrow:hover::after { transform:translateX(5px); }
.site-header { position:sticky; top:0; z-index:50; background:rgba(243,239,230,.94); backdrop-filter:blur(16px); border-bottom:1px solid var(--line); }
.header-inner { min-height:82px; display:flex; align-items:center; gap:2rem; }
.brand { text-decoration:none; display:flex; align-items:center; gap:.8rem; font-weight:800; letter-spacing:.02em; white-space:nowrap; }
.brand-mark { width:38px; height:38px; display:grid; place-items:center; background:var(--forest); color:#fff; font-family:Georgia,serif; }
.nav { display:flex; align-items:center; gap:1.45rem; margin-left:auto; }
.nav a { text-decoration:none; font-size:.92rem; }
.nav a:hover,.nav a[aria-current="page"] { text-decoration:underline; text-underline-offset:7px; }
.header-phone { text-decoration:none; font-size:.85rem; }
.menu-toggle { display:none; min-width:46px; min-height:46px; border:1px solid var(--ink); background:transparent; cursor:pointer; margin-left:auto; }
.hero { min-height:calc(100vh - 82px); display:grid; grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr); background:var(--forest-2); color:var(--cream); }
.hero-copy { padding:clamp(4rem,8vw,9rem) max(2rem,calc((100vw - var(--max))/2)); padding-right:clamp(2rem,6vw,7rem); display:flex; flex-direction:column; justify-content:center; }
.hero h1 { max-width:8.6ch; }
.hero-copy .lead { max-width:45ch; color:rgba(255,250,240,.78); }
.hero-actions { display:flex; gap:.8rem; flex-wrap:wrap; margin-top:1.3rem; }
.hero-media { min-height:520px; overflow:hidden; position:relative; }
.hero-media img { height:100%; object-fit:cover; }
.hero-note { position:absolute; right:0; bottom:0; padding:1.3rem 1.7rem; background:var(--amber); color:var(--ink); max-width:270px; }
.page-hero { padding:clamp(5rem,10vw,9rem) 0 clamp(3rem,6vw,6rem); background:var(--forest-2); color:var(--cream); }
.page-hero h1 { max-width:11ch; }
.page-hero .lead { color:rgba(255,255,255,.74); }
.crumbs { display:flex; gap:.5rem; font-size:.85rem; margin-bottom:2rem; color:rgba(255,255,255,.7); }
.crumbs a { text-underline-offset:3px; }
.section { padding:clamp(4.5rem,9vw,9rem) 0; }
.section--cream { background:var(--cream); }
.section--dark { background:var(--forest); color:var(--cream); }
.section--amber { background:var(--amber); }
.split { display:grid; grid-template-columns:5fr 7fr; gap:clamp(2rem,7vw,8rem); align-items:center; }
.split--reverse { grid-template-columns:7fr 5fr; }
.split-media img { min-height:430px; max-height:720px; object-fit:cover; }
.section-intro { display:grid; grid-template-columns:4fr 7fr; gap:2rem; align-items:end; margin-bottom:clamp(2.5rem,5vw,5rem); }
.section-intro p { max-width:55ch; }
.service-list { border-top:1px solid currentColor; }
.service-row { display:grid; grid-template-columns:80px 1fr auto; gap:1rem; align-items:center; padding:1.45rem 0; border-bottom:1px solid currentColor; text-decoration:none; }
.service-row span:first-child { opacity:.55; font-size:.8rem; }
.service-row strong { font-family:Georgia,serif; font-weight:400; font-size:clamp(1.5rem,3vw,2.7rem); }
.service-row:hover strong { font-style:italic; }
.process-grid { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid currentColor; }
.process-step { padding:1.6rem 1.5rem 1.6rem 0; border-right:1px solid currentColor; }
.process-step + .process-step { padding-left:1.5rem; }
.process-step:last-child { border-right:0; }
.process-number { font-size:.75rem; letter-spacing:.15em; opacity:.55; }
.quote-band { padding:clamp(4rem,9vw,8rem) 0; background:var(--amber); }
.quote-band p { font-family:Georgia,serif; font-size:clamp(2rem,5vw,5rem); line-height:1.06; max-width:19ch; }
.gallery { display:grid; grid-template-columns:repeat(12,1fr); gap:1rem; }
.gallery figure { margin:0; }
.gallery figure:nth-child(1) { grid-column:span 7; }
.gallery figure:nth-child(2) { grid-column:span 5; margin-top:5rem; }
.gallery figure:nth-child(3) { grid-column:3/span 8; }
.gallery img { height:clamp(330px,48vw,680px); object-fit:cover; }
.gallery figcaption { font-size:.87rem; padding-top:.7rem; }
.cards { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }
.card { padding:2rem; border:1px solid var(--line); background:var(--cream); }
.card .eyebrow { color:var(--forest); }
.faq-list { max-width:900px; border-top:1px solid var(--line); }
details { border-bottom:1px solid var(--line); }
summary { list-style:none; cursor:pointer; padding:1.5rem 3rem 1.5rem 0; font-family:Georgia,serif; font-size:1.35rem; position:relative; }
summary::-webkit-details-marker { display:none; }
summary::after { content:"+"; position:absolute; right:.5rem; top:1.45rem; }
details[open] summary::after { content:"−"; }
details p { max-width:70ch; padding:0 2rem 1.5rem 0; }
.contact-layout { display:grid; grid-template-columns:4fr 7fr; gap:clamp(2rem,7vw,8rem); align-items:start; }
.contact-panel { position:sticky; top:120px; }
.contact-data { border-top:1px solid var(--line); margin-top:2rem; }
.contact-line { display:grid; grid-template-columns:105px 1fr; padding:1rem 0; border-bottom:1px solid var(--line); }
.contact-line span:first-child { opacity:.65; font-size:.83rem; }
.email-slot[hidden] { display:none!important; }
.form-shell { background:var(--cream); padding:clamp(1.4rem,4vw,4rem); }
.field-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.25rem; }
.field { margin-bottom:1.25rem; }
label { display:block; font-weight:700; font-size:.86rem; margin-bottom:.45rem; }
input,select,textarea { width:100%; border:1px solid rgba(18,32,27,.45); background:#fff; color:var(--ink); padding:.9rem; min-height:50px; border-radius:0; }
textarea { min-height:180px; resize:vertical; }
.field-error { color:#9b2f21; font-size:.82rem; display:block; min-height:1.2em; margin-top:.25rem; }
.form-note,.status { font-size:.88rem; }
.status { padding:1rem; margin:1rem 0; background:#f0e5d4; }
.legal { max-width:850px; }
.legal h2 { font-size:clamp(1.8rem,3vw,2.7rem); margin-top:2.5rem; }
.legal h3 { font-size:1.4rem; margin-top:2rem; }
.legal table { width:100%; border-collapse:collapse; font-size:.9rem; }
.legal th,.legal td { padding:.8rem; text-align:left; border:1px solid var(--line); vertical-align:top; }
.table-wrap { overflow-x:auto; }
.cta { padding:clamp(4rem,8vw,8rem) 0; background:var(--forest-2); color:var(--cream); }
.cta-inner { display:grid; grid-template-columns:1fr auto; gap:2rem; align-items:end; }
.cta h2 { max-width:13ch; }
.site-footer { background:#091a15; color:var(--cream); padding:4rem 0 1.5rem; }
.footer-grid { display:grid; grid-template-columns:2fr 1fr 1fr; gap:3rem; }
.footer-links { display:grid; gap:.5rem; }
.footer-links a,.site-footer button { color:inherit; text-underline-offset:4px; }
.footer-button { border:0; padding:0; background:none; text-decoration:underline; cursor:pointer; text-align:left; }
.footer-bottom { border-top:1px solid rgba(255,255,255,.2); margin-top:3rem; padding-top:1.5rem; display:flex; justify-content:space-between; gap:1rem; font-size:.78rem; color:rgba(255,255,255,.65); }
.cookie-banner { position:fixed; z-index:200; left:1rem; right:1rem; bottom:1rem; max-width:720px; margin:auto; background:var(--cream); color:var(--ink); border:1px solid var(--ink); box-shadow:0 15px 60px rgba(0,0,0,.25); padding:1.5rem; }
.cookie-banner[hidden],.cookie-modal[hidden] { display:none; }
.cookie-actions { display:flex; flex-wrap:wrap; gap:.65rem; margin-top:1rem; }
.cookie-modal { position:fixed; inset:0; z-index:210; background:rgba(0,0,0,.6); display:grid; place-items:center; padding:1rem; }
.cookie-dialog { background:var(--cream); padding:clamp(1.5rem,4vw,3rem); width:min(100%,620px); max-height:90vh; overflow:auto; }
.toggle-row { display:flex; justify-content:space-between; gap:1rem; padding:1rem 0; border-top:1px solid var(--line); }
.toggle-row input { width:24px; min-height:24px; }
.not-found { min-height:70vh; display:grid; place-items:center; text-align:center; }
[data-reveal] { opacity:0; transform:translateY(25px); transition:opacity .7s,transform .7s; }
[data-reveal].visible { opacity:1; transform:none; }
@media (max-width: 980px) {
  .nav,.header-phone,.header-inner>.btn { display:none; }
  .menu-toggle { display:block; }
  .nav.is-open { position:absolute; display:flex; flex-direction:column; align-items:stretch; gap:0; left:0; right:0; top:82px; padding:1rem 20px 1.5rem; background:var(--paper); border-bottom:1px solid var(--line); }
  .nav.is-open a { min-height:46px; display:flex; align-items:center; }
  .hero { grid-template-columns:1fr; }
  .hero-copy { padding-inline:20px; }
  .hero-media { min-height:55vh; }
  .split,.split--reverse,.section-intro,.contact-layout { grid-template-columns:1fr; }
  .contact-panel { position:static; }
  .process-grid { grid-template-columns:1fr 1fr; }
  .process-step:nth-child(2) { border-right:0; }
  .cards { grid-template-columns:1fr; }
}
@media (max-width: 650px) {
  .container { width:min(calc(100% - 32px),var(--max)); }
  .header-inner { min-height:70px; }
  .nav.is-open { top:70px; }
  h1 { font-size:clamp(2.8rem,16vw,4.7rem); }
  .hero { min-height:auto; }
  .hero-copy { min-height:76vh; padding-block:4rem; }
  .hero-note { max-width:230px; }
  .process-grid,.field-grid,.cta-inner,.footer-grid { grid-template-columns:1fr; }
  .process-step,.process-step + .process-step { padding:1.3rem 0; border-right:0; border-bottom:1px solid currentColor; }
  .service-row { grid-template-columns:45px 1fr auto; }
  .gallery { display:block; }
  .gallery figure,.gallery figure:nth-child(2),.gallery figure:nth-child(3) { margin:0 0 2rem; }
  .gallery img { height:390px; }
  .footer-bottom { flex-direction:column; }
  .contact-line { grid-template-columns:1fr; gap:.2rem; }
  .cookie-actions .btn { width:100%; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; }
  [data-reveal] { opacity:1; transform:none; }
}
