:root{--color-primary:#4338ca;--color-secondary:#d97706;--color-accent:#6366f1;--color-background:#f3f4f6;--color-surface:#fff;--color-surface-muted:#f9fafb;--color-sidebar:#111827;--color-text:#111827;--color-text-muted:#6b7280;--color-border:#e5e7eb;--color-border-strong:#9ca3af;--color-success:#15803d;--color-warning:#d97706;--color-danger:#dc2626;--color-primary-hover:#3730a3;--color-secondary-hover:#b45309;--color-on-primary:#fff;--color-accent-rgb:99,102,241;--color-sidebar-brand:#fff;--color-sidebar-text:#9ca3af;--color-sidebar-text-hover:#fff;--color-sidebar-hover:#1f2937;--color-sidebar-border:#1f2937;--color-sidebar-scrollbar:#374151;--color-sidebar-active:var(--color-primary);--color-sidebar-active-text:#fff;--color-sidebar-logo-bg:#fff;--color-shadow-rgb:17,24,39;--color-backdrop:rgba(17,24,39,.55);--radius-md:0.75rem;--radius-sm:0.5rem;--radius-lg:1.25rem;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(var(--color-shadow-rgb),0.04),0 1px 3px rgba(var(--color-shadow-rgb),0.06);--shadow-md:0 6px 18px rgba(var(--color-shadow-rgb),0.08);--shadow-lg:0 20px 48px rgba(var(--color-shadow-rgb),0.14);--color-primary-soft:rgba(var(--color-primary-rgb),0.1);--color-accent-soft:rgba(var(--color-accent-rgb),0.12);--color-secondary-soft:rgba(var(--color-secondary-rgb),0.12);--gradient-brand:linear-gradient(135deg,var(--color-primary),var(--color-accent));--gradient-hero:linear-gradient(135deg,var(--color-sidebar) 0%,var(--color-primary-hover) 55%,var(--color-primary) 100%);--gradient-warm:linear-gradient(135deg,var(--color-secondary),var(--color-secondary-hover));--color-primary-rgb:67,56,202;--color-secondary-rgb:217,119,6;--color-success-rgb:21,128,61;--color-warning-rgb:217,119,6;--color-danger-rgb:220,38,38;--bs-primary:var(--color-primary);--bs-primary-rgb:var(--color-primary-rgb);--bs-secondary:var(--color-secondary);--bs-secondary-rgb:var(--color-secondary-rgb);--bs-success:var(--color-success);--bs-success-rgb:var(--color-success-rgb);--bs-warning:var(--color-warning);--bs-warning-rgb:var(--color-warning-rgb);--bs-danger:var(--color-danger);--bs-danger-rgb:var(--color-danger-rgb);--bs-body-bg:var(--color-background);--bs-body-color:var(--color-text);--bs-border-color:var(--color-border);--bs-secondary-color:var(--color-text-muted);--bs-link-color:var(--color-primary);--bs-link-hover-color:var(--color-primary-hover)}body{background:var(--color-background);color:var(--color-text)}.text-muted{color:var(--color-text-muted)!important}.app-brand{font-weight:700;letter-spacing:.02em}.bg-sidebar,.navbar.bg-dark{background-color:var(--color-sidebar)!important}.btn-primary{--bs-btn-bg:var(--color-primary);--bs-btn-border-color:var(--color-primary);--bs-btn-hover-bg:var(--color-primary-hover);--bs-btn-hover-border-color:var(--color-primary-hover);--bs-btn-active-bg:var(--color-primary-hover);--bs-btn-active-border-color:var(--color-primary-hover);--bs-btn-disabled-bg:var(--color-primary);--bs-btn-disabled-border-color:var(--color-primary)}.btn-secondary{--bs-btn-bg:var(--color-secondary);--bs-btn-border-color:var(--color-secondary);--bs-btn-hover-bg:var(--color-secondary-hover);--bs-btn-hover-border-color:var(--color-secondary-hover);--bs-btn-active-bg:var(--color-secondary-hover);--bs-btn-active-border-color:var(--color-secondary-hover)}.btn-outline-secondary{--bs-btn-color:var(--color-text-muted);--bs-btn-border-color:var(--color-border);--bs-btn-hover-bg:var(--color-background);--bs-btn-hover-color:var(--color-text);--bs-btn-hover-border-color:var(--color-border)}.form-control:focus,.form-select:focus{border-color:var(--color-accent);box-shadow:0 0 0 .2rem rgba(var(--color-primary-rgb),.2)}.form-check-input{width:1.2em;height:1.2em;margin-top:.15em;border:2px solid var(--color-text-muted);cursor:pointer}.form-check-input:checked{background-color:var(--color-primary);border-color:var(--color-primary)}.form-check-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 .2rem rgba(var(--color-primary-rgb),.2)}.form-check-label{cursor:pointer}.app-shell{min-height:100vh}.app-topbar{position:sticky;top:0;z-index:1030;display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;background-color:var(--color-sidebar)}.app-hamburger,.app-topbar,.app-topbar .app-brand{color:var(--color-sidebar-active-text)}.app-hamburger{display:inline-flex;padding:.25rem;border:0;background:transparent;line-height:0}.app-backdrop{position:fixed;inset:0;z-index:1040;background:var(--color-backdrop)}.app-sidebar{position:fixed;top:0;left:0;bottom:0;z-index:1045;width:240px;display:flex;flex-direction:column;background-color:var(--color-sidebar);border-right:1px solid var(--color-sidebar-border);transform:translateX(-100%);transition:transform .2s ease-in-out}.app-sidebar.open{transform:translateX(0);box-shadow:0 0 40px rgba(var(--color-shadow-rgb),.45)}.app-sidebar-brand{display:flex;align-items:center;gap:.6rem;padding:1.15rem 1.25rem;font-weight:700;font-size:1.15rem;letter-spacing:.02em;color:var(--color-sidebar-brand);text-decoration:none;border-bottom:1px solid var(--color-sidebar-border)}.app-sidebar-brand svg{width:22px;height:22px}.app-sidebar-logo{width:40px;height:40px;padding:4px}.app-brand-logo,.app-sidebar-logo{-o-object-fit:contain;object-fit:contain;border-radius:var(--radius-sm);background:var(--color-sidebar-logo-bg)}.app-brand-logo{width:34px;height:34px;margin-right:.5rem;padding:3px}.app-nav{flex:1 1 auto;min-height:0;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.15rem}.app-nav::-webkit-scrollbar{width:8px}.app-nav::-webkit-scrollbar-thumb{background:var(--color-sidebar-scrollbar);border-radius:8px}.app-nav-link{display:flex;align-items:center;gap:.7rem;padding:.6rem .85rem;border-radius:var(--radius-sm);color:var(--color-sidebar-text);font-weight:500;text-decoration:none;transition:background-color .15s ease,color .15s ease}.app-nav-link svg{width:18px;height:18px;flex:0 0 18px}.app-nav-link:hover{background-color:var(--color-sidebar-hover);color:var(--color-sidebar-text-hover)}.app-nav-link.router-link-exact-active{background-color:var(--color-sidebar-active);color:var(--color-sidebar-active-text)}.app-sidebar-footer{padding:.9rem 1rem;border-top:1px solid var(--color-sidebar-border);color:var(--color-sidebar-text);font-size:.85rem}.app-sidebar-footer .footer-user{color:var(--color-sidebar-text-hover);font-weight:600;text-decoration:none}.app-sidebar-footer a.footer-user:hover{text-decoration:underline}.tenant-switcher{position:relative}.tenant-current{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:.4rem .6rem;background:var(--color-sidebar-hover);color:var(--color-sidebar-text-hover);border:1px solid var(--color-sidebar-border);border-radius:.375rem;font-size:.85rem;font-weight:600;cursor:pointer}.tenant-current:disabled{opacity:.6;cursor:default}.tenant-menu{list-style:none;margin:.25rem 0 0;padding:.25rem;background:var(--color-sidebar-hover);border:1px solid var(--color-sidebar-border);border-radius:.375rem;max-height:40vh;overflow-y:auto}.tenant-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.4rem .55rem;background:transparent;color:var(--color-sidebar-text);border:0;border-radius:.25rem;font-size:.85rem;text-align:left;cursor:pointer}.tenant-option:hover{background:var(--color-sidebar);color:var(--color-sidebar-text-hover)}.tenant-option.active{color:var(--color-sidebar-text-hover);font-weight:600}.app-main{display:flex;flex-direction:column;min-height:100vh}.app-content{flex:1 1 auto;padding:1.5rem}.app-frozen-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.75rem 1.5rem;background:var(--color-danger);color:#fff;font-weight:600}.app-shell--bare .app-content{padding:0}@media (min-width:992px){.app-sidebar{transform:none;box-shadow:none}.app-main{margin-left:240px}.app-shell--bare .app-main{margin-left:0}.app-backdrop,.app-topbar{display:none}}.btn{--bs-btn-border-radius:var(--radius-sm);font-weight:500}.card{--bs-card-bg:var(--color-surface);--bs-card-border-color:var(--color-border);--bs-card-border-radius:var(--radius-md)}.shadow-sm{box-shadow:0 1px 2px rgba(var(--color-shadow-rgb),.04),0 1px 3px rgba(var(--color-shadow-rgb),.06)!important}.form-control,.form-select,textarea.form-control{border-radius:var(--radius-sm);border-color:var(--color-border-strong)}.card-header{border-bottom-color:var(--color-border)}.table>thead th{text-transform:uppercase;font-size:.72rem;letter-spacing:.04em;font-weight:600;color:var(--color-text-muted)}.badge{font-weight:600}