@font-face{font-family:"Big Shoulders";src:url(fonts/bigshoulders.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Figtree";src:url(fonts/figtree.woff2) format("woff2");font-weight:300 900;font-display:swap}

:root{
  --tar:#141517;      /* deep roof-tar black */
  --tar-2:#1e2023;
  --concrete:#efece6; /* warm parapet concrete */
  --concrete-2:#e3dfd7;
  --ink:#1a1b1d;
  --muted:#55585d;    /* 6.4:1 on concrete */
  --muted-d:#a9adb3;  /* 8:1 on tar */
  --line:#cfcac0;
  --line-d:#33363b;
  --signal:#b23a0a;   /* the ONE accent: only on clickable things */
  --signal-hi:#ff8a4c;/* same hue, lifted for links on dark */
  --signal-press:#8f2e07;
  --display:"Big Shoulders",Impact,"Arial Narrow",sans-serif;
  --body:"Figtree",system-ui,-apple-system,"Segoe UI",sans-serif;
  --gut:clamp(16px,4vw,48px);
  --max:1240px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--concrete);color:var(--ink);font:400 1.125rem/1.6 var(--body);overflow-x:hidden;padding-bottom:84px}
img{display:block;max-width:100%;height:auto}
a{color:var(--signal);text-underline-offset:3px;text-decoration-thickness:2px}
a:hover{color:var(--signal-press)}
:focus-visible{outline:3px solid var(--signal);outline-offset:3px;border-radius:4px}
.dark :focus-visible{outline-color:var(--signal-hi)}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gut)}
.skip{position:absolute;left:-999px;top:8px;background:#fff;color:var(--ink);padding:12px 16px;z-index:100}
.skip:focus{left:8px}
.tiny{font:700 .75rem/1.3 var(--body);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.dark .tiny{color:var(--muted-d)}
h1,h2,h3{font-family:var(--display);font-weight:900;line-height:.9;letter-spacing:-.005em;margin:0;text-transform:uppercase}
h2{font-size:clamp(3rem,10vw,7.5rem)}
h3{font-size:clamp(1.6rem,4.5vw,2.2rem);line-height:1}
p{margin:0 0 1em}

/* buttons: the only filled use of the signal colour */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6em;min-height:56px;padding:0 28px;border-radius:999px;background:var(--signal);color:#fff;font:700 1.0625rem/1 var(--body);text-decoration:none;border:0;cursor:pointer;transition:background .2s,transform .2s}
.btn:hover{background:var(--signal-press);color:#fff;transform:translateY(-1px)}
.btn svg{width:20px;height:20px;flex:none}
.link-call{display:inline-flex;align-items:center;min-height:48px;font-weight:700;font-size:1.0625rem}
.dark a:not(.btn){color:var(--signal-hi)}
.dark a:not(.btn):hover{color:#ffb38a}

/* header */
.top{position:absolute;inset:0 0 auto 0;z-index:10}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:76px}
.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none}
.dark .brand{color:#fff}
.brand svg{width:40px;height:40px;flex:none}
.brand b{font:900 1.5rem/1 var(--display);text-transform:uppercase;letter-spacing:.02em;display:block}
.brand small{font:700 .7rem/1.2 var(--body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted-d)}
.top .btn{min-height:48px;padding:0 20px;font-size:1rem;display:none}
@media (min-width:760px){.top .btn{display:inline-flex}}

/* HERO: plane 1 huge word, plane 2 photo, plane 3 copy + action */
.hero{position:relative;background:var(--tar);color:#fff;padding:96px 0 56px;overflow:hidden;isolation:isolate}
.hero-word{position:absolute;z-index:-2;left:-.04em;top:64px;font:900 clamp(9rem,44vw,34rem)/.78 var(--display);text-transform:uppercase;color:var(--tar-2);letter-spacing:-.02em;white-space:nowrap;user-select:none;pointer-events:none}
.hero-grid{display:grid;gap:28px}
.hero-photo{position:relative;z-index:-1;margin:0 calc(var(--gut) * -1);aspect-ratio:4/3;overflow:hidden}
.hero-photo img{width:100%;height:100%;object-fit:cover;filter:saturate(.85) contrast(1.05)}
.hero-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,21,23,0) 45%,rgba(20,21,23,.95) 100%)}
.hero-copy{margin-top:-120px;position:relative}
.hero h1{font-size:clamp(3.4rem,15vw,8.2rem)}
.hero h1 span{display:block}
.hero .lead{font-size:clamp(1.125rem,2.4vw,1.375rem);color:#e7e8ea;max-width:34ch;margin:20px 0 28px}
.hero .actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px}
.hero .eyebrow{margin-bottom:14px}
@media (min-width:960px){
  .hero{padding:120px 0 96px;min-height:min(100vh,940px);display:flex;align-items:center}
  .hero-grid{grid-template-columns:1.05fr 1fr;align-items:center;gap:0}
  .hero-photo{grid-column:2;grid-row:1;margin:0 calc(var(--gut) * -1) 0 -80px;aspect-ratio:4/5;border-radius:0}
  .hero-photo::after{background:linear-gradient(90deg,rgba(20,21,23,.9) 0%,rgba(20,21,23,0) 40%)}
  .hero-copy{grid-column:1;grid-row:1;margin:0;z-index:1}
  .hero-word{top:auto;bottom:-.08em}
}

/* fact rail */
.facts{background:var(--tar);color:#fff;border-top:1px solid var(--line-d)}
.facts ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr}
.facts li{padding:22px var(--gut) 22px 0;border-bottom:1px solid var(--line-d)}
.facts li:nth-child(odd){padding-left:0}
.facts strong{display:block;font:900 clamp(2rem,6vw,3rem)/1 var(--display);text-transform:uppercase}
.facts a{text-decoration:none}
@media (min-width:860px){.facts ul{grid-template-columns:repeat(4,1fr)}.facts li{border-bottom:0;border-left:1px solid var(--line-d);padding-left:24px!important}.facts li:first-child{border-left:0;padding-left:0!important}}

/* sections */
section{padding:clamp(72px,12vw,144px) 0}
.sec-head{display:grid;gap:18px;margin-bottom:clamp(36px,6vw,64px)}
.sec-head p{max-width:52ch;color:var(--muted);font-size:1.1875rem}
.dark{background:var(--tar);color:#fff}
.dark .sec-head p{color:var(--muted-d)}

/* services */
.svc{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}
.svc li{display:grid;grid-template-columns:auto 1fr;gap:4px 18px;padding:26px 0;border-bottom:1px solid var(--line)}
.svc .n{font:900 1.1rem/1.6 var(--display);color:var(--muted);grid-row:span 2}
.svc p{margin:6px 0 0;color:var(--muted);max-width:60ch}
@media (min-width:900px){.svc{display:grid;grid-template-columns:1fr 1fr;column-gap:56px}}

/* story with depth */
.story{position:relative;overflow:hidden;isolation:isolate}
.story .year{position:absolute;z-index:-1;right:-.04em;top:.1em;font:900 clamp(10rem,40vw,30rem)/.8 var(--display);color:var(--tar-2);letter-spacing:-.02em;pointer-events:none;user-select:none}
.story-grid{display:grid;gap:40px}
.story .bq{margin:0;font:600 clamp(1.35rem,3.4vw,2rem)/1.35 var(--body);max-width:30ch}
.team{list-style:none;padding:0;margin:0;display:grid;gap:0}
.team li{padding:22px 0;border-top:1px solid var(--line-d)}
.team b{display:block;font:900 1.75rem/1.1 var(--display);text-transform:uppercase}
.team p{color:var(--muted-d);margin:6px 0 0}
@media (min-width:960px){.story-grid{grid-template-columns:1.1fr 1fr;gap:80px;align-items:start}}

/* promise */
.promise{display:grid;gap:0;border-top:2px solid var(--ink)}
.promise div{padding:28px 0;border-bottom:1px solid var(--line)}
.promise p{color:var(--muted);margin:10px 0 0}
@media (min-width:860px){.promise{grid-template-columns:repeat(3,1fr);column-gap:40px}}

/* gallery */
.gal{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.gal figure{margin:0;position:relative;overflow:hidden;background:var(--concrete-2)}
.gal img{width:100%;height:100%;object-fit:cover;aspect-ratio:3/4;transition:transform .6s ease}
.gal figure:hover img{transform:scale(1.03)}
.gal figure.wide{grid-column:span 2}
.gal figure.wide img{aspect-ratio:3/2}
.gal figcaption{position:absolute;left:0;bottom:0;padding:8px 12px;background:rgba(20,21,23,.82);color:#fff;font:700 .75rem/1.3 var(--body);letter-spacing:.12em;text-transform:uppercase}
@media (min-width:900px){.gal{grid-template-columns:repeat(4,1fr);gap:14px}.gal figure.wide{grid-column:span 2;grid-row:span 1}}
@media (prefers-reduced-motion:reduce){.gal img{transition:none}.gal figure:hover img{transform:none}}

/* reviews + areas */
.rating{display:grid;gap:28px;align-items:end}
.rating .big{font:900 clamp(7rem,30vw,16rem)/.8 var(--display);letter-spacing:-.02em}
.rating .big sup{font-size:.35em;vertical-align:top;margin-left:.05em}
.stars{display:flex;gap:6px;margin:14px 0}
.stars svg{width:28px;height:28px;fill:var(--ink)}
.areas{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.areas li{border:1.5px solid var(--ink);border-radius:999px;padding:10px 18px;font-weight:700}
@media (min-width:900px){.rating{grid-template-columns:auto 1fr;gap:64px}}

/* contact */
.contact-grid{display:grid;gap:48px}
@media (min-width:960px){.contact-grid{grid-template-columns:1fr 1.15fr;gap:80px}}
.info dl{margin:0;display:grid;gap:22px}
.info dt{margin-bottom:4px}
.info dd{margin:0;font-size:1.25rem}
.info dd a{font-weight:700}
form{display:grid;gap:18px;background:var(--tar-2);padding:clamp(20px,4vw,40px);border-radius:6px}
label{display:block;font-weight:700;margin-bottom:6px}
label .opt{font-weight:400;color:var(--muted-d)}
input,select,textarea{width:100%;min-height:52px;padding:12px 14px;font:400 1.0625rem/1.4 var(--body);color:#fff;background:var(--tar);border:1.5px solid #4a4e55;border-radius:4px}
textarea{min-height:120px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--signal-hi);box-shadow:0 0 0 3px rgba(255,138,76,.3)}
.err{color:#ffb38a;font-size:.9375rem;margin-top:6px;min-height:0}
[aria-invalid="true"]{border-color:#ffb38a}
.row2{display:grid;gap:18px}
@media (min-width:600px){.row2{grid-template-columns:1fr 1fr}}
form .btn{width:100%}
.form-note{font-size:.9375rem;color:var(--muted-d);margin:0}

/* footer */
footer{background:var(--tar);color:var(--muted-d);border-top:1px solid var(--line-d);padding:40px 0 40px;font-size:.9375rem}
footer .wrap{display:grid;gap:16px}
footer nav{display:flex;flex-wrap:wrap;gap:4px 20px}
footer nav a{display:inline-flex;align-items:center;min-height:44px}

/* sticky call (phones) + concept note */
.callbar{position:fixed;left:12px;right:12px;bottom:46px;z-index:50;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.callbar .btn{width:100%}
@media (min-width:760px){.callbar{display:none}body{padding-bottom:34px}}
.concept{position:fixed;left:0;right:0;bottom:0;z-index:60;background:rgba(20,21,23,.94);color:#c9ccd1;font:500 .75rem/1.3 var(--body);text-align:center;padding:8px 12px}

/* reveal: time-based on enter, never scrubbed */
.js .rv{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.js .rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .rv{opacity:1;transform:none;transition:none}}

/* simple pages */
.page{background:var(--tar);color:#fff;padding:120px 0 72px}
.page h1{font-size:clamp(3rem,12vw,6rem)}
.prose{max-width:70ch;padding:56px var(--gut) 96px}
.prose h2{font-size:clamp(1.8rem,5vw,2.4rem);margin:40px 0 12px;line-height:1}
/* fixes after first screenshot pass */
.dark a.brand,.dark a.brand:hover{color:#fff}
.facts ul{padding:0 var(--gut)}
.hero-word{top:auto;bottom:-.06em}
body{padding-bottom:0}
footer{padding-bottom:150px}
@media (min-width:760px){body{padding-bottom:0}footer{padding-bottom:72px}}
.svc li{align-content:start}
::placeholder{color:#8d9198;opacity:1}
.rating .big{margin:8px 0 0}
.rating{align-items:center}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.facts .tiny{letter-spacing:.1em}
