:host { display: block; min-height: 100dvh; background: linear-gradient(135deg, rgba(20, 105, 84, 0.12), transparent 36%), linear-gradient(315deg, rgba(123, 92, 40, 0.12), transparent 34%), var(--mat-sys-surface); } .app-toolbar { position: sticky; top: 0; z-index: 10; height: 56px; min-height: 56px; padding-inline: 0.75rem; border-bottom: 1px solid var(--mat-sys-outline-variant); background: color-mix(in srgb, var(--mat-sys-surface) 92%, transparent); color: var(--mat-sys-on-surface); backdrop-filter: blur(14px); } .brand { display: inline-flex; align-items: center; gap: 0.5rem; color: inherit; font-weight: 600; min-width: 0; text-decoration: none; } .brand mat-icon { color: var(--mat-sys-primary); } .menu-button { flex: 0 0 auto; margin-right: 0.125rem; } .spacer { flex: 1 1 auto; } .toolbar-user { overflow: hidden; max-width: 42vw; color: var(--mat-sys-on-surface-variant); font-size: 0.8125rem; text-overflow: ellipsis; white-space: nowrap; } .app-toolbar a[mat-button], .app-toolbar a[mat-flat-button] { margin-left: 0.25rem; } .active-link { color: var(--mat-sys-primary); } .shell { min-height: calc(100dvh - 56px); background: transparent; } .sidebar { width: min(82vw, 280px); border-right: 1px solid var(--mat-sys-outline-variant); background: color-mix(in srgb, var(--mat-sys-surface-container-low) 96%, white); } .sidebar nav { padding: 0.75rem; } .sidebar a[mat-list-item] { margin-bottom: 0.25rem; border-radius: 8px; } .active-nav-link { background: color-mix(in srgb, var(--mat-sys-primary) 12%, transparent); color: var(--mat-sys-primary); } .shell-content { min-height: calc(100dvh - 56px); } .app-main { min-height: calc(100dvh - 56px); } .shell .app-main { padding-bottom: calc(76px + env(safe-area-inset-bottom)); } .auth-main { display: block; } .bottom-nav { position: fixed; right: 0; bottom: 0; left: 0; z-index: 20; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.25rem; padding: 0.35rem 0.5rem calc(0.35rem + env(safe-area-inset-bottom)); border-top: 1px solid var(--mat-sys-outline-variant); background: color-mix(in srgb, var(--mat-sys-surface) 96%, transparent); backdrop-filter: blur(14px); } .bottom-nav-link { display: grid; justify-items: center; gap: 0.125rem; min-width: 0; min-height: 56px; padding: 0.35rem 0.25rem; border-radius: 8px; color: var(--mat-sys-on-surface-variant); font-size: 0.75rem; line-height: 1; text-decoration: none; } .bottom-nav-link mat-icon { width: 24px; height: 24px; font-size: 24px; } .bottom-nav-link span { overflow: hidden; max-width: 100%; text-overflow: ellipsis; white-space: nowrap; } .active-bottom-link { background: color-mix(in srgb, var(--mat-sys-primary) 12%, transparent); color: var(--mat-sys-primary); } @media (max-width: 420px) { .app-toolbar a[mat-button], .app-toolbar a[mat-flat-button] { min-width: 0; padding-inline: 0.5rem; } .app-toolbar a[mat-flat-button] mat-icon, .app-toolbar a[mat-button] mat-icon { display: none; } } @media (min-width: 801px) { .app-toolbar { height: 64px; min-height: 64px; padding-inline: 1rem; } .menu-button { display: none; } .toolbar-user { max-width: min(40vw, 360px); font-size: 0.9rem; } .shell, .shell-content, .app-main { min-height: calc(100dvh - 64px); } .shell .app-main { padding-bottom: 0; } .sidebar { width: 248px; } .bottom-nav { display: none; } }