/* Shared imagery and diagrams. Inline page styles own layout; this file owns the visual components they add. */

/* Screenshots of shipped work, framed with a plain address bar. */
.shot { margin: 0; min-width: 0; }
.shot-frame { display: block; overflow: hidden; border: 1px solid var(--border-mid); border-radius: 8px; background: var(--surface); }
.shot-bar { padding: 10px 16px; border-bottom: 1px solid var(--border); background: var(--surface-2); color: var(--ink-faint); font: 500 10.5px/1.3 var(--mono); letter-spacing: .06em; }
.shot img { display: block; width: 100%; height: auto; }
.shot figcaption { max-width: 62ch; margin-top: 14px; color: var(--ink-dim); font-size: 14px; line-height: 1.6; }
.shot-block { max-width: 1040px; margin: 0 0 64px; }
.shot-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; align-items: start; margin: 0 0 64px; }
.shot-pair img { aspect-ratio: 1.9; object-fit: cover; object-position: top center; }
.shot-section { padding-top: 72px; padding-bottom: 72px; }
.shot-section .shot-block { max-width: none; margin: 0; }

/* Blueprint panels: the same deep blue as the closing CTA, on a drafting grid, in both themes. */
.schema { position: relative; margin: 0 0 64px; padding: clamp(24px, 4vw, 48px); overflow: hidden; border-radius: 8px; color: #fff; background-color: #0d2463; background-image: linear-gradient(rgba(191, 219, 254, .07) 1px, transparent 1px), linear-gradient(90deg, rgba(191, 219, 254, .07) 1px, transparent 1px); background-size: 32px 32px; }
.schema-title { margin: 0 0 8px; color: #fff; font: 600 clamp(19px, 2.2vw, 24px)/1.2 var(--display); letter-spacing: -.02em; text-wrap: balance; }
.schema-note { max-width: 58ch; margin: 0 0 36px; color: rgba(255, 255, 255, .78); font-size: 15px; line-height: 1.6; }
.schema-label { display: block; margin-bottom: 14px; color: #bfdbfe; font: 500 10.5px/1.3 var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.schema-node { padding: 13px 16px; border: 1px solid rgba(191, 219, 254, .34); border-radius: 6px; background: rgba(10, 10, 18, .28); color: #fff; font-size: 14px; line-height: 1.35; }
.schema ul, .schema ol { margin: 0; padding: 0; list-style: none; }

.wire { fill: none; stroke: #93c5fd; stroke-width: 1.5; stroke-dasharray: 6 6; vector-effect: non-scaling-stroke; animation: wire-flow 1.4s linear infinite; }
.wire-broken { fill: none; stroke: rgba(191, 219, 254, .42); stroke-width: 1.5; stroke-dasharray: 3 9; vector-effect: non-scaling-stroke; }
@keyframes wire-flow { to { stroke-dashoffset: -12; } }

/* Many sources into one core, then an ordered path out. */
.flow-map { display: grid; grid-template-columns: minmax(0, 1fr) 72px minmax(0, 1fr) 48px minmax(0, 1fr); align-items: stretch; }
.flow-map-col { display: flex; flex-direction: column; justify-content: space-between; gap: 12px; }
.flow-map-col li { flex: 1; display: flex; }
.flow-map-col .schema-node { flex: 1; display: flex; align-items: center; }
.flow-map-wires { width: 100%; height: 100%; }
.flow-map-core { display: flex; flex-direction: column; justify-content: center; padding: 24px; border-radius: 6px; background: #fff; color: #0d2463; }
.flow-map-core strong { font: 600 clamp(20px, 2.2vw, 26px)/1.15 var(--display); letter-spacing: -.02em; }
.flow-map-core span { margin-top: 10px; color: rgba(13, 36, 99, .82); font-size: 14px; line-height: 1.5; }
.flow-map-col .schema-node b { margin-right: 12px; color: #bfdbfe; font: 500 11px var(--mono); }
.flow-map-mid { display: flex; flex-direction: column; }
.flow-map-mid .flow-map-core { flex: 1; }

/* A straight pipeline of steps. */
.pipeline { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 28px; }
.pipeline li { position: relative; display: flex; }
.pipeline .schema-node { flex: 1; display: flex; flex-direction: column; gap: 8px; }
.pipeline strong { font: 600 16px/1.2 var(--display); letter-spacing: -.01em; }
.pipeline span { color: rgba(255, 255, 255, .78); font-size: 13px; line-height: 1.45; }
.pipeline li:last-child .schema-node { border-color: #fff; background: #fff; color: #0d2463; }
.pipeline li:last-child span { color: rgba(13, 36, 99, .82); }
.pipeline li:not(:last-child)::after { content: ''; position: absolute; top: 50%; left: 100%; width: 28px; height: 0; border-top: 1.5px dashed #93c5fd; }

/* Before and after, as two drawings side by side. */
.compare { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(20px, 3vw, 36px); }
.compare svg { display: block; width: 100%; height: auto; }
.compare text { fill: #fff; font: 500 15px var(--body); text-anchor: middle; dominant-baseline: central; }
.compare .node-box { fill: rgba(10, 10, 18, .28); stroke: rgba(191, 219, 254, .34); }
.compare .hub-box { fill: #fff; }
.compare .hub-text { fill: #0d2463; font: 600 19px var(--display); }
.compare .gap-text { fill: #bfdbfe; font: 500 12.5px var(--mono); letter-spacing: .04em; }

@media (max-width: 1024px) {
  .pipeline { grid-template-columns: 1fr; gap: 20px; }
  .pipeline li:not(:last-child)::after { top: 100%; left: 24px; width: 0; height: 20px; border-top: 0; border-left: 1.5px dashed #93c5fd; }
}
@media (max-width: 860px) {
  .flow-map { grid-template-columns: 1fr; gap: 0; }
  .flow-map-wires { display: block; width: 72px; height: 36px; margin: 0 auto; }
  .flow-map-wires.is-fan { display: none; }
  .flow-map-col { gap: 8px; }
  .flow-map-fan-mobile { display: block; width: 72px; height: 36px; margin: 0 auto; }
  .compare { grid-template-columns: 1fr; }
  .compare text { font-size: 17px; }
  .compare .hub-text { font-size: 20px; }
  .compare .gap-text { font-size: 15px; }
  .shot-pair { grid-template-columns: 1fr; }
  .shot-section { padding-top: 48px; padding-bottom: 48px; }
}
@media (min-width: 861px) {
  .flow-map-fan-mobile { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .wire { animation: none; }
}
