.login-container{max-width:400px;margin:2rem auto;padding:2rem;background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1);text-align:center}.login-container h2{margin-bottom:1.5rem;font-size:1.8rem;color:#333}.login-container .success{color:#28a745;background:#e6f4ea}.login-container .error,.login-container .success{padding:.75rem;border-radius:4px;margin-bottom:1rem}.login-container .error{color:#dc3545;background:#f8d7da}.login-container .form{display:flex;flex-direction:column;gap:1rem}.login-container .form .form-group{text-align:left}.login-container .form .form-group label{display:block;margin-bottom:.5rem;font-size:.9rem;color:#555}.login-container .form .form-group input{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .2s}.login-container .form .form-group input:focus{outline:none;border-color:#007bff}.login-container .form .form-group input:disabled{background:#f5f5f5;cursor:not-allowed}.login-container .form .form-group input[aria-invalid=true]{border-color:#dc3545}.login-container .form button{padding:.75rem;background:#007bff;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background .2s}.login-container .form button:hover:not(:disabled){background:#0056b3}.login-container .form button:disabled{background:#6c757d;cursor:not-allowed}.login-container .form button .processing{display:flex;align-items:center;justify-content:center;gap:.5rem}.login-container .form button .processing .spinner{width:20px;height:20px;animation:spin 1s linear infinite}.login-container .form button .processing .spinner circle{stroke-dasharray:90,150;stroke-dashoffset:-35;animation:dash 1.5s ease-in-out infinite}.login-container .skeleton{background:#f0f0f0;border-radius:4px;animation:pulse 1.5s ease-in-out infinite}.login-container .skeleton-title{width:60%;height:2rem;margin:0 auto 1.5rem}.login-container .skeleton-input{width:100%;height:2.5rem;margin-bottom:1rem}.login-container .skeleton-button{width:100%;height:2.5rem}@keyframes spin{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes pulse{0%{background:#f0f0f0}50%{background:#e0e0e0}to{background:#f0f0f0}}