:root{--green:#178A3C;--green-600:#178A3C;--green-700:#0F6B2E;--green-800:#0B5224;--green-50:#E7F2EA;--green-100:#D2E8D8;--forest:#0E2A1C;--forest-2:#143726;--orange:#E8551C;--orange-600:#E8551C;--orange-700:#C8410F;--orange-50:#FCEBE2;--ink:#15140F;--ink-2:#3E3D36;--muted:#76746B;--muted-2:#9A988E;--app:#F4F5F1;--surface:#FFFFFF;--surface-2:#FBFBF8;--line:#E7E7E0;--line-2:#EFEFEA;--hair:#F1F1EC;--ok:#178A3C;--ok-bg:#E7F2EA;--warn:#B8860B;--warn-bg:#FBF1D8;--danger:#C2410C;--danger-bg:#FBE6DC;--info:#1F6FB2;--info-bg:#E4F0F8;--blue:#2563A8;--ui:"Plus Jakarta Sans",system-ui,sans-serif;--mono:"Spline Sans Mono",ui-monospace,monospace;--r:12px;--r-sm:9px;--r-lg:18px;--sh-sm:0 1px 2px rgba(20,19,15,.06),0 1px 1px rgba(20,19,15,.04);--sh:0 4px 16px rgba(20,19,15,.07),0 1px 3px rgba(20,19,15,.05);--sh-lg:0 18px 50px rgba(20,19,15,.16);--side:232px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:var(--ui);color:var(--ink);background:var(--app);-webkit-font-smoothing:antialiased;font-size:13px}button{font-family:inherit}.shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,#103021,#0c2419);color:#cfe3d6;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:14px 11px;gap:3px;overflow-y:auto}.sb-brand{display:flex;align-items:center;gap:11px;padding:6px 8px 16px}.sb-brand img{width:36px;height:36px;border-radius:9px;background:#fff;padding:3px;object-fit:contain}.sb-brand .nm{font-weight:800;font-size:18px;letter-spacing:-.02em;color:#fff}.sb-brand .nm em{font-style:normal;color:#7fd79a}.sb-brand .tag{display:block;font-size:10px;color:#6e9b7e;font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin-top:1px}.sb-sec{font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:#5c876c;font-weight:700;padding:14px 10px 6px}.nav-i{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;color:#b6d2bf;font-weight:600;font-size:12.5px;cursor:pointer;border:1px solid transparent;position:relative;-webkit-user-select:none;user-select:none;text-decoration:none;min-width:0;white-space:nowrap}.nav-i:hover{background:#ffffff0d;color:#eaf5ee}.nav-i .ico{width:19px;height:19px;flex:none;opacity:.92}.nav-i .badge{margin-left:auto;background:var(--orange);color:#fff;font-size:11px;font-weight:700;font-family:var(--mono);padding:1px 7px;border-radius:999px}.nav-i.on{background:linear-gradient(90deg,#7fd79a2e,#7fd79a0a);color:#fff;border-color:#7fd79a47}.nav-i.on:before{content:"";position:absolute;left:-14px;top:8px;bottom:8px;width:4px;border-radius:0 4px 4px 0;background:#7fd79a}.sb-foot{margin-top:auto;display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;background:#ffffff0d;cursor:pointer}.sb-foot:hover{background:#ffffff14}.sb-foot .av{width:34px;height:34px;border-radius:50%;background:#7fd79a;color:#0c2419;display:grid;place-items:center;font-weight:800;font-size:14px;flex:none}.sb-foot .nm{font-size:13px;font-weight:700;color:#fff;line-height:1.1}.sb-foot .rl{font-size:11px;color:#7fa98a}.main{display:flex;flex-direction:column;min-width:0;overflow-y:auto}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;padding:11px 20px;background:#f4f5f1d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.crumb{font-size:12px;color:var(--muted);font-weight:600}.page-t{font-size:17px;font-weight:800;letter-spacing:-.02em;margin:0;line-height:1.1}.search{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:7px 10px;min-width:220px;color:var(--muted);box-shadow:var(--sh-sm)}.search input{border:0;outline:0;font-family:inherit;font-size:13px;color:var(--ink);background:transparent;width:100%}.tb-btn{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;background:var(--surface);border:1px solid var(--line);color:var(--ink-2);cursor:pointer;box-shadow:var(--sh-sm);position:relative}.tb-btn .ndot{position:absolute;top:9px;right:10px;width:8px;height:8px;border-radius:50%;background:var(--orange);border:2px solid var(--surface)}.lang-seg{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:var(--sh-sm)}.lang-seg button{border:0;background:transparent;padding:8px 12px;font-weight:700;font-size:12px;color:var(--muted);cursor:pointer}.lang-seg button.on{background:var(--green);color:#fff}.content{padding:16px 18px 40px;animation:fade .25s ease}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.row-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:2px 0 16px}.row-head h2{font-size:16px;font-weight:800;margin:0;letter-spacing:-.01em}.row-head .sub{font-size:12.5px;color:var(--muted);margin-top:2px}.btn{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:12px;padding:8px 11px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;box-shadow:var(--sh-sm);white-space:nowrap}.btn:hover{border-color:var(--muted-2)}.btn.pri{background:var(--green);border-color:var(--green-700);color:#fff}.btn.pri:hover{background:var(--green-700)}.btn.acc{background:var(--orange);border-color:var(--orange-700);color:#fff}.btn.sm{padding:7px 11px;font-size:12px}.btn.ghost{background:transparent;box-shadow:none}.btn:disabled{opacity:.5;cursor:not-allowed}.grid{display:grid;gap:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-sm)}.card.pad{padding:18px}.kpi{display:flex;flex-direction:column;gap:8px;padding:13px}.kpi .top{display:flex;align-items:center;justify-content:space-between}.kpi .ico{width:38px;height:38px;border-radius:11px;display:grid;place-items:center}.kpi .ico.g{background:var(--green-50);color:var(--green-700)}.kpi .ico.o{background:var(--orange-50);color:var(--orange-700)}.kpi .ico.b{background:var(--info-bg);color:var(--info)}.kpi .ico.k{background:#efefea;color:var(--ink-2)}.kpi .lbl{font-size:12.5px;color:var(--muted);font-weight:600}.kpi .val{font-family:var(--mono);font-size:21px;font-weight:600;letter-spacing:-.02em;line-height:1}.kpi .val .u{font-size:13px;color:var(--muted);font-weight:600}.kpi .delta{font-size:12px;font-weight:700;display:inline-flex;align-items:center;gap:4px}.delta.up{color:var(--green-700)}.delta.down{color:var(--danger)}.pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap}.pill .d{width:6px;height:6px;border-radius:50%}.pill.ok{background:var(--ok-bg);color:var(--green-800)}.pill.ok .d{background:var(--ok)}.pill.warn{background:var(--warn-bg);color:#8a6608}.pill.warn .d{background:var(--warn)}.pill.dng{background:var(--danger-bg);color:var(--danger)}.pill.dng .d{background:var(--danger)}.pill.info{background:var(--info-bg);color:var(--info)}.pill.info .d{background:var(--info)}.pill.mut{background:#efefea;color:var(--muted)}.pill.mut .d{background:var(--muted-2)}.pill.orange{background:var(--orange-50);color:var(--orange-700)}.pill.orange .d{background:var(--orange)}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl thead th{text-align:left;font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:9px 10px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}.tbl tbody td{padding:9px 10px;border-bottom:1px solid var(--line-2);vertical-align:middle;white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}.tbl tbody tr{cursor:pointer}.tbl tbody tr:hover{background:var(--surface-2)}.tbl tbody tr:last-child td{border-bottom:0}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.id{font-family:var(--mono);font-size:12px;color:var(--muted)}.usr{display:flex;align-items:center;gap:8px;min-width:0}.av{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:11px;color:#fff;flex:none}.av.g{background:#2e9e55}.av.o{background:#e8551c}.av.b{background:#3b7fc4}.av.p{background:#8a5bc4}.av.k{background:#6b6960}.usr .nm{font-weight:700;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.usr .sub{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trip{display:flex;align-items:center;gap:7px;color:var(--ink-2);font-size:12.5px}.trip .dot{width:7px;height:7px;border-radius:50%;background:var(--orange)}.trip .dot.g{background:var(--green)}.trip .arr{color:var(--muted-2)}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{font-size:12.5px;font-weight:600;padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer}.chip.on{background:var(--green);border-color:var(--green-700);color:#fff}.seg-tabs{display:flex;gap:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:4px}.seg-tabs button{border:0;background:transparent;padding:8px 15px;border-radius:9px;font-weight:700;font-size:13px;color:var(--muted);cursor:pointer}.seg-tabs button.on{background:var(--surface);color:var(--ink);box-shadow:var(--sh-sm)}.spark{display:flex;align-items:flex-end;gap:3px;height:38px}.spark i{flex:1;background:var(--green-100);border-radius:2px}.spark i.hi{background:var(--green)}.bars{display:flex;align-items:flex-end;gap:14px;height:180px;padding-top:10px}.bars .b{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;height:100%;justify-content:flex-end}.bars .b .col{width:60%;border-radius:6px 6px 0 0;background:linear-gradient(180deg,#2e9e55,#178a3c);min-height:4px}.bars .b .col.o{background:linear-gradient(180deg,#f0743f,#e8551c)}.bars .b .lb{font-size:11px;color:var(--muted);font-weight:600}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);font-weight:600}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:3px}.donut{width:150px;height:150px;border-radius:50%;flex:none}.don-leg{display:flex;flex-direction:column;gap:10px}.don-leg .it{display:flex;align-items:center;gap:9px;font-size:13px}.don-leg .it i{width:11px;height:11px;border-radius:3px}.don-leg .it b{margin-left:auto;font-family:var(--mono)}.progress{height:8px;border-radius:6px;background:var(--line-2);overflow:hidden}.progress>i{display:block;height:100%;border-radius:6px;background:var(--green)}.progress>i.o{background:var(--orange)}.feed{display:flex;flex-direction:column}.feed .it{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-2)}.feed .it:last-child{border-bottom:0}.feed .ic{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex:none;font-size:14px}.feed .ic.g{background:var(--green-50)}.feed .ic.o{background:var(--orange-50)}.feed .ic.b{background:var(--info-bg)}.feed .ic.k{background:#efefea}.feed .tx{font-size:13px;line-height:1.35}.feed .tx b{font-weight:700}.feed .tm{font-size:11.5px;color:var(--muted-2);margin-top:2px;font-family:var(--mono)}.zmap{position:relative;border-radius:var(--r);overflow:hidden;background:radial-gradient(circle at 30% 30%,rgba(23,138,60,.1),transparent 45%),radial-gradient(circle at 70% 65%,rgba(232,85,28,.1),transparent 45%),repeating-linear-gradient(45deg,#eff2ec 0,#eff2ec 11px,#f4f6f1 11px,#f4f6f1 22px);border:1px solid var(--line);min-height:280px}.zmap .pin{position:absolute;transform:translate(-50%,-100%)}.zmap .pin .p{width:20px;height:20px;border-radius:50% 50% 50% 2px;transform:rotate(45deg);background:var(--green);box-shadow:0 4px 10px #0000002e}.zmap .pin.o .p{background:var(--orange)}.zmap .pin .lb{position:absolute;top:-6px;left:26px;white-space:nowrap;background:#fff;border:1px solid var(--line);border-radius:8px;padding:3px 8px;font-size:11px;font-weight:700;box-shadow:var(--sh-sm)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#14130f61;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .25s;z-index:60}.scrim.on{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;right:0;height:100vh;width:520px;max-width:94vw;background:var(--app);box-shadow:var(--sh-lg);transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.1,1);z-index:61;display:flex;flex-direction:column}.drawer.on{transform:none}.dw-head{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line);background:var(--surface)}.dw-head .x{margin-left:auto;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--surface);cursor:pointer;display:grid;place-items:center;color:var(--muted)}.dw-body{padding:22px;overflow:auto;display:flex;flex-direction:column;gap:18px}.kv{display:grid;grid-template-columns:1fr 1fr;gap:14px}.kv .k{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin-bottom:4px}.kv .v{font-size:14px;font-weight:600}.tl{display:flex;flex-direction:column;gap:0;padding-left:6px}.tl .ev{display:flex;gap:13px;position:relative;padding-bottom:18px}.tl .ev:last-child{padding-bottom:0}.tl .ev .nd{width:13px;height:13px;border-radius:50%;background:var(--green);border:3px solid var(--green-50);flex:none;margin-top:2px;z-index:1}.tl .ev.pend .nd{background:var(--muted-2);border-color:#efefea}.tl .ev.cur .nd{background:var(--orange);border-color:var(--orange-50)}.tl .ev:before{content:"";position:absolute;left:6px;top:14px;bottom:-2px;width:2px;background:var(--line)}.tl .ev:last-child:before{display:none}.tl .ev .ti{font-weight:700;font-size:13.5px}.tl .ev .ts{font-size:11.5px;color:var(--muted);font-family:var(--mono);margin-top:1px}.code{font-family:var(--mono);font-weight:600;letter-spacing:.18em;font-size:20px}.codecard{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-radius:12px}.codecard.g{background:var(--green-50);border:1px solid var(--green-100)}.codecard.o{background:var(--orange-50);border:1px solid #F6D9C9}.doc{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface-2)}.doc .ph{height:120px;display:grid;place-items:center;color:var(--muted-2);font-family:var(--mono);font-size:11px;letter-spacing:.06em;background:repeating-linear-gradient(45deg,#ecece6 0,#ecece6 8px,#f3f3ee 8px,#f3f3ee 16px)}.doc .cap{padding:8px 11px;font-size:12px;font-weight:600;border-top:1px solid var(--line)}.split{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line-2)}.split:last-child{border-bottom:0}.split .l{display:flex;align-items:center;gap:11px}.toggle{width:42px;height:24px;border-radius:999px;background:var(--green);position:relative;cursor:pointer;flex:none;transition:.2s}.toggle:after{content:"";position:absolute;top:2.5px;right:2.5px;width:19px;height:19px;border-radius:50%;background:#fff;transition:.2s}.toggle.off{background:#d6d6ce}.toggle.off:after{right:auto;left:2.5px}.muted{color:var(--muted)}.b{font-weight:700}.mono-sm{font-family:var(--mono);font-size:12px}.amt{font-family:var(--mono);font-weight:600;font-variant-numeric:tabular-nums}.hr{height:1px;background:var(--line);margin:4px 0}.empty{padding:40px;text-align:center;color:var(--muted)}.skeleton{background:var(--line-2);border-radius:6px;animation:pulse 1.4s ease infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.compact-form h3{font-size:14px;margin:0 0 10px}.compact-form label{display:block;font-size:11px;color:var(--muted);margin:8px 0 4px}.compact-form input,.compact-form textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px 9px;font-family:var(--ui);font-size:12px;outline:none}.compact-form input:focus,.compact-form textarea:focus{border-color:var(--green)}.inline-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.inline-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px}@media (max-width:1200px){.tbl tbody td{max-width:150px}}@media (max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}.topbar{padding:10px 12px;gap:8px;flex-wrap:wrap}.search{min-width:160px;flex:1}.inline-grid{grid-template-columns:1fr}}
