/* =============================================================
   BAWE — page-specific
   Home hero, page headers, and per-page layout blocks.
   Load fourth, before utilities.
   ============================================================= */

/* =========================================================
   Home — hero
   Full-bleed photo on ink, content stacked bottom-left,
   marquee strip riding above it. (Cover of the profile.)
   ========================================================= */

.hero {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: calc(100svh - var(--nav-h));
  background: var(--bawe-ink-900);
  color: var(--on-dark-body);
  isolation: isolate;
  overflow: hidden;
}

.hero__media {
  position: absolute;
  inset: 0;
  z-index: -2;
}
.hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 35%;
}
.hero__media::after {
  content: "";
  position: absolute;
  inset: 0;
  /* Two gradients used to stack to ~1.5 opacity over the left side.
     Now they only darken where type actually sits. */
  background:
    linear-gradient(180deg, rgba(2, 8, 26, 0.42) 0%, rgba(2, 8, 26, 0.06) 42%, rgba(2, 8, 26, 0.88) 100%),
    linear-gradient(90deg, rgba(2, 8, 26, 0.55) 0%, rgba(2, 8, 26, 0) 62%);
}

.hero__body {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  flex: 1 1 auto;
  padding-block: var(--space-16) var(--space-12);
}

.hero__eyebrow {
  display: block;
  color: var(--bawe-blue-400);
  margin-bottom: var(--space-6);
}

.hero__title {
  max-width: 16ch;
  color: #fff;
}
.hero__title .accent { color: var(--bawe-blue-500); }

.hero__sub {
  max-width: 52ch;
  margin-top: var(--space-6);
  font-size: clamp(1.0625rem, 1.6vw, 1.25rem);
  line-height: 1.55;
  color: var(--on-dark-body);
}

.hero__actions { margin-top: var(--space-8); }

.hero__disciplines {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
  margin-top: var(--space-12);
  padding-top: var(--space-6);
  border-top: 1px solid var(--on-dark-rule);
}
.hero__disciplines li {
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--on-dark-mute);
}
.hero__disciplines li + li::before {
  content: "·";
  margin-right: var(--space-4);
  color: var(--bawe-blue-400);
}

/* =========================================================
   Home — positioning (the director's note, page 4)
   ========================================================= */

.positioning {
  display: grid;
  gap: var(--space-12);
}
@media (min-width: 1024px) {
  .positioning {
    grid-template-columns: 0.85fr 1fr;
    gap: var(--space-24);
    align-items: start;
  }
}

.positioning__prose { display: grid; gap: var(--space-6); }
.positioning__prose p {
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--bawe-ink-800);
}

/* Drop cap — the profile opens its director's note with one. */
.dropcap::first-letter {
  float: left;
  margin: 0.06em var(--space-3) 0 0;
  font-division: var(--font-display);
  font-weight: 900;
  font-size: 3.4em;
  line-height: 0.78;
  color: var(--bawe-blue-600);
}

.signature {
  margin-top: var(--space-4);
  padding-top: var(--space-6);
  border-top: 1px solid var(--bawe-steel-200);
}
.signature__name {
  font-division: var(--font-display);
  font-size: 1rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--bawe-ink-900);
}
.signature__role {
  margin-top: var(--space-2);
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bawe-steel-500);
}

/* Three pillars (page 5) */
.pillars { display: grid; gap: var(--space-8); }
@media (min-width: 768px) {
  .pillars { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.pillar {
  padding-left: var(--space-4);
  border-left: 2px solid var(--bawe-blue-600);
}
.pillar__num {
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  color: var(--bawe-blue-600);
  margin-bottom: var(--space-3);
}
.pillar__title {
  font-size: 0.9375rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1.2;
  text-transform: uppercase;
  color: var(--bawe-ink-900);
}
.pillar__desc {
  margin-top: var(--space-3);
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--bawe-steel-600);
}
.section--dark .pillar { border-left-color: var(--bawe-blue-500); }
.section--dark .pillar__num { color: var(--bawe-blue-400); }
.section--dark .pillar__title { color: #fff; }
.section--dark .pillar__desc { color: var(--on-dark-body); }

/* =========================================================
   Home — stat band
   ========================================================= */

.stat-band { display: grid; gap: var(--space-4); }
@media (min-width: 640px) {
  .stat-band { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .stat-band { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* =========================================================
   Home — capabilities
   ========================================================= */

.capabilities { display: grid; gap: var(--space-6); }
@media (min-width: 768px) {
  .capabilities { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* =========================================================
   Section head with a trailing link on the same line
   ========================================================= */

.head-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6);
  justify-content: space-between;
  align-items: end;
  margin-bottom: var(--space-12);
}

/* =========================================================
   Featured projects grid
   ========================================================= */

.project-grid { display: grid; gap: var(--space-6); }
@media (min-width: 768px) {
  .project-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1280px) {
  .project-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* =========================================================
   CTA block (the contact spread, page 18)
   ========================================================= */

.cta {
  display: grid;
  gap: var(--space-12);
}
@media (min-width: 1024px) {
  .cta {
    grid-template-columns: 1.2fr 1fr;
    gap: var(--space-24);
    align-items: center;
  }
}
.cta__title { max-width: 14ch; }
.cta__sub {
  margin-top: var(--space-6);
  max-width: 46ch;
  font-size: 1.0625rem;
  line-height: 1.6;
  color: var(--on-dark-body);
}
.cta__actions { margin-top: var(--space-8); }

.cta__contact { display: grid; gap: var(--space-6); }
.cta__contact dt {
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--on-dark-mute);
  margin-bottom: var(--space-2);
}
.cta__contact dd {
  font-division: var(--font-mono);
  font-size: 1rem;
  line-height: 1.5;
  color: #fff;
}
.cta__contact a { color: #fff; text-decoration: none; }
.cta__contact a:hover { color: var(--bawe-blue-400); }

/* =========================================================
   Inner page header
   ========================================================= */

.page-head {
  padding-block: var(--space-16) var(--space-12);
  border-bottom: 1px solid var(--bawe-steel-200);
}
@media (min-width: 768px) {
  .page-head { padding-block: var(--space-24) var(--space-16); }
}
.page-head__eyebrow { display: block; margin-bottom: var(--space-6); }
.page-head__lead {
  margin-top: var(--space-6);
  max-width: 58ch;
  font-size: 1.125rem;
  line-height: 1.6;
  color: var(--bawe-steel-600);
}

/* =========================================================
   404
   ========================================================= */

.notfound {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: calc(100svh - var(--nav-h));
  padding-block: var(--space-24);
  background: var(--bawe-ink-900);
  color: var(--on-dark-body);
}

/* =========================================================
   Project detail
   The profile's project card (pp.15–16), opened out to a page.
   ========================================================= */

.project-hero {
  position: relative;
  aspect-ratio: 16 / 9;
  max-height: 70svh;
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--bawe-steel-100);
}
.project-hero img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.project-hero__tag {
  position: absolute;
  z-index: 1;   /* above the ::after legibility gradient, not under it */
  left: var(--space-6);
  bottom: var(--space-6);
  color: #fff;
  font-division: var(--font-display);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.project-hero::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 50%;
  /* Heavier than it looks like it needs to be: these tags land on sky and
     pale render as often as they land on dark ground. */
  background: linear-gradient(180deg, rgba(2, 8, 26, 0) 0%, rgba(2, 8, 26, 0.55) 55%, rgba(2, 8, 26, 0.9) 100%);
  pointer-events: none;
}

/* The four-column data row under the photo */
.spec-strip {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-8) var(--space-6);
  margin: 0;
  padding-block: var(--space-8);
  border-top: 1px solid var(--bawe-steel-200);
  border-bottom: 1px solid var(--bawe-steel-200);
}
@media (min-width: 900px) {
  .spec-strip { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.spec-strip dt {
  margin-bottom: var(--space-3);
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bawe-steel-500);
}
.spec-strip dd {
  font-size: 1rem;
  line-height: 1.45;
  color: var(--bawe-ink-900);
}

/* The Brief / What we delivered */
.project-prose {
  display: grid;
  gap: var(--space-12);
}
@media (min-width: 900px) {
  .project-prose { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
}
.project-prose h2 {
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bawe-blue-600);
  margin-bottom: var(--space-4);
}
.project-prose p {
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--bawe-ink-800);
}

/* Gallery */
.gallery { display: grid; gap: var(--space-4); }
@media (min-width: 768px) {
  .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.gallery img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: var(--radius-md);
  border: 1px solid var(--bawe-steel-200);
}

/* Loading / empty states */
.state {
  padding-block: var(--space-24);
  text-align: center;
  color: var(--bawe-steel-600);
}

/* =========================================================
   Services
   ========================================================= */

.division + .division { margin-top: var(--space-32); }

.division__head { max-width: 62ch; }
.division__label {
  display: block;
  margin-bottom: var(--space-4);
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bawe-steel-500);
}
.division__label b {
  color: var(--bawe-blue-600);
  font-weight: 700;
}

/* The four service tiles per division (page 8) */
.service-grid {
  display: grid;
  gap: var(--space-6);
  margin-top: var(--space-12);
}
@media (min-width: 640px) {
  .service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .service-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.service {
  display: grid;
  gap: var(--space-4);
  align-content: start;
  padding: var(--space-6);
  background: var(--bawe-paper);
  border: 1px solid var(--bawe-steel-200);
  border-radius: var(--radius-md);
  transition: border-color var(--dur-fast) var(--ease);
}
.service:hover { border-color: var(--bawe-blue-600); }

.service__icon {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: var(--radius-md);
  background: var(--bawe-blue-50);
  color: var(--bawe-blue-600);
}
.service__icon svg { width: 22px; height: 22px; }

.service__name {
  font-size: 0.9375rem;
  font-weight: 800;
  letter-spacing: 0.01em;
  line-height: 1.2;
  text-transform: uppercase;
  color: var(--bawe-ink-900);
}
.service__desc {
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--bawe-steel-600);
}

/* The detail rows (pages 9, 11, 13):
   blue marker + uppercase term on the left, description right,
   separated by hairlines. */
.detail-rows {
  margin-top: var(--space-16);
  border-top: 1px solid var(--bawe-steel-200);
}
.detail-row {
  display: grid;
  gap: var(--space-4);
  padding-block: var(--space-8);
  border-bottom: 1px solid var(--bawe-steel-200);
}
@media (min-width: 768px) {
  .detail-row {
    grid-template-columns: 220px 1fr;
    gap: var(--space-8);
    align-items: start;
  }
}
.detail-row__term {
  font-division: var(--font-display);
  font-size: 0.9375rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1.2;
  text-transform: uppercase;
  color: var(--bawe-ink-900);
}
.detail-row__desc {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--bawe-ink-800);
  max-width: 68ch;
}

/* =========================================================
   About
   ========================================================= */

/* Company essentials (page 2) */
.essentials { display: grid; gap: var(--space-6); margin: 0; }
.essentials > div {
  display: grid;
  gap: var(--space-1) var(--space-6);
  padding-bottom: var(--space-6);
  border-bottom: 1px solid var(--bawe-steel-200);
}
@media (min-width: 640px) {
  .essentials > div { grid-template-columns: 160px 1fr; align-items: start; }
}
.essentials dt {
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bawe-steel-500);
  padding-top: 0.25em;
}
.essentials dd {
  font-size: 1rem;
  line-height: 1.5;
  color: var(--bawe-ink-900);
}

/* The photo panel beside them */
.photo-panel {
  position: relative;
  min-height: 520px;
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--bawe-ink-900);
  isolation: isolate;
}
.photo-panel img {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.photo-panel::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, rgba(2, 8, 26, 0.1) 30%, rgba(2, 8, 26, 0.88) 100%);
}
.photo-panel__caption {
  position: absolute;
  inset: auto var(--space-6) var(--space-6) var(--space-6);
}
.photo-panel__eyebrow {
  display: block;
  margin-bottom: var(--space-3);
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bawe-blue-400);
}
.photo-panel__title {
  font-division: var(--font-display);
  font-size: 1.375rem;
  font-weight: 800;
  letter-spacing: -0.015em;
  line-height: 1.1;
  text-transform: uppercase;
  color: #fff;
}

.about-split { display: grid; gap: var(--space-12); }
@media (min-width: 1024px) {
  .about-split {
    grid-template-columns: 1.1fr 0.9fr;
    gap: var(--space-16);
    align-items: stretch;
  }
  .about-split > .photo-panel { height: 100%; }
}

/* Vision / mission (page 5) */
.vm { display: grid; gap: var(--space-12); }
@media (min-width: 768px) {
  .vm { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
}
.vm h3 {
  font-size: 1.25rem;
  font-weight: 800;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  margin-bottom: var(--space-4);
}
.vm p { line-height: 1.65; }

/* Generic card, used for credentials and the safety quadrants */
.card {
  position: relative;
  padding: var(--space-6);
  background: var(--bawe-paper);
  border: 1px solid var(--bawe-steel-200);
  border-radius: var(--radius-md);
}
.card--accent { border-color: var(--bawe-blue-600); }
.card__num {
  position: absolute;
  top: var(--space-6);
  right: var(--space-6);
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  color: var(--bawe-steel-500);
}
.card__head {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: center;
  margin-bottom: var(--space-4);
}
.card__title {
  font-size: 1.125rem;
  font-weight: 800;
  letter-spacing: -0.005em;
  line-height: 1.15;
  text-transform: uppercase;
}
.card__body {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--bawe-steel-600);
}
.card__foot {
  margin-top: var(--space-6);
  padding-top: var(--space-4);
  border-top: 1px solid var(--bawe-steel-200);
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bawe-steel-500);
}
.card--accent .card__foot { color: var(--bawe-blue-600); }

/* =========================================================
   Contact
   ========================================================= */

.contact-split { display: grid; gap: var(--space-16); }
@media (min-width: 1024px) {
  .contact-split {
    grid-template-columns: 1.15fr 0.85fr;
    gap: var(--space-24);
    align-items: start;
  }
}

.contact-form { display: grid; gap: var(--space-6); }
@media (min-width: 640px) {
  .contact-form__row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-6);
  }
}

.form-note {
  font-size: 0.875rem;
  color: var(--bawe-steel-500);
}

.form-status {
  padding: var(--space-6);
  border-left: 3px solid var(--bawe-blue-600);
  background: var(--bawe-blue-50);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
}
.form-status__title {
  font-division: var(--font-display);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--bawe-blue-600);
  margin-bottom: var(--space-3);
}

/* Director cards */
.people { display: grid; gap: var(--space-6); }
@media (min-width: 640px) {
  .people { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.person {
  padding-top: var(--space-6);
  border-top: 2px solid var(--bawe-blue-600);
}
.person__role {
  font-division: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bawe-steel-500);
  margin-bottom: var(--space-3);
}
.person__name {
  font-division: var(--font-display);
  font-size: 1.125rem;
  font-weight: 800;
  letter-spacing: -0.005em;
  text-transform: uppercase;
  color: var(--bawe-ink-900);
  margin-bottom: var(--space-3);
}
.person__contact { display: grid; gap: var(--space-1); }
.person__contact a {
  font-division: var(--font-mono);
  font-size: 0.875rem;
  color: var(--bawe-steel-600);
  text-decoration: none;
}
.person__contact a:hover { color: var(--bawe-blue-600); }

/* Dark page head, as on page 18 of the profile */
.page-head--dark {
  background: var(--bawe-ink-900);
  color: var(--on-dark-body);
  border-bottom: 0;
}
.page-head--dark .page-head__lead { color: var(--on-dark-body); }
.page-head--dark .page-head__eyebrow { color: var(--bawe-blue-400); }

.notfound .eyebrow { color: var(--bawe-blue-400); }
.notfound h1 { color: #fff; }

/* Honeypot field: off-screen, never focusable, ignored by people. */
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* Three-up project grid (project page "More projects") */
@media (min-width: 1024px) {
  .project-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
