:root {
  --bp-paper: #fff;
  --bp-paper-2: #f3f5f8;
  --bp-paper-3: #e7ecf2;
  --bp-ink: #0f1a2b;
  --bp-ink-2: #44556b;
  --bp-ink-3: #7a8a9e;
  --bp-rule: #b9c4d2;
  --bp-shadow: #d7dfe9;
  --bp-accent: #123a8c;
  --bp-accent-soft: #dce5f5;
  --bp-second: #a34a00;
  --bp-second-soft: #f7e4d4;
  --bp-ok: #1c6b4a;
  --bp-warn: #8a5a00;
  --bp-err: #a81b22;
  color-scheme: light;
}

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--bp-paper); -webkit-text-size-adjust: 100%; }
body.bp {
  min-height: 100%;
  margin: 0;
  overflow-x: hidden;
  background: var(--bp-paper);
  color: var(--bp-ink);
  font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3 { margin: 0; font-family: "Martian Mono", "JetBrains Mono", monospace; font-weight: 800; letter-spacing: -.02em; text-wrap: balance; }
p { margin: 0; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; color: inherit; }
[hidden] { display: none !important; }
::selection { background: var(--bp-accent-soft); }
:where(button, summary, input, select, textarea, a):focus-visible { outline: 2px solid var(--bp-second); outline-offset: 2px; }
.muted, .bp-hint { color: var(--bp-ink-3); }
.bp-label {
  margin: 0;
  color: var(--bp-ink-3);
  font-family: "Silkscreen", monospace;
  font-size: .66rem;
  letter-spacing: .1em;
  text-transform: uppercase;
}

/* Shell */
.app-shell { min-height: 100svh; }
.app-main, .flash-stack, .topbar-inner { width: min(104ch, calc(100% - 4ch)); margin-inline: auto; }
.app-main { padding: 1.6rem 0 5rem; }
.topbar { position: sticky; top: 0; z-index: 50; border-bottom: 1px solid var(--bp-rule); background: color-mix(in srgb, var(--bp-paper) 94%, transparent); backdrop-filter: blur(8px); }
.topbar-inner { display: flex; min-height: 3.25rem; align-items: center; gap: 2ch; padding: .7rem 0; }
.brand { flex: none; }
.brand-mark { font-family: "Martian Mono", monospace; font-size: .95rem; font-weight: 800; letter-spacing: -.04em; }
.brand-mark b { color: var(--bp-accent); }
.topnav { display: flex; flex-wrap: wrap; gap: 1.4ch; margin-left: auto; }
.topnav a, .admin-nav a { border-bottom: 2px solid transparent; padding: .15rem .5ch; color: var(--bp-ink-3); font-size: .82rem; }
.topnav a:hover, .admin-nav a:hover { color: var(--bp-ink); }
.topnav a.is-active { border-bottom-color: var(--bp-accent); color: var(--bp-ink); font-weight: 700; }
.flash-stack { display: grid; gap: .5rem; margin-top: .8rem; }
.flash { border-left: 3px solid var(--bp-accent); padding: .55rem 1.2ch; background: var(--bp-accent-soft); }
.flash:has(+ *) { margin-bottom: 0; }

/* Supplied frame language */
.bp-panel { position: relative; min-width: 0; margin: 0 0 2rem; border: 1px solid var(--bp-rule); padding: 1rem 2ch; }
.bp-panel.bp-framed { border: 0; padding: 0; }
.bp-panel.bp-framed[data-title]::before { display: none; }
.bp-fr { display: flex; width: 100%; min-width: 0; overflow: hidden; color: var(--bp-rule); font-size: .78rem; line-height: 1; white-space: nowrap; user-select: none; }
.bp-fr i { flex: none; font-style: normal; }
.bp-fr__h { flex: 1 1 auto; overflow: hidden; }
.bp-fr__t { flex: none; padding: 0 1ch; color: var(--bp-ink-3); font-family: "Silkscreen", monospace; font-size: .66rem; letter-spacing: .09em; text-transform: uppercase; }
.bp-fr__mid { position: relative; display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr); padding: 0 1ch; }
.bp-fr__body { min-width: 0; padding: .9rem 1.2ch; }
.bp-fr__v { position: absolute; top: 0; bottom: 0; width: 1ch; overflow: hidden; color: var(--bp-rule); font-size: .78rem; line-height: 1.05; white-space: pre; pointer-events: none; user-select: none; }
.bp-fr__v--l { left: 0; }
.bp-fr__v--r { right: 0; }

/* Controls */
.bp-btn {
  display: inline-flex;
  min-height: 2.2rem;
  align-items: center;
  justify-content: center;
  gap: 1ch;
  border: 1px solid var(--bp-rule);
  padding: .36rem 1.25ch;
  background: var(--bp-paper);
  color: var(--bp-ink);
  cursor: pointer;
  font-size: .86rem;
  transition: background .12s, border-color .12s, color .12s, transform .08s;
}
.bp-btn:hover { border-color: var(--bp-ink-2); }
.bp-btn:active { transform: translateY(1px); }
.bp-btn:disabled, .is-disabled { opacity: .42; pointer-events: none; }
.bp-btn--primary { border-color: var(--bp-accent); background: var(--bp-accent); color: #fff; font-weight: 700; }
.bp-btn--primary:hover { border-color: #0d2c6b; background: #0d2c6b; }
.bp-btn--ghost { border-color: transparent; padding-inline: .75ch; color: var(--bp-ink-2); font-size: .8rem; }
.bp-btn--danger { border-color: var(--bp-err); color: var(--bp-err); }
.inp {
  width: 100%; min-height: 2.35rem; border: 1px solid var(--bp-rule); border-radius: 0;
  padding: .4rem 1ch; background: var(--bp-paper); font-size: .86rem;
}
.inp:focus { border-color: var(--bp-accent); }
.inp::placeholder { color: var(--bp-ink-3); }
.bp-pill { display: inline-block; border: 1px solid var(--bp-rule); padding: .05rem .7ch; background: var(--bp-paper-2); color: var(--bp-ink-2); font-size: .72rem; }
.bp-pill--warn { border-color: var(--bp-second); background: transparent; color: var(--bp-second); }
.kbd { display: inline-block; border: 1px solid currentColor; border-radius: 2px; padding: 0 .5ch; font-size: .7rem; font-weight: 400; line-height: 1.35; opacity: .75; }

/* Home */
.today-hero { display: grid; gap: 1rem; padding: .4rem 0 1.8rem; }
.hero-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 1.5ch; }
.hero-line h1, .page-hero h1 { font-size: clamp(1.45rem, 3vw, 2rem); }
.deck-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(22ch, 1fr)); gap: 1.5ch; }
.deck-card { display: flex; min-height: 4.7rem; flex-direction: column; align-items: flex-start; justify-content: center; gap: .1rem; border: 1px solid var(--bp-rule); padding: .75rem 1.6ch; background: var(--bp-paper); text-align: left; }
.deck-card:hover { border-color: var(--bp-ink-2); }
.deck-card strong { font-family: "Martian Mono", monospace; font-size: .92rem; letter-spacing: -.02em; }
.deck-card small { color: var(--bp-ink-3); font-size: .76rem; }
.deck-card--main { border-color: var(--bp-accent); background: var(--bp-accent); color: #fff; }
.deck-card--main strong { font-size: 1.05rem; }
.deck-card--main small { color: #fff; opacity: .86; }
.deck-card--main:hover { border-color: #0d2c6b; background: #0d2c6b; }
.home-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2ch; }
.weak-list, .stat-list { display: grid; }
.weak-row { display: grid; grid-template-columns: minmax(0, 1fr) 9ch 6ch; gap: 1ch; align-items: center; border-bottom: 1px dotted var(--bp-paper-3); padding: .3rem 0; font-size: .84rem; }
.weak-row:hover { background: var(--bp-paper-2); }
.weak-row b { color: var(--bp-ink-3); font-size: .78rem; font-variant-numeric: tabular-nums; text-align: right; }
.weak-bar { position: relative; height: .68em; border: 1px solid var(--bp-rule); }
.weak-bar::before { position: absolute; inset: 1px auto 1px 1px; width: calc(var(--fill) - 2px); background: var(--bp-second); content: ""; }
.panel-hint { margin-top: .75rem; color: var(--bp-ink-3); font-size: .76rem; }
.stat-list > div { display: flex; justify-content: space-between; align-items: baseline; gap: 1ch; border-bottom: 1px dotted var(--bp-paper-3); padding: .28rem 0; font-size: .84rem; }
.stat-list b { font-family: "Martian Mono", monospace; font-size: 1.02rem; font-variant-numeric: tabular-nums; }
.activity-label { margin: 1rem 0 .35rem; }
.activity-map { display: grid; grid-auto-flow: column; grid-template-rows: repeat(7, .58rem); gap: 2px; overflow-x: auto; padding: .2rem 0; }
.activity-cell { width: .58rem; height: .58rem; background: var(--bp-paper-3); }
.activity-cell.is-level-1 { background: color-mix(in srgb, var(--bp-accent) 26%, var(--bp-paper)); }
.activity-cell.is-level-2 { background: color-mix(in srgb, var(--bp-accent) 55%, var(--bp-paper)); }
.activity-cell.is-level-3 { background: var(--bp-accent); }
.home-library { margin-top: .8rem; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 2ch; margin-bottom: .7rem; }
.section-heading h2 { margin-top: .2rem; font-size: 1.05rem; }
.category-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(22ch, 1fr)); border-top: 1px solid var(--bp-rule); border-left: 1px solid var(--bp-rule); }
.category-card { display: grid; gap: .2rem; min-height: 6.3rem; border-right: 1px solid var(--bp-rule); border-bottom: 1px solid var(--bp-rule); padding: .8rem 1.4ch; }
.category-card:hover { background: var(--bp-paper-2); }
.category-card strong { font-family: "Martian Mono", monospace; font-size: .88rem; }
.category-card small { color: var(--bp-ink-3); font-size: .75rem; }
.category-card span { align-self: end; color: var(--bp-accent); font-size: .72rem; }

/* Shared page headers */
.page-hero { display: flex; justify-content: space-between; align-items: center; gap: 2ch; margin-bottom: 1rem; padding: .35rem 0 .8rem; border-bottom: 1px solid var(--bp-rule); }
.page-hero > div { display: grid; gap: .35rem; }
.crumbs { margin-bottom: .7rem; }

/* Phrase library */
.library-filter { display: grid; grid-template-columns: minmax(20ch, 1fr) auto auto auto; gap: 1ch; align-items: center; margin-bottom: .9rem; }
.filter-submit { min-height: 2.35rem; }
.chips { display: flex; flex-wrap: wrap; gap: .6ch; margin-bottom: .9rem; }
.chip { border: 1px solid var(--bp-rule); padding: .16rem .9ch; background: var(--bp-paper); color: var(--bp-ink-2); font-size: .78rem; white-space: nowrap; }
.chip:hover { border-color: var(--bp-ink-2); }
.chip.is-on { border-color: var(--bp-accent); background: var(--bp-accent); color: #fff; font-weight: 700; }
.library-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1.5ch; border-bottom: 1px solid var(--bp-rule); padding: .5rem 0 .8rem; color: var(--bp-ink-2); font-size: .8rem; }
.library-actions .bp-btn--primary { min-height: 2.15rem; padding-block: .25rem; }
.selection-all { display: inline-flex; align-items: center; gap: .7ch; cursor: pointer; }
.selection-all input, .phrase-item input { accent-color: var(--bp-accent); }
.library-found { margin-left: auto; }
.phrase-table { display: grid; }
.phrase-item { border-bottom: 1px dotted var(--bp-paper-3); }
.phrase-item > summary { display: grid; grid-template-columns: 2.2ch minmax(0, 1.15fr) 12ch 10ch; gap: 1.2ch; align-items: center; min-height: 3.2rem; padding: .4rem 0; list-style: none; cursor: pointer; }
.phrase-item > summary::-webkit-details-marker { display: none; }
.phrase-item > summary:hover, .phrase-item[open] > summary { background: var(--bp-paper-2); }
.phrase-item__main { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1.4ch; align-items: center; }
.phrase-item__main b, .phrase-item__main i { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.phrase-item__main b { font-weight: 500; }
.phrase-item__main i { color: var(--bp-accent); font-style: normal; font-weight: 600; }
.phrase-item__theme { overflow: hidden; color: var(--bp-ink-3); font-size: .76rem; text-overflow: ellipsis; white-space: nowrap; }
.phrase-status { justify-self: end; border: 1px solid var(--bp-rule); padding: .05rem .5ch; color: var(--bp-ink-3); font-size: .66rem; white-space: nowrap; }
.phrase-status.is-known { border-color: var(--bp-ok); color: var(--bp-ok); }
.phrase-status.is-problem { border-color: var(--bp-second); color: var(--bp-second); }
.phrase-detail { display: grid; gap: .55rem; max-width: 78ch; padding: .35rem 0 1rem 3.4ch; color: var(--bp-ink-2); font-size: .82rem; }
.phrase-detail__actions { display: flex; flex-wrap: wrap; gap: 1ch; }
.pronunciation { color: var(--bp-ink-3); font-size: .78rem; }
.pager { display: flex; justify-content: center; align-items: center; gap: 1.5ch; padding: 1.2rem 0; color: var(--bp-ink-3); font-size: .82rem; }
.empty-state { display: grid; gap: .65rem; justify-items: center; padding: 2.5rem 1ch; color: var(--bp-ink-3); text-align: center; }
.empty-state strong { color: var(--bp-ink); }
.empty-state--large { min-height: 60svh; align-content: center; }

/* Topic list */
.topic-phrases { display: grid; border-top: 1px solid var(--bp-rule); }
.topic-phrase { display: grid; grid-template-columns: minmax(0, 1fr) minmax(18ch, .42fr); gap: 1.4ch 2ch; border-bottom: 1px dotted var(--bp-rule); padding: .8rem 0; }
.topic-phrase__copy { display: grid; gap: .2rem; }
.phrase-ru { font-weight: 700; }
.phrase-sr { color: var(--bp-accent); font-weight: 600; }
.topic-phrase aside { display: grid; justify-items: end; align-content: start; gap: .3rem; color: var(--bp-ink-3); font-size: .76rem; text-align: right; }

/* Review */
.app-main:has(.review-screen) { width: min(76ch, calc(100% - 4ch)); padding-top: .7rem; padding-bottom: 2rem; }
.review-screen { display: grid; grid-template-rows: auto auto auto; }
.review-progress { display: grid; grid-template-columns: minmax(12ch, 1fr) auto auto; align-items: center; gap: 1ch; border-bottom: 1px solid var(--bp-rule); padding: .35rem 0 .65rem; }
.progress-track { display: flex; min-width: 12ch; height: .55rem; gap: 2px; align-items: center; }
.progress-track i { flex: 1 1 0; height: 100%; background: var(--bp-paper-3); }
.progress-track i.is-ok { background: var(--bp-accent); }
.progress-track i.is-miss { background: var(--bp-second); }
.progress-track i.is-current { background: var(--bp-paper); box-shadow: inset 0 0 0 1px var(--bp-accent); }
.review-count { color: var(--bp-ink-3); font-size: .78rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.undo-button { min-height: 1.75rem; padding-block: .12rem; }
.review-card-body { display: grid; align-content: start; gap: .8rem; min-width: 0; padding: 1.15rem 0 1rem; }
.review-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 1.2ch; }
.review-meta .muted { font-size: .72rem; }
.review-question { margin: .1rem 0 .25rem; font-size: clamp(1.45rem, 3.4vw, 2.2rem); line-height: 1.24; white-space: pre-wrap; }
.review-answer { position: relative; display: grid; gap: .25rem; min-height: 4.2rem; padding: .7rem 1.4ch; background: var(--bp-paper-2); }
.review-answer__serbian { color: var(--bp-accent); font-family: "Martian Mono", monospace; font-size: clamp(1.05rem, 2.3vw, 1.45rem); font-weight: 600; line-height: 1.32; white-space: pre-wrap; }
.review-answer__pronunciation { color: var(--bp-ink-2); font-size: .84rem; }
.review-answer__note { color: var(--bp-ink-3); font-size: .78rem; }
.review-answer[data-open="0"] > p { visibility: hidden; }
.review-spoiler { position: absolute; inset: 0; overflow: hidden; width: 100%; border: 0; margin: 0; padding: 0; background: var(--bp-accent); color: var(--bp-accent); font-family: inherit; font-size: .95rem; line-height: 1; text-align: left; white-space: pre; cursor: pointer; }
.review-answer[data-open="1"] .review-spoiler { background: transparent; }
.review-spoiler[hidden] { display: none; }
.spoiler-cue { position: absolute; bottom: 0; left: 0; z-index: 2; padding: .08rem .8ch; background: var(--bp-ink); color: var(--bp-paper); font-size: .72rem; pointer-events: none; }
.review-footer { display: grid; gap: .45rem; border-top: 1px solid var(--bp-rule); padding: .65rem 0 0; }
.reveal-button { display: flex; width: 100%; min-height: 2.75rem; align-items: center; justify-content: center; gap: 1.2ch; border: 1px solid var(--bp-ink); background: var(--bp-ink); color: var(--bp-paper); font-weight: 700; cursor: pointer; }
.grade-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5ch; }
.grade-grid form { display: block; }
.grade-button { display: flex; width: 100%; min-height: 4.2rem; flex-direction: column; align-items: center; justify-content: center; gap: .1rem; border: 1px solid; color: #fff; cursor: pointer; }
.grade-button strong { font-size: .94rem; }
.grade-button small { font-size: .68rem; font-weight: 400; }
.grade-button--miss { border-color: var(--bp-second); background: var(--bp-second); }
.grade-button--ok { border-color: var(--bp-accent); background: var(--bp-accent); }
.grade-button:disabled { opacity: .45; cursor: default; }
.review-keys { display: flex; flex-wrap: wrap; gap: 2ch; color: var(--bp-ink-3); font-size: .7rem; }
.review-screen.is-turning .review-question, .review-screen.is-turning .review-answer { opacity: .25; transform: translateY(2px); transition: opacity .16s, transform .16s; }
.review-done { display: grid; max-width: 72ch; gap: 1.5rem; margin: 0 auto; padding: 3rem 0; }
.review-done h1 { font-size: clamp(1.5rem, 4vw, 2.3rem); }
.done-score { display: flex; flex-wrap: wrap; gap: 3ch; }
.done-score > div { display: grid; }
.done-score b { font-family: "Martian Mono", monospace; font-size: 1.8rem; font-variant-numeric: tabular-nums; }
.done-score span { color: var(--bp-ink-3); }
.done-label { margin-bottom: .5rem; }
.missed-list > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2ch; border-bottom: 1px dotted var(--bp-paper-3); padding: .35rem 0; font-size: .84rem; }
.missed-list i { color: var(--bp-accent); font-style: normal; font-weight: 600; }
.done-actions { display: flex; flex-wrap: wrap; gap: 1.2ch; }
.done-actions form { display: inline-flex; }

/* Theory bridges inside phrase practice */
.phrase-theory-bridge { grid-column: 1 / -1; min-width: 0; margin-top: .35rem; border-top: 1px solid var(--bp-paper-3); }
.phrase-theory-bridge > summary { display: grid; min-height: 3.25rem; grid-template-columns: 2.5ch minmax(0, 1fr); gap: 1ch; align-items: center; padding: .55rem 0; color: var(--bp-ink-2); list-style: none; cursor: pointer; }
.phrase-theory-bridge > summary::-webkit-details-marker { display: none; }
.phrase-theory-bridge > summary > span:first-child { display: grid; width: 1.6rem; height: 1.6rem; place-items: center; border: 1px solid var(--bp-rule); background: var(--bp-paper); color: var(--bp-accent); transition: transform .18s; }
.phrase-theory-bridge[open] > summary > span:first-child { transform: rotate(45deg); }
.phrase-theory-bridge > summary > span:last-child { display: grid; gap: .05rem; min-width: 0; }
.phrase-theory-bridge summary small { color: var(--bp-ink-3); font-size: .68rem; }
.phrase-theory-bridge summary strong { overflow: hidden; font-size: .77rem; text-overflow: ellipsis; white-space: nowrap; }
.phrase-theory-bridge__links { display: grid; gap: .4rem; padding: 0 0 .75rem 3.5ch; }
.phrase-theory-bridge__links > a { display: grid; grid-template-columns: minmax(0, 1fr) minmax(12ch, auto) auto; gap: 1ch; align-items: center; border: 1px solid var(--bp-rule); padding: .65rem 1ch; background: var(--bp-paper); }
.phrase-theory-bridge__links > a:hover { border-color: var(--bp-accent); background: var(--bp-paper-2); }
.phrase-theory-bridge__links span { display: grid; min-width: 0; }
.phrase-theory-bridge__links small { color: var(--bp-ink-3); font-size: .68rem; }
.phrase-theory-bridge__links strong { font-size: .82rem; }
.phrase-theory-bridge__links code { overflow: hidden; color: var(--bp-accent); font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.phrase-theory-bridge__links b { color: var(--bp-accent); }

/* Textbook: a calm, editorial learning surface */
.library-stack, .stack, .admin-list { display: grid; }
.library-row, .list-row, .admin-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1.5ch; align-items: center; border-bottom: 1px solid var(--bp-paper-3); padding: .7rem 0; }
.library-row:hover, .list-row:hover, .admin-row:hover { background: var(--bp-paper-2); }
.row-actions, .admin-row nav { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .6ch; }
.list-row span, .admin-row > span { display: grid; }
.list-row small, .admin-row small { color: var(--bp-ink-3); font-size: .76rem; }
.list-row b { color: var(--bp-ink-3); font-size: .72rem; }
.section-block { margin-top: 2rem; }

.theory-surface {
  --lesson-ink: #18251e;
  --lesson-muted: #66736a;
  --lesson-rule: #d9dfd9;
  --lesson-paper: #fbfcf8;
  --lesson-soft: #f0f4ed;
  --lesson-accent: #2e6248;
  --lesson-accent-dark: #173e2b;
  --lesson-warm: #e98f5b;
  color: var(--lesson-ink);
  font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.theory-surface h1, .theory-surface h2, .theory-surface h3 { font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; letter-spacing: -.035em; }
.lesson-kicker { color: var(--lesson-accent); font-size: .72rem; font-weight: 750; letter-spacing: .09em; text-transform: uppercase; }
.lesson-breadcrumbs { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-bottom: 1rem; color: var(--lesson-muted); font-size: .82rem; }
.lesson-breadcrumbs a:hover { color: var(--lesson-accent); }

.theory-hero { display: grid; grid-template-columns: minmax(0, 1fr) 14rem; gap: clamp(2rem, 6vw, 5rem); align-items: end; padding: clamp(1.5rem, 4vw, 3.5rem) 0 clamp(2rem, 5vw, 4.5rem); }
.theory-hero h1 { margin-top: .65rem; font-size: clamp(2.5rem, 7vw, 5.25rem); line-height: .98; }
.theory-hero__lead { max-width: 58ch; margin-top: 1.5rem; color: var(--lesson-muted); font-size: clamp(1rem, 1.8vw, 1.18rem); line-height: 1.65; }
.theory-hero__actions { display: grid; gap: .75rem; }
.theory-continue-link { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .1rem .8rem; align-items: center; border: 1px solid var(--lesson-accent); padding: 1rem 1.1rem; background: var(--lesson-accent); color: #fff; }
.theory-continue-link:hover { background: #0d2c6b; }
.theory-continue-link > span { grid-row: 1 / 3; font-size: 1.5rem; }
.theory-continue-link strong { font-size: .92rem; }
.theory-continue-link small { overflow: hidden; color: #dbe4f5; font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.theory-continue-link.is-complete { border-color: var(--lesson-rule); background: var(--lesson-soft); color: var(--lesson-ink); }
.theory-continue-link.is-complete small { color: var(--lesson-muted); }
.theory-saved-link { display: grid; grid-template-columns: auto 1fr; gap: .1rem .8rem; align-items: center; border: 1px solid var(--lesson-rule); border-radius: 1rem; padding: 1rem 1.1rem; background: var(--lesson-paper); }
.theory-saved-link:hover { border-color: var(--lesson-accent); transform: translateY(-1px); }
.theory-saved-link > span { grid-row: 1 / 3; color: var(--lesson-warm); font-size: 1.8rem; }
.theory-saved-link strong { font-size: .92rem; }
.theory-saved-link small { color: var(--lesson-muted); }

.learning-path { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--lesson-rule); border-left: 1px solid var(--lesson-rule); }
.learning-module { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); min-height: 23rem; border-right: 1px solid var(--lesson-rule); border-bottom: 1px solid var(--lesson-rule); background: var(--lesson-paper); color: inherit; }
.learning-module__number { padding: 1.35rem 0 0 1.35rem; color: #aab5ad; font-size: 1rem; font-variant-numeric: tabular-nums; }
.learning-module__body { display: flex; min-width: 0; flex-direction: column; padding: 1.35rem 1.5rem 1.5rem 0; }
.learning-module h2 { margin: .6rem 0 .65rem; font-size: clamp(1.45rem, 3vw, 2.15rem); }
.learning-module__body > p:not(.lesson-kicker) { max-width: 40ch; color: var(--lesson-muted); line-height: 1.6; }
.learning-module__action { display: inline-flex; align-self: flex-start; gap: .7rem; margin-top: auto; border-bottom: 1px solid currentColor; color: var(--lesson-accent); font-weight: 750; }
.learning-module__action small { color: var(--lesson-muted); font-size: .72rem; font-weight: 650; }
.learning-module__status { margin-left: .55rem; color: var(--lesson-muted); letter-spacing: 0; text-transform: none; }
.learning-module.is-completed { background: var(--lesson-soft); }
.learning-module.is-completed .learning-module__number { color: var(--lesson-accent); }
.learning-module.is-completed .learning-module__status { color: var(--lesson-accent); }
.learning-module.is-in-progress { box-shadow: inset 3px 0 var(--lesson-accent); }

.theory-section { max-width: 54rem; margin-inline: auto; }
.theory-section__header { max-width: 44rem; padding: clamp(1.5rem, 5vw, 3.5rem) 0 2.3rem; }
.theory-section__header h1 { margin: .65rem 0 .85rem; font-size: clamp(2.3rem, 7vw, 4.6rem); line-height: 1; }
.theory-section__header > p:last-child { color: var(--lesson-muted); font-size: 1.08rem; line-height: 1.65; }
.chapter-lessons__header { max-width: 42rem; margin-bottom: 1.25rem; }
.chapter-lessons__header h2 { margin: .35rem 0 .45rem; font-size: clamp(1.35rem, 3vw, 1.8rem); }
.chapter-lessons__header > p:last-child { color: var(--lesson-muted); line-height: 1.55; }
.lesson-list { margin: 0; padding: 0; border-top: 1px solid var(--lesson-rule); list-style: none; }
.lesson-list__link { display: grid; min-height: 8.5rem; grid-template-columns: 3rem minmax(0, 1fr) 2.5rem; gap: 1rem; align-items: center; border-bottom: 1px solid var(--lesson-rule); }
.lesson-list__link:hover { background: linear-gradient(90deg, transparent, var(--lesson-soft)); }
.lesson-list__number { align-self: start; padding-top: 1.4rem; color: #aab5ad; font-size: .8rem; font-variant-numeric: tabular-nums; }
.lesson-list__copy { display: grid; gap: .28rem; padding: 1.2rem 0; }
.lesson-list__copy small { color: var(--lesson-accent); font-size: .7rem; font-weight: 700; text-transform: uppercase; }
.lesson-list__copy strong { font-size: 1.15rem; }
.lesson-list__copy > span { max-width: 58ch; color: var(--lesson-muted); line-height: 1.5; }
.lesson-list__arrow { display: grid; width: 2rem; height: 2rem; place-items: center; border-radius: 50%; background: var(--lesson-soft); color: var(--lesson-accent); }
.lesson-list__link.is-visited { background: var(--lesson-soft); }
.lesson-list__link.is-visited .lesson-list__number { color: var(--lesson-accent); }

.lesson-progress { height: 3px; overflow: hidden; margin-bottom: clamp(1.6rem, 4vw, 3.2rem); border-radius: 99px; background: var(--lesson-rule); }
.lesson-progress span { display: block; width: var(--lesson-progress); height: 100%; background: var(--lesson-accent); }
.reader-page { max-width: 46rem; margin-inline: auto; }
.reader-header { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2rem; align-items: start; margin-bottom: clamp(2rem, 5vw, 3.5rem); }
.reader-header h1 { max-width: 18ch; margin-top: .65rem; font-size: clamp(2.25rem, 7vw, 4.5rem); line-height: 1.02; }
.favorite-toggle { display: inline-flex; margin: 0; }
.theory-favorite { display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center; gap: .55rem; border: 1px solid var(--lesson-rule); border-radius: 99px; padding: .55rem 1rem; background: var(--lesson-paper); color: var(--lesson-muted); cursor: pointer; }
.theory-favorite:hover { border-color: var(--lesson-accent); color: var(--lesson-accent); }
.theory-favorite.is-saved { border-color: #d98a58; background: #fff5ed; color: #9b542d; }
.theory-favorite.is-compact { min-height: 2rem; border-color: transparent; font-size: .75rem; }

.markup-body { color: #35443b; font-size: 1.04rem; line-height: 1.75; }
.markup-body > p { margin: 1rem 0; }
.markup-body h2 { margin: 3rem 0 1rem; color: var(--lesson-ink); font-size: clamp(1.45rem, 4vw, 2rem); }
.markup-body h3 { margin: 2rem 0 .7rem; color: var(--lesson-ink); font-size: 1.1rem; }
.markup-body ul { display: grid; gap: .55rem; margin: .9rem 0; padding: 0; list-style: none; }
.markup-body li { position: relative; padding-left: 1.5rem; }
.markup-body li::before { position: absolute; left: 0; color: var(--lesson-warm); content: "•"; }
.markup-body code { border-radius: .32rem; padding: .08rem .34rem; background: #e8efe8; color: var(--lesson-accent-dark); font-family: "JetBrains Mono", monospace; font-size: .9em; }
.markup-body blockquote { margin: 1.3rem 0; border-left: 3px solid var(--lesson-warm); padding: .25rem 0 .25rem 1.25rem; color: var(--lesson-muted); }
.theory-note { margin: 1.4rem 0; }
.theory-note > span, .pattern-block > span, .markup-label-line > span, .example-pair span { display: block; margin-bottom: .35rem; color: var(--lesson-accent); font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.theory-note.is-goal { max-width: 41rem; margin: 0 0 2rem; padding-left: 1.25rem; border-left: 3px solid var(--lesson-warm); color: var(--lesson-ink); font-size: 1.14rem; line-height: 1.6; }
.theory-note.is-why, .theory-note.is-use { padding: 1.2rem 1.3rem; border-radius: .8rem; background: var(--lesson-soft); }
.theory-note.is-trap { padding: 1rem 1.2rem; border-left: 3px solid var(--lesson-warm); background: #fff7f1; }
.pattern-block { margin: 1.5rem 0 2rem; border-radius: .9rem; padding: 1.25rem 1.35rem; background: var(--lesson-accent-dark); color: #fff; }
.pattern-block > span { color: #a9d2bc; }
.pattern-block code { display: block; padding: 0; background: transparent; color: #fff; font-size: clamp(1rem, 3vw, 1.3rem); font-weight: 700; line-height: 1.5; white-space: pre-wrap; }
.lesson-examples { margin: 1rem 0 1.5rem; border-top: 1px solid var(--lesson-rule); }
.example-pair { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .8fr); gap: 1rem; border-bottom: 1px solid var(--lesson-rule); padding: 1rem 0; }
.example-pair p { display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: .45rem; align-content: start; }
.example-pair span { margin: .23rem 0 0; }
.example-pair__sr { color: var(--lesson-ink); font-size: 1.12rem; font-weight: 750; }
.example-pair__ru { color: var(--lesson-muted); }
.markup-label-line { display: grid; grid-template-columns: 3rem minmax(0, 1fr); gap: .8rem; margin: 1rem 0; }
.self-check { margin: 3rem 0 0; border: 1px solid var(--lesson-accent); border-radius: .9rem; background: #f5f8f3; }
.self-check summary { display: grid; gap: .45rem; min-height: 5rem; padding: 1.1rem 1.25rem; color: var(--lesson-ink); font-weight: 750; list-style: none; cursor: pointer; }
.self-check summary::-webkit-details-marker { display: none; }
.self-check summary span, .self-check small { color: var(--lesson-accent); font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.self-check summary::after { align-self: center; grid-column: 2; grid-row: 1 / 3; color: var(--lesson-accent); content: "+"; font-size: 1.5rem; }
.self-check summary { grid-template-columns: minmax(0, 1fr) auto; }
.self-check[open] summary::after { content: "−"; }
.self-check > div { border-top: 1px solid var(--lesson-rule); padding: 1rem 1.25rem 1.2rem; }
.self-check > div p { margin-top: .25rem; color: var(--lesson-accent-dark); font-size: 1.05rem; font-weight: 700; }

.lesson-practice { margin-top: 4rem; overflow: hidden; border-radius: 1.1rem; background: var(--lesson-accent-dark); color: #fff; }
.lesson-practice__intro { padding: 1.5rem 1.5rem 1.2rem; }
.lesson-practice .lesson-kicker { color: #a9d2bc; }
.lesson-practice h2 { margin: .5rem 0 .65rem; font-size: clamp(1.45rem, 4vw, 2rem); }
.lesson-practice__intro > p:last-child { max-width: 52ch; color: #c7d7cc; line-height: 1.55; }
.lesson-practice__phrases { border-top: 1px solid #315c46; }
.lesson-practice__phrase { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; border-bottom: 1px solid #315c46; padding: .85rem 1.5rem; }
.lesson-practice__phrase span { color: #b8cbbf; }
.lesson-practice__phrase strong { font-weight: 750; }
.lesson-practice__button { display: flex; min-height: 4rem; justify-content: space-between; align-items: center; gap: 1rem; padding: .8rem 1.5rem; background: #e5a06f; color: #312116; font-weight: 800; }
.lesson-practice__button:hover { background: #efad7d; }
.lesson-practice__button span { font-size: .78rem; font-weight: 650; }

.reader-nav { display: grid; max-width: 54rem; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 3rem auto 0; border-top: 1px solid var(--lesson-rule); padding-top: 1.25rem; }
.lesson-nav-link { display: grid; gap: .18rem; min-height: 4.5rem; align-content: center; border-radius: .75rem; padding: .7rem 1rem; }
.lesson-nav-link:hover { background: var(--lesson-soft); }
.lesson-nav-link small { color: var(--lesson-muted); font-size: .7rem; text-transform: uppercase; }
.lesson-nav-link--next { text-align: right; }
.theory-empty { display: grid; gap: .65rem; justify-items: center; min-height: 22rem; align-content: center; border-top: 1px solid var(--lesson-rule); color: var(--lesson-muted); text-align: center; }
.theory-empty > span { color: var(--lesson-warm); font-size: 2.5rem; }
.theory-empty strong { color: var(--lesson-ink); font-size: 1.15rem; }
.theory-empty a { margin-top: .6rem; border-bottom: 1px solid currentColor; color: var(--lesson-accent); font-weight: 750; }

/* Textbook v2: one continuous course, built around situations and dialogue */
.theory-surface {
  --lesson-ink: var(--bp-ink);
  --lesson-muted: var(--bp-ink-2);
  --lesson-rule: var(--bp-rule);
  --lesson-paper: var(--bp-paper);
  --lesson-soft: var(--bp-paper-2);
  --lesson-accent: var(--bp-accent);
  --lesson-accent-dark: var(--bp-ink);
  --lesson-warm: var(--bp-accent);
}
.theory-surface .lesson-kicker,
.theory-note > span,
.pattern-block > span,
.markup-label-line > span,
.example-pair span,
.dialogue-turn__speaker,
.self-check summary span,
.self-check small { font-family: "JetBrains Mono", ui-monospace, monospace; }
.theory-index { max-width: 68rem; margin-inline: auto; }
.theory-hero { grid-template-columns: minmax(0, 1fr) 13rem; align-items: center; padding: 1.5rem 0 2.5rem; }
.theory-hero h1 { max-width: 14ch; font-size: clamp(2.35rem, 5.5vw, 4.7rem); line-height: 1.02; }
.theory-hero__lead { max-width: 55ch; margin-top: 1rem; line-height: 1.55; }
.theory-saved-link { border-radius: 0; box-shadow: none; }
.theory-saved-link > span { color: var(--lesson-accent); }
.learning-path { display: block; border: 0; counter-reset: situation; }
.learning-module { position: relative; display: grid; min-height: 0; grid-template-columns: 6rem minmax(0, 1fr); border: 0; border-top: 1px solid var(--lesson-rule); background: transparent; transition: background-color .18s ease; }
.learning-module:last-child { border-bottom: 1px solid var(--lesson-rule); }
.learning-module:hover { background: var(--lesson-soft); }
.learning-module:focus-visible { z-index: 1; outline: 2px solid var(--lesson-accent); outline-offset: -2px; }
.learning-module:hover h2, .learning-module:focus-visible h2 { color: var(--lesson-accent); }
.learning-module__number { padding: 1.65rem 0; color: var(--bp-ink-3); font-family: "Martian Mono", monospace; font-size: 1.55rem; font-weight: 800; }
.learning-module__body { display: flex; min-height: 11.5rem; gap: 0; padding: 1.65rem 1rem 1.65rem 0; }
.learning-module h2 { margin: .3rem 0 .35rem; font-size: clamp(1.45rem, 3vw, 2.35rem); }
.learning-module__action { margin-top: auto; padding-top: 1.25rem; }

.theory-section__header { padding: 1.25rem 0 1.8rem; }
.theory-section__header h1 { font-size: clamp(2.15rem, 6vw, 3.9rem); }
.chapter-lessons { margin-top: .5rem; }
.lesson-list__link { min-height: 7.25rem; }
.lesson-list__number { color: var(--bp-ink-3); font-weight: 800; }
.lesson-list__copy small { color: var(--lesson-accent); }
.lesson-list__arrow { border: 1px solid var(--lesson-rule); border-radius: 0; background: var(--lesson-paper); }

.lesson-progress { margin-bottom: 1.75rem; border-radius: 0; }
.reader-page { max-width: 43rem; }
.reader-header { align-items: start; margin-bottom: 1.8rem; }
.reader-header h1 { max-width: 18ch; margin-top: .4rem; font-size: clamp(2.15rem, 5.6vw, 3.65rem); line-height: 1.04; }
.theory-favorite { min-height: 2.4rem; border-radius: 0; }
.theory-favorite.is-saved { border-color: var(--lesson-accent); background: var(--lesson-paper); color: var(--lesson-accent); }
.markup-body { color: var(--bp-ink-2); font-size: 1rem; line-height: 1.65; }
.markup-body code { background: var(--bp-paper-3); color: var(--bp-accent); }
.markup-body > h2 { margin: 3rem 0 1rem; font-size: clamp(1.35rem, 3vw, 1.75rem); }
.markup-body > h2::before { display: none; }
.theory-note { margin: 1.25rem 0; }
.theory-note > span, .pattern-block > span, .markup-label-line > span, .example-pair span { color: var(--lesson-accent); }
.theory-note.is-goal { display: grid; grid-template-columns: 2rem minmax(0, 1fr); column-gap: .8rem; margin: 0 0 3rem; border-left: 3px solid var(--lesson-accent); padding: 1.1rem 1.2rem; background: #eef3ff; color: var(--lesson-ink); font-size: 1.05rem; }
.theory-note.is-goal::before { grid-row: 1 / 3; color: var(--lesson-accent); content: "◎"; font-size: 1.4rem; line-height: 1.2; text-align: center; }
.theory-note.is-goal > span, .theory-note.is-goal > p { grid-column: 2; }
.theory-note.is-goal > p { margin-top: .35rem; line-height: 1.55; }
.theory-note.is-scene { color: var(--lesson-ink); }
.theory-note.is-notice, .theory-note.is-why, .theory-note.is-use { border-left: 3px solid var(--lesson-accent); border-radius: 0; padding: 1rem 1.15rem; background: var(--lesson-soft); }
.theory-note.is-trap { border-left-color: var(--lesson-accent); background: var(--lesson-soft); }
.theory-note.is-mission { display: grid; grid-template-columns: 2rem minmax(0, 1fr); column-gap: .8rem; margin-top: 1.4rem; border-top: 1px solid var(--lesson-rule); border-bottom: 1px solid var(--lesson-rule); padding: 1rem 0; color: var(--lesson-ink); }
.theory-note.is-mission::before { grid-row: 1 / 3; color: var(--lesson-accent); content: "→"; font-size: 1.25rem; text-align: center; }
.theory-note.is-mission > span, .theory-note.is-mission > p { grid-column: 2; }
.theory-note.is-mission > p { margin-top: .3rem; }
.pattern-block { margin: 1rem 0 1.4rem; border: 1px solid var(--lesson-rule); border-left: 3px solid var(--lesson-accent); border-radius: 0; padding: 1rem 1.15rem; background: var(--lesson-paper); color: var(--lesson-ink); box-shadow: none; }
.pattern-block > span { color: var(--lesson-accent); }
.pattern-block code { margin-top: .35rem; color: var(--lesson-ink); font-size: 1.08rem; }

.lesson-dialogue-block { margin: 0 0 3rem; }
.lesson-dialogue-block__header { margin-bottom: 1rem; }
.lesson-dialogue-block__header > span { color: var(--lesson-accent); font-family: "JetBrains Mono", ui-monospace, monospace; font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.markup-body .lesson-dialogue-block__header h2 { display: block; margin: .35rem 0 0; font-size: clamp(1.35rem, 3vw, 1.75rem); }
.markup-body .lesson-dialogue-block__header h2::before { display: none; }
.lesson-dialogue-frame { border: 1px solid var(--lesson-rule); border-left: 3px solid var(--lesson-accent); background: var(--lesson-paper); }
.lesson-dialogue-frame .theory-note.is-scene { display: grid; grid-template-columns: 2rem minmax(0, 1fr); column-gap: .8rem; margin: 0; border: 0; border-bottom: 1px solid var(--lesson-rule); padding: 1rem 1.1rem; background: var(--lesson-soft); }
.lesson-dialogue-frame .theory-note.is-scene::before { grid-row: 1 / 3; color: var(--lesson-accent); content: "⌖"; font-size: 1.25rem; text-align: center; }
.lesson-dialogue-frame .theory-note.is-scene > span, .lesson-dialogue-frame .theory-note.is-scene > p { grid-column: 2; }
.lesson-dialogue-frame .theory-note.is-scene > p { margin-top: .3rem; }
.lesson-dialogue { margin: 0; }
.dialogue-turn { display: grid; grid-template-columns: 6rem minmax(0, 1fr); gap: 1rem; border-bottom: 1px solid var(--lesson-rule); padding: .95rem 1.1rem; }
.dialogue-turn:last-child { border-bottom: 0; }
.dialogue-turn__speaker { padding-top: .2rem; color: var(--lesson-muted); font-size: .7rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.dialogue-turn__sr { color: var(--lesson-ink); font-size: 1.1rem; font-weight: 750; }
.dialogue-turn__ru { margin-top: .08rem; color: var(--lesson-muted); font-size: .86rem; }
.lesson-words { display: grid; grid-template-columns: 1fr 1fr; margin: .8rem 0 2.75rem; border-top: 1px solid var(--lesson-rule); }
.lesson-words > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .7rem; border-bottom: 1px solid var(--lesson-rule); padding: .55rem .8rem .55rem 0; }
.lesson-words > div:nth-child(odd) { border-right: 1px solid var(--lesson-rule); }
.lesson-words > div:nth-child(even) { padding-left: .8rem; }
.lesson-words dt { color: var(--lesson-ink); font-weight: 750; }
.lesson-words dd { margin: 0; color: var(--lesson-muted); font-size: .86rem; }
.lesson-examples { margin: 1rem 0 1.4rem; }
.example-pair { grid-template-columns: minmax(0, 1fr) minmax(0, .9fr); padding: .85rem 0; }
.self-check { margin: 2.8rem 0 0; border-color: var(--lesson-rule); border-radius: 0; background: var(--lesson-paper); }
.self-check:hover { border-color: var(--lesson-accent); }
.self-check summary { min-height: 4.5rem; }
.lesson-practice { margin-top: 3.25rem; border: 1px solid var(--lesson-rule); border-radius: 0; background: var(--lesson-paper); color: var(--lesson-ink); box-shadow: none; }
.lesson-practice__intro { padding: 1.3rem 1.3rem 1.2rem; }
.lesson-practice .lesson-kicker { color: var(--lesson-accent); }
.lesson-practice__intro > p:last-child { color: var(--lesson-muted); }
.lesson-practice__button { min-height: 3.4rem; border-top: 1px solid var(--lesson-accent); padding-inline: 1.3rem; background: var(--lesson-accent); color: #fff; }
.lesson-practice__button:hover { background: #0d2c6b; }
.reader-nav { max-width: 43rem; margin-top: 2.25rem; }

/* Admin */
.admin-nav { display: flex; flex-wrap: wrap; gap: .7ch; margin-bottom: 1.2rem; border-bottom: 1px solid var(--bp-rule); padding-bottom: .55rem; }
.page-head { margin-bottom: 1.4rem; }
.page-head > .bp-fr__mid > .bp-fr__body { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 2ch; }
.page-head h1 { font-size: clamp(1.3rem, 2.5vw, 1.8rem); }
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(15ch, 1fr)); gap: 1.2ch; margin-bottom: 1.5rem; }
.stat-tile { margin: 0; }
.stat-tile .bp-fr__body { display: grid; gap: .25rem; }
.stat-tile strong { color: var(--bp-accent); font-family: "Martian Mono", monospace; font-size: 1.4rem; }
.admin-panel { margin-top: 1.5rem; }
.admin-row > span { min-width: 0; }
.admin-row strong, .admin-row small { overflow-wrap: anywhere; }
.admin-form { display: grid; gap: 1rem; max-width: 76ch; }
.admin-form.bp-panel .bp-fr__body { display: grid; gap: 1rem; }
.bp-field { display: grid; gap: .2rem; }
.bp-input { display: flex; align-items: center; border: 1px solid var(--bp-rule); background: var(--bp-paper); }
.bp-input > b { padding: 0 .7ch; color: var(--bp-rule); font-weight: 400; }
.bp-input:focus-within { border-color: var(--bp-accent); }
.bp-input input, .bp-input select, .bp-input textarea { width: 100%; min-width: 0; border: 0; padding: .42rem .4ch; background: transparent; outline: 0; }
.bp-input--area { align-items: stretch; }
.bp-input--area > b { padding-top: .42rem; }
.admin-form textarea, .code-input { min-height: 7rem; resize: vertical; line-height: 1.5; }
.code-input { font-size: .8rem; }
.form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(22ch, 1fr)); gap: 1.5ch; }
.bp-check { display: flex; align-items: center; gap: .7ch; cursor: pointer; }
.bp-check input { accent-color: var(--bp-accent); }
.bp-mark { display: none; }
.theory-picker { border: 1px dashed var(--bp-rule); padding: .8rem 1.2ch; }
.theory-picker__sections { display: grid; gap: .8rem; margin-top: .7rem; }
.theory-picker__section { display: grid; gap: .3rem; }
.theory-picker__section h3 { font-size: .8rem; }
.theory-picker__options { display: grid; grid-template-columns: repeat(auto-fit, minmax(24ch, 1fr)); gap: .35rem 1ch; }
.form-errors { border-color: var(--bp-err); color: var(--bp-err); }
.button_to { margin: 0; }

@media (max-width: 820px) {
  .home-grid { grid-template-columns: minmax(0, 1fr); }
  .library-filter { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .library-filter .inp:first-child { grid-column: 1 / -1; }
  .phrase-item > summary { grid-template-columns: 2.2ch minmax(0, 1fr) 9ch; }
  .phrase-item__main { grid-column: 2 / 4; grid-template-columns: minmax(0, 1fr); gap: .1rem; }
  .phrase-item__theme { grid-column: 2; grid-row: 2; }
  .phrase-status { grid-column: 3; grid-row: 2; }
  .theory-hero { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
  .theory-saved-link { width: min(100%, 20rem); }
  .learning-path { grid-template-columns: minmax(0, 1fr); }
  .learning-module { min-height: 0; }
}

@media (max-width: 620px) {
  .app-main, .flash-stack, .topbar-inner { width: min(100% - 3ch, 104ch); }
  .app-main { padding-top: 1.25rem; }
  body.bp .topbar-inner { align-items: flex-start; flex-direction: column; gap: .45rem; }
  body.bp .topnav { width: 100%; margin-left: 0; gap: .45ch 1.1ch; }
  .topnav a { padding-left: 0; font-size: .78rem; }
  .deck-grid { grid-template-columns: minmax(0, 1fr); }
  .deck-card { min-height: 4.45rem; }
  .page-hero { align-items: flex-start; flex-direction: column; }
  .page-hero .bp-btn--primary { width: 100%; }
  .library-filter { grid-template-columns: minmax(0, 1fr); }
  .library-filter .inp:first-child { grid-column: auto; }
  .filter-submit { display: none; }
  .library-actions .bp-btn--primary { order: 3; width: 100%; }
  .library-found { margin-left: 0; }
  .topic-phrase { grid-template-columns: minmax(0, 1fr); }
  .topic-phrase aside { justify-items: start; text-align: left; }
  .review-progress { grid-template-columns: minmax(0, 1fr) auto; padding-top: .15rem; }
  .undo-button { display: none; }
  .review-card-body { padding-top: .9rem; }
  .review-keys { display: none; }
  .grade-grid { gap: .7ch; }
  .grade-button { min-height: 4.5rem; padding: .45rem .5ch; }
  .grade-button strong { font-size: .82rem; }
  .missed-list > div { grid-template-columns: minmax(0, 1fr); gap: .1rem; }
  .reader-header { grid-template-columns: minmax(0, 1fr); }
  .reader-header .favorite-toggle { justify-self: start; }
  .theory-hero { padding-top: .8rem; }
  .theory-hero h1 { font-size: clamp(2.35rem, 13vw, 3.4rem); }
  .theory-hero__lead { margin-top: 1.1rem; }
  .learning-module { grid-template-columns: 3rem minmax(0, 1fr); min-height: 0; }
  .learning-module__number { padding: 1.1rem 0 0 .85rem; }
  .learning-module__body { padding: 1.1rem 1rem 1.2rem 0; }
  .theory-section__header { padding-top: 1rem; }
  .lesson-list__link { min-height: 9rem; grid-template-columns: 2rem minmax(0, 1fr) 2rem; gap: .65rem; }
  .lesson-list__copy > span { font-size: .9rem; }
  .lesson-progress { margin-bottom: 1.4rem; }
  .reader-header { gap: 1.2rem; }
  .reader-header h1 { font-size: clamp(2.2rem, 12vw, 3.2rem); }
  .example-pair { grid-template-columns: minmax(0, 1fr); gap: .35rem; padding: .9rem 0; }
  .example-pair__ru { font-size: .92rem; }
  .lesson-practice { margin-top: 3rem; }
  .lesson-practice__phrase { grid-template-columns: minmax(0, 1fr); gap: .15rem; }
  .lesson-practice__phrase span { font-size: .82rem; }
  .reader-nav { gap: .4rem; }
  .lesson-nav-link { padding-inline: .55rem; }
  .lesson-nav-link strong { font-size: .78rem; }
  .phrase-theory-bridge__links { padding-left: 0; }
  .phrase-theory-bridge__links > a { grid-template-columns: minmax(0, 1fr) auto; }
  .phrase-theory-bridge__links code { display: none; }
  .theory-hero h1 { font-size: clamp(2.3rem, 11vw, 3.15rem); }
  .learning-module { grid-template-columns: 2.7rem minmax(0, 1fr); }
  .learning-module__number { padding: 1.2rem 0; font-size: 1rem; }
  .learning-module__body { display: flex; min-height: 0; gap: 0; padding: 1.2rem 0 1.35rem; }
  .reader-header { grid-template-columns: minmax(0, 1fr) auto; gap: .75rem; align-items: start; }
  .reader-header .favorite-toggle { justify-self: end; }
  .reader-header h1 { font-size: clamp(1.8rem, 9vw, 2.5rem); }
  .theory-favorite { width: 2.5rem; overflow: hidden; padding: .5rem; gap: 0; }
  .theory-favorite__label { display: none; }
  .theory-favorite__icon { color: var(--lesson-muted); }
  .theory-favorite.is-saved .theory-favorite__icon { color: var(--lesson-accent); }
  .dialogue-turn { grid-template-columns: 4.3rem minmax(0, 1fr); gap: .65rem; }
  .dialogue-turn__sr { font-size: 1rem; }
  .lesson-words { grid-template-columns: minmax(0, 1fr); }
  .lesson-words > div:nth-child(odd) { border-right: 0; }
  .lesson-words > div:nth-child(even) { padding-left: 0; }
  .library-row, .list-row, .admin-row { grid-template-columns: minmax(0, 1fr); }
  .row-actions, .admin-row nav { justify-content: flex-start; }
  .admin-row nav .bp-btn { min-height: 2.5rem; }
}

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}
