
  :root{
    --red:#a8482a;
    --bg:#f6f4ee;
    --panel:#fcfaf5;
    --panel2:#ece8df;
    --line:#ddd8cc;
    --ink:#211e17;
    --muted:#726d63;   /* warm grey — darkened from #79746b to clear WCAG AA (~4.7:1 on --bg) */
    --muted-strong:#5a544a;   /* darker muted — clears AA (~6:1) on --panel2 surfaces (e.g. util strip) */
    --mono:"IBM Plex Mono", ui-monospace, monospace;
    --sans:"Archivo", system-ui, sans-serif;
    --serif:"Cormorant Garamond", Georgia, serif;
    /* spacing scale — 4px base */
    --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px;
    --s6:32px; --s7:48px; --s8:64px; --s9:80px;
    --content-max:1600px;   /* large screens: content caps here; bands keep bleeding full-width */
    --pad-i:44px;           /* fixed inner gutter for already-capped islands (journal reading column) */
    --pad-x:max(var(--pad-i), calc((100% - var(--content-max)) / 2));   /* gutter grows to center content past --content-max; collapses to --pad-i below */
    --sec-y:80px;   /* section vertical padding */
    /* type scale — modular */
    --fs-1:13px; --fs-2:15px; --fs-3:17px; --fs-4:20px;
    --fs-5:26px; --fs-6:33px; --fs-7:42px; --fs-8:74px;
    /* motion */
    --ease:cubic-bezier(.2,.6,.2,1);
    --t-fast:.16s;
    --t-slow:.5s;
  }
  *{box-sizing:border-box;margin:0;padding:0;}
  html{scroll-behavior:smooth;}
  body{font-family:var(--sans);background:#2a2825;color:var(--ink);-webkit-font-smoothing:antialiased;}

  /* ---- global interaction layer ---- */
  a{color:inherit;text-decoration:none;}
  button{font:inherit;}
  :focus-visible{outline:2px solid var(--red);outline-offset:3px;border-radius:1px;}
  /* a11y: skip-to-content link (visually hidden until focused) + landmark focus target */
  .skip-link{position:absolute;left:8px;top:-64px;z-index:2000;background:var(--ink);color:var(--bg);
    padding:10px 16px;border-radius:4px;font-family:var(--mono);font-size:13px;letter-spacing:.04em;
    transition:top var(--t-fast) var(--ease);}
  .skip-link:focus{top:8px;}
  #main{display:block;}
  #main:focus{outline:none;}
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *,*::before,*::after{transition-duration:.001ms !important;animation-duration:.001ms !important;}
  }

  /* ============ CONTROL BAR ============ */
  .control{position:sticky;top:0;z-index:1000;display:flex;align-items:center;gap:16px;flex-wrap:wrap;
    padding:10px 20px;background:#0a0a09;border-bottom:1px solid #000;font-family:var(--mono);font-size:12px;color:#e9e6df;}
  .control .brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:.04em;}
  .control .ps{width:26px;height:26px;border:1px solid #4a473f;border-radius:3px;display:grid;place-items:center;font-size:11px;color:#cfcabf;}
  .control .label{color:#7d7a72;text-transform:uppercase;letter-spacing:.14em;font-size:10px;}

  .canvas{max-width:1200px;margin:0 auto;padding:24px 22px 80px;}
  .dirhead{color:#cbc7bd;font-family:var(--mono);font-size:12px;line-height:1.7;margin:0 2px 16px;}
  .dirhead b{color:#fff;}


  /* ===================== LUX PAGE ===================== */
  .lux{background:var(--bg);border-radius:4px;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.5);}
  .ph{position:relative;background:repeating-linear-gradient(135deg,#1b1b1d 0 11px,#151517 11px 22px);
    display:grid;place-items:center;color:#6f6b62;font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-align:center;border:1px solid #232325;}
  .ph span{padding:5px 9px;background:rgba(10,10,10,.5);border-radius:3px;max-width:85%;}

  .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--red);}

  /* display type switch */
  .lux .display{font-family:var(--sans);font-weight:800;letter-spacing:-.02em;}

  /* ---- HEADER: utility strip + tab nav (echoes the seg-control + mono band) ---- */
  .util{display:flex;align-items:center;gap:16px;padding:var(--s2) var(--pad-x);border-bottom:1px solid var(--line);background:var(--panel2);
    font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted-strong);}
  .util .sp{flex:1;}
  .util .dot{opacity:.45;}
  .util b{color:var(--red);font-weight:500;}
  .util .av{display:inline-flex;align-items:center;gap:7px;color:var(--ink);}
  .util .av::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--red);box-shadow:0 0 0 3px color-mix(in srgb,var(--red) 22%,transparent);}

  /* header nav only (scoped so it doesn't clobber other <nav>s like .pnav / .jpag / topic grids) */
  .lux nav:has(.brandblock){display:flex;align-items:stretch;gap:0;border-bottom:1px solid var(--line);padding-inline:var(--pad-x);}
  .lux nav .brandblock{display:flex;align-items:center;gap:13px;padding:var(--s4) 30px var(--s4) 0;border-right:1px solid var(--line);}
  .lux nav .mark{width:38px;height:38px;border:1.5px solid var(--ink);display:grid;place-items:center;font-weight:800;font-size:13px;letter-spacing:.01em;flex:none;}
  .lux nav .wordmark{display:flex;flex-direction:column;line-height:1;}
  .lux nav .wordmark .nm{font-size:var(--fs-4);font-weight:800;letter-spacing:-.01em;}
  .lux nav .wordmark .tag{font-family:var(--mono);font-size:9px;font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--muted);margin-top:6px;}
  .lux nav ul{display:flex;list-style:none;margin-left:auto;align-items:stretch;}
  /* nav items are <li><a> — the exact shape wp_nav_menu() emits, so the build's menu drops in unstyled.
     The <li> is the border cell; the <a> carries the hit area, padding, and states (keyboard-focusable). */
  .lux nav ul li{display:flex;align-items:stretch;border-right:1px solid var(--line);}
  .lux nav ul li:first-child{border-left:1px solid var(--line);}
  .lux nav ul li a{display:flex;align-items:center;padding:0 24px;
    font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink);cursor:pointer;transition:var(--t-fast) var(--ease);}
  .lux nav ul li a:hover{background:var(--panel2);color:var(--red);}
  .lux nav ul li.is-active a{color:var(--red);box-shadow:inset 0 -2px 0 var(--red);}
  .lux nav .cta{display:flex;align-items:center;background:var(--red);color:#fff;padding:0 30px;
    font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;cursor:pointer;transition:background var(--t-fast) var(--ease);}
  .lux nav .cta:hover{background:color-mix(in srgb,var(--red) 86%,#000);}
  .lux nav .cta:active{background:color-mix(in srgb,var(--red) 72%,#000);}

  /* hamburger toggle — hidden on desktop, revealed in the mobile pass */
  .navtoggle{display:none;margin-left:auto;width:44px;height:44px;flex:none;place-items:center;cursor:pointer;
    border:1px solid var(--line);background:var(--panel);color:var(--ink);transition:var(--t-fast) var(--ease);}
  .navtoggle:hover{border-color:var(--red);}
  .navtoggle .bars{position:relative;display:block;width:20px;height:14px;}
  .navtoggle .bars span{position:absolute;left:0;width:100%;height:2px;background:currentColor;border-radius:1px;transition:var(--t-fast) var(--ease);}
  .navtoggle .bars span:nth-child(1){top:0;}
  .navtoggle .bars span:nth-child(2){top:6px;}
  .navtoggle .bars span:nth-child(3){top:12px;}
  .lux nav.nav-open .navtoggle{color:var(--red);border-color:var(--red);}
  .lux nav.nav-open .navtoggle .bars span:nth-child(1){top:6px;transform:rotate(45deg);}
  .lux nav.nav-open .navtoggle .bars span:nth-child(2){opacity:0;}
  .lux nav.nav-open .navtoggle .bars span:nth-child(3){top:6px;transform:rotate(-45deg);}

  /* ---- HERO shells ---- */
  .hero{display:none;}
  .hero.show{display:block;}
  .herohd{padding:var(--s8) var(--pad-x) var(--s6);}
  .herohd .eyebrow{margin-bottom:var(--s4);}
  .herohd h1{font-size:var(--fs-8);line-height:1.0;max-width:16ch;}
  .herohd h1 em{font-style:normal;color:var(--red);}
  .herohd p{font-size:var(--fs-3);color:var(--muted);max-width:54ch;margin-top:var(--s4);line-height:1.5;}

  /* HERO 3 — five-photo spread (tall vertical lead + 2x2 horizontal set) */
  .trip{display:grid;grid-template-columns:1.45fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:6px;padding:0 var(--pad-x);height:524px;}
  .trip .ph{height:100%;}
  .trip .ph:first-child{grid-row:1 / span 2;}
  .trip .ph:nth-child(n+6){display:none;}   /* 6th frame (right vertical) appears only on wide screens */
  @media(min-width:1500px){
    .trip{grid-template-columns:1.2fr 1fr 1fr 1.2fr;}   /* tall vertical at each end + a 2×2 set between */
    .trip .ph:nth-child(n+6){display:block;}
    .trip .ph:last-child{grid-column:4;grid-row:1 / span 2;}
  }

  /* ---- CREDIBILITY BAND (stats + as seen in) ---- */
  .cred{margin:var(--s7) 0 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
  .stats{display:grid;grid-template-columns:repeat(4,1fr);padding-inline:var(--pad-x);}
  .stats .stat{padding:var(--s5) 30px;border-right:1px solid var(--line);}
  .stats .stat:last-child{border-right:none;}
  .stats .num{font-size:var(--fs-7);font-weight:300;letter-spacing:-.02em;line-height:1;}
  .stats .num b{color:var(--red);font-weight:inherit;}
  .stats .lab{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:var(--s3);}
  .seen{display:flex;align-items:center;gap:8px 28px;flex-wrap:wrap;padding:var(--s4) var(--pad-x);border-bottom:1px solid var(--line);background:var(--panel);}
  .seen .k{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);}
  .seen b{font-size:var(--fs-2);font-weight:600;color:var(--ink);}

  /* ---- generic sections ---- */
  .sec{padding:var(--sec-y) var(--pad-x);border-bottom:1px solid var(--line);}
  .sec .eyebrow{margin-bottom:var(--s4);}
  .hd{font-size:var(--fs-7);line-height:1.04;margin-bottom:var(--s2);}
  .sub{color:var(--muted);font-size:var(--fs-2);margin-bottom:var(--s6);max-width:60ch;}

  /* services — structured index list */
  .svc{display:block;border-top:1px solid var(--ink);}
  .svc .card{display:grid;grid-template-columns:44px 124px 1fr 196px;gap:var(--s6);align-items:start;
    padding:var(--s6) 0;border-bottom:1px solid var(--line);transition:var(--t-fast) var(--ease);}
  .svc .card:hover{padding-left:8px;}
  .svc .card .thumb{display:block;align-self:start;}
  .svc .card .thumb .ph{aspect-ratio:4/3;height:auto;transition:border-color var(--t-fast) var(--ease);}
  .svc .card:hover .thumb .ph{border-color:var(--red);}
  .svc .card .idx{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--muted);padding-top:9px;}
  .svc .card.lead .idx{color:var(--red);}
  .svc .card h3{font-size:var(--fs-5);font-weight:700;letter-spacing:-.015em;margin-bottom:var(--s2);line-height:1.05;}
  .svc .card p{font-size:var(--fs-2);color:var(--muted);line-height:1.62;max-width:54ch;}
  .svc .card .who{padding-top:5px;}
  .svc .card .who .tag{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);line-height:2;}
  @media(max-width:860px){.svc .card{grid-template-columns:1fr;gap:12px;}.svc .card .who{padding-top:0;}.svc .card .thumb .ph{aspect-ratio:16/9;}}

  /* awards & publications — expanded, editorial */
  .awards{display:grid;grid-template-columns:1.55fr 1fr;gap:var(--s8);align-items:start;}
  .awards .list{list-style:none;}
  .awards .list li{display:grid;grid-template-columns:78px 1fr;gap:var(--s5);padding:var(--s5) 0;border-top:1px solid var(--line);align-items:baseline;}
  .awards .list li:last-child{border-bottom:1px solid var(--line);}
  .awards .yr{font-family:var(--mono);color:var(--red);font-size:var(--fs-2);letter-spacing:.02em;}
  .awards .aw{font-size:var(--fs-4);font-weight:600;letter-spacing:-.01em;line-height:1.3;}
  .awards .firm{display:block;color:var(--muted);font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;margin-top:var(--s2);}
  .awards .list li{transition:background var(--t-fast) var(--ease),padding-left var(--t-fast) var(--ease);}
  .awards .list li:hover{background:color-mix(in srgb,var(--red) 6%,transparent);padding-left:6px;}
  .awards .aw{position:relative;padding-left:20px;display:inline-block;}
  .awards .aw::before{content:"";position:absolute;left:0;top:.55em;width:7px;height:7px;background:var(--red);transform:rotate(45deg);transition:transform var(--t-fast) var(--ease);}
  .awards .list li:hover .aw::before{transform:rotate(45deg) scale(1.3);}
  /* "see full list" row — single full-width cell, mono link (homepage only) */
  .awards .list li.more{display:block;padding:var(--s5) 0;}
  .awards .list li.more:hover{background:none;padding-left:0;}
  .awards .list li.more a{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--red);}
  .awards .list li.more a:hover{text-decoration:underline;text-underline-offset:4px;}
  /* publications — centered laurel plaque */
  .pubs{position:sticky;top:var(--s5);background:var(--panel);border:1px solid var(--line);padding:var(--s7) var(--s6) var(--s6);text-align:center;}
  .pubs .laurelrow{display:flex;align-items:center;justify-content:center;gap:8px;}
  .pubs .laurelrow svg{width:38px;height:70px;color:var(--red);flex:none;}
  .pubs .laurelrow svg.r{transform:scaleX(-1);}
  .pubs .big{font-size:var(--fs-8);line-height:.85;color:var(--red);font-family:var(--sans);font-weight:800;letter-spacing:-.04em;}
  .pubs .biglab{font-size:var(--fs-2);color:var(--ink);line-height:1.45;margin:var(--s4) auto var(--s5);max-width:23ch;}
  .pubs .pdiv{height:1px;background:var(--line);margin:0 auto var(--s5);}
  .pubs .pubk{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s4);}
  /* publication / recognition chips — reusable; centered only inside the .pubs plaque */
  .publist{display:flex;flex-wrap:wrap;gap:var(--s2);}
  .publist span{font-family:var(--mono);font-size:11px;letter-spacing:.03em;color:var(--ink);border:1px solid var(--line);padding:8px 12px;white-space:nowrap;transition:var(--t-fast) var(--ease);}
  .publist span:hover{border-color:var(--red);color:var(--red);}
  .pubs .publist{justify-content:center;}
  /* list-only, multi-column variant (About: full record, compact vertically) */
  .awards.awards--full{display:block;}
  .awards .list li.is-hidden{display:none;}
  .aw-more{margin-top:var(--s6);}
  .aw-more button{font-family:var(--mono);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;
    border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:13px 30px;cursor:pointer;transition:var(--t-fast) var(--ease);}
  .aw-more button:hover{border-color:var(--red);color:var(--red);}
  @media(max-width:860px){.awards{grid-template-columns:1fr;gap:36px;}.pubs{position:static;}}

  /* areas served — feature market + structured grid */
  .geo{display:grid;grid-template-columns:1.15fr 1fr;gap:8px;}
  .geo-feat{position:relative;min-height:340px;display:block;overflow:hidden;cursor:pointer;}
  .geo-feat .ph{position:absolute;inset:0;height:100%;width:100%;border:none;transition:transform var(--t-slow) var(--ease);}
  .geo-feat:hover .ph{transform:scale(1.05);}
  .geo-feat::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(22,16,10,.82),rgba(22,16,10,.15) 55%,transparent);z-index:1;}
  .geo-feat .info{position:absolute;left:28px;right:28px;bottom:26px;z-index:2;color:#fff;}
  .geo-feat .info .k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;opacity:.85;}
  .geo-feat .info h3{font-size:var(--fs-7);font-weight:800;letter-spacing:-.02em;margin:8px 0 8px;line-height:1;}
  .geo-feat .info .meta{display:flex;gap:8px 18px;flex-wrap:wrap;font-family:var(--mono);font-size:11px;letter-spacing:.04em;opacity:.92;}
  .geo-feat .info .meta span::before{content:"— ";opacity:.5;}
  .geo-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  .geo-grid a{border:1px solid var(--line);background:var(--panel);padding:18px 18px;display:flex;flex-direction:column;justify-content:space-between;min-height:108px;transition:var(--t-fast) var(--ease);}
  .geo-grid a:hover{border-color:var(--red);background:var(--panel2);}
  .geo-grid .city{font-size:var(--fs-3);font-weight:700;letter-spacing:-.01em;}
  .geo-grid .role{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-top:var(--s3);display:flex;align-items:center;gap:6px;}
  .geo-grid .role::after{content:"↗";margin-left:auto;color:var(--red);}
  .geo-grid a.nat{grid-column:1 / -1;flex-direction:row;align-items:center;justify-content:space-between;background:var(--panel2);min-height:0;padding:16px 18px;}
  .geo-grid a.nat .city{color:var(--red);}
  .geo-grid a.nat .role{margin-top:0;}

  /* about */
  .about{display:grid;grid-template-columns:1fr 340px;gap:var(--s7);align-items:center;}
  .about .ph{height:460px;}
  .about h2 em{font-style:normal;color:var(--red);} /* <em> in the About heading → clay */
  .about p{font-size:17px;line-height:1.7;color:#c9c4ba;margin-bottom:var(--s3);max-width:50ch;}
  .about .about-tag{font-size:var(--fs-5);font-weight:700;letter-spacing:-.015em;color:var(--ink);margin:0 0 var(--s5);line-height:1.1;}
  .about .sig{font-family:var(--serif);font-style:italic;font-weight:600;font-size:var(--fs-6);color:var(--ink);line-height:1;margin:var(--s5) 0 var(--s1);}
  .about .sigline{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);}
  .about .credrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:var(--s5);}
  .about .credrow span{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;border:1px solid var(--line);padding:7px 11px;color:var(--muted);}
  .about .portrait{position:relative;}
  .about .portrait .badge15{position:absolute;top:0;left:0;z-index:2;background:var(--red);color:#fff;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:9px 13px;}
  .about .portrait .cap{position:absolute;left:14px;right:14px;bottom:14px;z-index:2;font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#e9e6df;background:rgba(0,0,0,.5);padding:8px 11px;}

  /* faq */
  .faq dt{font-size:var(--fs-4);font-weight:600;padding:var(--s4) 0 var(--s2);border-top:1px solid var(--line);}
  .faq dd{font-size:var(--fs-2);color:var(--muted);line-height:1.65;padding-bottom:var(--s4);max-width:72ch;}

  /* contact */
  .contact{display:grid;grid-template-columns:1.05fr .95fr;gap:var(--s7);align-items:start;}
  .contact .cinfo{display:flex;flex-direction:column;}
  .contact .cinfo .chd{font-size:var(--fs-7);line-height:1.02;letter-spacing:-.02em;margin:var(--s2) 0 var(--s5);}
  .contact .cinfo .chd em{font-style:normal;color:var(--red);}
  .form label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:var(--s3) 0 var(--s2);}
  .form .fld{height:38px;border:1px solid var(--line);background:var(--panel);width:100%;font-family:inherit;font-size:var(--fs-2);color:var(--ink);padding:0 12px;appearance:none;border-radius:0;
    transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease);}
  .form .fld.area{height:96px;padding:10px 12px;resize:vertical;}
  .form .fld::placeholder{color:var(--muted);}
  .form .fld:hover{border-color:var(--muted);}
  .form .fld:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px color-mix(in srgb,var(--red) 15%,transparent);}
  .form .submit{margin-top:var(--s5);background:var(--red);color:#fff;border:none;padding:13px 28px;font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:background var(--t-fast) var(--ease),transform var(--t-fast) var(--ease);}
  .form .submit:hover{background:color-mix(in srgb,var(--red) 86%,#000);}
  .form .submit:active{transform:translateY(1px);}
  /* shared form layout helpers — used by every inquiry form (embedded contact sections + the
     dedicated Contact page). Two-up field pairing + the response-time reassurance line, so the
     whole form is one reusable block (WP: get_template_part('inquiry-form')). */
  .form .row2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4);}
  .form .row2>*{min-width:0;} /* let the 1fr columns shrink instead of overflowing the card */
  .chero .form .row2{display:block;} /* Contact page keeps Name + Email on separate rows (Seth's call) */
  .form .microcopy{display:flex;align-items:center;gap:10px;margin-top:var(--s4);
    font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);}
  .form .microcopy::before{content:"";width:18px;height:1px;background:var(--red);flex:none;}
  @media(max-width:560px){.form .row2{grid-template-columns:1fr;}}
  /* Inquiry submit confirmation — deliberately prominent so a redirect-back isn't
     mistaken for a plain page reload (the form can sit far down the page; nav.js
     scrolls this into view after ?inquiry=sent). */
  .form-sent{position:relative;margin:0 0 var(--s5);padding:14px 18px 14px 42px;
    background:color-mix(in srgb,var(--red) 7%,#fff);
    border:1px solid color-mix(in srgb,var(--red) 24%,var(--line));border-left:3px solid var(--red);
    font-family:var(--sans);font-size:var(--fs-2);line-height:1.5;color:var(--ink);}
  .form-sent::before{content:"\2713";position:absolute;left:16px;top:13px;font-weight:800;color:var(--red);}
  .form-sent b{color:var(--red);font-weight:700;}
  .form-sent:focus{outline:none;} /* non-interactive status (focused only to land SR/keyboard there) */
  /* AJAX submit: spinner on the Send button while the request is in flight. */
  .form .submit.is-loading{position:relative;color:transparent!important;pointer-events:none;}
  .form .submit.is-loading::after{content:"";position:absolute;top:50%;left:50%;width:15px;height:15px;margin:-8px 0 0 -8px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:ps-spin .6s linear infinite;}
  @keyframes ps-spin{to{transform:rotate(360deg);}}
  /* AJAX confirmation slides in (the no-JS .form-sent renders visible by default). */
  .form-sent--ajax{opacity:0;transform:translateY(10px);transition:opacity .35s var(--ease),transform .35s var(--ease);}
  .form-sent--ajax.is-shown{opacity:1;transform:translateY(0);}
  .info p{font-size:15px;line-height:1.9;color:#c9c4ba;}
  .info b{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--red);display:block;margin-top:18px;}
  /* contact — info panel */
  .contact .info{background:var(--panel);border:1px solid var(--line);padding:var(--s6);align-self:stretch;display:flex;flex-direction:column;}
  .info-badge{display:inline-flex;align-items:center;gap:9px;align-self:flex-start;font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink);border:1px solid var(--line);padding:8px 13px;}
  .info-badge i{width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 0 3px color-mix(in srgb,var(--red) 22%,transparent);flex:none;}
  .info-resp{margin:var(--s6) 0 var(--s1);}
  .info-resp .rk{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);}
  .info-resp .rv{display:block;font-size:var(--fs-7);font-weight:800;letter-spacing:-.025em;line-height:1.02;margin-top:var(--s3);}
  .info-resp .rv em{font-style:normal;color:var(--red);}
  .info-rows{list-style:none;margin-top:var(--s5);}
  .info-rows li{display:grid;grid-template-columns:78px 1fr;gap:var(--s4);align-items:baseline;padding:var(--s4) 0;border-top:1px solid var(--line);}
  .info-rows .rl{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--red);}
  .info-rows .rv2{font-size:var(--fs-2);color:var(--ink);line-height:1.45;}
  .info-rows .rv2 .sub2{display:block;font-size:12.5px;color:var(--muted);margin-top:3px;letter-spacing:0;text-transform:none;}
  .info-social{margin-top:auto;padding-top:var(--s5);display:flex;gap:22px;border-top:1px solid var(--line);font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;}
  .info-social a{color:var(--muted);cursor:pointer;transition:var(--t-fast) var(--ease);}
  .info-social a:hover{color:var(--red);}

  /* footer — layered, custom */
  footer.wfoot{background:#161310;color:#a39c90;font-size:var(--fs-1);}
  body.warm footer.wfoot{background:#1a1611;}
  .foot-cta{display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;
    padding:var(--s7) var(--pad-x);border-bottom:1px solid rgba(255,255,255,.08);}
  .foot-cta h3{font-size:var(--fs-7);font-weight:800;color:#fff;letter-spacing:-.025em;line-height:1.02;max-width:20ch;}
  .foot-cta .btn{background:var(--red);color:#fff;font-family:var(--mono);font-size:12px;letter-spacing:.12em;
    text-transform:uppercase;padding:17px 32px;white-space:nowrap;cursor:pointer;transition:background var(--t-fast) var(--ease),transform var(--t-fast) var(--ease);}
  .foot-cta .btn:hover{background:color-mix(in srgb,var(--red) 86%,#000);}
  .foot-cta .btn:active{transform:translateY(1px);}
  .foot-main{display:grid;grid-template-columns:2.3fr 1fr 1fr 1.3fr;gap:var(--s6);padding:var(--s7) var(--pad-x);}
  .foot-main .mark{font-size:var(--fs-4);color:#fff;font-weight:800;letter-spacing:-.015em;line-height:1.2;max-width:24ch;}
  /* footer logo (Site Settings → Footer logo, light/reversed) — capped to the blurb's
     visual column so it can't outgrow the headline above */
  .foot-main .flogo{max-width:none;}
  .foot-main .flogo img{display:block;width:100%;max-width:320px;height:auto;}
  .foot-main .blurb{margin-top:var(--s3);max-width:34ch;line-height:1.7;color:#8b857a;}
  .foot-main .col h5{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#6c675d;margin-bottom:var(--s4);}
  .foot-main .col a{color:#c6c0b5;display:block;line-height:2.15;cursor:pointer;}
  .foot-main .col a:hover{color:#fff;}
  .foot-main .np{font-family:var(--mono);font-size:12px;line-height:1.95;color:#c6c0b5;}
  .foot-main .np b{color:var(--red);font-weight:500;}
  .foot-bot{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
    padding:var(--s5) var(--pad-x);border-top:1px solid rgba(255,255,255,.08);
    font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#6c675d;}
  .foot-bot .social{display:flex;gap:20px;}
  .foot-bot a{color:#6c675d;cursor:pointer;}
  .foot-bot a:hover{color:#fff;}
  @media(max-width:860px){.foot-main{grid-template-columns:1fr 1fr;}.foot-cta h3{font-size:var(--fs-6);}}

  /* ===== SURFACE TREATMENT — light clay-paper (single locked palette) ===== */
  body.warm .ph{background:repeating-linear-gradient(135deg,var(--panel2) 0 11px,var(--line) 11px 22px);color:var(--muted);border-color:var(--line);}
  body.warm .ph span{background:color-mix(in srgb,var(--bg) 78%,transparent);}
  body.warm .lux nav .cta,body.warm .morelink{border-color:var(--line);}
  body.warm .lux nav ul,body.warm .pubs,body.warm .info p,body.warm .about p{color:var(--ink);}

  /* selected work — true masonry, filled LEFT-TO-RIGHT in document order */
  .pf-item{cursor:pointer;overflow:hidden;}
  .pf-item .ph{border:1px solid var(--line);transition:transform var(--t-slow) var(--ease),border-color var(--t-fast) var(--ease);height:auto;}
  .pf-item:hover .ph{border-color:var(--red);transform:scale(1.04);}
  /* utility class — extra-specific so it always beats the layout rules below */
  .pf .pf-item.is-hidden{display:none;}

  /* Masonry as a fixed-column grid filled in DOCUMENT ORDER (row-major): the
     ACF gallery order maps straight to reading order, so appending an image
     lands it at the end and adding/removing one just shifts the sequence — none
     of the column rebalancing the old CSS-columns masonry did. Frames are
     bucketed by orientation (every landscape 4:3, every portrait 3:4, squares
     1:1) for a steady rhythm; object-fit:cover absorbs the small difference.
     interactions.js adds .pf-js and sets each tile's grid-row span from its
     frame height to tessellate the columns; with no JS it stays a clean aligned
     grid (same order, a little extra whitespace) — never broken. */
  body.pf-masonry .pf{display:grid;grid-template-columns:repeat(var(--pf-cols,4),1fr);gap:8px;align-items:start;}
  body.pf-masonry .pf-item .ph{aspect-ratio:1 / 1;}
  body.pf-masonry .pf-item .ph.ph-l{aspect-ratio:4 / 3;}
  body.pf-masonry .pf-item .ph.ph-p{aspect-ratio:3 / 4;}
  body.pf-masonry .pf.pf-js{grid-auto-rows:8px;align-items:stretch;}
  body.pf-masonry .pf.pf-js .pf-item{grid-row-end:span 30;} /* safety net; JS overrides this longhand inline per tile */
  body.pf-masonry .pf.pf-js .pf-item .ph{height:100%;aspect-ratio:auto;}

  /* uniform grid alternative — every frame 4:3 (unused; kept as a styling option) */
  body.pf-grid .pf{display:grid;grid-template-columns:repeat(var(--pf-cols,4),1fr);gap:8px;}
  body.pf-grid .pf-item .ph{aspect-ratio:4 / 3;}

  .pf-more{display:flex;flex-direction:column;align-items:center;gap:var(--s3);margin-top:var(--s7);}
  .pf-more button{font-family:var(--mono);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;
    border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:14px 34px;cursor:pointer;transition:var(--t-fast) var(--ease);
    display:inline-flex;align-items:center;gap:11px;}
  .pf-more button:hover{border-color:var(--red);color:var(--red);}
  .pf-more button[hidden]{display:none;}
  .pf-more .ct{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);}

  /* case studies — vertical features in a transform-based swipe carousel */
  .cs-top{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;}
  .cs-nav{display:flex;gap:8px;flex:none;}
  .cs-arrow{width:46px;height:46px;border:1px solid var(--line);background:var(--panel);color:var(--ink);
    font-size:17px;cursor:pointer;transition:var(--t-fast) var(--ease);display:grid;place-items:center;}
  .cs-arrow:hover{border-color:var(--red);color:var(--red);}
  .cs-arrow:disabled{opacity:.32;cursor:default;}
  .cs-arrow:disabled:hover{border-color:var(--line);color:var(--ink);}
  .cs-view{overflow:hidden;}
  .cs{display:flex;gap:8px;transition:transform var(--t-slow) var(--ease);will-change:transform;}
  .cs-item{flex:0 0 calc((100% - (var(--cs-cols,4) - 1) * 8px) / var(--cs-cols,4));cursor:pointer;overflow:hidden;}
  .cs-item .ph{aspect-ratio:3 / 4;height:auto;border:1px solid var(--line);transition:transform var(--t-slow) var(--ease),border-color var(--t-fast) var(--ease);}
  .cs-item:hover .ph{border-color:var(--red);transform:scale(1.04);}
  .cs-cap{padding:var(--s3) 2px 0;}
  .cs-cap .yr{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--red);}
  .cs-cap .pn{display:block;font-size:var(--fs-4);font-weight:700;letter-spacing:-.01em;line-height:1.15;margin:var(--s2) 0 var(--s2);}
  .cs-cap .firm{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);}
  .cs-cap .out{font-size:var(--fs-1);color:var(--ink);line-height:1.5;margin-top:var(--s3);}
  .cs-cap .read{display:inline-block;margin-top:var(--s3);font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--red);}
  @media(max-width:860px){
    body.pf-masonry .pf{--pf-cols:3;} /* tablet: three columns */
    body.pf-grid .pf{grid-template-columns:1fr 1fr;}
    .cs-item{flex-basis:calc((100% - 8px) / 2);}
  }
  /* phone: drop the masonry for a tidy 2-col square grid — gentle, uniform,
     center-cropped tiles. Predictable and dense on a narrow screen, which a
     1-up masonry of tall portraits would not be. (JS also clears the inline
     row-spans below this width, so these class rules fully take over.) */
  @media(max-width:560px){
    body.pf-masonry .pf,body.pf-masonry .pf.pf-js{grid-template-columns:1fr 1fr;grid-auto-rows:auto;align-items:start;gap:8px;}
    /* name .ph-l/.ph-p explicitly so this beats the orientation rules above
       (equal specificity, later in source) — media queries add no specificity. */
    body.pf-masonry .pf-item .ph,
    body.pf-masonry .pf-item .ph.ph-l,
    body.pf-masonry .pf-item .ph.ph-p,
    body.pf-masonry .pf.pf-js .pf-item .ph{height:auto;aspect-ratio:1 / 1;}
  }

  @media(max-width:860px){
    .about,.contact,.awards{grid-template-columns:1fr;}
    .trip,.stats{grid-template-columns:1fr 1fr;}
    /* hero spread: the tall feature keeps its portrait orientation (left column,
       2 rows ≈ 3:4) instead of being squashed into a wide 220px strip */
    .trip{height:auto;grid-template-rows:none;grid-auto-rows:110px;}
    .trip .ph:first-child{grid-row:1 / span 2;grid-column:1;height:auto;}
    .herohd h1{font-size:46px;}
  }

  /* ===================================================================
     SHARED PAGE COMPONENTS — location pages + case study pages
     (homepage + both templated page types all consume this file)
     =================================================================== */

  /* image frames fill by cover — WP-uploaded images fill their parent frame.
     Markup: <div class="ph"><img src="..." alt="..."></div>  (placeholder <span> used only in wireframe) */
  .ph{overflow:hidden;}
  .ph>img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;}

  /* prose — long-form editorial body copy (the SEO/AI-rich text region) */
  .prose{max-width:68ch;}
  .prose>p{font-size:var(--fs-3);line-height:1.75;color:var(--ink);margin-bottom:var(--s5);}
  .prose>p:last-child{margin-bottom:0;}
  .prose .lead{font-size:var(--fs-5);line-height:1.4;font-weight:600;letter-spacing:-.01em;color:var(--ink);margin-bottom:var(--s6);}
  .prose h3{font-size:var(--fs-5);font-weight:700;letter-spacing:-.015em;margin:var(--s7) 0 var(--s3);}

  /* project meta strip — the citable facts (partners / location / type / year) */
  .pmeta{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink);border-bottom:1px solid var(--line);}
  .pmeta .cell{padding:var(--s5) var(--s4);border-right:1px solid var(--line);}
  .pmeta .cell:first-child{padding-left:0;}
  .pmeta .cell:last-child{border-right:none;padding-right:0;}
  .pmeta .k{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s3);}
  .pmeta .v{display:block;font-size:var(--fs-3);font-weight:600;color:var(--ink);line-height:1.35;}
  .pmeta .v + .v{margin-top:var(--s2);}
  .pmeta .v.firm{color:var(--red);}
  @media(max-width:860px){.pmeta{grid-template-columns:1fr 1fr;}.pmeta .cell{padding:var(--s4);}.pmeta .cell:first-child{padding-left:0;}}

  /* fact columns — the shared "database widget" for credibility lists
     (notable projects / awards / publications). Reused anywhere these facts appear,
     so every instance matches. Column count via --fc-cols (default 3). */
  .factcols{display:grid;grid-template-columns:repeat(var(--fc-cols,3),1fr);border-top:1px solid var(--ink);border-bottom:1px solid var(--line);}
  .factcols .cell{padding:var(--s6) var(--s5);border-right:1px solid var(--line);}
  .factcols .cell:first-child{padding-left:0;}
  .factcols .cell:last-child{border-right:none;padding-right:0;}
  .factcols .k{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--red);margin-bottom:var(--s4);}
  .factcols ul{list-style:none;}
  .factcols li{font-size:var(--fs-2);color:var(--ink);line-height:1.45;padding:var(--s3) 0;border-top:1px solid var(--line);}
  .factcols li:first-child{border-top:none;padding-top:0;}
  @media(max-width:860px){.factcols{grid-template-columns:1fr;}.factcols .cell{border-right:none;border-bottom:1px solid var(--line);padding:var(--s5) 0;}.factcols .cell:last-child{border-bottom:none;}}
  .trk-more{margin-top:var(--s6);}
  .trk-more a{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--red);}
  .trk-more a:hover{text-decoration:underline;text-underline-offset:4px;}

  /* award / recognition callout */
  .award-bar{display:flex;align-items:center;gap:var(--s5);background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--red);padding:var(--s5) var(--s6);}
  .award-bar svg{width:38px;height:38px;color:var(--red);flex:none;}
  .award-bar .k{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);}
  .award-bar .t{font-size:var(--fs-4);font-weight:700;letter-spacing:-.01em;margin-top:var(--s1);}
  .award-bar .t + .t{margin-top:var(--s2);}

  /* case-study hero gallery — one feature + stacked pair */
  /* The two stacked thumbs carry the 4:3 aspect-ratio and set the hero's height
     (scales with width, no fixed px that would crop to a strip on wide screens); the
     lead image has NO aspect-ratio of its own — it just stretches to match and cover-
     fills its column, so its width stays locked to the grid track and the 6px column
     gap is preserved (putting the aspect-ratio on the LEAD grew its width past the
     track and ate the gap). Container is content-height, so the meta/award bar below
     always flow under it — never overlapped. */
  .csh{display:grid;grid-template-columns:2fr 1fr;gap:6px;padding:0 var(--pad-x);align-items:stretch;}
  .csh .lead-img{min-height:0;}
  .csh .col{display:grid;grid-template-rows:auto auto;gap:6px;min-height:0;}
  .csh .col .ph{aspect-ratio:4 / 3;min-height:0;}
  @media(max-width:860px){.csh{grid-template-columns:1fr;}.csh .lead-img{height:280px;}.csh .col{grid-template-columns:1fr 1fr;grid-template-rows:none;}.csh .col .ph{aspect-ratio:auto;height:150px;}}

  /* prose + sticky aside */
  .split{display:grid;grid-template-columns:1.6fr 1fr;gap:var(--s8);align-items:start;}
  .split .aside{position:sticky;top:var(--s5);}
  @media(max-width:860px){.split{grid-template-columns:1fr;gap:var(--s6);}.split .aside{position:static;}}

  /* fact card (used in aside) */
  .factcard{background:var(--panel);border:1px solid var(--line);padding:var(--s6);}
  .factcard .row{padding:var(--s4) 0;border-top:1px solid var(--line);}
  .factcard .row:first-child{border-top:none;padding-top:0;}
  .factcard .k{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--red);margin-bottom:var(--s1);}
  .factcard .v{font-size:var(--fs-2);color:var(--ink);line-height:1.4;}

  /* shared primary button — the one clay CTA, reused for any standalone call-to-action
     (case-study aside, etc). The nav .cta, .form .submit, and .foot-cta .btn keep their own
     context-scoped rules; this covers everything else so no CTA needs inline styles. */
  .btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--red);color:#fff;
    font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;padding:15px 22px;cursor:pointer;
    transition:background var(--t-fast) var(--ease),transform var(--t-fast) var(--ease);}
  .btn-primary:hover{background:color-mix(in srgb,var(--red) 86%,#000);}
  .btn-primary:active{transform:translateY(1px);}
  .btn-primary.block{display:flex;width:100%;}
  .factcard + .btn-primary{margin-top:var(--s4);}

  /* project prev / next */
  .pnav{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);padding-inline:var(--pad-x);}
  .pnav a{padding:var(--s6) var(--pad-x);display:flex;flex-direction:column;gap:var(--s2);cursor:pointer;transition:background var(--t-fast) var(--ease);}
  .pnav a:hover{background:var(--panel);}
  .pnav a.next{text-align:right;border-left:1px solid var(--line);align-items:flex-end;}
  .pnav .dir{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--red);}
  .pnav .pt{font-size:var(--fs-4);font-weight:700;letter-spacing:-.015em;line-height:1.1;}


  /* =====================================================================
     MOBILE PASS — single breakpoint lever via token down-scaling + nav/grid stacks
     ===================================================================== */
  @media(max-width:760px){
    /* tighten global gutters, section rhythm, and display type on small screens */
    :root{--pad-x:20px; --pad-i:20px; --sec-y:52px; --fs-8:46px; --fs-7:32px; --fs-6:27px;}

    /* utility strip: booking status + response time only — area + phone
       (.u-hide-m in header.php) drop so it can't jumble into 4 lines */
    .util{flex-wrap:wrap;gap:6px 14px;}
    .util .sp{display:none;}
    .util .u-hide-m{display:none;}

    /* awards: headroom under the section heading, and the year stacks above
       the award name (the 78px side column reads jumbled at phone widths) */
    .awards{margin-top:var(--s5);}
    .awards .list li{grid-template-columns:1fr;gap:4px;}

    /* tab-bar nav → hamburger: brand row holds the toggle; tabs + CTA collapse into a stacked drawer */
    .lux nav:has(.brandblock){flex-wrap:wrap;}
    .lux nav .brandblock{flex:1 0 100%;border-right:none;border-bottom:1px solid var(--line);padding:var(--s4) var(--pad-x);}
    .navtoggle{display:grid;}

    /* drawer panel — nav links stack full-width, collapsed until .nav-open */
    .lux nav ul{flex:1 0 100%;width:100%;margin-left:0;flex-direction:column;align-items:stretch;
      max-height:0;overflow:hidden;opacity:0;
      transition:max-height var(--t-slow) var(--ease),opacity var(--t-fast) var(--ease);}
    .lux nav.nav-open ul{max-height:70vh;opacity:1;}
    .lux nav ul li{border-right:none;border-left:none;border-bottom:1px solid var(--line);}
    .lux nav ul li a{width:100%;padding:var(--s4) var(--pad-x);height:auto;white-space:nowrap;justify-content:flex-start;}
    .lux nav ul li a::after{content:"↗";margin-left:auto;color:var(--red);opacity:0;transform:translateX(-4px);transition:var(--t-fast) var(--ease);}
    .lux nav ul li a:hover::after,.lux nav ul li.is-active a::after{opacity:1;transform:none;}
    .lux nav ul li.is-active a{box-shadow:inset 3px 0 0 var(--red);}

    /* CTA — last item in the drawer, full-width, collapses with the panel */
    .lux nav .cta{flex:1 0 100%;justify-content:center;max-height:0;padding:0;overflow:hidden;opacity:0;
      transition:max-height var(--t-slow) var(--ease),opacity var(--t-fast) var(--ease),background var(--t-fast) var(--ease);}
    .lux nav.nav-open .cta{max-height:80px;opacity:1;padding:18px;}

    /* areas-served feature + grid stacks handled by the shared 860px rule below */

    /* a touch more headroom under the stacked header */
    .herohd{padding-top:var(--s7);}
  }

  /* between phone and tablet, keep the areas feature readable */
  @media(max-width:860px){ .geo{grid-template-columns:1fr;} }

/* ===================================================================
   PAGE-LOCAL LAYERS — consolidated from each wireframe's <style> block
   (kept in this single stylesheet per the handoff: no per-template forks)
   =================================================================== */

/* ----- from: Location Page Wireframe ----- */
  /* Location hero: title (home-page H1 size + red <em>) beside the 30+ trust card. */
  .lochero{display:grid;grid-template-columns:1.4fr .9fr;gap:var(--s7);align-items:start;padding:var(--s8) var(--pad-x) var(--s6);}
  .lochero .lochd .eyebrow{margin-bottom:var(--s4);}
  .lochero .lochd h1{font-size:var(--fs-8);line-height:1.0;letter-spacing:-.02em;max-width:16ch;}
  .lochero .lochd h1 em{font-style:normal;color:var(--red);}
  .lochero .lochd .intro{font-size:var(--fs-3);line-height:1.6;color:var(--muted);max-width:48ch;margin-top:var(--s5);}
  .lochero .lochd .intro b{color:var(--ink);font-weight:600;}
  .lochero .pubs{position:static;}
  @media(max-width:860px){.lochero{grid-template-columns:1fr;gap:var(--s6);}}

/* ----- from: Case Study Page Wireframe ----- */
  /* page-local: tighten the hero header above the gallery, and a padded wrapper for full-bleed strips */
  .cs-head{padding:var(--s8) var(--pad-x) var(--s6);}
  .cs-head .eyebrow{margin-bottom:var(--s4);}
  .cs-head h1{font-size:var(--fs-8);line-height:1;letter-spacing:-.02em;max-width:18ch;}
  .cs-head .dek{font-size:var(--fs-4);color:var(--muted);margin-top:var(--s4);max-width:52ch;line-height:1.4;}
  .wrap{padding:var(--s7) var(--pad-x);}
  .wrap.tight{padding-top:0;}

/* ----- from: Portfolio Category Wireframe ----- */
  /* page-local: portfolio category template — hero + sub-nav, masonry gallery (theme),
     value grid, services, credibility, process, cross-links. Footer/grid reuse theme.css. */

  /* HERO */
  .pfhead{padding:var(--s8) var(--pad-x) var(--s6);}
  .pfhead .eyebrow{margin-bottom:var(--s4);}
  .pfhead h1{font-size:var(--fs-8);line-height:1.0;letter-spacing:-.02em;max-width:18ch;} /* matches .lochero title size */
  .pfhead .lead{font-size:var(--fs-3);line-height:1.7;color:var(--ink);margin-top:var(--s5);max-width:74ch;}

  /* CATEGORY SUB-NAV */
  .catnav{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:0 var(--pad-x) var(--s6);border-bottom:1px solid var(--line);}
  .catnav .fk{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-right:var(--s3);}
  .catnav a{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);
    border:1px solid var(--line);padding:9px 14px;cursor:pointer;transition:var(--t-fast) var(--ease);}
  .catnav a:hover{border-color:var(--red);color:var(--red);}
  .catnav a.on{background:var(--ink);color:var(--bg);border-color:var(--ink);}
  .catnav a.on:hover{color:var(--bg);}
  .catnav .sep{width:1px;height:18px;background:var(--line);margin:0 var(--s2);}
  .catnav .catnav-br{flex-basis:100%;height:0;} /* forces "By area" onto its own line */

  /* GALLERY (theme masonry, 3-up) */
  .pfsec{--pf-cols:3;padding:var(--s7) var(--pad-x) var(--sec-y);}

  /* SERVICES — what I photograph */
  .svc3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s7);border-top:1px solid var(--ink);margin-top:var(--s5);padding-top:var(--s6);}
  .svc3 .grp h3{font-size:var(--fs-5);font-weight:700;letter-spacing:-.015em;margin-bottom:var(--s4);}
  .svc3 .grp ul{list-style:none;}
  .svc3 .grp li{padding:var(--s4) 0;border-top:1px solid var(--line);}
  .svc3 .grp li .t{font-size:var(--fs-3);font-weight:600;letter-spacing:-.01em;color:var(--ink);}
  .svc3 .grp li .d{display:block;font-size:13px;color:var(--muted);line-height:1.55;margin-top:var(--s2);}
  @media(max-width:860px){.svc3{grid-template-columns:1fr;gap:var(--s6);}}

  /* EXPLORE cross-links */
  .explore{padding:var(--sec-y) var(--pad-x);border-top:1px solid var(--line);background:var(--panel);}
  .catgrid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line);margin-top:var(--s5);}
  .catgrid a{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);padding:var(--s5) var(--s4);
    border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;transition:var(--t-fast) var(--ease);}
  .catgrid a:hover{background:var(--bg);padding-left:calc(var(--s4) + 6px);}
  .catgrid a.on{background:var(--ink);}
  .catgrid .cn{font-size:var(--fs-3);font-weight:600;letter-spacing:-.01em;color:var(--ink);}
  .catgrid a:hover .cn{color:var(--red);}
  .catgrid a.on .cn{color:var(--bg);}
  .catgrid .ar{font-family:var(--mono);font-size:11px;color:var(--red);flex:none;}
  .catgrid a.on .ar{color:var(--bg);}
  @media(max-width:860px){.catgrid{grid-template-columns:1fr 1fr;}}
  @media(max-width:520px){.catgrid{grid-template-columns:1fr;}}

/* ----- from: About Page Wireframe ----- */
  /* page-local: single-portrait hero with inline bio, press grid + trusted-projects list.
     Everything else reuses shared theme.css components. */

  /* HERO — bio text column + one framed (matted) portrait */
  .abouthero{display:grid;grid-template-columns:1.06fr .94fr;align-items:stretch;border-bottom:1px solid var(--line);padding-inline:var(--pad-x);}
  .abouthero .htext{padding:var(--s8) var(--s7) var(--s8) 0;display:flex;flex-direction:column;justify-content:center;}
  .abouthero .eyebrow{margin-bottom:var(--s4);}
  .abouthero h1{font-size:var(--fs-8);line-height:.96;letter-spacing:-.025em;}
  .abouthero h1 em{font-style:normal;color:var(--red);}
  .abouthero .herotags{display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--s5);}
  .abouthero .herotags span{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;border:1px solid var(--line);padding:7px 11px;color:var(--muted);}
  .abouthero .hbio{margin-top:var(--s6);max-width:48ch;}
  .abouthero .hbio .lead{font-size:var(--fs-4);font-weight:600;letter-spacing:-.012em;color:var(--ink);line-height:1.28;margin-bottom:var(--s4);}
  .abouthero .hbio p{font-size:var(--fs-2);line-height:1.72;color:var(--ink);margin-bottom:var(--s3);}
  .abouthero .hsig{margin-top:var(--s5);padding-top:var(--s5);border-top:1px solid var(--line);}
  .abouthero .hsig .sig{font-family:var(--serif);font-style:italic;font-weight:600;font-size:var(--fs-6);color:var(--ink);line-height:1;}
  .abouthero .hsig .sigline{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:var(--s3);}
  /* portrait — clean, inset for breathing room, no mat or frame border */
  .abouthero .portrait{padding:var(--s6);}
  .abouthero .pframe{position:relative;height:100%;min-height:540px;overflow:hidden;}
  .abouthero .pframe .ph{position:absolute;inset:0;height:100%;border:none;}
  .abouthero .badge15{position:absolute;top:0;left:0;z-index:2;background:var(--red);color:#fff;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:10px 14px;}
  .abouthero .cap{position:absolute;left:14px;right:14px;bottom:14px;z-index:2;font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#e9e6df;background:rgba(0,0,0,.5);padding:8px 11px;}
  @media(max-width:860px){
    .abouthero{grid-template-columns:1fr;}
    .abouthero .htext{padding:var(--s8) var(--pad-x);}
    .abouthero .portrait{border-left:none;border-top:1px solid var(--line);padding:var(--s5);}
    .abouthero .pframe{min-height:0;aspect-ratio:4/5;}
  }

  /* PUBLISHED & FEATURED — uniform press wall (equal name cells) */
  .preswall{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line);margin-top:var(--s5);}
  .preswall span{display:flex;align-items:center;justify-content:center;text-align:center;min-height:104px;padding:var(--s4) var(--s3);
    border-right:1px solid var(--line);border-bottom:1px solid var(--line);
    font-size:var(--fs-3);font-weight:600;letter-spacing:-.01em;line-height:1.22;color:var(--ink);transition:var(--t-fast) var(--ease);}
  .preswall span:hover{background:var(--panel);color:var(--red);}
  .press-foot{font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-top:var(--s5);display:inline-flex;align-items:center;gap:10px;}
  .press-foot::before{content:"";width:18px;height:1px;background:var(--red);}
  @media(max-width:760px){.preswall{grid-template-columns:1fr 1fr;}.preswall span{min-height:88px;font-size:var(--fs-2);}}

  /* section intro text — consistent measure, line spacing, and gap to content across all headings */
  .lux .sub{line-height:1.72;max-width:62ch;margin-bottom:var(--s5);}

  /* trusted projects — editorial multi-column name index, given room to breathe */
  .projlist{column-count:3;column-gap:var(--s8);list-style:none;border-top:1px solid var(--ink);margin-top:var(--s5);}
  .projlist li{break-inside:avoid;font-size:var(--fs-3);font-weight:600;letter-spacing:-.012em;line-height:1.34;
    padding:var(--s4) 0;border-bottom:1px solid var(--line);color:var(--ink);transition:var(--t-fast) var(--ease);}
  .projlist li::before{content:"";display:inline-block;width:7px;height:7px;background:var(--red);transform:rotate(45deg);margin-right:14px;vertical-align:middle;}
  .projlist li:hover{padding-left:8px;color:var(--red);}
  @media(max-width:860px){.projlist{column-count:2;}}
  @media(max-width:520px){.projlist{column-count:1;}}

/* ----- from: Contact Page Wireframe ----- */
  /* page-local: contact hero (promise + live form), feature band, count-on trio.
     Form fields, info chips, footer all reuse shared theme.css components. */

  /* HERO — promise column + form column */
  .chero{display:grid;grid-template-columns:1.05fr .95fr;border-bottom:1px solid var(--line);padding-inline:var(--pad-x);}
  .chero .cinfo{padding:var(--s8) var(--s7) var(--s8) 0;display:flex;flex-direction:column;}
  .chero .eyebrow{margin-bottom:var(--s4);}
  .chero h1{font-size:var(--fs-8);line-height:.95;letter-spacing:-.025em;margin-bottom:var(--s5);}
  .chero h1 em{font-style:normal;color:var(--red);}
  .cpromise p{font-size:var(--fs-3);line-height:1.62;color:var(--ink);margin-bottom:var(--s4);max-width:46ch;}
  .cpromise .stmt{font-size:var(--fs-4);font-weight:700;letter-spacing:-.012em;color:var(--ink);
    border-left:3px solid var(--red);padding-left:var(--s4);line-height:1.32;margin:var(--s2) 0 0;}
  .cdetails{margin-top:var(--s7);border-top:1px solid var(--ink);}
  .cdetails .row{display:grid;grid-template-columns:118px 1fr;gap:var(--s4);padding:var(--s4) 0;border-bottom:1px solid var(--line);align-items:baseline;transition:var(--t-fast) var(--ease);}
  .cdetails .row:hover{padding-left:6px;}
  .cdetails .k{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--red);}
  .cdetails .v{font-size:var(--fs-3);color:var(--ink);font-weight:600;letter-spacing:-.01em;}
  .cdetails .v .sub2{display:block;font-size:12.5px;color:var(--muted);font-weight:400;letter-spacing:0;margin-top:4px;}
  .csocial{display:flex;gap:24px;margin-top:auto;padding-top:var(--s6);font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;}
  .csocial a{color:var(--muted);cursor:pointer;transition:var(--t-fast) var(--ease);}
  .csocial a:hover{color:var(--red);}

  /* form column */
  .chero .cform{padding:var(--s7);background:var(--panel);border-left:1px solid var(--line);}
  /* Form card: large title (.fhd), quiet Archivo body (.sub — not mono, Claude Design flagged that).
     Optional emphasized lead-in (.form-lead) — authors mark it with <b>…</b> in the body field. */
  .cform .fhd{font-size:var(--fs-5);font-weight:700;letter-spacing:-.015em;margin:var(--s4) 0 var(--s2);}
  .cform .sub{margin:0 0 var(--s5);max-width:46ch;}
  .form-lead{display:block;font-size:var(--fs-3);font-weight:700;color:var(--ink);line-height:1.4;margin-bottom:var(--s2);}
  /* .row2 + .microcopy now live in theme.css (shared by every inquiry form) */

  @media(max-width:860px){
    .chero{grid-template-columns:1fr;}
    .chero .cinfo{padding:var(--s8) var(--pad-x) var(--s7);}
    .chero .cform{border-left:none;border-top:1px solid var(--line);padding:var(--s7) var(--pad-x);margin-inline:0;}
  }

  /* FEATURE BAND — full-bleed photo closer */
  .cfeature{position:relative;height:440px;border-bottom:1px solid var(--line);overflow:hidden;}
  .cfeature .ph{position:absolute;inset:0 var(--pad-x);height:100%;border:none;}
  .cfeature::after{content:"";position:absolute;inset:0 var(--pad-x);z-index:1;background:linear-gradient(to top,rgba(22,16,10,.82),rgba(22,16,10,.12) 60%,transparent);}
  .cfeature .cap{position:absolute;left:var(--pad-x);right:var(--pad-x);bottom:var(--s7);z-index:2;color:#fff;}
  .cfeature .cap .k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;opacity:.85;}
  .cfeature .cap h2{font-size:var(--fs-6);font-weight:800;letter-spacing:-.02em;line-height:1.04;margin-top:var(--s3);max-width:24ch;}

  /* COUNT-ON trio */
  .conwrap{padding:var(--sec-y) var(--pad-x);border-bottom:1px solid var(--line);}
  .counton{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink);margin-top:var(--s5);}
  .counton .c{padding:var(--s6) var(--s5);border-right:1px solid var(--line);}
  .counton .c:first-child{padding-left:0;}
  .counton .c:last-child{border-right:none;padding-right:0;}
  .counton .idx{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--red);}
  .counton h3{font-size:var(--fs-4);font-weight:700;letter-spacing:-.015em;margin:var(--s4) 0 var(--s2);line-height:1.1;}
  .counton p{font-size:var(--fs-2);color:var(--muted);line-height:1.6;max-width:34ch;}
  @media(max-width:860px){.counton{grid-template-columns:1fr;}.counton .c{border-right:none;border-bottom:1px solid var(--line);padding:var(--s5) 0;}.counton .c:last-child{border-bottom:none;}}

/* ----- from: Journal Index Wireframe ----- */
  /* page-local: journal index — hero, category filter, featured lead post,
     post-card grid, pagination. Frames/footer reuse shared theme.css. */

  /* HERO */
  .jhead{padding:var(--s8) var(--pad-x) var(--s6);}
  .jhead .eyebrow{margin-bottom:var(--s4);}
  .jhead h1{font-size:var(--fs-8);line-height:.96;letter-spacing:-.025em;}
  .jhead .dek{font-size:var(--fs-4);color:var(--muted);margin-top:var(--s4);max-width:52ch;line-height:1.42;}

  /* CATEGORY FILTER */
  .jfilter{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:0 var(--pad-x) var(--s6);border-bottom:1px solid var(--line);}
  .jfilter .fk{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-right:var(--s3);}
  .jfilter a{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);
    border:1px solid var(--line);padding:9px 14px;cursor:pointer;transition:var(--t-fast) var(--ease);}
  .jfilter a:hover{border-color:var(--red);color:var(--red);}
  .jfilter a.on{background:var(--ink);color:var(--bg);border-color:var(--ink);}
  .jfilter a.on:hover{color:var(--bg);}

  /* FEATURED LEAD POST */
  .jlead{display:grid;grid-template-columns:1.5fr 1fr;gap:var(--s7);align-items:center;
    padding:var(--s7) var(--pad-x);border-bottom:1px solid var(--line);cursor:pointer;}
  .jlead .img{overflow:hidden;align-self:stretch;position:relative;}
  .jlead .img .ph{height:100%;min-height:470px;border:1px solid var(--line);transition:transform var(--t-slow) var(--ease),border-color var(--t-fast) var(--ease);}
  .jlead:hover .img .ph{transform:scale(1.03);border-color:var(--red);}
  .jlead .ftag{position:absolute;top:0;left:0;z-index:2;background:var(--red);color:#fff;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:9px 13px;}
  .jmeta{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);display:flex;gap:10px;align-items:center;}
  .jmeta b{color:var(--red);font-weight:500;}
  .jmeta .dotsep{width:4px;height:4px;background:var(--line);border-radius:50%;}
  .jlead h2{font-size:var(--fs-7);font-weight:800;letter-spacing:-.022em;line-height:1.03;margin:var(--s3) 0;}
  .jlead .ex{font-size:var(--fs-3);color:var(--muted);line-height:1.62;max-width:46ch;}
  .jlead .read{display:inline-block;margin-top:var(--s5);font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--red);}
  .jlead:hover .read{text-decoration:underline;text-underline-offset:4px;}

  /* POST GRID */
  .jgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s8) var(--s5);padding:var(--sec-y) var(--pad-x);}
  .jcard{cursor:pointer;display:flex;flex-direction:column;}
  .jcard .img{overflow:hidden;margin-bottom:var(--s4);}
  .jcard .img .ph{aspect-ratio:3/2;height:auto;border:1px solid var(--line);transition:transform var(--t-slow) var(--ease),border-color var(--t-fast) var(--ease);}
  .jcard:hover .img .ph{transform:scale(1.04);border-color:var(--red);}
  .jcard h3{font-size:var(--fs-4);font-weight:700;letter-spacing:-.015em;line-height:1.18;margin:var(--s3) 0 var(--s2);}
  .jcard .ex{font-size:var(--fs-2);color:var(--muted);line-height:1.6;}
  .jcard .read{margin-top:var(--s4);font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--red);}
  .jcard:hover h3{color:var(--red);}
  @media(max-width:860px){.jgrid{grid-template-columns:1fr 1fr;gap:var(--s7) var(--s5);}.jlead{grid-template-columns:1fr;}.jlead .img .ph{min-height:300px;}}
  @media(max-width:560px){.jgrid{grid-template-columns:1fr;}}

  /* PAGINATION */
  .jpag{display:flex;gap:8px;align-items:center;justify-content:center;padding:0 var(--pad-x) var(--sec-y);}
  .jpag a{min-width:46px;height:46px;display:grid;place-items:center;border:1px solid var(--line);background:var(--panel);
    font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--ink);cursor:pointer;transition:var(--t-fast) var(--ease);padding:0 14px;}
  .jpag a:hover{border-color:var(--red);color:var(--red);}
  .jpag a.on{background:var(--ink);color:var(--bg);border-color:var(--ink);}
  .jpag a.on:hover{color:var(--bg);}
  .jpag .next{letter-spacing:.1em;text-transform:uppercase;}

  /* BROWSE BY TOPIC → curated category archives (internal-linking + topical SEO) */
  .jtopics{padding:var(--sec-y) var(--pad-x);border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel);}
  .jtopics .eyebrow{margin-bottom:var(--s4);}
  .jtopics .th{font-size:var(--fs-6);font-weight:800;letter-spacing:-.02em;line-height:1.04;margin-bottom:var(--s6);max-width:24ch;}
  .topicgrid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line);}
  .topicgrid a{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);padding:var(--s4) var(--s4);
    border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;transition:var(--t-fast) var(--ease);}
  .topicgrid a:hover{background:var(--bg);padding-left:calc(var(--s4) + 6px);}
  .topicgrid .tname{font-size:var(--fs-3);font-weight:600;letter-spacing:-.01em;color:var(--ink);transition:color var(--t-fast) var(--ease);}
  .topicgrid a:hover .tname{color:var(--red);}
  .topicgrid .tn{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--muted);flex:none;}
  @media(max-width:860px){.topicgrid{grid-template-columns:1fr 1fr;}}
  @media(max-width:520px){.topicgrid{grid-template-columns:1fr;}}

/* ----- from: Journal Post Wireframe ----- */
  /* page-local: single journal post — header, full-bleed feature, reading column,
     image galleries, tags, author bio. Prose / prev-next / footer reuse theme.css. */

  /* POST HEADER */
  .posthd{max-width:840px;margin:0 auto;padding:var(--s8) var(--pad-i) var(--s6);}
  .postcat{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:var(--s5);}
  .postcat a{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--red);
    border:1px solid var(--line);padding:6px 11px;cursor:pointer;transition:var(--t-fast) var(--ease);}
  .postcat a:hover{border-color:var(--red);background:color-mix(in srgb,var(--red) 7%,transparent);}
  .posthd h1{font-size:var(--fs-7);line-height:1.04;letter-spacing:-.022em;max-width:20ch;}
  .postmeta{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:var(--s5);
    font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);}
  .postmeta .au{color:var(--ink);}
  .postmeta .dotsep{width:4px;height:4px;background:var(--line);border-radius:50%;flex:none;}

  /* FULL-BLEED FEATURE IMAGE */
  .posthero{position:relative;}
  .posthero .ph{height:62vh;min-height:460px;max-height:680px;border-left:none;border-right:none;}
  .posthero .pcap{position:absolute;left:var(--pad-x);bottom:var(--s4);z-index:2;color:#e9e6df;background:rgba(0,0,0,.5);
    font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:7px 11px;}

  /* READING COLUMN */
  .postbody{max-width:740px;margin:0 auto;padding:var(--s8) var(--pad-i) var(--s6);}
  .postbody .prose h2{font-size:var(--fs-5);font-weight:700;letter-spacing:-.015em;line-height:1.1;margin:var(--s7) 0 var(--s3);}
  .postbody .prose h2:first-child{margin-top:0;}
  .postbody .prose strong{font-weight:700;color:var(--ink);}

  /* IMAGE GALLERIES (break wider than the text column) */
  .pgal{padding:var(--s5) var(--pad-x);}
  .pgal .grid{display:grid;gap:6px;}
  .pgal.g3 .grid{grid-template-columns:repeat(3,1fr);}
  .pgal.g2 .grid{grid-template-columns:1fr 1fr;}
  .pgal .ph{aspect-ratio:3/2;height:auto;border:1px solid var(--line);}
  .pgal .pcap{display:block;text-align:center;margin-top:var(--s3);font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);}
  @media(max-width:680px){.pgal.g3 .grid{grid-template-columns:1fr 1fr;}}

  /* PULL AWARD CALLOUT reuses theme .award-bar, constrained */
  .pcallout{max-width:740px;margin:0 auto;padding:var(--s4) var(--pad-i) var(--s5);}

  /* TAGS */
  .ptags{max-width:740px;margin:0 auto;padding:var(--s6) var(--pad-i);display:flex;gap:8px;flex-wrap:wrap;align-items:center;border-top:1px solid var(--line);}
  .ptags .tk{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-right:var(--s2);}
  .ptags a{font-family:var(--mono);font-size:11px;letter-spacing:.03em;color:var(--ink);border:1px solid var(--line);padding:7px 12px;cursor:pointer;transition:var(--t-fast) var(--ease);}
  .ptags a:hover{border-color:var(--red);color:var(--red);}

  /* AUTHOR BIO */
  .pauthor{max-width:740px;margin:0 auto;padding:var(--s5) var(--pad-i) var(--s9);}
  .pauthor .box{display:grid;grid-template-columns:104px 1fr;gap:var(--s5);background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--red);padding:var(--s6);align-items:center;}
  .pauthor .av{width:104px;height:104px;}
  .pauthor .av .ph{height:100%;border:1px solid var(--line);}
  .pauthor .ak{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--red);}
  .pauthor .an{font-size:var(--fs-4);font-weight:700;letter-spacing:-.01em;margin:var(--s2) 0;}
  .pauthor .ab{font-size:var(--fs-2);color:var(--muted);line-height:1.6;max-width:54ch;}
  .pauthor .alink{display:inline-block;margin-top:var(--s3);font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--red);}
  @media(max-width:560px){.pauthor .box{grid-template-columns:1fr;}.pauthor .av{width:88px;height:88px;}}

/* ----- from: Case Studies Landing Wireframe ----- */
  /* page-local: archive hero, credibility metric band, featured lead, vertical-card grid.
     Cards reuse the shared .cs-item/.cs-cap; track record reuses .factcols. */
  .cshead{padding:var(--s8) var(--pad-x) var(--s6);}
  .cshead .eyebrow{margin-bottom:var(--s4);}
  .cshead h1{font-size:var(--fs-8);line-height:.96;letter-spacing:-.025em;max-width:16ch;}
  .cshead .dek{font-size:var(--fs-4);color:var(--muted);margin-top:var(--s5);max-width:58ch;line-height:1.42;}

  .csmetrics{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink);border-bottom:1px solid var(--line);margin:0 var(--pad-x) var(--s5);}
  .csmetrics .cell{padding:var(--s6) var(--s5);border-right:1px solid var(--line);}
  .csmetrics .cell:first-child{padding-left:0;}
  .csmetrics .cell:last-child{border-right:none;padding-right:0;}
  .csmetrics .n{font-size:var(--fs-7);font-weight:800;letter-spacing:-.025em;line-height:1;}
  .csmetrics .n em{font-style:normal;color:var(--red);}
  .csmetrics .l{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:var(--s4);line-height:1.4;}
  @media(max-width:680px){.csmetrics{grid-template-columns:1fr;}.csmetrics .cell{border-right:none;border-bottom:1px solid var(--line);padding:var(--s5) 0;}.csmetrics .cell:last-child{border-bottom:none;}}

  .csfeat{display:grid;grid-template-columns:1.5fr 1fr;gap:var(--s7);align-items:center;
    padding:var(--s7) var(--pad-x);border-bottom:1px solid var(--line);cursor:pointer;}
  /* The frame is absolutely filled so a tall portrait image can't stretch the row —
     it center-crops to the wireframe's landscape proportion (.ph>img is object-fit:cover). */
  .csfeat .img{overflow:hidden;align-self:center;position:relative;aspect-ratio:3/2;}
  .csfeat .img .ph{position:absolute;inset:0;height:100%;border:1px solid var(--line);transition:transform var(--t-slow) var(--ease),border-color var(--t-fast) var(--ease);}
  .csfeat:hover .img .ph{transform:scale(1.03);border-color:var(--red);}
  .csfeat .ftag{position:absolute;top:0;left:0;z-index:2;background:var(--red);color:#fff;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:9px 13px;}
  .csfeat .yr{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--red);}
  .csfeat h2{font-size:var(--fs-7);font-weight:800;letter-spacing:-.022em;line-height:1.02;margin:var(--s3) 0 var(--s2);}
  .csfeat .firm{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s4);}
  .csfeat .ex{font-size:var(--fs-3);color:var(--muted);line-height:1.62;max-width:48ch;}
  .csfeat .awd{display:inline-flex;align-items:center;gap:8px;margin-top:var(--s5);font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);border:1px solid var(--line);border-left:3px solid var(--red);padding:9px 13px;line-height:1.3;}
  .csfeat .read{display:inline-block;margin-top:var(--s5);font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--red);}
  .csfeat:hover .read{text-decoration:underline;text-underline-offset:4px;}

  .csgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s7) var(--s5);padding:var(--sec-y) var(--pad-x) var(--s7);}
  .csgrid .cs-item{width:100%;}

  @media(max-width:860px){
    .csfeat{grid-template-columns:1fr;}
    .csfeat .img{min-height:320px;}
    .csgrid{grid-template-columns:1fr 1fr;}
  }
  @media(max-width:560px){.csgrid{grid-template-columns:1fr;}}

/* ----- lightbox (interactions.js initLightbox — media-collection images in the
   portfolio grids; project cards keep their case-study links) ----- */
.ps-lb{position:fixed;inset:0;z-index:1000;background:rgba(16,14,12,.94);display:none;align-items:center;justify-content:center;}
.ps-lb.open{display:flex;}
.ps-lb img{max-width:min(92vw,1600px);max-height:88vh;width:auto;height:auto;display:block;border:1px solid rgba(255,255,255,.14);}
.ps-lb button{position:absolute;width:46px;height:46px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.28);background:rgba(20,17,14,.6);color:#fff;font-family:var(--mono);font-size:15px;cursor:pointer;transition:border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease);}
.ps-lb button:hover{border-color:var(--red);color:var(--red);}
.ps-lb .lb-prev{left:18px;top:50%;transform:translateY(-50%);}
.ps-lb .lb-next{right:18px;top:50%;transform:translateY(-50%);}
.ps-lb .lb-close{top:18px;right:18px;font-size:19px;}
.ps-lb .lb-ct{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:#b5aea2;}
@media(max-width:560px){.ps-lb .lb-prev{left:8px;}.ps-lb .lb-next{right:8px;}.ps-lb .lb-close{top:8px;right:8px;}}

/* ----- "From the field" Instagram strip (parts/instagram.php) ----- */
.igstrip{padding:var(--sec-y) var(--pad-x);border-top:1px solid var(--line);}
.igstrip .eyebrow{margin-bottom:var(--s4);} /* match .sec eyebrow→heading rhythm */
.igstrip .ig-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s6);margin-bottom:var(--s6);flex-wrap:wrap;}
.igstrip .sub{max-width:52ch;margin-top:var(--s3);color:var(--muted);}
.ig-btn{display:inline-flex;align-items:center;gap:10px;background:var(--red);color:#fff;font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;padding:16px 22px;transition:background var(--t-fast) var(--ease);}
.ig-btn:hover{background:color-mix(in srgb,var(--red) 86%,#000);}
.ig-btn svg{width:16px;height:16px;flex:none;}
.ig-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;}
.ig-item{display:block;overflow:hidden;}
.ig-item .ph{aspect-ratio:1/1;border:1px solid var(--line);transition:transform var(--t-slow) var(--ease),border-color var(--t-fast) var(--ease);}
.ig-item:hover .ph{transform:scale(1.04);border-color:var(--red);}
@media(max-width:860px){.ig-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:560px){.ig-grid{grid-template-columns:repeat(2,1fr);}.igstrip .ig-head{align-items:flex-start;}}

/* ----- inquiry form honeypot (spam trap — must stay visually hidden) ----- */
.ps-hp{position:absolute !important;left:-9999px;width:1px;height:1px;overflow:hidden;}

/* ----- header image logo (Site Settings → Header logo; replaces .mark/.wordmark) -----
   --logo-h sizes it; --logo-nudge shifts it vertically (positive = down) for optical centering. */
.brandblock .logo{display:flex;align-items:center;--logo-h:46px;--logo-nudge:0px;}
.brandblock .logo img{display:block;height:var(--logo-h);width:auto;transform:translateY(var(--logo-nudge));}
@media(max-width:760px){.brandblock .logo{--logo-h:32px;}}

/* ----- Contact page: form as a white card + dual status badges + Instagram detail row (2026-06) ----- */
.cbadges{display:flex;flex-wrap:wrap;gap:var(--s3);margin-bottom:var(--s5);}
.cbadges .info-badge{border:none;padding:0;} /* borderless response indicator (dot + text) */
.chero .cform{background:#fff;border:1px solid var(--line);box-shadow:0 22px 46px -30px rgba(33,30,23,.34);margin:var(--s4) 0 var(--s4) var(--s6);align-self:start;}
/* Shared contact section (home/About/location): form as a white card, matching the contact-page combo. */
.contact .cform{background:#fff;border:1px solid var(--line);box-shadow:0 22px 46px -30px rgba(33,30,23,.34);padding:var(--s7);align-self:start;}
@media(max-width:560px){.contact .cform{box-shadow:none;}}
.cdetails .v a{color:inherit;text-decoration:none;transition:color var(--t-fast) var(--ease);}
.cdetails .v a:hover{color:var(--red);}
@media(max-width:760px){.chero .cform{margin:0;border:none;border-top:1px solid var(--line);box-shadow:none;}}

/* ----- Testimonials (single-sourced; Home + Contact + reusable). Design: Claude Design 2026-06. ----- */
.tmonials .tm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s4);margin-top:var(--s6);}
.tm-card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);padding:var(--s6) var(--s5);}
.tm-card.is-hidden{display:none;}
.tm-stars{display:flex;gap:3px;color:var(--red);margin-bottom:var(--s4);}
.tm-stars svg{width:15px;height:15px;}
.tm-quote{font-size:var(--fs-3);line-height:1.55;color:var(--ink);margin:0 0 var(--s5);flex:1;}
.tm-who{border-top:1px solid var(--line);padding-top:var(--s4);}
.tm-who .tm-nm{font-weight:700;font-size:var(--fs-2);letter-spacing:-.01em;color:var(--ink);}
.tm-who .tm-fm{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:4px;}
.tm-morewrap{display:flex;justify-content:center;margin-top:var(--s6);}
.tm-more{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);background:var(--panel);border:1px solid var(--line);padding:14px 26px;cursor:pointer;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease);}
.tm-more:hover{border-color:var(--red);color:var(--red);}
@media(max-width:860px){.tmonials .tm-grid{grid-template-columns:1fr;}}

/* ===== Site-wide content cap =====
   Handled in :root: --pad-x is now a gutter that grows past --content-max, so every
   band that uses it keeps its full-width background/border while its inner content
   centers at --content-max. Multi-column heroes (nav, .abouthero, .chero, .pnav) get
   an explicit padding-inline below; already-capped islands use --pad-i. Tune --content-max. */
