/* ============================================================
   Ochre & Pine — Grid system (Direction B)
   Shared stylesheet for the full site.
   Palette closed · 12-col / 40px gutter · 1400 container
   ============================================================ */

:root{
  --pine:#1E2B22;
  --pine-soft:#26352B;
  --ochre:#B47B3A;
  --ochre-soft:#C79A60;
  --cream:#F4ECDC;
  --cream-deep:#ECE1CC;
  --ink:#2A2620;
  --sage:#A3AC9A;
  --sage-soft:#CBD1C2;
  --rule:rgba(30,43,34,.16);
  --rule-strong:rgba(30,43,34,.32);
  --rule-on-pine:rgba(244,236,220,.20);

  --gutter:40px;
  --maxw:1400px;
  --margin:48px;

  --serif:"Source Serif 4", Georgia, "Times New Roman", serif;
  --sans:"neue-haas-grotesk-text","neue-haas-grotesk-display","Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"JetBrains Mono","Söhne Mono",ui-monospace,SFMono-Regular,monospace;
}

*{box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);font-weight:400;line-height:1.65;font-size:17px}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}

/* ---- layout ---- */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--margin)}
.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter)}
.section{padding:96px 0}
.section--tight{padding:64px 0}
hr.rule{border:0;border-top:2px solid var(--pine);margin:0}
hr.hair{border:0;border-top:1px solid var(--rule);margin:0}

/* ---- type ---- */
h1,h2,h3,h4{font-family:var(--serif);color:var(--pine);margin:0;line-height:1.04;letter-spacing:-.012em}
h1,h2,h3{font-weight:800}
.display{font-size:clamp(46px,7.4vw,104px);line-height:.92}
.h1{font-size:clamp(40px,5.6vw,76px);line-height:.98}
.h2{font-size:clamp(28px,3.4vw,44px)}
.h3{font-size:clamp(22px,2.4vw,30px)}
.lede{font-size:19px;line-height:1.6;color:var(--ink)}
.eyebrow{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ochre);margin:0}
.mono{font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--sage)}
.serif-italic{font-family:var(--serif);font-style:italic;font-weight:400}

/* logo lockup (horizon mark + wordmark) */
.logo{display:inline-flex;align-items:center;gap:12px}
.logo-mark{display:block;flex:none;height:22px;width:auto}
.logo:hover .wordmark{color:var(--pine)}

/* wordmark */
.wordmark{font-family:var(--serif);font-weight:800;color:var(--pine);letter-spacing:-.01em;font-size:20px}
.wordmark .amp{font-style:italic;color:var(--ochre)}
.panel--pine .logo-mark line{stroke:var(--cream)}

/* ---- links + buttons ---- */
.tlink{font-family:var(--sans);font-weight:500;color:var(--pine);border-bottom:1px solid var(--rule-strong);padding-bottom:2px;display:inline-block;transition:color .2s,border-color .2s}
.tlink:hover{color:var(--ochre);border-color:var(--ochre)}
.tlink .arr{color:var(--ochre)}
.btn{display:inline-block;font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:.03em;padding:14px 22px;border:1px solid var(--pine);color:var(--pine);transition:.2s}
.btn.fill{background:var(--pine);color:var(--cream)}
.btn:hover{border-color:var(--ochre);color:var(--ochre)}
.btn.fill:hover{background:var(--ochre);border-color:var(--ochre);color:#fff}

/* ---- pine panel (the "green for contrast" treatment) ---- */
.panel--pine{background:var(--pine);color:var(--cream)}
.panel--pine h1,.panel--pine h2,.panel--pine h3,.panel--pine h4{color:var(--cream)}
.panel--pine .eyebrow{color:var(--ochre-soft)}
.panel--pine .lede,.panel--pine p{color:rgba(244,236,220,.84)}
.panel--pine .tlink{color:var(--cream);border-color:var(--rule-on-pine)}
.panel--pine .tlink:hover{color:var(--ochre-soft);border-color:var(--ochre-soft)}
.panel--pine .tlink .arr{color:var(--ochre-soft)}
.panel--pine .btn{border-color:var(--cream);color:var(--cream)}
.panel--pine .btn.fill{background:var(--cream);color:var(--pine);border-color:var(--cream)}
.panel--pine .btn:hover{background:var(--ochre);border-color:var(--ochre);color:#fff}
.panel--pine .mono{color:var(--sage)}

/* ---- header ---- */
.site-head{position:sticky;top:0;z-index:40;background:rgba(244,236,220,.9);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}
.site-head .bar{display:flex;align-items:center;justify-content:space-between;padding:18px 0}
.site-head nav{display:flex;gap:28px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--pine)}
.site-head nav a{position:relative;padding-bottom:2px}
.site-head nav a:hover{color:var(--ochre)}
.site-head nav a.active{color:var(--ochre)}

/* hamburger + mobile nav */
.nav-toggle{display:none;appearance:none;background:none;border:0;flex-direction:column;justify-content:center;gap:5px;width:42px;height:42px;padding:9px;cursor:pointer}
.nav-toggle span{display:block;height:2px;width:100%;background:var(--pine);transition:transform .25s ease,opacity .2s ease}
.nav-contact{display:none}
body.nav-open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
body.nav-open .nav-toggle span:nth-child(2){opacity:0}
body.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

@media(max-width:760px){
  /* blur creates a containing block for fixed children — must drop it so the
     full-screen nav sizes to the viewport, not the header */
  .site-head{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--cream)}
  .nav-toggle{display:flex;position:relative;z-index:65}
  .logo{position:relative;z-index:65}
  .site-head nav{
    position:fixed;inset:0;z-index:60;background:var(--cream);
    flex-direction:column;align-items:flex-start;justify-content:flex-start;
    gap:0;padding:104px var(--margin) 40px;
    text-transform:none;letter-spacing:0;
    transform:translateX(100%);transition:transform .3s ease;overflow-y:auto;
  }
  body.nav-open .site-head nav{transform:translateX(0)}
  body.nav-open{overflow:hidden}
  .site-head nav a{
    font-family:var(--serif);font-weight:800;font-size:clamp(28px,7vw,40px);
    color:var(--pine);padding:14px 0;width:100%;border-bottom:1px solid var(--rule);padding-bottom:14px
  }
  .site-head nav a:hover,.site-head nav a.active{color:var(--ochre)}
  .site-head nav .nav-contact{display:block;margin-top:auto;padding-top:30px;width:100%}
  .site-head nav .nav-contact .eyebrow{margin-bottom:14px}
  .site-head nav .nav-contact a{
    font-family:var(--sans);font-weight:400;font-size:17px;color:var(--pine);
    padding:6px 0;border:0;width:auto;display:block;letter-spacing:0
  }
  .site-head nav .nav-contact a:first-of-type{font-weight:600;font-size:22px}
}

/* ---- service list (numbered) ---- */
.svc{list-style:none;padding:0;margin:0}
.svc li{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:baseline;padding:14px 0;border-top:1px solid var(--rule);font-size:15px}
.svc li .k{font-family:var(--mono);font-size:11px;color:var(--ochre)}
.svc li b{font-family:var(--serif);font-weight:600;color:var(--pine)}
.panel--pine .svc li{border-color:var(--rule-on-pine)}
.panel--pine .svc li b{color:var(--cream)}

/* ---- media / image slots ---- */
.media{position:relative;overflow:hidden;background:linear-gradient(160deg,var(--sage-soft),var(--cream-deep));border:1px solid var(--rule)}
.media::before{content:"";position:absolute;left:38%;right:38%;bottom:42%;height:40px;background:var(--ochre);border-radius:60px 60px 0 0;opacity:.55}
.media::after{content:"";position:absolute;left:14%;right:14%;bottom:42%;height:2px;background:var(--pine);opacity:.45}
.media .label{position:absolute;left:14px;bottom:12px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--pine);opacity:.55;text-transform:uppercase}
.r-43{aspect-ratio:4/3}
.r-169{aspect-ratio:16/9}
.r-45{aspect-ratio:4/5}
.r-32{aspect-ratio:3/2}
.r-11{aspect-ratio:1/1}

/* ---- work cards ---- */
.cards{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter)}
.card{grid-column:span 4;display:flex;flex-direction:column}
.card .media{margin-bottom:16px}
.card h3{font-size:22px;margin-bottom:8px}
.card .cmeta{font-family:var(--mono);font-size:11px;color:var(--sage);display:flex;gap:10px;align-items:center;margin-bottom:8px}
.card p{font-size:14px;color:var(--ink);opacity:.82;margin:0}
.tag{font-family:var(--sans);font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:3px 9px;white-space:nowrap}
.tag.studio{background:rgba(30,43,34,.1);color:var(--pine)}
.tag.consulting{background:rgba(180,123,58,.18);color:var(--ochre)}

/* ---- work register (index rows) ---- */
.register{margin-top:8px}
.entry{display:grid;grid-template-columns:56px 1.1fr 1.5fr 130px 60px;gap:var(--gutter);align-items:center;padding:28px 0;border-bottom:1px solid var(--rule);transition:background .15s}
.entry:hover{background:var(--cream-deep)}
.entry .idx{font-family:var(--mono);font-size:13px;color:var(--sage)}
.entry h3{font-size:clamp(22px,2.4vw,32px)}
.entry .desc{font-size:15px;color:var(--ink);opacity:.8}
.entry .yr{font-family:var(--mono);font-size:13px;color:var(--pine);text-align:right}
.entry .go{color:var(--ochre);text-align:right;font-size:20px}

/* ---- stats ---- */
.stats{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter)}
.stat{grid-column:span 3;border-top:2px solid var(--pine);padding-top:14px}
.stat .n{font-family:var(--serif);font-weight:800;font-size:clamp(32px,3.4vw,46px);color:var(--pine);line-height:1}
.stat .l{font-size:13px;color:var(--ink);opacity:.8;margin-top:8px}

/* ---- quote ---- */
.quote{font-family:var(--serif);font-weight:400;font-size:clamp(24px,3vw,38px);line-height:1.28;color:var(--pine)}
.quote cite{display:block;font-family:var(--sans);font-style:normal;font-size:14px;color:var(--sage);margin-top:22px;letter-spacing:.02em}

/* ---- footer ---- */
.site-foot{background:var(--pine);color:var(--cream);padding:64px 0 36px}
.site-foot .grid{row-gap:34px}
.site-foot h4{font-family:var(--sans);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ochre-soft);margin-bottom:16px}
.site-foot ul{list-style:none;padding:0;margin:0}
.site-foot li{font-size:14px;padding:5px 0;color:rgba(244,236,220,.82)}
.site-foot li a:hover{color:var(--ochre-soft)}
.site-foot .col{grid-column:span 3}
.site-foot .bottom{grid-column:1/-1;margin-top:46px;padding-top:20px;border-top:1px solid var(--rule-on-pine);font-family:var(--mono);font-size:12px;color:rgba(244,236,220,.6);display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.site-foot .bottom .wordmark{color:var(--cream)}
.site-foot .bottom .wordmark .amp{color:var(--ochre-soft)}

/* ---- page hero ---- */
.page-hero{padding:72px 0 64px;border-bottom:2px solid var(--pine)}
.page-hero.panel--pine{border-bottom:none}
.page-hero .grid{align-items:end}
.page-hero .eyebrow{grid-column:1/3;margin-bottom:18px}
.page-hero h1{grid-column:1/10}
.page-hero .sub{grid-column:1/9;margin-top:26px}
.page-hero .intro{grid-column:1/8;margin-top:26px;font-size:18px;line-height:1.6}
.page-hero .hmeta{grid-column:10/13;align-self:end;font-family:var(--mono);font-size:12px;line-height:1.8;color:var(--pine);border-top:2px solid var(--pine);padding-top:12px}
.panel--pine .page-hero .hmeta,.page-hero.panel--pine .hmeta{color:var(--ochre-soft);border-color:var(--ochre-soft)}

/* ---- service / content block (label left, body right) ---- */
.block-row{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter);padding:56px 0;border-top:1px solid var(--rule)}
.block-row .side{grid-column:1/4}
.block-row .side .k{font-family:var(--mono);font-size:12px;color:var(--ochre);display:block;margin-bottom:14px}
.block-row .side h3{font-size:clamp(24px,2.6vw,32px)}
.block-row .main{grid-column:5/12}
.block-row .main p{margin:0 0 22px;font-size:17px}
.block-row .main .includes{list-style:none;padding:0;margin:0}
.block-row .main .includes li{padding:11px 0;border-top:1px solid var(--rule);font-size:15px;display:grid;grid-template-columns:auto 1fr;gap:12px}
.block-row .main .includes li::before{content:"—";color:var(--ochre)}
.panel--pine .block-row{border-color:var(--rule-on-pine)}

/* ---- process steps ---- */
.process{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter) var(--gutter);counter-reset:step}
.step{grid-column:span 4;border-top:2px solid var(--pine);padding-top:16px}
.step .n{font-family:var(--mono);font-size:12px;color:var(--ochre);margin-bottom:10px}
.step h4{font-family:var(--serif);font-weight:800;font-size:22px;margin-bottom:8px}
.step p{font-size:15px;margin:0;color:var(--ink);opacity:.85}

/* ---- two-column split (intro/list, about, etc.) ---- */
.split{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter);align-items:start}
.split .l{grid-column:1/6}
.split .r{grid-column:7/13}
.split .r p{margin:0 0 20px}
.section-label{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter);margin-bottom:40px;align-items:baseline}
.section-label .eyebrow{grid-column:1/3}
.section-label h2{grid-column:3/11}

/* ---- principles / value list ---- */
.principles{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gutter)}
.principle{grid-column:span 6;border-top:1px solid var(--rule);padding-top:18px}
.principle h4{font-family:var(--serif);font-weight:800;font-size:20px;margin-bottom:8px}
.principle p{font-size:15px;margin:0;opacity:.85}

@media(max-width:900px){
  .block-row .side,.block-row .main{grid-column:1/-1}
  .block-row .main{margin-top:18px}
  .step{grid-column:span 6}
  .split .l,.split .r,.section-label .eyebrow,.section-label h2{grid-column:1/-1}
  .principle{grid-column:span 12}
  .page-hero h1,.page-hero .sub,.page-hero .intro,.page-hero .hmeta{grid-column:1/-1}
}

/* ---- responsive ---- */
@media(max-width:900px){
  .card{grid-column:span 6}
  .stat{grid-column:span 6}
  .site-foot .col{grid-column:span 6}
  .entry{grid-template-columns:40px 1fr 70px}
  .entry .desc,.entry .go{display:none}
}
@media(max-width:680px){
  :root{--margin:24px}
  .card{grid-column:span 12}
  .stat{grid-column:span 12}
}
