:root{color-scheme:light;--ink: #1A1D21;--muted: #6B7280;--line: #E3E6EA;--bg: #F4F5F7;--white: #fff;--green: #0F7B3E;--green-bg: #E7F5EC;--amber: #B4690E;--amber-bg: #FDF3E3;--red: #B3181F;--red-bg: #FDECEC;--red-mid: #F5C2C4;--grey-bg: #EEF0F3;--sidebar-width: 194px;--accent: #1B4F9C;--accent-dark: #153E7C;--accent-light: #EAF1FB}.role-admin{--accent: #B3181F;--accent-dark: #8A1218;--accent-light: #FDECEC}.role-supplier{--accent: #1B4F9C;--accent-dark: #153E7C;--accent-light: #EAF1FB}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 Inter,Segoe UI,system-ui,-apple-system,sans-serif}.app-shell{background:var(--white)}.topbar{background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:10px 16px}.topbar .brand{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:.2px}.topbar .brand .mark{width:22px;height:22px;border-radius:5px;background:#fff;color:var(--accent);display:grid;place-items:center;font-size:12px;font-weight:800}.topbar .brand .sub{font-weight:500;opacity:.85;border-left:1px solid rgba(255,255,255,.4);padding-left:9px;margin-left:3px;font-size:12.5px}.topbar .right{display:flex;align-items:center;gap:14px;font-size:12.5px}.topbar .right button{background:transparent;border:none;color:#fff;font:inherit;cursor:pointer;opacity:.9}.topbar .right button:hover{opacity:1;text-decoration:underline}.app-body{display:flex;align-items:stretch}.side{width:var(--sidebar-width);flex:0 0 var(--sidebar-width);background:#fbfbfc;border-right:1px solid var(--line);padding:12px 8px;display:flex;flex-direction:column}.side .grp{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink);font-weight:700;padding:10px 10px 5px}.side button.navlink{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:7px 10px;border-radius:6px;color:#3c424a;text-decoration:none;font-size:13px;margin-bottom:1px;border:none;background:transparent;cursor:pointer;font-family:inherit}.side button.navlink .ic{width:15px;text-align:center;opacity:.55;font-size:12px}.side button.navlink.on{background:var(--accent-light);color:var(--accent-dark);font-weight:600}.side button.navlink.on .ic{opacity:1}.side button.navlink:disabled{color:#aeb4bb;cursor:default}.side button.navlink:disabled .ic{opacity:.35}.side-divider{border:none;border-top:1px solid var(--line);margin:8px 10px}.main{flex:1;padding:18px 20px;min-width:0}.hd{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.hd h3{margin:0;font-size:21px}.hd .sub{color:var(--muted);font-size:12.5px;margin-top:2px}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#fff;color:#333;border-radius:6px;padding:6px 12px;font-size:12.5px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-family:inherit}.btn:disabled{opacity:.6;cursor:default}.btn.p{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.d{color:var(--red);border-color:var(--red-mid)}.btn.sm{padding:3px 8px;font-size:11.5px}.btn.ghost{border-color:transparent;background:transparent;color:var(--accent);padding:6px 4px}.btn.icon{padding:6px;width:30px;justify-content:center}.btn.icon.sm{padding:4px;width:24px}.statustoggle{border:none;background:transparent;padding:2px;cursor:pointer;display:inline-flex;align-items:center;color:var(--muted)}.statustoggle:disabled{opacity:.6;cursor:default}.statustoggle.on{color:var(--green)}.card{border:1px solid var(--line);border-radius:10px;background:#fff}.card>h4{margin:0;padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px;display:flex;justify-content:space-between;align-items:center}.card .in{padding:10px 12px}.card>summary{margin:0;padding:10px 12px;font-size:13px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}.card>summary::-webkit-details-marker{display:none}.card[open]>summary{border-bottom:1px solid var(--line)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-bottom:14px}.stat{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:#fff}.stat .k{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.stat .v{font-size:20px;font-weight:700;margin-top:2px}.stattiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:14px}.stattile{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:14px}.stattile .ic{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;flex:0 0 34px}.stattile .ic.blue{background:var(--accent-light);color:var(--accent)}.stattile .ic.green{background:var(--green-bg);color:var(--green)}.stattile .ic.amber{background:var(--amber-bg);color:var(--amber)}.stattile .num{font-size:22px;font-weight:700;line-height:1}.stattile .lbl{font-size:12.5px;margin-top:3px}.stattile .desc{font-size:11.5px;color:var(--muted);margin-top:2px}.tbl{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}table{width:100%;border-collapse:collapse;font-size:12.5px}th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--ink)}th.sortable svg{vertical-align:-1px}th.sortable .sortarrow{opacity:.4}td{padding:9px 10px;border-bottom:1px solid #F0F2F4;vertical-align:middle}tr:last-child td{border-bottom:0}td.num{text-align:right;font-variant-numeric:tabular-nums}td .sub{color:var(--muted);font-size:11.5px}.b{display:inline-block;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600;white-space:nowrap}.b.ok{background:var(--green-bg);color:var(--green)}.b.warn{background:var(--amber-bg);color:var(--amber)}.b.stop{background:var(--red-bg);color:var(--red)}.b.info{background:var(--accent-light);color:var(--accent)}.b.grey{background:var(--grey-bg);color:#5a6069}.date-expired{color:var(--red);font-weight:600}.form{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.form.c3{grid-template-columns:1fr 1fr 1fr}.cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fieldset{border:1px solid var(--line);border-radius:8px;padding:12px;margin-bottom:12px}.fieldset>legend{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;padding:0 6px}.f{display:flex;flex-direction:column;gap:3px}.f.full{grid-column:1 / -1}.f label{font-size:11.5px;color:#4a5058;font-weight:600}.f label .req{color:var(--red)}.f .hint{font-size:11px;color:var(--muted)}.inp{border:1px solid #D6DAE0;border-radius:6px;padding:5px 9px;font-size:12.5px;background:#fff;color:#4a5058;width:100%;font-family:inherit}.inp:focus{outline:2px solid var(--accent-light);border-color:var(--accent)}.needed{border:1px solid var(--line);border-radius:8px;background:#fcfdff;padding:14px;margin-bottom:14px}.needed>.lg{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}.needed>.lg strong{font-size:13px}.needed>.lg .sub{font-size:11.5px;color:var(--muted)}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px;background:#fbfbfc;border:1px solid var(--line);border-radius:8px;padding:9px 10px}.filters .inp{width:auto;min-width:120px;height:36px}.filters .inp.search{min-width:260px;background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'><circle cx='11' cy='11' r='7'/><path d='M20 20l-3.5-3.5'/></svg>") no-repeat 8px 50%;padding-left:26px}.filterselect{display:flex;flex-direction:column;justify-content:center;gap:1px;cursor:pointer;height:36px;border:1px solid #D6DAE0;border-radius:6px;padding:2px 9px;background:#fff}.filterselect span{font-size:10.5px;color:var(--muted)}.filterselect select{border:none;background:transparent;padding:0;font-size:12.5px;color:var(--ink);font-family:inherit;cursor:pointer}.filterselect select:focus{outline:none}.sel{cursor:pointer}.chip{display:inline-flex;align-items:center;background:var(--accent-light);color:var(--accent-dark);border:1px solid var(--line);border-radius:999px;padding:2px 9px;font-size:11.5px;white-space:nowrap}.chip .x{opacity:.6;margin-left:4px;cursor:pointer;border:none;background:transparent;font:inherit;color:inherit;padding:0}.chip .x:hover{opacity:1}.spacer{flex:1}.cnt{background:var(--accent);color:#fff;border-radius:999px;padding:0 6px;font-size:10.5px;font-weight:700;margin-left:5px}.morefilters{position:absolute;z-index:20;margin-top:4px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 14px #1018281f;padding:12px;min-width:260px}.morefilters .f{margin-bottom:8px}.morefilters .f:last-child{margin-bottom:0}.errbox{background:var(--red-bg);border:1px solid var(--red-mid);border-radius:7px;padding:9px 11px;font-size:12px;color:var(--red);margin-bottom:12px}.warnbox{background:var(--amber-bg);border:1px solid #F2DDB6;border-radius:7px;padding:9px 11px;font-size:12px;color:#7a4a08;margin-bottom:12px}.okbox{background:var(--green-bg);border:1px solid #BFE3CC;border-radius:7px;padding:9px 11px;font-size:12px;color:var(--green);margin-bottom:12px}.dangerbox{background:var(--red-bg);border:1px solid var(--red-mid);border-radius:7px;padding:9px 11px;font-size:12px;color:var(--red);margin-bottom:12px}.infobox{background:var(--accent-light, #EAF1FB);border:1px solid #C6D7F0;border-radius:7px;padding:9px 11px;font-size:12px;color:var(--accent, #1B4F9C);margin-bottom:12px}.tip{position:relative;cursor:help;border-bottom:1px dotted var(--muted)}.tip:after{content:attr(data-tip);position:absolute;left:0;bottom:100%;margin-bottom:6px;background:var(--ink);color:#fff;font-size:11.5px;font-weight:400;padding:5px 8px;border-radius:5px;white-space:nowrap;z-index:50;opacity:0;pointer-events:none;transition:opacity .12s ease}.tip:hover:after,.tip:focus-visible:after{opacity:1}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#10182873;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-box{background:#fff;border-radius:10px;box-shadow:0 12px 32px #1018282e;width:100%;max-width:420px;max-height:calc(100vh - 32px);overflow:auto}.modal-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}.modal-hd h4{margin:0;font-size:14px}.modal-x{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:14px;line-height:1;padding:4px;border-radius:4px}.modal-x:hover{background:var(--bg);color:var(--ink)}.modal-body{padding:14px;font-size:13px;color:var(--ink)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--line)}.epdlist-split{display:flex;gap:16px;align-items:flex-start}.epdlist-main{flex:1;min-width:0}.detailpanel{width:420px;max-width:100%;flex:0 0 420px;background:#fff;border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;position:sticky;top:18px}.detailpanel-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}.detailpanel-hd h4{margin:0;font-size:14px}.detailpanel-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);padding:10px 16px 0;margin-top:10px;flex-wrap:wrap}.detailpanel-tabs button{padding:7px 9px;font-size:12px;color:var(--muted);border:none;background:transparent;border-bottom:2px solid transparent;cursor:pointer;font-family:inherit}.detailpanel-tabs button.on{color:var(--accent-dark);border-bottom-color:var(--accent);font-weight:600}.detailpanel-tabs button:disabled{color:#c7ccd2;cursor:default}.detailpanel-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:12px}.tbl tr.selected{background:var(--accent-light)}.progress-steps{display:flex;flex-direction:column;gap:10px;margin:4px 0 2px}.progress-step{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--muted)}.progress-step .dot{width:20px;height:20px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;flex:0 0 auto;font-size:11px;color:var(--muted);background:#fff}.progress-step.done .dot{border-color:var(--green);background:var(--green);color:#fff}.progress-step.active .dot{border-color:var(--accent);color:var(--accent);animation:progress-pulse 1.2s ease-in-out infinite}.progress-step.failed .dot{border-color:var(--red);background:var(--red);color:#fff}.progress-step.done,.progress-step.active,.progress-step.failed{color:var(--ink)}.progress-bar-track{height:6px;border-radius:4px;background:var(--bg);overflow:hidden;margin-top:2px}.progress-bar-fill{height:100%;background:var(--accent);border-radius:4px;transition:width .4s ease}.progress-bar-fill.failed{background:var(--red)}.progress-bar-fill.done{background:var(--green)}@keyframes progress-pulse{0%,to{box-shadow:0 0 0 0 var(--accent-light)}50%{box-shadow:0 0 0 4px var(--accent-light)}}.drop{border:2px dashed var(--accent-light);background:var(--accent-light);border-radius:9px;padding:22px;text-align:center;color:var(--accent-dark);font-size:13px}.drop .big{font-size:15px;font-weight:600;margin-bottom:3px}.drop input[type=file]{margin-top:8px}.login{background:#f0f1f3;padding:26px;display:flex;justify-content:center;gap:16px;flex-wrap:wrap;min-height:100vh}.loginbox{width:330px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:22px;box-shadow:0 6px 18px #10182814;align-self:flex-start}.loginbox .lg{display:flex;align-items:center;gap:8px;justify-content:center;margin-bottom:4px;font-weight:800;font-size:17px;color:#1b4f9c}.loginbox .lg .mark{width:24px;height:24px;border-radius:6px;background:#1b4f9c;color:#fff;display:grid;place-items:center;font-size:12px}.loginbox .tag{text-align:center;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:16px}.loginbox .desc{font-size:12.5px;color:var(--muted);margin:0 0 12px}.loginbox .btn.p{width:100%;justify-content:center;padding:8px}.loginbox .f{margin-bottom:10px}.loginbox .cap2{font-size:11px;color:var(--muted);text-align:center;margin-top:10px}.loginbox .cap2 a{color:#1b4f9c;text-decoration:none}.loginbox .cap2 a:hover{text-decoration:underline}.impbar{background:var(--accent-light, #EAF1FB);border-bottom:1px solid #C6D7F0;color:var(--accent-dark, #153E7C);padding:8px 16px;font-size:13px}.impbar a{color:var(--accent, #1B4F9C);text-decoration:none;font-weight:600}.impbar a:hover{text-decoration:underline}.sec{border:1px solid var(--line);border-radius:8px;background:#fff;margin-bottom:8px}.sec>.sh{display:flex;align-items:center;gap:9px;padding:10px 12px;font-size:13px;width:100%;text-align:left;border:none;background:transparent;cursor:pointer;font-family:inherit}.sec>.sh .tw{color:#9aa1aa;font-size:11px;width:10px}.sec>.sh .t{font-weight:600}.sec>.sh .s{color:var(--muted);font-size:11.5px}.sec>.sh .r{margin-left:auto;color:var(--muted);font-size:11.5px}.sec.open>.sh{border-bottom:1px solid var(--line)}.sec .sb{padding:12px}.sec .sb>.form{margin-bottom:0}.kv{display:grid;grid-template-columns:150px 1fr;gap:5px 10px;font-size:12.5px}.kv .k{color:var(--muted)}.crumb{font-size:12px;color:var(--muted);margin-bottom:6px}.crumb a{color:var(--accent);text-decoration:none;cursor:pointer}.crumb a:hover{text-decoration:underline}.ia{display:flex;gap:4px;justify-content:flex-end}.ia i{width:24px;height:24px;border:1px solid var(--line);border-radius:6px;background:#fff;display:grid;place-items:center;font-style:normal;font-size:12px;color:#5a6069;cursor:pointer}.ia i.d{color:var(--red);border-color:var(--red-mid)}.iconlegend{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);padding:8px 10px;border:1px solid var(--line);border-top:0;background:#fbfbfc;border-radius:0 0 8px 8px;margin-top:-1px}.iconlegend b{font-weight:400;color:#5a6069}.iconlegend em{font-style:normal;display:inline-grid;place-items:center;width:20px;height:20px;border:1px solid var(--line);border-radius:5px;background:#fff;margin-right:5px;vertical-align:-5px;font-size:11px}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:12px;flex-wrap:wrap}.tabs span,.tabs button{padding:7px 12px;font-size:12.5px;color:var(--muted);border-bottom:2px solid transparent;background:transparent;border-top:none;border-left:none;border-right:none;cursor:pointer;font-family:inherit}.tabs span.on,.tabs button.on{color:var(--accent-dark);border-bottom-color:var(--accent);font-weight:600}.tabs .cnt-red{color:var(--red);font-weight:700}.tfoot{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);background:#fbfbfc}.tfoot a{color:var(--accent);text-decoration:none;cursor:pointer}.tfoot a:hover{text-decoration:underline}.pager{display:flex;align-items:center;gap:4px}.pager .btn.sm{min-width:24px;justify-content:center;padding:3px 7px}.side-licence{margin:auto 2px 4px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fff}.side-licence .t{font-size:12px;font-weight:600;margin-bottom:4px}.side-licence .v{font-size:11.5px;color:var(--muted);margin-bottom:6px}.side-licence .progress-bar-track{height:5px}.side-licence .btn.ghost.sm{padding:0;margin-top:6px;font-size:11.5px}.steps{display:flex;gap:0;margin-bottom:14px;font-size:12px}.steps div{flex:1;padding:7px 10px;border-bottom:3px solid var(--line);color:var(--muted)}.steps div.on{border-bottom-color:var(--accent);color:var(--accent-dark);font-weight:600}.steps div.done{border-bottom-color:var(--green);color:var(--green)}.split{display:grid;grid-template-columns:280px 1fr;gap:12px;align-items:start}.split.wide{grid-template-columns:340px 1fr}.tree{font-size:12.5px}.tree .row{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:6px;width:100%;text-align:left;border:none;background:transparent;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit}.tree .row.sel{background:var(--accent-light);font-weight:600}.tree .row.l2{padding-left:24px}.tree .row.l3{padding-left:46px}.tree .tools{margin-left:auto;display:flex;gap:4px}
