:root{
  --bg:#0f1115;--panel:#141821;--muted:#9aa4b2;--fg:#e6e6e6;--border:#242a36;--accent:#2d7dff;--accent-soft:#193a80
}
html[data-theme="light"]{
  --bg:#f6f8fb;--panel:#ffffff;--muted:#5f6b7a;--fg:#0f141c;--border:#e4e8f0;--accent:#2d7dff;--accent-soft:#e8f0ff
}
*{box-sizing:border-box}
html,body{height:100%;margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,Inter,Arial,sans-serif}
.layout{display:grid;grid-template-columns:260px 1fr;grid-template-rows:56px 1fr;grid-template-areas:"side top" "side main";height:100vh}
header{grid-area:top;display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border)}
header .brand{font-weight:600;letter-spacing:.2px}
.status{margin-left:auto;font-size:12px;color:var(--muted)}
aside{grid-area:side;background:var(--panel);border-right:1px solid var(--border);padding:14px}
.section{margin-bottom:18px}
.section h3{margin:6px 8px 8px;font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px}
.nav{display:flex;flex-direction:column;gap:8px}
.btn{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border-radius:2px;border:1px solid #2a3242;background:#121722;color:#cfd6df;text-decoration:none;cursor:pointer}
.btn:hover{background:#151b26}
html[data-theme="light"] .btn{background:#f4f7fc;color:#0f141c;border-color:var(--border)}
.btn.disabled{border:1px dashed #2a3242;background:#111521;color:#6e7785;cursor:not-allowed;pointer-events:none}
.btn.active{border-color:#38507a}
main{grid-area:main;display:flex;flex-direction:column;height:100%}
.tabs{display:flex;gap:8px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border)}
.tab{padding:8px 10px;border-radius:2px;border:1px solid #2a3242;color:#cfd6df;text-decoration:none;cursor:pointer}
.tab:hover{background:#151b26}
.tab.active{background:#121722;border-color:#38507a}
.tab.disabled{border-style:dashed;opacity:.6;pointer-events:none;cursor:not-allowed}
html[data-theme="light"] .tab{color:#0f141c;background:#f6f8fb;border-color:var(--border)}
.content{flex:1;padding:0}
iframe{width:100%;height:100%;border:0}
.foot{padding:8px 16px;font-size:12px;color:var(--muted);border-top:1px solid var(--border);background:var(--panel)}
.card{background:var(--panel);border:1px solid var(--border);border-radius:2px;padding:16px;margin:16px}
h1,h2{margin:0 0 10px}
small{color:var(--muted)}
.center{display:flex;align-items:center;justify-content:center;height:100vh;padding:16px}
.box{max-width:420px;width:100%}
/* drop zone */
.drop{border:2px dashed #344055;border-radius:2px;padding:16px;text-align:center;background:#101522;color:#cfd6df}
.drop.drag{background:#121a27;border-color:#3e4b61}
.drop small{display:block;color:var(--muted);margin-top:6px}
html[data-theme="light"] .drop{background:#f7f9ff;border-color:#c9d6ff;color:#0f141c}
/* meters */
.meter{height:10px;background:#0f141c;border:1px solid var(--border);border-radius:2px;overflow:hidden}
.meter>span{display:block;height:100%;background:var(--accent);width:0%}
.row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:8px 0}
.badge{font-size:12px;color:#cfd6df;opacity:.85}
html[data-theme="light"] .badge{color:#435160}
.link{color:#cfd6df;text-decoration:underline;cursor:pointer}
html[data-theme="light"] .link{color:#2a3a5d}
/* tables */
.table{width:100%;border-collapse:collapse;margin-top:10px}
.table th,.table td{border-bottom:1px solid var(--border);padding:8px 6px;font-size:14px}
/* file gallery */
.filegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-top:12px}
.tile{border:1px solid var(--border);border-radius:2px;background:var(--panel);padding:10px;display:grid;grid-template-columns:44px 1fr auto;grid-template-rows:auto auto;column-gap:10px;row-gap:4px;align-items:center}
.icon{grid-row:1/3;grid-column:1/2;width:44px;height:56px;border:1px solid var(--border);border-radius:2px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);font-size:12px}
.name{grid-column:2/3;grid-row:1/2;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.size{grid-column:2/3;grid-row:2/3;font-size:12px;color:var(--muted)}
.actions{grid-column:3/4;grid-row:1/3;display:flex;align-items:center;gap:8px;font-size:12px}
/* datalens area */
.dlwrap{position:relative;height:calc(100vh - 180px);margin:16px}
.skeleton{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(90deg, rgba(255,255,255,0.04) 0, rgba(255,255,255,0.04) 40px, transparent 40px, transparent 80px)}
.dlfail{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:rgba(15,17,21,.85);color:#fff}
html[data-theme="light"] .dlfail{background:rgba(246,248,251,.9);color:#0f141c}
.topline{display:flex;align-items:center;justify-content:space-between;margin:0 16px}
.minilink{font-size:12px;text-decoration:underline;color:var(--muted)}
/* modal base (для диалогов создания) */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.5);display:none;align-items:center;justify-content:center;z-index:1000}
.modal .box{background:var(--panel);border:1px solid var(--border);border-radius:2px;padding:16px;max-width:520px;width:96%}
.modal .row input,.modal .row select, .modal .row textarea{width:100%;padding:8px;border:1px solid #2a3242;border-radius:2px;background:#0e121a;color:#e6e6e6}
html[data-theme="light"] .modal .row input,html[data-theme="light"] .modal .row select,html[data-theme="light"] .modal .row textarea{background:#fff;color:#0f141c;border-color:var(--border)}
/* === patch 2025-10-30 === */
/* таблицы — всё по левому краю */
.table th, .table td { text-align: left; }

/* кнопка переключения темы (ненавязчивая "chip") */
.chip{background:transparent;border:1px solid var(--border);color:var(--muted);
  padding:6px 8px;border-radius:2px;cursor:pointer}
.chip:hover{background:rgba(255,255,255,0.04)}
html[data-theme="light"] .chip:hover{background:var(--accent-soft)}

/* поля ввода в светлой теме — как drop-зона (мягкий светло-голубой) */
html[data-theme="light"] input,
html[data-theme="light"] select,
html[data-theme="light"] textarea{
  background:#f7f9ff !important;color:#0f141c !important;border:1px solid var(--border) !important
}

/* кнопки в светлой теме — увеличить контраст неактивных */
html[data-theme="light"] .btn.active{background:#eef4ff;border-color:#c6d1e6}
html[data-theme="light"] .btn.disabled{
  background:#f1f4fa;border:1px dashed #c6d1e6;color:#9aa4b2
}

/* карточки файлов — останутся широкими как раньше; тут без изменений */
/* === patch 2025-10-30 === */
/* таблицы — всё по левому краю */
.table th, .table td { text-align: left; }

/* кнопка переключения темы (ненавязчивая "chip") */
.chip{background:transparent;border:1px solid var(--border);color:var(--muted);
  padding:6px 8px;border-radius:2px;cursor:pointer}
.chip:hover{background:rgba(255,255,255,0.04)}
html[data-theme="light"] .chip:hover{background:var(--accent-soft)}

/* поля ввода в светлой теме — как drop-зона (мягкий светло-голубой) */
html[data-theme="light"] input,
html[data-theme="light"] select,
html[data-theme="light"] textarea{
  background:#f7f9ff !important;color:#0f141c !important;border:1px solid var(--border) !important
}

/* кнопки в светлой теме — увеличить контраст неактивных */
html[data-theme="light"] .btn.active{background:#eef4ff;border-color:#c6d1e6}
html[data-theme="light"] .btn.disabled{
  background:#f1f4fa;border:1px dashed #c6d1e6;color:#9aa4b2
}

/* карточки файлов — останутся широкими как раньше; тут без изменений */
/* === patch 2025-10-30 (buttons) === */
.btn.primary{background:#eef4ff;border:1px solid #c6d1e6;color:#0f141c}
html[data-theme="dark"] .btn.primary{background:#1b2435;border:1px solid #36445c;color:#cfd6df}
/* === patch 2025-10-30 (ui unify) === */
:root { --radius:2px; }
.btn, input, select, textarea, .drop, .card, .tile, .chip, .filegrid .tile, .dlwrap, dialog { border-radius: var(--radius) !important; }

/* инпуты — единый вид, чуть выше */
input, select, textarea { height:36px; padding:6px 8px; }
html[data-theme="light"] input, html[data-theme="light"] select, html[data-theme="light"] textarea {
  background:#f7f9ff !important; color:#0f141c !important; border:1px solid var(--border) !important;
}
html[data-theme="dark"] input, html[data-theme="dark"] select, html[data-theme="dark"] textarea {
  background:#0f141c !important; color:#cfd6df !important; border:1px solid #36445c !important;
}

/* таблицы — всё по левому краю */
.table th, .table td { text-align:left; }

/* кнопка переключения темы (аккуратная chip) */
.chip{background:transparent;border:1px solid var(--border);color:var(--muted);padding:6px 8px;cursor:pointer;border-radius:2px}
.chip:hover{background:rgba(0,0,0,0.04)}
html[data-theme="light"] .chip:hover{background:var(--accent-soft)}

/* кнопки */
.btn.primary{background:#eef4ff;border:1px solid #c6d1e6;color:#0f141c}
html[data-theme="dark"] .btn.primary{background:#1b2435;border:1px solid #36445c;color:#cfd6df}
html[data-theme="light"] .btn.disabled{background:#f1f4fa;border:1px dashed #c6d1e6;color:#9aa4b2}

/* дашборд — рамка и спиннер */
.dlwrap{border:1px solid var(--border);border-radius:2px;position:relative;min-height:360px}
.skeleton{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px}
.spin{width:14px;height:14px;border:2px solid rgba(0,0,0,.2);border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
html[data-theme="dark"] .spin{color:#cfd6df}
html[data-theme="light"] .spin{color:#0f141c}

/* галерея файлов — иконки типов */
.filegrid .icon{width:44px;height:28px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;border:1px solid var(--border)}
.icon.xls{background:#e8f6ea;color:#0b5;border-color:#bfe6c8}   /* зелёный XLS */
.icon.doc{background:#eef4ff;color:#2c5aff;border-color:#c6d1e6} /* синий DOC */
.icon.img{background:#fff;color:#0f141c}
.icon.txt{background:#fff;color:#0f141c}
.icon.other{background:#eef1f4;color:transparent} /* серый без текста */
/* === patch 2025-10-30 (layout/auth/edit) === */
:root { --radius:2px; }
.btn, input, select, textarea, .drop, .card, .tile, .chip, .filegrid .tile, .dlwrap, dialog { border-radius: var(--radius) !important; }

/* центрирование страницы входа */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.auth-card{width:100%;max-width:420px}

/* единый вид инпутов, чуть выше */
input, select, textarea { height:36px; padding:6px 8px; }
html[data-theme="light"] input, html[data-theme="light"] select, html[data-theme="light"] textarea {
  background:#f7f9ff !important; color:#0f141c !important; border:1px solid var(--border) !important;
}
html[data-theme="dark"] input, html[data-theme="dark"] select, html[data-theme="dark"] textarea {
  background:#0f141c !important; color:#cfd6df !important; border:1px solid #36445c !important;
}

/* таблицы — всё по левому краю */
.table th, .table td { text-align:left; }

/* кнопки */
.btn.primary{background:#eef4ff;border:1px solid #c6d1e6;color:#0f141c}
html[data-theme="dark"] .btn.primary{background:#1b2435;border:1px solid #36445c;color:#cfd6df}
html[data-theme="light"] .btn.disabled{background:#f1f4fa;border:1px dashed #c6d1e6;color:#9aa4b2}

/* тулбар у вкладок */
.tabs{display:flex;align-items:center;gap:12px}
.toolbar{margin-left:auto;display:flex;gap:8px}

/* режим редактирования на админ‑страницах */
.page-editable:not(.editing) input,
.page-editable:not(.editing) select,
.page-editable:not(.editing) textarea { pointer-events:none; opacity:.9; }
.page-editable:not(.editing) .row-save { display:none; }

/* дашборд — рамка и спиннер */
.dlwrap{border:1px solid var(--border);position:relative;min-height:360px}
.skeleton{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px}
.spin{width:14px;height:14px;border:2px solid rgba(0,0,0,.2);border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
html[data-theme="dark"] .spin{color:#cfd6df}
html[data-theme="light"] .spin{color:#0f141c}

/* иконки типов во вложениях */
.filegrid .icon{width:44px;height:28px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;border:1px solid var(--border)}
.icon.xls{background:#e8f6ea;color:#0b5;border-color:#bfe6c8}
.icon.doc{background:#eef4ff;color:#2c5aff;border-color:#c6d1e6}
.icon.img{background:#fff;color:#0f141c}
.icon.txt{background:#fff;color:#0f141c}
.icon.other{background:#eef1f4;color:transparent}
/* === patch 2025-10-30 (tabs + view/edit) === */

/* таб-бар: только нижняя подсветка */
.tabs{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);padding:0 16px;margin:0 16px 12px}
.tabs .tab{background:transparent;border:none;cursor:pointer;padding:10px 8px;margin:0;
  border-bottom:2px solid transparent;color:inherit}
.tabs .tab.active{border-bottom-color:#2c5aff;color:#2c5aff}
.tabs .tab.disabled{color:#9aa4b2;cursor:default}

/* «просмотр» (v) и «редактирование» (e) на админ-страницах */
.page-editable .v{display:inline}
.page-editable .e{display:none}
.page-editable.editing .v{display:none}
.page-editable.editing .e{display:inline-block}
.page-editable .row-save{display:none}
.page-editable.editing .row-save{display:inline-block}
/* === patch 2025-10-30 (tabs + view/edit + colors) === */
:root{ --radius:2px; }
html[data-theme="light"]{ --accent:#2c5aff; --text:#0f141c; --muted:#667085; --border:#d5dbe7; }
html[data-theme="dark"] { --accent:#8fb0ff; --text:#cfd6df; --muted:#98a2b3; --border:#36445c; }

/* таб-бар: без фона; акцент снизу */
.tabs{display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--border);padding:0 16px;margin:0 16px 12px}
.tabs .tab{background:transparent;border:none;cursor:pointer;padding:10px 2px;margin:0 6px;color:var(--muted);
           border-bottom:3px solid transparent}
.tabs .tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.tabs .tab.disabled{color:#9aa4b2;cursor:default;border-bottom-color:transparent}

/* режимы: в просмотре показываем .v; в редактировании — .e */
.page-editable .v{display:inline}
.page-editable .e{display:none}
.page-editable.editing .v{display:none}
.page-editable.editing .e{display:inline-block}

/* прочие ранее заданные стили не трогаем */
/* === patch 2025-10-30 (tabs refine) === */
.tabs{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);padding:0 16px;margin:0 16px 12px}
.tabs .tab{background:transparent!important;border:none!important;cursor:pointer;padding:10px 8px;margin:0;color:inherit;
  border-bottom:3px solid transparent} /* только низ, без фона/контура */
.tabs .tab.active{border-bottom-color:#2c5aff;color:#2c5aff} /* полоса у активного таба толще */
.tabs .tab.disabled{color:#9aa4b2;cursor:default;border-bottom-color:transparent}
html[data-theme="dark"] .tabs .tab.active{color:#8fb3ff;border-bottom-color:#8fb3ff}
/* === patch 2025-10-30 (tabs underline fix) === */
.tabs{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);padding:0 16px;margin:0 16px 12px}
.tabs .tab{
  background:transparent!important;border:none!important;cursor:pointer;padding:10px 8px;margin:0;color:inherit;
  border-bottom:3px solid transparent!important
}
.tabs .tab.disabled{color:#9aa4b2;cursor:default;border-bottom-color:transparent!important}
/* активный таб — толще линия, без фона */
html[data-theme="light"] .tabs .tab.active{
  color:#2c5aff!important;border-bottom-color:#2c5aff!important
}
html[data-theme="dark"] .tabs .tab.active{
  color:#8fb3ff!important;border-bottom-color:#8fb3ff!important
}
/* === patch 2025-10-30 (tabs underline visible) === */
.tabs{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);padding:0 16px;margin:0 16px 12px}
.tabs .tab{background:transparent!important;border:none!important;cursor:pointer;padding:10px 8px;margin:0;color:inherit;
  border-bottom:3px solid transparent!important; margin-bottom:-1px}
.tabs .tab.disabled{color:#9aa4b2;cursor:default;border-bottom-color:transparent!important}
html[data-theme="light"] .tabs .tab.active{color:#2c5aff!important;border-bottom-color:#2c5aff!important}
html[data-theme="dark"]  .tabs .tab.active{color:#8fb3ff!important;border-bottom-color:#8fb3ff!important}
/* === patch 2025-10-30 (tables + dialogs unify) === */
.table th,.table td{ text-align:left !important; vertical-align:middle }
.table th{ font-weight:600 }
dialog,dialog[open]{ border:1px solid var(--border); border-radius:2px; padding:16px }
.modal-header{ font-weight:600; margin:0 0 8px }
.modal-footer{ display:flex; justify-content:flex-end; gap:8px; margin-top:12px }
.btn{ padding:8px 12px; border:1px solid var(--border); border-radius:2px; background:transparent; cursor:pointer }
.btn.primary{ border-color:transparent; background:#2c5aff; color:#fff }
html[data-theme="dark"] .btn.primary{ background:#8fb3ff; color:#0b1a33 }
.btn.ghost{ border-color:transparent; background:transparent; color:inherit }
.tabs{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--border);padding:0 16px;margin:0 16px 12px}
.tabs .tab{background:transparent!important;border:none!important;cursor:pointer;padding:10px 8px;margin:0;color:inherit;
  border-bottom:3px solid transparent!important; margin-bottom:-1px}
.tabs .tab.disabled{color:#9aa4b2;cursor:default;border-bottom-color:transparent!important}
html[data-theme="light"] .tabs .tab.active{color:#2c5aff!important;border-bottom-color:#2c5aff!important}
html[data-theme="dark"]  .tabs .tab.active{color:#8fb3ff!important;border-bottom-color:#8fb3ff!important}

/* === Unified sidebar menu === */
.sidebar .menu-group{margin-bottom:16px}
.sidebar .menu-title{font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;opacity:.7;margin:8px 0 6px}
.sidebar .menu-item{display:block;padding:8px 10px;border-radius:2px;text-decoration:none;transition:background .15s ease}
:root{--hover-bg:rgba(100,130,200,.12)}
.theme-light{--hover-bg:rgba(30,60,130,.08);--line:rgba(0,0,0,.08);--accent-bg:#2f6bff;--accent-fg:#fff}
.theme-dark{--line:rgba(255,255,255,.08);--accent-bg:#3563ff;--accent-fg:#fff}
.sidebar .menu-item:hover{background:var(--hover-bg)}
.theme-dark .sidebar .menu-item{color:#d7e3ff}
.theme-light .sidebar .menu-item{color:#1d2a3b}

/* === Unified table === */
.table{width:100%;border-collapse:collapse}
.table th,.table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.table th{font-weight:600;opacity:.9}
.table tr{height:44px}

/* === Buttons === */
.btn{border-radius:2px;padding:8px 12px;border:1px solid transparent;cursor:pointer}
.btn-primary{background:var(--accent-bg);color:var(--accent-fg)}
.btn-secondary{background:transparent;border-color:var(--line)}
.btn-danger{background:#e5484d;color:#fff}
.btn[disabled],.disabled{opacity:.45;pointer-events:none}

/* === Tabs underline === */
.tabbar{display:flex;gap:18px;border-bottom:1px solid var(--line);margin-bottom:12px}
.tabbar .tab{padding:10px 2px;color:inherit;text-decoration:none;border-bottom:2px solid transparent}
.tabbar .tab.active{border-bottom-color:var(--accent-bg);font-weight:600}

/* === Password mask/reveal === */
.pass-cell{display:flex;align-items:center;gap:8px}
.pass-mask{font-family:ui-monospace,Menlo,Consolas,"Liberation Mono",monospace;letter-spacing:.08em}
.pass-toggle{border:none;background:transparent;color:var(--accent-bg);cursor:pointer;font-size:.9rem}

/* === Minor fixes === */
.form-note{opacity:.75;font-size:.9rem}

/* === [UNIFY THEME VARS] ================================================ */
html[data-theme="light"] {
  --bg: #ffffff;
  --text: #1f2937;
  --muted: #6b7280;
  --line: rgba(0,0,0,.08);
  --accent: #3b82f6;
  --accent-weak: #e8f1ff;
  --card: #ffffff;
  --hover-bg: rgba(59,130,246,.08);
  --input-bg: #f8fbff;
  --input-border: #dbe7ff;
}
html[data-theme="dark"] {
  --bg: #0f172a;
  --text: #e5e7eb;
  --muted: #9aa4b2;
  --line: rgba(255,255,255,.08);
  --accent: #60a5fa;
  --accent-weak: rgba(96,165,250,.12);
  --card: #0b1222;
  --hover-bg: rgba(96,165,250,.16);
  --input-bg: #121a2b;
  --input-border: #24324b;
}

/* === [SIDEBAR] — убрать дубль «форс‑меню», вернуть акценты ============== */
#mgmt-menu { display: none !important; }           /* Спрятать «форс‑вставку» управления */
aside.sidebar { background: var(--card); }
aside .menu-group { margin: 16px 0; }
aside .menu-title { 
  font-size: 12px; letter-spacing: .06em; text-transform: uppercase; 
  color: var(--muted); padding: 8px 14px;
}
aside .menu-item {
  display: block; padding: 8px 14px; border-radius: 2px;   /* <= скругление не более 2px */
  color: var(--text); text-decoration: none;
}
aside .menu-item:hover { background: var(--hover-bg); }
aside .menu-item.active { 
  background: var(--accent-weak); 
  color: var(--accent); 
}

/* === [TABS] — линия снизу только у активной, выделение толщиной ========== */
.tabbar { display: flex; gap: 20px; border-bottom: 1px solid var(--line); }
.tabbar .tab {
  padding: 10px 2px; margin-bottom: -1px; color: var(--muted); 
  text-decoration: none; border-bottom: 2px solid transparent;
}
.tabbar .tab:hover { color: var(--text); }
.tabbar .tab.active { 
  color: var(--accent); border-bottom-color: var(--accent); border-bottom-width: 3px;
}

/* === [TABLES] — единый вид, левое выравнивание ========================== */
table { border-collapse: collapse; width: 100%; }
th, td { 
  text-align: left;                                  /* заголовки и содержимое по левому краю */
  padding: 10px 12px; 
  border-bottom: 1px solid var(--line);
}
thead th { color: var(--muted); font-weight: 600; }

/* Единый вид кнопок */
.btn { 
  border-radius: 2px;                                /* <= скругление 2px */
  padding: 8px 12px; border: 1px solid var(--input-border); 
  background: var(--accent-weak); color: var(--accent); cursor: pointer;
}
.btn.primary { background: var(--accent); color: #fff; border-color: var(--accent); }
.btn.ghost { background: transparent; color: var(--accent); }
.btn[disabled] { opacity: .5; cursor: default; }

/* Глобальная панель редактирования — отключаем (вариант А: построчно) */
#editbar { display: none !important; }

/* Поля ввода — светлая тема с «светло‑голубым» как на загрузчике */
html[data-theme="light"] input[type="text"],
html[data-theme="light"] input[type="password"],
html[data-theme="light"] select, 
html[data-theme="light"] textarea {
  background: var(--input-bg);
  border: 1px solid var(--input-border);
}

/* Маска пароля + кнопка «глаз» рядом */
.pw-cell { position: relative; }
.pw-eye {
  position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
  border: 0; background: transparent; cursor: pointer; color: var(--muted);
}
.pw-toast {
  position: fixed; z-index: 3000; right: 18px; bottom: 18px; 
  background: var(--card); border: 1px solid var(--line); padding: 10px 14px; 
  border-radius: 2px; box-shadow: 0 6px 18px rgba(0,0,0,.18);
}
/* === FIX PACK 2025‑10‑30 === */
/* Тёмная/светлая тема через html[data-theme] */
html[data-theme="light"]{
  --bg:#ffffff; --text:#202536; --muted:#6b7280;
  --line:#e5e7eb; --card:#f9fafb; --accent:#3b82f6; --accent-weak:#93c5fd;
  --hover:#f3f4f6; --danger:#ef4444; --success:#16a34a;
  --input-bg:#ffffff; --input-border:#d1d5db; --input-focus:#3b82f6;
}
html[data-theme="dark"]{
  --bg:#0f1220; --text:#e5e7eb; --muted:#9aa4b2;
  --line:#2b3142; --card:#14182a; --accent:#60a5fa; --accent-weak:#1f3a8a;
  --hover:#192038; --danger:#f87171; --success:#22c55e;
  --input-bg:#151a2e; --input-border:#2b3142; --input-focus:#60a5fa;
}
body{background:var(--bg);color:var(--text)}

/* Сайдбар */
aside.sidebar .menu-group{margin:10px 0}
aside.sidebar .menu-title{font-size:12px;color:var(--muted);letter-spacing:.06em;margin:14px 12px 6px}
aside.sidebar .menu-item{display:block;padding:8px 12px;border-radius:2px;color:var(--text);text-decoration:none}
aside.sidebar .menu-item:hover{background:var(--hover)}

/* Табы (линия снизу, без заливки фона) */
.tabbar{display:flex;gap:24px;border-bottom:1px solid var(--line);margin:12px 0}
.tabbar .tab{padding:10px 4px 12px;margin-bottom:-1px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent}
.tabbar .tab:hover{color:var(--text)}
.tabbar .tab.active{color:var(--accent);border-color:var(--accent)}

/* Таблицы — единое выравнивание по левому краю и границы между строками */
table, .datagrid{width:100%;border-collapse:collapse}
table th, table td, .datagrid th, .datagrid td{
  border-bottom:1px solid var(--line);
  text-align:left;
  padding:10px 12px;
  vertical-align:middle;
  height:44px;
}
tr:hover td{background:var(--hover)}

/* Кнопки — единая высота, без переносов текста */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:32px;padding:0 12px;border:1px solid var(--input-border);
  background:var(--card);color:var(--text);border-radius:2px;cursor:pointer;white-space:nowrap
}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.ghost{background:transparent;border-color:transparent;color:var(--accent)}
.btn.danger{background:transparent;border-color:var(--danger);color:var(--danger)}
.btn:disabled{opacity:.55;cursor:not-allowed}

/* Поля ввода — одинаковые во всех разделах */
.input, select, textarea{
  background:var(--input-bg);border:1px solid var(--input-border);
  border-radius:2px;height:32px;padding:0 10px;color:var(--text)
}
.input:focus, select:focus, textarea:focus{
  outline:0;border-color:var(--input-focus);
  box-shadow:0 0 0 2px rgba(99,102,241,.15)
}

/* Небольшой тост под уведомления */
.toast{position:fixed;right:16px;bottom:16px;background:var(--card);border:1px solid var(--line);padding:10px 12px;border-radius:6px;box-shadow:0 6px 24px rgba(0,0,0,.25);z-index:9999}

/* === patch 2025-10-31 (sidebar buttons align-left) === */
aside.sidebar .btn,
aside.sidebar .menu-item {
  display: flex !important;
  justify-content: flex-start !important;
  text-align: left !important;
  padding-left: 12px !important;
}

/* === patch 2025-10-31 (sidebar buttons align-left) === */
aside .btn,
aside .nav .btn {
  display: flex !important;
  justify-content: flex-start !important;
  text-align: left !important;
  width: 100% !important;
  padding-left: 12px !important;
}
/* === patch 2025-10-31 (hide duplicate unified menu) === */
aside .menu-group { display: none !important; }
/* === patch 2025-10-31 (hide password UI) === */
.pass-cell,.pw-cell,.pw-eye,.pass-toggle,.pass-mask{display:none!important}
/* на всякий случай — любые «показать пароль» рядом с input[type=password] */
input[type="password"] + .pw-eye,
input[type="password"] + .pass-toggle{display:none!important}
/* запрет подбора ширины под скрытые колонки (если пароль был отдельной ячейкой) */
td[data-col="password"], th[data-col="password"]{display:none!important}
/* === patch 2025-10-31 (roles page: always editable) === */
#roles-page input,#roles-page select,#roles-page textarea { pointer-events:auto !important; opacity:1 !important; }
#roles-page .v,#roles-page .e { display: initial !important; } /* если где-то остались классы v/e */
/* === patch 2025-10-31 (users: inline edit + small action) === */
#users-page input, #users-page select, #users-page textarea { pointer-events:auto !important; opacity:1 !important; }
#users-page #editBtn, #users-page #cancelBtn { display:none !important; }
td[data-col="track_ip"], th[data-col="track_ip"]{ display:none !important; } /* если у колонки есть data-col */
.btn.small{ height:28px; padding:0 10px; font-size:12px; line-height:26px }
/* === patch 2025-10-31 (users page tidy) === */
#users-page .table input, #users-page .table select { height:32px; padding:0 10px; }
#users-page .pwcol .btn.small { margin-left:8px }
#users-page .actions .btn { min-width:96px }
.btn.small{ height:28px; padding:0 10px; font-size:12px; line-height:26px }
/* users table tidy */
#users-page .table input, #users-page .table select { height:32px; padding:0 10px; }
#users-page .pwcol .btn.small { margin-left:8px }
#users-page .actions .btn { min-width:96px }
/* users page tidy (2025-10-31) */
#users-page .table input, #users-page .table select { height:32px; padding:0 10px; }
#users-page .pwcol .btn.small { margin-left:8px }
#users-page .actions .btn { min-width:96px }
.btn.small{ height:28px; padding:0 10px; font-size:12px; line-height:26px }
/* === users page — чистый вид === */
#users-page .mask{display:inline-block;font-family:ui-monospace,Menlo,Consolas,monospace;letter-spacing:.08em;opacity:.6;margin-right:8px}
#users-page .btn.link{background:transparent;border:none;color:var(--accent);padding:0;height:auto;line-height:1.3;font-size:12px}
#users-page .btn.primary.sm{height:28px;padding:0 10px;font-size:12px}
#users-page .actions .pw-change, #users-page .actions [data-action="pw"]{display:none!important} /* на случай старого JS-добавления */
#users-page .table input, #users-page .table select{height:32px;padding:0 10px}
/* users — аккуратный вид */
#users-page .table { width:100%; border-collapse:collapse; }
#users-page .table th, #users-page .table td { padding:10px 12px; border-bottom:1px solid var(--line); vertical-align:middle; }
#users-page .table th.td-actions, #users-page .table td.td-actions { width:120px; text-align:right; }

#users-page .table input, #users-page .table select { height:32px; padding:0 10px; }
#users-page .btn.primary.sm { height:28px; padding:0 10px; font-size:12px; }

#users-page .pw-tap {
  background:transparent; border:0; color:inherit; font:inherit;
  cursor:pointer; letter-spacing:.08em; opacity:.75; padding:4px 6px; border-radius:2px;
}
#users-page .pw-tap:hover { background:var(--hover-bg); opacity:1; }

/* убрать старые «Изменить пароль» где-то в шаблонах/JS */
#users-page .pwcol .btn, #users-page .pwcol .pw-link { display:none !important; }

/* на всякий случай — переименованный класс, чтобы не ловить глобальный .actions */
#users-page td.td-actions { display:table-cell !important; }
