@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f4f5f3;--surface: #ffffff;--ink: #11161d;--ink-2: #1b222c;--text: #161b22;--muted: #5c6670;--line: #e0e3df;--line-strong: #cfd4ce;--accent: #0e7c6b;--accent-hover: #0a6557;--accent-soft: #e2f2ee;--ok: #1b7f4b;--ok-soft: #e4f4ea;--warn: #9a5b00;--warn-soft: #fbf0d9;--err: #b3261e;--err-soft: #fbe6e4;--info: #2459b8;--info-soft: #e5edfb;--neutral-soft: #eceeea;--radius: 6px;--sidebar: 224px;--font: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:400 14px/1.5 var(--font);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:20px}h2{font-size:15px}h3{font-size:14px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.gap{gap:16px}.stack{display:flex;flex-direction:column;gap:16px}.shell{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100%}.sidebar{background:var(--ink);color:#c9d1d9;padding:16px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 16px;color:#fff;font-weight:600;font-size:15px}.brand-mark{width:28px;height:28px;border-radius:7px;background:var(--accent);display:grid;place-items:center}.nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius);color:#aab4bf;text-decoration:none}.nav a:hover{background:var(--ink-2);color:#fff}.nav a.active{background:var(--ink-2);color:#fff;box-shadow:inset 2px 0 0 var(--accent)}.nav-sep{height:1px;background:#232b35;margin:10px 4px}.side-foot{margin-top:auto;padding:10px 8px 0;border-top:1px solid #232b35;font-size:12px;color:#8b96a2}.main{min-width:0;display:flex;flex-direction:column}.topbar{display:none;align-items:center;gap:12px;padding:10px 16px;background:var(--ink);color:#fff;position:sticky;top:0;z-index:20}.content{padding:24px 28px 48px;width:100%}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head p{margin:2px 0 0;color:var(--muted)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.panel-head{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:8px}.panel-body{padding:16px}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.kpi{padding:14px 16px;border-right:1px solid var(--line)}.kpi:last-child{border-right:0}.kpi b{display:block;font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:1.2}.kpi span{color:var(--muted);font-size:12px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;font-weight:500;white-space:nowrap}.btn:hover{background:#f2f4f1}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-hover)}.btn.danger{background:var(--err);border-color:var(--err);color:#fff}.btn.ghost{border-color:transparent;background:transparent}.btn.sm{padding:4px 8px;font-size:13px}.input,.select,.textarea{width:100%;padding:7px 10px;border:1px solid var(--line-strong);border-radius:var(--radius);background:#fff}.textarea{min-height:110px;resize:vertical;line-height:1.45}.field{display:flex;flex-direction:column;gap:4px}.field label{font-weight:500;font-size:13px}.field .hint{color:var(--muted);font-size:12px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line)}.toolbar .input{max-width:280px}.toolbar .select{width:auto}.badge{display:inline-flex;align-items:center;gap:5px;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:500;background:var(--neutral-soft);color:#3d4650;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.75}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.err{background:var(--err-soft);color:var(--err)}.badge.info{background:var(--info-soft);color:var(--info)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-weight:500;font-size:12px;color:var(--muted);padding:8px 16px;border-bottom:1px solid var(--line);white-space:nowrap;background:#fafbf9}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--text)}td{padding:10px 16px;border-bottom:1px solid var(--line);vertical-align:middle}tr:last-child td{border-bottom:0}tbody tr.click{cursor:pointer}tbody tr.click:hover td{background:#f8f9f7}.pager{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}.empty{padding:40px 16px;text-align:center;color:var(--muted)}.empty b{display:block;color:var(--text);margin-bottom:4px}.notice{padding:10px 14px;border-radius:var(--radius);border:1px solid var(--line);background:var(--info-soft);color:#1d3f82;border-color:#c9d8f3}.notice.warn{background:var(--warn-soft);border-color:#ecd9a8;color:#6f4300}.notice.err{background:var(--err-soft);border-color:#f0c3bf;color:#8a1d17}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}.tabs button{background:none;border:0;padding:8px 12px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;font-weight:500;white-space:nowrap}.tabs button.on{color:var(--text);border-color:var(--accent)}dl.kv{display:grid;grid-template-columns:150px 1fr;gap:8px 16px;margin:0}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0}.timeline{display:grid;grid-template-columns:repeat(14,1fr);gap:6px;align-items:end;height:120px}.tl-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px;font-size:11px;color:var(--muted)}.tl-bar{width:100%;background:var(--accent);border-radius:3px 3px 0 0;min-height:2px;opacity:.85}.tl-col.today .tl-bar{background:var(--ink)}.tl-col b{color:var(--text);font-weight:600}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#11161d73;display:grid;place-items:center;z-index:50;padding:16px}.dialog{background:#fff;border-radius:8px;width:min(520px,100%);max-height:90vh;overflow:auto;box-shadow:0 12px 40px #0003;animation:pop .12s ease-out}.dialog.wide{width:min(760px,100%)}.dialog-head{padding:16px 20px 4px}.dialog-body{padding:8px 20px 16px}.dialog-foot{padding:12px 20px;display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line)}@keyframes pop{0%{transform:translateY(6px);opacity:0}to{transform:none;opacity:1}}.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:60}.toast{background:var(--ink);color:#fff;padding:10px 14px;border-radius:var(--radius);max-width:360px;box-shadow:0 6px 20px #00000040}.toast.err{background:var(--err)}.spin{width:18px;height:18px;border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;animation:sp .7s linear infinite;display:inline-block}@keyframes sp{to{transform:rotate(360deg)}}.login{min-height:100%;display:grid;place-items:center;padding:16px}.login .panel{width:min(380px,100%);padding:28px}.msg-preview{background:#f4f8f6;border:1px solid #d5e5df;border-radius:8px;padding:8px 12px;white-space:pre-wrap;font-size:13px}@media (max-width: 960px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;z-index:40;width:250px;transform:translate(-100%);transition:transform .18s}.sidebar.open{transform:none}.topbar{display:flex}.content{padding:16px 14px 40px}.g2,.g3{grid-template-columns:1fr}.kpi{border-right:0;border-bottom:1px solid var(--line)}dl.kv{grid-template-columns:1fr;gap:2px 0}dl.kv dd{margin-bottom:8px}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}@keyframes sp2{to{transform:rotate(360deg)}}.spin-i{animation:sp2 .8s linear infinite}
