/* This file contains global base styles and resets --> ensures consistent spacing, font usage, and box sizing across all elements in the application */ /* Reset default browser styles */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: system-ui, sans-serif; } /* Global body styling */ body { background: var(--bg); color: var(--text); } .skip-link { position: fixed; top: 12px; left: 12px; z-index: 1000; transform: translateY(-160%); padding: 10px 14px; border-radius: 8px; background: #111827; color: #ffffff; font-weight: 700; text-decoration: none; transition: transform 0.2s ease; } .skip-link + .skip-link { top: 58px; } .skip-link:focus { transform: translateY(0); } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible { outline: 3px solid #2563eb; outline-offset: 3px; outline-style: solid !important; outline-width: 3px !important; } button:disabled, [aria-disabled="true"] { cursor: not-allowed; } /* Form errors */ .form-error { color: red; font-size: 0.875rem; margin-top: 0.25rem; } .form-error ul { list-style: none; padding-left: 0; list-style: "*"; } .form-error li { margin-bottom: 0.25rem; } .form-error li .error { color: red; font-style: italic; } /* ── Layout ──────────────────────────────────────────────────────────── */ .layout { display: flex; min-height: 100vh; width: 100%; background: var(--bg); } #sidebar-container { flex-shrink: 0; display: flex; position: sticky; top: 0; height: 100vh; align-self: flex-start; overflow-y: auto; } @media (max-width: 700px) { .layout { padding-bottom: 74px; } #sidebar-container { position: fixed; top: auto; right: 0; bottom: 0; left: 0; z-index: 100; width: 100%; height: auto; overflow: visible; border-top: 1px solid #e2e8f0; } } /* Main content area - flex child that fills remaining space */ .page-body { flex: 1; display: flex; flex-direction: column; min-width: 0; margin: 0; padding: 0; } /* ── Reusable empty / error state components ─────────────────────────── */ .state-empty, .state-error { display: none; text-align: center; padding: 60px 20px; } .state-empty { color: #64748b; } .state-error { color: #ef4444; } .state-icon { font-size: 3rem; display: block; margin-bottom: 16px; } .state-title { margin-bottom: 8px; }