/** * CABINET Display - Base Design Tokens & Shared Components * Shared across all CABINET display projects (offers, info-tablet, etc.) * * Import this file in project-specific stylesheets: * @import '../shared/cabinet-base.css'; */ :root { /* Colors */ --bg: #ffffff; --fg: #1a1a1a; --fg-strong: #000000; --muted: #737373; --muted-light: #999999; --line: #e8e8e8; --card: #f5f5f5; --accent: #009FE3; /* Cabinet Blau */ /* Spacing */ --safe-area: 64px; --radius: 24px; --radius-sm: 16px; /* Typography Scale (modular) */ --text-xs: 16px; --text-sm: 18px; --text-base: 20px; --text-lg: 24px; --text-xl: 28px; --text-2xl: 32px; --text-3xl: 38px; --text-4xl: 54px; --text-5xl: 64px; --text-6xl: 84px; /* Font */ --font-main: 'IBM Plex Sans', ui-sans-serif, system-ui, -apple-system, sans-serif; /* Dimensions (default for 9:16 displays, override in project CSS) */ --max-width: 1080px; --max-height: 1920px; } /* ======================================== RESET ======================================== */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html, body { height: 100%; width: 100%; overflow: hidden; } body { font-family: var(--font-main); background: #0a0a0a; color: var(--fg); display: flex; align-items: center; justify-content: center; /* Text Rendering */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } /* ======================================== HEADER ======================================== */ .header { display: flex; align-items: flex-end; justify-content: space-between; padding-bottom: 24px; border-bottom: 1px solid var(--line); min-height: 100px; } .brand { display: flex; align-items: center; gap: 14px; } .brand-logo { height: 82px; width: auto; } .brand-text { font-size: var(--text-xl); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--fg-strong); } .tagline { font-size: var(--text-lg); color: var(--muted); text-align: right; line-height: 1.4; font-weight: 400; letter-spacing: 0.01em; } /* ======================================== QR BOX ======================================== */ .qr-box { display: flex; flex-direction: column; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; gap: 12px; } .qr-header { text-align: center; } .qr-title { font-size: var(--text-lg); font-weight: 600; color: var(--fg-strong); margin-bottom: 6px; letter-spacing: -0.01em; } .qr-subtitle { font-size: var(--text-sm); color: var(--muted); font-weight: 400; } .qr-code-wrapper { flex: 1; display: flex; align-items: center; justify-content: center; background: #ffffff; border-radius: var(--radius-sm); border: 1px dashed #ddd; padding: 16px; min-height: 180px; } .qr-code-wrapper img { width: 100%; max-width: 180px; height: auto; aspect-ratio: 1; } .qr-placeholder { width: 140px; height: 140px; background: repeating-linear-gradient( 0deg, #e0e0e0, #e0e0e0 12px, transparent 12px, transparent 16px ), repeating-linear-gradient( 90deg, #e0e0e0, #e0e0e0 12px, transparent 12px, transparent 16px ); opacity: 0.5; border-radius: 8px; } .qr-contact { font-size: var(--text-sm); color: var(--muted); text-align: center; line-height: 1.5; font-weight: 400; } /* ======================================== SHARED TEXT STYLES ======================================== */ .eyebrow { font-size: var(--text-sm); color: var(--muted); letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 14px; font-weight: 500; } .disclaimer { font-size: var(--text-xs); color: var(--muted-light); margin-top: 12px; font-weight: 400; letter-spacing: 0.01em; } /* ======================================== UTILITY CLASSES ======================================== */ .text-accent { color: var(--accent); } .text-muted { color: var(--muted); } .font-bold { font-weight: 700; } .font-semibold { font-weight: 600; } .mt-auto { margin-top: auto; }