:root{color-scheme:light;--ink: #101214;--strong: #39414A;--muted: #6B7280;--faint: #9AA1AD;--faint-3: #B3B9C0;--page: #ECEDEE;--panel: #F5F6F6;--surface: #FFFFFF;--surface-2: #FAFBFB;--surface-3: #F1F2F4;--field: #F4F5F6;--line: #EDEFF0;--border: #E4E7E8;--primary: #146B3F;--primary-solid: #146B3F;--primary-hover: #0E4F2E;--primary-soft: #E8F3EC;--primary-muted: #AEC4B8;--on-accent: #FFFFFF;--ok-bg: #E9F5EE;--ok-c: #1C7A4F;--warn-bg: #FDF4E4;--warn-c: #A9740F;--bad-bg: #FDEDEC;--bad-c: #C0392B;--info-bg: #EEF0FB;--info-c: #4F5BB5;--chart-in: #2E9E6B;--chart-out: #7A5BD0;--chart-line: #101214;--chart-grid: #EDEFF0;--chart-min: #C0392B;--shadow-card: 0 1px 2px rgba(16, 24, 40, .04);--shadow-raised: 0 8px 24px rgba(16, 24, 40, .08);--gradient-green: linear-gradient(135deg, #2E9E6B 0%, #146B3F 45%, #0E4F2E 100%)}:root[data-theme=dark]{color-scheme:dark;--ink: #E8ECEE;--strong: #C8D0D4;--muted: #9AA4AC;--faint: #7C868E;--faint-3: #626B72;--page: #0D1011;--panel: #14181A;--surface: #191E21;--surface-2: #1E2427;--surface-3: #232A2E;--field: #232A2E;--line: #272F33;--border: #313A3F;--primary: #4FB37F;--primary-solid: #1F7A4B;--primary-hover: #28925A;--primary-soft: #16331F;--primary-muted: #38584A;--ok-bg: #14301F;--ok-c: #6FCB9B;--warn-bg: #332810;--warn-c: #E3B457;--bad-bg: #381916;--bad-c: #F08A7E;--info-bg: #23264A;--info-c: #A9B1F0;--chart-in: #3FA674;--chart-out: #8F78E0;--chart-line: #E8ECEE;--chart-grid: #272F33;--chart-min: #F08A7E;--shadow-card: 0 1px 2px rgba(0, 0, 0, .4);--shadow-raised: 0 8px 24px rgba(0, 0, 0, .45);--gradient-green: linear-gradient(135deg, #1F7A4B 0%, #17603B 45%, #0F4A2E 100%)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--panel);color:var(--ink);font-family:Plus Jakarta Sans,ui-sans-serif,system-ui,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased;letter-spacing:-.01em;overflow-x:hidden}a{color:var(--primary);text-decoration:none}input,select,textarea,button{font:inherit;color:inherit}button{cursor:pointer}::placeholder{color:var(--faint);opacity:1}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:8px}::-webkit-scrollbar{height:9px;width:9px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:9px}#root,#root *{min-width:0}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.muted{color:var(--muted)}.faint{color:var(--faint)}.in{color:var(--ok-c)}.out{color:var(--strong)}.neg{color:var(--bad-c)}.app{display:flex;min-height:100vh}.sidebar{width:252px;flex:none;background:var(--surface);border-right:1px solid var(--line);height:100vh;position:sticky;top:0;display:flex;flex-direction:column;overflow-x:hidden;transition:width .2s ease}.brand{display:flex;align-items:center;gap:11px;padding:24px 20px 18px}.brand img{width:38px;height:38px}.brand b{display:block;font-size:17px;letter-spacing:-.03em;line-height:1.1}.brand small{font-size:10.5px;color:var(--faint)}.nav{flex:1;overflow-y:auto;padding:4px 16px 12px}.nav-group{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--faint-3);padding:14px 8px 8px}.nav a{position:relative;display:flex;align-items:center;gap:11px;padding:10px 12px;min-height:44px;border-radius:12px;color:var(--muted);font-weight:500;font-size:13.5px;white-space:nowrap}.nav a svg{flex:none}.nav-label{overflow:hidden;text-overflow:ellipsis}.nav a:hover{background:var(--field);color:var(--ink)}.nav a[aria-current=page]{background:var(--primary-soft);color:var(--ink);font-weight:700}.nav a[aria-current=page]:before{content:"";position:absolute;left:-16px;top:6px;bottom:6px;width:4px;border-radius:0 4px 4px 0;background:var(--primary-solid)}.nav a[aria-current=page] svg{color:var(--primary)}.nav .badge{margin-left:auto;font-size:10px;font-weight:700;background:var(--bad-bg);color:var(--bad-c);border-radius:999px;padding:2px 8px}.side-foot{padding:14px 16px 18px;border-top:1px solid var(--line)}.side-card{background:var(--gradient-green);color:#fff;border-radius:18px;padding:14px 16px;font-size:12px;line-height:1.45}.side-card b{display:block;font-size:13px;margin-bottom:4px}.main{flex:1;display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;gap:12px;padding:16px 28px}.topbar .spacer{flex:1}.content{padding:0 28px 40px}.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:4px 0 20px}.page-head h1{margin:0;font-size:26px;letter-spacing:-.035em;line-height:1.15}.page-head p{margin:4px 0 0;color:var(--muted);font-size:13px;max-width:70ch}.page-head .actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.scrim{display:none}@media (min-width: 901px){.app.collapsed .sidebar{width:76px}.app.collapsed .brand{justify-content:center;padding:24px 0 18px}.app.collapsed .brand div,.app.collapsed .nav-label,.app.collapsed .side-foot{display:none}.app.collapsed .nav{padding:4px 12px 12px}.app.collapsed .nav-group{font-size:0;height:1px;padding:0;margin:12px 8px;background:var(--line)}.app.collapsed .nav>div:first-child .nav-group{background:none;margin-top:4px}.app.collapsed .nav a{justify-content:center;padding:10px}.app.collapsed .nav a[aria-current=page]:before{left:-12px}.app.collapsed .nav .badge{position:absolute;top:6px;right:6px;width:8px;height:8px;padding:0;font-size:0;background:var(--bad-c)}}@media (max-width: 900px){.sidebar{position:fixed;z-index:41;left:0;transform:translate(-100%);transition:transform .2s ease;width:268px;max-width:86vw}.app.drawer .sidebar{transform:none;box-shadow:var(--shadow-raised)}.app.drawer .scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#1012146b}.topbar{padding:12px 16px}.content{padding:0 16px 32px}.page-head h1{font-size:22px}}.card{background:var(--surface);border-radius:20px;box-shadow:var(--shadow-card);padding:20px}.card-head{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.card-head h2{margin:0;font-size:15px;letter-spacing:-.02em}.card-head .sub{font-size:12px;color:var(--faint)}.card-head .right{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grid{display:grid;gap:16px}.kpis{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}.split{display:grid;gap:16px;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);align-items:start}.split-even{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));align-items:start}@media (max-width: 1100px){.split{grid-template-columns:minmax(0,1fr)}}.stat{background:var(--surface);border-radius:20px;padding:18px 20px;box-shadow:var(--shadow-card)}.stat.accent{background:var(--gradient-green);color:#fff}.stat .label{font-size:12px;font-weight:600;color:var(--muted);display:flex;align-items:center;gap:6px}.stat.accent .label,.stat.accent .hint{color:#ffffffd1}.stat .value{font-size:24px;font-weight:700;letter-spacing:-.035em;margin-top:10px;line-height:1.15;overflow-wrap:anywhere}.stat .hint{font-size:11.5px;color:var(--faint);margin-top:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-weight:600;font-size:13px;white-space:nowrap}.btn:hover:not(:disabled){background:var(--surface-3)}.btn.primary{background:var(--primary-solid);border-color:var(--primary-solid);color:var(--on-accent)}.btn.primary:hover:not(:disabled){background:var(--primary-hover)}.btn.danger{color:var(--bad-c)}.btn.small{height:32px;padding:0 12px;font-size:12px}.btn.ghost{border-color:transparent;background:transparent}.btn:disabled{opacity:.55;cursor:not-allowed}.icon-btn{width:40px;height:40px;border-radius:12px;border:0;background:var(--surface);display:grid;place-items:center;color:var(--muted)}.icon-btn:hover{background:var(--surface-3);color:var(--ink)}.field{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:600;color:var(--strong)}.field .help{font-weight:400;color:var(--faint);font-size:11.5px}.input,.select,textarea.input{height:42px;border-radius:12px;border:1px solid var(--border);background:var(--field);padding:0 12px;font-size:13.5px;font-weight:500;width:100%}textarea.input{height:auto;padding:10px 12px;resize:vertical}.input:focus,.select:focus{outline:2px solid var(--primary);outline-offset:-1px;background:var(--surface)}.form-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}.form-grid .full{grid-column:1 / -1}.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:14px}.filters .input,.filters .select{height:38px;width:auto;min-width:140px}.seg{display:inline-flex;background:var(--surface-3);border-radius:999px;padding:3px;gap:2px}.seg button{border:0;background:transparent;border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:600;color:var(--muted)}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card)}.pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;white-space:nowrap;background:var(--surface-3);color:var(--muted)}.pill.ok{background:var(--ok-bg);color:var(--ok-c)}.pill.warn{background:var(--warn-bg);color:var(--warn-c)}.pill.bad{background:var(--bad-bg);color:var(--bad-c)}.pill.info{background:var(--info-bg);color:var(--info-c)}.pill.brand{background:var(--primary-soft);color:var(--primary)}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -20px;padding:0 20px}table.t{width:100%;border-collapse:collapse;font-size:13px}table.t th{text-align:left;font-size:11px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;padding:10px;border-bottom:1px solid var(--line);white-space:nowrap}table.t td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:top}table.t tr:last-child td{border-bottom:0}table.t tbody tr:hover td{background:var(--surface-2)}table.t .r{text-align:right}table.t tfoot td{font-weight:700;border-top:1px solid var(--border);border-bottom:0}.cell-main{font-weight:600}.cell-sub{font-size:11.5px;color:var(--faint);margin-top:2px}.row-click{cursor:pointer}.empty{text-align:center;padding:36px 16px;color:var(--muted);font-size:13px}.empty b{display:block;color:var(--ink);font-size:14px;margin-bottom:4px}.banner{border-radius:14px;padding:12px 14px;font-size:12.5px;display:flex;gap:10px;align-items:flex-start;margin-bottom:14px;line-height:1.5}.banner.warn{background:var(--warn-bg);color:var(--warn-c)}.banner.bad{background:var(--bad-bg);color:var(--bad-c)}.banner.info{background:var(--primary-soft);color:var(--primary)}.list-row{display:flex;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:0}.list-row .grow{flex:1}.tile{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;flex:none;font-size:11px;font-weight:800}.tile.in{background:var(--ok-bg);color:var(--ok-c)}.tile.out{background:var(--surface-3);color:var(--strong)}.pager{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;font-size:12px;color:var(--muted);flex-wrap:wrap}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}.dlg-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#10121473;display:flex;align-items:center;justify-content:center;padding:12px;animation:fade .15s ease-out}.dlg{background:var(--surface);border-radius:24px;width:100%;max-height:100%;display:flex;flex-direction:column;box-shadow:var(--shadow-raised);animation:pop .2s cubic-bezier(.16,1,.3,1)}.dlg-head{padding:20px 24px 10px;display:flex;gap:12px;align-items:flex-start}.dlg-head h3{margin:0;font-size:17px;letter-spacing:-.02em}.dlg-head p{margin:4px 0 0;font-size:12.5px;color:var(--muted)}.dlg-body{padding:8px 24px 16px;overflow:auto}.dlg-foot{padding:12px 24px 20px;display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}@media (max-width: 480px){.dlg-head,.dlg-body,.dlg-foot{padding-left:16px;padding-right:16px}}.toast{position:fixed;z-index:100;bottom:20px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--surface);padding:11px 18px;border-radius:999px;font-size:13px;font-weight:600;box-shadow:var(--shadow-raised);animation:pop .2s ease-out;max-width:calc(100vw - 32px)}.toast.bad{background:var(--bad-c);color:#fff}.spinner{width:18px;height:18px;border-radius:50%;border:2.5px solid var(--border);border-top-color:var(--primary);animation:spin .8s linear infinite}.loading{display:grid;place-items:center;padding:48px}.chart{position:relative;width:100%}.chart svg{display:block;width:100%;height:auto;overflow:visible}.chart .grid-line{stroke:var(--chart-grid);stroke-width:1}.chart .axis-text{fill:var(--faint);font-size:10.5px}.chart .bar-in{fill:var(--chart-in)}.chart .bar-out{fill:var(--chart-out)}.chart .line{fill:none;stroke:var(--chart-line);stroke-width:2}.chart .dot{fill:var(--chart-line);stroke:var(--surface);stroke-width:2}.chart .min-line{stroke:var(--chart-min);stroke-width:1.5;stroke-dasharray:5 4}.chart .hover-col{fill:var(--ink);opacity:0}.chart .hover-col.on{opacity:.05}.chart-tip{position:absolute;pointer-events:none;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-raised);border-radius:12px;padding:10px 12px;font-size:12px;min-width:190px;z-index:5}.chart-tip .tt{font-weight:700;margin-bottom:6px}.chart-tip .tr{display:flex;justify-content:space-between;gap:14px;margin-top:3px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.legend i.l{height:2px;width:14px;border-radius:0}.legend i.d{height:0;width:14px;border-top:2px dashed var(--chart-min);border-radius:0}.sw-in{background:var(--chart-in)}.sw-out{background:var(--chart-out)}.sw-line{background:var(--chart-line)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:16px;background:var(--page)}.login{width:100%;max-width:420px}@media print{.sidebar,.topbar,.no-print{display:none!important}body{background:#fff}.card{box-shadow:none;border:1px solid #ddd}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media (max-width: 640px){.hide-sm{display:none}}.check-row{display:flex;gap:8px;align-items:center;font-size:12.5px;padding:5px 0}.check-row .ok-dot{width:8px;height:8px;border-radius:8px;flex:none}.grid-input{height:32px;border-radius:8px;border:1px solid var(--border);background:var(--field);padding:0 6px;width:100%;min-width:86px;text-align:right;font-size:12px}.grid-input:focus{outline:2px solid var(--primary);outline-offset:-1px;background:var(--surface)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}.tabs button{border:0;background:none;padding:10px 14px;font-weight:600;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--primary-solid)}.action-tile{display:flex;gap:10px;align-items:center;padding:11px 12px;border-radius:14px;background:var(--surface-2);color:var(--ink)}.action-tile:hover{background:var(--surface-3);text-decoration:none}.action-tile svg,.action-tile .n{flex:none}.action-tile .n{margin-left:auto;font-weight:800}
