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
+10 -10
View File
@@ -39,7 +39,7 @@ body { font-family: var(--font-text); background: var(--background-secondary); c
position: absolute;
top: -60px; right: -60px;
width: 300px; height: 300px;
border-radius: 50%;
border-radius: var(--radius-full);
background: rgba(255,255,255,0.08);
}
.hero::after {
@@ -47,14 +47,14 @@ body { font-family: var(--font-text); background: var(--background-secondary); c
position: absolute;
bottom: -80px; left: -40px;
width: 250px; height: 250px;
border-radius: 50%;
border-radius: var(--radius-full);
background: rgba(255,255,255,0.06);
}
.hero-logo {
width: 80px; height: 80px;
background: rgba(255,255,255,0.2);
border-radius: 20px;
border-radius: var(--radius-xl);
display: flex; align-items: center; justify-content: center;
font-size: 36px; font-weight: 900;
color: white; margin: 0 auto 24px;
@@ -80,7 +80,7 @@ body { font-family: var(--font-text); background: var(--background-secondary); c
background: rgba(255,255,255,0.18);
backdrop-filter: blur(20px);
border: 1px solid rgba(255,255,255,0.3);
border-radius: 20px; padding: 16px 28px;
border-radius: var(--radius-xl); padding: 16px 28px;
position: relative; z-index: 1;
}
.agg-score {
@@ -130,7 +130,7 @@ body { font-family: var(--font-text); background: var(--background-secondary); c
}
.review-card {
background: var(--background-primary);
border-radius: 20px;
border-radius: var(--radius-xl);
border: 0.5px solid var(--separator);
padding: 24px;
transition: transform 0.2s, box-shadow 0.2s;
@@ -146,7 +146,7 @@ body { font-family: var(--font-text); background: var(--background-secondary); c
}
.reviewer-info { display: flex; align-items: center; gap: 12px; }
.reviewer-avatar {
width: 44px; height: 44px; border-radius: 50%;
width: 44px; height: 44px; border-radius: var(--radius-full);
background: linear-gradient(135deg, var(--ios-orange), var(--ios-yellow));
display: flex; align-items: center; justify-content: center;
font-size: 18px; font-weight: 700; color: white;
@@ -185,7 +185,7 @@ body { font-family: var(--font-text); background: var(--background-secondary); c
/* CTA */
.cta-section {
background: linear-gradient(135deg, #FF6B00, #FF9500);
border-radius: 24px; padding: 40px 32px;
border-radius: var(--radius-xl); padding: 40px 32px;
text-align: center; margin: 0 20px 32px;
max-width: 920px; margin-left: auto; margin-right: auto;
}
@@ -200,7 +200,7 @@ body { font-family: var(--font-text); background: var(--background-secondary); c
display: inline-block;
background: white; color: #FF6B00;
font-size: 17px; font-weight: 700;
padding: 16px 32px; border-radius: 14px;
padding: 16px 32px; border-radius: var(--radius-lg);
text-decoration: none;
transition: transform 0.15s, box-shadow 0.15s;
}
@@ -264,7 +264,7 @@ body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
<div class="agg-rating">
<div class="agg-score" style="font-size:1.25rem;font-weight:700;">Coming soon</div>
<div class="agg-info">
<div class="stars" style="opacity:0;">★★★★★</div>
<div class="stars" style="opacity:0;"></div>
<div class="agg-count">Reviews after launch</div>
</div>
</div>
@@ -283,7 +283,7 @@ body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
<div class="reviews-grid" id="reviewsGrid">
<div class="review-card" style="text-align:center;padding:48px 24px;">
<div style="font-size:3rem;margin-bottom:16px;">📝</div>
<div style="font-size:3rem;margin-bottom:16px;"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M3 13V10L10 3L13 6L6 13H3Z" stroke="#666" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M9 4L12 7" stroke="#666" stroke-width="1.5"/></svg></div>
<h3 style="font-size:1.25rem;font-weight:700;margin-bottom:12px;color:var(--label-primary);">Reviews coming soon</h3>
<p style="color:var(--label-secondary);line-height:1.6;max-width:400px;margin:0 auto;">quiXzoom launches in August 2026. Reviews from Zoomers and mission orderers will be published here once the platform is live.</p>
</div>