:root{--bg:#fbf6ee;--ink:#2a1519;--mute:#7a6366;--accent:#7a1f36;--accent2:#7a1f36;--onaccent:#fff;--card:#fffaf2;--line:#ecdfcd;--navbg:rgba(255,255,255,.88);--logoc:#1b2430;--logow:800;--display:'Playfair Display',serif;--body:'Lato',sans-serif;--dw:700;--dls:-.01em;--dot:50%;--rb:4px;--rl:6px;--rs:4px;--emstyle:italic;--emw:500;--shadow:0 24px 60px rgba(60,20,25,.2);--herogrd:linear-gradient(to top,rgba(30,10,14,.78),rgba(30,10,14,.1) 65%);--heroem:#f0c9a2;--dark:#4a1423;--ondark:#fff;--dark2:#33101a;--onaccentband:#f0c9a2;--bandbtn:#4a1423;}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.04rem/1.65 var(--body);-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3{font-family:var(--display);font-weight:var(--dw);letter-spacing:var(--dls);line-height:1.04;margin:0;text-wrap:balance}
.sample{background:#111;color:#fff;font:500 .78rem/1.4 system-ui,sans-serif;padding:9px 16px;text-align:center}
.sample a{color:#fff;text-underline-offset:3px}
.in{max-width:1140px;margin:0 auto;padding:0 24px}
header.top{position:sticky;top:0;z-index:30;background:var(--navbg);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
header.top .in{display:flex;align-items:center;justify-content:space-between;height:70px;gap:20px}
.logo{font:var(--logow) 1.35rem var(--display);text-decoration:none;color:var(--logoc);display:flex;align-items:center;gap:10px;letter-spacing:var(--dls)}
.logo i{width:12px;height:12px;border-radius:var(--dot);background:var(--accent);display:inline-block}
nav.m{display:flex;gap:26px;align-items:center;font-weight:500;font-size:.95rem}
nav.m a{text-decoration:none;color:var(--mute);padding:6px 0;border-bottom:2px solid transparent}
nav.m a:hover,nav.m a[aria-current]{color:var(--ink);border-color:var(--accent)}
.btn{display:inline-block;background:var(--accent);color:var(--onaccent);font:600 .95rem var(--body);text-decoration:none;padding:13px 26px;border-radius:var(--rb);border:2px solid var(--accent);cursor:pointer;transition:transform .2s}
.btn:hover{transform:translateY(-2px)}
.btn.o{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn.sm{padding:9px 18px;font-size:.88rem}
.hero .btn.o{border-color:currentColor;color:inherit}
.burger{display:none;background:none;border:1px solid var(--line);border-radius:10px;padding:8px 12px;color:var(--ink);font:600 .85rem var(--body)}
section.s{padding:clamp(56px,8vw,104px) 0}
.kick{font:600 .78rem var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--accent2);margin:0 0 14px}
h2.h{font-size:clamp(2rem,4.6vw,3.4rem);margin-bottom:14px}
.lede{color:var(--mute);font-size:1.12rem;max-width:44ch;margin:0}
.center{text-align:center}.center .lede{margin-inline:auto}
/* hero variants */
.hero h1{font-size:clamp(2.7rem,7vw,5.6rem)}
.hero h1 em{font-style:var(--emstyle);color:var(--accent2);font-weight:var(--emw)}
.hero p.sub{font-size:1.2rem;max-width:34ch;margin:22px 0 30px;opacity:.9}
.hero .acts{display:flex;gap:12px;flex-wrap:wrap}
.hero.split .in{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(28px,5vw,72px);align-items:center;padding-block:clamp(36px,6vw,80px)}
.hero.split .pic{border-radius:var(--rl);overflow:hidden;aspect-ratio:4/3.3;box-shadow:var(--shadow)}
.hero.split .pic img{width:100%;height:100%;object-fit:cover}
.hero.full{position:relative;min-height:min(86svh,820px);display:flex;align-items:flex-end;color:#fff;overflow:hidden}
.hero.full>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero.full::after{content:"";position:absolute;inset:0;background:var(--herogrd)}
.hero.full .in{position:relative;z-index:2;padding-block:clamp(48px,9vw,110px);width:100%}
.hero.full.mid .in{text-align:center}.hero.full.mid p.sub,.hero.full.mid .acts{margin-inline:auto;justify-content:center}
.hero.full em{color:var(--heroem)}
.hero.min .in{padding-block:clamp(40px,7vw,90px) 28px}
.hero.min h1{font-size:clamp(3rem,10vw,9rem);line-height:.92;max-width:12ch}
.hero.min .row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-top:26px}
.hero.min .wide{max-width:1440px;margin:0 auto;padding:0 24px}
.hero.min .wide img{width:100%;aspect-ratio:21/9;object-fit:cover;border-radius:var(--rl)}
/* stats */
.stats{border-block:1px solid var(--line);background:var(--card)}
.stats .in{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding-block:34px;text-align:center}
.stats b{display:block;font:var(--dw) clamp(2rem,4vw,3rem) var(--display);color:var(--accent2);line-height:1.05}
.stats span{color:var(--mute);font-size:.95rem}
/* cards */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:40px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--rl);overflow:hidden;display:flex;flex-direction:column;transition:transform .3s,box-shadow .3s}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.card .im{aspect-ratio:4/3;overflow:hidden}
.card .im img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.card:hover .im img{transform:scale(1.05)}
.card .tx{padding:22px 22px 26px;display:flex;flex-direction:column;gap:6px;flex:1}
.card h3{font-size:1.4rem}
.card .meta{color:var(--accent2);font-weight:600;font-size:.9rem}
.card p{margin:0;color:var(--mute);font-size:.98rem}
/* split */
.two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,6vw,88px);align-items:center}
.two.rev .pic{order:2}
.two .pic{border-radius:var(--rl);overflow:hidden;aspect-ratio:4/3.4;box-shadow:var(--shadow)}
.two .pic img{width:100%;height:100%;object-fit:cover}
.two p{color:var(--mute);margin:0 0 16px}
.ticks{list-style:none;padding:0;margin:20px 0 28px;display:grid;gap:10px}
.ticks li{padding-left:28px;position:relative}
.ticks li::before{content:"";position:absolute;left:0;top:.5em;width:14px;height:8px;border-left:2.5px solid var(--accent);border-bottom:2.5px solid var(--accent);transform:rotate(-45deg)}
/* band */
.band{background:var(--dark);color:var(--ondark)}
.band .in{display:flex;justify-content:space-between;align-items:center;gap:26px;flex-wrap:wrap;padding-block:clamp(44px,6vw,72px)}
.band h2{font-size:clamp(1.9rem,4vw,3rem);max-width:18ch}
.band .btn{background:var(--onaccentband);color:var(--bandbtn);border-color:var(--onaccentband)}
footer.f{background:var(--dark2);color:var(--ondark);padding:56px 0 30px;font-size:.95rem}
footer.f .g{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:30px}
footer.f h4{font:600 .78rem var(--body);letter-spacing:.16em;text-transform:uppercase;opacity:.6;margin:0 0 12px}
footer.f p,footer.f a{margin:0 0 6px;display:block;text-decoration:none;opacity:.9}
footer.f a:hover{text-decoration:underline}
footer.f .c{margin-top:34px;padding-top:18px;border-top:1px solid rgba(255,255,255,.16);opacity:.6;font-size:.85rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
/* page head */
.ph{padding:clamp(48px,7vw,96px) 0 clamp(28px,4vw,48px)}
.ph h1{font-size:clamp(2.6rem,6.4vw,5rem);max-width:15ch}
.ph .lede{margin-top:18px}
/* about */
.vals{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:40px}
.val{padding:26px;border:1px solid var(--line);border-radius:var(--rl);background:var(--card)}
.val b{display:block;font:var(--dw) 2.2rem var(--display);color:var(--accent);line-height:1;margin-bottom:10px}
.val h3{font-size:1.25rem;margin-bottom:6px}.val p{margin:0;color:var(--mute);font-size:.98rem}
/* services */
.svc{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.sv{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:start;padding:26px;border:1px solid var(--line);border-radius:var(--rl);background:var(--card)}
.sv .n{font:var(--dw) 1.8rem var(--display);color:var(--accent);line-height:1}
.sv h3{font-size:1.3rem;margin-bottom:6px}.sv p{margin:0;color:var(--mute);font-size:.98rem}
.sv .pr{font-weight:700;white-space:nowrap;color:var(--accent2)}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;counter-reset:s;margin-top:36px}
.steps div::before{counter-increment:s;content:"0" counter(s);font:var(--dw) 2.6rem var(--display);color:var(--accent);display:block;margin-bottom:6px}
.steps h3{font-size:1.25rem;margin-bottom:4px}.steps p{margin:0;color:var(--mute)}
details{border-bottom:1px solid var(--line);padding:18px 0}
details summary{cursor:pointer;font-weight:600;list-style:none;display:flex;justify-content:space-between;gap:16px}
details summary::after{content:"+";font-size:1.4rem;line-height:1;color:var(--accent)}
details[open] summary::after{content:"\2212"}
details p{color:var(--mute);margin:12px 0 0;max-width:62ch}
/* gallery */
.masonry{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:clamp(190px,23vw,320px);gap:16px}
.masonry figure{margin:0;position:relative;border-radius:var(--rl);overflow:hidden;cursor:zoom-in;grid-column:span 2}
.masonry img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.masonry figure:hover img{transform:scale(1.04)}
.masonry figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 14px;color:#fff;font-size:.9rem;background:linear-gradient(to top,rgba(0,0,0,.65),transparent)}
.masonry.n6 figure:nth-child(1){grid-column:span 4}.masonry.n6 figure:nth-child(4){grid-column:span 4}.masonry.n6 figure:nth-child(5),.masonry.n6 figure:nth-child(6){grid-column:span 3}
.masonry.n5 figure:nth-child(1),.masonry.n5 figure:nth-child(2){grid-column:span 3}
dialog.lb{border:0;padding:0;background:transparent;max-width:min(1100px,94vw);max-height:92vh}
dialog.lb::backdrop{background:rgba(0,0,0,.86)}
dialog.lb img{max-height:86vh;width:auto;margin:auto;border-radius:10px}
dialog.lb p{color:#fff;text-align:center;margin:10px 0 0}
dialog.lb button{position:absolute;right:6px;top:-40px;background:none;border:0;color:#fff;font-size:1.8rem;cursor:pointer}
/* contact */
.ct{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(28px,6vw,80px)}
form.fm{display:grid;gap:14px}
form.fm label{display:grid;gap:6px;font-weight:600;font-size:.9rem}
form.fm input,form.fm textarea,form.fm select{font:400 1rem var(--body);padding:13px 14px;border-radius:var(--rs);border:1px solid var(--line);background:var(--card);color:var(--ink)}
form.fm textarea{min-height:140px;resize:vertical}
form.fm .r2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ok{padding:14px 16px;border-radius:var(--rs);background:var(--card);border:1px solid var(--accent);display:none}
.info{display:grid;gap:22px;align-content:start}
.info div{padding:22px;border:1px solid var(--line);border-radius:var(--rl);background:var(--card)}
.info h3{font-size:1.1rem;margin-bottom:8px}.info p{margin:0;color:var(--mute)}
.info dl{display:grid;grid-template-columns:auto 1fr;gap:4px 20px;margin:0}.info dt{color:var(--mute)}.info dd{margin:0;font-weight:500}
.map{aspect-ratio:16/10;border-radius:var(--rl);background:repeating-linear-gradient(45deg,var(--card) 0 14px,var(--line) 14px 28px);display:grid;place-items:center;color:var(--mute);font-weight:600}
@media(max-width:860px){
 nav.m{display:none;position:absolute;top:70px;left:0;right:0;background:var(--bg);flex-direction:column;align-items:flex-start;padding:16px 24px 26px;gap:14px;border-bottom:1px solid var(--line)}
 nav.m.open{display:flex}.burger{display:block}
 header.top .btn.sm{display:none}
 .hero.split .in,.two,.ct,footer.f .g{grid-template-columns:1fr}
 .two.rev .pic{order:0}
 .cards,.vals,.steps,.svc{grid-template-columns:1fr}
 .masonry{grid-template-columns:1fr 1fr}.masonry figure,.masonry.n6 figure:nth-child(n),.masonry.n5 figure:nth-child(n){grid-column:span 1}.stats .in{grid-template-columns:1fr;gap:14px}
 .sv{grid-template-columns:auto 1fr}.sv .pr{grid-column:2}
 .hero.min .wide img{aspect-ratio:4/3}
}
@media(max-width:520px){.masonry{grid-template-columns:1fr}form.fm .r2{grid-template-columns:1fr}}
