:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--navy:#16305c;--blue:#2e5496;--acc:#7030a0;--ok:#16a34a;--bad:#dc2626;--warn:#d97706;--bg:#eef1f7;--card:#fff;--line:#e3e8f0;--txt:#1e293b;--mut:#64748b;--gold:#f2c14e}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--txt);font-family:Segoe UI,system-ui,Arial,sans-serif;font-size:14px;line-height:1.45}.wrap{max-width:1640px;margin:0 auto;padding:0 16px 60px}.hrow{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}h1{letter-spacing:-.3px;font-size:23px;font-weight:700}.sub{opacity:.9;margin-top:5px;font-size:12.5px}.btn{cursor:pointer;color:var(--navy);background:#fff;border:0;border-radius:9px;padding:10px 18px;font-size:13px;font-weight:700;text-decoration:none;transition:all .15s;display:inline-block;box-shadow:0 3px 10px #00000026}.btn:hover{transform:translateY(-1px);box-shadow:0 5px 14px #00000038}.btn.g{color:#fff;background:#16a34a}.sec{background:var(--card);border:1px solid var(--line);border-radius:14px;margin-bottom:14px;padding:18px 20px;box-shadow:0 4px 14px #1e293b0f}.sec h2{color:var(--navy);margin-bottom:3px;font-size:16px}.sec .cap{color:var(--mut);margin-bottom:14px;font-size:12px;line-height:1.5}header{color:#fff;background:linear-gradient(120deg,#16305c,#2e5496 55%,#7030a0);padding:20px 0 60px;box-shadow:0 4px 20px #16305c4d}.tabs{flex-wrap:wrap;gap:5px;margin-top:16px;display:flex}.tab{color:#fff;cursor:pointer;background:#ffffff26;border:0;border-radius:9px 9px 0 0;padding:9px 18px;font-size:13px;font-weight:600;text-decoration:none;display:inline-block}.tab:hover{background:#ffffff45}.tab.on{background:var(--bg);color:var(--navy);font-weight:800}@keyframes fade{0%{opacity:0;transform:translateY(-5px)}to{opacity:1}}.view{animation:.25s fade}.kpis{grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px;margin:-42px 0 16px;display:grid}.kpi{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:15px 16px;box-shadow:0 5px 18px #1e293b17}.kpi .n{color:var(--navy);letter-spacing:-.6px;font-size:25px;font-weight:800;line-height:1.15}.kpi .l{text-transform:uppercase;letter-spacing:.5px;color:var(--mut);margin-top:3px;font-size:10.5px;font-weight:700}.kpi .d{color:#475569;margin-top:5px;font-size:11px}.kpi.ok .n{color:var(--ok)}.kpi.bad .n{color:var(--bad)}.kpi.warn .n{color:var(--warn)}.kpi.acc .n{color:var(--acc)}.filters{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;gap:9px;display:grid}.fg label{text-transform:uppercase;letter-spacing:.4px;color:var(--mut);margin-bottom:4px;font-size:10.5px;font-weight:700;display:block}.fg select,.fg input{border:1px solid var(--line);background:#fbfcfe;border-radius:8px;outline:none;width:100%;padding:8px 10px;font-size:12.5px}.fg select:focus,.fg input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2e54961f}.srch{margin-bottom:11px;position:relative}.srch input{border:2px solid var(--line);background:#fbfcfe;border-radius:11px;outline:none;width:100%;padding:13px 16px 13px 44px;font-size:15px}.srch input:focus{border-color:var(--blue);background:#fff;box-shadow:0 0 0 4px #2e54961f}.srch .i{color:var(--mut);font-size:18px;position:absolute;top:50%;left:15px;transform:translateY(-50%)}.chips{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.chip{border:1px solid var(--line);cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border-radius:18px;padding:6px 13px;font-size:11.5px;font-weight:700}.chip:hover{border-color:var(--blue)}.chip.on{background:var(--blue);color:#fff;border-color:var(--blue)}.chip.bad.on{background:var(--bad);border-color:var(--bad)}.chip.gold.on{background:var(--gold);border-color:var(--gold);color:#5b4500}.cnt{color:var(--mut);margin:8px 2px 10px;font-size:12.5px}.tw{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 4px 14px #1e293b0f}.sc{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:1500px;font-size:12.5px}thead th{color:var(--navy);text-align:left;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;z-index:5;cursor:pointer;background:#eef2f9;padding:10px 9px;font-size:10.5px;font-weight:800;position:sticky;top:0}thead th:hover{background:#e2e9f5}tbody td{border-top:1px solid var(--line);white-space:nowrap;padding:9px}tbody tr{cursor:pointer}tbody tr:hover{background:#f7f9fd}tbody tr.open{background:#eaf1fb}.b{border-radius:11px;padding:2px 8px;font-size:10.5px;font-weight:800;display:inline-block}.b-ok{color:#15803d;background:#dcfce7}.b-bad{color:#b91c1c;background:#fee2e2}.b-w{color:#b45309;background:#fef3c7}.b-br{color:#5b2a86;background:#ede4f7}.b-p{background:var(--gold);color:#5b4500}.b-e{color:#075985;background:#e0f2fe}.b-pl{color:#475569;background:#f1f5f9;margin-right:2px;font-size:9.5px}.thumb{object-fit:cover;border:1px solid var(--line);border-radius:8px;width:42px;height:42px;display:block}.noimg{border:1px dashed var(--line);opacity:.35;border-radius:8px;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.rec{color:var(--navy);font-weight:800}.mut{color:var(--mut)}.up{color:var(--ok);font-weight:700}.dn{color:var(--bad);font-weight:700}.det td{background:#f7f9fd;padding:0!important}.dbox{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;padding:16px 18px;display:grid}.dimg{border:1px solid var(--line);background:#fff;border-radius:11px;grid-column:1/-1;align-items:center;gap:15px;padding:11px;display:flex}.dimg img{object-fit:contain;border:1px solid var(--line);border-radius:9px;flex:none;width:140px;height:140px}.ds h4{text-transform:uppercase;letter-spacing:.5px;color:var(--blue);border-bottom:2px solid var(--line);margin-bottom:7px;padding-bottom:4px;font-size:11px}.kv{justify-content:space-between;gap:10px;padding:2px 0;font-size:12px;display:flex}.kv .k{color:var(--mut)}.kv .v{text-align:right;font-weight:600}.why{border:1px solid var(--line);background:#fff;border-radius:11px;grid-column:1/-1;padding:13px 15px}.why h4{text-transform:uppercase;letter-spacing:.5px;color:var(--navy);margin-bottom:7px;font-size:11px}.why ol{counter-reset:s;margin:0;padding:0;list-style:none}.why li{color:#334155;border-bottom:1px dashed var(--line);padding:6px 6px 6px 30px;font-size:12.3px;position:relative}.why li:last-child{color:var(--navy);border:0;font-weight:700}.why li:before{counter-increment:s;content:counter(s);background:var(--blue);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;font-weight:700;display:flex;position:absolute;top:5px;left:4px}.iss{color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:10px;grid-column:1/-1;padding:11px 14px;font-size:12.3px;font-weight:600}.wi{background:#f5f8ff;border:1px solid #c7d2fe;border-radius:11px;grid-column:1/-1;padding:13px 15px}.wi input{border:2px solid var(--blue);width:120px;color:var(--navy);border-radius:8px;outline:none;padding:9px 11px;font-size:15px;font-weight:800}.rst{border:1px solid var(--line);cursor:pointer;color:var(--mut);background:#fff;border-radius:8px;padding:8px 12px;font-size:11.5px;font-weight:700}.lk a{color:#fff;border-radius:7px;margin:3px 5px 3px 0;padding:5px 11px;font-size:11.5px;font-weight:700;text-decoration:none;display:inline-block}.lk a.a{color:#111;background:#f90}.lk a.f{background:#2874f0}.lk a.m{background:#ff3f6c}.grid2{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=1000px){.grid2{grid-template-columns:1fr}}.chartbox{height:290px;position:relative}.conf{vertical-align:middle;background:#e5e9f0;border-radius:4px;width:44px;height:7px;margin-right:5px;display:inline-block;overflow:hidden}.conf i{height:100%;display:block}.empty{text-align:center;color:var(--mut);padding:44px}footer{text-align:center;color:var(--mut);margin-top:20px;font-size:11.5px}.arrow{color:var(--mut);transition:transform .2s;display:inline-block}tr.open .arrow{color:var(--blue);transform:rotate(90deg)}.note{border-left:3px solid var(--blue);color:#334155;background:#f8fafd;border-radius:0 9px 9px 0;margin-top:10px;padding:10px 13px;font-size:12.3px}@media print{.tabs,.filters,.srch,.chips,.btn{display:none}}.authWrap{background:linear-gradient(120deg,#16305c,#2e5496 55%,#7030a0);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.authCard{background:var(--card);border-radius:16px;width:100%;max-width:380px;padding:32px 30px;box-shadow:0 20px 50px #16305c59}.authCard h1{color:var(--navy);margin-bottom:4px;font-size:20px}.sub2{color:var(--mut);font-size:12.5px}.authCard .sub2{margin-bottom:22px}.field{margin-bottom:14px}.field label{text-transform:uppercase;letter-spacing:.4px;color:var(--mut);margin-bottom:5px;font-size:10.5px;font-weight:700;display:block}.field input,.field select{border:1px solid var(--line);background:#fbfcfe;border-radius:8px;outline:none;width:100%;padding:10px 12px;font-size:13.5px}.field input:focus,.field select:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2e54961f}.fieldGrid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px 16px;display:grid}.authError{color:#b91c1c;background:#fee2e2;border-radius:8px;margin-bottom:14px;padding:9px 12px;font-size:12.5px;font-weight:600}.authSubmit{background:var(--navy);color:#fff;cursor:pointer;border:0;border-radius:9px;width:100%;margin-top:6px;padding:11px;font-size:13.5px;font-weight:700}.authSubmit:disabled{opacity:.6;cursor:default}.authSwitch{text-align:center;color:var(--mut);margin-top:18px;font-size:12.5px}.authSwitch a{color:var(--blue);font-weight:700;text-decoration:none}.authSuccess{color:#15803d;background:#dcfce7;border-radius:8px;margin-bottom:14px;padding:9px 12px;font-size:12.5px;font-weight:600}.dataTable{border-collapse:collapse;width:100%;font-size:13px}.dataTable th{text-align:left;text-transform:uppercase;letter-spacing:.3px;color:var(--mut);border-bottom:1px solid var(--line);padding:9px 10px;font-size:10.5px}.dataTable td{border-bottom:1px solid var(--line);padding:10px}.dataTable tr:last-child td{border-bottom:0}.roleBadge{text-transform:uppercase;border-radius:11px;padding:2px 9px;font-size:10.5px;font-weight:800;display:inline-block}.roleBadge.admin{color:#5b2a86;background:#ede4f7}.roleBadge.user{color:#475569;background:#f1f5f9}.shellHeader{color:#fff;background:linear-gradient(120deg,#16305c,#2e5496 55%,#7030a0);padding:18px 0 0;box-shadow:0 4px 20px #16305c40}.shellTop{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-bottom:16px;display:flex}.brand{color:#fff;align-items:center;gap:10px;text-decoration:none;display:flex}.brandMark{background:#ffffff26;border-radius:9px;justify-content:center;align-items:center;width:30px;height:30px;font-size:15px;font-weight:800;display:flex}.shellHeader h1{font-size:19px;font-weight:700}.shellUser{align-items:center;gap:12px;font-size:12.5px;display:flex}.shellUser .email{opacity:.85}.mainNav{gap:4px;display:flex}.mainNav-link{color:#ffffffbf;border-radius:9px 9px 0 0;padding:10px 16px;font-size:13px;font-weight:600;text-decoration:none;transition:all .15s}.mainNav-link:hover{color:#fff;background:#ffffff1f}.mainNav-link.on{background:var(--bg);color:var(--navy);font-weight:800}.projectGrid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;margin-top:18px;display:grid}.projectCard{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--line);color:inherit;border-radius:14px;padding:16px 18px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:block;box-shadow:0 4px 14px #1e293b0f}.projectCard:not(.inert):hover{transform:translateY(-2px);box-shadow:0 8px 22px #1e293b24}.projectCard.inert{cursor:default}.projectCard.st-processing{border-left-color:var(--blue)}.projectCard.st-done{border-left-color:var(--ok)}.projectCard.st-failed{border-left-color:var(--bad)}.pcTop{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px;display:flex}.projectCard .name{color:var(--navy);font-size:14.5px;font-weight:700}.projectCard .meta{color:var(--mut);font-size:11.5px}.projectCard .meta.errMsg{color:var(--bad);margin-top:6px;line-height:1.4}.pcArrow{color:var(--blue);margin-top:10px;font-size:11.5px;font-weight:700}.statusPill{white-space:nowrap;text-transform:uppercase;letter-spacing:.3px;border-radius:20px;align-items:center;gap:5px;padding:3px 10px;font-size:10.5px;font-weight:800;display:inline-flex}.statusPill.st-pending{color:#475569;background:#f1f5f9}.statusPill.st-processing{color:#1d4ed8;background:#dbeafe}.statusPill.st-done{color:#15803d;background:#dcfce7}.statusPill.st-failed{color:#b91c1c;background:#fee2e2}.statusIcon{font-size:11px}.pulseDot{background:#1d4ed8;border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite pulseDot}@keyframes pulseDot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.7)}}.emptyState{text-align:center;color:var(--mut);background:var(--card);border:1px dashed var(--line);border-radius:14px;margin-top:18px;padding:60px 20px}.projectCard.skeleton{border-left-color:var(--line);background:linear-gradient(90deg,#f0f2f6 25%,#e9edf4 37%,#f0f2f6 63%) 0 0/400% 100%;height:92px;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:100%}to{background-position:0}}.dropzone{border:2px dashed var(--line);text-align:center;cursor:pointer;background:#fbfcfe;border-radius:14px;padding:40px 20px;transition:border-color .15s}.dropzone.active{border-color:var(--blue);background:#f0f5ff}.dropzone .icon{margin-bottom:10px;font-size:34px}.formatList{color:var(--mut);grid-template-columns:1fr 1fr;gap:4px 24px;margin-top:8px;font-size:12px;display:grid}.formatList b{color:var(--txt)}
