/* beta.changein.me - transcript library
   Reading is the point, so the type scale and measure are set for long prose and
   everything else is kept quiet. */

:root {
  --bg:      #faf8f5;
  --card:    #ffffff;
  --ink:     #1b1917;
  --mid:     #55504a;
  --dim:     #8b8479;
  --line:    #e8e2d9;
  --accent:  #2f6f5e;
  --accent-soft: #e8f1ee;
  --warn:    #a4703a;
  --warn-soft: #f7efe4;
  --serif: Georgia, 'Iowan Old Style', 'Times New Roman', serif;
  --sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
mark { background: #fdf0c8; color: inherit; padding: 0 2px; border-radius: 2px; }

/* ---------- header ---------- */
.top {
  display: flex; align-items: center; gap: 24px;
  padding: 16px 28px;
  background: var(--card);
  border-bottom: 1px solid var(--line);
  position: sticky; top: 0; z-index: 10;
}
.brand { display: flex; align-items: center; gap: 12px; color: var(--ink); }
.brand:hover { text-decoration: none; }
.brand-mark {
  width: 34px; height: 34px; flex: none;
  display: grid; place-items: center;
  background: var(--accent); color: #fff;
  border-radius: 9px;
  font-weight: 700; font-size: 13px; letter-spacing: .04em;
}
.brand-mark.big { width: 48px; height: 48px; font-size: 17px; margin: 0 auto 18px; }
.brand-text { font-weight: 650; line-height: 1.2; }

.find { margin-left: auto; display: flex; gap: 8px; }
.find input {
  width: 340px; max-width: 42vw;
  padding: 9px 13px;
  border: 1px solid var(--line); border-radius: 8px;
  background: var(--bg); font-size: 14px; font-family: inherit; color: var(--ink);
}
.find input:focus { outline: 2px solid var(--accent-soft); border-color: var(--accent); }
.find button, .btn {
  padding: 9px 16px;
  border: 0; border-radius: 8px;
  background: var(--accent); color: #fff;
  font-size: 14px; font-weight: 600; font-family: inherit;
  cursor: pointer;
}
.find button:hover, .btn:hover { background: #275c4e; text-decoration: none; }

/* ---------- share ---------- */
.share { display: flex; align-items: center; gap: 7px; }
.share-btn {
  padding: 6px 11px;
  border: 1px solid var(--line); border-radius: 7px;
  background: var(--bg); color: var(--mid);
  font-size: 12.5px; font-weight: 600; font-family: inherit;
  cursor: pointer;
}
.share-btn:hover { border-color: var(--accent); color: var(--accent); text-decoration: none; }

/* ---------- preamble ---------- */
.preamble {
  background: var(--card); border-bottom: 1px solid var(--line);
  padding: 14px 28px 16px;
}
.counts { margin: 0 0 6px; font-size: 13px; color: var(--mid); }
.counts b { color: var(--ink); font-variant-numeric: tabular-nums; }

/* ---------- layout ---------- */
.shell {
  display: grid; grid-template-columns: 260px minmax(0, 1fr);
  gap: 36px;
  max-width: 1320px; margin: 0 auto; padding: 30px 28px 60px;
}
.main { min-width: 0; }

/* ---------- topic rail ---------- */
.rail { position: sticky; top: 86px; align-self: start; max-height: calc(100vh - 120px); overflow-y: auto; }
.rail h2 { margin: 0 0 6px; font-size: 12px; letter-spacing: .09em; text-transform: uppercase; color: var(--dim); }
.rail-note { margin: 0 0 14px; font-size: 12px; line-height: 1.45; color: var(--dim); }
.rail-note b { color: var(--mid); }
.rail-cat {
  margin: 16px 0 4px; padding: 0 9px;
  font-size: 11px; letter-spacing: .09em; text-transform: uppercase;
  font-weight: 600; color: var(--accent);
  border-bottom: 1px solid var(--line); padding-bottom: 5px;
}
.rail-note + .rail-cat { margin-top: 4px; }
.topics { list-style: none; margin: 0; padding: 0; }
.topics a {
  display: flex; align-items: baseline; gap: 8px;
  padding: 5px 9px; border-radius: 7px;
  color: var(--mid); font-size: 13.5px;
}
.topics a:hover { background: var(--card); text-decoration: none; color: var(--ink); }
.topics a.on { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
.t-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.t-counts { font-size: 12px; color: var(--dim); font-variant-numeric: tabular-nums; }
.t-counts b { color: var(--accent); }
.t-sep { opacity: .45; margin: 0 1px; }

/* ---------- headings ---------- */
.head { margin-bottom: 22px; }
.crumb { display: flex; align-items: baseline; gap: 12px; margin: 0 0 8px; font-size: 12.5px; color: var(--dim); }
.back { font-weight: 600; font-size: 13px; color: var(--accent); }
.tail { margin: 30px 0 6px; text-align: right; }
h1 { margin: 0 0 10px; font-family: var(--serif); font-size: 30px; line-height: 1.2; font-weight: 600; }
.lede { margin: 0; max-width: 62ch; color: var(--mid); font-size: 14.5px; }

.stat-row, .meta-row { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0; }
.stat {
  background: var(--card); border: 1px solid var(--line); border-radius: 10px;
  padding: 10px 16px; min-width: 96px;
}
.stat b { display: block; font-size: 20px; font-variant-numeric: tabular-nums; line-height: 1.25; }
.stat span { font-size: 11.5px; letter-spacing: .04em; text-transform: uppercase; color: var(--dim); }
.stat-key { background: var(--accent-soft); border-color: #cfe2dc; }
.stat-key b { color: var(--accent); }

/* ---------- category panel ---------- */
.cats { margin: 0 0 26px; }
.cats-head h2 {
  margin: 0 0 4px;
  font-size: 12px; letter-spacing: .09em; text-transform: uppercase; color: var(--dim);
}
.cats-head p { margin: 0 0 12px; max-width: 68ch; font-size: 13px; color: var(--dim); }
.cat-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 12px;
}
.cat-card {
  background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  padding: 12px 14px 13px;
}
.cat-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  margin: 0 0 9px; padding-bottom: 8px; border-bottom: 1px solid var(--line);
}
.cat-name {
  font-size: 12px; letter-spacing: .08em; text-transform: uppercase;
  font-weight: 700; color: var(--accent);
}
.cat-total { font-size: 12px; color: var(--dim); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cat-total b { color: var(--accent); }
.cat-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.cat-chip {
  display: inline-flex; align-items: baseline; gap: 6px;
  padding: 4px 10px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--bg);
  color: var(--mid); font-size: 13px; line-height: 1.4;
}
.cat-chip:hover { text-decoration: none; border-color: var(--accent); color: var(--ink); background: var(--card); }
.cc-num { font-size: 12px; color: var(--dim); font-variant-numeric: tabular-nums; }

/* ---------- controls ---------- */
.controls { display: flex; flex-wrap: wrap; gap: 10px 20px; align-items: center; margin-bottom: 14px; }
.segs { display: flex; flex-wrap: wrap; gap: 6px; }
.seg {
  padding: 5px 12px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--card);
  font-size: 12.5px; color: var(--mid);
}
.seg:hover { text-decoration: none; border-color: #d3ccc0; }
.seg.on { background: var(--ink); border-color: var(--ink); color: #fff; font-weight: 600; }

/* ---------- table ---------- */
.grid {
  width: 100%; border-collapse: collapse;
  background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  overflow: hidden;
}
.grid th {
  text-align: left; padding: 10px 14px;
  font-size: 11px; letter-spacing: .07em; text-transform: uppercase; color: var(--dim);
  border-bottom: 1px solid var(--line); font-weight: 600; white-space: nowrap;
}
.grid th a { display: inline-flex; align-items: center; gap: 5px; color: inherit; }
.grid th a:hover { color: var(--ink); text-decoration: none; }
.grid th.on { color: var(--accent); }
.grid th.c-num a { flex-direction: row-reverse; }
/* The idle marker sits faint: a column that is not sorted still says it can be, without
   five arrows competing with the headings for attention. */
.arr { font-size: 9px; opacity: .35; }
.grid th.on .arr { opacity: 1; }
.hint { margin: 0; font-size: 12.5px; color: var(--dim); }
.grid td { padding: 11px 14px; border-bottom: 1px solid #f2ede5; vertical-align: top; }
.grid tr:last-child td { border-bottom: 0; }
.grid tbody tr:hover { background: #fdfcfa; }
.row-acc { background: #fbfdfc; }
.c-title { width: 60%; }
.c-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.c-dim { color: var(--dim); white-space: nowrap; font-size: 13.5px; }
.vt { font-weight: 600; color: var(--ink); font-size: 14.5px; }
.vt:hover { color: var(--accent); }

/* ---------- chips ---------- */
.chips { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 5px; }
.chips-lg { margin: 14px 0 18px; }
.chip {
  display: inline-block; padding: 2px 9px; border-radius: 999px;
  background: #f3efe8; color: var(--mid);
  font-size: 11.5px; line-height: 1.6; white-space: nowrap;
}
a.chip:hover { background: var(--accent-soft); color: var(--accent); text-decoration: none; }
.chip-acc { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
.chip-warn { background: var(--warn-soft); color: var(--warn); }
.chip-hot { background: #fbe6d7; color: #9a4f1c; font-weight: 600; }
.chip-new { background: #e2eefb; color: #23548c; font-weight: 600; }
.chip-quiet { background: transparent; color: var(--dim); padding-left: 0; padding-right: 6px; }

/* ---------- reader ---------- */
.reader { max-width: 74ch; }

/* Sticky so the video stays on screen while the transcript scrolls under it - the
   whole point is reading along without leaving the page. Capped well under full
   width: at 74ch a 16:9 frame would eat most of the viewport. `top` clears the
   sticky site header. No ancestor may set overflow or this silently stops working. */
.player-wrap {
  position: sticky; top: 78px; z-index: 5;
  max-width: 720px;
  margin: 4px 0 20px;
  padding-bottom: 8px;
  background: var(--bg);
}
.player {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #000;
  border-radius: 12px; overflow: hidden;
  box-shadow: 0 6px 22px rgba(28, 24, 20, .16);
}
.player iframe { width: 100%; height: 100%; border: 0; display: block; }
.hosted { margin: 8px 0 0; font-size: 12.5px; color: var(--dim); }

.actions { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 0 0 20px; }
.btn { display: inline-block; }
.src { font-size: 12.5px; color: var(--dim); }
.src-link { font-size: 12.5px; }
.notice {
  background: var(--warn-soft); border-left: 3px solid var(--warn);
  padding: 11px 15px; border-radius: 0 8px 8px 0;
  font-size: 13.5px; color: #6d4a22; margin: 0 0 22px;
}
.body { font-family: var(--serif); font-size: 18px; line-height: 1.72; color: #241f1a; }
.body p { margin: 0 0 1.15em; }
.body.runon { font-size: 17px; line-height: 1.85; }

/* <details> so the expand works without script. The marker is removed on both the
   standard and the WebKit pseudo-element; only one of the two labels is ever shown. */
.more > summary {
  display: block; list-style: none; cursor: pointer;
  margin: 4px 0 18px;
  font-family: var(--sans); font-size: 13.5px; font-weight: 600; color: var(--accent);
}
.more > summary::-webkit-details-marker { display: none; }
.more > summary:hover { text-decoration: underline; }
.more > summary::before { content: '\25BE\00a0'; }
.more[open] > summary::before { content: '\25B4\00a0'; }
.more .more-shut, .more[open] .more-open { display: none; }
.more[open] .more-shut { display: inline; }

/* ---------- share video ---------- */
/* Folded shut by default: it sits directly under the player, where an open four-field
   form would push the transcript off the screen. Reopened by the template when a
   submission came back with a problem, so nothing typed is lost silently. */
.share-box { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 10px; margin: 0 0 20px; }
.share-fold { flex: 1 1 auto; }
.share-fold > summary {
  display: inline-block; list-style: none; cursor: pointer;
  padding: 7px 15px;
  border: 1px solid var(--accent); border-radius: 8px;
  background: var(--accent); color: #fff;
  font-size: 13.5px; font-weight: 600;
}
.share-fold > summary::-webkit-details-marker { display: none; }
.share-fold > summary:hover { background: #275c4e; }
.share-copy {
  padding: 7px 15px;
  border: 1px solid var(--accent); border-radius: 8px;
  background: var(--accent-soft); color: var(--accent);
  font-size: 13.5px; font-weight: 600; font-family: inherit; cursor: pointer;
}
.share-copy:hover { background: var(--accent); color: #fff; }

.share-form {
  margin-top: 12px; padding: 16px 18px;
  background: var(--card); border: 1px solid var(--line); border-radius: 11px;
}
.share-intro { margin: 0 0 14px; font-size: 13px; color: var(--dim); max-width: 62ch; }
.fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
.share-form label, .say label {
  display: block; font-size: 12px; font-weight: 600; color: var(--mid);
}
.share-form label.wide, .say label.wide { margin-top: 12px; }
.share-form input, .share-form textarea, .say input, .say textarea {
  display: block; width: 100%; margin-top: 5px;
  padding: 9px 11px;
  border: 1px solid var(--line); border-radius: 8px;
  background: var(--bg); color: var(--ink);
  font-size: 14px; font-family: inherit; font-weight: 400;
}
.share-form textarea, .say textarea { resize: vertical; }
.share-form input:focus, .share-form textarea:focus,
.say input:focus, .say textarea:focus {
  outline: 2px solid var(--accent-soft); border-color: var(--accent);
}
.share-form button, .say button {
  margin-top: 14px; padding: 9px 18px;
  border: 0; border-radius: 8px;
  background: var(--accent); color: #fff;
  font-size: 14px; font-weight: 600; font-family: inherit; cursor: pointer;
}
.share-form button:hover, .say button:hover { background: #275c4e; }

.flash { flex: 1 0 100%; margin: 0; padding: 9px 14px; border-radius: 8px; font-size: 13.5px; }
.flash.ok { background: var(--accent-soft); color: var(--accent); }
.flash.bad { background: var(--warn-soft); color: #6d4a22; }

/* ---------- disclaimer ---------- */
.disclaimer {
  margin: 34px 0 0; padding: 16px 18px;
  background: var(--card); border: 1px solid var(--line); border-radius: 11px;
  font-size: 12.5px; line-height: 1.65; color: var(--dim);
}
.disclaimer p { margin: 0 0 10px; }
.disclaimer p:last-child { margin: 0; }

/* ---------- comments ---------- */
.comments { margin-top: 34px; padding-top: 24px; border-top: 1px solid var(--line); }
.comments h2 { margin: 0 0 14px; font-family: var(--serif); font-size: 21px; font-weight: 600; }
.comments .empty { margin: 0 0 18px; font-size: 13.5px; color: var(--dim); }
.thread { list-style: none; margin: 0 0 22px; padding: 0; }
.thread li {
  padding: 13px 16px; margin-bottom: 9px;
  background: var(--card); border: 1px solid var(--line); border-radius: 11px;
}
.who { display: flex; gap: 10px; align-items: baseline; margin: 0 0 5px; font-size: 13px; font-weight: 600; }
.who span { font-weight: 400; font-size: 11.5px; color: var(--dim); }
.said { margin: 0; font-family: var(--serif); font-size: 15.5px; line-height: 1.6; white-space: pre-wrap; }
.say { padding: 16px 18px; background: var(--card); border: 1px solid var(--line); border-radius: 11px; }

/* ---------- search hits ---------- */
.hit { background: var(--card); border: 1px solid var(--line); border-radius: 11px; padding: 14px 17px; margin-bottom: 11px; }
.snip { margin: 8px 0 0; font-family: var(--serif); font-size: 15px; line-height: 1.65; color: var(--mid); }

/* ---------- pager ---------- */
.pager { display: flex; gap: 18px; align-items: center; justify-content: center; margin: 22px 0; font-size: 13.5px; color: var(--dim); }
.caveat { max-width: 96ch; margin: 0; line-height: 1.5; color: var(--dim); font-size: 12.5px; }

/* ---------- landing ----------
   The only public page, and the only one that gets to be loud. Display type is
   Space Grotesk over the library's own palette, so the door and the room match. */
.lp {
  --paper: #f4f1ea;
  --edge: #d8d3c6;
  background: var(--paper);
  font-family: 'Inter', var(--sans);
  font-size: 16px; line-height: 1.6;
}
.lp-wrap { max-width: 1240px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 56px); }
.lp em { font-style: normal; color: var(--accent); }

.lp-top { border-bottom: 1px solid var(--edge); }
.lp-top-in { display: flex; align-items: center; justify-content: space-between; height: 72px; }
.lp-mark {
  font-family: 'Space Grotesk', var(--sans); font-weight: 700; font-size: 19px;
  letter-spacing: .4px; color: var(--ink);
}
.lp-mark span { color: var(--accent); }
.lp-mark:hover { text-decoration: none; }
.lp-enter {
  font-family: 'Space Grotesk', var(--sans); font-size: 13.5px; font-weight: 600;
  color: var(--ink); border: 1.5px solid var(--ink); border-radius: 3px;
  padding: 9px 18px; white-space: nowrap;
  transition: background .15s, color .15s;
}
.lp-enter:hover { background: var(--ink); color: var(--paper); text-decoration: none; }

.lp-hero { padding: clamp(56px, 11vh, 120px) 0 clamp(48px, 9vh, 96px); }
.lp-kicker {
  margin: 0 0 22px;
  font-family: 'Space Grotesk', var(--sans); font-size: 12.5px; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase; color: var(--dim);
}
.lp-h1 {
  margin: 0; font-family: 'Space Grotesk', var(--sans); font-weight: 700;
  font-size: clamp(38px, 7vw, 92px); line-height: 1.03; letter-spacing: -.02em;
  text-transform: uppercase; color: var(--ink);
}
.lp-sub { max-width: 60ch; margin: 26px 0 0; font-size: 17px; color: var(--mid); }

.lp-figs {
  display: flex; flex-wrap: wrap; gap: 0;
  margin: clamp(38px, 6vh, 62px) 0 0;
  border-top: 1px solid var(--edge); border-bottom: 1px solid var(--edge);
}
.lp-fig { flex: 1 1 150px; padding: 20px 22px 18px; border-right: 1px solid var(--edge); }
.lp-fig:last-child { border-right: 0; }
.lp-fig b {
  display: block; font-family: 'Space Grotesk', var(--sans); font-weight: 700;
  font-size: clamp(28px, 3.6vw, 44px); line-height: 1.05; letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
}
.lp-fig span {
  font-size: 12px; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; color: var(--dim);
}
.lp-fig-key b { color: var(--accent); }

.lp-cta {
  display: inline-block; margin-top: clamp(30px, 5vh, 46px);
  font-family: 'Space Grotesk', var(--sans); font-weight: 600; font-size: 16px;
  background: var(--ink); color: var(--paper);
  padding: 16px 32px; border-radius: 3px;
}
.lp-cta:hover { background: var(--accent); text-decoration: none; }
.lp-note { margin: 14px 0 0; font-size: 13px; color: var(--dim); }

/* Duplicated content in the markup, translated by half - that is what makes the loop
   seamless. Halted for anyone who has asked the OS to stop animations. */
.lp-ticker {
  overflow: hidden; white-space: nowrap;
  border-top: 1px solid var(--edge); border-bottom: 1px solid var(--edge);
  background: var(--ink); color: var(--paper);
  padding: 13px 0;
}
.lp-ticker-in {
  display: inline-block;
  animation: lp-slide 34s linear infinite;
  font-family: 'Space Grotesk', var(--sans); font-size: 13px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase;
}
.lp-ticker-in span { padding: 0 18px; }
.lp-ticker-in i { font-style: normal; color: var(--accent); }
@keyframes lp-slide { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .lp-ticker-in { animation: none; } }

.lp-band { padding: clamp(52px, 9vh, 100px) 0; border-bottom: 1px solid var(--edge); }
.lp-band-alt { background: #efebe2; }
.lp-h2 {
  margin: 0 0 clamp(28px, 5vh, 52px);
  font-family: 'Space Grotesk', var(--sans); font-weight: 700;
  font-size: clamp(26px, 3.6vw, 46px); line-height: 1.1; letter-spacing: -.01em;
  text-transform: uppercase;
}
.lp-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(24px, 3.5vw, 54px); }
.lp-cols-2 { grid-template-columns: repeat(2, 1fr); }
.lp-cols p { margin: 0; color: var(--mid); }
.lp-num {
  margin: 0 0 12px; font-family: 'Space Grotesk', var(--sans); font-weight: 700;
  font-size: 13px; letter-spacing: .14em; color: var(--accent);
}
.lp-col h3 {
  margin: 0 0 10px; font-family: 'Space Grotesk', var(--sans);
  font-size: 20px; font-weight: 600; letter-spacing: -.01em;
}
.lp-col p { margin: 0; color: var(--mid); }

.lp-topics { display: flex; flex-wrap: wrap; gap: 8px; }
.lp-topic {
  display: inline-flex; align-items: baseline; gap: 8px;
  padding: 8px 15px; border: 1px solid var(--edge); border-radius: 999px;
  background: var(--card); font-size: 14px; color: var(--ink);
}
.lp-topic b { color: var(--accent); font-variant-numeric: tabular-nums; }
.lp-cap { margin: 18px 0 0; font-size: 13px; color: var(--dim); }

.lp-limits { background: var(--card); }
.lp-limits .lp-cta { background: var(--accent); }
.lp-limits .lp-cta:hover { background: var(--ink); }

.lp-foot { padding: 34px 0 48px; color: var(--dim); font-size: 13px; }
.lp-foot p { margin: 0 0 6px; max-width: 74ch; }
.lp-built { font-variant-numeric: tabular-nums; }

@media (max-width: 860px) {
  .lp-cols, .lp-cols-2 { grid-template-columns: 1fr; }
  .lp-fig { flex-basis: 50%; border-bottom: 1px solid var(--edge); }
}

/* ---------- gate ---------- */
.gate-page { display: grid; place-items: center; min-height: 100vh; }
.gate { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 34px 38px; width: 360px; text-align: center; }
.gate h1 { font-size: 22px; margin: 0 0 4px; }
.gate p { margin: 0 0 20px; color: var(--dim); font-size: 13px; }
.gate input { width: 100%; padding: 10px 13px; margin-bottom: 10px; border: 1px solid var(--line); border-radius: 8px; font-size: 15px; font-family: inherit; }
.gate input:focus { outline: 2px solid var(--accent-soft); border-color: var(--accent); }
.gate button { width: 100%; padding: 10px; }
.gate-error { margin: 12px 0 0; color: #a33; font-size: 13px; }
.gate-back { margin: 16px 0 0; font-size: 12.5px; }
.gate-back a { color: var(--dim); }
.gate-note { margin: 18px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--dim); }
.gate-done h1 { margin-bottom: 12px; }
.gate-done p { color: var(--mid); font-size: 13.5px; line-height: 1.6; margin-bottom: 12px; }

/* A guest reading one shared transcript gets no topic rail - every link in it leads
   somewhere they cannot go - so the column it left behind is closed up. */
.shell.solo { grid-template-columns: minmax(0, 1fr); max-width: 900px; }
.share.solo { margin-left: auto; }
.share .btn { display: inline-block; text-decoration: none; }
.guest-ask { margin: 32px 0 0; padding: 20px 22px; background: var(--accent-soft); border-radius: 12px; }
.guest-ask p { margin: 0 0 12px; font-size: 14px; color: var(--ink); line-height: 1.6; }
.guest-ask p:last-child { margin: 0; }

/* ---------- admin ---------- */
.adm { max-width: 1000px; margin: 0 auto; padding: 30px 28px 60px; }
.adm h1 { font-size: 24px; margin: 0 0 4px; }
.adm .lede { margin: 0 0 26px; }
.adm-flash { padding: 10px 14px; border-radius: 8px; margin: 0 0 20px; font-size: 13.5px; background: var(--accent-soft); color: var(--ink); }
.adm-flash.bad { background: #fbeaea; color: #8c2b2b; }
.adm h2 { font-size: 15px; margin: 30px 0 10px; }
.adm table { width: 100%; border-collapse: collapse; background: var(--card); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.adm th { text-align: left; font-size: 11.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--dim); padding: 11px 14px; border-bottom: 1px solid var(--line); }
.adm td { padding: 12px 14px; border-bottom: 1px solid var(--line); font-size: 13.5px; vertical-align: middle; }
.adm tr:last-child td { border-bottom: 0; }
.adm .c-act { text-align: right; white-space: nowrap; }
.adm .c-act form { display: inline; }
.adm-btn { padding: 6px 12px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg); color: var(--mid); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; }
.adm-btn.go { background: var(--accent); border-color: var(--accent); color: #fff; }
.adm-mail { color: var(--dim); font-size: 12.5px; }
.adm-none { color: var(--dim); font-size: 13.5px; }

@media (max-width: 900px) {
  .shell { grid-template-columns: 1fr; gap: 24px; padding: 20px 16px 40px; }
  .rail { position: static; max-height: none; }
  .topics { display: flex; flex-wrap: wrap; gap: 4px; }
  .topics a { background: var(--card); border: 1px solid var(--line); }
  .find input { width: 100%; max-width: none; }
  .top { flex-wrap: wrap; padding: 12px 16px; }
  .find { margin-left: 0; width: 100%; order: 3; }
  .share { margin-left: auto; }
  .preamble { padding: 12px 16px; }
  .c-title { width: auto; }
}
