@layer sections {
  .specs { background: var(--c-basalt); }

  .specs__grid {
    display: grid;
    gap: var(--space-2xl);
  }

  @media (min-width: 62rem) {
    .specs__grid {
      grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
      gap: clamp(3rem, 6vw, 7rem);
      align-items: start;
    }
  }

  /* ---- data sheet: ruled rows, no cards, no boxes ---- */
  .sheet { display: grid; }

  .sheet__row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--space-md);
    align-items: baseline;
    padding-block: var(--space-sm);
    border-block-start: var(--rule);
  }

  .sheet__row:last-child { border-block-end: var(--rule); }

  .sheet__label {
    font-family: var(--f-mono);
    font-size: var(--t-2xs);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--c-ash);
  }

  .sheet__value {
    font-family: var(--f-display);
    font-weight: 700;
    font-size: var(--t-lg);
    color: var(--c-bone);
    line-height: 1;
    font-variant-numeric: tabular-nums;
    display: flex;
    align-items: baseline;
    gap: 0.35em;
  }

  .sheet__unit {
    font-family: var(--f-mono);
    font-size: var(--t-2xs);
    letter-spacing: 0.1em;
    color: var(--c-ember);
    text-transform: uppercase;
  }

  /* ---- torque curve ---- */
  .curve {
    inline-size: 100%;
    aspect-ratio: 16 / 10;
    display: block;
    overflow: visible;
  }

  .curve * { vector-effect: non-scaling-stroke; }

  /* fill:none is mandatory here: .axis is an open L-shaped path and
     would otherwise fill a solid triangle under the plot. */
  .curve .axis { fill: none; stroke: var(--c-basalt-hi); stroke-width: 1; }
  .curve .grid-line { fill: none; stroke: var(--c-basalt-hi); stroke-width: 1; stroke-dasharray: 2 6; }

  .curve .plot {
    fill: none;
    stroke-width: 3;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: var(--len, 1200);
    stroke-dashoffset: var(--len, 1200);
    transition: stroke-dashoffset 1.6s var(--e-expo);
  }

  .curve .plot--torque { stroke: var(--c-ember); }
  .curve .plot--power  { stroke: var(--c-sulphur); transition-delay: 0.22s; }

  .curve.is-in .plot { stroke-dashoffset: 0; }

  .curve .tick {
    font-family: var(--f-mono);
    font-size: 13px;
    fill: var(--c-ash);
    letter-spacing: 0.1em;
  }

  .curve__key {
    display: flex;
    gap: var(--space-md);
    flex-wrap: wrap;
    padding-block-start: var(--space-sm);
  }

  .curve__key span {
    font-family: var(--f-mono);
    font-size: var(--t-2xs);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--c-ash);
    display: flex;
    align-items: center;
    gap: var(--space-2xs);
  }

  .curve__key i {
    inline-size: 18px;
    block-size: 3px;
    background: currentColor;
    flex: none;
  }

  .curve__key .k-torque { color: var(--c-ember); }
  .curve__key .k-power  { color: var(--c-sulphur); }

  @media (prefers-reduced-motion: reduce) {
    .curve .plot { stroke-dashoffset: 0; transition: none; }
  }
}
