*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#05080f;
  --s1:#0c1220;--s2:#111b2e;--s3:#162238;
  --b1:#1a2e4a;--b2:#243d60;--b3:#2d5080;
  --blue:#2a6ef5;--blue2:#4d8bf7;--blue3:rgba(42,110,245,0.15);
  --cyan:#00c6d4;--cyan2:rgba(0,198,212,0.12);
  --emerald:#00c896;--em2:rgba(0,200,150,0.12);
  --amber:#f0a030;--am2:rgba(240,160,48,0.12);
  --rose:#f04560;--rose2:rgba(240,69,96,0.12);
  --indigo:#7c6ff7;--in2:rgba(124,111,247,0.12);
  --text:#f0f4ff;--text2:#b8ccee;--text3:#7a96b8;
  --r:8px;--rl:12px;--rxl:16px;--r2xl:22px;
  --ff:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --fh:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --fm:ui-monospace,'SF Mono','Cascadia Code',Consolas,'Courier New',monospace;
  --sh:0 8px 40px rgba(0,0,0,0.55);
  --shb:0 0 28px rgba(42,110,245,0.25);
  --tr:all 0.18s cubic-bezier(0.4,0,0.2,1);
  --topbar1-h:60px;
  --topbar2-h:48px;
}
[data-theme="light"]{
  --bg:#f0f4fa;
  --s1:#ffffff;--s2:#f5f7fc;--s3:#eaf0fb;
  --b1:#cdd8ee;--b2:#b0c2e0;--b3:#93aed5;
  --blue:#2a6ef5;--blue2:#1a5ae0;--blue3:rgba(42,110,245,0.10);
  --cyan:#007b87;--cyan2:rgba(0,123,135,0.10);
  --emerald:#00875a;--em2:rgba(0,135,90,0.10);
  --amber:#b06a00;--am2:rgba(176,106,0,0.10);
  --rose:#d01030;--rose2:rgba(208,16,48,0.10);
  --indigo:#5b4dd4;--in2:rgba(91,77,212,0.10);
  --text:#0f1a2e;--text2:#253d5e;--text3:#5570a0;
  --sh:0 4px 24px rgba(0,0,0,0.12);
  --shb:0 0 20px rgba(42,110,245,0.15);
}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--ff);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}

/* scrollbar */
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--b2);border-radius:2px}
::-webkit-scrollbar-thumb:hover{background:var(--blue)}

/* layout */
.app-shell{display:flex;flex:1;overflow:hidden;min-height:0}
.main{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0}
.main>.pg{flex:1;min-height:0;overflow-y:auto}
.main>#pg-chat{overflow:hidden;width:100%;max-width:none;margin:0;padding:20px 28px}
.pg{padding:28px 32px}
@media(max-width:768px){.pg{padding:16px}}

/* ── TOPBAR ─────────────────────────────────────────────────────── */
/* Both topbar lines are sticky and stack at the top                 */
.topbar{
  width:100%;
  background:rgba(11,18,32,0.97);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--b1);
  display:flex;
  align-items:center;
  padding:0 20px;
  gap:10px;
  position:sticky;
  top:0;
  z-index:200;
  flex-shrink:0;
}
[data-theme="light"] .topbar{background:rgba(255,255,255,0.97)}

.topbar-line1{
  height:var(--topbar1-h);
  z-index:300;
}
.topbar-line2{
  height:var(--topbar2-h);
  border-top:none;
  z-index:200;
  background:rgba(8,14,28,0.98);
  border-bottom:1px solid var(--b1);
}
[data-theme="light"] .topbar-line2{background:rgba(245,247,252,0.98)}

/* The app shell offset — when line2 is visible the content area must
   account for both bars. We use sticky positioning on both bars so
   the page scrolls under them naturally; no extra offset needed.    */

.tbar-logo{cursor:pointer;display:flex;align-items:center;gap:12px;transition:var(--tr);flex-shrink:0}
.tbar-logo:hover{opacity:0.85}
.tbar-logo img{height:34px;width:auto;object-fit:contain}
.tbar-logo-secondary{height:30px !important;padding-left:12px;border-left:1px solid var(--b2)}
.tbar-div{width:1px;height:26px;background:var(--b2);margin:0 4px;flex-shrink:0}
.tbar-space{flex:1}

/* tenant badge in topbar */
.tbar-tenant-wrap{display:flex;align-items:center;gap:6px;cursor:pointer;padding:4px 10px;border-radius:20px;border:1px solid rgba(42,110,245,0.3);background:var(--blue3);transition:var(--tr)}
.tbar-tenant-wrap:hover{border-color:rgba(42,110,245,0.6);background:rgba(42,110,245,0.22)}
.tbar-tenant-wrap .t-label{font-size:10px;font-weight:700;letter-spacing:0.07em;text-transform:capitalize;color:var(--text3);font-family:var(--fh)}
.tbar-tenant-wrap .t-val{font-size:12px;font-weight:700;color:var(--blue2);font-family:var(--fh)}
.tbar-tenant-wrap .t-caret{font-size:9px;color:var(--text3)}

/* role badge */
.role-badge{padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;font-family:var(--fh);letter-spacing:0.03em;flex-shrink:0}
.role-3{background:rgba(240,69,96,0.15);border:1px solid rgba(240,69,96,0.4);color:var(--rose)}
.role-2{background:rgba(240,160,48,0.15);border:1px solid rgba(240,160,48,0.4);color:var(--amber)}
.role-1{background:var(--in2);border:1px solid rgba(124,111,247,0.4);color:var(--indigo)}
.role-0{background:var(--em2);border:1px solid rgba(0,200,150,0.4);color:var(--emerald)}

/* user chip */
.tbar-user{display:flex;align-items:center;gap:7px;cursor:pointer;padding:3px 10px 3px 4px;border-radius:20px;border:1px solid transparent;transition:var(--tr);flex-shrink:0}
.tbar-user:hover{border-color:var(--b2);background:var(--s2)}
.avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--indigo));display:flex;align-items:center;justify-content:center;font-weight:800;font-size:11px;color:#fff;box-shadow:0 0 12px rgba(42,110,245,0.4);font-family:var(--fh);flex-shrink:0}
.tbar-user .u-name{font-size:12px;color:var(--text2);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline!important}

.icon-btn{width:32px;height:32px;border:1px solid var(--b1);background:transparent;color:var(--text2);border-radius:var(--r);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--tr);font-size:14px;flex-shrink:0}
.icon-btn:hover{background:var(--s2);color:var(--text);border-color:var(--b2)}

/* theme picker */
.theme-picker{position:relative;display:flex;align-items:center}
.theme-btn{width:32px;height:32px;border:1px solid var(--b1);background:transparent;color:var(--text2);border-radius:var(--r);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--tr);font-size:15px}
.theme-btn:hover{background:var(--s2);color:var(--text);border-color:var(--b2)}
.theme-picker-menu{position:absolute;top:calc(100% + 6px);right:0;background:var(--s1);border:1px solid var(--b2);border-radius:var(--r);box-shadow:var(--sh);display:none;flex-direction:column;min-width:120px;z-index:600;overflow:hidden}
.theme-picker-menu.open{display:flex}
.theme-picker-opt{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:13px;cursor:pointer;color:var(--text2);transition:var(--tr);white-space:nowrap;border:none;background:transparent;width:100%;text-align:left;font-family:var(--ff)}
.theme-picker-opt:hover{background:var(--s2);color:var(--text)}
.theme-picker-opt.active{color:var(--blue2);background:var(--blue3)}

/* ── SIDEBAR NAV ─────────────────────────────────────────────────── */
.sidebar{width:230px;flex-shrink:0;background:rgba(11,18,32,0.7);border-right:1px solid var(--b1);overflow:hidden;padding:0;display:flex;flex-direction:column;gap:0;min-height:0;transition:width .18s ease}
.sidebar-scroll{flex:1;min-height:0;overflow-y:auto;padding:16px 0;display:flex;flex-direction:column;gap:0}
.sidebar-footer{flex-shrink:0}
[data-theme="light"] .sidebar{background:var(--s1)}
.nav-group{margin-bottom:4px}
.nav-group-label{font-size:10px;font-weight:700;letter-spacing:0.1em;text-transform:capitalize;color:var(--text3);padding:10px 18px 5px;font-family:var(--fh);display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;transition:var(--tr)}
.nav-group-label:hover{color:var(--text)}
.nav-group-label::after{content:'';flex:1;height:1px;background:var(--b1)}
/* Parent-level collapse — same mechanism toggleNavGroup() already uses for
   subgroups, just applied one level up (Gateway/Agent themselves). Hides
   every direct child (a top-level nav-item like Dashboard, or a whole
   nav-subgroup) without touching that subgroup's own independent
   collapsed state, so re-expanding the parent restores exactly what was
   showing before. */
.nav-group.collapsed > .nav-item,
.nav-group.collapsed > .nav-subgroup{display:none}
.nav-group.collapsed > .nav-group-label .nsg-chevron{transform:rotate(-90deg)}
.nav-item{display:flex;align-items:center;gap:9px;padding:8px 16px 8px 20px;font-size:13px;font-weight:600;color:var(--text2);cursor:pointer;transition:var(--tr);border-left:2px solid transparent;font-family:var(--fh);position:relative}
.nav-item:hover{color:var(--text);background:rgba(42,110,245,0.09);border-left-color:var(--b2)}
.nav-item.active{color:var(--blue2);background:var(--blue3);border-left-color:var(--blue)}
[data-theme="light"] .nav-item{color:var(--text)}
[data-theme="light"] .nav-item:hover{color:var(--blue2);background:rgba(42,110,245,0.09)}
[data-theme="light"] .nav-group-label{color:var(--text2)}
.nav-item .ni-icon{font-size:15px;width:18px;text-align:center;flex-shrink:0}
.nav-item .ni-label{flex:1}
.nav-spacer{flex:1}

/* Subgroups — clearly visible, clickable, collapsible headers */
.nav-subgroup{margin:6px 10px;border-radius:8px;background:rgba(255,255,255,0.03);border:1px solid var(--b1)}
[data-theme="light"] .nav-subgroup{background:rgba(0,0,0,0.025)}
.nav-subgroup-label{font-size:11.5px;font-weight:700;letter-spacing:0.03em;text-transform:none;color:var(--text2);padding:9px 12px;opacity:1;cursor:pointer;display:flex;align-items:center;gap:7px;user-select:none;border-radius:8px 8px 0 0;transition:var(--tr)}
.nav-subgroup-label:hover{background:rgba(42,110,245,0.09);color:var(--text)}
[data-theme="light"] .nav-subgroup-label{color:var(--text)}
.nsg-chevron{font-size:11px;display:inline-block;transition:transform .15s ease;flex-shrink:0;color:var(--text3)}
.nav-subgroup .nav-item{padding-left:26px}
.nav-subgroup.collapsed .nav-subgroup-label{border-radius:8px}
.nav-subgroup.collapsed .nav-subgroup-label .nsg-chevron{transform:rotate(-90deg)}
.nav-subgroup.collapsed .nav-item{display:none}
.nav-subgroup .nav-item:last-child{border-radius:0 0 8px 8px}

/* Whole-sidebar collapse (icon rail) */
.sidebar-collapse-toggle{display:flex;align-items:center;justify-content:space-between;padding:10px 16px 4px;cursor:pointer;color:var(--text3);font-size:14px;flex-shrink:0}
.sidebar-collapse-toggle:hover{color:var(--text)}
.sct-label{font-size:11.5px;font-weight:700;letter-spacing:0.05em;text-transform:uppercase;color:var(--text2)}
.sidebar.collapsed{width:60px}
.sidebar.collapsed .sidebar-collapse-toggle{justify-content:center}
.sidebar.collapsed .nav-group-label,
.sidebar.collapsed .nav-group-label::after,
.sidebar.collapsed .nav-subgroup-label,
.sidebar.collapsed .sct-label,
.sidebar.collapsed .ni-label{display:none}
.sidebar.collapsed .nav-subgroup{margin:4px 6px;background:transparent;border:none}
.sidebar.collapsed .nav-subgroup .nav-item,
.sidebar.collapsed .nav-item{padding:9px 0;justify-content:center;border-left:none}
.sidebar.collapsed .nav-subgroup.collapsed .nav-item{display:flex}
/* Icon rail ignores manual collapse state entirely (group or subgroup) -
   always show every icon for quick access when the sidebar itself is
   minimized. */
.sidebar.collapsed .nav-group.collapsed > .nav-item,
.sidebar.collapsed .nav-group.collapsed > .nav-subgroup{display:block}
.sidebar.collapsed .nav-group.collapsed > .nav-subgroup .nav-item{display:flex}
.sidebar.collapsed .nav-item .ni-icon{width:auto;font-size:17px}
.sidebar.collapsed .sidebar-footer{padding:8px 6px}
.sidebar.collapsed .sidebar-footer .btn span:not(.btn-icon){display:none}
.sidebar.collapsed .sidebar-footer > div:last-child{display:none}

/* ── PAGE HEADER ─────────────────────────────────────────────────── */
.ph{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:26px;gap:14px;flex-wrap:wrap}
.ph-left{display:flex;flex-direction:column;gap:3px}
.ph-title{font-size:22px;font-weight:800;color:var(--text);display:flex;align-items:center;gap:9px;font-family:var(--fh);letter-spacing:-0.01em}
.ph-sub{font-size:12px;color:var(--text3)}
.ph-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* ── BUTTONS ─────────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;border-radius:var(--r);font-size:13px;font-weight:700;cursor:pointer;border:1px solid transparent;transition:var(--tr);white-space:nowrap;font-family:var(--fh);letter-spacing:0.01em}
.btn:disabled{opacity:0.4;cursor:not-allowed}
.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:0 2px 14px rgba(42,110,245,0.35)}
.btn-primary:hover:not(:disabled){background:var(--blue2);box-shadow:0 4px 22px rgba(42,110,245,0.55)}
.btn-cyan{background:var(--cyan);color:#05080f;border-color:var(--cyan);font-weight:800}
.btn-cyan:hover:not(:disabled){filter:brightness(1.12)}
.btn-sec{background:var(--s2);color:var(--text);border-color:var(--b2)}
.btn-sec:hover:not(:disabled){background:var(--s3);border-color:var(--blue)}
.btn-danger{background:var(--rose2);color:var(--rose);border-color:rgba(240,69,96,0.3)}
.btn-danger:hover:not(:disabled){background:var(--rose);color:#fff}
.btn-warning{background:var(--am2);color:var(--amber);border-color:rgba(240,160,48,0.3)}
.btn-warning:hover:not(:disabled){background:var(--amber);color:#05080f}
.btn-success{background:var(--em2);color:var(--emerald);border-color:rgba(0,200,150,0.3)}
.btn-success:hover:not(:disabled){background:var(--emerald);color:#05080f}
.btn-ghost{background:transparent;color:var(--text2);border-color:transparent;padding:6px 10px}
.btn-ghost:hover:not(:disabled){background:var(--s2);color:var(--text)}
.btn-sm{padding:6px 12px;font-size:12px}
.btn-xs{padding:4px 9px;font-size:11px}

/* ── CARDS ───────────────────────────────────────────────────────── */
.card{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rl);overflow:hidden}
.card-head{padding:15px 20px;border-bottom:1px solid var(--b1);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.card-title{font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:7px;font-family:var(--fh)}

/* stat cards */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:24px}
.stat-card{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rl);padding:20px;position:relative;overflow:hidden}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--blue),var(--cyan));opacity:0.6}
.stat-card-link{cursor:pointer;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}
.stat-card-link:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,0.12)}
.stat-card-link:active{transform:translateY(0)}
.stat-card-alltime{background:var(--in2);border-color:var(--indigo)}
.stat-card-alltime::before{background:var(--indigo);opacity:0.9}
.stat-card-alltime .sc-label{color:var(--indigo)}
.sc-label{font-size:11px;font-weight:700;letter-spacing:0.06em;text-transform:capitalize;color:var(--text3);margin-bottom:8px;font-family:var(--fh)}
.sc-value{font-size:26px;font-weight:800;color:var(--text);font-family:var(--fh)}
.sc-sub{font-size:11px;color:var(--text3);margin-top:4px}
.sc-icon{position:absolute;right:16px;top:16px;font-size:28px;opacity:0.18}

/* ── CALL LOG ANALYTICS ──────────────────────────────────────────── */
.sc-delta{position:absolute;top:16px;right:16px;font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;letter-spacing:0.02em}
.sc-delta.up{color:#16a34a;background:rgba(22,163,74,0.12)}
.sc-delta.down{color:#dc2626;background:rgba(220,38,38,0.12)}
.stat-card .sc-icon{opacity:0.16}

.cl-seg{display:inline-flex;background:var(--s2);border:1px solid var(--b1);border-radius:var(--r);padding:2px;gap:2px;flex-wrap:wrap}
.cl-seg button{background:transparent;border:none;color:var(--text2);font-size:12px;font-weight:600;padding:6px 14px;border-radius:6px;cursor:pointer;transition:var(--tr);white-space:nowrap}
.cl-seg button:hover{color:var(--text)}
.cl-seg button.active{background:var(--blue);color:#fff}

/* ── DASHBOARD MAIN TABS ─────────────────────────────────────────── */
.dash-tabs{display:flex;gap:0;border-bottom:2px solid var(--b1);margin-bottom:22px}
.dash-tab{background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;padding:10px 22px;font-size:14px;font-weight:700;font-family:var(--fh);color:var(--text3);cursor:pointer;transition:var(--tr);display:flex;align-items:center;gap:7px;white-space:nowrap}
.dash-tab:hover{color:var(--text2)}
.dash-tab.active{color:var(--blue2);border-bottom-color:var(--blue)}

.dash-panel{animation:fadeIn .15s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ── DASHBOARD SUB-TABS ──────────────────────────────────────────── */
.dash-sub-tabs{display:flex;gap:4px;margin-bottom:18px;flex-wrap:wrap}
.dash-sub-tab{background:var(--s2);border:1px solid var(--b1);border-radius:var(--r);padding:7px 18px;font-size:12px;font-weight:600;color:var(--text2);cursor:pointer;transition:var(--tr);display:flex;align-items:center;gap:6px;white-space:nowrap}
.dash-sub-tab:hover{border-color:var(--b2);color:var(--text)}
.dash-sub-tab.active{background:var(--blue3);border-color:var(--blue);color:var(--blue2)}

.dash-sub-panel{animation:fadeIn .12s ease}

/* ── CALL ACTIVITY TOOLBAR ───────────────────────────────────────── */
.cl-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.cl-toolbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* ── SESSIONS PLACEHOLDER ────────────────────────────────────────── */
.dash-coming-soon{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px;text-align:center;gap:12px}
.dcs-icon{font-size:48px;opacity:0.25}
.dcs-title{font-size:18px;font-weight:700;font-family:var(--fh);color:var(--text2)}
.dcs-sub{font-size:13px;color:var(--text3);max-width:420px;line-height:1.7}

.cl-chart{display:flex;align-items:flex-end;gap:3px;height:180px;padding:8px 4px 0;border-bottom:1px solid var(--b1)}
.cl-bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:3px}
.cl-bar-stack{width:100%;max-width:22px;height:100%;display:flex;flex-direction:column-reverse;align-items:stretch;border-radius:3px 3px 0 0;overflow:hidden;background:var(--s2)}
.cl-bar-group{width:100%;max-width:26px;height:100%;display:flex;align-items:flex-end;gap:2px}
.cl-bar-mini{flex:1;height:100%;display:flex;flex-direction:column-reverse;align-items:stretch;border-radius:2px 2px 0 0;overflow:hidden;background:var(--s2)}
.cl-bar-fill{width:100%;min-height:0;transition:height .25s}
.cl-bar-label{font-size:9px;color:var(--text3);margin-top:6px;white-space:nowrap;writing-mode:vertical-rl;text-orientation:mixed;height:46px}
.cl-chart-empty,.cl-chart-loading{padding:50px 0;text-align:center;font-size:12px;color:var(--text3)}

.cl-legend{display:flex;gap:14px;font-size:11px;color:var(--text3)}
.cl-leg-item{display:inline-flex;align-items:center;gap:5px}

.cl-dot{width:9px;height:9px;border-radius:50%;display:inline-block}

.cl-share{display:inline-block;width:60px;height:6px;border-radius:3px;background:var(--s2);overflow:hidden;vertical-align:middle;margin-right:6px}
.cl-share-fill{height:100%;background:linear-gradient(90deg,var(--blue),var(--cyan))}

.cl-hbars{display:flex;flex-direction:column;gap:10px;padding:6px 0}
.cl-hbar-row{display:flex;align-items:center;gap:10px}
.cl-hbar-label{width:120px;flex-shrink:0;font-size:12px;color:var(--text2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-hbar-track{flex:1;display:flex;height:14px;border-radius:4px;background:var(--s2);overflow:hidden}
.cl-hbar-fill{height:100%;transition:width .25s}
.cl-hbar-value{width:60px;flex-shrink:0;text-align:right;font-size:12px;color:var(--text3);font-variant-numeric:tabular-nums}

/* ── TABLE ───────────────────────────────────────────────────────── */
.tbl-wrap{overflow-x:auto}
table,.tbl{width:100%;border-collapse:collapse}
thead tr{background:var(--s2)}
th{padding:10px 14px;text-align:left;font-size:10px;font-weight:700;letter-spacing:0.08em;text-transform:capitalize;color:var(--text3);white-space:nowrap;cursor:pointer;user-select:none;border-bottom:1px solid var(--b1);font-family:var(--fh)}
th:hover{color:var(--text2)}
th.srt{color:var(--blue2)}
td{padding:12px 14px;border-bottom:1px solid rgba(26,46,74,0.5);font-size:13px;color:var(--text);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:rgba(42,110,245,0.03)}
tr.del-row td{color:var(--text3);background:rgba(20,20,40,0.3)}
.sort-arr{display:inline-block;margin-left:4px;font-size:9px;opacity:0.35}
th.srt .sort-arr{opacity:1;color:var(--blue2)}
.row-act{display:flex;gap:5px;align-items:center}
.hide-id{display:none}
.show-ids .hide-id{display:table-cell}

/* ── FORMS ───────────────────────────────────────────────────────── */
.fg{margin-bottom:16px}
.flabel{display:block;font-size:11px;font-weight:700;color:var(--text2);margin-bottom:5px;letter-spacing:0.04em;font-family:var(--fh)}
.finput,.fselect,.ftextarea{width:100%;background:var(--s2);border:1px solid var(--b1);color:var(--text);border-radius:var(--r);padding:9px 12px;font-size:13px;font-family:var(--ff);transition:var(--tr);outline:none}
.finput:focus,.fselect:focus,.ftextarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(42,110,245,0.1)}
.finput::placeholder{color:var(--text3)}
.fselect option{background:var(--s2)}

.pw-field{position:relative}
.pw-field .finput{padding-right:36px}
.pw-toggle-btn{position:absolute;top:50%;right:4px;transform:translateY(-50%);width:26px;height:26px;border:none;background:transparent;color:var(--text3);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;border-radius:var(--r);opacity:0.7}
.pw-toggle-btn:hover{opacity:1;background:var(--s2);color:var(--text)}
.pw-toggle-btn.is-showing{color:var(--blue);opacity:1}
.ftextarea{resize:vertical;min-height:90px;line-height:1.5}
.fhint{font-size:11px;color:var(--text3);margin-top:4px;line-height:1.45}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:560px){.frow{grid-template-columns:1fr}}

/* toggle */
.tog-row{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--text2);cursor:pointer;user-select:none}
.tog{position:relative;width:36px;height:20px;flex-shrink:0}
.tog input{opacity:0;width:0;height:0;position:absolute}
.tog-track{position:absolute;inset:0;background:var(--s3);border-radius:10px;border:1px solid var(--b2);transition:var(--tr);cursor:pointer}
.tog input:checked+.tog-track{background:var(--blue);border-color:var(--blue)}
.tog-track::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;background:#fff;border-radius:50%;transition:var(--tr)}
.tog input:checked+.tog-track::after{transform:translateX(16px)}

/* ── BADGE ───────────────────────────────────────────────────────── */
.badge{display:inline-flex;align-items:center;gap:3px;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:700;font-family:var(--fh)}
.b-active{background:var(--em2);color:var(--emerald);border:1px solid rgba(0,200,150,0.25)}
.b-del{background:rgba(60,70,90,0.3);color:var(--text3);border:1px solid rgba(60,70,90,0.4)}
.b-cyan{background:var(--cyan2);color:var(--cyan);border:1px solid rgba(0,198,212,0.25)}
.b-amber{background:var(--am2);color:var(--amber);border:1px solid rgba(240,160,48,0.25)}
.b-indigo{background:var(--in2);color:var(--indigo);border:1px solid rgba(124,111,247,0.25)}
.b-rose{background:var(--rose2);color:var(--rose);border:1px solid rgba(240,69,96,0.25)}
.chip{background:var(--s2);border:1px solid var(--b1);border-radius:20px;padding:3px 10px;font-size:11px;color:var(--text2);display:inline-flex;align-items:center;gap:4px}

/* context toggle */
.ctx-tog{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;font-family:var(--fh);cursor:pointer;border:none;transition:var(--tr);white-space:nowrap}
.ctx-on{background:var(--in2);color:var(--indigo);border:1px solid rgba(124,111,247,0.35)}
.ctx-on:hover{background:rgba(124,111,247,0.25);border-color:var(--indigo)}
.ctx-off{background:var(--s2);color:var(--text3);border:1px solid var(--b2)}
.ctx-off:hover{background:var(--s3);color:var(--text2);border-color:var(--b2)}

/* ── MODAL ───────────────────────────────────────────────────────── */
.mo{position:fixed;inset:0;background:rgba(0,0,0,0.78);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;opacity:0;pointer-events:none;transition:opacity 0.2s}
.mo.open{opacity:1;pointer-events:all}
.mo-box{background:var(--s1);border:1px solid var(--b2);border-radius:var(--r2xl);width:100%;max-width:600px;max-height:91vh;display:flex;flex-direction:column;box-shadow:var(--sh),var(--shb);transform:translateY(10px) scale(0.975);transition:transform 0.25s cubic-bezier(0.34,1.56,0.64,1)}
.mo-box.mo-lg{max-width:820px}
.mo.open .mo-box{transform:translateY(0) scale(1)}
.mo-head{padding:22px 26px 16px;border-bottom:1px solid var(--b1);display:flex;align-items:center;justify-content:space-between}
.mo-title{font-size:16px;font-weight:800;color:var(--text);display:flex;align-items:center;gap:9px;font-family:var(--fh)}
.mo-close{width:28px;height:28px;border:none;background:var(--s2);color:var(--text2);border-radius:6px;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;transition:var(--tr)}
.mo-close:hover{background:var(--rose);color:#fff}
.mo-body{padding:24px 26px;overflow-y:auto;flex:1}
.mo-foot{padding:16px 26px;border-top:1px solid var(--b1);display:flex;gap:10px;justify-content:flex-end}

/* ── TOAST ───────────────────────────────────────────────────────── */
#tc{position:fixed;top:72px;right:20px;z-index:2000;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:var(--s1);border:1px solid var(--b2);border-radius:var(--r);padding:12px 16px;display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text);min-width:270px;max-width:400px;box-shadow:var(--sh);pointer-events:all;animation:tIn 0.3s cubic-bezier(0.34,1.56,0.64,1);border-left:3px solid var(--blue)}
.toast.ts{border-left-color:var(--emerald)}
.toast.te{border-left-color:var(--rose)}
.toast.tw{border-left-color:var(--amber)}
@keyframes tIn{from{transform:translateX(110%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes tOut{from{opacity:1}to{opacity:0;transform:translateX(30px)}}
.toast.fade{animation:tOut 0.25s ease forwards}

/* notification bell */
.notif-btn{position:relative}
.notif-badge{position:absolute;top:-4px;right:-4px;background:var(--rose);color:#fff;font-size:9px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:none;align-items:center;justify-content:center;padding:0 3px;line-height:1}
.notif-badge.show{display:flex}
.notif-panel{position:fixed;top:68px;right:12px;width:380px;max-height:480px;background:var(--s1);border:1px solid var(--b2);border-radius:var(--r);box-shadow:var(--sh);z-index:600;display:none;flex-direction:column;overflow:hidden}
.notif-panel.open{display:flex}
.notif-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--b1);font-size:13px;font-weight:600;color:var(--text)}
.notif-list{overflow-y:auto;flex:1;max-height:380px}
.notif-item{display:flex;align-items:flex-start;gap:10px;padding:10px 16px;border-bottom:1px solid var(--b1);font-size:12px;color:var(--text2)}
.notif-item:last-child{border-bottom:none}
.ni-icon{font-size:14px;flex-shrink:0;margin-top:1px}
.ni-body{flex:1}
.ni-msg{color:var(--text);margin-bottom:2px}
.ni-time{color:var(--text3);font-size:11px}
.ni-error .ni-icon{color:var(--rose)}
.ni-success .ni-icon{color:var(--emerald)}
.ni-warning .ni-icon{color:var(--amber)}
.notif-empty{padding:28px;text-align:center;color:var(--text3);font-size:12px}

/* ── PAGINATION ──────────────────────────────────────────────────── */
.pag{display:flex;align-items:center;gap:5px;padding:13px 18px;border-top:1px solid var(--b1);flex-wrap:wrap}
.pb{min-width:30px;height:30px;border:1px solid var(--b1);background:var(--s2);color:var(--text2);border-radius:6px;cursor:pointer;font-size:12px;font-weight:600;transition:var(--tr);display:flex;align-items:center;justify-content:center;padding:0 7px;font-family:var(--fh)}
.pb:hover{border-color:var(--blue);color:var(--blue2)}
.pb.on{background:var(--blue);color:#fff;border-color:var(--blue)}
.pb:disabled{opacity:0.3;cursor:not-allowed}
.pi{font-size:11px;color:var(--text3);margin-left:6px}

/* ── UPLOAD ZONE ─────────────────────────────────────────────────── */
.upload-zone{border:2px dashed var(--b2);border-radius:var(--rl);padding:32px 20px;text-align:center;transition:var(--tr);cursor:pointer;background:var(--s2)}
.upload-zone:hover,.upload-zone.dov{border-color:var(--blue);background:rgba(42,110,245,0.06);box-shadow:0 0 0 4px rgba(42,110,245,0.07)}
.uz-icon{font-size:38px;margin-bottom:9px;opacity:0.45}
.uz-text{font-size:13px;color:var(--text2);font-weight:600;margin-bottom:3px;font-family:var(--fh)}
.uz-hint{font-size:11px;color:var(--text3)}
.f-pill{background:var(--s3);border:1px solid var(--b2);border-radius:20px;padding:5px 12px 5px 9px;font-size:12px;color:var(--text2);display:inline-flex;align-items:center;gap:6px;margin-top:10px}
.f-pill-rm{cursor:pointer;color:var(--text3);line-height:1;margin-left:2px;font-size:15px}
.f-pill-rm:hover{color:var(--rose)}

/* ── EMPTY STATE ─────────────────────────────────────────────────── */
.empty{text-align:center;padding:52px 20px}
.ei{font-size:44px;margin-bottom:12px;opacity:0.28}
.empty h3{font-size:15px;font-weight:700;color:var(--text2);margin-bottom:5px;font-family:var(--fh)}
.empty p{font-size:12px;color:var(--text3)}

/* ── SPINNER ─────────────────────────────────────────────────────── */
.sp{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,0.12);border-top-color:currentColor;border-radius:50%;animation:spin 0.55s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
.ld-row td{padding:44px!important;text-align:center;color:var(--text3)}

/* ── UTILITIES ───────────────────────────────────────────────────── */
.hid{display:none!important}
.mono{font-family:var(--fm)}
.muted{color:var(--text3)}
.sm{font-size:12px}
.trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}
.w100{width:100%}
.mt3{margin-top:12px}
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sl{font-size:10px;font-weight:800;letter-spacing:0.1em;text-transform:capitalize;color:var(--text3);margin-bottom:12px;font-family:var(--fh)}

/* ── LOGIN PAGE ──────────────────────────────────────────────────── */
#lp{min-height:100vh;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;position:relative;overflow:hidden}
#lp::before{content:'';position:absolute;width:800px;height:800px;background:radial-gradient(circle,rgba(42,110,245,0.09) 0%,transparent 65%);top:-250px;right:-250px;pointer-events:none}
#lp::after{content:'';position:absolute;width:500px;height:500px;background:radial-gradient(circle,rgba(0,198,212,0.06) 0%,transparent 65%);bottom:-80px;left:-80px;pointer-events:none}
.lc{background:var(--s1);border:1px solid var(--b2);border-radius:var(--r2xl);padding:48px;width:100%;max-width:440px;box-shadow:var(--sh),var(--shb);position:relative;z-index:1}
.l-logo{display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:36px}
.l-logo img{width:100%;max-width:220px;height:auto;object-fit:contain}
.l-head{text-align:center;margin-bottom:30px}
.l-head h1{font-size:23px;font-weight:800;color:var(--text);margin-bottom:4px;font-family:var(--fh);letter-spacing:-0.02em}
.l-head p{font-size:13px;color:var(--text3)}
.sth{display:none}
.otp-notice{background:rgba(0,200,150,0.08);border:1px solid rgba(0,200,150,0.2);border-radius:var(--r);padding:12px 14px;margin-bottom:16px;font-size:13px;color:var(--emerald);font-weight:600}
.login-err{background:rgba(240,69,96,0.08);border:1px solid rgba(240,69,96,0.25);border-radius:var(--r);padding:12px 14px;margin-bottom:16px;font-size:13px;color:var(--rose);display:none}
.login-err.show{display:block}

/* Login page: tab bar + OAuth icon grid (added for multi-method login) */
#login-tab-bar{margin:16px 0 18px;justify-content:center}
#login-tenant-wrap{margin-bottom:14px}
#login-tenant-dd{width:100%;min-width:0}
.oauth-grid{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:6px}
.oauth-btn{width:48px;height:48px;border-radius:var(--r);border:1px solid var(--b1);background:var(--s2);
  display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--tr)}
.oauth-btn:hover{border-color:var(--blue2);background:var(--s3,var(--s2));transform:translateY(-1px)}
.oauth-btn-wide{width:auto;height:48px;padding:0 14px;gap:7px}
.oauth-btn-label{font-size:12px;font-weight:600;font-family:var(--fh);letter-spacing:0.02em;color:var(--text2)}

/* ── TENANT SELECTOR DROPDOWN ───────────────────────────────────── */
.tenant-dd{position:absolute;top:calc(100% + 6px);left:0;background:var(--s1);border:1px solid var(--b2);border-radius:var(--r);box-shadow:var(--sh);min-width:240px;z-index:600;overflow:hidden;display:none;flex-direction:column;max-height:320px;overflow-y:auto}
.tenant-dd.open{display:flex}
.tenant-dd-item{padding:10px 14px;font-size:13px;cursor:pointer;color:var(--text2);transition:var(--tr);border-bottom:1px solid var(--b1);display:flex;align-items:center;gap:8px}
.tenant-dd-item:last-child{border-bottom:none}
.tenant-dd-item:hover{background:var(--s2);color:var(--text)}
.tenant-dd-item.active{color:var(--blue2);background:var(--blue3)}

/* ── FULL-PAGE APPLICATION EDIT ─────────────────────────────────── */
.app-edit-section{background:var(--s1);border:1px solid var(--b1);border-radius:var(--rl);padding:24px;margin-bottom:18px}

/* ── Application edit tabs ──────────────────────────────────────────── */
.app-tab-bar{display:flex;gap:0;border-bottom:2px solid var(--b1);margin-bottom:0;flex-wrap:wrap}
.app-tab-btn{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;padding:9px 20px;font-size:12px;font-weight:600;font-family:var(--fh);color:var(--text3);cursor:pointer;transition:var(--tr);letter-spacing:.02em;white-space:nowrap}
.app-tab-btn:hover{color:var(--text);background:var(--s2)}
.app-tab-btn-active{color:var(--blue2)!important;border-bottom-color:var(--blue2)!important;background:none!important}
.app-tab-panel{border-top:none;border-radius:0 0 var(--rl) var(--rl);margin-bottom:0}
.app-tab-bar+.app-tab-panel{margin-top:0}
.app-edit-bar{position:sticky;bottom:0;z-index:10;background:var(--s1);border-top:1px solid var(--b1);padding:14px 0;display:flex;align-items:center;gap:12px;margin-top:8px}

/* ── CHAT PAGE ───────────────────────────────────────────────────── */
.chat-input-bar{display:flex;align-items:stretch;gap:10px;border-top:1px solid var(--b1);padding-top:14px;margin-top:auto}
.chat-input-bar textarea{flex:1;resize:none;min-height:52px;max-height:120px}
.chat-exec-stack{display:flex;flex-direction:column;gap:6px;flex-shrink:0;width:120px}
.chat-exec-stack .btn{flex:1;justify-content:center;font-size:12px;min-height:0}
.chat-execute-btn{font-size:13px}

.faq-panel{
  position:absolute;top:0;right:0;height:100%;width:320px;max-width:85%;
  display:flex;flex-direction:column;
  background:var(--s1);border-left:1px solid var(--b1);
  box-shadow:-6px 0 18px rgba(0,0,0,.14);
  transform:translateX(100%);transition:transform .22s ease;
  z-index:20;
}
.faq-panel.open{transform:translateX(0)}
.faq-panel-head{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:12px 14px;border-bottom:1px solid var(--b1)}
.faq-panel-title{font-size:14px;font-weight:600}
.faq-panel-close{background:none;border:none;font-size:20px;line-height:1;color:var(--text3);cursor:pointer;padding:2px 4px}
.faq-panel-close:hover{color:var(--text)}
.faq-panel-body{flex:1;min-height:0;overflow-y:auto;padding:14px}

.faq-options{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.faq-opt-btn{justify-content:flex-start;text-align:left;white-space:normal;line-height:1.4}

/* ── CHAT BLOCK ──────────────────────────────────────────────────── */
.chat-block{margin-bottom:14px;padding:12px 14px;background:var(--s2);border:1px solid var(--b1);border-radius:var(--rl)}
.chat-q{font-size:13px;color:var(--text);margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--b1)}
.chat-response-area{font-size:13px;color:var(--text2);line-height:1.6}

/* ── CHAT FEEDBACK ROW (3 columns: usage/reqid, rating, comment) ──── */
/* Two lines tall overall: each column pairs a label with its control on one
   line, with only the rating's gradient bar as a thin second line. */
.chat-feedback-row{display:flex;gap:18px;margin-top:10px;padding-top:10px;border-top:1px solid var(--b1);flex-wrap:wrap;align-items:flex-start}
.chat-feedback-col{min-width:0}
.chat-feedback-col-usage{flex:0 0 25%}
.chat-feedback-col-rating{flex:0 0 auto}
.chat-feedback-col-comment{flex:1 1 auto;display:flex;gap:8px;align-items:flex-start}
.chat-feedback-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:0.04em;white-space:nowrap;flex-shrink:0}

.chat-rating{display:flex;align-items:center;gap:8px}
/* Sized to its own content (the emoji row), not stretched — so the gradient bar below,
   at 100% of THIS width, ends exactly where the icons end instead of trailing off under
   empty column space. */
.chat-rating-widget{flex:0 0 auto}
.chat-rating-emojis{display:flex;gap:4px}
.chat-rating-emoji{cursor:pointer;font-size:16px;line-height:1;padding:2px;border-radius:50%;border:2px solid transparent;opacity:0.55;transition:var(--tr);user-select:none}
.chat-rating-emoji:hover{opacity:0.85;transform:scale(1.1)}
.chat-rating-emoji.is-default{opacity:0.85;border-color:var(--b2);border-style:dashed}
.chat-rating-emoji.is-selected{opacity:1;border-color:var(--blue);border-style:solid;transform:scale(1.18);box-shadow:0 0 0 3px var(--blue3)}
.chat-rating-bar{height:4px;border-radius:2px;margin-top:4px;background:linear-gradient(90deg,#e6394a 0%,#f0a030 25%,#e8d33c 50%,#8bc34a 75%,#00c896 100%)}

.chat-feedback-comment{flex:1;min-width:0;resize:none;font-family:var(--ff);font-size:12px;padding:6px 8px;border-radius:var(--r);border:1px solid var(--b2);background:var(--s1);color:var(--text)}
.chat-feedback-comment:focus{outline:none;border-color:var(--blue)}
.chat-feedback-submit{flex-shrink:0;align-self:stretch}
.chat-feedback-thanks{font-size:11px;color:var(--emerald);align-self:center}

@media(max-width:640px){
  .chat-feedback-row{flex-direction:column;gap:12px}
  .chat-feedback-col-usage,.chat-feedback-col-rating,.chat-feedback-col-comment{flex:1 1 auto}
}
.chat-response-area .chat-text{white-space:normal}
.chat-text{white-space:pre-wrap;margin:6px 0}
.chat-image{max-width:280px;border-radius:8px;margin:8px 0;border:1px solid var(--b1);cursor:pointer}

/* ── STATUS INLINE (replaces status panel) ───────────────────────── */
/* Status messages appear directly in the chat history as blue italics */
.chat-status-inline{
  font-size:12px;
  font-style:italic;
  color:var(--blue2);
  padding:3px 0 3px 4px;
  margin:2px 0;
  line-height:1.5;
  font-family:var(--fm);
  border-left:2px solid rgba(77,139,247,0.35);
  padding-left:8px;
}
.chat-status-ts{
  font-size:10px;
  color:var(--text3);
  margin-right:6px;
  opacity:0.7;
}

/* ── AGENT CHAT PAGE ─────────────────────────────────────────────── */
/* Default: fills the .main flex area naturally (sidebar users)       */
.pg-fullscreen{
  display:flex;
  flex-direction:column;
  flex:1;
  min-height:0;
  background:var(--bg);
  overflow:hidden;
}
.pg-fullscreen.hid{display:none!important}

/* When sidebar is hidden (TENANT_USER), go truly fullscreen fixed    */
body.agent-line2-visible .pg-fullscreen{
  position:fixed;
  top:calc(var(--topbar1-h) + var(--topbar2-h));
  left:0;right:0;bottom:0;
  z-index:10;
}

/* :has() version for modern browsers */
body:has(#agent-topbar-line2:not(.hid)) .pg-fullscreen{
  position:fixed;
  top:calc(var(--topbar1-h) + var(--topbar2-h));
  left:0;right:0;bottom:0;
  z-index:10;
}

.agent-chat-shell{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}
.agent-chat-history{flex:1;overflow-y:auto;padding:16px 20px;background:var(--s2);min-height:0}
.agent-chat-input-bar{display:flex;align-items:stretch;gap:10px;padding:12px 20px;border-top:1px solid var(--b1);background:var(--s1);flex-shrink:0}
.agent-chat-input-bar .input-actions{display:flex;flex-direction:column;gap:6px;justify-content:stretch;flex-shrink:0}
.agent-chat-input-bar .input-actions .btn{flex:1;justify-content:center;min-width:100px}

/* ═══════════════════════════════════════════════════════════════════
   MOBILE — everything below 768px
   ═══════════════════════════════════════════════════════════════════ */

/* ── TOPBAR: collapse email, compress controls ───────────────────── */
@media(max-width:768px){
  :root{
    --topbar1-h:54px;
  }

  .topbar{padding:0 12px;gap:6px}

  /* Logo a bit smaller */
  .tbar-logo img{height:26px}

  /* Hide divider */
  .tbar-div{display:none}

  /* Tenant badge: label hidden, show value only */
  .tbar-tenant-wrap .t-label{display:none}
  .tbar-tenant-wrap{padding:3px 8px;gap:4px}

  /* Role badge: hidden on mobile – redundant with user menu */
  .role-badge{display:none}

  /* Name: hidden – avatar is enough */
  .tbar-user .u-name{display:none!important}

  /* User chip compact */
  .tbar-user{padding:2px 4px;gap:0}

  /* Toasts full-width from left */
  #tc{top:62px;right:8px;left:8px;align-items:stretch}
  .toast{min-width:unset;max-width:unset;width:100%}

  /* Notification panel full-width */
  .notif-panel{width:calc(100vw - 16px);right:8px;left:8px;top:62px}
}

/* ── SIDEBAR: off-canvas drawer on mobile ────────────────────────── */
@media(max-width:768px){
  /* Overlay that dims the page when drawer is open */
  .sidebar-overlay{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(0,0,0,0.55);
    backdrop-filter:blur(3px);
    z-index:299;
  }
  .sidebar-overlay.open{display:block}

  .sidebar{
    position:fixed;
    top:0;
    left:0;
    bottom:0;
    z-index:300;
    width:260px;
    transform:translateX(-100%);
    transition:transform 0.26s cubic-bezier(0.4,0,0.2,1);
    padding-top:calc(var(--topbar1-h) + 8px);
    /* keep desktop background */
  }
  .sidebar.mob-open{transform:translateX(0)}
  .sidebar-collapse-toggle{display:none}

  /* Hamburger button — injected by JS */
  .mob-menu-btn{
    display:flex;
    align-items:center;
    justify-content:center;
    width:36px;height:36px;
    border:1px solid var(--b1);
    background:transparent;
    color:var(--text2);
    border-radius:var(--r);
    cursor:pointer;
    font-size:18px;
    flex-shrink:0;
    transition:var(--tr);
  }
  .mob-menu-btn:hover{background:var(--s2);color:var(--text);border-color:var(--b2)}

  /* Main content fills full width since sidebar is off-canvas */
  .app-shell{flex-direction:column}
  .main{width:100%}
}

/* ── PAGE CONTENT: tighten padding ──────────────────────────────── */
@media(max-width:768px){
  .pg{padding:12px 12px 80px}  /* bottom pad leaves room for chat bar */

  /* Page header: stack vertically */
  .ph{flex-direction:column;gap:10px;margin-bottom:16px}
  .ph-title{font-size:17px}
  .ph-right{width:100%;justify-content:flex-start}

  /* Stat grid: 2 per row on mobile */
  .stat-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
  .stat-card{padding:14px}
  .cl-chart{height:130px}
  .cl-bar-label{height:34px;font-size:8px}
  .cl-seg button{padding:5px 10px;font-size:11px}
  .cl-hbar-label{width:80px;font-size:11px}
  .cl-hbar-value{width:44px;font-size:11px}
  .sc-value{font-size:20px}
  .sc-icon{font-size:20px;top:10px;right:10px}
  .dash-tab{padding:8px 14px;font-size:13px}
  .dash-sub-tab{padding:6px 12px;font-size:11px}
  .cl-toolbar{flex-direction:column;align-items:flex-start;gap:8px}
  .cl-toolbar-right{width:100%}
}

/* ── CARDS ───────────────────────────────────────────────────────── */
@media(max-width:768px){
  .card-head{padding:11px 14px;gap:8px}
  .toolbar{gap:7px}

  /* card-head: stack title + toolbar on very small screens */
  @media(max-width:480px){
    .card-head{flex-direction:column;align-items:flex-start}
    .toolbar{width:100%}
  }
}

/* ── TABLES: horizontal scroll + bump touch targets ─────────────── */
@media(max-width:768px){
  .tbl-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}
  th{padding:8px 10px;font-size:9px}
  td{padding:10px 10px;font-size:12px}

  /* Row actions: always visible, bigger tap area */
  .row-act{gap:6px;flex-wrap:wrap}
  .btn-xs{padding:6px 10px;font-size:12px}

  /* Pagination: bigger buttons, wrap nicely */
  .pag{padding:10px 12px;gap:6px}
  .pb{min-width:34px;height:34px;font-size:13px}
}

/* ── FORMS ───────────────────────────────────────────────────────── */
@media(max-width:768px){
  .finput,.fselect,.ftextarea{
    font-size:16px;  /* prevents iOS zoom on focus */
    padding:10px 12px;
  }
  .fg{margin-bottom:14px}

  /* Already stacks at 560px — reinforce for 768 */
  .frow{grid-template-columns:1fr}
}

/* ── BUTTONS: full-width primary actions on small screens ────────── */
@media(max-width:480px){
  /* Lone primary buttons in page headers go full-width */
  .ph-right .btn-primary{width:100%;justify-content:center}
}

/* ── MODAL: full-screen sheet on mobile ──────────────────────────── */
@media(max-width:768px){
  .mo{padding:0;align-items:flex-end}
  .mo-box{
    max-width:100%;
    width:100%;
    max-height:92vh;
    border-radius:var(--r2xl) var(--r2xl) 0 0;
    transform:translateY(40px) scale(1);  /* slide up, no scale */
  }
  .mo.open .mo-box{transform:translateY(0) scale(1)}
  .mo-box.mo-lg{max-width:100%}

  .mo-head{padding:16px 18px 12px}
  .mo-title{font-size:14px}
  .mo-body{padding:16px 18px}
  .mo-foot{padding:12px 18px;gap:8px}

  /* Stack modal footer buttons */
  .mo-foot{flex-direction:column-reverse}
  .mo-foot .btn{width:100%;justify-content:center}
}

/* ── CHAT PAGE ───────────────────────────────────────────────────── */
#pg-chat{display:flex;flex-direction:column;height:100%;overflow:hidden}
#pg-chat .ph{flex-shrink:0}
#pg-chat .chat-shell{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}
#chat-history{flex:1;overflow-y:auto;min-height:0}
@media(max-width:768px){
  /* Pipeline selector row */
  #pg-chat .card{border-radius:var(--r);margin-bottom:10px}
  #pg-chat .fselect{font-size:16px}  /* no iOS zoom */

  /* Tool selector is absolutely centered on desktop; stack it normally
     under the title on narrow screens instead of overlapping it. */
  #pg-chat .ph-center{position:static;transform:none;margin-top:10px}

  /* Chat blocks */
  .chat-block{padding:10px 11px;margin-bottom:10px}
  .chat-q{font-size:13px}
  .chat-response-area{font-size:13px}

  /* Input bar: textarea + button stacked on very narrow screens */
  .chat-input-bar{gap:8px;padding-top:10px}
  .chat-exec-stack{width:88px}
  .chat-exec-stack .btn{font-size:11px}
  @media(max-width:400px){
    .chat-input-bar{flex-direction:column}
    .chat-exec-stack{width:100%;flex-direction:row}
    .chat-exec-stack .btn{min-height:44px}
  }
}

/* ── APP EDIT (RAG Pipeline form) ────────────────────────────────── */
@media(max-width:768px){
  .app-edit-section{padding:14px;margin-bottom:12px}
  .app-edit-bar{padding:12px 0;gap:8px;flex-direction:column-reverse}
  .app-edit-bar .btn{width:100%;justify-content:center}
}

/* ── UPLOAD ZONE ─────────────────────────────────────────────────── */
@media(max-width:768px){
  .upload-zone{padding:22px 14px}
  .uz-icon{font-size:28px;margin-bottom:6px}
}

/* ── LOGIN PAGE ──────────────────────────────────────────────────── */
@media(max-width:768px){
  .lc{padding:28px 20px;border-radius:var(--rl)}
  .l-logo{margin-bottom:22px}
  .l-logo img{max-width:180px}
}

/* ── AGENT CHAT (agent.html) ─────────────────────────────────────── */
@media(max-width:768px){
  .agent-chat-history{padding:10px 12px}
  .agent-chat-input-bar{padding:8px 12px;gap:8px}
  .agent-chat-input-bar .input-actions .btn{min-width:80px;font-size:12px}

  /* Agent topbar line2: compress */
  .topbar-line2{padding:0 10px;gap:6px;height:44px}
  :root{--topbar2-h:44px}
}

/* ── MISC TOUCH IMPROVEMENTS ─────────────────────────────────────── */
@media(max-width:768px){
  /* Larger tap targets for icon buttons */
  .icon-btn{width:38px;height:38px}

  /* Empty state */
  .empty{padding:36px 16px}
  .ei{font-size:34px}

  /* Tenant dropdown: wider */
  .tenant-dd{min-width:200px;left:auto;right:0}

  /* Hide sort arrows on mobile to save space */
  .sort-arr{display:none}

  /* Scroll-lock body when sidebar or modal is open */
  body.mob-locked{overflow:hidden}
}

/* ── Native checkboxes (RAG table & similar) ─────────────────────── */
.rag-native-cb {
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  border: 2px solid var(--b2);
  border-radius: 4px;
  background: var(--s2);
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
  transition: background 0.15s, border-color 0.15s;
  vertical-align: middle;
}
.rag-native-cb:hover {
  border-color: var(--blue);
  background: var(--blue3);
}
.rag-native-cb:checked {
  background: var(--blue);
  border-color: var(--blue);
}
.rag-native-cb:checked::after {
  content: '';
  position: absolute;
  left: 3px;
  top: 0px;
  width: 5px;
  height: 10px;
  border: 2px solid #fff;
  border-top: none;
  border-left: none;
  transform: rotate(45deg);
}
.rag-native-cb:indeterminate {
  background: var(--blue);
  border-color: var(--blue);
}
.rag-native-cb:indeterminate::after {
  content: '';
  position: absolute;
  left: 2px;
  top: 6px;
  width: 10px;
  height: 2px;
  background: #fff;
  border-radius: 2px;
}

/* Spinning animation for Processing status */
@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* ── Mobile row-action popover ───────────────────────────────────── */
.mob-act-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
}

/* The popover card */
.mob-act-pop {
  position: absolute;
  right: 0;
  top: 100%;
  margin-top: 4px;
  z-index: 200;
  background: var(--s1);
  border: 1px solid var(--b2);
  border-radius: var(--r);
  box-shadow: 0 6px 24px rgba(0,0,0,0.22);
  min-width: 160px;
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.mob-act-pop .btn {
  width: 100%;
  justify-content: flex-start;
  font-size: 13px;
  padding: 9px 12px;
  border-radius: calc(var(--r) - 2px);
}

/* Only show the ⋯ trigger on mobile; desktop always shows row-act inline */
.mob-act-trigger { display: none; }

@media(max-width:768px) {
  .mob-act-trigger { display: inline-flex; }
  /* row-act-src is hidden on mobile (buttons moved into popover) */
  .row-act-src { display: none !important; }
  /* Prevent the td from being cramped */
  td:has(.mob-act-wrap) { white-space: nowrap; }
}

/* ── RAG PROCESSING ──────────────────────────────────────────────────── */
@keyframes rag-spin{to{transform:rotate(360deg)}}
.rag-spin{display:inline-block;animation:rag-spin 1.1s linear infinite;font-style:normal}
.rag-proc-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;font-family:var(--fh);color:var(--amber);background:var(--am2);border:1px solid rgba(240,160,48,0.3);border-radius:20px;padding:3px 10px}

/* ── RAG EVENT LOG PANEL ─────────────────────────────────────────────── */
.rag-evt-list{overflow-y:auto;max-height:160px;font-size:11px;font-family:var(--fm);color:var(--text2)}
.rag-evt-empty{padding:16px;text-align:center;color:var(--text3);font-size:12px}
/* Process status rows: fixed widths keep layout stable as values update */
.rag-evt-row{display:grid;grid-template-columns:62px minmax(80px,1fr) minmax(120px,2fr) minmax(110px,auto) minmax(90px,auto);gap:8px;align-items:center;padding:4px 16px;border-bottom:1px solid rgba(26,46,74,0.5)}
.rag-evt-row:last-child{border-bottom:none}
.rag-evt-row:hover{background:var(--s2)}
.rag-evt-ts{color:var(--text3);font-size:10px;white-space:nowrap}
/* Default (in-progress): blue italic — same as chat status events */
.rag-evt-domain{color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;text-align:left}
.rag-evt-fname{color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;text-align:left}
.rag-evt-status{font-weight:600;color:var(--text2);white-space:nowrap;text-align:left}
.rag-evt-state{font-size:11px;color:var(--text3);white-space:nowrap;text-align:left}
/* Blue italic for in-progress rows */
.rag-evt-proc .rag-evt-domain,.rag-evt-proc .rag-evt-fname{color:var(--blue2);font-style:italic;font-weight:500}
.rag-evt-proc .rag-evt-status,.rag-evt-proc .rag-evt-state{color:var(--blue2);font-style:italic}
/* Red for failed rows */
.rag-evt-fail .rag-evt-domain,.rag-evt-fail .rag-evt-fname{color:var(--rose);font-style:normal}
.rag-evt-fail .rag-evt-status,.rag-evt-fail .rag-evt-state{color:var(--rose)}
/* Green for completed rows */
.rag-evt-ok .rag-evt-domain,.rag-evt-ok .rag-evt-fname{color:var(--emerald);font-style:normal}
.rag-evt-ok .rag-evt-status,.rag-evt-ok .rag-evt-state{color:var(--emerald)}

/* ── CHAT EVENT LOG ──────────────────────────────────────────────────── */
.chat-evt-row{display:grid;grid-template-columns:64px 1fr;gap:8px;align-items:baseline;padding:3px 14px;border-bottom:1px solid rgba(26,46,74,0.3);font-size:11px;font-family:var(--fm)}
.chat-evt-row:last-child{border-bottom:none}
.chat-evt-row:hover{background:var(--s2)}
.chat-evt-msg{color:var(--blue2);font-weight:500;font-style:italic}

/* ── Query user search dropdown ─────────────────────────────────────── */
/* User search dropdown — fixed positioning escapes any overflow:hidden parent */
.user-search-dd{position:fixed;z-index:9999;background:var(--s1);border:1px solid var(--b2);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,0.55);max-height:240px;overflow-y:auto;min-width:260px}
.user-search-dd-item{padding:8px 14px;cursor:pointer;font-size:12px;display:flex;align-items:baseline;gap:6px;background:var(--s1)}
.user-search-dd-item:hover,.user-search-dd-item:focus{background:var(--s2)}
.user-search-dd-empty{padding:10px 14px;font-size:12px;color:var(--text3);background:var(--s1)}

/* Chat mode slider — Tool | Auto | Agent, neutral=Auto (default agent,
   resolved server-side, business users never see a picker). Left/right
   are validation-phase pickers, kept fully live alongside Auto per the
   "keep both paths available while validating" design. */
.chat-mode-slider{position:relative;flex-shrink:0}
.chat-mode-track{position:relative;display:flex;background:var(--s3);border:1px solid var(--b2);border-radius:999px;padding:2px}
.chat-mode-thumb{position:absolute;top:2px;left:2px;width:calc(33.333% - 2px);height:calc(100% - 4px);background:var(--blue);border-radius:999px;transition:var(--tr);z-index:0}
.chat-mode-track[data-mode="tool"] .chat-mode-thumb{transform:translateX(0)}
.chat-mode-track[data-mode="default"] .chat-mode-thumb{transform:translateX(100%)}
.chat-mode-track[data-mode="agent"] .chat-mode-thumb{transform:translateX(200%)}
/* Thumb width follows however many modes SES.modeAgent permits; the three-mode
   case stays the default. Its horizontal position is set inline by
   _positionChatModeThumb(), from the button's index among those rendered —
   with a subset shown, Auto may sit first rather than second, so the
   name-keyed rules above can't be relied on. */
.chat-mode-track[data-count="1"] .chat-mode-thumb{width:calc(100% - 4px)}
.chat-mode-track[data-count="2"] .chat-mode-thumb{width:calc(50% - 2px)}
.chat-mode-opt{position:relative;z-index:1;flex:1;border:none;background:transparent;padding:5px 12px;font-size:12px;font-weight:600;color:var(--text3);cursor:pointer;white-space:nowrap;border-radius:999px;transition:var(--tr)}
.chat-mode-opt.active{color:#fff}
.chat-mode-opt:not(.active):hover{color:var(--text2)}

/* INPUT_REQUIRED — an agent's clarifying question, rendered inline in the
   chat block it belongs to. Deliberately understated: this is a question in
   the middle of a conversation, not a modal or an approval gate. */
.chat-ask{margin-top:10px;padding:10px 12px;border:1px solid var(--b2);border-left:3px solid var(--blue);border-radius:var(--rs);background:var(--s3)}
.chat-ask-q{font-size:13px;font-weight:600;color:var(--text1);margin-bottom:8px}
.chat-ask-body{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.chat-ask-opt{white-space:normal;text-align:left}
.chat-ask-input{flex:1;min-width:180px;margin:0}
.chat-ask-answered{font-size:13px;color:var(--text2)}

/* Prompt Template — real page (t-agent's Back-button pattern), version
   list on the left inside the page's .card, editor on the right.
   #pg-prompt gets an explicit flex-column height (unlike most .pg pages,
   which just let content flow and the whole page scroll) because the
   whole point here is the list and the textarea scrolling independently
   - that needs a real bounded height to work at all. */
#pg-prompt{display:flex;flex-direction:column;height:100%;flex:1}
.pt-list{width:220px;flex-shrink:0;overflow-y:auto;border-right:1px solid var(--b1)}
.pt-list-row{padding:9px 12px;border-bottom:1px solid var(--b1);cursor:pointer;transition:var(--tr);font-size:12px}
.pt-list-row:hover{background:var(--blue3)}
.pt-list-row-sel{background:var(--blue3);box-shadow:inset 3px 0 0 var(--blue)}
.pt-list-row-pending{border-style:dashed;border-color:var(--blue)}
.pt-list-row-l1{font-size:13px;margin-bottom:2px}
.pt-list-row-l2,.pt-list-row-l3{color:var(--text3);line-height:1.5}
.pt-right{flex:1;display:flex;flex-direction:column;min-width:0}
.pt-panel{flex:1;display:flex;min-height:0;padding:12px 20px}
.pt-textarea{width:100%;height:100%;resize:none;font-family:var(--fm,monospace);font-size:13px;line-height:1.6}
.pt-textarea-readonly{background:var(--s1);color:var(--text2)}
.pt-page-foot{display:flex;align-items:center;gap:10px;padding:14px 4px 4px}
