/* RG COMPANY cabinet visual system v2 — neutral dashboard, theme-safe controls */
:root {
  --cab-bg:#f2f3f5;
  --cab-panel:#ffffff;
  --cab-panel-2:#f7f8fa;
  --cab-panel-3:#eef0f3;
  --cab-text:#171a20;
  --cab-muted:#68717e;
  --cab-line:rgba(17,24,39,.12);
  --cab-line-strong:rgba(17,24,39,.22);
  --cab-hover:rgba(17,24,39,.055);
  --cab-active:rgba(17,24,39,.09);
  --cab-shadow:0 18px 48px rgba(23,27,35,.08);
  --cab-shadow-soft:0 10px 28px rgba(23,27,35,.055);
  --cab-primary:#242932;
  --cab-primary-hover:#11151b;
  --cab-danger:#e5484d;
  --cab-danger-hover:#d63d42;
  --cab-success:#1f9d65;
  --cab-warning:#bb7610;
  --cab-radius:18px;
  --bg:var(--cab-bg);
  --surface:var(--cab-panel);
  --surface-2:var(--cab-panel-2);
  --panel:var(--cab-panel);
  --text:var(--cab-text);
  --muted:var(--cab-muted);
  --line:var(--cab-line);
  --accent:var(--cab-primary);
  --accent-2:var(--cab-primary-hover);
  color-scheme:light;
}
html[data-theme="dark"] {
  --cab-bg:#101114;
  --cab-panel:#17191e;
  --cab-panel-2:#1d2026;
  --cab-panel-3:#22262d;
  --cab-text:#f3f5f7;
  --cab-muted:#9ba4b1;
  --cab-line:rgba(255,255,255,.105);
  --cab-line-strong:rgba(255,255,255,.19);
  --cab-hover:rgba(255,255,255,.055);
  --cab-active:rgba(255,255,255,.095);
  --cab-shadow:0 22px 64px rgba(0,0,0,.28);
  --cab-shadow-soft:0 12px 34px rgba(0,0,0,.2);
  --cab-primary:#f1f3f5;
  --cab-primary-hover:#ffffff;
  --cab-danger:#ef555a;
  --cab-danger-hover:#fa686d;
  --bg:var(--cab-bg);
  --surface:var(--cab-panel);
  --surface-2:var(--cab-panel-2);
  --panel:var(--cab-panel);
  --text:var(--cab-text);
  --muted:var(--cab-muted);
  --line:var(--cab-line);
  --accent:var(--cab-primary);
  --accent-2:var(--cab-primary-hover);
  color-scheme:dark;
}

html, body, .cabinet-body, .admin-layout, .main-shell, .content { background:var(--cab-bg)!important; color:var(--cab-text)!important; }
.cabinet-body { min-height:100vh; }
.admin-layout { --sidebar:var(--cabinet-sidebar,276px); }
.sidebar, .topbar, .panel, .stat-card, .modal, .admin-user, .table-wrap, .log-item, .info-item, .service-row, .session-row {
  background:var(--cab-panel)!important;
  border-color:var(--cab-line)!important;
  color:var(--cab-text)!important;
}
.sidebar { box-shadow:8px 0 30px rgba(23,27,35,.025); }
html[data-theme="dark"] .sidebar { box-shadow:8px 0 34px rgba(0,0,0,.12); }
.topbar { background:color-mix(in srgb,var(--cab-bg) 89%,transparent)!important; border-color:var(--cab-line)!important; }
.page-subtitle, .muted, .section-head p, .info-item span, .admin-user span, .service-row span, .session-row span, .panel p, .pagination, .field label { color:var(--cab-muted)!important; }
.panel, .stat-card { box-shadow:var(--cab-shadow-soft); }
.panel { border-radius:20px!important; }
.stat-card { border-radius:20px!important; }
.info-item { background:var(--cab-panel-2)!important; border-radius:14px!important; }

/* Correct monochrome logo in both themes. */
.theme-brand-logo .theme-brand-logo-image, .brand > img, .sidebar .brand img { transition:filter .25s ease,opacity .25s ease; }
html[data-theme="light"] .theme-brand-logo .theme-brand-logo-image,
html[data-theme="light"] .sidebar .brand > img { filter:invert(1) brightness(.08)!important; opacity:.96!important; }
html[data-theme="dark"] .theme-brand-logo .theme-brand-logo-image,
html[data-theme="dark"] .sidebar .brand > img { filter:none!important; opacity:.96!important; }

/* Neutral cabinet actions: no blue selection/focus residue. */
.admin-layout .btn, .admin-layout .icon-btn, .modal .btn {
  background:var(--cab-panel)!important;
  color:var(--cab-text)!important;
  border:1px solid var(--cab-line-strong)!important;
  box-shadow:none!important;
}
.admin-layout .btn:hover:not(:disabled), .admin-layout .icon-btn:hover:not(:disabled), .modal .btn:hover:not(:disabled) {
  background:var(--cab-hover)!important;
  border-color:var(--cab-line-strong)!important;
  transform:translateY(-1px);
}
.admin-layout .btn.primary, .modal .btn.primary {
  background:var(--cab-primary)!important;
  color:var(--cab-bg)!important;
  border-color:var(--cab-primary)!important;
}
html[data-theme="light"] .admin-layout .btn.primary, html[data-theme="light"] .modal .btn.primary { color:#fff!important; }
html[data-theme="dark"] .admin-layout .btn.primary, html[data-theme="dark"] .modal .btn.primary { color:#11151b!important; }
.admin-layout .btn.primary:hover:not(:disabled), .modal .btn.primary:hover:not(:disabled) { background:var(--cab-primary-hover)!important; }
.admin-layout .logout-button {
  width:100%; justify-content:center; gap:9px;
  background:var(--cab-danger)!important; color:#fff!important;
  border-color:var(--cab-danger)!important; box-shadow:0 10px 24px rgba(229,72,77,.18)!important;
}
.admin-layout .logout-button:hover { background:var(--cab-danger-hover)!important; border-color:var(--cab-danger-hover)!important; }
.admin-layout .logout-button svg { transform:rotate(180deg); }
.modal .btn.danger { background:var(--cab-danger)!important; color:#fff!important; border-color:var(--cab-danger)!important; }

/* Sidebar buttons borrow the neutral interface-tab language from the main site. */
.side-nav { gap:8px!important; }
.side-link {
  position:relative; isolation:isolate; overflow:hidden;
  min-height:46px; padding:0 13px!important;
  border:1px solid transparent!important; border-radius:14px!important;
  color:var(--cab-muted)!important; background:transparent!important;
  transition:color .22s ease,background-color .22s ease,border-color .22s ease,transform .22s cubic-bezier(.22,1,.36,1)!important;
}
.side-link::before {
  content:""; position:absolute; inset:0; z-index:-2; border-radius:inherit;
  background:var(--cab-hover); opacity:0; transition:opacity .22s ease;
}
.side-link::after {
  content:""; position:absolute; width:10px; height:10px; left:var(--ripple-x,50%); top:var(--ripple-y,50%);
  z-index:-1; border-radius:999px; background:currentColor; opacity:0; transform:translate(-50%,-50%) scale(0);
}
.side-link:hover { color:var(--cab-text)!important; border-color:var(--cab-line)!important; transform:translateX(2px); }
.side-link:hover::before { opacity:1; }
.side-link.active {
  color:var(--cab-text)!important; background:var(--cab-active)!important;
  border-color:var(--cab-line-strong)!important; box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--cab-line) 50%,transparent);
}
.side-link.is-rippling::after { animation:cabinetRipple .5s cubic-bezier(.2,.8,.2,1); }
.side-link .side-icon { color:inherit!important; }
@keyframes cabinetRipple { 0%{opacity:.14;transform:translate(-50%,-50%) scale(0)} 100%{opacity:0;transform:translate(-50%,-50%) scale(22)} }

/* Theme-safe form controls, with neutral focus. */
.field input, .field textarea, .search-input, input[type="text"], input[type="password"], input[type="search"] {
  background:var(--cab-panel)!important; color:var(--cab-text)!important;
  border:1px solid var(--cab-line-strong)!important; caret-color:var(--cab-text);
  box-shadow:none!important; outline:none!important;
}
.field input:focus, .field textarea:focus, .search-input:focus, input:focus-visible, textarea:focus-visible {
  border-color:color-mix(in srgb,var(--cab-text) 40%,var(--cab-line))!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--cab-text) 8%,transparent)!important;
}
input::placeholder, textarea::placeholder { color:color-mix(in srgb,var(--cab-muted) 78%,transparent)!important; }
input::selection, textarea::selection { background:color-mix(in srgb,var(--cab-text) 20%,transparent); color:var(--cab-text); }

/* Neutral selection color everywhere in the cabinet. */
.admin-layout ::selection, .modal-root ::selection { background:color-mix(in srgb,var(--cab-text) 18%,transparent); color:var(--cab-text); }
.admin-layout :focus-visible { outline-color:color-mix(in srgb,var(--cab-text) 28%,transparent)!important; }

/* Custom select replaces OS-native blue menu. */
.custom-select { position:relative; min-width:0; width:100%; }
.custom-select-native { position:absolute!important; width:1px!important; height:1px!important; opacity:0!important; pointer-events:none!important; overflow:hidden!important; }
.custom-select-button {
  width:100%; min-height:44px; display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:0 13px; border:1px solid var(--cab-line-strong); border-radius:13px;
  background:var(--cab-panel); color:var(--cab-text); font:inherit; text-align:left; cursor:pointer;
  transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease;
}
.custom-select-button:hover { background:var(--cab-hover); }
.custom-select-button b { font-size:16px; color:var(--cab-muted); transition:transform .2s ease; }
.custom-select.is-open .custom-select-button { border-color:color-mix(in srgb,var(--cab-text) 38%,var(--cab-line)); box-shadow:0 0 0 3px color-mix(in srgb,var(--cab-text) 7%,transparent); }
.custom-select.is-open .custom-select-button b { transform:rotate(180deg); }
.custom-select-list {
  position:absolute; z-index:130; left:0; right:0; top:calc(100% + 7px); display:grid; gap:3px;
  max-height:280px; overflow:auto; padding:7px; border:1px solid var(--cab-line-strong); border-radius:14px;
  background:color-mix(in srgb,var(--cab-panel) 96%,transparent); backdrop-filter:blur(18px); box-shadow:var(--cab-shadow);
  opacity:0; visibility:hidden; transform:translateY(-6px) scale(.985); transform-origin:top;
  transition:opacity .16s ease,transform .16s ease,visibility .16s;
}
.custom-select.is-open .custom-select-list { opacity:1; visibility:visible; transform:none; }
.custom-select-list button {
  border:0; border-radius:10px; min-height:38px; padding:0 11px; text-align:left;
  background:transparent; color:var(--cab-muted); font:inherit; cursor:pointer;
}
.custom-select-list button:hover { background:var(--cab-hover); color:var(--cab-text); }
.custom-select-list button[aria-selected="true"] { background:var(--cab-active); color:var(--cab-text); font-weight:750; }
.toolbar .custom-select { flex:0 1 260px; min-width:190px; }

/* Neutral tables and status surfaces. */
table, th, td { color:var(--cab-text)!important; border-color:var(--cab-line)!important; }
thead { background:var(--cab-panel-2)!important; }
tbody tr:hover { background:var(--cab-hover)!important; }
.chip { background:var(--cab-panel-2)!important; color:var(--cab-text)!important; border-color:var(--cab-line)!important; }
.chip.success { color:var(--cab-success)!important; background:color-mix(in srgb,var(--cab-success) 9%,var(--cab-panel))!important; border-color:color-mix(in srgb,var(--cab-success) 26%,var(--cab-line))!important; }
.chip.warning { color:var(--cab-warning)!important; background:color-mix(in srgb,var(--cab-warning) 9%,var(--cab-panel))!important; border-color:color-mix(in srgb,var(--cab-warning) 25%,var(--cab-line))!important; }
.chip.danger { color:var(--cab-danger)!important; background:color-mix(in srgb,var(--cab-danger) 8%,var(--cab-panel))!important; border-color:color-mix(in srgb,var(--cab-danger) 24%,var(--cab-line))!important; }
/* Telegram Desktop cache-safe empty-userpic fallback.
   The numeric Telegram user ID chooses the official seven-color slot.
   This file has a new immutable name so an older dark avatar rule cannot remain in browser cache. */
.avatar.telegram-avatar {
  position:relative!important;
  width:44px!important;
  height:44px!important;
  min-width:44px!important;
  flex:0 0 44px!important;
  display:grid!important;
  place-items:center!important;
  overflow:hidden!important;
  isolation:isolate!important;
  background:linear-gradient(180deg,var(--avatar-top,#5caffa) 0%,var(--avatar-bottom,#2f83d8) 100%)!important;
  color:#fff!important;
  border:0!important;
  box-shadow:none!important;
}
.avatar.telegram-avatar .avatar-initials {
  position:absolute;
  inset:0;
  z-index:1;
  display:grid;
  place-items:center;
  color:#fff;
  font-size:18px;
  line-height:1;
  font-weight:500;
  letter-spacing:.01em;
  text-transform:uppercase;
  user-select:none;
}
.avatar.telegram-avatar .avatar-photo {
  position:absolute!important;
  inset:0!important;
  z-index:2!important;
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  opacity:0;
  transition:opacity .16s ease;
}
.avatar.telegram-avatar.has-photo .avatar-photo { opacity:1; }

/* The same full-screen loader as main site, with 0.7/1.4 second timing controlled in JS. */
.cabinet-action-loader {
  position:fixed; inset:0; z-index:10000; display:grid; place-items:center;
  background:var(--cab-bg); opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .16s ease,visibility .16s;
}
.cabinet-action-loader.is-visible { opacity:1; visibility:visible; pointer-events:auto; }
.cabinet-action-loader-inner { display:grid; place-items:center; gap:9px; color:var(--cab-muted); font-size:12px; font-weight:700; letter-spacing:.02em; }
.cabinet-action-loader .page-loader-spinner { width:48px!important; height:48px!important; }
.cabinet-action-loader .page-loader-track { stroke:var(--cab-line-strong)!important; }
.cabinet-action-loader .page-loader-arc { stroke:var(--cab-text)!important; }

/* Custom context menu; native menu remains available inside editable fields. */
.rg-context-menu {
  position:fixed; z-index:12000; width:220px; padding:7px; display:grid; gap:2px;
  border:1px solid var(--cab-line-strong); border-radius:15px; background:color-mix(in srgb,var(--cab-panel) 96%,transparent);
  backdrop-filter:blur(20px) saturate(1.15); box-shadow:var(--cab-shadow); animation:contextIn .14s ease both;
}
.rg-context-menu button { min-height:37px; padding:0 11px; border:0; border-radius:10px; background:transparent; color:var(--cab-text); font:inherit; text-align:left; cursor:pointer; }
.rg-context-menu button:hover { background:var(--cab-hover); }
.rg-context-menu button.is-danger { color:var(--cab-danger); }
.rg-context-menu i { display:block; height:1px; background:var(--cab-line); margin:4px 5px; }
@keyframes contextIn { from{opacity:0;transform:translateY(-5px) scale(.975)} to{opacity:1;transform:none} }

/* QR generation stays in a compact result dialog. */
.generator-actions { margin-top:14px; }
.code-result-modal { width:min(760px,100%)!important; }
.code-result-dialog { display:grid; grid-template-columns:minmax(220px,320px) minmax(0,1fr); gap:22px; align-items:center; }
.code-preview { min-height:250px; display:grid; place-items:center; border:1px solid var(--cab-line); border-radius:18px; background:#fff; padding:16px; }
.code-preview img { display:block; max-width:100%; max-height:310px; object-fit:contain; }
.code-result-info > span { color:var(--cab-muted); font-size:12px; }
.code-result-info p { color:var(--cab-muted); line-height:1.6; }
.dialog-actions { display:flex; flex-wrap:wrap; gap:9px; margin-top:16px; }

/* Integrated EXE upload dialog. */
.upload-modal { width:min(720px,100%)!important; }
.upload-grid { display:grid; gap:16px; }
.upload-dropzone {
  min-height:190px; padding:24px; display:grid; place-items:center; align-content:center; gap:8px;
  border:1px dashed var(--cab-line-strong); border-radius:18px; background:var(--cab-panel-2); text-align:center; cursor:pointer;
  transition:background-color .2s ease,border-color .2s ease,transform .2s ease;
}
.upload-dropzone:hover, .upload-dropzone.is-dragging { background:var(--cab-active); border-color:color-mix(in srgb,var(--cab-text) 38%,var(--cab-line)); transform:translateY(-1px); }
.upload-dropzone.has-file { border-style:solid; }
.upload-dropzone input { position:absolute; opacity:0; pointer-events:none; width:1px; height:1px; }
.upload-drop-icon { width:46px; height:46px; display:grid; place-items:center; border:1px solid var(--cab-line); border-radius:14px; background:var(--cab-panel); }
.upload-drop-icon svg { width:22px; }
.upload-dropzone small { color:var(--cab-muted); }
.upload-progress { padding:16px; border:1px solid var(--cab-line); border-radius:16px; background:var(--cab-panel-2); }
.upload-progress-top, .upload-progress-meta { display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.upload-progress-top { margin-bottom:11px; }
.upload-progress-meta { margin-top:10px; color:var(--cab-muted); font-size:11px; }
.upload-progress-track { height:9px; overflow:hidden; border-radius:999px; background:var(--cab-line); }
.upload-progress-track i { display:block; width:0; height:100%; border-radius:inherit; background:var(--cab-primary); transition:width .2s ease; }
html[data-theme="light"] .upload-progress-track i { background:#242932; }
html[data-theme="dark"] .upload-progress-track i { background:#f1f3f5; }
.upload-progress p { margin:12px 0 0; color:var(--cab-muted); line-height:1.55; }
.update-steps { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.update-steps span { display:flex; align-items:center; gap:9px; min-height:58px; padding:12px; border:1px solid var(--cab-line); border-radius:14px; color:var(--cab-muted); }
.update-steps b { width:25px; height:25px; display:grid; place-items:center; border-radius:50%; background:var(--cab-active); color:var(--cab-text); }

/* Server operations added to avoid routine VDS access. */
.service-list, .session-list { display:grid; gap:8px; }
.service-row { display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:12px; padding:12px; border:1px solid var(--cab-line); border-radius:14px; }
.service-row strong, .service-row span { display:block; }
.service-row > div:first-child span { margin-top:3px; font-size:11px; color:var(--cab-muted); }
.service-actions { display:flex; gap:7px; }
.session-row { display:grid; grid-template-columns:minmax(180px,.65fr) minmax(0,1.35fr); gap:14px; padding:13px; border:1px solid var(--cab-line); border-radius:14px; }
.session-row.is-current { background:var(--cab-active)!important; }
.session-row strong, .session-row span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.session-row span { margin-top:4px; font-size:11px; }
.maintenance-panel { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.maintenance-panel h2 { margin:0 0 5px; }
.server-logs { margin:0; max-height:62vh; overflow:auto; padding:14px; border-radius:14px; background:#0d0f12; color:#d8dde5; font:12px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace; white-space:pre-wrap; word-break:break-word; user-select:text!important; }
.logs-modal { width:min(920px,100%)!important; }

/* Modal and toast theme hardening. */
.modal-backdrop { background:rgba(6,8,12,.58)!important; }
.modal { box-shadow:var(--cab-shadow)!important; }
.modal-head, .modal-foot { border-color:var(--cab-line)!important; }
.modal-close { color:var(--cab-muted)!important; }
.toast { background:var(--cab-panel)!important; color:var(--cab-text)!important; border-color:var(--cab-line-strong)!important; box-shadow:var(--cab-shadow)!important; }
.toast.error { color:var(--cab-danger)!important; }

/* Preserve native selection/context behavior only where typing is possible. */
input, textarea, [contenteditable="true"], [contenteditable="plaintext-only"], .server-logs { -webkit-user-select:text!important; user-select:text!important; }

@media (max-width:980px) {
  .update-steps { grid-template-columns:1fr; }
  .service-row { grid-template-columns:minmax(0,1fr) auto; }
  .service-actions { grid-column:1/-1; }
}
@media (max-width:720px) {
  .code-result-dialog { grid-template-columns:1fr; }
  .code-preview { min-height:200px; }
  .service-row, .session-row { grid-template-columns:1fr; }
  .maintenance-panel { align-items:stretch; flex-direction:column; }
  .toolbar .custom-select { flex:1 1 100%; }
  .upload-modal, .code-result-modal { max-height:94vh!important; }
}
@media (prefers-reduced-motion:reduce) {
  .side-link, .custom-select-list, .rg-context-menu, .cabinet-action-loader { transition:none!important; animation:none!important; }
}

/* RG COMPANY cabinet polish patch: scoped loaders, unclipped selects, soft dialogs. */
.main-shell { position:relative; isolation:isolate; }
.cabinet-action-loader {
  position:fixed!important;
  left:var(--sidebar,var(--cabinet-sidebar,276px))!important;
  top:var(--cabinet-header,76px)!important;
  right:0!important;
  bottom:0!important;
  width:auto!important;
  height:auto!important;
  z-index:14!important;
  background:color-mix(in srgb,var(--cab-bg) 97%,transparent)!important;
  backdrop-filter:blur(4px)!important;
}
.cabinet-action-loader.is-visible { pointer-events:auto!important; }
.sidebar { z-index:20!important; }
.topbar { z-index:15!important; }

/* Dropdowns render in a fixed body portal, so cards and dialogs cannot crop them. */
.custom-select { position:relative!important; overflow:visible!important; }
.custom-select-list {
  position:fixed!important;
  z-index:20050!important;
  left:auto;
  right:auto!important;
  top:auto;
  bottom:auto;
  display:grid;
  overflow:auto!important;
  overscroll-behavior:contain;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(-7px) scale(.985);
  transform-origin:top center;
  transition:opacity .18s ease,transform .22s cubic-bezier(.22,1,.36,1),visibility .18s;
}
.custom-select-list.is-open {
  opacity:1!important;
  visibility:visible!important;
  pointer-events:auto!important;
  transform:translateY(0) scale(1)!important;
}
.custom-select-list.opens-up { transform-origin:bottom center; }
.custom-select-list.opens-up:not(.is-open) { transform:translateY(7px) scale(.985); }
.custom-select.is-open .custom-select-button { position:relative; z-index:2; }
.panel, .toolbar, .form-grid, .field, .modal-body, .modal-foot { overflow:visible; }

/* Soft open and close motion for every cabinet dialog. */
.modal-backdrop {
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .22s ease,visibility .22s ease,backdrop-filter .24s ease;
}
.modal-backdrop .modal {
  opacity:0;
  transform:translateY(18px) scale(.972);
  filter:blur(2px);
  transform-origin:center center;
  transition:opacity .2s ease,transform .28s cubic-bezier(.22,1,.36,1),filter .22s ease;
}
.modal-backdrop.is-open {
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}
.modal-backdrop.is-open .modal {
  opacity:1;
  transform:translateY(0) scale(1);
  filter:none;
}
.modal-backdrop.is-closing { opacity:0; visibility:visible; pointer-events:none; }
.modal-backdrop.is-closing .modal { opacity:0; transform:translateY(10px) scale(.982); filter:blur(1px); }

/* Logout remains a solid red action in both themes, including hover/focus. */
html[data-theme="light"] .admin-layout .btn.logout-button,
html[data-theme="dark"] .admin-layout .btn.logout-button {
  background:var(--cab-danger)!important;
  border-color:var(--cab-danger)!important;
  color:#fff!important;
  box-shadow:0 10px 24px rgba(229,72,77,.2)!important;
}
html[data-theme="light"] .admin-layout .btn.logout-button:hover:not(:disabled),
html[data-theme="dark"] .admin-layout .btn.logout-button:hover:not(:disabled),
html[data-theme="light"] .admin-layout .btn.logout-button:focus-visible,
html[data-theme="dark"] .admin-layout .btn.logout-button:focus-visible {
  background:var(--cab-danger-hover)!important;
  border-color:var(--cab-danger-hover)!important;
  color:#fff!important;
  box-shadow:0 13px 30px rgba(229,72,77,.26)!important;
}
.admin-layout .logout-button *, .admin-layout .logout-button svg { color:#fff!important; stroke:currentColor!important; }

@media (max-width:980px) {
  .cabinet-action-loader { left:0!important; top:var(--cabinet-header,76px)!important; }
}
@media (max-width:720px) {
  .custom-select-list { max-width:calc(100vw - 20px)!important; }
}
@media (prefers-reduced-motion:reduce) {
  .modal-backdrop, .modal-backdrop .modal, .custom-select-list { transition:none!important; }
}

/* Live Telegram profile avatar.
   The server returns the account's current getChat().accent_color_id and photo.
   Without a photo, the avatar uses Telegram's current account color and one letter. */
.admin-user .avatar.telegram-avatar {
  position:relative!important;
  width:44px!important;
  height:44px!important;
  min-width:44px!important;
  flex:0 0 44px!important;
  display:grid!important;
  place-items:center!important;
  overflow:hidden!important;
  isolation:isolate!important;
  border-radius:50%!important;
  border:0!important;
  padding:0!important;
  background:linear-gradient(180deg,var(--avatar-top,#5caffa) 0%,var(--avatar-bottom,#2f83d8) 100%)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  box-shadow:none!important;
}
.admin-user .avatar.telegram-avatar .avatar-initials {
  position:absolute!important;
  inset:0!important;
  z-index:1!important;
  display:grid!important;
  place-items:center!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  font-family:"Segoe UI",Arial,sans-serif!important;
  font-size:18px!important;
  font-weight:400!important;
  line-height:1!important;
  letter-spacing:0!important;
  text-transform:uppercase!important;
  text-shadow:none!important;
  pointer-events:none!important;
  user-select:none!important;
}
.admin-user .avatar.telegram-avatar .avatar-photo {
  position:absolute!important;
  inset:0!important;
  z-index:2!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:cover!important;
  border-radius:50%!important;
  opacity:0;
  filter:none!important;
  transition:opacity .16s ease;
}
.admin-user .avatar.telegram-avatar.has-photo .avatar-photo { opacity:1!important; }

/* The elastic cursor must stay above every dashboard surface, dropdown,
   modal, progress overlay and chart. */
body > .cursor-blob {
  position:fixed!important;
  z-index:2147483647!important;
  pointer-events:none!important;
  isolation:isolate!important;
  will-change:transform,width,height,opacity!important;
}


/* Explicit user management controls. Every account can be opened from the row
   or from the visible Management button; blocking is also available directly. */
.accounts-table .account-row,
.account-row {
  cursor:pointer;
  transition:background-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.accounts-table .account-row:hover,
.accounts-table .account-row:focus-visible,
.account-row:hover,
.account-row:focus-visible {
  background:color-mix(in srgb,var(--cab-surface-2) 72%,var(--cab-text) 3%)!important;
  outline:none!important;
}
.accounts-table .account-row:focus-visible,
.account-row:focus-visible {
  box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--cab-text) 22%,transparent)!important;
}
.account-actions-heading { text-align:right!important; }
.account-actions-cell { min-width:244px; }
.account-row-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  white-space:nowrap;
}
.account-manage-button {
  background:var(--cab-text)!important;
  border-color:var(--cab-text)!important;
  color:var(--cab-bg)!important;
}
.account-manage-button:hover:not(:disabled),
.account-manage-button:focus-visible {
  background:color-mix(in srgb,var(--cab-text) 86%,var(--cab-bg))!important;
  border-color:color-mix(in srgb,var(--cab-text) 86%,var(--cab-bg))!important;
  color:var(--cab-bg)!important;
}
.account-toggle-button { min-width:118px; }
.account-management-panel .panel-title > div { display:grid; gap:4px; }
.account-management-panel .panel-title p { margin:0; color:var(--cab-muted); font-size:13px; }
.account-management-grid .btn { min-height:44px; justify-content:center; }
.account-management-grid .btn.danger { color:#fff!important; }

@media (max-width:1180px) {
  .account-actions-cell { min-width:150px; }
  .account-row-actions { flex-direction:column; align-items:stretch; }
  .account-row-actions .btn { width:100%; }
}
@media (max-width:760px) {
  .accounts-table-wrap { overflow:visible!important; }
  .accounts-table,
  .accounts-table thead,
  .accounts-table tbody,
  .accounts-table tr,
  .accounts-table th,
  .accounts-table td { display:block; width:100%; }
  .accounts-table thead { display:none; }
  .accounts-table tbody { display:grid; gap:12px; }
  .accounts-table tr.account-row {
    padding:14px;
    border:1px solid var(--cab-border);
    border-radius:18px;
    background:var(--cab-surface);
    box-shadow:var(--cab-shadow-soft);
  }
  .accounts-table td {
    padding:6px 0!important;
    border:0!important;
  }
  .accounts-table td::before {
    display:block;
    margin-bottom:3px;
    color:var(--cab-muted);
    font-size:10px;
    font-weight:800;
    letter-spacing:.06em;
    text-transform:uppercase;
  }
  .accounts-table td:nth-child(1)::before { content:'Пользователь'; }
  .accounts-table td:nth-child(2)::before { content:'ПВЗ / логин'; }
  .accounts-table td:nth-child(3)::before { content:'Статус'; }
  .accounts-table td:nth-child(4)::before { content:'Действует до'; }
  .accounts-table td:nth-child(5)::before { content:'Последняя активность'; }
  .accounts-table .account-actions-cell { min-width:0; padding-top:12px!important; }
  .accounts-table .account-actions-cell::before { content:none; }
  .account-row-actions { flex-direction:row; align-items:center; }
  .account-row-actions .btn { flex:1 1 0; width:auto; min-width:0; }
}


/* User management click + contrast fix. Loaded last with a fresh immutable name. */
html[data-theme="light"] .admin-layout .account-manage-button,
html[data-theme="light"] .admin-layout .account-manage-button:visited {
  background:#20242c!important;
  border-color:#20242c!important;
  color:#ffffff!important;
  box-shadow:0 7px 18px rgba(24,28,35,.12)!important;
}
html[data-theme="light"] .admin-layout .account-manage-button:hover:not(:disabled),
html[data-theme="light"] .admin-layout .account-manage-button:focus-visible {
  background:#11151b!important;
  border-color:#11151b!important;
  color:#ffffff!important;
  box-shadow:0 9px 22px rgba(17,21,27,.18)!important;
  transform:translateY(-1px)!important;
}
html[data-theme="dark"] .admin-layout .account-manage-button,
html[data-theme="dark"] .admin-layout .account-manage-button:visited {
  background:#f3f5f8!important;
  border-color:#f3f5f8!important;
  color:#15191f!important;
  box-shadow:0 8px 20px rgba(0,0,0,.18)!important;
}
html[data-theme="dark"] .admin-layout .account-manage-button:hover:not(:disabled),
html[data-theme="dark"] .admin-layout .account-manage-button:focus-visible {
  background:#ffffff!important;
  border-color:#ffffff!important;
  color:#0f1318!important;
  box-shadow:0 10px 24px rgba(0,0,0,.26)!important;
  transform:translateY(-1px)!important;
}
.admin-layout .account-manage-button {
  min-width:112px!important;
  justify-content:center!important;
  font-weight:800!important;
  opacity:1!important;
  visibility:visible!important;
  cursor:pointer!important;
}
.account-open-error { max-width:760px; margin:30px auto; }
.account-open-error-actions { display:flex; justify-content:center; gap:10px; margin-top:18px; flex-wrap:wrap; }
