// Bootstrap, compiled from source so the theme in scss/_theme.scss applies. // Order matters: functions provide shade-color() to the theme, the theme sets // its !default values before Bootstrap declares its own, and theme-overrides // patches what 5.3 no longer derives from variables. @import 'bootstrap/scss/functions'; @import 'scss/theme'; @import 'bootstrap/scss/bootstrap'; @import 'scss/theme-overrides'; // bootstrap-icons is imported from +layout.svelte, not here: its @font-face // uses `url(./fonts/…)`, and Vite only rebases that to an emitted asset when // the stylesheet goes through the CSS pipeline rather than the Sass one. :root { --navbar-height: 56px; } html, body { height: 100%; } /* Centered auth surface used by the login and register screens. */ .auth-shell { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 1.5rem; } .auth-card { width: 100%; max-width: 26rem; } .auth-logo { width: 220px; max-width: 70%; height: auto; } /* * Keyboard focus must stay visible over the map, where panels sit on a busy * background and Bootstrap's default ring can wash out. */ :focus-visible { outline: 2px solid var(--bs-primary); outline-offset: 2px; } /* Respect reduced-motion: the wind particles and spinners are the only motion. */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; } }