/* =====================================================================
   NESTX — "THE TOOLPATH" DESIGN SYSTEM
   Concept: digital-fabrication toolpath — the exact line a nozzle,
   CNC bit, or laser follows. Precision + African warmth.
   Self-contained: no dependency on the legacy CSS files.
   Preserves all existing JS class/ID contracts.
   ===================================================================== */

/* ----------------------------------------------------------------------
   Fonts are loaded via <link> in each page <head>:
   Space Grotesk (display) · IBM Plex Sans (body) · IBM Plex Mono (utility)
   ---------------------------------------------------------------------- */

/* =========================================================
   1. DESIGN TOKENS
   ========================================================= */
:root {
  /* Surfaces & text — LIGHT */
  --bg:        #FBFAF6;
  --panel:     #FFFFFF;
  --panel-2:   #EFF2F1;
  --panel-3:   #E4EAE8;
  --text:      #13262C;
  --text-soft: #3C4F55;
  --text-mute: #6A7C81;
  --heading:   #0C2C39;

  /* Brand */
  --brand:       #00A38F;   /* signature teal  */
  --brand-press: #067A6C;
  --accent:      #F5A300;   /* molten-filament amber */
  --accent-press:#D98C00;
  --accent-soft: rgba(245,163,0,.14);
  --brand-soft:  rgba(0,163,143,.12);

  /* Always-dark structural color (header/footer/dark bands) */
  --ink-deep:  #08181E;
  --ink-panel: #0E2730;

  /* Lines */
  --hairline:   #DEE5E3;
  --hairline-2: #C9D3D0;

  /* Mono label color */
  --code: #0C7E6F;

  /* Geometry */
  --r-sm: 8px;
  --r-md: 14px;
  --r-lg: 22px;
  --r-pill: 999px;

  --shadow-1: 0 1px 2px rgba(8,24,30,.05), 0 4px 14px rgba(8,24,30,.06);
  --shadow-2: 0 8px 30px rgba(8,24,30,.10);
  --shadow-3: 0 22px 60px rgba(8,24,30,.18);

  --t-fast: .18s cubic-bezier(.4,0,.2,1);
  --t-base: .32s cubic-bezier(.4,0,.2,1);
  --t-slow: .6s  cubic-bezier(.4,0,.2,1);

  --maxw: 1180px;
  --gutter: clamp(1.15rem, 4vw, 2.5rem);

  --header-h: 68px;

  --font-display: 'Space Grotesk', 'Segoe UI', system-ui, sans-serif;
  --font-body: 'IBM Plex Sans', system-ui, -apple-system, sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, 'SFMono-Regular', monospace;
}

html[data-theme='dark'] {
  --bg:        #07171C;
  --panel:     #0E232A;
  --panel-2:   #123038;
  --panel-3:   #16414A;
  --text:      #E6F1EE;
  --text-soft: #B7C8C5;
  --text-mute: #869C9B;
  --heading:   #F1F8F6;

  --brand:       #1FC9B0;
  --brand-press: #16A892;
  --accent:      #FFB531;
  --accent-press:#F0A516;
  --accent-soft: rgba(255,181,49,.16);
  --brand-soft:  rgba(31,201,176,.14);

  --ink-deep:  #04151A;
  --ink-panel: #0B232B;

  --hairline:   #1C3A43;
  --hairline-2: #26505B;

  --code: #2FD0B8;

  --shadow-1: 0 1px 2px rgba(0,0,0,.4), 0 6px 18px rgba(0,0,0,.35);
  --shadow-2: 0 10px 34px rgba(0,0,0,.45);
  --shadow-3: 0 24px 64px rgba(0,0,0,.55);
}

/* =========================================================
   2. RESET & BASE
   ========================================================= */
*,*::before,*::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.7;
  color: var(--text);
  background: var(--bg);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  transition: background var(--t-base), color var(--t-base);
}
img, video, svg, canvas { max-width: 100%; display: block; }
a { color: var(--brand-press); text-decoration: none; }
html[data-theme='dark'] a { color: var(--brand); }
strong { font-weight: 600; }
::selection { background: var(--accent); color: #08181E; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; border-radius: 4px; }
body.menu-open { overflow: hidden; }

/* =========================================================
   3. TYPOGRAPHY
   ========================================================= */
h1,h2,h3,h4 {
  font-family: var(--font-display);
  color: var(--heading);
  margin: 0 0 .55em;
  line-height: 1.08;
  letter-spacing: -.02em;
  font-weight: 700;
}
h1 { font-size: clamp(2.5rem, 6vw, 4.6rem); }
h2 { font-size: clamp(1.95rem, 4vw, 3.05rem); }
h3 { font-size: clamp(1.25rem, 2.1vw, 1.6rem); letter-spacing: -.01em; }
h4 { font-size: 1.05rem; letter-spacing: -.005em; }
p  { margin: 0 0 1.15em; }
p:last-child { margin-bottom: 0; }

.lede {
  font-size: clamp(1.1rem, 1.7vw, 1.32rem);
  line-height: 1.6;
  color: var(--text-soft);
}

/* Mono utility label — the structural device of the system */
.eyebrow {
  font-family: var(--font-mono);
  font-weight: 600;
  font-size: .72rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--code);
  display: inline-flex;
  align-items: center;
  gap: .6em;
  margin: 0 0 1.1rem;
}
.eyebrow::before {
  content: "";
  width: 26px; height: 2px;
  background: var(--accent);
  display: inline-block;
}
.mono { font-family: var(--font-mono); }
.text-center { text-align: center; }

/* =========================================================
   4. LAYOUT
   ========================================================= */
.container { width: min(92%, var(--maxw)); margin-inline: auto; }
.section { padding: clamp(4rem, 9vw, 7.5rem) 0; position: relative; }
.section.tight { padding: clamp(3rem, 6vw, 4.5rem) 0; }

.section-head { max-width: 760px; margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.section-head.center { margin-inline: auto; text-align: center; }
.section-head.center .eyebrow { justify-content: center; }

/* Toolpath divider — a hairline with a travelling node (signature) */
.toolpath-rule {
  position: relative;
  height: 1px;
  background: var(--hairline);
  overflow: visible;
}
.toolpath-rule::after {
  content: "";
  position: absolute; top: 50%; left: 0;
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--accent);
  transform: translate(-50%, -50%);
  box-shadow: 0 0 0 4px var(--accent-soft);
}

/* =========================================================
   5. BUTTONS  (new .btn + legacy .cta-button aliases)
   ========================================================= */
.btn, .cta-button {
  --_bg: var(--brand);
  --_fg: #FFFFFF;
  display: inline-flex; align-items: center; justify-content: center;
  gap: .6em;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 1rem;
  line-height: 1;
  padding: .95rem 1.6rem;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  background: var(--_bg);
  color: var(--_fg);
  cursor: pointer;
  text-align: center;
  transition: transform var(--t-fast), box-shadow var(--t-base), background var(--t-fast), border-color var(--t-fast), color var(--t-fast);
  box-shadow: var(--shadow-1);
}
.btn:hover, .cta-button:hover { transform: translateY(-2px); box-shadow: var(--shadow-2); background: var(--brand-press); }
.btn:active, .cta-button:active { transform: translateY(0); }

.btn-accent, .secondary-cta {
  --_bg: var(--accent); --_fg: #1A1206;
}
.btn-accent:hover, .secondary-cta:hover { background: var(--accent-press); }

.primary-cta { --_bg: var(--brand); --_fg:#fff; }

.btn-ghost, .secondary-cta-outline {
  --_bg: transparent; --_fg: var(--text);
  border-color: var(--hairline-2);
  box-shadow: none;
}
.btn-ghost:hover, .secondary-cta-outline:hover {
  background: var(--panel-2); border-color: var(--text-mute);
  box-shadow: none; transform: translateY(-2px);
}

/* On dark hero/bands */
.on-dark .btn-ghost, .on-dark .secondary-cta-outline {
  --_fg: #EAF3F1; border-color: rgba(255,255,255,.28);
}
.on-dark .btn-ghost:hover, .on-dark .secondary-cta-outline:hover {
  background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.55);
}

.btn-wa { --_bg:#25D366; --_fg:#06321B; }
.btn-wa:hover { background:#1Fb959; }

.btn-lg, .cta-button.btn-lg { padding: 1.1rem 2rem; font-size: 1.06rem; }
.btn i { font-size: 1.05em; }

/* =========================================================
   6. HEADER & NAVIGATION  (header dark in both themes)
   ========================================================= */
header {
  position: sticky; top: 0; z-index: 1000;
  background: color-mix(in srgb, var(--ink-deep) 88%, transparent);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255,255,255,.07);
  transition: background var(--t-base), box-shadow var(--t-base);
}
header.is-scrolled { background: color-mix(in srgb, var(--ink-deep) 96%, transparent); box-shadow: 0 10px 30px rgba(0,0,0,.25); }
.header-content {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; height: var(--header-h);
  width: min(94%, 1300px); margin-inline: auto;
}
.logo-link { display: inline-flex; align-items: center; }
.logo-img { height: 34px; width: auto; }

nav#main-nav { display: flex; align-items: center; }
.nav-list { display: flex; align-items: center; gap: 2px; list-style: none; margin: 0; padding: 0; }
.nav-list > li { position: relative; }
.nav-list > li > a {
  display: inline-flex; align-items: center; gap: .45em;
  color: #D7E4E2; font-weight: 500; font-size: .96rem;
  padding: .55rem .85rem; border-radius: var(--r-sm);
  transition: color var(--t-fast), background var(--t-fast);
}
.nav-list > li > a:hover { color: #fff; background: rgba(255,255,255,.07); }
.nav-list > li > a i { font-size: .72em; transition: transform var(--t-fast); }
.has-dropdown:hover > a i { transform: rotate(180deg); }

.dropdown-menu {
  display: none; position: absolute; top: 100%; left: 0; padding-top: 10px;
  min-width: 230px; padding: 8px;
  background: var(--ink-panel);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-3);
  flex-direction: column; gap: 2px;
}
.has-dropdown:hover > .dropdown-menu,
.has-dropdown:focus-within > .dropdown-menu { display: flex; }
.dropdown-menu li a {
  display: block; color: #C5D4D2; font-size: .92rem; font-weight: 500;
  padding: .6rem .8rem; border-radius: var(--r-sm);
  transition: color var(--t-fast), background var(--t-fast);
}
.dropdown-menu li a:hover, .dropdown-menu li a.active { color:#fff; background: rgba(255,255,255,.08); }

.header-controls { display: flex; align-items: center; gap: .55rem; }

.theme-toggle {
  width: 38px; height: 38px; border-radius: var(--r-pill);
  display: grid; place-items: center;
  background: rgba(255,255,255,.08); color:#E7F1EF;
  border: 1px solid rgba(255,255,255,.12); cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast);
}
.theme-toggle:hover { background: rgba(255,255,255,.16); color: var(--accent); }

.language-switcher { border: 0; margin: 0; padding: 0; display: inline-flex; }
.visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

.language-switcher .lang-pill {
  display: inline-flex; padding: 3px; gap: 2px;
  background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.12);
  border-radius: var(--r-pill);
}
.lang-btn {
  font-family: var(--font-mono); font-weight: 600; font-size: .74rem; letter-spacing: .04em;
  display: inline-flex; align-items: center; gap: .35em;
  padding: .3rem .6rem; border: 0; border-radius: var(--r-pill);
  background: transparent; color: #B7C7C5; cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast);
}
.lang-btn.active { background: var(--brand); color: #ffffff; font-weight: 700; }

.nav-cta {
  padding: .6rem 1.1rem !important; font-size: .9rem !important;
  background: var(--accent); color:#1A1206;
}
.nav-cta:hover { background: var(--accent-press); }

.hamburger {
  display: none; width: 42px; height: 42px; border: 0; cursor: pointer;
  background: rgba(255,255,255,.08); border-radius: var(--r-sm);
  position: relative;
}
.hamburger .bar {
  position: absolute; left: 11px; width: 20px; height: 2px; background: #EAF3F1;
  transition: transform var(--t-fast), opacity var(--t-fast), top var(--t-fast);
}
.hamburger .bar:nth-child(1) { top: 15px; }
.hamburger .bar:nth-child(2) { top: 25px; }
.hamburger.is-active .bar:nth-child(1) { top: 20px; transform: rotate(45deg); }
.hamburger.is-active .bar:nth-child(2) { top: 20px; transform: rotate(-45deg); }
.mobile-close-btn { display: none; }

/* =========================================================
   7. HERO — self-drawing toolpath (no media needed)
   ========================================================= */
.hero-fab {
  position: relative; overflow: hidden;
  background:
    radial-gradient(120% 90% at 85% -10%, #0E3744 0%, transparent 55%),
    radial-gradient(90% 80% at 5% 110%, #0B2C36 0%, transparent 60%),
    var(--ink-deep);
  color: #EAF3F1;
  isolation: isolate;
}
/* blueprint grid */
.hero-fab::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(120,200,200,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(120,200,200,.06) 1px, transparent 1px);
  background-size: 46px 46px;
  -webkit-mask-image: radial-gradient(130% 110% at 70% 0%, #000 35%, transparent 80%);
          mask-image: radial-gradient(130% 110% at 70% 0%, #000 35%, transparent 80%);
}
.hero-art {
  position: absolute; inset: 0; z-index: 1; pointer-events: none;
  width: 100%; height: 100%; opacity: .9;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, transparent 30%, #000 52%);
          mask-image: linear-gradient(90deg, transparent 0%, transparent 30%, #000 52%);
}
.hero-inner {
  position: relative; z-index: 2;
  width: min(92%, var(--maxw)); margin-inline: auto;
  padding: clamp(5rem, 12vw, 9rem) 0 clamp(3.5rem, 7vw, 5rem);
  max-width: 980px;
}
.hero-fab .eyebrow { color: #6FE0CE; }
.hero-fab .eyebrow::before { background: var(--accent); }
.hero-fab h1 {
  color: #FFFFFF; max-width: 16ch;
  text-shadow: 0 2px 30px rgba(0,0,0,.35);
}
.hero-fab h1 .hl { color: var(--accent); }
.hero-sub {
  font-size: clamp(1.08rem, 1.7vw, 1.32rem); line-height: 1.6;
  color: #C7DAD7; max-width: 56ch; margin-top: .4rem;
}
.hero-cta-group { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 2.2rem; }

/* spec strip under hero */
.hero-specs {
  position: relative; z-index: 2;
  border-top: 1px solid rgba(255,255,255,.1);
  background: rgba(4,18,23,.5);
}
.hero-specs .row {
  width: min(92%, var(--maxw)); margin-inline: auto;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(150px,1fr));
}
.hero-specs .cell {
  padding: 1.05rem 1.1rem;
  border-left: 1px solid rgba(255,255,255,.08);
  font-family: var(--font-mono); font-size: .78rem; letter-spacing: .06em;
  color: #9FBCB8; text-transform: uppercase;
  display: flex; align-items: center; gap: .6em;
}
.hero-specs .cell:first-child { border-left: 0; }
.hero-specs .cell b { color: #fff; font-weight: 600; }
.hero-specs .cell i { color: var(--accent); }

/* =========================================================
   8. CAPABILITIES GRID
   ========================================================= */
.cap-grid {
  display: grid; gap: 1.1rem;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
}
.cap-card {
  position: relative; display: flex; flex-direction: column;
  padding: 1.7rem 1.6rem 1.55rem;
  background: var(--panel);
  border: 1px solid var(--hairline);
  border-radius: var(--r-md);
  overflow: hidden;
  transition: transform var(--t-base), box-shadow var(--t-base), border-color var(--t-base);
}
.cap-card::before { /* amber top edge on hover */
  content:""; position:absolute; left:0; top:0; height:3px; width:100%;
  background: var(--accent); transform: scaleX(0); transform-origin: left;
  transition: transform var(--t-base);
}
.cap-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-2); border-color: var(--hairline-2); }
.cap-card:hover::before { transform: scaleX(1); }
/* engineered corner tick */
.cap-card::after {
  content:""; position:absolute; right:14px; top:14px;
  width:14px; height:14px;
  border-top:2px solid var(--hairline-2); border-right:2px solid var(--hairline-2);
  opacity:.7;
}
.cap-index { font-family: var(--font-mono); font-size:.74rem; letter-spacing:.16em; color: var(--code); margin-bottom: 1rem; }
.cap-icon {
  width: 46px; height: 46px; border-radius: var(--r-sm);
  display:grid; place-items:center; margin-bottom: 1rem;
  background: var(--brand-soft); color: var(--brand);
  font-size: 1.25rem;
}
.cap-card h3 { margin-bottom: .5rem; }
.cap-card p { color: var(--text-soft); font-size: .98rem; margin-bottom: 1.1rem; }
.cap-link {
  margin-top: auto; font-family: var(--font-mono); font-weight:600;
  font-size:.82rem; letter-spacing:.04em; color: var(--brand-press);
  display:inline-flex; align-items:center; gap:.5em;
}
html[data-theme='dark'] .cap-link { color: var(--brand); }
.cap-link i { transition: transform var(--t-fast); }
.cap-card:hover .cap-link i { transform: translateX(4px); }

/* =========================================================
   9. PROCESS STRIP (circular manufacturing — real sequence)
   ========================================================= */
.process { display: grid; gap: 1rem; grid-template-columns: repeat(4, 1fr); counter-reset: step; }
.process-step {
  position: relative; padding: 1.5rem 1.3rem;
  background: var(--panel); border: 1px solid var(--hairline); border-radius: var(--r-md);
}
.process-step .num {
  font-family: var(--font-mono); font-weight:600; font-size:.8rem; letter-spacing:.1em;
  color: var(--accent-press); margin-bottom:.7rem; display:block;
}
html[data-theme='dark'] .process-step .num { color: var(--accent); }
.process-step h4 { margin-bottom:.35rem; color: var(--heading); }
.process-step p { font-size:.9rem; color: var(--text-mute); margin:0; }
.process-step:not(:last-child)::after {
  content:"\f061"; font-family:"Font Awesome 6 Free"; font-weight:900;
  position:absolute; right:-13px; top:50%; transform:translateY(-50%);
  color: var(--hairline-2); font-size:.85rem; z-index:2;
  background: var(--bg); padding: 4px 0;
}

/* =========================================================
   10. STATS / OUTCOMES BAND
   ========================================================= */
.band-dark {
  background:
    radial-gradient(100% 120% at 100% 0%, #0F3845 0%, transparent 55%),
    var(--ink-deep);
  color:#EAF3F1;
}
.band-dark h2 { color:#fff; }
.band-dark .lede { color:#B9CFCC; }
.stats { display:grid; gap:1.1rem; grid-template-columns: repeat(auto-fit, minmax(180px,1fr)); }
.stat {
  padding: 1.6rem 1.4rem; border:1px solid rgba(255,255,255,.1); border-radius: var(--r-md);
  background: rgba(255,255,255,.03);
}
.stat .num {
  font-family: var(--font-display); font-weight:700;
  font-size: clamp(2.2rem, 4vw, 3rem); color:#fff; line-height:1; letter-spacing:-.02em;
}
.stat .num .suffix { color: var(--accent); }
.stat .label { font-family: var(--font-mono); font-size:.76rem; letter-spacing:.08em; text-transform:uppercase; color:#9FBCB8; margin-top:.7rem; }

/* =========================================================
   11. SPLIT BAND (founder / mission)
   ========================================================= */
.split { display:grid; gap: clamp(2rem,5vw,4rem); grid-template-columns: 1.05fr .95fr; align-items:center; }
.split.reverse .split-media { order:-1; }
.split-body .pillars { list-style:none; margin:1.4rem 0 0; padding:0; display:grid; gap:1rem; }
.split-body .pillars li { position:relative; padding-left: 2.1rem; color: var(--text-soft); }
.split-body .pillars li i {
  position:absolute; left:0; top:.15rem; color: var(--brand);
  width:1.4rem; text-align:center;
}
.split-body .pillars li b { color: var(--heading); display:block; font-weight:600; }

/* =========================================================
   12. MEDIA FRAME — intentional placeholder before images exist
   ========================================================= */
.media-frame {
  position: relative; border-radius: var(--r-md); overflow: hidden;
  border: 1px solid var(--hairline-2);
  background:
    repeating-linear-gradient(135deg, var(--panel-2) 0 14px, var(--panel-3) 14px 28px);
  aspect-ratio: 4 / 3;
  box-shadow: var(--shadow-1);
}
.media-frame.tall { aspect-ratio: 3 / 4; }
.media-frame.wide { aspect-ratio: 16 / 9; }
.media-frame img, .media-frame video {
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:2;
}
.media-frame::after { /* filename hint, hidden once an <img> covers it */
  content: "IMG · " attr(data-file);
  position:absolute; left:12px; bottom:10px; z-index:1;
  font-family: var(--font-mono); font-size:.7rem; letter-spacing:.06em;
  color: var(--text-mute);
  background: var(--panel); padding:.3rem .5rem; border-radius:6px;
  border:1px solid var(--hairline); max-width: calc(100% - 24px);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.media-frame .corner { position:absolute; z-index:1; width:18px; height:18px; opacity:.6; }
.media-frame .corner.tl { top:10px; left:10px; border-top:2px solid var(--text-mute); border-left:2px solid var(--text-mute); }
.media-frame .corner.br { bottom:10px; right:10px; border-bottom:2px solid var(--text-mute); border-right:2px solid var(--text-mute); }

/* =========================================================
   13. CONTACT
   ========================================================= */
.contact-grid { display:grid; gap: clamp(2rem,5vw,3.5rem); grid-template-columns: .9fr 1.1fr; align-items:start; }
.contact-info .ci {
  display:flex; align-items:flex-start; gap:.9rem; margin-bottom:1.1rem; color: var(--text-soft);
}
.contact-info .ci i {
  width: 40px; height:40px; flex:none; border-radius: var(--r-sm); display:grid; place-items:center;
  background: var(--brand-soft); color: var(--brand); font-size:1.05rem;
}
.contact-info .ci b { display:block; color: var(--heading); font-weight:600; }
.contact-card {
  background: var(--panel); border:1px solid var(--hairline);
  border-radius: var(--r-lg); padding: clamp(1.5rem,3vw,2.2rem); box-shadow: var(--shadow-1);
}
.contact-card .field { margin-bottom: 1rem; }
.contact-card label {
  display:block; font-family: var(--font-mono); font-size:.72rem; letter-spacing:.08em;
  text-transform:uppercase; color: var(--text-mute); margin-bottom:.4rem;
}
.contact-card input, .contact-card select, .contact-card textarea {
  width:100%; font-family: var(--font-body); font-size:1rem; color: var(--text);
  background: var(--bg); border:1px solid var(--hairline-2); border-radius: var(--r-sm);
  padding:.85rem 1rem; transition: border-color var(--t-fast), box-shadow var(--t-fast);
}
.contact-card textarea { resize: vertical; min-height: 130px; }
.contact-card input:focus, .contact-card select:focus, .contact-card textarea:focus {
  outline:none; border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-soft);
}
.contact-card button { width:100%; margin-top:.4rem; }
#form-message { display: block; margin: .9rem 0 0; font-weight:600; font-family: var(--font-mono); font-size:.9rem; }
#form-message.success { color: var(--brand-press); }
html[data-theme='dark'] #form-message.success { color: var(--brand); }

.map-embed iframe { width:100%; height: 300px; border:0; display:block; filter: grayscale(.2); }

/* =========================================================
   14. FOOTER  (styles legacy footer + .site-footer markup)
   ========================================================= */
footer, .site-footer {
  background: var(--ink-deep); color: #AFC4C1;
  padding: clamp(3rem,6vw,4.5rem) 0 2rem;
  border-top: 1px solid rgba(255,255,255,.07);
}
footer .container, .site-footer .container { width: min(92%, var(--maxw)); margin-inline:auto; }
.footer-logo { height: 38px; filter: brightness(0) invert(1); opacity:.95; margin-bottom: 1rem; }
.footer-lead { max-width: 460px; color:#9FB6B3; font-size:.96rem; }
.footer-top { display:grid; grid-template-columns: 1.4fr repeat(3, .9fr); gap: 2.2rem; padding-bottom: 2.5rem; border-bottom:1px solid rgba(255,255,255,.08); }
.footer-col h4 { color:#fff; font-family: var(--font-mono); font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; margin-bottom: 1rem; }
.footer-col ul { list-style:none; margin:0; padding:0; }
.footer-col ul li { margin-bottom:.6rem; }
.footer-col a { color:#AFC4C1; font-size:.95rem; transition: color var(--t-fast); }
.footer-col a:hover { color: var(--accent); }
.footer-col .ci { display:flex; gap:.6rem; align-items:flex-start; font-size:.92rem; margin-bottom:.6rem; color:#9FB6B3; }
.footer-col .ci i { color: var(--brand); width:1.1rem; text-align:center; margin-top:.25rem; }
.social-links { display:flex; gap:.7rem; margin-top:1.3rem; }
.social-links a {
  width:40px; height:40px; border-radius: var(--r-sm); display:grid; place-items:center;
  background: rgba(255,255,255,.06); color:#EAF3F1; font-size:1.05rem; border:1px solid rgba(255,255,255,.08);
  transition: background var(--t-fast), color var(--t-fast), transform var(--t-fast);
}
.social-links a:hover { background: var(--brand); color:#06231F; transform: translateY(-2px); }
.footer-bottom {
  display:flex; flex-wrap:wrap; gap:1rem; justify-content:space-between; align-items:center;
  padding-top: 1.6rem; font-size:.85rem; color:#809996;
}
.footer-bottom .mono { font-family: var(--font-mono); letter-spacing:.04em; }
.footer-bottom a { color:#AFC4C1; }
.footer-bottom a:hover { color: var(--accent); }
.footer-powered-by { color:#809996; font-size:.85rem; }
.footer-powered-by a { color:#C8DAD7; text-decoration:underline; }
.footer-powered-by a:hover { color: var(--accent); }

/* =========================================================
   15. BLOG / PORTFOLIO CARDS (reusable for later phases)
   ========================================================= */
.card-grid { display:grid; gap: 1.4rem; grid-template-columns: repeat(auto-fill, minmax(310px,1fr)); }
.post-card { display:flex; flex-direction:column; background: var(--panel); border:1px solid var(--hairline); border-radius: var(--r-md); overflow:hidden; transition: transform var(--t-base), box-shadow var(--t-base); }
.post-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-2); }
.post-card .media-frame { border:0; border-radius:0; box-shadow:none; aspect-ratio:16/10; }
.post-card .body { padding: 1.3rem 1.4rem 1.5rem; display:flex; flex-direction:column; flex:1; }
.post-meta { font-family: var(--font-mono); font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; color: var(--code); margin-bottom:.7rem; }
.post-card h3 { font-size:1.2rem; margin-bottom:.5rem; }
.post-card p { font-size:.94rem; color: var(--text-soft); margin-bottom:1rem; }
.tag-row { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:auto; }
.tag { font-family: var(--font-mono); font-size:.72rem; padding:.25rem .6rem; border-radius: var(--r-pill); background: var(--panel-2); color: var(--text-mute); border:1px solid var(--hairline); }

/* =========================================================
   15b. FAQ + VIDEO + SUB-NAV (solutions/interior pages)
   ========================================================= */
.faq { max-width: 840px; margin-inline: auto; display: grid; gap: .8rem; }
.faq-item { border: 1px solid var(--hairline); border-radius: var(--r-md); background: var(--panel); overflow: hidden; transition: border-color var(--t-fast); }
.faq-item[open] { border-color: var(--hairline-2); }
.faq-item summary {
  cursor: pointer; padding: 1.1rem 1.3rem; list-style: none;
  font-family: var(--font-display); font-weight: 500; font-size: 1.06rem; color: var(--heading);
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: "+"; font-family: var(--font-mono); color: var(--brand); font-size: 1.4rem; line-height: 1; transition: transform var(--t-fast); }
.faq-item[open] summary::after { transform: rotate(45deg); }
.faq-item .faq-a { padding: 0 1.3rem 1.2rem; color: var(--text-soft); }
.faq-item .faq-a p { margin: 0; }

.video-frame {
  position: relative; aspect-ratio: 16 / 9; border-radius: var(--r-md); overflow: hidden;
  border: 1px solid var(--hairline-2); background: var(--ink-deep); box-shadow: var(--shadow-1);
}
.video-frame video { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Order / CTA band (centered) */
.cta-band { text-align: center; }
.cta-band .cta-inner { max-width: 720px; margin-inline: auto; }
.cta-band h2 { color: #fff; }
.cta-band .lede { color: #B9CFCC; margin-bottom: 2rem; }
.cta-band .hero-cta-group { justify-content: center; }

/* gallery caption */
.shot-cap { font-family: var(--font-mono); font-size: .72rem; letter-spacing: .04em; color: var(--text-mute); margin-top: .5rem; text-transform: uppercase; }

/* ---- Interior page hero ---- */
.page-hero { position: relative; overflow: hidden; background: radial-gradient(120% 90% at 85% -20%, #0E3744 0%, transparent 55%), var(--ink-deep); color:#EAF3F1; padding: clamp(3.5rem,8vw,6rem) 0 clamp(3rem,6vw,4.5rem); }
.page-hero::before { content:""; position:absolute; inset:0; pointer-events:none; background-image: linear-gradient(rgba(120,200,200,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(120,200,200,.05) 1px, transparent 1px); background-size:46px 46px; -webkit-mask-image: radial-gradient(120% 110% at 70% 0%, #000 35%, transparent 80%); mask-image: radial-gradient(120% 110% at 70% 0%, #000 35%, transparent 80%); }
.page-hero .container { position:relative; z-index:1; }
.page-hero .eyebrow { color:#6FE0CE; }
.page-hero h1 { color:#fff; max-width:18ch; }
.page-hero .lede { color:#C7DAD7; max-width:60ch; }
.page-hero.center .container { text-align:center; }
.page-hero.center h1, .page-hero.center .lede { margin-inline:auto; }
.page-hero.center .eyebrow { justify-content:center; }

/* ---- Team grid ---- */
.team-grid { display:grid; gap:1.4rem; grid-template-columns: repeat(auto-fill, minmax(240px,1fr)); }
.team-card { background:var(--panel); border:1px solid var(--hairline); border-radius:var(--r-md); overflow:hidden; transition: transform var(--t-base), box-shadow var(--t-base); }
.team-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-2); }
.team-card .media-frame { border:0; border-radius:0; aspect-ratio:1/1; box-shadow:none; }
.team-card .tc-body { padding:1.2rem 1.3rem 1.4rem; }
.team-card h3 { font-size:1.15rem; margin-bottom:.2rem; }
.team-card .tc-role { font-family:var(--font-mono); font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; color:var(--brand-press); margin-bottom:.7rem; }
html[data-theme='dark'] .team-card .tc-role { color:var(--brand); }
.team-card p { font-size:.92rem; color:var(--text-soft); margin:0; }

/* ---- Timeline ---- */
.timeline { position:relative; max-width:780px; margin-inline:auto; }
.timeline::before { content:""; position:absolute; left:7px; top:6px; bottom:6px; width:2px; background:var(--hairline-2); }
.tl-item { position:relative; padding:0 0 1.8rem 2.4rem; }
.tl-item::before { content:""; position:absolute; left:0; top:4px; width:16px; height:16px; border-radius:50%; background:var(--accent); border:3px solid var(--bg); box-shadow:0 0 0 2px var(--accent); }
.tl-item .tl-year { font-family:var(--font-mono); font-weight:600; font-size:.82rem; letter-spacing:.08em; color:var(--brand-press); }
html[data-theme='dark'] .tl-item .tl-year { color:var(--brand); }
.tl-item h4 { margin:.2rem 0 .3rem; }
.tl-item p { color:var(--text-soft); font-size:.95rem; margin:0; }

/* ---- Founder profile ---- */
.spec-list { list-style:none; margin:1.2rem 0 0; padding:0; display:grid; gap:.7rem; }
.spec-list li { display:flex; gap:.8rem; font-size:.95rem; border-bottom:1px dashed var(--hairline); padding-bottom:.7rem; }
.spec-list .k { font-family:var(--font-mono); font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; color:var(--text-mute); min-width:120px; flex:none; padding-top:.15rem; }
.spec-list .v { color:var(--text); font-weight:500; }
.quote-block { border-left:3px solid var(--accent); padding:.4rem 0 .4rem 1.3rem; margin:1.4rem 0; font-family:var(--font-display); font-size:1.15rem; line-height:1.4; color:var(--heading); font-style:italic; }

/* ---- Legal prose ---- */
.legal-prose { max-width:820px; margin-inline:auto; }
.legal-prose h2 { font-size:clamp(1.4rem,2.4vw,1.9rem); margin-top:2.2rem; }
.legal-prose h3 { font-size:1.15rem; margin-top:1.6rem; }
.legal-prose p, .legal-prose li { color:var(--text-soft); }
.legal-prose ul { padding-left:1.2rem; }
.legal-prose .updated { font-family:var(--font-mono); font-size:.78rem; letter-spacing:.05em; color:var(--text-mute); text-transform:uppercase; }

/* ---- Filter bar (blog + portfolio) ---- */
.filter-bar { display:flex; flex-wrap:wrap; gap:.6rem; align-items:center; justify-content:center; margin-bottom:2rem; }
.chip { font-family:var(--font-mono); font-size:.78rem; letter-spacing:.04em; padding:.5rem 1rem; border-radius:var(--r-pill); cursor:pointer; background:var(--panel); color:var(--text-soft); border:1px solid var(--hairline); transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast); }
.chip:hover { border-color:var(--hairline-2); }
.chip.active { background:var(--brand); color:#06231F; border-color:var(--brand); }
.blog-search { max-width:420px; margin:0 auto 1.4rem; position:relative; }
.blog-search input { width:100%; font-family:var(--font-body); font-size:1rem; color:var(--text); background:var(--panel); border:1px solid var(--hairline-2); border-radius:var(--r-pill); padding:.8rem 1.2rem .8rem 2.6rem; }
.blog-search input:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-soft); }
.blog-search i { position:absolute; left:1rem; top:50%; transform:translateY(-50%); color:var(--text-mute); }
.empty-state { text-align:center; color:var(--text-mute); padding:3rem 1rem; font-family:var(--font-mono); font-size:.9rem; }
.post-card { position:relative; }
.post-card .post-cat { position:absolute; top:12px; left:12px; z-index:3; background:var(--ink-deep); color:#EAF3F1; }
.is-hidden { display:none !important; }

.reveal, .animate-on-scroll {
  opacity: 0; transform: translateY(22px);
  transition: opacity .7s ease, transform .7s cubic-bezier(.16,1,.3,1);
}
.reveal.is-visible, .animate-on-scroll.is-visible { opacity:1; transform: none; }
[data-reveal-delay="1"] { transition-delay:.08s; }
[data-reveal-delay="2"] { transition-delay:.16s; }
[data-reveal-delay="3"] { transition-delay:.24s; }
[data-reveal-delay="4"] { transition-delay:.32s; }

/* =========================================================
   17. TOOLPATH HERO ANIMATION
   ========================================================= */
.tp-line { fill:none; stroke-linecap:round; stroke-linejoin:round; }
.tp-grid-line { stroke: rgba(120,200,200,.18); stroke-width:1; }
.tp-draw { stroke-dasharray: 1; stroke-dashoffset: 1; animation: tpDraw 2.6s ease forwards; }
.tp-draw.d2 { animation-delay:.5s; }
.tp-draw.d3 { animation-delay:1s; }
.tp-nozzle { fill: var(--accent); filter: drop-shadow(0 0 8px rgba(245,163,0,.7)); }
@keyframes tpDraw { to { stroke-dashoffset: 0; } }

/* =========================================================
   18. RESPONSIVE
   ========================================================= */
@media (max-width: 1024px) {
  .split, .contact-grid { grid-template-columns: 1fr; }
  .split.reverse .split-media { order: 0; }
  .footer-top { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 860px) {
  .process { grid-template-columns: 1fr 1fr; }
  .process-step:not(:last-child)::after { display:none; }
}
@media (max-width: 992px) {
  .nav-cta { display:none; }

  /* Mobile nav drawer */
  nav#main-nav {
    position: fixed; inset: 0 0 0 auto; width: min(86%, 360px);
    background: var(--ink-panel); flex-direction: column; align-items: stretch;
    padding: calc(var(--header-h) + 1rem) 1.3rem 2rem;
    transform: translateX(105%); transition: transform var(--t-base);
    box-shadow: var(--shadow-3); overflow-y:auto; z-index:1100;
  }
  nav#main-nav.is-active { transform: translateX(0); }
  .nav-list { flex-direction: column; align-items: stretch; gap: 2px; }
  .nav-list > li > a { padding: .9rem .6rem; font-size: 1.02rem; justify-content: space-between; }
  .dropdown-menu {
    position: static; display: none; box-shadow:none; border:0; background: transparent;
    min-width:0; padding: 0 0 .4rem .6rem;
  }
  .has-dropdown.active > .dropdown-menu { display: flex; }
  .has-dropdown:hover > .dropdown-menu { display: none; }
  .has-dropdown.active > .dropdown-menu { display: flex; }
  .mobile-close-btn {
    display: grid; place-items:center; position:absolute; top: 14px; right: 16px;
    width:40px; height:40px; border:0; border-radius: var(--r-sm);
    background: rgba(255,255,255,.08); color:#EAF3F1; font-size:1.1rem; cursor:pointer;
  }
  .hamburger { display:block; }
}
@media (max-width: 560px) {
  .footer-top { grid-template-columns: 1fr; gap:1.6rem; }
  .stats, .cap-grid, .process { grid-template-columns: 1fr; }
  .hero-cta-group .btn, .hero-cta-group .cta-button { width: 100%; }
}

/* =========================================================
   19. REDUCED MOTION
   ========================================================= */
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .reveal, .animate-on-scroll { opacity:1; transform:none; }
  .tp-draw { stroke-dashoffset: 0; }
}

/* =====================================================================
   CRAFT PASS — "HUMAN-DESIGNED, NOT AI-GENERATED"
   Engineering-lab craft: film grain, steel hairlines, editorial chapters,
   optical type, a real pull-quote event, a spec ticker, living detail.
   Sector metal = STEEL (cool). Additive layer — refines the whole platform.
   ===================================================================== */

/* (1) FILM GRAIN over everything — tactile analog tooth, kills gradient banding */
body::after {
  content: ""; position: fixed; inset: 0; z-index: 60; pointer-events: none;
  opacity: .4; mix-blend-mode: soft-light;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 240px 240px;
}
html[data-theme='dark'] body::after { opacity: .6; mix-blend-mode: overlay; }

/* (5) STEEL METALLIC HAIRLINE — the restrained tech "luxury" signal */
.hairline-steel { height: 1px; border: 0; margin: 0;
  background: linear-gradient(90deg, transparent, rgba(150,168,180,.55) 18%, rgba(214,226,234,.9) 50%, rgba(150,168,180,.55) 82%, transparent); }
html[data-theme='dark'] .hairline-steel {
  background: linear-gradient(90deg, transparent, rgba(120,150,168,.45) 18%, rgba(190,214,226,.75) 50%, rgba(120,150,168,.45) 82%, transparent); }
.toolpath-rule { background: linear-gradient(90deg, transparent, var(--hairline-2) 20%, var(--hairline-2) 80%, transparent); }

/* (3) EDITORIAL CHAPTER SYSTEM — "Ch. 01" mono numerals + hairline rule */
.chapter { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.1rem; }
.chapter .ch-num {
  font-family: var(--font-mono); font-weight: 600; font-size: .72rem; letter-spacing: .22em;
  text-transform: uppercase; color: var(--code); white-space: nowrap; }
.chapter .ch-rule { flex: 1; height: 1px;
  background: linear-gradient(90deg, var(--hairline-2), transparent); }
.section-head.center .chapter { justify-content: center; }
.section-head.center .chapter .ch-rule { max-width: 90px; }
.section-head.center .chapter .ch-rule:first-child { background: linear-gradient(90deg, transparent, var(--hairline-2)); }
.on-dark .chapter .ch-num { color: #6FE0CE; }
.on-dark .chapter .ch-rule { background: linear-gradient(90deg, rgba(255,255,255,.28), transparent); }

/* (4) OPTICAL TYPE — tighter display tracking + a real PULL-QUOTE event */
.hero-fab h1 { letter-spacing: -.035em; }
.pull-quote-band { padding: clamp(4.5rem,9vw,7.5rem) 0; }
.pull-quote {
  font-family: var(--font-display); font-weight: 500;
  font-size: clamp(1.9rem, 4.6vw, 3.6rem); line-height: 1.1; letter-spacing: -.025em;
  color: var(--heading); max-width: 22ch; margin: 0; }
.pull-quote .mark { color: var(--brand); }
.pull-quote .qbig { color: var(--brand); font-size: 1.25em; line-height: 0; vertical-align: -.3em; margin-right: .08em; }
.pull-quote cite {
  display: block; font-family: var(--font-mono); font-style: normal; font-size: .78rem;
  letter-spacing: .12em; text-transform: uppercase; color: var(--text-mute); margin-top: 1.6rem; }

/* (7) LIVING DETAIL — spec ticker with gradient-masked edges */
.ticker { overflow: hidden; border-top: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline);
  background: var(--panel); padding: .8rem 0;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
.ticker-track { display: inline-flex; align-items: center; gap: 2.6rem; white-space: nowrap;
  will-change: transform; animation: tickerMove 34s linear infinite; }
.ticker:hover .ticker-track { animation-play-state: paused; }
.ticker-item { font-family: var(--font-mono); font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; color: var(--text-soft); display: inline-flex; align-items: center; gap: .7rem; }
.ticker-item::before { content: ""; width: 5px; height: 5px; background: var(--accent); border-radius: 50%; display: inline-block; }
@keyframes tickerMove { to { transform: translateX(-50%); } }

/* (7) LIVING DETAIL — slow image zoom on media hover */
.media-frame img, .media-frame video { transition: transform .9s cubic-bezier(.2,.8,.2,1); }
.media-frame:hover img, .post-card:hover .media-frame img { transform: scale(1.055); }

/* (7) LIVING DETAIL — underlines that DRAW (hovers strengthen, never fade) */
.link-draw { background-image: linear-gradient(var(--brand), var(--brand));
  background-size: 0% 2px; background-position: 0 100%; background-repeat: no-repeat;
  transition: background-size .4s cubic-bezier(.4,0,.2,1); padding-bottom: 2px; }
.link-draw:hover { background-size: 100% 2px; }

/* (6) DEPTH & LIGHT — deepen brand-tinted shadow on key surfaces */
.cap-card:hover, .post-card:hover { box-shadow: 0 18px 44px -12px rgba(0,120,105,.28), 0 6px 16px rgba(8,24,30,.10); }

.offset-r { margin-left: auto; }
.measure { max-width: 62ch; }

@media (prefers-reduced-motion: reduce) {
  .ticker-track { animation: none; }
  .media-frame:hover img { transform: none; }
}

/* =====================================================================
   MEDIA UPGRADE — hero backgrounds, portrait video slots, media wall,
   and CTA legibility fixes (WhatsApp + primary on dark).
   ===================================================================== */

/* --- CTA legibility --- */
.btn-wa { --_bg: #25D366; --_fg: #062B12; font-weight: 700; }
.btn-wa i { color: #062B12; }
.btn-wa:hover { background: #1FC15C; }
/* primary CTA on dark heroes/bands: deepen so white text is clearly legible (AA) */
.on-dark .primary-cta, .on-dark .btn:not(.btn-accent):not(.btn-wa):not(.btn-ghost):not(.secondary-cta-outline):not(.secondary-cta) {
  background: #0B7D6E; color: #fff;
}
.on-dark .primary-cta:hover { background: #096A5D; }
/* whatsapp icon on outline buttons keeps brand green for recognisability */
.secondary-cta-outline .fa-whatsapp, .btn-ghost .fa-whatsapp { color: #25D366; }

/* --- HERO MEDIA BACKGROUND (picture/video behind the hero) --- */
.hero-fab.has-bg { isolation: isolate; }
.hero-bg-media {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  z-index: 0; opacity: .5; filter: saturate(1.05);
}
.hero-scrim {
  position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background:
    linear-gradient(90deg, rgba(4,18,23,.95) 0%, rgba(4,18,23,.80) 44%, rgba(4,18,23,.48) 100%),
    linear-gradient(0deg, rgba(4,18,23,.88) 0%, rgba(4,18,23,.12) 42%, rgba(4,18,23,.42) 100%);
}
.hero-fab.has-bg .hero-art { opacity: .55; z-index: 1; }

/* --- PORTRAIT VIDEO SLOT (phone-shot 9:16 clips) --- */
.vslot {
  position: relative; overflow: hidden; border-radius: var(--r-md);
  border: 1px solid var(--hairline-2); box-shadow: var(--shadow-1);
  background: repeating-linear-gradient(135deg, var(--panel-2) 0 14px, var(--panel-3) 14px 28px);
}
.vslot.portrait { aspect-ratio: 9 / 16; }
.vslot.square { aspect-ratio: 1 / 1; }
.vslot.wide { aspect-ratio: 16 / 9; }
.vslot video, .vslot img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; transition: transform .9s cubic-bezier(.2,.8,.2,1); }
.vslot:hover video, .vslot:hover img { transform: scale(1.05); }
.vslot .v-scrim { position: absolute; inset: 0; z-index: 2; pointer-events: none; background: linear-gradient(0deg, rgba(4,18,23,.55), transparent 46%); }
.vslot .v-label { position: absolute; left: 10px; bottom: 9px; z-index: 3; font-family: var(--font-mono); font-size: .66rem; letter-spacing: .04em; color: #eafff8; background: rgba(4,18,23,.6); padding: .22rem .5rem; border-radius: 6px; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.vslot .v-play { position: absolute; inset: 0; z-index: 3; display: grid; place-items: center; pointer-events: none; }
.vslot .v-play::before { content: "\f04b"; font-family: "Font Awesome 6 Free"; font-weight: 900; color: #fff; font-size: 1.5rem; opacity: .92; filter: drop-shadow(0 2px 10px rgba(0,0,0,.6)); }
.vslot .corner { position: absolute; z-index: 3; width: 16px; height: 16px; opacity: .8; }
.vslot .corner.tl { top: 9px; left: 9px; border-top: 2px solid rgba(255,255,255,.7); border-left: 2px solid rgba(255,255,255,.7); }

/* --- MEDIA WALL (bento of real photos + portrait videos) --- */
.media-wall { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 148px; gap: 1rem; grid-auto-flow: dense; }
.mw-tile {
  position: relative; overflow: hidden; border-radius: var(--r-md); border: 1px solid var(--hairline);
  background: repeating-linear-gradient(135deg, var(--panel-2) 0 14px, var(--panel-3) 14px 28px);
}
.mw-tile img, .mw-tile video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; transition: transform 1s cubic-bezier(.2,.8,.2,1); }
.mw-tile:hover img, .mw-tile:hover video { transform: scale(1.06); }
.mw-tile .mw-scrim { position: absolute; inset: 0; z-index: 2; background: linear-gradient(0deg, rgba(4,18,23,.5), transparent 48%); }
.mw-tile .mw-label { position: absolute; left: 11px; bottom: 10px; z-index: 3; font-family: var(--font-mono); font-size: .66rem; letter-spacing: .04em; color: #eafff8; }
.mw-tile.is-video .mw-play { position: absolute; inset: 0; z-index: 3; display: grid; place-items: center; pointer-events: none; }
.mw-tile.is-video .mw-play::before { content: "\f04b"; font-family: "Font Awesome 6 Free"; font-weight: 900; color: #fff; font-size: 1.7rem; opacity: .92; filter: drop-shadow(0 2px 10px rgba(0,0,0,.6)); }
.mw-2x2 { grid-column: span 2; grid-row: span 2; }
.mw-1x2 { grid-row: span 2; }   /* portrait */
.mw-2x1 { grid-column: span 2; } /* landscape */
@media (max-width: 820px) {
  .media-wall { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 128px; }
  .mw-2x2 { grid-column: span 2; grid-row: span 2; }
  .mw-2x1 { grid-column: span 2; }
}
@media (prefers-reduced-motion: reduce) { .mw-tile:hover img, .mw-tile:hover video, .vslot:hover video, .vslot:hover img { transform: none; } }

/* --- HERO HEADLINE: keep clear of the toolpath art on the right --- */
.hero-fab h1 { max-width: 13ch; }
.hero-art {
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, transparent 42%, #000 64%);
          mask-image: linear-gradient(90deg, transparent 0%, transparent 42%, #000 64%);
}
@media (max-width: 900px){ .hero-fab h1 { max-width: 18ch; } .hero-art { opacity:.28; } }

/* =====================================================================
   PORTFOLIO CARDS (fading multi-image) · CINEMATIC GALLERY · HOME SLIDESHOW
   ===================================================================== */

/* --- portfolio card media: crossfading images / video / placeholder --- */
.pcard { display:flex; flex-direction:column; background:var(--panel); border:1px solid var(--hairline);
  border-radius:var(--r-md); overflow:hidden; transition:transform var(--t-base), box-shadow var(--t-base); }
.pcard:hover { transform:translateY(-4px); box-shadow:0 18px 44px -12px rgba(0,120,105,.28); }
.pcard-media { position:relative; aspect-ratio:16/10; overflow:hidden;
  background:repeating-linear-gradient(135deg,var(--panel-2) 0 14px,var(--panel-3) 14px 28px); }
.pcard-media img, .pcard-media video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.pcard-media .slide { opacity:0; transition:opacity 1s ease; z-index:1; }
.pcard-media .slide.on { opacity:1; z-index:2; }
.pcard-media:hover img { transform:scale(1.05); transition:transform 1.2s cubic-bezier(.2,.8,.2,1); }
.pcard-media .ph-label { position:absolute; left:11px; bottom:10px; z-index:3; font-family:var(--font-mono);
  font-size:.66rem; letter-spacing:.04em; color:var(--text-mute); }
.pcard-media .dots { position:absolute; right:10px; bottom:10px; z-index:4; display:flex; gap:5px; }
.pcard-media .dots i { width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,.55); display:block; }
.pcard-media .dots i.on { background:var(--accent); }
.pcard-media .cat-tag { position:absolute; left:10px; top:10px; z-index:4; font-family:var(--font-mono);
  font-size:.64rem; letter-spacing:.08em; text-transform:uppercase; color:#eafff8; background:rgba(4,18,23,.6);
  padding:.24rem .55rem; border-radius:var(--r-pill); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
.pcard-body { padding:1.2rem 1.35rem 1.4rem; display:flex; flex-direction:column; flex:1; }
.pcard-body h3 { font-size:1.14rem; margin-bottom:.5rem; line-height:1.18; }
.pcard-body p { font-size:.92rem; color:var(--text-soft); margin-bottom:1rem; }
.pcard-body .pcard-link { margin-top:auto; font-family:var(--font-mono); font-weight:600; font-size:.8rem;
  letter-spacing:.03em; color:var(--brand-press); display:inline-flex; align-items:center; gap:.5em; }
html[data-theme='dark'] .pcard-body .pcard-link { color:var(--brand); }
.pcard:hover .pcard-link i { transform:translateX(4px); transition:transform var(--t-fast); }

/* --- CINEMATIC GALLERY (masonry-ish, handles portrait/landscape/video) --- */
.cine-gallery { columns: 4 260px; column-gap: 1rem; }
.cine-item { break-inside: avoid; margin: 0 0 1rem; position:relative; overflow:hidden; border-radius:var(--r-md);
  border:1px solid var(--hairline); background:var(--ink-deep); display:block; }
.cine-item img, .cine-item video { width:100%; height:auto; display:block; transition:transform 1s cubic-bezier(.2,.8,.2,1); }
.cine-item:hover img, .cine-item:hover video { transform:scale(1.06); }
.cine-item .cine-scrim { position:absolute; inset:0; background:linear-gradient(0deg,rgba(4,18,23,.5),transparent 55%);
  opacity:0; transition:opacity var(--t-base); }
.cine-item:hover .cine-scrim { opacity:1; }
.cine-item.is-video::after { content:"\f04b"; font-family:"Font Awesome 6 Free"; font-weight:900; color:#fff;
  position:absolute; top:12px; right:14px; font-size:1rem; opacity:.9; filter:drop-shadow(0 2px 8px rgba(0,0,0,.6)); z-index:2; }
@media (max-width:640px){ .cine-gallery { columns: 2 150px; column-gap:.7rem; } .cine-item { margin-bottom:.7rem; } }
/* lightbox */
.cine-lb { position:fixed; inset:0; z-index:5000; background:rgba(3,12,15,.92); display:none; place-items:center; padding:4vw; }
.cine-lb.open { display:grid; }
.cine-lb img, .cine-lb video { max-width:92vw; max-height:88vh; border-radius:var(--r-md); box-shadow:var(--shadow-3); }
.cine-lb .lb-close, .cine-lb .lb-nav { position:absolute; color:#fff; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.18);
  width:48px; height:48px; border-radius:50%; display:grid; place-items:center; cursor:pointer; font-size:1.2rem; }
.cine-lb .lb-close { top:18px; right:18px; } .cine-lb .lb-prev { left:18px; top:50%; transform:translateY(-50%); }
.cine-lb .lb-next { right:18px; top:50%; transform:translateY(-50%); }

/* --- PROJECT DETAIL media (one big, rest smaller; portrait/landscape safe) --- */
.proj-hero-media { border-radius:var(--r-lg); overflow:hidden; border:1px solid var(--hairline-2); background:var(--ink-deep);
  max-height:64vh; display:grid; place-items:center; }
.proj-hero-media img, .proj-hero-media video { width:100%; height:100%; max-height:64vh; object-fit:contain; background:#04151a; }
.proj-thumbs { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:.9rem; margin-top:1rem; }
.proj-thumb { position:relative; aspect-ratio:4/3; overflow:hidden; border-radius:var(--r-md); border:1px solid var(--hairline);
  cursor:pointer; background:var(--ink-deep); }
.proj-thumb img, .proj-thumb video { width:100%; height:100%; object-fit:cover; }
.proj-thumb.is-video::after { content:"\f04b"; font-family:"Font Awesome 6 Free"; font-weight:900; color:#fff; position:absolute;
  inset:0; display:grid; place-items:center; font-size:1.2rem; opacity:.9; }

/* --- HOME PORTFOLIO SLIDESHOW (horizontal, snap) --- */
.pf-strip { display:flex; gap:1.1rem; overflow-x:auto; scroll-snap-type:x mandatory; padding:.4rem .2rem 1.4rem;
  -webkit-overflow-scrolling:touch; scrollbar-width:thin; }
.pf-strip::-webkit-scrollbar { height:8px; } .pf-strip::-webkit-scrollbar-thumb { background:var(--hairline-2); border-radius:99px; }
.pf-slide { flex:0 0 clamp(240px, 78%, 340px); scroll-snap-align:start; }
@media (min-width:760px){ .pf-slide { flex-basis:320px; } }

.pcard{text-decoration:none;color:inherit;}

/* =====================================================================
   FIX: amber CTA legibility (both themes) + hero box overlap
   ===================================================================== */
/* "Get a quote" and every amber button: dark text, amber stays amber on hover */
.nav-cta, .cta-button.nav-cta, .btn-accent, .secondary-cta {
  color: #1A1206 !important; background: var(--accent) !important;
}
.nav-cta:hover, .cta-button.nav-cta:hover, .btn-accent:hover, .secondary-cta:hover {
  color: #1A1206 !important; background: var(--accent-press) !important;
}
.nav-cta i, .btn-accent i, .secondary-cta i { color: #1A1206 !important; }
/* WhatsApp: near-black text/icon on green for max legibility on dark */
.btn-wa, .cta-button.btn-wa { color: #06230F !important; background: #25D366 !important; }
.btn-wa i { color: #06230F !important; }
.btn-wa:hover, .cta-button.btn-wa:hover { background: #1FC15C !important; }

/* Hero: the animated toolpath box overlapped the headline — the hero video
   background now carries the visual, so retire the box on media heroes. */
.hero-fab.has-bg .hero-art { display: none; }
.hero-fab.has-bg .hero-inner { max-width: var(--maxw); }
.hero-fab.has-bg h1 { max-width: 20ch; }

/* --- project detail: readable prose sections --- */
.pd-body { max-width: 860px; }
.pd-block { margin-top: 2.2rem; }
.pd-block:first-child { margin-top: 0; }
.pd-block > p { font-size: 1.06rem; color: var(--text-soft); line-height: 1.7; max-width: 68ch; }
.pd-block .pillars { margin-top: .4rem; }
.pd-block .pillars li { font-size: 1.02rem; }
.measure-wide { max-width: 860px; }

/* =====================================================================
   TESTIMONIALS (social proof — clients, trainees/interns, defence)
   ===================================================================== */
.t-filter { display:flex; flex-wrap:wrap; gap:.55rem; margin:1.4rem 0 2rem; }
.testimonial-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:1.2rem; }
.t-card { position:relative; background:var(--panel); border:1px solid var(--hairline); border-radius:var(--r-md);
  padding:1.7rem 1.5rem 1.4rem; display:flex; flex-direction:column; gap:1rem;
  transition:transform var(--t-base), box-shadow var(--t-base), border-color var(--t-base); }
.t-card:hover { transform:translateY(-3px); box-shadow:0 16px 40px -14px rgba(0,120,105,.25); border-color:var(--hairline-2); }
.t-card::before { content:"\201C"; font-family:var(--font-display); font-weight:700; font-size:3rem; line-height:.6; color:var(--brand); opacity:.32; }
.t-quote { color:var(--text-soft); font-size:1rem; line-height:1.6; flex:1; margin:0; }
.t-person { display:flex; align-items:center; gap:.8rem; }
.t-avatar { width:44px; height:44px; border-radius:50%; background:var(--brand-soft); color:var(--brand-press);
  display:grid; place-items:center; font-family:var(--font-mono); font-weight:600; font-size:.9rem; flex:none; overflow:hidden; }
.t-avatar img { width:100%; height:100%; object-fit:cover; }
.t-name { font-weight:600; color:var(--heading); font-size:.95rem; line-height:1.2; }
.t-role { font-family:var(--font-mono); font-size:.68rem; letter-spacing:.05em; color:var(--text-mute); text-transform:uppercase; margin-top:.15rem; }
.t-tag { position:absolute; top:1.1rem; right:1.1rem; font-family:var(--font-mono); font-size:.6rem; letter-spacing:.08em;
  text-transform:uppercase; color:var(--brand-press); background:var(--brand-soft); padding:.22rem .5rem; border-radius:var(--r-pill); }
html[data-theme='dark'] .t-tag { color:#7EE6D5; }
.t-card.is-hidden { display:none; }

/* --- testimonials "passing" marquee (premium auto-scroll) --- */
.testimonial-marquee { overflow:hidden; padding:.4rem 0;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent); }
.tm-track { display:flex; gap:1.1rem; width:max-content; animation:tmMove 46s linear infinite; }
.testimonial-marquee:hover .tm-track { animation-play-state:paused; }
.tm-card { position:relative; flex:0 0 clamp(280px,80vw,360px); background:var(--panel); border:1px solid var(--hairline);
  border-radius:var(--r-md); padding:1.35rem 1.4rem; display:flex; flex-direction:column; gap:.9rem; }
.tm-quote { color:var(--text-soft); font-size:.95rem; line-height:1.55; margin:0;
  display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical; overflow:hidden; }
@keyframes tmMove { to { transform:translateX(-50%); } }
@media (prefers-reduced-motion: reduce){ .tm-track { animation:none; flex-wrap:wrap; width:auto; } }

/* --- testimonial avatar: photo slot + clear "no photo" placeholder --- */
.t-avatar.is-empty { background: var(--panel-2); border: 1.5px dashed var(--hairline-2); color: var(--text-mute); }
.t-avatar.is-empty i { font-size: 1.05rem; }
.tm-card .t-avatar, .t-card .t-avatar { width: 46px; height: 46px; }

/* --- home "in the workshop" video showcase --- */
.video-grid { display:grid; grid-template-columns:2fr 1fr; grid-auto-rows:1fr; gap:1rem; }
.v-frame { position:relative; overflow:hidden; border-radius:var(--r-md); border:1px solid var(--hairline); min-height:210px;
  background:repeating-linear-gradient(135deg,var(--panel-2) 0 14px,var(--panel-3) 14px 28px); }
.v-lead { grid-row:span 2; }
.v-frame video { width:100%; height:100%; object-fit:cover; display:block; }
.v-frame figcaption { position:absolute; left:13px; bottom:12px; z-index:3; color:#fff; font-weight:600; font-size:.95rem;
  text-shadow:0 2px 10px rgba(0,0,0,.65); }
.v-frame .v-ph { position:absolute; left:13px; top:12px; z-index:2; font-family:var(--font-mono); font-size:.64rem; color:var(--text-mute); opacity:0; }
.v-frame.v-empty .v-ph { opacity:1; }
.v-frame.v-empty video { display:none; }
@media (max-width:760px){ .video-grid { grid-template-columns:1fr; } .v-lead { grid-row:auto; } }

/* =====================================================================
   MOBILE NAV FIX — header backdrop-filter was trapping the fixed drawer
   (an element with backdrop-filter becomes the containing block for
   position:fixed children). Remove it on mobile so the drawer is
   viewport-relative, full-height and fully opaque.
   ===================================================================== */
@media (max-width: 992px) {
  header { -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
    background: var(--ink-deep) !important; }
  nav#main-nav { width: min(100%, 380px); background: var(--ink-deep); height: 100dvh; }
}
@media (max-width: 560px) { nav#main-nav { width: 100%; } }
