:root{--bg:#eef1f6;--shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);--side:#27364f;--side2:#1f2b40;--card:#fff;--line:#e6e8ec;--line2:#eef0f3;--txt:#111827;--txt2:#374151;--mut:#6b7280;--pri:#2563eb;--prih:#1d4ed8;--red:#dc2626;--redbg:#fef2f2;--grn:#15803d;--grnbg:#f0fdf4;--amb:#b45309;--ambbg:#fffbeb;--blu:#1d4ed8;--blubg:#eff6ff;--gry:#4b5563;--grybg:#f3f4f6;--pur:#6d28d9;--purbg:#f5f3ff;--r:8px}
*{box-sizing:border-box}html,body{margin:0;height:100%}
body{font:13px/1.5 "Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--txt);background:var(--bg);-webkit-font-smoothing:antialiased}
a{color:var(--pri)}button{font:inherit;cursor:pointer;color:inherit}
svg.ic{width:16px;height:16px;flex-shrink:0;vertical-align:-3px;color:#334155}
#app{display:flex;height:100vh;overflow:hidden}
/* sidebar */
#side{width:236px;background:linear-gradient(180deg,var(--side) 0%,var(--side2) 100%);display:flex;flex-direction:column;flex-shrink:0;color:#e5e7eb}
#side .brand{padding:18px 16px 14px;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.08)}
#side .brand .logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#3b82f6,#6366f1);color:#fff;display:grid;place-items:center;box-shadow:0 4px 12px rgba(59,130,246,.35)}
#side .brand .logo svg{width:18px;height:18px}
#side .brand b{font-size:14px;display:block;letter-spacing:-.01em;color:#fff}#side .brand small{font-size:11px;color:#a5b0c4}
#side nav{flex:1;overflow:auto;padding:4px 8px 12px}
#side .grp{padding:16px 12px 5px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#8a97ad;font-weight:700}
#side .it{display:flex;align-items:center;gap:10px;padding:7px 12px;cursor:pointer;color:#dbe2ee;font-size:12.8px;border-radius:8px;margin:1px 0;font-weight:500}
#side .it svg{color:#a5b0c4;width:17px;height:17px}#side .it:hover{background:rgba(255,255,255,.08);color:#fff}#side .it:hover svg{color:#fff}#side .it.on{background:rgba(255,255,255,.14);color:#fff;font-weight:600;box-shadow:inset 3px 0 0 #60a5fa}#side .it.on svg{color:#93c5fd}
#side .it span:first-of-type{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#side .it .cnt{font-size:11px;color:#8a97ad;min-width:18px;text-align:right;font-variant-numeric:tabular-nums}#side .it .rd{width:6px;height:6px;border-radius:50%;background:#f87171;flex-shrink:0}
#side .it.on .cnt{color:#dbe2ee}
#side .foot{padding:12px 16px;font-size:11px;color:#a5b0c4;border-top:1px solid rgba(255,255,255,.08)}
#main{flex:1;display:flex;flex-direction:column;min-width:0}
#top{height:56px;background:#fff;border-bottom:1px solid #e3e8ef;box-shadow:0 1px 0 rgba(16,24,40,.04);display:flex;align-items:center;gap:12px;padding:0 22px;color:var(--txt);z-index:5}
#top h1{font-size:16px;margin:0;font-weight:700;letter-spacing:-.01em;color:var(--txt)}
#top .sp{flex:1}
#gs{position:relative;display:flex;align-items:center}
#gs svg{position:absolute;left:10px;color:#6b7280}
#gs input{width:340px;padding:8px 12px 8px 32px;border:1px solid #dfe4ec;border-radius:8px;background:#f3f5f9;color:var(--txt);font:inherit;outline:none}
#gs input::placeholder{color:#8a94a6}#gs input:focus{border-color:#93c5fd;background:#fff;box-shadow:0 0 0 3px rgba(59,130,246,.15)}
#gsr{position:absolute;top:40px;left:0;width:560px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 32px rgba(17,24,39,.12);max-height:380px;overflow:auto;display:none;z-index:50}
#gsr .r{padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--line2);display:flex;gap:10px;align-items:center}#gsr .r:hover{background:#f9fafb}
#gsr .r small{color:var(--mut)}#gsr .mic{color:#334155;display:flex}
#bell{position:relative;cursor:pointer;width:36px;height:36px;display:grid;place-items:center;border-radius:8px;color:#1f2937;border:1px solid #dfe4ec;background:#f3f5f9}#bell:hover{background:#e8edf4}#bell:hover{background:var(--grybg)}
#bell svg{width:18px;height:18px}
#bell .n{position:absolute;top:2px;right:0;background:var(--red);color:#fff;font-size:10px;border-radius:9px;padding:0 5px;font-weight:600;line-height:15px}
#bellp{position:absolute;right:64px;top:50px;width:440px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 32px rgba(17,24,39,.14);display:none;z-index:60;max-height:70vh;overflow:auto}
#bellp .h{padding:11px 14px;font-weight:700;border-bottom:1px solid #e3e8ef;display:flex;justify-content:space-between;background:#f6f8fb;border-radius:8px 8px 0 0}
#bellp .i{padding:9px 14px;border-bottom:1px solid var(--line2);cursor:pointer;display:flex;gap:10px;align-items:flex-start}#bellp .i:hover{background:#f9fafb}
#bellp .i .dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex-shrink:0}
#bellp .i small{color:var(--mut);display:block}
.avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#6366f1);color:#fff;display:grid;place-items:center;font-weight:600;font-size:11px}
#content{flex:1;overflow:auto;padding:18px 22px}
/* toolbar */
.tb{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.srch{position:relative;display:flex;align-items:center}.srch svg{position:absolute;left:9px;color:#475569}.srch input{padding-left:30px!important;width:260px}
.tb input[type=text],.tb select,.lf input,.lf select,.fm input,.fm select,.fm textarea,.led input,.led select{padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:#fff;font:inherit;color:var(--txt);outline:none}
.tb input:focus,.fm input:focus,.fm select:focus,.fm textarea:focus,.led input:focus,.led select:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.btn{padding:7px 12px;border:1px solid #d5dbe5;background:#fff;border-radius:8px;font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;gap:6px;color:#1f2937;line-height:1.3;white-space:nowrap;box-shadow:0 1px 1px rgba(16,24,40,.04)}
.btn svg{width:15px;height:15px;color:#334155}
.btn:hover{background:#f3f5f9;border-color:#b7c0cf}.btn.p{background:linear-gradient(180deg,#3b82f6,#2563eb);color:#fff;border-color:#2563eb;box-shadow:0 2px 6px rgba(37,99,235,.3)}.btn.p:hover{background:#1d4ed8}
.btn.g{color:#166534;border-color:#86efac;background:#dcfce7}.btn.g svg{color:#166534}.btn.g:hover{background:#bbf7d0}.btn.r{color:#991b1b;border-color:#fca5a5;background:#fee2e2}.btn.r svg{color:#991b1b}.btn.r:hover{background:#fecaca}
.btn.p svg{color:#fff}
.btn.sm{padding:3px 8px;font-size:11.5px}.btn.sm svg{width:12px;height:12px}
.ib{border:0;background:none;padding:4px;border-radius:4px;color:#64748b;display:inline-flex}.ib:hover{background:var(--redbg);color:var(--red)}
.seg{display:inline-flex;border:1px solid #d5dbe5;border-radius:8px;overflow:hidden;background:#fff;padding:2px;gap:2px}.seg button{border:0;background:#fff;padding:5px 10px;font-size:12px;display:inline-flex;align-items:center;gap:5px;color:#1f2937;font-weight:600;border-radius:6px}.seg button.on{background:#2563eb;color:#fff}.seg button.on svg{color:#fff}
.card{background:var(--card);border:1px solid #e3e8ef;border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}
.legend{display:flex;gap:14px;font-size:11.5px;color:var(--mut);margin-left:auto}
.legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:1px}
/* table */
.tw{overflow:auto;max-height:calc(100vh - 176px)}
table.lst{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px}
table.lst th{position:sticky;top:0;background:#f3f5f9;text-align:left;padding:9px 12px;font-size:11px;color:#334155;border-bottom:1px solid #dfe4ec;white-space:nowrap;cursor:pointer;z-index:2;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
table.lst td{padding:8px 12px;border-bottom:1px solid #eef1f5;vertical-align:middle;white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis}
table.lst tr.rw{cursor:pointer}table.lst tr.rw:hover td{background:#fafbfc}
table.lst tr.row-red td:first-child{box-shadow:inset 2px 0 0 #ef4444}table.lst tr.row-green td:first-child{box-shadow:inset 2px 0 0 #22c55e}table.lst tr.row-amber td:first-child{box-shadow:inset 2px 0 0 #f59e0b}
table.lst td.num,table.lst th.num{text-align:right;font-variant-numeric:tabular-nums}
table.lst tfoot td{background:#f3f5f9;font-weight:600;border-top:1px solid #dfe4ec;position:sticky;bottom:0}
.al{font-weight:600;display:inline-block}
.al-red{color:#c81e1e}.al-green{color:#15803d}.al-amber{color:#b45309}.al-blue{color:#1d4ed8}.al-gray{color:#4b5563}.al-purple{color:#6d28d9}
small.dl{display:block;font-size:10.5px;line-height:1.2;margin-top:2px;font-weight:400;color:#6b7280}
.dl-red,.dl-green,.dl-amber,.dl-blue,.dl-gray,.dl-purple{color:#6b7280}
.bd{display:inline-flex;align-items:center;gap:5px;padding:1px 7px 1px 6px;border-radius:6px;font-size:11.5px;font-weight:500;white-space:nowrap;background:#f3f5f9;color:#374151}
.bd:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.bd-red{color:#b91c1c;background:#fef2f2}.bd-green{color:#15803d;background:#f0fdf4}.bd-amber{color:#b45309;background:#fffbeb}.bd-blue{color:#1d4ed8;background:#eff6ff}.bd-gray{color:#4b5563;background:#f3f5f9}.bd-purple{color:#6d28d9;background:#f5f3ff}
.bl{display:inline-flex;align-items:center;gap:4px}.bl.yes{color:var(--grn)}.bl.no{color:var(--mut)}
.cnt{display:inline-flex;align-items:center;gap:4px;color:#374151}.cnt svg{width:13px;height:13px}
.lnk{color:var(--pri);text-decoration:none;cursor:pointer}.lnk:hover{text-decoration:underline}
.pg{height:6px;background:var(--line);border-radius:6px;overflow:hidden;min-width:70px;display:inline-block;vertical-align:middle;width:80px}
.pg i{display:block;height:100%;background:var(--pri)}.pg.red i{background:var(--red)}.pg.green i{background:var(--grn)}.pg.amber i{background:#f59e0b}
.star{color:#f59e0b;letter-spacing:1px}
.mut{color:var(--mut)}.tiny{font-size:11px}
/* drawer */
#bk{position:fixed;inset:0;background:rgba(17,24,39,.32);display:none;z-index:100}
.drawer{position:fixed;top:0;right:0;height:100vh;width:min(1040px,82vw);background:#fff;box-shadow:-12px 0 40px rgba(17,24,39,.18);transform:translateX(105%);transition:transform .26s cubic-bezier(.2,.8,.2,1);z-index:101;display:flex;flex-direction:column;border-radius:14px 0 0 14px;overflow:hidden}
.drawer.open{transform:translateX(0)}
.dh{padding:18px 24px 14px;display:flex;gap:14px;align-items:flex-start;background:linear-gradient(180deg,#f6f8fb,#fff);border-top:4px solid #3b82f6}
.dh .kk{font-size:11px;color:#3b82f6;text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.dh h2{margin:3px 0 8px;font-size:18px;font-weight:700;letter-spacing:-.02em;color:var(--txt)}
.dh .x{margin-left:auto;border:1px solid #d5dbe5;background:#fff;width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:#334155}.dh .x:hover{background:#f3f5f9}
.acts{padding:10px 24px;display:flex;gap:6px;flex-wrap:wrap;border-top:1px solid #e3e8ef;border-bottom:1px solid #e3e8ef;background:#f3f5f9}
.db{flex:1;overflow:auto;padding:18px 24px 40px;background:#eef1f6}
.sec{background:#fff;border:1px solid #e3e8ef;border-radius:12px;margin-bottom:14px;box-shadow:var(--shadow);overflow:hidden}
.sec>h3{margin:0;padding:10px 16px;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:#334155;border-bottom:1px solid #e3e8ef;display:flex;align-items:center;gap:8px;font-weight:700;background:#f6f8fb}
.sec>h3 .btn{margin-left:auto}
.fg{display:grid;grid-template-columns:repeat(3,1fr)}
.fv{padding:9px 14px;border-bottom:1px solid var(--line2);border-right:1px solid var(--line2);min-width:0}
.fv.full{grid-column:1/-1}.fv label{display:block;font-size:11px;color:var(--mut);margin-bottom:2px}.fv .v{font-weight:500;word-break:break-word;white-space:pre-wrap}
.sec table.lst td,.sec table.lst th{padding:7px 10px}
.files{padding:8px 14px;display:flex;flex-direction:column;gap:6px}
.file{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:#fff}
.fic .ext{display:inline-grid;place-items:center;width:36px;height:26px;border-radius:4px;background:var(--grybg);color:var(--gry);font-size:9.5px;font-weight:700;font-style:normal;letter-spacing:.02em}
.fic .e-pdf{background:var(--redbg);color:var(--red)}.fic .e-xlsx,.fic .e-xls,.fic .e-csv{background:var(--grnbg);color:var(--grn)}.fic .e-docx,.fic .e-doc{background:var(--blubg);color:var(--blu)}.fic .e-dwg,.fic .e-dxf{background:var(--purbg);color:var(--pur)}
.file b{font-weight:500;font-size:12.5px}.file small{color:var(--mut);display:block}
.file .btn{margin-left:auto}
.imgs{padding:10px 14px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.img{border-radius:6px;overflow:hidden;border:1px solid var(--line);background:#fff}
.img .ph{height:92px;display:grid;place-items:center;color:#475569;background:#e9edf3}.img .ph svg{width:26px;height:26px}
.img .ph.p1{background:#eef2ff}.img .ph.p2{background:#ecfdf5}.img .ph.p3{background:#fff7ed}
.img .cap{padding:6px 8px;font-size:11.5px}.img .cap small{color:var(--mut);display:block}
.tl{padding:10px 14px}
.tli{display:flex;gap:12px;padding:8px 0;border-bottom:1px solid var(--line2);align-items:flex-start}
.tli .d{width:82px;flex-shrink:0;font-size:11.5px;color:var(--mut);padding-top:2px}
.tli .tdot{width:8px;height:8px;border-radius:50%;background:var(--pri);margin-top:6px;flex-shrink:0}
.tli .c b{display:block;font-size:12.8px;font-weight:500}.tli .c small{color:var(--mut)}
.badges{display:flex;gap:6px;flex-wrap:wrap}
.tabs{display:flex;gap:2px;border-bottom:1px solid #e3e8ef;padding:0 10px;background:#f6f8fb;overflow-x:auto}
.tabs button{border:0;background:none;padding:10px 12px;font-size:12.5px;color:var(--mut);border-bottom:2px solid transparent;font-weight:500;white-space:nowrap}
.tabs button.on{color:#2563eb;border-bottom-color:#2563eb}
.tabp{display:none}.tabp.on{display:block}
/* kanban */
.kb{display:flex;gap:12px;overflow:auto;align-items:flex-start;padding-bottom:10px}
.kcol{min-width:268px;width:268px;background:#e6eaf1;border-radius:12px;padding:10px;flex-shrink:0}
.kcol h4{margin:2px 4px 8px;font-size:12.5px;display:flex;justify-content:space-between;align-items:center}
.kc{background:#fff;border:1px solid #e3e8ef;border-radius:10px;padding:10px 12px;margin-bottom:8px;cursor:pointer;font-size:12.5px;box-shadow:var(--shadow)}
.kc:hover{border-color:#9ca3af}.kc b{display:block;margin-bottom:4px;font-weight:500}.kc .m{color:var(--mut);font-size:11.5px;display:flex;justify-content:space-between;gap:6px;flex-wrap:wrap}
.kc.red{border-left:3px solid var(--red)}.kc.amber{border-left:3px solid #f59e0b}.kc.green{border-left:3px solid var(--grn)}
.kcol.over{outline:2px dashed var(--pri)}
/* modal */
.modal{position:fixed;inset:0;background:rgba(17,24,39,.4);display:none;z-index:200;align-items:center;justify-content:center}
.modal.on{display:flex}
.mbox{background:#fff;border-radius:14px;width:min(760px,94vw);max-height:92vh;display:flex;flex-direction:column;box-shadow:0 24px 64px rgba(17,24,39,.28)}
.mbox.wide{width:min(1000px,96vw)}
.mh{padding:14px 20px;border-bottom:1px solid #e3e8ef;display:flex;align-items:center;gap:10px;background:linear-gradient(180deg,#f6f8fb,#fff);border-radius:14px 14px 0 0;border-top:4px solid #3b82f6}.mh h3{margin:0;font-size:15px;font-weight:700;color:var(--txt)}.mh .x{margin-left:auto;border:1px solid #d5dbe5;background:#fff;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:#334155}
.mb{padding:16px 18px;overflow:auto}
.mf{padding:12px 20px;border-top:1px solid #e3e8ef;display:flex;gap:8px;justify-content:flex-end;background:#f6f8fb;border-radius:0 0 14px 14px}
.fm{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px 14px}
.fm .f{display:flex;flex-direction:column;gap:3px}.fm .f label{font-size:11px;color:var(--mut)}.fm .f.full{grid-column:1/-1}
.fm input,.fm select,.fm textarea{width:100%}
.led{margin-top:16px;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.led-h{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#f3f5f9;border-bottom:1px solid #dfe4ec;font-size:12.5px}
.led-t td{padding:4px 6px!important}.led-t input,.led-t select{width:100%;min-width:90px;padding:4px 7px;font-size:12px}.led-t input.ro{background:#f9fafb;color:var(--mut);border-color:var(--line2)}
/* print */
.paper{background:#fff;padding:28px 34px;font-size:12.5px;color:#000;min-height:600px;border:1px solid #ddd}
.paper .co{display:flex;justify-content:space-between;border-bottom:2px solid #000;padding-bottom:8px;margin-bottom:12px}
.paper .co b{font-size:15px}.paper h2{text-align:center;margin:14px 0 4px;font-size:18px;text-transform:uppercase}
.paper .sub{text-align:center;color:#444;margin-bottom:14px}
.paper table{width:100%;border-collapse:collapse;margin:10px 0}.paper table th,.paper table td{border:1px solid #333;padding:5px 7px;font-size:12px}
.paper table th{background:#f0f0f0}
.paper .kv{display:grid;grid-template-columns:1fr 1fr;gap:4px 20px;margin:8px 0}.paper .kv div b{font-weight:600}
.paper .sig{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;margin-top:34px}.paper .sig small{display:block;font-style:italic;color:#555}.paper .sig div{padding-bottom:60px}
.paper .amt{font-size:14px;font-weight:700}
@media print{body *{visibility:hidden}#printModal,#printModal *{visibility:visible}#printModal{position:absolute;inset:0;background:#fff;display:block}#printModal .mh,#printModal .mf{display:none}#printModal .mbox{box-shadow:none;width:100%;max-height:none;border-radius:0}.paper{border:0}}
/* dashboard */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px;margin-bottom:14px}
.kpi{background:#fff;border:1px solid #e3e8ef;border-radius:12px;padding:14px 16px;position:relative;box-shadow:var(--shadow)}
.kpi:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:3px;background:#3b82f6}
.kpi.red:before{background:var(--red)}.kpi.green:before{background:var(--grn)}.kpi.amber:before{background:#f59e0b}.kpi.gray:before{background:#d1d5db}
.kpi label{font-size:11.5px;color:var(--mut);display:block}.kpi .v{font-size:21px;font-weight:700;margin:4px 0;letter-spacing:-.02em}.kpi small{font-size:11.5px;color:var(--mut)}
.kpi small.up{color:var(--grn)}.kpi small.dn{color:var(--red)}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:14px}
.g2>.sec,.g3>.sec{margin:0}
.bars{padding:8px 16px 10px}.bar{display:grid;grid-template-columns:minmax(120px,200px) 1fr 118px 40px;align-items:center;gap:12px;margin:0;padding:6px 0;font-size:12.5px;border-bottom:1px solid #f3f5f9}
.bar:last-child{border-bottom:0}.bar .l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#1f2937}
.bar .t{height:8px;background:#eef1f6;border-radius:99px;overflow:hidden}.bar .t i{display:block;height:100%;background:#3b82f6;border-radius:99px;transition:width .4s}
.bar .n{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.bar .p{text-align:right;font-size:11px;color:#8a94a6;font-variant-numeric:tabular-nums}
.lgd{display:flex;gap:14px;padding:6px 16px 10px;font-size:11.5px;color:#4b5563}.lgd i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.dn{display:flex;gap:18px;align-items:center;padding:12px 16px}.dnl{flex:1;display:flex;flex-direction:column;gap:5px;font-size:12.5px;min-width:0}
.dnl>div{display:grid;grid-template-columns:10px 1fr auto 38px;gap:8px;align-items:center}.dnl i{width:10px;height:10px;border-radius:3px;display:block}.dnl .l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dnl b{font-variant-numeric:tabular-nums}.dnl small{color:#8a94a6;text-align:right;font-variant-numeric:tabular-nums}
.dnl .click{cursor:pointer}.dnl .click:hover .l{color:#2563eb;text-decoration:underline}
.ins{display:flex;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line2);font-size:12.8px;align-items:flex-start}
.ins .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:5px}
.ins.red .dot{background:var(--red)}.ins.green .dot{background:var(--grn)}.ins.amber .dot{background:#f59e0b}.ins.blue .dot{background:var(--blu)}
.ins b.pct{margin-left:auto;white-space:nowrap;font-variant-numeric:tabular-nums}
.ins.red b.pct{color:var(--red)}.ins.green b.pct{color:var(--grn)}.ins.amber b.pct{color:var(--amb)}
.dtabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.dtabs button{border:1px solid #d5dbe5;background:#fff;padding:8px 13px;border-radius:8px;font-weight:600;display:inline-flex;align-items:center;gap:6px;color:#1f2937;box-shadow:0 1px 1px rgba(16,24,40,.04)}
.dtabs button svg{width:15px;height:15px;color:#334155}
.dtabs button.on{background:linear-gradient(180deg,#3b82f6,#2563eb);color:#fff;border-color:#2563eb;box-shadow:0 2px 6px rgba(37,99,235,.3)}.dtabs button.on svg{color:#fff}
svg.cols{width:100%;height:auto;display:block;padding:8px 8px 0}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--txt);color:#fff;padding:9px 16px;border-radius:8px;z-index:400;font-size:12.5px;box-shadow:0 8px 24px rgba(0,0,0,.25);opacity:0;transition:.25s;pointer-events:none}
.toast.on{opacity:1}
.empty{padding:30px;text-align:center;color:var(--mut)}
.chip{display:inline-block;padding:1px 6px;border-radius:4px;background:var(--grybg);font-size:11px;margin-right:4px}

/* loss report filter */
.lf{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:10px 16px}
.lf label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--mut);font-weight:500}
.lf input,.lf select{padding:5px 8px;font-size:12.5px;border-radius:6px;border:1px solid #d5dbe5}
.lf .sep{width:1px;height:22px;background:#dfe4ec;margin:0 4px}
.lf .btn{margin-left:auto}

/* attention block & id filter */
.attn{background:#fff;border:1px solid #e3e8ef;border-radius:12px;padding:10px 14px;margin-bottom:14px;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;font-size:12.5px;box-shadow:var(--shadow)}
.attn-t{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#6b7280;font-weight:700;margin-right:4px}
.ai{display:inline-flex;align-items:center;gap:6px;color:#374151}.ai:before{content:"";width:7px;height:7px;border-radius:50%;background:#9ca3af;flex-shrink:0}
.ai-red:before{background:#ef4444}.ai-amber:before{background:#f59e0b}.ai-green:before{background:#22c55e}.ai-blue:before{background:#3b82f6}.ai-purple:before{background:#8b5cf6}
.idf{display:inline-flex;align-items:center;gap:6px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;padding:5px 8px 5px 10px;border-radius:8px;font-size:12px;font-weight:600}
.idf svg{width:14px;height:14px;color:#c2410c}.idf button{border:0;background:#fed7aa;border-radius:6px;width:20px;height:20px;display:grid;place-items:center;padding:0}.idf button svg{width:12px;height:12px}
.kpi.click{cursor:pointer;transition:.15s}.kpi.click:hover{border-color:#93c5fd;box-shadow:0 4px 14px rgba(37,99,235,.12)}
.gtabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.gtabs button{border:1px solid #d5dbe5;background:#fff;padding:7px 12px;border-radius:8px;font-weight:600;color:#1f2937;display:inline-flex;gap:8px;align-items:center}
.gtabs button b{font-weight:600;color:#b91c1c;font-variant-numeric:tabular-nums}.gtabs button.on{background:#1f2937;color:#fff;border-color:#1f2937}.gtabs button.on b{color:#fca5a5}
.bar.click{cursor:pointer}.bar.click:hover span:first-child{color:#2563eb;text-decoration:underline}
.sw{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:7px;vertical-align:-1px}
table.mx td.click{cursor:pointer}table.mx td.click:hover{outline:2px solid #2563eb;outline-offset:-2px}
table.lst th{user-select:none;padding-right:18px;position:relative}
table.lst th:after{content:"";position:absolute;right:6px;top:50%;width:0;height:0;border:4px solid transparent;border-top-color:#c3cad6;transform:translateY(-1px);opacity:0;transition:.15s}
table.lst th:hover:after{opacity:1}
table.lst th.s-asc:after{opacity:1;border-top-color:transparent;border-bottom-color:#2563eb;transform:translateY(-6px)}
table.lst th.s-desc:after{opacity:1;border-top-color:#2563eb}
table.lst th.s-asc,table.lst th.s-desc{color:#1d4ed8}
.drf{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid #d5dbe5;border-radius:8px;padding:2px 6px 2px 9px}
.drf svg{width:14px;height:14px;color:#64748b}.drf select,.drf input{border:0!important;background:transparent!important;padding:5px 4px!important;box-shadow:none!important;font-size:12.5px}
.drf input[type=date]{width:128px}
.gsh{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;background:#f6f8fb;border-bottom:1px solid #e3e8ef}.gsh>span:first-child{display:inline-flex;align-items:center;gap:8px}.gsh svg{color:#2563eb}
.gsg{border-bottom:1px solid #e3e8ef}.gsg:last-child{border-bottom:0}
.gsg-h{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#fafbfd;font-size:12px}.gsg-h svg{color:#64748b;width:14px;height:14px}.gsg-h .cnt{background:#e8edf4;border-radius:9px;padding:0 7px;font-size:11px;color:#374151}.gsg-h .btn{margin-left:auto}
#gsr .r{padding:7px 12px 7px 16px}
