/*
 * <ui-app-shell> — unified dashboard shell: sidebar + topbar + content area.
 * Light DOM. Themed via /shared/design/tokens.css.
 */

ui-app-shell {
    display: grid;
    grid-template-columns: var(--ui-shell-sidebar-w, 240px) 1fr;
    grid-template-rows: var(--ui-shell-topbar-h, 56px) 1fr;
    grid-template-areas:
        "sidebar topbar"
        "sidebar content";
    height: 100%;
    min-height: 0;
    background: var(--ui-color-bg-alt, #f8fafc);
    color: var(--ui-color-text, #0f172a);
    font-family: var(--ui-font-system);
}

/* Collapsed state — sidebar shrinks to icon strip */
ui-app-shell[sidebar-collapsed] {
    grid-template-columns: var(--ui-shell-sidebar-collapsed-w, 64px) 1fr;
}

/* ── Sidebar ─────────────────────────────────────────────────────────── */
ui-app-shell > .ui-shell-sidebar {
    grid-area: sidebar;
    background: var(--ui-color-bg, #fff);
    border-right: 1px solid var(--ui-border-color, #e2e8f0);
    display: flex; flex-direction: column;
    overflow: hidden;
    transition: width .2s ease;
}
ui-app-shell .ui-shell-brand {
    flex-shrink: 0;
    padding: var(--ui-spacing-3, 12px) var(--ui-spacing-4, 16px);
    border-bottom: 1px solid var(--ui-border-color, #e2e8f0);
    font-weight: 700;
    font-size: var(--ui-font-size-md, 13px);
    color: var(--ui-color-text, #0f172a);
    display: flex; align-items: center; gap: var(--ui-spacing-2, 8px);
    min-height: var(--ui-shell-topbar-h, 56px);
}
ui-app-shell[sidebar-collapsed] .ui-shell-brand .ui-shell-brand-text { display: none; }

ui-app-shell .ui-shell-nav {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: var(--ui-spacing-2, 8px) 0;
}
ui-app-shell .ui-shell-section {
    padding: var(--ui-spacing-3, 12px) var(--ui-spacing-4, 16px) 4px;
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--ui-color-text-faint, #94a3b8);
}
ui-app-shell[sidebar-collapsed] .ui-shell-section {
    padding-left: 0; padding-right: 0;
    text-align: center; font-size: 8px;
}

ui-app-shell .ui-shell-item {
    display: flex; align-items: center;
    gap: var(--ui-spacing-2, 8px);
    padding: 8px var(--ui-spacing-4, 16px);
    color: var(--ui-color-text, #0f172a);
    text-decoration: none;
    font-size: var(--ui-font-size-sm, 12px);
    cursor: pointer;
    border-left: 3px solid transparent;
    white-space: nowrap;
    overflow: hidden;
}
ui-app-shell .ui-shell-item.sub { padding-left: 32px; font-size: 11px; }
ui-app-shell .ui-shell-item:hover {
    background: var(--ui-color-bg-muted, #f1f5f9);
}
ui-app-shell .ui-shell-item.active {
    color: var(--ui-color-primary, #2563eb);
    background: rgba(37, 99, 235, .06);
    border-left-color: var(--ui-color-primary, #2563eb);
    font-weight: 600;
}
ui-app-shell .ui-shell-item-icon {
    flex-shrink: 0; width: 18px; height: 18px;
    display: inline-flex; align-items: center; justify-content: center;
    color: inherit;
}
ui-app-shell[sidebar-collapsed] .ui-shell-item {
    justify-content: center;
    padding: 8px 0;
    border-left: 0;
}
ui-app-shell[sidebar-collapsed] .ui-shell-item .ui-shell-item-label,
ui-app-shell[sidebar-collapsed] .ui-shell-item .ui-shell-item-badge { display: none; }
ui-app-shell[sidebar-collapsed] .ui-shell-item.active {
    background: rgba(37, 99, 235, .12);
}
ui-app-shell .ui-shell-item-badge {
    margin-left: auto;
    background: var(--ui-color-bg-muted, #f1f5f9);
    border-radius: 999px;
    padding: 0 6px;
    font-size: 10px;
    font-weight: 600;
    color: var(--ui-color-text-muted, #64748b);
    font-variant-numeric: tabular-nums;
}
ui-app-shell .ui-shell-divider {
    height: 1px;
    background: var(--ui-border-color, #e2e8f0);
    margin: 6px var(--ui-spacing-3, 12px);
}

ui-app-shell .ui-shell-sidebar-footer {
    flex-shrink: 0;
    border-top: 1px solid var(--ui-border-color, #e2e8f0);
    padding: var(--ui-spacing-2, 8px);
}

/* ── Topbar ──────────────────────────────────────────────────────────── */
ui-app-shell > .ui-shell-topbar {
    grid-area: topbar;
    background: var(--ui-color-bg, #fff);
    border-bottom: 1px solid var(--ui-border-color, #e2e8f0);
    display: flex; align-items: center;
    padding: 0 var(--ui-spacing-4, 16px);
    gap: var(--ui-spacing-3, 12px);
    min-height: var(--ui-shell-topbar-h, 56px);
}
ui-app-shell .ui-shell-burger {
    background: transparent; border: 0; cursor: pointer;
    padding: 6px;
    color: var(--ui-color-text-muted, #64748b);
    border-radius: var(--ui-radius-sm, 5px);
}
ui-app-shell .ui-shell-burger:hover {
    background: var(--ui-color-bg-muted, #f1f5f9);
    color: var(--ui-color-text, #0f172a);
}
ui-app-shell .ui-shell-title-block {
    min-width: 0;
    flex: 0 1 auto;
}
ui-app-shell .ui-shell-title {
    font-size: var(--ui-font-size-lg, 15px);
    font-weight: 700;
    color: var(--ui-color-text, #0f172a);
    line-height: 1.2;
    margin: 0;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
ui-app-shell .ui-shell-subtitle {
    font-size: var(--ui-font-size-xs, 11px);
    color: var(--ui-color-text-muted, #64748b);
    margin-top: 2px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
ui-app-shell .ui-shell-topbar-actions {
    margin-left: auto;
    display: flex; align-items: center;
    gap: var(--ui-spacing-2, 8px);
    flex-shrink: 0;
}

/* ── Content ────────────────────────────────────────────────────────── */
ui-app-shell > .ui-shell-content {
    grid-area: content;
    overflow: auto;
    padding: var(--ui-spacing-1, 4px);
    min-height: 0;
}
ui-app-shell[content-pad="lg"] > .ui-shell-content { padding: var(--ui-spacing-4, 16px); }
ui-app-shell[content-pad="none"] > .ui-shell-content { padding: 0; }

/* content-scroll="none": область контента не прокручивается сама — она
   передаёт высоту детям (.ui-fill), а прокручиваются компоненты (.ui-scroll). */
ui-app-shell[content-scroll="none"] > .ui-shell-content {
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* ── Mobile (sidebar as overlay drawer) ──────────────────────────────── */
@media (max-width: 768px) {
    ui-app-shell {
        grid-template-columns: 1fr;
        grid-template-areas: "topbar" "content";
    }
    ui-app-shell > .ui-shell-sidebar {
        position: fixed;
        top: 0; left: 0; bottom: 0;
        width: var(--ui-shell-sidebar-w, 240px);
        z-index: var(--ui-z-modal, 1050);
        transform: translateX(-100%);
        transition: transform .2s ease;
        box-shadow: var(--ui-shadow-lg);
    }
    ui-app-shell[mobile-open] > .ui-shell-sidebar {
        transform: translateX(0);
    }
    ui-app-shell[mobile-open]::after {
        content: '';
        position: fixed; inset: 0;
        background: rgba(0,0,0,.4);
        z-index: calc(var(--ui-z-modal, 1050) - 1);
    }
}
