/* Hallmark · page styles for this route; stamp and tokens live in site.css · hero: Settled */
.hero--settled { padding-block: var(--space-2xl); }
.hero-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--space-xl) var(--gap-columns); align-items: start; }
.hero--settled .hero__text { grid-column: 1 / span 6; display: grid; gap: var(--space-lg); }
.hero--settled h1 { font-size: clamp(2.5rem, 2.9vw + 1rem, 4.25rem); max-width: 15ch; text-wrap: balance; }
.hero--settled .lead { max-width: 38ch; }
.hero--settled .actions { margin-top: var(--space-xs); gap: var(--space-sm) var(--space-lg); }

/* the four stages as a process rail: three run on their own, the fourth is where your team steps in */
.route { --node: 48px; grid-column: 8 / -1; position: relative; list-style: none; display: grid; gap: var(--space-sm); padding: var(--space-lg); border-radius: var(--radius-card); background: var(--color-paper); box-shadow: inset 0 0 0 1px var(--color-rule), var(--shadow-card); }
.route li { position: relative; }
/* the rail runs node to node: from just below this stage's icon to just above the next one, so it never passes under an icon (which fades in on its own layer) */
.route li:not(:last-child)::after { content: ""; position: absolute; left: calc(var(--space-md) + var(--node) / 2 - 1px); top: calc(50% + var(--node) / 2 + 4px); height: calc(100% + var(--space-sm) - var(--node) - 8px); width: 2px; background: var(--color-accent); transform-origin: top; }
.route li:nth-child(3)::after { background: var(--color-rule-strong); }
.route a { display: grid; grid-template-columns: var(--node) minmax(0, 1fr) auto; gap: var(--space-md); align-items: center; padding: var(--space-md); border-radius: var(--radius-inner); color: inherit; text-decoration: none; transition: background-color var(--dur-short) var(--ease-out); }
.route a:hover { background: var(--color-paper-2); }
.route a:hover b { text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
.route__icon { position: relative; z-index: 1; display: grid; place-items: center; width: var(--node); height: var(--node); border-radius: 50%; background: var(--color-accent-fill); color: var(--color-accent-ink); box-shadow: 0 0 0 4px var(--color-paper); }
.route__icon .icon { width: 22px; height: 22px; }
.route__text { display: grid; gap: var(--space-3xs); min-width: 0; }
.route b { font: 600 var(--text-lg)/1.3 var(--font-display); color: var(--color-ink); }
.route small { color: var(--color-ink-2); }
.route__chip { display: inline-flex; align-items: center; gap: var(--space-3xs); padding: var(--space-3xs) var(--space-sm) var(--space-3xs) var(--space-xs); border-radius: var(--radius-pill); background: color-mix(in oklab, var(--color-success) 12%, transparent); color: var(--color-success); font-size: var(--text-sm); font-weight: 500; white-space: nowrap; }
.route__chip .icon { width: 14px; height: 14px; }
.route__dev .route__icon { background: var(--color-paper); color: var(--color-ink-2); box-shadow: 0 0 0 4px var(--color-paper), inset 0 0 0 2px var(--color-rule-strong); }
.route__dev .route__chip { padding-left: var(--space-sm); background: var(--color-paper-3); color: var(--color-ink-2); }
[data-mode="dark"] .route__chip:not(.route__dev *) { color: oklch(76% 0.13 165); }
@media (prefers-color-scheme: dark) { :root:not([data-mode]) .route__chip:not(.route__dev *) { color: oklch(76% 0.13 165); } }
/* on arrival the rail fills and the stages light up in order, once */
@media (prefers-reduced-motion: no-preference) {
  .js .route li:not(:last-child)::after { animation: route-fill 0.5s var(--ease-out) backwards; }
  .js .route li:nth-child(1)::after { animation-delay: 0.45s; } .js .route li:nth-child(2)::after { animation-delay: 0.75s; } .js .route li:nth-child(3)::after { animation-delay: 1.05s; }
  .js .route li { animation: route-in 0.6s var(--ease-out) backwards; }
  .js .route li:nth-child(1) { animation-delay: 0.2s; } .js .route li:nth-child(2) { animation-delay: 0.5s; } .js .route li:nth-child(3) { animation-delay: 0.8s; } .js .route li:nth-child(4) { animation-delay: 1.1s; }
  @keyframes route-fill { from { transform: scaleY(0); } }
  @keyframes route-in { from { opacity: 0; transform: translateY(8px); } }
}
@media (max-width: 40rem) { .route { --node: 40px; padding: var(--space-sm); } .route a { gap: var(--space-sm); padding: var(--space-sm) var(--space-md); } .route b { font-size: var(--text-md); } }

.stage-split { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--space-xl) var(--gap-columns); align-items: center; }
.stage-split__text { display: grid; gap: var(--space-lg); align-content: center; }
.stage-split__text .lead { max-width: 46ch; }
.stage-split__text h2 { font-size: var(--text-section); max-width: 19ch; text-wrap: balance; }
.stage-split--a .stage-split__text { grid-column: 1 / span 5; }
.stage-split--a .stage-split__panel { grid-column: 7 / -1; }
.stage-split--b .stage-split__panel { grid-column: 1 / span 7; }
.stage-split--b .stage-split__text { grid-column: 9 / -1; }
#collection .head { align-items: start; }
#collection .head > h2 { font-size: var(--text-section); max-width: none; text-wrap: balance; }
#collection .head--split > .stage-split__text { grid-column: 8 / -1; }
.facts-list { list-style: none; display: grid; border-top: 1px solid var(--color-rule-strong); }
.facts-list li { padding-block: var(--space-sm); border-bottom: 1px solid var(--color-rule); color: var(--color-ink); font-weight: 500; }

.channels { display: flex; flex-wrap: wrap; gap: var(--space-xs); list-style: none; }
.steps { list-style: none; display: grid; }
.steps li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--space-md); align-items: center; padding-block: var(--space-sm); border-bottom: 1px solid var(--color-panel-rule); }
.steps li:last-child { border-bottom: 0; }
.steps b { display: block; font-weight: 500; color: var(--color-panel-ink); }
.steps small { color: var(--color-panel-ink-2); }

.bars { list-style: none; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: var(--space-sm); height: calc(var(--space-3xl) * 2); }
.bars li { display: grid; grid-template-rows: 1fr auto; gap: var(--space-xs); height: 100%; }
.bars i { align-self: end; height: var(--h); border-radius: 6px 6px 0 0; background: color-mix(in oklab, var(--app-chart-1) 30%, var(--app-card)); }
.bars .is-now i { background: var(--app-chart-1); }
.bars span { text-align: center; font-size: var(--text-xs); color: var(--color-panel-ink-2); }
.rules { list-style: none; display: grid; border-top: 1px solid var(--color-panel-rule); }
.rules li { padding-block: var(--space-sm); border-bottom: 1px solid var(--color-panel-rule); color: var(--color-panel-ink); }
.rules li:last-child { border-bottom: 0; }
.rules code { margin-inline: var(--space-2xs); font-size: var(--text-xs); color: var(--color-panel-ink-2); }
.rules code:first-child { margin-left: 0; }

.bank__body { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 1fr); gap: var(--space-xl); padding: var(--space-lg) var(--space-xl); align-items: start; }
.bank .ui-table { font-size: var(--text-sm); }
.bank .ui-table td, .bank .ui-table th { padding: var(--space-sm) var(--space-lg) var(--space-sm) 0; }
.bank .ui-table .r { text-align: right; padding-right: var(--space-2xl); }
.bank .ui-table th:first-child, .bank .ui-table td:first-child { width: 40%; }
.ui-pill--review { color: var(--color-panel-warn); border-color: var(--color-panel-warn); }
.posted { display: grid; gap: var(--space-xs); padding-left: var(--space-xl); border-left: 1px solid var(--color-panel-rule); }
.posted p { display: flex; align-items: center; gap: var(--space-xs); font-size: var(--text-lg); }
.posted small { color: var(--color-panel-ink-2); }

.board { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.board__col { display: grid; grid-template-rows: auto 1fr; align-content: start; padding: var(--space-lg); border-left: 1px solid var(--color-panel-rule); }
.board__col:first-child { border-left: 0; }
.board__col header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); min-height: var(--space-xl); padding-bottom: var(--space-md); border-bottom: 1px solid var(--color-panel-rule); }
.board__col h3 { font: 500 var(--text-md)/1.3 var(--font-body); letter-spacing: 0; color: var(--color-panel-ink); }
.board__col header span { font-family: var(--font-mono); font-size: var(--text-sm); color: var(--color-panel-ink-2); }
.board__col ul { list-style: none; display: grid; align-content: start; }
.board__col li { display: grid; gap: var(--space-3xs); padding-block: var(--space-md); border-bottom: 1px solid var(--color-panel-rule); }
.board__col li:last-child { border-bottom: 0; }
.board__col li b { font-weight: 500; color: var(--color-panel-ink); }
.board__col li small { color: var(--color-panel-ink-2); }
.board__col--ok header span, .board__col--ok li b { color: var(--color-panel-ok); }

@media (max-width: 60rem) {
  .hero--settled .hero__text, .route { grid-column: 1 / -1; }
  .stage-split--a .stage-split__text, .stage-split--a .stage-split__panel, .stage-split--b .stage-split__text, .stage-split--b .stage-split__panel { grid-column: 1 / -1; }
  .stage-split--b .stage-split__text { order: -1; }
  .stage-split__text h2 { max-width: 20ch; }
  #collection .head--split > .stage-split__text { grid-column: 1 / -1; }
  .bank__body { grid-template-columns: minmax(0, 1fr); gap: var(--space-lg); padding: var(--space-md); }
  .posted { padding-left: 0; border-left: 0; padding-top: var(--space-md); border-top: 1px solid var(--color-panel-rule); }
  .board { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .board__col:nth-child(3) { border-left: 0; }
  .board__col:nth-child(n+3) { border-top: 1px solid var(--color-panel-rule); }
}
@media (max-width: 40rem) {
  .board { grid-template-columns: minmax(0, 1fr); }
  .board__col { border-left: 0; border-top: 1px solid var(--color-panel-rule); }
  .board__col:first-child { border-top: 0; }
}

.route a:focus-visible, .facts-list a:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }
.route a:active { background: var(--color-paper-2); }
@media (max-width: 40rem) {
  .bank .ui-table .r { padding-right: var(--space-md); }
  .bank .ui-table th:first-child, .bank .ui-table td:first-child { width: auto; }
  .bank .ui-table td, .bank .ui-table th { padding-right: var(--space-sm); }
  .bank .ui-table td:first-child { white-space: nowrap; }
}

/* settlement bars: pointing at a day (or tabbing to it) fills its bar and shows the volume above it */
.bars li { position: relative; outline: 0; }
.bars i { position: relative; transition: background-color var(--dur-short) var(--ease-out); }
.bars li:hover i, .bars li:focus-visible i { background: var(--app-chart-1); }
.bars li:focus-visible span { color: var(--color-panel-ink); text-decoration: underline; text-underline-offset: 0.25em; }
.bars__val { position: absolute; bottom: calc(100% + 6px); left: 50%; translate: -50% 4px; padding: 2px var(--space-xs); border-radius: 6px; background: var(--color-panel-ink); color: var(--color-panel); font: 500 var(--text-xs)/1.3 var(--font-body); font-variant-numeric: tabular-nums; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity var(--dur-short) var(--ease-out), translate var(--dur-short) var(--ease-out); }
.bars li:hover .bars__val, .bars li:focus-visible .bars__val { opacity: 1; translate: -50% 0; }
.bars li:first-child .bars__val { left: 0; translate: 0 4px; } .bars li:first-child:hover .bars__val, .bars li:first-child:focus-visible .bars__val { translate: 0 0; }
.bars li:last-child .bars__val { left: auto; right: 0; translate: 0 4px; } .bars li:last-child:hover .bars__val, .bars li:last-child:focus-visible .bars__val { translate: 0 0; }
/* the hero rail on phones: the status chip sits under the stage name */
@media (max-width: 40rem) { .route a { grid-template-columns: var(--node) minmax(0, 1fr); row-gap: var(--space-xs); } .route__chip { grid-column: 2; justify-self: start; } }
/* Connector lines paint above the hovered row's background (each line runs into the next row); the icon ring follows the hover background */
.route li:not(:last-child)::after { z-index: 1; }
.route__icon { z-index: 2; transition: box-shadow var(--dur-short) var(--ease-out); }
.route a:hover .route__icon, .route a:active .route__icon { box-shadow: 0 0 0 4px var(--color-paper-2); }
.route__dev a:hover .route__icon, .route__dev a:active .route__icon { box-shadow: 0 0 0 4px var(--color-paper-2), inset 0 0 0 2px var(--color-rule-strong); }
