feat: Passwordless cross-device authentication

- Arkitektur: docs/auth/passwordless-architecture.md
- Backend: iom/quixzoom-auth-service/ (FastAPI + Redis)
- Webb: quixzoom-market-pages/se/login/ (QR-kod + polling)
- App: iom/quixzoom-app/src/features/auth/ (push + deep links)

Flöde: QR-kod → app-godkännande → webb-inloggad
This commit is contained in:
Bernt
2026-07-07 07:11:50 +00:00
parent 4aa984ad74
commit 6989a98d75
61843 changed files with 5491611 additions and 872231 deletions
+4 -4
View File
@@ -97,11 +97,11 @@
.status-badge {
display: inline-flex; align-items: center; gap: 8px;
background: rgba(0,200,83,0.1); border: 1px solid rgba(0,200,83,0.25);
border-radius: 8px; padding: 8px 14px;
border-radius: var(--radius-md); padding: 8px 14px;
font-size: 13px; font-weight: 700; color: #00b84a;
margin-bottom: 24px;
}
.status-dot { width: 8px; height: 8px; border-radius: 50%; background: #00C853; flex-shrink: 0; }
.status-dot { width: 8px; height: 8px; border-radius: var(--radius-full); background: #00C853; flex-shrink: 0; }
/* LIMITATION CARDS */
.limitation-card {
@@ -121,7 +121,7 @@
border-radius: var(--radius-lg); padding: 36px 40px;
display: flex; gap: 28px; align-items: flex-start;
}
.contact-icon { flex-shrink: 0; width: 48px; height: 48px; border-radius: 50%; background: var(--blue-glow); border: 1px solid rgba(0,102,255,0.2); display: flex; align-items: center; justify-content: center; }
.contact-icon { flex-shrink: 0; width: 48px; height: 48px; border-radius: var(--radius-full); background: var(--blue-glow); border: 1px solid rgba(0,102,255,0.2); display: flex; align-items: center; justify-content: center; }
.contact-icon svg { color: var(--blue); }
.contact-card h3 { font-size: 18px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; letter-spacing: -0.2px; }
.contact-card p { font-size: 15px; color: var(--text-dim); line-height: 1.65; }
@@ -136,7 +136,7 @@
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
.footer-links a:hover { color: #1d1d1f; }
.footer-social { width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 8px; display: flex; align-items: center; justify-content: center; transition: border-color 0.2s, background 0.2s; }
.footer-social { width: 32px; height: 32px; border: 1px solid var(--border); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; transition: border-color 0.2s, background 0.2s; }
.footer-social:hover { border-color: rgba(0,0,0,0.25); background: rgba(0,0,0,0.04); }
@media (max-width: 900px) { nav { padding: 0 16px; } .nav-links { display: none; } }