/* ============================================================
   Equipment detail page (single-equipment.php)
   The machine page follows DESIGN.md §12: a complete machine
   picture, a blue parameter table, and the conditions stated
   beside the figures they belong to. Sections alternate white and
   light grey, one band carries the brand blue, and the green stays
   a short rule or a left edge — never a background.
   Tokens come from assets/css/tokens.css; the section head, the
   cards and the fields come from site.css / framework.css.
   ============================================================ */

.nz-eq {
  /* Nothing on this page may widen the viewport (§13 of DESIGN.md). */
  overflow-x: clip;
  background: var(--white);
}

/* ---- Section rhythm (§5: 96px desktop, 52–68px phone) ---- */
.nz-eq-section {
  padding: 96px 0;
}

.nz-eq-section--soft {
  background: var(--gray-bg);
}

.nz-eq-section--blue {
  background: var(--blue);
  color: var(--blue-soft);
}

.nz-eq-section .nz-related {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

/* The section head: the shared .section-heading with the spacing on the
   wrapper, so every section on this page keeps one margin. */
.nz-eq-head {
  margin-bottom: 42px;
}

.nz-eq-head .section-heading {
  margin-bottom: 0;
}

.nz-eq-head .section-heading__copy h2 {
  max-width: 26ch;
  margin-bottom: 0;
}

@media (max-width: 940px) {
  .nz-eq-head {
    margin-bottom: 30px;
  }
}

@media (max-width: 900px) {
  .nz-eq-section {
    padding: 68px 0;
  }

  .nz-eq-section--features-more {
    padding-bottom: 28px;
  }

  .nz-eq-section--features-next {
    padding-top: 28px;
  }
}

@media (max-width: 650px) {
  .nz-eq-section {
    padding: 52px 0;
  }

  .nz-eq-section--features-more {
    padding-bottom: 22px;
  }

  .nz-eq-section--features-next {
    padding-top: 22px;
  }
}

/* ---- Page open: the machine beside its own facts ---- */
.nz-eq-hero {
  padding: 40px 0 76px;
  background: var(--white);
}

.nz-eq-hero .nz-breadcrumbs {
  margin-bottom: 28px;
}

/* A grid child that holds wrapping text and long model names. */
.nz-eq-hero__copy {
  min-width: 0;
}

/* The machine's copy and its picture share one band and are centred in it, so
   the text block sits against the middle of the picture instead of hanging from
   its top edge and leaving a slab of empty space between the buttons and the
   fact strip. The picture takes the larger half and the two are held together
   by a narrow gutter, because the copy seldom fills its own column and a wide
   gutter reads as an empty hole between the words and the machine. Nothing is
   stretched, so a picture is never cropped to fit. */
.nz-eq-hero__grid {
  display: grid;
  gap: 40px;
  grid-template-columns: minmax(0, 6fr) minmax(0, 6.5fr);
  align-items: center;
}

.nz-eq-hero__title {
  max-width: 20ch;
  margin-bottom: 16px;
}

.nz-eq-hero__lead {
  max-width: 62ch;
  margin-bottom: 0;
  font-size: 1.06rem;
  line-height: 1.65;
}

.nz-eq-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 20px 0 0;
  padding: 0;
  list-style: none;
}

.nz-eq-hero__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 26px;
  margin-top: 30px;
}

.nz-eq-hero__media {
  margin: 0;
  border: 1px solid var(--gray-line);
  border-radius: var(--radius);
  background: var(--gray-bg);
  overflow: hidden;
}

.nz-eq-hero__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: contain;
  background: var(--white);
}

/* ---- The fact strip: what the models in this range cover (§8: a technical
   panel carries a 3px brand-blue top edge and no shadow). ---- */
.nz-eq-facts {
  display: grid;
  gap: 0;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  margin: 56px 0 0;
  border: 1px solid var(--gray-line);
  border-top: 3px solid var(--blue);
  border-radius: var(--radius);
  background: var(--white);
}

.nz-eq-facts__row {
  padding: 20px 24px;
  border-left: 1px solid var(--gray-line);
}

.nz-eq-facts__row:first-child {
  border-left: 0;
}

.nz-eq-facts dt {
  color: var(--gray-text);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.nz-eq-facts dd {
  margin: 6px 0 0;
  color: var(--blue);
  font-size: 1.05rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.nz-eq-facts__note {
  max-width: 80ch;
  margin: 12px 0 0;
  color: var(--gray-text);
  font-size: 13px;
  line-height: 1.55;
}

/* ---- Body copy of a section ---- */
.nz-eq-lead {
  max-width: 68ch;
  margin-bottom: 26px;
  color: var(--text);
  font-size: 1.1rem;
  line-height: 1.65;
}

.nz-eq-prose {
  max-width: 78ch;
}

.nz-eq-prose > *:last-child {
  margin-bottom: 0;
}

.nz-eq-prose h3 {
  margin-top: 32px;
}

.nz-eq-prose ul,
.nz-eq-prose ol {
  max-width: 72ch;
  padding-left: 22px;
  color: var(--gray-text);
}

.nz-eq-prose li {
  margin-bottom: 8px;
}

.nz-eq-prose table {
  width: 100%;
  margin: 0 0 28px;
  border-collapse: collapse;
  font-size: 15px;
}

.nz-eq-prose th,
.nz-eq-prose td {
  padding: 12px 14px;
  border: 1px solid var(--gray-line);
  text-align: left;
  vertical-align: top;
}

.nz-eq-prose th {
  background: var(--gray-bg);
  color: var(--blue);
  font-weight: 700;
}

.nz-eq-subhead {
  margin: 0 0 14px;
  color: var(--blue);
  font-size: 1.05rem;
  font-weight: 700;
}

/* A second block inside the same column keeps its own distance. */
.nz-eq-split__col > .nz-eq-subhead:not(:first-child) {
  margin-top: 30px;
}

/* ---- The column that ends with the call to action ----
   The call to action closes the column instead of sitting under the section, so
   the split ends level: the column takes the height of the row and the button is
   pushed to the bottom of it. The padding on the button row keeps the distance
   from what is above it when there is no free space to absorb, which is the
   stacked layout and any column that is already the taller of the two. */
.nz-eq-split__col--cta {
  display: flex;
  flex-direction: column;
}

.nz-eq-split__col--cta .nz-eq-bluecta {
  padding-top: 30px;
  margin-top: auto;
}

/* ---- Condition cards (§8: rectangular, 1px edge, blue top edge) ----
   auto-fill, never auto-fit: a card row that is not full keeps the empty tracks
   it would have had when full, so three cards stay the width of a four-card row
   instead of stretching across it. Every card row on the equipment pages follows
   this (§Upd: 卡片尺寸固定).

   The 320px floor is not decoration: with auto-fill the column count comes from
   the floor and the gap, and the floor is what has to be chosen for the count.
   At the desktop container (1440px, gap 22px) a 320px floor gives
   (1440+22) ÷ (320+22) = 4.2 — four columns, so four cards fill the row and
   three leave one empty. At the 260px floor this grid had, it gave 5.1: the four
   cards of the conditions section were squeezed a fifth of the row narrower than
   a full row and left the fifth column empty. The other card rows are checked
   against the same sum — 300px floors give four columns, the scope's 380px floor
   gives three. */
.nz-eq-cards {
  display: grid;
  gap: 22px;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  align-items: stretch;
}

.nz-eq-card {
  display: flex;
  flex-direction: column;
  padding: 24px 24px;
  border: 1px solid var(--gray-line);
  border-top: 3px solid var(--blue);
  border-radius: var(--radius);
  background: var(--white);
}

.nz-eq-card__title {
  margin: 0 0 12px;
  color: var(--blue);
  font-size: 1.05rem;
  line-height: 1.35;
}

.nz-eq-card__text {
  color: var(--gray-text);
  font-size: 14.5px;
  line-height: 1.6;
}

.nz-eq-card__text > *:last-child {
  margin-bottom: 0;
}

.nz-eq-card__text p {
  margin: 0 0 12px;
}

.nz-eq-card__text ul {
  margin: 0 0 12px;
  padding-left: 18px;
}

.nz-eq-card__text li {
  margin-bottom: 8px;
  line-height: 1.5;
}

.nz-eq-card__text li:last-child {
  margin-bottom: 0;
}

/* ---- Capacity: the figure stays beside the basis it is stated on, and a
   picture added under the figure (产能配图) becomes the left half of a second
   row, where it takes its height from the basis panel beside it ---- */
.nz-eq-capacity {
  display: grid;
  gap: 28px 48px;
  grid-template-columns: minmax(0, 4fr) minmax(0, 6fr);
  align-items: stretch;
}

.nz-eq-capacity__figure {
  grid-column: 1;
  align-self: start;
  margin: 0;
  color: var(--blue);
  font-size: clamp(1.9rem, 3.4vw, 2.6rem);
  font-weight: 600;
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
}

/* The basis panel sits beside the figure by auto-placement, so a page that has
   no picture keeps the layout it had: the figure left, the basis right. */
.nz-eq-capacity__basis {
  padding: 24px 28px;
  border-left: 3px solid var(--green);
  border-radius: var(--radius);
  background: var(--gray-bg);
}

.nz-eq-capacity__ask {
  max-width: 60ch;
  margin: 0;
  color: var(--gray-text);
  font-size: 15px;
  line-height: 1.65;
}

/* With the number and the picture both filled in, the picture takes the left
   column and the reading it belongs to — the number, and the basis under it —
   stays in the right one, so the two columns share one row height and end level
   whatever the file's own proportions are. With only one of the two filled in,
   the grid places the panels side by side on its own. */
.nz-eq-capacity--with-photo .nz-eq-capacity__figure {
  grid-column: 2;
  grid-row: 1;
}

.nz-eq-capacity--with-photo .nz-eq-capacity__media {
  grid-column: 1;
  grid-row: 1 / span 2;
}

.nz-eq-capacity--with-photo .nz-eq-capacity__ask {
  grid-column: 2;
  grid-row: 2;
}

/* 产能配图: the figure and its basis share the right panel — the aside above
   already reads the figure together with the basis below it — and the picture
   fills the left column beside the pair. One row, so the pair and the picture
   are level, and no row is left two thirds empty as it was when the figure took
   a row of its own. */
.nz-eq-capacity--pair .nz-eq-capacity__media,
.nz-eq-capacity--pair .nz-eq-capacity__basis {
  grid-row: 1;
}

.nz-eq-capacity--pair .nz-eq-capacity__basis {
  grid-column: 2;
}

.nz-eq-capacity--pair .nz-eq-capacity__media {
  grid-column: 1;
}

/* The figure at the head of the panel, over the subhead it is stated on. */
.nz-eq-capacity--pair .nz-eq-capacity__basis .nz-eq-capacity__figure {
  margin: 0 0 16px;
}

/* The picture panel: the same bordered technical panel as the diagrams above,
   with the photo held whole inside it (§: contain, never crop). Its height comes
   from the row, never from the file — a portrait or very tall image must not
   push the left half of the section past the right one. */
.nz-eq-capacity__media {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 280px;
  max-height: 420px;
  margin: 0;
  padding: 16px;
  border: 1px solid var(--gray-line);
  border-top: 3px solid var(--blue);
  border-radius: var(--radius);
  background: var(--white);
}

.nz-eq-capacity__img {
  display: block;
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  object-fit: contain;
  border-radius: 2px;
  background: var(--white);
}

/* ---- The model table (§12: a blue parameter table — the field names sit on
   the brand blue in white, thin rows below; the table scrolls inside its own
   box and never widens the page) ---- */
.nz-eq-table-hint {
  margin: 0 0 10px;
  color: var(--gray-text);
  font-size: 13px;
}

.nz-eq-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--gray-line);
  border-radius: var(--radius);
  background: var(--white);
}

.nz-eq-table-wrap:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 2px;
}

.nz-eq-table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}

.nz-eq-table th,
.nz-eq-table td {
  padding: 11px 13px;
  border-right: 1px solid var(--gray-line);
  border-bottom: 1px solid var(--gray-line);
  text-align: left;
  vertical-align: top;
}

.nz-eq-table th:last-child,
.nz-eq-table td:last-child {
  border-right: 0;
}

.nz-eq-table thead th {
  border-bottom: 0;
  border-right-color: rgba(255, 255, 255, 0.25);
  background: var(--blue);
  color: var(--white);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.35;
  text-transform: uppercase;
  white-space: normal;
}

.nz-eq-table tbody tr:nth-child(even) td {
  background: #FBFCFD;
}

.nz-eq-table tbody tr:last-child td {
  border-bottom: 0;
}

.nz-eq-table__model {
  color: var(--blue);
  font-weight: 700;
  white-space: nowrap;
}

.nz-eq-table__sub {
  display: block;
  margin-top: 3px;
  color: var(--gray-text);
  font-size: 12px;
  font-weight: 400;
  white-space: normal;
}

/* ---- Parameters the comparison table does not place, one panel per model ---- */
.nz-eq-notes {
  display: grid;
  gap: 18px;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  margin-top: 26px;
}

.nz-eq-note {
  padding: 22px 24px;
  border: 1px solid var(--gray-line);
  border-radius: var(--radius);
  background: var(--white);
}

.nz-eq-note__model {
  margin: 0 0 14px;
  color: var(--blue);
  font-size: 1rem;
}

.nz-eq-note__list {
  margin: 0;
}

.nz-eq-note__list dt {
  color: var(--gray-text);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.nz-eq-note__list dd {
  margin: 4px 0 16px;
  color: var(--text);
  font-size: 14.5px;
  line-height: 1.6;
}

.nz-eq-note__list dd:last-child {
  margin-bottom: 0;
}

/* A note is typed as plain text, while a value kept from the rich text field
   still carries its own paragraphs; both read as one clean block here. */
.nz-eq-note__list dd > p:first-child {
  margin-top: 0;
}

.nz-eq-note__list dd > p:last-child {
  margin-bottom: 0;
}

/* ---- Scope of supply: included, optional and excluded side by side ---- */
/* One panel per group instead of columns inside one panel: an unknown number
   of groups then never draws a separator in the wrong place when it wraps.
   The 380px floor is what makes three panels the full row here: with the floor
   of the other card rows the grid would fit four, and a two-group row would
   print its panels a quarter of the width instead of the third they keep when
   all three groups are filled in. */
.nz-eq-scope {
  display: grid;
  gap: 22px;
  grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
}

.nz-eq-scope__col {
  padding: 24px 26px;
  border: 1px solid var(--gray-line);
  border-top: 3px solid var(--blue);
  border-radius: var(--radius);
  background: var(--white);
}

.nz-eq-scope__label {
  margin: 0 0 16px;
  color: var(--blue);
  font-size: 1.05rem;
}

.nz-eq-scope__list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.nz-eq-scope__item {
  display: flex;
  gap: 12px;
  padding: 12px 0;
  border-top: 1px solid var(--gray-line);
}

.nz-eq-scope__item:first-child {
  border-top: 0;
}

.nz-eq-scope__mark {
  flex: none;
  width: 16px;
  color: var(--green-dark);
  font-weight: 700;
}

.nz-eq-scope__col--excluded .nz-eq-scope__mark {
  color: var(--gray-text);
}

/* The text column of a row takes the remaining width and may break a long
   model name instead of widening the panel. */
.nz-eq-scope__body,
.nz-eq-checklist__body {
  flex: 1 1 auto;
  min-width: 0;
}

.nz-eq-scope__name {
  display: block;
  color: var(--text);
  font-size: 15px;
  font-weight: 600;
}

.nz-eq-scope__note {
  display: block;
  margin-top: 3px;
  color: var(--gray-text);
  font-size: 13.5px;
  line-height: 1.55;
}

/* ---- Two columns that become one when the text needs the width ---- */
.nz-eq-split {
  display: grid;
  gap: 36px 56px;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
}

/* One column only (the blue band with no guide copy): the list keeps the width
   it has beside a guide instead of stretching across the whole band. */
.nz-eq-split--solo {
  grid-template-columns: minmax(0, 1fr);
}

.nz-eq-split--solo .nz-eq-split__col--cta {
  max-width: 60ch;
}

/* ---- Label / value rows ---- */
.nz-eq-dl {
  margin: 0;
  border-top: 1px solid var(--gray-line);
}

.nz-eq-dl__row {
  display: grid;
  gap: 2px 20px;
  grid-template-columns: minmax(150px, 220px) minmax(0, 1fr);
  padding: 12px 0;
  border-bottom: 1px solid var(--gray-line);
}

.nz-eq-dl dt {
  color: var(--blue);
  font-size: 13px;
  font-weight: 600;
}

.nz-eq-dl dd {
  margin: 0;
  color: var(--text);
  font-size: 15px;
  line-height: 1.6;
}

/* ---- The blue band: what we need before a model is quoted ----
   White on #1B3770 is about 11.5:1 and #B9C7E4 about 6.8:1, so the copy
   passes AA; the numbered list is not a green badge, it is a sequence. */
.nz-eq-section--blue h2,
.nz-eq-section--blue .nz-eq-subhead,
.nz-eq-section--blue .nz-eq-checklist__name {
  color: var(--white);
}

.nz-eq-section--blue .eyebrow {
  color: var(--white);
}

.nz-eq-section--blue .section-heading__aside,
.nz-eq-section--blue .nz-eq-prose p,
.nz-eq-section--blue .nz-eq-prose li,
.nz-eq-section--blue .nz-eq-checklist__note,
.nz-eq-section--blue .nz-eq-bluecta__note {
  color: var(--blue-soft);
}

.nz-eq-section--blue .nz-eq-prose h3 {
  color: var(--white);
}

.nz-eq-checklist {
  display: grid;
  gap: 14px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.nz-eq-checklist__item {
  display: flex;
  gap: 16px;
  padding: 16px 18px;
  border: 1px solid rgba(255, 255, 255, 0.24);
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.06);
}

.nz-eq-checklist__num {
  flex: none;
  color: var(--yellow);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.nz-eq-checklist__name {
  display: block;
  font-size: 15px;
  font-weight: 600;
}

.nz-eq-checklist__note {
  display: block;
  margin-top: 3px;
  font-size: 13.5px;
  line-height: 1.55;
}

/* ---- The installation view in the blue band: the same framed panel as the
   numbered list beside it, so the picture and the list read as one band ---- */
.nz-eq-selection__media {
  margin: 26px 0 0;
  padding: 10px 10px 0;
  border: 1px solid rgba(255, 255, 255, 0.24);
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.06);
  overflow: hidden;
}

.nz-eq-selection__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: calc(var(--radius) - 2px);
}

.nz-eq-selection__cap {
  padding: 10px 4px;
  color: var(--blue-soft);
  font-size: 13px;
  line-height: 1.5;
}

.nz-eq-bluecta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 22px;
  margin: 40px 0 0;
}

.nz-eq-bluecta__note {
  margin: 0;
  font-size: 14px;
}

/* ---- Reading the band's own copy -----------------------------------------
   The guide is authored as a step list, so the band sets it as one: the bold
   lead-in of a step and of a sub-item stands on its own line instead of running
   into the sentence after it, and the sub-items hang on a rail under the step
   they belong to. The measure stops at 64ch, because a full column of 17px copy
   carries about 78 characters, which is longer than a paragraph can hold. */
.nz-eq-section--blue .nz-eq-prose {
  max-width: 64ch;
}

/* The opening line is the lead: white, one size up from the steps below it. */
.nz-eq-section--blue .nz-eq-prose > p:first-child {
  margin-bottom: 26px;
  color: var(--white);
  font-size: 1.05rem;
  line-height: 1.6;
}

/* A step: its lead-in holds its own line, and the steps stand apart, so each
   one reads as a separate decision. */
.nz-eq-section--blue .nz-eq-prose ul > li {
  margin-bottom: 26px;
}

.nz-eq-section--blue .nz-eq-prose ul > li:last-child {
  margin-bottom: 0;
}

.nz-eq-section--blue .nz-eq-prose ul > li > strong:first-child,
.nz-eq-section--blue .nz-eq-prose ul > li > em:first-child {
  display: block;
  margin-bottom: 9px;
  color: var(--white);
  font-size: 1.05rem;
  font-style: normal;
  font-weight: 600;
  line-height: 1.4;
}

/* The sub-items: one rail under the step they belong to, a short dash in the
   rail, the label in white and the detail in the band's soft colour, so a
   choice and the reason for it stay apart. */
.nz-eq-section--blue .nz-eq-prose ul ul {
  margin: 0;
  padding-left: 20px;
  border-left: 1px solid rgba(255, 255, 255, 0.22);
  list-style: none;
}

.nz-eq-section--blue .nz-eq-prose ul ul > li {
  position: relative;
  margin-bottom: 15px;
  font-size: 15px;
  line-height: 1.65;
}

.nz-eq-section--blue .nz-eq-prose ul ul > li:last-child {
  margin-bottom: 0;
}

.nz-eq-section--blue .nz-eq-prose ul ul > li::before {
  position: absolute;
  top: 0.8em;
  left: -13px;
  width: 7px;
  height: 1px;
  content: "";
  background: currentColor;
  opacity: 0.6;
}

.nz-eq-section--blue .nz-eq-prose ul ul > li > strong:first-child,
.nz-eq-section--blue .nz-eq-prose ul ul > li > em:first-child {
  display: block;
  margin-bottom: 3px;
  color: var(--white);
  font-size: 15.5px;
  font-style: normal;
  font-weight: 600;
}

/* ---- The numbered list beside the copy ----
   The figure keeps a column of its own, so every card's title starts on the
   same line whatever the count reaches, and the note under the title stays a
   step smaller than it. */
.nz-eq-section--blue .nz-eq-subhead {
  margin-bottom: 16px;
}

.nz-eq-section--blue .nz-eq-checklist__item {
  padding: 17px 20px;
}

.nz-eq-section--blue .nz-eq-checklist__num {
  width: 2.1em;
  padding-top: 1px;
  font-size: 14px;
  letter-spacing: 0.04em;
}

.nz-eq-section--blue .nz-eq-checklist__name {
  font-size: 15.5px;
  line-height: 1.4;
}

.nz-eq-section--blue .nz-eq-checklist__note {
  max-width: 68ch;
  margin-top: 4px;
  font-size: 14px;
  line-height: 1.6;
}

/* ---- Photos and videos ---- */
.nz-eq-media {
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  margin: 0;
  padding: 0;
  list-style: none;
}

.nz-eq-media__item {
  border: 1px solid var(--gray-line);
  border-radius: var(--radius);
  background: var(--gray-bg);
  overflow: hidden;
}

.nz-eq-media__link {
  display: block;
}

.nz-eq-media__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.nz-eq-videos {
  margin-top: 34px;
}

.nz-eq-videos__list {
  display: grid;
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

/* A row whose address was not usable keeps its title as plain text. */
.nz-eq-videos__plain {
  color: var(--gray-text);
  font-size: 15px;
}

/* ---- A record whose specification is not written yet ---- */
.nz-eq-empty {
  max-width: 72ch;
  padding: 30px 32px;
  border: 1px dashed var(--ph-border);
  border-left: 3px solid var(--green);
  border-radius: var(--radius);
  background: var(--gray-bg);
}

.nz-eq-empty__title {
  margin: 0 0 10px;
  color: var(--blue);
  font-size: 1.3rem;
}

.nz-eq-empty__text {
  margin-bottom: 0;
  font-size: 15px;
  line-height: 1.65;
}

.nz-eq-empty__cta {
  margin: 24px 0 0;
}

/* ---- Responsive (§13: the copy wraps, the table scrolls, the page never
   widens sideways) ---- */
@media (max-width: 1100px) {
  .nz-eq-hero__grid {
    gap: 32px;
  }
}

@media (max-width: 1000px) {
  .nz-eq-hero {
    padding-bottom: 60px;
  }

  .nz-eq-hero__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 34px;
  }

  .nz-eq-hero__title {
    max-width: 28ch;
  }

  .nz-eq-facts {
    margin-top: 40px;
  }

  .nz-eq-capacity {
    grid-template-columns: minmax(0, 1fr);
    gap: 28px;
  }

  /* One column: the number, the picture and the basis stack in that order, so
     the row placements above are given up here. */
  .nz-eq-capacity__figure,
  .nz-eq-capacity__basis,
  .nz-eq-capacity__ask,
  .nz-eq-capacity--with-photo .nz-eq-capacity__figure,
  .nz-eq-capacity--with-photo .nz-eq-capacity__media,
  .nz-eq-capacity--with-photo .nz-eq-capacity__basis,
  .nz-eq-capacity--with-photo .nz-eq-capacity__ask,
  .nz-eq-capacity--pair .nz-eq-capacity__figure,
  .nz-eq-capacity--pair .nz-eq-capacity__media,
  .nz-eq-capacity--pair .nz-eq-capacity__basis {
    grid-column: 1;
    grid-row: auto;
  }
}

@media (max-width: 700px) {
  .nz-eq-card,
  .nz-eq-scope__col,
  .nz-eq-note {
    padding: 22px 20px;
  }

  .nz-eq-capacity__basis,
  .nz-eq-empty {
    padding: 24px 20px;
  }

  .nz-eq-dl__row {
    grid-template-columns: minmax(0, 1fr);
  }

  .nz-eq-prose table {
    display: block;
    overflow-x: auto;
  }
}

/* ============================================================
   Text-and-picture blocks (structure diagram, key features,
   model cards). The picture stays a bordered technical panel:
   contain, never crop, so no machine contour is cut off.
   ============================================================ */

/* ---- Overview: the function read beside the machine's own diagrams.
   Equal desktop columns give the drawing enough room to balance the long copy;
   top alignment avoids leaving a large blank above a shorter technical image.
   The panel takes one or two drawings: the first keeps the contained 4:3 frame,
   the second is drawn at its own proportions under it, and the pair fills the
   column down to the copy so a long text does not leave the right side empty.
   Either drawing stays contained and is never cropped. ---- */
.nz-eq-overview--split {
  display: grid;
  gap: 32px 40px;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: start;
}

.nz-eq-overview__media {
  margin: 0;
  padding: 16px;
  border: 1px solid var(--gray-line);
  border-top: 3px solid var(--blue);
  border-radius: var(--radius);
  background: var(--white);
}

.nz-eq-overview__figure {
  margin: 0;
}

.nz-eq-overview__figure + .nz-eq-overview__figure {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--gray-line);
}

.nz-eq-overview__img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 2px;
  background: var(--white);
}

/* The first drawing holds the panel's 4:3 frame; the second is left at its own
   proportions, so it reads whole instead of inside another framed box. */
.nz-eq-overview__figure:first-child .nz-eq-overview__img {
  aspect-ratio: 4 / 3;
  object-fit: contain;
}

.nz-eq-media-cap {
  margin: 10px 4px 0;
  color: var(--gray-text);
  font-size: 13px;
  line-height: 1.5;
}

/* ---- Key features: one picture, one short text, one part ----
   auto-fill, so a layout that is described by two features prints two cards the
   width of a four-card row and closes the row early (§Upd). */
.nz-eq-features {
  display: grid;
  gap: 22px;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
}

/* ---- A machine that comes in two layouts ----
   The shredder prints one features part per layout, each under the label of its
   own field. The two parts are one subject, so the seam between them keeps a
   tighter rhythm than a boundary between two sections does: 40px on each side of
   it on the desktop rhythm, and less where the sections themselves tighten. */
.nz-eq-section--features-more {
  padding-bottom: 40px;
}

.nz-eq-section--features-next {
  padding-top: 40px;
}

.nz-eq-feature {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--gray-line);
  border-top: 3px solid var(--blue);
  border-radius: var(--radius);
  background: var(--white);
  overflow: hidden;
}

.nz-eq-feature__media {
  aspect-ratio: 4 / 3;
  margin: 0;
  background: var(--white);
  overflow: hidden;
}

.nz-eq-feature__img,
.nz-eq-feature__media .nz-ph__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.nz-eq-feature__body {
  padding: 20px 24px 24px;
  border-top: 1px solid var(--gray-line);
}

.nz-eq-feature__name {
  margin: 0 0 8px;
  color: var(--blue);
  font-size: 1.05rem;
}

.nz-eq-feature__text {
  margin: 0;
  color: var(--gray-text);
  font-size: 15px;
  line-height: 1.65;
}

.nz-eq-feature__text:last-child {
  margin-bottom: 0;
}

/* ---- Wear parts and recommended spares --------------------------------- */
/* The cards are the same picture cards as the key features above; only the
   group heading, the replacement basis line and the closing note are new. */
.nz-eq-parts__group + .nz-eq-parts__group {
  margin-top: 44px;
}

.nz-eq-parts__label {
  margin: 0 0 18px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--gray-line);
  color: var(--blue);
  font-size: 1.05rem;
}

.nz-eq-parts__basis {
  margin: 0 0 10px;
  color: var(--green-dark);
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.5;
}

.nz-eq-parts__note {
  max-width: 68ch;
  margin: 36px 0 0;
  color: var(--gray-text);
  font-size: 15px;
  line-height: 1.65;
}

/* ---- Model cards: a model's headline figures and the notes that belong to it ---- */
.nz-eq-model-cards {
  display: grid;
  gap: 22px;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
}

.nz-eq-model-cards + .nz-eq-table-hint {
  margin-top: 34px;
}

.nz-eq-model-card {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--gray-line);
  border-radius: var(--radius);
  background: var(--white);
  overflow: hidden;
}

/* ---- Delivered equipment: up to three machines already at work ----------
   Three to a row, the same card the home page prints: a 4:3 picture on white,
   a bordered shell that only changes its edge on hover, and the title and note
   inside the same 20/22 padding. */
.nz-eq-delivered {
  display: grid;
  gap: 26px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.nz-eq-delivered + .nz-eq-table-hint {
  margin-top: 34px;
}

.nz-eq-delivered__card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--gray-line);
  border-radius: var(--radius);
  background: var(--white);
  transition: border-color 180ms ease;
}

.nz-eq-delivered__card:hover,
.nz-eq-delivered__card:focus-within {
  border-color: var(--blue);
}

.nz-eq-delivered__media {
  display: block;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-bottom: 1px solid var(--gray-line);
  background: var(--gray-bg);
}

.nz-eq-delivered__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.nz-eq-delivered__body {
  padding: 20px 22px 22px;
}

.nz-eq-delivered__title {
  margin: 0 0 10px;
  color: var(--text);
  font-size: 20px;
  line-height: 1.3;
}

.nz-eq-delivered__text {
  margin: 0;
  color: var(--text);
  font-size: 15px;
  line-height: 1.6;
}

/* ---- Delivery cases: the machine's projects, up to six cards ------------
   The same card as the delivered equipment above and as the project rows on
   the home page: category line, picture, title, the editor's summary, the
   year and place behind a rule, and the link the whole card carries. Three to
   a row, so six records read as two even rows. */
.nz-eq-delivery-cases {
  display: grid;
  gap: 26px;
  margin: 0;
  padding: 0;
  list-style: none;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.nz-eq-delivery-case {
  margin: 0;
}

.nz-eq-delivery-case__link {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  border: 1px solid var(--gray-line);
  border-radius: var(--radius);
  background: var(--white);
  color: inherit;
  text-decoration: none;
  transition: border-color 180ms ease;
}

.nz-eq-delivery-case__link:hover,
.nz-eq-delivery-case__link:focus-visible {
  border-color: var(--blue);
}

.nz-eq-delivery-case__media {
  display: block;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-bottom: 1px solid var(--gray-line);
  background: var(--gray-bg);
}

.nz-eq-delivery-case__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.nz-eq-delivery-case__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 20px 22px 22px;
}

.nz-eq-delivery-case__cat {
  display: block;
  margin: 0 0 8px;
  color: var(--gray-text);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.nz-eq-delivery-case__title {
  display: block;
  margin-bottom: 10px;
  color: var(--text);
  font-size: 20px;
  font-weight: 600;
  line-height: 1.3;
}

.nz-eq-delivery-case__text {
  display: block;
  margin-bottom: 16px;
  color: var(--text);
  font-size: 15px;
  line-height: 1.6;
}

.nz-eq-delivery-case__spec {
  display: block;
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px solid var(--gray-line);
  color: var(--gray-text);
  font-size: 13.5px;
  line-height: 1.5;
}

.nz-eq-delivery-case__more {
  margin-top: 14px;
  align-self: flex-start;
  font-size: 14.5px;
}

.nz-eq-delivery-case__link:hover .nz-eq-delivery-case__title,
.nz-eq-delivery-case__link:focus-visible .nz-eq-delivery-case__title {
  text-decoration: underline;
}

/* Both card rows drop to two columns and then to one, like every other card
   row on the site. */
@media (max-width: 1024px) {
  .nz-eq-delivered,
  .nz-eq-delivery-cases {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .nz-eq-delivered,
  .nz-eq-delivery-cases {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
  }
}

.nz-eq-model-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 14px;
  padding: 20px 24px 24px;
}

.nz-eq-model-card__name {
  margin: 0;
  color: var(--blue);
  font-size: 1.15rem;
}

.nz-eq-model-card__specs {
  display: grid;
  gap: 0;
  margin: 0;
}

.nz-eq-model-card__spec {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 14px;
  padding: 8px 0;
  border-bottom: 1px solid var(--gray-line);
}

.nz-eq-model-card__spec:last-child {
  border-bottom: 0;
}

.nz-eq-model-card__spec dt {
  color: var(--gray-text);
  font-size: 13px;
  font-weight: 400;
}

.nz-eq-model-card__spec dd {
  margin: 0;
  color: var(--text);
  font-size: 14.5px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.nz-eq-model-card__notes {
  display: grid;
  gap: 8px;
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px solid var(--gray-line);
}

.nz-eq-model-card__note-label {
  margin: 0;
  color: var(--gray-text);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.nz-eq-model-card__note-text {
  color: var(--gray-text);
  font-size: 14px;
  line-height: 1.6;
}

.nz-eq-model-card__note-text > *:last-child {
  margin-bottom: 0;
}

@media (max-width: 900px) {
  .nz-eq-overview--split {
    grid-template-columns: minmax(0, 1fr);
    gap: 28px;
  }
}

/* ---- 型号表自定义代码 (§12): the record may carry the table as markup instead
   of letting the layout build it. That markup is a block of its own — its table
   box, its per-model notes, whatever the record needs — so the layer around it
   only scrolls and aligns. The metrics below are repeated under it rather than
   added to the .nz-eq-table selectors, so a hand-written table that carries no
   class still reads like the generated one, and the generated table cannot be
   affected by a change made for this. ---- */

.nz-eq-model-code {
  overflow-x: auto;
}

.nz-eq-model-code > *:first-child {
  margin-top: 0;
}

.nz-eq-model-code > *:last-child {
  margin-bottom: 0;
}

.nz-eq-model-code table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}

.nz-eq-model-code th,
.nz-eq-model-code td {
  padding: 11px 13px;
  border-right: 1px solid var(--gray-line);
  border-bottom: 1px solid var(--gray-line);
  text-align: left;
  vertical-align: top;
}

.nz-eq-model-code th:last-child,
.nz-eq-model-code td:last-child {
  border-right: 0;
}

.nz-eq-model-code thead th {
  border-bottom: 0;
  border-right-color: rgba(255, 255, 255, 0.25);
  background: var(--blue);
  color: var(--white);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.35;
  text-transform: uppercase;
  white-space: normal;
}

.nz-eq-model-code tbody tr:nth-child(even) td {
  background: #FBFCFD;
}

.nz-eq-model-code tbody tr:last-child td {
  border-bottom: 0;
}

.nz-eq-model-code p {
  margin: 14px 0;
  color: var(--gray-text);
  font-size: 14px;
  line-height: 1.65;
}
