/* ==========================================================================
   Home — the TOP page, reproducing the approved mock
   (reference/approved-design/itsg-top-final-mock.png, scaled to 1920 × 3263).

   Each section is its own size container; on the desktop grid every length is
   N × --u (--u = section width / 1920), so the composition keeps its proportions.
   Measured bands on the 1920 grid:
     HERO 0–850 · PROBLEM 850–1358 · SERVICE 1358–1815 · WORKS 1815–2210
     PEOPLE 2210–2600 · PHILOSOPHY 2600–3062 · FOOTER 3062–3263
   Text boxes use line-height = measured line pitch and top = first line centre − pitch/2.

   HERO is on the grid from 1024px (approved in Checkpoint 1). The other sections use
   the grid from 1280px: below that their small text would fall under 12px, so they
   switch to the tablet layout (spec §46–47: vertical / 2 columns, no complex motion).
   ========================================================================== */

/* ==========================================================================
   HERO
   ========================================================================== */

.hero {
  position: relative;
  container-type: inline-size;
  background: var(--color-white);
}

.hero__stage {
  --u: calc(100cqw / 1920);
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

.hero__copy {
  position: relative;
  z-index: 4;
}

.hero__title {
  font-family: var(--font-serif);
  font-weight: 600;
  letter-spacing: 0;
  color: var(--color-hero-ink);
}

.hero__label {
  color: var(--color-hero-ink);
}

.hero__label span {
  display: block;
}

.hero__lead {
  font-family: var(--font-serif);
  font-weight: 500;
  color: var(--color-text);
}

.hero__pager {
  position: relative;
  display: flex;
  align-items: center;
  font-family: var(--font-serif);
  font-weight: 500;
  line-height: 1;
  color: var(--color-hero-ink);
  font-variant-numeric: tabular-nums;
}

.hero__pager-track {
  position: absolute;
  background: #d6dce3;
}

/* The mock shows the bar about three quarters full; the load timeline draws it in. */
.hero__pager-fill {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 76%;
  background: #3f5667;
  transform-origin: 0 50%;
}

.hero__visual {
  z-index: 1;
  pointer-events: none;
}

.hero__city {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.hero__city-img {
  position: absolute;
  max-width: none;
  object-fit: cover;
}

.hero__bird-wrap {
  position: absolute;
  z-index: 2;
}

.hero__bird {
  width: 100%;
  height: 100%;
  max-width: none;
}

.hero__hand {
  position: absolute;
  z-index: 3;
  color: var(--color-hero-ink);
  transform-origin: 0 0;
}

.hero__hand > span {
  display: block;
}

.hero__hand-punct {
  margin-right: -.5em;
}

.hero__scroll {
  position: absolute;
  z-index: 5;
  display: grid;
  justify-items: center;
  color: var(--color-white);
}

.hero__scroll-label {
  writing-mode: vertical-rl;
}

.hero__scroll-line {
  width: 1px;
  background: currentColor;
  opacity: .8;
  transform-origin: 50% 0;
}

@media (min-width: 1024px) {
  .hero__stage {
    height: calc(850 * var(--u));
  }

  .hero__copy {
    position: absolute;
    inset: 0;
    pointer-events: none;
  }

  .hero__copy > * {
    position: absolute;
    pointer-events: auto;
  }

  /* In the mock the second line is set larger than the first (line widths 590 and 419). */
  .hero__title {
    top: calc(153 * var(--u));
    left: calc(102 * var(--u));
    font-size: calc(114 * var(--u));
    line-height: calc(146 * var(--u));
    white-space: nowrap;
  }

  .hero__title .line + .line {
    font-size: calc(132 * var(--u));
  }

  .hero__label {
    top: calc(461 * var(--u));
    left: calc(115 * var(--u));
    font-size: max(10px, calc(13.5 * var(--u)));
    line-height: calc(21 * var(--u));
    letter-spacing: .36em;
  }

  .hero__lead {
    top: calc(548 * var(--u));
    left: calc(116 * var(--u));
    font-size: calc(23.5 * var(--u));
    font-weight: 600;
    line-height: calc(38.5 * var(--u));
    letter-spacing: .13em;
    white-space: nowrap;
    color: #1f2c38;
  }

  /* Typographic primary CTA on the mock's CTA box (UI redesign §2). */
  .hero__cta {
    top: calc(671 * var(--u));
    left: calc(119 * var(--u));
    width: calc(316 * var(--u));
    height: calc(67 * var(--u));
    min-height: 0;
    padding: 0 calc(8 * var(--u)) 0 calc(2 * var(--u));
    font-size: max(12px, calc(19 * var(--u)));
    letter-spacing: .14em;
  }

  .hero__cta .arrow {
    width: calc(22 * var(--u));
  }

  .hero__pager {
    top: calc(786.5 * var(--u));
    left: calc(119 * var(--u));
    gap: calc(26 * var(--u));
    font-size: calc(21 * var(--u));
    letter-spacing: .04em;
  }

  .hero__pager-track {
    top: calc(10.5 * var(--u));
    left: calc(153 * var(--u));
    width: calc(160 * var(--u));
    height: max(1px, calc(2 * var(--u)));
  }

  .hero__visual {
    position: absolute;
    inset: 0;
  }

  /* Enters from the right and dissolves into white along the mock's diagonal,
     from (1350, 0) to (480, 850). The bottom edge is softened so it does not read as a cut. */
  .hero__city {
    -webkit-mask-image:
      linear-gradient(135.7deg, transparent 47.5%, #000 50.5%),
      linear-gradient(180deg, #000 calc(100% - 16 * var(--u)), transparent);
    -webkit-mask-composite: source-in;
    mask-image:
      linear-gradient(135.7deg, transparent 47.5%, #000 50.5%),
      linear-gradient(180deg, #000 calc(100% - 16 * var(--u)), transparent);
    mask-composite: intersect;
  }

  /* Crop of the supplied photo (Shinjuku aerial, 2.02:1, object-fit: cover): the Tokyo Metropolitan
     Government Building sits under the handwriting, skyline tops ~420px. */
  .hero__city-img {
    top: 0;
    left: calc(357 * var(--u));
    width: calc(1839 * var(--u));
    height: calc(1035 * var(--u));
  }

  /* Commissioned bird (1536×1024, used as delivered), uniform scale 0.75. The raised wing
     clears the title's "、", the beak points up-right into the sky, and the rock with the
     artist's signature ends just above the News Bar (818) — nothing of the artwork is cut. */
  .hero__bird-wrap {
    top: calc(84.5 * var(--u));
    left: calc(585 * var(--u));
    width: calc(1152 * var(--u));
    height: calc(768 * var(--u));
  }

  .hero__hand {
    top: calc(259 * var(--u));
    left: calc(1404 * var(--u));
    font-size: calc(52 * var(--u));
    font-weight: 400;
    font-feature-settings: "palt";
    line-height: calc(78.6 * var(--u));
    letter-spacing: .02em;
    transform: rotate(-14deg);
  }

  .hero__hand span + span {
    padding-left: calc(25.5 * var(--u));
  }

  .hero__scroll {
    top: calc(650 * var(--u));
    left: calc(1820 * var(--u));
    width: calc(32 * var(--u));
    gap: calc(10 * var(--u));
  }

  .hero__scroll-label {
    font-size: max(9px, calc(13 * var(--u)));
    letter-spacing: .6em;
  }

  .hero__scroll-line {
    height: calc(72 * var(--u));
  }
}

@media (max-width: 1023px) {
  .hero__stage {
    padding-top: calc(var(--header-h) + var(--adminbar-h));
  }

  .hero__copy {
    padding: 30px 20px 0;
  }

  .hero__title {
    font-size: clamp(38px, 11.2vw, 72px);
    line-height: 1.36;
  }

  .hero__label {
    margin-top: 18px;
    font-size: 10px;
    line-height: 1.75;
    letter-spacing: .26em;
  }

  .hero__lead {
    margin-top: 16px;
    font-size: clamp(14px, 3.7vw, 18px);
    line-height: 1.9;
    letter-spacing: .06em;
  }

  .hero__cta {
    justify-content: space-between;
    width: 100%;
    max-width: 380px;
    min-height: 56px;
    margin-top: 24px;
    padding: 0 6px 0 2px;
    font-size: 15px;
    letter-spacing: .12em;
  }

  .hero__pager {
    gap: 12px;
    margin-top: 22px;
    font-size: 16px;
  }

  .hero__pager-track {
    position: relative;
    width: 96px;
    height: 2px;
    margin-left: 20px;
  }

  /* The handwriting sits on the faded top of the picture; the bird starts below it. */
  .hero__visual {
    position: relative;
    height: 132vw;
    max-height: 1000px;
    margin-top: 10px;
    overflow: hidden;
  }

  .hero__city {
    -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 34%);
    mask-image: linear-gradient(180deg, transparent 0%, #000 34%);
  }

  .hero__city-img {
    inset: 0;
    width: 100%;
    height: 100%;
    object-position: 70% 100%;
  }

  /* The whole bird stays inside the 132vw (max 1000px) visual: the caps take over at 760px. */
  .hero__bird-wrap {
    top: min(30vw, 228px);
    left: -8vw;
    width: min(150vw, 1110px);
  }

  .hero__bird {
    height: auto;
  }

  .hero__hand {
    top: 5vw;
    right: 6vw;
    font-size: clamp(18px, 5.6vw, 34px);
    font-weight: 400;
    font-feature-settings: "palt";
    line-height: 1.5;
    transform: rotate(-12deg);
    transform-origin: 100% 0;
  }

  .hero__hand span + span {
    padding-left: 1.2em;
  }

  .hero__scroll {
    display: none;
  }
}

/* ==========================================================================
   Shared section frame (tablet / mobile flow)
   ========================================================================== */

:is(.home-problem, .home-service, .home-works, .home-people, .home-philosophy) {
  position: relative;
  container-type: inline-size;
}

:is(.home-problem, .home-service, .home-works, .home-people, .home-philosophy) > [class$="__stage"] {
  --u: calc(100cqw / 1920);
  position: relative;
  display: grid;
  gap: 40px;
  padding: 76px 20px 84px;
}

:is(.home-problem, .home-works, .home-people, .home-philosophy) [class$="__intro"],
.home-service__intro {
  display: grid;
  justify-items: start;
  gap: 16px;
}

.home-problem__lead,
.home-works__lead,
.home-people__lead,
.home-philosophy__body {
  color: #24354a;
}

:is(.home-problem, .home-works, .home-people, .home-philosophy) .eyebrow {
  color: #4f5d6e;
}

@media (min-width: 768px) {
  :is(.home-problem, .home-service, .home-works, .home-people, .home-philosophy) > [class$="__stage"] {
    padding: 104px var(--gutter) 112px;
  }
}

/* ==========================================================================
   PROBLEM
   ========================================================================== */

.home-problem {
  background: #fcfdfd;
}

.home-problem__list {
  display: grid;
  gap: 14px;
}

.problem-card__link {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 330px;
  overflow: hidden;
  background: #061621;
  color: var(--color-white);
}

/* The navy scrim the mock lays over the lower part of each photo. */
.problem-card__link::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(6, 22, 33, 0) 26%, rgba(6, 22, 33, .84) 50%, rgba(6, 22, 33, .97) 64%, #061621);
}

.problem-card__media {
  position: absolute;
  inset: 0;
}

.problem-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--pos, 50% 50%);
}

.problem-card__body {
  position: relative;
  z-index: 1;
  display: grid;
  justify-items: start;
  padding: 0 22px 24px;
}

.problem-card__num {
  font-family: var(--font-serif);
  font-size: 42px;
  font-weight: 500;
  line-height: 1;
}

.problem-card__title {
  margin-top: 14px;
  font-size: 21px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .06em;
}

.problem-card__text {
  margin-top: 14px;
  font-size: 13.5px;
  font-weight: 500;
  line-height: 1.8;
  letter-spacing: .12em;
}

.problem-card__arrow {
  position: absolute;
  right: 20px;
  bottom: 26px;
  opacity: 0;
  transform: translateX(-6px);
}

@media (min-width: 600px) {
  .home-problem__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
  .problem-card__link { min-height: 0; aspect-ratio: 4 / 5; }
}

@media (min-width: 1024px) {
  .home-problem__list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .problem-card__link { aspect-ratio: 290 / 434; }
  .problem-card__body { padding: 0 16px 18px; }
  .problem-card__num { font-size: 36px; }
  .problem-card__title { font-size: 18px; }
  .problem-card__text { font-size: 12px; letter-spacing: .08em; }
}

/* ==========================================================================
   SERVICE
   ========================================================================== */

.home-service {
  --focus: var(--color-white);
  overflow: hidden;
  background: #02111f;
  color: var(--color-white);
}

.home-service__planes {
  display: none;
}

.home-service__lead {
  color: rgba(255, 255, 255, .92);
}

.home-service__button {
  margin-top: 10px;
}

.home-service__list {
  display: grid;
}

.service-panel {
  position: relative;
  isolation: isolate;
  padding: 28px 28px 30px 52px;
  font-family: var(--font-serif);
}

/* Below the desktop grid each panel carries its own slanted plane. */
.service-panel::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: url("../../art/brush-strokes-640.webp") var(--brush-pos, 90% 12%) / 320% auto no-repeat, var(--plane);
  clip-path: polygon(26px 0, 100% 0, calc(100% - 26px) 100%, 0 100%);
}

.service-panel--1 { --plane: #06203a; --brush-pos: 4% 6%; }
.service-panel--2 { --plane: #00285a; --brush-pos: 97% 90%; }
.service-panel--3 { --plane: var(--color-brand-dark); --brush-pos: 90% 10%; }
.service-panel--4 { --plane: #001b30; --brush-pos: 100% 100%; }

.service-panel__num {
  display: block;
  font-size: 16px;
  font-weight: 500;
  line-height: 1;
}

.service-panel__title {
  margin-top: 12px;
  font-size: 32px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: .02em;
}

.service-panel__link::after {
  content: "";
  position: absolute;
  inset: 0;
}

.service-panel__items {
  margin-top: 14px;
  font-size: 14.5px;
  font-weight: 600;
  line-height: 2;
  letter-spacing: .1em;
}

@media (min-width: 600px) {
  .home-service__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
  .home-service__list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .service-panel { padding: 30px 18px 34px 40px; }
}

/* ==========================================================================
   WORKS
   ========================================================================== */

.home-works {
  background: var(--color-white);
}

.home-works__list {
  display: grid;
  gap: 34px 16px;
}

.home-works .works-card__meta {
  color: #506072;
}

@media (min-width: 560px) {
  .home-works__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
  .home-works__list { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
}

/* ==========================================================================
   PEOPLE
   ========================================================================== */

.home-people {
  background: var(--color-ground);
}

.home-people__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 30px 14px;
}

@media (min-width: 1024px) {
  .home-people__list { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
}

/* ==========================================================================
   PHILOSOPHY
   ========================================================================== */

.home-philosophy {
  overflow: hidden;
  background: var(--color-white);
}

.home-philosophy__art {
  position: relative;
  height: 64vw;
  max-height: 520px;
  margin: 0 -20px;
}

.home-philosophy__words {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  justify-items: center;
  font-family: var(--font-serif);
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: .01em;
  color: var(--color-word);
}

.home-philosophy__word--challenge,
.home-philosophy__word--speed {
  font-size: min(13vw, 100px);
}

.home-philosophy__word--times {
  font-size: min(8vw, 60px);
}

/* The commissioned walker has a transparent ground: no blend, its colours stay as painted. */
.home-philosophy__runner-wrap {
  position: absolute;
  inset: 0 -4%;
  display: grid;
  align-items: center;
}

.home-philosophy__runner {
  width: 100%;
}

.home-philosophy__divider {
  display: none;
}

.home-philosophy__aside {
  display: grid;
  justify-items: start;
  gap: 16px;
  padding-top: 32px;
  border-top: 1px solid #dce1e5;
}

.home-philosophy__aside-title {
  font-size: clamp(26px, 6.6vw, 40px);
  font-weight: 600;
  line-height: 1.45;
  letter-spacing: .06em;
  color: var(--color-hero-ink);
}

.home-philosophy__aside-body {
  font-size: 15px;
  font-weight: 600;
  line-height: 1.9;
  letter-spacing: .1em;
  color: #24354a;
}

.home-philosophy__cta {
  min-width: min(100%, 320px);
  min-height: 60px;
  margin-top: 8px;
}

@media (min-width: 768px) {
  .home-philosophy__art { margin: 0 calc(var(--gutter) * -1); }
}

/* ==========================================================================
   Desktop grid (≥1280px) — PROBLEM → PHILOSOPHY
   ========================================================================== */

@media (min-width: 1280px) {
  :is(.home-problem, .home-service, .home-works, .home-people, .home-philosophy) > [class$="__stage"] {
    display: block;
    padding: 0;
  }

  :is(.home-problem, .home-works, .home-people, .home-philosophy) [class$="__intro"],
  .home-service__intro {
    display: block;
  }

  :is(.home-problem, .home-service, .home-works, .home-people, .home-philosophy) [class$="__intro"] > * {
    position: absolute;
    white-space: nowrap;
  }

  :is(.home-problem, .home-service, .home-works, .home-people, .home-philosophy) .eyebrow {
    font-size: max(10px, calc(15 * var(--u)));
    line-height: calc(20 * var(--u));
    letter-spacing: .3em;
  }

  :is(.home-problem, .home-service, .home-works, .home-people, .home-philosophy) .section-title {
    letter-spacing: 0;
  }

  :is(.home-problem, .home-works, .home-people, .home-philosophy) .text-link {
    min-height: 0;
    gap: calc(28 * var(--u));
    line-height: calc(30 * var(--u));
  }

  :is(.home-problem, .home-works, .home-people, .home-philosophy) .text-link .arrow {
    width: calc(22 * var(--u));
  }

  /* ---------- PROBLEM: 850–1358 ---------- */

  .home-problem__stage { height: calc(508 * var(--u)); }

  .home-problem__eyebrow { top: calc(69 * var(--u)); left: calc(107 * var(--u)); }

  .home-problem__title {
    top: calc(106.5 * var(--u));
    left: calc(106 * var(--u));
    font-size: calc(56 * var(--u));
    line-height: calc(77 * var(--u));
  }

  .home-problem__lead {
    top: calc(297 * var(--u));
    left: calc(110 * var(--u));
    font-size: max(12px, calc(23 * var(--u)));
    line-height: calc(40 * var(--u));
    letter-spacing: .16em;
  }

  .home-problem__link {
    top: calc(409 * var(--u));
    left: calc(111 * var(--u));
    font-size: max(12px, calc(21 * var(--u)));
    letter-spacing: .2em;
  }

  /* Cards 573–1838 × 891–1325. */
  .home-problem__list {
    position: absolute;
    top: calc(41 * var(--u));
    left: calc(573 * var(--u));
    grid-template-columns:
      calc(290 * var(--u)) calc(30 * var(--u)) calc(287 * var(--u)) calc(35 * var(--u))
      calc(295 * var(--u)) calc(37 * var(--u)) calc(291 * var(--u));
    gap: 0;
  }

  .problem-card:nth-child(1) { grid-column: 1; }
  .problem-card:nth-child(2) { grid-column: 3; }
  .problem-card:nth-child(3) { grid-column: 5; }
  .problem-card:nth-child(4) { grid-column: 7; }

  .problem-card__link {
    display: block;
    height: calc(434 * var(--u));
    aspect-ratio: auto;
  }

  .problem-card__body {
    position: absolute;
    top: calc(188 * var(--u));
    right: calc(14 * var(--u));
    left: calc(27 * var(--u));
    padding: 0;
  }

  .problem-card__num {
    font-size: calc(54 * var(--u));
    line-height: calc(54 * var(--u));
  }

  .problem-card__title {
    margin-top: calc(20 * var(--u));
    font-size: max(12px, calc(28 * var(--u)));
    line-height: calc(38 * var(--u));
    letter-spacing: .06em;
  }

  .problem-card__text {
    margin-top: calc(24 * var(--u));
    font-size: max(11px, calc(17 * var(--u)));
    line-height: calc(30 * var(--u));
    letter-spacing: .15em;
    white-space: nowrap;
  }

  .problem-card__arrow {
    right: calc(22 * var(--u));
    bottom: calc(24 * var(--u));
    width: calc(22 * var(--u));
  }

  /* ---------- SERVICE: 1358–1815 ---------- */

  .home-service__stage { height: calc(457 * var(--u)); }

  /* Four slanted planes: bottom-left x, top-right x; the slant is 92 units over the band. */
  .home-service__planes {
    position: absolute;
    inset: 0;
    display: block;
  }

  .home-service__plane {
    position: absolute;
    top: 0;
    bottom: 0;
    clip-path: polygon(calc(92 * var(--u)) 0, 100% 0, calc(100% - 92 * var(--u)) 100%, 0 100%);
  }

  .home-service__plane--1 { left: calc(635 * var(--u)); width: calc(377 * var(--u)); background: url("../../art/brush-strokes-1200.webp") 4% 6% / 300% auto no-repeat, #031c33; }
  .home-service__plane--2 { left: calc(920 * var(--u)); width: calc(382 * var(--u)); background: url("../../art/brush-strokes-1200.webp") 97% 92% / 300% auto no-repeat, #003064; }
  .home-service__plane--3 { left: calc(1205 * var(--u)); width: calc(392 * var(--u)); background: url("../../art/brush-strokes-1200.webp") 90% 10% / 300% auto no-repeat, var(--color-brand-dark); }
  .home-service__plane--4 { left: calc(1505 * var(--u)); width: calc(507 * var(--u)); background: url("../../art/brush-strokes-1200.webp") 100% 100% / 240% auto no-repeat, #021b30; }

  /* Loose strokes at the band's edges, as in the mock: red at the bottom left, blue at the right. */
  .home-service__edge {
    position: absolute;
    pointer-events: none;
    -webkit-mask-image: linear-gradient(180deg, transparent, #000 40%);
    mask-image: linear-gradient(180deg, transparent, #000 40%);
    background-image: url("../../art/brush-strokes-1200.webp");
    background-repeat: no-repeat;
  }

  .home-service__edge--left {
    bottom: 0;
    left: calc(-30 * var(--u));
    width: calc(220 * var(--u));
    height: calc(310 * var(--u));
    background-position: 0% 86%;
    background-size: calc(1400 * var(--u)) auto;
  }

  .home-service__edge--right {
    top: 0;
    right: calc(-24 * var(--u));
    width: calc(170 * var(--u));
    height: 100%;
    background-position: 100% 72%;
    background-size: calc(1100 * var(--u)) auto;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 45%);
    mask-image: linear-gradient(90deg, transparent, #000 45%);
  }

  .home-service__eyebrow { top: calc(51 * var(--u)); left: calc(115 * var(--u)); }

  .home-service__title {
    top: calc(91.5 * var(--u));
    left: calc(114 * var(--u));
    font-size: calc(53.5 * var(--u));
    line-height: calc(65 * var(--u));
  }

  .home-service__lead {
    top: calc(239 * var(--u));
    left: calc(115 * var(--u));
    font-size: max(12px, calc(19 * var(--u)));
    line-height: calc(36 * var(--u));
    letter-spacing: .12em;
  }

  .home-service__button {
    top: calc(372 * var(--u));
    left: calc(115 * var(--u));
    width: calc(322 * var(--u));
    height: calc(51 * var(--u));
    min-height: 0;
    margin: 0;
    padding: 0 0 calc(10 * var(--u));
    justify-content: space-between;
    font-size: max(12px, calc(18 * var(--u)));
    letter-spacing: .16em;
  }

  .home-service__button .arrow { width: calc(22 * var(--u)); }

  .home-service__list {
    position: absolute;
    inset: 0;
    display: block;
  }

  .service-panel {
    position: absolute;
    top: 0;
    height: 100%;
    width: calc(250 * var(--u));
    padding: calc(73 * var(--u)) 0 0;
  }

  .service-panel::before { display: none; }

  .service-panel--1 { left: calc(747 * var(--u)); }
  .service-panel--2 { left: calc(1030 * var(--u)); }
  .service-panel--3 { left: calc(1320 * var(--u)); }
  .service-panel--4 { left: calc(1621 * var(--u)); }

  .service-panel__num {
    font-size: calc(24 * var(--u));
    line-height: calc(24 * var(--u));
  }

  .service-panel__title {
    margin-top: calc(36 * var(--u));
    font-size: calc(46 * var(--u));
    line-height: calc(46 * var(--u));
  }

  .service-panel__items {
    margin-top: calc(33.5 * var(--u));
    font-size: max(12px, calc(19.5 * var(--u)));
    line-height: calc(41.3 * var(--u));
    letter-spacing: .1em;
    white-space: nowrap;
  }

  /* ---------- WORKS: 1815–2210 ---------- */

  .home-works__stage { height: calc(395 * var(--u)); }

  .home-works__eyebrow { top: calc(41 * var(--u)); left: calc(113 * var(--u)); }

  .home-works__title {
    top: calc(77 * var(--u));
    left: calc(110 * var(--u));
    font-size: calc(50 * var(--u));
    line-height: calc(72 * var(--u));
  }

  .home-works__lead {
    top: calc(237 * var(--u));
    left: calc(114 * var(--u));
    font-size: max(12px, calc(19 * var(--u)));
    line-height: calc(36 * var(--u));
    letter-spacing: .1em;
  }

  .home-works__link {
    top: calc(330 * var(--u));
    left: calc(113 * var(--u));
    font-size: max(12px, calc(20 * var(--u)));
    letter-spacing: .15em;
  }

  /* Images 575–1838 × 1848–2047. */
  .home-works__list {
    position: absolute;
    top: calc(33 * var(--u));
    left: calc(575 * var(--u));
    grid-template-columns: repeat(4, calc(285 * var(--u)));
    gap: calc(41 * var(--u));
  }

  .home-works .works-card__media { height: calc(199 * var(--u)); aspect-ratio: auto; }

  .home-works .works-card__title {
    margin-top: calc(12 * var(--u));
    padding-left: calc(11 * var(--u));
    font-size: max(12px, calc(21 * var(--u)));
    line-height: calc(34 * var(--u));
    letter-spacing: .15em;
  }

  .home-works .works-card__title .arrow { width: calc(20 * var(--u)); }

  .home-works .works-card__meta {
    margin-top: calc(16 * var(--u));
    padding-left: calc(11 * var(--u));
    font-size: max(11px, calc(18 * var(--u)));
    line-height: calc(30 * var(--u));
    letter-spacing: .06em;
  }

  .home-works .content-required { font-size: max(10px, calc(14 * var(--u))); }

  /* ---------- PEOPLE: 2210–2600 ---------- */

  .home-people__stage { height: calc(390 * var(--u)); }

  .home-people__eyebrow { top: calc(39 * var(--u)); left: calc(112 * var(--u)); }

  .home-people__title {
    top: calc(75.5 * var(--u));
    left: calc(110 * var(--u));
    font-size: calc(44 * var(--u));
    line-height: calc(65 * var(--u));
  }

  .home-people__title .line:first-child { letter-spacing: .1em; }

  .home-people__lead {
    top: calc(213 * var(--u));
    left: calc(112 * var(--u));
    font-size: max(12px, calc(20 * var(--u)));
    line-height: calc(38 * var(--u));
    letter-spacing: .15em;
  }

  .home-people__link {
    top: calc(341 * var(--u));
    left: calc(113 * var(--u));
    font-size: max(12px, calc(20 * var(--u)));
    letter-spacing: .15em;
  }

  /* Photos 576–1835 × 2243–2447. */
  .home-people__list {
    position: absolute;
    top: calc(33 * var(--u));
    left: calc(576 * var(--u));
    grid-template-columns: repeat(4, calc(280 * var(--u)));
    gap: calc(46.3 * var(--u));
  }

  .people-card__media { height: calc(204 * var(--u)); aspect-ratio: auto; }

  .people-card__role {
    margin-top: calc(15 * var(--u));
    padding-left: calc(9 * var(--u));
    font-size: max(12px, calc(22 * var(--u)));
    line-height: calc(32 * var(--u));
    letter-spacing: .1em;
  }

  .people-card__text {
    margin-top: calc(8 * var(--u));
    padding-left: calc(9 * var(--u));
    font-size: max(11px, calc(18 * var(--u)));
    line-height: calc(32 * var(--u));
    letter-spacing: .16em;
    white-space: nowrap;
  }

  /* ---------- PHILOSOPHY: 2600–3062 ---------- */

  .home-philosophy__stage { height: calc(462 * var(--u)); }

  .home-philosophy__eyebrow { top: calc(44 * var(--u)); left: calc(113 * var(--u)); }

  .home-philosophy__title {
    top: calc(86.5 * var(--u));
    left: calc(110 * var(--u));
    font-size: calc(49 * var(--u));
    line-height: calc(63 * var(--u));
  }

  .home-philosophy__body {
    top: calc(246 * var(--u));
    left: calc(114 * var(--u));
    font-size: max(12px, calc(19.5 * var(--u)));
    line-height: calc(35.5 * var(--u));
    letter-spacing: .14em;
  }

  .home-philosophy__link {
    top: calc(377 * var(--u));
    left: calc(114 * var(--u));
    font-size: max(12px, calc(20 * var(--u)));
    letter-spacing: .2em;
  }

  .home-philosophy__art {
    position: absolute;
    inset: 0;
    height: auto;
    max-height: none;
    margin: 0;
  }

  /* CHALLENGE 945–1345 (centre 2700), × centre 2770, SPEED centre 2832. */
  .home-philosophy__words {
    z-index: 2;
    display: block;
    inset: 0 auto auto calc(945 * var(--u));
    width: calc(400 * var(--u));
    text-align: center;
  }

  .home-philosophy__word {
    position: absolute;
    right: calc(-60 * var(--u));
    left: calc(-60 * var(--u));
    display: block;
    white-space: nowrap;
  }

  .home-philosophy__word--challenge {
    top: calc(63 * var(--u));
    font-size: calc(68 * var(--u));
    line-height: calc(74 * var(--u));
  }

  .home-philosophy__word--times {
    top: calc(148 * var(--u));
    font-size: calc(44 * var(--u));
    line-height: calc(44 * var(--u));
  }

  .home-philosophy__word--speed {
    top: calc(195 * var(--u));
    font-size: calc(68 * var(--u));
    line-height: calc(74 * var(--u));
  }

  /* The mock's art box: 495–1350 × 2590–3071. The commissioned walker (1920×1080) has the
     same 16:9 ratio, so it fills the box at a uniform scale with no mask: the ribbon starts
     right of the copy and the figure walks under CHALLENGE × SPEED (the words stay in front, as in the mock). */
  .home-philosophy__runner-wrap {
    inset: auto;
    top: calc(-10 * var(--u));
    left: calc(495 * var(--u));
    display: block;
    width: calc(855 * var(--u));
    height: calc(481 * var(--u));
  }

  .home-philosophy__runner {
    height: 100%;
  }

  .home-philosophy__divider {
    position: absolute;
    top: calc(75 * var(--u));
    left: calc(1413 * var(--u));
    display: block;
    width: max(1px, calc(1.5 * var(--u)));
    height: calc(315 * var(--u));
    background: #dce1e5;
    transform-origin: 50% 0;
  }

  .home-philosophy__aside {
    display: block;
    padding: 0;
    border: 0;
  }

  .home-philosophy__aside > * { position: absolute; white-space: nowrap; }

  .home-philosophy__aside-title {
    top: calc(70 * var(--u));
    left: calc(1478 * var(--u));
    font-size: calc(44 * var(--u));
    line-height: calc(60 * var(--u));
    letter-spacing: .06em;
  }

  .home-philosophy__aside-body {
    top: calc(216.5 * var(--u));
    left: calc(1484 * var(--u));
    font-size: max(12px, calc(19 * var(--u)));
    line-height: calc(35 * var(--u));
    letter-spacing: .12em;
  }

  .home-philosophy__cta {
    top: calc(310 * var(--u));
    left: calc(1480 * var(--u));
    width: calc(325 * var(--u));
    height: calc(69 * var(--u));
    min-width: 0;
    min-height: 0;
    margin: 0;
    padding: 0 calc(8 * var(--u)) 0 calc(2 * var(--u));
    font-size: max(12px, calc(19 * var(--u)));
    letter-spacing: .16em;
  }

  .home-philosophy__cta .arrow { width: calc(22 * var(--u)); }
}

/* ==========================================================================
   NEWS BAR — the latest post on the seam between HERO and PROBLEM (2026-09-12)
   A white plane with a hairline, typography and one brand-orange label; no card, no radius.
   Hover: an orange brush line runs along the bottom (left → right) and ↗ moves up-right.
   The label uses the text shade of the brand orange so 12px type stays readable (4.8:1).
   ========================================================================== */

.news-bar {
  position: relative;
  z-index: 6;
  container-type: inline-size;
  margin: -24px 16px 0;
}

.news-bar__inner {
  position: relative;
  display: grid;
  background: var(--color-white);
  border: 1px solid var(--color-line);
}

.news-bar__item {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  row-gap: 8px;
  padding: 18px 20px 22px;
  color: var(--color-hero-ink);
}

.news-bar__label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-en);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: .32em;
  color: var(--color-brand-text);
}

/* IMPORTANT: the same orange label with a small solid mark; the plane stays white. */
.news-bar--important .news-bar__label::before {
  content: "";
  width: 7px;
  height: 7px;
  background: var(--color-brand);
}

.news-bar__arrow {
  grid-column: 2;
  grid-row: 1;
  justify-self: end;
}

.news-bar__date {
  grid-column: 1 / -1;
  font-family: var(--font-en);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .08em;
  color: var(--color-navy);
}

.news-bar__title {
  grid-column: 1 / -1;
  font-family: var(--font-sans);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.75;
  letter-spacing: .06em;
}

/* The orange brush line along the lower edge. */
.news-bar__item::after {
  content: "";
  position: absolute;
  right: 20px;
  bottom: 8px;
  left: 20px;
  height: 6px;
  background: var(--color-brand);
  -webkit-mask: var(--mask-brush-line) center / 100% 100% no-repeat;
  mask: var(--mask-brush-line) center / 100% 100% no-repeat;
  clip-path: inset(0 100% 0 0);
  transition: clip-path 420ms var(--ease-out);
}

.news-bar__all {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 14px;
  min-height: 44px;
  padding: 0 20px;
  border-top: 1px solid var(--color-line);
  font-family: var(--font-en);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .22em;
  color: var(--color-hero-ink);
  transition: color var(--dur-normal) var(--ease-out);
}

:is(.news-bar__arrow, .news-bar__all .arrow) {
  transition: transform 420ms var(--ease-out);
}

@media (hover: hover) {
  .news-bar__item:hover::after { clip-path: inset(0 0 0 0); }
  .news-bar__item:hover > .news-bar__arrow { transform: translate(5px, -5px) rotate(-45deg); }
  .news-bar__all:hover { color: var(--color-brand-text); }
  .news-bar__all:hover > .arrow { transform: translate(5px, -5px) rotate(-45deg); }
}

.news-bar__item:focus-visible::after { clip-path: inset(0 0 0 0); }

/* Before the HERO timeline starts, like the HERO parts. */
.motion:not(.motion-ready) [data-news-bar] {
  opacity: 0;
}

@media (min-width: 1024px) {
  /* Overlaps the HERO by 30 units and sits off-centre to the right (240 / 140 on the 1920 grid). */
  .news-bar {
    margin: calc(-30 * 100vw / 1920) 0 0;
  }

  .news-bar__inner {
    --u: calc(100cqw / 1920);
    display: flex;
    align-items: stretch;
    min-height: max(64px, calc(82 * var(--u)));
    margin: 0 calc(140 * var(--u)) 0 calc(240 * var(--u));
  }

  .news-bar__item {
    flex: 1;
    min-width: 0;
    grid-template-columns: calc(150 * var(--u)) calc(150 * var(--u)) minmax(0, 1fr) auto;
    column-gap: calc(24 * var(--u));
    padding: 0 calc(40 * var(--u)) 0 calc(44 * var(--u));
  }

  .news-bar__item > * {
    grid-row: 1;
  }

  .news-bar__label { grid-column: 1; font-size: 12px; }
  .news-bar__date { grid-column: 2; font-size: 13px; }

  .news-bar__title {
    grid-column: 3;
    overflow: hidden;
    font-size: clamp(14px, .83vw, 16px);
    white-space: nowrap;
    text-overflow: ellipsis;
  }

  .news-bar__arrow { grid-column: 4; }

  .news-bar__item::after {
    right: calc(40 * var(--u));
    bottom: calc(12 * var(--u));
    left: calc(44 * var(--u));
    height: max(5px, calc(7 * var(--u)));
  }

  .news-bar__all {
    flex: none;
    justify-content: center;
    min-width: calc(220 * var(--u));
    padding: 0 calc(36 * var(--u));
    border-top: 0;
    border-left: 1px solid var(--color-line);
  }
}

@media (prefers-reduced-motion: reduce) {
  .news-bar__arrow,
  .news-bar__all .arrow { transform: rotate(-45deg) !important; }
}
