.infrastructure-page .paper-masthead h1 { max-width: 780px; }
.infrastructure-page .paper-contents ol { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 24px; }
.infrastructure-page .paper-contents li:nth-child(3) { border-top: 0; }

.infra-map { margin: 58px 0 8px; border-top: 1px solid rgba(246, 240, 228, .14); border-bottom: 1px solid rgba(246, 240, 228, .14); padding: 32px 0 28px; }
.infra-map-heading { display: grid; grid-template-columns: 1fr minmax(220px, 310px); gap: 35px; align-items: end; margin-bottom: 24px; }
.infra-map-heading span { color: #c8ff31; font: 600 9px/1.4 "IBM Plex Mono", monospace; letter-spacing: .15em; text-transform: uppercase; }
.infra-map-heading h2 { margin: 11px 0 0; color: #f6f0e4; font-size: clamp(25px, 3.3vw, 34px); line-height: 1.12; letter-spacing: -.035em; }
.infra-map-heading p { margin: 0; color: #858a80; font: 400 13px/1.6 Georgia, "Times New Roman", serif; }

.infra-flow-window { max-width: 100%; overflow-x: auto; padding: 2px 2px 16px; scrollbar-color: #c8ff31 #252820; }
.infra-flow-window:focus-visible { outline: 2px solid #c8ff31; outline-offset: 4px; }
.infra-flow { display: grid; grid-template-columns: repeat(6, 214px); gap: 36px; width: max-content; }
.infra-stage { position: relative; min-height: 292px; display: flex; flex-direction: column; border: 1px solid rgba(246, 240, 228, .14); border-radius: 6px; background: #191b17; padding: 20px; }
.infra-stage:not(:last-child)::after { content: "→"; position: absolute; top: 50%; right: -27px; color: #6d7268; font: 500 20px/1 "IBM Plex Mono", monospace; transform: translateY(-50%); }
.infra-stage.constraint { border-color: rgba(200, 255, 49, .72); box-shadow: inset 0 3px 0 #c8ff31; }
.infra-stage.output { background: #c8ff31; border-color: #c8ff31; }
.infra-stage.opportunity { border-color: rgba(200, 255, 49, .34); background: rgba(200, 255, 49, .055); }
.infra-stage-top { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.infra-stage-top span, .infra-stage-top strong { color: #777c72; font: 600 8px/1.3 "IBM Plex Mono", monospace; letter-spacing: .11em; text-transform: uppercase; }
.infra-stage.constraint .infra-stage-top strong, .infra-stage.opportunity .infra-stage-top strong { color: #c8ff31; }
.infra-stage.output .infra-stage-top span, .infra-stage.output .infra-stage-top strong { color: #10110f; }
.infra-stage h3 { margin: 52px 0 13px; color: #f6f0e4; font-size: 25px; line-height: 1.02; letter-spacing: -.04em; }
.infra-stage > p { margin: 0 0 20px; color: #999d93; font: 400 13px/1.55 Georgia, "Times New Roman", serif; }
.infra-stage.output h3, .infra-stage.output > p { color: #10110f; }
.infra-names { display: flex; flex-wrap: wrap; gap: 5px; margin-top: auto; padding-top: 15px; border-top: 1px solid rgba(246, 240, 228, .1); }
.infra-names span { border: 1px solid rgba(246, 240, 228, .12); border-radius: 4px; padding: 5px 6px; color: #b2b5ac; font: 500 8px/1 "IBM Plex Mono", monospace; }
.infra-stage.output .infra-names { border-top-color: rgba(16, 17, 15, .22); }
.infra-stage.output .infra-names span { border-color: rgba(16, 17, 15, .22); color: #10110f; }
.infra-map figcaption { display: grid; grid-template-columns: 130px 1fr; gap: 24px; margin-top: 8px; padding-top: 18px; }
.infra-map figcaption strong { color: #878b81; font: 600 9px/1.5 "IBM Plex Mono", monospace; letter-spacing: .12em; text-transform: uppercase; }
.infra-map figcaption span { color: #777c72; font: 400 12px/1.65 Georgia, "Times New Roman", serif; }

.infra-definitions div { grid-template-columns: 150px 1fr; }
.infra-crosslink { display: grid; grid-template-columns: 130px 1fr; gap: 24px; margin-top: 38px; border: 1px solid rgba(200, 255, 49, .2); background: rgba(200, 255, 49, .045); padding: 23px; }
.infra-crosslink > span { color: #c8ff31; font: 600 9px/1.4 "IBM Plex Mono", monospace; letter-spacing: .12em; text-transform: uppercase; }
.infra-crosslink h3 { margin: 0 0 8px; font-size: 19px; }
.infra-crosslink p { margin: 0 0 16px; color: #999d93; font-size: 14px; line-height: 1.6; }
.infra-crosslink a { color: #c8ff31; font-size: 12px; font-weight: 700; text-decoration: none; }
.infra-signals li { grid-template-columns: 34px 165px 1fr; }

@media (max-width: 720px) {
  .infrastructure-page .paper-contents ol { grid-template-columns: 1fr; }
  .infrastructure-page .paper-contents li:nth-child(2), .infrastructure-page .paper-contents li:nth-child(3) { border-top: 1px solid rgba(246, 240, 228, .09); }
  .infra-map { margin-top: 44px; }
  .infra-map-heading, .infra-map figcaption, .infra-crosslink { grid-template-columns: 1fr; gap: 13px; }
  .infra-stage { min-height: 280px; }
  .infra-definitions div { grid-template-columns: 1fr; }
  .infra-signals li { grid-template-columns: 28px 1fr; }
}
