/* =====================================================================
   BW Admin — "Command Console" theme
   Sci-fi RTS menu look (dark steel, glowing blue frames, bevelled corners).
   Sits on top of Bootstrap 3.3 + jQuery UI + tablesorter and re-skins
   every legacy page without touching its markup.
   ===================================================================== */

:root {
  --bg-0: #03060c;
  --bg-1: #070d18;
  --bg-2: #0b1526;
  --panel: rgba(9,20,38,.86);
  --panel-solid: #0a1628;
  --panel-hi: rgba(18, 40, 72, .9);
  --line: #173a63;
  --line-hi: #2b6cb0;
  --glow: #3ab4ff;
  --glow-rgb: 58,180,255;
  --line-rgb: 23,58,99;
  --bg-rgb: 2,6,12;
  --panel-rgb: 6,14,28;
  --panel2-rgb: 12,28,52;
  --panel3-rgb: 9,20,38;
  --panelhi-rgb: 18,40,72;
  --steel-rgb: 40,80,130;
  --card-rgb: 10,24,44;
  --card2-rgb: 4,10,20;
  --card: #0b1a30;
  --card2: #050c18;
  --aura1-rgb: 40,110,200;
  --aura2-rgb: 20,80,160;
  --btn-1: #1d6fd6;
  --btn-2: #2a86e0;
  --btn-3: #0a2f63;
  --glow-soft: rgba(58, 180, 255, .35);
  --glow-faint: rgba(58, 180, 255, .12);
  --text: #c9dcf2;
  --text-dim: #7d95b3;
  --text-mute: #4f6684;
  --head: #e9f4ff;
  --bright: #ffffff;
  --accent: #3ab4ff;
  --gold: #f2c14e;
  --success: #3fe08f;
  --warning: #f2a33a;
  --danger: #ff4b5c;
  --info: #5fd0ff;
  --env: #3ab4ff;
  --cut: 10px;
  --sidebar-w: 248px;
  --topbar-h: 56px;
  --font-ui: "Exo 2", "Segoe UI", "Roboto", system-ui, sans-serif;
  --font-body: "IBM Plex Sans", "Segoe UI", "Roboto", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, monospace;
}


html[data-env="pro"]  { --env: #ff4b5c; }
html[data-env="pre"]  { --env: #f2a33a; }
html[data-env="test"] { --env: #3fe08f; }
html[data-env="dev"]  { --env: var(--glow); }
html[data-env="unknown"] { --env: #8a9bb3; }

/* ---------- base ---------- */
html, body { min-height: 100%; }
body {
  background-color: var(--bg-0);
  background-image:
    radial-gradient(1200px 600px at 75% -10%, rgba(var(--aura1-rgb), .22), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(var(--aura2-rgb), .18), transparent 60%),
    linear-gradient(rgba(var(--glow-rgb),.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(var(--glow-rgb),.035) 1px, transparent 1px);
  background-size: auto, auto, 32px 32px, 32px 32px;
  background-attachment: fixed;
  color: var(--text);
  font-family: var(--font-body);
  font-size: 13px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
/* faint CRT scanlines */
body::after {
  content: ""; pointer-events: none; position: fixed; inset: 0; z-index: 3000;
  background: repeating-linear-gradient(0deg, rgba(255,255,255,.012) 0 1px, transparent 1px 3px);
}
::selection { background: rgba(var(--glow-rgb),.35); color: var(--bright); }

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
  font-family: var(--font-ui); color: var(--head); font-weight: 600; letter-spacing: .02em;
}
h1, .h1 { font-size: 26px; } h2, .h2 { font-size: 21px; } h3, .h3 { font-size: 17px; }
h4, .h4 { font-size: 14px; text-transform: uppercase; letter-spacing: .12em; color: var(--glow); }
h5, .h5 { font-size: 12px; text-transform: uppercase; letter-spacing: .12em; color: var(--text-dim); }
a { color: var(--glow); transition: color .15s, text-shadow .15s; }
a:hover, a:focus { color: #9fe0ff; text-decoration: none; text-shadow: 0 0 8px var(--glow-soft); }
hr { border-top-color: var(--line); }
small, .small { color: inherit; }
.text-muted { color: var(--text-dim) !important; }
.text-primary { color: var(--glow) !important; }
.text-success { color: var(--success) !important; }
.text-warning { color: var(--warning) !important; }
.text-danger  { color: var(--danger) !important; }
.text-info    { color: var(--info) !important; }
code, kbd, pre, samp { font-family: var(--font-mono); }
code { background: rgba(var(--glow-rgb),.1); color: #9fe0ff; border-radius: 2px; }
kbd { background: var(--bg-2); border: 1px solid var(--line-hi); color: var(--glow); box-shadow: none; font-size: 11px; }
pre {
  background: rgba(var(--bg-rgb), .8); color: var(--text); border: 1px solid var(--line);
  border-radius: 0; font-size: 12px;
}
.page-header { border-bottom: 1px solid var(--line); }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--bg-1); }
::-webkit-scrollbar-thumb { background: #16304f; border: 2px solid var(--bg-1); }
::-webkit-scrollbar-thumb:hover { background: var(--line-hi); }

/* ---------- reusable HUD frame ---------- */
/* bevelled corners drawn with gradients so the 1px border stays intact */
.hud,
.panel, .well, .modal-content, .list-group, .ui-dialog, .dropdown-menu, .popover {
  background-color: var(--panel);
  border: 1px solid var(--line);
  border-radius: 0;
  box-shadow: inset 0 0 0 1px rgba(var(--glow-rgb),.04), inset 0 30px 60px -40px rgba(var(--glow-rgb),.18), 0 10px 30px rgba(0,0,0,.45);
}
.hud, .panel, .well, .modal-content, .list-group { position: relative; }
.hud::before, .panel::before, .well::before, .modal-content::before {
  content: ""; position: absolute; pointer-events: none; inset: -1px;
  background:
    linear-gradient(var(--glow), var(--glow)) top left / 18px 2px no-repeat,
    linear-gradient(var(--glow), var(--glow)) top left / 2px 18px no-repeat,
    linear-gradient(var(--glow), var(--glow)) bottom right / 18px 2px no-repeat,
    linear-gradient(var(--glow), var(--glow)) bottom right / 2px 18px no-repeat;
  opacity: .85;
  filter: drop-shadow(0 0 4px var(--glow-soft));
}

/* ---------- layout shell ---------- */
.app-envbar { position: fixed; top: 0; left: 0; right: 0; height: 2px; z-index: 1100;
  background: var(--env); box-shadow: 0 0 12px var(--env); }

.app-sidebar {
  position: fixed; top: 0; bottom: 0; left: 0; width: var(--sidebar-w); z-index: 1040;
  display: flex; flex-direction: column;
  background: linear-gradient(180deg, rgba(8,18,34,.97), rgba(var(--card2-rgb),.98));
  border-right: 1px solid var(--line);
  box-shadow: 1px 0 0 rgba(var(--glow-rgb),.08), 8px 0 30px rgba(0,0,0,.5);
  transition: width .2s ease, transform .2s ease;
}
.app-brand {
  height: var(--topbar-h); flex: 0 0 auto; display: flex; align-items: center; gap: 10px;
  padding: 0 16px; border-bottom: 1px solid var(--line);
  background: linear-gradient(90deg, rgba(var(--glow-rgb),.10), transparent);
}
.app-brand:hover { text-shadow: none; }
.app-brand-mark {
  width: 32px; height: 32px; flex: 0 0 32px; display: grid; place-items: center;
  font-family: var(--font-ui); font-weight: 800; font-size: 13px; color: #fff; letter-spacing: 0;
  background: linear-gradient(135deg, var(--btn-1), var(--btn-3));
  clip-path: polygon(8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%, 0 8px);
  box-shadow: inset 0 0 12px rgba(120,200,255,.6);
}
.app-brand-text { font-family: var(--font-ui); font-weight: 700; font-size: 15px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--head); white-space: nowrap; }
.app-brand-text small { display: block; font-size: 9px; letter-spacing: .3em; color: var(--text-dim); font-weight: 500; }

.app-nav-filter { padding: 12px 12px 6px; flex: 0 0 auto; position: relative; }
.app-nav-filter input {
  width: 100%; height: 30px; padding: 0 30px 0 34px; font-size: 12px;
  background: rgba(var(--bg-rgb),.7); border: 1px solid var(--line); color: var(--text); outline: none;
  font-family: var(--font-body);
}
.app-nav-filter input:focus { border-color: var(--glow); box-shadow: 0 0 0 1px var(--glow-faint), 0 0 12px var(--glow-faint); }
.app-nav-filter .glyphicon { position: absolute; left: 22px; top: 22px; pointer-events: none; font-size: 11px; color: var(--text-mute); }
.app-nav-filter kbd { position: absolute; right: 18px; top: 18px; padding: 0 5px; font-size: 10px; line-height: 16px; }

.app-nav { flex: 1 1 auto; overflow-y: auto; overflow-x: hidden; padding: 4px 0 16px; }
.app-nav-group { margin: 2px 0; }
.app-nav-group-title {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 16px;
  background: none; border: 0; text-align: left; cursor: pointer;
  font-family: var(--font-ui); font-size: 11px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
  color: var(--text-dim);
}
.app-nav-group-title:hover { color: var(--head); }
.app-nav-group-title .glyphicon:first-child { width: 16px; font-size: 13px; color: var(--glow); opacity: .8; }
.app-nav-group-title .chev { margin-left: auto; font-size: 9px; transition: transform .15s; opacity: .6; }
.app-nav-group.collapsed .chev { transform: rotate(-90deg); }
.app-nav-group.collapsed .app-nav-items { display: none; }
.app-nav-group.has-active > .app-nav-group-title { color: var(--head); }
.app-nav-items { list-style: none; margin: 0; padding: 0 0 4px; }
.app-nav-items .sep { height: 1px; margin: 5px 16px 5px 42px; background: linear-gradient(90deg, var(--line), transparent); }
.app-nav-items .sub { padding: 6px 16px 2px 42px; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--text-mute); }
.app-nav-items a {
  position: relative; display: block; padding: 6px 16px 6px 42px; color: var(--text); font-size: 13px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 2px solid transparent;
}
.app-nav-items a:hover { background: linear-gradient(90deg, rgba(var(--glow-rgb),.12), transparent); color: var(--bright); text-shadow: none; }
.app-nav-items a.active {
  color: var(--bright); border-left-color: var(--glow);
  background: linear-gradient(90deg, rgba(var(--glow-rgb),.22), rgba(var(--glow-rgb),0) 85%);
  text-shadow: 0 0 10px var(--glow-soft);
}
.app-nav-items a.active::before { content: ""; position: absolute; left: 26px; top: 50%; width: 5px; height: 5px; margin-top: -2px;
  background: var(--glow); box-shadow: 0 0 8px var(--glow); transform: rotate(45deg); }
.app-nav-items li.filtered-out, .app-nav-group.filtered-out { display: none; }
.app-nav-empty { display: none; padding: 16px; color: var(--text-mute); font-size: 12px; text-align: center; }

.app-sidebar-foot { flex: 0 0 auto; padding: 10px 16px; border-top: 1px solid var(--line); display: flex; align-items: center;
  justify-content: space-between; font-size: 11px; color: var(--text-mute); font-family: var(--font-mono); }
.app-collapse-btn { background: none; border: 1px solid var(--line); color: var(--text-dim); width: 26px; height: 22px; padding: 0; cursor: pointer; }
.app-collapse-btn:hover { color: var(--glow); border-color: var(--glow); }

.app-main { margin-left: var(--sidebar-w); min-height: 100vh; display: flex; flex-direction: column; transition: margin-left .2s ease; }

.app-topbar {
  position: sticky; top: 0; z-index: 1030; height: var(--topbar-h); display: flex; align-items: center; gap: 16px;
  padding: 0 24px; background: rgba(var(--panel-rgb),.9); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
  box-shadow: 0 1px 0 rgba(var(--glow-rgb),.06), 0 8px 24px rgba(0,0,0,.35);
}
.app-burger { display: none; background: none; border: 1px solid var(--line); color: var(--glow); width: 34px; height: 30px; }
.app-title { margin: 0; font-family: var(--font-ui); font-size: 16px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--head);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.app-title small { color: var(--text-mute); font-size: 11px; letter-spacing: .2em; margin-right: 8px; }
.app-topbar-spacer { flex: 1 1 auto; }

.env-badge {
  display: inline-flex; align-items: center; gap: 7px; padding: 3px 10px 3px 8px;
  font-family: var(--font-ui); font-size: 11px; font-weight: 700; letter-spacing: .2em; color: var(--env);
  border: 1px solid var(--env); background: color-mix(in srgb, var(--env) 12%, transparent);
  clip-path: polygon(6px 0, 100% 0, 100% calc(100% - 6px), calc(100% - 6px) 100%, 0 100%, 0 6px);
}
.env-badge i { width: 7px; height: 7px; border-radius: 50%; background: var(--env); box-shadow: 0 0 8px var(--env); }
html[data-env="pro"] .env-badge i { animation: envpulse 1.6s infinite; }
@keyframes envpulse { 50% { opacity: .25; } }

.app-search { position: relative; width: 280px; margin: 0; }
.app-search input {
  width: 100%; height: 32px; padding: 0 34px 0 36px; background: rgba(var(--bg-rgb),.75); border: 1px solid var(--line);
  color: var(--text); font-size: 13px; outline: none;
}
.app-search input:focus { border-color: var(--glow); box-shadow: 0 0 14px var(--glow-faint); }
.app-search .glyphicon { position: absolute; left: 11px; top: 9px; color: var(--text-mute); font-size: 12px; }
.app-search kbd { position: absolute; right: 7px; top: 7px; padding: 0 5px; line-height: 16px; font-size: 10px; }

.app-clock { font-family: var(--font-mono); font-size: 12px; color: var(--text-dim); white-space: nowrap; }
.app-clock b { color: var(--glow); font-weight: 500; }

.app-user > a {
  display: flex; align-items: center; gap: 8px; color: var(--text); padding: 4px 6px; border: 1px solid transparent;
}
.app-user > a:hover { border-color: var(--line); text-shadow: none; }
.app-avatar { width: 28px; height: 28px; display: grid; place-items: center; font-family: var(--font-ui); font-weight: 700; font-size: 12px;
  color: var(--glow); border: 1px solid var(--line-hi); background: rgba(var(--glow-rgb),.08); text-transform: uppercase; }

.app-content { flex: 1 1 auto; padding: 24px; }
.app-content > .container-fluid { padding: 0; }
.app-footer { padding: 14px 24px; border-top: 1px solid var(--line); color: var(--text-mute); font-size: 11px;
  font-family: var(--font-mono); letter-spacing: .08em; display: flex; justify-content: space-between; }

/* collapsed (icon rail) */
html.sb-mini { --sidebar-w: 60px; }
html.sb-mini .app-brand-text, html.sb-mini .app-nav-filter, html.sb-mini .app-nav-items,
html.sb-mini .app-nav-group-title span, html.sb-mini .app-nav-group-title .chev,
html.sb-mini .app-sidebar-foot .ver { display: none !important; }
html.sb-mini .app-brand { padding: 0 14px; }
html.sb-mini .app-nav-group-title { justify-content: center; padding: 12px 0; }
html.sb-mini .app-nav-group-title .glyphicon:first-child { font-size: 16px; width: auto; }
html.sb-mini .app-sidebar-foot { justify-content: center; }
html.sb-mini .app-collapse-btn .glyphicon { transform: scaleX(-1); }

@media (max-width: 991px) {
  .app-sidebar { transform: translateX(-100%); width: 248px; }
  html.sb-open .app-sidebar { transform: none; }
  html.sb-open .app-backdrop { display: block; }
  .app-main { margin-left: 0 !important; }
  .app-burger { display: inline-block; }
  .app-clock, .app-user .uname { display: none; }
  .app-search { width: 200px; }
  html.sb-mini { --sidebar-w: 248px; }
}
@media (max-width: 600px) { .app-search, .env-badge span { display: none; } .app-content { padding: 14px; } }
.app-backdrop { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 1035; }

/* ---------- Bootstrap: containers / panels ---------- */
.container { width: auto; max-width: none; padding-left: 0; padding-right: 0; }
.app-content .container { padding: 0; }
.panel { margin-bottom: 20px; }
.panel-heading, .panel-default > .panel-heading, .panel-primary > .panel-heading, .panel-info > .panel-heading,
.panel-success > .panel-heading, .panel-warning > .panel-heading, .panel-danger > .panel-heading {
  background: linear-gradient(90deg, rgba(var(--glow-rgb),.14), rgba(var(--glow-rgb),.02)); color: var(--head);
  border-bottom: 1px solid var(--line); border-radius: 0; background-image: linear-gradient(90deg, rgba(var(--glow-rgb),.14), rgba(var(--glow-rgb),.02));
}
.panel-success > .panel-heading { background-image: linear-gradient(90deg, rgba(63,224,143,.16), transparent); }
.panel-warning > .panel-heading { background-image: linear-gradient(90deg, rgba(242,163,58,.16), transparent); }
.panel-danger  > .panel-heading { background-image: linear-gradient(90deg, rgba(255,75,92,.18), transparent); }
.panel-title { font-family: var(--font-ui); font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--head); }
.panel-footer { background: rgba(var(--bg-rgb),.4); border-top: 1px solid var(--line); border-radius: 0; }
.panel > .table, .panel > .table-responsive > .table { background: transparent; }
.panel-group .panel { border-radius: 0; }
.well { padding: 16px; border-radius: 0; }
.well .panel-title { margin-bottom: 10px; }
.jumbotron { background: var(--panel); border: 1px solid var(--line); color: var(--text); }

/* ---------- tables ---------- */
.table, table.tablesorter { color: var(--text); background: transparent; border-collapse: collapse; }
.table > thead > tr > th, table.tablesorter thead tr th, table.tablesorter tfoot tr th {
  font-family: var(--font-ui); font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
  color: var(--text-dim); background: transparent; border: 0; border-bottom: 1px solid var(--line) !important; white-space: nowrap;
}
.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > thead > tr > td, table.tablesorter tbody td {
  border-top: 1px solid rgba(var(--line-rgb),.35); background: transparent; color: var(--text);
}
.table-striped > tbody > tr:nth-of-type(odd), table.tablesorter tbody tr.odd td { background-color: rgba(255,255,255,.015); }
.table > tbody > tr:hover > td, .table-hover > tbody > tr:hover, table.tablesorter tbody tr:hover td { background-color: rgba(var(--glow-rgb),.06); }
.table-bordered, .table-bordered > thead > tr > th, .table-bordered > tbody > tr > td, .table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > td, .table-bordered > thead > tr > td { border: 1px solid rgba(var(--line-rgb),.5) !important; }
.table > tbody > tr.active > td, .table > tbody > tr > td.active { background: rgba(var(--glow-rgb),.08); }
.table > tbody > tr.success > td, .table > tbody > tr > td.success, .table > tbody > tr.success > th { background: rgba(63,224,143,.07); }
.table > tbody > tr.warning > td, .table > tbody > tr > td.warning, .table > tbody > tr.warning > th { background: rgba(242,163,58,.07); }
.table > tbody > tr.danger > td, .table > tbody > tr > td.danger, .table > tbody > tr.danger > th, .table > tbody > tr.alert-danger > td { background: rgba(255,75,92,.08); }
.table > tbody > tr.info > td, .table > tbody > tr > td.info, .table > tbody > tr.info > th { background: rgba(95,208,255,.06); }
table.tablesorter { font-family: var(--font-body); font-size: 12px; margin: 10px 0 15px; }
table.tablesorter thead tr .header { background-image: none; cursor: pointer; position: relative; padding-right: 18px; }
table.tablesorter thead tr .header::after { content: "\25B4\25BE"; position: absolute; right: 5px; font-size: 9px; letter-spacing: -2px; opacity: .45; }
table.tablesorter thead tr .headerSortUp, table.tablesorter thead tr .headerSortDown { background: transparent; color: var(--glow); }
table.tablesorter thead tr .headerSortUp::after { content: "\25B4"; opacity: 1; }
table.tablesorter thead tr .headerSortDown::after { content: "\25BE"; opacity: 1; }
.table-responsive { border: 0; }
.table > tbody > tr > td { overflow-wrap: break-word; }
.app-content { min-width: 0; overflow-x: hidden; }
.app-main { min-width: 0; }

/* contextual colours on <col>, <th> and plain cells (Bootstrap paints them light) */
.table > colgroup > col.info, .table col.info, col.info     { background-color: rgba(95,208,255,.035) !important; }
.table col.success, col.success                               { background-color: rgba(63,224,143,.04) !important; }
.table col.warning, col.warning                               { background-color: rgba(242,163,58,.04) !important; }
.table col.danger, col.danger                                 { background-color: rgba(255,75,92,.045) !important; }
.table col.active, col.active                                 { background-color: rgba(var(--glow-rgb),.10) !important; }
.table > thead > tr > th.info, .table > tbody > tr > th.info, .table > tfoot > tr > th.info, .table > tbody > tr.info > th { background: rgba(95,208,255,.14); color: #c4ecff; }
.table > thead > tr > th.success, .table > tbody > tr > th.success, .table > tbody > tr.success > th { background: rgba(63,224,143,.14); }
.table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > tbody > tr.warning > th { background: rgba(242,163,58,.14); }
.table > thead > tr > th.danger,  .table > tbody > tr > th.danger,  .table > tbody > tr.danger  > th { background: rgba(255,75,92,.16); }
.table > thead > tr > th.active,  .table > tbody > tr > th.active,  .table > tbody > tr.active  > th { background: rgba(var(--glow-rgb),.14); }
/* bare <table> without .table (profile dialogs, report fragments) */
table:not(.table):not(.tablesorter):not(.ui-datepicker-calendar):not(.ui-datepicker) { color: var(--text); }
table:not(.table):not(.tablesorter):not(.ui-datepicker-calendar) > thead > tr > th,
table:not(.table):not(.tablesorter):not(.ui-datepicker-calendar) > tbody > tr > th,
table:not(.table):not(.tablesorter):not(.ui-datepicker-calendar) > tr > th { color: var(--glow); font-weight: 600; }
table:not(.table):not(.tablesorter):not(.ui-datepicker-calendar) td,
table:not(.table):not(.tablesorter):not(.ui-datepicker-calendar) th { border-color: var(--line); background: transparent; }
table[border], table[bgcolor], tr[bgcolor] { background-color: transparent !important; border-color: var(--line) !important; }
/* legacy bgcolor cells: keep the meaning (green = taken, pink = not) in theme tints */
td[bgcolor], th[bgcolor] { background-color: rgba(var(--glow-rgb),.06) !important; }
td[bgcolor="#A1C935" i], td[bgcolor="green" i], td[bgcolor="lightgreen" i] { background-color: rgba(63,224,143,.18) !important; }
td[bgcolor="pink" i], td[bgcolor="red" i], td[bgcolor="#F08080" i] { background-color: rgba(255,75,92,.16) !important; }
.table-condensed > thead > tr > th, .table-condensed > tbody > tr > td { padding: 4px 6px; }
.c-table-slim th, .c-table-slim td { border-top: 0; }
.table-striped2 > tbody:nth-of-type(odd) { background-color: rgba(var(--glow-rgb),.05); }
.table caption { color: var(--text-dim); }
.table > tbody > tr > td > .table, .table .table { background: transparent; margin-bottom: 0; }

/* ---------- forms ---------- */
label, .control-label { color: var(--text-dim); font-weight: 500; font-size: 12px; letter-spacing: .03em; }
.form-control, input:not([type]), input[type=text], input[type=search], input[type=number], input[type=email], input[type=password],
input[type=tel], input[type=datetime], input[type=datetime-local], input[type=date], input[type=time], input[type=month], input[type=week], input[type=url], select, textarea {
  background-color: rgba(var(--bg-rgb),.75); border: 1px solid var(--line); color: var(--text); border-radius: 0; box-shadow: none;
  font-family: var(--font-body);
}
input:not([type]), input[type=text], input[type=search], input[type=number], input[type=email], input[type=password], input[type=tel], input[type=datetime],
input[type=datetime-local], input[type=date], input[type=time], input[type=url], select:not(.form-control), textarea:not(.form-control) { padding: 4px 8px; }
input[type=file] { color: var(--text-dim); }
input[type=file]::file-selector-button { font-family: var(--font-ui); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--head);
  background: linear-gradient(180deg, rgba(var(--steel-rgb),.55), rgba(var(--panel2-rgb),.85)); border: 1px solid var(--line-hi); padding: 3px 10px; margin-right: 8px; cursor: pointer; }
input:-webkit-autofill, input:-webkit-autofill:focus { -webkit-box-shadow: 0 0 0 1000px #06101e inset !important; -webkit-text-fill-color: var(--text) !important; caret-color: var(--text); }
.form-control:focus, input:focus, select:focus, textarea:focus {
  border-color: var(--glow) !important; outline: 0; box-shadow: 0 0 0 1px var(--glow-faint), 0 0 14px var(--glow-faint) !important;
}
.form-control::placeholder, input::placeholder, textarea::placeholder { color: var(--text-mute); }
.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { background: rgba(var(--line-rgb),.2); color: var(--text-dim); }
select option, select optgroup { background: var(--panel-solid); color: var(--text); }
input[type=checkbox], input[type=radio] { accent-color: var(--glow); }
input[type=datetime-local]::-webkit-calendar-picker-indicator, input[type=date]::-webkit-calendar-picker-indicator { filter: invert(.75) sepia(1) hue-rotate(170deg) saturate(3); }
.input-group-addon { background: rgba(var(--glow-rgb),.08); border: 1px solid var(--line); color: var(--glow); border-radius: 0; }
.help-block, .help-inline { color: var(--text-mute); }
.has-error .form-control { border-color: var(--danger); } .has-error .help-block, .has-error .help-inline, .has-error .control-label { color: var(--danger); }
.has-success .form-control { border-color: var(--success); }
legend { color: var(--head); border-bottom-color: var(--line); font-family: var(--font-ui); font-size: 15px; letter-spacing: .08em; }
fieldset { border-color: var(--line); }

/* ---------- buttons (bevelled command buttons) ---------- */
.btn, .ui-button, button.ui-button {
  --b: var(--line-hi);
  font-family: var(--font-ui); font-weight: 600; font-size: 12px; letter-spacing: .1em; text-transform: uppercase;
  border-radius: 0 !important; border: 1px solid var(--b); color: var(--head); text-shadow: none !important;
  background: linear-gradient(180deg, rgba(var(--steel-rgb),.55), rgba(var(--panel2-rgb),.85));
  box-shadow: inset 0 1px 0 rgba(160,220,255,.15), inset 0 0 12px rgba(var(--glow-rgb),.06) !important;
  clip-path: polygon(7px 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%, 0 7px);
  transition: background .15s, box-shadow .15s, color .15s, filter .15s;
}
.btn:hover, .btn:focus, .ui-button:hover {
  color: var(--bright); border-color: var(--glow);
  background: linear-gradient(180deg, rgba(58,140,220,.7), rgba(16,44,82,.9));
  box-shadow: inset 0 1px 0 rgba(180,230,255,.3), inset 0 0 18px rgba(var(--glow-rgb),.25) !important;
}
.btn:active, .btn.active { filter: brightness(.85); }
.btn-primary { --b: var(--glow); background: linear-gradient(180deg, var(--btn-2), var(--btn-3)); color: #fff; }
.btn-primary:hover, .btn-primary:focus { background: linear-gradient(180deg, #4aa6ff, #1556a8); }
.btn-success { --b: #3fe08f; background: linear-gradient(180deg, rgba(40,170,105,.85), rgba(10,70,45,.95)); }
.btn-success:hover, .btn-success:focus { border-color: #7ff5b7; background: linear-gradient(180deg, rgba(60,200,130,.9), rgba(14,90,58,.95)); }
.btn-info { --b: #5fd0ff; background: linear-gradient(180deg, rgba(40,150,200,.8), rgba(10,60,90,.95)); }
.btn-warning { --b: #f2a33a; background: linear-gradient(180deg, rgba(200,130,40,.85), rgba(90,52,10,.95)); }
.btn-warning:hover, .btn-warning:focus { border-color: #ffc777; background: linear-gradient(180deg, rgba(230,155,55,.9), rgba(110,64,14,.95)); }
.btn-danger { --b: #ff4b5c; background: linear-gradient(180deg, rgba(210,50,65,.85), rgba(90,12,22,.95)); }
.btn-danger:hover, .btn-danger:focus { border-color: #ff8a96; background: linear-gradient(180deg, rgba(240,70,85,.9), rgba(115,16,28,.95)); }
.btn-default { --b: var(--line-hi); }
.btn-link { background: none; border-color: transparent; box-shadow: none !important; clip-path: none; color: var(--glow); }
.btn-link:hover { background: none; border-color: transparent; }
.btn-xs, .btn-group-xs > .btn { font-size: 10px; padding: 1px 7px; clip-path: polygon(4px 0, 100% 0, 100% calc(100% - 4px), calc(100% - 4px) 100%, 0 100%, 0 4px); }
.btn-sm, .btn-group-sm > .btn { font-size: 11px; }
.btn.disabled, .btn[disabled] { opacity: .45; filter: grayscale(.6); }
.btn-group > .btn { clip-path: none; }
.btn-group > .btn:first-child { clip-path: polygon(7px 0, 100% 0, 100% 100%, 0 100%, 0 7px); }
.btn-group > .btn:last-child { clip-path: polygon(0 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%); }
.btn-group > .btn:only-child { clip-path: polygon(7px 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%, 0 7px); }
.btn .caret { border-top-color: currentColor; }

/* ---------- nav / tabs / pills / pagination ---------- */
.nav-tabs { border-bottom: 1px solid var(--line); }
.nav-tabs > li > a { border-radius: 0; color: var(--text-dim); border: 1px solid transparent; font-family: var(--font-ui);
  font-size: 12px; letter-spacing: .08em; text-transform: uppercase; margin-right: 2px; }
.nav-tabs > li > a:hover { background: rgba(var(--glow-rgb),.08); border-color: transparent; color: var(--head); }
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
  background: linear-gradient(180deg, rgba(var(--glow-rgb),.18), rgba(10,22,40,.9)); color: var(--bright); border: 1px solid var(--line);
  border-bottom-color: transparent; border-top: 2px solid var(--glow); text-shadow: 0 0 8px var(--glow-soft); }
.nav-pills > li > a { border-radius: 0; color: var(--text-dim); }
.nav-pills > li.active > a, .nav-pills > li.active > a:hover { background: rgba(var(--glow-rgb),.2); color: var(--bright); box-shadow: inset 2px 0 0 var(--glow); }
.nav > li > a:hover, .nav > li > a:focus { background: rgba(var(--glow-rgb),.08); }
.tab-content { padding-top: 12px; }
.pagination > li > a, .pagination > li > span { background: rgba(var(--bg-rgb),.6); border-color: var(--line); color: var(--text); border-radius: 0 !important; }
.pagination > li > a:hover { background: rgba(var(--glow-rgb),.12); color: var(--bright); border-color: var(--line-hi); }
.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover { background: rgba(var(--glow-rgb),.3); border-color: var(--glow); color: var(--bright); }
.pagination > .disabled > a, .pagination > .disabled > span { background: transparent; border-color: var(--line); color: var(--text-mute); }
.pager li > a { background: var(--panel); border-color: var(--line); border-radius: 0; }
.breadcrumb { background: transparent; padding: 0; color: var(--text-dim); }
.breadcrumb > .active { color: var(--head); }

/* legacy navbar (if any page still renders one) */
.navbar-inverse { background: var(--panel-solid); border-color: var(--line); }

/* ---------- dropdowns ---------- */
.dropdown-menu { padding: 4px 0; border-radius: 0; background: rgba(var(--panel-rgb),.97); border-color: var(--line-hi); box-shadow: 0 12px 30px rgba(0,0,0,.6), 0 0 0 1px rgba(var(--glow-rgb),.06); }
.dropdown-menu > li > a { color: var(--text); padding: 6px 16px; }
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { background: linear-gradient(90deg, rgba(var(--glow-rgb),.22), transparent); color: var(--bright); }
.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover { background: rgba(var(--glow-rgb),.3); }
.dropdown-menu .divider { background: var(--line); }
.dropdown-header { color: var(--text-mute); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; }

/* ---------- list-group / badges / labels ---------- */
.list-group { padding: 0; }
.list-group-item { background: transparent; border: 0; border-bottom: 1px solid rgba(var(--line-rgb),.6); color: var(--text); border-radius: 0 !important; }
.list-group-item:last-child { border-bottom: 0; }
a.list-group-item { color: var(--text); } a.list-group-item:hover { background: rgba(var(--glow-rgb),.08); color: var(--bright); }
.list-group-item.active, .list-group-item.active:hover { background: rgba(var(--glow-rgb),.22); border-color: var(--line); color: var(--bright); }
.badge { background: rgba(var(--glow-rgb),.18); color: var(--glow); border: 1px solid rgba(var(--glow-rgb),.4); border-radius: 2px;
  font-family: var(--font-mono); font-weight: 500; }
.list-group-item > .badge { margin-top: 1px; }
.label { border-radius: 2px; font-family: var(--font-ui); font-weight: 600; letter-spacing: .06em; padding: .25em .55em; }
.label-default { background: rgba(125,149,179,.25); color: var(--text); }
.label-primary { background: rgba(var(--glow-rgb),.25); color: #bfe8ff; }
.label-success { background: rgba(63,224,143,.2); color: var(--success); }
.label-warning { background: rgba(242,163,58,.22); color: var(--warning); }
.label-danger  { background: rgba(255,75,92,.22); color: #ff8a96; }
.label-info    { background: rgba(95,208,255,.2); color: var(--info); }

/* ---------- alerts ---------- */
.alert { border-radius: 0; border: 1px solid; border-left-width: 3px; background-image: none !important; text-shadow: none; box-shadow: none; }
.alert-success { background: rgba(63,224,143,.08); border-color: rgba(63,224,143,.5); color: #b5f3d3; }
.alert-info    { background: rgba(95,208,255,.08); border-color: rgba(95,208,255,.5); color: #c4ecff; }
.alert-warning { background: rgba(242,163,58,.09); border-color: rgba(242,163,58,.55); color: #ffdcab; }
.alert-danger  { background: rgba(255,75,92,.09); border-color: rgba(255,75,92,.55); color: #ffc0c7; }
.alert .close { color: inherit; text-shadow: none; opacity: .6; }

/* ---------- modal / popover / tooltip / progress ---------- */
.modal-backdrop.in { opacity: .7; background: #000; }
.modal-content { background: rgba(var(--panel-rgb),.98); padding: 0; }
.modal-header { background: linear-gradient(90deg, rgba(var(--glow-rgb),.16), transparent); border: 0; border-bottom: 1px solid var(--line); color: var(--head); border-radius: 0; padding: 10px 16px; }
.modal-title { font-family: var(--font-ui); letter-spacing: .1em; text-transform: uppercase; font-size: 14px; }
.modal-footer { border-top: 1px solid var(--line); }
.modal-body, .modal-footer button { font-family: var(--font-body); }
.close { color: var(--text); text-shadow: none; opacity: .6; } .close:hover { color: var(--bright); opacity: 1; }
.popover { background: rgba(var(--panel-rgb),.98); border-color: var(--line-hi); color: var(--text); }
.popover-title { background: rgba(var(--glow-rgb),.1); border-bottom-color: var(--line); color: var(--head); }
.tooltip-inner { background: #0d2240; border: 1px solid var(--line-hi); border-radius: 0; color: var(--head); }
.progress { background: rgba(var(--bg-rgb),.8); border: 1px solid var(--line); border-radius: 0; box-shadow: none; }
.progress-bar { background: linear-gradient(90deg, var(--btn-1), var(--glow)); box-shadow: 0 0 10px var(--glow-soft); }
.thumbnail { background: var(--panel); border-color: var(--line); border-radius: 0; }

/* ---------- jQuery UI (dialogs, tabs, datepicker) ---------- */
.ui-widget { font-family: var(--font-body); font-size: 13px; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: var(--font-body); }
.ui-widget-content { background: rgba(var(--panel-rgb),.98); border: 1px solid var(--line); color: var(--text); }
.ui-widget-content a { color: var(--glow); }
.ui-widget-header { background: linear-gradient(90deg, rgba(var(--glow-rgb),.18), rgba(var(--glow-rgb),.02)); border: 0; border-bottom: 1px solid var(--line);
  color: var(--head); font-family: var(--font-ui); letter-spacing: .08em; }
.ui-corner-all, .ui-corner-top, .ui-corner-bottom, .ui-corner-left, .ui-corner-right, .ui-corner-tl, .ui-corner-tr, .ui-corner-bl, .ui-corner-br { border-radius: 0; }
.ui-dialog { padding: 0; box-shadow: 0 20px 60px rgba(0,0,0,.7), 0 0 0 1px rgba(var(--glow-rgb),.1); }
.ui-dialog .ui-dialog-titlebar { padding: 9px 14px; text-transform: uppercase; font-size: 13px; }
.ui-dialog .ui-dialog-buttonpane { background: transparent; border-top: 1px solid var(--line); margin-top: 0; }
.ui-dialog .ui-dialog-titlebar-close { background: transparent; border: 1px solid var(--line); clip-path: none; }
.ui-widget-overlay { background: #000; opacity: .65; }
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
  background: rgba(var(--line-rgb),.35); border: 1px solid var(--line); color: var(--text); font-weight: 500; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: var(--text-dim); }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus {
  background: rgba(var(--glow-rgb),.18); border-color: var(--line-hi); color: var(--bright); }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
  background: rgba(var(--glow-rgb),.3); border-color: var(--glow); color: var(--bright); }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: var(--bright); }
.ui-state-highlight, .ui-widget-content .ui-state-highlight { background: rgba(242,193,78,.18); border-color: var(--gold); color: var(--gold); }
.ui-state-error, .ui-widget-content .ui-state-error { background: rgba(255,75,92,.18); border-color: var(--danger); color: #ffc0c7; }
.ui-tabs .ui-tabs-nav { background: transparent; border: 0; border-bottom: 1px solid var(--line); }
.ui-tabs .ui-tabs-nav li { border-bottom: 0 !important; }
.ui-datepicker { padding: 6px; }
.ui-datepicker th { color: var(--text-dim); font-weight: 500; font-size: 11px; }
.ui-icon, .ui-widget-content .ui-icon, .ui-widget-header .ui-icon { filter: invert(.8) sepia(1) hue-rotate(170deg) saturate(4); }
.ui-autocomplete { background: rgba(var(--panel-rgb),.98); }

/* blockUI "wait please" */
.blockOverlay { background: #000 !important; opacity: .55 !important; }
.blockMsg { background: rgba(var(--panel-rgb),.98) !important; color: var(--head) !important; border: 1px solid var(--glow) !important;
  font-family: var(--font-ui); letter-spacing: .12em; text-transform: uppercase; padding: 18px !important;
  box-shadow: 0 0 30px var(--glow-soft); }
.blockMsg::before { content: ""; display: block; height: 2px; margin: -18px -18px 14px; background: linear-gradient(90deg, transparent, var(--glow), transparent);
  background-size: 200% 100%; animation: scan 1.2s linear infinite; }
@keyframes scan { from { background-position: 100% 0; } to { background-position: -100% 0; } }

/* bootstrap-multiselect / datetimepicker */
.multiselect-container > li > a > label { color: var(--text); }
.bootstrap-datetimepicker-widget { background: rgba(var(--panel-rgb),.98); color: var(--text); }
.bootstrap-datetimepicker-widget td.active, .bootstrap-datetimepicker-widget td span.active { background: var(--accent) !important; }
.bootstrap-datetimepicker-widget td.day:hover, .bootstrap-datetimepicker-widget td.hour:hover, .bootstrap-datetimepicker-widget td.minute:hover { background: rgba(var(--glow-rgb),.18); }

/* JSON highlight (legacy main.css palette, re-tuned for dark bg) */
.string { color: #7ee0a6; } .number { color: #f2c14e; } .boolean { color: #5fd0ff; } .null { color: #ff7ad9; } .key { color: #ff8a96; }

/* legacy rgraph / google chart containers on dark */
canvas { max-width: 100%; }

/* =====================================================================
   Dashboard components
   ===================================================================== */
.dash-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 18px; flex-wrap: wrap; }
.dash-head h1 { margin: 0; font-size: 24px; letter-spacing: .1em; text-transform: uppercase; }
.dash-head h1 small { display: block; margin-top: 4px; font-size: 11px; letter-spacing: .26em; color: var(--text-dim); font-family: var(--font-ui); }
.dash-meta { font-family: var(--font-mono); font-size: 11px; color: var(--text-dim); display: flex; align-items: center; gap: 12px; }
.live-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--success); box-shadow: 0 0 8px var(--success); margin-right: 6px; animation: envpulse 2s infinite; }

.dash-grid { display: grid; gap: 16px; grid-template-columns: repeat(12, minmax(0, 1fr)); }
.span-3 { grid-column: span 3; } .span-4 { grid-column: span 4; } .span-5 { grid-column: span 5; }
.span-6 { grid-column: span 6; } .span-7 { grid-column: span 7; } .span-8 { grid-column: span 8; } .span-12 { grid-column: span 12; }
@media (max-width: 1399px) { .span-3 { grid-column: span 6; } }
@media (max-width: 1199px) { .span-4, .span-5, .span-7, .span-8 { grid-column: span 12; } }
@media (max-width: 640px) { .span-3, .span-6 { grid-column: span 12; } }

.hud { padding: 0; }
.hud-head { display: flex; align-items: center; gap: 10px; padding: 11px 16px; border-bottom: 1px solid var(--line);
  background: linear-gradient(90deg, rgba(var(--glow-rgb),.08), transparent 70%); }
.hud-head h3 { margin: 0; font-size: 12px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--head); }
.hud-head .glyphicon { color: var(--glow); font-size: 12px; }
.hud-head .hud-tools { margin-left: auto; display: flex; gap: 4px; align-items: center; }
.hud-body { padding: 16px; }
.hud-body.flush { padding: 0; }

.seg { display: inline-flex; border: 1px solid var(--line); }
.seg button { background: transparent; border: 0; color: var(--text-dim); font-family: var(--font-ui); font-size: 11px; font-weight: 600;
  letter-spacing: .1em; padding: 3px 10px; cursor: pointer; }
.seg button + button { border-left: 1px solid var(--line); }
.seg button:hover { color: var(--bright); background: rgba(var(--glow-rgb),.1); }
.seg button.on { color: var(--bright); background: rgba(var(--glow-rgb),.28); box-shadow: inset 0 -2px 0 var(--glow); }

/* KPI tiles */
.kpi { padding: 16px 18px 14px; min-height: 118px; overflow: hidden; }
.kpi-label { font-family: var(--font-ui); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--text-dim); display: flex; align-items: center; gap: 8px; }
.kpi-label .glyphicon { color: var(--glow); }
.kpi-value { font-family: var(--font-ui); font-size: 38px; font-weight: 700; line-height: 1.1; color: var(--bright); margin-top: 8px;
  text-shadow: 0 0 18px rgba(var(--glow-rgb),.45); font-variant-numeric: tabular-nums; }
.kpi-value .unit { font-size: 14px; color: var(--text-dim); font-weight: 500; text-shadow: none; margin-left: 4px; }
.kpi-sub { font-size: 12px; color: var(--text-dim); margin-top: 4px; }
.kpi-sub b { color: var(--text); font-weight: 500; }
.kpi::after { /* faint emblem */
  content: ""; position: absolute; right: -24px; bottom: -24px; width: 110px; height: 110px; pointer-events: none;
  border: 1px solid rgba(var(--glow-rgb),.12); transform: rotate(45deg);
  box-shadow: inset 0 0 0 14px rgba(var(--glow-rgb),.025), 0 0 0 14px rgba(var(--glow-rgb),.02);
}
.kpi.k-gold .kpi-value { text-shadow: 0 0 18px rgba(242,193,78,.4); }
.kpi.k-gold .kpi-label .glyphicon { color: var(--gold); }
.kpi.k-green .kpi-value { text-shadow: 0 0 18px rgba(63,224,143,.35); }
.kpi.k-green .kpi-label .glyphicon { color: var(--success); }
.kpi.k-red .kpi-label .glyphicon { color: var(--danger); }
.kpi-spark { position: absolute; left: 0; right: 0; bottom: 0; height: 34px; opacity: .55; }

/* bars list (servers, countries) */
.bars { list-style: none; margin: 0; padding: 0; }
.bars li { display: grid; grid-template-columns: minmax(70px, 1fr) 2fr auto; gap: 12px; align-items: center; padding: 7px 16px; border-bottom: 1px solid rgba(var(--line-rgb),.45); }
.bars li:last-child { border-bottom: 0; }
.bars .name { color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bars .name code { background: none; padding: 0; color: var(--text-dim); }
.bars .track { height: 6px; background: rgba(var(--line-rgb),.45); position: relative; overflow: hidden; }
.bars .fill { position: absolute; inset: 0 auto 0 0; background: linear-gradient(90deg, var(--btn-1), var(--glow)); box-shadow: 0 0 8px var(--glow-soft); }
.bars .val { font-family: var(--font-mono); font-size: 12px; color: var(--head); text-align: right; min-width: 64px; }
.bars .val small { color: var(--text-mute); margin-left: 4px; }
.bars-scroll { max-height: 360px; overflow-y: auto; }

/* system feed */
.feed { font-family: var(--font-mono); font-size: 12px; max-height: 360px; overflow-y: auto; }
.feed-row { display: grid; grid-template-columns: 46px 1fr; gap: 10px; padding: 6px 16px; border-bottom: 1px solid rgba(var(--line-rgb),.35); }
.feed-row:hover { background: rgba(var(--glow-rgb),.06); }
.feed-row time { color: var(--text-mute); }
.feed-row a { color: var(--text); word-break: break-word; }
.feed-row.sys a { color: #9ff0c4; }
.feed-row a:hover { color: var(--bright); }
.feed-filter { height: 24px; width: 160px; font-size: 11px; padding: 0 8px; }

/* quick actions */
.quick { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; padding: 16px; }
.quick a {
  display: flex; flex-direction: column; gap: 8px; padding: 14px; color: var(--text); font-size: 12px;
  background: linear-gradient(180deg, rgba(var(--line-rgb),.35), rgba(8,18,34,.6)); border: 1px solid var(--line);
  clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
  transition: border-color .15s, background .15s, transform .15s;
}
.quick a .glyphicon { font-size: 18px; color: var(--glow); }
.quick a b { font-family: var(--font-ui); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--head); font-size: 12px; }
.quick a:hover { border-color: var(--glow); background: linear-gradient(180deg, rgba(58,140,220,.35), rgba(10,26,50,.7)); transform: translateY(-1px); text-shadow: none; }

.chart-box { position: relative; height: 300px; padding: 12px 16px 8px; }
.chart-legend { display: flex; gap: 16px; padding: 0 16px 12px; font-size: 11px; color: var(--text-dim); flex-wrap: wrap; }
.chart-legend i { display: inline-block; width: 10px; height: 3px; margin-right: 6px; vertical-align: middle; }
.dash-empty { padding: 28px 16px; text-align: center; color: var(--text-mute); font-size: 12px; }
.skeleton { display: inline-block; min-width: 60px; height: .9em; background: linear-gradient(90deg, rgba(var(--line-rgb),.4), rgba(var(--glow-rgb),.2), rgba(var(--line-rgb),.4));
  background-size: 200% 100%; animation: scan 1.4s linear infinite; vertical-align: middle; }

/* =====================================================================
   Login
   ===================================================================== */
.login-body { display: grid; place-items: center; min-height: 100vh; padding: 20px; overflow: hidden; }
.login-body::before { /* horizon glow */
  content: ""; position: fixed; left: -10%; right: -10%; bottom: -30vh; height: 60vh; pointer-events: none;
  background: radial-gradient(closest-side, rgba(var(--glow-rgb),.35), transparent); filter: blur(10px);
}
.login-card { width: 380px; max-width: 100%; padding: 30px 30px 26px; }
.login-emblem { width: 64px; height: 64px; margin: -62px auto 14px; display: grid; place-items: center;
  font-family: var(--font-ui); font-weight: 800; font-size: 20px; color: #fff;
  background: linear-gradient(135deg, var(--btn-2), var(--btn-3)); border: 1px solid var(--glow);
  clip-path: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%);
  box-shadow: 0 0 30px var(--glow-soft); }
.login-card h1 { margin: 0 0 4px; text-align: center; font-size: 20px; letter-spacing: .3em; text-transform: uppercase; }
.login-card .login-sub { text-align: center; font-size: 10px; letter-spacing: .4em; color: var(--text-dim); text-transform: uppercase; margin-bottom: 24px; font-family: var(--font-ui); }
.login-card .field { margin-bottom: 14px; }
.login-card .field label { display: block; font-family: var(--font-ui); font-size: 10px; letter-spacing: .24em; text-transform: uppercase; margin-bottom: 6px; }
.login-card input { width: 100%; height: 40px !important; font-size: 14px; padding: 0 12px !important; }
.login-card .btn { width: 100%; height: 44px; font-size: 14px; letter-spacing: .3em; margin-top: 8px; }
.login-msg { padding: 8px 12px; margin-bottom: 14px; font-size: 12px; border-left: 3px solid; }
.login-msg.error { color: #ffc0c7; border-color: var(--danger); background: rgba(255,75,92,.1); }
.login-msg.success { color: #b5f3d3; border-color: var(--success); background: rgba(63,224,143,.08); }
.login-foot { margin-top: 18px; text-align: center; font-family: var(--font-mono); font-size: 10px; color: var(--text-mute); letter-spacing: .12em; }

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }

/* =====================================================================
   Profile window (Views/Profiles/Show.cshtml inside #profileWindow)
   ===================================================================== */
/* the dialog is a Bootstrap modal (js/jquery.dialog.js shim); .pw-dialog is set on .modal-dialog */
.modal-dialog.pw-dialog { margin: 14px auto; }
.modal-dialog.pw-dialog .modal-content { height: 100%; padding: 0; display: flex; flex-direction: column; border-color: var(--line-hi); }
.modal-dialog.pw-dialog .modal-header, .modal-dialog.pw-dialog .modal-footer { display: none; }
.modal-dialog.pw-dialog .modal-body { flex: 1 1 auto; min-height: 0; padding: 0; overflow: hidden; }
.modal-dialog.pw-dialog #profileWindow { height: 100%; }
.pw { display: grid; grid-template-columns: 224px minmax(0, 1fr); height: 100%; min-height: 0; background: rgba(var(--panel-rgb),.98); }
.pw-side { display: flex; flex-direction: column; min-height: 0; border-right: 1px solid var(--line);
  background: linear-gradient(180deg, rgba(8,18,34,.9), rgba(var(--card2-rgb),.95)); }
.pw-id { padding: 16px 14px 12px; border-bottom: 1px solid var(--line); }
.pw-ava { width: 52px; height: 52px; display: grid; place-items: center; font: 700 18px var(--font-ui); color: #fff;
  background: linear-gradient(135deg, var(--btn-2), var(--btn-3)); clip-path: polygon(50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%, 0 25%); margin-bottom: 10px; }
.pw-name { font: 600 15px var(--font-ui); color: var(--bright); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pw-name small { display: block; font: 11px var(--font-mono); color: var(--text-dim); margin-top: 2px; }
.pw-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 10px; }
.pw-tags .label { font-size: 9px; }
.pw-nav.nav-tabs { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 4px 0 8px; border: 0; }
.pw-nav.nav-tabs > li { float: none; margin: 0; }
.pw-nav.nav-tabs > li.sub { padding: 10px 14px 3px; font: 600 10px var(--font-ui); letter-spacing: .16em; color: var(--text-mute); text-transform: uppercase; }
.pw-nav.nav-tabs > li > a { display: block; margin: 0; padding: 5px 14px; border: 0; border-left: 2px solid transparent; border-radius: 0;
  color: var(--text); font: 13px var(--font-body); text-transform: none; letter-spacing: 0; }
.pw-nav.nav-tabs > li > a:hover { background: rgba(var(--glow-rgb),.1); border-color: transparent; border-left-color: transparent; color: var(--bright); }
.pw-nav.nav-tabs > li.active > a, .pw-nav.nav-tabs > li.active > a:hover, .pw-nav.nav-tabs > li.active > a:focus {
  color: var(--bright); border: 0; border-left: 2px solid var(--glow); background: linear-gradient(90deg, rgba(var(--glow-rgb),.22), transparent); text-shadow: none; }
.pw-foot { display: grid; grid-template-columns: 1fr auto; gap: 6px; padding: 10px 12px; border-top: 1px solid var(--line); }
.pw-foot .dropup { display: flex; } .pw-foot .dropup > .btn { flex: 1; }
.pw-foot .dropdown-menu { bottom: 100%; top: auto; margin-bottom: 4px; }
.pw-main { display: flex; flex-direction: column; min-width: 0; min-height: 0; }
.pw-top { display: flex; align-items: center; gap: 8px; padding: 9px 16px; border-bottom: 1px solid var(--line);
  background: linear-gradient(90deg, rgba(var(--glow-rgb),.1), transparent 60%); }
.pw-top h3 { margin: 0; font: 600 13px var(--font-ui); letter-spacing: .18em; text-transform: uppercase; color: var(--bright); }
.pw-upd { font-size: 11px; color: var(--text-mute); font-family: var(--font-mono); }
.pw-top .sp { flex: 1; }
.pw-find { height: 28px !important; width: 220px; font-size: 12px; padding: 0 10px !important; }
.pw-body { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 14px 16px; }
.pw-body > .tab-pane > .well { background: transparent; border: 0; box-shadow: none; padding: 0; margin: 0; }
.pw-body > .tab-pane > .well::before { display: none; }
.pw-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 12px; align-content: start; }
.pw-kpi { grid-column: span 3; padding: 12px 14px; min-height: 0; }
.pw-kpi .kpi-value { font-size: 26px; margin-top: 4px; }
.pw-kpi .kpi-value.pw-kpi-date { font-size: 20px; }
.pw-kpi .kpi-label { font-size: 10px; }
.pw-kpi .kpi-sub { font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pw-s6 { grid-column: span 6; } .pw-s12 { grid-column: span 12; }
@media (max-width: 1200px) { .pw-kpi { grid-column: span 6; } .pw-s6 { grid-column: span 12; } }
/* narrow screens: like the main shell — the side panel is off-canvas, a burger in the window header opens it */
.pw-burger { display: none; }
.pw-backdrop { display: none; }
@media (max-width: 820px) {
  .pw { display: flex; flex-direction: column; position: relative; }
  .pw-side { position: absolute; top: 0; bottom: 0; left: 0; width: min(280px, 85%); z-index: 20; transform: translateX(-104%);
    transition: transform .18s ease; box-shadow: 8px 0 24px rgba(0,0,0,.5); background: var(--panel-solid); }
  .pw.side-open .pw-side { transform: none; }
  .pw-backdrop { position: absolute; inset: 0; z-index: 19; background: rgba(0,0,0,.55); }
  .pw.side-open .pw-backdrop { display: block; }
  .pw-burger { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 28px; margin-right: 4px; padding: 0;
    border: 1px solid var(--line); background: rgba(var(--glow-rgb),.08); color: var(--bright); font-size: 14px; }
  .pw-burger:hover { border-color: var(--glow); }
  .pw-main { flex: 1 1 auto; min-height: 0; }
  .pw-top { flex-wrap: wrap; padding: 8px 12px; }
  .pw-top .pw-crumbs { max-width: 100%; }
  .pw-find { width: 140px; }
  .pw-body { padding: 10px 12px; }
}
}
.pw-grp { padding: 0; }
.pw-grp > h4 { margin: 0; padding: 8px 14px; font-size: 11px; border-bottom: 1px solid var(--line); display: flex; align-items: center; gap: 8px;
  background: linear-gradient(90deg, rgba(var(--glow-rgb),.08), transparent); }
.pw-grp > h4 + h4 { border-top: 1px solid var(--line); }
.pw-grp > h4 .btn { margin-left: auto; }
.pw-grp > .table { margin: 0; }
.kv { display: grid; grid-template-columns: minmax(130px, 170px) minmax(0, 1fr); font-size: 12px; }
.kv > div { padding: 5px 14px; border-bottom: 1px solid rgba(var(--line-rgb),.4); min-width: 0; }
.kv > div:nth-child(odd) { color: var(--text-dim); }
.kv > div:nth-child(even) { color: var(--head); font-family: var(--font-mono); font-size: 12px; word-break: break-word; }
.kv > div:nth-last-child(-n+2) { border-bottom: 0; }
.kv .pw-wrap { overflow-wrap: anywhere; }
.pw-mono { font-family: var(--font-mono); font-size: 11px; }
.kv > div.pw-hit, .pw-raw.pw-hit > h4 { background: rgba(242,193,78,.12); }
.pw-grp.pw-miss, .pw-kpi.pw-miss { display: none; }
/* inline editors: the Ui.Updatable* buttons become dashed links */
.kv .btn.btn-xs, .pw-raw .btn-default.btn-sm { min-height: 0 !important; min-width: 0 !important; padding: 0 2px; margin: 0; border: 0; border-bottom: 1px dashed rgba(var(--glow-rgb),.45);
  background: none !important; box-shadow: none !important; clip-path: none; color: var(--glow); font: inherit; font-family: var(--font-mono); text-transform: none;
  letter-spacing: 0; cursor: pointer; text-align: left; white-space: normal; word-break: break-word; }
.kv .btn.btn-xs:hover, .pw-raw .btn-default.btn-sm:hover { color: var(--bright); text-shadow: 0 0 8px var(--glow-soft); border-bottom-color: var(--glow); }
.kv .btn.btn-xs:empty::before { content: "—"; color: var(--text-mute); }
.pw-ro .kv .btn.btn-xs { pointer-events: none; border-bottom-color: transparent; color: var(--head); }
.pw-danger > h4 .glyphicon { color: var(--danger); }
.pw-raw .pw-rawbody { padding: 8px 14px; font-family: var(--font-mono); font-size: 11px; color: var(--text); max-height: 220px; overflow: auto; overflow-wrap: anywhere; white-space: pre-wrap; }
.pw-raw .btn-default.btn-sm { display: block; }
.pw-raw .pw-rawbody:empty::before { content: "пусто"; color: var(--text-mute); }
.kv .btn.pw-on::before, .kv .btn.pw-off::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 6px; vertical-align: middle; background: var(--text-mute); }
.kv .btn.pw-on { color: var(--success); } .kv .btn.pw-on::before { background: var(--success); box-shadow: 0 0 6px var(--success); }
.kv .btn.pw-off { color: var(--text-dim); }
.pw-danger .kv .btn.pw-on { color: var(--danger); } .pw-danger .kv .btn.pw-on::before { background: var(--danger); box-shadow: 0 0 6px var(--danger); }
/* infinite loader */
.bw-more-wrap { display: flex; justify-content: center; padding: 12px 0 4px; }
.bw-more { min-width: 200px; }
.bw-more.loading { opacity: .7; }
.bw-more.loading .glyphicon { animation: bwspin 1s linear infinite; }
@keyframes bwspin { to { transform: rotate(360deg); } }
.bw-end { text-align: center; padding: 12px; font: 11px var(--font-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--text-mute); }
/* JSON values */
.bw-json, .bw-json a, .bw-json .btn, .bw-json code { font-family: var(--font-mono) !important; font-size: 11.5px !important; }
td.bw-json, .kv > div.bw-json, .pw-rawbody.bw-json, .btn-default.btn-sm.bw-json { white-space: pre-wrap; overflow-wrap: anywhere; color: #a9d2f5; }
/* editable text areas rendered as <div class="btn-default btn-sm"> (Ui.UpdatableArea) — Bootstrap paints them white */
.btn-default:not(.btn):not(td):not(th):not(tr), div.btn-default.btn-sm, span.btn-default.btn-sm {
  background: rgba(var(--bg-rgb),.6) !important; color: var(--text) !important; border: 1px solid var(--line) !important; border-radius: 0;
  box-shadow: none !important; text-shadow: none; padding: 6px 10px; cursor: pointer; font-family: var(--font-mono); font-size: 11.5px;
  white-space: pre-wrap; overflow-wrap: anywhere; display: block; min-height: 30px; }
.btn-default:not(.btn):not(td):not(th):hover, div.btn-default.btn-sm:hover { border-color: var(--glow) !important; color: var(--bright) !important; box-shadow: 0 0 10px var(--glow-faint) !important; }
.btn-default:not(.btn):not(td):not(th):empty::before { content: "пусто — нажмите, чтобы задать"; color: var(--text-mute); font-family: var(--font-body); }
.pw-raw .btn-default.btn-sm { border: 0 !important; background: transparent !important; padding: 8px 14px; max-height: 220px; overflow: auto; }
.pw-raw .btn-default.btn-sm:hover { background: rgba(var(--glow-rgb),.05) !important; box-shadow: none !important; }

/* plain <button>/<input type=submit> without .btn (legacy fragments) look like .btn-default */
button:not(.btn):not(.close):not(.navbar-toggle):not(.ui-button):not(.ui-dialog-titlebar-close):not(.app-nav-group-title):not(.app-collapse-btn):not(.app-burger):not([class*="multiselect"]),
input[type=submit]:not(.btn), input[type=button]:not(.btn), input[type=reset]:not(.btn) {
  font-family: var(--font-ui); font-weight: 600; font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--head); background: linear-gradient(180deg, rgba(var(--steel-rgb),.55), rgba(var(--panel2-rgb),.85)); border: 1px solid var(--line-hi);
  padding: 2px 9px; cursor: pointer; clip-path: polygon(5px 0, 100% 0, 100% calc(100% - 5px), calc(100% - 5px) 100%, 0 100%, 0 5px); }
button:not(.btn):not(.close):not(.navbar-toggle):not(.ui-button):hover, input[type=submit]:not(.btn):hover { color: var(--bright); border-color: var(--glow); }
.seg > button, .seg > button:hover { background: transparent; border: 0; clip-path: none; padding: 3px 10px; letter-spacing: .1em; color: var(--text-dim); }
.seg > button:hover { color: var(--bright); background: rgba(var(--glow-rgb),.1); } .seg > button + button { border-left: 1px solid var(--line); }
.seg > button.on { color: var(--bright); background: rgba(var(--glow-rgb),.28); box-shadow: inset 0 -2px 0 var(--glow); }
/* payments: currency key/value grid */
.pay-table { table-layout: fixed; }
.pay-table td { vertical-align: top; overflow-wrap: anywhere; }
.pay-table td.pay-ts { white-space: nowrap; text-align: left; font-family: var(--font-mono); font-size: 11.5px; color: var(--text-dim); }
.pay-table td.pay-reason { font-size: 12px; }
.cur-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 2px 10px; }
.pay-total .cur-grid { grid-template-columns: repeat(auto-fill, minmax(175px, 1fr)); }
.cur { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 1px 6px; font-family: var(--font-mono); font-size: 11px; border-bottom: 1px solid rgba(var(--line-rgb),.35); min-width: 0; }
.cur b { flex: 1 1 auto; font-weight: 500; color: var(--text-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cur i { font-style: normal; color: var(--head); white-space: nowrap; }
.cur.neg i { color: var(--danger); }
.cur .cur-ic { flex: 0 0 auto; width: 14px; height: 14px; object-fit: contain; opacity: .9; }
/* BW-3700: «Итого» shows only the touched currencies (.hit, with the delta .cur-d); the rest (.pay-rest) is collapsed
   behind the «ещё N валют» button until the grid gets .pay-open or the tab wrap gets .pay-all («Все валюты» switch) */
.cur .cur-d { flex: 0 0 auto; font-style: normal; font-size: 10px; padding: 0 4px; border-radius: 2px; background: rgba(var(--glow-rgb),.12); color: var(--text-dim); }
.cur .cur-d.pos { color: var(--success); }
.cur .cur-d.neg { color: var(--danger); }
.pay-tot .cur.hit { background: rgba(var(--glow-rgb),.08); box-shadow: inset 2px 0 0 var(--glow); }
.pay-tot .cur.hit b { color: var(--text); }
.pay-tot .cur.pay-rest { display: none; }
.pay-tot.pay-open .cur.pay-rest, .pay-all .pay-tot .cur.pay-rest { display: flex; }
.pay-all .pay-tot .cur.pay-rest { opacity: .75; }
.pay-more-cur { grid-column: 1 / -1; justify-self: start; margin-top: 2px; padding: 0 6px; border: 1px dashed rgba(var(--line-rgb),.8); border-radius: 2px; background: transparent; font-family: var(--font-mono); font-size: 10.5px; line-height: 16px; color: var(--text-mute); cursor: pointer; }
.pay-more-cur:hover { color: var(--bright); border-color: var(--glow); }
.pay-all .pay-more-cur { display: none; }
.pay-tools { display: flex; align-items: center; gap: 12px; margin: 0 0 8px; font-size: 11.5px; color: var(--text-mute); }
.pay-tools .pay-hint { flex: 1 1 auto; }
.pay-tools .pay-hint b { font-weight: 500; color: var(--text-dim); box-shadow: inset 2px 0 0 var(--glow); padding-left: 4px; }
.pay-tools .pay-all-toggle { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-weight: 500; color: var(--text-dim); cursor: pointer; white-space: nowrap; }
.pay-tools .pay-all-toggle input { margin: 0; }
/* search boxes: keep the icon gutter regardless of the generic input padding rule */
.app-topbar .app-search input { padding: 0 34px 0 36px !important; }
.app-sidebar .app-nav-filter input { padding: 0 30px 0 34px !important; }
/* clickable table cells (Heroes tab: <td class="btn-default btn-sm" onclick>) */
td.btn-default.btn-sm, th.btn-default.btn-sm { cursor: pointer; background: transparent !important; color: var(--glow) !important; border-color: inherit !important; box-shadow: none !important; text-shadow: none !important; }
td.btn-default.btn-sm:hover { background: rgba(var(--glow-rgb),.1) !important; color: var(--bright) !important; }

/* ---- icon dropdown (.bw-pick) ---- */
.bw-pick { position: relative; display: inline-block; min-width: 220px; text-align: left; }
.bw-pick-btn { text-transform: none; letter-spacing: 0; display: flex; align-items: center; gap: 8px; width: 100%; height: 36px; padding: 2px 28px 2px 4px; border: 1px solid var(--line); background: rgba(var(--bg-rgb),.7); color: var(--text-mute); font: 500 12px var(--font-ui); cursor: pointer; position: relative; }
.bw-pick-btn.has { color: var(--text); }
.bw-pick-btn:hover, .bw-pick.open .bw-pick-btn { border-color: var(--glow); }
.bw-pick-btn::after { content: ""; position: absolute; right: 10px; top: 50%; width: 6px; height: 6px; border-right: 1px solid var(--text-mute); border-bottom: 1px solid var(--text-mute); transform: translateY(-70%) rotate(45deg); }
.bw-pick-btn img, .bw-pick-menu img { width: 28px; height: 28px; object-fit: contain; flex: 0 0 28px; background: rgba(var(--line-rgb),.35); border: 1px solid var(--line); }
.bw-pick-btn span, .bw-pick-menu a span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bw-pick-btn small, .bw-pick-menu a small { color: var(--text-mute); font-family: var(--font-mono); margin-left: auto; padding-left: 8px; }
.bw-pick-menu { display: none; position: fixed; z-index: 3100; max-height: 320px; overflow-y: auto; overscroll-behavior: contain; border: 1px solid var(--glow); background: var(--panel-solid); box-shadow: 0 8px 24px rgba(0,0,0,.6), 0 0 12px var(--glow-faint); }
.bw-pick.open .bw-pick-menu { display: block; }
.bw-pick.up .bw-pick-menu { box-shadow: 0 -8px 24px rgba(0,0,0,.6), 0 0 12px var(--glow-faint); }
.bw-pick.up .bw-pick-filter { position: sticky; top: 0; }
.bw-pick-filter { display: block; width: 100%; height: 30px; margin: 0; border: 0; border-bottom: 1px solid var(--line); background: rgba(var(--bg-rgb),.8) !important; padding: 0 10px; font-size: 12px; position: sticky; top: 0; }
.bw-pick-menu a { display: flex; align-items: center; gap: 8px; padding: 4px 8px; color: var(--text); text-decoration: none; font: 500 12px var(--font-ui); border-bottom: 1px solid rgba(var(--line-rgb),.3); }
.bw-pick-menu a:hover, .bw-pick-menu a.sel { background: rgba(var(--glow-rgb),.12); color: var(--head); }
.bw-pick-menu a img { width: 32px; height: 32px; flex-basis: 32px; }

/* ---- themed dialogs (bwAlert / bwConfirm / bwPrompt) ---- */
.bw-dlg-wrap { display: none; position: fixed; inset: 0; z-index: 3000; background: rgba(var(--bg-rgb),.72); backdrop-filter: blur(2px); align-items: center; justify-content: center; padding: 20px; }
.bw-dlg-wrap.open { display: flex; }
.bw-dlg { width: 440px; max-width: 100%; border: 1px solid var(--glow); background: linear-gradient(180deg, var(--card), var(--card2)); box-shadow: 0 0 0 1px rgba(var(--bg-rgb),.8), 0 20px 60px rgba(0,0,0,.7), 0 0 24px var(--glow-faint); position: relative; animation: bwDlgIn .14s ease-out; }
.bw-dlg::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--glow), transparent); }
@keyframes bwDlgIn { from { transform: translateY(-8px); opacity: 0; } to { transform: none; opacity: 1; } }
.bw-dlg-head { display: flex; align-items: center; gap: 10px; padding: 12px 16px 8px; }
.bw-dlg-head h4 { margin: 0; font: 700 12px var(--font-ui); letter-spacing: .16em; text-transform: uppercase; color: var(--head); }
.bw-dlg-head i { width: 10px; height: 10px; border: 2px solid var(--glow); transform: rotate(45deg); box-shadow: 0 0 8px var(--glow-soft); }
.bw-dlg[data-kind="ok"] .bw-dlg-head i { border-color: var(--success); box-shadow: 0 0 8px rgba(96,200,120,.5); }
.bw-dlg[data-kind="err"] .bw-dlg-head i, .bw-dlg[data-kind="warn"] .bw-dlg-head i { border-color: var(--danger); box-shadow: 0 0 8px rgba(255,80,80,.5); }
.bw-dlg[data-kind="err"] { border-color: rgba(255,80,80,.6); }
.bw-dlg[data-kind="err"]::before { background: linear-gradient(90deg, transparent, var(--danger), transparent); }
.bw-dlg-body { padding: 4px 16px 14px; font-size: 13px; line-height: 1.5; color: var(--text); overflow-wrap: anywhere; max-height: 50vh; overflow-y: auto; }
.bw-dlg[data-kind="err"] .bw-dlg-body { font-family: var(--font-mono); font-size: 12px; }
.bw-dlg-input { padding: 0 16px 12px; }
.bw-dlg-input input { width: 100%; height: 34px; }
.bw-dlg-range { display: none; align-items: center; gap: 10px; padding: 0 16px 12px; }
.bw-dlg-range input[type=range] { flex: 1; accent-color: var(--glow); height: 24px; background: transparent !important; border: 0 !important; box-shadow: none !important; padding: 0; }
.bw-dlg-range output { min-width: 36px; text-align: right; font: 600 14px var(--font-mono); color: var(--head); }
.bw-dlg-range .bw-dlg-range-num { width: 76px; height: 30px; }
.bw-dlg-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 16px 14px; border-top: 1px solid var(--line); }

/* ---- toasts (alert replacement) ---- */
.bw-toasts { position: fixed; top: calc(var(--topbar-h) + 12px); right: 16px; z-index: 3200; display: flex; flex-direction: column; gap: 8px; width: 380px; max-width: calc(100vw - 32px); pointer-events: none; }
.bw-toast { pointer-events: auto; display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--glow); border-left-width: 3px; background: linear-gradient(180deg, rgba(var(--card-rgb),.97), rgba(var(--card2-rgb),.97)); box-shadow: 0 10px 30px rgba(0,0,0,.6), 0 0 14px var(--glow-faint); color: var(--text); font-size: 12.5px; line-height: 1.45; cursor: pointer; animation: bwToastIn .18s ease-out; overflow-wrap: anywhere; }
.bw-toast.out { opacity: 0; transform: translateX(16px); transition: opacity .2s, transform .2s; }
@keyframes bwToastIn { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: none; } }
.bw-toast i { flex: 0 0 8px; width: 8px; height: 8px; margin-top: 5px; border: 2px solid var(--glow); transform: rotate(45deg); box-shadow: 0 0 6px var(--glow-soft); }
.bw-toast b { margin-left: auto; color: var(--text-mute); font-weight: 400; font-size: 14px; line-height: 1; }
.bw-toast-body { white-space: pre-wrap; max-height: 40vh; overflow: auto; }
.bw-toast[data-kind="ok"] { border-color: var(--success); box-shadow: 0 10px 30px rgba(0,0,0,.6), 0 0 14px rgba(96,200,120,.25); }
.bw-toast[data-kind="ok"] i { border-color: var(--success); box-shadow: 0 0 6px rgba(96,200,120,.6); }
.bw-toast[data-kind="err"] { border-color: var(--danger); box-shadow: 0 10px 30px rgba(0,0,0,.6), 0 0 14px rgba(255,80,80,.25); font-family: var(--font-mono); font-size: 11.5px; }
.bw-toast[data-kind="err"] i { border-color: var(--danger); box-shadow: 0 0 6px rgba(255,80,80,.6); }

/* ---- profile window: navigation trail (crumbs) ---- */
.pw-top .pw-crumbs { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-right: 12px; padding-right: 12px; border-right: 1px solid var(--line); font: 500 11px var(--font-ui); max-width: 45%; }
.pw-top .pw-crumbs a { color: var(--text-dim); text-decoration: none; white-space: nowrap; max-width: 140px; overflow: hidden; text-overflow: ellipsis; }
.pw-top .pw-crumbs a:hover { color: var(--head); text-decoration: underline; }
.pw-top .pw-crumbs i { color: var(--text-mute); font-style: normal; }
.pw-top .pw-crumbs b { color: var(--head); white-space: nowrap; max-width: 160px; overflow: hidden; text-overflow: ellipsis; }

/* ---- theme picker (user menu) ---- */
.app-themes { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; padding: 2px 8px 6px; min-width: 300px; }
.app-themes a { display: flex !important; align-items: center; gap: 8px; padding: 5px 8px !important; border: 1px solid transparent; font-size: 12px; line-height: 1.2; }
.app-themes a small { display: block; font-size: 9.5px; color: var(--text-mute); }
.app-themes a i { flex: 0 0 14px; width: 14px; height: 14px; background: var(--c); border-radius: 2px; box-shadow: 0 0 6px var(--c); }
.app-themes a.on { border-color: var(--glow); background: var(--glow-faint) !important; color: var(--head) !important; }

/* ---- cargo chips (icon + amount) ---- */
.cg { display: inline-flex; align-items: center; gap: 4px; padding: 1px 6px 1px 2px; margin: 1px 2px 1px 0; border: 1px solid rgba(var(--line-rgb),.7); background: rgba(var(--bg-rgb),.45); font-family: var(--font-mono); font-size: 11px; color: var(--text); vertical-align: middle; white-space: nowrap; }
.cg img { width: 22px; height: 22px; object-fit: contain; }
.cg b { font-weight: 500; }
.cg-list { display: inline-flex; flex-wrap: wrap; gap: 2px; }
.cg-lg img { width: 36px; height: 36px; }
.cg small { color: var(--text-mute); font-size: 9px; margin-left: 2px; }
.pw-wallet-row { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 14px 12px; }
.pw-wallet-row .cg { padding: 4px 10px 4px 4px; font-size: 13px; }

/* ---- in-place editor (bwInlineEdit) ---- */
.bw-inline { display: inline-flex; align-items: stretch; gap: 0; vertical-align: middle; max-width: 100%; }
.bw-inline-input { height: 24px; padding: 1px 6px; font: 500 12px var(--font-mono); color: var(--bright); background: rgba(var(--bg-rgb),.7); border: 1px solid var(--glow); border-right: 0; outline: none; box-shadow: 0 0 8px var(--glow-faint); min-width: 90px; }
.bw-inline button { height: 24px; width: 26px; padding: 0; border: 1px solid var(--glow); background: rgba(var(--glow-rgb),.12); color: var(--glow); cursor: pointer; font-size: 11px; line-height: 22px; }
.bw-inline button + button { border-left: 0; }
.bw-inline-ok:hover { background: rgba(63,224,143,.25); color: var(--success, #3fe08f); }
.bw-inline-no:hover { background: rgba(255,75,92,.25); color: var(--danger, #ff4b5c); }
.bw-inline.busy { opacity: .6; pointer-events: none; }
