*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg0:#080c14;--bg1:#0d1220;--bg2:#121828;--bg3:#1a2235;--bg4:#222d42;
  --border:rgba(255,255,255,0.09);--border2:rgba(255,255,255,0.16);
  --text1:#edf1f8;--text2:#a8b4c8;--text3:#6b7a92;
  --blue:#4a8ff0;--bd:rgba(74,143,240,0.15);--bb:rgba(74,143,240,0.3);
  --green:#22c78a;--gd:rgba(34,199,138,0.12);--gb:rgba(34,199,138,0.3);
  --amber:#f0a020;--ad:rgba(240,160,32,0.12);--ab:rgba(240,160,32,0.3);
  --red:#e85555;--rd:rgba(232,85,85,0.12);--rb:rgba(232,85,85,0.3);
  --purple:#9b7cf0;--pd:rgba(155,124,240,0.12);--pb:rgba(155,124,240,0.3);
  --teal:#20c0d0;--td:rgba(32,192,208,0.12);--tb:rgba(32,192,208,0.3);
  --r:8px;--rl:12px;--rxl:16px;
  --sh:0 8px 32px rgba(0,0,0,0.5);
  --fn:'Noto Sans SC',sans-serif;--mo:'JetBrains Mono',monospace;
  --blue-t:#7ab4f5;--green-t:#3dd9a0;--amber-t:#f0bc5a;--red-t:#f07070;--purple-t:#c0a8f8;--teal-t:#40d8e8;
  --line:rgba(255,255,255,0.04);--soft:rgba(255,255,255,0.05);
}
[data-theme="light"]{
  --bg0:#eef1f6;--bg1:#ffffff;--bg2:#f7f9fc;--bg3:#e9edf4;--bg4:#d9e0ec;
  --border:rgba(15,23,42,0.08);--border2:rgba(15,23,42,0.18);
  --text1:#182131;--text2:#5b6b84;--text3:#8a99b0;
  --blue:#3b76e0;--bd:rgba(59,118,224,0.10);--bb:rgba(59,118,224,0.32);
  --green:#14a06e;--gd:rgba(20,160,110,0.10);--gb:rgba(20,160,110,0.32);
  --amber:#d97706;--ad:rgba(217,119,6,0.10);--ab:rgba(217,119,6,0.34);
  --red:#d64545;--rd:rgba(214,69,69,0.10);--rb:rgba(214,69,69,0.32);
  --purple:#7c5ce0;--pd:rgba(124,92,224,0.10);--pb:rgba(124,92,224,0.32);
  --teal:#0e97a8;--td:rgba(14,151,168,0.10);--tb:rgba(14,151,168,0.32);
  --blue-t:#2563eb;--green-t:#059669;--amber-t:#b45309;--red-t:#dc2626;--purple-t:#7c3aed;--teal-t:#0e7490;
  --line:rgba(15,23,42,0.06);--soft:rgba(15,23,42,0.05);
  --sh:0 8px 24px rgba(15,23,42,0.08);
}
html,body{height:100%;overflow:hidden;background:var(--bg0);color:var(--text1);font-family:var(--fn);font-size:14px;line-height:1.6}
#app{display:flex;height:100vh}
#sb{width:240px;background:var(--bg1);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:rgba(107,122,146,.45) transparent;transition:width .24s ease,transform .24s ease,opacity .2s ease,border-color .24s ease}
#sb::-webkit-scrollbar{width:10px}
#sb::-webkit-scrollbar-track{background:transparent}
#sb::-webkit-scrollbar-thumb{background:rgba(107,122,146,.35);border:2px solid transparent;background-clip:padding-box;border-radius:999px}
#sb:hover::-webkit-scrollbar-thumb{background:rgba(107,122,146,.58);border:2px solid transparent;background-clip:padding-box}
#sb:hover::-webkit-scrollbar-thumb:hover{background:rgba(122,180,245,.55);border:2px solid transparent;background-clip:padding-box}
#main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;min-height:0}
@media (min-width: 769px){
  #app.sb-collapsed #sb{width:0;transform:translateX(-22px);opacity:0;pointer-events:none;border-right-color:transparent}
}
#topbar{height:56px;background:var(--bg1);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:10px;flex-shrink:0}
#cnt{flex:1;min-height:0;overflow-y:auto;padding:22px 24px}
#cnt::-webkit-scrollbar{width:5px}
#cnt::-webkit-scrollbar-thumb{background:var(--bg4);border-radius:4px}

/* SB */
.sbl{padding:18px 16px 14px;border-bottom:1px solid var(--border)}
.sbl-r{display:flex;align-items:center;gap:10px}
.sbl-i{width:32px;height:32px;background:linear-gradient(135deg,var(--blue),var(--teal));border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:#fff}
.sbn{font-size:14px;font-weight:600;color:var(--text1)}
.sbv{font-size:10px;color:var(--text2);font-family:var(--mo)}
.sbs{padding:14px 14px 4px;font-size:10px;font-weight:600;color:var(--text2);letter-spacing:1.5px;text-transform:uppercase}
.sbi{display:flex;align-items:center;gap:9px;padding:7px 11px;margin:1px 6px;border-radius:var(--r);cursor:pointer;transition:all .15s;font-size:13px;color:var(--text1);user-select:none;border:1px solid transparent}
.sbi:hover{background:var(--bg3);color:var(--text1)}
.sbi.on{background:var(--bd);color:var(--blue-t);border-color:var(--bb)}
.sbi svg{width:14px;height:14px;flex-shrink:0;opacity:.75}
.sbi.on svg{opacity:1}
.sbbg{margin-left:auto;background:var(--rd);color:var(--red);border:1px solid var(--rb);border-radius:10px;padding:0 6px;font-size:10px;font-family:var(--mo);line-height:18px}
.sbft{margin-top:auto;padding:12px;border-top:1px solid var(--border)}
.sbu{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:var(--r);background:var(--bg2);cursor:pointer}
.sbu:hover{background:var(--bg3)}
.sbav{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--purple));display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff;flex-shrink:0}
.tb-ic{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;border:1px solid var(--border2);background:var(--soft);color:var(--text2);cursor:pointer;transition:all .18s;flex-shrink:0}
.tb-ic:hover{background:var(--bg3);color:var(--text1);border-color:var(--bb);box-shadow:0 0 0 4px rgba(74,143,240,.08)}
.tb-ic svg{width:16px;height:16px}
.tb-ic.is-collapsed{color:var(--blue-t);border-color:var(--bb);background:var(--bd)}

/* TOPBAR */
.tbc{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--text3);flex:1;min-width:0}
.tbc .tcc{color:var(--text1);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbsp{opacity:.35;flex-shrink:0}
.tbas{display:flex;gap:7px;align-items:center}
.swp{position:relative}
.swp svg{position:absolute;left:9px;top:50%;transform:translateY(-50%);width:13px;height:13px;color:var(--text3);pointer-events:none}
.sin{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:6px 10px 6px 28px;font-family:var(--fn);font-size:12px;color:var(--text1);outline:none;width:200px;transition:all .15s}
.sin:focus{border-color:var(--border2);width:240px}
.sin::placeholder{color:var(--text3)}

/* BTN */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:7px 13px;border-radius:9px;font-size:12px;font-family:var(--fn);font-weight:500;cursor:pointer;border:1px solid var(--border2);background:var(--bg3);color:var(--text1);transition:background .16s,border-color .16s,color .16s,transform .16s,box-shadow .16s;white-space:nowrap;line-height:1.4}
.btn:hover{background:var(--bg4);color:var(--text1);transform:translateY(-1px);box-shadow:0 5px 14px rgba(0,0,0,.10)}
.btn.pri{background:var(--blue);border-color:var(--blue);color:#fff}
.btn.pri:hover{background:rgba(74,143,240,0.25)}
.btn.dng{background:var(--rd);border-color:var(--rb);color:var(--red-t)}
.btn.dng:hover{background:rgba(232,85,85,0.22)}
.btn.sm{padding:3px 9px;font-size:11px}
.btn svg{width:12px;height:12px}
.btn:disabled{opacity:.4;cursor:not-allowed}

/* STATS */
.srow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}
.scard{position:relative;overflow:hidden;background:linear-gradient(145deg,var(--bg1),var(--bg2));border:1px solid var(--border);border-radius:14px;padding:16px 18px;box-shadow:0 8px 22px rgba(0,0,0,.05);transition:border-color .2s,transform .2s,box-shadow .2s}
.scard:after{content:"";position:absolute;width:70px;height:70px;border-radius:50%;right:-34px;top:-38px;background:var(--bd);pointer-events:none}
.scard:hover{border-color:var(--border2);transform:translateY(-2px);box-shadow:0 12px 28px rgba(0,0,0,.09)}
.slbl{font-size:10px;color:var(--text2);margin-bottom:7px;font-weight:600;text-transform:uppercase;letter-spacing:.8px}
.snum{font-size:24px;font-weight:300;color:var(--text1);font-family:var(--mo);letter-spacing:-.5px;line-height:1.2}
.snum sup{font-size:12px;color:var(--text3);font-weight:400}
.ssub{font-size:11px;color:var(--text3);margin-top:5px;display:flex;align-items:center;gap:4px}
.dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}

/* SECTION */
.sh{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px;gap:10px}
.st{font-size:12px;font-weight:600;color:var(--text1);letter-spacing:.3px;text-transform:uppercase}
.sas{display:flex;gap:6px;align-items:center;flex-wrap:wrap}

/* TABLE */
.tw{background:var(--bg1);border:1px solid var(--border);border-radius:15px;overflow-x:auto;overflow-y:visible;margin-bottom:18px;box-shadow:0 10px 28px rgba(0,0,0,.055);scrollbar-width:thin;scrollbar-color:var(--bg4) transparent}
table.t{width:100%;border-collapse:collapse;font-size:13px}
table.t th{padding:11px 14px;text-align:left;font-size:10px;font-weight:700;color:var(--text2);border-bottom:1px solid var(--border);background:linear-gradient(var(--soft),var(--soft)),var(--bg2);position:sticky;top:0;z-index:3;text-transform:uppercase;letter-spacing:.8px;white-space:nowrap}
table.t td{padding:11px 14px;border-bottom:1px solid var(--line);color:var(--text1);vertical-align:middle;transition:background .14s}
table.t tr:last-child td{border-bottom:none}
table.t tbody tr.ck{cursor:pointer;transition:background .1s}
table.t tbody tr.ck:hover td{background:var(--soft);color:var(--text1)}
/* Editable cell */
.ec{padding:0!important}
.ec input,.ec select{width:100%;background:transparent;border:none;padding:9px 12px;font-family:var(--fn);font-size:13px;color:var(--text1);outline:none;cursor:pointer}
.ec input:focus,.ec select:focus{background:var(--bg3);outline:1px solid var(--blue);outline-offset:-1px}
.ec select{-webkit-appearance:none;appearance:none;cursor:pointer}
.ec select option{background:var(--bg2)}
.cid{font-family:var(--mo);font-size:11px;color:var(--text3)}
.cn{font-weight:500;color:var(--text1)!important}

/* TAG */
.tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:5px;font-size:11px;font-weight:500;white-space:nowrap;border:1px solid transparent}
.tbl{background:var(--bd);color:var(--blue-t);border-color:var(--bb)}
.tgn{background:var(--gd);color:var(--green-t);border-color:var(--gb)}
.tam{background:var(--ad);color:var(--amber-t);border-color:var(--ab)}
.trd{background:var(--rd);color:var(--red-t);border-color:var(--rb)}
.tpu{background:var(--pd);color:var(--purple-t);border-color:var(--pb)}
.ttl{background:var(--td);color:var(--teal-t);border-color:var(--tb)}
.tgy{background:var(--soft);color:var(--text2);border-color:var(--border2)}

/* PROGRESS */
.pg{display:flex;align-items:center;gap:7px}
.pgb{flex:1;height:4px;background:var(--soft);border-radius:2px;overflow:hidden;min-width:50px}
.pgf{height:100%;border-radius:2px;transition:width .4s}
.pgv{font-size:11px;font-family:var(--mo);color:var(--text3);width:28px;text-align:right;flex-shrink:0}

/* CARD */
.card{background:var(--bg1);border:1px solid var(--border);border-radius:15px;padding:16px 18px;box-shadow:0 8px 24px rgba(0,0,0,.045)}
.tc{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:18px}
@media(max-width:1100px){.tc{grid-template-columns:1fr}}
.thc{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}

/* TABS */
.tabr{display:flex;border-bottom:1px solid var(--border);margin-bottom:16px}
.tab{padding:8px 15px;font-size:12px;color:var(--text3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s;user-select:none;font-weight:500;white-space:nowrap}
.tab:hover{color:var(--text2)}
.tab.on{color:var(--blue-t);border-bottom-color:var(--blue)}
.tabp{display:none}
.tabp.on{display:block}
/* ── Client management tabs ── */
.cl-tabs{display:flex;gap:12px;margin-bottom:20px}
.cl-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .3s ease;user-select:none;background:var(--bg2);border:1px solid var(--border);position:relative;overflow:hidden}
.cl-tab::after{content:'';position:absolute;inset:0;border-radius:14px;opacity:0;transition:opacity .3s;background:linear-gradient(135deg,rgba(74,143,240,.08),rgba(37,99,235,.04))}
.cl-tab:hover{border-color:var(--text3);transform:translateY(-2px);box-shadow:0 4px 15px rgba(0,0,0,.15)}
.cl-tab:hover::after{opacity:1}
.cl-tab.on{background:linear-gradient(135deg,#4a8ff0,#2563eb);border-color:transparent;box-shadow:0 6px 24px rgba(37,99,235,.35);transform:translateY(-2px)}
.cl-tab .cl-lbl{font-size:14px;font-weight:500;color:var(--text3);margin-bottom:6px;letter-spacing:.3px;position:relative;z-index:1}
.cl-tab.on .cl-lbl{color:#fff}
.cl-tab .cl-num{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;border-radius:14px;padding:0 10px;font-size:14px;font-weight:700;font-family:var(--mo);background:var(--bg3);color:var(--text2);position:relative;z-index:1;transition:all .3s}
.cl-tab.on .cl-num{background:rgba(255,255,255,.2);color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.cl-tab .cl-sub{font-size:11px;color:var(--text5);margin-top:4px;position:relative;z-index:1}
.cl-tab.on .cl-sub{color:rgba(255,255,255,.6)}

/* TIMELINE */
.tli{display:flex;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.tli:last-child{border-bottom:none}
.tll{display:flex;flex-direction:column;align-items:center;width:18px;flex-shrink:0;padding-top:5px}
.tld{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.tlln{width:1px;flex:1;min-height:16px;margin:3px 0;background:var(--border)}

/* MODAL */
.ov{position:fixed;inset:0;background:rgba(0,0,0,0.75);z-index:3000;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s;backdrop-filter:blur(3px)}
.ov.show{opacity:1;pointer-events:all}
.mo{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--rxl);width:620px;max-width:94vw;max-height:90vh;overflow-y:auto;box-shadow:var(--sh);transform:translateY(18px);transition:transform .2s}
.ov.show .mo{transform:translateY(0)}
.mo.sm{width:460px}
.mo.lg{width:780px}
.moh{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 14px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg2);z-index:1}
.mot{font-size:14px;font-weight:600;color:var(--text1)}
.mox{width:32px;height:32px;border-radius:6px;background:var(--bg3);border:none;cursor:pointer;color:var(--text3);font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .15s;font-family:var(--fn)}
.mox:hover{background:var(--bg4);color:var(--text1)}
.mob{padding:18px 22px}
.mof{padding:14px 22px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:7px;position:sticky;bottom:0;background:var(--bg2)}

/* FORMS */
.fr{margin-bottom:14px}
.fl{font-size:10px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px;display:block}
.fi,.fs,.fta{width:100%;background:var(--bg1);border:1px solid var(--border2);border-radius:9px;padding:8px 11px;font-family:var(--fn);font-size:13px;color:var(--text1);outline:none;transition:border-color .15s,box-shadow .15s,background .15s;box-sizing:border-box}
.fi:focus,.fs:focus,.fta:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--bd);background:var(--bg1)}
.fs{cursor:pointer;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%234e5a6e'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:26px}
.fs option{background:var(--bg2)}
.fta{resize:vertical;min-height:72px;line-height:1.6}
.fg2{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.fg3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:11px}
.ferr{font-size:11px;color:var(--red);margin-top:4px;display:none}
.fr.he .fi,.fr.he .fs,.fr.he .fta{border-color:var(--red)}
.fr.he .ferr{display:block}
.notice{background:var(--ad);border:1px solid var(--ab);border-radius:var(--r);padding:9px 12px;font-size:12px;color:var(--amber-t);display:flex;align-items:center;gap:7px;margin-bottom:13px}
.ni{background:var(--bd);border-color:var(--bb);color:var(--blue-t)}

/* FILE MANAGER */
.fm-wrap{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;margin-bottom:18px}
.fm-toolbar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--soft);flex-wrap:wrap}
.fm-path{display:flex;align-items:center;gap:4px;flex:1;min-width:0;font-size:12px;color:var(--text3);overflow:hidden}
.fm-path-seg{cursor:pointer;color:var(--text3);transition:color .15s;white-space:nowrap}
.fm-path-seg:hover{color:var(--text1)}
.fm-path-seg.cur{color:var(--text1);font-weight:500}
.fm-path-sep{opacity:.35;flex-shrink:0}
.fm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;padding:14px}
.fm-item{background:var(--bg1);border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;cursor:pointer;transition:all .15s;display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;position:relative}
.fm-item:hover{background:var(--bg3);border-color:var(--border2)}
.fm-item.sel{background:var(--bd);border-color:var(--bb)}
.fm-icon{font-size:28px;line-height:1}
.fm-name{font-size:11px;color:var(--text1);word-break:break-all;line-height:1.4;max-width:100%}
.fm-meta{font-size:10px;color:var(--text3)}
.fm-item .fm-actions{position:absolute;top:4px;right:4px;display:none;gap:3px}
.fm-item:hover .fm-actions{display:flex}
.fm-btn{width:20px;height:20px;border-radius:4px;background:var(--bg3);border:1px solid var(--border);cursor:pointer;color:var(--text3);font-size:10px;display:flex;align-items:center;justify-content:center;transition:all .15s}
.fm-btn:hover{background:var(--bg4);color:var(--text1)}
.fm-btn.d:hover{background:var(--rd);color:var(--red);border-color:var(--rb)}
.fm-empty{text-align:center;padding:40px;color:var(--text3);font-size:13px}
.fm-list-view{padding:0}
.fm-list-item{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .1s}
.fm-list-item:last-child{border-bottom:none}
.fm-list-item:hover{background:var(--bg3)}
.fm-list-item.sel{background:var(--bd)}
.fm-list-icon{font-size:18px;flex-shrink:0;width:24px;text-align:center}
.fm-list-name{flex:1;font-size:13px;color:var(--text1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fm-list-type{font-size:11px;color:var(--text3);width:80px;flex-shrink:0}
.fm-list-size{font-size:11px;color:var(--text3);width:70px;text-align:right;flex-shrink:0;font-family:var(--mo)}
.fm-list-date{font-size:11px;color:var(--text3);width:90px;text-align:right;flex-shrink:0}
.fm-list-acts{display:none;gap:3px;flex-shrink:0}
.fm-list-item:hover .fm-list-acts{display:flex}

/* UPLOAD DROP ZONE */
.drop-zone{border:2px dashed var(--border2);border-radius:var(--rl);padding:32px;text-align:center;cursor:pointer;transition:all .2s;background:var(--bg1)}
.drop-zone:hover,.drop-zone.over{border-color:var(--blue);background:var(--bd)}
.drop-zone-icon{font-size:32px;margin-bottom:8px;opacity:.5}
.drop-zone-txt{font-size:13px;color:var(--text2)}
.drop-zone-sub{font-size:11px;color:var(--text3);margin-top:4px}
.upload-list{margin-top:12px;display:flex;flex-direction:column;gap:6px;max-height:200px;overflow-y:auto}
.upload-item{display:flex;align-items:center;gap:9px;padding:7px 10px;background:var(--bg1);border-radius:var(--r);border:1px solid var(--border)}
.upload-item-icon{font-size:16px;flex-shrink:0}
.upload-item-name{flex:1;font-size:12px;color:var(--text1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.upload-item-size{font-size:11px;color:var(--text3);font-family:var(--mo);flex-shrink:0}
.upload-item-rm{width:18px;height:18px;border-radius:4px;background:none;border:none;cursor:pointer;color:var(--text3);font-size:12px;display:flex;align-items:center;justify-content:center;transition:color .15s;font-family:var(--fn)}
.upload-item-rm:hover{color:var(--red)}
.up-prog-bar{height:3px;background:var(--border);border-radius:2px;overflow:hidden;margin-top:3px}
.up-prog-fill{height:100%;background:var(--blue);border-radius:2px;transition:width .3s}
.up-prog-pct{font-size:10px;color:var(--text3);margin-top:3px;text-align:right;font-family:var(--mo)}

/* BOM INLINE EDIT */
.bom-row-editing td{background:var(--bg3)!important}
.bom-row-editing td:first-child{border-left:2px solid var(--blue)}

/* MISC */
.page{animation:fi .18s ease}
@keyframes fi{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.bk{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text3);cursor:pointer;border:none;background:none;font-family:var(--fn);transition:color .15s;padding:0;margin-bottom:6px}
.bk:hover{color:var(--text1)}
.dh{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:14px}
.dh1{font-size:18px;font-weight:600;color:var(--text1);margin-bottom:4px}
.dtags{display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin-bottom:5px}
.ddesc{font-size:12px;color:var(--text3);line-height:1.7;max-width:600px}
.ig{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:16px}
.ii{background:var(--bg1);border:1px solid var(--border);border-radius:var(--r);padding:9px 12px}
.il{font-size:10px;color:var(--text2);text-transform:uppercase;letter-spacing:.8px;margin-bottom:4px;font-weight:600}
.iv{font-size:13px;font-weight:500;color:var(--text1)}
.lnk{color:var(--blue-t);cursor:pointer;font-size:12px}
.lnk:hover{text-decoration:underline}
.emp{text-align:center;padding:48px 20px;color:var(--text3)}
.module-hero{position:relative;overflow:hidden;border:1px solid var(--border);border-radius:18px;background:linear-gradient(120deg,rgba(74,143,240,.13),rgba(155,124,240,.06) 58%,rgba(32,192,208,.06)),var(--bg1);padding:21px 24px;margin-bottom:14px;box-shadow:0 12px 32px rgba(0,0,0,.07)}
.module-hero:after{content:"";position:absolute;width:230px;height:230px;border-radius:50%;right:-110px;top:-150px;background:radial-gradient(circle,rgba(74,143,240,.22),rgba(74,143,240,0) 70%);pointer-events:none}
.module-head-main{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:18px}
.module-head-copy{display:flex;align-items:center;gap:14px;min-width:0}
.module-head-icon{width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff;background:linear-gradient(145deg,var(--blue),var(--purple));box-shadow:0 9px 22px rgba(59,118,224,.22)}
.module-head-icon.task{background:linear-gradient(145deg,var(--purple),var(--blue))}
.module-head-icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.module-kicker{font-size:9px;font-weight:700;letter-spacing:1.4px;color:var(--blue-t);margin-bottom:1px}
.module-title{font-size:21px;line-height:1.3;font-weight:700;color:var(--text1);letter-spacing:-.3px}
.module-desc{font-size:11px;color:var(--text3);margin-top:3px;line-height:1.55}
.module-head-actions{position:relative;z-index:1;display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.module-filterbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px 8px 13px;margin-bottom:14px;border:1px solid var(--border);border-radius:14px;background:var(--bg1);box-shadow:0 7px 20px rgba(0,0,0,.04)}
.module-filter-tabs{display:flex;align-items:center;gap:5px;overflow-x:auto;scrollbar-width:none}
.module-filter-tabs::-webkit-scrollbar{display:none}
.module-filter{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--text2);font:500 11px/1.4 var(--fn);cursor:pointer;white-space:nowrap;transition:all .16s}
.module-filter:hover{background:var(--soft);color:var(--text1)}
.module-filter.on{color:var(--blue-t);background:var(--bd);border-color:var(--bb);font-weight:700}
.module-filter b{min-width:18px;height:18px;padding:0 5px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;background:var(--bg3);color:var(--text3);font:600 9px/1 var(--mo)}
.module-filter.on b{color:#fff;background:var(--blue)}
.module-filter-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.module-search{position:relative}
.module-search:before{content:"";position:absolute;left:11px;top:50%;width:10px;height:10px;border:1.5px solid var(--text3);border-radius:50%;transform:translateY(-58%);pointer-events:none}
.module-search:after{content:"";position:absolute;left:20px;top:57%;width:5px;height:1.5px;background:var(--text3);transform:rotate(45deg);border-radius:2px;pointer-events:none}
.module-search .fi{padding-left:31px;min-width:240px;background:var(--bg2)}
.module-mini-metrics{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:0;margin-top:18px;border-top:1px solid var(--border)}
.module-mini-metric{position:relative;display:flex;align-items:baseline;gap:4px;padding:12px 18px 0}
.module-mini-metric:first-child{padding-left:0}
.module-mini-metric:not(:last-child):after{content:"";position:absolute;right:0;top:11px;bottom:0;width:1px;background:var(--border)}
.module-mini-metric span{font-size:10px;color:var(--text3);margin-right:auto}
.module-mini-metric strong{font:600 19px/1 var(--mo);color:var(--text1)}
.module-mini-metric small{font-size:9px;color:var(--text3)}
.task-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.task-stat{position:relative;overflow:hidden;padding:14px 15px;border:1px solid var(--border);border-radius:14px;background:var(--bg1);box-shadow:0 7px 20px rgba(0,0,0,.045);cursor:pointer;transition:transform .18s,border-color .18s,box-shadow .18s}
.task-stat:hover{transform:translateY(-2px);border-color:var(--border2);box-shadow:0 11px 26px rgba(0,0,0,.08)}
.task-stat.on{box-shadow:0 0 0 2px var(--bd),0 9px 24px rgba(0,0,0,.07)}
.task-stat:after{content:"";position:absolute;width:76px;height:76px;border-radius:50%;right:-36px;top:-38px;background:var(--bd)}
.task-stat.overdue:after{background:var(--rd)}
.task-stat.today:after{background:var(--ad)}
.task-stat.doing:after{background:var(--pd)}
.task-stat-label{font-size:10px;color:var(--text3);margin-bottom:5px}
.task-stat-value{font:600 23px/1.2 var(--mo);color:var(--text1)}
.task-stat.overdue .task-stat-value{color:var(--red-t)}
.task-stat.today .task-stat-value{color:var(--amber-t)}
.task-stat.week .task-stat-value{color:var(--blue-t)}
.task-stat.doing .task-stat-value{color:var(--purple-t)}
.task-panel{padding:0!important;overflow:hidden}
.task-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 15px;border-bottom:1px solid var(--border);background:var(--soft)}
.task-panel-title{font-size:11px;font-weight:700;color:var(--text1);letter-spacing:.3px}
.task-panel-title small{font:500 10px/1 var(--mo);color:var(--text3);margin-left:4px}
.task-panel-desc{font-size:10px;color:var(--text3);margin-top:2px;font-weight:400}
.task-item{padding:12px 15px;border-bottom:1px solid var(--line);transition:background .15s}
.task-item:last-child{border-bottom:none}
.task-item:hover{background:var(--soft)}
.task-item-main{display:flex;align-items:flex-start;justify-content:space-between;gap:9px}
.task-item-title{font-size:12px;font-weight:600;color:var(--text1);line-height:1.5;min-width:0}
.task-item-badges{display:flex;gap:4px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
.task-item-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:10px;color:var(--text3);margin-top:5px}
.task-item-meta .late{color:var(--red-t)}
.task-item-meta i{width:3px;height:3px;border-radius:50%;background:var(--border2)}
.task-empty{display:flex;align-items:center;justify-content:center;min-height:95px;color:var(--text3);font-size:11px}
.task-center .tc{gap:12px}
.project-table .cn{font-weight:650}
.project-table tbody tr td:first-child{border-left:2px solid transparent}
.project-table tbody tr:hover td:first-child{border-left-color:var(--blue)}
.sales-hero .module-head-icon{background:linear-gradient(145deg,var(--teal),var(--blue))}
.sales-hero .module-mini-metric:last-child strong{font-size:16px;color:var(--green-t)}
.sales-switch{display:flex;gap:6px;padding:6px;margin-bottom:14px;border:1px solid var(--border);border-radius:15px;background:var(--bg1);box-shadow:0 8px 24px rgba(0,0,0,.045)}
.sales-switch-tab{position:relative;overflow:hidden;flex:1;display:flex;align-items:center;gap:11px;padding:10px 14px;border:1px solid transparent;border-radius:11px;background:transparent;color:var(--text2);cursor:pointer;font-family:var(--fn);text-align:left;transition:all .18s}
.sales-switch-tab:hover{background:var(--soft);color:var(--text1)}
.sales-switch-tab.on{background:linear-gradient(135deg,var(--bd),var(--pd));border-color:var(--bb);color:var(--text1)}
.sales-switch-icon{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--bg3);color:var(--text2);font-size:15px;flex-shrink:0}
.sales-switch-tab.on .sales-switch-icon{background:var(--blue);color:#fff;box-shadow:0 6px 14px rgba(59,118,224,.22)}
.sales-switch-copy{display:flex;flex-direction:column;min-width:0}
.sales-switch-copy strong{font-size:12px;color:inherit}
.sales-switch-copy small{font-size:9px;color:var(--text3);margin-top:1px}
.sales-switch-count{margin-left:auto;min-width:27px;height:24px;padding:0 8px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--bg3);color:var(--text3);font:700 11px/1 var(--mo)}
.sales-switch-tab.on .sales-switch-count{background:var(--blue);color:#fff}
.sales-stat-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}
.sales-stat-grid .scard{margin:0}
.sales-channel-card{margin-bottom:14px;padding:15px 17px}
.sales-channel-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:11px}
.sales-channel-title strong{font-size:11px;color:var(--text1)}
.sales-channel-title span{font-size:10px;color:var(--text3)}
.sales-channel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:9px 16px}
.sales-channel-row{display:grid;grid-template-columns:72px minmax(70px,1fr) 22px;align-items:center;gap:8px}
.sales-channel-name{font-size:10px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sales-channel-value{font:600 10px/1 var(--mo);color:var(--text3);text-align:right}
.sales-filterbar{align-items:flex-start}
.sales-filterbar .module-filter-actions{flex:1}
.sales-filterbar .module-search{margin-right:auto}
.sales-table tbody tr td:first-child{border-left:2px solid transparent}
.sales-table tbody tr:hover td:first-child{border-left-color:var(--teal)}
.finance-hero .module-head-icon{background:linear-gradient(145deg,var(--green),var(--teal))}
.finance-hero .module-mini-metric strong{font-size:16px}
.finance-hero .module-mini-metric:nth-child(2) strong{color:var(--green-t)}
.finance-hero .module-mini-metric:nth-child(3) strong{color:var(--amber-t)}
.finance-hero .module-mini-metric:nth-child(4) strong{color:var(--red-t)}
.finance-section{margin-bottom:15px}
.finance-section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:0 2px 8px}
.finance-section-title{font-size:11px;font-weight:700;color:var(--text1);letter-spacing:.3px}
.finance-section-desc{font-size:9px;color:var(--text3);margin-top:2px}
.finance-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.finance-kpi{position:relative;overflow:hidden;padding:14px 15px;border:1px solid var(--border);border-radius:14px;background:var(--bg1);box-shadow:0 7px 20px rgba(0,0,0,.045);transition:transform .18s,border-color .18s,box-shadow .18s}
.finance-kpi:hover{transform:translateY(-2px);border-color:var(--border2);box-shadow:0 11px 26px rgba(0,0,0,.08)}
.finance-kpi:after{content:"";position:absolute;width:74px;height:74px;border-radius:50%;right:-38px;top:-39px;background:var(--bd)}
.finance-kpi.good:after{background:var(--gd)}
.finance-kpi.warn:after{background:var(--ad)}
.finance-kpi.risk:after{background:var(--rd)}
.finance-kpi-label{font-size:10px;color:var(--text3);margin-bottom:5px}
.finance-kpi-value{font:600 18px/1.25 var(--mo);color:var(--text1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.finance-kpi.good .finance-kpi-value{color:var(--green-t)}
.finance-kpi.warn .finance-kpi-value{color:var(--amber-t)}
.finance-kpi.risk .finance-kpi-value{color:var(--red-t)}
.finance-kpi-sub{font-size:9px;color:var(--text3);margin-top:5px}
.finance-filterbar{display:grid;grid-template-columns:repeat(4,minmax(135px,1fr)) minmax(260px,1.6fr);gap:8px;padding:10px;margin-bottom:15px;border:1px solid var(--border);border-radius:14px;background:var(--bg1);box-shadow:0 7px 20px rgba(0,0,0,.04)}
.finance-filterbar select,.finance-filterbar input{width:100%;background:var(--bg2);border:1px solid var(--border2);border-radius:9px;padding:8px 10px;font-family:var(--fn);font-size:11px;color:var(--text1);outline:none;transition:border-color .15s,box-shadow .15s}
.finance-filterbar select:focus,.finance-filterbar input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--bd)}
.finance-filter-search{display:flex;gap:6px;min-width:0}
.finance-filter-summary{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 3px 0;font-size:10px;color:var(--text3)}
.finance-panel{padding:0!important;overflow:hidden}
.finance-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 15px;border-bottom:1px solid var(--border);background:var(--soft)}
.finance-panel-title{font-size:11px;font-weight:700;color:var(--text1)}
.finance-panel-body{padding:14px 16px}
.finance-contract-block{margin-bottom:12px;padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--soft)}
.finance-contract-block:last-child{margin-bottom:0}
.asset-filterbar{padding:9px 10px 9px 13px}
.asset-filterbar .module-filter-actions{flex-wrap:nowrap}
.asset-filterbar .isel{min-height:32px;padding:5px 28px 5px 9px;border-radius:9px;background-color:var(--bg2);border-color:var(--border2)}
.asset-filterbar .btn.sm{min-height:32px}
.asset-table{overflow:hidden;border-radius:14px}
.asset-table tbody tr td:first-child{border-left:2px solid transparent;transition:border-color .15s}
.asset-table tbody tr:hover td:first-child{border-left-color:var(--blue)}
.asset-table tbody tr:last-child td{border-bottom:none}
.device-table .t{min-width:920px}
.supplier-table .t{min-width:1060px}
.inventory-table .t{min-width:980px}
.device-hero .module-head-icon{background:linear-gradient(145deg,var(--blue),var(--teal))}
.device-hero .module-mini-metric:nth-child(2) strong{color:var(--green-t)}
.device-hero .module-mini-metric:nth-child(3) strong{color:var(--amber-t)}
.device-hero .module-mini-metric:nth-child(4) strong{color:var(--red-t)}
.device-table tbody tr:hover td:first-child{border-left-color:var(--teal)}
.factory-hero{background:linear-gradient(120deg,rgba(155,124,240,.13),rgba(74,143,240,.07) 58%,rgba(32,192,208,.05)),var(--bg1)}
.factory-hero .module-head-icon{background:linear-gradient(145deg,var(--purple),var(--blue))}
.factory-hero .module-mini-metric:nth-child(2) strong{color:var(--green-t)}
.factory-hero .module-mini-metric:nth-child(3) strong{color:var(--blue-t)}
.factory-hero .module-mini-metric:nth-child(4) strong{color:var(--amber-t)}
.factory-filterbar .module-filter-actions{flex:1}
.factory-filter-summary{font-size:10px;color:var(--text3);white-space:nowrap;padding-right:4px}
.factory-device-list{display:flex;flex-direction:column;gap:9px}
.factory-device-card{position:relative;overflow:hidden;display:flex;align-items:center;gap:16px;padding:14px 15px 14px 17px;border:1px solid var(--border);border-radius:14px;background:var(--bg1);box-shadow:0 7px 20px rgba(0,0,0,.04);transition:transform .18s,border-color .18s,box-shadow .18s}
.factory-device-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--amber)}
.factory-device-card.is-burned:before{background:var(--green)}
.factory-device-card:hover{transform:translateY(-1px);border-color:var(--border2);box-shadow:0 11px 26px rgba(0,0,0,.07)}
.factory-device-main{flex:1;min-width:0}
.factory-device-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.factory-device-sn{font:650 14px/1.4 var(--mo);color:var(--blue-t);letter-spacing:.25px}
.factory-device-meta{font-size:10px;color:var(--text2);margin-top:5px;line-height:1.55}
.factory-device-note{font-size:10px;color:var(--text3);margin-top:3px}
.factory-device-actions{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}
.factory-state{display:inline-flex;align-items:center;min-height:21px;padding:2px 8px;border:1px solid transparent;border-radius:7px;font-size:9px;font-weight:700;white-space:nowrap}
.factory-state.done{background:var(--gd);color:var(--green-t);border-color:var(--gb)}
.factory-state.waiting{background:var(--ad);color:var(--amber-t);border-color:var(--ab)}
.factory-state.active{background:var(--bd);color:var(--blue-t);border-color:var(--bb)}
.factory-state.muted{background:var(--soft);color:var(--text3);border-color:var(--line)}
.factory-empty{min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:28px;border:1px dashed var(--border2);border-radius:14px;background:linear-gradient(135deg,var(--bg1),var(--soft));color:var(--text3);font-size:10px;text-align:center}
.factory-empty-icon{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--pd);color:var(--purple-t);font-size:22px;margin-bottom:4px}
.factory-empty strong{font-size:12px;color:var(--text2)}
.supply-hero{background:linear-gradient(120deg,rgba(240,169,64,.11),rgba(155,124,240,.07) 58%,rgba(32,192,208,.05)),var(--bg1)}
.supply-hero .module-head-icon{background:linear-gradient(145deg,var(--amber),var(--purple))}
.supply-hero .module-mini-metric:nth-child(2) strong{color:var(--purple-t)}
.supply-hero .module-mini-metric:nth-child(3) strong{color:var(--green-t)}
.supply-hero .module-mini-metric:nth-child(4) strong{color:var(--amber-t)}
.supply-searches{display:flex;align-items:center;gap:7px;flex:1;min-width:360px}
.supply-searches .module-search{flex:1}
.supply-searches .fi{width:100%;min-width:170px}
.supplier-table tbody tr:hover td:first-child{border-left-color:var(--amber)}
.inventory-hero{background:linear-gradient(120deg,rgba(52,192,126,.12),rgba(32,192,208,.07) 58%,rgba(74,143,240,.05)),var(--bg1)}
.inventory-hero .module-head-icon{background:linear-gradient(145deg,var(--green),var(--teal))}
.inventory-metrics.cols-3{grid-template-columns:repeat(3,minmax(110px,1fr))}
.inventory-metrics.cols-4{grid-template-columns:repeat(4,minmax(110px,1fr))}
.inventory-hero .module-mini-metric:nth-child(2) strong{color:var(--green-t)}
.inventory-hero .module-mini-metric:nth-child(3) strong{color:var(--amber-t)}
.inventory-hero .module-mini-metric:nth-child(4) strong{font-size:15px;color:var(--blue-t)}
.inventory-table tbody tr:hover td:first-child{border-left-color:var(--green)}
.inventory-table .inventory-low-row td{background:linear-gradient(90deg,var(--ad),transparent 75%)}
.inventory-table .inventory-low-row td:first-child{border-left-color:var(--amber)}
.bom-hero{background:linear-gradient(120deg,rgba(240,169,64,.12),rgba(74,143,240,.07) 58%,rgba(155,124,240,.05)),var(--bg1)}
.bom-hero .module-head-icon{background:linear-gradient(145deg,var(--amber),var(--blue))}
.bom-hero .module-mini-metric:nth-child(3) strong{color:var(--amber-t)}
.bom-hero .module-mini-metric:nth-child(4) strong{font-size:15px;color:var(--green-t)}
.bom-category-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:8px;margin-bottom:14px}
.bom-category-card{position:relative;overflow:hidden;display:grid;grid-template-columns:1fr auto;align-items:center;gap:3px 8px;min-height:65px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--bg1);color:var(--text1);font-family:var(--fn);text-align:left;cursor:pointer;box-shadow:0 5px 16px rgba(0,0,0,.035);transition:transform .16s,border-color .16s,box-shadow .16s}
.bom-category-card:hover{transform:translateY(-1px);border-color:var(--border2);box-shadow:0 9px 22px rgba(0,0,0,.07)}
.bom-category-card strong{grid-column:2;grid-row:1/3;font:650 20px/1 var(--mo);color:var(--text1)}
.bom-category-card small{font-size:9px;color:var(--text3);white-space:nowrap}
.bom-category-card.all span{font-size:10px;font-weight:700;color:var(--text2)}
.bom-insight-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}
.bom-insight-panel{padding:0!important;overflow:hidden}
.bom-insight-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--soft)}
.bom-insight-head>div{display:flex;flex-direction:column;gap:2px}
.bom-insight-head strong{font-size:11px;color:var(--text1)}
.bom-insight-head span{font-size:9px;color:var(--text3)}
.bom-insight-icon{width:27px;height:27px;border-radius:9px;display:flex!important;align-items:center;justify-content:center;background:var(--bd);color:var(--blue-t)!important;font:700 14px/1 var(--mo)!important}
.bom-insight-icon.warn{background:var(--ad);color:var(--amber-t)!important}
.bom-insight-body{padding:4px 14px 8px}
.bom-insight-row{display:grid;grid-template-columns:minmax(90px,1fr) auto 70px;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid var(--line)}
.bom-insight-row:last-child{border-bottom:none}
.bom-insight-row span{font-size:10px;color:var(--text1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bom-insight-row b{font:650 10px/1 var(--mo);color:var(--text2)}
.bom-insight-row b.good,.bom-insight-empty.good{color:var(--green-t)}
.bom-insight-row b.risk{color:var(--red-t)}
.bom-insight-row small{font-size:9px;color:var(--text3);text-align:right}
.bom-insight-empty{display:flex;align-items:center;min-height:64px;font-size:10px;color:var(--text3)}
.bom-category-block{margin-bottom:14px}
.bom-category-head{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--border);border-bottom:none;border-radius:12px 12px 0 0;background:var(--soft)}
.bom-category-block .bom-table{margin:0;border-radius:0 0 12px 12px}
.bom-table .t{min-width:1080px}
.bom-table .bom-risk-row td{background:linear-gradient(90deg,var(--rd),transparent 72%)}
.bom-table .bom-risk-row td:first-child{border-left-color:var(--red)}
.payables-hero{background:linear-gradient(120deg,rgba(240,169,64,.12),rgba(255,107,107,.06) 58%,rgba(74,143,240,.05)),var(--bg1)}
.payables-hero .module-head-icon{background:linear-gradient(145deg,var(--amber),var(--red))}
.payables-hero .module-mini-metric strong{font-size:14px}
.payables-hero .module-mini-metric:nth-child(2) strong{color:var(--amber-t)}
.payables-hero .module-mini-metric:nth-child(3) strong{color:var(--red-t)}
.payables-hero .module-mini-metric:nth-child(4) strong{color:var(--green-t)}
.payable-aging{padding:13px 15px;margin-bottom:14px}
.payable-aging-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:9px}
.payable-aging-head>div{display:flex;flex-direction:column;gap:2px}
.payable-aging-head strong{font-size:11px;color:var(--text1)}
.payable-aging-head span{font-size:9px;color:var(--text3)}
.payable-aging-head small{font:650 11px/1 var(--mo);color:var(--text2)}
.payable-aging-bar{display:flex;height:11px;border-radius:6px;overflow:hidden;margin-bottom:9px;background:var(--bg3)}
.payable-aging-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:9px}
.payable-aging-legend .cur{color:var(--text3)}
.payable-aging-legend .d30{color:#3b82f6}
.payable-aging-legend .d60{color:var(--amber-t)}
.payable-aging-legend .d90{color:#f97316}
.payable-aging-legend .d90p{color:var(--red-t)}
.payable-overdue-toggle{display:flex;align-items:center;gap:6px;min-height:32px;padding:0 10px;border:1px solid var(--border2);border-radius:9px;background:var(--bg2);color:var(--text2);font-size:10px;cursor:pointer;white-space:nowrap}
.payable-overdue-toggle input{accent-color:var(--red)}
.payables-table .t{min-width:920px}
.payables-table .payable-overdue-row td{background:linear-gradient(90deg,var(--rd),transparent 72%)}
.payables-table .payable-overdue-row td:first-child{border-left-color:var(--red)}
.shipment-hero{background:linear-gradient(120deg,rgba(74,143,240,.13),rgba(155,124,240,.07) 58%,rgba(52,192,126,.05)),var(--bg1)}
.shipment-hero .module-head-icon{background:linear-gradient(145deg,var(--blue),var(--purple))}
.shipment-hero .module-mini-metric:nth-child(2) strong{color:var(--amber-t)}
.shipment-hero .module-mini-metric:nth-child(3) strong{color:var(--blue-t)}
.shipment-hero .module-mini-metric:nth-child(4) strong{color:var(--green-t)}
.shipment-filter-summary{font-size:10px;color:var(--text3);white-space:nowrap;padding-right:4px}
.shipment-table .t{min-width:980px}
.shipment-table .shipment-pending-row td{background:linear-gradient(90deg,var(--ad),transparent 72%)}
.shipment-table .shipment-pending-row td:first-child{border-left-color:var(--amber)}
.shipment-table .shipment-signed-row td:first-child{border-left-color:var(--green)}
.product-hero{background:linear-gradient(120deg,rgba(155,124,240,.13),rgba(74,143,240,.07) 58%,rgba(32,192,208,.05)),var(--bg1)}
.product-hero .module-head-icon{background:linear-gradient(145deg,var(--purple),var(--teal))}
.product-hero .module-mini-metric:nth-child(2) strong{color:var(--green-t)}
.product-hero .module-mini-metric:nth-child(3) strong{color:var(--amber-t)}
.product-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.product-card{display:flex;align-items:flex-start;gap:14px;min-width:0;margin:0;padding:14px;transition:transform .18s,border-color .18s,box-shadow .18s}
.product-card:hover{transform:translateY(-2px);border-color:var(--border2);box-shadow:0 11px 26px rgba(0,0,0,.08)}
.product-thumb{position:relative;overflow:hidden;width:92px;height:92px;flex-shrink:0;border:1px solid var(--border);border-radius:14px;background:linear-gradient(150deg,#141b2e,#0f1420);cursor:pointer}
.product-thumb-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:28px;color:var(--text3)}
.product-thumb img{position:relative;width:100%;height:100%;object-fit:contain;padding:8px}
.product-card-main{flex:1;min-width:0}
.product-card-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.product-card-title{font-size:14px;font-weight:700;color:var(--text1);cursor:pointer;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.product-status{display:inline-flex;align-items:center;gap:5px;font-size:9px;color:var(--text3);white-space:nowrap}
.product-status i{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.product-owner{font-size:9px;color:var(--text3)}
.product-price{margin-top:7px;font:750 17px/1.25 var(--mo);color:var(--green-t)}
.product-price span{font:400 9px/1 var(--fn);color:var(--text3)}
.product-price small{font:400 9px/1 var(--fn);color:var(--text3);margin-left:7px}
.product-price.pending{font-size:14px;color:var(--text3)}
.product-spec{font-size:10px;color:var(--text3);margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.product-ok{display:flex;align-items:center;gap:8px;margin-top:9px}
.product-ok>div{width:120px;height:5px;background:var(--bg3);border-radius:3px;overflow:hidden}
.product-ok i{display:block;height:100%;border-radius:3px}
.product-ok span{font-size:9px;color:var(--text3)}
.product-chips{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}
.product-chips span{font-size:9px;color:var(--text2);background:var(--soft);border:1px solid var(--line);padding:2px 7px;border-radius:6px}
.product-card-actions{display:flex;flex-direction:column;gap:5px;flex-shrink:0}
.product-empty{grid-column:1/-1;min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:28px;border:1px dashed var(--border2);border-radius:14px;background:var(--soft);color:var(--text3);font-size:10px;text-align:center}
.product-empty>div{font-size:26px;color:var(--purple-t)}
.product-empty strong{font-size:12px;color:var(--text2)}
.quality-board-hero{background:linear-gradient(120deg,rgba(52,192,126,.13),rgba(74,143,240,.07) 58%,rgba(32,192,208,.05)),var(--bg1)}
.quality-board-hero .module-head-icon{background:linear-gradient(145deg,var(--green),var(--blue))}
.quality-board-hero .module-mini-metric:nth-child(3) strong{color:var(--red-t)}
.quality-domain-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.quality-domain-card{padding:0!important;overflow:hidden}
.quality-domain-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--soft)}
.quality-domain-head>div{display:flex;flex-direction:column;gap:2px}
.quality-domain-head strong{font-size:12px;color:var(--text1)}
.quality-domain-head span{font-size:9px;color:var(--text3)}
.quality-domain-head b{font:700 15px/1 var(--mo)}
.quality-domain-body{padding:3px 14px 7px}
.quality-domain-row{display:grid;grid-template-columns:8px minmax(110px,1fr) auto auto;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.quality-domain-row:last-child{border-bottom:none}
.quality-domain-dot{width:8px;height:8px;border-radius:50%}
.quality-domain-copy{display:flex;flex-direction:column;min-width:0;gap:2px}
.quality-domain-copy strong{font-size:10px;color:var(--text1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.quality-domain-copy span{font-size:9px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.quality-source-note{margin:9px 2px 0;font-size:9px;color:var(--text3);line-height:1.6}
.quality-hub-hero{background:linear-gradient(120deg,rgba(255,107,107,.12),rgba(240,169,64,.07) 58%,rgba(74,143,240,.05)),var(--bg1)}
.quality-hub-hero .module-head-icon{background:linear-gradient(145deg,var(--red),var(--amber))}
.quality-hub-hero .module-mini-metric:first-child strong,.quality-hub-hero .module-mini-metric:nth-child(2) strong{color:var(--red-t)}
.quality-hub-hero .module-mini-metric:nth-child(3) strong{color:var(--amber-t)}
.quality-hub-hero .module-mini-metric:nth-child(4) strong{font-size:13px;color:var(--purple-t);max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.quality-hub-table .t{min-width:980px}
.quality-hub-table .quality-overdue-row td{background:linear-gradient(90deg,var(--rd),transparent 72%)}
.quality-hub-table .quality-overdue-row td:first-child{border-left-color:var(--red)}
.quality-hub-table .quality-recur-row td{background:linear-gradient(90deg,var(--ad),transparent 72%)}
.quality-hub-table .quality-recur-row td:first-child{border-left-color:var(--amber)}
.review-gates-hero{background:linear-gradient(120deg,rgba(155,124,240,.13),rgba(74,143,240,.07) 58%,rgba(52,192,126,.05)),var(--bg1)}
.review-gates-hero .module-head-icon{background:linear-gradient(145deg,var(--purple),var(--green))}
.review-gates-hero .module-mini-metric:nth-child(3) strong{color:var(--amber-t)}
.review-gates-hero .module-mini-metric:nth-child(4) strong{color:var(--red-t)}
.review-project-list{display:flex;flex-direction:column;gap:8px}
.review-project-card{display:flex;align-items:center;gap:14px;padding:11px 13px}
.review-project-copy{flex:1.25;min-width:0;display:flex;flex-direction:column;gap:3px}
.review-project-copy strong{font-size:11px;color:var(--text1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.review-project-copy span{font-size:9px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.review-gate-cells{flex:3;display:grid;grid-template-columns:repeat(3,minmax(110px,1fr));border-left:1px solid var(--line)}
.review-gate-cell{display:flex;flex-direction:column;align-items:center;gap:4px;padding:3px 7px;border:0;border-right:1px solid var(--line);background:transparent;font-family:var(--fn);cursor:pointer}
.review-gate-cell:last-child{border-right:none}
.review-gate-cell:hover{background:var(--soft)}
.review-gate-cell span{font-size:9px;color:var(--text3)}
.review-gate-cell b{min-width:64px;padding:3px 8px;border:1px solid transparent;border-radius:7px;font-size:9px;white-space:nowrap}
.calibration-hero{background:linear-gradient(120deg,rgba(74,143,240,.13),rgba(32,192,208,.07) 58%,rgba(52,192,126,.05)),var(--bg1)}
.calibration-hero .module-head-icon{background:linear-gradient(145deg,var(--blue),var(--teal))}
.calibration-hero .module-mini-metric:nth-child(2) strong,.calibration-hero .module-mini-metric:nth-child(4) strong{color:var(--green-t)}
.calibration-hero .module-mini-metric:nth-child(3) strong{color:var(--red-t)}
.quality-section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:0 2px 8px}
.quality-section-head>div{display:flex;flex-direction:column;gap:2px}
.quality-section-head strong{font-size:11px;color:var(--text1)}
.quality-section-head span{font-size:9px;color:var(--text3)}
.calibration-spec-table{margin-bottom:14px}
.calibration-spec-table .t{min-width:720px}
.calibration-filterbar>span{font-size:10px;font-weight:700;color:var(--text2);white-space:nowrap;padding-right:4px}
.calibration-table .t{min-width:900px}
.calibration-table .calibration-fail-row td{background:linear-gradient(90deg,var(--rd),transparent 72%)}
.calibration-table .calibration-fail-row td:first-child{border-left-color:var(--red)}
.metrology-hero{background:linear-gradient(120deg,rgba(32,192,208,.13),rgba(74,143,240,.07) 58%,rgba(52,192,126,.05)),var(--bg1)}
.metrology-hero .module-head-icon{background:linear-gradient(145deg,var(--teal),var(--blue))}
.metrology-hero .module-mini-metric:nth-child(2) strong{color:var(--red-t)}
.metrology-hero .module-mini-metric:nth-child(3) strong{color:var(--amber-t)}
.metrology-hero .module-mini-metric:nth-child(4) strong{color:var(--green-t)}
.metrology-alert{display:flex;align-items:center;gap:11px;margin-bottom:14px;padding:11px 14px;border:1px solid var(--rb);border-radius:13px;background:linear-gradient(90deg,var(--rd),var(--bg1));color:var(--text1)}
.metrology-alert>span{width:30px;height:30px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:10px;background:var(--red);color:#fff;font:800 15px/1 var(--mo)}
.metrology-alert>div{display:flex;flex-direction:column;gap:2px}
.metrology-alert strong{font-size:11px;color:var(--red-t)}
.metrology-alert small{font-size:9px;color:var(--text3)}
.metrology-table .t{min-width:980px}
.metrology-table .metrology-expired-row td{background:linear-gradient(90deg,var(--rd),transparent 72%)}
.metrology-table .metrology-expired-row td:first-child{border-left-color:var(--red)}
.metrology-table .metrology-soon-row td{background:linear-gradient(90deg,var(--ad),transparent 72%)}
.metrology-table .metrology-soon-row td:first-child{border-left-color:var(--amber)}
[data-theme="light"] .module-hero{background:linear-gradient(120deg,#f6f9ff,#faf8ff 58%,#f4fbfc);box-shadow:0 12px 30px rgba(47,68,105,.06)}
[data-theme="light"] .card,[data-theme="light"] .scard,[data-theme="light"] .tw,[data-theme="light"] .module-filterbar,[data-theme="light"] .task-stat,[data-theme="light"] .factory-device-card{box-shadow:0 8px 24px rgba(47,68,105,.055)}
@media(max-width:1100px){.sales-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.finance-filterbar{grid-template-columns:repeat(2,minmax(150px,1fr))}.finance-filter-search{grid-column:1/-1}}
@media(max-width:900px){.module-head-main{align-items:flex-start;flex-direction:column}.module-head-actions{width:100%;justify-content:flex-start}.module-mini-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.module-mini-metric:nth-child(2):after{display:none}.module-mini-metric:nth-child(-n+2){padding-bottom:10px;border-bottom:1px solid var(--border)}.module-mini-metric:nth-child(3){padding-left:0}.task-stats,.finance-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.module-filterbar{align-items:flex-start;flex-direction:column}.module-filter-actions{width:100%;justify-content:flex-start}.module-search,.module-search .fi{width:100%;min-width:0}.sales-filterbar .module-search{margin-right:0}}
@media(max-width:560px){.module-hero{padding:18px;border-radius:16px}.module-head-icon{width:42px;height:42px}.module-title{font-size:19px}.module-mini-metric{padding:11px 10px 0}.module-mini-metric:first-child,.module-mini-metric:nth-child(3){padding-left:10px}.module-filterbar{padding:8px}.module-filter-actions .isel{flex:1;min-width:120px}.task-stats{gap:8px}.task-stat{padding:12px}.task-center .tc{grid-template-columns:1fr}.task-item-main{flex-direction:column}.task-item-badges{justify-content:flex-start}.sales-switch{flex-direction:column}.sales-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sales-stat-grid .scard:last-child{grid-column:1/-1}.finance-kpi-grid{gap:8px}.finance-kpi{padding:12px}.finance-kpi-value{font-size:15px}.finance-filterbar{grid-template-columns:1fr}.finance-filter-search{grid-column:auto;flex-wrap:wrap}.finance-filter-search input{flex-basis:100%}.finance-filter-summary{grid-column:auto;align-items:flex-start;flex-direction:column}}
@media(max-width:1100px){.supply-filterbar{align-items:flex-start;flex-direction:column}.supply-searches,.supply-filterbar .module-filter-actions{width:100%}}
@media(max-width:900px){.asset-filterbar .module-filter-actions{flex-wrap:wrap}.inventory-metrics.cols-3,.inventory-metrics.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.factory-filter-summary{padding:0}.supply-searches{min-width:0}}
@media(max-width:560px){.supply-searches{flex-direction:column;width:100%}.supply-searches .module-search,.supply-searches .fi{width:100%;min-width:0}.factory-device-card{align-items:flex-start;flex-direction:column;padding:14px 14px 14px 16px}.factory-device-actions{width:100%;justify-content:flex-start}.factory-device-actions .btn{flex:1}.factory-filterbar .module-filter-actions{width:100%}.factory-filterbar .module-search{flex-basis:100%}.inventory-metrics.cols-3,.inventory-metrics.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1100px){.product-grid{grid-template-columns:1fr}.bom-category-strip{grid-template-columns:repeat(4,minmax(110px,1fr))}}
@media(max-width:900px){.bom-insight-grid{grid-template-columns:1fr}.bom-category-strip{grid-template-columns:repeat(3,minmax(100px,1fr))}.shipment-filter-summary{padding:0}.product-filterbar .module-filter-actions,.payables-filterbar .module-filter-actions{width:100%}}
@media(max-width:560px){.bom-category-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.bom-insight-row{grid-template-columns:minmax(80px,1fr) auto 62px}.payable-aging-head{align-items:flex-start}.payable-aging-head span{max-width:220px}.shipment-filterbar .module-filter-actions{width:100%}.shipment-filterbar .isel{flex:1}.shipment-filter-summary{white-space:normal}.product-card{display:grid;grid-template-columns:76px minmax(0,1fr);gap:11px;padding:12px}.product-thumb{width:76px;height:76px}.product-card-actions{grid-column:1/-1;flex-direction:row;width:100%}.product-card-actions .btn{flex:1}.product-card-title{max-width:170px}.product-price{font-size:15px}.product-ok>div{width:90px}}
@media(max-width:1100px){.quality-domain-grid{grid-template-columns:1fr}}
@media(max-width:900px){.review-project-card{align-items:flex-start;flex-direction:column}.review-project-copy,.review-gate-cells{width:100%}.review-gate-cells{border-left:none;border-top:1px solid var(--line);padding-top:8px}.calibration-filterbar>span{padding:0}}
@media(max-width:560px){.quality-domain-row{grid-template-columns:8px minmax(90px,1fr) auto}.quality-domain-row .btn{grid-column:2/-1;justify-self:start}.review-gate-cells{grid-template-columns:repeat(3,minmax(0,1fr))}.review-gate-cell{padding:3px}.review-gate-cell b{min-width:0;padding:3px 5px}.quality-section-head{align-items:flex-start}.metrology-alert{align-items:flex-start}}
.tg{color:var(--green)!important}
.ta{color:var(--amber)!important}
.tr{color:var(--red)!important}
.tb2{color:var(--blue)!important}
.mo2{font-family:var(--mo)!important}
.mb12{margin-bottom:12px}
.mb16{margin-bottom:16px}
.mb20{margin-bottom:20px}
.isel{background:var(--bg1);border:1px solid var(--border);border-radius:5px;padding:2px 22px 2px 6px;font-size:11px;color:var(--text1);font-family:var(--fn);outline:none;cursor:pointer;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%234e5a6e'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}
.bomi{background:transparent;border:1px solid transparent;border-radius:4px;color:var(--text1);font-family:var(--fn);outline:none;transition:background .12s,border-color .12s}
.bomi:hover{background:var(--bg2);border-color:var(--border)}
.bomi:focus{background:var(--bg1);border-color:var(--blue)}
.bomi::placeholder{color:var(--text3)}
.isel:focus{border-color:var(--blue)}
.isel option{background:var(--bg2)}
.divd{border:none;border-top:1px solid var(--border);margin:14px 0}
/* Notification Bell */
.noti-wrap{position:relative}
.noti-btn{background:none;border:1px solid var(--border);border-radius:var(--r);color:var(--text3);cursor:pointer;padding:6px 8px;font-size:14px;transition:all .15s;position:relative;line-height:1}
.noti-btn:hover{color:var(--text1);border-color:var(--border2)}
.noti-badge{position:absolute;top:-4px;right:-4px;background:var(--red);color:#fff;font-size:9px;font-weight:600;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:var(--mo);padding:0 4px}
.noti-panel{position:absolute;top:calc(100% + 8px);right:0;width:380px;max-height:480px;overflow-y:auto;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--rl);box-shadow:var(--sh);z-index:999;display:none}
.noti-panel.open{display:block}
.noti-panel-hd{padding:12px 16px;border-bottom:1px solid var(--border);font-size:13px;font-weight:600;color:var(--text1);display:flex;align-items:center;justify-content:space-between}
.noti-item{padding:10px 16px;border-bottom:1px solid var(--line);cursor:default;transition:background .12s}
.noti-item:hover{background:var(--bg3)}
.noti-item:last-child{border-bottom:none}
.noti-item{position:relative}
.noti-item .ni-dismiss{position:absolute;top:8px;right:10px;width:18px;height:18px;line-height:1;padding:0;border:none;background:none;color:var(--text3);font-size:12px;cursor:pointer;border-radius:4px;opacity:0;transition:opacity .12s,background .12s}
.noti-item:hover .ni-dismiss{opacity:1}
.noti-item .ni-dismiss:hover{background:var(--bg2);color:var(--text1)}
.noti-item .ni-title{padding-right:22px}
.noti-item .ni-title{font-size:12px;font-weight:500;margin-bottom:3px}
.noti-item .ni-detail{font-size:11px;color:var(--text3);line-height:1.5}
.noti-item.danger .ni-title{color:var(--red)}
.noti-item.warning .ni-title{color:var(--amber)}
.noti-item.info .ni-title{color:var(--blue)}
.noti-empty{padding:30px;text-align:center;color:var(--text3);font-size:12px}
/* Pagination */
.pagi{display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 0;font-size:12px;color:var(--text3)}
.pagi button{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:4px 10px;font-size:11px;color:var(--text2);cursor:pointer;font-family:var(--fn);transition:all .15s}
.pagi button:hover:not(:disabled){background:var(--bg4);color:var(--text1)}
.pagi button:disabled{opacity:.35;cursor:not-allowed}
.pagi button.on{background:var(--bd);border-color:var(--bb);color:var(--blue-t)}
.pagi .pagi-info{font-size:11px;color:var(--text3);font-family:var(--mo)}
/* User Management Table */
.um-tbl{width:100%;border-collapse:collapse;font-size:13px}
.um-tbl th{padding:8px 10px;text-align:left;font-size:10px;font-weight:600;color:var(--text2);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.8px}
.um-tbl td{padding:8px 10px;border-bottom:1px solid var(--line);color:var(--text1)}
.role-tag{display:inline-block;padding:1px 8px;border-radius:4px;font-size:10px;font-weight:500}
.role-admin{background:var(--rd);color:var(--red);border:1px solid var(--rb)}
.role-manager{background:var(--ad);color:var(--amber);border:1px solid var(--ab)}
.role-viewer{background:var(--bd);color:var(--blue-t);border:1px solid var(--bb)}
.toast{position:fixed;bottom:20px;right:20px;background:var(--bg3);border:1px solid var(--border2);border-radius:var(--r);padding:10px 16px;font-size:13px;color:var(--text1);z-index:9999;transform:translateY(60px);opacity:0;transition:all .25s;box-shadow:var(--sh);display:flex;align-items:center;gap:8px}
.toast.show{transform:translateY(0);opacity:1}
.toast.ok{border-color:var(--gb);color:var(--green)}
.toast.er{border-color:var(--rb);color:var(--red)}
.toast.amber,.toast.wa,.toast.wr{border-color:var(--amber);color:var(--amber)}
.pnn{display:flex;align-items:center;gap:6px;padding:7px 0;border-bottom:1px solid var(--line)}
.pnn:last-child{border-bottom:none}
.bchart{display:flex;align-items:flex-end;gap:8px;height:100px}
.bcc{display:flex;flex-direction:column;align-items:center;gap:3px;flex:1}
.bcb{width:100%;border-radius:3px 3px 0 0;transition:height .4s;min-height:3px}
.bcl{font-size:9px;color:var(--text3);font-family:var(--mo);text-align:center}
.bcv{font-size:9px;color:var(--text2);font-family:var(--mo)}
.finrow{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.finrow:last-child{border-bottom:none}
.finck{cursor:pointer;border-radius:var(--r);margin:0 -8px;padding:8px;transition:background .12s}
.finck:hover{background:var(--bg3)}
.merow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.merow:last-child{border-bottom:none}
.av{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex-shrink:0}
/* view toggle */
.vt{display:flex;gap:2px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:2px}
.vt-btn{width:26px;height:22px;border-radius:5px;border:none;background:none;cursor:pointer;color:var(--text3);display:flex;align-items:center;justify-content:center;transition:all .15s}
.vt-btn:hover{color:var(--text1)}
.vt-btn.on{background:var(--bg2);color:var(--text1)}
.vt-btn svg{width:13px;height:13px}
/* context menu */
.ctxm{position:fixed;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r);padding:4px;z-index:9000;box-shadow:var(--sh);min-width:140px}
.ctxm-item{display:flex;align-items:center;gap:8px;padding:7px 12px;border-radius:5px;cursor:pointer;font-size:12px;color:var(--text2);transition:all .15s}
.ctxm-item:hover{background:var(--bg3);color:var(--text1)}
.ctxm-item.d:hover{background:var(--rd);color:var(--red)}
.ctxm-divd{border-top:1px solid var(--border);margin:3px 0}
/* supplier card */
.sup-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rl);padding:16px 18px;transition:border-color .15s;cursor:pointer}
.sup-card:hover{border-color:var(--border2)}
.t th.sortable{cursor:pointer;user-select:none}.t th.sortable:hover{color:var(--text1)}
.sup-level-tag{display:inline-flex;align-items:center;padding:1px 7px;border-radius:4px;font-size:10px;font-weight:600}
/* print styles */
@media print{
  body{background:#fff!important;color:#000!important;font-family:Arial,sans-serif}
  #app{display:block!important}
  #sb,#topbar,.btn,.no-print{display:none!important}
  #cnt{padding:0!important;overflow:visible!important;height:auto!important}
  #main{overflow:visible!important;height:auto!important}
  .print-page{background:#fff!important;color:#000!important}
  .print-page *{color:#000!important;border-color:#ddd!important;background:transparent!important}
  .print-title{font-size:20px!important;font-weight:bold!important}
  table{width:100%!important;border-collapse:collapse!important}
  th,td{border:1px solid #ccc!important;padding:6px 10px!important;font-size:12px!important}
  th{background:#f5f5f5!important;font-weight:bold!important}
  .print-header{display:flex!important;justify-content:space-between!important;margin-bottom:20px!important}
  .print-section{margin-bottom:14px!important}
  .print-label{font-size:11px!important;color:#666!important}
  .print-val{font-size:13px!important;font-weight:bold!important}
  .print-info-grid{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:10px!important;margin-bottom:16px!important;border:1px solid #ddd!important;padding:10px!important}
  .print-footer{margin-top:30px!important;display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:20px!important;border-top:1px solid #ddd!important;padding-top:14px!important}
  .sign-line{border-bottom:1px solid #000!important;margin-top:30px!important;margin-bottom:4px!important}
}

#app-loading{position:fixed;inset:0;background:var(--bg0);z-index:99999;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px}
#app-loading .ld-logo{font-size:36px}
#app-loading .ld-text{font-size:14px;color:var(--text2);font-family:var(--fn)}
#app-loading .ld-spinner{width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ═══════════════════════════════════════════════════════════════════
   文档模板 —— 中文商务公文纸风格（预览 + 打印）
   ═══════════════════════════════════════════════════════════════════ */
.dtpl-stage{background:#e4e2d8;padding:18px 0;min-height:100%;overflow:auto}
.dtpl-paper{background:#fff;color:#111;font-family:'SimSun','Noto Serif SC','Source Han Serif SC','FangSong',serif;padding:22mm 20mm 24mm;width:210mm;min-height:297mm;box-sizing:border-box;margin:0 auto 18px;box-shadow:0 4px 16px rgba(0,0,0,.18),0 1px 2px rgba(0,0,0,.1);line-height:1.85;font-size:11.5pt;transform-origin:top center;transition:transform .15s ease}
.dtpl-paper *{box-sizing:border-box}
.dtpl-paper-header{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:1.2pt solid #333;padding-bottom:5mm;margin-bottom:10mm}
.dtpl-paper-company{font-size:13.5pt;font-weight:700;letter-spacing:2px}
.dtpl-paper-company .dtpl-logo{display:inline-block;width:10mm;height:10mm;background:#c7a76b;color:#fff;text-align:center;line-height:10mm;border-radius:2pt;font-weight:700;margin-right:3mm;vertical-align:middle;font-family:'SimHei',sans-serif}
.dtpl-paper-meta{font-size:9.5pt;color:#555;text-align:right;line-height:1.6}
.dtpl-paper-meta > span{display:block}
.dtpl-paper-title{text-align:center;margin:0 0 10mm}
.dtpl-paper-title h1{font-size:20pt;font-weight:700;margin:0;letter-spacing:3px;font-family:'SimHei','Noto Sans SC',sans-serif;color:#1a1a1a}
.dtpl-paper-subtitle{font-size:10.5pt;color:#666;margin-top:3mm;letter-spacing:1px}
.dtpl-paper-body{text-align:justify;text-justify:inter-ideograph}
.dtpl-paper-body .dtpl-h1{font-size:14.5pt;font-weight:700;margin:9mm 0 4mm;padding-bottom:1.5mm;border-bottom:.5pt solid #333;font-family:'SimHei',sans-serif}
.dtpl-paper-body .dtpl-h2{font-size:12.5pt;font-weight:700;margin:7mm 0 3mm;color:#1a1a1a;font-family:'SimHei',sans-serif}
.dtpl-paper-body .dtpl-h3{font-size:11.5pt;font-weight:700;margin:5mm 0 2mm;color:#333}
.dtpl-paper-body .dtpl-p{margin:0 0 3mm;text-indent:2em}
.dtpl-paper-body .dtpl-p.dtpl-noindent{text-indent:0}
.dtpl-paper-body .dtpl-ul,.dtpl-paper-body .dtpl-ol{margin:3mm 0 3mm 7mm;padding:0}
.dtpl-paper-body .dtpl-ul li,.dtpl-paper-body .dtpl-ol li{margin-bottom:1.5mm}
.dtpl-paper-body .dtpl-note{border-left:3pt solid #a8824a;background:#fbf8f0;padding:3mm 4mm;margin:4mm 0;font-size:10.5pt;color:#555;text-indent:0}
.dtpl-paper-body .dtpl-hr{border:none;border-top:.5pt solid #888;margin:6mm 0}
.dtpl-paper-body .dtpl-table{width:100%;border-collapse:collapse;margin:4mm 0;font-size:10.5pt}
.dtpl-paper-body .dtpl-table th,.dtpl-paper-body .dtpl-table td{border:.5pt solid #444;padding:2mm 3mm;text-align:left;vertical-align:top}
.dtpl-paper-body .dtpl-table th{background:#efe8d6;font-weight:700}
.dtpl-paper-body .dtpl-kv{display:grid;grid-template-columns:25mm 1fr;column-gap:4mm;row-gap:1.5mm;margin:3mm 0}
.dtpl-paper-body .dtpl-kv dt{font-weight:700;color:#333}
.dtpl-paper-body .dtpl-kv dd{margin:0}
.dtpl-paper-body .dtpl-sign{margin-top:14mm;display:grid;grid-template-columns:1fr 1fr;gap:14mm;font-size:11pt}
.dtpl-paper-body .dtpl-sign-box{border-top:.5pt dashed #999;padding-top:4mm}
.dtpl-paper-body .dtpl-sign-role{font-weight:700;margin-bottom:3mm}
.dtpl-paper-body .dtpl-sign-line{display:inline-block;width:60%;border-bottom:.5pt solid #333;height:8mm;vertical-align:bottom}
.dtpl-paper-body .dtpl-sign-date{color:#555;margin-top:6mm;font-size:10pt}
.dtpl-paper-body .dtpl-missing{background:#fff3a8;color:#8a5a00;border-radius:2pt;padding:0 2pt;font-family:'Consolas','Source Han Sans',monospace;font-size:10.5pt;border:.5pt dashed #c89c00;font-style:normal}
.dtpl-paper-footer{margin-top:14mm;padding-top:3mm;border-top:.5pt solid #aaa;display:flex;justify-content:space-between;font-size:9pt;color:#777}
.dtpl-paper-body strong{font-weight:700;color:#1a1a1a}
.dtpl-paper-body u{text-decoration:underline;text-underline-offset:2pt}

/* 预览控制条 */
.dtpl-preview-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 16px;background:var(--bg1);border-bottom:1px solid var(--border)}
.dtpl-preview-toolbar .dtpl-missing-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;background:#fff3a8;color:#8a5a00;border-radius:4px;font-size:12px;border:1px solid #e0b93e}
.dtpl-preview-toolbar .dtpl-ok-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;background:rgba(46,160,67,.15);color:#3fb950;border-radius:4px;font-size:12px;border:1px solid rgba(46,160,67,.4)}
.dtpl-zoom-group{display:inline-flex;border:1px solid var(--border2);border-radius:4px;overflow:hidden}
.dtpl-zoom-group button{background:var(--bg2);border:none;color:var(--text2);padding:4px 10px;font-size:12px;cursor:pointer;border-right:1px solid var(--border2)}
.dtpl-zoom-group button:last-child{border-right:none}
.dtpl-zoom-group button.on{background:var(--blue);color:#fff}

/* 占位符速查面板 */
.dtpl-ph-picker{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r);padding:10px;max-height:280px;overflow:auto;font-size:12px}
.dtpl-ph-picker h4{margin:0 0 6px;font-size:12px;color:var(--text2);font-weight:600}
.dtpl-ph-picker ul{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.dtpl-ph-picker li{background:var(--bg1);border:1px solid var(--border);border-radius:4px;padding:3px 8px;font-family:var(--fm);font-size:11px;color:var(--text1);cursor:pointer;user-select:none}
.dtpl-ph-picker li:hover{background:var(--blue);color:#fff;border-color:var(--blue)}
.dtpl-ph-picker li small{color:var(--text3);font-family:var(--fn);margin-left:4px;font-size:10px}
.dtpl-ph-picker li:hover small{color:rgba(255,255,255,.8)}

/* 文档模板编辑器 v2 — 双栏实时预览 */
.dtpl-edv2{display:flex;flex-direction:column;height:100%;min-height:0}
.dtpl-edv2-head{padding:12px 18px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--bg2);flex-shrink:0}
.dtpl-edv2-form{padding:12px 18px 8px;display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr 1.2fr;gap:10px;border-bottom:1px solid var(--border);flex-shrink:0}
.dtpl-edv2-form .fr{margin:0}
.dtpl-edv2-form .fl{font-size:11px;margin-bottom:3px}
.dtpl-edv2-form .fi,.dtpl-edv2-form .fs{padding:5px 9px;font-size:12px}
.dtpl-edv2-form .fs{padding-right:24px}
.dtpl-edv2-toolbar{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:8px 18px;border-bottom:1px solid var(--border);background:var(--bg2);flex-shrink:0}
.dtpl-edv2-toolbar .tb-group{display:flex;gap:2px;align-items:center;padding-right:6px;margin-right:6px;border-right:1px solid var(--border)}
.dtpl-edv2-toolbar .tb-group:last-child{border-right:none;margin-right:0}
.dtpl-edv2-toolbar button{background:transparent;border:1px solid transparent;border-radius:4px;color:var(--text2);padding:4px 8px;font-size:12px;cursor:pointer;font-family:var(--fn);min-width:28px;transition:all .12s}
.dtpl-edv2-toolbar button:hover{background:var(--bg1);border-color:var(--border);color:var(--text1)}
.dtpl-edv2-toolbar button.on{background:var(--blue);color:#fff;border-color:var(--blue)}
.dtpl-edv2-viewtabs{margin-left:auto;display:flex;background:var(--bg1);border:1px solid var(--border);border-radius:4px;overflow:hidden}
.dtpl-edv2-viewtabs button{border-radius:0;border:none;border-right:1px solid var(--border);padding:4px 10px;font-size:11px}
.dtpl-edv2-viewtabs button:last-child{border-right:none}
.dtpl-edv2-viewtabs button.on{background:var(--blue);color:#fff}
.dtpl-edv2-body{flex:1;min-height:0;display:grid;gap:10px;padding:12px 18px;overflow:hidden}
.dtpl-edv2-body[data-view="split"]{grid-template-columns:1fr 1fr 240px}
.dtpl-edv2-body[data-view="source"]{grid-template-columns:1fr 240px}
.dtpl-edv2-body[data-view="preview"]{grid-template-columns:1fr 240px}
.dtpl-edv2-body[data-view="source"] .dtpl-edv2-rendered{display:none}
.dtpl-edv2-body[data-view="preview"] .dtpl-edv2-src{display:none}
.dtpl-edv2-src{width:100%;height:100%;min-height:0;background:var(--bg1);border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;font-family:var(--fm,Consolas,monospace);font-size:12.5px;line-height:1.65;color:var(--text1);outline:none;resize:none;box-sizing:border-box}
.dtpl-edv2-src:focus{border-color:var(--blue)}
.dtpl-edv2-rendered{overflow:auto;background:#fff;color:#111;border:1px solid var(--border);border-radius:var(--r);padding:18px 22px;font-family:'Microsoft YaHei','PingFang SC','Noto Sans SC',sans-serif;font-size:12.5px;line-height:1.75;min-height:0}
.dtpl-edv2-rendered .dtpl-h1{font-size:16px;font-weight:700;margin:14px 0 8px;padding-bottom:4px;border-bottom:1px solid #ccc}
.dtpl-edv2-rendered .dtpl-h2{font-size:14px;font-weight:700;margin:12px 0 6px;color:#1a1a1a}
.dtpl-edv2-rendered .dtpl-h3{font-size:13px;font-weight:700;margin:10px 0 4px;color:#333}
.dtpl-edv2-rendered .dtpl-p{margin:0 0 6px}
.dtpl-edv2-rendered .dtpl-ul,.dtpl-edv2-rendered .dtpl-ol{margin:6px 0 6px 20px;padding:0}
.dtpl-edv2-rendered .dtpl-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:11.5px}
.dtpl-edv2-rendered .dtpl-table th,.dtpl-edv2-rendered .dtpl-table td{border:1px solid #bbb;padding:4px 6px;text-align:left;vertical-align:top}
.dtpl-edv2-rendered .dtpl-table th{background:#efe8d6;font-weight:700}
.dtpl-edv2-rendered .dtpl-note{border-left:3px solid #a8824a;background:#fbf8f0;padding:6px 10px;margin:6px 0;color:#555}
.dtpl-edv2-rendered .dtpl-hr{border:none;border-top:1px solid #888;margin:10px 0}
.dtpl-edv2-rendered .dtpl-sign{margin-top:20px;display:grid;grid-template-columns:1fr 1fr;gap:20px}
.dtpl-edv2-rendered .dtpl-sign-box{border-top:1px dashed #999;padding-top:6px}
.dtpl-edv2-rendered .dtpl-sign-role{font-weight:700;margin-bottom:4px}
.dtpl-edv2-rendered .dtpl-ph-chip{background:#fff0c2;border:1px dashed #d4a400;border-radius:3px;padding:0 4px;color:#7a5200;font-family:var(--fm);font-size:11px}
.dtpl-edv2-foot{padding:10px 18px;border-top:1px solid var(--border);background:var(--bg2);display:flex;justify-content:space-between;align-items:center;gap:8px;flex-shrink:0}
@media (max-width:900px){
  .dtpl-edv2-form{grid-template-columns:1fr 1fr}
  .dtpl-edv2-body[data-view="split"]{grid-template-columns:1fr}
  .dtpl-edv2-body[data-view="split"] .dtpl-edv2-rendered,
  .dtpl-edv2-body[data-view="source"] .dtpl-edv2-phpick,
  .dtpl-edv2-body[data-view="preview"] .dtpl-edv2-phpick{display:none}
}

/* ══════ AI 内容生成页面 ══════ */
.ai-page{display:flex;flex-direction:column;gap:14px}
.ai-page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:6px}
.ai-page-sub{color:var(--text3);font-size:12px;margin-top:4px;max-width:800px;line-height:1.55}
.ai-main{display:grid;grid-template-columns:320px 1fr 380px;gap:14px;align-items:stretch}
.ai-col-left,.ai-col-mid,.ai-col-right{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;min-height:520px}
.ai-block-title{font-weight:600;font-size:13px;color:var(--text1);margin-bottom:8px;display:flex;align-items:center}
.ai-ctx-group{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;padding:10px;background:var(--bg1);border-radius:var(--r);border:1px solid var(--border)}
.ai-ctx-radio{display:flex;align-items:center;gap:6px;font-size:12.5px;cursor:pointer;color:var(--text1)}
.ai-ctx-radio input{margin:0;cursor:pointer}
.ai-ctx-preview{margin-top:8px;padding:10px 12px;background:var(--bg1);border:1px solid var(--border);border-radius:var(--r);font-size:12px;line-height:1.7}
.ai-preset-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ai-preset-card{padding:10px 12px;background:var(--bg1);border:1.5px solid var(--border);border-radius:var(--r);cursor:pointer;transition:all .15s;min-height:70px}
.ai-preset-card:hover{border-color:var(--blue-hover,var(--blue))}
.ai-preset-card.on{border-color:var(--blue);background:rgba(66,139,255,.08);box-shadow:0 0 0 1px var(--blue) inset}
.ai-preset-label{font-weight:600;font-size:13px;color:var(--text1);margin-bottom:3px}
.ai-preset-hint{font-size:11px;color:var(--text3);line-height:1.5}
.ai-row-2col{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ai-result-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.ai-result-grid{display:grid;grid-template-columns:1fr;gap:10px}
.ai-result-card{background:var(--bg1);border:1px solid var(--border);border-radius:var(--r);overflow:hidden}
.ai-result-card img{display:block;width:100%;height:auto;cursor:zoom-in}
.ai-result-foot{padding:6px 10px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border)}
.ai-asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.ai-asset-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;cursor:pointer;transition:all .2s}
.ai-asset-card:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,.1)}
.ai-asset-card img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover}
.ai-asset-card-foot{padding:8px 10px}
.ai-asset-tagline{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:5px}
.ai-asset-tagline .tag{font-size:10px;background:var(--bg3,#eee);color:var(--text2);padding:1px 6px;border-radius:3px}
.ai-asset-tagline .tag.blu{background:rgba(66,139,255,.12);color:var(--blue)}
.ai-asset-tagline .tag.grn{background:rgba(34,178,120,.12);color:var(--green)}
.ai-asset-prompt{font-size:11.5px;color:var(--text3);line-height:1.5;min-height:32px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
@media (max-width:1200px){.ai-main{grid-template-columns:1fr}}

/* 打印样式 */
@media print{
  @page{size:A4;margin:18mm 18mm 22mm}
  html,body{background:#fff!important;margin:0!important;padding:0!important}
  body *{visibility:hidden}
  .dtpl-print-root,.dtpl-print-root *{visibility:visible}
  .dtpl-print-root{position:absolute;left:0;top:0;right:0}
  .dtpl-paper{box-shadow:none;padding:0;width:auto;min-height:auto;margin:0;transform:none!important}
  .dtpl-paper-header,.dtpl-paper-footer{break-inside:avoid}
  .dtpl-paper-body .dtpl-h1,.dtpl-paper-body .dtpl-h2,.dtpl-paper-body .dtpl-h3{break-after:avoid}
  .dtpl-paper-body .dtpl-table,.dtpl-paper-body .dtpl-sign,.dtpl-paper-body .dtpl-note{break-inside:avoid}
  .dtpl-paper-body .dtpl-missing{background:#fff3a8!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .dtpl-paper-body .dtpl-table th{background:#efe8d6!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ═══ OKR Management ═══ */
.okr-page{padding:20px;position:relative;min-height:100%}
.okr-tabs{display:flex;gap:6px;margin-bottom:20px;flex-wrap:wrap}
.okr-tab{padding:8px 16px;border-radius:20px;cursor:pointer;font-size:13px;background:var(--bg2);border:1px solid var(--border);transition:all .2s;user-select:none}
.okr-tab:hover{background:var(--bg3);border-color:var(--border2)}
.okr-tab.on{background:linear-gradient(135deg,#4a8ff0,#2563eb);color:#fff;border-color:transparent;box-shadow:0 4px 12px rgba(37,99,235,.3)}
.okr-tree{padding-left:0}
.okr-node{border-left:2px solid var(--border);margin-bottom:0}
.okr-node-title{display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;border-radius:6px;transition:background .15s}
.okr-node-title:hover{background:var(--bg3)}
.okr-arrow{color:var(--text3)}
.okr-progress{flex-shrink:0;width:80px;height:6px;background:var(--bg3);border-radius:3px;overflow:hidden}
.okr-progress-bar{height:100%;background:linear-gradient(90deg,var(--blue),var(--blue-t));border-radius:3px;transition:width .3s}
.okr-status{font-size:10px;padding:2px 8px;border-radius:10px;flex-shrink:0;font-weight:500}
.okr-status.planned{background:var(--bg3);color:var(--text3)}
.okr-status.in_progress{background:var(--bd);color:var(--blue-t)}
.okr-status.completed{background:var(--gd);color:var(--green-t)}
.okr-fab{position:fixed;bottom:28px;right:28px;width:56px;height:56px;border-radius:28px;background:linear-gradient(135deg,#2563eb,#4a8ff0);color:#fff;font-size:28px;border:none;cursor:pointer;box-shadow:0 6px 20px rgba(37,99,235,.4);z-index:100;display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}
.okr-fab:hover{transform:scale(1.1);box-shadow:0 8px 28px rgba(37,99,235,.55)}

#theme-toggle .ico-sun{display:none}
[data-theme="light"] #theme-toggle .ico-moon{display:none}
[data-theme="light"] #theme-toggle .ico-sun{display:block}

/* REPORTS */
.report-workspace{display:flex;flex-direction:column;gap:16px;max-width:1480px;margin:0 auto;padding-bottom:24px}
.rpt-hero{position:relative;overflow:hidden;border:1px solid var(--border);border-radius:20px;padding:25px 28px 0;background:linear-gradient(120deg,rgba(74,143,240,.16),rgba(155,124,240,.08) 54%,rgba(32,192,208,.08)),var(--bg1);box-shadow:0 18px 44px rgba(0,0,0,.12)}
.rpt-hero:before{content:"";position:absolute;width:280px;height:280px;border-radius:50%;right:-90px;top:-170px;background:radial-gradient(circle,rgba(74,143,240,.28),rgba(74,143,240,0) 68%);pointer-events:none}
.rpt-hero:after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;left:38%;bottom:-155px;border:32px solid rgba(155,124,240,.07);pointer-events:none}
.rpt-hero-main{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:24px}
.rpt-hero-copy{display:flex;align-items:center;gap:16px;min-width:0}
.rpt-hero-icon{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff;background:linear-gradient(145deg,var(--blue),var(--purple));box-shadow:0 10px 24px rgba(59,118,224,.28)}
.rpt-hero-icon svg{width:27px;height:27px;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.rpt-kicker{font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--blue-t);margin-bottom:2px}
.rpt-hero h1{font-size:25px;line-height:1.25;letter-spacing:-.4px;color:var(--text1);margin:0 0 4px}
.rpt-hero p{font-size:13px;color:var(--text2);line-height:1.6}
.rpt-write-btn{position:relative;z-index:1;display:flex;align-items:center;gap:11px;min-width:190px;padding:11px 16px;border:1px solid rgba(255,255,255,.2);border-radius:14px;background:linear-gradient(135deg,#4a8ff0,#6f78ed);color:#fff;box-shadow:0 10px 24px rgba(59,118,224,.24);cursor:pointer;font-family:var(--fn);text-align:left;transition:transform .18s,box-shadow .18s,filter .18s}
.rpt-write-btn:hover{transform:translateY(-2px);filter:brightness(1.06);box-shadow:0 14px 30px rgba(59,118,224,.32)}
.rpt-write-plus{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.16);display:flex;align-items:center;justify-content:center;font-size:23px;font-weight:300;flex-shrink:0}
.rpt-write-btn strong{display:block;font-size:14px;line-height:1.35}
.rpt-write-btn small{display:block;font-size:10px;font-weight:400;opacity:.78;margin-top:2px}
.rpt-metrics{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:22px;border-top:1px solid var(--border)}
.rpt-metric{position:relative;display:flex;align-items:baseline;gap:4px;padding:13px 18px 15px}
.rpt-metric:first-child{padding-left:0}
.rpt-metric:not(:last-child):after{content:"";position:absolute;right:0;top:13px;bottom:13px;width:1px;background:var(--border)}
.rpt-metric span{font-size:11px;color:var(--text3);margin-right:auto}
.rpt-metric strong{font-family:var(--mo);font-size:21px;line-height:1;color:var(--text1)}
.rpt-metric small{font-size:10px;color:var(--text3)}
.rpt-toolbar{display:flex;align-items:center;gap:14px;padding:7px 9px 7px 15px;border:1px solid var(--border);border-radius:15px;background:var(--bg1);box-shadow:0 8px 24px rgba(0,0,0,.05)}
.rpt-toolbar-label{font-size:11px;font-weight:600;color:var(--text3);white-space:nowrap}
.rpt-tabs{display:flex;align-items:center;gap:5px;min-width:0;overflow-x:auto;scrollbar-width:none}
.rpt-tabs::-webkit-scrollbar{display:none}
.rpt-tab{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text2);font-family:var(--fn);font-size:12px;cursor:pointer;white-space:nowrap;transition:all .16s}
.rpt-tab:hover{background:var(--soft);color:var(--text1)}
.rpt-tab b{min-width:19px;height:19px;padding:0 5px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;background:var(--bg3);color:var(--text3);font:600 10px/1 var(--mo)}
.rpt-tab.on{background:var(--bd);border-color:var(--bb);color:var(--blue-t);font-weight:600}
.rpt-tab.on b{background:var(--blue);color:#fff}
.rpt-list{display:flex;flex-direction:column;gap:12px}
.rpt-card{position:relative;overflow:hidden;background:var(--bg1);border:1px solid var(--border);border-radius:16px;padding:18px 20px;box-shadow:0 8px 24px rgba(0,0,0,.05);transition:transform .18s,border-color .18s,box-shadow .18s}
.rpt-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--blue)}
.rpt-card.rpt-type-weekly:before{background:var(--purple)}
.rpt-card.rpt-type-monthly:before{background:var(--amber)}
.rpt-card.rpt-type-free:before{background:var(--teal)}
.rpt-card:hover{transform:translateY(-1px);border-color:var(--border2);box-shadow:0 12px 30px rgba(0,0,0,.09)}
.rpt-card-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.rpt-card-title{display:flex;align-items:center;gap:9px;min-width:0;flex-wrap:wrap}
.rpt-card-side{display:flex;align-items:center;gap:8px;flex-shrink:0}
.rpt-card-actions{display:flex;gap:5px;margin-left:5px}
.rpt-avatar{width:28px;height:28px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--bd),var(--pd));border:1px solid var(--border);color:var(--blue-t);font-size:11px;font-weight:700}
.rpt-pt{font-weight:700;font-size:15px;color:var(--text1)}
.rpt-meta{display:flex;flex-direction:column;font-size:11px;line-height:1.35;color:var(--text2)}
.rpt-meta small{font-size:9px;color:var(--text3);font-family:var(--mo)}
.rpt-card-projects{display:flex;flex-wrap:wrap;gap:5px;margin-top:11px}
.rpt-secs{margin-top:13px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.rpt-sec{min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--soft)}
.rpt-sec-l{font-size:10px;font-weight:600;color:var(--text3);margin-bottom:4px}
.rpt-sec-c{font-size:12px;color:var(--text1);line-height:1.65;min-width:0;word-break:break-word}
.rpt-card-blank{margin-top:12px;padding:9px 11px;border-radius:10px;background:var(--soft);color:var(--text3);font-size:11px}
.rpt-projs{display:flex;flex-wrap:wrap}
.rpt-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--border2);border-radius:999px;font-size:12px;color:var(--text2);cursor:pointer;margin:0 6px 6px 0;transition:all .15s;user-select:none}
.rpt-chip.on{background:var(--bd);color:var(--blue-t);border-color:var(--bb)}
.rpt-chip input{display:none}
.rpt-empty{position:relative;overflow:hidden;min-height:315px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px 24px;text-align:center;border:1px solid var(--border);border-radius:20px;background:linear-gradient(180deg,var(--bg1),var(--bg2));box-shadow:0 12px 34px rgba(0,0,0,.05)}
.rpt-empty[onclick]{cursor:pointer}
.rpt-empty:before{content:"";position:absolute;width:360px;height:190px;left:50%;top:-135px;transform:translateX(-50%);border-radius:50%;background:rgba(74,143,240,.08);filter:blur(2px)}
.rpt-empty-visual{position:relative;width:100px;height:94px;display:flex;align-items:center;justify-content:center;margin-bottom:5px}
.rpt-empty-visual svg{position:relative;z-index:2;width:78px;height:78px;stroke:var(--blue-t);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 8px 12px rgba(59,118,224,.16))}
.rpt-empty-visual svg rect{fill:var(--bg1);stroke:var(--bb)}
.rpt-empty-visual svg circle{fill:var(--blue);stroke:var(--bg1);stroke-width:4}
.rpt-empty-visual svg path:last-child{stroke:#fff;stroke-width:2.4}
.rpt-empty-orbit{position:absolute;border-radius:50%;background:var(--bd)}
.rpt-empty-orbit.o1{width:12px;height:12px;left:2px;top:24px}
.rpt-empty-orbit.o2{width:8px;height:8px;right:7px;top:12px;background:var(--pd)}
.rpt-empty h3{position:relative;font-size:17px;color:var(--text1);margin-bottom:6px}
.rpt-empty p{position:relative;max-width:480px;color:var(--text3);font-size:12px;line-height:1.7}
.rpt-empty-btn{position:relative;margin-top:17px;padding:8px 17px;border-radius:10px;box-shadow:0 8px 18px rgba(59,118,224,.2)}
.rpt-empty-btn span{font-size:17px;font-weight:300;line-height:1}
.rpt-empty-hints{display:flex;align-items:center;gap:10px;margin-top:22px;color:var(--text3);font-size:10px}
.rpt-empty-hints i{width:3px;height:3px;border-radius:50%;background:var(--border2)}
[data-theme="light"] .rpt-hero{background:linear-gradient(120deg,#f6f9ff,#f9f7ff 55%,#f4fbfc);box-shadow:0 16px 40px rgba(47,84,145,.08)}
[data-theme="light"] .rpt-card,[data-theme="light"] .rpt-toolbar,[data-theme="light"] .rpt-empty{box-shadow:0 10px 28px rgba(47,68,105,.06)}
@media(max-width:760px){
  .rpt-hero{padding:20px 18px 0;border-radius:17px}
  .rpt-hero-main{align-items:flex-start;flex-direction:column}
  .rpt-hero-icon{width:44px;height:44px;border-radius:13px}
  .rpt-hero h1{font-size:21px}
  .rpt-write-btn{width:100%;min-width:0}
  .rpt-metrics{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px}
  .rpt-metric{padding:12px 10px}
  .rpt-metric:first-child{padding-left:10px}
  .rpt-metric:nth-child(2):after{display:none}
  .rpt-metric:nth-child(-n+2){border-bottom:1px solid var(--border)}
  .rpt-toolbar{align-items:flex-start;flex-direction:column;gap:6px;padding:9px}
  .rpt-tabs{width:100%}
  .rpt-card{padding:15px}
  .rpt-card-head{align-items:flex-start;flex-direction:column}
  .rpt-card-side{width:100%;flex-wrap:wrap}
  .rpt-card-actions{margin-left:auto}
  .rpt-secs{grid-template-columns:1fr}
  .rpt-empty{min-height:300px;padding:30px 18px}
}
