/* Dashboard layout, tab bar, save bar. */ /* Split out of admin.css (#533). Loaded from admin.css in a fixed order — later sheets override earlier ones, so the order there is the cascade. */ /* ── Dashboard Layout ──────────────────────────────────────── */ .admin-dashboard { min-height: 100vh; display: flex; flex-direction: column; } .admin-header { position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 1.5rem; background: var(--admin-bg); border-bottom: 1px solid var(--admin-border); backdrop-filter: blur(8px); } .admin-header h1 { font-size: 1rem; font-weight: 600; margin: 0; white-space: nowrap; } .admin-header-left { display: flex; align-items: center; gap: 1.5rem; } .admin-header-right { display: flex; align-items: center; gap: 0.5rem; } .admin-header-divider { width: 1px; height: 20px; background: var(--admin-border); margin: 0 0.25rem; } .admin-tabs { display: flex; gap: 0; } /* Rendered as an — each tab is its own route. */ .admin-tab { background: none; border: none; color: var(--admin-text-muted); padding: 0.5rem 1rem; font-size: 0.85rem; cursor: pointer; border-bottom: 2px solid transparent; transition: all 0.15s; display: inline-block; text-decoration: none; } .admin-tab:hover { color: var(--admin-text-secondary); } .admin-tab.active { color: var(--admin-text); border-bottom-color: var(--admin-text); } .admin-main { flex: 1; /* Extra bottom padding so the floating save bar never covers page content. */ padding: 1.5rem 1.5rem 6rem; max-width: 1120px; margin: 0 auto; width: 100%; } /* ── Save Bar ──────────────────────────────────────────────── */ .save-bar-left { display: flex; align-items: center; gap: 0.75rem; } .unsaved-badge { display: inline-flex; align-items: center; font-size: 0.75rem; color: var(--admin-warning); font-weight: 500; } .save-message { font-size: 0.75rem; font-weight: 500; } .save-message.success { color: var(--admin-success); } .save-message.error { color: var(--admin-error); }