/* Wireframe screens for the manuscript presentation pages under /docs/. Every mock is
   drawn in this app's own tokens so a comparison is about layout, not about another
   product's palette. The `.screen` grid is the frame; the `.sw-*` rules draw
   SpokenWords' own chrome as measured on the live studio; `.doc` and `.dotmark` draw
   the rendered document and the sentence dot inside it. */
/* Page prose: the lede, the section rhythm, the take-away box and the contents list. */
.lede { font-size: var(--font-size-2); color: var(--text-2); line-height: 1.6; }
main { max-width: var(--size-lg); }
section { margin-block: var(--size-7); }
section > p, figcaption { line-height: 1.6; }
section h2 { margin-block: var(--size-6) var(--size-2); }
section h3 { font-size: var(--font-size-1); margin: var(--size-4) 0 var(--size-1); }
.source { font-size: var(--font-size-0); color: var(--text-2); }
.source a { color: var(--link); }
.takeaway { padding: var(--size-3) var(--size-4); margin-block: var(--size-3);
  background: color-mix(in oklab, var(--brand) 8%, var(--surface-2));
  border: var(--border-size-1) solid color-mix(in oklab, var(--brand) 25%, var(--border-color));
  border-radius: var(--radius-3); font-size: var(--font-size-0); line-height: 1.55; }
.takeaway p { margin: 0; }
nav.toc ul { columns: 2; gap: var(--size-5); padding-inline-start: 1.2em; font-size: var(--font-size-0); }
nav.toc li { break-inside: avoid; }
nav.toc a { color: var(--link); }

/* The wireframe frame. */
figure { margin: var(--size-4) 0; }
figcaption { font-size: var(--font-size-0); color: var(--text-2); margin-top: var(--size-2); }
.screen {
  display: grid;
  grid-template-columns: 9rem minmax(0, 1fr) 9rem;
  grid-template-rows: auto minmax(0, 1fr) auto;
  grid-template-areas: "top top top" "left main right" "foot foot foot";
  height: 26rem;
  border: var(--border-size-1) solid var(--border-color);
  border-radius: var(--radius-3);
  background: var(--surface-1);
  overflow: hidden;
  font-size: var(--font-size-0);
  line-height: 1.45;
  color: var(--text-1);
}
.screen.no-left { grid-template-columns: 0 minmax(0, 1fr) 9rem; }
.screen.no-right { grid-template-columns: 9rem minmax(0, 1fr) 0; }
.screen.no-sides { grid-template-columns: 0 minmax(0, 1fr) 0; }
.screen.split-rows { grid-template-areas: "top top top" "upper upper upper" "left main right" "foot foot foot";
  grid-template-rows: auto minmax(0, 1fr) minmax(0, 1fr) auto; }
.screen.split-cols { grid-template-columns: 9rem minmax(0, 1fr) minmax(0, 1fr);
  grid-template-areas: "top top top" "left main upper" "foot foot foot"; }
.screen > .top { grid-area: top; display: flex; align-items: center; gap: var(--size-3);
  padding: var(--size-1) var(--size-3); background: var(--surface-2);
  border-bottom: var(--border-size-1) solid var(--border-color); font-size: var(--font-size-xs); color: var(--text-2); }
.screen > .top b { color: var(--text-1); font-weight: var(--font-weight-6); }
.screen > .left { grid-area: left; background: var(--surface-2); border-right: var(--border-size-1) solid var(--border-color);
  padding: var(--size-2); overflow: hidden; font-size: var(--font-size-xs); }
.screen > .right { grid-area: right; background: var(--surface-2); border-left: var(--border-size-1) solid var(--border-color);
  padding: var(--size-2); overflow: hidden; font-size: var(--font-size-xs); }
.screen > .main { grid-area: main; padding: var(--size-3) var(--size-4); overflow: hidden; }
.screen > .upper { grid-area: upper; padding: var(--size-3) var(--size-4); overflow: hidden;
  border-bottom: var(--border-size-1) solid var(--border-color); }
.screen.split-cols > .upper { border-bottom: 0; border-left: var(--border-size-1) solid var(--border-color); }
.screen > .foot { grid-area: foot; display: flex; align-items: center; gap: var(--size-2);
  padding: var(--size-2) var(--size-3); background: var(--surface-2);
  border-top: var(--border-size-1) solid var(--border-color); font-size: var(--font-size-xs); }
.pane-title { font-weight: var(--font-weight-6); color: var(--text-2); text-transform: uppercase;
  letter-spacing: 0.06em; font-size: var(--font-size-00); margin-bottom: var(--size-1); }
.screen ul.tree { list-style: none; margin: 0; padding: 0; }
.screen ul.tree li { padding: 1px 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.screen ul.tree li.l2 { padding-left: var(--size-3); }
.screen ul.tree li.l3 { padding-left: var(--size-5); }
.screen ul.tree li.here { color: var(--brand); font-weight: var(--font-weight-6); }

/* A waveform strip: a row of bars whose heights vary by a fixed pattern. */
.wave { display: flex; align-items: center; gap: 2px; height: 1.6rem; flex: 1; }
.wave i { display: block; width: 3px; background: var(--brand); border-radius: 1px;
  height: 30%; opacity: .7; }
.wave i:nth-child(3n) { height: 80%; }
.wave i:nth-child(4n) { height: 55%; }
.wave i:nth-child(7n) { height: 95%; }
.wave i:nth-child(5n+1) { height: 20%; }
.wave.marks { position: relative; }
.wave .nav-point { position: absolute; top: -0.6rem; width: 1px; height: 0.5rem; background: var(--text-2); }
.wave .nav-point::after { content: ''; position: absolute; top: -3px; left: -3px; width: 7px; height: 7px;
  border-radius: var(--radius-round); background: var(--text-2); }
.knob { display: inline-grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: var(--radius-round);
  border: var(--border-size-1) solid var(--border-color); background: var(--surface-1); }
.knob.rec { border-color: var(--status-error); color: var(--status-error); }

/* Rendered document, as the article view draws it. */
.doc { font-family: Literata, Georgia, serif; }
.doc h4 { margin: 0 0 var(--size-2); font-size: 1.15em; line-height: 1.3; }
.doc p { margin: 0 0 var(--size-2); }
.doc ol { margin: 0 0 var(--size-2); padding-left: 1.4em; }
.doc table { border-collapse: collapse; margin-block: var(--size-2); font-size: .9em; width: 100%; }
.doc th, .doc td { border: var(--border-size-1) solid var(--border-color); padding: 2px var(--size-2); text-align: start; }
.doc th { background: var(--surface-2); }
.doc caption { text-align: start; color: var(--text-2); font-size: .85em; margin-bottom: 2px; }
.doc .hl { background: color-mix(in oklab, var(--brand) 14%, var(--surface-1)); border-radius: var(--radius-1); }
.doc .chip { display: inline-block; padding: 0 var(--size-1); margin-right: var(--size-1);
  border: var(--border-size-1) solid var(--border-color); border-radius: var(--radius-1);
  color: var(--text-2); font-size: var(--font-size-xs); font-family: var(--font-neo-grotesque); vertical-align: middle; }

.dotmark { position: absolute; left: -1.2rem; top: .45em; width: .55rem; height: .55rem; border-radius: var(--radius-round);
  background: color-mix(in oklab, var(--text-2) 25%, var(--surface-1)); }
.dotmark.rec { background: var(--status-recorded); }
/* SpokenWords' own chrome, as measured on the live studio on 2026-09-10: the header
   with the back link, title and stage chip; the Book panel with the article card;
   the three-row bottom: transport, article overview waveform, recording controls. */
.sw-header { justify-content: flex-start; padding-block: var(--size-2); background: var(--surface-1); }
.sw-header .sw-back { color: var(--text-1); }
.sw-header .sw-title { display: flex; flex-direction: column; line-height: 1.2; }
.sw-header .sw-title b { font-family: Literata, Georgia, serif; font-size: var(--font-size-1); }
.sw-right { margin-left: auto; display: flex; align-items: center; gap: var(--size-3); color: var(--text-1); }
.sw-stage { padding: 2px var(--size-2); border-radius: var(--radius-round); background: var(--surface-3); font-weight: var(--font-weight-6); }
.sw-book { display: flex; flex-direction: column; }
.sw-book .tree { flex: 1; }
.sw-book .sw-card { margin: var(--size-1) 0; padding: var(--size-1) var(--size-2); border-radius: var(--radius-2);
  background: color-mix(in oklab, var(--brand) 14%, var(--surface-1)); white-space: normal; }
.sw-book li small { color: var(--text-2); text-transform: uppercase; font-size: var(--font-size-00); }
.sw-book .sw-card small { color: var(--brand); }
.sw-book-foot { color: var(--text-2); border-top: var(--border-size-1) solid var(--border-color); padding-top: var(--size-1); }
.screen > .foot.sw-foot { flex-direction: column; align-items: stretch; gap: var(--size-1); padding-block: var(--size-2); }
.sw-transport { display: flex; align-items: center; gap: var(--size-2); }
.sw-group { display: inline-flex; align-items: center; gap: var(--size-1); padding: 2px var(--size-1); border: var(--border-size-1) solid var(--border-color); border-radius: var(--radius-3); }
.knob.play { background: var(--brand); color: var(--stone-0); border-color: var(--brand); }
.sw-mono { font-family: var(--font-monospace-code, monospace); color: var(--text-2); }
.sw-slider { display: inline-block; width: 4rem; height: 4px; border-radius: 2px; background: var(--border-color); position: relative; }
.sw-slider::after { content: ''; position: absolute; left: 10%; top: -4px; width: 12px; height: 12px; border-radius: var(--radius-round); background: var(--brand); }
.wave.overview { flex: none; height: 2.4rem; position: relative; }
.wave.overview i { flex: 1; width: auto; background: var(--status-previous); opacity: .8; }
.wave.overview i:nth-child(n+50) { background: var(--brand); }
.sw-box { position: absolute; right: 8%; top: 0; bottom: 0; width: 3rem; border: var(--border-size-1) solid var(--brand); }
.sw-hint { font-size: var(--font-size-00); color: var(--text-2); }
.sw-controls { display: flex; align-items: center; justify-content: center; gap: var(--size-3); }
.sw-seg { display: inline-flex; border: var(--border-size-1) solid var(--border-color); border-radius: var(--radius-2); overflow: hidden; }
.sw-seg span { padding: 2px var(--size-2); }
.sw-seg .on { background: color-mix(in oklab, var(--brand) 14%, var(--surface-1)); }
.sw-rec { display: inline-grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: var(--radius-round);
  background: var(--status-error); color: var(--stone-0); font-size: var(--font-size-2); }
.sw-dim { color: var(--text-2); }
.sw-select { padding: 2px var(--size-2); border: var(--border-size-1) solid var(--border-color); border-radius: var(--radius-2); color: var(--text-2); }
/* Dot variants for the merged view and the toggle. */
.dotmark.inline { position: static; display: inline-block; margin-right: .3em; vertical-align: middle; }
.dotmark.rej { background: var(--status-error); }
.dotmark.big { width: .7rem; height: .7rem; box-shadow: 0 0 0 2px color-mix(in oklab, var(--status-error) 30%, var(--surface-1)); }
.st-rec { background: color-mix(in srgb, var(--status-recorded) 10%, transparent); }
.st-rej { background: color-mix(in srgb, var(--status-error) 14%, transparent); text-decoration: underline wavy var(--status-error); text-underline-offset: 3px; }
.menu-mock { margin: var(--size-1) 0 var(--size-2) 2.2rem; width: 22rem; background: var(--surface-1); border: var(--border-size-1) solid var(--border-color);
  border-radius: var(--radius-2); box-shadow: var(--shadow-3); padding: var(--size-1); font-family: var(--font-neo-grotesque); font-size: var(--font-size-00); z-index: 1; }
.menu-mock .menu-title { color: var(--text-2); padding: 2px var(--size-2); border-bottom: var(--border-size-1) solid var(--border-color); margin-bottom: 2px; }
.menu-mock .menu-row { display: flex; align-items: center; gap: var(--size-1); padding: 2px var(--size-2); border-radius: var(--radius-1); }
.menu-mock .menu-row .dotmark { position: static; flex: none; }
.menu-mock .menu-row .sw-dim { margin-left: auto; }
.menu-mock .menu-row.on { background: color-mix(in oklab, var(--brand) 12%, var(--surface-1)); }
.sw-toggle { display: inline-flex; border: var(--border-size-1) solid var(--border-color); border-radius: var(--radius-2); overflow: hidden; }
.sw-toggle span { padding: 1px var(--size-2); }
.sw-toggle .on { background: color-mix(in oklab, var(--brand) 14%, var(--surface-1)); font-weight: var(--font-weight-6); }
@media (max-width: 720px) {
  .screen { grid-template-columns: 0 minmax(0, 1fr) 0; }
  .screen > .left, .screen > .right { display: none; }
  .screen.split-cols { grid-template-columns: 0 minmax(0, 1fr) minmax(0, 1fr); }
}
