.catalog-page .site-head {
  position: fixed;
  background: color-mix(in srgb, var(--page) 88%, transparent);
  backdrop-filter: blur(18px);
}

.catalog-main {
  overflow: clip;
}

.catalog-hero {
  min-height: 76svh;
  display: grid;
  align-items: end;
  padding-block: calc(var(--header-h) + var(--space-8)) var(--space-7);
  border-block-end: var(--hairline) solid var(--line-strong);
}

.catalog-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(16rem, 0.75fr);
  gap: var(--space-7);
  align-items: end;
}

.catalog-hero h1 {
  max-width: 11ch;
  margin-block-start: var(--space-5);
  font-size: clamp(3.5rem, 2rem + 7vw, 7.5rem);
  font-weight: 500;
  line-height: 0.94;
  letter-spacing: -0.045em;
  white-space: nowrap;
}

.catalog-lede {
  max-width: var(--measure);
  color: var(--ink-muted);
  font-size: var(--text-lead);
}

.catalog-index {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-block-start: var(--space-7);
  border-block: var(--hairline) solid var(--line-strong);
}

.catalog-index a {
  min-height: 5.5rem;
  display: grid;
  align-content: center;
  gap: var(--space-1);
  padding: var(--space-3) var(--space-4);
  border-inline-start: var(--hairline) solid var(--line);
  text-decoration: none;
}

.catalog-index a:first-child {
  border-inline-start: 0;
}

.catalog-index span {
  color: var(--signal-strong);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-label);
}

.catalog-index strong {
  font-size: var(--text-body);
  font-weight: 620;
}

.specimen {
  scroll-margin-top: calc(var(--header-h) + var(--space-3));
  padding-block: var(--space-9);
  border-block-end: var(--hairline) solid var(--line-strong);
}

.specimen:nth-of-type(even) {
  background: var(--surface-quiet);
}

.specimen-heading {
  display: grid;
  grid-template-columns: minmax(5rem, 0.3fr) minmax(0, 1.35fr) minmax(17rem, 0.65fr);
  gap: var(--space-6);
  align-items: end;
}

.specimen-code {
  align-self: start;
  color: var(--signal-strong);
  font-size: var(--text-xs);
  font-weight: 650;
  letter-spacing: var(--tracking-label);
}

.specimen h2 {
  font-size: clamp(3.5rem, 2.5rem + 4vw, 7rem);
  font-weight: 500;
  line-height: 0.94;
  letter-spacing: -0.04em;
}

.specimen-summary {
  color: var(--ink-muted);
  font-size: var(--text-lead);
}

.vital-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-block-start: var(--space-7);
  border-block: var(--hairline) solid var(--line-strong);
}

.vital-grid div {
  min-width: 0;
  padding: var(--space-4);
  border-inline-start: var(--hairline) solid var(--line);
}

.vital-grid div:first-child {
  border-inline-start: 0;
}

.vital-grid dt,
.spec-list dt {
  color: var(--ink-muted);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-label);
}

.vital-grid dd {
  margin-block-start: var(--space-3);
  font-size: var(--text-sm);
  font-weight: 620;
}

.detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(18rem, 0.75fr);
  gap: var(--space-7);
  margin-block-start: var(--space-8);
  align-items: start;
}

.detail-label {
  margin-block-end: var(--space-4);
  color: var(--ink-muted);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-label);
}

.capability-list {
  border-block-start: var(--hairline) solid var(--line-strong);
}

.capability-list li {
  display: grid;
  grid-template-columns: 4.5rem minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: var(--space-4);
  padding-block: var(--space-4);
  border-block-end: var(--hairline) solid var(--line);
}

.capability-list span {
  color: var(--signal-strong);
  font-size: var(--text-xs);
}

.capability-list strong {
  font-size: var(--text-body);
  font-weight: 620;
}

.capability-list p {
  color: var(--ink-muted);
  font-size: var(--text-sm);
}

.technical-panel {
  position: sticky;
  inset-block-start: calc(var(--header-h) + var(--space-5));
}

.stack-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-block-end: var(--space-6);
}

.stack-list li {
  padding: var(--space-1) var(--space-2);
  border: var(--hairline) solid var(--line-strong);
  font-size: var(--text-xs);
}

.spec-list {
  border-block-start: var(--hairline) solid var(--line-strong);
}

.spec-list div {
  display: grid;
  grid-template-columns: 7rem minmax(0, 1fr);
  gap: var(--space-3);
  padding-block: var(--space-3);
  border-block-end: var(--hairline) solid var(--line);
}

.spec-list dd {
  font-size: var(--text-sm);
}

.operation-flow {
  margin-block-start: var(--space-8);
  padding-block-start: var(--space-5);
  border-block-start: var(--hairline) solid var(--line-strong);
}

.operation-flow ol {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-block-start: var(--space-4);
}

.operation-flow li {
  position: relative;
  min-height: 10rem;
  padding: var(--space-4);
  border-inline-start: var(--hairline) solid var(--line);
}

.operation-flow li:first-child {
  border-inline-start: 0;
}

.operation-flow li::before {
  content: attr(data-step);
  display: block;
  margin-block-end: var(--space-4);
  color: var(--signal-strong);
  font-size: var(--text-xs);
}

.operation-flow strong {
  display: block;
  margin-block-end: var(--space-2);
  font-size: var(--text-sm);
}

.operation-flow span {
  color: var(--ink-muted);
  font-size: var(--text-xs);
  line-height: 1.65;
}

.specimen-action {
  display: flex;
  justify-content: flex-end;
  margin-block-start: var(--space-6);
}

.catalog-source {
  padding-block: var(--space-6);
  color: var(--ink-soft);
  font-size: var(--text-xs);
}

.catalog-source a {
  display: inline-block;
  min-height: 1.5rem;
  line-height: 1.5rem;
  text-underline-offset: 0.2em;
}

/* 제품 원장은 현장 선택 패널과 같은 15px 본문·행간·열 정렬 규칙을 따른다. */
.catalog-page .capability-list li,
.catalog-page .spec-list div,
.catalog-page .operation-flow span {
  font-size: 0.9375rem;
  line-height: 1.6;
}

.catalog-page .capability-list li {
  grid-template-columns: 5rem minmax(10rem, 0.8fr) minmax(0, 1.2fr);
}

.catalog-page .spec-list div {
  grid-template-columns: 7.5rem minmax(0, 1fr);
}

@media (max-width: 62rem) {
  .catalog-hero-grid,
  .specimen-heading,
  .detail-grid {
    grid-template-columns: 1fr;
  }

  .catalog-lede {
    max-width: 34rem;
  }

  .technical-panel {
    position: static;
  }

  .principle-list,
  .operation-flow ol {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 43rem) {
  .catalog-page .site-head {
    position: relative;
  }

  .catalog-hero {
    min-height: 0;
    padding-block: var(--space-7);
  }

  .catalog-hero h1 {
    font-size: clamp(1.8rem, 9.5vw, 3rem);
  }

  .catalog-index,
  .vital-grid,
  .operation-flow ol {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .catalog-index,
  .catalog-index a,
  .vital-grid > *,
  .operation-flow li {
    min-width: 0;
  }

  .catalog-index a {
    overflow-wrap: anywhere;
  }

  .catalog-index a:nth-child(3),
  .vital-grid div:nth-child(3),
  .operation-flow li:nth-child(3) {
    border-inline-start: 0;
  }

  .catalog-index a:nth-child(n + 3),
  .vital-grid div:nth-child(n + 3),
  .operation-flow li:nth-child(n + 3) {
    border-block-start: var(--hairline) solid var(--line);
  }

  .specimen {
    padding-block: var(--space-8);
  }

  .specimen h2 {
    font-size: clamp(3rem, 17vw, 5rem);
  }

  .capability-list li {
    grid-template-columns: 3.5rem minmax(0, 1fr);
  }

  .capability-list p {
    grid-column: 2;
  }

  .operation-flow li {
    min-height: 9rem;
  }
}
