/* ===================================================================
   AI BOOKS — движок серии
   Стиль: технический лист / терминал.
   ВАЖНО: никаких внешних ресурсов — книга должна открываться в море
   без интернета. Только системные шрифты.
   =================================================================== */

:root {
  --paper:        #f5f7f6;
  --paper-panel:  #ffffff;
  --ink:          #14202b;
  --ink-soft:     #4d5c69;
  --line:         #c6d0d4;
  --line-strong:  #8496a0;
  --grid:         rgba(20, 70, 90, 0.05);

  --marine:       #1d4e89;   /* основной акцент */
  --marine-dark:  #12365f;
  --marine-bg:    #e8eef6;

  --rust:         #b03a2e;   /* предупреждение / акцент */
  --rust-bg:      #fbeae8;

  --amber:        #b8860b;   /* предупреждение */
  --amber-bg:     #fbf3de;

  --green:        #2f6b45;   /* «годно», free-главы */
  --green-bg:     #e7f2ea;

  --indigo:       #45478f;
  --indigo-bg:    #ececf7;

  --font-display: "Helvetica Neue", "Arial Narrow", Arial, "Segoe UI", sans-serif;
  --font-body:    Georgia, "Times New Roman", "PT Serif", serif;
  --font-mono:    ui-monospace, "SF Mono", Menlo, Consolas, "Courier New", monospace;

  --fs: 17px;
}

/* --- Тёмная тема: читают ночью в каюте --- */
html[data-theme="dark"] {
  --paper:        #10161b;
  --paper-panel:  #171f26;
  --ink:          #e2e9ee;
  --ink-soft:     #94a5b1;
  --line:         #2c3944;
  --line-strong:  #465865;
  --grid:         rgba(120, 190, 210, 0.045);

  --marine:       #7ab3f0;
  --marine-dark:  #a8cdf7;
  --marine-bg:    #16243a;

  --rust:         #e08a5f;
  --rust-bg:      #2a1c15;

  --amber:        #d6ac4a;
  --amber-bg:     #29220f;

  --green:        #7bc094;
  --green-bg:     #14241a;

  --indigo:       #9698e0;
  --indigo-bg:    #1b1c2e;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  margin: 0;
  background:
    repeating-linear-gradient(0deg,  var(--grid) 0px, var(--grid) 1px, transparent 1px, transparent 24px),
    repeating-linear-gradient(90deg, var(--grid) 0px, var(--grid) 1px, transparent 1px, transparent 24px),
    var(--paper);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: var(--fs);
  line-height: 1.65;
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
}

::selection { background: var(--amber-bg); color: var(--ink); }

a { color: var(--marine); text-decoration-thickness: 1px; text-underline-offset: 2px; }
a:hover { color: var(--rust); }
a:focus-visible, button:focus-visible { outline: 2px solid var(--rust); outline-offset: 2px; }

.wrap { max-width: 840px; margin: 0 auto; padding: 0 24px 96px; }

/* --- Шапка-штамп --- */
.sheet-head {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 16px; padding: 18px 0 12px;
  border-bottom: 2px solid var(--ink); margin-bottom: 8px;
  font-family: var(--font-mono); font-size: 12px; color: var(--ink-soft);
  letter-spacing: 0.02em; flex-wrap: wrap;
}
.sheet-head .brand {
  font-family: var(--font-display); font-weight: 700; font-size: 15px;
  color: var(--ink); text-decoration: none; letter-spacing: 0.01em;
}
.sheet-head .brand:hover { color: var(--rust); }
.sheet-head .meta span { margin-left: 14px; }

/* --- Панель управления (тема / размер шрифта) --- */
.reader-tools {
  position: fixed; right: 14px; bottom: 14px; z-index: 40;
  display: flex; gap: 6px;
  font-family: var(--font-mono); font-size: 12px;
}
.reader-tools button {
  width: 36px; height: 36px; border-radius: 6px; cursor: pointer;
  border: 1px solid var(--line-strong); background: var(--paper-panel);
  color: var(--ink); font-size: 14px; line-height: 1;
  box-shadow: 0 1px 4px rgba(0,0,0,0.12);
}
.reader-tools button:hover { border-color: var(--rust); color: var(--rust); }

/* --- Прогресс чтения --- */
#readbar {
  position: fixed; top: 0; left: 0; height: 3px; width: 0;
  background: var(--rust); z-index: 50; transition: width .1s linear;
}

/* --- Заголовки --- */
.chapter-eyebrow {
  font-family: var(--font-mono); font-size: 13px; color: var(--rust);
  text-transform: uppercase; letter-spacing: 0.08em; margin: 28px 0 6px;
}
h1.chapter-title {
  font-family: var(--font-display); font-weight: 700;
  font-size: clamp(27px, 4vw, 38px); line-height: 1.15; margin: 0 0 6px;
}
.chapter-sub { color: var(--ink-soft); font-size: 16px; margin: 0 0 32px; max-width: 62ch; }

h2 {
  font-family: var(--font-display); font-weight: 600; font-size: 22px;
  color: var(--marine-dark); margin: 44px 0 14px;
  padding-bottom: 8px; border-bottom: 1px solid var(--line);
}
h3 { font-family: var(--font-display); font-weight: 600; font-size: 17px; margin: 26px 0 10px; }

p { margin: 0 0 16px; }
ul, ol { margin: 0 0 16px; padding-left: 22px; }
li { margin-bottom: 6px; }
strong { color: var(--ink); }
code {
  font-family: var(--font-mono); background: var(--marine-bg);
  padding: 1px 5px; border-radius: 3px; font-size: 0.9em;
  overflow-wrap: anywhere;
}

/* --- Блоки-примечания --- */
.callout {
  border: 1px solid var(--line); border-left: 4px solid var(--marine);
  background: var(--paper-panel); border-radius: 4px;
  padding: 14px 18px; margin: 20px 0;
}
.callout p:last-child, .callout ul:last-child, .callout ol:last-child { margin-bottom: 0; }
.callout-label {
  font-family: var(--font-mono); font-size: 11px; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--marine); margin-bottom: 6px; display: block;
}
.callout.warn  { border-left-color: var(--amber); background: var(--amber-bg); }
.callout.warn  .callout-label { color: var(--amber); }
.callout.rust  { border-left-color: var(--rust); background: var(--rust-bg); }
.callout.rust  .callout-label { color: var(--rust); }
.callout.good  { border-left-color: var(--green); background: var(--green-bg); }
.callout.good  .callout-label { color: var(--green); }

/* --- Блок «фраза на английском» --- */
.phrase {
  border: 1px solid var(--line); border-radius: 4px;
  background: var(--paper-panel); padding: 12px 16px; margin: 14px 0;
}
.phrase .en {
  font-family: var(--font-display); font-size: 16.5px; color: var(--ink);
  display: block; margin-bottom: 4px;
}
.phrase .ru { font-size: 14.5px; color: var(--ink-soft); display: block; }
.phrase .en, .phrase .ru { overflow-wrap: break-word; }
.phrase.bad { border-left: 4px solid var(--rust); }
.phrase.ok  { border-left: 4px solid var(--green); }

/* --- Диалог интервью --- */
.dialogue { margin: 18px 0; }
.dialogue .turn { display: flex; gap: 12px; margin-bottom: 12px; }
.dialogue .who {
  flex: 0 0 62px; font-family: var(--font-mono); font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--ink-soft); padding-top: 4px;
}
.dialogue .said {
  flex: 1; background: var(--paper-panel); border: 1px solid var(--line);
  border-radius: 4px; padding: 9px 13px; font-size: 15.5px;
}
.dialogue .turn.you .said { border-left: 3px solid var(--marine); }
.dialogue .turn.them .said { border-left: 3px solid var(--ink-soft); }

/* --- Таблицы --- */
.tablewrap { overflow-x: auto; margin: 20px 0; }
table { width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 15.5px; }
.tablewrap table { margin: 0; min-width: 520px; }
th, td { border: 1px solid var(--line); padding: 9px 12px; text-align: left; vertical-align: top; }
th {
  background: var(--marine-bg); font-family: var(--font-display); font-weight: 600;
  font-size: 13px; text-transform: uppercase; letter-spacing: 0.03em; color: var(--marine-dark);
}
tr:nth-child(even) td { background: rgba(127,127,127,0.045); }

/* --- Чек-лист с сохранением --- */
.checklist { list-style: none; padding-left: 0; }
.checklist li {
  display: flex; gap: 10px; align-items: flex-start;
  border-bottom: 1px dashed var(--line); padding: 7px 0;
}
.checklist input[type="checkbox"] { margin-top: 5px; width: 17px; height: 17px; accent-color: var(--marine); flex: 0 0 auto; }
.checklist input:checked + span { color: var(--ink-soft); text-decoration: line-through; }

/* --- Нижний штамп --- */
.title-block {
  margin-top: 64px; border: 1.5px solid var(--ink); border-radius: 2px;
  display: grid; grid-template-columns: repeat(4, 1fr);
  font-family: var(--font-mono); font-size: 11.5px; overflow: hidden;
}
.title-block .cell { padding: 8px 12px; border-right: 1px solid var(--line); border-top: 1px solid var(--line); }
.title-block .cell:nth-child(4n) { border-right: none; }
.title-block .cell:nth-child(-n+4) { border-top: none; }
.title-block .cell .k {
  display: block; color: var(--ink-soft); text-transform: uppercase;
  letter-spacing: 0.05em; font-size: 10px; margin-bottom: 3px;
}
.title-block .cell .v { color: var(--ink); font-weight: 500; }

/* --- Навигация --- */
.chapter-nav {
  display: flex; justify-content: space-between; gap: 16px; margin-top: 20px;
  font-family: var(--font-display); font-size: 14px;
}
.chapter-nav a {
  border: 1px solid var(--line); background: var(--paper-panel);
  padding: 10px 16px; border-radius: 4px; text-decoration: none; color: var(--ink); flex: 1;
}
.chapter-nav a:hover { border-color: var(--rust); color: var(--rust); }
.chapter-nav a.to-index { flex: 0 0 auto; color: var(--ink-soft); }
.chapter-nav .dir {
  display: block; font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-soft);
  text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 2px;
}

/* --- Оглавление --- */
.hero { padding: 52px 0 24px; }
.hero .kicker {
  font-family: var(--font-mono); color: var(--rust); font-size: 13px;
  text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 10px;
}
.hero h1 {
  font-family: var(--font-display); font-weight: 700;
  font-size: clamp(30px, 5vw, 46px); line-height: 1.1; margin: 0 0 14px;
}
.hero p.lead { font-size: 17.5px; color: var(--ink-soft); max-width: 60ch; }

.track-legend { display: flex; gap: 18px; flex-wrap: wrap; margin: 24px 0 36px; font-family: var(--font-mono); font-size: 12.5px; }
.track-legend .item { display: flex; align-items: center; gap: 7px; color: var(--ink-soft); }
.track-legend .dot { width: 10px; height: 10px; border-radius: 2px; display: inline-block; }

.schedule { border: 1px solid var(--line-strong); border-radius: 4px; overflow: hidden; margin-bottom: 8px; }
.schedule table { margin: 0; }
.schedule th, .schedule td { border-left: none; border-right: none; }
.schedule th { border-top: none; }
.schedule tbody tr td { border-bottom: 1px solid var(--line); }

.chnum { font-family: var(--font-mono); color: var(--ink-soft); width: 46px; }
.chlink { font-family: var(--font-display); font-weight: 600; color: var(--ink); text-decoration: none; }
.chlink:hover { color: var(--rust); }
.track-tag {
  display: inline-block; font-family: var(--font-mono); font-size: 10.5px;
  text-transform: uppercase; letter-spacing: 0.04em; padding: 2px 7px; border-radius: 3px;
}
.tag-market { background: var(--marine-bg); color: var(--marine-dark); }
.tag-docs   { background: var(--indigo-bg); color: var(--indigo); }
.tag-test   { background: var(--amber-bg);  color: var(--amber); }
.tag-talk   { background: var(--rust-bg);   color: var(--rust); }
.tag-tech   { background: var(--green-bg);  color: var(--green); }
.tag-method { background: var(--marine-bg); color: var(--marine-dark); }
.tag-dir    { background: var(--rust-bg);   color: var(--rust); }
.tag-tool   { background: var(--indigo-bg); color: var(--indigo); }
.tag-role   { background: var(--green-bg);  color: var(--green); }
.tag-move   { background: var(--amber-bg);  color: var(--amber); }

.status { font-family: var(--font-mono); font-size: 12px; color: var(--ink-soft); width: 78px; }
.status.free { color: var(--green); font-weight: 600; }

.section-label {
  font-family: var(--font-mono); font-size: 12px; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--ink-soft);
  margin: 40px 0 10px; padding-top: 24px; border-top: 1px solid var(--line);
}
.section-label:first-of-type { border-top: none; padding-top: 0; }

/* --- Лицензия / водяной знак покупателя --- */
.license {
  margin-top: 40px; border: 1px dashed var(--line-strong); border-radius: 4px;
  padding: 12px 16px; font-family: var(--font-mono); font-size: 11.5px;
  color: var(--ink-soft); line-height: 1.6;
}
.license b { color: var(--ink); }
.wm {
  font-family: var(--font-mono); font-size: 10.5px; color: var(--ink-soft);
  text-align: center; margin-top: 18px; opacity: .75;
}

/* --- Продающая страница --- */
.price-box {
  border: 2px solid var(--ink); border-radius: 6px; background: var(--paper-panel);
  padding: 22px 24px; margin: 32px 0;
}
.price-box .amount { font-family: var(--font-display); font-size: 40px; font-weight: 700; line-height: 1; }
.price-box .old { font-size: 20px; color: var(--ink-soft); text-decoration: line-through; margin-left: 10px; font-weight: 400; }
.btn {
  display: inline-block; background: var(--rust); color: #fff !important; text-decoration: none;
  font-family: var(--font-display); font-weight: 700; font-size: 17px;
  padding: 14px 30px; border-radius: 5px; margin-top: 14px;
}
.btn:hover { background: var(--marine); color: #fff !important; }
.btn.ghost { background: transparent; color: var(--marine) !important; border: 1px solid var(--line-strong); }
.btn.ghost:hover { border-color: var(--rust); color: var(--rust) !important; background: transparent; }

.faq dt { font-family: var(--font-display); font-weight: 700; margin-top: 18px; }
.faq dd { margin: 4px 0 0; color: var(--ink-soft); }

.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 20px 0; }
.card {
  border: 1px solid var(--line); background: var(--paper-panel);
  border-radius: 4px; padding: 14px 16px; font-size: 15.5px;
}
.card h4 { font-family: var(--font-display); margin: 0 0 6px; font-size: 15px; }

/* --- Справочник компаний --- */
.dir-filter {
  display: flex; gap: 8px; align-items: center; margin: 18px 0 8px;
  font-family: var(--font-mono); font-size: 12px; color: var(--ink-soft);
}
.dir-filter input {
  flex: 1; min-width: 0; padding: 8px 11px; border-radius: 4px;
  border: 1px solid var(--line-strong); background: var(--paper-panel);
  color: var(--ink); font-family: var(--font-body); font-size: 15px;
}
.dir-filter input:focus { outline: 2px solid var(--rust); outline-offset: 1px; }
.dir-filter .count { flex: 0 0 auto; white-space: nowrap; }

table.dir-table { font-size: 14.5px; }
.tablewrap table.dir-table { min-width: 660px; }
table.dir-table th, table.dir-table td { padding: 7px 10px; }
table.dir-table td:first-child { font-family: var(--font-display); font-weight: 600; }
table.dir-table .seg { font-family: var(--font-mono); font-size: 11.5px; color: var(--ink-soft); }
tr.dir-hidden { display: none; }

.verify-box {
  border: 1px solid var(--line-strong); border-left: 4px solid var(--rust);
  background: var(--paper-panel); border-radius: 4px;
  padding: 13px 17px; margin: 22px 0; font-size: 15.5px;
}
.verify-box .callout-label { color: var(--rust); }

/* --- Блок команд / терминал --- */
.cmd {
  border: 1px solid var(--line-strong); border-radius: 5px;
  background: var(--paper-panel); margin: 18px 0; overflow: hidden;
}
.cmd-head {
  display: flex; justify-content: space-between; align-items: center; gap: 10px;
  padding: 7px 12px; background: var(--marine-bg); border-bottom: 1px solid var(--line);
  font-family: var(--font-mono); font-size: 11px; text-transform: uppercase;
  letter-spacing: 0.07em; color: var(--marine-dark);
}
.cmd-head .os { font-weight: 700; }
.cmd-head .os.mac::before  { content: "macOS · "; }
.cmd-head .os.win::before  { content: "Windows 11 · "; }
.cmd-head .os.both::before { content: "macOS + Windows · "; }
.cmd-copy {
  border: 1px solid var(--line-strong); background: transparent; color: var(--ink-soft);
  font-family: var(--font-mono); font-size: 10.5px; text-transform: uppercase;
  letter-spacing: .05em; padding: 3px 9px; border-radius: 3px; cursor: pointer;
}
.cmd-copy:hover { border-color: var(--rust); color: var(--rust); }
.cmd pre {
  margin: 0; padding: 12px 14px; overflow-x: auto;
  font-family: var(--font-mono); font-size: 13.5px; line-height: 1.65;
  color: var(--ink); background: transparent; white-space: pre;
}
.cmd pre .c { color: var(--ink-soft); }
.cmd.out pre { color: var(--ink-soft); font-size: 12.5px; }
.cmd.out .cmd-head { background: transparent; color: var(--ink-soft); }

/* --- Две колонки mac / win --- */
.osgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 20px 0; }
.osgrid > div {
  border: 1px solid var(--line); border-radius: 5px; background: var(--paper-panel); padding: 14px 16px;
}
.osgrid > div > h4 {
  font-family: var(--font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: .07em;
  margin: 0 0 8px; color: var(--marine-dark);
}
.osgrid ul { margin-bottom: 0; }

@media (max-width: 620px) {
  .osgrid { grid-template-columns: 1fr; }
  .cmd pre { font-size: 12.5px; }
}
@media print {
  .cmd-copy { display: none !important; }
  .cmd { break-inside: avoid; page-break-inside: avoid; }
  .cmd pre { white-space: pre-wrap; word-break: break-all; font-size: 8.5pt; }
  .osgrid { grid-template-columns: 1fr 1fr; }
}

/* --- Интерактивный тест (бесплатный лид-магнит) --- */
.quiz-intro { border: 2px solid var(--ink); border-radius: 6px; background: var(--paper-panel); padding: 22px 24px; margin: 28px 0; }
.quiz-block { margin: 34px 0 0; }
.quiz-block > h2 { margin-bottom: 4px; }
.quiz-block .blocknote { font-family: var(--font-mono); font-size: 12px; color: var(--ink-soft); margin: 0 0 14px; }

.q {
  border: 1px solid var(--line); border-left: 4px solid var(--line-strong);
  background: var(--paper-panel); border-radius: 4px;
  padding: 13px 16px; margin: 10px 0; transition: border-color .15s;
}
.q.answered-yes { border-left-color: var(--green); }
.q.answered-no  { border-left-color: var(--rust); }
.q .qtext { font-size: 16px; margin-bottom: 10px; display: block; }
.q .qhint { display: block; font-size: 13.5px; color: var(--ink-soft); margin-top: 8px; }
.q .opts { display: flex; gap: 8px; flex-wrap: wrap; }
.q .opts button {
  font-family: var(--font-display); font-size: 14px; font-weight: 600;
  padding: 7px 20px; border-radius: 4px; cursor: pointer;
  border: 1px solid var(--line-strong); background: transparent; color: var(--ink);
}
.q .opts button:hover { border-color: var(--rust); color: var(--rust); }
.q .opts button[aria-pressed="true"][data-v="1"] { background: var(--green); border-color: var(--green); color: #fff; }
.q .opts button[aria-pressed="true"][data-v="0"] { background: var(--rust); border-color: var(--rust); color: #fff; }

#quizbar-wrap {
  position: sticky; top: 0; z-index: 30; background: var(--paper);
  padding: 10px 0 8px; border-bottom: 1px solid var(--line); margin-bottom: 8px;
}
#quizbar-track { height: 8px; border-radius: 4px; background: var(--marine-bg); overflow: hidden; }
#quizbar-fill { height: 100%; width: 0; background: var(--marine); transition: width .2s; }
#quizbar-label { font-family: var(--font-mono); font-size: 12px; color: var(--ink-soft); margin-top: 6px; display: block; }

.result { border: 2px solid var(--ink); border-radius: 6px; background: var(--paper-panel); padding: 26px; margin: 28px 0; }
.result .score { font-family: var(--font-display); font-weight: 700; font-size: 64px; line-height: 1; }
.result .score span { font-size: 26px; color: var(--ink-soft); font-weight: 400; }
.result .verdict { font-family: var(--font-display); font-weight: 700; font-size: 22px; margin: 12px 0 8px; }
.result .verdict.bad { color: var(--rust); }
.result .verdict.mid { color: var(--amber); }
.result .verdict.good { color: var(--green); }

.bars { margin: 22px 0; }
.bar-row { display: grid; grid-template-columns: 150px 1fr 46px; gap: 10px; align-items: center; margin-bottom: 8px; font-size: 14.5px; }
.bar-row .name { font-family: var(--font-display); font-weight: 600; }
.bar-track { height: 14px; border-radius: 3px; background: var(--marine-bg); overflow: hidden; }
.bar-fill { height: 100%; width: 0; transition: width .4s; }
.bar-fill.lo { background: var(--rust); }
.bar-fill.mid { background: var(--amber); }
.bar-fill.hi { background: var(--green); }
.bar-row .pct { font-family: var(--font-mono); font-size: 12.5px; color: var(--ink-soft); text-align: right; }

.fixlist { counter-reset: fix; list-style: none; padding-left: 0; }
.fixlist li {
  position: relative; padding: 12px 14px 12px 46px; margin-bottom: 10px;
  border: 1px solid var(--line); border-left: 4px solid var(--rust);
  border-radius: 4px; background: var(--paper);
}
.fixlist li::before {
  counter-increment: fix; content: counter(fix);
  position: absolute; left: 14px; top: 12px;
  font-family: var(--font-mono); font-weight: 700; color: var(--rust); font-size: 16px;
}
.fixlist li b { display: block; font-family: var(--font-display); margin-bottom: 3px; }

.sharebox { border: 1px dashed var(--line-strong); border-radius: 4px; padding: 14px 16px; margin: 22px 0; }
.sharebox textarea {
  width: 100%; min-height: 96px; border: 1px solid var(--line); border-radius: 4px;
  background: var(--paper); color: var(--ink); padding: 10px; font-family: var(--font-mono);
  font-size: 12.5px; line-height: 1.55; resize: vertical;
}
.redflag { border: 2px solid var(--rust); background: var(--rust-bg); border-radius: 6px; padding: 18px 20px; margin: 24px 0; }
.redflag h3 { margin-top: 0; color: var(--rust); }

@media (max-width: 620px) {
  .bar-row { grid-template-columns: 1fr; gap: 3px; margin-bottom: 14px; }
  .bar-row .pct { text-align: left; }
  .result .score { font-size: 52px; }
}
@media print {
  #quizbar-wrap, .q .opts, .sharebox { display: none !important; }
}

/* --- Карточка профессии (книга Ship to Shore) --- */
.role-facts {
  border: 1px solid var(--line-strong); border-radius: 4px;
  background: var(--paper-panel); margin: 22px 0; overflow: hidden;
}
.role-facts dl { margin: 0; display: grid; grid-template-columns: 190px 1fr; }
.role-facts dt {
  font-family: var(--font-mono); font-size: 11px; text-transform: uppercase;
  letter-spacing: 0.06em; color: var(--ink-soft);
  padding: 9px 14px; border-bottom: 1px solid var(--line); background: var(--marine-bg);
}
.role-facts dd {
  margin: 0; padding: 9px 14px; border-bottom: 1px solid var(--line); font-size: 15px;
}
.role-facts dt:last-of-type, .role-facts dd:last-of-type { border-bottom: none; }

@media (max-width: 620px) {
  .role-facts dl { grid-template-columns: 1fr; }
  .role-facts dt { border-bottom: none; padding-bottom: 2px; background: transparent; }
}

/* --- Версия для печати (один файл на всю книгу) --- */
.print-cover { padding: 40px 0 28px; border-bottom: 2px solid var(--ink); }
.print-cover .kicker {
  font-family: var(--font-mono); color: var(--rust); font-size: 13px;
  text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 10px;
}
.print-cover h1 {
  font-family: var(--font-display); font-weight: 700;
  font-size: clamp(30px, 5vw, 46px); line-height: 1.1; margin: 0 0 14px;
}
.print-cover .lead { font-size: 17.5px; color: var(--ink-soft); max-width: 60ch; }
.print-toc { margin: 34px 0 10px; }
.print-toc h2 { margin-top: 0; }
.print-toc ol { columns: 2; column-gap: 32px; font-size: 15px; }
.print-toc li { break-inside: avoid; margin-bottom: 5px; }
.print-toc a { text-decoration: none; }
.print-chapter { padding-top: 8px; }
.print-chapter + .print-chapter { border-top: 1px solid var(--line); margin-top: 48px; }

/* --- Печать / сохранение в PDF --- */
@media print {
  @page { margin: 16mm 14mm; }
  html { --fs: 10.5pt !important; }
  body {
    background: #fff !important; color: #000; font-size: 10.5pt;
  }
  .wrap { max-width: none; padding: 0; }
  .reader-tools, #readbar, .chapter-nav, .dir-filter, .sheet-head, .btn { display: none !important; }
  a { color: #000; text-decoration: none; }

  h1.chapter-title { font-size: 20pt; }
  h2 { font-size: 13pt; break-after: avoid; page-break-after: avoid; }
  h3 { font-size: 11.5pt; break-after: avoid; page-break-after: avoid; }
  p, li { orphans: 3; widows: 3; }

  .callout, .phrase, .verify-box, .card, .dialogue .turn { break-inside: avoid; page-break-inside: avoid; }
  .role-facts { break-inside: avoid; page-break-inside: avoid; }
  .role-facts dl { grid-template-columns: 150px 1fr; }
  .role-facts dt, .role-facts dd { padding: 3px 8px !important; font-size: 9pt; }
  tr, .checklist li { break-inside: avoid; page-break-inside: avoid; }
  thead { display: table-header-group; }

  /* таблицы не должны уезжать за край листа */
  .tablewrap { overflow: visible !important; }
  .tablewrap table, table.dir-table { min-width: 0 !important; width: 100% !important; }
  table { font-size: 8.5pt; }
  table.dir-table { font-size: 8pt; }
  th, td { padding: 4px 6px !important; }

  /* каждая глава печатной версии — с новой страницы */
  .print-chapter { break-before: page; page-break-before: always; border-top: none !important; margin-top: 0 !important; }
  .print-cover { break-after: page; page-break-after: always; border-bottom: none; }
  .print-toc { break-after: page; page-break-after: always; }
  .print-toc ol { columns: 1; }

  .title-block { break-inside: avoid; margin-top: 24px; }
  .wm { font-size: 7pt; }
}

@media (max-width: 620px) {
  .wrap { padding: 0 15px 80px; }
  .grid2 { grid-template-columns: 1fr; }
  .title-block { grid-template-columns: repeat(2, 1fr); }
  .title-block .cell:nth-child(2n) { border-right: none; }
  .title-block .cell:nth-child(-n+2) { border-top: none; }
  .title-block .cell:nth-child(3), .title-block .cell:nth-child(4) { border-top: 1px solid var(--line); }
  .dialogue .turn { flex-direction: column; gap: 3px; }
  .dialogue .who { flex: none; padding-top: 0; }
  .chapter-nav { flex-wrap: wrap; }
}
