:root{
  --text-xs:clamp(.75rem,.7rem + .25vw,.875rem);
  --text-sm:clamp(.875rem,.8rem + .35vw,1rem);
  --text-base:clamp(1rem,.95rem + .25vw,1.125rem);
  --text-lg:clamp(1.125rem,1rem + .75vw,1.5rem);
  --text-xl:clamp(1.5rem,1.2rem + 1.25vw,2.25rem);
  --text-2xl:clamp(2rem,1.2rem + 2.5vw,3.5rem);
  --text-hero:clamp(2.5rem,1rem + 4.6vw,5.25rem);
  --space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--space-32:8rem;

  --bg:#f5f2ec; --surface:#fbfaf7; --tint:#ebe5da;
  --ink:#1b1e21; --ink-2:#4b4f53; --muted:#74706a; --line:#d9d2c5;
  --dark:#16191c; --dark-2:#22262a; --on-dark:#eeeae2; --on-dark-2:#a9a59d;
  --accent:#c2622f; --accent-hover:#a6501f; --accent-ink:#9a4a1f;

  --font-display:'Cabinet Grotesk','Satoshi',system-ui,sans-serif;
  --font-body:'Satoshi','Inter',system-ui,sans-serif;
  --radius:10px; --ease:cubic-bezier(.16,1,.3,1);
  --container:1240px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3{margin:0;line-height:1.1}
p{margin:0}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:var(--space-2) var(--space-4);z-index:100}
.skip:focus{left:var(--space-4)}
.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:clamp(1.25rem,4vw,2.5rem)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:.5em;padding:.85em 1.5em;border-radius:999px;background:var(--accent);color:#fff;text-decoration:none;font-weight:700;font-size:var(--text-sm);letter-spacing:.01em;border:1px solid var(--accent);transition:background .2s,transform .2s var(--ease),border-color .2s}
.btn:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.btn:active{transform:translateY(1px)}
.btn--sm{padding:.6em 1.15em}
.btn--lg{padding:1em 1.8em;margin-top:var(--space-8)}
.btn--ghost{background:transparent;border-color:rgba(255,255,255,.55);color:#fff}
.btn--ghost:hover{background:rgba(255,255,255,.12);border-color:#fff}
.link-arrow{display:inline-flex;align-items:center;gap:.5em;font-weight:700;font-size:var(--text-sm);text-decoration:none;color:var(--accent-ink);margin-top:var(--space-6)}
.link-arrow::after{content:"→";transition:transform .2s var(--ease)}
.link-arrow:hover::after{transform:translateX(4px)}

.eyebrow{font-size:var(--text-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:var(--space-4);display:flex;align-items:center;gap:.75em}
.eyebrow::before{content:"";width:28px;height:2px;background:var(--accent)}
.eyebrow--light{color:#f0b48f}

/* header */
.header{position:fixed;inset:0 0 auto;z-index:50;color:#fff;transition:background .3s,color .3s,box-shadow .3s,transform .35s var(--ease)}
.header__inner{display:flex;align-items:center;justify-content:space-between;height:76px}
.header.is-solid{background:rgba(245,242,236,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--ink);box-shadow:0 1px 0 var(--line)}
.header.is-hidden{transform:translateY(-100%)}
.brand{display:inline-flex;align-items:center;gap:.7rem;text-decoration:none}
.brand__mark{width:38px;height:38px;flex:none}
.brand__text{font-family:var(--font-display);font-size:1.15rem;font-weight:500;letter-spacing:.01em;white-space:nowrap}
.brand__text strong{font-weight:800;letter-spacing:.06em}
.brand__llc{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.12em;margin-left:.45em;opacity:.6;vertical-align:.15em}
.nav{display:flex;align-items:center;gap:clamp(1rem,2.4vw,2.25rem)}
.nav a:not(.btn){text-decoration:none;font-size:var(--text-sm);font-weight:500;opacity:.88;position:relative}
.nav a:not(.btn)::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease)}
.nav a:not(.btn):hover{opacity:1}
.nav a:not(.btn):hover::after{transform:scaleX(1)}
.menu-btn{display:none;width:44px;height:44px;background:none;border:0;cursor:pointer;position:relative}
.menu-btn span{position:absolute;left:11px;right:11px;height:2px;background:currentColor;transition:transform .3s var(--ease)}
.menu-btn span:first-child{top:17px}.menu-btn span:last-child{top:25px}
.menu-btn[aria-expanded=true] span:first-child{transform:translateY(4px) rotate(45deg)}
.menu-btn[aria-expanded=true] span:last-child{transform:translateY(-4px) rotate(-45deg)}
.mobile-nav{display:none}

/* hero */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;color:#fff;background:var(--dark);overflow:hidden}
.hero__media{position:absolute;inset:0}
.hero__media img{width:100%;height:100%;object-fit:cover;object-position:center 40%;transform:scale(1.04);animation:heroZoom 14s var(--ease) forwards}
@keyframes heroZoom{to{transform:scale(1)}}
.hero__media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,16,18,.86) 0%,rgba(14,16,18,.55) 48%,rgba(14,16,18,.15) 100%),linear-gradient(0deg,rgba(14,16,18,.9) 0%,rgba(14,16,18,0) 45%)}
.hero__content{position:relative;padding-top:140px;padding-bottom:var(--space-12)}
.hero__title{font-family:var(--font-display);font-weight:800;font-size:var(--text-hero);line-height:.98;letter-spacing:-.02em;max-width:15ch}
.hero__lede{max-width:52ch;margin-top:var(--space-6);color:rgba(255,255,255,.82)}
.hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-8)}
.stats{position:relative;display:grid;grid-template-columns:repeat(4,1fr);margin:0 0 var(--space-10);border-top:1px solid rgba(255,255,255,.22)}
.stats div{padding:var(--space-6) var(--space-4) 0 0}
.stats div+div{padding-left:var(--space-6);border-left:1px solid rgba(255,255,255,.14)}
.stats dt{font-size:var(--text-xs);color:rgba(255,255,255,.66);letter-spacing:.04em;order:2}
.stats dd{margin:0 0 var(--space-1);font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);line-height:1}
.stats div{display:flex;flex-direction:column-reverse;justify-content:flex-end}

/* sections */
.section{padding-block:clamp(4rem,9vw,8rem)}
.section--tint{background:var(--tint)}
.section--dark{background:var(--dark);color:var(--on-dark)}
.section__head{max-width:720px;margin-bottom:clamp(2.5rem,5vw,4rem)}
.section__head--row{max-width:none;display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-8);flex-wrap:wrap}
.section__title{font-family:var(--font-display);font-weight:800;font-size:var(--text-2xl);letter-spacing:-.015em;line-height:1.04}
.section__lede{margin-top:var(--space-4);color:var(--ink-2);max-width:56ch}
.section--dark .section__lede,.section--dark p{color:var(--on-dark-2)}

/* services */
.services{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.service{padding:var(--space-8) var(--space-6) var(--space-6) 0;display:flex;flex-direction:column;gap:var(--space-3)}
.service+.service{padding-left:var(--space-6);border-left:1px solid var(--line)}
.service__num{font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);color:var(--accent-ink)}
.service h3{font-family:var(--font-display);font-size:var(--text-xl);font-weight:800}
.service p{color:var(--ink-2);font-size:var(--text-sm)}
.service ul{list-style:none;padding:0;margin:var(--space-2) 0 0;display:flex;flex-wrap:wrap;gap:var(--space-2)}
.service li{font-size:var(--text-xs);font-weight:500;padding:.3em .8em;border:1px solid var(--line);border-radius:999px;color:var(--ink-2)}

/* feature band */
.feature{display:grid;grid-template-columns:1.25fr 1fr;background:var(--dark);color:var(--on-dark);min-height:560px}
.feature__img{overflow:hidden}
.feature__img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.feature:hover .feature__img img{transform:scale(1.03)}
.feature__body{padding:clamp(2.5rem,6vw,6rem);display:flex;flex-direction:column;justify-content:center}
.feature__body p:not(.eyebrow){margin-top:var(--space-5);color:var(--on-dark-2);max-width:46ch}
.feature .link-arrow{color:#f0b48f}

/* filters */
.filters{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.chip{padding:.55em 1.1em;border-radius:999px;border:1px solid var(--line);background:transparent;font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all .2s}
.chip:hover{border-color:var(--ink)}
.chip.is-active{background:var(--ink);color:var(--bg);border-color:var(--ink)}

/* grid */
.grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-flow:dense;gap:clamp(1rem,2vw,1.5rem)}
.more{display:flex;justify-content:center;margin-top:var(--space-10)}
.btn--outline{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn--outline:hover{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.card{position:relative;border-radius:var(--radius);overflow:hidden;background:var(--tint);cursor:pointer;aspect-ratio:4/3;border:0;padding:0;text-align:left;color:#fff;animation:fadeUp .5s var(--ease) both}
.card.is-wide{grid-column:span 2;aspect-ratio:auto;min-height:100%}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.card img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.card:hover img{transform:scale(1.05)}
.card::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(12,14,16,.82) 0%,rgba(12,14,16,.1) 50%,rgba(12,14,16,0) 100%)}
.card__meta{position:absolute;left:0;right:0;bottom:0;padding:var(--space-5);z-index:1}
.card__type{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#f0b48f}
.card__title{display:block;font-family:var(--font-display);font-size:var(--text-lg);font-weight:800;margin-top:var(--space-1);line-height:1.15}
.card__loc{display:block;font-size:var(--text-xs);color:rgba(255,255,255,.78);margin-top:2px}
.card__count{position:absolute;top:var(--space-3);right:var(--space-3);z-index:1;font-size:var(--text-xs);font-weight:700;background:rgba(12,14,16,.6);backdrop-filter:blur(6px);padding:.25em .65em;border-radius:999px}
.note{margin-top:var(--space-8);font-size:var(--text-xs);color:var(--muted);max-width:70ch}

/* compare */
.split{display:grid;grid-template-columns:1fr 1.2fr;gap:clamp(2rem,6vw,6rem);align-items:center}
.split--top{align-items:start}
.split__text p:not(.eyebrow){margin-top:var(--space-5);color:var(--ink-2);max-width:48ch}
.section--dark .split__text p:not(.eyebrow){color:var(--on-dark-2)}
.compare{position:relative;aspect-ratio:3/4;max-height:640px;width:100%;max-width:480px;justify-self:center;border-radius:var(--radius);overflow:hidden;background:#ccc;user-select:none}
.compare>img,.compare__before img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.compare__before{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--pos)) 0 0)}
.compare input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.compare__handle{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;background:#fff;transform:translateX(-1px);pointer-events:none}
.compare__handle::after{content:"‹ ›";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;background:#fff;color:var(--ink);display:grid;place-items:center;font-weight:700;font-size:15px;box-shadow:0 4px 18px rgba(0,0,0,.25)}
.compare__tag{position:absolute;top:var(--space-3);font-size:var(--text-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:rgba(12,14,16,.65);color:#fff;padding:.3em .7em;border-radius:999px;pointer-events:none}
.compare__tag--l{left:var(--space-3)}.compare__tag--r{right:var(--space-3)}

/* cv */
.cv-tools{display:flex;gap:var(--space-3);flex-wrap:wrap}
.search{display:flex;align-items:center;gap:.5em;border:1px solid var(--line);border-radius:999px;padding:0 1em;background:var(--surface)}
.search svg{width:18px;height:18px;color:var(--muted)}
.search input{border:0;background:none;padding:.65em 0;outline:none;min-width:200px;font-size:var(--text-sm)}
.search:focus-within{border-color:var(--ink)}
#cv-cat{border:1px solid var(--line);border-radius:999px;padding:.65em 2.2em .65em 1em;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23444' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right 1em center;appearance:none;font-size:var(--text-sm);cursor:pointer}
.table-wrap{max-height:620px;overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.cv{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
.cv th{position:sticky;top:0;background:var(--ink);color:var(--bg);text-align:left;font-weight:700;font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;padding:.9em 1.1em;z-index:1}
.cv td{padding:.85em 1.1em;border-top:1px solid var(--line);vertical-align:top}
.cv tbody tr:hover{background:var(--bg)}
.cv td:first-child{font-family:var(--font-display);font-weight:700;font-variant-numeric:tabular-nums;width:70px}
.cv td:nth-child(2){font-weight:700}
.cv td:nth-child(5){color:var(--ink-2)}
.cv .tag{display:inline-block;font-size:var(--text-xs);padding:.15em .7em;border-radius:999px;background:var(--tint);color:var(--ink-2);white-space:nowrap}
.cv-count{margin-top:var(--space-3);font-size:var(--text-xs);color:var(--muted)}
.cv-empty td{text-align:center;color:var(--muted);padding:var(--space-10)}

/* team */
.team{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius);overflow:hidden}
.team li{background:var(--dark);padding:var(--space-8) var(--space-6);display:flex;flex-direction:column;gap:var(--space-1)}
.team__role{font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:#f0b48f;font-weight:700}
.team__name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--on-dark);line-height:1.2;margin-top:var(--space-1)}
.team a{color:var(--on-dark-2);text-decoration:none;font-size:var(--text-sm);margin-top:var(--space-2);font-variant-numeric:tabular-nums}
.team a:hover{color:#fff}

/* contact */
.contact{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(2rem,6vw,6rem);align-items:center}
.contact__card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(1.5rem,4vw,2.75rem);display:grid;gap:var(--space-8)}
.contact__card h3{font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:var(--space-3)}
.contact__card address{font-style:normal;font-size:var(--text-lg);font-weight:500;line-height:1.45}
.contact__card p{color:var(--ink-2)}
.contact__card .link-arrow{margin-top:var(--space-4)}

/* footer */
.footer{background:var(--dark);color:var(--on-dark-2);padding-block:var(--space-12);font-size:var(--text-sm)}
.footer .brand{color:var(--on-dark)}
.footer__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-6)}
.footer a{text-decoration:none}
.footer a:hover{color:#fff}
.footer__copy{font-size:var(--text-xs)}

/* lightbox */
.lightbox{border:0;padding:0;background:transparent;max-width:100vw;max-height:100vh;width:100vw;height:100vh;color:#fff}
.lightbox::backdrop{background:rgba(10,11,12,.94)}
.lightbox[open]{display:flex;align-items:center;justify-content:center}
.lightbox figure{margin:0;max-width:min(1200px,88vw);display:flex;flex-direction:column;align-items:center}
.lightbox img{max-height:80vh;max-width:100%;object-fit:contain;border-radius:6px}
.lightbox figcaption{margin-top:var(--space-4);font-size:var(--text-sm);color:rgba(255,255,255,.8);text-align:center}
.lightbox figcaption strong{color:#fff;font-family:var(--font-display);font-size:var(--text-lg);display:block}
.lightbox__close,.lightbox__nav{position:absolute;background:rgba(255,255,255,.1);border:0;color:#fff;width:48px;height:48px;border-radius:50%;font-size:28px;line-height:1;cursor:pointer;transition:background .2s}
.lightbox__close:hover,.lightbox__nav:hover{background:rgba(255,255,255,.22)}
.lightbox__close{top:20px;right:20px}
.lightbox__prev{left:20px;top:50%;transform:translateY(-50%)}
.lightbox__next{right:20px;top:50%;transform:translateY(-50%)}

/* reveal */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.is-in{opacity:1;transform:none}

/* responsive */
@media (max-width:1024px){
  .services{grid-template-columns:1fr 1fr}
  .service:nth-child(3){padding-left:0;border-left:0}
  .service:nth-child(n+3){border-top:1px solid var(--line)}
  .grid{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  .nav{display:none}
  .menu-btn{display:block;color:inherit}
  .mobile-nav{display:flex;flex-direction:column;gap:var(--space-2);position:fixed;inset:76px 0 auto;background:var(--bg);color:var(--ink);padding:var(--space-6) clamp(1.25rem,4vw,2.5rem) var(--space-8);border-bottom:1px solid var(--line);transform:translateY(-8px);opacity:0;pointer-events:none;transition:all .3s var(--ease)}
  .mobile-nav a:not(.btn){text-decoration:none;font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);padding:var(--space-2) 0}
  .mobile-nav .btn{margin-top:var(--space-4);justify-content:center}
  .header.menu-open{background:var(--bg);color:var(--ink)}
  .header.menu-open .mobile-nav{opacity:1;transform:none;pointer-events:auto}
  .stats{grid-template-columns:1fr 1fr}
  .stats div:nth-child(3){padding-left:0;border-left:0}
  .stats div{padding-bottom:var(--space-4)}
  .feature{grid-template-columns:1fr}
  .feature__img{aspect-ratio:16/10}
  .split,.contact{grid-template-columns:1fr}
  .cv th:nth-child(3),.cv td:nth-child(3){display:none}
}
@media (max-width:600px){
  .services{grid-template-columns:1fr}
  .service,.service+.service{padding-left:0;border-left:0}
  .service+.service{border-top:1px solid var(--line)}
  .grid{grid-template-columns:1fr}
  .card.is-wide{grid-column:auto;aspect-ratio:16/9}
  .team{grid-template-columns:1fr}
  .search input{min-width:0;width:100%}
  .cv-tools,.search{width:100%}
  #cv-cat{width:100%}
  .cv th:nth-child(4),.cv td:nth-child(4){display:none}
  .brand__llc{display:none}
  .hero__title br{display:none}
  .hero__title{max-width:none}
  .footer__inner{flex-direction:column;align-items:flex-start}
  .lightbox__nav{top:auto;bottom:24px;transform:none}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none}
}
.card.is-wide img{position:absolute;inset:0}

.section--dark .split__text p.appt{margin-top:var(--space-8);color:var(--on-dark);font-family:var(--font-display);font-weight:700;font-size:var(--text-lg)}
.split__text .btn--lg{margin-top:var(--space-5)}
.footer{border-top:1px solid rgba(255,255,255,.1)}
