:root{--sidebar-width: 260px;--sidebar-rail-width: 60px;--right-panel-width: 320px;--toolbar-height: 48px;--statusbar-height: 28px}.app-shell{display:grid;height:100vh;height:100dvh;grid-template-rows:var(--toolbar-height, 48px) 1fr var(--statusbar-height, 28px);grid-template-columns:var(--current-sidebar-width, 260px) 1fr;grid-template-areas:"toolbar   toolbar" "sidebar   workspace" "statusbar statusbar";overflow:hidden;background:var(--color-bg);color:var(--color-text)}.app-shell--collapsed{grid-template-columns:var(--sidebar-rail-width, 60px) 1fr}.app-shell__toolbar{grid-area:toolbar;z-index:var(--z-toolbar, 100);background:var(--color-bg-toolbar, var(--color-surface));border-bottom:1px solid var(--color-border);display:flex;align-items:center}.app-shell__sidebar{grid-area:sidebar;background:var(--color-sidebar-bg);border-right:1px solid var(--color-sidebar-border, var(--color-border));overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column}.app-shell__workspace{grid-area:workspace;overflow-y:auto;overflow-x:hidden;min-height:0;min-width:0}.app-shell__statusbar{grid-area:statusbar;z-index:var(--z-statusbar, 90);background:var(--color-bg-statusbar, var(--color-surface));border-top:1px solid var(--color-border);display:flex;align-items:center;font-size:.75rem;padding:0 var(--space-3, 12px)}.workspace-layout{display:flex;height:100%;min-height:0}.workspace-layout__content{flex:1 1 auto;overflow-y:auto;min-width:0}.workspace-layout__panel{flex:0 0 auto;width:var(--panel-width, 400px);border-left:1px solid var(--color-border);overflow-y:auto;background:var(--color-surface)}@media(max-width:768px){.workspace-layout__panel{position:fixed;right:0;top:0;bottom:0;z-index:var(--z-modal, 1000);box-shadow:var(--shadow-lg)}}.page-header{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--space-4, 16px) var(--space-5, 20px);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;flex-wrap:wrap;gap:var(--space-3, 12px)}.page-header__text{display:flex;flex-direction:column;gap:var(--space-1, 4px);min-width:0;flex:1 1 auto}.page-header__breadcrumbs{display:flex;align-items:center;gap:var(--space-1, 4px);font-size:.75rem;color:var(--color-muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-header__breadcrumb-link{color:var(--color-muted);text-decoration:none}.page-header__breadcrumb-link:hover{color:var(--color-text);text-decoration:underline}.page-header__breadcrumb-separator{color:var(--color-disabled)}.page-header__title{font-size:1.25rem;font-weight:600;color:var(--color-text);margin:0;line-height:1.3;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-header__subtitle{font-size:.875rem;color:var(--color-text-secondary);margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-header__actions{display:flex;align-items:center;gap:var(--space-2, 8px);flex-shrink:0}.sidebar{display:flex;flex-direction:column;height:100%;width:100%;background:var(--color-sidebar-bg);color:var(--color-sidebar-text);transition:width var(--transition-normal, .2s) ease}.sidebar__brand{padding:var(--space-3, 12px);border-bottom:1px solid var(--color-sidebar-border, var(--color-border));flex-shrink:0}.sidebar__nav{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:var(--space-2, 8px) 0}.sidebar__footer{border-top:1px solid var(--color-sidebar-border, var(--color-border));padding:var(--space-3, 12px);flex-shrink:0}.sidebar__section-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2, 8px) var(--space-3, 12px);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);cursor:pointer;border:none;background:none;width:100%;-webkit-user-select:none;user-select:none}.sidebar__section-header:hover{color:var(--color-sidebar-text)}.sidebar__section-chevron{transition:transform var(--transition-fast, .15s) ease}.sidebar__section-chevron--collapsed{transform:rotate(-90deg)}.sidebar__section-list,.sidebar__section-list-item{list-style:none;margin:0;padding:0}.sidebar__nav-item{display:flex;align-items:center;gap:var(--space-2, 8px);padding:var(--space-2, 8px) var(--space-3, 12px);color:var(--color-sidebar-text);text-decoration:none;font-size:.875rem;border-radius:var(--radius-md, 6px);margin:0 var(--space-2, 8px);transition:background var(--transition-fast, .15s) ease}.sidebar__nav-item:hover{background:var(--color-sidebar-hover)}.sidebar__nav-item--active{background:var(--color-sidebar-active);color:var(--color-primary);font-weight:500}.sidebar__nav-item-icon{flex-shrink:0;width:20px;height:20px}.sidebar__nav-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar__nav-item-badge{margin-left:auto;background:var(--color-primary);color:var(--color-primary-contrast, #fff);font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:var(--radius-full, 9999px);min-width:18px;text-align:center}.sidebar--rail .sidebar__brand,.sidebar--rail .sidebar__nav-item-label,.sidebar--rail .sidebar__nav-item-badge,.sidebar--rail .sidebar__section-header,.sidebar--rail .sidebar__footer{display:none}.sidebar--rail .sidebar__nav-item{justify-content:center;padding:var(--space-2, 8px);margin:var(--space-1, 4px) var(--space-2, 8px)}.sidebar__toggle{display:flex;align-items:center;justify-content:center;width:100%;padding:var(--space-2, 8px);border:none;background:none;color:var(--color-muted);cursor:pointer}.sidebar__toggle:hover{color:var(--color-sidebar-text)}.drawer-shell__overlay{position:fixed;inset:0;z-index:var(--z-modal, 1000);background:#0006}.drawer-shell{position:fixed;top:0;right:0;bottom:0;width:var(--drawer-width, 400px);max-width:100vw;background:var(--color-surface, #fff);display:flex;flex-direction:column;box-shadow:var(--shadow-lg, -4px 0 24px rgba(0, 0, 0, .15))}.drawer-shell__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4, 16px) var(--space-5, 20px);border-bottom:1px solid var(--color-border);flex-shrink:0}.drawer-shell__title{font-size:1.125rem;font-weight:600;color:var(--color-text);margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-shell__close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:none;color:var(--color-muted);cursor:pointer;border-radius:var(--radius-md, 6px);flex-shrink:0}.drawer-shell__close:hover{color:var(--color-text);background:var(--color-surface-raised, rgba(0, 0, 0, .05))}.drawer-shell__body{flex:1 1 auto;overflow-y:auto;padding:var(--space-4, 16px) var(--space-5, 20px)}.confirm-dialog__backdrop{position:fixed;inset:0;z-index:var(--z-modal, 1000);background:#0006;display:flex;align-items:center;justify-content:center}.confirm-dialog{background:var(--color-surface, #fff);border-radius:var(--radius-lg, 8px);box-shadow:var(--shadow-lg, 0 8px 32px rgba(0, 0, 0, .2));padding:var(--space-5, 20px);max-width:420px;width:90vw}.confirm-dialog__title{font-size:1.125rem;font-weight:600;color:var(--color-text);margin:0 0 var(--space-2, 8px) 0}.confirm-dialog__message{font-size:.875rem;color:var(--color-text-secondary);margin:0 0 var(--space-5, 20px) 0;line-height:1.5}.confirm-dialog__actions{display:flex;justify-content:flex-end;gap:var(--space-2, 8px)}.confirm-dialog__cancel{padding:var(--space-2, 8px) var(--space-4, 16px);border:1px solid var(--color-border);border-radius:var(--radius-md, 6px);background:var(--color-surface);color:var(--color-text);cursor:pointer;font-size:.875rem}.confirm-dialog__cancel:hover{background:var(--color-surface-raised, rgba(0, 0, 0, .05))}.confirm-dialog__confirm{padding:var(--space-2, 8px) var(--space-4, 16px);border:none;border-radius:var(--radius-md, 6px);background:var(--color-primary);color:var(--color-primary-contrast, #fff);cursor:pointer;font-size:.875rem;font-weight:500}.confirm-dialog__confirm:hover{opacity:.9}.confirm-dialog__confirm--danger{background:var(--color-error, #dc2626)}.confirm-dialog__confirm--warning{background:var(--color-warning, #f59e0b)}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8, 32px);gap:var(--space-3, 12px);color:var(--color-text-secondary)}.loading-state__spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:ui-shell-spin .8s linear infinite}.loading-state__spinner--sm{width:20px;height:20px}.loading-state__spinner--md{width:32px;height:32px}.loading-state__spinner--lg{width:48px;height:48px}@keyframes ui-shell-spin{to{transform:rotate(360deg)}}.loading-state__message{font-size:.875rem;margin:0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-10, 40px) var(--space-5, 20px);gap:var(--space-3, 12px);text-align:center;color:var(--color-text-secondary)}.empty-state__icon{color:var(--color-muted)}.empty-state__title{font-size:1rem;font-weight:600;color:var(--color-text);margin:0}.empty-state__description{font-size:.875rem;max-width:320px;margin:0}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8, 32px);gap:var(--space-3, 12px);text-align:center}.error-state__title{font-size:1rem;font-weight:600;color:var(--color-error);margin:0}.error-state__message{font-size:.875rem;color:var(--color-text-secondary);margin:0}.error-state__retry{padding:var(--space-2, 8px) var(--space-4, 16px);border:1px solid var(--color-border);border-radius:var(--radius-md, 6px);background:var(--color-surface);color:var(--color-text);cursor:pointer;font-size:.875rem}.error-state__retry:hover{background:var(--color-surface-raised)}.access-denied{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-10, 40px);gap:var(--space-3, 12px);text-align:center}.access-denied__title{font-size:1.125rem;font-weight:600;color:var(--color-error);margin:0}.access-denied__message{font-size:.875rem;color:var(--color-text-secondary);margin:0}
