6989a98d75
- 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
152 lines
4.2 KiB
CSS
152 lines
4.2 KiB
CSS
/* Landvex Design Tokens v1.0 */
|
|
/* Standardized spacing, colors, typography, and border-radius */
|
|
|
|
:root {
|
|
/* === COLORS === */
|
|
/* Primary Brand */
|
|
--color-primary: #0066FF;
|
|
--color-primary-dark: #0052CC;
|
|
--color-primary-light: #3385FF;
|
|
|
|
/* Secondary (quiXzoom accent) */
|
|
--color-accent: #FF3366;
|
|
--color-accent-dark: #E62E5C;
|
|
|
|
/* Neutral */
|
|
--color-black: #0A0A0A;
|
|
--color-dark: #1A1A1A;
|
|
--color-gray-900: #1D1D1F;
|
|
--color-gray-800: #2D2D2F;
|
|
--color-gray-700: #4A4A4A;
|
|
--color-gray-600: #6E6E73;
|
|
--color-gray-500: #8E8E93;
|
|
--color-gray-400: #A1A1A6;
|
|
--color-gray-300: #C7C7CC;
|
|
--color-gray-200: #D1D1D6;
|
|
--color-gray-100: #E5E5EA;
|
|
--color-gray-50: #F2F2F7;
|
|
--color-white: #FFFFFF;
|
|
|
|
/* Semantic */
|
|
--color-success: #22C55E;
|
|
--color-warning: #F59E0B;
|
|
--color-error: #EF4444;
|
|
--color-info: #3B82F6;
|
|
|
|
/* === SPACING === */
|
|
/* Base unit: 4px */
|
|
--space-0: 0;
|
|
--space-1: 4px;
|
|
--space-2: 8px;
|
|
--space-3: 12px;
|
|
--space-4: 16px;
|
|
--space-5: 20px;
|
|
--space-6: 24px;
|
|
--space-8: 32px;
|
|
--space-10: 40px;
|
|
--space-12: 48px;
|
|
--space-16: 64px;
|
|
--space-20: 80px;
|
|
--space-24: 96px;
|
|
|
|
/* === BORDER RADIUS === */
|
|
--radius-none: 0;
|
|
--radius-sm: 6px; /* Buttons, tags, small elements */
|
|
--radius-md: 10px; /* Cards, inputs, modals */
|
|
--radius-lg: 16px; /* Large cards, hero sections */
|
|
--radius-xl: 24px; /* Feature cards, containers */
|
|
--radius-full: 9999px; /* Pills, avatars, badges */
|
|
|
|
/* === TYPOGRAPHY === */
|
|
/* Font families */
|
|
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', 'Helvetica Neue', sans-serif;
|
|
--font-mono: 'SF Mono', 'Fira Code', 'Consolas', monospace;
|
|
|
|
/* Font sizes (rem-based) */
|
|
--text-xs: 0.75rem; /* 12px */
|
|
--text-sm: 0.875rem; /* 14px */
|
|
--text-base: 1rem; /* 16px */
|
|
--text-lg: 1.125rem; /* 18px */
|
|
--text-xl: 1.25rem; /* 20px */
|
|
--text-2xl: 1.5rem; /* 24px */
|
|
--text-3xl: 1.875rem; /* 30px */
|
|
--text-4xl: 2.25rem; /* 36px */
|
|
--text-5xl: 3rem; /* 48px */
|
|
|
|
/* Font weights */
|
|
--font-normal: 400;
|
|
--font-medium: 500;
|
|
--font-semibold: 600;
|
|
--font-bold: 700;
|
|
--font-extrabold: 800;
|
|
|
|
/* Line heights */
|
|
--leading-none: 1;
|
|
--leading-tight: 1.25;
|
|
--leading-snug: 1.375;
|
|
--leading-normal: 1.5;
|
|
--leading-relaxed: 1.625;
|
|
--leading-loose: 2;
|
|
|
|
/* === SHADOWS === */
|
|
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
--shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
|
|
--shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.15);
|
|
--shadow-glow: 0 0 20px rgba(0, 102, 255, 0.3);
|
|
|
|
/* === TRANSITIONS === */
|
|
--transition-fast: 150ms ease;
|
|
--transition-base: 200ms ease;
|
|
--transition-slow: 300ms ease;
|
|
|
|
/* === Z-INDEX === */
|
|
--z-dropdown: 100;
|
|
--z-sticky: 200;
|
|
--z-modal: 300;
|
|
--z-popover: 400;
|
|
--z-tooltip: 500;
|
|
}
|
|
|
|
/* === UTILITY CLASSES === */
|
|
/* Use these instead of inline styles */
|
|
|
|
/* Border radius utilities */
|
|
.rounded-none { border-radius: var(--radius-none); }
|
|
.rounded-sm { border-radius: var(--radius-sm); }
|
|
.rounded-md { border-radius: var(--radius-md); }
|
|
.rounded-lg { border-radius: var(--radius-lg); }
|
|
.rounded-xl { border-radius: var(--radius-xl); }
|
|
.rounded-full { border-radius: var(--radius-full); }
|
|
|
|
/* Spacing utilities (examples) */
|
|
.p-1 { padding: var(--space-1); }
|
|
.p-2 { padding: var(--space-2); }
|
|
.p-4 { padding: var(--space-4); }
|
|
.p-6 { padding: var(--space-6); }
|
|
.p-8 { padding: var(--space-8); }
|
|
|
|
.m-1 { margin: var(--space-1); }
|
|
.m-2 { margin: var(--space-2); }
|
|
.m-4 { margin: var(--space-4); }
|
|
|
|
/* Text utilities */
|
|
.text-xs { font-size: var(--text-xs); }
|
|
.text-sm { font-size: var(--text-sm); }
|
|
.text-base { font-size: var(--text-base); }
|
|
.text-lg { font-size: var(--text-lg); }
|
|
.text-xl { font-size: var(--text-xl); }
|
|
|
|
.font-medium { font-weight: var(--font-medium); }
|
|
.font-semibold { font-weight: var(--font-semibold); }
|
|
.font-bold { font-weight: var(--font-bold); }
|
|
|
|
/* Color utilities */
|
|
.text-primary { color: var(--color-primary); }
|
|
.text-secondary { color: var(--color-gray-600); }
|
|
.text-muted { color: var(--color-gray-500); }
|
|
|
|
.bg-primary { background-color: var(--color-primary); }
|
|
.bg-dark { background-color: var(--color-dark); }
|
|
.bg-light { background-color: var(--color-gray-50); }
|