/** * Modul: Login-Seite * Zweck: Styles für die Anmeldeseite * Abhängigkeiten: tokens.css, reset.css, layout.css */ .login-page { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100dvh; width: 100vw; padding: var(--space-4); background-color: var(--color-bg); } /* Hero-Bereich über dem Login-Formular */ .login-hero { text-align: center; margin-bottom: var(--space-8); } .login-hero__title { font-size: clamp(2rem, 5vw, 3rem); font-weight: var(--font-weight-bold); color: var(--color-accent); letter-spacing: -0.02em; margin-bottom: var(--space-2); } .login-hero__tagline { font-size: var(--text-base); color: var(--color-text-secondary); max-width: 360px; line-height: var(--line-height-relaxed, 1.6); } /* Login-Karte */ .login-card { width: 100%; max-width: 380px; } .login-form__submit { width: 100%; margin-top: var(--space-2); display: flex; align-items: center; justify-content: center; gap: var(--space-2); } .login-error { padding: var(--space-3) var(--space-4); background-color: var(--color-danger-light); color: var(--color-danger); border-radius: var(--radius-sm); font-size: var(--text-sm); margin-bottom: var(--space-4); } .login-version { margin-top: var(--space-4); font-size: var(--text-xs); color: var(--color-text-tertiary, var(--color-text-secondary)); text-align: center; opacity: 0.6; } /* Feld-Fehler-Zustand */ .form-group--error .input { border-color: var(--color-danger); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-danger) 20%, transparent); } .form-group--error .label { color: var(--color-danger); } .login-spinner { width: 16px; height: 16px; border: 2px solid color-mix(in srgb, currentColor 30%, transparent); border-top-color: currentColor; border-radius: 50%; animation: login-spin 0.7s linear infinite; flex-shrink: 0; } @keyframes login-spin { to { transform: rotate(360deg); } } @media (prefers-reduced-motion: reduce) { .login-spinner { animation: none; opacity: 0.6; } }