:root{--bg: #eef1f1;--surface: #ffffff;--surface-2: #f6f8f8;--ink: #18211f;--ink-2: #5a6764;--ink-3: #8a9794;--line: #e2e8e6;--line-2: #cdd6d5;--primary: #0f766e;--primary-d: #0b5d56;--primary-soft: #e6f3f1;--accent: #15803d;--accent-soft: #e8f3ec;--danger: #c0392b;--danger-soft: #fdecea;--warn: #b45309;--warn-soft: #fdf6ec;--info: #1d4ed8;--info-soft: #eaf0fd;--radius: 12px;--shadow: 0 1px 2px rgba(16, 40, 34, .04), 0 6px 20px rgba(16, 40, 34, .06);--shadow-sm: 0 1px 2px rgba(16, 40, 34, .06)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:IBM Plex Sans,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.5}.mono{font-family:IBM Plex Mono,monospace}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:8px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#b3bfbe;background-clip:content-box}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulseDot{0%,to{opacity:1}50%{opacity:.35}}@keyframes toastIn{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{transform:translateY(12px) scale(.99);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.app{display:flex;height:100vh;overflow:hidden}.sidebar{width:246px;flex:none;background:#10211d;color:#cfdad7;display:flex;flex-direction:column;padding:0}.sidebar .brand{display:flex;align-items:center;gap:11px;padding:20px 20px 18px}.sidebar .brand .logo{width:36px;height:36px;border-radius:10px;flex:none;background:linear-gradient(135deg,#14b8a6,#0f766e);display:flex;align-items:center;justify-content:center}.sidebar .brand b{font-size:15px;color:#fff;letter-spacing:-.2px;display:block}.sidebar .brand span{font-size:10.5px;color:#ffffff8c;text-transform:uppercase;letter-spacing:.4px}.nav{flex:1;overflow-y:auto;padding:6px 12px 16px}.nav .group{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:#fff6;padding:14px 10px 6px;font-weight:600}.nav a{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;font-size:13.5px;font-weight:500;color:#b9c5c2;margin-bottom:1px;cursor:pointer}.nav a:hover{background:#ffffff0f;color:#fff}.nav a.active{background:#14b8a629;color:#fff}.nav a .ico{width:18px;height:18px;flex:none;opacity:.9}.nav a .pill{margin-left:auto;font-size:11px;background:#ffffff1f;padding:1px 7px;border-radius:20px;font-family:IBM Plex Mono}.sidebar .userbox{padding:14px 16px;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:10px}.sidebar .userbox .av{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#34d399,#0f766e);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none}.main{flex:1;display:flex;flex-direction:column;overflow:hidden}.topbar{height:60px;flex:none;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 26px;gap:16px}.topbar h1{font-size:16.5px;font-weight:700;letter-spacing:-.3px}.topbar .sub{font-size:12px;color:var(--ink-3);margin-top:1px}.topbar .spacer{flex:1}.content{flex:1;overflow-y:auto;padding:24px 26px 40px;animation:fadeIn .25s ease}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:18px 20px}.card-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line)}.card-head h3{font-size:14.5px;font-weight:700}.card-head .sub{font-size:12px;color:var(--ink-3)}.grid{display:grid;gap:16px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-sm)}.stat .label{font-size:12px;color:var(--ink-3);font-weight:500;display:flex;align-items:center;gap:8px}.stat .val{font-size:28px;font-weight:700;letter-spacing:-.6px;margin-top:6px;font-family:IBM Plex Mono}.stat .meta{font-size:12px;color:var(--ink-2);margin-top:4px}.stat .ic{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:20px;line-height:1.4;white-space:nowrap}.badge.green{background:var(--accent-soft);color:var(--accent)}.badge.teal{background:var(--primary-soft);color:var(--primary-d)}.badge.gray{background:#eef1f1;color:var(--ink-2)}.badge.blue{background:var(--info-soft);color:var(--info)}.badge.amber{background:var(--warn-soft);color:var(--warn)}.badge.red{background:var(--danger-soft);color:var(--danger)}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-family:inherit;font-size:13px;font-weight:600;padding:8px 15px;border-radius:9px;border:1px solid transparent;cursor:pointer;transition:.12s;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-d)}.btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--line-2)}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-soft{background:var(--primary-soft);color:var(--primary-d)}.btn-soft:hover:not(:disabled){background:#d4ebe8}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-danger:hover:not(:disabled){background:#fbddd8}.btn-sm{padding:5px 11px;font-size:12px;border-radius:8px}.btn-icon{padding:7px}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:6px}.input,.select,textarea.input{width:100%;font-family:inherit;font-size:13.5px;color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:9px;padding:9px 12px;outline:none;transition:.12s}.input:focus,.select:focus,textarea.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.input::placeholder{color:var(--ink-3)}textarea.input{resize:vertical;min-height:70px}.row{display:flex;gap:12px}.row>*{flex:1}.table-wrap{overflow-x:auto}table.tbl{width:100%;border-collapse:collapse;font-size:13px}table.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-3);font-weight:600;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--surface-2);position:sticky;top:0}table.tbl td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle}table.tbl tbody tr:hover{background:var(--surface-2)}table.tbl tbody tr:last-child td{border-bottom:none}.muted{color:var(--ink-3)}.strong{font-weight:600}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#10211d6b;display:flex;align-items:flex-start;justify-content:center;padding:48px 20px;z-index:50;animation:fadeIn .15s;overflow-y:auto}.modal{background:var(--surface);border-radius:16px;width:100%;max-width:560px;box-shadow:0 24px 60px #10211d47;animation:modalIn .2s ease}.modal.lg{max-width:880px}.modal-head{display:flex;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}.modal-head h3{font-size:16px;font-weight:700}.modal-head .x{margin-left:auto;cursor:pointer;color:var(--ink-3);padding:4px;border-radius:6px}.modal-head .x:hover{background:var(--surface-2);color:var(--ink)}.modal-body{padding:20px 22px}.modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:16px 22px;border-top:1px solid var(--line)}.toasts{position:fixed;bottom:22px;right:22px;z-index:80;display:flex;flex-direction:column;gap:10px}.toast{background:#10211d;color:#fff;padding:12px 16px;border-radius:11px;font-size:13px;font-weight:500;box-shadow:0 10px 30px #00000040;animation:toastIn .25s ease;display:flex;align-items:center;gap:10px;max-width:360px}.toast.err{background:#7f1d1d}.spinner{width:18px;height:18px;border:2.5px solid var(--line-2);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}.center-load{display:flex;align-items:center;justify-content:center;padding:60px;color:var(--ink-3);gap:10px}.empty{text-align:center;padding:48px 20px;color:var(--ink-3)}.empty svg{opacity:.4;margin-bottom:10px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;flex-wrap:wrap}.tabs button{background:none;border:none;font-family:inherit;font-size:13px;font-weight:600;color:var(--ink-3);padding:9px 14px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button.active{color:var(--primary-d);border-bottom-color:var(--primary)}.search-box{position:relative}.search-box svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--ink-3)}.search-box .input{padding-left:34px}.flex{display:flex;align-items:center}.gap8{gap:8px}.gap12{gap:12px}.gap16{gap:16px}.between{justify-content:space-between}.mt4{margin-top:4px}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}.mb16{margin-bottom:16px}.mb20{margin-bottom:20px}.tar{text-align:right}.divider{height:1px;background:var(--line);margin:14px 0}.pagination{display:flex;align-items:center;gap:8px;justify-content:flex-end;padding:14px 4px 0;font-size:13px;color:var(--ink-2)}:root{--ai: #6d4aff;--ai-d: #5538cc;--ai-soft: #efebff}.btn-ai{background:linear-gradient(135deg,#7c5cff,#5538cc);color:#fff}.btn-ai:hover:not(:disabled){background:linear-gradient(135deg,#6d4aff,#4a2fb8)}.btn-ai-soft{background:var(--ai-soft);color:var(--ai-d)}.btn-ai-soft:hover:not(:disabled){background:#e4dcff}.badge.ai{background:var(--ai-soft);color:var(--ai-d)}.ai-panel{border:1px solid #e0d8ff;background:linear-gradient(180deg,#faf8ff,#f3efff);border-radius:12px;padding:16px 18px}.ai-panel .ai-head{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13px;color:var(--ai-d);margin-bottom:10px}.ai-note{font-size:11.5px;color:var(--ai-d);opacity:.8;margin-top:10px;display:flex;gap:6px;align-items:flex-start}.risk-aman{color:var(--accent)}.risk-perhatian{color:var(--warn)}.risk-tinggi{color:var(--danger)}
