/* ============================================================================
   docs.css — окно предпросмотра вложений и блок пересказа (docs.js).
   Переменные темы берутся из style.css, поэтому окно живёт в обеих темах.
   ========================================================================== */

/* Отдельный оверлей, а не .modal: тот шириной 440px — для формы, а не для
   чтения документа. */
.dv-host{position:fixed;inset:0;z-index:70;display:grid;place-items:center;
  padding:20px;background:var(--scrim);animation:fade .18s;overflow:auto}
.dv-win{width:100%;max-width:860px;max-height:calc(100dvh - 40px);
  display:flex;flex-direction:column;background:var(--panel);
  border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);
  animation:cardIn .28s cubic-bezier(.2,.9,.3,1) both;overflow:hidden}

.dv-head{display:flex;align-items:center;gap:10px;padding:12px 14px;
  border-bottom:1px solid var(--border);background:var(--panel-2)}
.dv-title{flex:1;min-width:0}
.dv-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-sub{font-size:12px;color:var(--text-2);margin-top:2px}
.dv-act{padding:6px 11px;font-size:13px;white-space:nowrap}

.dv-scroll{overflow-y:auto;padding:14px 18px 20px}
.dv-content{color:var(--text);line-height:1.55;font-size:14.5px}
.dv-busy{display:grid;place-items:center;padding:40px 0}
.dv-spinner{width:28px;height:28px;border-radius:50%;
  border:3px solid var(--chip);border-top-color:var(--accent);
  animation:dvSpin .8s linear infinite;flex:none}
.dv-spinner.sm{width:18px;height:18px;border-width:2px}
@keyframes dvSpin{to{transform:rotate(360deg)}}
.dv-err{color:var(--danger,#e5484d);margin:12px 0}
.dv-note{color:var(--muted);font-size:12.5px;margin:12px 0 0}

.dv-img{max-width:100%;border-radius:10px;display:block;margin:0 auto}
.dv-media{width:100%}
/* Высота фиксирована: <iframe> с PDF без неё схлопывается в ноль. */
.dv-frame{width:100%;height:70dvh;border:0;border-radius:10px;background:#fff}
.dv-pre{white-space:pre-wrap;word-break:break-word;font-family:var(--font-mono);
  font-size:13px;line-height:1.5;margin:0;color:var(--text)}

/* ------------------------------ markdown --------------------------------- */
.dv-md>:first-child{margin-top:0}
.dv-h1,.dv-h2,.dv-h3,.dv-h4,.dv-h5,.dv-h6{margin:18px 0 8px;line-height:1.3}
.dv-h1{font-size:23px}
.dv-h2{font-size:20px;border-bottom:1px solid var(--border);padding-bottom:5px}
.dv-h3{font-size:17px}
.dv-h4,.dv-h5,.dv-h6{font-size:15px;color:var(--text-2)}
.dv-p{margin:9px 0}
.dv-hr{border:0;border-top:1px solid var(--line);margin:18px 0}
.dv-list{margin:8px 0;padding-left:24px;display:flex;flex-direction:column;gap:3px}
.dv-list .dv-list{margin:3px 0}
.dv-quote{margin:10px 0;padding:6px 0 6px 12px;color:var(--text-2);
  border-left:3px solid var(--accent);background:var(--accent-soft);
  border-radius:0 8px 8px 0}
.dv-a{color:var(--accent);text-decoration:none}
.dv-a:hover{text-decoration:underline}
.dv-md code{font-family:var(--font-mono);font-size:12.8px;padding:1px 5px;
  border-radius:5px;background:var(--chip)}
.dv-code{margin:10px 0;padding:11px 13px;border-radius:10px;overflow-x:auto;
  background:var(--panel-2);border:1px solid var(--border)}
.dv-code code{font-family:var(--font-mono);font-size:12.8px;line-height:1.5;
  background:none;padding:0;white-space:pre}
.dv-tablewrap{overflow-x:auto;margin:12px 0}
.dv-table{border-collapse:collapse;font-size:13.5px;min-width:100%}
.dv-table th,.dv-table td{border:1px solid var(--border);padding:6px 10px;
  text-align:left;vertical-align:top}
.dv-table th{background:var(--panel-2);font-weight:600}

/* ------------------------------ пересказ --------------------------------- */
.dv-summary{margin-bottom:16px;padding:13px 15px;border-radius:12px;
  background:var(--accent-soft);border:1px solid var(--border)}
.dv-sum-busy{display:flex;align-items:center;gap:12px}
.dv-sum-stage{color:var(--text-2);font-size:13.5px}
.dv-bar{height:4px;border-radius:2px;background:var(--chip);margin-top:7px;
  width:220px;max-width:100%;overflow:hidden}
.dv-bar i{display:block;height:100%;background:var(--accent);
  transition:width .4s ease}
.dv-sum-head{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.dv-sum-badge{font-size:12px;font-weight:600;letter-spacing:.02em;
  text-transform:uppercase;color:var(--accent)}
.dv-sum-badge.err{color:var(--danger,#e5484d)}
.dv-sum-src{font-size:12px;color:var(--muted)}
.dv-sum-again{margin-left:auto;padding:2px 9px;font-size:14px;line-height:1.2}
.dv-sum-text{margin:0;line-height:1.55}
.dv-sum-sep{margin:12px 0 4px;font-size:12px;color:var(--muted);
  text-transform:uppercase;letter-spacing:.04em}
.dv-sum-list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px}
.dv-sum-list li{line-height:1.45}

@media (max-width:640px){
  .dv-host{padding:0}
  .dv-win{max-width:100%;height:100dvh;max-height:100dvh;border-radius:0}
  .dv-act{padding:6px 8px;font-size:12px}
  .dv-scroll{padding:12px 13px 18px}
  .dv-frame{height:60dvh}
}

/* --------------------------- транскрибация -------------------------------- */
/* Блок расшифровки живёт над пересказом в том же окне. Оформлен нейтрально, а
   не акцентом: пересказ там один и должен выделяться, а расшифровка бывает на
   сотни строк — сплошная заливка акцентом превратила бы её в стену цвета. */
.dv-tx{margin-bottom:16px;padding:13px 15px;border-radius:12px;
  background:var(--panel-2);border:1px solid var(--border)}
.dv-tx-acts{margin-left:auto;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.dv-tx-btn{padding:2px 8px;font-size:12px;line-height:1.5;font-weight:600;
  letter-spacing:.02em}
.dv-tx-retry{margin-top:10px}
.dv-tx-plain{white-space:pre-wrap;word-break:break-word}

/* Реплики: колонка таймкодов фиксированной ширины, чтобы текст не «дышал»
   при переходе с 0:07 на 1:02:07. */
.dv-tx-body{display:flex;flex-direction:column;gap:2px;margin-top:4px;
  max-height:52dvh;overflow-y:auto;padding-right:4px}
.dv-tx-line{display:flex;gap:10px;align-items:baseline;padding:3px 4px;
  border-radius:7px}
.dv-tx-line:hover{background:var(--hover)}
.dv-tx-time{flex:none;width:58px;text-align:right;padding:0;border:0;
  background:none;cursor:pointer;font-family:var(--font-mono);font-size:12px;
  color:var(--muted);font-variant-numeric:tabular-nums}
.dv-tx-time:hover{color:var(--accent)}
.dv-tx-text{flex:1;min-width:0;line-height:1.55;word-break:break-word}
.dv-tx-who{font-weight:600;margin-right:6px}
/* Оттенки говорящих. Акцент темы — первому: чаще всего он и есть автор
   записи, а дальше идут заметно отличающиеся, но спокойные цвета. */
.dv-tx-who.sp0{color:var(--accent)}
.dv-tx-who.sp1{color:#3b9dd8}
.dv-tx-who.sp2{color:#4caf7d}
.dv-tx-who.sp3{color:#b07ad6}

@media (max-width:640px){
  .dv-tx{padding:11px 12px}
  .dv-tx-body{max-height:none}
  .dv-tx-time{width:46px}
}

/* Распознанный текст бывает длиннее самой картинки — держим его в собственной
   прокрутке, иначе изображение уезжает за нижний край окна. */
.dv-desc .dv-sum-text{max-height:38vh;overflow:auto}
