/* AI Доктор — стиль интерфейса.
   Палитра: каждая тема — монохромная семья на OKLCH, никаких клиш.
   :root содержит только токены, не привязанные к теме (радиусы, тени, тайминги).
   Все цвета задаются в html[data-theme="..."] блоках ниже.

   Системные токены кроме цветов ↓ */
:root{
  --shadow:        0 24px 60px -20px rgba(0,0,0,0.55), 0 8px 22px -8px rgba(0,0,0,0.35);
  --shadow-soft:   0 12px 30px -12px rgba(0,0,0,0.30);
  --shadow-glow:   0 0 0 1px color-mix(in oklch, var(--accent) 14%, transparent),
                   0 18px 50px -18px color-mix(in oklch, var(--accent) 30%, transparent);
  --radius-sm:     8px;
  --radius:        12px;
  --radius-lg:     16px;
  --transition:    .22s cubic-bezier(.4,.14,.3,1);
  /* fallback на medsi, если data-theme не выставлен */
  --bg-deep:       oklch(95% 0.012 195);
  --bg:            oklch(97% 0.010 195);
  --surface:       oklch(99% 0.005 195 / 0.62);
  --surface-2:     oklch(99% 0.003 195 / 0.86);
  --surface-3:     oklch(100% 0 0 / 1);
  --line:          oklch(50% 0.020 195 / 0.14);
  --line-soft:     oklch(50% 0.020 195 / 0.08);
  --fg:            oklch(28% 0.012 215);
  --fg-soft:       oklch(28% 0.012 215 / 0.72);
  --fg-mute:       oklch(28% 0.012 215 / 0.48);
  --accent:        oklch(64% 0.110 195);
  --accent-soft:   oklch(64% 0.110 195 / 0.14);
  --accent-2:      oklch(78% 0.115 75);
  --warn:          oklch(60% 0.150 60);
  --danger:        oklch(55% 0.180 25);
  --grain-opacity: .03;

  /* «Сценные» токены — тёмная зона для 3D-карты, не зависят от темы. */
  --scene-bg-deep:  oklch(10% 0.020 230);
  --scene-bg:       oklch(13% 0.026 230);
  --scene-surface:  oklch(20% 0.030 230 / 0.55);
  --scene-surface-2:oklch(24% 0.034 230 / 0.78);
  --scene-surface-3:oklch(28% 0.038 230 / 0.94);
  --scene-line:     oklch(78% 0.010 230 / 0.14);
  --scene-line-soft:oklch(78% 0.010 230 / 0.07);
  --scene-fg:       oklch(94% 0.012 80);
  --scene-fg-soft:  oklch(94% 0.012 80 / 0.74);
  --scene-fg-mute:  oklch(94% 0.012 80 / 0.50);
}

/* ──────── ТЕМЫ ──────── */
/* medsi — Медси: премиум-клиника, бирюза + тёплый амбер на cool-cream.
   #00abaa primary teal + #edb867 amber + #f1f1f1 surface + #373737 text. */
html[data-theme="medsi"]{
  --bg-deep:     oklch(95% 0.012 195);
  --bg:          oklch(97% 0.010 195);
  --surface:     oklch(99% 0.005 195 / 0.62);
  --surface-2:   oklch(99% 0.003 195 / 0.86);
  --surface-3:   oklch(100% 0 0 / 1);
  --line:        oklch(50% 0.020 195 / 0.14);
  --line-soft:   oklch(50% 0.020 195 / 0.08);
  --fg:          oklch(28% 0.012 215);
  --fg-soft:     oklch(28% 0.012 215 / 0.72);
  --fg-mute:     oklch(28% 0.012 215 / 0.48);
  --accent:      oklch(64% 0.110 195);   /* #00abaa, чуть мягче чем оригинал */
  --accent-soft: oklch(64% 0.110 195 / 0.14);
  --accent-2:    oklch(78% 0.115 75);    /* #edb867 amber pop */
}

/* emc — Editorial: бордо + песок + слоновая кость. Wine-and-sand luxury. */
html[data-theme="emc"]{
  --bg-deep:     oklch(94% 0.014 60);
  --bg:          oklch(97% 0.011 60);
  --surface:     oklch(99% 0.006 60 / 0.65);
  --surface-2:   oklch(99% 0.004 60 / 0.88);
  --surface-3:   oklch(100% 0 0 / 1);
  --line:        oklch(35% 0.030 25 / 0.14);
  --line-soft:   oklch(35% 0.030 25 / 0.08);
  --fg:          oklch(20% 0.012 30);    /* #1b1b1b warm-tinted */
  --fg-soft:     oklch(20% 0.012 30 / 0.72);
  --fg-mute:     oklch(20% 0.012 30 / 0.50);
  --accent:      oklch(43% 0.110 25);    /* #8d3332 deep wine */
  --accent-soft: oklch(43% 0.110 25 / 0.12);
  --accent-2:    oklch(72% 0.045 75);    /* #bda47f sand */
}


*{ box-sizing:border-box; }
html, body, #root{ height:100%; margin:0; }
body{
  font-family:'Inter Tight','Inter',-apple-system,BlinkMacSystemFont,sans-serif;
  color:var(--fg);
  background:var(--bg-deep);
  font-size:14px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  overflow:hidden;
  position:relative;
}
/* Едва заметный шум поверх всего — снимает «гладкую CG-плёнку» с UI.
   Один SVG-noise через data-uri, чтобы не было запроса. */
body::before{
  content:'';
  position:fixed; inset:0; pointer-events:none; z-index:1000;
  opacity:var(--grain-opacity);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' seed='4'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  mix-blend-mode:overlay;
}
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; padding:0; }
input{ font:inherit; color:inherit; }

.aid-root{
  display:grid;
  grid-template-columns:220px minmax(0, 1fr);  /* minmax(0,1fr) даёт content'у ужиматься */
  height:100vh;
  width:100vw;
  background:var(--bg);
  color:var(--fg);
  overflow:hidden;
  /* isolation создаёт собственный stacking-context root, чтобы z-index sidebar
     vs main всегда сравнивались на одном уровне (не зависели от вложенных
     stacking-context'ов внутри main: aid-stage с overflow-y:auto, modals и т.п.) */
  isolation:isolate;
}
.aid-root.is-collapsed{ grid-template-columns:64px minmax(0, 1fr); }

/* ==================== SIDEBAR ==================== */
.aid-sidebar{
  display:flex; flex-direction:column;
  background:color-mix(in oklch, var(--bg-deep) 82%, transparent);
  border-right:1px solid var(--line);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  padding:10px 8px 10px;
  gap:6px;
  z-index:100;               /* выше чем .aid-main и его stacking-context'ы.
                                aid-main {position:relative; overflow:hidden} +
                                aid-stage {overflow-y:auto; position:relative}
                                могут перекрывать torch-кнопку collapse (right:-12px),
                                поэтому стэкаем sidebar явно выше всего main. */
  overflow:visible;          /* НЕ hidden! .aid-side-collapse торчит за правый край
                                (right:-12px) и обрезается, если у sidebar overflow:hidden.
                                Скролл длинного nav-меню — внутри .aid-nav (overflow-y:auto). */
  height:100vh;
  position:relative;
  min-height:0;
}
.aid-brand{ display:flex; align-items:center; gap:8px; padding:0 4px 2px; flex-shrink:0; }
.aid-brand-mark{
  width:30px; height:30px; border-radius:9px;
  background:transparent;
  display:flex; align-items:center; justify-content:center;
}
.aid-brand-mark svg{ width:20px; height:20px; }
.aid-brand-title{ font-weight:600; font-size:13.5px; letter-spacing:0.01em; }
.aid-brand-sub{ font-size:10px; color:var(--fg-mute); letter-spacing:0.06em; text-transform:uppercase; }
.aid-side-patient{
  display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:11px;
  padding:6px 8px;
  cursor:pointer; transition:background .15s;
  flex-shrink:0;
}
.aid-side-patient:hover{ background:var(--surface-2); }
.aid-avatar{
  width:30px; height:30px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-weight:600; font-size:13px; color:rgba(255,255,255,0.95);
  letter-spacing:0.02em;
  background-image:linear-gradient(135deg, rgba(255,255,255,0.18), rgba(0,0,0,0.20));
  background-blend-mode:overlay;
  box-shadow:0 4px 12px -4px rgba(0,0,0,0.45), inset 0 1px 0 rgba(255,255,255,0.22);
}
.aid-patient-avatar{
  width:64px; height:64px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-weight:600; font-size:22px; color:rgba(255,255,255,0.95);
  letter-spacing:0.02em; margin-bottom:10px;
  background-image:linear-gradient(135deg, rgba(255,255,255,0.22), rgba(0,0,0,0.20));
  background-blend-mode:overlay;
  box-shadow:0 8px 22px -8px rgba(0,0,0,0.55), inset 0 1px 0 rgba(255,255,255,0.22);
}
.aid-side-pat-name{ font-weight:550; font-size:12.5px; }
.aid-side-pat-sub{ font-size:10.5px; color:var(--fg-mute); }
.aid-side-pat-switch{ font-size:13px; color:var(--fg-mute); }

.aid-nav{ display:flex; flex-direction:column; gap:1px; margin-top:4px; min-height:0; overflow-y:auto; }
.aid-nav::-webkit-scrollbar{ width:4px; }
.aid-nav::-webkit-scrollbar-thumb{ background:color-mix(in oklch, var(--fg) 12%, transparent); border-radius:2px; }
/* В свёрнутом sidebar скролл не нужен (иконки 32px помещаются всегда), а
   overflow:auto обрезает торчащие вправо ::after-tooltips, поэтому здесь
   возвращаем overflow:visible именно в collapsed-режиме. */
.aid-sidebar.is-collapsed .aid-nav{ overflow:visible; }
.aid-nav-item{
  position:relative;
  display:grid; grid-template-columns:24px 1fr auto; gap:9px; align-items:center;
  padding:7px 10px; border-radius:9px;
  color:var(--fg-soft); transition:all .15s; text-align:left;
  background:transparent; border:none; cursor:pointer; font:inherit;
}
.aid-nav-item:hover{ background:color-mix(in oklch, var(--fg) 5%, transparent); color:var(--fg); }
.aid-nav-item.is-active{
  background:linear-gradient(90deg, color-mix(in oklch, var(--accent) 16%, transparent), color-mix(in oklch, var(--accent) 2%, transparent));
  color:var(--fg);
  box-shadow:inset 1.5px 0 0 var(--accent), inset 0 0 0 1px color-mix(in oklch, var(--accent) 14%, transparent);
}
.aid-nav-icon{
  display:flex; align-items:center; justify-content:center;
  width:24px; height:24px; opacity:0.95; flex-shrink:0;
}
.aid-nav-icon svg{ width:17px; height:17px; }
.aid-nav-item.is-active .aid-nav-icon{ color:var(--accent); }
.aid-nav-label{ font-size:12.5px; font-weight:500; }

/* Tooltip когда сайдбар свёрнут — показывается при hover на элементе nav */
.aid-sidebar.is-collapsed .aid-nav-label,
.aid-sidebar.is-collapsed .aid-side-pat-text,
.aid-sidebar.is-collapsed .aid-side-pat-switch,
.aid-sidebar.is-collapsed .aid-brand-text{ display:none; }
.aid-sidebar.is-collapsed .aid-nav-item{ grid-template-columns:32px; justify-content:center; }
.aid-sidebar.is-collapsed .aid-nav-item:hover::after{
  content: attr(data-tooltip);
  position:absolute; left:calc(100% + 12px); top:50%;
  transform:translateY(-50%);
  background:color-mix(in oklch, var(--bg-deep) 95%, transparent); color:var(--fg);
  padding:6px 10px; border-radius:8px;
  border:1px solid var(--line);
  font-size:12.5px; white-space:nowrap;
  pointer-events:none; z-index:100;
  box-shadow:0 6px 18px -8px rgba(0,0,0,0.6);
}
.aid-sidebar.is-collapsed .aid-side-patient{ padding:6px; justify-content:center; grid-template-columns:38px; }
.aid-nav-badge{
  font-size:11px; font-weight:600;
  background:var(--accent); color:var(--bg-deep);
  border-radius:10px; padding:2px 7px; min-width:20px; text-align:center;
}

.aid-side-foot{ margin-top:auto; display:grid; grid-template-columns:1fr 1fr; gap:6px; padding-top:6px; border-top:1px solid var(--line-soft); flex-shrink:0; }
.aid-side-foot-item{ background:var(--surface); border-radius:8px; padding:5px 8px; }
.aid-side-foot-k{ font-size:9.5px; color:var(--fg-mute); text-transform:uppercase; letter-spacing:0.06em; }
.aid-side-foot-v{ font-weight:600; font-size:13px; }

/* ==================== MAIN ==================== */
.aid-main{
  display:flex; flex-direction:column;
  position:relative;
  overflow:hidden;
  min-width:0;
  /* Жёстко фиксируем порядок: main всегда НИЖЕ sidebar (z:100). Иначе
     stacking-context'ы внутри main (aid-stage с overflow:auto, попап-меню и т.п.)
     могут перекрывать .aid-side-collapse, который торчит за правый край sidebar. */
  z-index:1;
}
.aid-topbar{
  display:flex; flex-direction:column;
  gap:6px;
  padding:10px 18px;
  border-bottom:1px solid var(--line-soft);
  z-index:5;
  background:transparent;
  min-width:0;
}
.aid-top-row2{
  display:flex; align-items:center; justify-content:space-between;
  gap:12px; flex-wrap:wrap;
  min-width:0;
}
.aid-top-actions{ flex-wrap:wrap; }
.aid-top-grouping{ flex-wrap:wrap; }
.aid-top-screen{ font-weight:600; font-size:18px; letter-spacing:-0.005em; }
.aid-top-meta{ display:flex; gap:6px; flex-wrap:wrap; }
.aid-pill{
  font-size:11.5px; padding:3px 9px; border-radius:99px;
  background:color-mix(in oklch, var(--fg) 6%, transparent);
  border:1px solid var(--line-soft);
  color:var(--fg-soft);
}
.aid-pill-ghost{ background:transparent; }
.aid-pill-warn{ background:color-mix(in oklch, var(--accent) 10%, transparent); color:var(--accent); border-color:color-mix(in oklch, var(--accent) 22%, transparent); }
.aid-top-actions{ display:flex; gap:6px; align-items:center; }
/* В topbar actions подгоняем под размер pills (aid-pill) — компактные сегменты,
   тонкая обводка, мини-padding. */
.aid-top-actions .aid-btn-primary,
.aid-top-actions .aid-btn-ghost,
.aid-top-actions .aid-theme-btn{
  font-size:11.5px;
  padding:3px 9px;
  border-radius:99px;
  height:24px;
}
.aid-top-actions .aid-btn-primary svg,
.aid-top-actions .aid-btn-ghost svg{ width:12px; height:12px; }
.aid-top-grouping{ display:flex; gap:2px; padding:2px; background:var(--surface); border-radius:99px; border:1px solid var(--line-soft); }
.aid-seg{
  font-size:11.5px; padding:3px 9px; border-radius:99px;
  color:var(--fg-mute); transition:all .15s;
}
.aid-seg:hover{ color:var(--fg); }
.aid-seg.is-active{ background:color-mix(in oklch, var(--accent) 16%, transparent); color:var(--fg); box-shadow:inset 0 0 0 1px color-mix(in oklch, var(--accent) 18%, transparent); }

.aid-btn-primary{
  background:linear-gradient(180deg, var(--accent), color-mix(in oklch, var(--accent) 75%, var(--bg-deep)));
  color:var(--bg-deep);
  font-weight:600; font-size:13px;
  padding:9px 16px; border-radius:11px;
  box-shadow:0 6px 14px -4px color-mix(in oklch, var(--accent) 45%, transparent), inset 0 1px 0 rgba(255,255,255,0.2);
  transition:transform .12s;
}
.aid-btn-primary:hover{ transform:translateY(-1px); }
.aid-btn-primary:disabled{ opacity:0.5; cursor:not-allowed; }
.aid-btn-ghost{
  background:var(--surface); color:var(--fg-soft);
  font-size:13px; padding:9px 16px; border-radius:11px;
  border:1px solid var(--line);
}
.aid-btn-ghost:hover{ background:var(--surface-2); color:var(--fg); }

/* ==================== STAGE / SCENE ==================== */
/* overflow-y:auto — даёт screen-странице прокручиваться когда контент выше
   viewport (напр. «Показатели»: график + точки + чат раньше squash'ились
   по высоте, чтобы влезть). overflow-x:hidden — не плодим горизонтальный скролл. */
.aid-stage{ position:relative; flex:1; overflow-y:auto; overflow-x:hidden; min-height:0; }
.aid-scene-host{ position:absolute; inset:0; }
.aid-scene-hidden{ visibility:hidden; }
/* Виньетка по углам 3D-сцены — фокус на центре. Точно как у стратега. */
.aid-scene-host:not(.aid-scene-hidden)::after{
  content:'';
  position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(120% 90% at 50% 50%, transparent 50%, oklch(0% 0 0 / 0.40) 100%);
  z-index:1;
}

/* ==================== SCENE MODE ====================
   Когда screen='graph' — весь интерфейс переходит в тёмную «сценную» зону.
   Sidebar, topbar, overlay, панели — всё с тёмными токенами поверх 3D.
   Когда screen != graph — токены берутся из активной темы (medsi/emc). */
.aid-root[data-screen="graph"]{
  --bg:        var(--scene-bg);
  --bg-deep:   var(--scene-bg-deep);
  --surface:   var(--scene-surface);
  --surface-2: var(--scene-surface-2);
  --surface-3: var(--scene-surface-3);
  --line:      var(--scene-line);
  --line-soft: var(--scene-line-soft);
  --fg:        var(--scene-fg);
  --fg-soft:   var(--scene-fg-soft);
  --fg-mute:   var(--scene-fg-mute);
  color:var(--scene-fg);
}
/* Заголовок в scene-режиме — soft halo, чтобы читалось поверх 3D без грязной полосы. */
.aid-root[data-screen="graph"] .aid-top-screen{
  text-shadow:0 2px 22px oklch(0% 0 0 / 0.55), 0 0 1px oklch(0% 0 0 / 0.30);
}
#aid-canvas{ display:block; width:100%; height:100%; }

.aid-tooltip{
  position:fixed; pointer-events:none; z-index:50;
  background:color-mix(in oklch, var(--bg-deep) 92%, transparent);
  border:1px solid var(--line);
  border-radius:12px;
  padding:10px 12px;
  box-shadow:var(--shadow);
  max-width:280px;
  backdrop-filter:blur(10px);
  font-size:12.5px;
}
.aid-tt-eyebrow{ font-size:10.5px; color:var(--fg-mute); text-transform:uppercase; letter-spacing:0.06em; margin-bottom:3px; }
.aid-tt-title{ font-weight:600; font-size:13.5px; line-height:1.3; }
.aid-tt-sub{ color:var(--fg-soft); margin-top:3px; font-size:12px; }
.aid-tt-meta{ color:var(--fg-mute); font-size:11.5px; margin-top:4px; }
.aid-tt-flag{ display:inline-block; margin-top:6px; padding:2px 8px; border-radius:99px; font-size:11px; font-weight:550; }

.aid-legend{
  position:absolute; left:18px; bottom:46px;
  z-index:6;
  display:flex; flex-direction:column;
}
.aid-legend-toggle{
  display:inline-flex; align-items:center; gap:8px;
  font-size:12px; color:var(--fg-soft);
  background:color-mix(in oklch, var(--bg-deep) 78%, transparent);
  border:1px solid var(--line);
  border-radius:99px;
  padding:6px 12px;
  backdrop-filter:blur(10px);
  cursor:pointer;
  transition:color .15s, border-color .15s;
}
.aid-legend-toggle:hover{ color:var(--fg); border-color:color-mix(in oklch, var(--accent) 30%, var(--line)); }
.aid-legend-chev{ transition:transform .15s; opacity:0.7; }
.aid-legend.is-open .aid-legend-chev{ transform:rotate(90deg); }
.aid-legend-body{
  margin-top:6px;
  background:color-mix(in oklch, var(--bg-deep) 80%, transparent);
  border:1px solid var(--line);
  border-radius:12px;
  padding:10px 14px;
  display:flex; flex-direction:column; gap:6px;
  font-size:12.5px; line-height:1.5;
  color:var(--fg-soft);
  backdrop-filter:blur(10px);
  max-width:300px;
}
.aid-legend-tip{ position:relative; padding-left:14px; }
.aid-legend-tip::before{
  content:'·';
  position:absolute; left:4px; top:-2px;
  font-weight:700; color:var(--accent);
  font-size:16px; line-height:1;
}

.aid-pulse-corner{
  position:absolute; left:18px; top:18px;
  background:color-mix(in oklch, var(--bg-deep) 66%, transparent);
  border:1px solid var(--line);
  border-radius:12px;
  padding:8px 12px;
  display:flex; flex-direction:column; gap:2px;
  z-index:6;
  backdrop-filter:blur(8px);
}
.aid-pulse-label{ font-size:11px; color:var(--fg-mute); }
.aid-pulse-svg{ width:160px; height:32px; }

.aid-helphint{
  position:absolute; left:50%; top:24px;
  transform:translateX(-50%);
  background:color-mix(in oklch, var(--bg-deep) 85%, transparent);
  border:1px solid color-mix(in oklch, var(--accent) 22%, transparent);
  border-radius:12px;
  padding:11px 14px;
  max-width:520px;
  cursor:pointer;
  z-index:7;
  backdrop-filter:blur(10px);
  animation:fadeIn .6s ease;
}
.aid-helphint-title{ font-weight:600; font-size:13px; }
.aid-helphint-body{ font-size:12.5px; color:var(--fg-soft); margin-top:4px; }
.aid-helphint-cta{ font-size:11.5px; color:var(--accent); margin-top:6px; }

@keyframes fadeIn{ from{ opacity:0; transform:translateX(-50%) translateY(-6px); } to { opacity:1; transform:translateX(-50%) translateY(0); } }

/* ==================== DETAILS RIGHT PANEL ==================== */
.aid-details{
  position:absolute; right:0; top:0; bottom:0;
  width:380px;
  background:color-mix(in oklch, var(--bg-deep) 94%, transparent);
  border-left:1px solid var(--line);
  display:flex; flex-direction:column;
  padding:18px 20px 20px;
  overflow-y:auto;
  z-index:8;
  backdrop-filter:blur(20px);
  animation:slideRight .25s ease;
}
.aid-details-wide{ width:480px; }
@keyframes slideRight{ from{ transform:translateX(20px); opacity:0; } to{ transform:translateX(0); opacity:1; } }
.aid-details-head{ display:flex; align-items:flex-start; gap:10px; margin-bottom:14px; }
.aid-details-head-text{ flex:1; }
.aid-details-head-right{ display:flex; align-items:center; gap:8px; }
.aid-details-eyebrow{ font-size:11px; color:var(--fg-mute); text-transform:uppercase; letter-spacing:0.06em; }
.aid-details-title{ font-weight:600; font-size:18px; line-height:1.25; margin-top:3px; }
.aid-close{
  width:28px; height:28px; border-radius:8px;
  background:color-mix(in oklch, var(--fg) 6%, transparent);
  font-size:14px; color:var(--fg-soft);
  display:flex; align-items:center; justify-content:center;
  transition:background .15s;
}
.aid-close:hover{ background:color-mix(in oklch, var(--fg) 12%, transparent); color:var(--fg); }

.aid-detail-sub{ color:var(--fg-soft); font-size:13px; margin-bottom:14px; }
.aid-detail-section{
  font-size:11px; color:var(--fg-mute); text-transform:uppercase; letter-spacing:0.08em;
  margin:14px 0 8px;
}
.aid-detail-grid{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.aid-kv{ background:var(--surface); border-radius:10px; padding:8px 10px; }
.aid-kv .k{ font-size:11px; color:var(--fg-mute); }
.aid-kv .v{ font-size:13.5px; font-weight:550; margin-top:2px; }

.aid-doc-meta{ font-size:12px; color:var(--fg-mute); display:flex; gap:6px; align-items:center; }
.aid-doc-excerpt{
  background:var(--surface);
  border:1px solid var(--line-soft);
  border-radius:10px;
  padding:10px 12px;
  font-size:13px; color:var(--fg-soft); line-height:1.55;
  margin-top:10px;
}
.aid-doc-list{ display:flex; flex-direction:column; gap:6px; }
.aid-doc-row{
  display:grid; grid-template-columns:auto 1fr auto auto; gap:8px; align-items:center;
  text-align:left;
  background:var(--surface);
  border:1px solid var(--line-soft);
  border-radius:10px;
  padding:8px 10px;
  transition:all .15s;
}
.aid-doc-row:hover{ background:var(--surface-2); border-color:var(--line); }
.aid-doc-row-date{ font-size:11.5px; color:var(--fg-mute); width:74px; }
.aid-doc-row-title{ font-size:13px; font-weight:500; }
.aid-doc-row-meta{ font-size:11.5px; color:var(--fg-mute); }

.aid-flag-badge{ font-size:11px; font-weight:550; padding:3px 9px; border-radius:99px; white-space:nowrap; }
.aid-flag-dot{ width:8px; height:8px; border-radius:99px; }

.aid-facts{ display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.aid-fact{
  text-align:left;
  background:var(--surface); border:1px solid var(--line-soft);
  border-radius:10px; padding:9px 11px;
  transition:all .15s;
  cursor:default;  /* по умолчанию не кликабельный */
}
/* Только показатели у которых есть timeseries — выглядят как кнопка */
.aid-fact.is-clickable{ cursor:pointer; }
.aid-fact.is-clickable:hover{
  background:var(--surface-2);
  border-color:color-mix(in oklch, var(--accent) 30%, transparent);
}
.aid-fact-k{ font-size:11px; color:var(--fg-mute); }
.aid-fact-v{ font-weight:600; font-size:14.5px; margin-top:2px; }
.aid-fact-ref{ font-size:10.5px; color:var(--fg-mute); margin-top:2px; }
.aid-fact.flag-high   { border-left:3px solid var(--accent); }
.aid-fact.flag-borderline { border-left:3px solid var(--warn); }
.aid-fact.flag-normal { border-left:3px solid var(--accent-2); }
.aid-detail-tip{ font-size:11px; color:var(--fg-mute); margin-top:6px; font-style:italic; }

.aid-pdf-mock{
  background:var(--surface-3); border:1px solid var(--line); border-radius:10px;
  padding:14px;
}
.aid-pdf-page{ display:flex; flex-direction:column; gap:6px; }
.aid-pdf-line{ height:7px; background:color-mix(in oklch, var(--fg) 10%, transparent); border-radius:3px; }
.aid-pdf-line.w50{ width:50%; }
.aid-pdf-line.w65{ width:65%; }
.aid-pdf-line.w70{ width:70%; }
.aid-pdf-line.w80{ width:80%; }
.aid-pdf-line.w90{ width:90%; }
.aid-pdf-line.w100{ width:100%; }
.aid-pdf-hl{
  background:color-mix(in oklch, var(--accent) 16%, transparent);
  color:var(--fg); border-left:3px solid var(--accent);
  padding:6px 8px; border-radius:4px;
  font-size:12px;
}
.aid-pdf-hl-soft{
  background:rgba(255,178,122,0.14);
  color:var(--fg); border-left:3px solid var(--warn);
  padding:6px 8px; border-radius:4px;
  font-size:12px;
}
.aid-pdf-foot{ font-size:11px; color:var(--fg-mute); margin-top:8px; font-style:italic; }

.aid-mini-charts{ display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.aid-mini-chart{
  background:var(--surface); border:1px solid var(--line-soft);
  border-radius:10px; padding:8px;
  display:flex; flex-direction:column; gap:4px; align-items:flex-start;
  transition:all .15s;
}
.aid-mini-chart:hover{ background:var(--surface-2); border-color:color-mix(in oklch, var(--accent) 20%, transparent); }
.aid-mini-chart-wide{ grid-column:1/-1; }
.aid-spark{ width:100%; height:36px; }
.aid-mini-label{ font-size:11.5px; color:var(--fg-soft); text-align:left; }

.aid-detail-disclaimer{
  background:rgba(255,178,122,0.08);
  border:1px solid rgba(255,178,122,0.22);
  border-radius:10px;
  padding:9px 11px;
  font-size:12px;
  color:var(--accent-2);
  margin-top:14px;
}
.aid-detail-actions{ display:flex; gap:6px; margin-top:10px; flex-wrap:wrap; }
/* В aside кнопки действий компактнее: pill-размеры, мелкая иконка. Полный
   размер (.aid-btn) сохраняется только в FS-модалке через override. */
.aid-detail-actions .aid-btn-ghost,
.aid-detail-actions .aid-btn-primary{
  font-size:11.5px;
  padding:4px 10px;
  border-radius:8px;
  height:26px;
  display:inline-flex; align-items:center;
}
.aid-detail-actions svg{ width:12px; height:12px; }

/* ==================== SCREENS ==================== */
/* Раньше aid-screen был absolute+inset:0 с собственным overflow-y:auto.
   Перенесли скролл на aid-stage (просьба юзера) — теперь screen может расти
   вниз естественно, а stage прокручивает. min-height:100% — если контента мало,
   подложка под 3D-сценой остаётся непрозрачной до низа stage. */
.aid-screen{
  position:relative;
  min-height:100%;
  padding:18px 28px 70px;
  background:var(--bg);
  z-index:4;
}
.aid-feed-head{ margin-bottom:18px; }
.aid-feed-title{ font-weight:600; font-size:22px; }
.aid-feed-sub{ color:var(--fg-soft); margin-top:4px; font-size:13.5px; max-width:680px; }

/* feed */
.aid-feed-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:12px; }
.aid-feed-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px 16px;
  cursor:pointer;
  transition:all .18s;
  display:flex; flex-direction:column; gap:8px;
  position:relative;
  overflow:hidden;
}
.aid-feed-card:hover{ background:var(--surface-2); transform:translateY(-2px); border-color:color-mix(in oklch, var(--accent) 18%, transparent); }
.aid-feed-card.prio-attention{ border-left:3px solid var(--accent); }
.aid-feed-card.prio-soft{ border-left:3px solid var(--warn); }
.aid-feed-card-eyebrow{ display:flex; gap:8px; align-items:center; justify-content:space-between; }
.aid-feed-card-date{ font-size:11px; color:var(--fg-mute); }
.aid-feed-card-title{ font-size:15px; font-weight:600; line-height:1.3; margin:0; }
.aid-feed-card-body{ font-size:12.5px; color:var(--fg-soft); margin:0; line-height:1.5; }
.aid-feed-spark{ background:color-mix(in oklch, var(--fg) 4%, transparent); border-radius:8px; padding:6px; }
.aid-feed-card-foot{ display:flex; justify-content:space-between; font-size:11.5px; color:var(--fg-mute); margin-top:auto; padding-top:6px; }
.aid-feed-card-arrow{ color:var(--accent); }

/* chart */
.aid-screen-chart{ display:flex; flex-direction:column; gap:14px; }
.aid-chart-empty{
  margin:60px auto; max-width:520px;
  padding:32px 28px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:14px;
  text-align:center;
}
.aid-chart-empty-title{
  font-size:16px; font-weight:600; color:var(--fg); margin-bottom:8px;
}
.aid-chart-empty-text{
  font-size:13px; color:var(--fg-soft); line-height:1.55;
}
.aid-chart-head{ display:flex; justify-content:space-between; align-items:center; }
.aid-chart-tabs{ display:flex; gap:4px; flex-wrap:wrap; }
.aid-chart-tab{
  font-size:13px; padding:7px 12px; border-radius:10px;
  background:var(--surface); color:var(--fg-soft);
  border:1px solid var(--line-soft);
}
.aid-chart-tab.is-active{ background:color-mix(in oklch, var(--accent) 16%, transparent); color:var(--fg); border-color:color-mix(in oklch, var(--accent) 22%, transparent); }
.aid-chart-meta{ font-size:12.5px; color:var(--fg-mute); }
.aid-bigchart{
  display:block;
  width:100%;
  /* viewBox 1100x340; на широких экранах SVG из-за preserveAspectRatio=meet
     fit'ился по min-оси и оставался ~1100px по центру 1640px-контейнера,
     отчего смотрелся мелким. Через aspect-ratio высота сама подгоняется
     под ширину, max-height ограничивает рост на сверх-широких мониторах.
     flex-shrink:0 — flex-parent не должен ужимать график когда контент
     ниже (chart-points + чат) не помещается; просьба юзера — пусть скроллится. */
  height:auto;
  aspect-ratio: 1100 / 340;
  max-height:520px;
  flex-shrink:0;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:14px;
}
.aid-chart-points{ display:grid; grid-template-columns:repeat(auto-fill, minmax(200px,1fr)); gap:8px; }
.aid-chart-point{
  text-align:left; background:var(--surface); border:1px solid var(--line-soft);
  border-radius:10px; padding:9px 11px;
  display:grid; grid-template-columns:auto auto 1fr; gap:6px 10px; align-items:center;
}
.aid-chart-point:hover{ background:var(--surface-2); }
.aid-chart-point-date{ font-size:11.5px; color:var(--fg-mute); }
.aid-chart-point-value{ font-weight:600; font-size:13.5px; }
.aid-chart-point-doc{ grid-column:1/-1; font-size:11.5px; color:var(--fg-soft); }

/* patients */
.aid-screen-patients{ }
.aid-patients-head{ margin-bottom:18px; }
.aid-patients-title{ font-weight:600; font-size:22px; }
.aid-patients-sub{ color:var(--fg-soft); margin-top:4px; }
.aid-patients-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:12px; }
.aid-patient-card{
  text-align:left; background:var(--surface); border:1px solid var(--line);
  border-radius:14px; padding:16px;
  display:flex; flex-direction:column; gap:6px;
  transition:all .18s;
  cursor:pointer;
}
.aid-patient-card:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.aid-patient-card:hover{ background:var(--surface-2); transform:translateY(-2px); }
.aid-patient-card.is-active{ border-color:color-mix(in oklch, var(--accent) 40%, transparent); box-shadow:0 0 0 1px color-mix(in oklch, var(--accent) 30%, transparent) inset, 0 12px 32px -10px color-mix(in oklch, var(--accent) 20%, transparent); }
/* .aid-patient-avatar — стиль определён выше (164px round). Этот legacy-блок убран,
   чтобы не оверрайдить круглый аватар на квадратный. */
.aid-patient-name{ font-weight:600; font-size:15px; }
.aid-patient-role{ font-size:12px; color:var(--fg-mute); }
.aid-patient-status{ display:flex; flex-direction:column; gap:3px; margin-top:6px; }
.aid-patient-dx{ font-size:11.5px; color:var(--fg-soft); padding:2px 8px; background:color-mix(in oklch, var(--accent) 10%, transparent); border-radius:99px; align-self:flex-start; }
.aid-patient-foot{
  font-size:11px; color:var(--fg-mute); margin-top:auto; padding-top:6px;
  border-top:1px solid var(--line-soft);
  display:flex; align-items:center; justify-content:space-between; gap:8px;
}
.aid-patient-settings{
  width:24px; height:24px; border-radius:6px;
  display:flex; align-items:center; justify-content:center;
  color:var(--fg-mute); border:1px solid transparent; transition:all .15s;
}
.aid-patient-settings:hover{
  color:var(--accent); background:color-mix(in oklch, var(--accent) 10%, transparent);
  border-color:color-mix(in oklch, var(--accent) 25%, transparent);
}
/* form grid в модалках */
.aid-form-grid{ display:flex; flex-direction:column; gap:12px; }
.aid-form-row{ display:flex; flex-direction:column; gap:5px; }
.aid-form-row > span{
  font-size:11px; color:var(--fg-mute); text-transform:uppercase; letter-spacing:.08em;
}
.aid-form-row > input,
.aid-form-row > select{
  background:var(--surface); border:1px solid var(--line); color:var(--fg);
  padding:9px 12px; border-radius:var(--radius-sm); font:inherit; font-size:14px;
}
.aid-form-row > input:focus,
.aid-form-row > select:focus{ outline:none; border-color:var(--accent); }
.aid-patient-card-add{ display:flex; align-items:center; justify-content:center; text-align:center; border-style:dashed; color:var(--fg-mute); }
.aid-patient-card-add:hover{ color:var(--fg); }
.aid-patient-add-icon{ font-size:36px; line-height:1; margin-bottom:8px; }

/* upload */
.aid-screen-upload{ }
.aid-upload-head{ margin-bottom:18px; }
.aid-dropzone{
  margin:30px auto 0; max-width:680px;
  background:var(--surface); border:2px dashed color-mix(in oklch, var(--accent) 30%, transparent);
  border-radius:18px;
  padding:50px 30px;
  text-align:center;
  cursor:pointer;
  transition:all .2s;
}
.aid-dropzone:hover{ background:var(--surface-2); border-color:color-mix(in oklch, var(--accent) 55%, transparent); }
.aid-dropzone-icon{ font-size:42px; color:var(--accent); margin-bottom:10px; }
.aid-dropzone-title{ font-size:17px; font-weight:600; }
.aid-dropzone-sub{ font-size:12.5px; color:var(--fg-mute); margin-top:6px; }
.aid-dropzone-cta{ display:inline-block; margin-top:18px; font-size:12.5px; color:var(--accent); border:1px solid color-mix(in oklch, var(--accent) 40%, transparent); padding:6px 14px; border-radius:99px; }

.aid-upload-progress{
  max-width:680px; margin:30px auto 0;
  background:var(--surface); border:1px solid var(--line);
  border-radius:14px; padding:22px;
}
.aid-upload-file{ display:flex; gap:12px; align-items:center; padding-bottom:14px; border-bottom:1px solid var(--line-soft); }
.aid-upload-file-icon{ width:42px; height:48px; background:color-mix(in oklch, var(--accent) 16%, transparent); color:var(--accent); border-radius:8px; display:flex; align-items:center; justify-content:center; font-weight:600; font-size:11px; }
.aid-upload-file-name{ font-weight:550; font-size:14px; }
.aid-upload-file-size{ font-size:11.5px; color:var(--fg-mute); margin-top:2px; }
.aid-upload-stages{ display:flex; flex-direction:column; gap:8px; margin-top:14px; }
.aid-up-stage{ background:color-mix(in oklch, var(--fg) 4%, transparent); border-radius:10px; padding:10px 12px; }
.aid-up-stage-row{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px; }
.aid-up-stage-dot{ font-size:14px; color:var(--fg-mute); }
.aid-up-stage.is-active .aid-up-stage-dot{ color:var(--accent); animation:blink 1s infinite; }
.aid-up-stage.is-done .aid-up-stage-dot{ color:var(--accent-2); }
@keyframes blink{ 0%,100%{ opacity:1; } 50%{ opacity:0.4; } }
.aid-up-stage-label{ font-size:13px; }
.aid-up-stage-pct{ font-size:11.5px; color:var(--fg-mute); }
.aid-up-stage-bar{ height:3px; background:color-mix(in oklch, var(--fg) 6%, transparent); border-radius:99px; overflow:hidden; margin-top:6px; }
.aid-up-stage-fill{ height:100%; background:var(--accent); transition:width .15s; }
.aid-upload-tip{ font-size:11.5px; color:var(--fg-mute); margin-top:14px; padding-top:12px; border-top:1px solid var(--line-soft); }

.aid-upload-done{ max-width:680px; margin:60px auto 0; text-align:center; padding:30px; background:var(--surface); border-radius:14px; border:1px solid var(--line); }
.aid-upload-done-icon{ width:60px; height:60px; border-radius:99px; background:color-mix(in oklch, var(--accent-2) 16%, transparent); color:var(--accent-2); display:flex; align-items:center; justify-content:center; font-size:30px; margin:0 auto 14px; }
.aid-upload-done-title{ font-size:18px; font-weight:600; }
.aid-upload-done-sub{ font-size:13px; color:var(--fg-soft); margin-top:6px; margin-bottom:18px; max-height:50vh; overflow-y:auto; padding-right:6px; }
.aid-upload-done-actions{ display:flex; gap:10px; justify-content:center; margin-top:14px; }

/* Progress-bar при «Распознать все» — наглядно показывает X из Y */
.aid-upload-progress-bar{
  position:relative;
  margin:14px auto 8px; max-width:560px;
  height:32px;
  background:color-mix(in oklch, var(--fg) 6%, transparent);
  border:1px solid var(--line-soft);
  border-radius:99px;
  overflow:hidden;
}
.aid-upload-progress-fill{
  position:absolute; top:0; left:0; bottom:0;
  background:linear-gradient(90deg,
    color-mix(in oklch, var(--accent) 70%, transparent),
    var(--accent));
  border-radius:99px;
  transition:width .35s cubic-bezier(.4,.14,.3,1);
  box-shadow:0 0 18px -4px color-mix(in oklch, var(--accent) 50%, transparent);
}
.aid-upload-progress-fill::after{
  /* «бегущая полоса» поверх — индикатор что AI работает */
  content:''; position:absolute; inset:0;
  background:linear-gradient(90deg, transparent 0%,
    color-mix(in oklch, oklch(100% 0 0) 30%, transparent) 50%, transparent 100%);
  animation: aid-stripe 1.4s linear infinite;
  background-size:80px 100%;
}
@keyframes aid-stripe{
  0%   { background-position: -80px 0; }
  100% { background-position: 100% 0; }
}
.aid-upload-progress-text{
  position:absolute; inset:0;
  display:flex; align-items:center; justify-content:center;
  font-size:12.5px; font-weight:550;
  color:var(--fg);
  text-shadow:0 1px 2px color-mix(in oklch, oklch(0% 0 0) 25%, transparent);
}

/* Подсветка строки которая сейчас разбирается AI */
.aid-upload-done-row.is-running{
  background:color-mix(in oklch, var(--accent) 8%, transparent);
  border-radius:6px; padding:6px 8px;
  position:relative;
}
.aid-upload-done-row.is-running::before{
  content:''; display:inline-block;
  width:8px; height:8px; border-radius:99px;
  background:var(--accent);
  margin-right:8px;
  animation: aid-pulse-dot 1.2s ease-in-out infinite;
}
@keyframes aid-pulse-dot{
  0%,100% { opacity:0.4; transform:scale(0.85); }
  50%     { opacity:1;   transform:scale(1.2); }
}
.aid-upload-done-row.is-done{ color:var(--accent-2); }
.aid-upload-done-row.is-error{ color:var(--danger); }
.aid-upload-done-row.is-mismatch{ color:var(--warn); }

/* Алерт «ФИО не совпадает» */
.aid-name-mismatch{
  display:flex; gap:12px;
  margin:6px 0 12px; padding:12px 14px;
  background:color-mix(in oklch, var(--warn) 12%, transparent);
  border:1px solid color-mix(in oklch, var(--warn) 35%, transparent);
  border-radius:var(--radius);
}
.aid-name-mismatch-icon{ color:var(--warn); flex-shrink:0; padding-top:2px; }
.aid-name-mismatch-body{ flex:1; min-width:0; }
.aid-name-mismatch-title{
  font-weight:600; font-size:13.5px; color:var(--fg);
  margin-bottom:4px;
}
.aid-name-mismatch-text{ font-size:12.5px; color:var(--fg-soft); line-height:1.5; }
.aid-name-mismatch-text strong{ color:var(--fg); font-weight:600; }
.aid-name-mismatch-actions{ display:flex; gap:8px; margin-top:8px; }
.aid-btn-danger{
  color:var(--danger); border-color:color-mix(in oklch, var(--danger) 35%, transparent);
}
.aid-btn-danger:hover{
  background:color-mix(in oklch, var(--danger) 12%, transparent);
}
.aid-upload-done-row{ display:flex; gap:10px; align-items:center; padding:6px 0; border-bottom:1px solid var(--line-soft); text-align:left; }
.aid-upload-done-row:last-child{ border-bottom:none; }
.aid-upload-done-row-name{ font-weight:500; color:var(--fg); flex-shrink:0; max-width:50%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.aid-upload-done-row-status{ flex:1; color:var(--fg-mute); font-size:12.5px; }
.aid-btn-mini{ padding:3px 10px !important; font-size:12px !important; }

/* upload review (AI-rename / manual) */
.aid-upload-review{ max-width:780px; margin:24px auto 0; padding:24px 28px; background:var(--surface); border:1px solid var(--line); border-radius:16px; }
.aid-upload-review-head{ font-size:13px; color:var(--fg-soft); margin-bottom:18px; }
.aid-upload-review-list{ display:flex; flex-direction:column; gap:14px; }
.aid-upload-review-row{ padding:14px 16px; background:var(--surface-2); border:1px solid var(--line); border-radius:12px; display:flex; flex-direction:column; gap:10px; }
.aid-upload-review-row-head{ display:flex; gap:12px; align-items:center; }
.aid-upload-review-row-meta{ flex:1; min-width:0; }
.aid-upload-review-row-name{ font-weight:550; font-size:14px; word-break:break-all; }
.aid-upload-review-row-size{ font-size:11.5px; color:var(--fg-mute); margin-top:2px; }
.aid-upload-review-toggle{ display:flex; align-items:center; gap:8px; font-size:13px; color:var(--fg-soft); cursor:pointer; }
.aid-upload-review-toggle input{ accent-color:var(--accent); }
.aid-upload-review-form{ display:grid; grid-template-columns:1fr 220px; gap:10px; }
.aid-upload-review-field{ display:flex; flex-direction:column; gap:4px; }
.aid-upload-review-field span{ font-size:11px; color:var(--fg-mute); text-transform:uppercase; letter-spacing:.08em; }
.aid-upload-review-field input,
.aid-upload-review-field select{
  background:var(--surface); border:1px solid var(--line); color:var(--fg);
  padding:8px 10px; border-radius:8px; font-size:13px; font-family:inherit;
}
.aid-upload-review-field input:focus,
.aid-upload-review-field select:focus{ outline:none; border-color:var(--accent); }
.aid-upload-review-foot{ display:flex; justify-content:flex-end; gap:10px; margin-top:18px; }
@media (max-width:560px){
  .aid-upload-review-form{ grid-template-columns:1fr; }
}

/* wearables */
.aid-screen-wearables{ }
.aid-wearables-section-title{ font:500 11px/1 var(--font-mono); letter-spacing:.18em; text-transform:uppercase; opacity:.6; margin:24px 0 10px; }
.aid-wearables-list{ display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:12px; }
.aid-wearables-card{
  padding:16px 18px; background:var(--surface); border:1px solid var(--line);
  border-radius:14px; display:flex; flex-direction:column; gap:8px;
}
.aid-wearables-card.is-connected{ border-color:color-mix(in oklch, var(--accent-2) 40%, transparent); }
.aid-wearables-card.is-planned{ opacity:.65; }
.aid-wearables-card-head{ display:flex; justify-content:space-between; align-items:center; gap:10px; }
.aid-wearables-card-name{ font-weight:600; font-size:14px; }
.aid-wearables-pill{ font:500 10px/1 var(--font-mono); padding:3px 8px; border-radius:99px; background:var(--surface-2); color:var(--fg-mute); letter-spacing:.05em; }
.aid-wearables-pill.is-active,
.aid-wearables-pill.is-ready{ background:color-mix(in oklch, var(--accent-2) 16%, transparent); color:var(--accent-2); }
.aid-wearables-pill.is-needs_credentials{ background:color-mix(in oklch, var(--warn) 16%, transparent); color:var(--warn); }
.aid-wearables-pill.is-revoked,
.aid-wearables-pill.is-error{ background:color-mix(in oklch, var(--danger) 14%, transparent); color:var(--danger); }
.aid-wearables-card-meta{ font-size:12px; color:var(--fg-soft); line-height:1.5; }
.aid-wearables-card-warn{ font-size:12px; color:var(--danger); }
.aid-wearables-card-actions{ margin-top:6px; }
.aid-wearables-error{ padding:10px 14px; background:color-mix(in oklch, var(--danger) 14%, transparent); color:var(--danger); border-radius:8px; font-size:13px; margin-bottom:14px; }

/* library + recent docs */
.aid-screen-library{}
.aid-lib-controls{
  display:flex; gap:10px; align-items:center; margin-bottom:14px; flex-wrap:wrap;
}
.aid-lib-search{
  flex:1; min-width:240px;
  display:flex; align-items:center; gap:8px;
  padding:8px 12px; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius);
}
.aid-lib-search svg{ color:var(--fg-mute); flex-shrink:0; }
.aid-lib-search input{
  flex:1; background:transparent; border:0; outline:none;
  color:var(--fg); font:inherit; font-size:13.5px;
}
.aid-lib-search input::placeholder{ color:var(--fg-mute); }
.aid-lib-select{
  padding:8px 10px; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius); color:var(--fg); font:inherit; font-size:13px;
  cursor:pointer;
}
.aid-lib-select:focus{ outline:none; border-color:var(--accent); }
.aid-lib-grid{
  display:flex; flex-direction:column; gap:6px;
}
.aid-lib-card{
  display:grid; grid-template-columns:1fr auto;
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius); transition:all .18s;
}
.aid-lib-card:hover{ background:var(--surface-2); border-color:color-mix(in oklch, var(--accent) 25%, var(--line)); }
.aid-lib-card-main{
  display:flex; gap:12px; padding:12px 14px;
  background:transparent; border:0; text-align:left; cursor:pointer; min-width:0;
  color:inherit; font:inherit;
}
.aid-lib-card-icon{
  width:42px; height:48px; flex-shrink:0;
  background:color-mix(in oklch, var(--accent) 14%, transparent);
  color:var(--accent);
  border-radius:var(--radius-sm);
  display:flex; align-items:center; justify-content:center;
  font-weight:600; font-size:11px; letter-spacing:.05em;
}
.aid-lib-card-icon.flag-attention,
.aid-lib-card-icon.flag-high{ background:color-mix(in oklch, var(--danger) 14%, transparent); color:var(--danger); }
.aid-lib-card-icon.flag-borderline{ background:color-mix(in oklch, var(--warn) 14%, transparent); color:var(--warn); }
.aid-lib-card-icon.flag-normal{ background:color-mix(in oklch, var(--accent-2) 14%, transparent); color:var(--accent-2); }
.aid-lib-card-body{ min-width:0; flex:1; }
.aid-lib-card-title{
  font-weight:550; font-size:14px; line-height:1.3;
  word-break:break-word;
  /* в списке заголовок одной строкой с ellipsis */
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.aid-lib-card-meta{
  font-size:11.5px; color:var(--fg-mute); margin-top:3px;
  display:flex; gap:6px; flex-wrap:wrap;
}
.aid-lib-card-kind{ color:var(--accent); font-weight:500; }
.aid-lib-card-excerpt{
  font-size:12px; color:var(--fg-soft); margin-top:4px; line-height:1.4;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.aid-lib-card-actions{ display:flex; align-items:flex-start; padding:12px 12px 0 0; gap:6px; }
.aid-lib-card-action{
  width:30px; height:30px; border-radius:var(--radius-sm);
  display:flex; align-items:center; justify-content:center;
  color:var(--fg-mute); border:1px solid transparent;
  transition:all .15s;
}
.aid-lib-card-action:hover{ color:var(--accent); border-color:color-mix(in oklch, var(--accent) 30%, transparent); background:color-mix(in oklch, var(--accent) 8%, transparent); }
.aid-lib-card-action.is-disabled{ color:var(--fg-mute); cursor:default; }
.aid-lib-card-action.is-disabled:hover{ background:transparent; border-color:transparent; color:var(--fg-mute); }
.aid-detail-nofile{
  margin:10px 0 4px; padding:10px 14px;
  background:color-mix(in oklch, var(--fg) 5%, transparent);
  color:var(--fg-mute); font-size:12.5px;
  border:1px dashed var(--line); border-radius:var(--radius-sm);
}
.aid-reanalyze-msg{
  margin-top:8px; padding:8px 12px;
  background:color-mix(in oklch, var(--accent-2) 14%, transparent);
  color:var(--fg); font-size:12.5px;
  border-radius:var(--radius-sm);
  display:flex; align-items:center; flex-wrap:wrap; gap:6px;
}
.aid-reanalyze-msg.is-error{
  background:color-mix(in oklch, var(--danger) 12%, transparent);
  color:var(--danger);
}
.aid-lib-empty{
  padding:50px 20px; text-align:center; color:var(--fg-mute);
  background:var(--surface); border:1px dashed var(--line); border-radius:var(--radius); font-size:14px;
}
.aid-lib-empty a{ color:var(--accent); text-decoration:none; }
.aid-lib-empty a:hover{ text-decoration:underline; }

/* recent docs strip — горизонтальная лента в начале feed */
.aid-recent{ margin-bottom:24px; }
.aid-recent-head{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:10px; }
.aid-recent-title{ font:500 11px/1 var(--font-mono); letter-spacing:.18em; text-transform:uppercase; color:var(--fg-soft); }
.aid-recent-more{ font-size:12px; color:var(--accent); }
.aid-recent-more:hover{ text-decoration:underline; }
.aid-recent-row{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(180px, 1fr)); gap:8px;
}
.aid-recent-card{
  position:relative;
  text-align:left; padding:10px 12px; background:var(--surface);
  border:1px solid var(--line); border-radius:var(--radius); transition:all .18s;
}
.aid-recent-card:hover{ background:var(--surface-2); transform:translateY(-1px); border-color:color-mix(in oklch, var(--accent) 25%, var(--line)); }
.aid-recent-card-flag{ position:absolute; top:10px; right:10px; width:8px; height:8px; border-radius:99px; background:var(--accent-2); }
.aid-recent-card-flag.flag-attention,
.aid-recent-card-flag.flag-high{ background:var(--danger); }
.aid-recent-card-flag.flag-borderline{ background:var(--warn); }
.aid-recent-card-title{
  font-size:13px; font-weight:500; line-height:1.35;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
  padding-right:14px;
}
.aid-recent-card-meta{ font-size:11px; color:var(--fg-mute); margin-top:4px; }

/* markdown в AI-сообщениях */
.aid-md{ line-height:1.55; }
.aid-md > *:first-child{ margin-top:0; }
.aid-md > *:last-child{ margin-bottom:0; }
.aid-md p{ margin:0 0 8px; }
.aid-md p:last-child{ margin-bottom:0; }
.aid-md h1, .aid-md h2, .aid-md h3, .aid-md h4{
  margin:14px 0 6px; font-weight:600; line-height:1.3;
}
.aid-md h1{ font-size:17px; }
.aid-md h2{ font-size:15.5px; }
.aid-md h3{ font-size:14.5px; }
.aid-md h4{ font-size:13.5px; }
.aid-md ul, .aid-md ol{ margin:6px 0 10px; padding-left:22px; }
.aid-md li{ margin:3px 0; }
.aid-md li > p{ margin:0; }
.aid-md ul ul, .aid-md ol ol, .aid-md ul ol, .aid-md ol ul{ margin:2px 0; }
.aid-md strong{ font-weight:600; color:var(--fg); }
.aid-md em{ font-style:italic; }
.aid-md code{
  background:color-mix(in oklch, var(--fg) 7%, transparent);
  padding:1px 5px; border-radius:4px; font-size:.92em;
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
}
.aid-md pre{
  background:color-mix(in oklch, var(--fg) 7%, transparent);
  padding:10px 12px; border-radius:8px; overflow-x:auto;
  margin:8px 0; font-size:.92em;
}
.aid-md pre code{ background:transparent; padding:0; }
.aid-md blockquote{
  border-left:3px solid color-mix(in oklch, var(--accent) 50%, transparent);
  margin:6px 0; padding:2px 0 2px 12px;
  color:var(--fg-soft);
}
.aid-md hr{ border:0; border-top:1px solid var(--line); margin:10px 0; }
.aid-md a{ color:var(--accent); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:2px; }
.aid-md table{ border-collapse:collapse; margin:8px 0; }
.aid-md th, .aid-md td{ border:1px solid var(--line); padding:4px 8px; text-align:left; }
.aid-md th{ background:color-mix(in oklch, var(--fg) 5%, transparent); font-weight:600; }

/* ПКМ-меню в 3D-сцене — frosted-pop, с привязкой к точке клика. */
.aid-ctx-menu{
  position:fixed; z-index:200;
  min-width:240px; max-width:320px;
  background:color-mix(in oklch, var(--scene-bg-deep) 92%, transparent);
  border:1px solid color-mix(in oklch, var(--scene-fg) 14%, transparent);
  border-radius:12px;
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  box-shadow:0 24px 60px -16px rgba(0,0,0,0.55), 0 4px 12px -4px rgba(0,0,0,0.35);
  padding:6px;
  color:var(--scene-fg);
  font-size:13px;
  animation:aid-ctx-fade-in .14s ease-out both;
}
@keyframes aid-ctx-fade-in{
  from{ opacity:0; transform:translateY(-4px) scale(0.98); }
  to  { opacity:1; transform:translateY(0) scale(1); }
}
.aid-ctx-head{
  padding:6px 10px 1px;
  font-weight:600; font-size:13px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.aid-ctx-sub{
  padding:0 10px 6px;
  font-size:10.5px; color:color-mix(in oklch, var(--scene-fg) 55%, transparent);
  letter-spacing:0.04em; text-transform:uppercase;
}
.aid-ctx-sep{
  height:1px; background:color-mix(in oklch, var(--scene-fg) 12%, transparent);
  margin:5px 6px;
}
.aid-ctx-item{
  display:flex; align-items:center; gap:10px; width:100%;
  padding:8px 10px; border-radius:8px; cursor:pointer;
  background:transparent; border:0; color:inherit; text-align:left;
  font:inherit; transition:background .12s, color .12s;
  text-decoration:none;
}
.aid-ctx-item:hover,
.aid-ctx-item:focus{
  background:color-mix(in oklch, var(--accent) 22%, transparent);
  color:var(--scene-fg); outline:none;
}
.aid-ctx-item svg{
  flex-shrink:0; opacity:0.85;
}
.aid-ctx-item span:nth-child(2){ flex:1; }
.aid-ctx-kbd{
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
  font-size:10.5px;
  padding:2px 6px; border-radius:5px;
  background:color-mix(in oklch, var(--scene-fg) 8%, transparent);
  color:color-mix(in oklch, var(--scene-fg) 70%, transparent);
}

/* Кастомный скролл — для всех "контейнеров с историей" в чатах. */
.aid-doc-chat-msgs,
.aid-chat-msgs{
  scrollbar-width:thin;
  scrollbar-color: color-mix(in oklch, var(--accent) 35%, transparent) transparent;
}
.aid-doc-chat-msgs::-webkit-scrollbar,
.aid-chat-msgs::-webkit-scrollbar{ width:8px; }
.aid-doc-chat-msgs::-webkit-scrollbar-track,
.aid-chat-msgs::-webkit-scrollbar-track{ background:transparent; }
.aid-doc-chat-msgs::-webkit-scrollbar-thumb,
.aid-chat-msgs::-webkit-scrollbar-thumb{
  background:color-mix(in oklch, var(--accent) 30%, transparent);
  border-radius:99px;
  border:2px solid transparent; background-clip:content-box;
}
.aid-doc-chat-msgs::-webkit-scrollbar-thumb:hover,
.aid-chat-msgs::-webkit-scrollbar-thumb:hover{
  background:color-mix(in oklch, var(--accent) 55%, transparent);
  background-clip:content-box;
}

/* Кнопка очистки истории чата */
.aid-chat-toolbar,
.aid-doc-chat-toolbar{
  display:flex; justify-content:flex-end;
  margin-bottom:6px;
}
.aid-chat-clear{
  display:inline-flex; align-items:center; gap:6px;
  padding:5px 10px; border-radius:99px; font-size:11.5px;
  color:var(--fg-mute); background:transparent;
  border:1px solid var(--line-soft); transition:all .15s;
}
.aid-chat-clear:hover{
  color:var(--danger);
  border-color:color-mix(in oklch, var(--danger) 30%, transparent);
  background:color-mix(in oklch, var(--danger) 8%, transparent);
}
.aid-chat-clear svg{ flex-shrink:0; }

/* Сворачиваемые секции в карточках документов */
.aid-collapsible{ margin-top:14px; }
.aid-collapsible-head{
  display:flex; align-items:center; gap:8px; width:100%;
  padding:6px 0; cursor:pointer; user-select:none;
  background:transparent; border:0; text-align:left;
  font:inherit;
  color:var(--fg-mute); text-transform:uppercase; letter-spacing:0.08em;
  font-size:11px;
}
.aid-collapsible-head:hover{ color:var(--fg); }
.aid-collapsible-chev{
  flex-shrink:0; transition:transform .18s;
  color:var(--fg-mute);
}
.aid-collapsible.is-open .aid-collapsible-chev{ transform:rotate(90deg); }
.aid-collapsible-count{
  font-size:10.5px; padding:2px 7px; border-radius:99px;
  background:color-mix(in oklch, var(--fg) 6%, transparent);
  color:var(--fg-soft); margin-left:auto;
  font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  letter-spacing:0;
}
.aid-collapsible-body{ margin-top:8px; }

/* doc chat — отдельный тред на каждый документ внутри его карточки.
   Сделан крупным и удобным; тред persist-ится на сервере (per doc_id). */
.aid-doc-chat{
  display:flex; flex-direction:column; gap:10px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  padding:16px;
  margin-top:6px;
}
.aid-doc-chat-msgs{
  display:flex; flex-direction:column; gap:10px;
  max-height:520px; min-height:160px; overflow-y:auto;
  padding:2px 4px;
}
.aid-doc-chat-empty{
  color:var(--fg-mute); font-size:13.5px; padding:24px 10px; text-align:center;
  line-height:1.5;
}
.aid-doc-chat-loading{
  color:var(--fg-mute); font-size:13px; padding:18px;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
}
.aid-doc-chat-msg{ display:flex; }
.aid-doc-chat-msg.role-user{ justify-content:flex-end; }
.aid-doc-chat-msg.role-assistant{ justify-content:flex-start; }
.aid-doc-chat-bubble{
  padding:12px 16px; border-radius:16px; font-size:14px; line-height:1.55;
  max-width:88%; word-wrap:break-word; white-space:pre-wrap;
}
.aid-doc-chat-msg.role-user .aid-doc-chat-bubble{
  background:var(--accent); color:var(--bg-deep);
  border-bottom-right-radius:6px;
  white-space:pre-wrap;
}
.aid-doc-chat-msg.role-assistant .aid-doc-chat-bubble{
  background:var(--surface-2); color:var(--fg);
  border:1px solid var(--line-soft);
  border-bottom-left-radius:6px;
  white-space:normal; /* markdown сам управляет переносами */
}
.aid-doc-chat-typing{ font-size:13px; color:var(--fg-mute); font-style:italic; padding:6px 12px; }

/* Большой typing-индикатор с анимацией. Используется в обоих чатах. */
.aid-chat-typing-big{
  display:inline-flex; align-items:center; gap:12px;
  padding:12px 16px; margin:8px 0; border-radius:16px;
  background: color-mix(in oklch, var(--accent) 8%, transparent);
  border:1px solid color-mix(in oklch, var(--accent) 25%, transparent);
  font-size:14px; color:var(--fg); font-style:normal; font-weight:500;
  width:fit-content;
}
.aid-typing-dots{ display:inline-flex; gap:5px; }
.aid-typing-dots span{
  width:7px; height:7px; border-radius:50%; background:var(--accent);
  animation: aid-typing-bounce 1.2s infinite ease-in-out;
}
.aid-typing-dots span:nth-child(2){ animation-delay:.18s; }
.aid-typing-dots span:nth-child(3){ animation-delay:.36s; }
@keyframes aid-typing-bounce{
  0%, 60%, 100%{ transform: translateY(0); opacity:.35; }
  30%          { transform: translateY(-6px); opacity:1; }
}
.aid-chat-msg .aid-chat-bubble{ position:relative; }
.aid-chat-msg-del,
.aid-doc-chat-msg-del{
  position:absolute; top:4px; right:4px; opacity:0; cursor:pointer;
  width:22px; height:22px; border-radius:50%; border:0;
  background: var(--surface); color:var(--fg-mute);
  display:flex; align-items:center; justify-content:center;
  transition: opacity .12s;
  font-size:13px; line-height:1;
}
.aid-chat-msg:hover .aid-chat-msg-del,
.aid-doc-chat-msg:hover .aid-doc-chat-msg-del{ opacity:.9; }
.aid-chat-msg-del:hover,
.aid-doc-chat-msg-del:hover{ background: var(--danger); color:#fff; opacity:1; }
.aid-doc-chat-inputrow{
  display:flex; gap:10px; align-items:center;
  border-top:1px solid var(--line-soft); padding-top:12px;
}
.aid-doc-chat-input{
  flex:1; background:var(--surface-2); border:1px solid var(--line);
  outline:none; color:var(--fg); font:inherit; font-size:14px;
  padding:10px 14px; border-radius:var(--radius);
}
.aid-doc-chat-input:focus{ border-color:var(--accent); background:var(--surface-3); }
.aid-doc-chat-input::placeholder{ color:var(--fg-mute); }

/* legend dots — токен-тонированные */
.aid-legend-dot-norm{ background:var(--accent-2); }
.aid-legend-dot-warn{ background:var(--danger); }
.aid-legend-dot-insight{ background:var(--accent); box-shadow:0 0 10px color-mix(in oklch, var(--accent) 60%, transparent); }

/* унифицированная плашка ошибки в формах */
.aid-form-error{
  margin-top:14px; padding:10px 14px; border-radius:var(--radius-sm);
  background:color-mix(in oklch, var(--danger) 12%, transparent);
  color:var(--danger); font-size:13px;
  border:1px solid color-mix(in oklch, var(--danger) 22%, transparent);
}

/* chat */
/* aid-screen по дефолту min-height:100% и stage скроллится. Для чата нужно
   обратное: screen фиксированной высоты, скролл — внутри aid-chat-msgs,
   а aid-chat-presets и aid-chat-inputrow всегда видны снизу. */
.aid-screen-chat{
  padding:0;
  height:100%; min-height:0;
  overflow:hidden;
}
.aid-chat-wrap{
  max-width:780px; margin:0 auto;
  height:100%; min-height:0;
  display:flex; flex-direction:column;
  padding:20px 24px 20px; gap:10px;
}
.aid-chat-msgs{ flex:1; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:10px; padding:6px 4px; }
.aid-chat-presets{ flex-shrink:0; }
.aid-chat-inputrow{ flex-shrink:0; }
.aid-chat-msg{ display:flex; }
.aid-chat-msg.role-user{ justify-content:flex-end; }
.aid-chat-msg.role-assistant{ justify-content:flex-start; }
.aid-chat-bubble{ max-width:80%; padding:10px 14px; border-radius:14px; }
.role-user .aid-chat-bubble{ background:linear-gradient(180deg, color-mix(in oklch, var(--accent) 20%, transparent), color-mix(in oklch, var(--accent) 12%, transparent)); border:1px solid color-mix(in oklch, var(--accent) 18%, transparent); }
.role-assistant .aid-chat-bubble{ background:var(--surface); border:1px solid var(--line); }
.aid-chat-text{ font-size:13.5px; line-height:1.55; }
.aid-chat-sources{ display:flex; flex-direction:column; gap:4px; margin-top:8px; padding-top:8px; border-top:1px solid var(--line-soft); }
.aid-chat-src{
  display:grid; grid-template-columns:auto 1fr auto; gap:8px; align-items:center;
  text-align:left; padding:6px 8px; border-radius:8px;
  font-size:11.5px; color:var(--fg-soft);
  transition:background .15s;
}
.aid-chat-src:hover{ background:color-mix(in oklch, var(--fg) 4%, transparent); color:var(--fg); }
.aid-chat-src-num{ font-size:11px; }
.aid-chat-src-title{ font-weight:500; }
.aid-chat-src-date{ color:var(--fg-mute); }
.aid-chat-typing{ font-size:12px; color:var(--fg-mute); padding-left:8px; font-style:italic; }
.aid-chat-presets{ display:flex; gap:6px; flex-wrap:wrap; }
.aid-chat-preset{
  background:var(--surface); border:1px solid var(--line-soft);
  font-size:11.5px; padding:6px 11px; border-radius:99px;
  color:var(--fg-soft); transition:all .15s;
}
.aid-chat-preset:hover{ background:var(--surface-2); color:var(--fg); border-color:color-mix(in oklch, var(--accent) 20%, transparent); }
.aid-chat-inputrow{ display:flex; gap:8px; }
.aid-chat-input{
  flex:1; background:var(--surface); border:1px solid var(--line);
  border-radius:11px; padding:10px 14px; font-size:13.5px;
  outline:none; color:var(--fg);
}
.aid-chat-input:focus{ border-color:color-mix(in oklch, var(--accent) 32%, transparent); }
.aid-chat-disclaimer{ font-size:11px; color:var(--fg-mute); text-align:center; padding-top:4px; }

/* review */
.aid-screen-review{ }
.aid-review-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.aid-review-list{ display:flex; flex-direction:column; gap:8px; }
.aid-review-row{
  background:var(--surface); border:1px solid var(--line);
  border-radius:12px; padding:12px 14px;
}
.aid-review-row.st-check{ border-color:rgba(255,178,122,0.32); }
.aid-review-row-head{ display:flex; justify-content:space-between; align-items:center; }
.aid-review-k{ font-weight:600; font-size:13.5px; }
.aid-review-conf{ font-size:11px; color:var(--fg-mute); }
.aid-review-row.st-check .aid-review-conf{ color:var(--warn); }
.aid-review-row-form{ display:grid; grid-template-columns:80px auto 1fr; gap:8px; align-items:center; margin-top:6px; }
.aid-review-input{ background:color-mix(in oklch, var(--fg) 4%, transparent); border:1px solid var(--line); border-radius:8px; padding:6px 8px; font-size:13.5px; font-weight:550; }
.aid-review-input:focus{ outline:none; border-color:var(--accent); }
.aid-review-unit{ font-size:12px; color:var(--fg-soft); }
.aid-review-ref{ font-size:11.5px; color:var(--fg-mute); }
.aid-review-source{ font-size:11.5px; color:var(--fg-mute); margin-top:6px; }

.aid-review-pdf{ background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:14px; align-self:flex-start; }
.aid-review-pdf-head{ font-size:11.5px; color:var(--fg-mute); margin-bottom:8px; }
.aid-review-foot{ display:flex; justify-content:flex-end; gap:8px; margin-top:18px; }

/* settings */
.aid-screen-settings{ }
.aid-settings-blocks{ display:flex; flex-direction:column; gap:12px; max-width:780px; }
.aid-setblock{
  background:var(--surface); border:1px solid var(--line);
  border-radius:14px; padding:18px 20px;
}
.aid-setblock-title{ font-size:15px; font-weight:600; margin:0 0 6px; }
.aid-setblock-body{ font-size:12.5px; color:var(--fg-soft); margin-bottom:10px; }
.aid-setblock-children{ display:flex; flex-direction:column; gap:10px; }
.aid-set-fact{ display:inline-block; font-size:11.5px; padding:3px 9px; border-radius:99px; background:color-mix(in oklch, var(--accent-2) 12%, transparent); color:var(--accent-2); margin-right:6px; }
.aid-set-fact-warn{ background:rgba(255,178,122,0.14); color:var(--warn); }

/* ==================== BALANCE BLOCK ==================== */
.aid-balance-wallets{
  display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px;
}
.aid-wallet{
  padding:14px 16px; border-radius:12px;
  background:color-mix(in oklch, var(--fg) 4%, transparent);
  border:1px solid var(--line); display:flex; flex-direction:column; gap:3px;
}
.aid-wallet-total{
  background:color-mix(in oklch, var(--accent) 6%, transparent);
  border:1px solid color-mix(in oklch, var(--accent) 18%, var(--line));
}
.aid-wallet-label{
  font-size:11.5px; color:var(--fg-mute); text-transform:uppercase;
  letter-spacing:0.04em;
}
.aid-wallet-value{ font-size:20px; font-weight:600; letter-spacing:-0.01em; }
.aid-wallet-value.is-empty{ color:var(--fg-mute); }
.aid-wallet-value.is-low{ color:var(--warn); }
.aid-wallet-hint{ font-size:11px; color:var(--fg-soft); }
.aid-balance-low-hint{ font-size:11.5px; color:var(--warn); }
.aid-balance-actions{
  display:flex; align-items:center; gap:10px; margin-top:10px;
}
.aid-balance-topup-note{ font-size:11.5px; color:var(--fg-mute); }
.aid-balance-topup.is-disabled,
.aid-balance-topup:disabled{
  opacity:0.45; cursor:not-allowed; filter:grayscale(0.4);
}
@media (max-width: 760px){
  .aid-balance-wallets{ grid-template-columns:1fr; }
}

/* ==================== TESTER BLOCK ==================== */
.aid-tester-block{
  background:linear-gradient(135deg,
                             color-mix(in oklch, var(--accent) 10%, var(--surface)),
                             color-mix(in oklch, var(--accent-2) 8%, var(--surface)));
  border:1px solid color-mix(in oklch, var(--accent) 35%, var(--line));
}
.aid-tester-block .aid-setblock-title{
  display:flex; align-items:center; gap:8px;
  color:var(--accent);
}
.aid-tester-icon{
  display:inline-flex; align-items:center; justify-content:center;
  width:24px; height:24px; border-radius:99px;
  background:color-mix(in oklch, var(--accent) 22%, transparent);
  color:var(--accent);
}

/* ==================== STORAGE BLOCK ==================== */
.aid-storage-card{ display:flex; flex-direction:column; gap:6px; }
.aid-storage-bar{
  height:10px; border-radius:99px; background:color-mix(in oklch, var(--fg) 8%, transparent);
  overflow:hidden;
}
.aid-storage-bar-fill{
  height:100%; transition:width .3s; border-radius:99px;
  background:var(--accent-2);
}
.aid-storage-bar-fill.tone-warn{     background:var(--warn); }
.aid-storage-bar-fill.tone-critical{ background:var(--danger); }
.aid-storage-text{ font-size:12.5px; color:var(--fg-soft); }
.aid-storage-used{ font-weight:600; color:var(--fg); }
.aid-storage-used.tone-warn{     color:var(--warn); }
.aid-storage-used.tone-critical{ color:var(--danger); }
.aid-storage-warn{
  font-size:12.5px; color:var(--danger); padding:8px 12px;
  background:color-mix(in oklch, var(--danger) 8%, transparent);
  border-radius:8px; margin-top:6px;
}
.aid-balance-err{ font-size:12.5px; color:var(--danger); margin-top:4px; }
.aid-balance-history{ margin-top:10px; }
.aid-balance-history > summary{
  cursor:pointer; font-size:12.5px; color:var(--fg-soft);
  padding:6px 0; user-select:none;
}
.aid-balance-history > summary::-webkit-details-marker{ display:none; }
.aid-balance-history > summary::before{
  content:"▸ "; display:inline-block; transition:transform .15s;
}
.aid-balance-history[open] > summary::before{ transform:rotate(90deg); }
.aid-balance-txns{
  list-style:none; padding:0; margin:8px 0 0; display:flex;
  flex-direction:column; gap:0;
}
.aid-balance-txn{
  display:grid; grid-template-columns:24px 1fr auto; gap:10px;
  align-items:center; padding:8px 0;
  border-top:1px solid var(--line-soft); font-size:12.5px;
}
.aid-balance-txn:first-child{ border-top:0; }
.aid-balance-txn-icon{
  width:22px; height:22px; border-radius:99px; display:flex;
  align-items:center; justify-content:center; font-weight:600; font-size:13px;
  background:color-mix(in oklch, var(--fg) 8%, transparent); color:var(--fg-soft);
}
.aid-balance-txn.kind-spend .aid-balance-txn-icon{
  background:color-mix(in oklch, var(--danger) 14%, transparent); color:var(--danger);
}
.aid-balance-txn.kind-bonus .aid-balance-txn-icon,
.aid-balance-txn.kind-top_up .aid-balance-txn-icon{
  background:color-mix(in oklch, var(--accent-2) 16%, transparent); color:var(--accent-2);
}
.aid-balance-txn-main{ min-width:0; }
.aid-balance-txn-desc{
  font-size:12.5px; color:var(--fg);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.aid-balance-txn-desc-extra{ color:var(--fg-soft); }
.aid-balance-txn-meta{ font-size:11px; color:var(--fg-mute); margin-top:2px; }
.aid-balance-txn-amount{
  font-variant-numeric:tabular-nums; font-size:12.5px;
  color:var(--fg-soft); font-weight:500;
}
.aid-balance-txn.kind-spend .aid-balance-txn-amount{ color:var(--danger); }
.aid-balance-txn.kind-bonus .aid-balance-txn-amount,
.aid-balance-txn.kind-top_up .aid-balance-txn-amount{ color:var(--accent-2); }

/* ==================== ADMIN SCREEN ==================== */
.aid-screen-admin{ max-width:1100px; }
.aid-admin-grid{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:12px; margin-bottom:18px;
}
.aid-admin-card{
  background:var(--surface); border:1px solid var(--line);
  border-radius:14px; padding:14px 16px;
}
.aid-admin-card-mini{ background:transparent; }
.aid-admin-card-label{
  font-size:11.5px; color:var(--fg-mute); text-transform:uppercase;
  letter-spacing:0.04em; margin-bottom:6px;
}
.aid-admin-card-value{ font-size:24px; font-weight:600; letter-spacing:-0.02em; }
.aid-admin-card-sub{ font-size:11.5px; color:var(--fg-soft); margin-top:4px; }
.aid-admin-edit{ display:flex; flex-direction:column; gap:8px; margin-top:10px; }
.aid-admin-edit-hint{ font-size:11.5px; color:var(--fg-soft); line-height:1.4; }
.aid-admin-input{
  padding:7px 10px; border-radius:8px; border:1px solid var(--line);
  background:var(--bg); color:var(--fg); font-size:13px; width:100%;
}
.aid-admin-mini-row{ font-size:13px; color:var(--fg-soft); padding:3px 0; }
.aid-admin-mini-row b{ color:var(--fg); margin-left:4px; }

.aid-admin-h3{
  font-size:13px; font-weight:600; color:var(--fg-soft);
  text-transform:uppercase; letter-spacing:0.05em;
  margin:18px 0 8px;
}
.aid-admin-users{
  background:var(--surface); border:1px solid var(--line); border-radius:14px;
  overflow:hidden;
}
.aid-admin-users-head, .aid-admin-user{
  display:grid; grid-template-columns:2.2fr 0.8fr 1fr 1fr 0.7fr 0.9fr;
  gap:10px; padding:9px 14px; font-size:12.5px; align-items:center;
}
.aid-admin-users-head{
  background:color-mix(in oklch, var(--fg) 4%, transparent);
  color:var(--fg-mute); font-size:11px; text-transform:uppercase;
  letter-spacing:0.04em;
}
.aid-admin-user{ border-top:1px solid var(--line-soft); }
.aid-admin-user.is-admin{ background:color-mix(in oklch, var(--accent) 4%, transparent); }
.aid-admin-badge{
  display:inline-block; padding:1px 6px; margin-left:6px; font-size:10px;
  border-radius:99px; background:var(--accent); color:#fff; font-weight:500;
  letter-spacing:0.02em;
}

.aid-admin-events{ margin-top:14px; }
.aid-admin-events > summary{
  cursor:pointer; font-size:12.5px; color:var(--fg-soft); padding:6px 0;
}
.aid-admin-events-list{ list-style:none; padding:0; margin:8px 0 0; }
.aid-admin-event{
  display:grid; grid-template-columns:auto auto auto 1fr;
  gap:12px; padding:6px 0; font-size:12px; align-items:center;
  border-top:1px solid var(--line-soft);
}
.aid-admin-event-kind{
  font-family:monospace; font-size:11px; padding:2px 7px; border-radius:99px;
  background:color-mix(in oklch, var(--fg) 8%, transparent);
}
.aid-admin-event.kind-key_topup .aid-admin-event-kind{
  background:color-mix(in oklch, var(--accent-2) 18%, transparent);
  color:var(--accent-2);
}
.aid-admin-event-delta{ font-variant-numeric:tabular-nums; font-weight:500; }
.aid-admin-event-after{ color:var(--fg-soft); font-variant-numeric:tabular-nums; }
.aid-admin-event-meta{ color:var(--fg-mute); font-size:11px; }

.aid-toggle-row{ display:grid; grid-template-columns:1fr auto; gap:14px; align-items:flex-start; padding:8px 0; border-top:1px solid var(--line-soft); }
.aid-toggle-row:first-child{ border-top:0; }
.aid-toggle-label{ font-size:13px; }
.aid-toggle-hint{ font-size:11.5px; color:var(--fg-mute); margin-top:3px; }
.aid-toggle{
  width:42px; height:24px; background:color-mix(in oklch, var(--fg) 10%, transparent);
  border-radius:99px; position:relative; transition:background .15s; flex:none;
}
.aid-toggle.is-on{ background:var(--accent); }
.aid-toggle-thumb{
  position:absolute; top:2px; left:2px; width:20px; height:20px;
  background:#fff; border-radius:99px; transition:transform .15s;
}
.aid-toggle.is-on .aid-toggle-thumb{ transform:translateX(18px); }

/* ==================== DISCLAIMER BAR ==================== */
.aid-disclaimer-bar{
  position:absolute; left:0; right:0; bottom:0;
  font-size:11.5px; color:var(--fg-mute);
  padding:7px 22px;
  text-align:center;
  background:rgba(15,11,14,0.85);
  border-top:1px solid var(--line-soft);
  backdrop-filter:blur(10px);
  z-index:9;
}
.aid-disclaimer-icon{ color:var(--warn); margin-right:6px; }

/* ==================== TWEAKS ==================== */
.tp-panel{ font-family:'Inter Tight','Inter',sans-serif !important; }

/* ==================== MODE-LEVEL OVERRIDES ==================== */
/* Все цвета токенизированы через --surface/--line, поэтому здесь лежат
   только те правила, которые менять покомпонентно: blur/opacity/контраст. */
html[data-mode="light"] .aid-sidebar{
  background:color-mix(in oklch, var(--surface-3) 86%, transparent);
}
html[data-mode="light"] .aid-tooltip{
  background:var(--surface-3);
  color:var(--fg);
}
html[data-mode="light"] .aid-disclaimer-bar{
  background:color-mix(in oklch, var(--bg) 92%, transparent);
}

/* ==================== SIDEBAR COLLAPSE ==================== */
.aid-root.is-collapsed{ grid-template-columns:64px 1fr; }
.aid-sidebar{ position:relative; transition:width .2s; }
.aid-side-collapse{
  /* Кнопка торчит за правый край sidebar (right:-12px) и попадает в зону main.
     Чтобы main не перекрывал кнопку — поднимаем z-index выше sidebar (50) и
     явно выше aid-main (overflow:hidden + position:relative создаёт stacking
     context на уровне 0). */
  position:absolute; right:-12px; top:24px;
  width:24px; height:24px; border-radius:99px;
  background:var(--surface-3); border:1px solid var(--line);
  font-size:12px; color:var(--fg-soft);
  display:flex; align-items:center; justify-content:center;
  z-index:120; box-shadow:var(--shadow);
}
.aid-side-collapse:hover{ color:var(--fg); }
.is-collapsed .aid-sidebar{ padding:18px 8px 14px; }
.is-collapsed .aid-brand-text,
.is-collapsed .aid-side-pat-text,
.is-collapsed .aid-side-pat-switch,
.is-collapsed .aid-nav-label,
.is-collapsed .aid-side-foot,
.is-collapsed .aid-side-logout .aid-nav-label,
.is-collapsed .aid-nav-badge{ display:none; }
.is-collapsed .aid-brand{ justify-content:center; padding:0; }
.is-collapsed .aid-side-patient{ grid-template-columns:1fr; justify-items:center; padding:8px; }
.is-collapsed .aid-nav-item{ grid-template-columns:1fr; justify-items:center; padding:10px 0; }
.is-collapsed .aid-nav-icon{ font-size:18px; }
.aid-side-logout{
  display:grid; grid-template-columns:24px 1fr; gap:10px; align-items:center;
  padding:9px 10px; border-radius:10px; color:var(--fg-mute);
  text-align:left;
  margin-top:auto;            /* прижимаем к низу sidebar */
  border-top:1px solid var(--line-soft); padding-top:14px;
}
.aid-side-logout:hover{ background:color-mix(in oklch, var(--fg) 4%, transparent); color:var(--fg); }
.is-collapsed .aid-side-logout{ grid-template-columns:1fr; justify-items:center; }

/* ==================== THEME PICKER ==================== */
.aid-theme-wrap{ position:relative; }
.aid-theme-btn{
  display:flex; gap:3px; align-items:center;
  padding:6px 10px; border-radius:11px;
  background:var(--surface); border:1px solid var(--line-soft);
  transition:all .15s;
}
.aid-theme-btn:hover{ background:var(--surface-2); }
.aid-theme-swatch{ display:inline-block; width:12px; height:12px; border-radius:99px; border:1px solid rgba(255,255,255,0.15); }
.aid-theme-icon{ margin-left:4px; font-size:13px; color:var(--fg-soft); }
.aid-theme-menu{
  position:absolute; right:0; top:calc(100% + 6px);
  background:var(--surface-3); backdrop-filter:blur(20px);
  border:1px solid var(--line); border-radius:14px;
  padding:6px; min-width:240px;
  box-shadow:var(--shadow); z-index:50;
}
.aid-theme-menu-head{ font-size:10.5px; color:var(--fg-mute); text-transform:uppercase; letter-spacing:0.06em; padding:6px 10px 4px; }
.aid-theme-row{
  display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:center;
  width:100%; padding:7px 10px; border-radius:10px;
  text-align:left; transition:background .15s;
}
.aid-theme-row:hover{ background:color-mix(in oklch, var(--fg) 6%, transparent); }
html[data-mode="light"] .aid-theme-row:hover{ background:rgba(15,11,14,0.05); }
.aid-theme-row.is-active{ background:color-mix(in oklch, var(--accent) 10%, transparent); }
.aid-theme-row-swatches{ display:flex; gap:2px; }
.aid-theme-row-label{ font-size:13px; }
.aid-theme-row-mode{ font-size:11px; color:var(--fg-mute); }

/* ==================== AUTH SCREEN ==================== */
.aid-auth{
  position:fixed; inset:0;
  /* SVG-фон 140% width — без overflow-x:hidden появляется горизонтальный
     скролл. По вертикали скролл оставляем, чтобы на мобиле длинная форма
     помещалась. */
  /* На стандартных экранах форма помещается — скролла быть не должно.
     overflow:hidden убирает паразитный скролл от SVG-фона (140% size, top:-20%).
     На низком viewport ниже задаём fallback overflow-y:auto через @media. */
  overflow:hidden;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:18px;
  padding:24px 24px;
}
@media (max-height: 760px){
  .aid-auth{ overflow-y:auto; }
}
.aid-auth-pitch{
  position:relative; z-index:2;
  max-width:680px; text-align:center;
}
.aid-auth-pitch-title{
  margin:0 0 12px;
  font-weight:600;
  font-size:22px;
  line-height:1.45;
  letter-spacing:-0.005em;
  color:var(--fg);
}
.aid-auth-pitch-hint{
  font-size:13px;
  color:var(--fg-mute);
  line-height:1.5;
  font-style:italic;
}
@media (max-width: 720px){
  .aid-auth-pitch-title{ font-size:18px; line-height:1.4; }
  .aid-auth-pitch-hint{ font-size:12.5px; }
}
.aid-auth-bg{
  position:absolute; inset:0;
  /* SVG внутри 140% width/height с top/left: -20% — обрезаем по контейнеру,
     иначе он пушит scroll в родителе. */
  overflow:hidden;
  pointer-events:none; opacity:0.85;
}
.aid-auth-bg svg{ width:140%; height:140%; position:absolute; left:-20%; top:-20%; }
.aid-auth-card{
  position:relative; z-index:2;
  width:100%; max-width:420px;
  background:var(--surface-3);
  border:1px solid var(--line);
  border-radius:24px;
  padding:32px 32px 24px;
  backdrop-filter:blur(20px);
  box-shadow:var(--shadow);
}
.aid-auth-brand{ display:flex; gap:12px; align-items:center; margin-bottom:22px; }
.aid-auth-brand-title{ font-weight:600; font-size:20px; }
.aid-auth-brand-sub{ font-size:12px; color:var(--fg-mute); margin-top:2px; }
.aid-auth-tabs{ display:flex; gap:2px; padding:3px; background:var(--surface); border-radius:12px; border:1px solid var(--line-soft); margin-bottom:18px; }
.aid-auth-tab{ flex:1; padding:9px 14px; border-radius:10px; font-size:13.5px; color:var(--fg-mute); transition:all .15s; }
.aid-auth-tab.is-active{ background:var(--surface-3); color:var(--fg); box-shadow:0 1px 3px rgba(0,0,0,0.12); }
.aid-auth-form{ display:flex; flex-direction:column; gap:12px; }
.aid-auth-field{ display:flex; flex-direction:column; gap:5px; }
.aid-auth-label{ font-size:11.5px; color:var(--fg-mute); text-transform:uppercase; letter-spacing:0.04em; }
.aid-auth-input{
  background:var(--surface); border:1px solid var(--line);
  border-radius:11px; padding:11px 14px; font-size:14px;
  outline:none; color:var(--fg); transition:border-color .15s;
}
.aid-auth-input:focus{ border-color:var(--accent); }
.aid-auth-row-small{ display:flex; justify-content:space-between; align-items:center; font-size:12px; }
.aid-auth-check{ display:flex; gap:6px; align-items:center; cursor:pointer; color:var(--fg-soft); }
.aid-auth-check input{ accent-color:var(--accent); }
.aid-auth-agree{ font-size:12px; line-height:1.5; align-items:flex-start; }
.aid-auth-agree a{ color:var(--accent); }
.aid-auth-link{ font-size:12px; color:var(--accent); text-decoration:none; }
.aid-auth-submit{ margin-top:6px; width:100%; padding:12px; font-size:14px; }
.aid-auth-or{ position:relative; text-align:center; font-size:11px; color:var(--fg-mute); margin:6px 0; }
.aid-auth-or::before{ content:''; position:absolute; left:0; right:0; top:50%; height:1px; background:var(--line-soft); }
.aid-auth-or span{ position:relative; background:var(--surface-3); padding:0 10px; }
.aid-auth-providers{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:6px; }
.aid-auth-prov{ background:var(--surface); border:1px solid var(--line); border-radius:11px; padding:10px 8px; font-size:12px; color:var(--fg-soft); transition:all .15s; }
.aid-auth-prov:hover{ background:var(--surface-2); color:var(--fg); border-color:var(--line); }
.aid-auth-foot{ font-size:11px; color:var(--fg-mute); text-align:center; margin-top:18px; padding-top:14px; border-top:1px solid var(--line-soft); line-height:1.5; }
.aid-screen::-webkit-scrollbar,
.aid-details::-webkit-scrollbar,
.aid-chat-msgs::-webkit-scrollbar{ width:8px; }
.aid-screen::-webkit-scrollbar-thumb,
.aid-details::-webkit-scrollbar-thumb,
.aid-chat-msgs::-webkit-scrollbar-thumb{ background:color-mix(in oklch, var(--fg) 10%, transparent); border-radius:99px; }

/* ============================================================
   ScenePanel — настройки 3D сцены (правый верх, collapsible)
   ============================================================ */
.aid-scenepanel-toggle{
  position:fixed; bottom:18px; right:18px; z-index:60;
  width:40px; height:40px; border-radius:50%;
  background:rgba(13,19,32,0.86); backdrop-filter:blur(10px);
  border:1px solid var(--line); color:var(--fg-soft);
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; transition:all .15s;
  box-shadow:0 6px 20px -6px rgba(0,0,0,0.55);
}
.aid-scenepanel-toggle:hover{ color:var(--fg); border-color:var(--accent); transform:translateY(-1px); }

.aid-scenepanel{
  position:fixed; bottom:18px; right:18px; z-index:60;
  width:300px; max-height:calc(100vh - 36px);
  background:rgba(13,19,32,0.92); backdrop-filter:blur(14px);
  border:1px solid var(--line); border-radius:14px;
  box-shadow:0 8px 28px -10px rgba(0,0,0,0.6);
  display:flex; flex-direction:column;
  font-size:12.5px; color:var(--fg);
  overflow:hidden;
}
.aid-scenepanel-head{
  display:flex; justify-content:space-between; align-items:center;
  padding:12px 14px; border-bottom:1px solid var(--line-soft);
}
.aid-scenepanel-title{ font-weight:600; font-size:13px; }
.aid-scenepanel-close{
  background:transparent; border:none; color:var(--fg-mute);
  font-size:18px; cursor:pointer; line-height:1; padding:2px 6px;
}
.aid-scenepanel-close:hover{ color:var(--fg); }
.aid-scenepanel-body{
  padding:12px 14px; display:flex; flex-direction:column; gap:14px;
  overflow-y:auto;
}
.aid-scenepanel-divider{
  height:1px; background:var(--line-soft); margin:2px 0;
}
.aid-scenepanel-foot{
  padding:10px 14px; border-top:1px solid var(--line-soft);
  display:flex; justify-content:flex-end;
}
.aid-scenepanel-reset{
  background:transparent; border:1px solid var(--line); border-radius:7px;
  color:var(--fg-soft); padding:6px 12px; font-size:12px; cursor:pointer;
}
.aid-scenepanel-reset:hover{ color:var(--fg); border-color:var(--accent); }

/* Slider */
.aid-sslide{ display:flex; flex-direction:column; gap:6px; }
.aid-sslide-row{
  display:flex; justify-content:space-between; align-items:center;
}
.aid-sslide-label{ color:var(--fg-soft); font-size:12px; }
.aid-sslide-val{
  color:var(--accent); font-size:11.5px;
  font-variant-numeric:tabular-nums;
}
.aid-sslide input[type=range]{
  -webkit-appearance:none; appearance:none;
  width:100%; height:4px; background:var(--surface-2);
  border-radius:99px; outline:none;
}
.aid-sslide input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none;
  width:14px; height:14px; border-radius:50%;
  background:var(--accent); cursor:pointer;
  border:2px solid rgba(13,19,32,0.92);
}
.aid-sslide input[type=range]::-moz-range-thumb{
  width:12px; height:12px; border-radius:50%;
  background:var(--accent); cursor:pointer;
  border:2px solid rgba(13,19,32,0.92);
}

/* Toggle */
.aid-stog{
  display:flex; justify-content:space-between; align-items:center;
  cursor:pointer;
}
.aid-stog-label{ color:var(--fg-soft); font-size:12px; flex:1; }
.aid-stog-btn{
  width:34px; height:18px; border-radius:99px;
  background:var(--surface-2); border:1px solid var(--line);
  position:relative; cursor:pointer; padding:0;
  transition:background .15s;
}
.aid-stog-btn.is-on{ background:var(--accent); border-color:transparent; }
.aid-stog-dot{
  position:absolute; top:1px; left:1px;
  width:14px; height:14px; border-radius:50%;
  background:var(--fg); transition:transform .15s;
}
.aid-stog-btn.is-on .aid-stog-dot{ transform:translateX(16px); background:#fff; }

/* PDF empty state — заменил мок-полоски */
.aid-pdf-empty{
  background:color-mix(in oklch, var(--fg) 4%, transparent);
  border:1px dashed var(--line);
  border-radius:10px;
  padding:32px 24px;
  text-align:center;
  color:var(--fg-mute);
  font-size:13px;
  line-height:1.55;
}

/* Help button + Modal */
.aid-help-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:24px; height:24px; border-radius:50%;
  background:transparent; border:1px solid var(--line);
  color:var(--fg-mute); cursor:pointer;
  margin-left:6px; transition:all .15s;
}
.aid-help-btn:hover{ color:var(--accent); border-color:var(--accent); }

.aid-modal-backdrop{
  position:fixed; inset:0; background:rgba(0,0,0,0.65);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  z-index:200; display:flex; align-items:center; justify-content:center;
  padding:24px; animation:aid-fadein 0.15s ease-out;
  overflow-y:auto;
}
.aid-modal{
  background:color-mix(in oklch, var(--bg-deep) 96%, transparent); border:1px solid var(--line);
  border-radius:16px; box-shadow:0 20px 60px -20px rgba(0,0,0,0.8);
  max-width:560px; width:100%;
  max-height:calc(100vh - 48px);
  display:flex; flex-direction:column;
  animation:aid-popin 0.18s ease-out;
  margin:auto;
  overflow:hidden;
}
.aid-modal-head{
  display:flex; justify-content:space-between; align-items:center;
  padding:16px 20px; border-bottom:1px solid var(--line-soft);
  flex-shrink:0;
}
.aid-modal-title{ font-weight:600; font-size:16px; }
.aid-modal-close{
  background:transparent; border:none; color:var(--fg-mute);
  font-size:24px; cursor:pointer; line-height:1; padding:0 6px;
}
.aid-modal-close:hover{ color:var(--fg); }
.aid-modal-body{
  padding:18px 20px;
  overflow-y:auto;
  display:flex; flex-direction:column; gap:14px;
  min-height:0; flex:1 1 auto;
}
.aid-help-item-title{
  color:var(--accent); font-weight:600; font-size:14px;
  margin-bottom:4px;
}
.aid-help-item-body{
  font-size:13px; color:var(--fg-soft); line-height:1.55;
}

@keyframes aid-fadein { from { opacity:0 } to { opacity:1 } }
@keyframes aid-popin { from { transform:scale(0.96); opacity:0 } to { transform:scale(1); opacity:1 } }

/* Chat: attached doc, picker, downloads */
.aid-chat-attach-btn{
  display:flex; align-items:center; justify-content:center;
  width:36px; height:36px; flex-shrink:0;
  background:var(--surface); border:1px solid var(--line);
  border-radius:10px; color:var(--fg-soft);
  cursor:pointer; transition:all .15s;
}
.aid-chat-attach-btn:hover{ color:var(--accent); border-color:var(--accent); }

.aid-chat-attached{
  display:flex; align-items:center; gap:8px;
  padding:8px 12px; margin:0 0 8px;
  background:color-mix(in oklch, var(--accent) 8%, transparent);
  border:1px solid color-mix(in oklch, var(--accent) 25%, transparent);
  border-radius:10px; font-size:12.5px;
  color:var(--fg-soft);
}
.aid-chat-attached-name{ flex:1; color:var(--fg); font-weight:500; }
.aid-chat-attached-date{ color:var(--fg-mute); font-size:11.5px; }
.aid-chat-attached-x{
  background:transparent; border:none; color:var(--fg-mute);
  font-size:18px; cursor:pointer; line-height:1; padding:0 6px;
}
.aid-chat-attached-x:hover{ color:var(--fg); }

.aid-doc-pick{
  display:block; width:100%; text-align:left;
  background:var(--surface); border:1px solid var(--line-soft);
  border-radius:10px; padding:10px 12px; margin-bottom:6px;
  cursor:pointer; transition:all .15s;
}
.aid-doc-pick:hover{ background:var(--surface-2); border-color:var(--accent); }
.aid-doc-pick-title{ color:var(--fg); font-size:13.5px; font-weight:500; margin-bottom:3px; }
.aid-doc-pick-meta{ color:var(--fg-mute); font-size:11.5px; }

.aid-empty{ color:var(--fg-mute); text-align:center; padding:20px; font-size:13px; }

.aid-chat-downloads{ margin-top:8px; display:flex; flex-wrap:wrap; gap:6px; }
.aid-chat-dl{
  display:inline-flex; align-items:center; gap:6px;
  background:color-mix(in oklch, var(--accent-2) 10%, transparent);
  border:1px solid color-mix(in oklch, var(--accent-2) 30%, transparent);
  color:var(--accent-2);
  padding:6px 10px; border-radius:8px;
  font-size:12px; text-decoration:none;
  transition:all .15s;
}
.aid-chat-dl:hover{ background:color-mix(in oklch, var(--accent-2) 18%, transparent); transform:translateY(-1px); }
.aid-chat-dl-name{ color:var(--fg); font-weight:500; }

/* ============================================================
   Family invite + Notifications
   ============================================================ */
.aid-patient-card-add{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  background:color-mix(in oklch, var(--fg) 4%, transparent);
  border:2px dashed var(--line);
  color:var(--fg-soft); cursor:pointer;
  transition:all .15s; padding:24px; gap:8px;
}
.aid-patient-card-add:hover{ border-color:var(--accent); color:var(--accent); }
.aid-patient-add-icon{
  width:60px; height:60px; border-radius:50%;
  background:color-mix(in oklch, var(--accent) 10%, transparent);
  display:flex; align-items:center; justify-content:center;
  color:var(--accent); margin-bottom:6px;
}

.aid-patients-sent{
  margin-top:32px; padding-top:20px;
  border-top:1px solid var(--line-soft);
}
.aid-patients-sent-title{
  font-weight:600; font-size:14px; color:var(--fg-soft);
  margin-bottom:12px;
}
.aid-sent-row{
  display:grid; grid-template-columns:1fr auto auto; gap:14px;
  padding:10px 12px; border:1px solid var(--line-soft);
  border-radius:10px; margin-bottom:6px;
  background:var(--surface); font-size:13px;
  align-items:center;
}
.aid-sent-email{ color:var(--fg); }
.aid-sent-rel{ color:var(--fg-mute); font-size:12px; }
.aid-sent-status{
  font-size:11px; padding:3px 8px; border-radius:99px;
  background:var(--surface-2); color:var(--fg-mute);
  text-transform:uppercase; letter-spacing:0.04em;
}
.aid-sent-status-pending{ color:var(--warn); background:rgba(255,180,84,0.12); }
.aid-sent-status-accepted{ color:var(--accent-2); background:color-mix(in oklch, var(--accent-2) 12%, transparent); }
.aid-sent-status-declined{ color:var(--fg-mute); }

/* Invite modal */
.aid-invite-field{ display:flex; flex-direction:column; gap:6px; margin-bottom:14px; }
.aid-invite-field > span{ font-size:12.5px; color:var(--fg-soft); }
.aid-invite-field input,
.aid-invite-field textarea{
  background:var(--surface-2); color:var(--fg);
  border:1px solid var(--line); border-radius:9px;
  padding:10px 12px; font:inherit; font-size:13.5px;
  resize:vertical;
}
.aid-invite-field input:focus,
.aid-invite-field textarea:focus{ outline:none; border-color:var(--accent); }
.aid-invite-presets{ display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.aid-invite-preset{
  background:var(--surface); border:1px solid var(--line-soft);
  color:var(--fg-soft); padding:4px 10px; border-radius:99px;
  font-size:12px; cursor:pointer;
}
.aid-invite-preset:hover{ background:var(--surface-2); color:var(--fg); border-color:var(--accent); }
.aid-invite-info{
  background:rgba(127,196,214,0.08);
  border:1px solid rgba(127,196,214,0.20);
  border-radius:8px; padding:10px 12px;
  font-size:12px; color:var(--fg-soft); line-height:1.5;
  margin:8px 0 14px;
}
.aid-invite-error{
  color:var(--danger); font-size:12.5px;
  background:color-mix(in oklch, var(--danger) 10%, transparent);
  border:1px solid color-mix(in oklch, var(--danger) 25%, transparent);
  border-radius:7px; padding:8px 12px; margin-bottom:12px;
}
.aid-invite-actions{ display:flex; justify-content:flex-end; gap:10px; }
.aid-invite-done{
  text-align:center; padding:24px;
  color:var(--accent-2); font-size:14px;
}

/* Notifications list */
.aid-screen-notifications{ padding:24px; }
.aid-notif-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:14px; padding:18px 20px;
  margin-bottom:12px;
}
.aid-notif-head{
  display:flex; gap:8px; align-items:baseline;
  margin-bottom:10px; flex-wrap:wrap;
}
.aid-notif-email{ color:var(--fg-mute); font-size:12.5px; }
.aid-notif-rel{ color:var(--accent); font-size:13px; font-weight:500; }
.aid-notif-body{ color:var(--fg-soft); font-size:13.5px; line-height:1.55; margin-bottom:10px; }
.aid-notif-msg{
  font-style:italic; color:var(--fg);
  background:color-mix(in oklch, var(--fg) 4%, transparent);
  border-left:3px solid var(--accent);
  padding:8px 12px; border-radius:6px;
  margin-bottom:14px; font-size:13px;
}
.aid-notif-actions{ display:flex; justify-content:flex-end; gap:10px; }

/* Patient avatar upload — клик прямо по кругу аватарки открывает file picker. */
.aid-patient-avatar-wrap{
  position:relative; display:inline-block;
}
.aid-patient-avatar-wrap.is-editable .aid-patient-avatar{
  cursor:pointer; position:relative; overflow:hidden;
}
.aid-patient-avatar-hover{
  position:absolute; inset:0; border-radius:inherit;
  background:color-mix(in oklch, oklch(0% 0 0) 55%, transparent);
  display:flex; align-items:center; justify-content:center;
  color:#fff; opacity:0; transition:opacity .18s;
  pointer-events:none;
}
.aid-patient-avatar-wrap.is-editable .aid-patient-avatar:hover .aid-patient-avatar-hover{
  opacity:1;
}
.aid-patient-upload-overlay{
  position:absolute; inset:0; background:rgba(0,0,0,0.55);
  border-radius:inherit; display:flex; align-items:center; justify-content:center;
  color:var(--accent); font-size:24px;
}

/* DocPicker (прикреп документа к чату) */
.aid-picker-hint{
  font-size:12.5px; color:var(--fg-soft); line-height:1.5;
  background:rgba(127,196,214,0.08);
  border:1px solid rgba(127,196,214,0.20);
  border-radius:8px; padding:10px 12px;
}
.aid-picker-search{
  display:flex; align-items:center; gap:8px;
  background:var(--surface-2); border:1px solid var(--line);
  border-radius:10px; padding:0 12px;
}
.aid-picker-search svg{ color:var(--fg-mute); flex-shrink:0; }
.aid-picker-search input{
  flex:1; background:transparent; border:none; outline:none;
  color:var(--fg); padding:10px 0; font:inherit; font-size:13px;
}
.aid-picker-list{
  display:flex; flex-direction:column; gap:4px;
}
.aid-picker-item{
  display:flex; align-items:center; gap:12px;
  background:transparent; border:1px solid transparent;
  border-radius:10px; padding:10px 12px;
  cursor:pointer; transition:all .15s; text-align:left;
}
.aid-picker-item:hover{ background:var(--surface); border-color:var(--line); }
.aid-picker-icon{
  width:36px; height:36px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  flex-shrink:0;
}
.aid-picker-text{ flex:1; min-width:0; }
.aid-picker-title{
  color:var(--fg); font-size:13.5px; font-weight:500;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  margin-bottom:3px;
}
.aid-picker-meta{
  color:var(--fg-mute); font-size:11.5px;
  display:flex; gap:6px; flex-wrap:wrap;
}
.aid-picker-cat{ font-weight:500; }

/* ============================================================
   Handwriting / OCR honesty UI (08.05.2026)
   Badge + treatment cards + drug card.
   ============================================================ */
.aid-uploaded-by{
  display:inline-flex; align-items:center;
  font-size:11px;
  color:var(--fg-mute);
  white-space:nowrap;
}
.aid-handwriting-badge{
  display:inline-flex; align-items:center; gap:4px;
  font-size:11px; font-weight:500;
  color:var(--accent-2);
  background:color-mix(in oklch, var(--accent-2) 12%, transparent);
  border:1px solid color-mix(in oklch, var(--accent-2) 30%, transparent);
  border-radius:6px; padding:2px 7px;
  white-space:nowrap;
}
.aid-handwriting-badge.is-mini{ font-size:10.5px; padding:1px 6px; }
.aid-quality-low{
  font-size:11px; color:var(--danger);
  background:color-mix(in oklch, var(--danger) 10%, transparent);
  border-radius:5px; padding:1px 6px;
}
.aid-extraction-notes{
  margin:8px 0 4px;
  padding:8px 10px;
  background:color-mix(in oklch, var(--accent-2) 8%, transparent);
  border:1px solid color-mix(in oklch, var(--accent-2) 22%, transparent);
  border-radius:8px;
  font-size:12.5px; color:var(--fg-soft);
  line-height:1.45;
}

/* Treatment card (одно назначение) */
.aid-treatments{ display:flex; flex-direction:column; gap:10px; }
.aid-treatment-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:12px;
  padding:12px 14px;
  display:flex; flex-direction:column; gap:8px;
}
.aid-treatment-card.is-low-conf{
  border-color:color-mix(in oklch, var(--accent-2) 35%, transparent);
  background:color-mix(in oklch, var(--accent-2) 5%, var(--surface));
}
.aid-treatment-head{
  display:flex; justify-content:space-between; align-items:flex-start; gap:8px;
}
.aid-treatment-name{ font-weight:600; font-size:14.5px; color:var(--fg); }
.aid-treatment-mnn{ font-weight:400; color:var(--fg-soft); font-size:13px; }
.aid-treatment-conf-badge{
  font-size:10.5px;
  background:color-mix(in oklch, var(--accent-2) 18%, transparent);
  color:var(--accent-2);
  border:1px solid color-mix(in oklch, var(--accent-2) 35%, transparent);
  border-radius:5px; padding:2px 6px; white-space:nowrap;
}
.aid-treatment-fields{
  display:flex; flex-wrap:wrap; gap:6px 14px;
  font-size:13px; color:var(--fg-soft);
}
.aid-treatment-field b{ color:var(--fg); font-weight:500; }
.aid-treatment-quote{
  font-size:12.5px; color:var(--fg-mute); font-style:italic;
  border-left:2px solid var(--line);
  padding:2px 8px;
  margin-top:2px;
}
.aid-treatment-card-section{ margin-top:4px; }
.aid-treatment-card-toggle{
  background:transparent; border:0; cursor:pointer;
  display:inline-flex; align-items:center; gap:6px;
  font-size:13px; font-weight:500; color:var(--accent);
  padding:4px 0;
}
.aid-treatment-card-toggle:hover{ text-decoration:underline; }
.aid-drug-card{
  margin-top:8px;
  padding:10px 12px;
  background:color-mix(in oklch, var(--accent) 6%, transparent);
  border:1px solid color-mix(in oklch, var(--accent) 18%, transparent);
  border-radius:10px;
  font-size:13px; line-height:1.5;
  display:flex; flex-direction:column; gap:6px;
}
.aid-drug-row b{ color:var(--fg); font-weight:600; }
.aid-drug-warnings ul{ margin:4px 0 0 18px; padding:0; }
.aid-drug-warnings li{ margin:2px 0; }
.aid-drug-disclaimer{
  margin-top:4px;
  font-size:11.5px; color:var(--fg-mute);
  font-style:italic;
}
.aid-drug-unknown{
  font-size:12px; color:var(--fg-mute);
  background:var(--surface);
  border:1px dashed var(--line);
  border-radius:8px; padding:6px 10px;
}
.aid-treatment-actions{
  display:flex; justify-content:flex-end; margin-top:2px;
}

/* Удаление в библиотеке */
.aid-lib-card-action-danger{
  color:var(--danger);
}
.aid-lib-card-action-danger:hover{
  background:color-mix(in oklch, var(--danger) 12%, transparent);
}
.aid-lib-card-action[disabled]{ opacity:0.5; cursor:not-allowed; }

/* ============================================================
   Масштаб / overflow-фиксы (08.05.2026)
   На viewport <= 1366px фикс-ширины details panel и плотные
   карточки могут выпадать за экран. Делаем их fluid.
   ============================================================ */
.aid-details{ width:min(380px, 36vw); }
.aid-details-wide{ width:min(480px, 44vw); }

/* Long quotes/MNNs не должны разъезжать карточку */
.aid-treatment-quote,
.aid-drug-row,
.aid-treatment-name,
.aid-treatment-mnn,
.aid-doc-excerpt,
.aid-lib-card-excerpt,
.aid-lib-card-title{
  word-break:break-word;
  overflow-wrap:anywhere;
}

@media (max-width: 1280px){
  .aid-details{ width:min(360px, 40vw); padding:14px 16px; }
  .aid-details-wide{ width:min(440px, 48vw); padding:14px 16px; }
  .aid-topbar{ padding:10px 14px; gap:8px; }
  .aid-top-screen{ font-size:16.5px; }
  .aid-treatment-fields{ gap:4px 10px; font-size:12.5px; }
  .aid-feed-grid{ grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); }
  .aid-lib-grid{ grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); }
}

@media (max-width: 1100px){
  .aid-root{ grid-template-columns:64px minmax(0, 1fr); }
  .aid-sidebar:not(.is-collapsed) .aid-nav-label,
  .aid-sidebar:not(.is-collapsed) .aid-side-pat-text,
  .aid-sidebar:not(.is-collapsed) .aid-side-pat-switch,
  .aid-sidebar:not(.is-collapsed) .aid-brand-text{ display:none; }
  .aid-sidebar:not(.is-collapsed) .aid-nav-item{ grid-template-columns:32px; justify-content:center; }
  .aid-sidebar:not(.is-collapsed) .aid-side-patient{ padding:6px; justify-content:center; grid-template-columns:38px; }
  .aid-details{ width:min(340px, 50vw); }
  .aid-details-wide{ width:min(420px, 56vw); }
}

@media (max-width: 820px){
  .aid-details, .aid-details-wide{ width:96vw; }
}

/* Topbar — длинная панель action-кнопок не должна выпирать наружу */
.aid-topbar{ overflow-x:auto; }
.aid-topbar::-webkit-scrollbar{ height:6px; }
.aid-topbar::-webkit-scrollbar-thumb{ background:color-mix(in oklch, var(--fg) 14%, transparent); border-radius:3px; }

/* ============================================================
   Expand-mode для карточки документа (08.05.2026)
   Кнопка ↗ рядом с × разворачивает aside на всю stage,
   данные слева, чат справа.
   ============================================================ */
.aid-details-expand{
  width:28px; height:28px; border-radius:8px;
  background:color-mix(in oklch, var(--fg) 6%, transparent);
  color:var(--fg-soft);
  display:flex; align-items:center; justify-content:center;
  transition:background .15s, color .15s;
}
.aid-details-expand:hover{
  background:color-mix(in oklch, var(--accent) 14%, transparent);
  color:var(--accent);
}

/* Превью оригинала с пагинатором (паттерн из /opt/ocr-service/).
   Стейдж занимает всё доступное место, плашка-toolbar плавает снизу. */
.aid-doc-preview{
  position:relative;
  flex:1; min-height:0;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  display:flex; align-items:center; justify-content:center;
}
.aid-doc-preview-stage{
  flex:1;
  width:100%; height:100%;
  display:flex; align-items:center; justify-content:center;
  /* hidden — потому что зум/пан реализованы через CSS transform, своих
     scroll-баров у стейджа быть не должно. */
  overflow:hidden;
  background:#f6f7f9;
  padding:14px;
  user-select:none;
  touch-action:none;       /* отключаем pinch-zoom браузера, чтобы наш wheel-зум работал */
}
.aid-doc-preview-img{
  max-width:100%; max-height:100%;
  width:auto; height:auto;
  object-fit:contain;
  display:block;
  transform-origin:center center;
  background:white;
  box-shadow:0 4px 14px -6px rgba(0,0,0,0.25);
  pointer-events:none;     /* drag по стейджу, не по картинке (иначе onMouseDown теряется) */
}
.aid-doc-preview.is-empty{
  flex:0 0 auto;
  min-height:200px;
  color:var(--fg-mute);
  font-size:13px;
  text-align:center;
  padding:30px;
  background:var(--surface);
}

/* Плашка пагинации — копия .page-nav из ocr-service: floating bottom-center,
   полупрозрачный белый фон с blur */
.aid-doc-preview-toolbar{
  position:absolute; bottom:10px; left:50%;
  transform:translateX(-50%);
  display:flex; align-items:center; gap:6px;
  background:rgba(255,255,255,0.92);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  padding:5px 10px;
  border-radius:10px;
  box-shadow:0 4px 14px -4px rgba(0,0,0,0.22);
  z-index:5;
  color:#374151;
}
.aid-pn-btn{
  width:28px; height:28px;
  border:1px solid #e2e8f0; border-radius:7px;
  background:#f3f4f6;
  display:inline-flex; align-items:center; justify-content:center;
  color:#374151; font-size:13px;
  transition:all .12s;
  text-decoration:none;
}
.aid-pn-btn:hover:not(:disabled){
  border-color:#0f172a; color:#0f172a;
  background:#fff;
}
.aid-pn-btn:disabled{ opacity:0.35; cursor:default; }
.aid-pn-btn-text{
  width:auto; padding:0 10px; font-size:11.5px; font-weight:500;
}
.aid-pn-info{
  font-size:11.5px; font-weight:500; color:#374151;
  min-width:50px; text-align:center;
  padding:0 6px;
}
.aid-pn-sep{
  width:1px; height:18px; background:#d1d5db;
  margin:0 2px;
}
/* Aside-обзор дока: только саммари + чипы со счётчиками. Назначения/показатели/
   чат теперь живут в FS-модалке, не нагружаем aside. */
.aid-doc-summary{
  margin-top:14px;
  padding:12px 14px;
  background:var(--surface);
  border:1px solid var(--line-soft);
  border-radius:12px;
  display:flex; flex-direction:column; gap:10px;
}
.aid-doc-summary-text{
  font-size:13px; line-height:1.55; color:var(--fg-soft);
}
.aid-doc-summary-empty{
  font-size:12px; color:var(--fg-mute); font-style:italic;
}
.aid-doc-summary-counts{
  display:flex; gap:6px; flex-wrap:wrap;
}
.aid-doc-summary-chip{
  font-size:11.5px;
  padding:3px 9px;
  border-radius:99px;
  background:color-mix(in oklch, var(--accent) 10%, transparent);
  border:1px solid color-mix(in oklch, var(--accent) 22%, transparent);
  color:var(--fg);
}
.aid-doc-summary-chip b{ font-weight:600; }
.aid-doc-more-btn{
  margin-top:14px;
  width:100%;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:13px;
  padding:10px 16px;
}

.aid-doc-excerpt-compact{
  font-size:13px;
  background:var(--surface);
  border:1px solid var(--line-soft);
  border-radius:10px;
  padding:10px 12px;
  color:var(--fg-soft);
  line-height:1.5;
  margin-bottom:0;
}

.aid-doc-body-chat-head{
  font-size:11px; color:var(--fg-mute);
  text-transform:uppercase; letter-spacing:0.08em;
  margin:0 0 8px;
}

/* Flush-режим чата — растягивается на всю высоту контейнера в модалке,
   с visible-обводкой чтобы выглядел как полноценный chat-pane */
.aid-doc-chat.is-flush{
  flex:1; min-height:0;
  margin-top:0;
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px 14px 14px;
  background:var(--surface);
}
.aid-doc-chat.is-flush .aid-doc-chat-msgs{
  flex:1; max-height:none; min-height:0;
}

/* ============================================================
   Полноэкранная модалка карточки документа
   ============================================================ */
.aid-doc-fs-backdrop{
  position:fixed; inset:0;
  /* Сплошной фон темы, как у обычных screen (Лента/Библиотека/Настройки),
     без blur и без полупрозрачности — 3D-сцены под модалкой не должно
     просвечивать. */
  background:var(--bg);
  z-index:200;
  display:flex; align-items:center; justify-content:center;
  padding:24px;
  animation:fadeIn 0.18s ease;
}
/* Модалка всегда в светлой теме активного оформления (medsi/emc), даже
   если открыта поверх graph-screen с тёмными scene-токенами. Сбрасываем
   --bg/-fg/-surface на light-значения текущей темы. */
.aid-doc-fs-backdrop{
  /* default = medsi */
  --bg-deep:     oklch(95% 0.012 195);
  --bg:          oklch(97% 0.010 195);
  --surface:     oklch(99% 0.005 195 / 0.62);
  --surface-2:   oklch(99% 0.003 195 / 0.86);
  --surface-3:   oklch(100% 0 0 / 1);
  --line:        oklch(50% 0.020 195 / 0.14);
  --line-soft:   oklch(50% 0.020 195 / 0.08);
  --fg:          oklch(28% 0.012 215);
  --fg-soft:     oklch(28% 0.012 215 / 0.72);
  --fg-mute:     oklch(28% 0.012 215 / 0.48);
  color:var(--fg);
}
html[data-theme="emc"] .aid-doc-fs-backdrop{
  --bg-deep:     oklch(94% 0.014 60);
  --bg:          oklch(97% 0.011 60);
  --surface:     oklch(99% 0.006 60 / 0.65);
  --surface-2:   oklch(99% 0.004 60 / 0.88);
  --surface-3:   oklch(100% 0 0 / 1);
  --line:        oklch(35% 0.030 25 / 0.14);
  --line-soft:   oklch(35% 0.030 25 / 0.08);
  --fg:          oklch(20% 0.012 30);
  --fg-soft:     oklch(20% 0.012 30 / 0.72);
  --fg-mute:     oklch(20% 0.012 30 / 0.50);
}
.aid-doc-fs{
  width:100%; height:100%;
  max-width:1800px;
  background:var(--bg);
  border:1px solid var(--line);
  border-radius:18px;
  box-shadow:0 30px 60px -20px rgba(0,0,0,0.55);
  display:flex; flex-direction:column;
  overflow:hidden;
  min-height:0;
}
.aid-doc-fs-head{
  display:flex; align-items:flex-start; justify-content:space-between;
  gap:14px;
  padding:16px 20px;
  border-bottom:1px solid var(--line-soft);
  flex-shrink:0;
}
.aid-doc-fs-head-text{ flex:1; min-width:0; }
.aid-doc-fs-eyebrow{
  font-size:11.5px; color:var(--fg-mute);
  display:flex; gap:6px; align-items:center; flex-wrap:wrap;
}
.aid-doc-fs-title{
  margin:3px 0 0;
  font-weight:600; font-size:18px;
  letter-spacing:-0.005em;
  color:var(--fg);
  word-break:break-word;
}
.aid-doc-fs-head-actions{
  display:flex; align-items:center; gap:8px; flex-shrink:0;
}
.aid-doc-fs-close{
  width:32px; height:32px; border-radius:9px;
  background:color-mix(in oklch, var(--fg) 6%, transparent);
  font-size:18px; color:var(--fg-soft);
  display:flex; align-items:center; justify-content:center;
  transition:all .15s;
}
.aid-doc-fs-close:hover{
  background:color-mix(in oklch, var(--danger) 14%, transparent);
  color:var(--danger);
}
.aid-doc-fs-notes{
  margin:10px 20px 0;
  padding:8px 12px;
  background:color-mix(in oklch, var(--accent-2) 10%, transparent);
  border:1px solid color-mix(in oklch, var(--accent-2) 24%, transparent);
  border-radius:10px;
  font-size:12.5px; color:var(--fg-soft);
  flex-shrink:0;
}
.aid-doc-fs-body{
  flex:1; min-height:0;
  display:grid;
  grid-template-columns:minmax(0, 1.6fr) minmax(420px, 1fr);
  gap:16px;
  padding:14px 20px 20px;
}
.aid-doc-fs-left{
  display:flex; flex-direction:column;
  min-height:0; min-width:0;
}
.aid-doc-fs-right{
  display:flex; flex-direction:column;
  gap:6px;
  min-height:0; min-width:0;
  overflow-y:auto;
  padding-right:4px;
}
/* В правой колонке FS-модалки сжимаем пере-блочные отступы у CollapsibleSection
   и Treatment-карточек, иначе вкупе с gap:6px смотрелось «дышаще-разреженно». */
.aid-doc-fs-right .aid-collapsible{ margin-top:0; }
.aid-doc-fs-right .aid-collapsible-body{ margin-top:4px; }
.aid-doc-fs-right .aid-treatments{ gap:6px; }
.aid-doc-fs-right::-webkit-scrollbar{ width:6px; }
.aid-doc-fs-right::-webkit-scrollbar-thumb{
  background:color-mix(in oklch, var(--fg) 12%, transparent); border-radius:3px;
}
.aid-doc-fs-chat{
  display:flex; flex-direction:column;
  flex:1; min-height:380px;
  margin-top:auto;
}

@media (max-width: 1100px){
  .aid-doc-fs-backdrop{ padding:10px; }
  .aid-doc-fs-body{
    grid-template-columns:1fr;
    grid-template-rows:minmax(280px, 50vh) auto;
  }
  .aid-doc-fs-right{ overflow-y:visible; }
  .aid-doc-fs-chat{ min-height:320px; }
}

/* Формы — препараты, цели и пр. */
.aid-form-field-wrap input,
.aid-form-field-wrap select,
.aid-form-field-wrap textarea {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--fg);
  font: inherit;
  box-sizing: border-box;
}
.aid-form-field-wrap input:focus,
.aid-form-field-wrap select:focus,
.aid-form-field-wrap textarea:focus {
  outline: 2px solid var(--accent);
  outline-offset: -1px;
  border-color: transparent;
}
