/* ─────────────────────────────────────────────────────────────────────────
   Pages — the six product-detail pages (agent, schematic, board, manufacture,
   libraries, download). Everything here is new; rivet.css and scenes.css are
   not touched. The five product pages (not /download) now wire `.hero-grid`
   from scenes.css into their hero — the same "sentence beside an app window"
   grid the home page shipped but never used — so each hero carries a real
   `.feat-frame` / `.panelshot` surface instead of a sentence beside empty
   space. Their body sections were converted from `.split`/`.plate` to the
   home page's `.feat`/`.feat-frame`, alternating, for the same reason. See
   `.hero-vis` and the library-search `.lib-*` rules below.

   Three row-list patterns repeat across the pages (tool names on /agent,
   export formats on /manufacture, platforms on /download) and they are one
   component here, `.rowlist`, with a column template per modifier — the same
   move `.index` and `.wires` already make in scenes.css.
   ───────────────────────────────────────────────────────────────────────── */

/* ── small tags: mutate/read, your platform, not built yet ───────────────── */

.tag {
  display: inline-flex;
  align-items: center;
  height: 21px;
  padding: 0 9px;
  border-radius: 999px;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: -.005em;
  white-space: nowrap;
}
.tag.mutate { background: rgb(var(--accent-rgb) / .14); color: var(--cu-deep); }
.tag.read { background: rgb(var(--fg-rgb) / .06); color: var(--fg-3); }
.tag.you { border: 1px solid var(--cu-deep); color: var(--cu-deep); }
.tag.soon { border: 1px dashed var(--line-2); color: var(--fg-3); }

/* ── the row list ─────────────────────────────────────────────────────────
   One left edge, one top rule, rows of unequal-width cells — the same idea
   as .index but for data that does not link anywhere. */

.rowlist { border-top: 1px solid var(--line); margin-top: 36px; }
.rowlist .row {
  display: grid;
  align-items: baseline;
  gap: 8px 18px;
  padding: 15px 0;
  border-bottom: 1px solid var(--line);
  font-size: 14.5px;
}
.rowlist .row.head {
  padding-top: 0;
  padding-bottom: 13px;
  font-size: 12px;
}
.rowlist .row.head span { color: var(--fg-3); }
.rowlist .name { font-family: var(--mono); font-size: 13px; color: var(--fg); }
.rowlist .note { color: var(--fg-2); line-height: 1.5; }
.rowlist .fmt { color: var(--fg-3); }

.rowlist.tools .row { grid-template-columns: 178px 80px 1fr; }
/* `.rowlist .name` is monospace because this component was built for machine
   data — file formats, extensions. The tools list stopped being machine data
   on 2026-08-08: it names what the agent DOES, in English, because an engine
   identifier never reaches a person anywhere else in the product and this page
   was the last place on the site still printing ten of them. English in
   monospace reads as a filename, so it gets the sans face. */
.rowlist.tools .name {
  font-family: var(--sans);
  font-size: 14.5px;
  font-variation-settings: 'wdth' 100;
  font-weight: 600;
}
.rowlist.files .row { grid-template-columns: 132px 1fr; }
@media (max-width: 700px) {
  .rowlist.tools .row { grid-template-columns: 1fr; gap: 6px; }
  .rowlist.files .row { grid-template-columns: 1fr; gap: 4px; }
}

/* ── the download table ───────────────────────────────────────────────────
   Six platforms, one row each. A platform with no build gets a `.tag.soon`
   in place of the button — never a link, never hidden. */

.rowlist.dl .row {
  grid-template-columns: 1.35fr .95fr 90px 1.15fr 148px;
  position: relative;
}
.rowlist.dl .row.you {
  background: rgb(var(--accent-rgb) / .05);
  border-radius: 8px;
  margin: 0 calc(var(--gut) * -0.5);
  padding-left: calc(var(--gut) * 0.5);
  padding-right: calc(var(--gut) * 0.5);
}
.rowlist.dl .plat { display: flex; align-items: center; gap: 9px; }
.rowlist.dl .plat b {
  font-variation-settings: 'wdth' 112;
  font-weight: 620;
  font-size: 15.5px;
  letter-spacing: -.02em;
  color: var(--fg);
}
.rowlist.dl .size, .rowlist.dl .sha {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--fg-3);
}
.rowlist.dl .sha { overflow-wrap: anywhere; }
.rowlist.dl .go { justify-self: end; }
.rowlist.dl .go .cta.sm { padding: 0 18px; }
@media (max-width: 860px) {
  .rowlist.dl .row {
    grid-template-columns: 1fr 1fr;
    row-gap: 6px;
  }
  .rowlist.dl .row.head { display: none; }
  .rowlist.dl .size { order: 3; }
  .rowlist.dl .sha { order: 4; grid-column: 1 / 2; }
  .rowlist.dl .go { order: 5; grid-column: 2 / 3; }
}

/* ── the download page's own intro line ──────────────────────────────────── */

.dl-meta { display: flex; flex-wrap: wrap; gap: 8px 20px; margin-top: 10px; font-size: 13.5px; color: var(--fg-3); }
.dl-meta b { color: var(--fg-2); font-weight: 600; }

/* ── a plain numbered step, for pages that walk through a sequence ───────── */

.steps { display: flex; flex-direction: column; border-top: 1px solid var(--line); margin-top: 36px; }
.steps > div {
  display: grid;
  grid-template-columns: 30px 1fr;
  gap: 4px 16px;
  padding: 18px 0;
  border-bottom: 1px solid var(--line);
}
.steps .n { font-family: var(--mono); font-size: 12px; color: var(--cu-deep); padding-top: 3px; }
.steps h3 {
  margin: 0;
  font-variation-settings: 'wdth' 112;
  font-weight: 620;
  font-size: 1.05rem;
  letter-spacing: -.02em;
}
.steps p { margin: 6px 0 0; color: var(--fg-2); font-size: 14.5px; line-height: 1.6; max-width: 60ch; }

/* ── cross-links between the six product pages, in the closing scene ─────── */

.nextlinks { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 22px; }
.nextlinks a {
  border: 1px solid var(--line-2);
  border-radius: 999px;
  padding: 8px 16px;
  font-size: 13.5px;
  color: var(--fg-2);
  transition: border-color .2s var(--ease), color .2s var(--ease);
}
.nextlinks a:hover { border-color: var(--cu-deep); color: var(--fg); }

/* ── product-page hero visual ─────────────────────────────────────────────
   These five pages' hero used to be a headline, a paragraph and an empty
   right half — the owner's own complaint about the old home page, and it
   was still true here. This reuses .hero-grid from scenes.css (built for
   exactly a sentence beside an app window, never wired to markup until now)
   and .feat-frame / .panelshot for the surface itself — no third visual
   system. */
.hero-vis { position: relative; margin-right: calc(var(--gut) * -1 - 3vw); }
.hero-vis .feat-frame { margin: 0; }
@media (max-width: 940px) { .hero-vis { margin-right: 0; margin-top: 8px; } }

/* ── the library index, redrawn as a narrowing search ─────────────────────
   libraries/ has no UI of its own to screenshot — search only exists inside
   the symbol picker, mid-placement, which is not a scene of its own. So this
   is redrawn in the same .panelshot idiom and under the same declaration as
   the agent panel: the query, the counts and every symbol/library name are
   real, drawn from the shipped index; the layout is the app's own two-line
   hit row. See www/README.md. */
.lib-q {
  display: flex; align-items: baseline; gap: 10px;
  padding: 9px 11px;
  background: #12151b;
  border: 1px solid #1e2430;
  border-radius: 6px;
  font-family: var(--mono);
}
.lib-q-text { font-size: 13px; color: #e8ecf2; }
.lib-q-text::before { content: '\201c'; color: #68728a; }
.lib-q-text::after { content: '\201d'; color: #68728a; }
.lib-q-count { margin-left: auto; font-size: 11px; color: #68728a; }
.lib-hit {
  display: flex; align-items: baseline; gap: 10px;
  padding: 7px 11px;
  border-bottom: 1px solid #1b202a;
}
.lib-hit:last-child { border-bottom: 0; }
.lib-hit b { font-size: 12.5px; font-weight: 600; color: #e8ecf2; }
.lib-hit span { margin-left: auto; font-family: var(--mono); font-size: 11px; color: #7c8698; }
.lib-hit.dim { opacity: .5; }
.lib-note { margin: 4px 0 2px; padding: 0 11px; font-size: 12px; color: #7c8698; line-height: 1.55; }
.lib-note b { color: #dfe5ee; font-weight: 600; }
