@import url('https://fonts.googleapis.com/css2?family=Big+Shoulders+Display:wght@600;700;800;900&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  --paper:#F1F0EC;
  --paper-raised:#FFFFFF;
  --ink:#15171B;
  --ink-soft:#4B4F57;
  --accent:#E8590E;
  --accent-ink:#B8430A;
  --blueprint:#2E5266;
  --blueprint-soft:#5D7E90;
  --line:#D8D5CC;
  --line-strong:#B7B3A6;
  --shadow: rgba(20,20,15,0.10);
  --overlay: rgba(10,10,8,0.88);
}
:root:not([data-theme="light"]){
  @media (prefers-color-scheme: dark){
    --paper:#111316; --paper-raised:#191C20; --ink:#ECEDEE; --ink-soft:#A7ACB4;
    --accent:#FF7A33; --accent-ink:#FFA267; --blueprint:#7FA6B8; --blueprint-soft:#4E6C7A;
    --line:#2B2F35; --line-strong:#3B4048; --shadow: rgba(0,0,0,0.45); --overlay: rgba(5,5,5,0.92);
  }
}
:root[data-theme="dark"]{
  --paper:#111316; --paper-raised:#191C20; --ink:#ECEDEE; --ink-soft:#A7ACB4;
  --accent:#FF7A33; --accent-ink:#FFA267; --blueprint:#7FA6B8; --blueprint-soft:#4E6C7A;
  --line:#2B2F35; --line-strong:#3B4048; --shadow: rgba(0,0,0,0.45); --overlay: rgba(5,5,5,0.92);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{
  font-family:"Big Shoulders Display", "Arial Narrow", sans-serif;
  font-weight:800; text-transform:uppercase; letter-spacing:0.3px;
  text-wrap:balance; margin:0; line-height:0.95;
}
.mono{ font-family:"IBM Plex Mono", ui-monospace, monospace; }
a{ color:inherit; }
img{ display:block; max-width:100%; }
button{ font-family:inherit; }
.wrap{ max-width:1160px; margin:0 auto; padding:0 28px; }
::selection{ background:var(--accent); color:#fff; }

/* ---- reveal-on-scroll ---- */
.reveal{ opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease; }
.reveal.in-view{ opacity:1; transform:translateY(0); }
@media (prefers-reduced-motion: reduce){ .reveal{ opacity:1; transform:none; transition:none; } }

/* ---- top bar ---- */
.topbar{ position:sticky; top:0; z-index:50; background:var(--paper); border-bottom:1px solid var(--line); }
.topbar-inner{ display:flex; align-items:center; justify-content:space-between; height:64px; }
.brand{ display:flex; align-items:center; gap:10px; font-family:"Big Shoulders Display"; font-weight:800; font-size:20px; letter-spacing:0.5px; text-decoration:none; }
.brand .mark{ width:28px; height:28px; object-fit:contain; flex-shrink:0; }
.brand .tag{ font-family:"IBM Plex Mono"; font-weight:400; font-size:9px; letter-spacing:1.5px; color:var(--ink-soft); text-transform:uppercase; display:block; margin-top:1px; }
nav.site-nav{ display:flex; gap:26px; font-size:13px; font-weight:600; letter-spacing:0.4px; text-transform:uppercase; }
nav.site-nav a{ text-decoration:none; color:var(--ink-soft); border-bottom:2px solid transparent; padding-bottom:4px; transition:color .15s, border-color .15s; }
nav.site-nav a:hover, nav.site-nav a:focus-visible{ color:var(--ink); border-color:var(--accent); outline:none; }
nav.site-nav a.active{ color:var(--ink); border-color:var(--accent); }
.nav-right{ display:flex; align-items:center; gap:16px; }
.nav-cta{ background:var(--accent); color:#fff; font-family:"IBM Plex Mono"; font-size:12px; font-weight:600; padding:8px 16px; text-decoration:none; letter-spacing:0.3px; white-space:nowrap; }
.nav-cta:hover{ background:var(--accent-ink); }
.nav-toggle{ display:none; background:none; border:1.5px solid var(--line-strong); width:38px; height:38px; align-items:center; justify-content:center; cursor:pointer; color:var(--ink); }
.nav-toggle span, .nav-toggle span::before, .nav-toggle span::after{ content:''; display:block; width:16px; height:2px; background:currentColor; position:relative; transition:transform .2s ease, opacity .2s ease; }
.nav-toggle span::before{ position:absolute; top:-5px; }
.nav-toggle span::after{ position:absolute; top:5px; }
.nav-toggle[aria-expanded="true"] span{ background:transparent; }
.nav-toggle[aria-expanded="true"] span::before{ transform:translateY(5px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span::after{ transform:translateY(-5px) rotate(-45deg); }

/* ---- corner bracket frame ---- */
.frame{ position:relative; }
.frame::before, .frame::after, .frame .bl, .frame .br{ content:''; position:absolute; width:16px; height:16px; pointer-events:none; }
.frame::before{ top:-1px; left:-1px; border-top:2px solid var(--blueprint); border-left:2px solid var(--blueprint); }
.frame::after{ top:-1px; right:-1px; border-top:2px solid var(--blueprint); border-right:2px solid var(--blueprint); }
.frame .bl{ bottom:-1px; left:-1px; border-bottom:2px solid var(--blueprint); border-left:2px solid var(--blueprint); }
.frame .br{ bottom:-1px; right:-1px; border-bottom:2px solid var(--blueprint); border-right:2px solid var(--blueprint); }

/* ---- hero ---- */
.hero{ padding:56px 0 0; }
.hero-grid{ display:grid; grid-template-columns:1.05fr 0.95fr; gap:40px; align-items:center; }
.eyebrow{ font-family:"IBM Plex Mono"; font-size:12px; letter-spacing:2.5px; color:var(--blueprint); text-transform:uppercase; margin-bottom:14px; display:flex; align-items:center; gap:10px; }
.eyebrow::before{ content:''; width:24px; height:1px; background:var(--blueprint); }
.hero h1{ font-size:clamp(38px,5vw,64px); }
.hero h1 em{ font-style:normal; color:var(--accent); }
.page-title h1{ font-size:clamp(34px,4.4vw,54px); }
.hero-sub{ margin:20px 0 28px; max-width:48ch; color:var(--ink-soft); font-size:16.5px; line-height:1.6; }
.btn-row{ display:flex; gap:14px; flex-wrap:wrap; }
.btn{ display:inline-flex; align-items:center; gap:8px; padding:13px 22px; font-size:13.5px; font-weight:600; text-decoration:none; letter-spacing:0.3px; border:none; cursor:pointer; }
.btn-primary{ background:var(--ink); color:var(--paper); }
.btn-primary:hover{ background:var(--accent); color:#fff; }
.btn-ghost{ border:1.5px solid var(--line-strong); color:var(--ink); background:transparent; }
.btn-ghost:hover{ border-color:var(--ink); }
.btn:disabled{ opacity:0.6; cursor:progress; }
.hero-photo img{ width:100%; aspect-ratio:16/10.5; object-fit:cover; cursor:zoom-in; }
.hero-cap{ margin-top:10px; display:flex; justify-content:space-between; font-family:"IBM Plex Mono"; font-size:10.5px; color:var(--ink-soft); letter-spacing:0.5px; text-transform:uppercase; }

/* ---- animated stat strip ---- */
.stats{ border-top:1px solid var(--line); border-bottom:1px solid var(--line); margin-top:56px; }
.stats-row{ display:grid; grid-template-columns:repeat(4,1fr); }
.stat{ padding:26px 28px; border-left:1px solid var(--line); }
.stat:first-child{ border-left:none; }
.stat .num{ font-family:"Big Shoulders Display"; font-weight:800; font-size:38px; color:var(--accent); line-height:1; }
.stat .lbl{ font-family:"IBM Plex Mono"; font-size:10.5px; letter-spacing:1px; text-transform:uppercase; color:var(--ink-soft); margin-top:6px; }

/* ---- section heading pattern ---- */
section{ padding:80px 0; }
.sec-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:40px; border-bottom:1px solid var(--line); padding-bottom:20px; flex-wrap:wrap; }
.sec-head h2{ font-size:clamp(28px,3.4vw,42px); }
.sec-head .idx{ font-family:"IBM Plex Mono"; font-size:12px; color:var(--blueprint); white-space:nowrap; padding-bottom:8px; }
.sec-intro{ color:var(--ink-soft); max-width:56ch; font-size:15px; line-height:1.65; margin-top:10px; }
.sec-foot{ margin-top:36px; text-align:center; }

/* ---- filter bar ---- */
.filter-bar{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:34px; }
.filter-btn{ background:transparent; border:1.5px solid var(--line-strong); color:var(--ink-soft); font-family:"IBM Plex Mono"; font-size:11.5px; letter-spacing:0.4px; text-transform:uppercase; padding:9px 16px; cursor:pointer; transition:all .15s ease; }
.filter-btn:hover{ border-color:var(--ink); color:var(--ink); }
.filter-btn.active{ background:var(--ink); border-color:var(--ink); color:var(--paper); }
.filter-count{ font-family:"IBM Plex Mono"; font-size:11.5px; color:var(--ink-soft); align-self:center; margin-left:4px; }

/* ---- gallery view tabs (Machines / Videos) ---- */
.view-tabs{ display:flex; gap:10px; margin-bottom:30px; border-bottom:1.5px solid var(--line); padding-bottom:22px; }
.view-tab{ background:transparent; border:1.5px solid var(--line-strong); color:var(--ink-soft); font-family:"IBM Plex Mono"; font-size:12px; letter-spacing:0.6px; text-transform:uppercase; padding:11px 22px; cursor:pointer; transition:all .15s ease; }
.view-tab:hover{ border-color:var(--ink); color:var(--ink); }
.view-tab.active{ background:var(--blueprint); border-color:var(--blueprint); color:#fff; }

/* ---- supplier video grid ---- */
.video-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px 22px; }
.video-frame{ aspect-ratio:16/9; overflow:hidden; background:var(--ink); position:relative; cursor:pointer; }
.video-frame iframe{ width:100%; height:100%; border:0; display:block; }
.video-thumb{ width:100%; height:100%; object-fit:cover; display:block; opacity:0.88; transition:opacity .15s ease; }
.video-frame:hover .video-thumb{ opacity:1; }
.video-play{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:60px; height:60px; border-radius:50%; background:rgba(15,15,15,0.6); border:2px solid rgba(255,255,255,0.85); color:#fff; font-size:18px; display:flex; align-items:center; justify-content:center; cursor:pointer; transition:background .15s ease, transform .15s ease; padding:0 0 0 3px; }
.video-frame:hover .video-play{ background:var(--blueprint); border-color:var(--blueprint); transform:translate(-50%,-50%) scale(1.08); }
.video-body{ padding-top:12px; }
.video-supplier{ font-size:10.5px; letter-spacing:0.6px; text-transform:uppercase; color:var(--blueprint); margin-bottom:4px; }
.video-body h4{ font-size:15px; margin-bottom:6px; }
.video-link{ font-family:"IBM Plex Mono"; font-size:11.5px; color:var(--ink-soft); text-decoration:none; border-bottom:1px solid var(--line-strong); padding-bottom:1px; }
.video-link:hover{ color:var(--blueprint); border-color:var(--blueprint); }

/* ---- services ---- */
.svc-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
.svc-card{ background:var(--paper); padding:0; display:flex; flex-direction:column; }
.svc-photo{ aspect-ratio:4/3; overflow:hidden; cursor:zoom-in; }
.svc-photo img{ width:100%; height:100%; object-fit:cover; filter:saturate(0.94); transition:transform .5s ease; }
.svc-card:hover .svc-photo img{ transform:scale(1.06); }
.svc-body{ padding:20px; flex:1; display:flex; flex-direction:column; }
.svc-num{ font-family:"IBM Plex Mono"; font-size:11px; color:var(--accent); margin-bottom:8px; }
.svc-card h3{ font-size:20px; margin-bottom:10px; }
.svc-card ul{ list-style:none; margin:0; padding:0; font-size:12.5px; color:var(--ink-soft); line-height:1.9; }
.svc-card li::before{ content:'— '; color:var(--blueprint-soft); }

.stock-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
.stock-card{ background:var(--paper); padding:32px 28px; display:flex; flex-direction:column; }
.stock-icon{ width:44px; height:44px; margin-bottom:18px; color:var(--accent); }
.stock-icon svg{ width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.4; }
.stock-card h3{ font-size:20px; margin-bottom:8px; }
.stock-brands{ font-family:"IBM Plex Mono"; font-size:11px; letter-spacing:0.4px; text-transform:uppercase; color:var(--blueprint); margin-bottom:14px; }
.stock-card p{ font-size:13.5px; color:var(--ink-soft); line-height:1.7; margin:0 0 18px; flex:1; }
.stock-card .btn{ align-self:flex-start; }
@media (max-width:920px){ .stock-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:600px){ .stock-grid{ grid-template-columns:1fr; } }

/* ---- portfolio / project cards ---- */
.proj-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px 24px; }
.proj-card{ background:var(--paper-raised); border:1px solid var(--line); text-decoration:none; display:block; transition:border-color .15s ease, transform .15s ease; }
.proj-card:hover{ border-color:var(--ink); transform:translateY(-2px); }
.proj-photo{ aspect-ratio:4/3; overflow:hidden; position:relative; }
.proj-photo img{ width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.proj-card:hover .proj-photo img{ transform:scale(1.05); }
.proj-tag{ position:absolute; top:10px; left:10px; background:var(--ink); color:var(--paper); font-family:"IBM Plex Mono"; font-size:9.5px; padding:4px 8px; letter-spacing:0.5px; text-transform:uppercase; }
.proj-cat{ position:absolute; top:10px; right:10px; background:var(--accent); color:#fff; font-family:"IBM Plex Mono"; font-size:9px; padding:4px 8px; letter-spacing:0.3px; text-transform:uppercase; }
.proj-body{ padding:16px 18px 18px; }
.proj-body h4{ font-family:"IBM Plex Sans"; font-weight:600; font-size:14.5px; margin:0 0 8px; text-transform:none; letter-spacing:0; color:var(--ink); }
.proj-specs{ font-family:"IBM Plex Mono"; font-size:10.5px; color:var(--ink-soft); line-height:1.8; }
.proj-specs b{ color:var(--ink); font-weight:600; }
.proj-more{ display:flex; align-items:center; justify-content:center; border:1px dashed var(--line-strong); color:var(--ink-soft); font-family:"IBM Plex Mono"; font-size:12px; text-align:center; padding:20px; text-decoration:none; }
.proj-more strong{ display:block; color:var(--ink); font-size:26px; font-family:"Big Shoulders Display"; font-weight:800; }
.empty-state{ text-align:center; padding:60px 20px; color:var(--ink-soft); font-family:"IBM Plex Mono"; font-size:13px; grid-column:1/-1; }

/* ---- catalog grid ---- */
.catalog-strip{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.cat-item{ position:relative; aspect-ratio:1/1; overflow:hidden; cursor:pointer; border:none; padding:0; text-align:left; }
.cat-item img{ width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.cat-item:hover img{ transform:scale(1.08); }
.cat-item .cat-label{ position:absolute; left:0; right:0; bottom:0; background:linear-gradient(to top, rgba(0,0,0,0.78), transparent); color:#fff; padding:34px 14px 12px; font-family:"IBM Plex Mono"; font-size:11px; letter-spacing:0.4px; text-transform:uppercase; text-align:left; }
.cat-item .cat-badge{ position:absolute; top:10px; left:10px; background:rgba(15,15,15,0.7); color:#fff; font-family:"IBM Plex Mono"; font-size:9px; padding:4px 8px; letter-spacing:0.4px; text-transform:uppercase; }

/* ---- partners marquee ---- */
.partners{ background:var(--ink); color:var(--paper); overflow:hidden; }
.partners .wrap{ padding:0; max-width:none; }
.partners-head{ max-width:1160px; margin:0 auto; padding:44px 28px 24px; display:flex; justify-content:space-between; align-items:flex-end; border-bottom:1px solid rgba(255,255,255,0.15); }
.partners-head h2{ color:var(--paper); font-size:clamp(26px,3vw,36px); }
.partners-head .idx{ font-family:"IBM Plex Mono"; font-size:12px; color:var(--accent); }
.marquee-track{ display:flex; white-space:nowrap; padding:26px 0; animation:scroll 32s linear infinite; }
.partners:hover .marquee-track{ animation-play-state:paused; }
@media (prefers-reduced-motion: reduce){ .marquee-track{ animation:none; overflow-x:auto; } }
.marquee-track span{ font-family:"Big Shoulders Display"; font-weight:700; font-size:26px; color:rgba(241,240,236,0.55); padding:0 30px; text-transform:uppercase; }
.marquee-track span b{ color:var(--paper); font-weight:800; }
.marquee-track span::after{ content:'·'; margin-left:30px; color:var(--accent); }
@keyframes scroll{ from{ transform:translateX(0);} to{ transform:translateX(-50%);} }

/* ---- team ---- */
.team-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; }
.team-card{ background:var(--paper-raised); border:1px solid var(--line); padding:26px 22px; text-align:center; }
.team-avatar{ width:64px; height:64px; margin:0 auto 16px; border-radius:50%; background:var(--ink); color:var(--paper); display:flex; align-items:center; justify-content:center; font-family:"Big Shoulders Display"; font-weight:800; font-size:20px; letter-spacing:0.5px; }
.team-card:nth-child(1) .team-avatar{ background:var(--accent); color:#fff; }
.team-name{ font-family:"IBM Plex Sans"; font-weight:600; font-size:15px; color:var(--ink); margin-bottom:4px; }
.team-role{ font-family:"IBM Plex Mono"; font-size:11px; letter-spacing:0.6px; text-transform:uppercase; color:var(--accent); margin-bottom:12px; }
.team-blurb{ font-size:12.5px; color:var(--ink-soft); line-height:1.65; }

/* ---- map ---- */
.map-frame{ aspect-ratio:16/6; overflow:hidden; margin-top:28px; }
.map-frame iframe{ width:100%; height:100%; border:0; filter:grayscale(0.15) contrast(1.02); }
.map-foot{ display:flex; justify-content:space-between; align-items:center; margin-top:12px; flex-wrap:wrap; gap:10px; }
.map-foot a{ font-family:"IBM Plex Mono"; font-size:12px; text-decoration:none; color:var(--blueprint); }
.map-foot a:hover{ color:var(--accent); }

/* ---- insights / spotlights ---- */
.insight-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px 24px; }
.insight-card{ background:var(--paper-raised); border:1px solid var(--line); text-decoration:none; display:block; transition:border-color .15s ease; }
.insight-card:hover{ border-color:var(--ink); }
.insight-photo{ aspect-ratio:16/10; overflow:hidden; }
.insight-photo img{ width:100%; height:100%; object-fit:cover; }
.insight-body{ padding:18px 20px 22px; }
.insight-tag{ font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:1px; text-transform:uppercase; color:var(--accent); margin-bottom:8px; }
.insight-body h4{ font-family:"IBM Plex Sans"; font-weight:600; font-size:16px; margin:0 0 10px; text-transform:none; letter-spacing:0; line-height:1.35; }
.insight-body p{ font-size:13px; color:var(--ink-soft); line-height:1.7; margin:0; }
.insight-list .insight-card{ display:grid; grid-template-columns:220px 1fr; gap:0; margin-bottom:20px; }
.insight-list .insight-photo{ aspect-ratio:auto; height:100%; }
.insight-accordion .accordion-body{ max-height:0; overflow:hidden; transition:max-height .35s ease; }
.insight-accordion.open .accordion-body{ max-height:600px; }
.accordion-toggle{ font-family:"IBM Plex Mono"; font-size:11.5px; text-transform:uppercase; letter-spacing:0.4px; color:var(--accent); background:none; border:none; cursor:pointer; padding:0; margin-top:10px; display:inline-flex; align-items:center; gap:6px; }
.accordion-toggle .chev{ transition:transform .25s ease; display:inline-block; }
.insight-accordion.open .accordion-toggle .chev{ transform:rotate(180deg); }
.accordion-body p{ font-size:13.5px; color:var(--ink-soft); line-height:1.75; margin:14px 0 0; }

/* ---- privacy policy page ---- */
.policy-body{ max-width:72ch; }
.policy-body .updated{ font-family:"IBM Plex Mono"; font-size:11.5px; color:var(--blueprint); letter-spacing:0.4px; text-transform:uppercase; margin-bottom:36px; }
.policy-body h2{ font-size:20px; margin:44px 0 4px; }
.policy-body h2:first-of-type{ margin-top:0; }
.policy-body h3{ font-family:"IBM Plex Sans"; font-weight:600; text-transform:none; letter-spacing:0; font-size:14.5px; color:var(--ink); margin:22px 0 6px; }
.policy-body p{ font-size:14px; color:var(--ink-soft); line-height:1.75; margin:12px 0; }
.policy-body ul{ margin:12px 0; padding-left:20px; }
.policy-body li{ font-size:14px; color:var(--ink-soft); line-height:1.75; margin:4px 0; }
.policy-body a{ color:var(--blueprint); }
.policy-body strong{ color:var(--ink); }

/* ---- project detail page ---- */
.detail-hero{ display:grid; grid-template-columns:1fr; gap:20px; }
.detail-gallery{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; margin-top:14px; }
.detail-gallery img{ width:100%; aspect-ratio:4/3; object-fit:cover; cursor:zoom-in; transition:opacity .15s ease; }
.detail-gallery img:hover{ opacity:0.85; }
.detail-meta{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; border:1.5px solid var(--ink); margin:32px 0; }
.detail-meta div{ padding:20px 24px; border-right:1.5px solid var(--ink); }
.detail-meta div:last-child{ border-right:none; }
.detail-meta .tb-label{ font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:1.5px; text-transform:uppercase; color:var(--blueprint); margin-bottom:8px; }
.detail-meta .tb-val{ font-family:"IBM Plex Sans"; font-weight:600; font-size:15px; }
.detail-specs{ list-style:none; margin:0; padding:0; }
.detail-specs li{ font-family:"IBM Plex Mono"; font-size:13px; color:var(--ink-soft); padding:10px 0; border-bottom:1px solid var(--line); }
.detail-specs li::before{ content:'— '; color:var(--blueprint-soft); }
.back-link{ display:inline-flex; align-items:center; gap:8px; font-family:"IBM Plex Mono"; font-size:12px; text-transform:uppercase; letter-spacing:0.4px; color:var(--ink-soft); text-decoration:none; margin-bottom:24px; }
.back-link:hover{ color:var(--accent); }

/* ---- contact / title block ---- */
.contact{ background:var(--paper-raised); border-top:1px solid var(--line); }
.titleblock{ border:1.5px solid var(--ink); }
.tb-top{ display:grid; grid-template-columns:1.1fr 1.1fr 1fr 0.7fr; }
.tb-cell{ padding:26px 26px; border-right:1.5px solid var(--ink); }
.tb-cell:last-child{ border-right:none; }
.tb-label{ font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:1.5px; text-transform:uppercase; color:var(--blueprint); margin-bottom:10px; }
.tb-cell h2{ font-size:clamp(30px,3.6vw,46px); margin-bottom:6px; }
.tb-cell p{ color:var(--ink-soft); font-size:13.5px; line-height:1.6; margin:4px 0 0; }
.tb-cell a.line{ display:flex; align-items:center; gap:8px; font-family:"IBM Plex Mono"; font-size:13.5px; margin-top:8px; text-decoration:none; color:var(--ink); }
.tb-cell a.line:hover{ color:var(--accent); }
.line-icon{ display:inline-flex; flex:none; width:15px; height:15px; color:var(--blueprint-soft); }
.line-icon svg{ width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.tb-cell a.line:hover .line-icon{ color:var(--accent); }
.tb-bottom{ border-top:1.5px solid var(--ink); display:flex; justify-content:space-between; align-items:center; padding:16px 26px; font-family:"IBM Plex Mono"; font-size:10.5px; color:var(--ink-soft); letter-spacing:0.5px; text-transform:uppercase; flex-wrap:wrap; gap:12px; }

/* ---- quote form ---- */
.quote-form{ margin-top:36px; border:1.5px solid var(--ink); padding:32px; background:var(--paper); }
.quote-form .form-row{ display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-bottom:18px; }
.quote-form label{ display:block; font-family:"IBM Plex Mono"; font-size:11px; letter-spacing:0.8px; text-transform:uppercase; color:var(--ink-soft); margin-bottom:8px; }
.quote-form input, .quote-form select, .quote-form textarea{
  width:100%; background:var(--paper-raised); border:1.5px solid var(--line-strong); color:var(--ink);
  padding:11px 12px; font-family:"IBM Plex Sans"; font-size:14px;
}
.quote-form input:focus, .quote-form select:focus, .quote-form textarea:focus{ outline:none; border-color:var(--accent); }
.quote-form .field-full{ margin-bottom:18px; }
.quote-form textarea{ resize:vertical; min-height:110px; }
.form-error{ color:var(--accent-ink); font-size:11.5px; font-family:"IBM Plex Mono"; margin-top:6px; display:none; }
.field-invalid input, .field-invalid textarea, .field-invalid select{ border-color:var(--accent-ink); }
.field-invalid .form-error{ display:block; }
.form-status{ margin-top:16px; font-family:"IBM Plex Mono"; font-size:13px; padding:12px 14px; display:none; }
.form-status.success{ display:block; background:rgba(46,82,102,0.12); color:var(--blueprint); }
.form-status.error{ display:block; background:rgba(184,67,10,0.12); color:var(--accent-ink); }
.form-note{ font-family:"IBM Plex Mono"; font-size:11px; color:var(--ink-soft); margin-top:14px; }

footer.site-foot{ padding:22px 0 40px; }
.foot-row{ display:flex; justify-content:space-between; font-family:"IBM Plex Mono"; font-size:10.5px; color:var(--ink-soft); letter-spacing:0.3px; flex-wrap:wrap; gap:8px; }
.foot-row a{ color:var(--ink-soft); text-decoration:none; border-bottom:1px solid var(--line-strong); }
.foot-row a:hover{ color:var(--ink); border-color:var(--ink); }

/* ---- lightbox ---- */
.lightbox{ position:fixed; inset:0; background:var(--overlay); z-index:200; display:none; align-items:center; justify-content:center; padding:40px; }
.lightbox.open{ display:flex; }
.lightbox img{ max-width:100%; max-height:82vh; object-fit:contain; }
.lightbox-cap{ position:absolute; bottom:28px; left:0; right:0; text-align:center; color:#fff; font-family:"IBM Plex Mono"; font-size:12px; letter-spacing:0.4px; }
.lightbox-close, .lightbox-prev, .lightbox-next{ position:absolute; background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.3); color:#fff; cursor:pointer; font-family:"IBM Plex Mono"; }
.lightbox-close{ top:24px; right:24px; width:40px; height:40px; font-size:16px; }
.lightbox-prev, .lightbox-next{ top:50%; transform:translateY(-50%); width:44px; height:44px; font-size:18px; }
.lightbox-prev{ left:24px; }
.lightbox-next{ right:24px; }
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{ background:rgba(255,255,255,0.22); }

/* ---- toast ---- */
.toast{ position:fixed; bottom:24px; right:24px; background:var(--ink); color:var(--paper); padding:14px 20px; font-family:"IBM Plex Mono"; font-size:12.5px; z-index:300; transform:translateY(120%); transition:transform .3s ease; max-width:320px; }
.toast.show{ transform:translateY(0); }

@media (max-width:920px){
  nav.site-nav{ position:fixed; top:64px; left:0; right:0; bottom:0; background:var(--paper); flex-direction:column; gap:0; padding:10px 28px; transform:translateX(100%); transition:transform .25s ease; overflow-y:auto; }
  nav.site-nav.open{ transform:translateX(0); }
  nav.site-nav a{ padding:16px 0; border-bottom:1px solid var(--line); width:100%; }
  .nav-toggle{ display:flex; }
  .hero-grid{ grid-template-columns:1fr; }
  .stats-row{ grid-template-columns:repeat(2,1fr); }
  .stat:nth-child(3){ border-left:none; }
  .svc-grid{ grid-template-columns:repeat(2,1fr); }
  .team-grid{ grid-template-columns:repeat(2,1fr); }
  .map-frame{ aspect-ratio:4/3; }
  .proj-grid{ grid-template-columns:repeat(2,1fr); }
  .insight-grid{ grid-template-columns:repeat(2,1fr); }
  .catalog-strip{ grid-template-columns:repeat(2,1fr); }
  .video-grid{ grid-template-columns:repeat(2,1fr); }
  .tb-top{ grid-template-columns:1fr; }
  .tb-cell{ border-right:none; border-bottom:1.5px solid var(--ink); }
  .detail-meta{ grid-template-columns:1fr; }
  .detail-meta div{ border-right:none; border-bottom:1.5px solid var(--ink); }
  .detail-meta div:last-child{ border-bottom:none; }
  .quote-form .form-row{ grid-template-columns:1fr; }
  .insight-list .insight-card{ grid-template-columns:1fr; }
}
@media (max-width:600px){
  .proj-grid{ grid-template-columns:1fr; }
  .insight-grid{ grid-template-columns:1fr; }
  .catalog-strip{ grid-template-columns:1fr; }
  .team-grid{ grid-template-columns:1fr; }
  .video-grid{ grid-template-columns:1fr; }
  .view-tabs{ flex-wrap:wrap; }
  .view-tab{ flex:1; text-align:center; }
}
