:root{--bg:#f1efea;--ink:#1d1f1c;--mute:#666a63;--line:#d3d0c6;--accent:#2f4a3a;--dark:#1b2a22;--paper:#e8e2d4;
--serif:"Newsreader",Georgia,"Times New Roman",serif;--sans:"Instrument Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
--s1:.5rem;--s2:1rem;--s3:2rem;--s4:4rem;--s5:7rem;--max:1180px}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:5rem}
body{font:400 1.0625rem/1.65 var(--sans);color:var(--ink);background:var(--bg)}
a{color:inherit}
.wrap{width:min(100% - 2.5rem,var(--max));margin-inline:auto}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.1;letter-spacing:-.01em}
h1{font-size:clamp(2.6rem,6vw,5rem)}
h2{font-size:clamp(2rem,4vw,3.2rem)}
h3{font-size:1.5rem;margin-bottom:.4rem}
p+p{margin-top:1rem}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

.site-header{position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:1px solid transparent;transition:border-color .3s,background .3s}
.site-header.scrolled{border-color:var(--line);background:rgba(241,239,234,.96)}
.bar{display:flex;align-items:center;justify-content:space-between;height:5rem;transition:height .3s}
.scrolled .bar{height:3.8rem}
.logo{font:500 1.6rem var(--serif);text-decoration:none;display:inline-flex;align-items:center;gap:.6rem}
.logo-mark{width:.8rem;height:1.4rem;background:var(--accent);border-radius:50% 50% 50% 50%/60% 60% 40% 40%}
.nav{display:flex;align-items:center;gap:2rem;font-size:.95rem}
.nav a:not(.btn){text-decoration:none;position:relative}
.nav a:not(.btn)::after{content:"";position:absolute;left:0;bottom:-3px;height:1px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s}
.nav a:not(.btn):hover::after{transform:scaleX(1)}
.btn{display:inline-block;background:var(--accent);color:#fff;padding:.85rem 1.6rem;text-decoration:none;font:500 .95rem var(--sans);border:1px solid var(--accent);border-radius:2px;cursor:pointer;transition:background .25s,color .25s}
.btn:hover{background:transparent;color:var(--accent)}
.btn-small{padding:.5rem 1.1rem;font-size:.88rem}
.menu-btn{display:none;background:none;border:0;width:2.5rem;height:2.5rem;cursor:pointer;position:relative}
.menu-btn span{position:absolute;left:.6rem;right:.6rem;height:2px;background:var(--ink);transition:transform .25s}
.menu-btn span:first-child{top:1rem}.menu-btn span:last-child{top:1.5rem}
.menu-btn[aria-expanded=true] span:first-child{transform:translateY(.25rem) rotate(45deg)}
.menu-btn[aria-expanded=true] span:last-child{transform:translateY(-.25rem) rotate(-45deg)}

.hero{display:grid;grid-template-columns:1.15fr .85fr;gap:var(--s4);align-items:center;padding:var(--s4) 0 var(--s5)}
.tag{font-size:.9rem;color:var(--accent);border-left:2px solid var(--accent);padding-left:.8rem;margin-bottom:var(--s3)}
.lead{max-width:34rem;margin:var(--s3) 0;color:var(--mute);font-size:1.15rem}
.actions{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}
.text-link{text-decoration:underline;text-underline-offset:5px;text-decoration-color:var(--line);transition:text-decoration-color .25s}
.text-link:hover{text-decoration-color:var(--accent)}
.hero-art{position:relative;padding-bottom:2.5rem}
.block-a{aspect-ratio:4/5;overflow:hidden}
.block-a svg{display:block;width:100%;height:100%}
.block-b{position:absolute;left:-2.5rem;bottom:4.5rem;background:var(--paper);padding:1.2rem 1.5rem;font:italic 1.2rem/1.3 var(--serif);border:1px solid var(--line)}
.caption{position:absolute;bottom:0;right:0;font-size:.8rem;color:var(--mute);max-width:15rem;text-align:right}
.hero-text>*{animation:rise .7s both}.hero-text>:nth-child(2){animation-delay:.08s}.hero-text>:nth-child(3){animation-delay:.16s}.hero-text>:nth-child(4){animation-delay:.24s}
@keyframes rise{from{opacity:0;transform:translateY(14px)}}

.about{padding:var(--s5) 0 var(--s4);border-top:1px solid var(--line)}
.about h2{max-width:46rem;margin-bottom:var(--s4)}
.about-cols{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4)}
.about-cols p{max-width:32rem}
.statement{background:var(--paper);padding:var(--s3);margin-top:var(--s4)}
.statement>p{font:italic 1.7rem/1.3 var(--serif);margin-bottom:var(--s3)}
.statement dl div{padding:.8rem 0;border-top:1px solid #c9c2b0}
.statement dt{font-size:.82rem;color:var(--mute)}
.statement dd{font-weight:500}

.services{padding:var(--s5) 0}
.section-head{display:flex;justify-content:space-between;align-items:end;gap:var(--s3);margin-bottom:var(--s4);flex-wrap:wrap}
.section-head p{color:var(--mute);max-width:22rem}
.service{display:flex;gap:1.5rem;padding:var(--s3) 0;border-top:1px solid var(--ink)}
.service p{color:var(--mute);max-width:36rem}
.ico{flex:none;width:2.6rem;height:2.6rem;fill:none;stroke:var(--accent);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.featured{padding:var(--s4) 0;background:linear-gradient(var(--bg),var(--bg))}
.featured h3{font-size:clamp(2rem,4vw,3rem)}
.featured .ico{width:4rem;height:4rem}
.featured p{font-size:1.15rem}
.service-list{display:grid;grid-template-columns:repeat(2,1fr);column-gap:var(--s4)}
.service-list .service{transition:padding-left .3s}
.service-list .service:hover{padding-left:.8rem}
.service-list .service:nth-child(even){margin-top:var(--s3)}

.approach{background:var(--dark);color:#ece7da;padding:var(--s5) 0}
.steps{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s3);margin-top:var(--s4)}
.steps li{border-top:1px solid rgba(236,231,218,.3);padding-top:var(--s2)}
.steps li:nth-child(2){margin-top:2rem}.steps li:nth-child(4){margin-top:2rem}
.num{display:block;font:300 5rem/1 var(--serif);color:#9fb8a6;margin-bottom:var(--s2)}
.steps p{color:#b9bfb5;font-size:.98rem}

.contact{display:grid;grid-template-columns:.8fr 1.2fr;gap:var(--s4);padding:var(--s5) 0}
.contact-info p{color:var(--mute);margin:var(--s2) 0 var(--s3)}
address{font-style:normal;border-left:2px solid var(--accent);padding-left:1.2rem}
address a{color:var(--accent);font-weight:500}
.form{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem;background:#f8f6f1;border:1px solid var(--line);padding:var(--s3)}
.full{grid-column:1/-1}
.field{display:flex;flex-direction:column;gap:.35rem}
label{font-size:.88rem;font-weight:500}
input,textarea{font:inherit;padding:.75rem .85rem;border:1px solid var(--line);border-radius:2px;background:#fff;color:var(--ink);transition:border-color .2s}
input:focus,textarea:focus{outline:none;border-color:var(--accent)}
.invalid input,.invalid textarea{border-color:#a3322b}
.err{color:#a3322b;font-size:.82rem;min-height:1.1em}
.status{margin-top:1rem;font-size:.95rem}
.status.ok{color:var(--accent)}.status.bad{color:#a3322b}

.footer{border-top:1px solid var(--line);padding-top:var(--s4);font-size:.95rem}
.foot-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:var(--s3);padding-bottom:var(--s3)}
.foot-grid p{color:var(--mute);margin-top:.8rem}
.foot-grid nav{display:flex;flex-direction:column;gap:.4rem}
.footer a{text-decoration:none}.footer a:hover{color:var(--accent)}
.foot-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding:var(--s2) 0 var(--s3);border-top:1px solid var(--line);color:var(--mute);font-size:.85rem}
.foot-bottom a{margin-left:1.2rem}

.reveal{opacity:0;transform:translateY(12px);transition:opacity .6s,transform .6s}
.reveal.in{opacity:1;transform:none}

@media(max-width:900px){
.menu-btn{display:block}
.nav{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:flex-start;gap:1rem;background:var(--bg);padding:1.5rem 1.25rem;border-bottom:1px solid var(--line);display:none}
.nav.open{display:flex}
.hero,.about-cols,.contact{grid-template-columns:1fr}
.hero{gap:var(--s3)}.block-b{left:1rem}
.statement{margin-top:0}
.service-list{grid-template-columns:1fr}.service-list .service:nth-child(even){margin-top:0}
.steps{grid-template-columns:1fr 1fr}.steps li:nth-child(n){margin-top:0}
.foot-grid{grid-template-columns:1fr}
:root{--s5:4.5rem;--s4:2.5rem}
}
@media(max-width:560px){.form{grid-template-columns:1fr}.steps{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}.reveal{opacity:1;transform:none}}
