/* man.bat transcript — a plain reading page. Warm paper, generous line height,
   and one clear visual difference between narration, speech, and screen text so
   the structure survives being read aloud or magnified. */

.ts {
  max-width: 760px;
  margin: 0 auto;
  padding: clamp(18px, 4vw, 36px) clamp(16px, 4vw, 24px) 48px;
}

.ts-head { margin-bottom: 28px; }

.ts-kicker {
  display: block;
  font: 800 .78rem/1 "Outfit", system-ui, sans-serif;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: 8px;
}

.ts-head h1 {
  margin: 0 0 14px;
  font: 800 clamp(1.5rem, 6vw, 2.2rem)/1.15 "Outfit", system-ui, sans-serif;
  color: var(--ink);
}

.ts-lead {
  margin: 0 0 12px;
  color: var(--ink-soft);
  line-height: 1.65;
  font-size: clamp(.96rem, 2.6vw, 1.04rem);
}

.ts-note {
  margin: 16px 0 0;
  padding: 12px 14px;
  border-left: 3px solid var(--gold);
  border-radius: 0 10px 10px 0;
  background: var(--cream-2);
  color: var(--ink);
  font-size: .93rem;
  line-height: 1.55;
}

.ts-body h2 {
  margin: 34px 0 12px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
  font: 800 clamp(1.05rem, 3.6vw, 1.25rem)/1.2 "Outfit", system-ui, sans-serif;
  color: var(--ink);
}

.ts-body p {
  margin: 0 0 12px;
  line-height: 1.7;
  font-size: clamp(1rem, 2.7vw, 1.06rem);
  color: var(--ink);
  overflow-wrap: anywhere;
}

/* Narration of what the page shows. */
.ts-scene {
  color: var(--ink-soft);
  font-style: italic;
}

/* Captions in the comic's own voice. */
.ts-cap {
  border-left: 3px solid var(--gold);
  padding: 2px 0 2px 14px;
}

/* Anything rendered as screen or terminal text in the art. */
.ts-screen {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: clamp(.88rem, 2.4vw, .96rem);
  background: var(--cream-2);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px 14px;
  overflow-wrap: anywhere;
}

/* Typed or handwritten pages held in frame. */
.ts-letter {
  background: var(--paper);
  border: 1px dashed var(--line);
  border-radius: 10px;
  padding: 12px 14px;
}

/* Full-width title and end cards. Scoped under .ts-body so these win against
   the `.ts-body p { color: var(--ink) }` rule above — otherwise the dark ink
   colour lands on the dark wood panel. */
.ts-body .ts-card,
.ts-body .ts-title-card {
  font: 800 1.05rem/1.3 "Outfit", system-ui, sans-serif;
  letter-spacing: .1em;
  text-transform: uppercase;
  text-align: center;
  background: var(--wood);
  color: #fff3dc;
  border-radius: 10px;
  padding: 14px;
}

/* Speaker name before a line of dialogue. */
.sp {
  display: inline-block;
  min-width: 5.5em;
  margin-right: 6px;
  font: 800 .78rem/1.6 "Outfit", system-ui, sans-serif;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--gold);
  vertical-align: baseline;
}

.ts-foot {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 36px;
  padding-top: 20px;
  border-top: 1px solid var(--line);
}

.ts-btn {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  padding: 12px 20px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: var(--cream-2);
  color: var(--ink);
  text-decoration: none;
  font: 800 .96rem/1 "Outfit", system-ui, sans-serif;
}

.ts-btn:hover { background: var(--paper); }

@media (max-width: 420px) {
  /* Stacking the speaker name keeps short lines from being squeezed to
     two or three words a row on a narrow phone. */
  .sp { display: block; min-width: 0; margin: 0 0 2px; }
}
