html,body,#root{height:100%;width:100%}body{margin:0;background:var(--bg, #f6f8fc);color:var(--text, #0f172a);overflow-x:hidden;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,svg,video,canvas{max-width:100%}.app-shell{display:flex;width:100%;min-height:100vh;background:var(--bg, #f6f8fc)}.app-main{flex:1;min-width:0;padding:10px;overflow-x:hidden}.app-main-inner{width:100%;max-width:100%;margin:0}@media(max-width:920px){.app-shell{flex-direction:column}.app-main{padding:10px}.app-main-inner{max-width:100%;margin:0}}:root{--brand-600: #004aad;--brand-700: #003a87;--bg: #f5f7fa;--surface: #ffffff;--surface-2: #fafbfc;--text: #1f2937;--text-2: #6b7280;--text-3: #9ca3af;--border: #e5e9f0;--border-2: #d9e0ea;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--shadow-md: 0 6px 18px rgba(16, 24, 40, .1);--success: #1f9d55;--danger: #c53030;--warning: #d69e2e;--input-bg: #ffffff;--input-border: #d9e0ea;--input-border-focus: rgba(0, 74, 173, .55);--ring: 0 0 0 6px rgba(0, 74, 173, .12);--r-sm: 10px;--r-md: 14px;--r-lg: 18px;--t-fast: .12s ease;--t-med: .18s ease;--page-pad: 18px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.35;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}::selection{background:#004aad2e}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:#1f29372e;border-radius:999px;border:3px solid rgba(0,0,0,0);background-clip:padding-box}*::-webkit-scrollbar-track{background:transparent}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card+.card{margin-top:12px}.card-header{padding:14px 16px;border-bottom:1px solid var(--border)}.card-body{padding:16px}h1,h2,h3{margin:0;letter-spacing:-.2px}.page-title{font-size:18px;font-weight:900;margin:0}.page-subtitle{margin-top:4px;font-size:12px;color:var(--text-2)}button,.btn{font-family:inherit}button{appearance:none;border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:var(--r-md);padding:10px 14px;font-weight:900;cursor:pointer;transition:transform var(--t-fast),background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast),opacity var(--t-fast),filter var(--t-fast)}button:hover{background:#f3f5f8;border-color:var(--border-2);box-shadow:0 10px 22px #10182814;transform:translateY(-1px)}button:active{transform:translateY(0);box-shadow:none}button:disabled{cursor:not-allowed;opacity:.6;transform:none;box-shadow:none}.btn-primary{background:linear-gradient(180deg,var(--brand-600) 0%,var(--brand-700) 100%);border-color:var(--brand-600);color:#fff;box-shadow:0 12px 26px #004aad33}.btn-primary:hover{filter:brightness(1.02);box-shadow:0 16px 34px #004aad42}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover{filter:brightness(.96)}.btn-ghost{background:transparent;border-color:var(--border)}.btn-ghost:hover{background:#1f29370a}button:focus-visible,a:focus-visible{outline:none;box-shadow:var(--ring)}input,select,textarea{font-family:inherit;font-size:14px;color:var(--text);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--r-md);padding:10px 12px;outline:none;transition:box-shadow var(--t-fast),border-color var(--t-fast),background var(--t-fast)}input::placeholder,textarea::placeholder{color:var(--text-3)}input:focus,select:focus,textarea:focus{border-color:var(--input-border-focus);box-shadow:var(--ring)}input:disabled,select:disabled,textarea:disabled{background:#f3f5f8;color:var(--text-2);cursor:not-allowed}.badge{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:#fff;font-size:12px;font-weight:900;color:var(--text)}.badge-success{border-color:#1f9d5559;background:#1f9d551a;color:#0f5f31}.badge-warning{border-color:#d69e2e59;background:#d69e2e1f;color:#6b4f0a}.badge-danger{border-color:#c5303059;background:#c530301a;color:#7c1d1d}table{width:100%;border-collapse:separate;border-spacing:0}thead th{background:linear-gradient(180deg,#f8fafc,#f3f5f8);color:var(--text-2);font-size:12px;text-transform:uppercase;letter-spacing:.4px;font-weight:1000;padding:12px;border-bottom:1px solid var(--border);white-space:nowrap}tbody td{padding:12px;border-bottom:1px solid var(--border);font-size:13px;color:var(--text);white-space:nowrap}tbody tr:hover td{background:#004aad09}tr.row-selected td{background:#004aad14}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.modal-overlay{position:fixed;inset:0;background:#11182761;display:grid;place-items:center;z-index:9999;padding:16px;animation:fadeIn var(--t-med)}.modal{width:min(980px,98vw);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:18px;transform-origin:center;animation:popIn var(--t-med)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}.hr{height:1px;background:var(--border);border:none;margin:12px 0}.muted{color:var(--text-2)}.kpi{font-size:22px;font-weight:1000;letter-spacing:-.3px}.kpi-sub{font-size:12px;color:var(--text-2);margin-top:2px}.sb{width:280px;min-width:280px;padding:14px;border-right:1px solid var(--border);background:linear-gradient(180deg,#f7f9fc 0%,var(--bg) 100%);position:sticky;top:0;height:100vh;overflow-y:auto}.sb-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:12px}.sb-brand{padding:12px;border-radius:var(--r-lg);background:var(--surface-2);border:1px solid var(--border)}.sb-brand-title{font-size:16px;font-weight:1000;color:var(--text)}.sb-brand-sub{margin-top:4px;font-size:12px;color:var(--text-2)}.sb-meta{margin-top:12px;padding:10px 12px;border-radius:var(--r-lg);border:1px solid var(--border);background:#fff;font-size:12px;line-height:1.6}.sb-meta-k{color:var(--text-2);font-weight:900}.sb-meta-v{color:var(--text);font-weight:900}.sb-section{margin-top:14px;margin-bottom:8px;font-size:12px;font-weight:1000;color:var(--text-2);text-transform:uppercase;letter-spacing:.4px}.sb-nav{display:grid;gap:8px}.sb-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-md);text-decoration:none;font-weight:900;border:1px solid var(--border);background:var(--surface);color:var(--text);transition:transform var(--t-fast),background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast)}.sb-link:hover{background:#004aad0a;border-color:var(--border-2);transform:translateY(-1px)}.sb-link.active{background:linear-gradient(180deg,var(--brand-600) 0%,var(--brand-700) 100%);border-color:var(--brand-600);color:#fff;box-shadow:0 12px 24px #004aad2e}.sb-footer{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.sb-route{font-size:12px;color:var(--text-2);margin-bottom:10px}.sb-logout{width:100%;border-radius:var(--r-md);padding:10px 12px;border:1px solid var(--border);background:var(--surface-2);font-weight:1000}.sb-logout:hover{background:#f3f5f8;border-color:var(--border-2)}@media(max-width:900px){[style*="grid-column: span 6"],[style*="grid-column: span 4"],[style*="grid-column: span 3"],[style*="grid-column: span 8"]{grid-column:span 12!important}}@media(max-width:920px){.sb{width:100%;min-width:0;height:auto;position:relative;border-right:none;border-bottom:1px solid var(--border)}}.sb a,.sb a:hover,.sb a:active,.sb a:focus,.sb a:visited,.sb-link,.sb-link:hover,.sb-link:active,.sb-link:focus,.sb-link.active{text-decoration:none!important}.sb a,.sb-link{border-bottom:none!important;box-shadow:none!important}.sb a:after,.sb a:before,.sb-link:after,.sb-link:before{content:none!important;display:none!important;border:0!important}.sb a *{text-decoration:none!important;border-bottom:none!important}
