/* ==========================================================================
   Apex Digital Engineering Studio Co.
   Design language: warm paper ground, blueprint chrome, canvas-blue accent.
   ========================================================================== */

/* ---- 1. Tokens ---------------------------------------------------------- */
:root {
  /* Paper ground */
  --paper:        #f0efe4;
  --paper-raised: #fcfcf8;
  --paper-sunk:   #ebeae0;
  --paper-edge:   #d8d7d3;

  /* Ink */
  --ink:      #181818;
  --ink-80:   rgba(24, 24, 24, 0.80);
  --ink-60:   rgba(24, 24, 24, 0.70);
  --ink-45:   rgba(24, 24, 24, 0.64);
  --ink-30:   rgba(24, 24, 24, 0.30);
  --ink-12:   rgba(24, 24, 24, 0.12);
  --ink-08:   rgba(24, 24, 24, 0.08);
  --ink-04:   rgba(24, 24, 24, 0.04);

  /* Graphite */
  --grey-1: #797979;
  --grey-2: #959595;
  --grey-3: #c1c1c0;

  /* Canvas blue - selection / accent */
  --blue:        #458ed7;
  --blue-light:  #71aeec;
  --blue-wash:   rgba(69, 142, 215, 0.10);
  --blue-line:   rgba(69, 142, 215, 0.35);
  --grad-blue:   linear-gradient(180deg, #71aeec, #458ed7);

  /* Signals */
  --amber: #c8892f;
  --green: #4f8a5b;

  /* Type */
  --font-sans: "Schibsted Grotesk", -apple-system, BlinkMacSystemFont, "Inter", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  /* Metrics */
  --nav-h: 61px;
  --gutter: 28px;
  --maxw: 1200px;
  --r-sm: 4px;
  --r-md: 8px;
  --r-lg: 12px;
  --r-xl: 18px;

  /* Surfaces that invert against the page (dark CTA card, nav scrim) */
  --nav-bg:           rgba(240, 239, 228, .82);
  --invert-dim:       rgba(240, 239, 228, .62);
  --invert-line:      rgba(240, 239, 228, .28);
  --invert-line-hover:rgba(240, 239, 228, .55);
  --invert-grid:      rgba(255, 255, 255, .055);

  /* Paper grain */
  --grain-opacity: .42;
  --grain-blend:   multiply;

  /* Elevation */
  --shadow-card:
    0 0 0 1px var(--ink-08),
    0 1px 1px -1px rgba(0,0,0,.08),
    0 2px 4px -2px rgba(0,0,0,.08),
    0 8px 8px -4px rgba(0,0,0,.06);
  --shadow-float:
    0 0 0 1px var(--ink-08),
    0 4px 8px -4px rgba(0,0,0,.04),
    0 8px 16px -8px rgba(0,0,0,.08),
    0 16px 32px -16px rgba(0,0,0,.12);
  --shadow-btn:
    inset 0 1px 0 0 rgba(255,255,255,.14),
    inset 0 -1px 0 0 rgba(0,0,0,.12),
    0 2px 4px -1px rgba(0,0,0,.12),
    0 4px 10px 0 rgba(0,0,0,.10);
}

/* ---- 1b. Dark theme -----------------------------------------------------
   Cream stays the brand default; dark is opt-in via the nav toggle, which
   stamps data-theme on <html> and persists the choice. Only tokens change —
   no component rule is redefined below this block. */
:root[data-theme="dark"] {
  --paper:        #12120f;
  --paper-raised: #1c1c19;
  --paper-sunk:   #171714;
  --paper-edge:   #2a2a26;

  --ink:      #efefe4;
  --ink-80:   rgba(239, 239, 228, 0.80);
  --ink-60:   rgba(239, 239, 228, 0.66);
  --ink-45:   rgba(239, 239, 228, 0.60);
  --ink-30:   rgba(239, 239, 228, 0.28);
  --ink-12:   rgba(239, 239, 228, 0.15);
  --ink-08:   rgba(239, 239, 228, 0.10);
  --ink-04:   rgba(239, 239, 228, 0.06);

  --grey-1: #8a8a84;
  --grey-2: #6e6e69;
  --grey-3: #4a4a45;

  /* Lifted for contrast against a dark ground */
  --blue:       #6ba9e8;
  --blue-light: #8fc2f5;
  --blue-wash:  rgba(107, 169, 232, 0.14);
  --blue-line:  rgba(107, 169, 232, 0.40);
  --grad-blue:  linear-gradient(180deg, #8fc2f5, #6ba9e8);

  --amber: #d9a253;
  --green: #6fae7c;

  /* The CTA card inverts to cream, so these flip with it */
  --nav-bg:           rgba(18, 18, 15, .82);
  --invert-dim:       rgba(18, 18, 15, .62);
  --invert-line:      rgba(18, 18, 15, .30);
  --invert-line-hover:rgba(18, 18, 15, .55);
  --invert-grid:      rgba(0, 0, 0, .07);

  /* Grain must add light on a dark ground, not subtract it */
  --grain-opacity: .30;
  --grain-blend:   screen;

  --shadow-card:
    0 0 0 1px var(--ink-08),
    0 1px 1px -1px rgba(0,0,0,.5),
    0 2px 4px -2px rgba(0,0,0,.45),
    0 8px 8px -4px rgba(0,0,0,.35);
  --shadow-float:
    0 0 0 1px var(--ink-08),
    0 4px 8px -4px rgba(0,0,0,.35),
    0 8px 16px -8px rgba(0,0,0,.45),
    0 16px 32px -16px rgba(0,0,0,.6);
  --shadow-btn:
    inset 0 1px 0 0 rgba(255,255,255,.10),
    inset 0 -1px 0 0 rgba(0,0,0,.35),
    0 2px 4px -1px rgba(0,0,0,.4),
    0 4px 10px 0 rgba(0,0,0,.3);
}
/* .btn--dark inverts to cream in dark mode, so its hover must lighten. */
:root[data-theme="dark"] .btn--dark:hover { background: #fff; }
:root[data-theme="dark"] .btn--light:hover { background: #000; }

/* ---- 2. Reset ----------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: 18px;
  line-height: 1.5;
  letter-spacing: .18px;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; }
ul { list-style: none; padding: 0; }
::selection { background: rgba(69,142,215,.28); }
:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; border-radius: 3px; }

/* ---- 3. Paper grain ----------------------------------------------------- */
/* Fractal-noise overlay multiplied over the page, standing in for a texture bitmap. */
.grain {
  position: fixed;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  opacity: var(--grain-opacity);
  mix-blend-mode: var(--grain-blend);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.34'/%3E%3C/svg%3E");
  background-repeat: repeat;
}

/* ---- 4. Layout ---------------------------------------------------------- */
.wrap {
  width: 100%;
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: var(--gutter);
  position: relative;
  z-index: 2;
}
.section { position: relative; padding-block: 132px; }
.section--tight { padding-block: 88px; }
.rule { height: 1px; background: var(--ink-08); border: 0; margin: 0; }

/* ---- 5. Type scale ------------------------------------------------------ */
.eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-45);
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.eyebrow::before {
  content: "";
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--blue);
  box-shadow: 0 0 0 3px var(--blue-wash);
  flex: none;
}
.eyebrow--plain::before { display: none; }

.display {
  font-size: clamp(38px, 6.4vw, 68px);
  line-height: 1.02;
  letter-spacing: -.022em;
  font-weight: 400;
  text-transform: lowercase;
}
.h2 {
  font-size: clamp(30px, 4.2vw, 48px);
  line-height: 1.06;
  letter-spacing: -.02em;
  font-weight: 400;
  text-transform: lowercase;
}
.h3 {
  font-size: 21px;
  line-height: 1.24;
  letter-spacing: -.012em;
  font-weight: 500;
}
.lede {
  font-size: clamp(17px, 1.55vw, 19px);
  line-height: 1.52;
  color: var(--ink-60);
  max-width: 58ch;
}
.body-sm { font-size: 15px; line-height: 1.56; color: var(--ink-60); }
.dim { color: var(--ink-45); }

/* ---- 6. Buttons --------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  height: 44px;
  padding-inline: 20px;
  border-radius: 999px;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: .01em;
  white-space: nowrap;
  transition: transform .16s ease, box-shadow .16s ease, background-color .16s ease, color .16s ease;
}
.btn:active { transform: translateY(1px); }
.btn--dark {
  background: var(--ink);
  color: var(--paper);
  box-shadow: var(--shadow-btn);
}
.btn--dark:hover { background: #000; }
.btn--ghost {
  background: var(--paper-raised);
  color: var(--ink);
  box-shadow: 0 0 0 1px var(--ink-12), 0 1px 2px rgba(0,0,0,.05);
}
.btn--ghost:hover { box-shadow: 0 0 0 1px var(--ink-30), 0 2px 6px rgba(0,0,0,.07); }
.btn--sm { height: 36px; font-size: 14px; padding-inline: 16px; }
.btn .arrow { transition: transform .18s ease; }
.btn:hover .arrow { transform: translateX(3px); }

.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 15px;
  font-weight: 500;
  color: var(--ink);
}
.link-arrow .arrow { transition: transform .18s ease; }
.link-arrow:hover .arrow { transform: translateX(3px); }

/* ---- 7. Nav ------------------------------------------------------------- */
.nav {
  position: fixed;
  inset: 0 0 auto 0;
  height: var(--nav-h);
  z-index: 50;
  transition: background-color .18s ease, box-shadow .18s ease;
  box-shadow: 0 1px 0 0 transparent;
}
.nav[data-scrolled="true"] {
  background: var(--nav-bg);
  backdrop-filter: saturate(180%) blur(14px);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
  box-shadow: 0 1px 0 0 var(--ink-08);
}
.nav__inner {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.brand { display: flex; align-items: center; gap: 10px; }
.brand__mark {
  width: 27px; height: 27px;
  flex: none;
  border-radius: 7px;
  background: var(--ink);
  color: var(--paper);
  display: grid;
  place-items: center;
}
.brand__mark svg { width: 15px; height: 15px; }
.brand__name {
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -.022em;
  line-height: 1.1;
}
.brand__sub {
  font-family: var(--font-mono);
  font-size: 9px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-45);
  line-height: 1.2;
  margin-top: 1px;
}
.nav__links { display: flex; align-items: center; gap: 26px; }
.nav__links a {
  font-size: 15px;
  color: var(--ink-60);
  transition: color .15s ease;
}
.nav__links a:hover { color: var(--ink); }
.nav__cta { display: flex; align-items: center; gap: 14px; }

.nav__burger { display: none; width: 40px; height: 40px; margin-right: -8px; place-items: center; }
.nav__burger span {
  display: block; width: 17px; height: 1.5px; background: var(--ink);
  transition: transform .2s ease, opacity .2s ease;
}
.nav__burger span + span { margin-top: 4px; }
body[data-menu="open"] .nav__burger span:nth-child(1) { transform: translateY(5.5px) rotate(45deg); }
body[data-menu="open"] .nav__burger span:nth-child(2) { opacity: 0; }
body[data-menu="open"] .nav__burger span:nth-child(3) { transform: translateY(-5.5px) rotate(-45deg); }

.mobile-menu {
  position: fixed;
  inset: var(--nav-h) 0 auto 0;
  z-index: 49;
  background: var(--paper);
  box-shadow: 0 1px 0 var(--ink-08), 0 20px 40px -24px rgba(0,0,0,.2);
  padding: 10px var(--gutter) 26px;
  display: none;
  flex-direction: column;
}
body[data-menu="open"] .mobile-menu { display: flex; }
.mobile-menu a {
  padding: 15px 0;
  font-size: 19px;
  border-bottom: 1px solid var(--ink-08);
}
.mobile-menu .btn { margin-top: 20px; justify-content: center; }

/* ---- 8. Blueprint canvas ------------------------------------------------ */
/* Recurring artboard motif: ruled edges, 1px grid, floating layer cards. */
.canvas {
  position: relative;
  border-radius: var(--r-lg);
  background: var(--paper-raised);
  box-shadow: var(--shadow-float);
  overflow: hidden;
  isolation: isolate;
}
.canvas__rulers {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 3;
}
.canvas__rulers::before,
.canvas__rulers::after {
  content: "";
  position: absolute;
  background-color: var(--paper-sunk);
  box-shadow: inset 0 0 0 1px var(--ink-08);
}
.canvas__rulers::before {
  inset: 0 0 auto 0;
  height: 22px;
  background-image:
    repeating-linear-gradient(90deg, var(--ink-30) 0 1px, transparent 1px 8px),
    repeating-linear-gradient(90deg, var(--ink-45) 0 1px, transparent 1px 40px);
  background-position: 0 12px, 0 5px;
  background-size: 100% 9px, 100% 16px;
  background-repeat: repeat-x;
}
.canvas__rulers::after {
  inset: 22px auto 0 0;
  width: 22px;
  background-image:
    repeating-linear-gradient(180deg, var(--ink-30) 0 1px, transparent 1px 8px),
    repeating-linear-gradient(180deg, var(--ink-45) 0 1px, transparent 1px 40px);
  background-position: 12px 0, 5px 0;
  background-size: 9px 100%, 16px 100%;
  background-repeat: repeat-y;
}
.canvas__grid {
  position: absolute;
  inset: 22px 0 0 22px;
  background-color: var(--paper-raised);
  background-image:
    linear-gradient(90deg, var(--ink-04) 1px, transparent 1px),
    linear-gradient(180deg, var(--ink-04) 1px, transparent 1px),
    linear-gradient(90deg, var(--ink-08) 1px, transparent 1px),
    linear-gradient(180deg, var(--ink-08) 1px, transparent 1px);
  background-size: 20px 20px, 20px 20px, 100px 100px, 100px 100px;
}
.canvas__stage {
  position: relative;
  z-index: 2;
  padding: 46px 30px 30px 52px;
}
.canvas__foot {
  position: relative;
  z-index: 2;
  margin: 0 22px 22px 52px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding: 11px 14px;
  border-radius: var(--r-md);
  background: var(--paper);
  box-shadow: inset 0 0 0 1px var(--ink-08);
}

/* Layer card - a model file sitting on the canvas */
.layer {
  position: relative;
  background: var(--paper-raised);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
  padding: 13px 15px;
  transition: transform .22s cubic-bezier(.2,.7,.3,1), box-shadow .22s ease;
}
.layer__top { display: flex; align-items: center; gap: 9px; }
.layer__tag {
  font-family: var(--font-mono);
  font-size: 9.5px;
  font-weight: 500;
  letter-spacing: .08em;
  padding: 3px 6px;
  border-radius: var(--r-sm);
  background: var(--ink);
  color: var(--paper);
  line-height: 1;
  flex: none;
}
.layer__tag--blue { background: var(--blue); color: #fff; }
.layer__tag--soft { background: var(--ink-08); color: var(--ink-60); }
.layer__name { font-size: 14px; font-weight: 500; letter-spacing: -.008em; }
/* Sheet thumbnail — a scrap of the discipline's drawing */
.layer__preview {
  margin-top: 12px;
  border-radius: var(--r-sm);
  background: var(--paper-sunk);
  box-shadow: inset 0 0 0 1px var(--ink-08);
  aspect-ratio: 16 / 10;
  overflow: hidden;
  display: grid;
  place-items: stretch;
}
.layer__preview svg { width: 100%; height: 100%; color: var(--ink-30); }
.layer--selected .layer__preview {
  background: var(--blue-wash);
  box-shadow: inset 0 0 0 1px rgba(69,142,215,.20);
}
.layer--selected .layer__preview svg { color: var(--blue); opacity: .75; }
.layer__meta {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--ink-45);
  margin-top: 7px;
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
/* selection marquee + corner handles */
.layer--selected { box-shadow: 0 0 0 1.5px var(--blue), var(--shadow-float); }
.layer--selected .handle {
  position: absolute;
  width: 7px; height: 7px;
  background: #fff;
  border: 1.5px solid var(--blue);
  border-radius: 1.5px;
}
.handle--tl { top: -4px; left: -4px; }
.handle--tr { top: -4px; right: -4px; }
.handle--bl { bottom: -4px; left: -4px; }
.handle--br { bottom: -4px; right: -4px; }
.layer__label {
  position: absolute;
  top: -21px; left: -1px;
  font-family: var(--font-mono);
  font-size: 9px;
  letter-spacing: .06em;
  background: var(--blue);
  color: #fff;
  padding: 2px 5px;
  border-radius: 3px;
  white-space: nowrap;
}

/* ---- 9. Hero ------------------------------------------------------------ */
.hero { position: relative; padding-top: calc(var(--nav-h) + 84px); padding-bottom: 96px; }
.hero__grid {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image:
    linear-gradient(90deg, var(--ink-04) 1px, transparent 1px),
    linear-gradient(180deg, var(--ink-04) 1px, transparent 1px);
  background-size: 100px 100px;
  -webkit-mask-image: radial-gradient(120% 76% at 50% 6%, #000 0%, transparent 72%);
          mask-image: radial-gradient(120% 76% at 50% 6%, #000 0%, transparent 72%);
}
.hero__head { max-width: 840px; }
.hero .display { margin-top: 22px; }
.hero .display .sub {
  display: block;
  color: var(--ink-45);
  font-size: .60em;
  line-height: 1.14;
  letter-spacing: -.016em;
}
.hero .display .sub:first-of-type { margin-top: .22em; }
/* Acronyms keep their case inside otherwise-lowercase headings. */
.caps { text-transform: none; }
.hero__lede { margin-top: 26px; }
.hero__actions {
  margin-top: 34px;
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.hero__canvas { margin-top: 64px; }

.stack {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  align-items: start;
}
.stack .layer[data-offset="1"] { transform: translateY(12px); }
.stack .layer[data-offset="2"] { transform: translateY(2px); }
.stack .layer[data-offset="3"] { transform: translateY(18px); }
.stack .layer:hover { transform: translateY(-3px); box-shadow: var(--shadow-float); }
.stack .layer--selected:hover { box-shadow: 0 0 0 1.5px var(--blue), var(--shadow-float); }

.chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .05em;
  color: var(--ink-60);
}
.chip__dot { width: 6px; height: 6px; border-radius: 50%; background: var(--grey-3); flex: none; }
.chip__dot--green { background: var(--green); }
.chip__dot--blue  { background: var(--blue); }
.chip__dot--amber { background: var(--amber); }

/* ---- 10. Sector marquee ------------------------------------------------- */
.sectors { padding-block: 54px; }
.sectors__label { text-align: center; color: var(--ink-45); font-size: 14px; }
.marquee {
  margin-top: 26px;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
.marquee__track {
  display: flex;
  width: max-content;
  gap: 54px;
  animation: slide 42s linear infinite;
}
.marquee:hover .marquee__track { animation-play-state: paused; }
@keyframes slide { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.marquee__item {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 17px;
  font-weight: 500;
  letter-spacing: -.012em;
  color: var(--ink-45);
  white-space: nowrap;
}
.marquee__item svg { width: 16px; height: 16px; flex: none; opacity: .5; }

/* ---- 11. Feature blocks ------------------------------------------------- */
.block__head { max-width: 740px; }
.block__head .h2 { margin-top: 18px; }
.block__head .lede { margin-top: 22px; }
.block__body { margin-top: 52px; }

.split {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  margin-top: 20px;
}
.pane {
  background: var(--paper-raised);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  padding: 26px 26px 28px;
}
.pane .body-sm { margin-top: 10px; }

/* Discipline cards */
.disciplines {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}
.disc {
  position: relative;
  background: var(--paper-raised);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  padding: 24px 22px 26px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: transform .22s cubic-bezier(.2,.7,.3,1), box-shadow .22s ease;
}
.disc::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 2px;
  background: var(--grad-blue);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s cubic-bezier(.2,.7,.3,1);
}
.disc:hover { transform: translateY(-3px); box-shadow: var(--shadow-float); }
.disc:hover::after { transform: scaleX(1); }
.disc__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.disc__code {
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .1em;
  color: var(--ink-45);
  padding-top: 4px;
}
.disc__icon {
  width: 38px; height: 38px;
  border-radius: var(--r-md);
  background: var(--paper-sunk);
  box-shadow: inset 0 0 0 1px var(--ink-08);
  display: grid;
  place-items: center;
  flex: none;
}
.disc__icon svg { width: 19px; height: 19px; color: var(--ink-80); }
.disc .h3 { margin-top: 20px; }
.disc .body-sm { margin-top: 10px; }
.disc__list { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--ink-08); }
.disc__list li {
  display: flex;
  gap: 9px;
  font-size: 13.5px;
  line-height: 1.45;
  color: var(--ink-60);
  padding-block: 5px;
}
.disc__list li::before {
  content: "";
  width: 4px; height: 4px;
  margin-top: 7px;
  border-radius: 50%;
  background: var(--blue);
  flex: none;
}

/* ---- 12. Clash matrix + issues ------------------------------------------ */
.matrix {
  display: grid;
  grid-template-columns: 84px repeat(4, minmax(0, 1fr));
  gap: 6px;
  font-family: var(--font-mono);
  font-size: 10.5px;
}
.matrix__h {
  color: var(--ink-45);
  letter-spacing: .07em;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  padding: 6px 2px;
}
.matrix__c {
  aspect-ratio: 1 / .56;
  border-radius: var(--r-sm);
  display: grid;
  place-items: center;
  background: var(--paper-sunk);
  box-shadow: inset 0 0 0 1px var(--ink-08);
  color: var(--ink-45);
  font-weight: 500;
}
.matrix__c--ok    { background: rgba(79,138,91,.10);  color: var(--green); box-shadow: inset 0 0 0 1px rgba(79,138,91,.22); }
.matrix__c--open  { background: rgba(200,137,47,.12); color: var(--amber); box-shadow: inset 0 0 0 1px rgba(200,137,47,.25); }
.matrix__c--self  { background: transparent; box-shadow: none; color: var(--ink-30); }
.matrix__key { margin-top: 16px; display: flex; gap: 18px; flex-wrap: wrap; }

.issues { display: flex; flex-direction: column; gap: 8px; }
.issue {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 13px;
  border-radius: var(--r-md);
  background: var(--paper);
  box-shadow: inset 0 0 0 1px var(--ink-08);
}
.issue__id { font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-45); flex: none; }
.issue__txt { font-size: 13.5px; flex: 1 1 auto; min-width: 0; }
.issue__state {
  font-family: var(--font-mono);
  font-size: 9px;
  letter-spacing: .06em;
  text-transform: uppercase;
  padding: 3px 7px;
  border-radius: 999px;
  flex: none;
}
.issue__state--closed { background: rgba(79,138,91,.12);  color: var(--green); }
.issue__state--review { background: rgba(69,142,215,.12); color: var(--blue); }
.issue__state--open   { background: rgba(200,137,47,.14); color: var(--amber); }

/* ---- 13. CDE tree ------------------------------------------------------- */
.tree { font-family: var(--font-mono); font-size: 12px; line-height: 1.95; }
.tree li { color: var(--ink-60); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tree .state { color: var(--ink-30); }
.tree .lvl-1 { padding-left: 15px; }
.tree .lvl-2 { padding-left: 30px; }
.tree .folder { color: var(--ink); }
.tree .folder::before { content: "\25B8  "; color: var(--ink-30); }
.tree .file::before { content: "\00B7  "; color: var(--ink-30); }

/* ---- 14. Process -------------------------------------------------------- */
.steps {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin-top: 52px;
  border-top: 1px solid var(--ink-12);
}
.step {
  padding: 26px 22px 30px 0;
  border-right: 1px solid var(--ink-08);
  position: relative;
}
.step:last-child { border-right: 0; }
.step::before {
  content: "";
  position: absolute;
  top: -1px; left: 0;
  width: 26px; height: 2px;
  background: var(--ink);
}
.step__n {
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .1em;
  color: var(--ink-45);
}
.step__t { margin-top: 14px; font-size: 17px; font-weight: 500; letter-spacing: -.014em; }
.step__d { margin-top: 8px; font-size: 13.5px; line-height: 1.5; color: var(--ink-60); }

/* ---- 15. Stats ---------------------------------------------------------- */
.stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  background: var(--ink-08);
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: 0 0 0 1px var(--ink-08);
}
.stat { background: var(--paper-raised); padding: 30px 26px 32px; }
.stat__v {
  font-size: clamp(28px, 3.4vw, 38px);
  line-height: 1.05;
  letter-spacing: -.03em;
  font-weight: 400;
}
.stat__l { margin-top: 12px; font-size: 13.5px; color: var(--ink-60); }

/* ---- 16. Tools ---------------------------------------------------------- */
.tools { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 26px; }
.tool {
  font-family: var(--font-mono);
  font-size: 11.5px;
  letter-spacing: .03em;
  padding: 7px 12px;
  border-radius: 999px;
  background: var(--paper-raised);
  color: var(--ink-60);
  box-shadow: 0 0 0 1px var(--ink-08);
}

/* ---- 17. CTA ------------------------------------------------------------ */
.cta__card {
  position: relative;
  overflow: hidden;
  border-radius: var(--r-xl);
  background: var(--ink);
  color: var(--paper);
  padding: clamp(44px, 6vw, 80px) clamp(28px, 5vw, 68px);
  box-shadow: var(--shadow-float);
}
.cta__card::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(90deg, var(--invert-grid) 1px, transparent 1px),
    linear-gradient(180deg, var(--invert-grid) 1px, transparent 1px);
  background-size: 40px 40px;
  -webkit-mask-image: radial-gradient(85% 130% at 90% 6%, #000, transparent 70%);
          mask-image: radial-gradient(85% 130% at 90% 6%, #000, transparent 70%);
}
.cta__inner { position: relative; }
.cta__card .eyebrow { color: var(--invert-dim); }
.cta__card .h2 { margin-top: 18px; }
.cta__card .lede { color: var(--invert-dim); margin-top: 20px; }
.cta__actions { margin-top: 34px; display: flex; gap: 12px; flex-wrap: wrap; }
.btn--light { background: var(--paper); color: var(--ink); box-shadow: var(--shadow-btn); }
.btn--light:hover { background: #fff; }
.btn--outline { color: var(--paper); box-shadow: inset 0 0 0 1px var(--invert-line); }
.btn--outline:hover { box-shadow: inset 0 0 0 1px var(--invert-line-hover); }

/* ---- 18. Footer --------------------------------------------------------- */
.footer { padding-block: 66px 42px; }
.footer__grid {
  display: grid;
  grid-template-columns: 2.1fr repeat(3, 1fr);
  gap: 40px;
}
.footer__col h4 {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-45);
  font-weight: 500;
  margin-bottom: 14px;
}
.footer__col li { padding-block: 5px; }
.footer__col a { font-size: 15px; color: var(--ink-60); transition: color .15s ease; }
.footer__col a:hover { color: var(--ink); }
.footer__about { max-width: 36ch; margin-top: 16px; font-size: 14px; line-height: 1.55; color: var(--ink-60); }
.footer__base {
  margin-top: 50px;
  padding-top: 22px;
  border-top: 1px solid var(--ink-08);
  display: flex;
  justify-content: space-between;
  gap: 18px;
  flex-wrap: wrap;
  font-size: 13px;
  color: var(--ink-45);
}

/* ---- 18b. Featured project cards ---------------------------------------- */
.projects {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}
.pcard {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--paper-raised);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  padding: 22px 22px 24px;
  overflow: hidden;
  transition: transform .22s cubic-bezier(.2,.7,.3,1), box-shadow .22s ease;
}
.pcard::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 2px;
  background: var(--grad-blue);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s cubic-bezier(.2,.7,.3,1);
}
.pcard:hover { transform: translateY(-3px); box-shadow: var(--shadow-float); }
.pcard:hover::after { transform: scaleX(1); }
.pcard__code {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .1em;
  color: var(--ink-45);
}
.pcard__name {
  margin-top: 14px;
  font-size: 19px;
  font-weight: 500;
  letter-spacing: -.018em;
  line-height: 1.18;
}
.pcard__loc {
  margin-top: 7px;
  font-family: var(--font-mono);
  font-size: 10.5px;
  letter-spacing: .04em;
  color: var(--ink-45);
}
.pcard__client {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--ink-08);
  font-size: 13.5px;
  color: var(--ink-60);
}
.pcard__client b { font-weight: 500; color: var(--ink); }
.pcard__tags { margin-top: 14px; display: flex; flex-wrap: wrap; gap: 6px; }
.ptag {
  font-family: var(--font-mono);
  font-size: 9.5px;
  letter-spacing: .05em;
  padding: 4px 7px;
  border-radius: 999px;
  background: var(--paper-sunk);
  color: var(--ink-60);
  box-shadow: inset 0 0 0 1px var(--ink-08);
  white-space: nowrap;
}
.ptag--blue { background: var(--blue-wash); color: var(--blue); box-shadow: inset 0 0 0 1px rgba(69,142,215,.2); }

/* ---- 18c. Project register ---------------------------------------------- */
/* Reads like a drawing register: ruled rows, monospaced metadata. */
.register { margin-top: 44px; border-top: 1px solid var(--ink-12); }
.register__row {
  display: grid;
  grid-template-columns: 2fr 1.15fr 1.6fr 58px;
  gap: 22px;
  align-items: baseline;
  padding: 15px 10px 15px 0;
  border-bottom: 1px solid var(--ink-08);
  transition: background-color .15s ease;
}
.register__row:hover { background: var(--ink-04); }
.register__row--head {
  padding-block: 10px;
  border-bottom: 1px solid var(--ink-12);
}
.register__row--head span {
  font-family: var(--font-mono);
  font-size: 9.5px;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: var(--ink-45);
}
.register__name { font-size: 15.5px; font-weight: 500; letter-spacing: -.012em; }
.register__loc {
  display: block;
  margin-top: 4px;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .04em;
  color: var(--ink-45);
  text-transform: uppercase;
}
.register__client { font-size: 13.5px; color: var(--ink-60); }
.register__scope { font-size: 13.5px; color: var(--ink-60); }
.register__year {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--ink-45);
  text-align: right;
}
.register__label {
  display: none;
  font-family: var(--font-mono);
  font-size: 9px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-30);
  margin-bottom: 3px;
}
.register__note {
  margin-top: 22px;
  font-size: 13px;
  line-height: 1.55;
  color: var(--ink-45);
  max-width: 74ch;
}
.ref { color: var(--blue); font-size: .85em; vertical-align: super; line-height: 0; }

/* ---- 18d. Client strip --------------------------------------------------- */
.clients__item {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 17px;
  font-weight: 500;
  letter-spacing: -.016em;
  color: var(--ink-45);
  white-space: nowrap;
}
.clients__item span.reg {
  font-family: var(--font-mono);
  font-size: 9.5px;
  letter-spacing: .06em;
  color: var(--ink-30);
  padding: 3px 6px;
  border-radius: 3px;
  box-shadow: inset 0 0 0 1px var(--ink-08);
}

/* ---- 18e. Theme toggle --------------------------------------------------- */
.theme-toggle {
  width: 36px; height: 36px;
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 999px;
  color: var(--ink-60);
  background: var(--paper-raised);
  box-shadow: 0 0 0 1px var(--ink-12);
  transition: color .16s ease, box-shadow .16s ease, background-color .16s ease;
}
.theme-toggle:hover { color: var(--ink); box-shadow: 0 0 0 1px var(--ink-30); }
.theme-toggle svg { width: 16px; height: 16px; }
/* Show the icon for the theme you would switch TO. */
.theme-toggle .icon-moon { display: block; }
.theme-toggle .icon-sun  { display: none; }
:root[data-theme="dark"] .theme-toggle .icon-moon { display: none; }
:root[data-theme="dark"] .theme-toggle .icon-sun  { display: block; }

/* ---- 18f. About ---------------------------------------------------------- */
.about {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: 20px;
  margin-top: 52px;
}
.about__facts { display: flex; flex-direction: column; gap: 1px; background: var(--ink-08); border-radius: var(--r-lg); overflow: hidden; box-shadow: 0 0 0 1px var(--ink-08); }
.fact {
  background: var(--paper-raised);
  padding: 16px 22px;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 18px;
}
.fact__k {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-45);
  flex: none;
}
.fact__v { font-size: 14.5px; text-align: right; }

/* ---- 18g. Client types --------------------------------------------------- */
.ctypes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
.ctype {
  background: var(--paper-raised);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  padding: 26px 26px 28px;
  display: flex;
  flex-direction: column;
}
.ctype__top { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.ctype__region {
  font-family: var(--font-mono);
  font-size: 9.5px;
  letter-spacing: .08em;
  padding: 4px 8px;
  border-radius: 999px;
  background: var(--blue-wash);
  color: var(--blue);
  white-space: nowrap;
}
.ctype .h3 { letter-spacing: -.016em; }
.ctype .body-sm { margin-top: 12px; }

/* Six-up service grid for the consultancy block */
.disciplines--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* ---- 18h. Process ring --------------------------------------------------- */
/* Labels overhang the circle, so the ring stays small enough that the whole
   assembly clears its column; below 900px it becomes a plain numbered list. */
.ring { position: relative; width: 100%; max-width: 360px; margin-inline: auto; aspect-ratio: 1; }
.ring__svg { position: absolute; inset: 0; }
.ring__svg circle.track { fill: none; stroke: var(--ink-12); stroke-width: 1; }
.ring__svg circle.arc { fill: none; stroke: var(--blue); stroke-width: 1.5; stroke-linecap: round; }
.ring__logo {
  position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  width: 54px; height: 54px; color: var(--ink); opacity: .82;
}
.ring__node {
  position: absolute;
  width: 12px; height: 12px;
  border-radius: 50%;
  background: var(--paper-raised);
  box-shadow: 0 0 0 1.5px var(--blue), 0 0 0 4px var(--blue-wash);
  transform: translate(-50%, -50%);
}
.ring__label { position: absolute; transform: translate(-50%, -50%); width: 150px; }
.ring__n { font-family: var(--font-mono); font-size: 12px; font-weight: 500; color: var(--blue); letter-spacing: .06em; }
.ring__t { margin-top: 4px; font-size: 13px; font-weight: 500; line-height: 1.4; color: var(--ink-60); }
.ring__label--l, .ring__label--l .ring__n, .ring__label--l .ring__t { text-align: right; }

/* ---- 18i. Technology tiles ---------------------------------------------- */
.tgrid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.tcard {
  display: flex; align-items: center; gap: 13px;
  padding: 17px 18px;
  border-radius: var(--r-md);
  background: var(--paper-raised);
  box-shadow: var(--shadow-card);
  transition: transform .2s cubic-bezier(.2,.7,.3,1), box-shadow .2s ease;
}
.tcard:hover { transform: translateY(-2px); box-shadow: var(--shadow-float); }
.tcard__i {
  width: 32px; height: 32px; flex: none;
  border-radius: var(--r-sm);
  display: grid; place-items: center;
  background: var(--blue-wash); color: var(--blue);
  font-family: var(--font-mono); font-size: 12px; font-weight: 500;
}
.tcard__t { font-size: 13.5px; font-weight: 500; letter-spacing: -.008em; line-height: 1.3; }
.tcard__s { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-45); margin-top: 3px; }

/* ---- 18j. Careers -------------------------------------------------------- */
.careers { display: grid; grid-template-columns: .9fr 1.1fr; gap: 52px; align-items: start; margin-top: 52px; }
.perks { margin-top: 28px; display: flex; flex-direction: column; gap: 16px; }
.perk { display: flex; gap: 13px; align-items: flex-start; font-size: 14px; line-height: 1.55; color: var(--ink-60); }
.perk svg { width: 17px; height: 17px; color: var(--blue); flex: none; margin-top: 3px; }
.perk b { color: var(--ink); font-weight: 500; }

.roles { border-top: 1px solid var(--ink-12); }
.role {
  display: grid; grid-template-columns: 1fr auto; gap: 22px; align-items: center;
  padding: 19px 10px 19px 0;
  border-bottom: 1px solid var(--ink-08);
  transition: background-color .16s ease, padding-left .16s ease;
}
.role:hover { background: var(--ink-04); padding-left: 10px; }
.role__t { font-size: 15.5px; font-weight: 500; letter-spacing: -.012em; }
.role__m { margin-top: 8px; display: flex; gap: 6px; flex-wrap: wrap; }
.rtag {
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: .07em; text-transform: uppercase;
  color: var(--ink-45); padding: 4px 8px; border-radius: 999px;
  box-shadow: inset 0 0 0 1px var(--ink-08); white-space: nowrap;
}
.rtag--blue { color: var(--blue); background: var(--blue-wash); box-shadow: inset 0 0 0 1px rgba(69,142,215,.22); }
.role__a { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 500; color: var(--ink); white-space: nowrap; }
.role__a svg { width: 14px; height: 14px; transition: transform .18s ease; }
.role:hover .role__a svg { transform: translateX(4px); }
.careers__note {
  margin-top: 24px; padding: 20px 22px;
  border-radius: var(--r-md);
  background: var(--paper-raised);
  box-shadow: var(--shadow-card);
  font-size: 14px; line-height: 1.6; color: var(--ink-60);
}
.careers__note a { color: var(--blue); font-weight: 500; }
.careers__note a:hover { text-decoration: underline; }

/* ---- 18k. Contact form + map --------------------------------------------- */
.contact2 { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; margin-top: 52px; }
.form { display: flex; flex-direction: column; gap: 11px; }
.form input, .form textarea {
  width: 100%;
  background: var(--paper-raised);
  border: 0;
  box-shadow: inset 0 0 0 1px var(--ink-12);
  border-radius: var(--r-md);
  padding: 13px 15px;
  font-size: 15px;
  font-family: inherit;
  color: var(--ink);
  transition: box-shadow .16s ease;
}
.form input::placeholder, .form textarea::placeholder { color: var(--ink-45); }
.form input:focus, .form textarea:focus { outline: none; box-shadow: inset 0 0 0 1.5px var(--blue); }
.form textarea { resize: vertical; min-height: 118px; }
.form .btn { margin-top: 4px; align-self: flex-start; }
.form__note { font-size: 12.5px; color: var(--ink-45); line-height: 1.5; }

.cinfo { display: flex; flex-direction: column; gap: 20px; margin-top: 26px; }
.cline { display: flex; gap: 13px; align-items: flex-start; }
.cline svg { width: 17px; height: 17px; color: var(--blue); flex: none; margin-top: 3px; }
.cline__t { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-45); }
.cline__v { margin-top: 4px; font-size: 14.5px; line-height: 1.5; }
.cline__v a:hover { color: var(--blue); }

.map { margin-top: 32px; position: relative; }
.map svg { width: 100%; height: auto; color: var(--ink-30); }
.pin { position: absolute; width: 9px; height: 9px; border-radius: 50%; background: var(--blue); transform: translate(-50%, -50%); box-shadow: 0 0 0 4px var(--blue-wash); }
.pin::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 1px solid var(--blue); animation: ping 2.6s cubic-bezier(0,0,.2,1) infinite; }
@keyframes ping { 0% { transform: scale(.7); opacity: .8; } 80%, 100% { transform: scale(2.4); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .pin::after { animation: none; opacity: 0; } }

/* ---- 18l. Stage list (process pane) -------------------------------------- */
.stagelist { margin-top: 18px; }
.stagelist li {
  display: grid;
  grid-template-columns: 34px 1fr;
  gap: 14px;
  padding: 13px 0;
  border-top: 1px solid var(--ink-08);
}
.stagelist li:first-child { border-top: 0; padding-top: 4px; }
.stagelist li:last-child { padding-bottom: 0; }
.stagelist__n {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .06em;
  color: var(--blue);
  padding-top: 2px;
}
.stagelist__t { font-size: 14.5px; font-weight: 500; letter-spacing: -.01em; }
.stagelist__d { margin-top: 4px; font-size: 13px; line-height: 1.5; color: var(--ink-60); }

/* ---- 18m. Register expander ---------------------------------------------- */
/* Rows past the tenth stay collapsed until asked for, so the register reads
   short by default without dropping any of the track record. */
.js .register:not(.is-open) .register__row[data-extra] { display: none; }
.register__more {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: 20px;
  padding: 10px 18px 10px 16px;
  border-radius: 999px;
  background: var(--paper-raised);
  box-shadow: 0 0 0 1px var(--ink-12);
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
  transition: box-shadow .16s ease, background-color .16s ease;
}
.register__more:hover { box-shadow: 0 0 0 1px var(--ink-30); }
.register__more svg { width: 15px; height: 15px; transition: transform .22s ease; }
.register.is-open .register__more svg { transform: rotate(180deg); }
/* Without JS every row is visible, so the button would be a lie. */
.register__more { display: none; }
.js .register__more { display: inline-flex; }

/* ---- 19. Reveal --------------------------------------------------------- */
/* Hidden only when JS is present to reveal them again. */
.js [data-reveal] {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .62s cubic-bezier(.2,.7,.3,1), transform .62s cubic-bezier(.2,.7,.3,1);
}
.js [data-reveal].is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .js [data-reveal] { opacity: 1; transform: none; }
}

/* ---- 20. Responsive ----------------------------------------------------- */
@media (max-width: 1080px) {
  .disciplines, .projects { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .careers, .contact2 { grid-template-columns: 1fr; gap: 40px; }
  .ring { max-width: 300px; }
  .disciplines--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .about { grid-template-columns: 1fr; }
  /* Two-up cells, each labelled, so no column is dropped. */
  .register__row { grid-template-columns: 1.35fr 1fr; gap: 14px 24px; padding-block: 18px; }
  .register__row--head { display: none; }
  .register__label { display: block; }
  .register__year { text-align: left; }
  .steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .step:nth-child(3) { border-right: 0; }
  .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .footer__grid { grid-template-columns: repeat(3, 1fr); }
  .footer__col--brand { grid-column: 1 / -1; }
}
/* The ring plus its overhanging labels needs ~1210px before it can share a
   row with the text column; below that it takes the full width. */
@media (max-width: 1220px) {
  .split--ring { grid-template-columns: 1fr; gap: 36px; }
}
/* Ring cannot fit its labels below this; same markup becomes a list. */
@media (max-width: 900px) {
  .ring { max-width: 100%; aspect-ratio: auto; }
  .ring__svg, .ring__logo, .ring__node { display: none; }
  .ring__label, .ring__label--l { position: static; transform: none; width: 100%; text-align: left; }
  .ring__label--l .ring__n, .ring__label--l .ring__t { text-align: left; }
  .ring__label { display: flex; align-items: baseline; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--ink-08); }
  .ring__label .ring__t { margin-top: 0; }
  .ring__t br { display: none; }
}
@media (max-width: 880px) {
  .nav__links, .nav__cta .btn { display: none; }
  .nav__burger { display: grid; }
  .nav { background: var(--nav-bg); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
  .section { padding-block: 92px; }
  .stack { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 14px; }
  .stack .layer[data-offset] { transform: none; }
  .split { grid-template-columns: 1fr; }
  .canvas__stage { padding: 44px 20px 24px 40px; }
  .canvas__foot { margin: 0 20px 20px 40px; }
}
@media (max-width: 620px) {
  :root { --gutter: 20px; }
  .disciplines, .projects, .disciplines--3, .ctypes { grid-template-columns: 1fr; }
  .tgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .role { grid-template-columns: 1fr; gap: 13px; }
  .role__a { justify-self: start; }
  /* Stacked, but tightened — the project name needs no label. */
  .register__row { grid-template-columns: 1fr; gap: 9px; padding-block: 16px; }
  .register__row > div:first-child .register__label { display: none; }
  .steps { grid-template-columns: 1fr; }
  .step { border-right: 0; border-bottom: 1px solid var(--ink-08); padding-right: 0; }
  .stats { grid-template-columns: 1fr; }
  .footer__grid { grid-template-columns: repeat(2, 1fr); }
  .matrix { grid-template-columns: 62px repeat(4, minmax(0, 1fr)); font-size: 9px; }
  .hero { padding-top: calc(var(--nav-h) + 52px); }
  .hero__actions .btn { flex: 1 1 auto; justify-content: center; }
  .stack { grid-template-columns: 1fr; }
}
