:root{--brand-navy-deep: #060c24;--brand-navy-mid: #0d2159;--brand-navy-light: #1a3a7a;--brand-blue: #2563eb;--brand-blue-light: #60a5fa;--brand-blue-glow: #93c5fd;--brand-white: #ffffff;--sidebar-bg: #060c24;--sidebar-bg-hover: #0d2159;--sidebar-bg-active: #1a3a7a;--sidebar-text: #93c5fd;--sidebar-text-active: #ffffff;--sidebar-border: rgba(37, 99, 235, .25);--sidebar-width: 240px;--topbar-height: 52px}[data-theme=light]{--bg-primary: #f0f4f8;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-input: #f8fafc;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--border-color: #e2e8f0;--border-input: #cbd5e1;--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 16px rgba(0,0,0,.1);--topbar-bg: #060c24;--topbar-text: #ffffff;--table-header-bg: #f1f5f9;--table-row-hover: #f8fafc;--table-border: #e2e8f0;--btn-primary-bg: #2563eb;--btn-primary-text: #ffffff;--btn-primary-hover: #1d4ed8;--badge-success: #dcfce7;--badge-success-text:#166534;--badge-warning: #fef9c3;--badge-warning-text:#854d0e;--badge-danger: #fee2e2;--badge-danger-text: #991b1b;--badge-info: #dbeafe;--badge-info-text: #1e40af}[data-theme=dark]{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-card: #1e293b;--bg-input: #0f172a;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--border-color: #334155;--border-input: #475569;--shadow-sm: 0 1px 3px rgba(0,0,0,.3);--shadow-md: 0 4px 16px rgba(0,0,0,.4);--topbar-bg: #020817;--topbar-text: #ffffff;--table-header-bg: #0f172a;--table-row-hover: #1e293b;--table-border: #334155;--btn-primary-bg: #2563eb;--btn-primary-text: #ffffff;--btn-primary-hover: #3b82f6;--badge-success: #14532d;--badge-success-text:#86efac;--badge-warning: #713f12;--badge-warning-text:#fde68a;--badge-danger: #7f1d1d;--badge-danger-text: #fca5a5;--badge-info: #1e3a8a;--badge-info-text: #93c5fd}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,Nunito,system-ui,-apple-system,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);transition:background-color .2s,color .2s;overflow:hidden;height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--brand-blue);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--brand-blue-light)}.app-shell{display:flex;height:100vh;width:100vw;overflow:hidden}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background-color:var(--sidebar-bg);display:flex;flex-direction:column;border-right:1px solid var(--sidebar-border);overflow:hidden;transition:width .25s ease;z-index:100}.sidebar.collapsed{width:56px;min-width:56px}.sidebar-logo{padding:16px 12px;border-bottom:1px solid var(--sidebar-border);display:flex;align-items:center;gap:10px;min-height:var(--topbar-height)}.sidebar-logo img{width:32px;height:32px;object-fit:contain;flex-shrink:0}.sidebar-logo-text{color:var(--brand-white);font-size:.9rem;font-weight:700;letter-spacing:.05em;white-space:nowrap;overflow:hidden}.sidebar-logo-text span{display:block;color:var(--brand-blue-light);font-size:.65rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase}.sidebar-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 0}.sidebar-section-label{padding:16px 14px 6px;font-size:.65rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--sidebar-text);opacity:.5;white-space:nowrap;overflow:hidden}.sidebar-item{display:flex;align-items:center;gap:10px;padding:9px 14px;cursor:pointer;border-radius:6px;margin:1px 6px;color:var(--sidebar-text);text-decoration:none;transition:background .15s,color .15s;white-space:nowrap;overflow:hidden}.sidebar-item:hover{background-color:var(--sidebar-bg-hover);color:var(--sidebar-text-active)}.sidebar-item.active{background-color:var(--sidebar-bg-active);color:var(--sidebar-text-active)}.sidebar-item .item-icon{font-size:1rem;width:20px;text-align:center;flex-shrink:0}.sidebar-item .item-label{font-size:.85rem;font-weight:500;overflow:hidden;text-overflow:ellipsis}.sidebar-group summary{display:flex;align-items:center;gap:10px;padding:9px 14px;cursor:pointer;border-radius:6px;margin:1px 6px;color:var(--sidebar-text);list-style:none;transition:background .15s,color .15s;font-size:.85rem;font-weight:600;white-space:nowrap;overflow:hidden}.sidebar-group summary:hover{background-color:var(--sidebar-bg-hover);color:var(--sidebar-text-active)}.sidebar-group[open] summary{color:var(--sidebar-text-active)}.sidebar-group-icon{width:20px;text-align:center;flex-shrink:0}.sidebar-group-children{padding-left:8px}.topbar{height:var(--topbar-height);background-color:var(--topbar-bg);display:flex;align-items:center;padding:0 16px;gap:12px;border-bottom:1px solid rgba(37,99,235,.2);flex-shrink:0;position:relative;z-index:250}.topbar-title{color:var(--topbar-text);font-size:.95rem;font-weight:600;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;align-items:center;gap:8px}.topbar-btn{background:none;border:none;color:var(--brand-blue-light);cursor:pointer;padding:6px 8px;border-radius:6px;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.topbar-btn:hover{background:#2563eb26;color:var(--brand-white)}.user-chip{display:flex;align-items:center;gap:8px;padding:4px 10px;background:#2563eb26;border-radius:20px;cursor:pointer;transition:background .15s}.user-chip:hover{background:#2563eb47}.user-chip-name{color:var(--brand-white);font-size:.8rem;font-weight:600;white-space:nowrap}.user-chip-icon{color:var(--brand-blue-light);font-size:.9rem}.main-area{flex:1;display:flex;flex-direction:column;overflow:hidden}.tab-bar{display:flex;align-items:center;gap:3px;flex:1;overflow-x:auto;overflow-y:hidden;padding:0 6px;min-width:0}.tab-bar::-webkit-scrollbar{height:3px}.tab-bar::-webkit-scrollbar-thumb{background:#2563eb66;border-radius:2px}.tab-add{display:flex;align-items:center;justify-content:center;width:26px;height:26px;flex-shrink:0;background:none;border:1px solid rgba(37,99,235,.2);border-radius:5px;color:var(--brand-blue-light);font-size:1.1rem;line-height:1;cursor:pointer;opacity:.6;transition:opacity .15s,background .15s,color .15s}.tab-add:hover{opacity:1;background:#2563eb33;color:#fff}.tab-item{display:flex;align-items:center;gap:5px;padding:0 8px 0 10px;height:30px;background:#ffffff0a;border:1px solid rgba(37,99,235,.18);border-radius:6px;cursor:pointer;font-size:.76rem;font-weight:500;color:var(--brand-blue-light);transition:background .15s,color .15s,border-color .15s;white-space:nowrap;max-width:180px;-webkit-user-select:none;user-select:none;flex-shrink:0}.tab-item:hover{background:#2563eb2e;color:#fff}.tab-item.active{background:#2563eb47;color:#fff;border-color:#2563eb8c;font-weight:600}.tab-label{overflow:hidden;text-overflow:ellipsis}.tab-close{display:flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:3px;background:none;border:none;padding:0;color:inherit;opacity:0;cursor:pointer;font-size:13px;line-height:1;flex-shrink:0;transition:opacity .1s,background .1s}.tab-item:hover .tab-close,.tab-item.active .tab-close{opacity:.55}.tab-close:hover{opacity:1!important;background:#ffffff26;color:#fca5a5}.view-title-bar{height:34px;flex-shrink:0;display:flex;align-items:center;padding:0 20px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);font-size:.8rem;font-weight:700;color:var(--text-secondary);letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tab-panels{flex:1;position:relative;overflow:hidden}.tab-panel{display:none;position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;padding:20px;background-color:var(--bg-primary)}.tab-panel.active{display:block}.card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;box-shadow:var(--shadow-sm);padding:20px;margin-bottom:16px}.table-wrapper{overflow:auto;max-height:calc(100vh - 200px);border:1px solid var(--table-border);border-radius:8px}table{width:100%;border-collapse:collapse}thead th{position:sticky;top:0;background:var(--table-header-bg);color:var(--text-secondary);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:10px 12px;text-align:center;border-bottom:1px solid var(--table-border);border-right:1px solid var(--table-border);z-index:2;white-space:nowrap}thead th:last-child{border-right:none}tbody td{padding:10px 12px;font-size:.875rem;border-bottom:1px solid var(--table-border);border-right:1px solid var(--table-border);color:var(--text-primary)}tbody td:last-child{border-right:none}tfoot td{border-right:1px solid var(--table-border)}tfoot td:last-child{border-right:none}tbody tr:hover td{background-color:var(--table-row-hover)}tbody tr:last-child td{border-bottom:none}.btn{padding:8px 16px;border-radius:6px;border:none;cursor:pointer;font-size:.875rem;font-weight:600;transition:background .15s,opacity .15s;display:inline-flex;align-items:center;gap:6px}.btn-primary{background:var(--btn-primary-bg);color:var(--btn-primary-text)}.btn-primary:hover{background:var(--btn-primary-hover)}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border-color)}.btn-ghost:hover{background:var(--bg-secondary)}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover{background:#b91c1c}.btn-success{background:#16a34a;color:#fff}.btn-success:hover{background:#15803d}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{padding:3px 10px;border-radius:99px;font-size:.72rem;font-weight:700;display:inline-block}.badge-success{background:var(--badge-success);color:var(--badge-success-text)}.badge-warning{background:var(--badge-warning);color:var(--badge-warning-text)}.badge-danger{background:var(--badge-danger);color:var(--badge-danger-text)}.badge-info{background:var(--badge-info);color:var(--badge-info-text)}.form-group{margin-bottom:14px}.form-label{display:block;font-size:.8rem;font-weight:600;color:var(--text-secondary);margin-bottom:5px}.form-control{width:100%;padding:8px 12px;background:var(--bg-input);border:1px solid var(--border-input);border-radius:6px;color:var(--text-primary);font-size:.875rem;outline:none;transition:border-color .15s}.form-control:focus{border-color:var(--brand-blue)}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:spin .8s linear infinite}
