/* Своё поверх фирменного кита ЗЗД: календарь и «День» таблицей, зоны карточки, плитки сводки.
   Всё на переменных brand.css/theme.css, чтобы светлая и тёмная темы работали. */

.page-head { display:flex; justify-content:space-between; align-items:flex-start;
             gap:1rem; flex-wrap:wrap; margin-bottom:1rem; }
.page-head h1 { margin:0 0 .2rem; }
.page-head .dow { font-weight:400; opacity:.6; font-size:.7em; }

.daynav { display:flex; gap:.4rem; align-items:center; flex-wrap:wrap; }
.daynav input[type=date], .daynav select { padding:.35rem .5rem; }

/* ---------- общие метки ---------- */
.tag { font-size:.65rem; opacity:.7; display:block; font-weight:400; }

.chip { display:inline-block; padding:.08rem .45rem; margin:.1rem .1rem 0; border-radius:999px;
        font-size:.72rem; border:1px solid var(--line, rgba(255,255,255,.18)); white-space:nowrap; }
.chip.c-yes { border-color:#3e9c62; color:#6fd497; }
.chip.c-no  { border-color:#a45; color:#e58a9a; }
.chip.c-nd  { opacity:.6; }
.chip.c-out { border-color:#5a7fd0; color:#9db8f0; }
/* «записан» — отдельный цвет: это не явка (зелёная) и не статус (синий),
   а согласие пациента лечиться, которое считается независимо от аванса */
.chip.c-signed { border-color:#c9a227; color:#e8c65a; }

/* ---------- плашка места (календарь, легенда) ---------- */
.ck { display:inline-flex; gap:.3rem; align-items:baseline; padding:.14rem .4rem;
      border-radius:6px; text-decoration:none; line-height:1.3;
      border:1px solid transparent; }
.ck b { font-weight:500; font-size:.76rem; font-variant-numeric:tabular-nums; opacity:.75; }
.ck i { font-style:normal; font-size:.78rem; max-width:7.5rem;
        overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ck s { text-decoration:none; font-size:.66rem; opacity:.75; white-space:nowrap; }
.ck u { text-decoration:none; font-size:.6rem; opacity:.6; white-space:nowrap; margin-left:auto; }
.ck.free { border-color:var(--line, rgba(255,255,255,.13)); }
.ck.free i { opacity:.55; }
.ck.free:hover { background:rgba(120,180,255,.14); border-color:#5a7fd0; }
.ck.free:hover i { opacity:1; }
.ck.taken { background:rgba(120,180,255,.12); border-color:rgba(120,180,255,.25); }
.ck.taken:hover { filter:brightness(1.08); }
.ck.off { border-style:dashed; }
.legend { display:flex; flex-wrap:wrap; gap:.35rem; align-items:center; margin-top:1rem; }
.legend .demo { pointer-events:none; }
.line-day { display:inline-flex; gap:.45rem; align-items:center; flex-wrap:wrap; margin-left:.6rem; }
.line-day select, .line-day input { padding:.2rem .35rem; font:inherit; font-size:.78rem; }
.line-day select { max-width:15rem; }
.line-day input[type=time] { background:var(--field); color:var(--head); border:1px solid var(--line-2);
  border-radius:var(--radius-sm, 10px); color-scheme:dark; }
[data-theme="light"] .line-day input[type=time] { color-scheme:light; }

/* ---------- карточка записи: три зоны ---------- */
.zones { display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); gap:1rem;
         align-items:start; }
.zone h2 { margin:.1rem 0 .8rem; font-size:1rem; letter-spacing:.02em; }
.zone.ro { opacity:.62; }
.zone.ro h2::after { content:' · только чтение'; font-weight:400; font-size:.8rem; opacity:.7; }

.form-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(190px, 1fr)); gap:.75rem 1rem; }
.form-grid label { display:flex; flex-direction:column; gap:.25rem; font-size:.85rem; }
.form-grid label.wide, .form-grid .wide { grid-column:1 / -1; }
.form-grid label.chk { flex-direction:row; align-items:center; gap:.5rem; }
.form-grid input, .form-grid select, .form-grid textarea { padding:.4rem .55rem; font:inherit; }
.form-grid small.hint { font-size:.72rem; }
.hint.warn { color:#e0a94a; }

.actions { margin:1rem 0; display:flex; gap:.8rem; align-items:center; flex-wrap:wrap; }
.cancel-box { display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; margin-top:1rem; }
.btn-danger { border-color:#a4455a; color:#e58a9a; }
.btn-sm { padding:.22rem .6rem; font-size:.8rem; }

/* ---------- сводка ---------- */
.tiles { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));
         gap:.8rem; margin-bottom:1rem; }
.tile { background:var(--card, rgba(255,255,255,.04)); border:1px solid var(--line, rgba(255,255,255,.1));
        border-radius:14px; padding:.9rem 1rem; }
.tile .tv { font-size:1.6rem; font-weight:700; font-variant-numeric:tabular-nums; }
.tile .tl { font-size:.78rem; opacity:.65; margin-top:.15rem; line-height:1.3; }
.tile.sm .tv { font-size:1.25rem; }
.tile.warn { border-color:#8a6a2a; }

/* ---------- таблицы ---------- */
table.grid { width:100%; border-collapse:collapse; font-size:.88rem; }
table.grid th, table.grid td { padding:.4rem .55rem; text-align:left;
                               border-bottom:1px solid var(--line, rgba(255,255,255,.08)); }
table.grid th { font-weight:600; opacity:.75; font-size:.78rem; text-transform:uppercase;
                letter-spacing:.03em; }
table.grid td.num, table.grid th.num { text-align:right; font-variant-numeric:tabular-nums; }
table.grid tr.muted { opacity:.45; }
.row-actions { white-space:nowrap; }
.row-actions input { padding:.2rem .4rem; }

.search { display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; }
.exports { display:flex; gap:.4rem; align-items:center; flex-wrap:wrap; margin:-.3rem 0 1rem;
           font-size:.85rem; opacity:.9; }

/* справочники: строка таблицы — это форма */
table.grid form { display:contents; }
table.grid input[type=text], table.grid input[type=number], table.grid input[type=time] {
  padding:.22rem .4rem; font:inherit; font-size:.82rem; }
table.grid code { font-size:.78rem; opacity:.75; }
td.nowrap { white-space:nowrap; }
details.hist { margin-top:.8rem; }
details.hist summary { cursor:pointer; font-size:.85rem; opacity:.75; }

/* подсказка о возможном дубле при записи */
.dup { border:1px solid #8a6a2a; background:rgba(224,169,74,.08); border-radius:10px;
       padding:.6rem .8rem; font-size:.85rem; }
.dup b { color:#e0a94a; }
.dup-row { margin:.35rem 0; display:flex; gap:.6rem; flex-wrap:wrap; align-items:baseline; }
.dup-row span { opacity:.7; font-size:.8rem; }
.dup-row em { font-style:normal; color:#e0a94a; font-size:.78rem; }
.dup small { display:block; margin-top:.4rem; opacity:.7; }

/* ---------- настройка сетки ---------- */
.line-head { display:flex; gap:.7rem; align-items:center; flex-wrap:wrap; margin-bottom:.8rem; }
.line-head input[type=text], .line-head input[type=number], .line-head input[type=date] {
  padding:.35rem .5rem; font:inherit; }
label.inline { display:inline-flex; gap:.35rem; align-items:center; font-size:.85rem; opacity:.85; }
.grid-form table.wd td { padding:.25rem .55rem; }
.grid-form table.wd input[type=text] { width:100%; padding:.32rem .5rem; font:inherit;
  font-variant-numeric:tabular-nums; }
.grid-form code { font-size:.8rem; opacity:.8; }

/* ---------- памятка ---------- */
.memo-item { padding:.5rem 0; border-top:1px solid var(--line, rgba(255,255,255,.07)); }
.memo-item:first-of-type { border-top:none; }
.memo-item h3 { margin:.1rem 0 .3rem; font-size:.95rem; }
.memo-item p { margin:.2rem 0; line-height:1.5; }
.memo-item.expired { opacity:.5; }
.memo-stop .memo-item h3 { color:#e58a9a; }

/* «НЕТ ЗАПИСИ» — место закрыто филиалом (ТЗ: тёмно-серый). Шаг 2а задачи 9869, 15.10.2026 */
.ck.closed { background:rgba(0,0,0,.38); border-color:rgba(0,0,0,.45); cursor:default; }
.ck.closed b { opacity:.45; text-decoration:line-through; }
.ck.closed i { opacity:.65; }
[data-theme="light"] .ck.closed { background:#5f636a; border-color:#55595f; color:#eceef1; }
.nozap { font-weight:600; letter-spacing:.06em; font-size:.8rem; opacity:.85; }
.inline-form { display:inline-flex; gap:.3rem; margin-left:.5rem; vertical-align:middle; }

/* Онлайн-строка — зелёная (ТЗ). Шаг 2г задачи 9869, 15.10.2026 */
.ck.free.online { background:rgba(70,180,110,.16); border-color:rgba(70,180,110,.5); }
.ck.free.online:hover { background:rgba(70,180,110,.28); border-color:#3e9c62; }
.ck.taken.online { box-shadow:inset 0 -2px 0 rgba(70,180,110,.75); }
[data-theme="light"] .ck.free.online { background:#dff3e6; border-color:#8fcca3; }
.tag-online { background:rgba(70,180,110,.22); color:#4cbf7a; padding:.02rem .4rem; border-radius:6px;
  font-size:.7rem; font-weight:600; }
/* Кто работает — «День» и подпись под датой в календаре */
.roster { padding:.6rem .9rem; margin:0 0 .8rem; }
.roster-edit summary { cursor:pointer; display:inline; margin-left:.6rem; opacity:.8; }
.roster-cols { display:flex; gap:2rem; flex-wrap:wrap; margin:.6rem 0; }
.roster-cols label { display:block; }

/* Статусы подтверждения — цвета по «ЭТАПАМ» (решение Максима 15.10.2026). Шаг 3 задачи 9869 */
.ck.taken.st-created { background:rgba(255,255,255,.88); border-color:rgba(255,255,255,.95); color:#1d2433; }
.ck.taken.st-due     { background:#b8bdc6; border-color:#a6acb6; color:#1d2433; }
.ck.taken.st-yes     { background:rgba(70,120,230,.6); border-color:rgba(90,140,240,.9); color:#fff; }
.ck.taken.st-nd      { background:rgba(236,190,60,.72); border-color:rgba(236,190,60,.95); color:#1d2433; }
.ck.taken.st-no      { background:rgba(212,62,74,.64); border-color:rgba(230,80,90,.9); color:#fff; }
.ck.taken.st-due::after { content:'☎'; font-size:.7rem; margin-left:.15rem; }
[data-theme="light"] .ck.taken.st-created { background:#fff; border-color:#c9cdd4; }
[data-theme="light"] .ck.taken.st-due     { background:#dadde2; border-color:#c3c7ce; }
[data-theme="light"] .ck.taken.st-yes     { background:#cfdfff; border-color:#8fb0f0; color:#1d2433; }
[data-theme="light"] .ck.taken.st-nd      { background:#fff0c2; border-color:#e6c560; }
[data-theme="light"] .ck.taken.st-no      { background:#ffd5d8; border-color:#e8939b; color:#1d2433; }
.atti { font-weight:700; margin-left:.2rem; font-style:normal; }
.atti.ok { color:#2f9e5b; }
.atti.no { color:#c0394a; }
.pill { display:inline-block; padding:.05rem .45rem; border-radius:999px; font-size:.72rem;
  margin-left:.4rem; border:1px solid transparent; vertical-align:middle; }
.pill.st-created { background:rgba(255,255,255,.85); color:#1d2433; border-color:#c9cdd4; }
.pill.st-due { background:#b8bdc6; color:#1d2433; }
.pill.st-yes { background:rgba(70,120,230,.6); color:#fff; }
.pill.st-nd { background:rgba(236,190,60,.75); color:#1d2433; }
.pill.st-no { background:rgba(212,62,74,.65); color:#fff; }
.confirm-btns .btn.on { outline:2px solid currentColor; font-weight:700; }

/* =====================================================================
   Шаг 4 задачи 9869 (16.10.2026): филиалы слева, вкладки филиала, календарь,
   «День» таблицей с правкой в строке.
   ===================================================================== */

/* ---------- левая панель: филиалы, затем общее для сети ---------- */
.nav-cap { font-family:var(--zzd-lek); font-size:11px; font-weight:600; letter-spacing:.12em;
  text-transform:uppercase; color:var(--dim); padding:6px 13px 2px; }
.nav-sep { height:1px; background:var(--line); margin:6px 8px; }
.nav-br .ni-ic { width:1.35rem; height:1.35rem; line-height:1.35rem; border-radius:50%; font-size:.75rem;
  font-weight:700; background:var(--neutral-bg, rgba(255,255,255,.05)); border:1px solid var(--line); }
.nav-br.active .ni-ic { border-color:var(--gold); color:var(--gold); }
.ni-tz { margin-left:auto; font-size:10.5px; font-weight:600; color:var(--dim); white-space:nowrap; }
html.nav-collapsed .nav-cap, html.nav-collapsed .ni-tz { display:none; }
@media (min-width:900px) and (max-height:820px) {
  .nav-item { padding-top:6px; padding-bottom:6px; }
  .nav-cap { padding-top:2px; }
}

/* ---------- шапка филиала и вкладки ---------- */
.bhead { display:flex; align-items:flex-end; justify-content:space-between; gap:.6rem 1.2rem;
  flex-wrap:wrap; margin:0 0 .9rem; border-bottom:1px solid var(--line); }
.bh-name { display:flex; align-items:baseline; gap:.6rem; padding-bottom:.55rem; }
.bh-name h1 { margin:0; }
.bh-name .tag { display:inline-block; font-size:.75rem; opacity:1; font-weight:600; color:var(--gold);
  border:1px solid var(--warn-line, rgba(209,158,104,.3)); border-radius:999px; padding:.05rem .5rem; }
.btabs { display:flex; gap:.2rem; flex-wrap:wrap; }
.btab { font-family:var(--zzd-lek); font-weight:600; font-size:.92rem; color:var(--muted);
  padding:.5rem .9rem .6rem; border-bottom:2px solid transparent; margin-bottom:-1px; }
.btab:hover { color:var(--head); }
.btab.on { color:var(--gold); border-bottom-color:var(--gold); }
.memo-sub { margin:-.3rem 0 1rem; }
.rep-title { margin:.2rem 0 0; }

/* ---------- панель вида: День | 4 дня | Неделя | Месяц ---------- */
.sbar { display:flex; align-items:center; gap:.6rem 1rem; flex-wrap:wrap; margin:0 0 .9rem; }
.views { display:inline-flex; border:1px solid var(--line-2); border-radius:10px; overflow:hidden; }
.vw { font-family:var(--zzd-lek); font-weight:600; font-size:.85rem; padding:.38rem .8rem; color:var(--muted);
  border-right:1px solid var(--line-2); }
.vw:last-child { border-right:none; }
.vw:hover { color:var(--head); background:var(--nav-hover, rgba(255,255,255,.05)); }
.vw.on { color:var(--btn-gold-ink, #0a0e17); background:var(--gold-2); }
.sbar-info { font-size:.85rem; color:var(--muted); }
.sbar-mk { margin-left:auto; }

/* ---------- календарь «4 дня» / «Неделя»: дни — колонками, время — строками ---------- */
.cal-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--line);
  border-radius:14px; background:var(--card); }
table.cal { border-collapse:separate; border-spacing:0; width:100%; min-width:calc(3.6rem + var(--ncol, 7) * 6.4rem);
  table-layout:fixed; }
table.cal th, table.cal td { border-bottom:1px solid var(--line); border-right:1px solid var(--line); }
table.cal tr > :last-child { border-right:none; }
table.cal tbody tr:last-child > * { border-bottom:none; }
table.cal th.ct { width:3.6rem; position:sticky; left:0; z-index:2; background:var(--card);
  font-size:.78rem; font-weight:600; color:var(--muted); font-variant-numeric:tabular-nums;
  text-align:right; padding:.35rem .5rem; vertical-align:top; }
table.cal thead th { position:sticky; top:0; z-index:3; background:var(--card); }
table.cal thead th.ct { z-index:4; }
table.cal th.cd { text-align:left; padding:.45rem .5rem .4rem; vertical-align:top; font-weight:400; }
table.cal th.cd a { display:flex; gap:.35rem; align-items:baseline; }
table.cal th.cd b { font-size:.9rem; color:var(--head); white-space:nowrap; }
table.cal th.cd span { font-size:.72rem; color:var(--muted); }
table.cal th.cd em { font-style:normal; font-size:.72rem; color:var(--muted); font-variant-numeric:tabular-nums; }
table.cal th.cd em.none { opacity:.7; }
table.cal th.cd.is-today { box-shadow:inset 0 3px 0 var(--gold); }
table.cal th.cd.is-today b { color:var(--gold); }
table.cal .is-weekend { background-image:linear-gradient(var(--panel-group), var(--panel-group)); }
table.cal th.cd.is-past b { opacity:.7; }
table.cal td.cc { padding:.22rem .25rem; vertical-align:top; }
table.cal td.cc.is-today { background:rgba(209,158,104,.05); }
table.cal td.cc.nogrid { background:repeating-linear-gradient(135deg, transparent 0 6px, var(--line) 6px 7px); }
table.cal td.cc.empty { padding:1.2rem; text-align:center; color:var(--muted); }
table.cal .ck { display:flex; width:100%; margin:.12rem 0; padding:.16rem .35rem; box-sizing:border-box; }
table.cal .ck i { flex:0 1 auto; max-width:none; min-width:0; }
/* занятое место — в две строки: фамилия целиком, под ней тип, вид лечения, длительность, явка */
table.cal .ck.taken { flex-wrap:wrap; column-gap:.3rem; row-gap:0; }
table.cal .ck.taken i { flex:1 0 100%; font-weight:600; }
.rost { display:block; font-size:.68rem; color:var(--muted); overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; margin-top:.1rem; }

/* ---------- «Месяц»: обзор, точка на каждое место ---------- */
table.calm { border-collapse:separate; border-spacing:0; width:100%; min-width:46rem; table-layout:fixed; }
table.calm th { font-family:var(--zzd-lek); font-size:.72rem; text-transform:uppercase; letter-spacing:.08em;
  color:var(--dim); font-weight:600; padding:.45rem .5rem; text-align:left; border-bottom:1px solid var(--line); }
table.calm th.we { color:var(--muted); }
table.calm td.mc { vertical-align:top; height:6.6rem; padding:.35rem .45rem; border-right:1px solid var(--line);
  border-bottom:1px solid var(--line); }
table.calm tr > td:last-child { border-right:none; }
table.calm tbody tr:last-child > td { border-bottom:none; }
table.calm td.mc.other { opacity:.35; }
table.calm td.mc.is-weekend { background:var(--panel-group); }
table.calm td.mc.is-today { box-shadow:inset 0 3px 0 var(--gold); }
table.calm td.mc.is-past { opacity:.78; }
.mhead { display:flex; justify-content:space-between; align-items:baseline; gap:.3rem; }
.mhead b, .mnum { font-size:.95rem; font-weight:700; color:var(--head); }
.mc.is-today .mhead b { color:var(--gold); }
.mhead em { font-style:normal; font-size:.72rem; color:var(--muted); font-variant-numeric:tabular-nums; }
.mhead:hover b { text-decoration:underline; }
.dots { display:flex; flex-wrap:wrap; gap:3px; margin:.35rem 0 .2rem; }
.dot { width:9px; height:9px; border-radius:3px; border:1px solid var(--line-2); background:transparent; }
.dot.st-free.online { background:rgba(70,180,110,.35); border-color:rgba(70,180,110,.6); }
.dot.st-closed { background:#3b3f46; border-color:#3b3f46; }
.dot.st-created { background:#f1f2f4; border-color:#c9cdd4; }
.dot.st-due { background:#b8bdc6; border-color:#9aa1ab; }
.dot.st-yes { background:#4678e6; border-color:#4678e6; }
.dot.st-nd { background:#ecbe3c; border-color:#d9aa2a; }
.dot.st-no { background:#d43e4a; border-color:#d43e4a; }
[data-theme="light"] .dot.st-closed { background:#5f636a; border-color:#5f636a; }
.mfree { font-size:.72rem; color:var(--gold-2); }
.mfree:hover { text-decoration:underline; }
.mnone { font-size:.72rem; color:var(--dim); display:block; margin-top:.35rem; }

/* ---------- «День» таблицей, как ростовская таблица в Яндексе ---------- */
.dt-wrap { overflow:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--line); border-radius:14px;
  background:var(--card); }
@media (min-width:900px) { .dt-wrap { max-height:calc(100vh - 13rem); } }
table.dt { border-collapse:separate; border-spacing:0; font-size:.8rem; min-width:100%; }
table.dt th, table.dt td { border-bottom:1px solid var(--line); border-right:1px solid var(--line);
  padding:.18rem .3rem; vertical-align:middle; background-clip:padding-box; }
table.dt thead th { position:sticky; z-index:3; background:var(--card); font-family:var(--zzd-lek);
  font-weight:600; font-size:.7rem; color:var(--muted); text-align:left; white-space:nowrap; }
table.dt thead tr.dt-zones th { top:0; height:1.6rem; line-height:1.6rem; padding-top:0; padding-bottom:0;
  box-sizing:border-box; text-transform:uppercase; letter-spacing:.06em; font-size:.66rem; }
table.dt thead tr.dt-cols th { top:1.6rem; }
table.dt thead th.c-t, table.dt thead th.c-fio { top:0; z-index:5; vertical-align:bottom; }
table.dt thead th.z-kc { box-shadow:inset 0 -2px 0 rgba(90,140,240,.55); }
table.dt thead th.z-cur { box-shadow:inset 0 -2px 0 rgba(209,158,104,.6); }
table.dt .c-t { position:sticky; left:0; z-index:2; width:4.4rem; min-width:4.4rem; background-color:var(--card);
  font-variant-numeric:tabular-nums; white-space:nowrap; }
table.dt .c-fio { position:sticky; left:4.4rem; z-index:2; min-width:15rem; max-width:17rem; background-color:var(--card);
  white-space:nowrap;
  box-shadow:inset -1px 0 0 var(--line-2); }
table.dt .c-t b { font-weight:700; }
table.dt .seat { display:block; font-size:.62rem; opacity:.55; }
table.dt th.w-date { min-width:8.4rem; } table.dt th.w-tel { min-width:8.6rem; }
table.dt th.w-sel { min-width:6.8rem; } table.dt th.w-sm { min-width:5.6rem; }
table.dt th.w-txt { min-width:12rem; } table.dt th.w-who { min-width:9.5rem; }
table.dt th.w-conf { min-width:9.8rem; } table.dt th.w-chk { min-width:3.2rem; text-align:center; }
table.dt th.w-num { min-width:5.6rem; }
table.dt td.c-chk { text-align:center; }
/* поля строки: выглядят как ячейки, рамка — при наведении и в фокусе */
table.dt .cin { width:100%; min-width:0; box-sizing:border-box; margin:0; padding:.22rem .32rem;
  font:inherit; font-size:.8rem; color:var(--head); background:transparent; border:1px solid transparent;
  border-radius:6px; box-shadow:none; transition:border-color .15s, background-color .15s, box-shadow .15s; }
table.dt select.cin { padding-right:.1rem; cursor:pointer; }
table.dt input[type=checkbox].cin { width:auto; accent-color:var(--gold); cursor:pointer; }
table.dt textarea.cin { resize:vertical; height:1.75rem; min-height:1.75rem; line-height:1.3; overflow:hidden;
  white-space:nowrap; text-overflow:ellipsis; }
table.dt textarea.cin:focus { height:4.6rem; white-space:pre-wrap; overflow:auto; position:relative; z-index:6;
  background:var(--card); }
table.dt .cin.num { text-align:right; font-variant-numeric:tabular-nums; }
table.dt .cin:hover { border-color:var(--line-2); }
table.dt .cin:focus { outline:none; border-color:var(--gold); background-color:var(--field-focus-bg, #0d1420);
  box-shadow:0 0 0 2px var(--gold-ring, rgba(209,158,104,.22)); }
table.dt .cin.saving { border-color:var(--line-2); opacity:.6; }
table.dt .cin.saved { border-color:#3e9c62; box-shadow:0 0 0 2px rgba(70,180,110,.25); }
table.dt .cin.err { border-color:#d43e4a; box-shadow:0 0 0 2px rgba(212,62,74,.25); }
table.dt .pname { font-weight:600; color:var(--head); display:inline-block; max-width:13rem; overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap; vertical-align:middle; }
table.dt .c-fio .cin[name="full_name"] { font-weight:600; width:calc(100% - 1.4rem); }
table.dt .to-card { display:inline-block; width:1.2rem; text-align:center; color:var(--gold-2); font-weight:700; }
table.dt .ctext { display:block; max-width:16rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
table.dt td.c-conf { white-space:nowrap; }
table.dt .c-conf .pill { margin:0 .25rem 0 0; }
table.dt .confirm-btns { display:inline-flex; gap:.15rem; margin:0; }
table.dt .confirm-btns .btn { padding:.1rem .4rem; font-size:.72rem; border-radius:7px; }
table.dt td.empty { padding:1.4rem; text-align:center; color:var(--muted); }
/* шапка линии внутри таблицы */
table.dt tr.lhead th { background:var(--panel-group); text-align:left; font-weight:400; padding:.35rem .45rem;
  border-bottom:1px solid var(--line-2); }
table.dt .lh-in { position:sticky; left:.45rem; display:inline-flex; flex-wrap:wrap; gap:.3rem .6rem;
  align-items:center; max-width:calc(100vw - 4rem); }
table.dt .lh-name { font-family:var(--zzd-lek); font-weight:700; color:var(--head); font-size:.9rem; }
table.dt .lh-name small { font-weight:400; color:var(--muted); margin-left:.25rem; }
table.dt .doc { font-size:.75rem; color:#9db8f0; }
table.dt .doc.off { color:#e0a94a; }
table.dt tbody.line-off tr:not(.lhead) { opacity:.7; }
/* статус подтверждения — цветом ячейки времени и пациента («ЭТАПЫ»), полоса слева */
table.dt tr.taken .c-t, table.dt tr.taken .c-fio { background-image:linear-gradient(var(--st-tint), var(--st-tint)); }
table.dt tr.taken .c-t { box-shadow:inset 4px 0 0 var(--st-bar); }
table.dt tr.st-created { --st-tint:rgba(255,255,255,.07); --st-bar:#e8eaee; }
table.dt tr.st-due     { --st-tint:rgba(184,189,198,.24); --st-bar:#9aa1ab; }
table.dt tr.st-yes     { --st-tint:rgba(70,120,230,.26); --st-bar:#4678e6; }
table.dt tr.st-nd      { --st-tint:rgba(236,190,60,.24); --st-bar:#ecbe3c; }
table.dt tr.st-no      { --st-tint:rgba(212,62,74,.26); --st-bar:#d43e4a; }
[data-theme="light"] table.dt tr.st-created { --st-tint:rgba(255,255,255,0); --st-bar:#c9cdd4; }
[data-theme="light"] table.dt tr.st-due     { --st-tint:#e6e8ec; }
[data-theme="light"] table.dt tr.st-yes     { --st-tint:#dbe7ff; }
[data-theme="light"] table.dt tr.st-nd      { --st-tint:#fff3cc; }
[data-theme="light"] table.dt tr.st-no      { --st-tint:#ffe0e2; }
table.dt tr.taken:hover td:not(.c-t):not(.c-fio) { background-color:var(--row-hover, rgba(255,255,255,.025)); }
/* пустое место: «записать» раскрывает поля прямо в строке */
table.dt tr.free .c-t { color:var(--muted); }
table.dt tr.free .c-t b { font-weight:500; }
table.dt tr.free .ni { display:none; }
table.dt tr.free.editing .ni { display:block; }
table.dt tr.free.editing td.c-conf .ni { display:inline-flex; }
table.dt tr.free.editing .js-new { display:none; }
table.dt tr.free.editing td:not(.c-t):not(.c-fio) { background-color:rgba(209,158,104,.06); }
table.dt tr.free.editing .c-t, table.dt tr.free.editing .c-fio { background-image:linear-gradient(rgba(209,158,104,.10), rgba(209,158,104,.10)); }
table.dt tr.free .js-new { padding:.12rem .55rem; font-size:.74rem; }
table.dt tr.online.free .c-t, table.dt tr.online.free .c-fio { background-image:linear-gradient(rgba(70,180,110,.14), rgba(70,180,110,.14)); }
[data-theme="light"] table.dt tr.online.free .c-t, [data-theme="light"] table.dt tr.online.free .c-fio { background-image:linear-gradient(#e8f6ed, #e8f6ed); }
/* ⚠ закреплённым ячейкам (время, пациент) — только непрозрачный цвет плюс оттенок картинкой:
   полупрозрачный фон пропускает сквозь себя прокрученные вбок поля (найдено осмотром 16.10) */
table.dt tr.closed td:not(.c-t) { background-color:rgba(0,0,0,.30); }
table.dt tr.closed .c-t { background-image:linear-gradient(rgba(0,0,0,.32), rgba(0,0,0,.32)); }
table.dt tr.closed .c-t b { opacity:.55; text-decoration:line-through; }
[data-theme="light"] table.dt tr.closed td { background:#6b6f76; color:#f1f2f4; }
table.dt tr.off-grid .c-t b { color:#e0a94a; }
table.dt .tag { display:inline-block; margin-left:.25rem; }
.js .nojs-save { display:none; }
.nojs-save { display:block; margin-top:.2rem; padding:.05rem .35rem; font-size:.66rem; }
/* всплывающее «сохранено / не сохранено» */
.toast { position:fixed; right:1.2rem; bottom:1.2rem; z-index:60; max-width:26rem; padding:.6rem .9rem;
  border-radius:10px; background:var(--card); border:1px solid var(--line-2); border-left:4px solid #3e9c62;
  box-shadow:var(--card-shadow); font-size:.85rem; opacity:0; transform:translateY(8px); pointer-events:none;
  transition:opacity .2s, transform .2s; }
.toast.show { opacity:1; transform:none; }
.toast.bad { border-left-color:#d43e4a; }
@media (max-width:600px) {
  table.dt .c-fio { position:static; min-width:11rem; box-shadow:none; }
  .sbar-mk { margin-left:0; }
}

/* ---------- «Настройки»: всё, что было пунктами меню ---------- */
.hub { display:grid; grid-template-columns:repeat(auto-fill, minmax(17rem, 1fr)); gap:1rem; }
.hub-item { display:flex; flex-direction:column; gap:.35rem; margin:0; transition:border-color .18s; }
.hub-item b { font-family:var(--zzd-lek); font-size:1.02rem; color:var(--head); }
.hub-item span { font-size:.85rem; color:var(--muted); line-height:1.45; }
.hub-item:hover { border-color:var(--gold); }
.hub-item:hover b { color:var(--gold-2); }

/* =====================================================================
   Шаг 5 задачи 9869 (19.10.2026): возраст до 18, «!» акции, клиент EnvyCRM, копия записи
   ===================================================================== */
.age { display:inline-block; margin-left:.35rem; font-size:.72rem; color:var(--muted);
  font-variant-numeric:tabular-nums; white-space:nowrap; }
.age.minor { color:#fff; background:#c0394a; border-radius:999px; padding:0 .45rem; font-weight:700; }
.form-grid .age { margin:.2rem 0 0; }
.promo-mark { font-style:normal; font-weight:800; color:#e8a33d; margin-right:.2rem; }
h1 .promo-mark { color:#e8a33d; }
.crm-ic { display:inline-block; font-style:normal; font-weight:700; font-size:.58rem; line-height:1;
  padding:.12rem .25rem; border-radius:4px; border:1px solid currentColor; color:#7fb2ff;
  letter-spacing:.02em; vertical-align:middle; }
a.crm-ic:hover { background:rgba(127,178,255,.15); }
.crm-ic.amb { color:#e0a94a; }
[data-theme="light"] .crm-ic { color:#2c62c9; }
table.cal .ck .crm-ic { font-size:.52rem; padding:.05rem .18rem; margin-left:.15rem; }
table.cal .ck.taken.st-created .crm-ic, table.cal .ck.taken.st-due .crm-ic,
table.cal .ck.taken.st-nd .crm-ic { color:#1d4fae; }
table.dt td.c-bd { white-space:nowrap; }
table.dt td.c-bd .cin { width:auto; max-width:8.6rem; display:inline-block; }
table.dt th.w-date { min-width:10.4rem; }
.crm-box { display:flex; flex-wrap:wrap; gap:.4rem .7rem; align-items:center; padding:.6rem .7rem;
  border:1px dashed var(--line-2); border-radius:10px; }
.crm-box .hint .warn { color:#e0a94a; }
.crm-box .crm-link { flex:1 1 100%; display:flex; flex-direction:column; gap:.25rem; font-size:.85rem; }
.crm-box .crm-link input { font:inherit; padding:.4rem .55rem; }
.copy-box { display:flex; flex-wrap:wrap; gap:.5rem .8rem; align-items:center; }
.copy-box input[type=date] { padding:.3rem .45rem; font:inherit; }
.form-grid .age { align-self:flex-start; }
/* Поле телефона и времени — как остальные поля: в общем ките ЗЗД их нет, и в тёмной теме
   они оставались белыми (карточка и форма записи — так было и до шага 5, замечено осмотром 19.10) */
input[type=tel], input[type=time] { background:var(--field); color:var(--head); border:1px solid var(--line-2);
  border-radius:var(--radius-sm, 10px); color-scheme:dark; }
[data-theme="light"] input[type=tel], [data-theme="light"] input[type=time] { color-scheme:light; }
input[type=tel]:focus, input[type=time]:focus { outline:none; border-color:var(--gold);
  box-shadow:0 0 0 3px var(--gold-ring, rgba(209,158,104,.22)); background:var(--field-focus-bg, #0d1420); }

/* =====================================================================
   Шаг 6 задачи 9869 (19.10.2026): «Особенности записи» правит филиал, сотрудники по ролям
   ===================================================================== */
.memo-info { display:flex; flex-wrap:wrap; gap:.8rem 1.4rem; align-items:flex-start; justify-content:space-between; }
.mi-grid { display:grid; grid-template-columns:auto 1fr; gap:.35rem .9rem; align-items:baseline; }
.mi-grid > b { font-size:.82rem; color:var(--muted); font-weight:600; }
.memo-docs { margin:.2rem 0 .6rem; padding-left:1.1rem; line-height:1.6; }
.memo-edit-head { display:flex; flex-wrap:wrap; gap:.5rem .8rem; align-items:center; }
.memo-edit { display:flex; flex-direction:column; gap:.4rem; padding:.7rem 0;
  border-top:1px solid var(--line, rgba(255,255,255,.07)); }
.memo-edit:first-of-type { border-top:none; }
.memo-edit input[type=text], .memo-edit textarea { width:100%; font:inherit; padding:.4rem .55rem; }
.memo-edit textarea { resize:vertical; min-height:4.2rem; }
.memo-edit.off { opacity:.55; }
.me-foot { display:flex; flex-wrap:wrap; gap:.4rem .9rem; align-items:center; }
.me-foot input[type=date], .me-foot input[type=number] { padding:.3rem .45rem; font:inherit; }
.memo-add { margin-top:.5rem; }
.memo-add summary { cursor:pointer; color:var(--gold); font-weight:600; font-size:.9rem; }
.memo-add[open] summary { margin-bottom:.3rem; }
.staff-tabs { margin:-.2rem 0 1rem; border-bottom:1px solid var(--line); }
/* строка сотрудника — сеткой: ФИО, специальность (у врачей), заметка, «работает», «ок»;
   под ней — сколько записей, учётка, кто правил. Флексом строка разваливалась на три (осмотр 19.10) */
.staff-row { display:grid; grid-template-columns:minmax(17rem, 2.6fr) minmax(9rem, 1.2fr) minmax(8rem, 1fr) auto auto;
  gap:.35rem .6rem; align-items:center; padding:.5rem 0; border-top:1px solid var(--line, rgba(255,255,255,.07)); }
.staff-row.no-spec { grid-template-columns:minmax(17rem, 2.6fr) minmax(9rem, 2fr) auto auto; }
.staff-add { grid-template-columns:minmax(17rem, 2.6fr) minmax(9rem, 1.2fr) minmax(8rem, 1fr) auto; border-top:none; }
.staff-add.no-spec { grid-template-columns:minmax(17rem, 2.6fr) minmax(9rem, 2fr) auto; }
.staff-row:first-of-type { border-top:none; }
.staff-row input[type=text] { font:inherit; padding:.35rem .5rem; width:100%; min-width:0; }
.staff-row label.inline { white-space:nowrap; }
.staff-row .s-meta { grid-column:1 / -1; font-size:.8rem; color:var(--muted); margin:0; text-align:left; }
.staff-row .s-meta .tag { display:inline-block; font-size:.7rem; margin-right:.35rem; }
.staff-row.off .s-name { text-decoration:line-through; opacity:.7; }
@media (max-width: 760px) {
  .staff-row, .staff-row.no-spec, .staff-add, .staff-add.no-spec { grid-template-columns:1fr 1fr; }
  .staff-row .s-name { grid-column:1 / -1; }
}
/* подсказки внутри строк — слева и без отступа сверху: общий кит ЗЗД центрирует .hint */
.memo-edit-head, .me-foot .hint, .memo-docs .hint, .mi-grid .hint, .promo-now, .promo-now .hint,
.confirm-box .hint { text-align:left; margin:0; }
.memo-edit-head { margin:0 0 .9rem; }
.confirm-box { display:flex; flex-wrap:wrap; gap:.5rem .8rem; align-items:center; }
.promo-now { display:flex; flex-wrap:wrap; gap:.3rem .6rem; align-items:baseline; font-size:.88rem; }
.promo-it { padding:.1rem .5rem; border-radius:999px; border:1px solid rgba(232,163,61,.45); color:#e8a33d; }
[data-theme="light"] .promo-it { color:#9a5f0d; }

/* =====================================================================
   Шаг 7 задачи 9869 (20.10.2026): отчёты — «День» и «Период» филиала, «Отчёты» по сети
   ===================================================================== */
/* Шкала диаграмм — одна тональная, фирменное золото в три ступени: записано → дошло → договор.
   Это этапы, а не разные сущности, поэтому одна гамма от светлого к тёмному (на тёмной теме —
   от тёмного к яркому). Проверено валидатором палитры: монотонная яркость, шаг ≥ 0,06,
   крайняя ступень на карточке — 3,22:1 (тёмная) и 2,05:1 (светлая). Цвет — у столбика,
   а не у текста: подписи — обычными цветами текста. */
:root { --viz-1:#8a6236; --viz-2:#c08a50; --viz-3:#ecc48f; }
:root[data-theme="light"] { --viz-1:#d9ae74; --viz-2:#b07c3e; --viz-3:#7a5222; }
.s1 { background:var(--viz-1); } .s2 { background:var(--viz-2); } .s3 { background:var(--viz-3); }

.rep-exp { display:inline-flex; gap:.4rem; align-items:center; flex-wrap:wrap; margin-left:auto; }
.rep-sub { text-align:left; margin:0; }
.rep-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; color-scheme:dark; }
[data-theme="light"] .rep-wrap { color-scheme:light; }        /* полоса прокрутки — в цвет темы */
/* таблицы отчётов плотнее общих: 11–14 колонок должны помещаться в карточку (осмотр 20.10) */
.rep-wrap table.grid thead th { font-size:.68rem; letter-spacing:0; padding:.35rem .45rem; vertical-align:bottom; }
.rep-wrap table.grid tbody th, .rep-wrap table.grid tfoot th { padding:.38rem .45rem; }
.rep-wrap table.grid td { padding:.38rem .45rem; }
.tiles.tiles-sm { grid-template-columns:repeat(auto-fit, minmax(112px, 1fr)); }
.rep-table th, .rep-table td { white-space:nowrap; }
.rep-table td .tag { display:inline; margin-left:.35rem; }
.rep-table tfoot td { font-weight:600; border-top:2px solid var(--line-2); border-bottom:none; }
.rep-outs { display:flex; flex-wrap:wrap; gap:.25rem .4rem; align-items:center; margin:.8rem 0 0;
  font-size:.85rem; }
.rep-day .hint, .viz-card .hint, .card > .hint { text-align:left; }
.print-only { display:none; }
/* «ОТ КЦ» — пунктир (что сказал оператор), итог клиники — сплошная плашка; «≠» — разошлось */
.chip.c-pre { border-style:dashed; border-color:var(--muted); color:var(--muted); }
.chip.c-out.miss { border-color:var(--warn); color:var(--warn); }

/* фильтры — один ряд над всем, что они режут */
.rep-filt { display:flex; flex-wrap:wrap; gap:.6rem .9rem; align-items:flex-end; margin:0 0 1rem; }
.rep-filt label, .rep-brs { display:flex; flex-direction:column; gap:.2rem; font-size:.75rem;
  color:var(--muted); font-family:var(--zzd-lek); }
.rep-filt select, .rep-filt input[type=date] { padding:.35rem .5rem; font:inherit; font-size:.85rem;
  max-width:15rem; }
.rep-brs { position:relative; }
.rep-dd summary { cursor:pointer; padding:.35rem .6rem; border:1px solid var(--line-2); border-radius:10px;
  font-size:.85rem; color:var(--ink); max-width:16rem; overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; list-style:none; }
.rep-dd summary::-webkit-details-marker { display:none; }
.rep-dd summary::after { content:" \25BE"; color:var(--dim); }
.rep-dd-list { position:absolute; z-index:30; top:100%; left:0; margin-top:.3rem; min-width:13rem;
  background:var(--card); border:1px solid var(--line-2); border-radius:10px; padding:.55rem .75rem;
  box-shadow:var(--card-shadow); display:flex; flex-direction:column; gap:.3rem; }
.rep-dd-list label.chk { flex-direction:row; align-items:center; gap:.45rem; font-size:.85rem; color:var(--ink); }
.rep-dd-list small { color:var(--dim); font-size:.72rem; }

/* диаграммы */
.viz-head { display:flex; flex-wrap:wrap; gap:.5rem .8rem; align-items:center; }
.viz-head h2 { margin:0 .4rem 0 0; }
.views-sm .vw { font-size:.78rem; padding:.28rem .65rem; }
.viz-sub { margin:.7rem 0 .2rem; font-size:.85rem; color:var(--muted); }
.viz-legend { display:flex; flex-wrap:wrap; gap:.3rem 1.1rem; font-size:.8rem; color:var(--muted);
  margin:.2rem 0 .8rem; }
.viz-legend i { display:inline-block; width:.8rem; height:.8rem; border-radius:3px; margin-right:.4rem;
  vertical-align:-.1rem; }
/* столбики по дням: высота области — вместе с подписями дат, без вложенной прокрутки */
.vc { margin:.4rem 0 .2rem; }
.vc-plot { position:relative; height:220px; margin-left:2.4rem; border-bottom:1px solid var(--line-2); }
.vc-grid { position:absolute; left:0; right:0; border-top:1px solid var(--line); }
.vc-grid span { position:absolute; right:100%; top:0; transform:translateY(-50%); margin-right:.45rem;
  font-size:.7rem; color:var(--dim); font-variant-numeric:tabular-nums; }
.vc-cols { position:absolute; inset:0; display:flex; align-items:flex-end; gap:2px; }
.vc-g { flex:1 1 0; min-width:0; height:100%; display:flex; align-items:flex-end; justify-content:center;
  gap:2px; border-radius:4px 4px 0 0; outline:none; }
.vc-g:hover, .vc-g:focus-visible { background:var(--gold-soft); }
.vb { display:block; flex:0 1 18px; min-width:1px; border-radius:4px 4px 0 0; }
.vc-x { display:flex; gap:2px; margin-left:2.4rem; padding-top:.3rem; }
.vc-x span { flex:1 1 0; min-width:0; font-size:.68rem; color:var(--dim); white-space:nowrap;
  overflow:visible; text-align:center; font-variant-numeric:tabular-nums; }
/* горизонтальные полосы: по статусам и по людям */
.hc { display:flex; flex-direction:column; gap:.3rem; margin:.3rem 0; }
.hc-row { display:grid; grid-template-columns:minmax(7rem, 15rem) 1fr minmax(6.5rem, auto); gap:.8rem;
  align-items:center; padding:.15rem .3rem; border-radius:6px; outline:none; font-size:.85rem; }
.hc-row:hover, .hc-row:focus-visible { background:var(--gold-soft); }
.hc-l { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--ink); }
.hc-t { display:flex; gap:2px; height:14px; }
.hc-t i { display:block; height:100%; min-width:2px; }
.hc-t i:last-child { border-radius:0 4px 4px 0; }
.hc-v { font-size:.8rem; color:var(--muted); font-variant-numeric:tabular-nums; white-space:nowrap; }
.viz-tip { position:fixed; z-index:60; pointer-events:none; background:var(--card); color:var(--ink);
  border:1px solid var(--line-2); border-radius:9px; padding:.45rem .65rem; font-size:.78rem;
  line-height:1.45; box-shadow:var(--card-shadow); max-width:18rem; }
.viz-tip .vt-t { color:var(--muted); margin-bottom:.15rem; }
.viz-tip b { color:var(--head); font-variant-numeric:tabular-nums; }
.viz-table { margin-top:.7rem; }
.viz-table summary, .dyn-list summary, .came-row summary { cursor:pointer; font-size:.85rem; color:var(--gold-2);
  font-family:var(--zzd-lek); font-weight:600; }
.viz-table table { margin:.5rem 0; }

/* разбивка «тип × статус» */
table.mx th, table.mx td { white-space:nowrap; }
table.mx tbody th, table.mx tfoot th { text-align:left; font-size:.85rem; text-transform:none;
  letter-spacing:0; opacity:1; }
table.mx td small { display:block; font-size:.68rem; color:var(--dim); line-height:1.2; }
table.mx td.zero { color:var(--dim); }
table.mx tr.mx-empty th { color:var(--dim); }
table.mx tfoot td, table.mx tfoot th { border-top:2px solid var(--line-2); }
table.mx tfoot tr.sub td, table.mx tfoot tr.sub th { border-top:none; color:var(--muted); font-size:.8rem; }

/* операторы: строка «кто дошёл» под оператором */
.came-row > td { padding-top:0; }
.came-row details { margin:.1rem 0 .4rem; }
table.came { margin:.4rem 0 .2rem; font-size:.82rem; }
.dyn-grid { display:grid; grid-template-columns:minmax(220px, 1fr) minmax(0, 2.4fr); gap:1rem 1.6rem;
  align-items:start; }
@media (max-width: 900px) { .dyn-grid { grid-template-columns:1fr; } }
.dyn-grid h3, .viz-card h3, .card > h3 { font-size:.95rem; margin:.6rem 0 .4rem; }
.dyn-list { margin-top:.9rem; }
.dyn-list table { margin-top:.4rem; }

/* печать отчёта дня: альбомный лист, светлые цвета при любой теме на экране */
@page rep { size:A4 landscape; margin:10mm; }
@media print {
  :root, :root[data-theme="light"] { --ink:#111; --head:#000; --muted:#444; --dim:#666; --card:#fff;
    --line:rgba(0,0,0,.18); --line-2:rgba(0,0,0,.35); --viz-1:#d9ae74; --viz-2:#b07c3e; --viz-3:#7a5222; }
  .rep-print { page:rep; }
  .print-only { display:block; }
  .bhead .btabs, .rep-exp { display:none !important; }
  .rep-table { font-size:8.5pt; }
  .rep-table th, .rep-table td { padding:.2rem .3rem; }
  .rep-wrap { overflow:visible; }
  .tiles { grid-template-columns:repeat(8, 1fr); gap:.3rem; }
  .tile { padding:.35rem .5rem; }
  .tile .tv { font-size:1.1rem; }
}
@media (max-width: 760px) {
  .hc-row { grid-template-columns:minmax(5rem, 9rem) 1fr; }
  .hc-v { grid-column:1 / -1; }
  .rep-exp { margin-left:0; }
}
.rep-table td.c-name { white-space:normal; min-width:10rem; }   /* ФИО переносится — остальное в строку */
/* «День» отчёта шире карточки (у макета масштаб 1,1): время и пациент закреплены, остальное листается вбок,
   как в «Дне» расписания. Фон закреплённых ячеек — непрозрачный (урок осмотра шага 4). */
.rep-table th:first-child, .rep-table td:first-child { position:sticky; left:0; z-index:1;
  background-color:var(--card); box-sizing:border-box; width:5.6rem; min-width:5.6rem; max-width:5.6rem; }
.rep-table th:nth-child(2), .rep-table td:nth-child(2) { position:sticky; left:5.6rem; z-index:1;
  background-color:var(--card); box-shadow:1px 0 0 var(--line-2); }
.rep-table td[colspan] { position:static; box-shadow:none; width:auto; max-width:none; }
@media print { .rep-table th, .rep-table td { position:static !important; box-shadow:none !important; } }
.rep-table th { opacity:1; color:var(--muted); }   /* у кита заголовок полупрозрачный — закреплённый просвечивал бы */
.rep-wrap td.num, table.came td { white-space:nowrap; }      /* «30 000» и «Ростов-на-Дону» не рвутся */
table.came td:nth-child(3) { white-space:normal; }
.dyn-list td:nth-child(1), .dyn-list td:nth-child(3), .dyn-list td:nth-child(4) { white-space:nowrap; }
