:root{--navy:#1f3864;--blue:#2e5496;--blue2:#4472c4;--bg:#eef1f6;--card:#fff;--line:#dfe4ee;--green:#c6efce;--greenT:#137333;--red:#ffc7ce;--redT:#9c0006;--yellow:#ffeb9c;--yellowT:#8a6d00;--muted:#6b7280;--gridline:#c9d2e0;--derived:#f5f7fb;--head:#ffe14d}*{box-sizing:border-box;font-family:Segoe UI,Arial,sans-serif}body{margin:0;background:var(--bg);color:#1a1a2e;font-size:14px}header{background:linear-gradient(90deg,var(--navy),var(--blue));color:#fff;padding:9px 18px;display:flex;align-items:center;gap:14px;box-shadow:0 2px 8px #00000026}header h1{font-size:16px;margin:0;font-weight:700}header .sub{font-size:11px;opacity:.85}header .ver{font-size:11px;background:#ffffff26;padding:3px 9px;border-radius:20px;direction:ltr;unicode-bidi:isolate;white-space:nowrap;font-variant-numeric:tabular-nums}header .db{margin-inline-start:auto;font-size:11px;background:#ffffff26;padding:4px 10px;border-radius:20px}nav{display:flex;gap:4px;background:var(--card);padding:0 12px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30;box-shadow:0 1px 4px #0000000a}nav button{background:none;border:none;padding:11px 16px;font-size:14px;cursor:pointer;color:var(--muted);border-bottom:3px solid transparent;font-weight:600}nav button.active{color:var(--blue);border-bottom-color:var(--blue)}nav button:hover{background:#f0f3f9}main{padding:14px;max-width:1400px;margin:0 auto}.panel{display:none}.panel.active{display:block}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:14px;box-shadow:0 1px 3px #0000000a}.row{display:flex;gap:14px;flex-wrap:wrap}.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap}label{font-size:12px;color:var(--muted);font-weight:600}input,select{padding:6px 9px;border:1px solid #cfd6e4;border-radius:7px;font-size:14px;background:#fff}input:focus,select:focus{outline:none;border-color:var(--blue2);box-shadow:0 0 0 2px #4472c426}button.btn{background:var(--blue);color:#fff;border:none;padding:8px 14px;border-radius:7px;cursor:pointer;font-weight:600;font-size:13px}button.btn:hover{background:var(--navy)}button.btn.ghost{background:#eef2f9;color:var(--blue)}button.btn.sm{padding:5px 9px;font-size:12px}button.btn.grn{background:#1e7e34}button.btn.grn:hover{background:#155724}button.btn:disabled{opacity:.45;cursor:not-allowed}.pill{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:700}.repair-name{color:#b45309;font-weight:600}.g{background:var(--green);color:var(--greenT)}.r{background:var(--red);color:var(--redT)}.y{background:var(--yellow);color:var(--yellowT)}.dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-inline-start:5px;vertical-align:middle}.dot.g{background:#33a852}.dot.y{background:#f5b301}.dot.r{background:#e8453c}.mini{font-size:11px;color:var(--muted)}.section-title{font-size:15px;font-weight:700;color:var(--navy);margin:2px 0 10px}.empty{color:var(--muted);text-align:center;padding:26px;font-size:13px}.kpi{flex:1;min-width:160px;background:linear-gradient(135deg,#fff,#f5f8ff);border:1px solid var(--line);border-radius:10px;padding:13px}.kpi .v{font-size:24px;font-weight:800;color:var(--navy)}.kpi .l{font-size:12px;color:var(--muted);font-weight:600}.bar-wrap{background:#eef1f7;border-radius:6px;height:18px;position:relative;overflow:hidden}.bar{height:100%;border-radius:6px}.xl-scroll{overflow:auto;border:1px solid var(--gridline);border-radius:8px;max-height:64vh}table.xl{border-collapse:collapse;width:100%;font-size:13px;min-width:1050px}table.xl th{background:var(--head);color:#3a2f00;font-weight:700;border:1px solid #d9be2e;padding:7px 6px;text-align:center;position:sticky;top:0;z-index:5;white-space:nowrap;font-size:12px}table.xl td{border:1px solid var(--gridline);padding:0;height:34px;background:#fff}table.xl td.derived{background:var(--derived);color:#334;padding:5px 8px;font-size:12px;text-align:center;white-space:nowrap;max-width:210px;overflow:hidden;text-overflow:ellipsis}table.xl td.derived.miss{background:#fff4f4;color:#c33}table.xl input,table.xl select{border:none;background:transparent;width:100%;height:32px;padding:4px 7px;font-size:13px;border-radius:0}table.xl input:focus,table.xl select:focus{box-shadow:inset 0 0 0 2px var(--blue2);background:#fbfdff}table.xl td.num input{text-align:center}tr.draft td{background:#fffdf3}tr.draft input{background:transparent}tr:hover td:not(.derived){background:#fafcff}td.actcell{text-align:center;width:36px;background:#fff}.delx{background:none;border:none;color:#c33;cursor:pointer;font-size:15px}.ac-list{position:absolute;background:#fff;border:1px solid #cfd6e4;border-radius:8px;box-shadow:0 6px 20px #0000002e;z-index:100;max-height:240px;overflow:auto;min-width:260px}.ac-item{padding:7px 10px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f4}.ac-item:hover,.ac-item.hl{background:#e3ebfa}.ac-item .n2{font-size:11px;color:var(--muted)}.imp{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px;border:1px dashed #b9c4da;border-radius:10px;margin-bottom:10px;background:#fbfcff}.imp .ico{font-size:22px}.imp .t{font-weight:700}.imp .d{font-size:11px;color:var(--muted)}.imp input[type=file]{font-size:12px}.preview{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}.tag{font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;margin-inline-start:5px}.tag.add{background:#e4f6e7;color:#137333}.tag.upd{background:#fff4d6;color:#8a6d00}.tag.same{background:#eef1f7;color:#667}.tag.err{background:#fdecea;color:#c5221f}.tag.rem{background:#fde8d7;color:#a14a00}.imp-section{padding:8px 0;border-bottom:1px solid var(--line)}.imp-section .t{font-size:.95em;margin-bottom:4px}.imp-list{margin:6px 0;font-size:12.5px}.imp-list summary{cursor:pointer;font-weight:600}.imp-list ul{margin:4px 0;padding-inline-start:18px;max-height:220px;overflow-y:auto}.imp-list li{margin:2px 0}.imp-list.rem summary{color:#a14a00}.imp-list.err summary{color:#c5221f}.imp-change{margin-inline-end:8px}.imp-warn{margin-inline-start:8px;font-size:11px;color:#a14a00;font-weight:600}.imp-summary{margin:10px 0 8px;font-weight:700}.imp-draft{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:#fff8e1;border:1px solid #f0d77a;border-radius:8px;padding:8px 10px;margin-bottom:10px;font-size:12.5px;font-weight:600}.dup-btn{width:18px;height:18px;line-height:16px;padding:0;border:1px solid #b9c4da;border-radius:50%;background:#fff;color:#1a56db;font-weight:700;font-size:13px;cursor:pointer;opacity:.55}.dup-btn:hover{opacity:1;background:#e8effd}tr:hover .dup-btn{opacity:1}table.xl .selcell{width:34px;text-align:center}table.xl .selcell input[type=checkbox]{width:16px;height:16px;padding:0;margin:0;vertical-align:middle;cursor:pointer}table.xl tr.sel td{background:#eef4ff}table.xl tr.copy td{background:#f1f8ff}table.xl tr.copy input:placeholder-shown{background:#fff4f4}.copy-mark{color:#1a56db;font-weight:700;cursor:default}.linkish{background:none;border:none;padding:0;color:#1a56db;text-decoration:underline;cursor:pointer;font:inherit}table.xl.sum-table{width:100%;min-width:0;font-size:12.5px}table.xl.sum-table td{padding:5px 8px;height:auto}.sum-table tr.sum-over td{background:#fdecea}.sum-table tr.sum-missing td,.sum-table tr.sum-under td{background:#fff6d6}.sum-chip{padding:2px 8px;border-radius:10px;font-weight:600}.sum-chip.over{background:#fdecea;color:#c5221f}.sum-chip.missing,.sum-chip.under{background:#fff6d6;color:#8a6d00}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#c7d0e0;border-radius:5px}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);background:#1e7e34;color:#fff;padding:11px 20px;border-radius:9px;font-weight:600;box-shadow:0 4px 16px #00000040;z-index:999;opacity:0;transition:.3s}.toast.show{opacity:1}table.xl th.sortable{cursor:pointer}table.xl th .arr{font-size:9px;opacity:.75}.filter-row th{background:#fffbe6;padding:2px}.filter-row input{width:100%;font-size:11px;padding:3px 5px;border:1px solid #e2d9a8;border-radius:5px}.addform{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:6px 0 10px;padding:8px;background:#f6f9ff;border:1px solid #dbe6fb;border-radius:8px}.addform input,.addform select{font-size:12px;padding:5px 7px}.delm{background:none;border:none;color:#c33;cursor:pointer;font-size:14px}.delm:hover{color:#900}.prog{display:flex;align-items:center;gap:10px;margin-bottom:8px}.prog .nm{width:120px;font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prog .track{flex:1;background:#eef1f7;border-radius:20px;height:22px;overflow:hidden;position:relative}.prog .fill{height:100%;border-radius:20px;transition:width .6s ease;display:flex;align-items:center;padding-inline-start:8px;color:#fff;font-size:11px;font-weight:700;background:linear-gradient(90deg,#4472c4,#2e5496)}.prog.done .fill{background:linear-gradient(90deg,#2fa84f,#1e7e34)}.prog .pc{width:110px;font-size:11px;color:var(--muted);text-align:start}.badge-new{background:#e8f5e9;color:#1e7e34;font-size:9px;padding:1px 6px;border-radius:5px;margin-inline-end:6px}.mobile-only{display:none}@media(max-width:900px){main{padding:9px}header h1{font-size:13px}header .sub{display:none}nav{overflow-x:auto;-webkit-overflow-scrolling:touch}nav button{padding:10px 11px;font-size:13px;white-space:nowrap}.kpi{min-width:118px;padding:10px}.kpi .v{font-size:19px}.card{padding:10px}main{max-width:100%}}@media(max-width:820px){.mobile-only{display:inline-block}table.xl td.derived,table.xl th.derived-h{display:none}body.force-derived table.xl td.derived,body.force-derived table.xl th.derived-h{display:table-cell}table.xl{min-width:600px}table.xl input,table.xl select{font-size:12px}}@media(max-width:560px){header .db{display:none}.section-title{font-size:14px}table.xl{min-width:500px;font-size:12px}.prog .nm{width:84px}.prog .pc{width:70px}.toolbar{gap:8px}.toolbar>div{font-size:12px}}.pbar{position:relative;height:22px;background:#eef1f7;border-radius:20px;overflow:hidden;min-width:130px}.pbar-fill{position:absolute;inset-block:0;inset-inline-start:0;height:100%;border-radius:20px;transition:width .5s ease}.pbar-txt{position:relative;z-index:1;font-size:11px;font-weight:700;color:#1a2740;line-height:22px;padding-inline-start:8px}.confirm-ov{position:fixed;top:0;right:0;bottom:0;left:0;background:#14192873;display:flex;align-items:center;justify-content:center;z-index:1000}.confirm-box{background:#fff;border-radius:12px;padding:20px 22px;max-width:340px;box-shadow:0 10px 40px #0000004d;text-align:center}.confirm-msg{font-size:15px;font-weight:600;margin-bottom:16px;color:#1a1a2e}.confirm-btns{display:flex;gap:10px;justify-content:center}.confirm-btns .btn.danger{background:#c0392b}.confirm-btns .btn.danger:hover{background:#96281b}
