:root{--bg: #f0f4f8;--card: #ffffff;--card-2: #f8fafc;--card-hover: #f1f5f9;--border: #e2e8f0;--border-2: #f1f5f9;--text: #0f172a;--text-2: #334155;--muted: #64748b;--muted-2: #94a3b8;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-light: #dbeafe;--primary-dark: #1e40af;--accent: #f59e0b;--accent-light: #fef3c7;--success: #16a34a;--success-light: #dcfce7;--warning: #d97706;--warning-light: #fef3c7;--danger: #dc2626;--danger-light: #fee2e2;--purple: #7c3aed;--purple-light: #ede9fe;--teal: #0d9488;--teal-light: #ccfbf1;--sidebar: #0f172a;--sidebar-text: #cbd5e1;--sidebar-muted: #475569;--sidebar-active-bg: rgba(37,99,235,.15);--sidebar-active-text: #93c5fd;--sidebar-active-border:#3b82f6;--sidebar-hover-bg: rgba(255,255,255,.06);--shadow-xs: 0 1px 2px rgba(15,23,42,.04);--shadow-sm: 0 1px 3px rgba(15,23,42,.06), 0 1px 2px rgba(15,23,42,.04);--shadow: 0 4px 16px rgba(15,23,42,.07), 0 2px 6px rgba(15,23,42,.04);--shadow-lg: 0 12px 40px rgba(15,23,42,.12), 0 4px 12px rgba(15,23,42,.06);--radius-xs: 6px;--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--radius-xl: 22px;--sidebar-w: 256px;--topbar-h: 60px;--content-px: 32px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh}a{text-decoration:none;color:inherit}button{cursor:pointer;font:inherit}input,select,textarea{font:inherit}h1,h2,h3,h4{font-family:Inter,sans-serif;letter-spacing:-.025em;font-weight:700}.layout{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{background:var(--sidebar);color:var(--sidebar-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;scrollbar-width:none;border-right:1px solid rgba(255,255,255,.04)}.sidebar::-webkit-scrollbar{display:none}.brand{display:flex;align-items:center;gap:10px;padding:20px 18px 16px;border-bottom:1px solid rgba(255,255,255,.06)}.brand-badge{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--primary) 0%,#1d4ed8 100%);display:grid;place-items:center;font-weight:800;font-size:16px;color:#fff;flex-shrink:0;box-shadow:0 4px 12px #2563eb66;letter-spacing:-1px}.brand h1{font-size:14px;font-weight:700;margin:0;color:#f1f5f9;letter-spacing:-.02em;line-height:1.2}.brand p{margin:2px 0 0;color:var(--sidebar-muted);font-size:10.5px;font-weight:500}.user-box{margin:12px 12px 4px;background:#ffffff0a;border:1px solid rgba(255,255,255,.07);border-radius:var(--radius-sm);padding:10px 12px;display:flex;align-items:center;gap:10px}.user-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,#7c3aed 100%);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff;flex-shrink:0;letter-spacing:-.5px}.user-info{flex:1;min-width:0}.user-box .name{font-weight:600;font-size:12.5px;color:#f1f5f9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-box .role{color:var(--sidebar-muted);font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin-top:1px}.sidebar nav{display:flex;flex-direction:column;padding:6px 10px;flex:1;gap:1px}.nav-section-label{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--sidebar-muted);padding:14px 10px 5px}.nav-divider{border:none;border-top:1px solid rgba(255,255,255,.05);margin:4px 0}.sidebar nav a{padding:8px 10px;border-radius:var(--radius-sm);color:var(--sidebar-text);font-size:13px;font-weight:500;transition:all .13s ease;display:flex;align-items:center;gap:9px;position:relative}.sidebar nav a svg{flex-shrink:0;opacity:.7}.sidebar nav a:hover{background:var(--sidebar-hover-bg);color:#f1f5f9}.sidebar nav a:hover svg{opacity:1}.sidebar nav a.active{background:var(--sidebar-active-bg);color:var(--sidebar-active-text);font-weight:600}.sidebar nav a.active svg{opacity:1}.sidebar nav a.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:60%;background:var(--sidebar-active-border);border-radius:0 3px 3px 0}.sidebar-footer{padding:10px 10px 14px;border-top:1px solid rgba(255,255,255,.06);margin-top:auto}.sidebar-footer button{width:100%;display:flex;align-items:center;gap:9px;padding:8px 10px;border:none;background:none;color:var(--sidebar-muted);font-size:13px;font-weight:500;border-radius:var(--radius-sm);cursor:pointer;transition:all .13s;text-align:left}.sidebar-footer button:hover{background:#ef44441a;color:#fca5a5}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;height:var(--topbar-h);padding:0 var(--content-px);border-bottom:1px solid var(--border);background:#ffffffd9;backdrop-filter:blur(8px);position:sticky;top:0;z-index:100;flex-shrink:0}.topbar-left{display:flex;align-items:center;gap:14px;min-width:0}.topbar-breadcrumb{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12.5px}.topbar-breadcrumb .sep{color:var(--border)}.topbar-title{display:flex;flex-direction:column;justify-content:center;min-width:0}.topbar-title h2{margin:0;font-size:16px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-title p{margin:0;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;gap:8px;align-items:center;flex-shrink:0}.content{display:flex;flex-direction:column;min-height:100vh;min-width:0;overflow:hidden}.page-body{padding:24px var(--content-px);flex:1}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 24px;box-shadow:var(--shadow-xs)}.card-sm{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-xs)}.card h2,.card h3{margin-top:0}.grid{display:grid;gap:16px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px;box-shadow:var(--shadow-xs);position:relative;overflow:hidden;transition:box-shadow .15s,transform .15s}.kpi-card:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.kpi-card:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--kpi-color, linear-gradient(90deg, var(--primary), #60a5fa))}.kpi-blue{--kpi-color: linear-gradient(90deg, #2563eb, #60a5fa)}.kpi-green{--kpi-color: linear-gradient(90deg, #16a34a, #4ade80)}.kpi-orange{--kpi-color: linear-gradient(90deg, #d97706, #fb923c)}.kpi-red{--kpi-color: linear-gradient(90deg, #dc2626, #f87171)}.kpi-purple{--kpi-color: linear-gradient(90deg, #7c3aed, #a78bfa)}.kpi-teal{--kpi-color: linear-gradient(90deg, #0d9488, #2dd4bf)}.kpi-icon{width:38px;height:38px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:18px;margin-bottom:14px;background:var(--kpi-icon-bg, var(--primary-light))}.kpi-title{color:var(--muted);font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.kpi-value{font-size:30px;font-weight:800;line-height:1;color:var(--text);letter-spacing:-.03em}.kpi-sub{margin-top:8px;font-size:12px;color:var(--muted);font-weight:500}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:11px 14px;border-bottom:1px solid var(--border-2);text-align:left;vertical-align:middle}.table thead tr{background:var(--card-2);position:sticky;top:0;z-index:1}.table th{font-size:10.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.07em;white-space:nowrap}.table th:first-child{border-radius:var(--radius-sm) 0 0 0}.table th:last-child{border-radius:0 var(--radius-sm) 0 0}.table tbody tr{transition:background .1s}.table tbody tr:hover td{background:#f8fbff}.table tbody tr:last-child td{border-bottom:none}.table tbody tr.clickable{cursor:pointer}.btn{border:none;border-radius:var(--radius-sm);padding:8px 16px;min-height:36px;font-size:13px;font-weight:600;transition:all .13s ease;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;letter-spacing:-.01em}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 1px 4px #2563eb4d}.btn-primary:hover:not(:disabled){background:var(--primary-hover);box-shadow:0 4px 12px #2563eb59;transform:translateY(-1px)}.btn-secondary{background:var(--card);color:var(--text-2);border:1px solid var(--border);box-shadow:var(--shadow-xs)}.btn-secondary:hover:not(:disabled){background:var(--card-2);border-color:#cbd5e1;color:var(--text)}.btn-danger{background:var(--danger-light);color:var(--danger);border:1px solid #fecaca}.btn-danger:hover:not(:disabled){background:#fecaca}.btn-success{background:var(--success-light);color:var(--success);border:1px solid #bbf7d0}.btn-success:hover:not(:disabled){background:#bbf7d0}.btn-accent{background:var(--accent);color:#fff;box-shadow:0 1px 4px #f59e0b4d}.btn-accent:hover:not(:disabled){background:#d97706;transform:translateY(-1px)}.btn-ghost{background:transparent;color:var(--muted);border:none;box-shadow:none}.btn-ghost:hover:not(:disabled){background:var(--card-2);color:var(--text)}.btn-sm{padding:5px 11px;min-height:30px;font-size:12px;border-radius:var(--radius-xs)}.btn-lg{padding:11px 22px;min-height:44px;font-size:14px;border-radius:var(--radius-sm)}.btn-icon{width:34px;height:34px;min-height:unset;padding:0;justify-content:center;flex-shrink:0}.badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;letter-spacing:.02em;background:var(--border);color:var(--muted);white-space:nowrap}.badge-blue{background:#dbeafe;color:#1e40af}.badge-green{background:#dcfce7;color:#15803d}.badge-orange{background:#ffedd5;color:#9a3412}.badge-red{background:var(--danger-light);color:var(--danger)}.badge-gray{background:#f1f5f9;color:#475569}.badge-yellow{background:#fef9c3;color:#854d0e}.badge-purple{background:var(--purple-light);color:var(--purple)}.badge-amber{background:var(--accent-light);color:#92400e}.badge-teal{background:var(--teal-light);color:var(--teal)}.form-grid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid-3{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid-1{display:grid;gap:14px;grid-template-columns:1fr}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:11.5px;color:var(--muted);font-weight:600;letter-spacing:.01em}.field input,.field select,.field textarea{width:100%;padding:9px 12px;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--card);color:var(--text);font-size:13.5px;transition:border-color .15s,box-shadow .15s;outline:none}.field input:hover:not(:focus),.field select:hover:not(:focus){border-color:#cbd5e1}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.field input::placeholder,.field textarea::placeholder{color:var(--muted-2)}.field textarea{min-height:90px;resize:vertical;line-height:1.55}.field select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L6 6L11 1' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.field-hint{font-size:11.5px;color:var(--muted-2);margin-top:2px}.field-error{font-size:11.5px;color:var(--danger);margin-top:2px}.alert{border-radius:var(--radius-sm);padding:11px 14px;font-size:13px;font-weight:500;display:flex;align-items:flex-start;gap:8px}.alert-info{background:#eff6ff;color:#1e3a8a;border:1px solid #bfdbfe}.alert-warning{background:#fffbeb;color:#78350f;border:1px solid #fde68a}.alert-danger{background:var(--danger-light);color:#7f1d1d;border:1px solid #fecaca}.alert-success{background:var(--success-light);color:#14532d;border:1px solid #bbf7d0}.muted{color:var(--muted)}.muted-2{color:var(--muted-2)}.text-sm{font-size:12.5px}.text-xs{font-size:11px}.font-mono{font-family:Geist Mono,ui-monospace,Courier New,monospace}.font-bold{font-weight:700}.text-right{text-align:right}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.divider{border:none;border-top:1px solid var(--border-2);margin:18px 0}hr.soft{border:none;border-top:1px solid var(--border-2);margin:16px 0}.section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.section-title h3,.section-title h4{margin:0;font-size:15px;font-weight:700;color:var(--text)}.empty-state{padding:48px 24px;text-align:center;color:var(--muted);border:1.5px dashed var(--border);border-radius:var(--radius);background:var(--card-2)}.empty-state-icon{font-size:36px;margin-bottom:12px;opacity:.5;line-height:1}.empty-state h4{margin:0 0 6px;font-size:15px;color:var(--text-2)}.empty-state p{margin:0;font-size:13px;color:var(--muted)}.split-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.hub-layout{display:grid;grid-template-columns:360px 1fr;gap:0;height:calc(100vh - var(--topbar-h) - 48px);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-sm)}.hub-list{border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.hub-list-header{padding:14px 16px;border-bottom:1px solid var(--border-2);background:var(--card-2);flex-shrink:0}.hub-list-body{overflow-y:auto;flex:1}.hub-detail{display:flex;flex-direction:column;overflow:hidden}.hub-item{padding:12px 16px;border-bottom:1px solid var(--border-2);cursor:pointer;transition:background .1s}.hub-item:hover{background:var(--card-2)}.hub-item.selected{background:#eff6ff;border-left:3px solid var(--primary);padding-left:13px}.tabs{display:flex;border-bottom:1px solid var(--border);padding:0 20px;background:var(--card);gap:2px;overflow-x:auto;scrollbar-width:none;flex-shrink:0}.tabs::-webkit-scrollbar{display:none}.tab{padding:11px 14px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;border:none;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .13s;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.tab-content{padding:20px 24px;overflow-y:auto;flex:1}.info-row{display:flex;flex-direction:column;gap:2px;padding:10px 0;border-bottom:1px solid var(--border-2)}.info-row:last-child{border-bottom:none}.info-row .label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2)}.info-row .value{font-size:14px;font-weight:500;color:var(--text)}.form-panel-head{display:flex;align-items:center;gap:14px;margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid var(--border)}.form-panel-icon{width:40px;height:40px;border-radius:var(--radius-sm);background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.form-panel-title{margin:0 0 2px;font-size:15px;font-weight:700}.form-panel-sub{margin:0;font-size:12px;color:var(--muted)}.form-footer{margin-top:20px;padding-top:16px;border-top:1px solid var(--border);display:flex;gap:8px}.actions{display:flex;flex-wrap:wrap;gap:8px}.tbl-actions{display:flex;gap:5px}.status-line{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.list-clean{margin:0;padding-left:18px;color:var(--muted)}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.mobile-topbar,.sidebar-overlay{display:none}.hamburger{background:none;border:none;color:#ffffffd9;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);flex-shrink:0;padding:0}.hamburger:hover{background:#ffffff14}.mobile-brand-name{font-size:15px;font-weight:700;color:#f1f5f9;white-space:nowrap}.mobile-logout{background:none;border:none;color:#ffffffa6;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);padding:0;transition:all .13s}.mobile-logout:hover{background:#ffffff14;color:#fff}@media (max-width: 1200px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}:root{--content-px: 24px}}@media (max-width: 1100px){.grid-3,.split-layout,.form-grid,.form-grid-3,.grid-2{grid-template-columns:1fr}.hub-layout{grid-template-columns:300px 1fr}}@media (max-width: 900px){:root{--content-px: 16px}.layout{display:block;padding-top:56px}.mobile-topbar{display:flex;align-items:center;gap:10px;position:fixed;top:0;left:0;right:0;height:56px;background:var(--sidebar);padding:0 12px;z-index:500;border-bottom:1px solid rgba(255,255,255,.06)}.sidebar{position:fixed;top:0;left:0;bottom:0;height:100%;width:280px;z-index:600;transform:translate(-100%);transition:transform .25s ease,box-shadow .25s ease}.sidebar.open{transform:translate(0);box-shadow:8px 0 40px #00000080}.sidebar-overlay{display:block;position:fixed;inset:0;background:#0000008c;z-index:550;opacity:0;pointer-events:none;transition:opacity .25s}.sidebar-overlay.visible{opacity:1;pointer-events:auto}.topbar{display:none}.content{overflow-y:unset;height:auto}.page-body{padding:16px var(--content-px)}.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2{grid-template-columns:1fr}.hub-layout{grid-template-columns:1fr;height:auto;min-height:unset}.hub-list{max-height:42vh;border-right:none;border-bottom:1px solid var(--border)}.hub-detail{height:auto;overflow-y:unset}.card{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{min-width:560px}.btn{min-height:44px}.btn-sm{min-height:36px}.kpi-value{font-size:26px}.kpi-card{padding:16px}.section-title{flex-wrap:wrap;gap:8px}}@media (max-width: 480px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}.kpi-value{font-size:24px}.kpi-card,.card{padding:14px}.form-grid,.form-grid-3{grid-template-columns:1fr}.actions .btn{flex:1 1 auto}}
