.app-shell{display:flex;flex-direction:column;min-height:100vh;background:var(--clr-bg)}.topbar{position:sticky;top:0;z-index:var(--z-sticky,20);display:flex;align-items:center;justify-content:space-between;height:var(--nav-topbar-h,56px);padding:0 var(--sp-4,1rem);background:var(--clr-surface,#fff);border-bottom:1px solid var(--clr-border);box-shadow:0 1px 3px #0000000f}.topbar-start,.topbar-end,.brand{display:flex;align-items:center;gap:var(--sp-2,.5rem)}.brand-dot{width:8px;height:8px;border-radius:50%;background:var(--clr-brand)}.brand-name{font-size:var(--text-base,1rem);font-weight:var(--font-bold,700);color:var(--clr-text-primary);letter-spacing:-.02em}.brand-name span{color:var(--clr-brand)}.topbar-module-badge{display:flex;align-items:center;gap:var(--sp-2,.5rem);padding:var(--sp-1,.25rem) var(--sp-3,.75rem);background:var(--clr-brand-light,#EFF6FF);color:var(--clr-brand);border-radius:var(--r-full,9999px);font-size:var(--text-sm,.875rem);font-weight:var(--font-semibold,600)}.icon-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:transparent;border-radius:var(--r-md,.5rem);color:var(--clr-text-secondary);cursor:pointer;transition:background var(--transition),color var(--transition);flex-shrink:0}.icon-btn:hover{background:var(--clr-surface-raised,#F1F5F9);color:var(--clr-text-primary)}.user-avatar{width:32px;height:32px;border-radius:50%;background:var(--clr-brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--text-xs,.75rem);font-weight:var(--font-bold,700);cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0}.app-body{display:flex;flex:1;flex-direction:row-reverse;overflow:hidden;height:calc(100vh - var(--nav-topbar-h,56px));position:relative}.sidenav{display:flex;flex-direction:column;background:var(--clr-surface,#fff);border-inline-start:1px solid var(--clr-border);transition:width var(--transition);overflow:hidden;flex-shrink:0;height:100%;z-index:10}.sidenav.open{width:var(--nav-side-w-open,220px)}.sidenav.closed{width:var(--nav-side-w-closed,64px)}.sidenav-header{padding:var(--sp-4,1rem) var(--sp-3,.75rem) var(--sp-2,.5rem);border-bottom:1px solid var(--clr-border);font-size:var(--text-xs,.75rem);font-weight:var(--font-semibold,600);color:var(--clr-text-muted);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;overflow:hidden;transition:opacity var(--transition)}.sidenav.closed .sidenav-header{opacity:0}.sidenav-list{list-style:none;padding:var(--sp-3,.75rem) 0;margin:0;flex:1;overflow-y:auto;overflow-x:hidden}.sidenav-item{display:flex;align-items:center;gap:var(--sp-3,.75rem);padding:.6rem var(--sp-4,1rem);margin:2px var(--sp-2,.5rem);border-radius:var(--r-md,.5rem);color:var(--clr-text-secondary);text-decoration:none;font-size:var(--text-sm,.875rem);font-weight:var(--font-medium,500);transition:background var(--transition),color var(--transition);white-space:nowrap;cursor:pointer;border:none;background:none;width:calc(100% - var(--sp-4,1rem));text-align:inherit}.sidenav.closed .sidenav-item{justify-content:center;padding:.75rem}.sidenav-item:hover{background:var(--clr-surface-raised,#F1F5F9);color:var(--clr-text-primary);text-decoration:none}.sidenav-item.active{background:var(--clr-brand-light,#EFF6FF);color:var(--clr-brand);font-weight:var(--font-semibold,600)}.sidenav-icon{flex-shrink:0;display:flex;align-items:center}.sidenav-label{overflow:hidden;text-overflow:ellipsis}.app-main{flex:1;overflow-y:auto;padding:var(--sp-8,2rem);min-width:0}.sidenav-footer{padding:var(--sp-3,.75rem);border-top:1px solid var(--clr-border)}.nav-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;top:var(--nav-topbar-h,56px);background:#0f172a66;z-index:40;cursor:pointer}.nav-overlay.visible{display:block}@media (max-width:640px){.sidenav{width:0;transition:width var(--transition)}.sidenav.open{position:fixed;right:0;top:var(--nav-topbar-h,56px);bottom:0;width:var(--nav-side-w-open,220px)!important;z-index:50;background:#fff;box-shadow:-4px 0 24px #00000026}.sidenav.closed{width:0!important}.app-main{padding:var(--sp-4,1rem)}}
