/* ============ AILAB Clone — Design System ============ */
:root{
  /* ===== Descon brand system (blue = single accent, red = critical only) ===== */
  --brand:#0060b0;             /* Descon blue — the one accent that does the work */
  --brand-strong:#004c8c;
  --brand-soft:#e8f1fa;        /* tinted background for active/hover */
  --descon-red:#e11f26;        /* Descon red — reserved for critical / destructive */

  --green:#0060b0;             /* primary actions → Descon blue */
  --green-grad-a:#0060b0;
  --green-grad-b:#004c8c;
  --teal:#0060b0;              /* accent / links / active → Descon blue */
  --teal-dark:#004c8c;
  --logo-a:#0060b0;
  --logo-b:#e11f26;

  --ink:#0f1b2d;               /* KPI numbers — near-black navy */
  --title:#0f1b2d;
  --text:#3a4658;
  --muted:#697586;
  --muted2:#98a2b3;
  --line:#e6e9ef;
  --line2:#eef1f5;
  --bg:#f4f6f9;
  --card:#ffffff;
  --amber:#e0930b;
  --red:#e11f26;               /* = Descon red */
  --blue:#0060b0;
  --purple:#5b6cf5;

  /* dark sidebar (deep Descon navy) */
  --side-bg:#0e1c2e;
  --side-bg2:#0b1626;
  --side-text:#a7b4c4;
  --side-text-dim:#7c8ba0;
  --side-hover:#16283d;
  --side-active-bg:#12395f;

  --sidebar-w:214px;
  --topbar-h:54px;
  --radius:10px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:'Inter','Roboto',-apple-system,'Segoe UI',sans-serif;
  background:var(--bg);
  color:var(--text);
  font-size:13px;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  letter-spacing:-0.006em;
}
/* tabular figures everywhere data lives — a premium-data hallmark */
.k-val,table.tbl td,table.tbl th,table.lab-tbl td,.chip,.stat-box .n,.kpi .k-val,.hbar-row .lbl{
  font-variant-numeric:tabular-nums;font-feature-settings:'tnum' 1,'cv01' 1;
}
a{color:inherit;text-decoration:none}
.hidden{display:none !important}

/* ---------- Workspace Layout (Option B) ---------- */
.workspace-layout { display: flex; height: 100vh; overflow: hidden; }

/* Left Compact Rail */
.nav-rail {
  width: 64px; flex: none; background: linear-gradient(180deg, var(--side-bg), var(--side-bg2));
  border-right: 1px solid #0a1420; display: flex; flex-direction: column; align-items: center; padding: 12px 0; z-index: 50;
}
.rail-logo { margin-bottom: 20px; }
.rail-logo .mark-img { height: 28px; width: auto; }
.rail-items { flex: 1; display: flex; flex-direction: column; gap: 8px; width: 100%; align-items: center; overflow-y: auto; overflow-x: hidden; scrollbar-width: none; }
.rail-items::-webkit-scrollbar { display: none; }
.rail-item {
  width: 44px; height: 44px; border-radius: 10px; display: grid; place-items: center; color: var(--side-text-dim); cursor: pointer; transition: .13s; position: relative;
}
.rail-item svg { width: 18px; height: 18px; transition: color .13s; }
.rail-item:hover { background: var(--side-hover); color: #e7edf4; }
.rail-item.active { background: var(--side-active-bg); color: #fff; }
.rail-item.active::before { content: ""; position: absolute; left: -10px; top: 10px; bottom: 10px; width: 3px; border-radius: 0 3px 3px 0; background: var(--brand); }

.rail-bottom { display: flex; flex-direction: column; gap: 10px; align-items: center; margin-top: auto; padding-top: 12px; border-top: 1px solid #17293c; width: 100%; }
.rail-btn { color: var(--side-text-dim); }
.rail-btn:hover { background: var(--side-hover); color: #e7edf4; }

/* Secondary Module Panel */
.module-panel {
  width: var(--module-panel-w, 220px); background: #fcfcfd; border-right: 1px solid var(--line); display: flex; flex-direction: column; overflow-y: auto; overflow-x: hidden; flex: none;
}
body.module-panel-collapsed .module-panel { width: 0; min-width: 0; border-right: none; }
body.module-panel-collapsed .panel-resizer { display: none; }

.panel-resizer {
  width: 6px; margin-left: -3px; cursor: col-resize; flex: none; position: relative; z-index: 6; background: transparent; transition: background .12s;
}
.panel-resizer::after { content: ""; position: absolute; left: 2px; top: 0; bottom: 0; width: 2px; background: transparent; transition: background .12s; }
.panel-resizer:hover::after, body.resizing .panel-resizer::after { background: var(--brand); }

/* Main Workspace */
.main-workspace { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; background: var(--bg); position: relative; }

/* Command Bar */
.command-bar {
  height: var(--topbar-h); background: #fff; border-bottom: 1px solid var(--line); display: flex; align-items: center; gap: 8px; padding: 0 16px; flex: none; z-index: 40;
}
.page-commands { display: flex; gap: 6px; align-items: center; }

/* Content Area */
.content { flex: 1; min-height: 0; padding: 16px 20px 12px; overflow-y: auto; display: flex; flex-direction: column; gap: 16px; }

/* Global Assistant Drawer */
.assistant-drawer {
  width: 0; min-width: 0; flex: none; overflow: hidden; background: #fff; border-left: 1px solid var(--line); display: flex; flex-direction: column; transition: width .2s ease, min-width .2s ease;
}
body.assistant-open .assistant-drawer { width: 340px; min-width: 340px; }

.footer{ text-align:center;color:#9aa3af;font-size:11px; padding:7px;border-top:1px solid var(--line);background:#fff; }

/* ---------- Topbar pieces ---------- */
.logo{display:flex;align-items:center;gap:6px;font-weight:800;font-size:16px;letter-spacing:.3px;margin-right:4px}
.logo .mark{width:26px;height:26px}
.logo .mark-img{height:30px;width:auto;object-fit:contain;display:block}
.logo .wordmark{font-size:15px;font-weight:700;color:var(--ink);letter-spacing:-0.02em;display:flex;align-items:baseline;gap:4px}
.logo .wordmark small{font-size:8.5px;font-weight:700;color:#fff;background:var(--brand);padding:1px 4px;border-radius:4px;letter-spacing:.06em}
.logo .txt{background:linear-gradient(90deg,var(--logo-a),var(--logo-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.back-btn{
  width:24px;height:24px;border-radius:7px;
  background:var(--brand);color:#fff;display:grid;place-items:center;cursor:pointer;flex:none;transition:background .13s}
.back-btn:hover{background:var(--brand-strong)}
.crumb{display:flex;align-items:center;gap:6px;font-weight:600;color:var(--ink);white-space:nowrap;letter-spacing:-0.01em;min-width:0;overflow:hidden}
.crumb #crumb-page{overflow:hidden;text-overflow:ellipsis}
.crumb .ai{color:var(--brand);font-style:italic;font-weight:700}
.crumb .sep{color:var(--muted2)}
.spacer{flex:1;min-width:4px}

.datebox{
  border:1px solid var(--line);border-radius:8px;padding:4px 9px;width:150px;min-width:112px;position:relative;background:#fff;transition:border-color .13s;overflow:hidden}
.datebox .val span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.datebox:hover{border-color:#cfd6e0}
.datebox label{position:absolute;top:-7px;left:8px;background:#fff;font-size:8px;color:var(--muted2);padding:0 3px}
.datebox .val{font-size:11px;color:var(--text);display:flex;align-items:center;justify-content:space-between;gap:6px}
.navchev{width:22px;height:24px;border:1px solid var(--line);border-radius:7px;display:grid;place-items:center;color:var(--muted);cursor:pointer;background:#fff;flex:none;transition:.13s}
.navchev:hover{border-color:var(--brand);color:var(--brand)}

.seg{display:flex;background:#f0f2f6;border:1px solid var(--line);border-radius:8px;padding:2px;gap:2px}
.seg button{border:none;background:transparent;padding:4px 12px;font-size:11px;font-weight:600;color:var(--muted);cursor:pointer;border-radius:6px;transition:.13s}
.seg button:hover{color:var(--brand)}
.seg button.active{background:#fff;color:var(--brand);box-shadow:0 1px 2px rgba(15,27,45,.1)}

.search{
  display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;
  padding:6px 10px;color:var(--muted2);flex:1 1 150px;min-width:70px;max-width:280px;background:#fff;transition:border-color .13s,box-shadow .13s}
.search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,96,176,.12)}
.search input{border:none;outline:none;font-size:12px;flex:1;color:var(--text);background:transparent}
.iconbtn{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--muted);cursor:pointer;transition:.13s}
.iconbtn:hover{background:var(--brand-soft);color:var(--brand)}

/* ---------- Responsive top bar (prevent right-edge cutoff at 100%) ---------- */
@media (max-width:1500px){ .logo .wordmark{display:none} }
@media (max-width:1400px){ .topbar .navchev{display:none} }              /* date < > arrows */
@media (max-width:1280px){ #end-date-box{display:none} }                 /* keep one date box */
@media (max-width:1160px){ #period-seg{display:none} }                   /* Daily/MTD/QTD/YTD */
@media (max-width:1040px){ .topbar .datebox{display:none} }              /* hide date range */
@media (max-width:920px){  .crumb{display:none} }

/* ---------- Sidebar items ---------- */
.nav-section{
  padding:12px 16px 5px;font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:#5f6f83;user-select:none;display:flex;align-items:center;justify-content:space-between;
}
.nav-section.sec-btn{cursor:pointer}
.nav-section.sec-btn:hover{color:#8ea0b6}
.nav-section .ns-chev{width:13px;height:13px;color:#4f5f72;transition:transform .16s}
.nav-section .ns-chev.closed{transform:rotate(-90deg)}

.sidebar-user{
  display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid #17293c;margin-top:6px;
  position:sticky;bottom:0;background:var(--side-bg2);
}
.sidebar-user > div div:first-child{color:#dbe4ee !important}
.avatar{width:26px;height:26px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:700;flex:none}

/* ---------- Sub tabs (module tabs) ---------- */
.subtabs{display:flex;gap:6px;justify-content:flex-end;padding:6px 14px 0;flex-wrap:wrap}
.subtab{
  display:flex;align-items:center;gap:5px;border:1px solid var(--line);background:#fff;border-radius:8px;
  padding:6px 11px;font-size:11px;color:#54606f;cursor:pointer;white-space:nowrap;transition:.13s;font-weight:500}
.subtab:hover{border-color:var(--brand);color:var(--brand)}
.subtab svg{width:13px;height:13px}
.subtab.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.subtab.active:hover{color:#fff}

/* generic left tab row (Chemicals / ISO) */
.tabrow{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:12px;padding:0 2px}
.tabrow .tab{display:flex;align-items:center;gap:6px;padding:9px 13px;font-size:12.5px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:.13s;font-weight:500}
.tabrow .tab:hover{color:var(--brand)}
.tabrow .tab svg{width:14px;height:14px}
.tabrow .tab.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}
.tabrow.pills .tab.active{color:var(--ink);border-bottom-color:var(--ink)}

/* ---------- Cards / KPI ---------- */
.grid{display:grid;gap:10px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 2px rgba(15,27,45,.04);overflow:hidden;display:flex;flex-direction:column}
.card-pad{padding:13px 15px}
.card-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--line2)}
.card-title{font-size:12.5px;font-weight:600;color:var(--ink);letter-spacing:-0.01em}
.chart-tools{display:flex;gap:7px;color:#bcc3cd}
.chart-tools svg{width:13px;height:13px;cursor:pointer;transition:color .12s}
.chart-tools svg:hover{color:var(--brand)}

.kpi-row{display:grid;grid-template-columns:repeat(9,1fr);gap:10px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:11px 13px;position:relative;
  transition:border-color .14s,box-shadow .14s,transform .14s;overflow:hidden}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand);opacity:0;transition:opacity .14s}
.kpi:hover{border-color:#d5dbe4;box-shadow:0 6px 18px rgba(15,27,45,.06);transform:translateY(-1px)}
.kpi:hover::before{opacity:1}
.kpi .k-top{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:10.5px;font-weight:500}
.kpi .k-top svg{width:13px;height:13px;color:#b3bcc8}
.kpi .k-val{font-size:20px;font-weight:700;color:var(--ink);margin-top:6px;line-height:1.1;letter-spacing:-0.02em}
.kpi .k-sub{font-size:9.5px;color:var(--muted2);margin-top:2px}

/* ---------- Operations Workspace Structures ---------- */
.workspace-split { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 16px; align-items: start; }
.workspace-board { display: flex; flex-direction: column; gap: 16px; }

/* Status Clusters */
.status-cluster { display: flex; flex-wrap: wrap; gap: 8px; }
.status-item { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 10px 14px; display: flex; flex-direction: column; flex: 1; min-width: 140px; }
.status-item .si-val { font-size: 24px; font-weight: 700; color: var(--ink); line-height: 1.1; margin-bottom: 4px; }
.status-item .si-lbl { font-size: 11px; color: var(--muted); font-weight: 500; }

/* Action Queue */
.action-queue { display: flex; flex-direction: column; gap: 8px; }
.queue-item { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 12px; display: flex; align-items: center; gap: 12px; cursor: pointer; transition: border-color .13s; border-left: 3px solid transparent; }
.queue-item:hover { border-color: var(--brand); }
.queue-item.high { border-left-color: var(--descon-red); }
.queue-item.med { border-left-color: var(--amber); }
.queue-item.low { border-left-color: var(--brand); }
.qi-content { flex: 1; }
.qi-title { font-size: 12px; font-weight: 600; color: var(--ink); margin-bottom: 2px; }
.qi-meta { font-size: 11px; color: var(--muted2); }

/* Pipeline Board */
.pipeline-board { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 8px; }
.pipeline-lane { flex: 1; min-width: 260px; background: #f4f5f7; border-radius: 10px; padding: 10px; display: flex; flex-direction: column; gap: 10px; }
.lane-head { font-size: 11.5px; font-weight: 700; color: #5f6f83; text-transform: uppercase; letter-spacing: .05em; padding: 4px 6px; display: flex; justify-content: space-between; }
.lane-count { background: #e2e8f0; padding: 2px 6px; border-radius: 12px; font-size: 10px; }

/* Detail Drawer (Right panel within workspace) */
.detail-panel { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 16px; display: flex; flex-direction: column; gap: 16px; position: sticky; top: 16px; }

/* Dense Entry Grid */
.dense-grid { display: grid; grid-template-columns: 280px minmax(0, 1fr) 300px; gap: 16px; align-items: start; }
.dense-panel { background: #fff; border: 1px solid var(--line); border-radius: 10px; display: flex; flex-direction: column; overflow: hidden; }

/* Master-Detail */
.master-detail { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 16px; align-items: start; }

/* ---------- Tables ---------- */
.tbl-wrap{width:100%;overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:11.5px}
table.tbl thead th{
  text-align:left;padding:9px 11px;color:#7c8798;font-weight:600;font-size:10px;
  border-bottom:1px solid var(--line);white-space:nowrap;background:#fafbfd;letter-spacing:.04em;text-transform:uppercase;
}
table.tbl tbody td{padding:9px 11px;border-bottom:1px solid var(--line2);color:#41505f;white-space:nowrap}
table.tbl tbody tr{transition:background .1s}
table.tbl tbody tr:hover{background:var(--brand-soft)}
.tbl-toolbar{display:flex;align-items:center;gap:8px;padding:10px 11px}
.tbl-toolbar .tt-title{flex:1;text-align:center;font-weight:600;color:var(--ink);font-size:12.5px;letter-spacing:-0.01em}
.mini-search{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:5px 9px;color:var(--muted2);min-width:180px;transition:border-color .13s,box-shadow .13s}
.mini-search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,96,176,.12)}
.mini-search input{border:none;outline:none;font-size:12px;background:transparent;color:var(--text)}
.icon-sq{width:28px;height:28px;border:1px solid var(--line);border-radius:8px;display:grid;place-items:center;color:var(--muted);cursor:pointer;transition:.13s}
.icon-sq:hover{border-color:var(--brand);color:var(--brand)}

.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:6px;font-size:10.5px;font-weight:600;letter-spacing:-0.01em}
.b-green{background:#e7f6ef;color:#0a8f6d}
.b-green-o{background:#fff;border:1px solid #bfe6d6;color:#0a8f6d}
.b-teal-o{background:var(--brand-soft);color:var(--brand)}
.b-amber{background:#fdf3e3;color:#b7770a}
.b-red{background:#fdeaea;color:var(--descon-red)}
.b-blue{background:var(--brand-soft);color:var(--brand)}
.chip{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:6px;background:var(--brand-soft);color:var(--brand);font-weight:700;font-size:11px}

.btn{display:inline-flex;align-items:center;gap:6px;border-radius:8px;padding:7px 13px;font-size:12px;font-weight:600;cursor:pointer;
  border:1px solid transparent;transition:filter .13s,box-shadow .13s,background .13s,border-color .13s;letter-spacing:-0.01em}
.btn svg{width:14px;height:14px}
.btn:hover{filter:brightness(1.06)}
.btn:active{filter:brightness(.95)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(0,96,176,.28)}
.btn-green{background:var(--brand);color:#fff}
.btn-green:hover{background:var(--brand-strong);filter:none}
.btn-blue{background:var(--brand);color:#fff}
.btn-blue:hover{background:var(--brand-strong);filter:none}
.btn-red{background:var(--descon-red);color:#fff}
.btn-out{background:#fff;border-color:var(--line);color:#495261}
.btn-out:hover{border-color:var(--brand);color:var(--brand);filter:none}
.btn-teal{background:var(--brand);color:#fff}

.rows-per{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:9px 12px;color:var(--muted);font-size:11.5px}

.empty{padding:56px;text-align:center;color:var(--muted2);font-size:12px}
.progress{height:7px;border-radius:5px;background:#eef1f4;overflow:hidden}
.progress > span{display:block;height:100%;border-radius:5px}

.pageicon{width:100%;text-align:center;font-size:21px;font-weight:600;color:var(--title);padding:14px 0 6px;letter-spacing:-0.02em}
.pageicon small{font-size:14px;color:var(--muted);font-weight:400}

/* lab sheet mini cards */
.lab-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.lab-card{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}
.lab-card .lc-head{display:flex;align-items:center;justify-content:space-between;padding:7px 9px;border-bottom:1px solid var(--line2)}
.lc-title{font-size:11.5px;font-weight:600;color:#334}
.lc-btns{display:flex;gap:5px;align-items:center;color:#9aa3af}
.lc-btns .pc{border:1px solid var(--line);border-radius:5px;padding:1px 5px;font-size:10px;color:#0a9d78;font-weight:700}
.lc-btns svg{width:12px;height:12px}
table.lab-tbl{width:100%;border-collapse:collapse;font-size:10px}
table.lab-tbl th{text-align:left;padding:4px 7px;color:#8a93a0;font-weight:600;border-bottom:1px solid var(--line2)}
table.lab-tbl td{padding:3px 7px;border-bottom:1px solid #f4f5f7;color:#4b5563}
table.lab-tbl td.c{color:#c9ccd2}

/* chat */
.chat-wrap{display:flex;flex-direction:column;height:calc(100vh - var(--topbar-h) - 60px)}
.chat-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--line2)}
.chat-body{flex:1;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:14px}
.msg{max-width:64%;font-size:12.5px;line-height:1.55}
.msg .bubble{padding:11px 14px;border-radius:12px}
.msg.bot{align-self:flex-start;display:flex;gap:10px}
.msg.bot .bubble{background:#f3f5f7;color:#374151;border-top-left-radius:3px}
.msg.user{align-self:flex-end;text-align:left;display:flex;gap:10px;flex-direction:row-reverse}
.msg.user .bubble{background:var(--teal);color:#fff;border-top-right-radius:3px}
.msg .time{font-size:9.5px;color:#9aa3af;margin-top:5px}
.bot-av{width:30px;height:30px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;flex:none}
.usr-av{width:30px;height:30px;border-radius:50%;background:var(--teal);color:#fff;display:grid;place-items:center;flex:none}
.chat-input{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:10px 14px 4px}
.chat-input input{flex:1;border:none;outline:none;font-size:13px}
.send{width:32px;height:32px;border-radius:50%;background:#eef0f3;color:#9aa3af;display:grid;place-items:center;cursor:pointer}

.sugg{border:1px solid var(--line);background:#fff;border-radius:16px;padding:5px 12px;font-size:11.5px;color:#556;cursor:pointer}
.sugg:hover{border-color:var(--teal);color:var(--teal);background:#eef5fb}
body.dark .sugg{background:#1a2430;border-color:#2a3646;color:#c4cdd8}
.perf-item{display:flex;align-items:center;justify-content:space-between;padding:9px 10px;border-bottom:1px solid var(--line2);font-size:12px}
.perf-item .star{color:#f5b301}
.hbar-row{display:flex;align-items:center;gap:8px;margin:7px 0;font-size:11px}
.hbar-row .lbl{width:120px;text-align:right;color:#4b5563;flex:none}
.hbar{flex:1;height:8px;border-radius:5px;background:#eef1f4;overflow:hidden}
.hbar > span{display:block;height:100%}
.stat-box{border-radius:9px;padding:14px;text-align:center}
.stat-box .n{font-size:22px;font-weight:700}
.stat-box .l{font-size:11px;color:var(--muted);margin-top:2px}

/* ---------- Alignment polish ---------- */
.kpi{display:flex;flex-direction:column;justify-content:center;min-height:62px}
.kpi .k-top{min-height:14px}
.card-head{min-height:40px}
.card-title{display:flex;align-items:center;gap:6px}
.subtabs{align-items:center}
.tbl-toolbar{border-bottom:1px solid var(--line2)}
.seg button{transition:background .12s}
.nav-item span{overflow:hidden;text-overflow:ellipsis}
table.tbl thead th.sortable{cursor:pointer;user-select:none}
table.tbl thead th.sortable:hover{color:#5a6472}
table.tbl thead th i{vertical-align:middle}
.clickable{cursor:pointer}
.rp-select{border:1px solid var(--line);border-radius:5px;padding:2px 4px;font-size:11px;color:#4b5563;background:#fff;margin:0 4px}
.pg{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:5px;font-size:11px;color:#6b7280;cursor:pointer;margin:0 1px}
.pg:hover{background:#f2f4f6}
.pg-on{background:var(--teal);color:#fff}
.k-val{white-space:nowrap}

/* ---------- Toasts ---------- */
#toast-host{position:fixed;top:14px;right:14px;z-index:9999;display:flex;flex-direction:column;gap:8px}
.toast{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-left:3px solid var(--green);
  border-radius:8px;padding:10px 14px;font-size:12.5px;color:#334;box-shadow:0 8px 24px rgba(16,24,40,.12);
  transform:translateX(120%);opacity:0;transition:all .3s cubic-bezier(.2,.8,.2,1);min-width:230px}
.toast.show{transform:translateX(0);opacity:1}
.toast svg{width:16px;flex:none}
.toast.t-ok{border-left-color:#0a9d78}.toast.t-ok svg{color:#0a9d78}
.toast.t-info{border-left-color:#2f7de0}.toast.t-info svg{color:#2f7de0}
.toast.t-warn{border-left-color:#e08e0b}.toast.t-warn svg{color:#e08e0b}
.toast.t-err{border-left-color:#d64545}.toast.t-err svg{color:#d64545}

/* ---------- Modal ---------- */
#modal-host{display:none}#modal-host.open{display:block}
.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.42);z-index:9000;display:grid;place-items:center;animation:fade .15s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{background:#fff;border-radius:12px;width:440px;max-width:94vw;max-height:88vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 24px 60px rgba(2,6,23,.35);animation:pop .16s}
.modal-wide{width:720px}
@keyframes pop{from{transform:translateY(10px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line2)}
.modal-title{font-weight:600;font-size:14.5px;color:#1f2a44}
.modal-x{width:18px;color:#9aa3af;cursor:pointer}
.modal-body{padding:16px 18px;overflow-y:auto;font-size:13px}
.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line2);background:#fbfcfd}
.form-row{margin-bottom:12px}
.form-row label{display:block;font-size:11.5px;color:#6b7280;margin-bottom:4px;font-weight:500}
.form-row input,.form-row select,.form-row textarea{width:100%;border:1px solid var(--line);border-radius:7px;padding:8px 10px;font-size:12.5px;color:#334;outline:none;font-family:inherit}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,96,176,.14)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.kv{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line2);font-size:12.5px}
.kv span:first-child{color:#6b7280}
.kv span:last-child{color:#334;font-weight:500}

/* ---------- Notification dropdown ---------- */
.dropdown{position:absolute;top:46px;right:80px;width:340px;background:#fff;border:1px solid var(--line);border-radius:12px;
  box-shadow:0 16px 44px rgba(2,6,23,.18);z-index:60;overflow:hidden}
.dropdown.dd-profile{right:14px;width:230px}
.dd-head{padding:12px 14px;border-bottom:1px solid var(--line2);font-weight:600;color:#334;display:flex;justify-content:space-between;align-items:center}
.dd-item{display:flex;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line2);cursor:pointer}
.dd-item:hover{background:#f8fafb}
.dd-ic{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex:none}
.dd-ic svg{width:15px}
.dd-item .t{font-size:12px;font-weight:600;color:#334}
.dd-item .b{font-size:11px;color:#6b7280;margin-top:1px}
.dd-item .tm{font-size:10px;color:#9aa3af;margin-top:2px}
.dd-foot{padding:9px;text-align:center;font-size:12px;color:var(--teal);cursor:pointer;font-weight:600}
.dd-line{padding:9px 12px;font-size:12.5px;color:#334;display:flex;align-items:center;gap:9px;cursor:pointer}
.dd-line:hover{background:#f6f8f9}.dd-line svg{width:15px;color:#6b7280}
.badge-dot{position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;background:#e03131;border:1.5px solid #fff}
.iconbtn{position:relative}

/* ---------- AI thinking ---------- */
.thinking{display:flex;gap:10px;align-self:flex-start}
.think-body{background:#f3f5f7;border-radius:12px;border-top-left-radius:3px;padding:11px 14px;min-width:230px}
.think-stage{font-size:12px;color:#6b7280;display:flex;align-items:center;gap:8px}
.think-dots{display:inline-flex;gap:3px}
.think-dots span{width:6px;height:6px;border-radius:50%;background:var(--brand);animation:bounce 1.2s infinite}
.think-dots span:nth-child(2){animation-delay:.15s}.think-dots span:nth-child(3){animation-delay:.3s}
@keyframes bounce{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}
.think-bar{height:4px;border-radius:3px;background:#dfeaf5;margin-top:9px;overflow:hidden}
.think-bar > i{display:block;height:100%;background:linear-gradient(90deg,#0060b0,#004c8c);width:0;transition:width .5s ease}
.typing-cursor::after{content:'▋';color:#0060b0;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}

/* ===== multi-agent orchestration card ===== */
.orch-card{background:#f7f9fc;border:1px solid var(--line);border-radius:13px;padding:12px 15px;min-width:380px;max-width:480px}
body.dark .orch-card{background:#141d29;border-color:#243040}
.orch-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;color:var(--ink);margin-bottom:11px}
.orch-head .orch-sub{font-weight:400;color:var(--muted2)}
.orch-timer{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:500;font-size:11px}
.orch-agents{position:relative;display:flex;flex-direction:column;gap:3px}
.orch-agents::before{content:"";position:absolute;left:13px;top:16px;bottom:18px;width:1.5px;background:var(--line);border-radius:2px}
.agent-row{display:flex;align-items:flex-start;gap:11px;padding:5px 2px;position:relative}
.agent-node{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;flex:none;
  background:#fff;border:1px solid var(--line);color:var(--muted2);position:relative;z-index:1;transition:.2s}
.agent-node svg{width:14px}
body.dark .agent-node{background:#1a2430}
.agent-row.running .agent-node{border-color:var(--ac);color:var(--ac);box-shadow:0 0 0 3px rgba(0,96,176,.08)}
.agent-row.done .agent-node{border-color:#0a8f6d;color:#0a8f6d;background:#e7f6ef}
body.dark .agent-row.done .agent-node{background:#12261f}
.agent-main{flex:1;min-width:0}
.agent-name{font-size:12px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px}
.agent-status{font-size:9px;font-weight:600;padding:1px 7px;border-radius:20px;background:#eaeef3;color:var(--muted2);text-transform:uppercase;letter-spacing:.03em}
.agent-status.running{background:var(--brand-soft);color:var(--brand)}
.agent-status.done{background:#e7f6ef;color:#0a8f6d}
.agent-step{font-size:10.5px;color:var(--muted);margin-top:2px;height:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agent-row.done .agent-step{color:var(--muted2)}
.agent-state{flex:none;width:18px;display:grid;place-items:center;color:var(--muted2)}
.agent-state svg{width:15px}
.agent-state .spin{color:var(--brand);animation:spin .8s linear infinite}
.agent-state .dot-q{width:7px;height:7px;border-radius:50%;background:#c7cfda}
.agent-row.done .agent-state{color:#0a8f6d}
@keyframes spin{to{transform:rotate(360deg)}}
.orch-foot{margin-top:11px;display:flex;align-items:center;gap:11px}
.orch-prog{flex:1;height:5px;border-radius:4px;background:#e6ebf1;overflow:hidden}
body.dark .orch-prog{background:#243040}
.orch-prog > i{display:block;height:100%;width:0;background:linear-gradient(90deg,#0060b0,#004c8c);transition:width .45s ease}
.orch-count{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:600}

/* editable lab-sheet inputs */
.lab-in{width:100%;border:1px solid transparent;border-radius:4px;padding:2px 3px;font-size:10px;text-align:center;color:#0060b0;font-weight:600;background:transparent;outline:none}
.lab-in:hover{border-color:var(--line)}
.lab-in:focus{border-color:var(--teal);background:#eef5fb}
.lab-card.missed{opacity:.55}
.lab-card.approved{box-shadow:0 0 0 1.5px #b9e7d8 inset}

/* ---------- Dark mode ---------- */
body.dark{--bg:#0f1720;--card:#161f2b;--line:#243040;--line2:#1e2836;--text:#c4cdd8;--ink:#e6ecf3;--title:#e6ecf3;--muted:#8a95a3;--muted2:#6b7684}
body.dark .topbar,body.dark .sidebar,body.dark .footer,body.dark .main{background:#131b25}
body.dark .card,body.dark .kpi,body.dark .lab-card,body.dark .modal,body.dark .dropdown,body.dark .toast{background:#161f2b}
body.dark table.tbl thead th{background:#141c26;color:#8a95a3}
body.dark .datebox,body.dark .search,body.dark .seg,body.dark .mini-search,body.dark .navchev,body.dark .rp-select,body.dark .form-row input,body.dark .form-row select,body.dark .form-row textarea{background:#1a2430;color:#c4cdd8;border-color:#2a3646}
body.dark .datebox label,body.dark .datebox .val span{background:transparent}
body.dark .nav-item{color:#b3bdc9}body.dark .nav-item svg{color:#7c8794}
body.dark .iconbtn:hover,body.dark .nav-item:hover,body.dark table.tbl tbody tr:hover{background:#1b2531}
body.dark .modal-foot,body.dark table.tbl thead th{background:#131b25}
body.dark .btn-out{background:#1a2430;color:#c4cdd8;border-color:#2a3646}
body.dark .pageicon,body.dark .crumb{color:#e6ecf3}
body.dark .think-body,body.dark .msg.bot .bubble{background:#1b2531;color:#c4cdd8}
body.dark .stat-box{filter:brightness(.9)}

/* Workspace Dark Mode overrides */
body.dark .nav-rail, body.dark .rail-items, body.dark .module-panel, body.dark .command-bar, body.dark .assistant-drawer { background: #131b25; border-color: #243040; }
body.dark .rail-item:hover { background: #1b2531; }
body.dark .rail-item.active { background: #1a2430; }
body.dark .nav-section { color: #8a95a3; }
body.dark .status-item, body.dark .queue-item, body.dark .detail-panel, body.dark .dense-panel { background: #161f2b; border-color: #243040; }
body.dark .pipeline-lane { background: #1a2430; }
body.dark .lane-count { background: #243040; color: #b7c1cd; }

.nav-item{
  display:flex;align-items:center;gap:10px;padding:8px 14px;margin:1px 8px;border-radius:8px;
  font-size:12.5px;color:#475569;cursor:pointer;position:relative;
  transition:background .13s,color .13s;
}
.nav-item svg{width:15px;height:15px;color:#94a3b8;flex:none;transition:color .13s}
.nav-item:hover{background:#f1f5f9;color:#0f1b2d}
.nav-item:hover svg{color:#475569}
.nav-item.active{
  background:var(--brand-soft);
  color:var(--brand-strong);font-weight:600;
}
.nav-item.active::before{content:"";position:absolute;left:-8px;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}
.nav-item.active svg{color:var(--brand)}
.nav-item .chev{margin-left:auto;width:13px;height:13px}
.nav-sub{display:flex;align-items:center;gap:9px;padding:6px 14px 6px 40px;font-size:12px;color:var(--muted);cursor:pointer}
.nav-sub:hover{color:var(--ink)}
.nav-sub.active{color:var(--brand);font-weight:600}
.nav-sub.active::before{content:"";position:absolute;left:20px;width:4px;height:4px;border-radius:50%;background:var(--brand)}

.nav-section{padding:12px 14px 4px;font-size:10px;font-weight:700;color:var(--muted2);text-transform:uppercase;letter-spacing:.05em}
.nav-subhead{padding:6px 14px;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:8px}

/* ========== Right-docked file explorer (Codex-style) ========== */
.filepanel{
  width:0;min-width:0;flex:none;overflow:hidden;background:#fff;border-left:1px solid var(--line);
  height:100vh;
  display:flex;flex-direction:column;transition:width .2s ease,min-width .2s ease;
}
body.files-open .filepanel{width:var(--filepanel-w,308px);min-width:var(--filepanel-w,308px)}
.filepanel-resizer{width:0;cursor:col-resize;flex:none;position:relative;z-index:6;transition:width .1s}
.filepanel-resizer::after{content:"";position:absolute;right:2px;top:0;bottom:0;width:2px;background:transparent;transition:background .12s}
.filepanel-resizer:hover::after,body.fp-resizing .filepanel-resizer::after{background:var(--brand)}
body.fp-resizing{cursor:col-resize;user-select:none}
body.fp-resizing .filepanel{transition:none}

.fp-head{display:flex;align-items:center;gap:8px;padding:11px 12px;border-bottom:1px solid var(--line2);flex:none}
.fp-head .fp-title{font-weight:700;font-size:12.5px;color:var(--ink);display:flex;align-items:center;gap:7px;flex:1;letter-spacing:-0.01em}
.fp-head .fp-title svg{width:15px;color:var(--brand)}
.fp-icon{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;color:var(--muted);cursor:pointer;transition:.12s}
.fp-icon:hover{background:var(--brand-soft);color:var(--brand)}
.fp-search{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:6px 9px;margin:9px 11px;color:var(--muted2);transition:.13s}
.fp-search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,96,176,.12)}
.fp-search input{border:none;outline:none;font-size:12px;background:transparent;color:var(--text);width:100%}
.fp-crumb{padding:2px 13px 8px;font-size:10px;color:var(--muted2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.fp-tree{flex:1;overflow-y:auto;overflow-x:hidden;padding:2px 6px 12px;scrollbar-width:thin}
.fp-tree::-webkit-scrollbar{width:8px}
.fp-node{display:flex;align-items:center;gap:6px;height:27px;padding:0 6px;border-radius:6px;cursor:pointer;position:relative;font-size:12.5px;color:#41505f;white-space:nowrap}
.fp-node:hover{background:#f3f6fa}
.fp-node.sel{background:var(--brand-soft);color:var(--brand);font-weight:600}
.fp-node .fp-chev{width:14px;height:14px;color:#9aa3af;flex:none;transition:transform .12s}
.fp-node.open > .fp-chev{transform:rotate(90deg)}
.fp-node .fp-fi{width:15px;height:15px;flex:none}
.fp-node .fp-name{overflow:hidden;text-overflow:ellipsis}
.fp-node .fp-meta{margin-left:auto;font-size:9.5px;color:var(--muted2);flex:none;padding-left:8px}
.fp-node.sel .fp-meta{color:var(--brand)}
.fp-spacer{flex:none}
/* indentation guides */
.fp-guide{width:14px;flex:none;align-self:stretch;position:relative}
.fp-guide::before{content:"";position:absolute;left:6px;top:0;bottom:0;width:1px;background:var(--line)}

.fp-empty{padding:36px 14px;text-align:center;color:var(--muted2);font-size:12px}
.fp-foot{border-top:1px solid var(--line2);padding:8px 12px;font-size:10.5px;color:var(--muted2);display:flex;justify-content:space-between;flex:none}

/* preview modal body */
.fv-meta{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:12px;margin-bottom:12px}
.fv-meta b{color:var(--muted)}
.fv-code{background:#0f1b2d;color:#c9d6e5;border-radius:8px;padding:14px 16px;font-family:'Consolas','Menlo',monospace;font-size:11.5px;line-height:1.6;white-space:pre;overflow:auto;max-height:340px}
.fv-blank{border:1px solid var(--line);border-radius:10px;height:240px;display:grid;place-items:center;color:var(--muted2);background:#fafbfc}

/* dark mode for file panel */
body.dark .filepanel{background:#131b25}
body.dark .fp-node{color:#b7c1cd}
body.dark .fp-node:hover{background:#1b2531}
body.dark .fp-search,body.dark .fp-icon:hover{background:#1a2430}
body.dark .fv-blank{background:#161f2b;border-color:#243040}

/* scrollbars */
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#d7dbe0;border-radius:6px}
::-webkit-scrollbar-track{background:transparent}
body.dark ::-webkit-scrollbar-thumb{background:#2a3646}

/* ============ Outlook integration (compose + settings) ============ */
.ol-modal-head{background:linear-gradient(90deg,#0060b0,#004c8c);color:#fff;padding-top:12px;padding-bottom:12px}
.ol-modal-head .modal-title{color:#fff;display:flex;align-items:center;gap:9px}
.ol-modal-head .modal-x{color:rgba(255,255,255,.85)}
.ol-modal-head .modal-x:hover{color:#fff}
.ol-brandmark{width:28px;height:28px;border-radius:7px;background:#fff;display:grid;place-items:center;box-shadow:0 1px 3px rgba(0,0,0,.18)}
.ol-brandmark svg{width:20px;height:20px}
.ol-sub{font-weight:400;opacity:.8;font-size:12px}

.ol-compose{display:flex;flex-direction:column;gap:0}
.ol-account{display:flex;align-items:center;gap:9px;font-size:12px;color:#4b5563;padding:2px 0 12px;border-bottom:1px solid var(--line2)}
.ol-conn{display:inline-flex;align-items:center;gap:5px;margin-left:8px;font-size:10.5px;color:#0a8f6d;font-weight:600}
.ol-dot{width:7px;height:7px;border-radius:50%;background:#0a8f6d;box-shadow:0 0 0 3px rgba(10,143,109,.15)}

.ol-listrow{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line2)}
.ol-listrow label{font-size:11px;color:#6b7280;font-weight:600}
.ol-listrow select{flex:1;max-width:280px;border:1px solid var(--line);border-radius:7px;padding:7px 10px;font-size:12.5px;color:#334;font-family:inherit;outline:none}
.ol-listrow select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,96,176,.14)}
.ol-hint{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);margin-left:auto}
.ol-hint svg{width:13px;height:13px}

.ol-field{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--line2)}
.ol-lbl{width:44px;flex:none;font-size:11.5px;color:#6b7280;font-weight:600;padding-top:6px}
.ol-chips{display:flex;flex-wrap:wrap;gap:6px;flex:1;align-items:center}
.ol-chip{display:inline-flex;align-items:center;gap:5px;background:var(--brand-soft);color:var(--brand);border:1px solid #cfe3f5;border-radius:20px;padding:3px 8px 3px 10px;font-size:11.5px;font-weight:600}
.ol-chip svg{width:12px;height:12px;cursor:pointer;opacity:.7}
.ol-chip svg:hover{opacity:1}
.ol-addin{border:none;outline:none;font-size:12.5px;font-family:inherit;color:#334;min-width:120px;flex:1;padding:4px 2px;background:transparent}
.ol-subject{flex:1;border:none;outline:none;font-size:13px;font-weight:600;color:var(--ink);font-family:inherit;padding:4px 0}

.ol-attach{display:flex;align-items:center;gap:11px;margin:14px 0 6px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#fbfcfd}
.ol-file{width:34px;height:34px;border-radius:7px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;flex:none}
.ol-file svg{width:17px;height:17px}
.ol-fmeta{display:flex;flex-direction:column;line-height:1.4;flex:1;min-width:0}
.ol-fmeta b{font-size:12.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ol-fmeta span{font-size:10.5px;color:var(--muted)}
.ol-ok{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;color:#0a8f6d}
.ol-ok svg{width:12px;height:12px}
.ol-bodytext{width:100%;min-height:130px;border:1px solid var(--line);border-radius:9px;padding:11px 12px;font-size:12.5px;color:#334;font-family:inherit;line-height:1.6;outline:none;resize:vertical;margin-top:8px}
.ol-bodytext:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,96,176,.14)}

.ol-sent-ic{width:56px;height:56px;border-radius:50%;background:#e7f6ef;color:#0a8f6d;display:grid;place-items:center;margin:6px auto 0}
.ol-sent-ic svg{width:28px;height:28px}
.ol-recap{text-align:left;margin-top:14px;border:1px solid var(--line2);border-radius:9px;padding:4px 12px}

/* Outlook card in Settings */
.ol-int{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff}
.ol-int .ol-logo{width:44px;height:44px;border-radius:10px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;flex:none}
.ol-int .ol-logo svg{width:30px;height:30px}

/* ---- Outlook: Manage integration panel ---- */
.olm-pane{max-height:44vh;overflow-y:auto;padding-right:4px}
.olm-list{border:1px solid var(--line);border-radius:10px;padding:4px 12px;margin-bottom:10px;background:#fff}
.olm-list-head{display:flex;align-items:center;justify-content:space-between;padding:9px 0}
.olm-members{padding-bottom:8px}
.olm-member{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line2)}
.olm-av{width:28px;height:28px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:10px;font-weight:700;flex:none}
.olm-mmeta{flex:1;min-width:0}
.olm-mmeta b{font-size:12px;color:var(--ink);display:block;line-height:1.3}
.olm-mmeta span{font-size:10.5px;color:var(--muted)}
.olm-rm{width:15px;color:#c0491f;cursor:pointer;opacity:.65;flex:none}
.olm-rm:hover{opacity:1}
.olm-addrow{display:flex;gap:8px;margin-top:10px}
.olm-addrow input{flex:1;border:1px solid var(--line);border-radius:7px;padding:7px 10px;font-size:12px;outline:none;font-family:inherit;color:#334}
.olm-addrow input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,96,176,.14)}
.olm-route{display:flex;align-items:center;gap:9px;padding:10px 0;border-bottom:1px solid var(--line2)}
.olm-route:last-child{border:none}
.olm-route .rn{flex:1;font-size:12.5px;color:var(--ink);font-weight:500}
.olm-route select,.olm-selpref{border:1px solid var(--line);border-radius:7px;padding:6px 9px;font-size:12px;outline:none;font-family:inherit;color:#334;background:#fff}
.olm-route select:focus,.olm-selpref:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,96,176,.14)}
.olm-toggle{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--line2)}
.olm-toggle .tl{font-size:12.5px;color:var(--ink);font-weight:500}
.olm-toggle .ts{font-size:10.5px;color:var(--muted);margin-top:2px;max-width:340px}
/* toggle switch */
.sw{position:relative;width:36px;height:20px;flex:none;display:inline-block}
.sw input{opacity:0;width:0;height:0;position:absolute}
.sw .sl{position:absolute;inset:0;background:#cbd5e1;border-radius:20px;transition:.15s;cursor:pointer}
.sw .sl::before{content:"";position:absolute;width:16px;height:16px;left:2px;top:2px;background:#fff;border-radius:50%;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.sw input:checked + .sl{background:var(--brand)}
.sw input:checked + .sl::before{transform:translateX(16px)}

/* ---- Integrations grid (Microsoft 365 suite) ---- */
.intg-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (max-width:900px){.intg-grid{grid-template-columns:1fr}}
.intg-card{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:11px;padding:12px 14px;background:#fff;transition:border-color .13s,box-shadow .13s}
.intg-card:hover{border-color:#d7dee8;box-shadow:0 2px 8px rgba(15,27,45,.05)}
.intg-logo{width:44px;height:44px;border-radius:10px;background:#fff;border:1px solid var(--line2);display:grid;place-items:center;flex:none}
.intg-logo svg{width:30px;height:30px}
.intg-body{flex:1;min-width:0}
.intg-name{font-size:13px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.intg-cat{font-size:9px;font-weight:700;color:var(--muted);background:var(--bg);border:1px solid var(--line2);padding:1px 6px;border-radius:20px;letter-spacing:.03em;text-transform:uppercase}
.intg-desc{font-size:11.5px;color:var(--muted);margin-top:3px;line-height:1.45}
.intg-actions{display:flex;flex-direction:column;align-items:flex-end;gap:7px;flex:none}
.btn-sm{padding:5px 10px;font-size:11px}

/* ================================================================
   Assure LIQS v2: product layer (sign-in, palette, release, CoA,
   result entry, drawers, motion). Built on the Descon tokens above.
   ================================================================ */
:root{ --panel-head:#fafbfc; --row-bad:#fdf1f1; --row-warn:#fff8ec; --ease:cubic-bezier(.2,.8,.2,1); }
body.dark{ --panel-head:#131b25; --row-bad:#2a1b1f; --row-warn:#2a2418; --brand-soft:#12304d; }

/* ---------- page headers ---------- */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.ph-t{font-size:18px;font-weight:700;color:var(--ink);letter-spacing:-0.02em}
.ph-s{font-size:12px;color:var(--muted);margin-top:3px}

/* ---------- motion ---------- */
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.content.enter > *{animation:rise .38s var(--ease) both}
.content.enter > *:nth-child(2){animation-delay:.04s}.content.enter > *:nth-child(3){animation-delay:.08s}
.content.enter > *:nth-child(4){animation-delay:.12s}.content.enter > *:nth-child(5){animation-delay:.16s}
.content.enter .kpi,.content.enter .status-item{animation:rise .42s var(--ease) both}
.content.enter .kpi:nth-child(2),.content.enter .status-item:nth-child(2){animation-delay:.04s}
.content.enter .kpi:nth-child(3),.content.enter .status-item:nth-child(3){animation-delay:.08s}
.content.enter .kpi:nth-child(4),.content.enter .status-item:nth-child(4){animation-delay:.12s}
.content.enter .kpi:nth-child(5){animation-delay:.16s}
.queue-item{transition:border-color .13s,transform .13s,box-shadow .13s}
.queue-item:hover{transform:translateX(2px);box-shadow:0 4px 14px rgba(15,27,45,.06)}
.queue-item.sel{border-color:var(--brand);background:var(--brand-soft)}
.status-item{transition:border-color .14s,box-shadow .14s}
.status-item:hover{border-color:#d5dbe4;box-shadow:0 6px 18px rgba(15,27,45,.06)}
.assistant-drawer{transition:width .26s var(--ease),min-width .26s var(--ease)}
.modal{animation:pop .2s var(--ease)}
@media (prefers-reduced-motion: reduce){ *,*::before,*::after{animation:none!important;transition:none!important} }

/* ---------- tables ---------- */
table.tbl tbody tr.clickable{cursor:pointer}
table.tbl.dense tbody td{padding:5px 11px}
table.tbl.dense thead th{padding:6px 11px}
.icon-sq.on{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.fchip{display:inline-flex;align-items:center;gap:5px;background:var(--brand-soft);color:var(--brand);border-radius:14px;padding:3px 6px 3px 10px;font-size:11px;white-space:nowrap}
.fchip svg{width:12px;height:12px;cursor:pointer}
.colpick{display:flex;flex-direction:column;gap:2px}
.cp-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-radius:7px;cursor:pointer;font-size:12.5px;color:var(--ink)}
.cp-row:hover{background:var(--brand-soft)}
.cp-row input{width:15px;height:15px;accent-color:var(--brand)}
.queue-empty{display:flex;align-items:center;gap:8px;color:var(--muted2);font-size:12px;padding:12px;border:1px dashed var(--line);border-radius:8px}
.queue-empty svg{width:15px;color:#0a9d78}
.lane-card{padding:10px!important;font-size:11.5px;cursor:pointer;transition:transform .13s,box-shadow .13s,border-color .13s}
.lane-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(15,27,45,.08);border-color:var(--brand)}
.lane-empty{font-size:11px;color:var(--muted2);text-align:center;padding:14px;border:1px dashed var(--line);border-radius:8px}
.seg-pills{display:flex;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:9px;padding:3px}
.seg-pills span{padding:4px 10px;border-radius:6px;font-size:11.5px;font-weight:600;color:var(--muted);cursor:pointer}
.seg-pills span.on{background:var(--brand);color:#fff}
.hint-bar{display:flex;align-items:center;gap:10px;background:var(--brand-soft);color:var(--ink);border-radius:10px;padding:10px 14px;font-size:12px}
.hint-bar svg{width:16px;color:var(--brand)}
.hint-bar a{color:var(--brand);font-weight:600;cursor:pointer;text-decoration:underline}
.tests-pill{font-size:11px;font-weight:600;color:var(--muted);background:#f1f4f8;border-radius:6px;padding:2px 8px}
.tests-pill.ok{color:#0a8f6d;background:#e7f6ef}.tests-pill.bad{color:var(--descon-red);background:#fdeaea}
.stock{font-weight:700;color:var(--ink)}.stock.out{color:var(--descon-red)}.stock.crit{color:#c2410c}.stock.low{color:#b7770a}
.ghs{display:inline-block;font-size:10px;font-weight:600;border:1px solid #f3c4c4;color:#b42318;background:#fff5f5;border-radius:5px;padding:1px 6px;margin:1px 3px 1px 0}
.live-dot{width:8px;height:8px;border-radius:50%;background:#0a9d78;box-shadow:0 0 0 0 rgba(10,157,120,.5);animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(10,157,120,.45)}70%{box-shadow:0 0 0 8px rgba(10,157,120,0)}100%{box-shadow:0 0 0 0 rgba(10,157,120,0)}}
.chart-tools svg.on{color:#0a9d78}

/* ---------- record drawer + timeline ---------- */
.rec .kv > span:last-child{text-align:right;max-width:62%}
.rec-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.rec-acts .btn{flex:1 1 auto;justify-content:center}
.tl{display:flex;margin:14px 0 4px;gap:0}
.tl-step{flex:1;font-size:10px;color:var(--muted2);text-align:center;position:relative;padding-top:16px}
.tl-step span{position:absolute;top:0;left:50%;transform:translateX(-50%);width:11px;height:11px;border-radius:50%;background:var(--line);border:2px solid var(--card);z-index:1}
.tl-step::before{content:"";position:absolute;top:5px;left:-50%;right:50%;height:2px;background:var(--line)}
.tl-step:first-child::before{display:none}
.tl-step.done{color:var(--ink)}.tl-step.done span{background:#0a9d78}.tl-step.done::before{background:#0a9d78}
.tl-step.cur{color:var(--brand);font-weight:700}.tl-step.cur span{background:var(--brand);box-shadow:0 0 0 4px rgba(0,96,176,.18)}.tl-step.cur::before{background:#0a9d78}
.hist{display:flex;flex-direction:column;gap:1px;padding:7px 0;border-bottom:1px solid var(--line2);font-size:12px}
.hist b{color:var(--ink);font-weight:600}.hist span{color:var(--muted2);font-size:10.5px}
.hist.row{flex-direction:row;justify-content:space-between;align-items:center}
.note-line{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);background:#f6f8fb;border-radius:8px;padding:9px 12px;margin-top:10px}
.note-line svg{width:15px;color:var(--brand);flex:none}
.note-line.bad{background:#fdeaea;color:#b42318}.note-line.bad svg{color:#b42318}
.ctx-k{font-size:10.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.ctx-v{font-size:13px;font-weight:600;color:var(--ink);margin-top:3px}
.ctx-box{border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:var(--card);display:flex;flex-direction:column;gap:4px;transition:border-color .2s,background .2s}
.ctx-box.bad{border-color:#f3b4b4;background:#fff7f7}.ctx-box.good{border-color:#bfe6d6;background:#f5fcf9}
.ctx-big{font-size:20px;font-weight:700;color:var(--ink);letter-spacing:-0.02em}.ctx-big span{font-size:11px;color:var(--muted);font-weight:500}

/* ---------- result entry ---------- */
.ls-item{display:flex;align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line2);border-left:3px solid transparent;cursor:pointer;transition:background .12s}
.ls-item:hover{background:#f7f9fb}
.ls-item.on{background:var(--brand-soft);border-left-color:var(--brand)}
.ls-item > svg:first-child{width:16px;color:var(--muted);flex:none}.ls-item.on > svg:first-child{color:var(--brand)}
.ls-t{font-weight:600;color:var(--ink);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls-m{color:var(--muted);font-size:10.5px;margin-top:3px;display:flex;align-items:center;gap:6px}
.ls-m .badge{font-size:9.5px;padding:1px 6px}
.dense-panel .lab-in,.bt-in{font-size:12.5px;padding:7px 6px;background:#f6f8fb;border:1px solid var(--line);border-radius:7px;color:var(--ink);font-weight:600;transition:border-color .15s,background .15s,box-shadow .15s}
.dense-panel .lab-in:focus,.bt-in:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(0,96,176,.14)}
.lab-in.ok{border-color:#bfe6d6;background:#f3fbf7;color:#0a8f6d}
.lab-in.oos{border-color:#f0a3a3;background:#fff1f1;color:var(--descon-red);box-shadow:0 0 0 3px rgba(225,31,38,.10)}
.lab-in:disabled{opacity:.75;cursor:not-allowed}

/* ---------- batch release ---------- */
.bt-head{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.bt-head > div{border:1px solid var(--line);border-radius:9px;padding:9px 11px;display:flex;flex-direction:column;gap:4px}
.bt-head span{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.bt-head b{color:var(--ink);font-size:13px}
.bt-sum{margin-top:10px;font-size:12px;color:var(--muted)}

/* ---------- certificate of analysis ---------- */
.coa-wrap{background:#eef1f5;border-radius:10px;padding:18px;display:flex;justify-content:center}
.coa-doc{background:#fff;color:#1f2937;width:100%;max-width:640px;padding:30px 34px;border-radius:4px;box-shadow:0 10px 30px rgba(15,27,45,.12);position:relative;font-family:'Inter','Roboto',Arial,sans-serif}
.coa-top{display:flex;align-items:center;gap:14px;border-bottom:2px solid #0060b0;padding-bottom:14px}
.coa-top img{height:44px}
.coa-co{flex:1;display:flex;flex-direction:column}.coa-co b{font-size:15px;color:#0f1b2d}.coa-co span{font-size:10.5px;color:#6b7280}
.coa-no{text-align:right;display:flex;flex-direction:column}.coa-no span{font-size:9.5px;color:#6b7280;text-transform:uppercase;letter-spacing:.06em}.coa-no b{font-size:13px;color:#0060b0}
.coa-title{font-size:19px;font-weight:700;letter-spacing:.02em;color:#0f1b2d;text-align:center;margin:18px 0 14px;text-transform:uppercase}
.coa-meta{display:grid;grid-template-columns:1fr 1fr;gap:6px 22px;font-size:11.5px;margin-bottom:16px}
.coa-meta div{display:flex;justify-content:space-between;border-bottom:1px dotted #d6dbe3;padding:4px 0}
.coa-meta span{color:#6b7280}.coa-meta b{color:#0f1b2d;font-weight:600}
.coa-tbl{width:100%;border-collapse:collapse;font-size:11.5px}
.coa-tbl th{background:#0060b0;color:#fff;text-align:left;padding:7px 9px;font-weight:600;font-size:10.5px;letter-spacing:.03em}
.coa-tbl td{padding:7px 9px;border-bottom:1px solid #e6e9ef}
.coa-tbl tr:nth-child(even) td{background:#f7f9fc}
.coa-tbl td.p{color:#0a8f6d;font-weight:700}.coa-tbl td.f{color:#e11f26;font-weight:700}
.coa-concl{margin:14px 0;font-size:12px;background:#f2f7fc;border-left:3px solid #0060b0;padding:9px 12px}
.coa-sign{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}
.coa-sign div{display:flex;flex-direction:column;border-top:1px solid #9aa3af;padding-top:6px}
.coa-sign span{font-size:9.5px;color:#6b7280;text-transform:uppercase;letter-spacing:.05em}.coa-sign b{font-size:11.5px;color:#0f1b2d}
.coa-foot{margin-top:18px;font-size:9.5px;color:#9aa3af;text-align:center}
.coa-void{position:absolute;inset:0;display:grid;place-items:center;font-size:72px;font-weight:800;color:rgba(225,31,38,.13);transform:rotate(-18deg);pointer-events:none;letter-spacing:.1em}

/* ---------- documents ---------- */
.doc-ic{width:32px;height:40px;background:#fdecec;color:#e03131;display:grid;place-items:center;border-radius:6px;flex:none}
.doc-ic.up{background:#e7f6ef;color:#0a8f6d}
.doc-hero{display:flex;flex-direction:column;align-items:center;gap:6px;padding:22px 0;background:#f8fafb;border-radius:10px;border:1px solid var(--line);cursor:pointer;color:#e03131;transition:border-color .15s}
.doc-hero:hover{border-color:var(--brand)}.doc-hero svg{width:44px;height:44px}.doc-hero span{font-size:11px;color:var(--brand);font-weight:600}
.doc-paper{background:#fff;color:#1f2937;border:1px solid var(--line);border-radius:8px;padding:26px 30px;max-height:520px;overflow:auto;box-shadow:inset 0 0 0 1px #fff}
.dp-head{display:flex;gap:12px;align-items:center;border-bottom:2px solid #0060b0;padding-bottom:10px}
.dp-head img{height:30px}.dp-head div{display:flex;flex-direction:column}.dp-head b{font-size:12px;color:#0f1b2d}.dp-head span{font-size:10.5px;color:#6b7280}
.dp-title{font-size:18px;font-weight:700;color:#0f1b2d;margin:16px 0 8px}
.dp-sec{margin-top:12px}.dp-sec b{display:block;color:#0060b0;font-size:12.5px;margin-bottom:4px}.dp-sec p{margin:0;font-size:12.5px;line-height:1.65;color:var(--text)}
.dp-foot{margin-top:20px;font-size:10px;color:#9aa3af;border-top:1px solid #eef1f5;padding-top:8px}
.drop{display:flex;flex-direction:column;align-items:center;gap:6px;border:2px dashed var(--line);border-radius:12px;padding:26px;text-align:center;color:var(--muted2);cursor:pointer;transition:border-color .15s,background .15s}
.drop:hover,.drop.over{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}
.drop svg{width:32px;height:32px}.drop b{color:var(--ink);font-size:13px}.drop span{font-size:11px}

/* ---------- SDS ---------- */
.sds-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.sds-picts{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.sds-p{display:flex;flex-direction:column;align-items:center;gap:4px;width:84px;font-size:10.5px;color:#b42318;font-weight:600}
.sds-p svg{width:34px;height:34px;padding:7px;border:2px solid #e11f26;transform:rotate(45deg);border-radius:4px}
.sds-p svg *{transform-origin:center}

/* ---------- labels / permissions / prefs ---------- */
.label-card{border:1px solid #111;border-radius:8px;padding:12px 14px;background:#fff;color:#111;max-width:340px;margin:0 auto}
.lc-top{display:flex;justify-content:space-between;font-size:10.5px;font-weight:700;letter-spacing:.05em;margin-bottom:4px}
.lc-id{font:700 18px 'Consolas','Menlo',monospace;text-align:center;letter-spacing:3px;margin-top:2px}
.lc-meta{display:flex;justify-content:space-between;font-size:10px;color:#444;margin-top:6px}
table.perm td,table.perm th{white-space:normal}
.pref{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink);padding:6px 0;cursor:pointer}
.pref input{width:15px;height:15px;accent-color:var(--brand)}
.avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.avatar.big{width:76px;height:76px;font-size:26px;margin:8px auto}
.badge-dot.has-count{width:auto;min-width:16px;height:16px;padding:0 4px;top:1px;right:1px;font-size:9.5px;font-weight:700;color:#fff;display:grid;place-items:center;line-height:1}

/* ---------- dropdowns next to the rail ---------- */
.dropdown.rail-dd{position:fixed;left:72px;bottom:14px;top:auto;right:auto;z-index:8000;max-height:78vh;display:flex;flex-direction:column;box-shadow:0 18px 50px rgba(2,6,23,.18);animation:pop .16s var(--ease)}
.dropdown.rail-dd.dd-notif{width:360px}.dropdown.rail-dd.dd-profile{width:260px}
.dd-scroll{overflow-y:auto}
.dd-act{font-size:11px;color:var(--brand);cursor:pointer;font-weight:600}
.dd-item.unread{background:#f5f9fd}.dd-item.unread .t::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--brand);margin-right:6px;vertical-align:middle}
.dd-who{display:flex;gap:10px;align-items:center;padding:14px;border-bottom:1px solid var(--line2)}
.dw-n{font-weight:700;color:var(--ink);font-size:13px}.dw-e{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px}
.dd-sub{display:none;padding:2px 0 4px 18px;border-bottom:1px solid var(--line2)}.dd-sub.open{display:block}
.dd-sub .dd-line{padding:6px 12px;font-size:12px}.dd-sub .dd-line.on{color:var(--brand);font-weight:600}
.dd-chev{margin-left:auto;width:13px!important}
.dd-line.danger{color:#d64545;border-top:1px solid var(--line2)}.dd-line.danger svg{color:#d64545}
.kbd{margin-left:auto;font-size:10px;font-weight:600;color:var(--muted);border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:0 5px;background:var(--card);font-family:inherit}

/* ---------- command palette ---------- */
#palette{display:none}#palette.open{display:block}
.pal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.38);backdrop-filter:blur(2px);z-index:9500;display:flex;justify-content:center;align-items:flex-start;padding-top:12vh;animation:fade .14s}
.pal{width:620px;max-width:92vw;background:var(--card);border-radius:14px;box-shadow:0 30px 80px rgba(2,6,23,.35);overflow:hidden;animation:pop .18s var(--ease);border:1px solid var(--line)}
.pal-in{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line2)}
.pal-in svg{width:18px;color:var(--muted)}
.pal-in input{flex:1;border:none;outline:none;font-size:15px;background:transparent;color:var(--ink);font-family:inherit}
.pal-list{max-height:52vh;overflow-y:auto;padding:6px}
.pal-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--ink)}
.pal-item svg{width:16px;color:var(--muted);flex:none}
.pal-item.sel{background:var(--brand-soft)}.pal-item.sel svg{color:var(--brand)}
.pi-t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pi-s{color:var(--muted2);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.pi-k{margin-left:auto;font-size:10px;font-weight:600;color:var(--muted);background:#f1f4f8;border-radius:5px;padding:2px 7px;flex:none}
.pal-foot{display:flex;gap:16px;align-items:center;padding:9px 14px;border-top:1px solid var(--line2);font-size:11px;color:var(--muted)}
.pal-foot > span:last-child{margin-left:auto}.pal-foot .kbd{margin:0 3px 0 0}

/* ---------- export options ---------- */
.exp-opts{display:flex;flex-direction:column;gap:8px}
.exp-opt{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:12px 14px;cursor:pointer;transition:border-color .13s,background .13s}
.exp-opt:hover{border-color:var(--brand);background:var(--brand-soft)}
.exp-opt svg{width:22px;color:var(--brand);flex:none}
.exp-opt div{display:flex;flex-direction:column}.exp-opt b{color:var(--ink);font-size:13px}.exp-opt span{color:var(--muted);font-size:11.5px}

/* ---------- assistant panel ---------- */
.dchat{display:flex;flex-direction:column;height:100%;min-height:0}
.assistant-drawer > div:last-child{display:flex;flex-direction:column;min-height:0}
.dchat-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding-bottom:8px}
.dm{display:flex;gap:8px;font-size:12.5px;line-height:1.55}
.dm.user{justify-content:flex-end}
.dm .dm-b{max-width:86%;padding:10px 12px;border-radius:12px}
.dm.user .dm-b{background:var(--brand);color:#fff;border-top-right-radius:3px}
.dm.bot .dm-b{background:#f3f5f8;color:var(--text);border-top-left-radius:3px}
.dm.bot .dm-b p{margin:0 0 6px}.dm.bot .dm-b p:last-child{margin-bottom:0}
.dm-av{width:26px;height:26px;border-radius:8px;background:var(--brand);color:#fff;display:grid;place-items:center;flex:none}
.dm-av svg{width:14px;height:14px}
.dm.reveal{animation:rise .35s var(--ease)}
.dchat-sugg{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0}
.dchat-in{margin:4px 0 0!important}
.dots{display:inline-flex;gap:3px;vertical-align:middle}.dots i{width:5px;height:5px;border-radius:50%;background:var(--brand);animation:bounce 1s infinite}
.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
.dthink-t{color:var(--muted);font-size:11.5px}
.ai-link{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:var(--card);color:var(--brand);border-radius:7px;padding:4px 9px;font-size:11.5px;font-weight:600;cursor:pointer;margin:2px 4px 2px 0;font-family:inherit}
.ai-link:hover{border-color:var(--brand);background:var(--brand-soft)}.ai-link svg{width:12px;height:12px}

/* ---------- sign-in ---------- */
body.signed-out .workspace-layout{filter:blur(3px);pointer-events:none}
#login-screen{position:fixed;inset:0;z-index:10000;display:grid;grid-template-columns:1.15fr 1fr;background:#0b1626;transition:opacity .4s var(--ease),transform .4s var(--ease)}
#login-screen.leaving{opacity:0;transform:scale(1.015)}
.login-art{position:relative;overflow:hidden;background:radial-gradient(1200px 600px at 10% 110%,#12395f 0%,transparent 60%),linear-gradient(160deg,#0e1c2e,#0a1424);display:flex;align-items:flex-end;padding:56px}
.la-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(180deg,transparent,#000 40%,#000 70%,transparent)}
.la-copy{position:relative;max-width:520px;color:#e7edf4}
.la-kicker{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#7fb3e6;font-weight:600}
.la-title{font-size:34px;line-height:1.18;font-weight:700;letter-spacing:-0.025em;margin:14px 0 26px;text-wrap:balance}
.la-points{display:flex;flex-direction:column;gap:12px;font-size:13.5px;color:#a7b4c4}
.la-points div{display:flex;align-items:center;gap:10px}.la-points svg{width:17px;color:#4ea0ea}
.login-side{background:var(--bg);display:grid;place-items:center;padding:24px}
.login-card{width:380px;max-width:100%;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:30px 30px 22px;box-shadow:0 24px 60px rgba(2,6,23,.12);animation:rise .5s var(--ease)}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.login-brand img{height:42px}.lb-t{font-weight:800;font-size:16px;color:var(--ink);letter-spacing:-0.01em}.lb-s{font-size:11px;color:var(--muted)}
.login-h{font-size:22px;font-weight:700;color:var(--ink);letter-spacing:-0.02em}
.login-sub{font-size:12.5px;color:var(--muted);margin:4px 0 18px}
.ms-btn{width:100%;justify-content:center;background:var(--card);border:1px solid var(--line);color:var(--ink);padding:10px;font-size:13px}
.ms-btn:hover{border-color:#8a96a8;filter:none}
.login-or{display:flex;align-items:center;gap:10px;color:var(--muted2);font-size:11px;margin:16px 0 10px}
.login-or::before,.login-or::after{content:"";flex:1;height:1px;background:var(--line)}
.login-go{width:100%;justify-content:center;padding:10px;font-size:13px;margin-top:4px}
.login-go .spin{animation:spin .8s linear infinite}
.login-foot{display:flex;align-items:center;gap:6px;justify-content:center;font-size:10.5px;color:var(--muted2);margin-top:16px}
.sso-wait{display:flex;flex-direction:column;align-items:center;gap:8px;padding:30px 0 20px;text-align:center}
.sso-t{font-weight:700;color:var(--ink);font-size:15px;margin-top:6px}.sso-s{font-size:12px;color:var(--muted)}
.sso-bar{width:180px;height:3px;background:var(--line);border-radius:3px;overflow:hidden;margin-top:12px}
.sso-bar i{display:block;height:100%;width:40%;background:var(--brand);border-radius:3px;animation:slide 1.1s var(--ease) infinite}
@keyframes slide{from{transform:translateX(-100%)}to{transform:translateX(250%)}}
.spin{animation:spin .8s linear infinite}
@media (max-width: 900px){ #login-screen{grid-template-columns:1fr} .login-art{display:none} }

/* ---------- dark mode for the new pieces ---------- */
body.dark .ls-item:hover{background:#1a2430}
body.dark .dense-panel .lab-in,body.dark .bt-in{background:#1a2430;border-color:#2a3646;color:#e6ecf3}
body.dark .lab-in.ok{background:#12291f;border-color:#1f5a43;color:#4fd1a5}
body.dark .lab-in.oos{background:#2e171a;border-color:#7a2a2f;color:#ff8a8f}
body.dark .ctx-box{background:#161f2b;border-color:#243040}
body.dark .ctx-box.bad{background:#2a1b1f;border-color:#6b2b30}body.dark .ctx-box.good{background:#13261f;border-color:#1f5a43}
body.dark .note-line{background:#1a2430}
body.dark .dm.bot .dm-b{background:#1b2531;color:#c4cdd8}
body.dark .pi-k,body.dark .tests-pill{background:#1f2a37}
body.dark .doc-hero{background:#1a2430;border-color:#243040}
body.dark .dd-item.unread{background:#152232}
body.dark .bt-head > div,body.dark .exp-opt,body.dark .drop{border-color:#243040}
body.dark .hint-bar{background:#12304d}
body.dark .queue-empty,body.dark .lane-empty{border-color:#2a3646}
body.dark .coa-wrap{background:#0f1720}
body.dark .doc-paper{border-color:#243040}
body.dark .ph-t,body.dark .login-h,body.dark .lb-t{color:#e6ecf3}
body.dark .ghs{background:#2a1b1f;border-color:#6b2b30;color:#ff9a9e}

/* result-entry fit fixes */
.dense-grid{grid-template-columns:250px minmax(0,1fr) 270px}
.dense-panel > .card-head:last-of-type{flex-wrap:wrap;gap:8px}
.dense-panel > .card-head:last-of-type > div{flex-wrap:wrap}
.dense-panel .card-head .btn{white-space:nowrap}
#lab-status{flex:1 1 180px}
.dense-panel table.tbl{min-width:0!important}
.dense-panel table.tbl td input.lab-in{min-width:58px}
.dense-panel table.tbl td{padding-left:8px;padding-right:8px}

/* table tool buttons */
.tbtn{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--muted);cursor:pointer;flex:none;transition:background .13s,color .13s}
.tbtn:hover{background:var(--brand-soft);color:var(--brand)}
.tbtn.on{background:var(--brand-soft);color:var(--brand)}
.tbtn svg{width:15px;height:15px}

/* drawer header, pipeline lanes, dark-mode text */
.drawer-head{background:var(--panel-head)}
.drawer-head .fp-title{color:var(--ink)}
.workspace-board > .pipeline-board{flex:1;min-height:0;align-items:stretch}
.pipeline-lane{overflow-y:auto;max-height:100%}
.lane-card{flex:none}
body.dark .kv span:first-child{color:#8a95a3}
body.dark .kv > span:last-child{color:#e6ecf3}
body.dark .kv{border-color:#243040}
body.dark .lane-count{background:#243040;color:#c4cdd8}
body.dark .tl-step span{border-color:#161f2b}
body.dark .assistant-drawer{background:#161f2b}
body.dark .drawer-head .fp-title{color:#e6ecf3}
body.dark .modal-title,body.dark .card-title,body.dark .qi-title,body.dark .ls-t,body.dark .ctx-v,body.dark .ctx-big,body.dark .bt-head b,body.dark .exp-opt b,body.dark .drop b,body.dark .dw-n,body.dark .pal-item{color:#e6ecf3}
body.dark table.tbl tbody td{color:#c4cdd8}
body.dark .dd-line{color:#c4cdd8}body.dark .dd-line:hover,body.dark .dd-item:hover{background:#1a2430}
body.dark .dd-item .t{color:#e6ecf3}

/* ===== v2.1: clock in/out, PIN pad, tablet mode, profile switch, customers ===== */
.net-chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:#0a8f6d;background:#e7f6ef;border-radius:20px;padding:5px 11px;white-space:nowrap}
.net-chip svg{width:13px;height:13px}
body.dark .net-chip{background:#13261f;color:#4fd1a5}
.clock-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.clock-card{padding:18px;gap:8px;align-items:flex-start}
.clock-card .cc-ic{width:40px;height:40px;border-radius:11px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center}
.clock-card .cc-ic svg{width:20px;height:20px}
.clock-card .cc-t{font-weight:700;color:var(--ink);font-size:15px}
.clock-card .cc-s{font-size:12px;color:var(--muted);flex:1;line-height:1.5}
.clock-card.on{border-color:#bfe6d6;background:linear-gradient(0deg,var(--card),var(--card))}
.clock-card.on .cc-ic{background:#e7f6ef;color:#0a8f6d}
.toast-act{margin-left:8px;border:1px solid var(--line);background:var(--card);color:var(--brand);border-radius:6px;padding:3px 8px;font-size:11.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.qr-wrap{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.qr-box{width:216px;height:216px;padding:8px;background:#fff;border:1px solid var(--line);border-radius:12px;display:grid;place-items:center}
.qr-txt{flex:1;min-width:200px;display:flex;flex-direction:column;gap:8px;font-size:12.5px;color:var(--muted);line-height:1.55}
.qr-txt b{color:var(--ink);font-size:15px}
.qr-url{font-family:Consolas,monospace;font-size:11px;color:var(--brand);word-break:break-all}
#pin-host{display:none}#pin-host.open{display:block}
.pin-overlay{position:fixed;inset:0;z-index:12000;background:rgba(10,20,36,.55);backdrop-filter:blur(3px);display:grid;place-items:center;animation:fade .15s}
.pin-card{width:300px;background:var(--card);border-radius:18px;padding:24px 22px 18px;text-align:center;box-shadow:0 30px 80px rgba(2,6,23,.4);animation:pop .2s var(--ease)}
.pin-card.shake{animation:shake .35s}
@keyframes shake{20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}
.pin-t{font-size:17px;font-weight:700;color:var(--ink)}
.pin-s{font-size:12px;color:var(--muted);margin:4px 0 14px;min-height:16px}
.pin-dots{display:flex;justify-content:center;gap:12px;margin-bottom:16px}
.pin-dots i{width:13px;height:13px;border-radius:50%;border:2px solid var(--line);transition:.12s}
.pin-dots i.on{background:var(--brand);border-color:var(--brand)}
.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.pin-pad button{height:54px;border-radius:14px;border:1px solid var(--line);background:var(--bg);font-size:20px;font-weight:600;color:var(--ink);cursor:pointer;font-family:inherit;transition:background .1s,transform .08s}
.pin-pad button:active{transform:scale(.96);background:var(--brand-soft)}
#kiosk{display:none}#kiosk.open{display:block}
.ks{position:fixed;inset:0;z-index:11000;background:linear-gradient(160deg,#0e1c2e,#0a1424);color:#e7edf4;display:flex;flex-direction:column;padding:26px 34px;overflow:auto;animation:fade .2s}
.ks-top{display:flex;align-items:center;gap:16px}
.ks-brand{display:flex;gap:12px;align-items:center;flex:1}.ks-brand img{height:40px;background:#fff;border-radius:8px;padding:3px}
.ks-brand b{display:block;font-size:18px}.ks-brand span{font-size:13px;color:#a7b4c4}
.ks-clock{font-size:38px;font-weight:700;letter-spacing:-0.02em;font-variant-numeric:tabular-nums}
.ks-exit{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid #2a3b52;color:#a7b4c4;border-radius:10px;padding:9px 14px;cursor:pointer;font-family:inherit}
.ks-exit svg{width:15px}
.ks-hint{font-size:22px;font-weight:600;margin:28px 0 16px;color:#cfd9e6}
.ks-msg{display:flex;gap:14px;align-items:center;margin:22px 0 14px;padding:16px 20px;border-radius:14px;font-size:14px;animation:rise .3s var(--ease)}
.ks-msg svg{width:30px;height:30px}.ks-msg b{display:block;font-size:20px}.ks-msg span{color:#cfd9e6}
.ks-msg.in{background:#0f3b2c}.ks-msg.out{background:#173252}
.ks-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.ks-tile{display:flex;flex-direction:column;align-items:center;gap:6px;padding:20px 12px;border-radius:16px;background:#14263c;border:1px solid #213650;color:#e7edf4;cursor:pointer;font-family:inherit;transition:transform .1s,border-color .15s}
.ks-tile:hover{border-color:#4ea0ea}.ks-tile:active{transform:scale(.97)}
.ks-tile b{font-size:15px}.ks-tile span:last-child{font-size:12px;color:#8fa3ba}
.ks-tile.on{border-color:#1f8f6a;background:#10301f}.ks-tile.on span:last-child{color:#5fd3a6}
.ks-av{width:52px;height:52px;border-radius:50%;background:#0060b0;color:#fff;display:grid;place-items:center;font-weight:700;font-size:18px}
.ps-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;max-height:52vh;overflow:auto}
.ps-tile{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 8px;border-radius:12px;border:1px solid var(--line);background:var(--card);cursor:pointer;font-family:inherit;color:var(--ink)}
.ps-tile:hover{border-color:var(--brand);background:var(--brand-soft)}
.ps-tile.on{border-color:var(--brand);background:var(--brand-soft)}
.ps-tile .ks-av{width:40px;height:40px;font-size:14px}.ps-tile b{font-size:12.5px}.ps-tile span:last-child{font-size:11px;color:var(--muted)}
.dd-note{font-size:11px;color:var(--muted);padding:6px 12px;background:var(--brand-soft)}
.coa-extra{font-size:11px;color:#4b5563;margin:-6px 0 12px;padding:6px 9px;background:#f7f9fc;border-radius:5px}
@media (max-width:900px){ .clock-grid{grid-template-columns:1fr} }

/* ===== v2.2: QR station, phone scan page, handover gate ===== */
#station,#scan-screen{display:none}#station.open,#scan-screen.open{display:block}
.st{position:fixed;inset:0;z-index:12500;background:linear-gradient(160deg,#0e1c2e,#0a1424);color:#e7edf4;display:flex;flex-direction:column;padding:26px 40px;overflow:auto}
.st-top{display:flex;align-items:center;gap:16px}
.st-body{flex:1;display:flex;align-items:center;justify-content:center;gap:56px;flex-wrap:wrap;padding:20px 0}
.st-qr{display:flex;flex-direction:column;align-items:center;gap:12px}
.st-qrbox{width:336px;height:336px;background:#fff;border-radius:22px;padding:18px;display:grid;place-items:center;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.st-bar{width:300px;height:5px;border-radius:5px;background:#1d3150;overflow:hidden}
.st-bar i{display:block;height:100%;background:#4ea0ea;transition:width 1s linear}
.st-note{font-size:12px;color:#8fa3ba}
.st-side{max-width:420px}
.st-h{font-size:34px;font-weight:700;letter-spacing:-0.02em;line-height:1.15}
.st-steps{margin:18px 0;padding-left:22px;font-size:17px;color:#cfd9e6;line-height:1.9}
.st-sub{font-size:14px;color:#f5c46b;background:#2b2412;border-radius:10px;padding:10px 14px}
.st-recent{margin-top:20px}
.st-rh{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#8fa3ba;margin-bottom:6px}
.st-ri{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid #1d3150;font-size:14px}
.st-ri span{color:#8fa3ba}
.st-foot{display:flex;justify-content:space-between;font-size:12px}
.st-foot a{color:#8fa3ba;cursor:pointer;text-decoration:underline}
.sc{position:fixed;inset:0;z-index:12600;background:var(--bg);overflow:auto;padding:22px 18px 30px;display:flex;flex-direction:column;gap:14px;max-width:520px;margin:0 auto}
.sc-head{display:flex;gap:10px;align-items:center}.sc-head img{height:34px}
.sc-head b{display:block;color:var(--ink);font-size:16px}.sc-head span{font-size:12px;color:var(--muted)}
.sc-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:26px 20px;border-radius:18px;background:var(--card);border:1px solid var(--line)}
.sc-card svg{width:46px;height:46px;color:var(--brand)}
.sc-card b{font-size:20px;color:var(--ink)}.sc-card span{font-size:13.5px;color:var(--muted);line-height:1.5}
.sc-card.good{border-color:#bfe6d6;background:#f3fbf7}.sc-card.good svg{color:#0a9d78}
.sc-card.out{border-color:#c7dcf2;background:#f2f7fc}
.sc-card.bad svg{color:#e0930b}
.sc-warn{color:#b7770a!important;font-weight:600}.sc-ok{color:#0a8f6d!important;font-weight:600}
.sc-search{width:100%}
.sc-list{display:flex;flex-direction:column;gap:8px}
.sc-person{display:flex;gap:12px;align-items:center;padding:12px;border-radius:14px;border:1px solid var(--line);background:var(--card);cursor:pointer;text-align:left;font-family:inherit}
.sc-person .ks-av{width:40px;height:40px;font-size:14px}
.sc-person b{display:block;color:var(--ink)}.sc-person span{font-size:12px;color:var(--muted)}
.sc-dev{font-size:11px;color:var(--muted2);text-align:center;margin-top:auto}
.sc-hint{text-align:center;font-size:12.5px;color:var(--muted)}
.hg{display:flex;flex-direction:column;gap:12px}
.hg-t{display:flex;gap:10px;align-items:flex-start;font-weight:600;color:var(--ink);font-size:14px;line-height:1.45}
.hg-t svg{width:20px;color:var(--brand);flex:none}
.hg-opt .btn{width:100%;justify-content:center;padding:11px}
.hg-or{display:flex;align-items:center;gap:10px;color:var(--muted2);font-size:11px}
.hg-or::before,.hg-or::after{content:"";flex:1;height:1px;background:var(--line)}
#sc-panel .hg{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px}

/* v2.3 shared clock sync */
.live-chip{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:600;border-radius:20px;padding:5px 11px;white-space:nowrap;color:var(--muted);background:var(--bg2,#eef1f5)}
.live-chip i{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}
.live-chip.on{color:#0a8f6d;background:#e7f6ef}.live-chip.on i{animation:pulse 2s infinite}
.live-chip.off{color:#b7770a;background:#fdf3e1}
body.dark .live-chip.on{background:#13261f;color:#4fd1a5}body.dark .live-chip.off{background:#2b2412;color:#f5c46b}
.st .live-chip.on{background:#13261f;color:#4fd1a5}.st .live-chip.off{background:#2b2412;color:#f5c46b}.st .live-chip{background:#16263c;color:#8fa3ba}
.st-ri span.in{color:#4fd1a5}.st-ri span.out{color:#8fbff0}
.st-flash{position:fixed;left:50%;bottom:44px;transform:translate(-50%,30px);opacity:0;pointer-events:none;transition:transform .35s ease,opacity .35s ease;
  display:flex;flex-direction:column;align-items:center;gap:4px;padding:18px 34px;border-radius:18px;background:#0a9d78;color:#fff;box-shadow:0 20px 60px rgba(0,0,0,.4);z-index:12600;text-align:center}
.st-flash.out{background:#1f6fc0}
.st-flash.show{opacity:1;transform:translate(-50%,0)}
.st-flash b{font-size:28px;letter-spacing:-0.01em}.st-flash span{font-size:16px;opacity:.9}
.sc-sync{display:flex;align-items:center;justify-content:center;gap:7px;font-size:12.5px;color:var(--muted)}
.sc-sync svg{width:15px;height:15px}.sc-sync.ok{color:#0a8f6d}.sc-sync.wait{color:#b7770a}
.spin{animation:spin .8s linear infinite}
@media (prefers-reduced-motion:reduce){.st-flash{transition:none}.live-chip.on i,.spin{animation:none}}

/* v2.4 Plant Sheet (TD-3-004) */
.ls-sec{font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted2);padding:12px 12px 4px}
.pas{display:flex;flex-direction:column;gap:14px}
.pas-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.pas-src{margin-top:8px;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pas-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pas-date{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:0 8px;background:var(--card);height:34px}
.pas-date svg{width:14px;color:var(--muted)}
.pas-date select{border:0;background:transparent;font:inherit;font-size:12.5px;color:var(--ink);height:32px;outline:none}
.pas-oos .card-head{flex-wrap:wrap;gap:6px}
.pas-oos-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px;padding:12px 14px 14px}
.pas-oos-i{display:grid;grid-template-columns:1fr auto;gap:1px 10px;text-align:left;border:1px solid #f3d6a2;background:#fffaf0;border-radius:10px;padding:8px 10px;cursor:pointer;font:inherit;color:var(--ink)}
.pas-oos-i:hover{border-color:#e0930b}.pas-oos-i:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.pas-oos-i b{font-size:12px;grid-column:1}.pas-oos-i span{font-size:11.5px;color:var(--muted);grid-column:1}
.pas-oos-i em{font-style:normal;font-weight:700;color:#c0392b;grid-column:2;grid-row:1/3;align-self:center;font-size:15px;font-variant-numeric:tabular-nums}
.pas-oos-i em small{font-weight:500;font-size:10.5px;color:var(--muted)}
.pas-oos-i i{font-style:normal;font-size:10.5px;color:#b7770a;grid-column:1/3}
body.dark .pas-oos-i{background:#2b2412;border-color:#5a4520}
.pas-sec{display:flex;flex-direction:column;gap:10px}
.pas-sec-h{display:flex;align-items:baseline;gap:12px;border-bottom:2px solid var(--ink);padding-bottom:6px}
.pas-sec-h h2{margin:0;font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.pas-sec-h span{font-size:12px;color:var(--muted)}
.pas-bad{color:#c0392b}
.pas-blocks{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px;align-items:start}
.pas-b{background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden;min-width:0}
.pas-b.wide{grid-column:1/-1}
.pas-bh{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--panel-head)}
.pas-bh b{font-size:12.5px;color:var(--ink)}.pas-bh span{font-size:11px;color:var(--muted)}
.pas-bh .btn{margin-left:auto}
.pas-tw{overflow-x:auto}
.pas-t{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}
.pas-t th{font-size:10.5px;font-weight:600;color:var(--muted);text-align:center;padding:6px 6px;border-bottom:1px solid var(--line);white-space:nowrap}
.pas-t th:first-child{text-align:left;padding-left:12px}
.pas-t td{padding:5px 6px;border-bottom:1px solid var(--line2);text-align:center;white-space:nowrap}
.pas-t tr:last-child td{border-bottom:0}
.pas-p{text-align:left!important;padding-left:12px!important;font-weight:600;color:var(--ink)}
.pas-p small{font-weight:400;color:var(--muted);font-size:10.5px}
.pas-loc{display:block;font-weight:400}
.pas-r{color:var(--muted);font-size:11px}
.pas-line{font-size:10.5px;color:var(--muted);font-weight:600}
.pas-new td{background:rgba(10,157,120,.035)}
.pas-c{color:var(--ink);min-width:44px}
.pas-c.bad{background:#fdecea;color:#c0392b;font-weight:700}
.pas-c.ok{color:var(--ink)}
body.dark .pas-c.bad{background:#3a1d1b;color:#ff8a80}
.pas-avg{font-weight:600;border-left:1px solid var(--line)}
.pas-nil{color:var(--muted2)}
.pas-k{font-weight:600;color:var(--ink)}
.pas-empty{color:var(--muted2);font-size:11.5px;padding:12px!important}
.pas-in{width:58px;border:1px solid var(--line);border-radius:5px;padding:4px 5px;font:inherit;font-size:12px;text-align:center;background:var(--card);color:var(--ink)}
.pas-in:focus{outline:2px solid var(--brand);outline-offset:0;border-color:transparent}
.pas-c.bad .pas-in{border-color:#e9a39b;color:#c0392b;font-weight:700;background:transparent}
.pas-x{border:0;background:transparent;color:var(--muted);cursor:pointer;padding:2px;display:inline-flex}.pas-x svg{width:14px}
.pas-flash{animation:pasflash 1.6s ease}
@keyframes pasflash{0%,40%{box-shadow:inset 0 0 0 2px #e0930b}100%{box-shadow:inset 0 0 0 2px transparent}}
.pas-foot{padding:14px;display:flex;flex-direction:column;gap:12px}
.pas-signs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.pas-sign{border:1px dashed var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.pas-sign.done{border-style:solid;border-color:#bfe6d6;background:#f3fbf7}
body.dark .pas-sign.done{background:#13261f;border-color:#1f4a3a}
.pas-sign b{font-size:12.5px;color:var(--ink)}.pas-sign small{font-size:11px;color:var(--muted)}
.pas-from{font-size:10.5px;color:var(--muted2)}
.pas-ok{color:#0a8f6d;font-weight:600;font-size:12px}
.pas-dist{font-size:11.5px;color:var(--muted);line-height:1.6}.pas-dist b{color:var(--ink)}
.pas-imp{display:grid;gap:8px}
.pas-imp div{display:grid;grid-template-columns:130px 1fr;gap:10px;font-size:13px}.pas-imp span{color:var(--muted)}
.pas-warn{margin-top:12px;font-size:12.5px;color:#b7770a;background:#fdf3e1;border-radius:8px;padding:8px 10px}
.pas-trends{display:grid;gap:14px}.pas-tt{font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:4px}.pas-tt small{color:var(--muted);font-weight:400}
@media (max-width:640px){.pas-signs{grid-template-columns:1fr}.pas-blocks{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.pas-flash{animation:none}}
body.dark .pas-warn{background:#2b2412;color:#f5c46b}

/* v2.5 exact TD-3-004 sheet view */
.pas-viewbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.pas-viewbar .seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--card)}
.pas-viewbar .seg button{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;padding:7px 12px;font:inherit;font-size:12.5px;color:var(--muted);cursor:pointer}
.pas-viewbar .seg button svg{width:14px}
.pas-viewbar .seg button.on{background:var(--brand);color:#fff}
.pas-zoom{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:8px;padding:2px;background:var(--card)}
.pas-zoom button{border:0;background:transparent;padding:5px 7px;cursor:pointer;color:var(--ink);display:inline-flex;border-radius:6px;font:inherit;font-size:12px}
.pas-zoom button:hover{background:var(--line2)}.pas-zoom button svg{width:14px}
.pas-zoom span{font-size:12px;min-width:40px;text-align:center;color:var(--muted);font-variant-numeric:tabular-nums}
.pas-zoom .pas-fit{border-left:1px solid var(--line);border-radius:0 6px 6px 0}
.pas-editing{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#0a7a5c;background:#e7f6ef;border-radius:20px;padding:5px 11px}
.pas-editing svg{width:13px}
.xls-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px;padding:20px;max-height:calc(100vh - 150px);box-shadow:0 1px 3px rgba(15,27,45,.06)}
.xls{border-collapse:collapse;table-layout:fixed;font-family:Arial,Helvetica,sans-serif;font-size:10pt;color:#000;background:#fff}
.xls td{padding:0 2px;overflow:visible;line-height:1.12;color:#000}
.xls td.xn{text-align:right}
.xls td.xbad{color:#ff0000!important}
.xls td:target,.xls td.pas-flash{animation:pasflash 1.6s ease}
.xls-in{display:block;width:100%;height:100%;min-height:18px;border:0;margin:0;background:#eef5ff;font:inherit;color:inherit;text-align:inherit;padding:0 1px;outline:none;box-sizing:border-box}
.xls-in:focus{background:#fff;box-shadow:inset 0 0 0 2px #0060b0}
.xls td.xbad .xls-in{color:#ff0000}
.xls-sign{font:inherit;font-size:8.5pt;padding:2px 12px;border:1px solid #0a9d78;background:#e7f6ef;color:#0a7a5c;border-radius:4px;cursor:pointer}
.xls-sign:focus-visible{outline:2px solid #0060b0;outline-offset:1px}
.xls-signed{color:#0a7a5c;font-weight:700}
body.dark .xls-wrap{border-color:#2a3442}
.xls-sheet{position:relative;display:inline-block}
.xls-draw{position:absolute;inset:0;pointer-events:none}
.xd-line{position:absolute;background:#000}
.xd-pic{position:absolute;object-fit:contain}
.xd-text{position:absolute;border:1px solid #000;background:#fff;font:10pt Arial,Helvetica,sans-serif;color:#000;white-space:pre-wrap;padding:2px 4px;line-height:1.2;overflow:hidden}
.xls-draw svg{position:absolute;left:0;top:0;overflow:visible}
.xd-art{position:absolute;display:flex;align-items:center;justify-content:center;font-family:'Arial Black',Arial,sans-serif;font-weight:900;color:transparent;-webkit-text-stroke:1px #000;letter-spacing:.04em;line-height:1;white-space:nowrap;overflow:hidden}
.xd-text{font-size:9pt!important}
