.page-hero {
  position: relative;
  overflow: hidden;
  padding-block: var(--space-section-compact);
  background: var(--ink-950);
  color: var(--white);
}

.page-hero::after {
  position: absolute;
  width: clamp(11rem, 28vw, 28rem);
  aspect-ratio: 1;
  inset-block-start: 50%;
  inset-inline-end: calc(-1 * clamp(4rem, 10vw, 10rem));
  border: var(--stroke-signal) solid var(--signal-red-700);
  border-radius: 50%;
  content: "";
  opacity: 0.8;
  pointer-events: none;
  transform: translateY(-50%);
}

.page-hero__grid {
  position: relative;
  z-index: var(--layer-content);
  display: grid;
  gap: var(--space-xl);
}

.page-hero__copy {
  max-width: var(--layout-measure-wide);
}

.page-hero .eyebrow {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  color: var(--white);
}

.page-hero .eyebrow::before {
  width: 2rem;
  height: var(--stroke-signal);
  background: var(--signal-red-700);
  content: "";
}

.page-hero h1 {
  margin-block-start: var(--space-sm);
  color: var(--white);
}

.page-hero__lead {
  max-width: 56ch;
  margin-block-start: var(--space-lg);
  color: var(--steel-200);
  font-size: var(--type-body-large);
  line-height: 1.45;
}

.page-hero__actions,
.section-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  margin-block-start: var(--space-lg);
}

.page-hero__helper {
  max-width: 60ch;
  margin-block-start: var(--space-md);
  color: var(--steel-200);
  font-size: var(--type-body-small);
}

.breadcrumbs {
  position: relative;
  z-index: var(--layer-content);
  margin-block-end: var(--space-lg);
}

.breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2xs);
  color: var(--steel-200);
  font-size: var(--type-caption);
}

.breadcrumbs li:not(:last-child)::after {
  margin-inline-start: var(--space-2xs);
  color: var(--steel-400);
  content: "/";
}

.breadcrumbs a {
  color: var(--steel-200);
}

.gate-hero__media {
  position: relative;
  align-self: end;
}

.gate-hero__media::before {
  position: absolute;
  z-index: var(--layer-content);
  width: 4rem;
  height: var(--stroke-signal);
  inset-block-start: 0;
  inset-inline-start: 0;
  background: var(--signal-red-700);
  content: "";
}

.gate-hero__media picture,
.gate-hero__media img {
  width: 100%;
}

.gate-hero__media img {
  aspect-ratio: 16 / 9;
  border: var(--stroke-hairline) solid var(--steel-650);
  object-fit: cover;
}

.gate-hero__caption {
  margin-block-start: var(--space-xs);
  color: var(--steel-200);
  font-size: var(--type-caption);
}

.family-status {
  margin-block-start: var(--space-md);
}

.intro-block {
  display: grid;
  gap: var(--space-lg);
}

.intro-block__copy p {
  margin-block-start: var(--space-md);
  color: var(--text-secondary);
  font-size: var(--type-body-large);
}

.intro-block__aside {
  align-self: start;
  padding: var(--space-md);
  border-block-start: var(--stroke-signal) solid var(--flow-blue-700);
  background: var(--white);
}

.intro-block__aside p {
  color: var(--text-secondary);
}

.filter-panel {
  position: relative;
  z-index: var(--layer-content);
  margin-block-start: calc(-1 * var(--space-xl));
  padding: var(--space-md);
  border: var(--stroke-hairline) solid var(--border-default);
  border-block-start: var(--stroke-signal) solid var(--signal-red-700);
  background: var(--white);
  box-shadow: var(--elevation-raised);
}

.filter-panel__heading {
  color: var(--ink-950);
  font-family: var(--font-display);
  font-size: var(--type-heading-4);
  font-weight: 600;
}

.filter-panel__controls {
  display: grid;
  gap: var(--space-sm);
  margin-block-start: var(--space-md);
}

.field-group {
  display: grid;
  gap: var(--space-2xs);
}

.field-group label {
  color: var(--ink-800);
  font-size: var(--type-body-small);
  font-weight: 600;
}

.field-group input,
.field-group select {
  width: 100%;
  min-height: 3rem;
  padding: var(--space-xs) var(--space-sm);
  border: var(--stroke-strong) solid var(--border-strong);
  border-radius: var(--radius-sm);
  background: var(--white);
  color: var(--ink-800);
  font-size: 1rem;
}

.filter-panel__clear {
  align-self: end;
  justify-self: start;
  min-height: 3rem;
  padding: var(--space-xs) 0;
  border: 0;
  background: transparent;
  color: var(--flow-blue-700);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.filter-panel__status {
  margin-block-start: var(--space-md);
  padding-block-start: var(--space-sm);
  border-block-start: var(--stroke-hairline) solid var(--border-default);
  color: var(--text-secondary);
  font-size: var(--type-body-small);
}

.catalog {
  padding-block: var(--space-section-compact) var(--space-section-default);
}

.catalog-grid {
  display: grid;
  gap: var(--grid-gap);
}

.product-card {
  position: relative;
  display: flex;
  min-height: 19rem;
  flex-direction: column;
  padding: var(--space-lg);
  border: var(--stroke-hairline) solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--white);
  transition: border-color var(--duration-fast) var(--easing-standard),
    transform var(--duration-fast) var(--easing-standard);
}

.product-card::before {
  position: absolute;
  width: 3rem;
  height: var(--stroke-strong);
  inset-block-start: -1px;
  inset-inline-start: var(--space-lg);
  background: var(--flow-blue-700);
  content: "";
  transition: width var(--duration-standard) var(--easing-enter);
}

.product-card:hover,
.product-card:focus-within {
  border-color: var(--flow-blue-700);
  transform: translateY(-0.125rem);
}

.product-card:hover::before,
.product-card:focus-within::before {
  width: calc(100% - (2 * var(--space-lg)));
}

.product-card__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm);
  color: var(--steel-650);
  font-size: var(--type-meta);
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.product-card__number {
  color: var(--signal-red-700);
  font-family: var(--font-display);
  font-size: var(--type-heading-4);
  letter-spacing: 0;
}

.product-card h3 {
  margin-block-start: var(--space-lg);
  font-size: var(--type-heading-3);
}

.product-card__description {
  margin-block-start: var(--space-md);
  color: var(--text-secondary);
}

.product-card .text-link {
  align-self: flex-start;
  margin-block-start: auto;
  padding-block-start: var(--space-lg);
}

.catalog-empty {
  margin-block-start: var(--space-xl);
  padding: var(--space-xl);
  border: var(--stroke-hairline) solid var(--border-default);
  background: var(--white);
  text-align: center;
}

.catalog-empty h2 {
  margin-inline: auto;
  font-size: var(--type-heading-3);
}

.catalog-empty p {
  margin: var(--space-sm) auto 0;
  color: var(--text-secondary);
}

.catalog-empty button {
  margin-block-start: var(--space-md);
}

.variants-section {
  background: var(--mist-100);
}

.section-heading {
  display: grid;
  gap: var(--space-sm);
  margin-block-end: var(--space-xl);
}

.section-heading > p:last-child {
  color: var(--text-secondary);
  font-size: var(--type-body-large);
}

.variant-grid {
  display: grid;
  gap: var(--grid-gap);
}

.variant-card {
  display: flex;
  min-height: 20rem;
  flex-direction: column;
  padding: var(--space-lg);
  border: var(--stroke-hairline) solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--white);
}

.variant-card h3 {
  margin-block-start: var(--space-lg);
  font-size: var(--type-heading-4);
}

.variant-card > p:not(.status-chip) {
  margin-block-start: var(--space-md);
  color: var(--text-secondary);
}

.variant-card .status-chip {
  align-self: flex-start;
}

.variant-card .text-link {
  align-self: flex-start;
  margin-block-start: auto;
  padding-block-start: var(--space-lg);
}

.specification-section {
  background: var(--paper-50);
}

.table-cue {
  margin-block-end: var(--space-xs);
  color: var(--text-secondary);
  font-size: var(--type-caption);
}

.table-scroll {
  overflow-x: auto;
  border: var(--stroke-hairline) solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--white);
}

.table-scroll:focus-visible {
  outline: 3px solid var(--focus-blue);
  outline-offset: 2px;
}

.specification-table {
  width: 100%;
  min-width: 38rem;
  border-collapse: collapse;
  font-size: var(--type-body-small);
}

.specification-table caption {
  padding: var(--space-sm);
  background: var(--ink-950);
  color: var(--white);
  font-size: var(--type-body);
  font-weight: 600;
  text-align: start;
}

.specification-table th,
.specification-table td {
  padding: var(--space-sm);
  border-block-end: var(--stroke-hairline) solid var(--border-default);
  text-align: start;
  vertical-align: top;
}

.specification-table th {
  width: 40%;
  color: var(--ink-800);
  font-weight: 600;
}

.specification-table tr:nth-child(even) {
  background: var(--mist-100);
}

.specification-table tr:last-child > * {
  border-block-end: 0;
}

.specification-helper {
  margin-block-start: var(--space-md);
  color: var(--text-secondary);
}

.downloads-block {
  display: grid;
  gap: var(--space-xl);
}

.empty-document {
  padding: var(--space-lg);
  border: var(--stroke-hairline) solid var(--border-default);
  border-inline-start: var(--stroke-signal) solid var(--warning-800);
  background: var(--warning-100);
}

.empty-document__type {
  color: var(--warning-800);
  font-size: var(--type-meta);
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.empty-document h3 {
  margin-block-start: var(--space-sm);
  font-size: var(--type-heading-4);
}

.empty-document p:not(.empty-document__type) {
  margin-block-start: var(--space-sm);
  color: var(--text-secondary);
}

.empty-document .button {
  margin-block-start: var(--space-md);
}

.closing-panel {
  position: relative;
  overflow: hidden;
  background: var(--flow-blue-800);
  color: var(--white);
}

.closing-panel::after {
  position: absolute;
  width: 12rem;
  aspect-ratio: 1;
  inset-block-end: -6rem;
  inset-inline-end: var(--layout-gutter);
  border: var(--stroke-signal) solid var(--signal-red-700);
  border-radius: 50%;
  content: "";
  pointer-events: none;
}

.closing-panel__inner {
  position: relative;
  z-index: var(--layer-content);
}

.closing-panel h2 {
  color: var(--white);
}

.page-hero :where(a, button):focus-visible,
.closing-panel :where(a, button):focus-visible {
  outline-color: var(--focus-gold);
}

.closing-panel p {
  margin-block-start: var(--space-md);
  color: var(--steel-200);
  font-size: var(--type-body-large);
}

.placeholder-page {
  min-height: 34rem;
}

.placeholder-page .page-hero {
  padding-block: var(--space-section-hero);
}

.placeholder-page .page-hero__copy {
  max-width: 58rem;
}

.placeholder-page .page-hero__lead {
  max-width: 60ch;
}

.not-found-code {
  color: var(--steel-200);
  font-family: var(--font-display);
  font-size: var(--type-display-number);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 0.9;
}

@media (min-width: 30rem) {
  .filter-panel__controls {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .field-group--search,
  .filter-panel__clear {
    grid-column: 1 / -1;
  }
}

@media (min-width: 48rem) {
  .page-hero {
    padding-block: var(--space-section-default);
  }

  .intro-block,
  .downloads-block {
    grid-template-columns: minmax(0, 1.35fr) minmax(16rem, 0.65fr);
    gap: var(--space-xl);
  }

  .filter-panel {
    padding: var(--space-lg);
  }

  .filter-panel__controls {
    grid-template-columns: minmax(15rem, 1.5fr) repeat(2, minmax(10rem, 1fr)) auto;
    align-items: end;
  }

  .field-group--search,
  .filter-panel__clear {
    grid-column: auto;
  }

  .catalog-grid,
  .variant-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .product-card:nth-child(3n + 1) {
    min-height: 22rem;
  }
}

@media (min-width: 75rem) {
  .gate-hero__grid {
    grid-template-columns: minmax(0, 0.88fr) minmax(32rem, 1.12fr);
    align-items: end;
  }

  .catalog-grid {
    grid-template-columns: repeat(12, minmax(0, 1fr));
  }

  .product-card {
    grid-column: span 4;
  }

  .product-card:nth-child(1),
  .product-card:nth-child(6),
  .product-card:nth-child(9) {
    grid-column: span 5;
  }

  .product-card:nth-child(2),
  .product-card:nth-child(7) {
    grid-column: span 7;
  }

  .variant-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 47.999rem) {
  .page-hero__actions .button,
  .section-actions .button {
    width: 100%;
  }
}
