/* Стили страницы записи (#/rec/<id>) по макету design/air/record.html — наполняются задачами T1–T10 переноса. */

/* ===== T1. Шапка записи и окно технических сведений =====
   Макет: design/air/record.html (?state=done) — record-refine.css, done.css, record-review.css.
   Перекрывает правила шапки из app.css (его не трогаем). Горизонтальный отступ контейнера — как у
   всей страницы (общий для app.css), не 44 px макета: иначе шапка разъедется с плеером. */
/* выше закреплённого плеера (app.css, z-index 20): иначе он перекрывает открытое меню «Действия» */
.record-head {
  position: relative; z-index: 21; background: transparent; border: 0; padding: 16px 0 10px;
  font-size: 15px; line-height: 1.55; color: #172c49;
}
/* меню пользователя в общей шапке — поверх .record-head (z-index 21): иначе «Выйти» не нажимается */
.screen-result > .app-bar { position: relative; z-index: 22; }
.page-header .container { display: block; padding-top: 6px; padding-bottom: 8px; }
.page-header .back { gap: 6px; min-height: 36px; font-size: 13px; font-weight: 500; color: #1858cd; }
.page-header .back:hover { color: #1858cd; text-decoration: underline; }
.page-header .head-title-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; margin-top: 4px; }
.page-header h1 { margin: 0; max-width: 100%; font-size: 26px; line-height: 28px; font-weight: 550; letter-spacing: -1px; }
.page-header #edit-title,
.page-header #edit-note {
  font: inherit; color: inherit; letter-spacing: inherit; background: transparent; border: 0; text-align: left; cursor: text;
  padding: 3px 0; border-radius: 5px; overflow-wrap: anywhere;
}
.page-header #edit-title:hover:not(:disabled),
.page-header #edit-note:hover:not(:disabled) { background: #ffffff80; box-shadow: 0 1px #91a1b5; }
.page-header #edit-title:disabled,
.page-header #edit-note:disabled { cursor: default; }
.page-header #edit-note { font-size: 13px; line-height: 1.5; color: #536780; max-width: 330px; letter-spacing: normal; }
.page-header .inline-record-input {
  font: inherit; width: min(100%, 540px); min-width: 0; background: #fff; border: 1px solid #72869d; border-radius: 6px;
  padding: 6px 9px; color: inherit;
}
.page-header textarea.inline-record-input { font-size: 14px; min-height: 65px; letter-spacing: normal; }
.page-header .head-title-row, .record-screen .record-meta { position: relative; }
.page-header textarea.inline-record-note {
  position: absolute; box-sizing: border-box; field-sizing: content; width: auto;
  min-height: 0; margin: 0; padding: 2px 0; resize: none; overflow: hidden; white-space: pre;
}
.page-header .inline-record-input:focus { outline: 2px solid #64798e; outline-offset: 2px; border-color: #64798e; box-shadow: none; }
.page-header #head-status { margin-left: auto; flex-shrink: 0; }
/* статус — бейдж макета (.badge и .unified .badge.phase-*): запись, обработка, ждёт подтверждения */
.page-header #head-status .badge { display: flex; gap: 6px; padding: 6px 10px; border-radius: 99px; font-size: 12px; font-weight: 500; line-height: 1.55; }
.page-header #head-status .badge-rec { background: #ffe1dc; color: #9d302c; }
.page-header #head-status .badge-primary { background: #dbe7ff; color: #214d98; }
.page-header #head-status .badge-warning { background: #ffebbe; color: #794500; }
.page-header .head-meta { gap: 18px; margin-top: 5px; font-size: 13px; line-height: 18px; color: #536780; font-variant-numeric: tabular-nums; }
.page-header .head-meta-item { display: block; gap: normal; align-items: normal; white-space: normal; }
.page-header .head-side {
  display: flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 24px; max-width: none; margin-top: 12px;
}
.record-tools { display: flex; align-items: center; gap: 10px; min-width: 0; flex-shrink: 0; }
.record-tools .btn {
  height: auto; min-height: 38px; padding: 8px 13px; border-radius: 9px; font-size: 12px; font-weight: 550;
  background: #ffffff60; border: 1px solid #c6d3e3; color: #4b607b;
}
.record-tools .btn:hover { background: #ffffff60; filter: brightness(.96); }
#record-tech-toggle { background: transparent; border-color: #c4d2e7; color: #405875; gap: 12px; }
#record-tech-toggle svg { flex: none; }
.record-tools :is(button, summary):focus-visible { outline: 2px solid #1858cd; outline-offset: 3px; }

/* Меню «Действия»: макет рисует один пункт (удаление) — остальные пункты в тех же токенах. */
.page-header .record-actions { position: relative; display: block; }
.record-actions > summary { display: flex; gap: 8px; list-style: none; cursor: pointer; }
.record-actions > summary::-webkit-details-marker { display: none; }
.record-actions-list {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 6; display: grid; min-width: 100%;
  background: #f8fbff; border: 1px solid #c6d3e3; border-radius: 9px; box-shadow: 0 8px 24px #172c491c; overflow: hidden;
}
.record-actions-list > button {
  min-height: 44px; padding: 8px 13px; border: 0; background: transparent; text-align: left; white-space: nowrap;
  font: inherit; font-size: 13px; color: #24354b; cursor: pointer;
}
.record-actions-list > button + button { border-top: 1px solid #e3eaf3; }
.record-actions-list > button:hover { background: #e3ebf5; }
.record-actions-list > button[aria-checked="true"] { color: #1858cd; font-weight: 550; }
.record-actions-list > button.danger { color: #9c332a; }
.record-actions-list > button:disabled { opacity: .5; cursor: default; }
.record-actions-list > button:focus-visible { outline: 2px solid #1858cd; outline-offset: -2px; }

/* Окно «Распознавание и время по шагам» (popover). Как в макете: общая часть — record-refine.css,
   оформление на широком экране (≥1000 px, окно под кнопкой, top/left ставит head.js) — done.css,
   на узком — окно по центру, record-refine.css. */
#record-tech {
  color: #24354b; border: 1px solid #bfd0e7; border-radius: 14px; background: #fff;
  max-width: calc(100vw - 32px); max-height: 80dvh; overflow: auto; font-size: 15px; line-height: 1.55;
}
#record-tech button:focus-visible { outline: 2px solid #1858cd; outline-offset: 3px; }
#record-tech .tech-header .btn { height: auto; color: #172c49; border-color: #d5e1f2; background: #fff; font-weight: 550; }
#record-tech .speakers-bar { display: block; font-size: inherit; }
@media screen and (min-width: 1000px) {
  #record-tech {
    position: fixed; inset: auto; margin: 0; width: 760px; padding: 0; box-shadow: 0 18px 60px #15346230;
    font-size: 13px; overscroll-behavior: contain;
  }
  #record-tech::backdrop { background: transparent; }
  #record-tech .tech-header {
    display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 20px 24px;
    background: #f2f6fd; border-bottom: 1px solid #dce5f2;
  }
  #record-tech h2 { font-size: 19px; font-weight: 600; margin: 0; }
  #record-tech .tech-header p { font-size: 12px; color: #607086; margin: 5px 0 0; }
  #record-tech .tech-header .btn { font-size: 22px; padding: 0; width: 34px; min-height: 34px; border-radius: 8px; }
  #record-tech .tech-grid { display: grid; grid-template-columns: 240px 1fr; gap: 24px; padding: 24px; }
  #record-tech h3 { font-size: 14px; font-weight: 600; margin: 0 0 12px; }
  #record-tech .tech-model {
    display: inline-block; background: #e2ecff; border-radius: 5px; padding: 6px 10px; color: #153e7b; font-weight: 600; margin: 0 0 16px;
  }
  #record-tech dl { margin: 0; }
  #record-tech .tech-stats > div { margin: 0 0 12px; }
  #record-tech .tech-stats dt { font-size: 12px; color: #607086; }
  #record-tech .tech-stats dd { margin: 3px 0 0; font-size: 17px; font-weight: 600; }
  #record-tech .tech-speakers-title { margin-top: 24px; }
  #record-tech .tech-speakers { display: flex; gap: 8px; margin: 0 0 7px; }
  #record-tech .tech-speakers span { padding: 4px 10px; border-radius: 5px; background: #e2ecff; color: #174ba3; }
  #record-tech .tech-speakers span + span { background: #e4f3ef; color: #24645a; }
  #record-tech .tech-caption { font-size: 12px; color: #607086; margin: 0; }
  #record-tech .tech-steps { border-left: 1px solid #e0e7ef; padding-left: 24px; }
  #record-tech .tech-steps dl > div { display: flex; justify-content: space-between; gap: 16px; padding: 9px 0; border-bottom: 1px solid #edf0f5; }
  #record-tech .tech-steps dd { margin: 0; white-space: nowrap; font-weight: 600; font-variant-numeric: tabular-nums; }
  #record-tech .tech-steps small { display: block; font-size: 11px; color: #607086; margin-top: 4px; }
  #record-tech .tech-usage { display: grid; gap: 7px; margin-top: 15px; font-size: 11px; color: #607086; }
  #record-tech .tech-usage span { display: flex; justify-content: space-between; gap: 8px; }
  #record-tech .tech-usage b { font-weight: 500; color: #405875; }
  #record-tech .tech-total {
    display: flex; align-items: center; justify-content: space-between; padding: 17px 24px;
    background: #edf3fc; border-top: 1px solid #dce5f2;
  }
  #record-tech .tech-total strong { font-size: 24px; color: #1858cd; font-variant-numeric: tabular-nums; }
}
#record-tech .tech-usage[hidden] { display: none; }

@media screen and (max-width: 999px) {
  .page-header .container { padding-top: 10px; padding-bottom: 12px; }
  .page-header h1 { font-size: 30px; line-height: 1.22; }
  .page-header .head-title-row { gap: 7px; }
  .page-header #edit-note { max-width: none; flex-basis: 100%; min-height: 38px; }
  .page-header #head-status { margin-left: 0; }
  .page-header .head-meta { gap: 8px; margin-top: 10px; }
  .page-header .head-side { justify-content: flex-start; align-items: normal; gap: 12px; }
  .record-tools { width: 100%; gap: 6px; flex-wrap: nowrap; }
  .record-tools .btn { min-height: 44px; padding: 7px 9px; font-size: 11px; }
  #record-tech-toggle { flex: 1; gap: 6px; background: #ffffff60; border-color: #c6d3e3; color: #4b607b; }
  #record-tech { inset: 0; margin: auto; padding: 18px; }
  #record-tech .tech-header { display: flex; align-items: start; gap: 12px; justify-content: space-between; }
  #record-tech .tech-header .btn { font-size: 13px; padding: 10px 16px; border-radius: 12px; min-height: 44px; }
  #record-tech h2 { font-size: 19px; margin: 0; }
  #record-tech h3 { font-size: 16px; margin: 18px 0 10px; }
  #record-tech p { font-size: 13px; }
  #record-tech .tech-grid { display: block; }
  #record-tech .tech-grid dl { margin: 0; }
  #record-tech .tech-grid dl > div {
    display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid #e3eaf3; font-size: 13px;
  }
  #record-tech .tech-grid dd { margin: 0; white-space: nowrap; }
  #record-tech .tech-grid small { display: block; }
  #record-tech .tech-total { display: flex; gap: 20px; margin-top: 18px; font-size: 13px; }
  #record-tech .tech-usage span { display: block; font-size: 12px; margin-top: 8px; }
}
@media print { #record-tech, .record-tools { display: none !important; } }

/* ===== T2 — транскрипция боковым окном (чат 2-26-175) =====
   Значения — вычисленные стили макета design/air/record.html?state=done&transcript=open на 1280 и 390
   (unified.css, record-refine.css, consult.css). Высоту держит окно, прокручивается только список
   #transcript: ограничений 650/320 px, из-за которых внизу был белый блок, нет. Классы .turn/.msg/.name
   остались от вкладки (на них опираются тесты), поэтому их правила из app.css здесь перекрыты.
   Кнопки обмена ролей и пояснения в окне нет: обмен — пункт меню «Действия» (решение владельца 9, T1). */
.record-tabs-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.transcript-toggle {
  height: auto; min-height: 44px; padding: 10px 16px; border: 1px solid rgb(213, 225, 242); border-radius: 12px;
  background: #fff; color: rgb(23, 44, 73); font-size: 12px; font-weight: 550; line-height: 1.55;
}
.transcript-scrim { position: fixed; inset: 0; z-index: 40; background: rgba(23, 40, 62, .4); }
.transcript-scrim[hidden], #transcript-drawer[hidden] { display: none; }
#transcript-drawer {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 41;
  display: flex; flex-direction: column; overflow: hidden; overscroll-behavior: contain;
  width: 580px; max-width: 80vw; height: 100dvh; max-height: 100dvh; box-sizing: border-box;
  padding: 24px; border-left: 1px solid #b7cbed; border-radius: 20px 0 0 20px;
  background: #fff; color: rgb(23, 44, 73); font-size: 15px; line-height: 1.55;
}
#transcript-drawer .btn {
  height: auto; min-height: 44px; padding: 10px 16px; gap: 8px; border: 1px solid rgb(213, 225, 242); border-radius: 12px;
  background: #fff; color: rgb(23, 44, 73); font-weight: 550; line-height: 1.55;
}
#close-transcript { flex: none; align-self: flex-end; font-size: 13px; }
#transcript-drawer .transcript-panel {
  display: flex; flex-direction: column; flex: 1; min-height: 0; margin: 0; padding: 18px 0 0; overflow: hidden;
}
#transcript-title { flex: none; margin: 0 0 16px; font-size: 19px; font-weight: 550; line-height: 1.55; }
#transcript-drawer .speaker-tools { flex: none; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 18px 0; }
#transcript-drawer .speaker-tools[hidden] { display: none; }
#transcript-drawer .speaker-tools label { display: flex; align-items: center; gap: 7px; min-height: 44px; font-size: 13px; }
#transcript-drawer .speaker-tools input { accent-color: rgb(24, 88, 205); }
#transcript-drawer .transcript-body { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto; }
#transcript-drawer #transcript {
  display: block; flex: 1; min-height: 0; height: auto; max-height: none; padding: 0 6px 0 0; gap: 0;
  overflow-y: auto; overscroll-behavior: contain;
}
#transcript-drawer .transcript-turn {
  display: block; max-width: 90%; box-sizing: border-box; margin: 16px 0; padding: 15px; border-radius: 15px; background: #e6eeff;
}
#transcript-drawer .transcript-turn[hidden] { display: none; }
#transcript-drawer .transcript-turn[data-side="patient"] { margin-left: auto; background: #ddf2ec; }
#transcript-drawer .transcript-turn h3 { margin: 0 0 7px; color: rgb(83, 103, 128); font-size: 12px; font-weight: 700; line-height: 1.55; }
#transcript-drawer .transcript-turn[data-side="patient"] h3 { text-align: right; }
#transcript-drawer .transcript-turn .name { padding: 0; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit; }
#transcript-drawer .msg {
  display: block; max-width: none; margin: 0; padding: 0; border-radius: 0; background: none;
  font-size: 14px; line-height: 1.65; cursor: pointer;
}
@media (max-width: 999px) {
  #transcript-drawer {
    inset: 0; width: 100%; max-width: 100%; border: 0; border-radius: 0;
    padding: max(18px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right))
      max(18px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
  }
  #transcript-drawer .speaker-tools { gap: 6px 14px; margin: 10px 0; }
  #transcript-title { font-size: 20px; }
  #transcript-drawer #transcript { padding-right: 10px; }
}
@media (max-width: 700px) {
  .transcript-toggle { padding: 10px; }
}


/* ===== T3 — лист документа (макет design/air/record.html, состояние done; done.css, record-refine.css).
   Только экран: печать листа не меняется (печатная форма — задача T6). На экране шапка госформы, таблица
   пациента, дата, врач и подпись скрыты; данные пациента — полями в левой колонке 300px, разделы — справа
   с номерами строк по порядку. Граница раскладки — 1000px, как в макете. ===== */
@media screen {
  .exam-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px;
    margin-bottom: 12px; padding: 4px 0; font-size: 13px; color: #536780; }
  .exam-toolbar #edit-actions { display: flex; align-items: center; gap: 8px; }
  .exam-toolbar #edit-actions .btn { min-height: 44px; padding: 0 12px; border-radius: 12px; font-size: 13px;
    font-weight: 550; }
  .exam-toolbar #exam-save { background: #fff; color: var(--primary); border: 1px solid #a8bee7; }
  .exam-toolbar #exam-save:disabled { background: #f5f8fd; color: #566a84; border-color: #d5e1f2; opacity: 1; }
  .exam-toolbar #exam-confirm { background: #1858cd; border: 1px solid #1858cd; color: #fff; }
  .exam-toolbar #exam-print, .exam-toolbar #exam-unconfirm { background: #fff; border: 1px solid #d5e1f2; color: #172c49; }

  .examdoc-sheet.exam-form { max-width: none; margin: 0; padding: 0; overflow: hidden; background: #fff;
    border: 1px solid #d5e1f2; border-radius: 12px; box-shadow: 0 4px 18px #244a8508;
    font-family: inherit; font-size: 14px; line-height: normal; color: #24354b; }
  .exam-form > .examdoc-top, .exam-form > h3, .exam-form > table.examdoc-pt,
  .exam-form .examdoc-date, .exam-form [data-field="doctor"], .exam-form .examdoc-sign,
  .exam-form .examdoc-h-print { display: none; }

  .exam-form .document-patient { padding: 18px; background: #f6f8fb; border-right: 1px solid #e0e7ef; }
  .exam-form .patient-fields { padding: 14px 12px; border: 1px solid #becfec; border-radius: 10px; background: #e2ecff; }
  .exam-form .patient-fields h3 { margin: 0 0 12px; font-size: 16px; font-weight: 550; line-height: 18px;
    color: #153e7b; text-align: left; letter-spacing: normal; }
  .exam-form .patient-grid { display: grid; grid-template-columns: 1fr; gap: 8px; }
  .exam-form .patient-field { display: block; }
  .exam-form .patient-field label { display: block; margin-bottom: 3px; font-size: 12px; color: #425b7c; }
  .exam-form .patient-field input { box-sizing: border-box; width: 100%; min-height: 32px; padding: 4px 7px;
    font: inherit; font-size: 14px; font-weight: 550; color: #172c49; background: #f8fbff;
    border: 1px solid #c5d4ed; border-radius: 5px; }
  .exam-form .patient-field input:placeholder-shown { background: #fff8e9; border-bottom: 1px dashed #b38a46; }
  .exam-form .patient-field input::placeholder { color: #855312; opacity: 1; }
  .exam-form .patient-field input:disabled { background: #f8fbff; border-bottom-style: solid; }
  .exam-form .patient-note { display: none; min-height: 0; }
  .exam-form .patient-field input[aria-invalid="true"] + .patient-note { display: block; color: #a33b26; font-size: 12px; }

  .exam-form .document-sections { padding: 0 24px 12px; }
  .exam-form .examdoc-f.form-row, .exam-form .examdoc-f-optional { margin: 0; padding: 11px 0 9px;
    border-radius: 0; border-bottom: 1px solid #e6ebf1; }
  .exam-form .examdoc-f:focus-within { background: none; }
  .exam-form .form-row .examdoc-h { display: block; margin: 0 0 4px; font-size: 14px; font-weight: 600;
    line-height: 21px; color: #24354b; }
  .exam-form .row-number { display: inline-block; min-width: 18px; margin-right: 9px; font-size: 12px; color: #607086; }
  .exam-form .examdoc-f .examdoc-t, .exam-form .examdoc-editable-list, .exam-form .examdoc-dx {
    margin: 0; padding: 3px 0; min-height: 30px; font-size: 14px; line-height: 1.5; color: #24354b;
    border: 1px solid transparent; border-radius: 4px; }
  .exam-form .examdoc-editable-list { padding-left: 1.2em; }
  .exam-form .examdoc-t:hover, .exam-form .examdoc-editable-list:hover, .exam-form .examdoc-dx:hover { background: #f7f9fc; }
  .exam-form .examdoc-t:focus, .exam-form .examdoc-editable-list:focus, .exam-form .examdoc-dx:focus-within {
    background: #f7f9fc; border-color: #1858cd; padding-left: 8px; }
  .exam-form .examdoc-editable-list:focus { padding-left: calc(1.2em + 8px); }
  .exam-form .examdoc-add-optional { font-size: 14px; }
  .exam-form .examdoc-dx-prelim[aria-pressed="false"] { font-size: 12px; }
}
@media screen and (min-width: 1000px) {
  .examdoc-sheet.exam-form { display: grid; grid-template-columns: 300px minmax(0, 1fr); align-items: start; }
  .exam-form .document-patient { grid-column: 1; grid-row: 1 / span 2; align-self: stretch; }
  .exam-form .document-sections { grid-column: 2; }
}
@media screen and (max-width: 999px) {
  .exam-toolbar { margin-bottom: 14px; }
  .exam-toolbar #edit-actions { flex-wrap: wrap; width: 100%; }
  .exam-toolbar #edit-actions .btn { padding: 10px 12px; font-size: 12px; }
  .examdoc-sheet.exam-form { display: block; border-radius: 18px; box-shadow: 0 6px 24px #244a8510; }
  .exam-form .document-patient { padding: 0; background: none; border-right: 0; }
  .exam-form .patient-fields { padding: 18px; background: #f6f8fb; border: 0; border-bottom: 1px solid #dce5ef;
    border-radius: 0; }
  .exam-form .patient-fields h3 { color: #172c49; }
  .exam-form .patient-grid { grid-template-columns: 1fr 1fr; gap: 12px; }
  .exam-form .patient-field { display: flex; flex-direction: column; gap: 4px; }
  .exam-form .patient-field label { margin: 0; font-size: 12px; line-height: 14px; }
  .exam-form .patient-field input { min-height: 44px; padding: 8px; font-size: 16px; font-weight: 500;
    background: #fff; border-color: #ccd8e8; }
  .exam-form .patient-field[data-key="iin"], .exam-form .patient-field[data-key="phone"] {
    grid-column: 1 / -1; display: grid; grid-template-columns: 78px 1fr; align-items: center; column-gap: 12px; }
  .exam-form .patient-field[data-key="birth_date"] { grid-column: 2; grid-row: 2; }
  .exam-form .patient-field[data-key="iin"] { grid-row: 3; }
  .exam-form .patient-field[data-key="phone"] { grid-row: 4; }
  .exam-form .patient-field[data-key="iin"] .patient-note, .exam-form .patient-field[data-key="phone"] .patient-note {
    grid-column: 2; }
  .exam-form .document-sections { padding: 0; }
  .exam-form .examdoc-f.form-row, .exam-form .examdoc-f-optional { padding: 16px 28px; border-bottom-color: #edf2f7; }
  .exam-form .form-row .examdoc-h { display: flex; gap: 9px; padding-top: 8px; margin-bottom: 12px;
    font-weight: 500; color: #172c49; }
  .exam-form .row-number { display: block; margin: 0; }
  .exam-form .examdoc-f .examdoc-t, .exam-form .examdoc-editable-list, .exam-form .examdoc-dx {
    padding: 5px 8px; min-height: 130px; font-size: 16px; line-height: 1.6; background: #f5f8fd; border-radius: 10px; }
  .exam-form .examdoc-date + .form-row .examdoc-t { min-height: 96px; }
  .exam-form .examdoc-t:focus, .exam-form .examdoc-dx:focus-within { padding-left: 8px; }
}
@media print {
  .exam-form .document-patient, .exam-form .row-number, .exam-form .row-title { display: none; }
}

/* T4 — окно «Тематика и шаблон» по метке шаблона (design/air: record-refine.css, consult.css). */
#choose-template { font: inherit; font-size: 13px; cursor: pointer; padding: 7px 12px; min-height: 36px; border: 1px solid #bbcbe0; border-radius: 8px; background: #ffffff80; color: #405875; white-space: nowrap; align-self: flex-start; }
#choose-template::after { content: '⌄'; margin-left: 10px; }
#choose-template:focus-visible, #template-dialog button:focus-visible { outline: 2px solid #64798e; outline-offset: 3px; }
@media screen and (max-width: 999px) { #choose-template { margin-right: auto; min-height: 44px; } }
#template-dialog { --primary: #1858cd; --primary-strong: #1246a4; width: 440px; max-width: calc(100% - 32px); padding: 24px; border: 1px solid #d5e1f2; border-radius: 16px; overflow: visible; color: #172c49; font-size: 15px; }
#template-dialog::backdrop { background: #17283e66; }
#template-dialog h2 { font-size: 21px; font-weight: 700; margin: 0 0 24px; }
#template-dialog .summary-picks { display: grid; margin: 0; gap: 18px; grid-template-columns: minmax(0, 1fr); grid-auto-flow: row; border: 0; padding: 0; }
#template-dialog .choice-field { position: relative; display: grid; gap: 7px; font-size: 13px; min-width: 0; grid-template-columns: minmax(0, 1fr); color: #536780; }
#template-dialog .choice-trigger { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 44px; padding: 10px 12px; background: #f8fbff; border: 1px solid #c6d3e3; border-radius: 8px; font: inherit; color: #24354b; text-align: left; cursor: pointer; }
#template-dialog .choice-trigger:disabled { opacity: .6; cursor: not-allowed; }
#template-dialog .choice-options { position: absolute; left: 0; right: 0; top: 100%; z-index: 10; margin-top: 5px; padding: 5px; border: 1px solid #c6d3e3; border-radius: 10px; background: #f8fbff; box-shadow: 0 10px 30px #172c4920; }
#template-dialog .choice-options[hidden] { display: none; }
#template-dialog .choice-options button { display: block; width: 100%; padding: 10px; min-height: 44px; background: transparent; border: 0; border-radius: 6px; text-align: left; font: inherit; color: #24354b; cursor: pointer; }
#template-dialog .choice-options button:hover, #template-dialog .choice-options button[aria-selected=true] { background: #e3ebf5; }
#template-dialog form { text-align: right; margin-top: 24px; }
#template-dialog .btn-primary { border-color: var(--primary); }
#template-dialog .btn { min-height: 44px; border-radius: 12px; font-size: 13px; font-weight: 550; padding: 10px 16px; }
@media print { #template-dialog { display: none !important; } }

/* T6 — печатная форма документа (решение владельца 5 от 27.09): «Печать» показывает форму без правки поверх
   страницы (views/record/print.js), всё остальное на экране и в печати скрыто; PDF сохраняет браузер.
   Вид предпросмотра — утверждённый эскиз docs/design/sketches/2-55-357-1-kk-print/print-lang.html (числа —
   numbers.md там же; решение 2026-10-13-print-language.md): панель с «Вернуться…», «Язык документа»
   «Русский / Қазақша» и «Печать / сохранить PDF», заголовок «Предпросмотр печати», листы A4 в масштабе 0,76 по
   страницам. Шрифт и вёрстка самого листа — .examdoc (app.css), лист — .print-paper. */
body.printing-preview { background: var(--canvas); }
body.printing-preview #app > :not(#print-preview) { display: none; }
#print-preview { font: 400 14px/1.5 var(--font); color: var(--ink); }
#print-preview button { font: 500 14px/1.5 var(--font); cursor: pointer; }
#print-preview button:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
#print-preview .print-controls { box-sizing: border-box; height: 76px; display: flex; align-items: center;
  justify-content: space-between; gap: var(--space-8); padding: 0 36px; background: #fff; border-bottom: 1px solid var(--line); }
#print-preview .print-btn { box-sizing: border-box; min-height: 44px; padding: 10px 20px; border-radius: 8px;
  border: 1px solid #cbd2dd; background: #fff; color: var(--ink); display: inline-flex; align-items: center;
  justify-content: center; gap: 10px; white-space: nowrap; }
#print-preview .print-btn:hover { background: #f7f8fa; }
#print-preview .print-btn-primary { background: var(--accent); border-color: var(--accent); color: #fff;
  box-shadow: inset 0 1px 0 #ffffff25, 0 2px 3px #174dc618; }
#print-preview .print-btn-primary:hover { background: #174dc6; border-color: #174dc6; }
#print-preview .print-btn:disabled { opacity: .55; cursor: default; }
#print-preview .print-btn-primary:disabled:hover { background: var(--accent); border-color: var(--accent); }
#print-preview .print-back-arrow { font: 400 22px/1 Arial, sans-serif; }
#print-preview .print-language { display: flex; align-items: center; gap: var(--space-4); }
#print-preview .print-language-label { color: var(--muted); font-weight: 400; }
#print-preview .print-languages { display: flex; gap: 3px; padding: var(--space-1); background: #f0f2f6; border-radius: 8px; }
#print-preview .print-lang { box-sizing: border-box; height: 36px; min-width: 108px; padding: 6px 16px; border: 0;
  border-radius: 5px; color: var(--muted); background: transparent; }
#print-preview .print-lang[aria-pressed="true"] { background: #fff; color: var(--ink); box-shadow: 0 1px 2px #20273514; }
#print-preview .print-lang:hover { color: var(--ink); }
#print-preview .print-main { width: max-content; max-width: calc(100% - 72px); margin: 0 auto; padding-bottom: var(--space-6); }
#print-preview .print-heading { height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 40px; }
#print-preview .print-heading h1 { font-size: 28px; line-height: 1.25; font-weight: 500; margin: 0; color: var(--ink); }
#print-preview .print-format { color: var(--muted); }
#print-preview .print-status { margin: 0 0 12px; color: var(--danger); }
#print-preview .print-pages { display: flex; align-items: flex-start; justify-content: center; gap: 28px; }
#print-preview .print-page { flex: none; width: 603.22px; }
#print-preview .print-page-caption { height: 28px; color: var(--muted); font-size: 14px; }
#print-preview .print-paper { box-sizing: border-box; width: 210mm; height: 297mm; padding: 15mm 10mm 15mm 20mm;
  background: white; border: 0; outline: 1px solid #d7dce4; color: #000; font-synthesis: weight; overflow: visible; }
#print-preview .print-paper-busy { display: flex; align-items: center; justify-content: center; }
#print-preview .print-paper-status { font: 400 14pt/1.08 "Times New Roman", "Liberation Serif", serif; color: var(--muted); }
#print-preview .examdoc-closing { break-inside: avoid; }
/* лист по эскизу (как образец docs/exam-doc/sample-052u-vl3.html): без отступов подсветки правки у разделов, таблица
   пациента по ширине текста, «2. Вид консультации:» в строку с текстом, «Основной:» диагноза — жирным, как весь диагноз */
#print-preview .print-paper .examdoc-f { margin: 0 0 6pt; padding: 0; }
#print-preview .print-paper table.examdoc-pt { width: auto; }
#print-preview .print-paper [data-section="consult_kind"] > .examdoc-h,
#print-preview .print-paper [data-section="consult_kind"] > .examdoc-t { display: inline; margin: 0; padding: 0; }
#print-preview .print-paper .examdoc-dx-label { font-weight: bold; }
/* телефон и узкое окно: эскиза нет — панель переносится по строкам, лист уменьшается по ширине (print.js) */
@media (max-width: 720px) {
  #print-preview .print-controls { height: auto; flex-wrap: wrap; gap: var(--space-3); padding: 12px 16px; }
  #print-preview .print-btn { padding: 10px 14px; white-space: normal; }
  #print-preview .print-lang { min-width: 0; }
  #print-preview .print-main { width: auto; max-width: none; padding: 0 16px var(--space-6); }
  #print-preview .print-heading { height: auto; padding: 16px 0; gap: 16px; }
  #print-preview .print-heading h1 { font-size: 22px; }
}
@media print {
  body.printing-preview { background: #fff; }
  body.printing-preview #app > :not(#print-preview),
  body.printing-preview .print-controls,
  body.printing-preview .print-heading,
  body.printing-preview .print-status,
  body.printing-preview .print-page-caption { display: none !important; }
  body.printing-preview #print-preview { display: block !important; padding: 0; }
  body.printing-preview #print-preview .print-main { width: auto; max-width: none; margin: 0; padding: 0; }
  body.printing-preview #print-sheet { display: block; position: static; }
  body.printing-preview #print-preview .print-page { width: auto !important; }
  body.printing-preview #print-preview .print-paper { zoom: 1 !important; width: auto; height: auto; padding: 0;
    outline: 0; break-after: page; }
  body.printing-preview #print-preview .print-page:last-child .print-paper { break-after: auto; }
  body.printing-preview #print-sheet,
  body.printing-preview #print-sheet * { visibility: visible; }
}

/* ===== Экран идущей записи — состояния «идёт запись»/«на паузе» (задача З1, чат 2-26-199) =====
   Макет design/records-doctor-today-v2/record-live.html, docs/design-system.md, раздел «Экран идущей
   записи». Состояние экрана — data-view на корне (root, элемент .screen-result; record/live.js):
   recording, processing, done, rebuilding (пересборка готовой записи, своих правил нет); класс live-paused — тоже на root, только пока идёт запись. Панель
   .audio-controls (live.js) стоит рядом с обычным плеером (player.js) внутри .audio-panel — плеер
   скрывает CSS (ниже), JS его не трогает. Живого текста во время записи нет (решение владельца,
   docs/decisions/2026-09-28-record-screen-states.md) — область текста пустая, как до начала записи. */

/* во время записи скрыто всё, что не работает: полоса вкладок документа, инструменты шапки, проверка
   назначений, нижняя строка шапки, обычный плеер, вкладки краткого содержания/сверки/эталона внутри
   .document-content (живого текста в продукте ещё нет — область пустая, решение владельца, docs/decisions/
   2026-09-28-record-screen-states.md). Поля пациента в левой
   колонке и выбор шаблона остаются: выбор шаблона переезжает в панель записи (result.js placeSlots) до
   того, как #panel-summary скрывается. Хотя .document-content скрывать проще, внутри него живёт и
   #live-alerts (live.js) — уведомления связи/восстановления записи, которые во время записи как раз
   должны быть видны, поэтому скрываются только сами вкладки-панели, а не весь контейнер. */
/* З5: «Распознаётся» (data-view=processing, эскиз record-finish.html) — тот же вид, что у идущей записи */
.screen-result:is([data-view=recording], [data-view=processing]) .document-toolbar,
.screen-result:is([data-view=recording], [data-view=processing]) .header-actions,
.screen-result:is([data-view=recording], [data-view=processing]) .review,
.screen-result:is([data-view=recording], [data-view=processing]) .header-bottom,
.screen-result:is([data-view=recording], [data-view=processing]) #panel-summary,
.screen-result:is([data-view=recording], [data-view=processing]) #panel-compare,
.screen-result:is([data-view=recording], [data-view=processing]) #panel-reference,
.screen-result:is([data-view=recording], [data-view=processing]) #transcript-drawer,
.screen-result:is([data-view=recording], [data-view=processing]) .audio-panel .player { display: none !important; }

/* панель управления записью — тот же визуальный язык, что у обычного плеера (.record-screen .play),
   крупнее: пауза/продолжить 64×64, «Завершить» 138×64 (design-system.md, «Экран идущей записи») */
.record-screen .record-meta { display: flex; align-items: center; gap: 7px; margin-top: 7px; font-size: 13px;
  color: var(--muted); }
/* заметка (head.js #edit-note) переезжает сюда на время записи (live.js, приёмка вида П1 п.1): та же
   рамка-разделитель, что у неё в шапке (строка ~598), плюс отступ и обрезание в одну строку по макету */
.record-screen .record-meta #edit-note { margin-left: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* цвет точки записи — из макета (#1b986c); не --green-solid (#1c9c70 app.css) — тот токен общий для
   других экранов (например .gpu-pill), приёмка вида П1 п.5 просит цвет только здесь */
.record-screen .completion-dot { flex: none; width: 7px; height: 7px; border-radius: 50%; background: #1b986c; }
.record-screen .audio-controls { display: flex; align-items: center; gap: 18px; height: 76px; }
.record-screen .audio-controls .play { width: 64px; height: 64px; min-height: 64px; }
.record-screen .audio-controls .play .icon { width: 30px; height: 30px; }
.record-screen .timecode { white-space: nowrap; font-size: 13px; font-variant-numeric: tabular-nums; color: var(--ink); }
/* дорожка сужается первой, когда строке не хватает ширины (меньше ~1240 px): «Завершить» и «Добавить файл»
   остаются размером эскиза и в пределах экрана, между ними — не меньше 18 px (правка владельца 01.10) */
.record-screen .wave-wrap { flex: 0 1 240px; min-width: 0; height: 64px; display: flex; align-items: center; }
.record-screen .live-template-slot { display: flex; align-items: center; }
.record-screen .live-template-slot:empty { display: none; }
.record-screen .live-large { height: 64px; min-height: 64px; padding: 16px 24px; font-size: 16px; }
.record-screen #finish-live { background: #c53046; border-color: #c53046; color: #fff; }
.record-screen #finish-live:hover:not(:disabled) { background: #a82438; border-color: #a82438; }
/* З4. «Добавить файл» 196×64 — эскиз record-live.html (#add-live-file), design-system.md «Экран идущей записи»:
   пунктирная рамка, синяя иконка, справа в строке управления; «Завершить» — сразу за шаблоном */
.record-screen #add-live-file { margin-left: auto; gap: 8px; font-weight: 500; color: var(--accent);
  border: 1px dashed #9fb7d8; border-radius: 7px; background: #fff; }
.record-screen #add-live-file:hover:not(:disabled) { background: var(--soft); }
.record-screen #add-live-file .icon { width: 18px; height: 18px; stroke-width: 1.6; }
/* сообщение о файле (шаг 24) и ход загрузки — справа над областью текста; отступы — эскиз record-live.html
   (#live-file-error: margin 0 0 20px auto, приёмка П4) */
.record-screen #live-file-error { width: 440px; max-width: 100%; margin: 0 0 20px auto; font-size: 14px; line-height: 1.55; }
.record-screen #live-file-error strong { display: block; color: #c53046; font-weight: 500; margin-bottom: 6px; }
.record-screen #live-file-error p { margin: 0; color: var(--muted); font-size: 13px; }
.record-screen #live-file-error.upload-progress strong { color: var(--muted); }

/* .audio-panel во время записи — плоская полоса по фактическому рендеру макета record-live.html (правила строк 89
   и 368 перебивают карточку базового правила строки 3; сверка getComputedStyle 30.09). Приёмка вида П1 п.6
   («карточка») была ошибкой сверки */
.screen-result:is([data-view=recording], [data-view=processing]) .audio-panel { margin: 0; padding: 24px; background: #fff;
  border: 0; border-bottom: 1px solid var(--line); border-radius: 0; box-shadow: none; }

/* строка панели: кнопки 64 px в строке 76 px, сверху 24 + 6 px; снизу столько же (30 px) до линии панели (1 px) —
   правка владельца 01.10 (чат 2-26-247): линия не касается кнопок. Строка сетки 96 px этого не вмещала */
.screen-result:is([data-view=recording], [data-view=processing]) .record-screen { grid-template-rows: 142px 125px minmax(0, 1fr); }

/* Во время записи высоту полос задаёт уровень микрофона (live.js); до старта — вид макета. */
.record-screen .live-equalizer { display: flex; align-items: center; gap: 2px; height: 64px; overflow: hidden; }
.record-screen .live-equalizer i { width: 3px; flex: 0 0 3px; height: var(--bar); border-radius: 1.4px; background: #2563eb;
  animation: t5-voice .75s var(--delay) ease-in-out infinite alternate; }
.record-screen .live-equalizer i:nth-child(n+17) { background: #d9631e; }
.screen-result:is([data-view=recording], [data-view=processing]) .live-equalizer { width: 100%; }
.screen-result:is([data-view=recording], [data-view=processing]) .live-equalizer i {
  animation: none; max-height: 100%; transition: height 70ms linear; }
.screen-result.live-paused .live-equalizer i,
.screen-result[data-view=processing] .live-equalizer i { transition: none; }
@keyframes t5-voice { from { transform: scaleY(.25); } to { transform: scaleY(1); } }

/* на паузе — точка жёлтая, «Продолжить» красным контуром на белом фоне, дорожка гаснет и останавливается */
.screen-result.live-paused .completion-dot { background: var(--amber-solid); }
.screen-result.live-paused #play { color: #c53046; background: #fff; border: 2px solid #c53046; }
.screen-result.live-paused #play:hover:not(:disabled) { background: #fff1f3; }
.screen-result.live-paused .live-equalizer i { animation-play-state: paused; opacity: .45; }

/* З5. «Распознаётся» — эскиз design/records-doctor-today-v2/record-finish.html, значения — getComputedStyle эскиза
   на 1920×1080 (PLAN.md, З5): кнопки панели записи и метка шаблона на своих местах, но невидимы; дорожка
   остановлена и погашена, точка зелёная. В рабочей области вместо документа — блок #live-processing (live.js):
   отступ 20 24, заголовок 18/600, «Запись завершена · 08:30» 12/18, строка шаблона 14 через 24, шесть полосок
   высотой 14 (#94a3b8, скругление 3) через 22 и 32 от строки, мигание forming 1 с до 0.45. Сетка — две колонки. */
.screen-result[data-view=processing] .record-screen { grid-template-columns: 276px minmax(0, 1fr); }
.screen-result[data-view=processing] .record-screen .page-header,
.screen-result[data-view=processing] .record-screen .audio-panel,
.screen-result[data-view=processing] .record-screen .workspace { grid-column: 2; }
.screen-result[data-view=processing] .record-screen .document-content { padding: 20px 24px; }
.screen-result[data-view=processing] .record-screen .document-content > .alerts:not(:empty) { margin-top: 0; }
.screen-result[data-view=processing] #finish-live,
.screen-result[data-view=processing] #add-live-file,
.screen-result[data-view=processing] #choose-template { visibility: hidden; }
.screen-result[data-view=processing] .live-equalizer i { animation-play-state: paused; opacity: .45; }
.record-screen .live-processing { margin: 0; color: var(--ink); font-size: 14px; line-height: 1.5; }
.record-screen .live-processing[hidden] { display: none; }
.record-screen .live-processing header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.record-screen .live-processing h2 { margin: 0 0 4px; font-size: 18px; font-weight: 600; line-height: 27px; }
.record-screen .live-processing .muted { color: var(--muted); font-size: 12px; line-height: 18px; }
.record-screen .processing-copy { margin: 24px 0 0; color: var(--muted); font-size: 14px; line-height: 21px; }
.record-screen .processing-copy strong { font-weight: 500; }
.record-screen .processing-lines { display: grid; gap: 22px; margin-top: 32px; }
.record-screen .processing-lines i { display: block; height: 14px; background: #94a3b8; border-radius: 3px;
  animation: forming 1s ease-in-out infinite alternate; }
@keyframes forming { to { opacity: .45; } }

/* З6. Блок ошибки после «Завершить» — эскиз design/records-doctor-today-v2/record-error.html (шаг 25), значения —
   getComputedStyle эскиза на 1920×1080. Вместо документа: панель рабочей области с отступом 20 24, заголовок
   18/600 красным (#c53046), строка «Запись завершена · 08:27» 12/18, пояснение 14 через 24, «Перезапустить»
   40 px с рамкой #cdd8e7 через 24. Вкладки, документ и «Проверка приёма» спрятаны; сетка — две колонки. */
.screen-result.has-record-error .record-screen { grid-template-columns: 276px minmax(0, 1fr); }
.screen-result.has-record-error .record-screen .page-header,
.screen-result.has-record-error .record-screen .audio-panel,
.screen-result.has-record-error .record-screen .workspace { grid-column: 2; }
.screen-result.has-record-error .record-screen .review,
.screen-result.has-record-error .record-screen .header-actions .exam-toolbar,
.screen-result.has-record-error .record-screen .document-toolbar,
.screen-result.has-record-error .record-screen #panel-summary,
.screen-result.has-record-error .record-screen #panel-compare,
.screen-result.has-record-error .record-screen #panel-reference { display: none !important; }
.screen-result.has-record-error .record-screen .document-content { padding: 20px 24px; }
.screen-result.has-record-error .record-screen .document-content > .alerts:not(:empty) { margin-top: 0; }
.record-screen .record-error { margin: 0; padding: 0; color: var(--ink); font-size: 14px; line-height: 1.5; }
.record-screen .record-error header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.record-screen .record-error h2 { margin: 0 0 4px; color: #c53046; font-size: 18px; font-weight: 600; line-height: 27px; }
.record-screen .record-error .muted { color: var(--muted); font-size: 12px; line-height: 18px; }
.record-screen .record-error-copy { margin: 24px 0 0; color: var(--muted); font-size: 14px; line-height: 21px; }
.record-screen .record-error-fail { margin: 16px 0 0; color: #c53046; font-size: 14px; line-height: 21px; }
.record-screen .record-error-actions { margin-top: 24px; }
.record-screen .record-error .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: auto; min-height: 40px; padding: 9px 16px; border: 1px solid #cdd8e7; border-radius: 7px; background: #fff;
  color: var(--ink); font-size: 13px; font-weight: 500; line-height: 1.5; }
.record-screen .record-error .btn:hover:not(:disabled) { background: var(--soft); }
.record-screen .record-error .btn:disabled { opacity: .6; cursor: default; }
@media (max-width: 600px) { .record-screen .record-error .btn { padding-left: 12px; padding-right: 12px; } }
.record-screen .record-error .btn svg { width: 18px; height: 18px; flex: none; }

/* обработка: разделы документа — две полоски-заглушки (макет: .field-skeleton, document-pulse) */
.screen-result .wait-skel { gap: 14px; }
.screen-result .wait-skel .wait-skel-line { height: 10px; background: #dce6f4; width: 92%;
  animation: t5-document-pulse 1.5s ease-in-out infinite; }
.screen-result .wait-skel .wait-skel-line:last-child { width: 65%; }
@keyframes t5-document-pulse { 50% { opacity: 0.35; } }

/* телефон (≤600 px): панель записи переносится на несколько строк — макет record-live.html, @media(max-width:600px)
   (.audio-controls{flex-wrap:wrap;height:auto}, .wave-wrap{order:6;margin:4px 0 0}) поверх #live-sketch (дорожка
   240 px, «Завершить» с новой строки у левого края). Высота — auto из того же правила макета: в макете её
   перебивает 76 px из #live-sketch, и перенесённые строки наезжают на область под панелью (#live-alerts).
   Без переноса «Завершить» уходит за край экрана (ревью Codex запроса 402, P1). */
@media (max-width: 600px) {
  .record-screen .audio-controls { flex-wrap: wrap; height: auto; }
  .record-screen .wave-wrap { order: 6; margin: 4px 0 0; }
  .record-screen #finish-live { margin-left: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .screen-result .wait-skel .wait-skel-line { animation: none; }
  .record-screen .processing-lines i { animation: none; }
  .record-screen .live-equalizer i { animation: none; }
}
@media print {
  .screen-result #live-alerts { display: none !important; }
}

/* T8 — теги лекарств в разделе «Назначения» (views/record/tags.js; макет design/air/drug-tags.css,
   состояние done; done.css и record-refine.css — вид раздела на компьютере). Зелёный тег и янтарный
   «доза?» — палитра макета; жёлтый, оранжевый и красный теги (цвет из проверки, решение 2 от 27.09)
   в макете не нарисованы — рамка и текст цветами пометок --mk-* (app.css), фон — их -bg. */
@media screen {
  .exam-form .tagged-copy { padding: 12px 14px 32px; border-radius: 10px; background: #f8fafd; font-size: 15px;
    line-height: 2.4; min-height: 112px; }
  .exam-form .tagged-prose { white-space: pre-wrap; margin: 0; padding-left: 1.2em; }
  .exam-form .drug-tag { display: inline-flex; vertical-align: baseline; align-items: center; border: 1px solid #83b59b;
    border-radius: 7px; background: #f1f8f4; line-height: 30px; white-space: nowrap; margin: 2px 3px 2px 0; }
  .exam-form .drug-tag-name { padding: 0 10px; color: #216345; font-weight: 550; }
  .exam-form .drug-tag button { font: inherit; line-height: 30px; border: 0; background: transparent; color: #216345;
    padding: 0 9px; cursor: pointer; }
  .exam-form .drug-tag .dose-trigger { border-left: 1px solid #b2d1c0; border-right: 1px solid #b2d1c0; font-size: 14px; }
  .exam-form .drug-tag .drug-tag-remove { font-size: 20px; padding: 0 9px; }
  .exam-form .drug-tag button:hover { background: #deeee4; }
  .exam-form .drug-tag.drug-needs-dose { border-color: #d2b47c; background: #fffcf5; }
  .exam-form .drug-needs-dose .drug-tag-name, .exam-form .drug-needs-dose button { color: #735019; }
  .exam-form .drug-needs-dose button:hover { background: #fbe8bf; }
  .exam-form .drug-tag.drug-yellow { border-color: var(--mk-yellow); background: var(--mk-yellow-bg); }
  .exam-form .drug-tag.drug-orange { border-color: var(--mk-orange); background: var(--mk-orange-bg); }
  .exam-form .drug-tag.drug-red { border-color: var(--mk-red); background: var(--mk-red-bg); }
  .exam-form .drug-yellow .drug-tag-name, .exam-form .drug-yellow button { color: var(--mk-yellow); }
  .exam-form .drug-orange .drug-tag-name, .exam-form .drug-orange button { color: var(--mk-orange); }
  .exam-form .drug-red .drug-tag-name, .exam-form .drug-red button { color: var(--mk-red); }
  .exam-form .drug-yellow .dose-trigger, .exam-form .drug-orange .dose-trigger,
  .exam-form .drug-red .dose-trigger { border-color: currentColor; }
  .exam-form .drug-tag .dose-attention { background: #fff0c9; color: #794500; }
  .exam-form .drug-tag button:disabled { cursor: default; opacity: .8; }
  .exam-form .drug-tag button:disabled:hover { background: transparent; }
  .exam-form .drug-tag .dose-attention:disabled:hover { background: #fff0c9; }
  .exam-form .drug-tag .dose-input { width: 105px; min-width: 0; height: 30px;
    padding: 0 8px; border-top: 0; border-bottom: 0; border-radius: 0; background: transparent;
    color: #216345; font: inherit; line-height: 30px; }
  .exam-form .drug-yellow .dose-input { color: var(--mk-yellow); }
  .exam-form .drug-orange .dose-input { color: var(--mk-orange); }
  .exam-form .drug-red .dose-input { color: var(--mk-red); }
  .exam-form .drug-tag .dose-input.dose-attention { background: #fff0c9; color: #794500; }
  .exam-form .drug-tag .dose-input:focus { outline: 2px solid var(--accent); outline-offset: -2px; }
  .exam-form .drug-tag .dose-input:disabled { opacity: .8; }
  .exam-form .edit-section-text { display: block; border: 0; background: transparent; color: #1858cd; font: inherit;
    font-size: 12px; line-height: 1.5; padding: 8px 0 0; cursor: pointer; text-decoration: underline;
    text-underline-offset: 3px; }
  .exam-form .edit-section-text:disabled { display: none; }
  .exam-form .drug-note { font-size: 12px; line-height: 1.5; color: #607086; margin: 3px 0; }
  .exam-form .drug-note:empty { display: none; }
}
@media screen and (min-width: 1000px) {
  .exam-form .tagged-copy { padding: 0; background: white; border-radius: 0; min-height: 0; font-size: 14px;
    line-height: 1.8; }
}

/* T9 — «Наше мнение» в левой колонке листа, под данными пациента (views/record/opinion.js; макет
   design/air/record-refine.css, «Patient context and prescription explanations share the left column»,
   и record-review.css). Зелёная и янтарная полосы — палитра макета; оранжевый и красный препарат
   (решение 2 от 27.09) в макете не нарисованы — полоса цветом пометки --mk-*, фон — её -bg, как у тегов T8. */
@media screen {
  .exam-form .document-patient { min-width: 0; }
  .exam-form .document-opinion .drug-check, .exam-form .document-opinion .check-pending { margin: 20px 0 0;
    padding: 18px 0 0; border: 0; border-top: 1px solid #d5dfeb; border-radius: 0; background: transparent; }
  .exam-form .document-opinion h3 { margin: 0 0 8px; font-size: 17px; font-weight: 550; color: #24354b;
    text-align: left; letter-spacing: normal; }
  .exam-form .document-opinion p { font-size: 13px; line-height: 1.55; color: #52647b; margin: 8px 0; }
  .exam-form .check-skeleton { height: 44px; background: linear-gradient(#dce6f4 0 0) 0 0/94% 9px no-repeat,
    linear-gradient(#dce6f4 0 0) 0 22px/70% 9px no-repeat; animation: document-pulse 1.5s ease-in-out infinite; }
}
@keyframes document-pulse { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { .exam-form .check-skeleton { animation: none; } }
@media screen and (max-width: 999px) {
  .exam-form .document-opinion .drug-check, .exam-form .document-opinion .check-pending { margin: 0; padding: 20px;
    background: #f6f8fb; border-bottom: 1px solid #d5dfeb; }
}
@media print {
  .exam-form .document-opinion { display: none; }
}

/* ===== Белый дизайн экрана «Запись» (решение docs/decisions/2026-09-28-white-design.md, чат 2-26-175) =====
   Макет: design/ref-colors/screen.html и screen.png; размеры — вычисленные стили макета на 1920 px.
   Цвета — только переменные дизайн-системы (app.css, :root, «Белый дизайн»). Сетка на весь экран:
   левая панель «пациент и приём», шапка, плеер, рабочая область с документом, справа «Проверка приёма».
   Правила выше (T1–T9) писались под прошлый макет design/air — здесь они перекрыты для новой сетки. */
.screen-result:has(> .record-screen) { background: var(--canvas); }
.record-screen {
  display: grid; grid-template-columns: 276px minmax(0, 1fr) 358px; grid-template-rows: minmax(82px, auto) 96px minmax(0, 1fr);
  height: 100dvh; min-height: 800px; background: var(--canvas); color: var(--ink); font-size: 14px; line-height: 1.5;
}
.record-screen.no-review, .record-screen.tester-tab { grid-template-columns: 276px minmax(0, 1fr); }
.record-screen.no-review .review, .record-screen.tester-tab .review { display: none; }
/* на вкладках тестера «Сверка»/«Эталон» кнопки документа, поля пациента и выбор шаблона — от «Краткого
   содержания»: прячем их вместе с ним (замечание ревью Codex P1) */
.record-screen.tester-tab .header-actions .exam-toolbar, .record-screen.tester-tab .document-tools,
.record-screen.tester-tab .patient-heading, .record-screen.tester-tab .side-patient-slot { display: none; }
.record-screen.no-review .page-header, .record-screen.no-review .audio-panel,
.record-screen.no-review .workspace, .record-screen.tester-tab .page-header,
.record-screen.tester-tab .audio-panel, .record-screen.tester-tab .workspace { grid-column: 2; }

/* левая панель */
.record-screen .sidebar {
  grid-column: 1; grid-row: 1 / -1; display: flex; flex-direction: column; min-height: 0; overflow: auto;
  padding: 26px 24px 22px; background: var(--side); border-right: 1px solid var(--line); color: var(--ink);
}
.record-screen .brand { display: flex; align-items: center; gap: 10px; width: max-content; font-size: 27px; line-height: 1.5;
  font-weight: 600; letter-spacing: -1px; color: #194896; }
.record-screen .brand-symbol { display: grid; place-items: center; width: 36px; height: 38px; border-radius: 9px;
  background: var(--accent); color: #fff; box-shadow: 0 4px 10px #2563eb20; }
.record-screen .brand-symbol .icon { width: 24px; height: 24px; }
.record-screen .back-link { display: flex; align-items: center; gap: 8px; margin: 25px 0 22px; font-size: 13px;
  color: var(--muted); text-decoration: none; }
.record-screen .back-link:hover { color: var(--accent); }
.record-screen .patient-heading { display: flex; align-items: center; justify-content: space-between; margin: 0 0 10px;
  padding: 0 0 10px; border-bottom: 1px solid var(--line); }
.record-screen .patient-heading h2 { margin: 0; font-size: 15px; font-weight: 600; }
.record-screen .side-patient-slot:empty { display: none; }
.record-screen .sidebar .patient-fields { padding: 0; background: none; border: 0; border-radius: 0; }
.record-screen .sidebar .patient-fields h3 { display: none; }
.record-screen .sidebar .patient-grid { display: grid; grid-template-columns: 1fr; gap: 4px; }
.record-screen .sidebar .patient-field { display: grid; gap: 1px; font-size: 11px; line-height: 15px; color: var(--muted); }
.record-screen .sidebar .patient-field label { margin: 0; font-size: 11px; color: var(--muted); }
.record-screen .sidebar .patient-field input { width: 100%; height: 32px; min-height: 32px; padding: 5px 10px;
  font: inherit; font-size: 14px; font-weight: 400; color: var(--ink); background: var(--side-card);
  border: 1px solid var(--line); border-radius: 4px; }
.record-screen .sidebar .patient-field input:hover { border-color: #9fb7d8; }
.record-screen .sidebar .patient-field input:focus { background: #fff; }
.record-screen .sidebar .patient-field input:placeholder-shown { background: var(--amber-bg); border-bottom: 1px dashed var(--amber-border); }
.record-screen .sidebar .patient-field input::placeholder { color: var(--amber); opacity: 1; }
.record-screen .sidebar .patient-field input:disabled { background: var(--side-card); border-bottom-style: solid; color: var(--ink); }
.record-screen .sidebar .patient-note { display: none; }
.record-screen .sidebar .patient-field input[aria-invalid="true"] + .patient-note { display: block; color: #a33b26; font-size: 11px; }
.record-screen .sidebar-footer { margin-top: auto; padding-top: 18px; }
/* индикатор видеокарт и профиль — друг над другом, сначала индикатор: в одну строку на 240 px оба не помещались
   (правка владельца 01.10, чат 2-26-247, docs/decisions/2026-09-28-record-screen-states.md) */
.record-screen .doctor { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding-top: 17px;
  border-top: 1px solid var(--line); font-size: 12px; }
.record-screen .doctor .gpu-pill { height: 30px; padding: 0 10px; background: var(--side-card); color: var(--side-ink);
  border: 1px solid var(--line); font-size: 12px; white-space: nowrap; }
.record-screen .doctor .gpu-pill:hover { background: var(--soft); }
/* имя — целиком, без многоточия (правка владельца 01.10): длинное переносится на следующую строку, кнопка
   остаётся в пределах отступа панели (замечание 2-26-175, ширина 1920) */
.record-screen .doctor .menu { min-width: 0; max-width: 100%; }
.record-screen .doctor .user-btn { color: var(--ink); height: auto; min-height: 36px; max-width: 100%; }
.record-screen .doctor .user-name { display: block; min-width: 0; overflow-wrap: anywhere; }
.record-screen .doctor .user-btn:hover { background: var(--soft); }
.record-screen .doctor .avatar { width: 34px; height: 34px; background: #e7efff; color: #285cae; font-size: 12px; }
.record-screen .doctor .menu-list, .record-screen .doctor [role="menu"] { bottom: calc(100% + 6px); top: auto; left: 0; right: auto; }

/* шапка */
.record-screen .page-header {
  grid-column: 2 / -1; grid-row: 1; display: grid; grid-template-columns: minmax(240px, 1fr) minmax(0, auto); grid-template-rows: auto; align-items: start;
  column-gap: 24px; padding: 21px 26px 15px; background: #fff; border-bottom: 1px solid var(--line); min-width: 0;
  position: relative; z-index: 21;
}
.record-screen .title-block { position: relative; min-width: 0; }
.record-screen .page-header .head-title-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 14px; }
.record-screen .page-header h1 { margin: 0; font-size: 25px; line-height: 1.25; font-weight: 600; letter-spacing: -.5px; color: var(--ink); }
.record-screen .page-header #edit-note { font-size: 13px; color: var(--muted); max-width: 420px; padding-left: 12px;
  border-left: 1px solid #d9e2ef; border-radius: 0; }
.record-screen .page-header #head-status { margin-left: 0; }
.record-screen .header-actions { display: flex; flex-wrap: wrap; min-width: 0; align-items: center; justify-content: flex-end; gap: 8px; padding-top: 5px; }
.record-screen .record-tools { gap: 8px; }
.record-screen .record-tools .btn { min-height: 32px; padding: 0 10px; border-radius: 6px; font-size: 12px; font-weight: 500;
  background: #fff; border: 1px solid #9fb7d8; color: var(--side-ink); }

/* «Удалить» у всех врачей: вторичная кнопка с красным текстом */
.record-screen .header-actions .btn-delete-record { min-height: 40px; height: 40px; padding: 9px 16px; border-radius: 6px; font-size: 13px;
  font-weight: 500; gap: 8px; background: #fff; border: 1px solid #9fb7d8; color: #9c332a; }
.record-screen .header-actions .btn-delete-record:hover { background: #fdf3f2; }

/* кнопки листа в шапке: «Сохранить», «Изменить», «Печать» и состояние сохранения */
.record-screen .header-actions .exam-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0;
  padding: 0; font-size: 12px; color: var(--muted); }
.record-screen .exam-toolbar #edit-actions { gap: 8px; }
.record-screen .exam-toolbar #edit-actions .btn { min-height: 40px; height: 40px; padding: 9px 16px; border-radius: 6px;
  font-size: 13px; font-weight: 500; gap: 8px; background: #fff; border: 1px solid #9fb7d8; color: var(--side-ink); }
.record-screen .exam-toolbar #edit-actions #exam-save { padding: 9px 19px; border-radius: 7px; background: var(--accent);
  border-color: var(--accent); color: #fff; box-shadow: 0 3px 7px #2563eb24; }
.record-screen .exam-toolbar #edit-actions #exam-save:hover:not(:disabled) { background: var(--accent-dark); border-color: var(--accent-dark); }
.record-screen .exam-toolbar #edit-actions #exam-save:disabled { background: #f8fafd; border-color: #e3e9f2; color: var(--muted);
  box-shadow: none; opacity: 1; }
.record-screen .save-state { display: flex; align-items: center; gap: 6px; margin-right: 10px; font-size: 12px; color: var(--muted); }
.record-screen .save-state:empty { display: none; }
.record-screen .save-state.is-saved { color: var(--green); }
.record-screen .save-state.is-dirty { color: var(--amber); }
.record-screen .save-state.is-autosave.is-error { color: var(--danger); }
.record-screen .save-state .save-retry { margin-left: 6px; padding: 0; border: 0; background: none; color: var(--accent); font: inherit; text-decoration: underline; cursor: pointer; }

/* плеер */
.record-screen .audio-panel { grid-column: 2; grid-row: 2; min-width: 0; padding: 16px 24px 10px; background: #fff;
  border-bottom: 1px solid var(--line); }
.record-screen .audio-panel .player { position: static; padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; }
.record-screen .audio-panel .player::before { content: none; }
/* одна строка, как в макете: кнопки, время, дорожка; подписи говорящих — под дорожкой справа */
.record-screen .audio-panel .player { display: flex; flex-wrap: wrap; align-items: center; column-gap: 12px; row-gap: 2px; }
.record-screen .player-top { display: contents; }
.record-screen .player-hint { display: none; }
.record-screen .audio-panel .wave { order: 1; flex: 1 1 300px; min-width: 0; margin-left: 12px; }
.record-screen .audio-panel .legend { order: 2; flex: 0 0 100%; justify-content: flex-end; }
.record-screen .play { width: 42px; height: 42px; background: var(--accent); box-shadow: 0 2px 5px #2563eb22; }
.record-screen .play:hover { background: var(--accent-dark); }
.record-screen .play:disabled { background: var(--line); box-shadow: none; }
.record-screen .skip { height: 36px; min-width: 0; padding: 0 7px; border-radius: 5px; background: var(--side-card);
  border: 1px solid #9fb7d8; color: var(--muted); font-size: 12px; font-weight: 500; }
.record-screen .time { font-family: inherit; font-size: 13px; color: var(--ink); }
.record-screen .legend { font-size: 11px; color: var(--muted); gap: 15px; }
.record-screen .legend span::before { width: 5px; height: 5px; border-radius: 50%; }
.record-screen .wave { height: 30px; }

/* рабочая область */
.record-screen .workspace { grid-column: 2; grid-row: 3; display: flex; flex-direction: column; min-width: 0; min-height: 0;
  background: #fff; overflow: hidden; }
.record-screen .document-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex: none;
  min-height: 58px; padding: 0 24px; background: #fff; border-bottom: 1px solid var(--line); }
.record-screen .record-tabs-row { display: flex; align-items: stretch; gap: 24px; flex-wrap: nowrap; align-self: stretch; }
.record-screen .tabs { display: flex; gap: 24px; padding: 0; width: auto; background: none; border-radius: 0; }
.record-screen .tab { height: 58px; padding: 3px 0 0; gap: 8px; border-radius: 0; border-bottom: 3px solid transparent;
  background: none; color: var(--muted); font-size: 14px; font-weight: 500; }
.record-screen .tab[aria-selected="true"] { background: none; box-shadow: none; color: var(--accent); border-color: var(--accent); font-weight: 500; }
.record-screen .tab:hover { color: var(--accent); }
/* «Транскрипция» открывает боковое окно, но выглядит как вкладка макета */
.record-screen .transcript-toggle { align-self: stretch; height: 58px; min-height: 0; padding: 3px 0 0; gap: 8px; border: 0;
  border-bottom: 3px solid transparent; border-radius: 0; background: none; box-shadow: none; color: var(--muted);
  font-size: 14px; font-weight: 500; }
.record-screen .transcript-toggle:hover:not(:disabled) { background: none; color: var(--accent); }
.record-screen .tab .icon, .record-screen .transcript-toggle .icon { width: 17px; height: 17px; }
.record-screen .document-tools { display: flex; align-items: center; gap: 10px; }
.record-screen .document-tools:empty { display: none; }
.record-screen .document-tools #choose-template,
.record-screen .live-template-slot #choose-template { min-height: 34px; padding: 6px 8px; border-radius: 6px; border: 1px solid #9fb7d8;
  background: #fff; color: var(--side-ink); font-size: 12px; font-weight: 500; }
/* кнопка шаблона в панели записи — заливка и подпись по макету (приёмка вида П1 п.4): код шаблона
   остаётся динамическим (template.js, templateTrigger), «· Сменить шаблон» — подсказка после кода, как
   ⌄ уже добавляется ::after (строка ~319 выше); переопределяет только цвета/содержимое ::after — вне
   записи (.document-tools #choose-template) кнопка не меняется */
.record-screen .live-template-slot #choose-template { border-radius: 6px; border-color: #d7e2f2; background: #f7f9fe; color: #285cae; }
.record-screen .live-template-slot #choose-template::after { content: "· Сменить шаблон ⌄"; margin-left: 6px; }
/* П4 (З4): размер кнопки шаблона в строке управления идущей записи — как до начала записи (эскиз record-live.html) */
.record-screen .live-template-slot #choose-template { min-height: 40px; height: 40px; padding: 9px 16px; font-size: 13px; white-space: nowrap; }
.record-screen .workspace > .layout { flex: 1; min-height: 0; padding: 0; gap: 0; overflow: auto; align-items: stretch; }
.record-screen .document-content { display: flex; flex-direction: column; gap: 16px; min-height: 0; padding: 0 24px 18px; }
.record-screen .document-content > .alerts:empty { display: none; }
.record-screen .document-content > .alerts:not(:empty) { margin-top: 16px; }
.record-screen .layout > .side { padding: 16px 24px 18px 0; }
.record-screen .summary-card { padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; }

/* лист документа в рабочей области: без своей рамки — рамка у рабочей области */
.record-screen .examdoc-sheet.exam-form { display: block; border: 0; border-radius: 0; box-shadow: none; background: none; color: var(--ink); }
.record-screen .exam-form .document-patient { display: none; }
.record-screen .exam-form .document-sections { padding: 0; }
.record-screen .exam-form .examdoc-f.form-row, .record-screen .exam-form .examdoc-f-optional { padding: 10px 0 11px;
  border-bottom: 1px solid var(--line); }
.record-screen .exam-form .form-row .examdoc-h { display: flex; align-items: center; margin: 0 0 4px; font-size: 14px;
  font-weight: 600; line-height: 23px; color: var(--ink); }
.record-screen .exam-form .row-number { display: inline-grid; place-items: center; flex: none; width: 23px; min-width: 23px;
  height: 23px; margin-right: 10px; border-radius: 5px; background: var(--canvas); color: #65738a; font-size: 11px; font-weight: 400; }
.record-screen .exam-form .examdoc-f .examdoc-t, .record-screen .exam-form .examdoc-editable-list,
.record-screen .exam-form .examdoc-dx { margin-left: 33px; font-size: 14px; line-height: 1.55; color: var(--ink); }
.record-screen .exam-form .examdoc-t:focus, .record-screen .exam-form .examdoc-editable-list:focus,
.record-screen .exam-form .examdoc-dx:focus-within { background: #f7f9fe; border-color: var(--accent); }

/* правая колонка «Проверка приёма» */
.record-screen .review { grid-column: 3; grid-row: 2 / -1; display: flex; flex-direction: column; min-height: 0;
  padding: 0 22px 24px; background: var(--canvas); border-left: 1px solid var(--line); }
.record-screen .review-header { display: flex; align-items: center; justify-content: space-between; gap: 9px; flex: none;
  min-height: 96px; padding: 24px 0 20px; border-bottom: 1px solid var(--line); }
.record-screen .review-title { display: flex; align-items: center; gap: 9px; color: var(--accent); }
.record-screen .review-title h2 { margin: 0; font-size: 16px; line-height: 24px; font-weight: 600; color: var(--ink); }
.record-screen .review-caption { margin: -4px 0 0; padding-left: 29px; font-size: 12px; color: var(--muted); }
.record-screen .review-body { flex: 1; min-height: 0; overflow: auto; padding: 23px 0 20px; scrollbar-width: thin; }
.record-screen .review-caveat { margin: 16px 0; font-size: 12px; line-height: 1.6; color: #53647b; }
.record-screen .review .document-opinion .drug-check, .record-screen .review .document-opinion .check-pending {
  margin: 0; padding: 0; border: 0; background: none; }
.record-screen .review .document-opinion h3 { margin: 0 0 14px; font-size: 14px; font-weight: 600; color: var(--ink); }
.record-screen .review .document-opinion p { margin: 8px 0; font-size: 13px; line-height: 1.55; color: #425775; }
/* карточки препаратов (решение 2026-09-29-drug-panel.md; макет design/ref-colors/screen.html, #drug-cards) */
.record-screen .review .drug-card { margin: 0 0 12px; padding: 16px 18px; border: 1px solid var(--line); border-radius: 8px;
  background: #fff; }
.record-screen .review .drug-card.positive { border-color: var(--green-border); background: #f5fbf7; }
.record-screen .review .drug-card.caution { border-color: var(--amber-border); background: #fffcf5; }
.record-screen .review .drug-card.risk { border-color: #e8bab5; background: #fff8f7; }
.record-screen .review .drug-card header { display: flex; align-items: center; gap: 12px; }
.record-screen .review .drug-card h4 { margin: 0; font-size: 15px; font-weight: 500; line-height: 20px; color: var(--ink); }
.record-screen .review .drug-status { display: block; margin-top: 3px; font-size: 12px; line-height: 18px; }
.record-screen .review .positive .drug-status { color: var(--green); }
.record-screen .review .caution .drug-status { color: var(--amber); }
.record-screen .review .risk .drug-status { color: #ac3026; }
.record-screen .review .result-symbol { display: grid; place-items: center; order: 2; flex: none; width: 30px; height: 30px;
  margin-left: auto; border-radius: 50%; }
.record-screen .review .positive .result-symbol { background: #e7f6ed; color: #158355; }
.record-screen .review .caution .result-symbol { background: #fff1d8; color: #b77413; }
.record-screen .review .risk .result-symbol { background: #fbe5e2; color: #ac3026; }
.record-screen .review .result-symbol svg { width: 18px; height: 18px; }
.record-screen .review .document-opinion .drug-card p { margin: 16px 0 0; font-size: 13px; line-height: 1.55; color: #425775; }
.record-screen .review .document-opinion .drug-card.risk p { color: #ac3026; }
.record-screen .review .drug-card[aria-busy="true"] .drug-status { color: var(--muted); }
.record-screen .review .check-skeleton { height: 44px; background: linear-gradient(var(--line) 0 0) 0 0/94% 9px no-repeat,
  linear-gradient(var(--line) 0 0) 0 22px/70% 9px no-repeat; animation: document-pulse 1.5s ease-in-out infinite; }

/* транскрипция — колонка между документом и проверкой (макет design/ref-colors/screen.html, .transcript-open,
   решение 2026-09-28-white-design): проверку не закрывает. Окно поверх страницы из T2 здесь перекрыто. */
.record-screen.transcript-open { grid-template-columns: 276px minmax(0, 1fr) 360px 358px; }
.record-screen.transcript-open.no-review, .record-screen.transcript-open.tester-tab {
  grid-template-columns: 276px minmax(0, 1fr) 360px; }
.record-screen.transcript-open .review { grid-column: 4; }
.record-screen.transcript-open .audio-panel, .record-screen.transcript-open.no-review .audio-panel,
.record-screen.transcript-open.tester-tab .audio-panel { grid-column: 2 / 4; }
.record-screen.transcript-open.no-review .page-header, .record-screen.transcript-open.tester-tab .page-header { grid-column: 2 / -1; }
.record-screen.transcript-open .document-toolbar { padding: 0 20px; gap: 10px; }
.record-screen.transcript-open .record-tabs-row { gap: 17px; }
.record-screen #transcript-drawer { position: static; grid-column: 3; grid-row: 3; z-index: auto; width: auto; max-width: none;
  min-width: 0; height: auto; max-height: none; min-height: 0; padding: 20px; border: 0; border-left: 1px solid var(--line);
  border-radius: 0; box-shadow: none; }
.record-screen #transcript-drawer[hidden] { display: none; }
.record-screen #transcript-title { font-size: 18px; font-weight: 600; }
.record-screen .transcript-toggle[aria-expanded="true"] { color: var(--accent); border-color: var(--accent); }

@media (max-width: 1500px) {
  .record-screen { grid-template-columns: 240px minmax(0, 1fr) 310px; }
  .record-screen.no-review, .record-screen.tester-tab,
  .screen-result[data-view=processing] .record-screen { grid-template-columns: 240px minmax(0, 1fr); }
  .record-screen .sidebar { padding-left: 18px; padding-right: 18px; }
  /* транскрипция на 1100–1500 px встаёт на место листа документа под строкой вкладок (макет) */
  .record-screen.transcript-open { grid-template-columns: 240px minmax(0, 1fr) 310px; }
  .record-screen.transcript-open.no-review, .record-screen.transcript-open.tester-tab { grid-template-columns: 240px minmax(0, 1fr); }
  .record-screen.transcript-open .review { grid-column: 3; }
  .record-screen.transcript-open .audio-panel, .record-screen.transcript-open.no-review .audio-panel,
  .record-screen.transcript-open.tester-tab .audio-panel, .record-screen.transcript-open.no-review .page-header,
  .record-screen.transcript-open.tester-tab .page-header { grid-column: 2; }
  .record-screen.transcript-open .document-content, .record-screen.transcript-open .document-tools { display: none; }
  .record-screen #transcript-drawer { grid-column: 2; grid-row: 3; z-index: 2; margin-top: 58px; background: #fff;
    border-left: 0; border-top: 1px solid var(--line); }
  .record-screen.transcript-open .record-tabs-row { gap: 16px; }
  .record-screen .page-header { padding-left: 20px; padding-right: 20px; }
  .record-screen .page-header h1 { font-size: 22px; }
  .record-screen .audio-panel, .record-screen .document-toolbar { padding-left: 18px; padding-right: 18px; }
  .record-screen .document-content { padding-left: 18px; padding-right: 18px; }
  .record-screen .record-tabs-row, .record-screen .tabs { gap: 14px; }
  .record-screen .tab, .record-screen .transcript-toggle { font-size: 12px; }
  .record-screen .review { padding-left: 16px; padding-right: 16px; }
  .record-screen .exam-toolbar #edit-actions .btn { padding: 8px 10px; }
  .record-screen .skip { display: none; }
}
/* узкий экран: одна колонка — шапка, пациент, плеер, документ, проверка (макет, @media 1100 и 600) */
@media (max-width: 999px) {
  .record-screen, .record-screen.no-review { display: flex; flex-direction: column; height: auto; min-height: 100dvh; }
  .record-screen .page-header { order: 0; display: flex; flex-wrap: wrap; gap: 16px; padding: 20px; }
  .record-screen .title-block { flex: 1 1 360px; }
  .record-screen .header-actions, .record-screen .header-actions .exam-toolbar { flex-wrap: wrap; }
  .record-screen .record-tools { flex-wrap: wrap; }
  .record-screen .sidebar { order: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; padding: 20px; overflow: visible;
    border-right: 0; border-bottom: 1px solid var(--line); }
  .record-screen .brand { font-size: 24px; }
  .record-screen .back-link { margin: 0; justify-self: end; }
  .record-screen .patient-heading { margin: 0; padding: 0; border: 0; }
  .record-screen .side-patient-slot { grid-column: 1 / -1; }
  .record-screen .sidebar .patient-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .record-screen .sidebar .patient-field { font-size: 12px; gap: 5px; }
  .record-screen .sidebar .patient-field input { height: 40px; }
  .record-screen .sidebar-footer { padding: 0; align-self: end; }
  .record-screen .doctor { padding-top: 0; border-top: 0; }
  .record-screen .audio-panel { order: 2; position: sticky; top: 0; z-index: 5; padding: 12px 20px; }
  .record-screen .skip { display: inline-flex; }
  .record-screen .workspace { order: 3; overflow: visible; }
  .record-screen .document-toolbar { flex-wrap: wrap; gap: 0 16px; padding: 0 20px; }
  .record-screen .document-tools { margin: 8px 0; }
  .record-screen .workspace > .layout { overflow: visible; }
  .record-screen .document-content { padding: 0 20px 20px; }
  .record-screen .review { order: 5; padding: 0 20px 20px; border-left: 0; border-top: 1px solid var(--line); }
  .record-screen.transcript-open .document-content { display: flex; }
  .record-screen.transcript-open:not(.tester-tab) .document-tools:not(:empty) { display: flex; }
  .record-screen #transcript-drawer { order: 4; margin: 0; width: 100%; overflow: visible; border: 0; border-top: 1px solid var(--line); }
  .record-screen .review-header { min-height: 80px; }
  .record-screen .review-body { overflow: visible; }
}
@media (max-width: 600px) {
  .record-screen .page-header { padding: 16px; gap: 12px; }
  .record-screen .page-header h1 { font-size: 22px; }
  .record-screen .header-actions { width: 100%; justify-content: flex-start; }
  .record-screen .save-state { margin-right: auto; font-size: 11px; }
  .record-screen .record-tools { width: 100%; }
  .record-screen .record-tools .btn { min-height: 40px; font-size: 11px; }
  .record-screen .sidebar { padding: 16px; gap: 14px; }
  .record-screen .patient-heading,
  .record-screen .sidebar-footer { grid-column: 1 / -1; }
  .record-screen .sidebar .patient-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .record-screen .sidebar .patient-field input { font-size: 16px; }
  .record-screen .audio-panel { padding: 12px 16px; }
  .record-screen .player-top { flex-wrap: wrap; gap: 8px; }
  .record-screen .document-toolbar { padding: 0 16px; }
  .record-screen .record-tabs-row { width: 100%; gap: 14px; overflow-x: auto; }
  .record-screen .document-tools { width: 100%; justify-content: space-between; margin: 8px 0 12px; }
  .record-screen .document-content { padding: 0 16px 20px; }
  .record-screen .exam-form .examdoc-f .examdoc-t, .record-screen .exam-form .examdoc-editable-list,
  .record-screen .exam-form .examdoc-dx { margin-left: 0; font-size: 16px; }
  .record-screen .review { padding-left: 16px; padding-right: 16px; }
  .record-screen #transcript-drawer { padding-left: 16px; padding-right: 16px; }
}
@media print {
  .record-screen { display: block; height: auto; min-height: 0; background: #fff; }
  .record-screen .workspace, .record-screen .workspace > .layout { display: block; overflow: visible; }
  .record-screen .exam-form .row-number { display: none; }
}

/* «＋ Добавить препарат», схема приёма и поиск по реестру (макет design/ref-colors/screen.html,
   screen-drug-search.png; решение 2026-09-29-drug-panel.md, п. 4–6) */
.record-screen .exam-form .medication { display: flex; align-items: center; flex-wrap: wrap; gap: 11px; margin-bottom: 7px;
  font-size: 14px; }
.record-screen .exam-form .medication [contenteditable] { min-width: 100px; border-radius: 3px; outline-offset: 3px; }
.record-screen .exam-form .medication [contenteditable]:hover { background: #f7f9fe; }
.record-screen .exam-form .medication [contenteditable]:empty::before { content: attr(data-placeholder); color: #76849a; }
.record-screen .exam-form .add-drug { display: block; min-height: 28px; padding: 2px 0; border: 0; background: none;
  color: var(--accent); font: inherit; font-size: 13px; cursor: pointer; }
.record-screen .exam-form .add-drug:disabled { display: none; }
#drug-search { position: fixed; inset: auto; width: 330px; margin: 0; padding: 12px; border: 1px solid #cdd9ea;
  border-radius: 8px; background: #fff; box-shadow: 0 8px 28px #17284220; color: var(--ink); }
#drug-search header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px;
  font-size: 14px; font-weight: 500; }
#drug-search header button { border: 0; background: none; color: var(--muted); font-size: 21px; line-height: 24px;
  cursor: pointer; }
#drug-search input { width: 100%; height: 36px; padding: 7px 10px; border: 1px solid #9fb7d8; border-radius: 5px;
  font: inherit; font-size: 14px; outline: none; }
#drug-search input:focus { border-color: var(--accent); }
#drug-results { max-height: 180px; overflow: auto; margin-top: 8px; }
#drug-search .drug-option { display: flex; justify-content: space-between; gap: 12px; width: 100%; padding: 8px;
  border: 0; border-bottom: 1px solid var(--line); border-radius: 4px; background: none; font: inherit; font-size: 13px;
  color: var(--ink); text-align: left; cursor: pointer; }
#drug-search .drug-option small { display: block; margin-top: 2px; font-size: 12px; color: var(--muted); }
#drug-search .drug-option em { font-style: normal; font-size: 13px; color: var(--accent); white-space: nowrap; }
#drug-search .drug-option:hover, #drug-search .drug-option:focus { background: var(--soft); outline: none; }
#drug-search .drug-search-note { padding: 10px; font-size: 12px; color: var(--muted); }
/* Поиск по строкам вещества и торговых названий (решение 2026-10-13-drug-search-substance.md): подзаголовок группы —
   как пояснение списка, «Регистрация истекла» — жёлтая пометка токенами --amber* (статус «ждёт» в разделе записей). */
#drug-search .drug-search-group { padding: 8px 8px 4px; font-size: 12px; color: var(--muted); }
#drug-search .drug-search-group:first-child { padding-top: 0; }
.drug-expired { display: inline-block; padding: 1px 5px; border: 1px solid var(--amber-border); border-radius: 6px;
  background: var(--amber-bg); color: var(--amber); font-size: 12px; font-weight: 400; line-height: 1.5; }
#drug-search .drug-option .drug-expired { margin-top: 4px; }
#inline-dose-options button.dose-expired { display: inline-flex; align-items: center; gap: 6px; }

/* З2. До начала записи: фактический рендер record-new.html, шаги 21/23.
   Существующие состояния З1 не меняются. */
.record-prestart .record-screen { grid-template-rows: 92px 140px minmax(0, 1fr); min-height: 0; }
.record-prestart .page-header { padding: 21px 26px 0; }
.record-prestart .timecode { font-size: 12px; }
.record-prestart .record-meta { margin-top: 9px; }
.record-prestart .completion-dot { background: var(--muted); }
.record-prestart .audio-panel { margin: 0; padding: 24px; background: #fff; border: 0;
  border-bottom: 1px solid var(--line); border-radius: 0; box-shadow: none; }
.record-prestart .audio-controls { height: 80px; }
.record-prestart #start-record { flex: none; width: 214px; height: 80px; min-height: 80px; font-size: 18px;
  font-weight: 500; padding: 18px 24px; gap: 12px; border: 0; border-radius: 7px; background: var(--accent);
  color: #fff; box-shadow: 0 3px 7px #2563eb24; }
.record-prestart #start-record:hover:not(:disabled) { background: var(--accent-dark); }
.record-prestart #start-record .icon { width: 24px; height: 24px; }
.record-prestart #start-file { flex: none; width: 219px; height: 80px; min-height: 80px; font-size: 18px;
  font-weight: 500; padding: 18px 28px; gap: 8px; margin-left: auto; color: var(--accent);
  border: 1px dashed #9fb7d8; border-radius: 7px; background: #fff; }
.record-prestart #start-file .icon { width: 18px; height: 18px; }
.record-prestart #start-file:hover:not(:disabled) { background: var(--soft); }
.record-prestart #start-file-input { display: none; }
.record-prestart #start-file-error { width: 440px; max-width: 100%; margin-left: auto; font-size: 14px; line-height: 1.55; }
.record-prestart #start-file-error strong { display: block; color: #c53046; font-weight: 500; margin-bottom: 6px; }
.record-prestart #start-file-error p { margin: 0; color: var(--muted); font-size: 13px; }
.record-prestart .document-content { padding: 24px 24px 18px; }
#template-dialog.prestart-template-dialog { box-sizing: border-box; width: calc(100% - 40px); max-width: 470px; padding: 28px;
  border: 1px solid #cdd9ea; border-radius: 16px; background: #fff; color: var(--ink);
  box-shadow: 0 25px 90px #1728422f; font: 400 14px/1.5 var(--font); }
#template-dialog.prestart-template-dialog::backdrop { background: #13223866; }
#template-dialog.prestart-template-dialog header { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-bottom: 22px; }
#template-dialog.prestart-template-dialog h2 { margin: 0; font-size: 21px; font-weight: 600; }
#template-dialog.prestart-template-dialog .modal-field { display: grid; gap: 8px; margin-bottom: 20px; }
#template-dialog.prestart-template-dialog select { box-sizing: border-box; width: 100%; height: 44px; padding: 8px 12px;
  border: 1px solid #cdd9ea; border-radius: 7px; background: #fff; color: var(--ink); font: inherit; }
#template-dialog.prestart-template-dialog p { margin: 16px 0; color: var(--muted); line-height: 1.6; }
#template-dialog.prestart-template-dialog .modal-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 24px; }
@media (max-width: 700px) {
  .record-prestart .record-screen { height: auto; min-height: 100dvh; }
  .record-prestart .audio-controls { flex-wrap: wrap; height: auto; }
  .record-prestart #start-file { margin-left: 0; }
  .record-prestart .live-template-slot { order: 3; }
}

.record-prestart .live-template-slot #choose-template { min-height: 40px; height: 40px; padding: 9px 16px;
  font-size: 13px; white-space: nowrap; }
.record-prestart #start-record .icon { fill: currentColor; stroke: none; }
.record-prestart #start-file .icon { stroke-width: 1.6; }
.record-prestart .wave-wrap { flex: 0 1 240px; min-width: 0; }
.record-prestart .live-equalizer i { animation: none; opacity: .45; }
/* На узком экране до запуска — без заголовка, полей пациента, счётчика и дорожки
   (владелец 02.10, чат 2-42-264). Идущая запись и загрузка не меняются. */
@media screen and (max-width: 999px) {
  .record-prestart:not(.record-starting) .page-header,
  .record-prestart:not(.record-starting) .patient-heading,
  .record-prestart:not(.record-starting) .sidebar > .patient-fields,
  .record-prestart:not(.record-starting) .timecode,
  .record-prestart:not(.record-starting) .wave-wrap { display: none; }
}
.record-prestart .sidebar .patient-field input:placeholder-shown { background: #f7f9fc; border: 1px solid var(--line); }
.record-prestart .sidebar .patient-field input::placeholder { color: #76849a; }
@media (min-width: 1000px) {
  .record-prestart .record-screen.no-review { grid-template-columns: 276px minmax(0, 1fr); }
}

.record-prestart.record-starting .completion-dot { background: #1b986c; }
.record-prestart.record-starting .live-equalizer i { animation: t5-voice .75s ease-in-out infinite alternate; opacity: 1; }

#template-dialog.prestart-template-dialog .btn { height: auto; min-height: 36px; padding: 9px 12px;
  font-size: 13px; font-weight: 500; border: 0; border-radius: 7px; line-height: 1.5; }
#template-dialog.prestart-template-dialog .btn-primary { background: var(--accent); color: #fff; padding: 10px 19px; }
#template-dialog.prestart-template-dialog .btn-primary:hover { background: var(--accent-dark); }
@media (min-width: 1000px) {
  .record-prestart .sidebar { padding: 26px 24px 22px; }
}

.record-prestart #start-file-error.upload-progress strong { color: var(--muted); }

/* Окна «Выйти из записи?» и «Продолжить запись?» (задача З3) — эскиз
   design/records-doctor-today-v2/record-live.html, #live-dialog; значения сняты getComputedStyle с эскиза
   при 1920×1080 и 390 (ui.js, choiceDialog). */
.choice-dialog { box-sizing: border-box; width: calc(100% - 40px); max-width: 470px; padding: 28px;
  border: 1px solid #cdd9ea; border-radius: 16px; background: #fff; color: var(--ink);
  box-shadow: 0 25px 90px #1728422f; font: 400 14px/1.5 var(--font); }
.choice-dialog::backdrop { background: #17284255; backdrop-filter: blur(3px); }
.choice-dialog header { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-bottom: 22px; }
.choice-dialog h2 { margin: 0; font-size: 21px; font-weight: 600; line-height: 1.5; color: var(--ink); }
.choice-dialog p { margin: 18px 0 16px; font-size: 14px; line-height: 1.6; color: var(--muted); }
.choice-dialog .modal-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 24px; }
.choice-dialog .btn { height: auto; min-height: 36px; padding: 9px 16px; gap: 8px; font-size: 13px; font-weight: 500;
  line-height: 1.5; border: 1px solid #cdd8e7; border-radius: 7px; background: #fff; color: var(--ink); }
.choice-dialog .btn-outline:hover { background: #fff; }
.choice-dialog .btn-primary { padding: 10px 19px; border: 0; background: var(--accent); color: #fff; }
.choice-dialog .btn-primary:hover { background: var(--accent-dark); }
.choice-dialog .btn:focus-visible { outline: 3px solid #82a8ff; outline-offset: 3px; }
@media (max-width: 600px) {
  .choice-dialog { padding: 20px; }
  .choice-dialog h2 { font-size: 19px; }
  .choice-dialog .btn-outline { padding: 9px 12px; }
  /* три кнопки на 390 не помещаются в строку эскиза — переносятся, без горизонтальной прокрутки */
  .choice-dialog .modal-actions { flex-wrap: wrap; }
}
@media print { .choice-dialog { display: none !important; } }

/* Проба 01.10 (чат 2-26-247): кнопки строки идущей записи одного размера — одинаковая высота 48, шрифт 15,
   боковые отступы 20 (решение владельца 01.10, около 08:30); звуковая дорожка в 1,5 раза выше и шире.
   Круглая кнопка паузы не меняется */
.screen-result:is([data-view=recording], [data-view=processing]) .record-screen .audio-controls :is(.live-large, #finish-live, #add-live-file, .live-template-slot #choose-template) {
  height: 48px; min-height: 48px; padding: 0 20px; font-size: 15px; }
/* высоты строки, сетки и дорожки — с 641 px: до 640 включительно действует мобильная панель (height:auto) */
@media (min-width: 641px) {
  .screen-result:is([data-view=recording], [data-view=processing]) .record-screen .audio-controls { height: 96px; }
  .screen-result:is([data-view=recording], [data-view=processing]) .record-screen { grid-template-rows: 142px 145px minmax(0, 1fr); }
  .screen-result:is([data-view=recording], [data-view=processing]) .record-screen .wave-wrap { flex: 1 1 0; height: 96px; }
  .screen-result:is([data-view=recording], [data-view=processing]) .record-screen .live-equalizer { width: 100%; height: 96px; }
  .screen-result:is([data-view=recording], [data-view=processing]) .record-screen .live-equalizer i { height: calc(var(--bar) * 1.5); }
}

/* Мобильная гипотеза 2-26-255: пункты А–В и 1–11 аудита 01.10.
   Навигация вынесена над шапкой только визуально; порядок остальных блоков сохранён. */
@media screen and (max-width: 640px) {
  .screen-result .record-screen { position: relative; padding-top: 76px; }
  .record-screen::before { content: ""; position: absolute; inset: 0 0 auto; height: 76px;
    background: var(--side); border-bottom: 1px solid var(--line); }
  .record-screen .sidebar > .brand, .record-screen .sidebar > .back-link {
    position: absolute; top: 16px; z-index: 22; min-height: 44px; margin: 0; }
  .record-screen .sidebar > .brand { left: 16px; }
  .record-screen .sidebar > .back-link { right: 16px; }
  .record-screen .record-meta { flex-wrap: wrap; }
  .record-screen .record-meta > span:not(.completion-dot) { flex: none; white-space: nowrap; }
  .record-screen .record-meta #edit-note { flex-basis: 100%; margin-left: 0; margin-top: 4px;
    padding-left: 0; border-left: 0; white-space: normal; overflow-wrap: anywhere; }
  .record-screen .page-header #head-status { white-space: nowrap; }

  /* Порядок на телефоне (владелец 01.10, чат 2-26-255): управление и документ
     перед пациентом; служебные сведения остаются после полей в той же панели.
     Остальные блоки сохраняют свой порядок, DOM и обработчики не меняются. */
  .record-screen .sidebar { order: 6; grid-template-columns: minmax(0, 1fr); }
  .record-screen .sidebar > .patient-fields { grid-column: 1 / -1; min-width: 0; }
  .record-screen .sidebar .patient-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .record-screen .sidebar .patient-field { min-width: 0; grid-template-rows: minmax(18px, auto) auto; }
  .record-screen .sidebar .patient-field label { font-size: 12px; line-height: 18px; }
  .record-screen .sidebar .patient-field input { min-width: 0; padding: 5px 6px; font-size: 16px; }

  .record-screen .audio-controls { display: grid; grid-template-columns: 64px minmax(0, 1fr);
    height: auto; gap: 12px; }
  .record-screen .audio-controls > .play { grid-column: 1; grid-row: 1; }
  .record-screen .audio-controls > .timecode { grid-column: 2; grid-row: 1; }
  .record-screen .audio-controls > .live-template-slot { grid-column: 1 / -1; grid-row: 4; }
  .record-screen .audio-controls > #finish-live { grid-column: 1 / -1; grid-row: 2; }
  .record-screen .audio-controls > #add-live-file { grid-column: 1 / -1; grid-row: 3; margin-left: 0; }
  .record-screen .audio-controls > .wave-wrap { grid-column: 1 / -1; grid-row: 5; width: 100%; margin: 0; }
  .record-screen .live-equalizer { width: 100%; }
  .record-screen .live-template-slot #choose-template { width: 100%; margin: 0; min-height: 44px; }
  .record-prestart .record-screen .audio-controls > #start-record { grid-column: 1 / -1; grid-row: 1;
    width: 100%; padding-left: 12px; padding-right: 12px; }
  .record-prestart .record-screen .audio-controls > #start-file { grid-column: 1 / -1; grid-row: 2;
    width: 100%; margin: 0; padding-left: 12px; padding-right: 12px; }
  .record-prestart .record-screen .audio-controls > .live-template-slot { grid-row: 3; }
  .record-prestart .record-screen .audio-controls > .timecode { grid-column: 1 / -1; grid-row: 4; }
  .record-prestart .record-screen .audio-controls > .wave-wrap { grid-row: 5; }

  .screen-result[data-view=processing] .record-screen .audio-controls { grid-template-columns: auto minmax(0, 1fr); }
  .screen-result[data-view=processing] .record-screen .audio-controls > :is(#play, #finish-live, #add-live-file, .live-template-slot) {
    display: none; }
  .screen-result[data-view=processing] .record-screen .audio-controls > .timecode { grid-column: 1; grid-row: 1; }
  .screen-result[data-view=processing] .record-screen .audio-controls > .wave-wrap {
    grid-column: 2; grid-row: 1; height: 44px; }
  .screen-result[data-view=processing] .record-screen .live-equalizer { height: 44px; }

  .record-screen .skip { min-width: 44px; min-height: 44px; height: 44px;
    align-items: center; justify-content: center; }
  .record-screen .play { min-width: 44px; min-height: 44px; }
  .record-screen .document-tools #choose-template { min-height: 44px; }
  .record-screen .record-tools { flex-wrap: nowrap; }
  .record-screen .record-tools .btn { min-height: 44px; height: auto; font-size: 13px; padding: 8px 10px; }
  .record-screen .record-tools #record-tech-toggle { flex: 1 1 0; min-width: 0; white-space: normal; }
  .record-screen .record-tools .record-actions { flex: none; }
  .record-screen .record-tabs-row, .record-screen.transcript-open .record-tabs-row { gap: 4px; }
  .record-screen .tabs { flex: none; gap: 4px; }
  .record-screen .tab, .record-screen .transcript-toggle { flex: none; gap: 4px;
    padding-left: 0; padding-right: 0; white-space: nowrap; }
  .choice-dialog .modal-actions, #template-dialog.prestart-template-dialog .modal-actions {
    display: grid; grid-template-columns: minmax(0, 1fr); }
  .choice-dialog .modal-actions .btn, #template-dialog.prestart-template-dialog .modal-actions .btn {
    width: 100%; min-height: 44px; }

  .record-screen .exam-form .examdoc-dx-row { display: grid; grid-template-columns: minmax(0, 1fr) 44px;
    gap: 4px 8px; align-items: start; margin-bottom: 12px; }
  .record-screen .exam-form .examdoc-dx-text { grid-column: 1; min-width: 0; overflow-wrap: anywhere; }
  .record-screen .exam-form .examdoc-dx-prelim { grid-column: 1; grid-row: 2; justify-self: start;
    min-height: 44px; padding: 4px 0; text-align: left; }
  .record-screen .exam-form .examdoc-dx-remove { grid-column: 2; grid-row: 1 / 3;
    width: 44px; height: 44px; margin: 0; padding: 12px; align-items: center; justify-content: center; }
  .record-screen .exam-form .examdoc-f .examdoc-t, .record-screen .exam-form .examdoc-editable-list {
    min-height: 44px; }
  .record-screen .exam-form .examdoc-date + .form-row .examdoc-t { min-height: 44px; }
  .record-screen .audio-panel .player { row-gap: 12px; }
  .record-screen .audio-panel .player-wait { flex: 0 0 100%; margin: 0; }
  .record-screen .audio-panel .wave { margin-left: 0; }
}

/* Препараты: справочная панель и правки у тега, эскиз 01.10.2026. */
#inline-dose{position:fixed;inset:auto;margin:0;width:260px;padding:12px;border:1px solid #cdd9ea;border-radius:8px;background:#fff;color:var(--ink);box-shadow:0 8px 28px #17284220}
#inline-dose header{font-size:14px;font-weight:500;margin-bottom:10px}
#inline-dose label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}
.inline-dose-field{display:flex;align-items:center;gap:8px;font-size:13px}
#inline-dose input{width:100%;height:34px;padding:6px 9px;border:1px solid #9fb7d8;border-radius:5px;background:#fff;outline:none;font-size:14px}
#inline-dose input:focus{border-color:var(--accent)}
#inline-dose-options{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
#inline-dose-options button{padding:4px 8px;border:1px solid #cdd9ea;border-radius:4px;background:white;color:var(--accent);font-size:12px}
#inline-dose-options button:hover{background:var(--soft)}

.record-screen .review .drug-card h4 > span { font-weight: 400; margin-left: 4px; font-size: 14px; }
.record-screen .review .drug-card .drug-status { font-size: 13px; }
.record-screen .review .drug-card.risk .drug-status { color: #ac3026; }
.record-screen .exam-form .drug-tag-name { border: 0; background: none; color: inherit; font: inherit; padding: 0; cursor: pointer; }
.record-screen .exam-form .drug-tag-name:hover { text-decoration: underline; }
.record-screen .exam-form .dose-trigger { display: inline-flex; align-items: center; gap: 4px; }
.record-screen .exam-form .dose-trigger svg { width: 13px; height: 13px; }
#drug-search .drug-option small { line-height: 1.5; }

@media screen {
  .record-screen .exam-form [data-section="prescriptions"] { position: relative; }
  .record-screen .exam-form .tagged-copy { margin-left: 33px; padding: 0; min-height: 0; background: none;
    font-size: 14px; line-height: 1.5; }
  .record-screen .exam-form .tagged-prose { list-style: none; padding: 0; white-space: pre-wrap; }
  .record-screen .exam-form .tagged-prose > li { margin-bottom: 7px; }
  .record-screen .exam-form .drug-tag { padding: 2px; margin: 0 11px 0 0; border: 1px solid #bfe4d1;
    border-radius: 6px; background: #eff9f3; color: #147052; font-size: 12px; line-height: 25px; }
  .record-screen .exam-form .drug-tag button { display: inline-flex; align-items: center; gap: 5px;
    padding: 1px 6px; min-height: 26px; border: 0; border-radius: 4px; color: inherit; font-size: 12px; line-height: 25px; }
  .record-screen .exam-form .drug-tag .drug-tag-name { font-weight: 500; }
  .record-screen .exam-form .drug-tag .dose-trigger { background: #dbf1e5; }
  .record-screen .exam-form .drug-tag.drug-yellow, .record-screen .exam-form .drug-tag.drug-orange {
    background: #fff8e8; border-color: #eed59d; color: #925508; }
  .record-screen .exam-form .drug-tag.drug-yellow .dose-trigger,
  .record-screen .exam-form .drug-tag.drug-orange .dose-trigger { background: #ffedc3; }
  .record-screen .exam-form .drug-tag.drug-red { background: #fff0ee; border-color: #e8bab5; color: #ac3026; }
  .record-screen .exam-form .drug-tag.drug-red .dose-trigger { background: #fbe5e2; }
  .record-screen .exam-form .drug-tag svg { width: 12px; height: 12px; }
  .record-screen .exam-form .drug-tag .drug-tag-remove { font-size: 12px; }
  /* Замечание сверки строкой под пунктом (задача 2-54-356-1, эскиз rx-remark.html): на телефоне; на компьютере — при .no-review (ниже); иначе
     причина — в панели «Проверка приёма», в печать не идёт */
  .record-screen .exam-form .drug-remarks { display: none; }
  .record-screen .exam-form .edit-section-text { position: absolute; top: 0; right: 0; min-height: 23px;
    margin: 0; padding: 0; font-size: 12px; line-height: 23px; color: #174dc6; }
  .record-screen .exam-form .drug-note:empty { display: none; }
}
.record-screen .review .drug-card .drug-status { line-height: 1.5; }
.record-screen .review .document-opinion .review-caveat { font-size: 12px; line-height: 1.6; margin: 16px 0; color: #53647b; }
@media screen and (max-width: 640px) {
  .record-screen .exam-form .tagged-copy { margin-left: 0; }
  .record-screen .exam-form .edit-section-text { position: static; display: block; }
}

.record-screen .review-header { flex-wrap: wrap; gap: 6px; align-content: center; }
.record-screen .review-ready { display: flex; align-items: center; gap: 3px; padding: 3px 6px;
  border: 1px solid #bfe4d1; border-radius: 5px; background: #e9f6ef; color: #177b57; font-size: 11px; font-weight: 500; }
.record-screen .review-ready svg { width: 13px; height: 13px; }
.record-screen .review-caption { flex-basis: 100%; padding-left: 26px; }
/* Гипотеза 2-42-259: текущий этап и оценка всей обработки. */
.processing-status { width: 100%; margin-bottom: 16px; }
.processing-status-row { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 8px; }
.processing-status-label { font-size: 17px; font-weight: 600; overflow-wrap: anywhere; }
.processing-status-pct { color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; }
#live-processing header > div { width: 100%; }

/* SaaS direction 1 — exact geometry of bright-1-record.html, doctor view.
   Existing mobile/live/processing layouts remain the responsive state definitions. */
@media screen {
.record-screen { font-family:var(--font); }
.record-screen .brand { color:var(--ink); letter-spacing:-1.1px; }
.record-screen .sidebar .patient-grid { gap:12px; }
.record-screen .sidebar .patient-field { gap:5px; line-height:15px; }
.record-screen .sidebar .patient-field label { font-size:12px; }
.record-screen .sidebar .patient-field input { height:38px; border:1px solid #cbd2dd; border-radius:7px; background:#fafbfc; padding:8px 11px; }
.record-screen .sidebar .patient-field input:placeholder-shown { background:#fafbfc; border:1px solid #cbd2dd; }
.record-screen .sidebar .patient-field input::placeholder { color:#667084; }
.record-screen .sidebar .patient-field input:focus { border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px #2563eb10; }
.record-screen .sidebar .patient-field[data-key=birth_date] { order:1; }
.record-screen .sidebar .patient-field[data-key=iin] { order:2; }
.record-screen .sidebar .patient-field[data-key=phone] { order:3; }
.record-screen .sidebar .patient-field[data-key=card_number] { order:4; }
.record-screen .brand-symbol { width:34px;height:36px;border-radius:10px;box-shadow:none; }
.record-screen .doctor .avatar { width:32px;height:32px;background:#edf1f9;color:#48618d; }
.record-screen .doctor .menu { width:100%; }
.record-screen .doctor .user-btn { width:100%;padding:0;gap:10px;font-size:13px; }
.record-screen .doctor .user-btn > .icon { margin-left:auto;width:12px;height:12px; }
.record-screen .page-header h1 { font-size:28px;font-weight:500;letter-spacing:-.8px; }
.record-screen .page-header #head-status .badge { border:1px solid var(--amber-border);border-radius:6px;padding:3px 8px;font-size:12px;font-weight:400;background:var(--amber-bg);color:var(--amber);gap:7px; }
.record-screen .page-header #head-status .badge-success { border-color:var(--green-border);background:var(--green-bg);color:var(--green); }
.record-screen .page-header #head-status .badge-danger,.record-screen .page-header #head-status .badge-rec { border-color:var(--red-border);background:var(--red-bg);color:var(--red); }
.record-screen .page-header #head-status .badge-primary { border-color:#c1d1f0;background:var(--soft);color:#2856ae; }
.record-screen .page-header #head-status .badge .icon { display:none; }
.record-screen .page-header #head-status .badge::before { content:'';width:6px;height:6px;border-radius:50%;background:currentColor; }
.record-screen .page-header #head-status .status-run:has(.badge[data-status="ready"]) .progress { display:none; }
.record-screen .exam-toolbar #edit-actions .btn { border-color:#cbd2dd;border-radius:8px;font-weight:500;padding:8px 14px; }
.record-screen .exam-toolbar #edit-actions #exam-save { border-radius:8px;padding:9px 17px;box-shadow:inset 0 1px 0 #ffffff25,0 2px 3px #174dc618; }
.record-screen .record-tabs-row { align-self:center;align-items:stretch;height:38px;gap:2px;background:#f0f2f6;padding:3px;border:1px solid #e3e7ed;border-radius:8px; }
.record-screen .tabs { gap:2px; }
.record-screen .tab,.record-screen .transcript-toggle { height:30px;min-height:30px;padding:4px 10px;border:0;border-radius:5px;font-size:12px;font-weight:400;gap:7px; }
.record-screen .tab[aria-selected=true] { background:#fff;color:var(--ink);font-weight:500;box-shadow:0 1px 3px #20273513; }
.record-screen .tab[aria-selected=true] .icon { color:var(--accent); }
.record-screen .document-tools #choose-template { min-height:32px;padding:5px 9px;border-radius:6px;font-size:12px;font-weight:500; }
.record-screen .exam-form .examdoc-f.form-row { padding:6px 0 7px;border-color:#e1e5eb; }
.record-screen .exam-form .form-row .examdoc-h { font-size:14px;line-height:24px;font-weight:550;margin-bottom:3px; }
.record-screen .exam-form .row-number { width:22px;min-width:22px;height:22px;margin-right:16px;font-size:12px;font-weight:500;background:#fff;border:1px solid #d7dfec;color:#567094;border-radius:6px; }
.record-screen .exam-form .examdoc-f .examdoc-t,.record-screen .exam-form .examdoc-editable-list,.record-screen .exam-form .examdoc-dx,.record-screen .exam-form .tagged-copy { margin-left:38px; }
.record-screen .exam-form .examdoc-dx input { height:34px;min-height:34px;padding:6px 10px;background:#fafbfc;border:1px solid #cbd2dd;border-radius:7px;font-size:13px; }
.record-screen .exam-form .drug-tag { padding:3px;background:var(--green-bg);border-color:var(--green-border);color:var(--green); }
.record-screen .exam-form .drug-tag.drug-yellow,.record-screen .exam-form .drug-tag.drug-orange { background:var(--amber-bg);border-color:var(--amber-border);color:var(--amber); }
.record-screen .exam-form .drug-tag.drug-red { background:var(--red-bg);border-color:var(--red-border);color:var(--red); }
.record-screen .review-title > svg { background:#eef3ff;box-sizing:content-box;padding:5px;border-radius:7px;width:16px;height:16px; }
.record-screen .review-title h2 { font-size:15px;font-weight:500;letter-spacing:-.2px; }
.record-screen .review-caption { padding-left:33px; }
.record-screen .review .drug-card { position:relative;background:#fff;border-radius:9px;padding:15px 15px 15px 18px; }
.record-screen .review .drug-card.positive { background:#fff;border-color:#bbd8c9; }
.record-screen .review .drug-card.caution { background:#fff;border-color:#e4d1ab; }
.record-screen .review .drug-card.risk { background:#fff;border-color:#e3bfc5; }
.record-screen .review .drug-card::before { content:'';position:absolute;left:0;top:15px;bottom:15px;width:2px;background:#3a9b76;border-radius:0 2px 2px 0; }
.record-screen .review .drug-card.caution::before { background:#d49a35; }
.record-screen .review .drug-card.risk::before { background:#d06a73; }
.record-screen .review .result-symbol { width:28px;height:28px;border-radius:7px; }
.record-screen .review .result-symbol svg { width:15px;height:15px; }
.record-screen .review .drug-card h4 { font-size:15px;line-height:1.4; }
.record-screen .review .drug-card h4 > span { font-size:12px; }
.record-screen .review .drug-card .drug-status { font-size:12px;line-height:1.55; }
.record-screen .review .document-opinion .drug-card p { font-size:12px;line-height:1.6;color:var(--muted);margin-top:14px; }
.record-screen .review-ready { font-size:12px;font-weight:400;padding:2px 4px; }
}
@media screen and (min-width:1000px) {
.record-screen { grid-template-columns:280px minmax(0,1fr) 336px;grid-template-rows:minmax(96px,auto) 100px minmax(0,1fr);min-height:1000px; }
.record-screen.no-review,.record-screen.tester-tab { grid-template-columns:280px minmax(0,1fr); }
.record-screen .sidebar { padding:27px 24px 22px;border-color:#d4dae4; }
.record-screen .back-link { margin:26px 0 31px; }
.record-screen .patient-heading { margin-bottom:18px;padding-bottom:12px; }
.record-screen .patient-heading h2 { font-weight:500;letter-spacing:-.2px; }
.record-screen .page-header { padding:15px 26px 12px;gap:20px;align-items:center; }
.record-screen .page-header .head-title-row { display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:12px;row-gap:8px;justify-content:start; }
.record-screen .page-header h1 { grid-column:1/-1; }
.record-screen .page-header #head-status { grid-column:1;grid-row:2; }
.record-screen .page-header #edit-note { grid-column:2;grid-row:2;font-size:12px;justify-self:start; }
.record-screen .header-actions { padding:0;align-self:center; }
.record-screen .audio-panel { margin:14px 20px 12px;border:1px solid #d4dae4;border-radius:12px;padding:16px 14px;background:#fff;box-shadow:0 2px 6px #20273505;display:flex;align-items:center; }
.record-screen .audio-panel .player { width:100%;flex-wrap:nowrap;gap:10px; }
.record-screen .audio-panel .wave { height:38px;flex:1;min-width:90px;margin:0 9px; }
.record-screen .audio-panel .legend { flex:0 0 auto;flex-direction:column;gap:4px;font-size:12px; }
.record-screen .play { width:40px;height:40px;min-height:40px; }
.record-screen .skip { display:inline-flex;align-items:center;justify-content:center;height:30px;min-height:30px;border:1px solid #d5dce7;padding:4px 7px;border-radius:7px;background:#f9fafc; }
.record-screen .workspace { margin:0 20px 20px;border:1px solid #cdd5e0;border-radius:12px;box-shadow:0 3px 10px #20273505; }
.record-screen .document-toolbar { min-height:60px;padding:9px 17px;gap:12px;border-color:#dce1e9; }
.record-screen .document-content { padding:7px 20px 12px 15px;background:#fff;box-shadow:inset 46px 0 #f8f9fc; }
.record-screen .review { margin:14px 20px 20px 0;padding:0 17px;border:1px solid #d4dae4;border-radius:12px;background:#fff;overflow:hidden; }
.record-screen .review-header { padding:18px 0 17px;min-height:0;gap:7px;border-color:#e0e5ed; }
.record-screen .review-body { padding:17px 0; }
.record-screen.transcript-open { grid-template-columns:280px minmax(0,1fr) 344px 336px; }
.record-screen.transcript-open.no-review,.record-screen.transcript-open.tester-tab { grid-template-columns:280px minmax(0,1fr) 344px; }
.record-screen.transcript-open .review { grid-column:4; }
.record-screen.transcript-open .audio-panel { grid-column:2; }
.record-screen #transcript-drawer { grid-row:2/-1;margin:14px 16px 20px 0;padding:18px;border:1px solid #d4dae4;border-radius:12px; }
}
@media screen and (min-width:1000px) and (max-width:1500px) {
.record-screen.transcript-open { grid-template-columns:280px minmax(0,1fr) 336px; }
.record-screen.transcript-open.no-review,.record-screen.transcript-open.tester-tab { grid-template-columns:280px minmax(0,1fr); }
.record-screen.transcript-open .review { grid-column:3; }
.record-screen #transcript-drawer { grid-column:2;grid-row:3;margin:60px 20px 20px;padding:18px; }
}
@media screen and (max-width:640px) {
.record-screen .record-tabs-row { height:auto;max-width:100%; }
.record-screen .tab,.record-screen .transcript-toggle { white-space:nowrap; }
.record-screen .exam-form .examdoc-f .examdoc-t,.record-screen .exam-form .examdoc-editable-list,.record-screen .exam-form .examdoc-dx,.record-screen .exam-form .tagged-copy { margin-left:0; }
}
@media screen and (min-width:1000px) {
.record-screen .exam-form .examdoc-dx-row { position:relative;display:block; }
.record-screen .exam-form .examdoc-dx-text { display:grid;grid-template-columns:130px minmax(0,1fr);gap:8px; }
.record-screen .exam-form .examdoc-dx-label { grid-column:1/-1;font-size:12px;color:var(--muted);font-weight:400; }
.record-screen .exam-form .examdoc-dx-code,.record-screen .exam-form .examdoc-dx-name { display:block;min-width:0;min-height:34px;padding:6px 10px;font-size:13px;line-height:20px;font-weight:400;background:#fafbfc;border:1px solid #cbd2dd;border-radius:7px; }
.record-screen .exam-form .examdoc-dx-sep { display:none; }
.record-screen .exam-form .examdoc-dx-prelim { position:absolute;right:0;top:0;font-size:12px;font-weight:400; }
.record-screen .exam-form .examdoc-dx-add { display:flex;gap:20px; }
.record-screen .exam-form .examdoc-dx-add-btn:first-child { order:1; }
.record-screen .exam-form .examdoc-dx-add-btn { font-size:12px; }
.record-screen .exam-form .examdoc-editable:not(.examdoc-dx-code):not(.examdoc-dx-name),.record-screen .exam-form .examdoc-editable-list { padding:0;min-height:23px; }
.record-screen .exam-form .row-number { font-size:12px; }
.record-screen .exam-form .examdoc-f-optional { border:0; }
}
@media screen and (min-width:1000px) {
.record-screen .page-header #edit-title { padding:0;line-height:inherit; }
.record-screen .page-header #head-status .badge { line-height:1.45; }
}

@media screen{.record-screen .patient-heading::after{content:"";width:17px;height:17px;background:var(--muted);mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%228%22%20r%3D%224%22/%3E%3Cpath%20d%3D%22M4%2021v-2a8%208%200%200%201%2016%200v2%22/%3E%3C/svg%3E") center/contain no-repeat}.record-screen .brand-symbol{position:relative}.record-screen .brand-symbol svg{visibility:hidden}.record-screen .brand-symbol::before{content:"";position:absolute;width:24px;height:24px;background:currentColor;mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%2010v4m4-7v10m5-14v18m5-14v10m4-7v4%22/%3E%3C/svg%3E") center/contain no-repeat}}
@media screen and (min-width:1000px) {
.record-screen #skip-back { border-radius:7px 0 0 7px; }
.record-screen #skip-fwd { margin-left:-10px;border-radius:0 7px 7px 0;border-left:0; }
}

@media screen{.record-screen #exam-save>.icon{display:none}.record-screen #exam-save::before{content:"";width:16px;height:16px;background:currentColor;mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M19%2021H5a2%202%200%200%201-2-2V5a2%202%200%200%201%202-2h12l4%204v12a2%202%200%200%201-2%202Z%22/%3E%3Cpath%20d%3D%22M17%2021v-8H7v8M7%203v5h8%22/%3E%3C/svg%3E") center/contain no-repeat}}
@media screen and (min-width:1000px){.record-screen .page-header .head-title-row{margin-top:0}.record-screen .patient-heading h2{line-height:22.5px}}
@media screen and (min-width:1000px){.record-screen .back-link .icon{width:16px;height:16px}}
/* The flex card must give live controls a measurable waveform width. */
@media screen and (min-width:1000px){
.record-screen { min-height:min(1000px,100dvh); }
.record-screen .audio-panel > .audio-controls { width:100%;min-width:0; }
.record-screen .header-actions,.record-screen .header-actions .exam-toolbar { flex-wrap:nowrap; }
/* Tester reference tools retain the full-width playback strip used by their scroll/hotkey scenarios. */
.record-screen.tester-tab .audio-panel { margin:0;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:16px 24px 10px;box-shadow:none; }
.record-screen.tester-tab .audio-panel .player { width:100%; }
}

@media screen {
.record-screen .exam-form .edit-section-text { text-decoration:none; }
.record-screen .skip { gap:3px; }
.record-screen .skip svg { width:17px;height:17px; }
}

/* Та же высота заголовка, что у списка и профиля; длинный текст может переноситься. */
.record-screen .page-header { min-height: var(--page-heading-height); }
@media screen and (max-width: 700px) {
  .record-screen .page-header { padding: 16px; gap: 12px; }
  .record-screen .page-header h1 { font-size: 22px; line-height: 1.25; }
  .record-screen .page-header .head-title-row {
    display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px 12px; margin-top: 0;
  }
  .record-screen .page-header h1 { grid-column: 1 / -1; }
  .record-screen .page-header #edit-title { padding: 0; }
  .record-screen .page-header #head-status { grid-column: 1; grid-row: 2; }
  .record-screen .page-header #edit-note {
    grid-column: 2; grid-row: 2; font-size: 12px; min-height: 0; flex-basis: auto;
  }
  .record-screen .header-actions { padding-top: 0; }
}

/* Правки открытой записи 03.10: стабильные поля и раскрытие транскрипции в потоке. */
@media screen {
.record-screen .page-header .inline-record-input,
.record-screen .page-header .inline-record-input:focus,
.record-screen #edit-title:focus, .record-screen #edit-note:focus {
  outline:none; box-shadow:none; background:transparent;
}
.record-screen .record-tabs-row { width:100%; height:auto; background:none; border:0; padding:0; gap:12px; flex-wrap:wrap; align-items:center; }
.record-screen .record-result-title { margin:0 auto 0 0; font-size:14px; line-height:24px; font-weight:500; }
.record-screen .record-tabs-row #choose-template { min-height:32px; padding:5px 9px; border-radius:6px; font-size:12px; font-weight:500; }
.record-screen .document-tools:empty { display:none; }
.record-screen #transcript-drawer {
  display:grid; grid-template-rows:0fr; transition:grid-template-rows 280ms ease;
  position:static; margin:0; padding:0; border:0; border-radius:0; width:100%; max-width:none;
  height:auto; min-height:0; max-height:none; overflow:hidden; outline:none;
}
.record-screen #transcript-drawer { order:1; flex-shrink:0; }
.record-screen .workspace > .layout { order:2; }
.record-screen #transcript-drawer.is-open { grid-template-rows:1fr; }
.record-screen .transcript-collapse { min-height:0; overflow:hidden; }
.record-screen .transcript-content { padding:18px 20px; border-bottom:1px solid var(--line); }
.record-screen #transcript-drawer #transcript { max-height:360px; overflow-y:auto; }
.record-screen .tagged-prose { cursor:text; }
}
@media (prefers-reduced-motion:reduce) {
.record-screen #transcript-drawer { transition:none; }
}

/* Номер рядом с названием; дата в строке статуса (решение 2026-10-03-record-month-number.md): шрифт и цвет
   строки сведений макета design/air/record.html (.page-header .head-meta) */
.page-header .head-num { font-size: 13px; line-height: 18px; color: #536780; font-variant-numeric: tabular-nums; white-space: nowrap; }
@media screen and (min-width:1000px) {
  /* строка статуса: статус · дата · заметка — та же вторая строка шапки, высота не меняется */
  .record-screen .page-header .head-title-row { grid-template-columns:auto auto minmax(0,1fr); }
  .record-screen .page-header .head-num { grid-column:2;grid-row:2;align-self:center; }
  .record-screen .page-header #edit-note { grid-column:3; }
}

.page-header #record-title { display:flex;align-items:baseline;gap:12px;min-width:0; }
.page-header .head-number { font-size:12px;line-height:18px;font-weight:400;color:var(--muted);white-space:nowrap; }
.page-header .head-date-short { display:none; }
@media screen and (max-width:700px) {
  .record-screen .page-header .head-title-row { grid-template-columns:auto minmax(0,auto) minmax(0,1fr); }
  .record-screen .page-header .head-num { grid-column:2;grid-row:2;min-width:0;overflow:hidden;text-overflow:ellipsis; }
  .record-screen .page-header .head-date-full { display:none; }
  .record-screen .page-header .head-date-short { display:inline; }
  .record-screen .page-header #edit-note { grid-column:3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
  .record-screen .page-header #edit-title { min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
  .record-screen .page-header .head-number { flex:none; }
}
/* Лекарства: жёлтый оттенок 48–55°, отдельно от общих предупреждений. Рамка тега — «Ожидание»
   docs/design-system.md (#e8d2a5, e2e test_record_drug_tags). Телефон: текст и фон тоже «Ожидание» (#8c5c15 / #fff7e8),
   как в эскизе design/mobile-tabs2 (.warn); компьютер — прежние. */
@media screen {
  .record-screen .drug-tag.drug-yellow, .record-screen .review .drug-card.caution {
    --drug-yellow: #75640f;
    --drug-yellow-bg: #fffbea;
    --drug-yellow-border: var(--amber-border);
    --drug-yellow-solid: #d4ba35;
    --drug-yellow-button: #fff4c3;
    --drug-yellow-symbol: #fff8d8;
    --mk-yellow: var(--drug-yellow);
    --mk-yellow-bg: var(--drug-yellow-bg);
  }
  .record-screen .exam-form .drug-tag.drug-yellow {
    background: var(--drug-yellow-bg); border-color: var(--drug-yellow-border); color: var(--drug-yellow);
  }
  .record-screen .exam-form .drug-tag.drug-yellow .dose-trigger { background: var(--drug-yellow-button); }
  /* рамка жёлтой карточки — #e4d1ab (bright-1-record, выше), e2e test_record_opinion */
  .record-screen .review .drug-card.caution::before { background: var(--drug-yellow-solid); }
  .record-screen .review .caution .drug-status { color: var(--drug-yellow); }
  .record-screen .review .caution .result-symbol {
    background: var(--drug-yellow-symbol); color: var(--drug-yellow);
  }
}
@media screen and (max-width: 999px) {
  .record-screen .drug-tag.drug-yellow, .record-screen .review .drug-card.caution {
    --drug-yellow: var(--amber);
    --drug-yellow-bg: var(--amber-bg);
  }
}

/* Телефон, 2-42-264 (решение 02.10, п. 4, docs/decisions/2026-09-28-record-screen-states.md; эскизы
   design/patient-found/patient-found-mobile.html и start-site-ios.html). До 999 px: сверху закреплённая шапка
   сайта с меню (app.css, .site-header); логотип, «Все записи» и профиль из левой панели уходят в неё.
   Порядок: шапка записи, звуковая дорожка, «Данные пациента», вкладки и документ, проверка. Плеер
   не закреплён (эскиз: закреплена шапка сайта). Поля пациента выглядят как прежде. Компьютер не меняется. */
.record-screen .start-caption { display: none; }
@media screen and (min-width: 1000px) {
  .record-prestart .start-recorder, .record-prestart .start-actions { display: contents; }
}
@media screen and (max-width: 999px) {
  .record-screen > .site-header { display: block; }
  .screen-result .record-screen { padding-top: 0; }
  .record-screen::before { display: none; }
  .record-screen .sidebar > .brand, .record-screen .sidebar > .back-link,
  .record-screen .sidebar > .sidebar-footer { display: none; }
  .record-screen .page-header { order: 0; }
  .record-screen .audio-panel { order: 1; position: static; top: auto; }
  .record-screen .sidebar { order: 2; display: block; padding: 20px 16px 28px; border: 0; border-top: 1px solid var(--line);
    background: #fff; overflow: visible; }
  .record-screen .sidebar:has(> .patient-heading[hidden]) { display: none; }
  .record-screen .sidebar > .patient-heading { margin: 0 0 16px; padding: 0; border: 0; }
  .record-screen .sidebar > .patient-heading h2 { font-size: 16px; }
  .record-screen .sidebar > .patient-heading::after { display: none; }
  .record-screen .workspace { order: 3; }
  .record-screen #transcript-drawer { order: 4; }
  .record-screen .review { order: 5; }

  /* Новая запись до старта (эскиз start-site-ios.html): круглая кнопка записи с подписью, «Добавить файл»
     и шаблон одной карточкой; заголовка, полей, дорожки и счётчика нет (решения 02.10). */
  .record-prestart .record-screen, .record-prestart .record-screen.no-review { display: flex; flex-direction: column;
    height: auto; min-height: 100dvh; background: #fff; }
  .record-prestart .record-screen .sidebar { display: none; }
  .record-prestart .record-screen .audio-panel { flex: 1 0 auto; display: flex; flex-direction: column; margin: 0;
    padding: 0 24px; border: 0; border-radius: 0; box-shadow: none; background: #fff; }
  .record-prestart .record-screen .audio-panel > .audio-controls { display: flex; flex: 1 0 auto; flex-direction: column;
    align-items: stretch; height: auto; gap: 0; }
  .record-prestart .start-recorder { display: flex; flex-direction: column; align-items: center; margin: auto 0;
    padding: 40px 0 52px; }
  .record-prestart .record-screen #start-record { position: relative; flex: none; width: 144px; height: 144px; min-height: 144px;
    padding: 0; border: 2px solid #8e8e93; border-radius: 50%; background: #fff; box-shadow: none; outline-offset: 5px; }
  .record-prestart .record-screen #start-record::before { content: ""; position: absolute; inset: 6px; border-radius: 50%;
    background: #ff3b30; }
  .record-prestart .record-screen #start-record:hover:not(:disabled) { background: #fff; }
  .record-prestart .record-screen #start-record:hover:not(:disabled)::before { background: #f43229; }
  .record-prestart .record-screen #start-record:focus-visible { outline-color: #ff3b30; }
  .record-prestart .record-screen #start-record > .icon { display: none; }
  .record-prestart .record-screen #start-record > span { position: absolute; width: 1px; height: 1px; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap; }
  .record-prestart .start-caption { display: block; margin: 24px 0 0; font-size: 20px; line-height: 1.5; font-weight: 400;
    color: #000; cursor: pointer; touch-action: manipulation; }
  .record-prestart .start-actions { position: relative; display: grid; gap: 12px; margin-bottom: 44px; overflow: hidden;
    border-radius: 16px; background: #fff; box-shadow: 0 0 0 1px var(--line); }
  .record-prestart .start-actions::after { content: ""; position: absolute; top: 86px; left: 16px; right: 16px; height: 1px;
    background: var(--line); pointer-events: none; }
  .record-prestart .start-actions > .live-template-slot { order: 1; display: block; }
  .record-prestart .record-screen .start-actions #start-file { order: 0; display: flex; width: 100%; height: 80px; min-height: 80px;
    margin: 0; padding: 0; gap: 10px; justify-content: center; border: 0; border-radius: 0; background: #fff; color: var(--accent);
    font-size: 20px; font-weight: 400; }
  .record-prestart .record-screen .start-actions #start-file .icon { width: 19px; height: 19px; }
  .record-prestart .record-screen .start-actions #start-file:hover:not(:disabled),
  .record-prestart .record-screen .start-actions #choose-template:hover:not(:disabled) { background: #f7f9ff; }
  .record-prestart .record-screen .start-actions #choose-template { display: flex; width: 100%; height: 44px; min-height: 44px;
    margin: 0; padding: 0; gap: 4px; justify-content: center; border: 0; border-radius: 0; background: #fff; color: var(--accent);
    font-size: 13px; font-weight: 400; }
  .record-prestart .record-screen .workspace { order: 2; flex: none; border: 0; }
  .record-prestart .record-screen .document-content { padding: 0 24px; }
}
/* Поля пациента из разговора (решение 02.10, эскиз design/patient-found/patient-found.html): уверены —
   светло-зелёное, сомневаемся — светло-жёлтое со сплошной рамкой; правка врача — обычное поле (patient.js) */
.record-screen .sidebar .patient-field input[data-found="high"]:not(:disabled) {
  background: var(--green-bg); border: 1px solid var(--green-border); }
.record-screen .sidebar .patient-field input[data-found="low"]:not(:disabled) {
  background: var(--amber-bg); border: 1px solid var(--amber-border); }

/* ===== Готовый документ (2-26-312-1): эскизы design/desktop-main/main-4.html (state=done) и
   design/mobile-tabs2/mobile-tabs2.html; узлы раскладывает result.js (arrange). Только data-view=done без блока
   ошибки — остальные состояния экрана записи не меняются. Компьютер: шапка «Записей» сверху, белая строка
   управления (плеер и кнопки), колонки «пациент — документ — проверка». Телефон: карточки на сером фоне. ===== */
.wave-slot { display: contents; }
.screen-result .record-app-bar { display: none; }
.screen-result[data-view=done]:not(.has-record-error) .record-screen .page-header,
.screen-result[data-view=done]:not(.has-record-error) .record-screen .header-actions:empty,
.screen-result[data-view=done]:not(.has-record-error) .record-screen .document-tools:empty,
.screen-result[data-view=done]:not(.has-record-error) .record-screen .title-block > .record-meta,
.screen-result[data-view=done]:not(.has-record-error) .record-screen #close-transcript,
.screen-result[data-view=done]:not(.has-record-error) .record-screen #transcript-drawer:not(.is-open),
.screen-result[data-view=done]:not(.has-record-error) .record-screen .workspace:has(> #transcript-drawer.is-open) > .layout {
  display: none; }
.screen-result[data-view=done]:not(.has-record-error) .record-screen .sidebar > .brand,
.screen-result[data-view=done]:not(.has-record-error) .record-screen .sidebar > .back-link,
.screen-result[data-view=done]:not(.has-record-error) .record-screen .sidebar > .sidebar-footer,
.screen-result[data-view=done]:not(.has-record-error) .record-screen.no-patient > .sidebar { display: none; }

/* блок над документом: заголовок, бейдж статуса, строка сведений (номер, дата, заметка с чертой слева) */
.screen-result[data-view=done]:not(.has-record-error) .workspace > .title-block { flex: none; display: flex; align-items: center;
  gap: 14px; min-height: 64px; padding: 8px 24px; border-bottom: 1px solid var(--line); background: #fff; min-width: 0; }
.screen-result[data-view=done]:not(.has-record-error) .title-block .head-title-row { display: flex; flex-wrap: nowrap; align-items: center; gap: 14px;
  flex: 0 1 auto; max-width: 62%; min-width: 0; margin: 0; }
.screen-result[data-view=done]:not(.has-record-error) .title-block .head-status .progress[aria-valuenow="100"] { display: none; }
.screen-result[data-view=done]:not(.has-record-error) .title-block h1 { margin: 0; min-width: 0; font-size: 18px; line-height: 1.3;
  font-weight: 500; letter-spacing: -.3px; color: var(--ink); }
.screen-result[data-view=done]:not(.has-record-error) .title-block #edit-title,
.screen-result[data-view=done]:not(.has-record-error) .title-block #edit-note { font: inherit; color: inherit; letter-spacing: inherit;
  background: transparent; border: 0; padding: 0; text-align: left; cursor: text; }
.screen-result[data-view=done]:not(.has-record-error) .title-block #edit-title { display: block; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.screen-result[data-view=done]:not(.has-record-error) .title-block .inline-record-input { font: inherit; min-width: 0;
  width: min(100%, 420px); padding: 4px 8px; border: 1px solid #72869d; border-radius: 6px; background: #fff; color: inherit; }
.screen-result[data-view=done]:not(.has-record-error) .done-meta { display: flex; align-items: center; gap: 7px; flex: 1 1 0; min-width: 0;
  font-size: 12px; line-height: 18px; color: var(--muted); }
.screen-result[data-view=done]:not(.has-record-error) .done-meta .head-number { flex: none; white-space: nowrap; }
.screen-result[data-view=done]:not(.has-record-error) .done-meta .head-num { flex: none; white-space: nowrap; }
.screen-result[data-view=done]:not(.has-record-error) .done-meta .head-number:not(:empty) + .head-num::before { content: "· "; }
.screen-result[data-view=done]:not(.has-record-error) .done-meta .head-date-short { display: none; }
.screen-result[data-view=done]:not(.has-record-error) .done-meta #edit-note { min-width: 0; margin-left: 6px; padding-left: 12px;
  border-left: 1px solid var(--line); color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* переключатель «Краткое содержание | Транскрипция · N реплик» */
.screen-result[data-view=done]:not(.has-record-error) .document-toolbar { min-height: 60px; padding: 9px 17px; gap: 12px; }
.screen-result[data-view=done]:not(.has-record-error) .record-tabs-row { align-self: center; display: flex; align-items: stretch; justify-content: flex-start;
  flex: none; width: auto; min-width: 0;
  gap: 2px; height: 38px; padding: 3px; background: #f0f2f6; border: 1px solid #e3e7ed; border-radius: 8px; overflow: visible; }
.screen-result[data-view=done]:not(.has-record-error) .record-tabs-row .tabs { display: contents; }
.screen-result[data-view=done]:not(.has-record-error) .record-tabs-row .tab { height: 30px; min-height: 0; padding: 4px 10px;
  gap: 7px; border: 0; border-radius: 5px; background: none; box-shadow: none; color: rgb(88, 101, 120); font-size: 12px;
  font-weight: 400; line-height: 1.5; white-space: nowrap; margin: 0; }
.screen-result[data-view=done]:not(.has-record-error) .record-tabs-row .tab .icon { width: 16px; height: 16px; }
.screen-result[data-view=done]:not(.has-record-error) .record-tabs-row:not(:has(.transcript-toggle[aria-expanded="true"])) #tab-summary,
.screen-result[data-view=done]:not(.has-record-error) .record-tabs-row .transcript-toggle[aria-expanded="true"] {
  background: #fff; color: var(--ink); font-weight: 500; box-shadow: 0 1px 3px rgba(32, 39, 53, .075); }
.screen-result[data-view=done]:not(.has-record-error) .record-tabs-row:not(:has(.transcript-toggle[aria-expanded="true"])) #tab-summary .icon,
.screen-result[data-view=done]:not(.has-record-error) .record-tabs-row .transcript-toggle[aria-expanded="true"] .icon { color: var(--accent); }
.screen-result[data-view=done]:not(.has-record-error) .document-tools #choose-template { min-height: 32px; height: 32px;
  padding: 5px 9px; border-radius: 6px; border: 1px solid rgb(203, 210, 221); background: #fff; color: var(--ink); font-size: 12px; }
/* транскрипция — в карточке документа вместо листа */
.screen-result[data-view=done]:not(.has-record-error) .workspace > #transcript-drawer.is-open { position: static; flex: 1;
  width: auto; max-width: none; height: auto; max-height: none; min-height: 0; padding: 16px 20px; border: 0; border-radius: 0;
  box-shadow: none; z-index: auto; }
/* компьютер: список реплик — до низа карточки, без постоянной высоты 360 px (иначе низ списка обрезала карточка);
   на телефоне остаётся список 360 px с прокруткой */
@media (min-width: 1000px) {
.screen-result[data-view=done]:not(.has-record-error) .workspace > #transcript-drawer.is-open .transcript-collapse { display: flex; flex-direction: column; }
.screen-result[data-view=done]:not(.has-record-error) .workspace > #transcript-drawer.is-open .transcript-content { flex: 1; min-height: 0;
  display: flex; flex-direction: column; padding: 0; border-bottom: 0; }
.screen-result[data-view=done]:not(.has-record-error) .workspace > #transcript-drawer.is-open #transcript { max-height: none; }
}

/* кнопки: «Скопировать» после нажатия, разделитель, «На главный экран» */
.screen-result[data-view=done]:not(.has-record-error) #copy-doc,
.screen-result[data-view=done]:not(.has-record-error) #record-home { min-height: 40px; height: 40px; padding: 9px 16px; gap: 8px;
  border-radius: 6px; border: 1px solid #9fb7d8; background: #fff; color: var(--side-ink); font-size: 13px; font-weight: 500;
  white-space: nowrap; text-decoration: none; }
.screen-result[data-view=done]:not(.has-record-error) #copy-doc.is-done { color: var(--green); border-color: var(--green-border);
  background: var(--green-bg); }
.screen-result .toast { position: fixed; z-index: 100; left: 50%; bottom: 24px; transform: translateX(-50%); padding: 14px 22px;
  border-radius: 9px; background: #1f3554; color: #fff; font-size: 14px; line-height: 1.4; white-space: nowrap; }

@media screen and (min-width: 1000px) {
  .screen-result[data-view=done]:not(.has-record-error) .record-app-bar { display: contents; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen,
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.no-review,
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.tester-tab {
    grid-template-columns: 280px minmax(0, 1fr) 316px 0; grid-template-rows: auto minmax(0, 1fr); column-gap: 20px;
    height: calc(100dvh - 76px); min-height: 724px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.no-review,
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.tester-tab { grid-template-columns: 280px minmax(0, 1fr) 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .sidebar { grid-column: 1; grid-row: 2; padding: 20px 24px;
    background: #fff; }
  /* без полей пациента (шаблон без разделов) пустой белой колонки нет: документ от левого края с отступом 20 */
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.no-patient { grid-template-columns: 0 minmax(0, 1fr) 316px 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.no-patient:is(.no-review, .tester-tab) {
    grid-template-columns: 0 minmax(0, 1fr) 0; }
  /* строка управления: плеер 60 px в рамке и кнопки справа */
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl { grid-column: 1 / -1; grid-row: 1; display: flex;
    align-items: center; gap: 24px; min-height: 109px; padding: 0 36px; background: #fff; border-bottom: 1px solid var(--line);
    min-width: 0; }
  /* плеер и кнопки — всегда одной строкой (правка владельца 07.10, решение 2026-10-07-record-buttons-one-row.md):
     места мало — кнопки по очереди становятся значками (data-compact, result.js fitActions), затем сжимается и
     скрывается дорожка, затем значками кнопки тестера (4) и «Сохранено …» (5). Строка не переносится никогда */
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl { flex-wrap: nowrap; padding-block: 12px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .audio-panel { flex: 1 1 400px; min-width: auto; height: 60px; margin: 0;
    display: flex; align-items: center; padding: 0 14px 0 9px; border: 1px solid #d4dae4; border-radius: 12px; background: #fff;
    box-shadow: 0 2px 6px rgba(32, 39, 53, .02); }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .player { flex: 1; min-width: 0; flex-wrap: nowrap; gap: 10px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .play { flex: none; width: 42px; height: 42px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .skip { flex: none; display: inline-flex; width: 49px; height: 38px;
    padding: 0 6px; gap: 3px; justify-content: center; border: 1px solid #d5dce7; background: #f9fafc; color: rgb(83, 96, 120);
    font-size: 12px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl #skip-back { border-radius: 7px 0 0 7px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl #skip-fwd { margin-left: -10px; border-left: 0; border-radius: 0 7px 7px 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .time { flex: none; font-size: 13px; white-space: nowrap;
    font-variant-numeric: tabular-nums; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .time b { font-weight: 400; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .time span { color: var(--muted); }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .wave-slot { order: 1; display: flex; align-items: center;
    flex: 1 1 0; min-width: 0; contain: inline-size; } /* ширина дорожки не держит карточку: та сжимается под кнопки */
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .wave { flex: none; order: 0; max-width: 100%; min-width: 0;
    height: 38px; margin: 0; gap: 3px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .wave .b { flex: 0 0 3px; width: 3px; border-radius: 1.4px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .legend { order: 2; flex: none; display: flex;
    flex-direction: column; gap: 0; font-size: 12px; line-height: 18px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .header-actions { flex: none; flex-wrap: nowrap; justify-content: flex-end;
    min-width: 0; padding: 0; gap: 8px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .header-actions .exam-toolbar { flex-wrap: nowrap; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #edit-actions .btn,
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .btn-delete-record { white-space: nowrap; }
  /* кнопка значком: та же кнопка без подписи, квадрат 40 px; название — в title и aria-label (result.js) */
  #app.screen-result[data-view=done]:not(.has-record-error) .record-ctl[data-compact]:not([data-compact="0"]) #delete-record,
  #app.screen-result[data-view=done]:not(.has-record-error) .record-ctl[data-compact]:not([data-compact="0"], [data-compact="1"]) #copy-doc,
  #app.screen-result[data-view=done]:not(.has-record-error) .record-ctl:is([data-compact="3"], [data-compact="4"], [data-compact="5"])
    :is(#exam-save, #exam-unconfirm, #exam-print),
  #app.screen-result[data-view=done]:not(.has-record-error) .record-ctl:is([data-compact="4"], [data-compact="5"])
    :is(#record-tech-toggle, .record-actions > summary) {
    width: 40px; min-width: 40px; padding: 0; gap: 0; justify-content: center; font-size: 0; }
  /* кнопки тестера значком: часы (как на телефоне) и «⋯»; подпись и стрелка скрыты */
  .record-actions > summary > .icon { display: none; }
  #app.screen-result[data-view=done]:not(.has-record-error) .record-ctl:is([data-compact="4"], [data-compact="5"]) #record-tech-toggle .tech-clock {
    display: block; width: 20px; height: 20px; }
  #app.screen-result[data-view=done]:not(.has-record-error) .record-ctl:is([data-compact="4"], [data-compact="5"]) #record-tech-toggle > :not(.tech-clock) {
    display: none; }
  #app.screen-result[data-view=done]:not(.has-record-error) .record-ctl:is([data-compact="4"], [data-compact="5"]) .record-actions > summary > .icon {
    display: block; width: 20px; height: 20px; }
  /* надпись слева от кнопок компактно (шаг 5): «Сохранено …» — галочкой, дата в подсказке (result.js); пояснение,
     почему сохранить нельзя, и «есть несохранённые правки» — тот же текст с переносом по словам, не шире 230 px
     (вместе с «Сохранено» не бывают) */
  #app.screen-result[data-view=done]:not(.has-record-error) .record-ctl[data-compact="5"] #exam-confirmed { gap: 0; font-size: 0; }
  #app.screen-result[data-view=done]:not(.has-record-error) .record-ctl[data-compact="5"] :is(#document-hint, #autosave-state) {
    max-width: 230px; line-height: 16px; }
  /* колонки: документ и проверка — карточки */
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .workspace { grid-column: 2; grid-row: 2; margin: 14px 0 20px;
    border: 1px solid rgb(205, 213, 224); border-radius: 12px; box-shadow: 0 3px 10px rgba(32, 39, 53, .02); }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .review { grid-column: 3; grid-row: 2; margin: 14px 0 20px;
    padding: 0 20px 20px; border: 1px solid rgb(205, 213, 224); border-radius: 12px; background: #fff; }
}
/* средние окна компьютера (1000–1280 px, 2-26-347, 2-26-360): колонки уже; строка сведений над документом переносится под
   заголовок, а не обрезается краем карточки. Кнопки — в строке плеера, как на широком окне (2-26-347-2) */
@media screen and (min-width: 1000px) and (max-width: 1280px) {
  .screen-result[data-view=done]:not(.has-record-error) .record-screen,
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.no-review,
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.tester-tab { grid-template-columns: 240px minmax(0, 1fr) 280px 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.no-review,
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.tester-tab { grid-template-columns: 240px minmax(0, 1fr) 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.no-patient { grid-template-columns: 0 minmax(0, 1fr) 280px 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen.no-patient:is(.no-review, .tester-tab) {
    grid-template-columns: 0 minmax(0, 1fr) 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .sidebar { padding-left: 18px; padding-right: 18px; }
  .screen-result[data-view=done]:not(.has-record-error) .workspace > .title-block { flex-wrap: wrap; row-gap: 2px; }
  .screen-result[data-view=done]:not(.has-record-error) .title-block .head-title-row { max-width: 100%; }
  .screen-result[data-view=done]:not(.has-record-error) .done-meta { flex: 1 1 100%; flex-wrap: wrap; }
  .screen-result[data-view=done]:not(.has-record-error) .document-toolbar { flex-wrap: wrap; }
}

@media screen and (max-width: 999px) {
  .screen-result[data-view=done]:not(.has-record-error) .record-screen { background: var(--canvas); padding-bottom: 16px; }
  /* «Назад» вместо меню: без рамки, приглушённая */
  .screen-result[data-view=done]:not(.has-record-error) .site-header .menu-toggle[hidden] { display: none; }
  .screen-result[data-view=done]:not(.has-record-error) .site-header #record-back { border: 0; background: none; color: var(--muted);
    box-shadow: none; }
  .screen-result[data-view=done]:not(.has-record-error) .site-header #record-back .icon { width: 22px; height: 22px; }
  /* строка управления: карточка плеера на белой полосе */
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl { order: 1; padding: 14px 16px; background: #fff;
    border-bottom: 1px solid var(--line); }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .audio-panel { position: static; margin: 0; display: flex; flex-wrap: wrap;
    align-items: center; gap: 6px 8px; min-height: 88px; padding: 10px 10px 8px; border: 1px solid #d4dae4; border-radius: 12px;
    background: #fff; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .audio-panel::after { content: ""; order: 4; flex: 0 0 100%; height: 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .player { display: contents; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .play { order: 1; flex: none; width: 44px; height: 44px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .skip { display: none; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .wave-slot { order: 2; display: flex; align-items: center;
    flex: 1 1 0; min-width: 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .wave { flex: none; max-width: 100%; height: 40px; margin: 0; gap: 3px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .wave .b { flex: 0 0 3px; width: 3px; border-radius: 1.4px; }
  /* панель действий сохранения: кнопки в строке плеера, подсказка и «несохранённые правки» — строкой под временем */
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .audio-panel > .exam-toolbar { display: contents; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #edit-actions { order: 3; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #exam-confirmed { display: none; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #document-hint { order: 7; flex: 0 0 100%; margin: 0; font-size: 12px; line-height: 16px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #autosave-state[hidden] { display: none; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #edit-actions { display: flex; gap: 6px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #edit-actions .btn { width: 44px; height: 44px;
    min-height: 44px; padding: 0; justify-content: center; gap: 0; font-size: 0; border-radius: 10px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #edit-actions .btn .icon { width: 20px; height: 20px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .time { order: 5; margin-right: auto; font-size: 13px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .time b { font-weight: 400; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .time span { color: var(--muted); }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .player-wait { order: 5; font-size: 12px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .legend { order: 6; flex: none; margin-left: auto; font-size: 12px; }
  /* карточки: данные пациента, документ, проверка */
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .sidebar,
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .workspace,
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .review { margin: 14px 16px 0; border: 1px solid #dfe4ec;
    border-radius: 14px; background: #fff; overflow: hidden; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .sidebar { padding: 16px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .sidebar > .patient-heading::after { display: block; }
  .screen-result[data-view=done]:not(.has-record-error) .record-screen .review { padding: 0 16px 16px; }
  .screen-result[data-view=done]:not(.has-record-error) .sidebar .patient-grid { display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 10px; }
  .screen-result[data-view=done]:not(.has-record-error) .sidebar .patient-field[data-key=surname] { grid-column: 1; grid-row: 1; }
  .screen-result[data-view=done]:not(.has-record-error) .sidebar .patient-field[data-key=first_name] { grid-column: 1; grid-row: 2; }
  .screen-result[data-view=done]:not(.has-record-error) .sidebar .patient-field[data-key=patronymic] { grid-column: 1; grid-row: 3; }
  .screen-result[data-view=done]:not(.has-record-error) .sidebar .patient-field[data-key=iin] { grid-column: 2; grid-row: 1; }
  .screen-result[data-view=done]:not(.has-record-error) .sidebar .patient-field[data-key=birth_date] { grid-column: 2; grid-row: 2; }
  .screen-result[data-view=done]:not(.has-record-error) .sidebar .patient-field[data-key=phone] { grid-column: 2; grid-row: 3; }
  .screen-result[data-view=done]:not(.has-record-error) .sidebar .patient-field input { height: 44px; font-size: 16px; }
  .screen-result[data-view=done]:not(.has-record-error) .workspace > .title-block { display: block; padding: 16px; min-height: 0; }
  .screen-result[data-view=done]:not(.has-record-error) .title-block .head-title-row { max-width: none; }
  .screen-result[data-view=done]:not(.has-record-error) .title-block .head-title-row { justify-content: space-between; gap: 10px; }
  .screen-result[data-view=done]:not(.has-record-error) .title-block h1 { font-size: 20px; }
  .screen-result[data-view=done]:not(.has-record-error) .title-block #choose-template { flex: none; min-height: 44px; height: 44px;
    min-width: 74px; margin: 0; padding: 0 10px; border-radius: 10px; border: 1px solid rgb(203, 210, 221); background: #fff;
    color: var(--ink); font-size: 13px; }
  .screen-result[data-view=done]:not(.has-record-error) .done-meta { flex-wrap: wrap; gap: 6px 7px; margin-top: 8px; }
  .screen-result[data-view=done]:not(.has-record-error) .done-meta .head-status { flex: none; }
  .screen-result[data-view=done]:not(.has-record-error) .done-meta #edit-note { flex: 1 1 96px; margin-left: 0; padding-left: 0; border-left: 0; }
  .screen-result[data-view=done]:not(.has-record-error) .document-toolbar { flex-wrap: nowrap; justify-content: space-between;
    padding: 12px 16px; gap: 8px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-tabs-row { flex: 0 1 280px; width: auto; height: 44px; min-width: 0;
    border-radius: 10px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-tabs-row .tab { flex: 1 1 0; height: auto; justify-content: center;
    font-size: 13px; border-radius: 8px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-tabs-row .tab .icon,
  .screen-result[data-view=done]:not(.has-record-error) .record-tabs-row .transcript-count { display: none; }
  .screen-result[data-view=done]:not(.has-record-error) .document-toolbar #copy-doc { flex: none; width: 44px; height: 44px;
    min-height: 44px; padding: 0; justify-content: center; gap: 0; border-radius: 10px; }
  .screen-result[data-view=done]:not(.has-record-error) .document-toolbar #copy-doc .copy-label { display: none; }
  .screen-result[data-view=done]:not(.has-record-error) .document-toolbar #copy-doc .icon { width: 20px; height: 20px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-bottom-actions { order: 6; display: flex; flex-wrap: wrap; gap: 8px;
    margin: 14px 16px 0; }
  .screen-result[data-view=done]:not(.has-record-error) .record-bottom-actions:empty { display: none; }
  .screen-result[data-view=done]:not(.has-record-error) .record-bottom-actions .btn-delete-record { min-height: 44px; }
}

/* ===== Идёт запись и «Распознаётся» (2-26-312-1): эскизы design/desktop-main/main-4.html (state=live/proc) и
   design/mobile-tabs2 (live/proc); узлы раскладывает result.js (arrange): сверху полоса .live-ctl — строка
   состояния .live-head и панель записи, под ней поля пациента и рабочая область. Шапка — как у готового
   документа. Селектор с #app — перекрывает правила прежних проб выше (там есть id в :is()). Блок ошибки
   (.has-record-error) не меняется. «Распознаётся» — строка этапа с полосой 0–100 % (решение 01.10,
   docs/decisions/2026-09-28-record-screen-states.md), подпись оформлена по эскизу. ===== */
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .page-header,
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar > .brand,
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar > .back-link,
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar > .sidebar-footer,
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .live-listen[hidden] { display: none; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl { display: flex; flex-direction: column;
  min-width: 0; background: #fff; border-bottom: 1px solid var(--line); }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head { display: flex; align-items: center;
  gap: 12px; min-width: 0; height: 44px; color: var(--muted); font-size: 13px; line-height: 1.5; white-space: nowrap; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head .record-meta { flex: none; margin: 0;
  gap: 7px; font-size: inherit; color: inherit; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head .live-sep { flex: none; width: 1px;
  height: 16px; background: var(--line); }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head .live-title { min-width: 0; overflow: hidden;
  text-overflow: ellipsis; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head .completion-dot { width: 7px; height: 7px;
  background: #ff3b30; animation: live-dot 1.2s ease-in-out infinite alternate; }
#app.live-paused[data-view=recording]:not(.has-record-error) .live-head .completion-dot { background: #e8a02b; animation: none; }
#app[data-view=processing]:not(.has-record-error) .live-head .completion-dot { background: var(--accent); animation: none; }
@keyframes live-dot { to { opacity: .35; } }
/* панель записи внутри полосы — без своей рамки и отступов */
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .audio-panel { position: static; margin: 0;
  padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; min-width: 0; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .audio-controls { display: flex;
  align-items: center; gap: 18px; height: 64px; min-width: 0; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-row { display: contents; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #play { flex: none; width: 42px; height: 42px;
  min-width: 42px; min-height: 42px; padding: 0; border: 0; background: var(--accent); color: #fff; box-shadow: 0 2px 5px #2563eb22; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #play:hover:not(:disabled) { background: var(--accent-dark); }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #play .icon { width: 18px; height: 18px; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .timecode { flex: none; min-width: 52px;
  font-size: 15px; font-variant-numeric: tabular-nums; color: var(--ink); }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .wave-wrap { flex: 1 1 0; min-width: 0;
  height: 44px; margin: 0; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-equalizer { width: 100%; height: 44px; gap: 3px; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-equalizer i { height: var(--bar); max-height: 100%; }
/* кнопки строки: вторичные — белые с рамкой, «Завершить» — синяя */
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl :is(#cancel-live, #finish-live, #add-live-file, .live-template-slot #choose-template) {
  flex: none; height: 40px; min-height: 40px; padding: 9px 16px; gap: 8px; border: 1px solid #cbd2dd; border-radius: 8px;
  background: #fff; color: #43516a; font-size: 13px; font-weight: 500; line-height: 1.5; white-space: nowrap; box-shadow: none; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl :is(#cancel-live, #add-live-file, .live-template-slot #choose-template):hover:not(:disabled) {
  background: var(--soft); }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .audio-controls #finish-live { padding: 9px 17px;
  border-color: var(--accent); background: var(--accent); color: #fff; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .audio-controls #finish-live:hover:not(:disabled) {
  border-color: var(--accent-dark); background: var(--accent-dark); }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #add-live-file { margin-left: 12px; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #add-live-file .icon { width: 16px; height: 16px; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-template-slot { flex: none; }
/* «Распознаётся»: на месте паузы — серый неактивный «play» (как у плеера на телефоне), остальных кнопок нет */
#app[data-view=processing]:not(.has-record-error) .live-ctl #play:disabled { background: var(--line); color: var(--muted);
  box-shadow: none; border: 0; }
#app[data-view=processing]:not(.has-record-error) .live-ctl :is(#cancel-live, #finish-live, #add-live-file, .live-template-slot) {
  visibility: hidden; position: absolute; }
/* заметка (#edit-note, head.js) — текстом в строке состояния, с чертой слева */
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head .record-meta #edit-note { min-width: 0;
  max-width: 320px; height: auto; min-height: 0; margin-left: 5px; padding: 0 0 0 12px; border: 0; border-left: 1px solid var(--line);
  border-radius: 0; background: none; box-shadow: none; color: inherit; font: inherit; overflow: hidden; text-overflow: ellipsis; }
/* рабочая область без своей карточки и тени листа */
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .document-content { background: none;
  box-shadow: none; }
/* пустая транскрипция */
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-listen { margin: 0; }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-listen-title { display: none; margin: 0;
  font-size: 15px; font-weight: 500; line-height: 1.5; color: var(--ink); }
#app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-listen .listen { margin: 0; padding: 14px 4px;
  font-size: 13px; line-height: 1.5; color: var(--muted); }
/* «Распознаётся» в рабочей области */
#app[data-view=processing]:not(.has-record-error) .live-processing .processing-status-label { font-size: 22px; font-weight: 600;
  line-height: 1.35; }
#app[data-view=processing]:not(.has-record-error) .live-processing .muted { font-size: 13px; line-height: 1.5; }
#app[data-view=processing]:not(.has-record-error) .live-processing .processing-copy { font-size: 15px; line-height: 1.5; }
#app[data-view=processing]:not(.has-record-error) .live-processing .processing-lines { gap: 22px; margin-top: 32px; }
#app[data-view=processing]:not(.has-record-error) .live-processing .processing-lines i { height: 12px; }

@media screen and (min-width: 1000px) {
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-app-bar { display: contents; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen {
    display: grid; grid-template-columns: 280px minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); column-gap: 0;
    height: calc(100dvh - 76px); min-height: 724px; padding: 0; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl { grid-column: 1 / -1; grid-row: 1;
    padding: 4px 36px; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar { grid-column: 1; grid-row: 2;
    display: flex; padding: 24px 24px 22px; background: #fff; border: 0; border-right: 1px solid #d4dae4; overflow: auto; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .workspace { grid-column: 2; grid-row: 2;
    margin: 0; padding: 24px 36px 32px; border: 0; border-radius: 0; background: var(--bg); box-shadow: none; overflow: auto; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .workspace > .layout { overflow: visible; }
  /* шаблон без полей пациента: левой колонки нет, рабочая область на всю ширину (как у готового документа) */
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen.no-patient { grid-template-columns: minmax(0, 1fr); }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen.no-patient > .sidebar { display: none; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen.no-patient .workspace { grid-column: 1; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen.no-patient .page-header,
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen.no-patient .audio-panel { grid-column: 1; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .document-content { padding: 0; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .document-content > .alerts:not(:empty) { margin-top: 0; }
  /* имена для анимации перехода (правила ::view-transition-* — main-screen.css) */
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl { view-transition-name: rec-ctl; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #play { view-transition-name: rec-main; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .timecode { view-transition-name: rec-timer; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .wave-wrap { view-transition-name: rec-eq; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-template-slot { view-transition-name: rec-tpl; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #add-live-file { view-transition-name: rec-file; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #cancel-live { view-transition-name: rec-cancel; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #finish-live { view-transition-name: rec-finish; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head { view-transition-name: rec-head; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar { view-transition-name: rec-pside; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .workspace { view-transition-name: rec-work; }
}

@media screen and (max-width: 999px) {
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen { display: flex; flex-direction: column;
    height: auto; min-height: 100dvh; padding: 0 0 28px; background: var(--canvas); }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen::before { content: none; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl { order: 1; gap: 10px; padding: 14px 16px 16px; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head { height: auto; font-size: 12px; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head .live-sep { height: 14px; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head .record-meta { flex-wrap: nowrap; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head .record-meta #edit-note { display: none; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-head .completion-dot { background: #e5484d; }
  #app.live-paused[data-view=recording]:not(.has-record-error) .live-head .completion-dot { background: #e8a02b; }
  #app[data-view=processing]:not(.has-record-error) .live-head .completion-dot { background: var(--accent); }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .audio-controls { display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px 8px; height: auto; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-row { display: flex; grid-column: 1 / -1;
    align-items: center; gap: 12px; height: 48px; min-width: 0; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #play { width: 44px; height: 44px;
    min-width: 44px; min-height: 44px; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .timecode { min-width: 46px; font-weight: 500; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .wave-wrap { order: 0; height: 36px; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-equalizer { height: 36px; }
  /* идущая запись — один приглушённый цвет (эскиз mobile-tabs2: #8c5c15 — «Ожидание» docs/design-system.md; правки владельца 06.10): роли ещё не
     разделены, а сдвиг ленты перекрашивал полосы на 17-й (синий → оранжевый) */
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-equalizer i,
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-equalizer i:nth-child(n+17) {
    background: #8c5c15; transition: height 70ms linear, background .45s, opacity .45s; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl :is(#cancel-live, #finish-live, #add-live-file, .live-template-slot #choose-template) {
    width: 100%; min-width: 0; height: auto; min-height: 44px; margin: 0; padding: 9px 12px; justify-content: center; font-size: 14px; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl :is(#cancel-live, #finish-live, #add-live-file, .live-template-slot) {
    grid-column: auto; grid-row: auto; min-width: 0; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #cancel-live { order: 1; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #finish-live { order: 2; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl #add-live-file { order: 3; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-template-slot { order: 4; display: flex; }
  /* длинное название шаблона: подпись с «· Шаблон» — многоточием, стрелка «⌄» видна всегда; отступы — как у прежней строки «· Шаблон ⌄» */
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-template-slot #choose-template::after {
    content: "\00a0⌄"; flex: none; margin-left: 0; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-template-slot #choose-template {
    display: flex; align-items: center; gap: 0; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-template-slot #choose-template > .tpl-label {
    min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl .live-template-slot #choose-template > .tpl-label::after {
    content: "· Шаблон"; margin-left: 6px; }
  /* карточки: поля пациента, транскрипция или «Распознаётся» */
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen :is(.sidebar, .workspace) {
    margin: 12px 16px 0; border: 1px solid #d4dae4; border-radius: 12px; background: #fff; overflow: visible; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar { order: 2; display: block;
    padding: 14px 14px 16px; }
  /* без полей пациента карточки нет */
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen.no-patient > .sidebar { display: none; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .workspace { order: 3; padding: 14px 14px 16px; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar .patient-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 10px; }
  /* как карточка готового документа: значок человека в заголовке, слева ФИО, справа ИИН, дата, телефон; номер карты — во всю ширину */
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar > .patient-heading::after { display: block; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar .patient-field[data-key=surname] { order: 0; grid-column: 1; grid-row: 1; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar .patient-field[data-key=first_name] { order: 0; grid-column: 1; grid-row: 2; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar .patient-field[data-key=patronymic] { order: 0; grid-column: 1; grid-row: 3; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar .patient-field[data-key=iin] { order: 0; grid-column: 2; grid-row: 1; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar .patient-field[data-key=birth_date] { order: 0; grid-column: 2; grid-row: 2; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar .patient-field[data-key=phone] { order: 0; grid-column: 2; grid-row: 3; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .sidebar .patient-field[data-key=card_number] { order: 0; grid-column: 1 / -1; grid-row: 4; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .document-content { padding: 0; gap: 12px; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .record-screen .document-content > .alerts:not(:empty) { margin-top: 0; }
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-listen-title { display: block; }
  /* скрытые кнопки «Распознаётся» на телефоне не занимают места и не дают горизонтальной прокрутки */
  #app[data-view=processing]:not(.has-record-error) .live-ctl :is(#cancel-live, #finish-live, #add-live-file, .live-template-slot) {
    display: none; }
  #app[data-view=processing]:not(.has-record-error) .record-screen .workspace { padding: 18px 16px; }
  #app[data-view=processing]:not(.has-record-error) .live-processing .processing-status-label { font-size: 20px; }
  #app[data-view=processing]:not(.has-record-error) .live-processing .processing-lines i { height: 11px; }
  #app[data-view=processing]:not(.has-record-error) .live-processing .processing-lines i:nth-child(6) { display: none; }
}

/* окно «Отменить запись?» (ui.js, choiceDialog с className: "danger") */
.choice-dialog.danger { padding: 20px 18px 16px; border-color: var(--red-border); border-radius: 14px;
  background: linear-gradient(var(--red-bg), #fff 70%); }
.choice-dialog.danger header { margin-bottom: 0; }
.choice-dialog.danger h2 { color: var(--red); }
.choice-dialog.danger p { margin: 8px 0 0; }
.choice-dialog.danger .modal-actions { display: grid; grid-auto-flow: column; justify-content: end; gap: 8px; margin-top: 20px; }
.choice-dialog.danger .btn-danger { border: 0; background: #c53046; color: #fff; }
.choice-dialog.danger .btn-danger:hover { background: #a82438; }
@media (max-width: 600px) {
  .choice-dialog.danger { padding: 20px 18px 16px; }
  .choice-dialog.danger .modal-actions { grid-auto-flow: row; grid-template-columns: 1fr; justify-content: stretch; }
  .choice-dialog.danger .btn { width: 100%; min-height: 44px; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) {
  #app:is([data-view=recording], [data-view=processing]) .live-head .completion-dot { animation: none; }
}

/* Тестер на телефоне (эскиз design/mobile-tabs2, T:93/T:102; правки владельца 06.10, чат 2-26-327): «Распознавание и
   время по шагам» — значок часов 44×44 у правого края шапки сайта (result.js, arrange), вид .btn.secondary эскиза;
   меню «Действия» на телефоне не показывается — тестирование с компьютера. Компьютер — подпись со стрелкой, как было. */
#record-tech-toggle .tech-clock { display: none; }
@media screen and (max-width: 999px) {
  .site-header-row > #record-tech-toggle { margin-left: auto; flex: none; display: inline-flex; align-items: center;
    justify-content: center; width: 44px; height: 44px; min-height: 44px; padding: 0; gap: 0; border: 1px solid #cbd2dd;
    border-radius: 8px; background: #fff; color: #43516a; box-shadow: none; }
  .site-header-row > #record-tech-toggle:active { background: #f7f8fa; border-color: #9ba7b9; }
  .site-header-row > #record-tech-toggle .tech-clock { display: block; width: 20px; height: 20px; flex: none; }
  .site-header-row > #record-tech-toggle > :not(.tech-clock) { display: none; }
  .record-tools .record-actions { display: none; }
  .record-tools:not(:has(#record-tech-toggle)) { display: none; }
}

/* Шапка «Транскрипции» готовой записи на телефоне (эскиз design/mobile-tabs2, T:76-80 и .docbody; правки владельца
   06.10): «Транскрипция разговора» 15/500, «Врач» и «Пациент» рядом под заголовком, линия-разделитель, меньше отступы.
   Компьютер — обёртка .transcript-head без своего вида. */
/* 07.10: шапка транскрипции, разделитель и обводка реплик — одинаковы на компьютере и телефоне */
.screen-result[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-head { display: block; padding: 8px 0 10px;
  margin-bottom: 10px; border-bottom: 1px solid #d7dce4; }
.screen-result[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-head #transcript-title { margin: 0;
  font-size: 15px; font-weight: 500; line-height: 1.5; }
.screen-result[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-head .speaker-tools:not([hidden]) { display: flex;
  flex-wrap: nowrap; gap: 12px; margin: 6px 0 0; font-size: 13px; color: #596272; }
.screen-result[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-head .speaker-tools label { gap: 5px;
  min-height: 0; font-size: 13px; }
.screen-result[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-head .speaker-tools input { margin: 0;
  accent-color: #2563eb; }
@media screen and (max-width: 999px) {
  .screen-result[data-view=done]:not(.has-record-error) .workspace > #transcript-drawer.is-open { padding: 4px 14px 14px; }
  .screen-result[data-view=done]:not(.has-record-error) .workspace > #transcript-drawer.is-open .transcript-content { padding: 0;
    border-bottom: 0; }
  .screen-result[data-view=done]:not(.has-record-error) .workspace > #transcript-drawer.is-open .transcript-panel { padding: 0; }
}

/* ===== Строка дорожки на телефоне — одна карточка на трёх этапах (эскиз design/mobile-tabs2, state=live|proc|done;
   правки владельца 06.10, чат 2-26-327). Узел .audio-panel один: во время записи и «Распознаётся» — в полосе .live-ctl,
   у готовой записи — в .record-ctl (result.js, arrange). Идёт запись: пауза · дорожка · время · «Отменить» ·
   «Завершить», под ними «Идёт запись»/«Пауза»; ниже карточки — «Добавить файл» и шаблон (.live-pair). «Распознаётся»:
   Play · дорожка · «Сохранить» и «Печать» серые неактивные (.proc-acts), под ними время и «Врач»/«Пациент». Готовая
   запись — те же кнопки активны в той же строке. «Завершить» — синяя, как в эскизе (в docs/design-system.md —
   красная; расхождение отмечено в запросе). Компьютер не меняется. ===== */
.proc-acts, .audio-controls > .live-foot, .live-pair { display: none; }
.proc-save-icon { display: block; width: 20px; height: 20px; background: currentColor;
  mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M19%2021H5a2%202%200%200%201-2-2V5a2%202%200%200%201%202-2h12l4%204v12a2%202%200%200%201-2%202Z%22/%3E%3Cpath%20d%3D%22M17%2021v-8H7v8M7%203v5h8%22/%3E%3C/svg%3E") center/contain no-repeat; }
@media screen and (max-width: 999px) {
  /* карточка (эскиз .player: рамка #d4dae4, радиус 12, поля 8 10 10, зазор 6) */
  #app:is([data-view=recording], [data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .audio-panel {
    position: static; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 88px; margin: 0;
    padding: 8px 10px 10px; border: 1px solid #d4dae4; border-radius: 12px; background: #fff; box-shadow: none;
    overflow-x: clip; } /* въезд «Отменить»/«Завершить» справа (rec-from-right) не расширяет страницу */
  #app:is([data-view=recording], [data-view=processing]):not(.has-record-error) .live-ctl > .live-head { display: none; }

  /* идёт запись */
  #app[data-view=recording]:not(.has-record-error) .live-ctl .audio-controls { display: flex; flex: 1 1 100%; flex-wrap: wrap;
    align-items: center; gap: 6px; height: auto; min-width: 0; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .live-row { display: contents; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl #play { order: 1; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .wave-wrap { order: 2; flex: 1 1 0; width: 0; min-width: 0;
    max-width: 213px; height: 44px; margin: 0 auto 0 0; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .live-equalizer { height: 44px; }
  #app.live-paused[data-view=recording]:not(.has-record-error) .live-ctl .live-equalizer i { opacity: .45; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .timecode { order: 3; flex: none; min-width: 38px; font-size: 12px;
    font-weight: 500; font-variant-numeric: tabular-nums; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .audio-controls :is(#cancel-live, #finish-live) { flex: none; width: auto;
    min-width: 0; height: auto; min-height: 44px; margin: 0; padding: 8px 14px; border-radius: 8px; font-size: 14px; font-weight: 500;
    animation: rec-from-right .42s cubic-bezier(.2,.7,.2,1) backwards; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .audio-controls #cancel-live { order: 4; background: #fff;
    border: 1px solid #cbd2dd; color: #43516a; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .audio-controls #cancel-live:active:not(:disabled) { background: #f7f8fa;
    border-color: #9ba7b9; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .audio-controls #finish-live { order: 5; background: var(--accent);
    border: 1px solid var(--accent); color: #fff; box-shadow: inset 0 1px 0 #ffffff25, 0 2px 3px #174dc618; animation-delay: .04s; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .audio-controls #finish-live:active:not(:disabled) {
    background: var(--accent-dark); border-color: var(--accent-dark); }
  #app[data-view=recording]:not(.has-record-error) .live-ctl .audio-controls > .live-foot { order: 6; display: block; flex: 0 0 100%;
    font-size: 12px; line-height: 18px; color: var(--ink); }
  #app[data-view=recording]:not(.has-record-error) .live-ctl > .live-pair { order: 2; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  #app[data-view=recording]:not(.has-record-error) .live-ctl > .live-pair .live-template-slot { display: flex; min-width: 0; }

  /* «Распознаётся»: плеер готовой записи вместо панели записи */
  #app[data-view=processing]:not(.has-record-error) .live-ctl .audio-panel > .audio-controls { display: none; }
  #app[data-view=processing]:not(.has-record-error) .live-ctl .audio-panel .player { display: contents !important; }
  #app[data-view=processing]:not(.has-record-error) .live-ctl .audio-panel > .proc-acts { order: 3; display: flex; flex: none; gap: 6px;
    animation: rec-from-right .42s cubic-bezier(.2,.7,.2,1) backwards; }
  #app[data-view=processing]:not(.has-record-error) .live-ctl .proc-acts .btn { display: inline-flex; align-items: center;
    justify-content: center; width: 44px; height: 44px; min-height: 44px; padding: 0; border-radius: 8px;
    background: #f0f2f5; border: 1px solid #d7dce4; color: #929ba8; box-shadow: none; cursor: default; }
  #app[data-view=processing]:not(.has-record-error) .live-ctl .proc-acts .btn .icon { width: 20px; height: 20px; }

  /* общая раскладка плеера: «Распознаётся» и готовая запись */
  /* перенос времени и «Врач»/«Пациент» на вторую строку — шириной дорожки (Play 44 + кнопки 94 + зазоры 12), без пустой
     строки-разделителя: та добавляла лишний зазор */
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .audio-panel::after {
    content: none; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .player-top { display: contents; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .player .play { order: 1; flex: none;
    width: 44px; height: 44px; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .player :is(.skip, .player-hint) {
    display: none; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .wave-slot { order: 2; display: flex;
    align-items: center; flex: 1 1 calc(100% - 150px); min-width: 0; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .wave { flex: none; max-width: 100%;
    height: 44px; margin: 0; gap: 3px; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .wave .b { flex: 0 0 3px; width: 3px;
    border-radius: 1.4px; }
  /* головка воспроизведения и границы отрезков — внутри дорожки (эскиз .head: 2 px, var(--accent), сверху и снизу 2,
     без кружка; правки владельца 07.10: кружок и линия выходили за верх карточки) */
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .wave-cursor {
    top: 2px; bottom: 2px; background: var(--accent); }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .wave-cursor::before {
    content: none; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .wave-edge {
    top: 2px; bottom: 2px; }
  /* значок «Сохранить» — 20 px, как «Печать» (эскиз: svg 20; правки владельца 07.10) */
  #app[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #exam-save::before { flex: none; width: 20px; height: 20px; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .player :is(.time, .player-wait) {
    order: 5; flex: 0 1 auto; min-width: 0; margin: 0 auto 0 0; font-size: 12px; line-height: 18px; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .player .time b { font-weight: 400; }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .player .time span { color: var(--muted); }
  #app:is([data-view=processing], [data-view=done]):not(.has-record-error) :is(.live-ctl, .record-ctl) .player .legend { order: 6; flex: none;
    margin-left: auto; font-size: 12px; }
  /* «Распознаётся»: дорожка готовой записи вырастает слева, Play проявляется, время — слева (эскиз: vt-grow .5s,
     rec-main, from-left .42s; кривая var(--ease) эскиза) */
  #app[data-view=processing]:not(.has-record-error) .live-ctl .wave-slot { transform-origin: left center;
    animation: rec-grow .5s cubic-bezier(.2,.7,.2,1) backwards; }
  #app[data-view=processing]:not(.has-record-error) .live-ctl .player .play { animation: rec-fade .18s ease-in backwards; }
  #app[data-view=processing]:not(.has-record-error) .live-ctl .player :is(.time, .player-wait) {
    animation: rec-from-left .42s cubic-bezier(.2,.7,.2,1) backwards; }

  /* готовая запись: «Сохранить» и «Печать» в строке дорожки, не вторым рядом */
  #app[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #edit-actions { width: auto; flex: none; flex-wrap: nowrap; }
  #app[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #edit-actions .btn { border-radius: 8px;
    transition: background .15s, border-color .15s, color .15s; }
  /* готовая запись: содержимое карточки по центру — поля сверху и снизу равные (правка владельца 07.10, чат 2-26-347;
     в эскизе 8 и 10). Строка времени и «Врач/Пациент» — 16 px вместо 18: высота карточки та же, 88 px */
  #app[data-view=done]:not(.has-record-error) .record-ctl .audio-panel { padding: 10px; }
  #app[data-view=done]:not(.has-record-error) .record-ctl .player :is(.time, .player-wait, .legend) { line-height: 16px; }
  /* состояние автосохранения — в строке времени, сразу после «00:25 / 00:44» через «·» (правка владельца 08.10, чат 2-56-359-1):
     места мало — обрезается многоточием, время и «Врач» остаются; ошибка с «Повторить» — своей строкой, кнопку не обрезаем */
  #app[data-view=done]:not(.has-record-error) .record-ctl .player :is(.time, .player-wait) { flex: none; margin-right: 0; }
  #app[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #autosave-state { order: 5; flex: 1 1 0;
    min-width: 0; margin: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 12px; line-height: 16px; }
  #app[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #autosave-state::before { content: "·"; margin: 0 2px 0 0; }
  #app[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #autosave-state.is-error { order: 7; flex: 0 0 100%;
    white-space: normal; }
  #app[data-view=done]:not(.has-record-error) .record-ctl .exam-toolbar #autosave-state.is-error::before { content: none; }
}
@keyframes rec-from-right { from { opacity: 0; transform: translateX(40px); } }
@keyframes rec-from-left { from { opacity: 0; transform: translateX(-24px); } }
@keyframes rec-grow { from { transform: scaleX(.08); } }
@keyframes rec-fade { from { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  #app:is([data-view=recording], [data-view=processing]) .live-ctl :is(#cancel-live, #finish-live, .proc-acts, .wave-slot, .play, .time, .player-wait) {
    animation: none; }
}
/* пауза на телефоне — синяя кнопка «Продолжить», как в эскизе mobile-tabs2 (в docs/design-system.md — красная обводка) */
@media screen and (max-width: 999px) {
  #app.live-paused[data-view=recording]:not(.has-record-error) .live-ctl #play { background: var(--accent); border: 0; color: #fff; }
}

/* Окна препарата, дозы и «Добавить препарат» на телефоне — на весь экран (эскиз design/mobile-tabs2, dialog.phone-editor;
   правки владельца 06.10). Окно всегда на весь экран (inset 0, фон страницы не виден); tags.js по visualViewport
   задаёт только отступы --kb-top (сдвиг видимой области) и --kb-bottom (клавиатура, у списка); чат 2-74-471. На компьютере полосы «Отмена · Готово» нет. */
:is(#drug-search, #inline-dose) > .editor-top { display: none; }
@media screen and (max-width: 999px) {
  :is(#drug-search, #inline-dose).phone-editor { position: fixed; inset: 0; width: 100%; max-width: 480px;
    height: auto; max-height: none; margin: 0 auto; padding: calc(16px + var(--kb-top, 0px)) 16px 16px; border: 0; border-radius: 0; background: #fff;
    box-shadow: none; overflow: hidden; flex-direction: column; }
  :is(#drug-search, #inline-dose).phone-editor:popover-open { display: flex; }
  /* окно статично: страница под ним не листается (body закреплён, ui.js::lockPageScroll), касание вне списка не двигает
     окно и не тянет «резинку»; прокручиваются только списки (чат 2-52-348) */
  :is(#drug-search, #inline-dose).phone-editor { touch-action: none; overscroll-behavior: none; }
  #drug-search.phone-editor #drug-results, #inline-dose.phone-editor #inline-dose-options { touch-action: pan-y;
    overscroll-behavior: contain; }
  :is(#drug-search, #inline-dose).phone-editor > header,
  #inline-dose.phone-editor > label { display: none; }
  :is(#drug-search, #inline-dose).phone-editor > .editor-top { display: flex; flex: none; align-items: center;
    justify-content: space-between; gap: 12px; margin-bottom: 16px; }
  :is(#drug-search, #inline-dose).phone-editor .editor-top h2 { margin: 0; min-width: 0; font-size: 18px; font-weight: 500;
    line-height: 1.5; color: var(--ink); text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  :is(#drug-search, #inline-dose).phone-editor .editor-top .btn { flex: none; min-height: 44px; padding: 8px 14px;
    border-radius: 8px; font-size: 14px; font-weight: 500; }
  :is(#drug-search, #inline-dose).phone-editor .editor-top .editor-cancel { background: #fff; border: 1px solid #cbd2dd; color: #43516a; }
  :is(#drug-search, #inline-dose).phone-editor .editor-top .editor-done { background: var(--accent); border: 1px solid var(--accent);
    color: #fff; box-shadow: inset 0 1px 0 #ffffff25, 0 2px 3px #174dc618; }
  :is(#drug-search, #inline-dose).phone-editor .editor-top .editor-done:disabled { background: #f0f2f5; border-color: #d7dce4;
    color: #929ba8; box-shadow: none; }
  #drug-search.phone-editor input, #inline-dose.phone-editor .inline-dose-field input { width: 100%; height: 48px; padding: 10px;
    border: 1px solid #cbd2dd; border-radius: 7px; font-size: 16px; }
  #inline-dose.phone-editor .inline-dose-field { flex: none; }
  :is(#drug-results, #inline-dose-options) { scrollbar-width: thin; }
  /* список — блоками, не сеткой: строка растёт по тексту (две строки у препарата — название и форма выпуска), разделитель
     под текстом с полем 10 (эскиз .editor-options button; правки владельца 07.10 — в Safari строка сетки оставалась 48 px
     и линия шла по второй строке) */
  #drug-search.phone-editor #drug-results, #inline-dose.phone-editor #inline-dose-options { display: block;
    flex: 1 1 auto; min-height: 0; max-height: none; overflow: auto; margin-top: 8px; padding-bottom: var(--kb-bottom, 0px); }
  #drug-search.phone-editor .drug-option, #inline-dose.phone-editor #inline-dose-options button { display: flex; align-items: center;
    width: 100%; height: auto; min-height: 48px; padding: 10px;
    border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: #fff; color: var(--ink); font-size: 14px;
    line-height: 1.5; text-align: left; }
  #drug-search.phone-editor .drug-option small { margin-top: 2px; line-height: 1.5; }
}

@media screen and (max-width: 999px) {
  /* «Назначения» в правке текста с тегами (эскиз design/mobile-tabs2, .rx-editing): пункты без маркеров,
     как теги вне правки; рамка правки — 1px var(--line), отступ 4, радиус 4 */
  .record-screen .exam-form .examdoc-editable-tags,
  .record-screen .exam-form .examdoc-editable-tags:focus { padding-left: 0; list-style: none; background: none;
    border-color: transparent; outline: 1px solid var(--line); outline-offset: 4px; border-radius: 4px; }
  .record-screen .exam-form .examdoc-editable-tags > li { margin-bottom: 7px; }
}

/* Телефон: «Завершить» → «Распознаётся» → готовый документ — тот же экран, блоки перетекают (эскиз design/mobile-tabs2,
   переход live → proc → done: View Transitions, имена и анимации — оттуда; владелец 07.10, задача 2-26-327-3).
   Имена и правила анимаций — только на время перехода (html.rec-flow, live.js → flowTransition): вне его элементы
   без имён, переход «Начать запись» → запись (records.js) не затронут. */
@media screen and (max-width: 999px) {
  html.rec-flow .record-screen .audio-panel { view-transition-name: rec-ctl; }
  html.rec-flow .audio-panel :is(#play, .player .play) { view-transition-name: rec-main; }
  html.rec-flow .audio-panel :is(.live-foot, .player .time:not([hidden]), .player .player-wait:not([hidden])) { view-transition-name: rec-timer; }
  html.rec-flow .audio-panel :is(.live-equalizer, .player .wave) { view-transition-name: rec-eq; }
  html.rec-flow .audio-panel #cancel-live { view-transition-name: rec-cancel; }
  html.rec-flow .audio-panel #finish-live { view-transition-name: rec-finish; }
  html.rec-flow .audio-panel :is(.proc-acts, #edit-actions) { view-transition-name: rec-actions; }
  html.rec-flow .live-pair #add-live-file { view-transition-name: rec-file; }
  html.rec-flow .live-pair .live-template-slot { view-transition-name: rec-tpl; }
  html.rec-flow .site-header #record-back { view-transition-name: rec-head; }
  html.rec-flow .record-screen .sidebar { view-transition-name: rec-pside; }
  html.rec-flow .record-screen .workspace { view-transition-name: rec-work; }
  html.rec-flow .record-screen .review { view-transition-name: rec-review; }
  html.rec-flow::view-transition-group(*), html.rec-flow::view-transition-old(*), html.rec-flow::view-transition-new(*) { animation-duration: .42s; animation-timing-function: cubic-bezier(.2,.7,.2,1); }
  html.rec-flow::view-transition-new(rec-cancel):only-child, html.rec-flow::view-transition-new(rec-finish):only-child, html.rec-flow::view-transition-new(rec-actions):only-child { animation: vt-from-right .42s cubic-bezier(.2,.7,.2,1) both; }
  html.rec-flow::view-transition-new(rec-finish):only-child { animation-delay: .04s; }
  html.rec-flow::view-transition-old(rec-cancel):only-child, html.rec-flow::view-transition-old(rec-finish):only-child, html.rec-flow::view-transition-old(rec-actions):only-child { animation: vt-to-right .3s ease-in both; }
  html.rec-flow::view-transition-new(rec-timer):only-child, html.rec-flow::view-transition-new(rec-head):only-child { animation: vt-from-left .42s cubic-bezier(.2,.7,.2,1) both; }
  html.rec-flow::view-transition-old(rec-timer):only-child, html.rec-flow::view-transition-old(rec-head):only-child { animation: vt-fade-out .25s ease-in both; }
  html.rec-flow::view-transition-new(rec-eq):only-child { animation: vt-grow .5s cubic-bezier(.2,.7,.2,1) both; transform-origin: left center; }
  html.rec-flow::view-transition-old(rec-eq):only-child { animation: vt-shrink .3s ease-in both; transform-origin: left center; }
  html.rec-flow::view-transition-new(rec-pside):only-child { animation: vt-from-left-far .45s cubic-bezier(.2,.7,.2,1) .06s both; }
  html.rec-flow::view-transition-old(rec-pside):only-child { animation: vt-to-left-far .3s ease-in both; }
  html.rec-flow::view-transition-new(rec-work):only-child, html.rec-flow::view-transition-new(rec-review):only-child { animation: vt-rise .45s cubic-bezier(.2,.7,.2,1) .1s both; }
  html.rec-flow::view-transition-old(rec-work):only-child, html.rec-flow::view-transition-old(rec-review):only-child { animation: vt-sink .26s ease-in both; }
  html.rec-flow::view-transition-old(rec-main) { animation: vt-fade-out .18s ease-in both; }
  html.rec-flow::view-transition-old(rec-main), html.rec-flow::view-transition-new(rec-main) { width: 100%; height: 100%; object-fit: contain; }
  /* те же значения, что в эскизе; на компьютере свои ключевые кадры экрана «Записи» (main-screen.css) */
  @keyframes vt-from-right { from { opacity: 0; transform: translateX(40px); } }
  @keyframes vt-to-right { to { opacity: 0; transform: translateX(40px); } }
  @keyframes vt-from-left { from { opacity: 0; transform: translateX(-24px); } }
  @keyframes vt-from-left-far { from { opacity: 0; transform: translateX(-56px); } }
  @keyframes vt-to-left-far { to { opacity: 0; transform: translateX(-56px); } }
  @keyframes vt-fade-out { to { opacity: 0; } }
  @keyframes vt-grow { from { opacity: 0; transform: scaleX(.08); } }
  @keyframes vt-shrink { to { opacity: 0; transform: scaleX(.08); } }
  @keyframes vt-rise { from { opacity: 0; transform: translateY(64px); } }
  @keyframes vt-sink { to { opacity: 0; transform: translateY(64px); } }
}
@media (prefers-reduced-motion: reduce) {
  html.rec-flow::view-transition-group(*), html.rec-flow::view-transition-old(*), html.rec-flow::view-transition-new(*) { animation: none !important; }
}

/* ===== Правки вида 07.10 (2-26-332-view-fix; компьютер и телефон одинаково) =====
   Кнопки действий с документом — «Печать», «Скопировать» (.btn-doc): голубая заливка, синий текст и рамка.
   «Изменить» (.btn-quiet) — техническая: без заливки, тонкая светлая рамка, приглушённый текст. */
#app #exam-print.btn-doc, #app #copy-doc.btn-doc:not(.is-done) { background: #edf2ff; border-color: #2563eb; color: #174dc6; }
#app #exam-print.btn-doc:hover, #app #copy-doc.btn-doc:not(.is-done):hover { background: #edf2ff; border-color: #174dc6; }
#app #exam-unconfirm.btn-quiet { background: transparent; border-color: #d7dce4; color: #596272; font-weight: 400; box-shadow: none; }
#app #exam-unconfirm.btn-quiet:hover { background: #f7f8fa; border-color: #cbd2dd; }
/* компьютер, готовая запись: карточка дорожки — по длительности, кнопки справа (ширину задаёт player.js, fitBars) */
@media screen and (min-width: 1000px) {
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .audio-panel { flex: 1 1 400px; }
  .screen-result[data-view=done]:not(.has-record-error) .record-ctl .header-actions { margin-left: auto; }
}
#app[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-turn { border: 1px solid #c3d3f2; }
#app[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-turn[data-side="patient"] { border-color: #badbca; }
@media screen and (min-width: 1000px) {
  #app[data-view=done]:not(.has-record-error) .workspace > #transcript-drawer.is-open { padding: 6px 20px 16px; }
  #app[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-panel { padding: 0; }
  #app[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-head { padding: 12px 0 12px; margin-bottom: 4px; }
  #app[data-view=done]:not(.has-record-error) #transcript-drawer .transcript-turn:first-child { margin-top: 12px; }
}

/* Окно «Тематика и шаблон» (до начала записи; правка владельца 07.10): крестик и «Отмена» заметнее — рамка и тёмный текст */
#template-dialog.prestart-template-dialog header .btn { display: grid; place-items: center; flex: none; width: 40px; height: 40px;
  min-height: 40px; padding: 0; border: 1px solid #cbd2dd; border-radius: 10px; background: #fff; color: #202735;
  font-size: 26px; font-weight: 400; line-height: 1; cursor: pointer; }
#template-dialog.prestart-template-dialog .modal-actions .btn:not(.btn-primary) { border: 1px solid #cbd2dd; background: #fff;
  color: #202735; font-size: 14px; font-weight: 500; }
#template-dialog.prestart-template-dialog header .btn:hover,
#template-dialog.prestart-template-dialog .modal-actions .btn:not(.btn-primary):hover { background: #f7f8fa; border-color: #2563eb; }

/* короткая запись (правка 07.10): отключённые кнопки идущей записи — приглушённые, как остальные неактивные */
#app.live-stopped .live-ctl #play:disabled { background: var(--line); color: var(--muted); box-shadow: none; border: 0; }
#app.live-stopped :is(#finish-live, #add-live-file, #cancel-live, .live-template-slot #choose-template):disabled {
  opacity: .5; cursor: default; }

/* «Назначения» — единый редактор ProseMirror (решение 2026-10-08-prescriptions-inline-editor.md): служебные правила
   редактора (перенос строк как в тексте, разделитель после блока в конце пункта, выделение блока) и заготовка
   «＋ Добавить препарат» до выбора названия — нейтральный серый фон, пунктирная рамка, «препарат…» приглушённым,
   без цвета проверки (решение тимлида 08.10). */
.record-screen .exam-form .tagged-prose.ProseMirror { white-space: pre-wrap; white-space: break-spaces; word-wrap: break-word;
  font-variant-ligatures: none; outline: none; }
.record-screen .exam-form .tagged-prose .ProseMirror-separator { display: inline !important; border: none !important;
  margin: 0 !important; }
.record-screen .exam-form .tagged-prose.ProseMirror-hideselection *::selection { background: transparent; }
.record-screen .exam-form .tagged-prose.ProseMirror-hideselection { caret-color: transparent; }
.record-screen .exam-form .drug-tag.ProseMirror-selectednode { outline: 2px solid var(--accent); outline-offset: 1px; }
.record-screen .exam-form .drug-tag.drug-pending { border: 1px dashed var(--line); background: var(--surface-muted); color: var(--muted); }
.record-screen .exam-form .drug-tag.drug-pending .drug-tag-name { padding: 1px 6px; font-style: normal; color: var(--muted); }

/* Строка замечания сверки под пунктом назначения (задача 2-54-356-1, эскиз rx-remark.html): 13px/1.55, цвет состояния,
   подчёркивание 1px с отступом 3px; не редактируется */
@media screen and (max-width: 999px) {
  .record-screen .exam-form .drug-remarks { display: block; user-select: none; }
  .record-screen .exam-form .drug-remark { margin: 0 0 6px; font-size: 13px; font-weight: 400; line-height: 1.55;
    text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; color: #8c5c15; }
  .record-screen .exam-form .drug-remark-red { color: #b23c48; }
}
/* На компьютере то же, когда панели «Проверка приёма» нет (.no-review, BENCH_CHECK_ENGINE=registry; решение 12.10) */
@media screen and (min-width: 1000px) {
  .record-screen.no-review .exam-form .drug-remarks { display: block; user-select: none; }
  .record-screen.no-review .exam-form .drug-remark { margin: 0 0 6px; font-size: 13px; font-weight: 400; line-height: 1.55;
    text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; color: #8c5c15; }
  .record-screen.no-review .exam-form .drug-remark-red { color: #b23c48; }
}
@media print { .record-screen .exam-form .drug-remarks { display: none !important; } }
