/* Hallmark · macrostructure: Component Playground · theme: Almanac · design-system: design.md
 * ephemera/001 — 滑动窗口分步演示
 * 交互块是页面主体;其余为解说。域内已用: Index-First · Long Document · Catalogue · Split Studio(本站索引)
 */

.doc {
  max-width: 46rem;
  margin: 0 auto;
  padding: var(--space-xl) var(--space-lg) var(--space-2xl);
}

/* ───── 面包屑 ───── */
.crumb {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.08em;
  color: var(--color-neutral);
  margin-bottom: var(--space-xl);
}
.crumb a { color: var(--color-neutral); text-decoration: none; border-bottom: var(--rule-hair) solid var(--color-rule); }
.crumb a:hover, .crumb a:focus-visible { color: var(--color-accent); border-bottom-color: var(--color-accent); }
.crumb-sep { margin: 0 var(--space-xs); color: var(--color-rule); }
.crumb-no { color: var(--color-accent); }

/* ───── 标题 ───── */
.head h1 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--text-xl);
  line-height: 1.25;
  letter-spacing: -0.01em;
}
.sub { margin: var(--space-sm) 0 0; color: var(--color-muted); line-height: 1.75; }
.rule {
  margin: var(--space-lg) 0 var(--space-2xl);
  border: 0;
  border-top: var(--rule-hair) solid var(--color-ink);
  border-bottom: var(--rule-hair) solid var(--color-ink);
  height: 4px;
}

.k {
  font-family: var(--font-mono);
  font-size: 0.92em;
  color: var(--color-accent);
}

/* ───── 演示面板 ───── */
.play {
  border: var(--rule-hair) solid var(--color-ink);
  padding: var(--space-lg);
  margin-bottom: var(--space-2xl);
  background: var(--color-paper-2);
}

.play-top { margin-bottom: var(--space-lg); }

.ctl { display: flex; align-items: center; gap: var(--space-sm); flex-wrap: wrap; }
.ctl-name { font-family: var(--font-mono); font-size: var(--text-sm); color: var(--color-muted); }
.ctl input[type="range"] { flex: 1 1 12rem; accent-color: var(--color-accent); min-width: 8rem; }
.ctl-val {
  font-family: var(--font-mono);
  font-size: var(--text-md);
  color: var(--color-accent);
  min-width: 2.5ch;
  text-align: right;
}
.play-hint { margin: var(--space-xs) 0 0; font-size: var(--text-xs); color: var(--color-neutral); }

/* 数组带 */
.tape {
  display: flex;
  gap: 0;
  margin-bottom: var(--space-lg);
  overflow-x: auto;
  padding-bottom: var(--space-xs);
}

.cell {
  flex: 0 0 auto;
  width: 3.4rem;
  border: var(--rule-hair) solid var(--color-rule);
  margin-left: -1px;
  padding: var(--space-sm) 0 var(--space-xs);
  text-align: center;
  background: var(--color-paper);
  transition: background var(--dur-short) var(--ease-out),
              border-color var(--dur-short) var(--ease-out);
}
.cell:first-child { margin-left: 0; }

.cell-v { display: block; font-family: var(--font-mono); font-size: var(--text-md); }
.cell-i { display: block; font-family: var(--font-mono); font-size: 0.68rem; color: var(--color-neutral); margin-top: 2px; }
.cell-p { display: block; font-family: var(--font-mono); font-size: 0.68rem; height: 1em; color: var(--color-accent); margin-top: 2px; }

/* 在窗口内 */
.cell.in {
  background: var(--color-accent-soft);
  border-color: var(--color-accent);
  position: relative;
  z-index: 1;
}
/* 刚被右指针吃进来 */
.cell.eat { border-color: var(--color-ink); }

/* 状态表 */
.state {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-md);
  margin: 0 0 var(--space-md);
  padding: var(--space-md) 0;
  border-top: var(--rule-hair) solid var(--color-rule);
  border-bottom: var(--rule-hair) solid var(--color-rule);
}
.state div { margin: 0; }
.state dt {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-neutral);
  letter-spacing: 0.06em;
}
.state dd {
  margin: 2px 0 0;
  font-family: var(--font-mono);
  font-size: var(--text-md);
  color: var(--color-ink);
}
.state dd.hot { color: var(--color-accent); }

/* 解说 */
.narr {
  margin: 0 0 var(--space-lg);
  min-height: 3.2em;
  font-size: var(--text-sm);
  line-height: 1.75;
  color: var(--color-muted);
}
.narr strong { color: var(--color-ink); }
.narr .hit { color: var(--color-accent); font-weight: 600; }

/* 控制条 */
.play-bar { display: flex; align-items: center; gap: var(--space-sm); flex-wrap: wrap; }

.btn {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  padding: var(--space-xs) var(--space-md);
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-paper);
  color: var(--color-ink);
  cursor: pointer;
  transition: background var(--dur-short) var(--ease-out),
              color var(--dur-short) var(--ease-out);
}
.btn:hover:not(:disabled), .btn:focus-visible:not(:disabled) {
  background: var(--color-ink); color: var(--color-paper);
}
.btn-key { border-color: var(--color-accent); color: var(--color-accent); }
.btn-key:hover:not(:disabled), .btn-key:focus-visible:not(:disabled) {
  background: var(--color-accent); color: var(--color-paper);
}
.btn:disabled { opacity: 0.35; cursor: default; }

.step {
  margin-left: auto;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-neutral);
}

/* ───── 正文 ───── */
.doc h2 {
  margin: var(--space-2xl) 0 var(--space-md);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--text-lg);
  padding-bottom: var(--space-xs);
  border-bottom: var(--rule-hair) solid var(--color-ink);
}
.doc h3 {
  margin: var(--space-xl) 0 var(--space-xs);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--text-md);
}
.doc p { line-height: 1.8; }
.doc h3 em { font-family: var(--font-display); font-style: italic; color: var(--color-accent); }

.code {
  margin: var(--space-md) 0;
  padding: var(--space-md);
  border: var(--rule-hair) solid var(--color-rule);
  background: var(--color-paper-2);
  overflow-x: auto;
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  line-height: 1.7;
}
.code code { font-family: inherit; }

/* 表格 */
.tbl-scroll { overflow-x: auto; margin: var(--space-md) 0; }
.tbl { border-collapse: collapse; width: 100%; font-size: var(--text-sm); }
.tbl th, .tbl td {
  border: var(--rule-hair) solid var(--color-rule);
  padding: var(--space-sm) var(--space-md);
  text-align: left;
  vertical-align: top;
  line-height: 1.7;
}
.tbl thead th {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  font-weight: 400;
  letter-spacing: 0.06em;
  color: var(--color-neutral);
  background: var(--color-paper-2);
}
.tbl tbody th {
  font-family: var(--font-body);
  font-weight: 600;
  white-space: nowrap;
  background: var(--color-paper-2);
}

.note {
  margin-top: var(--space-md);
  padding-left: var(--space-md);
  border-left: 2px solid var(--color-accent);
  color: var(--color-muted);
}

/* ───── Ft4 colophon ───── */
.colo {
  margin-top: var(--space-3xl);
  padding-top: var(--space-md);
  border-top: var(--rule-hair) solid var(--color-ink);
}
.colo-line { margin: 0; font-family: var(--font-mono); font-size: var(--text-xs); color: var(--color-neutral); line-height: 1.9; }
.colo-back { margin: var(--space-sm) 0 0; font-family: var(--font-mono); font-size: var(--text-xs); }
.colo-back a { color: var(--color-muted); text-decoration: none; border-bottom: var(--rule-hair) solid var(--color-rule); }
.colo-back a:hover, .colo-back a:focus-visible { color: var(--color-accent); border-bottom-color: var(--color-accent); }

/* ───── 响应式 ───── */
@media (max-width: 34rem) {
  .doc { padding: var(--space-lg) var(--space-md) var(--space-xl); }
  .play { padding: var(--space-md); }
  .state { grid-template-columns: repeat(2, 1fr); gap: var(--space-sm); }
  .cell { width: 3rem; }
  .step { margin-left: 0; width: 100%; }
}
