/* reader.css — стили для экрана Reader (просмотр одного материала).
   Дополняет concept-d.css (там уже есть .d-rd-* классы для chrome/hero/progress/spread).
   Здесь — компоненты для цитат, заметок, форм добавления, связей, тоста. */

/* ─── контейнер экрана (тёмный «стол», на котором лежит книга) ── */
.d-reader {
  background:
    radial-gradient(ellipse at 50% -10%, rgba(255,240,200,.04), transparent 60%),
    linear-gradient(180deg, #181E24 0%, #1A2128 30%, #1B232A 100%);
  color: var(--ink-fg);
  min-height: calc(100vh - 56px);
  padding-bottom: 80px;
  /* лёгкая «деревянная» текстура — горизонтальные пряди */
  background-image:
    linear-gradient(180deg, #181E24 0%, #1A2128 30%, #1B232A 100%),
    repeating-linear-gradient(2deg, transparent 0 28px, rgba(160,140,90,.012) 28px 30px);
}

/* ─── ошибка «материал не найден» ─────────────────────────── */
.d-rd-error {
  max-width: 480px;
  margin: 120px auto;
  text-align: center;
  padding: 60px 32px;
  background: var(--paper-2);
  border: 1px solid var(--paper-line-soft);
  border-radius: var(--r-12);
}
.d-rd-error .jp {
  font-family: var(--jp); font-size: 64px; color: var(--paper-fg-3); opacity: .5; line-height: 1; margin-bottom: 16px;
}
.d-rd-error h2 { font: 500 28px var(--serif); margin: 0 0 10px; color: var(--paper-fg); }
.d-rd-error p { font: italic 15px var(--serif); color: var(--paper-fg-3); margin: 0 0 24px; }

/* ─── chrome (back/crumbs/more) — тёмный ────────────────── */
.d-rd-chrome {
  display: flex; align-items: center; gap: 16px;
  padding: 18px 36px;
  border-bottom: 1px solid var(--ink-line-soft);
  background: var(--ink-1);
  font-family: var(--sans);
}
.d-rd-chrome .back {
  display: inline-flex; align-items: center; gap: 8px;
  font: 500 12px var(--mono); letter-spacing: .12em; text-transform: uppercase;
  color: var(--ink-fg-3);
  cursor: pointer;
}
.d-rd-chrome .back:hover { color: var(--sage); }
.d-rd-chrome .crumbs {
  font: italic 14px var(--serif);
  color: var(--ink-fg-3);
}
.d-rd-chrome .crumbs b { font-style: normal; color: var(--ink-fg-2); font-weight: 600; font-family: var(--sans); font-size: 12px; letter-spacing: .04em; }
.d-rd-chrome .crumbs em { color: var(--ink-fg); font-style: italic; }
.d-rd-chrome .spacer { flex: 1; }
.d-rd-chrome .more { display: flex; gap: 4px; }
.rd-more-btn {
  width: 34px; height: 34px;
  border: 1px solid var(--ink-line);
  border-radius: var(--r-6);
  color: var(--ink-fg-3);
  background: transparent;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: color .15s, border-color .15s, background .15s;
}
.rd-more-btn:hover { color: var(--ink-fg); border-color: var(--ink-fg-3); background: var(--ink-2); }

/* ─── hero ──────────────────────────────────────────────── */
.d-rd-hero {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 36px;
  max-width: 1240px;
  margin: 0 auto;
  padding: 40px 36px 28px;
  align-items: start;
}
.d-rd-hero .cover-stack {
  width: 260px;
  aspect-ratio: 2 / 3;
  position: relative;
  filter: drop-shadow(0 14px 30px rgba(80,60,30,.3));
}
.d-rd-hero .cover-stack .face {
  width: 100%; height: 100%;
  border-radius: 4px;
  overflow: hidden;
  background: var(--paper-3);
  position: relative;
}
.d-rd-hero .cover-stack .face img { width: 100%; height: 100%; object-fit: cover; display: block; }
.d-rd-hero .cover-stack .face.typo-hero {
  padding: 28px 24px;
  display: flex; flex-direction: column; gap: 14px;
  color: rgba(255,255,255,.95);
  font-family: var(--serif);
}
.face.typo-hero.t-book      { background: linear-gradient(160deg, #74849A 0%, #485463 100%); }
.face.typo-hero.t-article   { background: linear-gradient(160deg, #94B484 0%, #5E7E50 100%); }
.face.typo-hero.t-lecture   { background: linear-gradient(160deg, #C29560 0%, #7C5C30 100%); }
.face.typo-hero.t-interview { background: linear-gradient(160deg, #B47878 0%, #774B4B 100%); }
.face.typo-hero.t-video     { background: linear-gradient(160deg, #8987B0 0%, #5C5982 100%); }
.face.typo-hero.t-note      { background: linear-gradient(160deg, #D5BD83 0%, #9F8848 100%); color: rgba(40,30,15,.85); }
.face.typo-hero .hero-au { font-family: var(--mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; opacity: .85; }
.face.typo-hero .hero-ti { font-family: var(--serif); font-weight: 500; font-size: 26px; line-height: 1.1; letter-spacing: -.015em; margin-top: auto; text-wrap: balance; }
.face.typo-hero .hero-yr { font-family: var(--mono); font-size: 11px; letter-spacing: .14em; opacity: .8; }

.d-rd-hero .head { min-width: 0; }
.d-rd-hero .head .type {
  font: 500 11px var(--mono); letter-spacing: .22em; text-transform: uppercase;
  color: var(--sage); margin-bottom: 14px;
}
.d-rd-hero .head .au {
  font-family: var(--sans);
  font-variant-caps: small-caps;
  font-size: 17px; letter-spacing: .04em;
  color: var(--ink-fg-2);
  margin-bottom: 10px;
}
.d-rd-hero .head .au .jp { font-family: var(--jp); font-variant-caps: normal; font-size: 15px; color: var(--ink-fg-3); margin-left: 8px; letter-spacing: 0; }
.d-rd-hero .head h1 {
  font: 500 44px/1.05 var(--serif);
  letter-spacing: -.022em;
  color: var(--ink-fg);
  margin: 0 0 12px;
  text-wrap: balance;
}
.d-rd-hero .head h1 .jp {
  display: block;
  font: 500 26px/1 var(--jp);
  color: var(--ink-fg-3);
  margin-bottom: 8px;
  letter-spacing: .02em;
}
.d-rd-hero .head .sub {
  font: italic 18px/1.4 var(--serif);
  color: var(--ink-fg-2);
  max-width: 32em;
  margin: 0 0 14px;
}
.d-rd-hero .head .rd-desc {
  font: 400 16px/1.55 var(--serif);
  color: var(--ink-fg);
  max-width: 32em;
  margin: 0 0 16px;
  text-wrap: pretty;
}
.d-rd-hero .head .biblio {
  display: flex; flex-wrap: wrap; gap: 6px 14px;
  font: 400 11px var(--mono); letter-spacing: .04em;
  color: var(--ink-fg-3);
  margin-bottom: 18px;
}
.d-rd-hero .head .biblio b { color: var(--ink-fg-2); font-weight: 500; }

/* теги материала под описанием — flex-wrap чтобы переносились */
.d-rd-hero .head .rd-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 14px;
  align-items: flex-start;
  max-width: 100%;
}
.d-rd-hero .head .rd-tag {
  font: 500 11px var(--mono);
  letter-spacing: .04em;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--ink-2);
  border: 1px solid var(--ink-line);
  color: var(--ink-fg-3);
  text-decoration: none;
  cursor: pointer;
  transition: color .12s, border-color .12s, background .12s;
  white-space: nowrap;
  flex: 0 0 auto;
}
.d-rd-hero .head .rd-tag:hover {
  color: var(--sage);
  border-color: var(--sage);
  background: var(--ink-3);
}
.d-rd-hero .head .biblio .pipe { color: var(--ink-line); }

.d-rd-hero .head .actions {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: 6px;
}
.d-rd-hero .head .actions button {
  font: 500 12px var(--mono); letter-spacing: .12em; text-transform: uppercase;
  padding: 10px 18px;
  border: 1px solid var(--ink-line);
  border-radius: 999px;
  color: var(--ink-fg-2);
  background: var(--ink-2);
  cursor: pointer;
  display: inline-flex; align-items: center; gap: 8px;
  transition: border-color .15s, color .15s, background .15s;
}
.d-rd-hero .head .actions button:hover { border-color: var(--sage); color: var(--ink-fg); background: var(--ink-3); }
.d-rd-hero .head .actions button.primary { background: var(--sage); border-color: var(--sage); color: #14191D; }
.d-rd-hero .head .actions button.primary:hover { background: var(--sage-2); border-color: var(--sage-2); color: #14191D; }
.d-rd-hero .head .actions .rd-source-btn {
  font: 500 12px var(--mono); letter-spacing: .12em; text-transform: uppercase;
  padding: 10px 16px;
  border: 1px solid #6FA67E;
  border-radius: 999px;
  color: #DCEED2;
  background: linear-gradient(135deg, #2E4438 0%, #25372E 100%);
  cursor: pointer;
  display: inline-flex; align-items: center; gap: 8px;
  text-decoration: none;
  position: relative;
  transition: border-color .15s, color .15s, background .15s, transform .15s, box-shadow .15s;
  box-shadow: 0 1px 0 rgba(255,255,255,.05) inset, 0 2px 8px -2px rgba(143,174,124,.3);
  max-width: 240px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.d-rd-hero .head .actions .rd-source-btn span {
  overflow: hidden;
  text-overflow: ellipsis;
}
.d-rd-hero .head .actions .rd-source-btn:hover {
  background: var(--sage); color: #14191D; border-color: var(--sage);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px -4px rgba(143,174,124,.55);
}
.d-rd-hero .head .actions .rd-source-btn svg {
  flex: 0 0 auto;
  color: var(--sage);
  transition: color .15s, transform .2s;
}
.d-rd-hero .head .actions .rd-source-btn:hover svg {
  color: #14191D;
  transform: translate(1px, -1px);
}

/* inline-форма обновления страницы (заменяет «Продолжить» при клике) */
.d-rd-hero .head .actions .rd-pos-form {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--ink-2);
  border: 1px solid var(--sage);
  border-radius: 999px;
  padding: 4px 8px 4px 16px;
}
.d-rd-hero .head .actions .rd-pos-form .rd-pos-lab {
  font: 500 10px var(--mono);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--sage);
}
.d-rd-hero .head .actions .rd-pos-form input {
  width: 80px;
  font: 500 14px var(--mono);
  background: var(--ink-1);
  color: var(--ink-fg);
  border: 1px solid var(--ink-line);
  border-radius: 6px;
  padding: 6px 10px;
  outline: none;
  text-align: center;
}
.d-rd-hero .head .actions .rd-pos-form input:focus { border-color: var(--sage); }
.d-rd-hero .head .actions .rd-pos-form .rd-pos-of {
  font: 400 12px var(--mono);
  color: var(--ink-fg-3);
}
.d-rd-hero .head .actions .rd-pos-form button {
  font: 500 11px var(--mono);
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: 7px 14px;
  border-radius: 999px;
  cursor: pointer;
  border: 0;
}
.d-rd-hero .head .actions .rd-pos-form button.primary {
  background: var(--sage); color: #14191D;
}
.d-rd-hero .head .actions .rd-pos-form button.primary:hover { background: var(--sage-2); }
.d-rd-hero .head .actions .rd-pos-form button[data-act="cancel-position"] {
  background: transparent;
  color: var(--ink-fg-3);
}
.d-rd-hero .head .actions .rd-pos-form button[data-act="cancel-position"]:hover { color: var(--ink-fg); }

/* ─── progress strip — тёмная (на тёмном «столе») ─────── */
.d-rd-progress {
  max-width: 1240px;
  margin: 20px auto 0;
  padding: 0 36px;
}
.d-rd-progress {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1px;
}
.d-rd-progress > div {
  background: var(--ink-2);
  padding: 14px 16px;
  font-family: var(--sans);
  border: 1px solid var(--ink-line-soft);
  border-radius: 0;
}
.d-rd-progress > div:first-child { border-radius: var(--r-6) 0 0 var(--r-6); }
.d-rd-progress > div:last-child  { border-radius: 0 var(--r-6) var(--r-6) 0; }
.d-rd-progress > div + div { border-left: 0; }
.d-rd-progress .k {
  font: 500 9.5px var(--mono); letter-spacing: .18em; text-transform: uppercase;
  color: var(--ink-fg-3); margin-bottom: 6px;
}
.d-rd-progress .v {
  font: 500 24px/1.05 var(--serif);
  color: var(--ink-fg); letter-spacing: -.015em;
}
.d-rd-progress .v small { font-size: 12px; color: var(--ink-fg-3); margin-left: 1px; font-weight: 400; }

/* ─── spread (разворот) ────────────────────────────────── */
.d-spread {
  max-width: 1240px;
  margin: 36px auto 0;
  padding: 0 36px;
}
.d-spread .wrap {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  background: var(--paper-1);
  border-radius: var(--r-8);
  overflow: hidden;
  position: relative;
  box-shadow:
    0 1px 0 rgba(80,60,30,.04),
    0 24px 50px -20px rgba(80,60,30,.25);
}
.d-spread .wrap::before {
  /* gutter shadow посередине */
  content: '';
  position: absolute;
  left: 50%; top: 0; bottom: 0;
  width: 40px;
  transform: translateX(-50%);
  background: linear-gradient(90deg, transparent, rgba(40,30,20,.10) 50%, transparent);
  pointer-events: none;
  z-index: 1;
}

.rd-page {
  padding: 40px 44px 52px;
  min-height: 540px;
  position: relative;
}
.d-page-l { background: var(--paper-1); border-right: 1px solid var(--paper-line-soft); }
.d-page-r {
  background:
    repeating-linear-gradient(0deg, transparent 0 28px, rgba(120,90,40,.035) 28px 29px),
    var(--paper-2);
}

.rd-page .chapter,
.rd-page .rd-page-head {
  font: 500 10px var(--mono); letter-spacing: .22em; text-transform: uppercase;
  color: var(--sage-paper-fg);
  margin-bottom: 14px;
}
.rd-page .rd-page-h2 {
  font: 500 26px/1.1 var(--serif);
  letter-spacing: -.02em;
  color: #1B1612;
  margin: 0 0 22px;
}

.rd-empty {
  padding: 24px 0 8px;
  font: italic 14px/1.5 var(--serif);
  color: var(--paper-fg-3);
  border-top: 1px dashed var(--paper-line-soft);
  border-bottom: 1px dashed var(--paper-line-soft);
  margin: 8px 0 20px;
}
.rd-empty p { margin: 0 0 14px; }
.rd-empty.rd-empty-small {
  padding: 14px 16px;
  border: 1px dashed var(--ink-line);
  border-radius: var(--r-6);
  font-size: 13px;
  color: var(--ink-fg-3);
  background: rgba(143,174,124,.03);
}
.rd-empty .ghost-btn { margin-top: 6px; }
.rd-empty-msg { font: italic 13px var(--serif); color: var(--paper-fg-3); margin: 8px 0; }

/* ─── цитаты ──────────────────────────────────────────── */
.rd-quotes { display: flex; flex-direction: column; gap: 22px; }
.rd-quote {
  position: relative;
  padding: 10px 4px 16px 22px;
  border-left: 2px solid var(--sage-dark);
}
.rd-quote .qpg {
  font: 500 10.5px var(--mono); letter-spacing: .14em; text-transform: uppercase;
  color: var(--sage-paper-fg);
  margin-bottom: 8px;
}
.rd-quote .qtext {
  font: italic 19px/1.4 var(--serif);
  color: #1F1A14;
  margin: 0;
  text-wrap: pretty;
  position: relative;
}
.rd-quote .qtext::before {
  content: '“';
  position: absolute;
  left: -22px; top: -14px;
  font-style: normal;
  font-size: 48px;
  color: var(--sage);
  line-height: 1;
}
/* длинные цитаты — обрезаем до 5 строк с градиентом-затуханием снизу */
.rd-quote .qtext.qtext-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 5;
  -webkit-box-orient: vertical;
  overflow: hidden;
  position: relative;
}
.rd-quote .qtext.qtext-clamp::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1.8em;
  background: linear-gradient(180deg, transparent 0%, var(--paper-1) 90%);
  pointer-events: none;
}
.rd-quote .qtext-toggle {
  margin-top: 6px;
  font: 500 11px var(--mono);
  letter-spacing: .14em;
  text-transform: uppercase;
  padding: 4px 12px;
  border-radius: 999px;
  background: transparent;
  border: 1px dashed var(--sage-paper-fg);
  color: var(--sage-paper-fg);
  cursor: pointer;
  transition: background .12s;
}
.rd-quote .qtext-toggle:hover { background: rgba(98,140,90,.10); }
.rd-quote .qnote {
  margin-top: 10px;
  padding-left: 16px;
  font: 400 14px/1.5 var(--sans);
  color: var(--paper-fg-2);
  position: relative;
}
.rd-quote .qnote-mark {
  position: absolute; left: 0; top: 0;
  color: var(--sage-paper-fg);
  font-size: 16px;
}
.rd-quote .qtags {
  margin-top: 8px;
  display: flex; flex-wrap: wrap; gap: 6px;
  font: 400 10.5px var(--mono); letter-spacing: .04em;
  color: var(--paper-fg-3);
}
.rd-quote .qactions {
  position: absolute; top: 6px; right: 0;
  display: flex; gap: 4px;
  opacity: 0; transition: opacity .15s;
}
.rd-quote:hover .qactions { opacity: 1; }
.rd-quote .qactions button {
  width: 26px; height: 26px;
  border: 1px solid var(--paper-line-soft);
  border-radius: 50%;
  background: var(--paper-2);
  color: var(--paper-fg-3);
  font-size: 14px;
  cursor: pointer;
  transition: color .15s, border-color .15s;
}
.rd-quote .qactions button:hover { color: var(--paper-fg); border-color: var(--paper-fg-3); }

/* ─── заметки ─────────────────────────────────────────── */
.rd-notes { display: flex; flex-direction: column; gap: 18px; }
.rd-note {
  position: relative;
  padding: 14px 18px;
  background: var(--paper-3);
  border: 1px solid var(--paper-line-soft);
  border-left: 3px solid #B8A06A;
  border-radius: var(--r-6);
}
.rd-note .ndate {
  font: 500 10px var(--mono); letter-spacing: .14em; text-transform: uppercase;
  color: #8A7330; margin-bottom: 6px;
}
.rd-note .ntext {
  font: 400 15px/1.5 var(--serif);
  color: #3B3220;
  white-space: pre-wrap;
}
.rd-note .ntags {
  margin-top: 8px;
  display: flex; flex-wrap: wrap; gap: 6px;
  font: 400 10px var(--mono); letter-spacing: .04em;
  color: #8A7330;
}
.rd-note .nactions {
  position: absolute; top: 8px; right: 8px;
  display: flex; gap: 4px;
  opacity: 0; transition: opacity .15s;
}
.rd-note:hover .nactions { opacity: 1; }
.rd-note .nactions button {
  width: 24px; height: 24px;
  border: 1px solid rgba(180,150,80,.3);
  border-radius: 50%;
  background: var(--paper-2);
  color: #8A7330;
  font-size: 13px;
  cursor: pointer;
}
.rd-note .nactions button:hover { color: #5B4818; border-color: #5B4818; }

/* ─── формы добавления (внутри страницы) ─────────────── */
.rd-add-form {
  background: var(--paper-2);
  border: 1px solid var(--paper-line);
  border-radius: var(--r-8);
  padding: 14px 16px;
  margin-bottom: 20px;
  display: flex; flex-direction: column; gap: 10px;
}
.rd-add-form textarea,
.rd-add-form input[type="text"] {
  font: 400 14px/1.5 var(--serif);
  color: var(--paper-fg);
  background: var(--paper-1);
  border: 1px solid var(--paper-line-soft);
  border-radius: var(--r-4);
  padding: 8px 12px;
  outline: none;
  width: 100%;
  transition: border-color .15s, box-shadow .15s;
}
.rd-add-form input[type="text"] {
  font-family: var(--sans);
  font-size: 13px;
}
.rd-add-form textarea { resize: vertical; min-height: 80px; }
.rd-add-form textarea:focus,
.rd-add-form input[type="text"]:focus { border-color: var(--sage-dark); box-shadow: 0 0 0 3px rgba(78,106,69,.12); }
.rd-add-form .rd-form-row {
  display: grid; grid-template-columns: 1fr 2fr; gap: 8px;
}
.rd-add-form .rd-form-actions {
  display: flex; gap: 8px; justify-content: flex-end;
}
.rd-add-form .ghost-btn {
  font-size: 12px; padding: 8px 14px;
  background: transparent; color: var(--paper-fg-3);
  border: 1px solid var(--paper-line); border-radius: 999px;
  cursor: pointer;
}
.rd-add-form .ghost-btn:hover { color: var(--paper-fg); border-color: var(--paper-fg-3); }
.rd-add-form .primary-btn {
  font: 500 12px var(--mono); letter-spacing: .12em; text-transform: uppercase;
  padding: 8px 16px;
  background: var(--sage-dark);
  border: 1px solid var(--sage-dark);
  border-radius: 999px;
  color: #F4ECD8; cursor: pointer;
}
.rd-add-form .primary-btn:hover { background: #41592D; border-color: #41592D; }

/* ─── низ: связано с / мини-граф — тёмные ───────────── */
.d-rd-foot {
  max-width: 1240px;
  margin: 36px auto 0;
  padding: 0 36px;
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 36px;
}
.d-rd-foot h5 {
  display: flex; align-items: baseline; gap: 10px;
  font: 500 11px var(--mono); letter-spacing: .18em; text-transform: uppercase;
  color: var(--ink-fg-3);
  margin: 0 0 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--ink-line-soft);
}
.d-rd-foot h5 a {
  margin-left: auto;
  font: italic 12px var(--serif); text-transform: none; letter-spacing: 0;
  color: var(--sage);
  cursor: pointer;
}
.d-rd-foot h5 a:hover { color: var(--sage-3); }

.rd-related-list {
  display: grid; grid-template-columns: 1fr; gap: 10px;
}
.rd-rel-item {
  display: grid; grid-template-columns: 1fr auto; gap: 12px;
  padding: 12px 14px;
  background: var(--ink-2);
  border: 1px solid var(--ink-line-soft);
  border-radius: var(--r-6);
  align-items: start;
}
.rd-rel-item:hover { border-color: var(--sage); background: var(--ink-3); }
.rd-rel-main { cursor: pointer; min-width: 0; }
.rd-rel-ti {
  font: 500 15px/1.3 var(--serif);
  color: var(--ink-fg);
  margin-bottom: 4px;
}
.rd-rel-au {
  font: 500 10.5px var(--mono); letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink-fg-3);
}
.rd-rel-reason {
  margin-top: 6px;
  font: italic 13px var(--serif);
  color: var(--sage-3);
  border-left: 2px solid var(--sage);
  padding-left: 10px;
}
.rd-rel-actions {
  align-self: start;
  display: flex; gap: 4px;
  opacity: 0;
  transition: opacity .12s;
}
.rd-rel-item:hover .rd-rel-actions { opacity: 1; }
.rd-rel-edit-btn, .rd-rel-x {
  width: 24px; height: 24px;
  border: 0; background: transparent;
  color: var(--ink-fg-3); font-size: 14px;
  cursor: pointer;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
}
.rd-rel-edit-btn:hover { color: var(--sage); background: rgba(143,174,124,.18); }
.rd-rel-x { font-size: 16px; }
.rd-rel-x:hover { color: #E0B5B5; background: rgba(168,107,107,.18); }

/* inline-форма редактирования обоснования связи */
.rd-rel-item.rd-rel-edit {
  display: block;
  border-color: var(--sage);
  background: var(--ink-3);
}
.rd-rel-edit-form { display: flex; flex-direction: column; gap: 10px; }
.rd-rel-edit-ti {
  font: 500 14px/1.3 var(--serif);
  color: var(--ink-fg);
  margin-bottom: 2px;
}
.rd-rel-edit-form .rd-field { display: flex; flex-direction: column; gap: 5px; }
.rd-rel-edit-form .rd-field span {
  font: 500 10px var(--mono); letter-spacing: .14em; text-transform: uppercase;
  color: var(--ink-fg-3);
}
.rd-rel-edit-form input[type="text"] {
  background: var(--ink-1);
  border: 1px solid var(--ink-line);
  border-radius: var(--r-4);
  padding: 7px 10px;
  font: 400 13px var(--sans);
  color: var(--ink-fg);
  outline: none;
}
.rd-rel-edit-form input[type="text"]:focus { border-color: var(--sage); }
.rd-rel-edit-form .rd-form-actions {
  display: flex; gap: 8px; justify-content: flex-end;
}

/* picker для добавления связи — тёмный */
.rd-link-form {
  background: var(--ink-2);
  border: 1px solid var(--ink-line);
  border-radius: var(--r-8);
  padding: 14px 16px;
  margin-bottom: 16px;
  display: flex; flex-direction: column; gap: 10px;
}
.rd-link-form .rd-field { display: flex; flex-direction: column; gap: 5px; }
.rd-link-form .rd-field span {
  font: 500 10px var(--mono); letter-spacing: .14em; text-transform: uppercase;
  color: var(--ink-fg-3);
}
.rd-link-form select, .rd-link-form input[type="text"] {
  font: 400 14px var(--sans);
  color: var(--ink-fg);
  background: var(--ink-1);
  border: 1px solid var(--ink-line);
  border-radius: var(--r-4);
  padding: 9px 12px;
  outline: none;
}
.rd-link-form select:focus, .rd-link-form input:focus { border-color: var(--sage); }
.rd-link-form .rd-form-actions { display: flex; gap: 8px; justify-content: flex-end; }
.rd-link-form .ghost-btn,
.rd-link-form .primary-btn {
  font: 500 12px var(--mono); letter-spacing: .12em; text-transform: uppercase;
  padding: 8px 16px; border-radius: 999px; cursor: pointer;
}
.rd-link-form .ghost-btn { background: transparent; color: var(--ink-fg-3); border: 1px solid var(--ink-line); }
.rd-link-form .ghost-btn:hover { color: var(--ink-fg); border-color: var(--ink-fg-3); }
.rd-link-form .primary-btn { background: var(--sage); color: #14191D; border: 1px solid var(--sage); }
.rd-link-form .primary-btn:hover { background: var(--sage-2); }

.rd-mini-graph {
  padding: 0;
}
.rd-graph-placeholder {
  background: var(--ink-2);
  border: 1px dashed var(--ink-line);
  border-radius: var(--r-8);
  padding: 32px 24px;
  text-align: center;
  color: var(--ink-fg-3);
}
.rd-graph-placeholder .ph-jp {
  font-family: var(--jp); font-size: 44px; color: var(--sage); opacity: .4;
  line-height: 1; margin-bottom: 10px;
}
.rd-graph-placeholder p {
  font: italic 13px/1.5 var(--serif);
  margin: 0 auto;
  max-width: 300px;
}
.rd-empty-msg { color: var(--ink-fg-3); }

/* ─── тост — заметный, по центру внизу ──────────────── */
.rd-toast {
  position: fixed; bottom: 32px; left: 50%; transform: translateX(-50%) translateY(20px);
  padding: 14px 26px;
  background: var(--sage);
  color: #14191D;
  border: 1px solid var(--sage-2);
  border-radius: 999px;
  font: 600 13px/1 var(--sans);
  letter-spacing: .02em;
  box-shadow: 0 18px 40px -10px rgba(0,0,0,.55), 0 0 0 4px rgba(143,174,124,.15);
  opacity: 0;
  pointer-events: none;
  transition: opacity .25s ease, transform .25s ease;
  z-index: 300;
}
.rd-toast.is-visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ─── адаптив (минимум) ───────────────────────────────── */
@media (max-width: 1000px) {
  .d-rd-hero { grid-template-columns: 1fr; }
  .d-rd-hero .cover-stack { width: 200px; }
  .d-spread .wrap { grid-template-columns: 1fr; }
  .d-spread .wrap::before { display: none; }
  .d-page-l { border-right: 0; border-bottom: 1px solid var(--paper-line-soft); }
  .d-rd-foot { grid-template-columns: 1fr; }
  .d-rd-progress { grid-template-columns: repeat(3, 1fr); }
}
