/* Нейроофис (бывш. «мастерская»): стиль GreenwayTeam (research/dizayn.md), светлая и тёмная темы */
@font-face {
  font-family: 'Inter'; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url('/vendor/inter/inter-cyrillic-wght-normal.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Inter'; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url('/vendor/inter/inter-latin-wght-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Шрифт терминала: свой, чтобы ширина знакоместа была одинаковой везде. */
@font-face {
  font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('/vendor/mono/jetbrains-mono-cyrillic-400-normal.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('/vendor/mono/jetbrains-mono-latin-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --bg: #FFFFFF; --panel: #F9FAFB; --text: #111827; --muted: #6B7280; --faint: #9CA3AF;
  --border: #E5E7EB; --accent: #65B32E; --accent-hover: #559926; --accent-dark: #3D7218;
  --accent-soft: #F0FDF4; --warn-bg: #FFFBEB; --warn: #B45309; --err-bg: #FEF2F2; --err: #DC2626;
  --hover: #F3F4F6; --dot-off: #D1D5DB; --term-bg: #FFFFFF; --on-accent: #FFFFFF;
  --kimi-bg: #EFF6FF; --kimi-border: #BFDBFE; --kimi: #1D4ED8;
  --shadow: rgba(0,0,0,.12); --backdrop: rgba(17,24,39,.35);
  color-scheme: light;
}
/* Тёмная тема: та же палитра GreenwayTeam на графитовом фоне (серые Tailwind 900/800/700).
   Акцентный зелёный оставлен прежним, для текста на тёмном взят светлее. */
:root[data-theme="dark"] {
  --bg: #111827; --panel: #1F2937; --text: #F3F4F6; --muted: #9CA3AF; --faint: #6B7280;
  --border: #374151; --accent: #65B32E; --accent-hover: #76C43F; --accent-dark: #A3E07A;
  --accent-soft: rgba(101,179,46,.16); --warn-bg: rgba(245,158,11,.14); --warn: #FBBF24;
  --err-bg: rgba(239,68,68,.15); --err: #F87171;
  --hover: #273244; --dot-off: #4B5563; --term-bg: #0B1220; --on-accent: #FFFFFF;
  --kimi-bg: rgba(59,130,246,.16); --kimi-border: #1E40AF; --kimi: #93C5FD;
  --shadow: rgba(0,0,0,.5); --backdrop: rgba(0,0,0,.55);
  color-scheme: dark;
}
* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
html { font-size: var(--fs, 15px); }
body {
  font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  color: var(--text); background: var(--bg); font-size: 1.0rem; line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}
button, input, textarea, select { font: inherit; color: inherit; }
[hidden] { display: none !important; }

.btn {
  border: 1px solid var(--border); background: var(--bg); border-radius: 8px;
  padding: 7px 12px; cursor: pointer; white-space: nowrap;
}
.btn:hover { background: var(--panel); }
.btn.primary { background: var(--accent); border-color: var(--accent); color: var(--on-accent); font-weight: 600; }
.btn.primary:hover { background: var(--accent-hover); }
.btn:focus-visible, input:focus-visible, textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }

/* --- вход --- */
.login-wrap { min-height: 100%; display: grid; place-items: center; background: var(--panel); padding: 16px; }
.login-card {
  width: 100%; max-width: 360px; background: var(--bg); border: 1px solid var(--border);
  border-radius: 16px; padding: 28px; box-shadow: 0 1px 2px rgba(0,0,0,.05);
}
.login-card h1 { margin: 0 0 4px; font-size: 1.4667rem; }
.login-card p { margin: 0 0 20px; color: var(--muted); }
.field { display: block; margin-bottom: 14px; }
.field span { display: block; font-size: 0.8667rem; color: var(--muted); margin-bottom: 4px; }
.field input, .field select, .field textarea {
  width: 100%; border: 1px solid var(--border); border-radius: 8px; padding: 9px 11px; background: var(--bg);
}
.login-card .btn { width: 100%; padding: 10px; }
.error { background: var(--err-bg); color: var(--err); border-radius: 8px; padding: 8px 10px; margin-bottom: 14px; font-size: 0.9333rem; }

/* --- оболочка --- */
.app { height: 100%; display: flex; flex-direction: column; }
.top {
  height: 52px; flex: none; display: flex; align-items: center; gap: 10px;
  padding: 0 14px; border-bottom: 1px solid var(--border); background: var(--bg);
}
.logo { font-weight: 700; font-size: 1.1333rem; display: flex; align-items: center; gap: 8px; }
.logo i { width: 10px; height: 10px; border-radius: 50%; background: var(--accent); display: inline-block; }
.top .spacer { flex: 1; }
.top .who { color: var(--muted); font-size: 0.9333rem; }
#menu { display: none; }
/* на компьютере список веток и так справа; кнопка на пустом экране нужна только телефону */
.empty-act { display: none; margin-top: 16px; }
.top-menu { display: contents; }
#top-menu-btn { display: none; }

.layout { flex: 1; display: flex; min-height: 0; }
aside {
  width: var(--side-w, 280px); flex: none; border-left: 1px solid var(--border); background: var(--panel);
  overflow-y: auto; padding: 14px 10px;
}
/* разделы в шапке */
.nav { display: flex; gap: 2px; margin-left: 12px; }
.nav a {
  padding: 6px 10px; border-radius: 8px; color: var(--muted); text-decoration: none; font-size: 0.9333rem;
}
.nav a:hover { background: var(--hover); color: var(--text); }
.nav a.active { background: var(--accent-soft); color: var(--accent-dark); font-weight: 500; }
aside h2 { font-size: 0.8rem; text-transform: uppercase; letter-spacing: .04em; color: var(--faint); margin: 14px 8px 6px; }
aside h2:first-child { margin-top: 0; }
.list { list-style: none; margin: 0; padding: 0; }
.list a {
  display: flex; align-items: center; gap: 8px; padding: 8px; border-radius: 8px;
  color: var(--text); text-decoration: none; cursor: pointer;
}
.list a:hover { background: var(--hover); }
.list a.active { background: var(--accent-soft); color: var(--accent-dark); font-weight: 500; }
.num {
  flex: none; min-width: 26px; height: 22px; border-radius: 999px; background: var(--bg);
  border: 1px solid var(--border); font-size: 0.8rem; display: grid; place-items: center; color: var(--muted);
}
.list a.active .num { border-color: var(--accent); color: var(--accent-dark); }
.list .t { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.list .e { font-size: 0.7333rem; color: var(--faint); }
.dot { width: 8px; height: 8px; border-radius: 50%; background: var(--dot-off); flex: none; }
.dot.on { background: var(--accent); }
.dot.warn { background: #F59E0B; }
aside .btn { width: 100%; margin: 4px 0 2px; }
.hint { color: var(--faint); font-size: 0.8667rem; padding: 4px 8px; }

main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.empty { margin: auto; text-align: center; color: var(--muted); padding: 24px; }
.empty b { display: block; color: var(--text); font-size: 1.2rem; margin-bottom: 6px; }

#work { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.bar {
  flex: none; display: flex; align-items: center; gap: 10px; padding: 8px 14px;
  border-bottom: 1px solid var(--border); font-size: 0.9333rem;
}
.bar .title { font-weight: 600; cursor: text; }
.btn.icon { padding: 3px 8px; font-size: 0.9333rem; line-height: 1.2; color: var(--muted); }
.btn.icon:hover { color: var(--text); }
/* карандаш у ветки в списке: на компьютере по наведению, на телефоне всегда */
.list .rn {
  flex: none; border: 0; background: transparent; color: var(--faint); cursor: pointer;
  padding: 0 4px; font-size: 0.8667rem; opacity: 0; transition: opacity .12s;
}
.list a:hover .rn, .list a.active .rn { opacity: 1; }
.list .rn:hover { color: var(--text); }
@media (hover: none) { .list .rn { opacity: 1; } }
.list .pin { opacity: 0; filter: grayscale(1); }
.list a:hover .pin, .list a.active .pin { opacity: .8; }
.list .pin.on { opacity: 1; filter: none; }
@media (hover: none) { .list .pin { opacity: .6; } }
.btn.icon.on { background: var(--accent-soft); border-color: var(--accent); }
.badge { font-size: 0.8rem; border-radius: 999px; padding: 2px 8px; background: var(--panel); border: 1px solid var(--border); color: var(--muted); }
.badge.kimi { background: var(--kimi-bg); border-color: var(--kimi-border); color: var(--kimi); }
.bar .spacer { flex: 1; }
.bar .state { color: var(--muted); font-size: 0.8667rem; display: flex; align-items: center; gap: 6px; }

#term { flex: 1; min-height: 0; padding: 6px 4px 0 10px; background: var(--term-bg); }
#term .xterm { height: 100%; }

.keys {
  flex: none; display: flex; gap: 6px; padding: 8px 10px; overflow-x: auto;
  border-top: 1px solid var(--border); background: var(--panel);
}
.keys .btn { padding: 6px 10px; font-size: 0.8667rem; font-family: ui-monospace, Menlo, monospace; }
.say { flex: none; display: flex; gap: 8px; padding: 8px 10px 10px; background: var(--panel); }
.say textarea {
  flex: 1; resize: none; border: 1px solid var(--border); border-radius: 8px; padding: 9px 11px;
  min-height: 42px; max-height: 160px; background: var(--bg);
}

/* витрина */
.vitrina { padding: 20px; overflow-y: auto; }
.back-btn { display: inline-flex; align-items: center; gap: 4px; margin: 0 0 10px; padding: 5px 12px; font-size: 0.9333rem; color: var(--muted); }
.back-btn:hover { color: var(--text); }
.vitrina h1 { font-size: 1.3333rem; margin: 0 0 14px; }
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.tile {
  display: block; border: 1px solid var(--border); border-radius: 12px; padding: 14px;
  color: var(--text); text-decoration: none; background: var(--bg);
}
.tile:hover { border-color: var(--accent); }
.tile b { display: block; margin-bottom: 4px; }
.tile span { color: var(--muted); font-size: 0.8667rem; }

dialog { border: 1px solid var(--border); border-radius: 16px; padding: 22px; width: min(420px, 92vw); box-shadow: 0 10px 30px var(--shadow); background: var(--bg); color: var(--text); }
dialog::backdrop { background: var(--backdrop); }
dialog h3 { margin: 0 0 14px; }
.engines { display: grid; gap: 8px; margin-bottom: 16px; }
.engine {
  display: flex; gap: 10px; align-items: flex-start; border: 1px solid var(--border);
  border-radius: 10px; padding: 10px; cursor: pointer;
}
.engine:has(input:checked) { border-color: var(--accent); background: var(--accent-soft); }
.engine input { margin-top: 3px; accent-color: var(--accent); }
.engine small { display: block; color: var(--muted); }
.row { display: flex; gap: 8px; justify-content: flex-end; }

@media (max-width: 800px) {
  #menu:not([hidden]) { display: inline-block; }
  .empty-act { display: block; }
  aside {
    position: fixed; top: 52px; bottom: 0; right: 0; z-index: 20; width: 82vw; max-width: 320px;
    transform: translateX(100%); transition: transform .18s ease; box-shadow: 0 10px 30px var(--shadow);
  }
  /* на телефоне разделы, тема и «Выйти» уходят в выпадающее меню «☰ Меню» */
  #top-menu-btn { display: inline-block; margin-left: auto; }
  .top-menu {
    display: none; position: fixed; top: 52px; left: 8px; right: 8px; z-index: 30; flex-direction: column; gap: 6px;
    padding: 8px; background: var(--bg); border: 1px solid var(--border); border-radius: 12px; box-shadow: 0 10px 30px var(--shadow);
  }
  .top-menu.open { display: flex; }
  .top-menu .nav { flex-direction: column; margin: 0; gap: 2px; }
  .top-menu .nav a { padding: 11px 12px; font-size: 1rem; }
  .top-menu .spacer { display: none; }
  .top-menu > .btn { width: 100%; justify-content: center; padding: 10px; }
  .top-menu .theme-btn .lbl { display: inline; }
  .top .spacer { display: none; }
  /* строка ветки: название целиком отдельной строкой, кнопки и движок ниже, ничего не уезжает за край */
  .bar { flex-wrap: wrap; gap: 6px 8px; padding: 8px 10px; }
  .bar .title { flex: 1 1 100%; min-width: 0; }
  .bar .badge { flex: 0 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; order: 3; }
  .bar .spacer { display: none; }
  .bar #w-archive { order: 2; margin-left: auto; padding: 3px 10px; font-size: 0.8667rem; }
  .bar .state { font-size: 0.8rem; order: 4; margin-left: auto; }
  /* поле ввода на телефоне: во всю ширину сверху, три строки и растёт до 40% экрана;
     кнопки «＋», микрофон и «Отправить» строкой ниже */
  .say { flex-wrap: wrap; }
  .say textarea { flex: 1 1 100%; order: 0; min-height: 76px; max-height: 40vh; font-size: 1rem; }
  .say .attach { order: 1; height: 40px; }
  .say #say-send { order: 2; margin-left: auto; padding-left: 22px; padding-right: 22px; }
  .say .rec { order: 1; }
  .top > .btn, .top > .logo { flex: none; }
  .top { gap: 6px; padding: 0 8px; }
  .logo { font-size: 1.0rem; }
  aside.open { transform: none; }
  .top .who { display: none; }
  #term { padding-left: 4px; }
}

/* переключатель темы в шапке */
.theme-btn { min-width: 38px; display: inline-flex; align-items: center; gap: 6px; }
.theme-btn .lbl { font-size: 0.8667rem; color: var(--muted); }
@media (max-width: 800px) { .top > .theme-btn .lbl { display: none; } }


/* --- плотность «компактная» --- */
:root[data-density="compact"] .top { height: 44px; }
:root[data-density="compact"] .list a { padding: 5px 8px; }
:root[data-density="compact"] .bar { padding: 5px 12px; }
:root[data-density="compact"] .keys { padding: 5px 8px; gap: 4px; }
:root[data-density="compact"] .keys .btn { padding: 4px 8px; }
:root[data-density="compact"] .say { padding: 5px 8px 7px; }
:root[data-density="compact"] .btn { padding: 5px 10px; }
@media (max-width: 800px) { :root[data-density="compact"] aside { top: 44px; } }

/* --- полоса клавиш терминала --- */
:root[data-keys="off"] .keys { display: none; }
@media (hover: hover) and (pointer: fine) { :root[data-keys="auto"] .keys { display: none; } }

/* --- экран «Настройки» --- */
.settings { max-width: 640px; }
.set-group { border: 1px solid var(--border); border-radius: 12px; background: var(--bg); margin-bottom: 14px; }
.set-group h2 { font-size: 0.8rem; text-transform: uppercase; letter-spacing: .04em; color: var(--faint); margin: 0; padding: 12px 14px 4px; }
.set-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; border-top: 1px solid var(--border); }
.set-group h2 + .set-row { border-top: 0; }
.set-row .lbl b { display: block; font-weight: 500; }
.set-row .lbl small { color: var(--muted); }
.seg { display: inline-flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; flex: none; }
.seg button { border: 0; background: var(--bg); padding: 6px 11px; cursor: pointer; font-size: 0.9rem; }
.seg button + button { border-left: 1px solid var(--border); }
.seg button.on { background: var(--accent-soft); color: var(--accent-dark); font-weight: 600; }
.stepper { display: inline-flex; align-items: center; gap: 6px; flex: none; }
.stepper output { min-width: 34px; text-align: center; font-variant-numeric: tabular-nums; color: var(--muted); }
.swatches { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.swatch {
  width: 28px; height: 28px; border-radius: 50%; border: 2px solid var(--bg); cursor: pointer;
  box-shadow: 0 0 0 1px var(--border);
}
.swatch.on { box-shadow: 0 0 0 2px var(--text); }
.preview { border: 1px dashed var(--border); border-radius: 10px; padding: 10px 12px; margin: 4px 14px 12px; }
.preview .btn { margin-right: 6px; }
@media (max-width: 600px) { .set-row { flex-direction: column; align-items: flex-start; } .swatches { justify-content: flex-start; } }

/* --- лента разговора --- */
.lenta { flex: 1; min-height: 0; overflow-y: auto; padding: 14px 16px; background: var(--bg); }
.lenta-items { max-width: 860px; margin: 0 auto; display: flex; flex-direction: column; gap: 10px; }
.msg { border-radius: 12px; padding: 9px 13px; line-height: 1.5; overflow-wrap: anywhere; }
.msg.user { align-self: flex-end; max-width: 85%; background: var(--panel); border: 1px solid var(--border); white-space: pre-wrap; }
.msg.bot { align-self: flex-start; max-width: 100%; padding-left: 2px; }
.msg.bot p { margin: 0 0 8px; } .msg.bot p:last-child { margin-bottom: 0; }
.msg.bot ul, .msg.bot ol { margin: 4px 0 8px; padding-left: 22px; }
.msg.bot h3, .msg.bot h4 { margin: 10px 0 6px; font-size: 1rem; }
.msg code { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: .86em; background: var(--panel); border: 1px solid var(--border); border-radius: 5px; padding: 0 4px; }
.msg pre { background: var(--term-bg); border: 1px solid var(--border); border-radius: 8px; padding: 9px 11px; overflow-x: auto; margin: 6px 0 8px; }
.msg pre code { background: none; border: 0; padding: 0; font-size: .82rem; white-space: pre; }
.msg a { color: var(--accent-dark); }
.msg.cmd { align-self: flex-end; font-size: .85rem; color: var(--muted); padding: 2px 6px; }
.steps { align-self: flex-start; max-width: 100%; font-size: .85rem; color: var(--muted); border-left: 2px solid var(--border); padding: 2px 0 2px 10px; }
.steps summary { cursor: pointer; list-style: none; }
.steps summary::-webkit-details-marker { display: none; }
.steps summary::before { content: '▸ '; } .steps[open] summary::before { content: '▾ '; }
.step { padding: 2px 0; } .step.err { color: var(--err); }
.step pre { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: .75rem; background: var(--panel); border-radius: 6px; padding: 6px 8px; margin: 3px 0 4px; max-height: 220px; overflow: auto; white-space: pre-wrap; color: var(--text); }
:root[data-steps="hide"] .steps { display: none; }
.done { align-self: center; font-size: .75rem; color: var(--faint); }
.asking { flex: none; margin: 0 10px 8px; border: 1px solid var(--accent); background: var(--accent-soft); border-radius: 12px; padding: 10px 12px; }
.asking-h { font-weight: 600; color: var(--accent-dark); margin-bottom: 6px; }
.asking pre { margin: 0 0 8px; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: .75rem; white-space: pre-wrap; max-height: 260px; overflow: auto; color: var(--text); }
.asking-k { display: flex; gap: 6px; flex-wrap: wrap; }
.busy { flex: none; padding: 4px 16px 6px; font-size: .85rem; color: var(--muted); display: flex; align-items: center; gap: 8px; }
.spin { width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--border); border-top-color: var(--accent); animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

.msg .tbl { overflow-x: auto; margin: 6px 0 10px; }
.msg table { border-collapse: collapse; font-size: .9rem; }
.msg th, .msg td { border: 1px solid var(--border); padding: 5px 9px; text-align: left; vertical-align: top; }
.msg th { background: var(--panel); font-weight: 600; }

/* --- лимиты подписок --- */
.statusbar { flex: none; display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; padding: 5px 14px; font-size: .8rem; color: var(--muted); border-top: 1px solid var(--border); background: var(--bg); }
.statusbar:empty { display: none; }
.statusbar b { color: var(--text); font-weight: 600; }
.lv { font-variant-numeric: tabular-nums; }
.lv.mid { color: var(--warn); } .lv.hi { color: var(--err); font-weight: 600; }
.limits { padding: 0 8px 8px; display: grid; gap: 10px; }
.lim h3 { margin: 0 0 4px; font-size: .85rem; display: flex; justify-content: space-between; }
.lim h3 small { color: var(--faint); font-weight: 400; }
.lrow { display: grid; grid-template-columns: 52px 1fr 40px; gap: 6px; align-items: center; font-size: .78rem; color: var(--muted); margin: 3px 0; }
.lbar { height: 6px; border-radius: 99px; background: var(--border); overflow: hidden; }
.lbar i { display: block; height: 100%; background: var(--accent); border-radius: 99px; }
.lbar i.mid { background: #F59E0B; } .lbar i.hi { background: var(--err); }
.lrow .pc { text-align: right; font-variant-numeric: tabular-nums; }
.lres { font-size: .72rem; color: var(--faint); margin-left: 58px; }

/* --- вложения --- */
.say .attach { flex: none; width: 42px; font-size: 1.2rem; padding: 0; color: var(--muted); }
.chips { flex: none; display: flex; flex-wrap: wrap; gap: 6px; padding: 6px 10px 0; background: var(--panel); }
.chip { display: inline-flex; align-items: center; gap: 6px; max-width: 260px; border: 1px solid var(--border); background: var(--bg); border-radius: 999px; padding: 3px 6px 3px 4px; font-size: .8rem; }
.chip img { width: 24px; height: 24px; object-fit: cover; border-radius: 50%; }
.chip .nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chip .x { border: 0; background: none; cursor: pointer; color: var(--faint); padding: 0 2px; }
.chip.load { opacity: .6; } .chip.bad { border-color: var(--err); color: var(--err); }
#work.drop { outline: 2px dashed var(--accent); outline-offset: -6px; }
.msg .att { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.msg .att img { max-width: 220px; max-height: 160px; border-radius: 8px; border: 1px solid var(--border); display: block; }
.msg .att a.f { font-size: .8rem; border: 1px solid var(--border); border-radius: 6px; padding: 2px 8px; color: var(--muted); text-decoration: none; }

/* --- голосовой ввод --- */
.rec { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; border: 1px solid var(--err); border-radius: 8px; padding: 4px 6px 4px 12px; background: var(--bg); }
.rec-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--err); animation: blink 1s infinite; }
@keyframes blink { 50% { opacity: .3; } }
.rec-wave { flex: 1; min-width: 0; height: 22px; display: flex; align-items: center; gap: 2px; overflow: hidden; }
/* полоска звука не должна выталкивать кнопки: она сжимается, кнопки и время — нет */
.rec > .btn, .rec-dot, #rec-time { flex: none; }
.rec-wave i { width: 3px; border-radius: 2px; background: var(--accent); }
#rec-time { font-variant-numeric: tabular-nums; color: var(--muted); }
.say.recording textarea, .say.recording #say-send, .say.recording #attach, .say.recording #mic { display: none; }
#mic.busy { color: var(--accent); }

/* --- Сторож --- */
.sz-svoy { margin: 4px 0 10px; }
.sz-svoy summary { cursor: pointer; color: var(--muted); padding: 6px 0; }
.sz-np-chats .set-row { padding: 8px 0; }
.sz-head { display: flex; align-items: center; gap: 10px; border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; margin-bottom: 12px; background: var(--bg); font-weight: 600; }
.sz-head.ok { border-color: var(--accent); background: var(--accent-soft); color: var(--accent-dark); }
.sz-head.warn { border-color: #F59E0B; background: var(--warn-bg); color: var(--warn); }
.sz-head.crit { border-color: var(--err); background: var(--err-bg); color: var(--err); }
.sz-head small { font-weight: 400; color: var(--muted); margin-left: auto; }
.sz-tabs { margin-bottom: 14px; }
.sz-group h2 { font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: var(--faint); margin: 14px 0 8px; }
.sz-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.sz-card { border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; background: var(--bg); display: flex; gap: 10px; align-items: flex-start; }
.sz-card .dot { margin-top: 6px; }
.sz-card b { display: block; font-weight: 600; font-size: .93rem; }
.sz-card small { color: var(--muted); }
.sz-card.warn { border-color: #F59E0B; } .sz-card.crit { border-color: var(--err); background: var(--err-bg); }
.dot.crit { background: var(--err); }
.sz-events { border: 1px solid var(--border); border-radius: 12px; background: var(--bg); }
.sz-ev { display: grid; grid-template-columns: 112px 1fr; gap: 10px; padding: 7px 12px; border-top: 1px solid var(--border); font-size: .85rem; }
.sz-ev:first-child { border-top: 0; }
.sz-ev time { color: var(--faint); font-variant-numeric: tabular-nums; }

/* --- Приёмщик --- */
.pk-tabs { margin-bottom: 14px; }
.pk-count { background: var(--err); color: #fff; border-radius: 999px; padding: 0 6px; font-size: .75rem; margin-left: 4px; }
.pk-card { max-width: 760px; }
.pk-pad { padding: 4px 14px 14px; }
.pk-start { display: grid; grid-template-columns: 2fr 1.4fr auto; gap: 10px; align-items: end; }
.pk-start .field { margin-bottom: 0; }
.pk-start select { width: 100%; }
@media (max-width: 700px) { .pk-start { grid-template-columns: 1fr; } }
.pk-h { font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: var(--faint); margin: 18px 0 8px; }
.pk-list { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 12px; background: var(--bg); max-width: 960px; }
.pk-row { display: grid; grid-template-columns: 44px 1fr auto; gap: 12px; align-items: center; padding: 9px 12px; border-top: 1px solid var(--border); color: inherit; text-decoration: none; }
.pk-row:first-child { border-top: 0; }
.pk-row:hover { background: var(--hover); }
.pk-row small { display: block; color: var(--muted); }
.pk-row time { color: var(--faint); font-size: .8rem; white-space: nowrap; }
@media (max-width: 700px) { .pk-row { grid-template-columns: 44px 1fr; } .pk-row time { grid-column: 2; } }
.pk-score { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 32px; border-radius: 8px; font-weight: 700; border: 2px solid var(--border); }
.pk-score.z-red, .pk-head.z-red .pk-big { border-color: var(--err); color: var(--err); background: var(--err-bg); }
.pk-score.z-yellow, .pk-head.z-yellow .pk-big { border-color: #F59E0B; color: var(--warn); background: var(--warn-bg); }
.pk-score.z-green, .pk-head.z-green .pk-big { border-color: var(--accent); color: var(--accent-dark); background: var(--accent-soft); }
.pk-score.st-failed { border-color: var(--err); color: var(--err); }
.pk-score.st-queued, .pk-score.st-running { border-style: dashed; color: var(--muted); }
.pk-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; max-width: 960px; }
.pk-back { color: var(--muted); text-decoration: none; }
.pk-head { display: flex; gap: 14px; align-items: center; border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; background: var(--bg); max-width: 960px; }
.pk-head > div:last-child { display: flex; flex-direction: column; gap: 2px; }
.pk-head small { color: var(--muted); }
.pk-big { font-size: 1.9rem; font-weight: 700; min-width: 70px; height: 60px; display: flex; align-items: center; justify-content: center; border-radius: 12px; border: 2px solid var(--border); flex: none; }
.pk-axes { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 6px 16px; margin: 12px 0; max-width: 960px; }
.pk-axis { display: grid; grid-template-columns: 130px 1fr 30px; gap: 8px; align-items: center; font-size: .87rem; }
.pk-axis .lbar { height: 8px; background: var(--hover); border-radius: 999px; overflow: hidden; display: block; }
.pk-axis .lbar i { display: block; height: 100%; }
.pk-axis .lbar i.red { background: var(--err); } .pk-axis .lbar i.yellow { background: #F59E0B; } .pk-axis .lbar i.green { background: var(--accent); }
.pk-sub { margin: 4px 0 12px; }
.pk-sum { max-width: 860px; line-height: 1.5; }
.pk-ul { margin: 0; padding-left: 20px; max-width: 860px; }
.pk-ul li { margin: 3px 0; }
.pk-ul.mono { font-family: 'JetBrains Mono', monospace; font-size: .78rem; word-break: break-all; }
.pk-det { margin: 12px 0; max-width: 960px; }
.pk-det summary { cursor: pointer; color: var(--muted); }
.pk-bar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 8px 0; max-width: 960px; }
.pk-bar .spacer, .pk-f-h .spacer { flex: 1; }
.pk-bar select, .pk-bar input[type=search] { padding: 6px 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); color: var(--text); max-width: 260px; }
.pk-f, .pk-rule { border: 1px solid var(--border); border-left-width: 4px; border-radius: 10px; padding: 10px 12px; margin: 8px 0; background: var(--bg); max-width: 960px; }
.pk-f.crit, .pk-rule:has(.pk-lvl.crit) { border-left-color: var(--err); }
.pk-f.important, .pk-rule:has(.pk-lvl.important) { border-left-color: #F59E0B; }
.pk-f.advice, .pk-rule:has(.pk-lvl.advice) { border-left-color: var(--faint); }
.pk-f.shadow, .pk-rule.shadow { opacity: .6; }
.pk-f-h { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.pk-lvl { font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; border-radius: 6px; padding: 1px 6px; font-weight: 600; }
.pk-lvl.crit { background: var(--err-bg); color: var(--err); }
.pk-lvl.important { background: var(--warn-bg); color: var(--warn); }
.pk-lvl.advice { background: var(--hover); color: var(--muted); }
.pk-code { font-size: .75rem; color: var(--muted); border: 1px solid var(--border); border-radius: 6px; padding: 0 5px; }
.pk-place { font-family: 'JetBrains Mono', monospace; font-size: .8rem; color: var(--muted); margin: 4px 0; word-break: break-all; }
.pk-f dl { display: grid; grid-template-columns: 130px 1fr; gap: 4px 10px; margin: 6px 0 0; font-size: .9rem; }
.pk-f dt { color: var(--muted); }
.pk-f dd { margin: 0; white-space: pre-wrap; }
@media (max-width: 700px) { .pk-f dl { grid-template-columns: 1fr; } .pk-f dd { margin-bottom: 6px; } }
.pk-rule p { margin: 6px 0; }
.pk-rule small { display: block; color: var(--muted); font-size: .8rem; }
.pk-crit { margin-top: 2px; color: var(--faint) !important; }
.pk-table { border-collapse: collapse; background: var(--bg); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; max-width: 760px; width: 100%; }
.pk-table th, .pk-table td { text-align: left; padding: 7px 12px; border-top: 1px solid var(--border); font-size: .9rem; }
.pk-table th { color: var(--faint); font-weight: 500; font-size: .8rem; border-top: 0; }
.pk-table td small { display: block; color: var(--muted); font-size: .78rem; }
.pk-total { margin: 10px 0; }
.pk-grp { margin: 4px 0; max-width: 960px; }
.pk-grp > summary { cursor: pointer; padding: 6px 0; font-weight: 500; }
.pk-doc { max-width: 780px; line-height: 1.55; }
.pk-doc h2 { font-size: 1rem; margin: 18px 0 6px; }
.pk-doc .z-red { color: var(--err); } .pk-doc .z-yellow { color: var(--warn); } .pk-doc .z-green { color: var(--accent-dark); }
/* рамки плиток витрины по последнему осмотру */
.tile.pk-frame { border-width: 2px; }
.tile.z-none { border-style: dashed; border-color: var(--faint); }
.tile.z-red { border-color: var(--err); }
.tile.z-yellow { border-color: #F59E0B; }
.tile.z-green { border-color: var(--accent); }
.tile .pk-tile-z { display: block; margin-top: 6px; font-size: .75rem; color: var(--faint); }

/* --- витрина: базовые инструменты отдельной полкой --- */
.vit-h { font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: var(--faint); margin: 6px 0 8px; }
#base-grid { margin-bottom: 18px; }
.tile.base { background: var(--panel); }

/* --- Монитор ТТХ --- */
.mon-bar { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.mon-bar .spacer { flex: 1; }
.mon-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; align-items: start; }
.mon-card { border: 1px solid var(--border); border-radius: 12px; background: var(--bg); overflow: hidden; }
.mon-card.open { grid-column: 1 / -1; max-width: 760px; }
.mon-card.warn { border-color: #F59E0B; }
.mon-card.crit { border-color: var(--err); }
.mon-card.crit .mon-top { background: var(--err-bg); }
.mon-top { display: flex; gap: 10px; align-items: flex-start; width: 100%; padding: 11px 12px; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.mon-top:hover { background: var(--hover); }
.mon-top .dot { margin-top: 6px; flex: none; }
.mon-t { flex: 1; min-width: 0; }
.mon-t b { display: block; font-weight: 600; font-size: .95rem; }
.mon-t small { color: var(--muted); }
.mon-st { font-weight: 700; font-variant-numeric: tabular-nums; color: var(--muted); white-space: nowrap; }
.mon-card.warn .mon-st { color: var(--warn); } .mon-card.crit .mon-st { color: var(--err); } .mon-card.ok .mon-st { color: var(--accent-dark); }
.mon-buy { display: flex; flex-wrap: wrap; gap: 4px 12px; padding: 0 12px 10px 32px; font-size: .85rem; }
.mon-buy a, .dv-body .hint a { color: var(--accent-dark); }
.mon-dos { border-top: 1px solid var(--border); padding: 10px 14px 4px; }
.mon-dos dl { display: grid; grid-template-columns: max-content 1fr; gap: 4px 14px; margin: 0 0 10px; font-size: .9rem; }
.mon-dos dt { color: var(--muted); }
.mon-dos dd { margin: 0; }
.mon-honest { background: var(--panel); border-radius: 8px; padding: 8px 10px; font-size: .87rem; color: var(--muted); margin: 0 0 12px; }
.mon-form { margin-bottom: 10px; }
.mon-form .field input, .mon-form .field select { width: 100%; }
.mon-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 8px; }
.mon-add { max-width: 760px; }
@media (max-width: 700px) { .mon-grid { grid-template-columns: 1fr 1fr; } }
.mon-dos .mon-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 0 10px; }
.mon-dos .mon-form .row { grid-column: 1 / -1; }
.mon-dos .mon-form .field:only-of-type { grid-column: 1 / -1; }

/* --- Журнал --- */
.zh-tabs { margin-bottom: 12px; }
.zh-filter { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; max-width: 960px; }
.zh-q { flex: 0 1 280px; padding: 7px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); color: var(--text); font: inherit; }
.zh-tags { display: flex; gap: 6px; flex-wrap: wrap; }
.zh-tag { border: 1px solid var(--border); background: var(--bg); color: var(--muted); border-radius: 999px; padding: 3px 10px; font-size: .85rem; cursor: pointer; }
.zh-tag.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent-dark); font-weight: 600; }
.zh-row { grid-template-columns: 56px 1fr auto; }
.zh-n { color: var(--faint); font-variant-numeric: tabular-nums; font-size: .85rem; }
.zh-bar { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.zh-link { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; border: 1px solid var(--accent); background: var(--accent-soft); border-radius: 10px; padding: 8px 10px; margin-bottom: 12px; max-width: 820px; font-size: .9rem; }
.zh-link input { flex: 1 1 260px; padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg); color: var(--text); font: inherit; font-size: .85rem; }
.zh-art { max-width: 820px; border: 1px solid var(--border); border-radius: 12px; background: var(--bg); padding: 18px 22px; }
.zh-art h1 { margin: 4px 0 14px; font-size: 1.5rem; }
.zh-meta { color: var(--faint); font-size: .85rem; }
.zh-text { line-height: 1.6; }
.zh-text h2, .zh-text h3, .zh-text h4 { margin: 18px 0 8px; }
.zh-text pre { background: var(--panel); border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; overflow-x: auto; font-size: .85rem; }
.zh-text code { font-family: 'JetBrains Mono', monospace; font-size: .88em; }
.zh-text blockquote { border-left: 3px solid var(--accent); margin: 10px 0; padding: 4px 12px; color: var(--muted); }
.zh-text table { border-collapse: collapse; } .zh-text th, .zh-text td { border: 1px solid var(--border); padding: 5px 9px; text-align: left; }
.zh-text .tbl { overflow-x: auto; margin: 10px 0; }
.zh-edit { max-width: 820px; }
.zh-edit textarea { width: 100%; font-family: 'JetBrains Mono', monospace; font-size: .85rem; padding: 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); color: var(--text); }

/* --- Видео по ссылке --- */
.vd-form { display: flex; gap: 8px; flex-wrap: wrap; max-width: 960px; margin-bottom: 12px; }
.vd-form input { flex: 1 1 320px; padding: 9px 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); color: var(--text); font: inherit; }
.vd-form .hint { flex-basis: 100%; padding: 0 2px; }
.vd-row { grid-template-columns: 92px 1fr auto; }
.vd-st { font-size: .8rem; font-weight: 600; border-radius: 999px; padding: 2px 8px; text-align: center; background: var(--panel); color: var(--muted); }
.vd-st.done { background: var(--accent-soft); color: var(--accent-dark); }
.vd-st.running { background: var(--warn-bg); color: var(--warn); }
.vd-st.failed { background: var(--err-bg); color: var(--err); }
.vd-busy { display: flex; align-items: center; gap: 8px; color: var(--muted); }
.vd-plain { white-space: pre-wrap; }

/* --- Окно в Европу --- */
.okno h1 { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.ok-where { font-size: .8rem; font-weight: 400; color: var(--muted); }
.ok-bar { display: flex; gap: 6px; align-items: center; margin-bottom: 8px; max-width: 1280px; }
.ok-bar input:not([type=checkbox]) { flex: 1; min-width: 0; padding: 7px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); color: var(--text); font: inherit; }
.ok-bar .btn:disabled { opacity: .4; cursor: default; }
.ok-screen { position: relative; max-width: 1280px; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; background: #fff; outline: none; margin-bottom: 8px; aspect-ratio: 1280 / 800; }
.ok-screen:focus { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }
.ok-screen img { display: block; width: 100%; height: auto; cursor: pointer; user-select: none; }
.ok-st { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #6B7280; pointer-events: none; }
.ok-st:empty { display: none; }
#ok-sel textarea { width: 100%; max-width: 1280px; font: inherit; font-size: .85rem; padding: 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); color: var(--text); }
@media (max-width: 700px) { #ok-type-form { flex-wrap: wrap; } }

/* --- Корзина --- */
.tile { position: relative; }
.tile-x { position: absolute; top: 6px; right: 6px; border: 0; background: none; color: var(--faint); cursor: pointer; font-size: .85rem; padding: 2px 6px; border-radius: 6px; opacity: 0; }
.tile:hover .tile-x, .tile-x:focus-visible { opacity: 1; }
.tile-x:hover { background: var(--err-bg); color: var(--err); }
@media (hover: none) { .tile-x { opacity: .7; } }
.kz-row { grid-template-columns: 130px 1fr auto; }
.kz-kind { font-size: .8rem; color: var(--muted); }
.ss-row { grid-template-columns: 1fr auto; }
.kz-acts { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }

/* Раздел «Движки и ключи» (#dvizhki) */
#dvizhki-box { margin-top: 0; }
.dv-group { padding-bottom: 10px; }
.dv-intro { padding: 2px 14px 8px; }
.dv-list { display: grid; gap: 8px; padding: 4px 12px 8px; }
.dv-card { border: 1px solid var(--border); border-radius: 10px; background: var(--panel); overflow: hidden; }
.dv-card.ok { border-color: color-mix(in srgb, var(--accent) 45%, var(--border)); }
.dv-card.warn { border-color: #F59E0B; }
.dv-head { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 12px; background: none; border: 0; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.dv-t { flex: 1; min-width: 0; }
.dv-t b { display: block; font-weight: 600; }
.dv-t small { color: var(--muted); }
.dv-side { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; flex: none; max-width: 48%; }
.dv-st { color: var(--muted); font-size: .8rem; text-align: right; }
.dv-st.warn { color: var(--warn); }
.dv-go { display: inline-block; padding: 5px 12px; border-radius: 8px; border: 1px solid var(--border); background: var(--panel); font-size: .8667rem; font-weight: 500; white-space: nowrap; }
.dv-go.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.dv-head:hover .dv-go { border-color: var(--accent); }
.dv-jump { display: flex; align-items: center; gap: 4px 12px; flex-wrap: wrap; margin: 0 0 14px; padding: 14px 16px; border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--border)); border-radius: 12px; background: var(--accent-soft); color: inherit; text-decoration: none; position: relative; padding-right: 36px; }
.dv-jump b { font-weight: 600; }
.dv-jump span { color: var(--muted); font-size: .9333rem; }
.dv-jump i { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); font-style: normal; font-size: 1.4rem; color: var(--accent-dark); }
.dv-dot { width: 10px; height: 10px; border-radius: 50%; flex: none; background: var(--border); }
.dv-dot.ok { background: var(--accent); }
.dv-dot.warn { background: #F59E0B; }
.dv-body { padding: 4px 12px 12px; border-top: 1px solid var(--border); background: var(--bg); }
.dv-body .hint { padding: 6px 0; }
.dv-warn { background: var(--warn-bg); color: var(--warn); border-radius: 8px; padding: 8px 10px; margin: 8px 0; font-size: .9333rem; }
.dv-ok { background: var(--accent-soft); border-radius: 8px; padding: 8px 10px; margin: 8px 0; font-size: .9333rem; }
.dv-form { margin-top: 10px; max-width: 520px; }
.dv-form .field { margin-bottom: 8px; }
@media (max-width: 600px) { .dv-side { max-width: 42%; } }

/* Витрина: «＋ Новый инструмент», кнопки хозяина под плиткой, версии (04.10) */
.vit-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.vit-top h1 { margin-right: auto; }
.tile-act { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.tile-act button { font: inherit; font-size: .8rem; padding: 3px 9px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); color: var(--text); cursor: pointer; }
.tile-act button:hover { border-color: var(--accent); }
.vs-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--border); }
.vit-help { margin-top: 18px; color: var(--muted); font-size: .9rem; }
.vit-help summary { cursor: pointer; color: var(--text); }
.vit-help ol { padding-left: 20px; }
#ac-osm { margin-bottom: 10px; }
.field textarea { resize: vertical; font: inherit; line-height: 1.4; }

/* --- Генерация картинок и видео (public/generaciya.js) --- */
.dv-tabs { display: flex; gap: 6px; margin: -4px 0 14px; }
.dv-tabs a { padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border); color: var(--text); text-decoration: none; font-size: .9333rem; }
.dv-tabs a.active { background: var(--accent-soft); border-color: color-mix(in srgb, var(--accent) 45%, var(--border)); font-weight: 600; }
.gen-intro { margin: 0 0 12px; }
.gen-predely { padding: 4px 14px 12px; }
.gen-today { margin: 6px 0 12px; }
.gen-bar { display: block; height: 6px; border-radius: 3px; background: var(--border); margin-top: 6px; overflow: hidden; max-width: 360px; }
.gen-bar i { display: block; height: 100%; background: var(--accent); }
.gen-models { display: grid; gap: 6px; padding: 4px 12px 12px; }
.gen-model { display: flex; gap: 10px; align-items: flex-start; border: 1px solid var(--border); border-radius: 10px; padding: 8px 10px; background: var(--panel); cursor: pointer; }
.gen-model.off { opacity: .55; }
.gen-model input { margin-top: 3px; }
.gen-m-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.gen-m-t small { color: var(--faint); }
.gen-m-t code { font-size: .8rem; color: var(--faint); }
.gen-m-side { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; white-space: nowrap; }
.gen-cena { font-weight: 600; }
.gen-def { font-size: .8667rem; color: var(--accent); }
.btn.sm { padding: 3px 8px; font-size: .8rem; }
.gen-instr-list { padding: 0 14px 12px; display: grid; gap: 6px; }
.gen-instr { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; justify-content: space-between; }
.gen-instr-p input { width: 72px; }
.gen-zh-wrap { overflow-x: auto; padding: 0 12px 12px; }
.gen-zh { width: 100%; border-collapse: collapse; font-size: .8667rem; }
.gen-zh th, .gen-zh td { text-align: left; padding: 5px 6px; border-top: 1px solid var(--border); vertical-align: top; }
.gen-zh td.num { text-align: right; white-space: nowrap; }
.gen-zh a { text-decoration: none; }
.gen-err { display: block; color: var(--warn); }
.gen-chk { display: block; margin: 10px 0; }
.msg.gen-media { display: flex; flex-wrap: wrap; gap: 8px; }
.msg.gen-media img { max-width: min(320px, 100%); max-height: 320px; border-radius: 10px; border: 1px solid var(--border); display: block; }
.msg.gen-media video { max-width: min(360px, 100%); max-height: 420px; border-radius: 10px; background: #000; }
@media (max-width: 600px) { .gen-model { flex-wrap: wrap; } .gen-m-side { flex-direction: row; align-items: center; width: 100%; justify-content: space-between; } }
/* Доступы: удаление участника (04.10) */
.btn.danger { color: var(--err); border-color: color-mix(in srgb, var(--err) 45%, var(--border)); }
.btn.danger:hover { background: color-mix(in srgb, var(--err) 10%, transparent); }
.user-del { margin-top: 10px; }
