b2in/public/_cabinet/offers/shared-styles.css
2026-02-20 17:57:50 +01:00

493 lines
8.5 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* CABINET Display - Shared Styles
* Format: 9:16 (1080×1920px)
* Safe-Area: 64px
*/
: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: 42px;
--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 */
--max-width: 1080px;
--max-height: 1920px;
}
*, *::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;
}
/* ========================================
SCREEN CONTAINER (9:16 Frame)
======================================== */
.screen {
width: 100vw;
height: 100vh;
max-width: var(--max-width);
max-height: var(--max-height);
aspect-ratio: 9 / 16;
background: var(--bg);
position: relative;
overflow: hidden;
}
/* Maintain aspect ratio */
@media (min-aspect-ratio: 9/16) {
.screen {
width: auto;
height: 100vh;
}
}
@media (max-aspect-ratio: 9/16) {
.screen {
width: 100vw;
height: auto;
}
}
/* ========================================
SLIDE LAYOUT
======================================== */
.slide {
position: absolute;
inset: 0;
padding: var(--safe-area);
display: grid;
grid-template-rows: auto 1fr auto;
gap: 32px;
background: var(--bg);
}
/* ========================================
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;
}
/* ========================================
HERO SECTION
======================================== */
.hero {
border-radius: var(--radius);
background: linear-gradient(145deg, #f5f5f5, #fafafa);
border: 1px solid var(--line);
overflow: hidden;
position: relative;
display: flex;
align-items: flex-end;
justify-content: flex-start;
padding: 32px;
}
.hero.has-image {
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.hero-badge {
font-size: var(--text-base);
font-weight: 500;
color: var(--fg);
background: rgba(255, 255, 255, 0.92);
border: 1px solid rgba(0, 0, 0, 0.08);
border-radius: 100px;
padding: 14px 24px;
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
letter-spacing: 0.01em;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
}
/* Placeholder für Entwicklung */
.hero-placeholder {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
color: var(--muted);
background:
radial-gradient(circle at 30% 30%, rgba(0,0,0,0.03), transparent 50%),
linear-gradient(145deg, #f2f2f2, #fafafa);
}
/* ========================================
BOTTOM SECTION (Info + QR)
======================================== */
.bottom {
display: grid;
grid-template-columns: 1fr 300px;
gap: 24px;
align-items: stretch;
}
/* Info Box */
.info {
display: flex;
flex-direction: column;
justify-content: space-between;
background: linear-gradient(180deg, #ffffff, #fafafa);
border: 1px solid var(--line);
border-radius: var(--radius);
padding: 28px;
min-height: 340px;
}
.info-content {
flex: 1;
}
.eyebrow {
font-size: var(--text-sm);
color: var(--muted);
letter-spacing: 0.14em;
text-transform: uppercase;
margin-bottom: 14px;
font-weight: 500;
}
.title {
font-size: var(--text-4xl);
line-height: 1.08;
font-weight: 700;
margin-bottom: 14px;
color: var(--fg-strong);
letter-spacing: -0.02em;
}
.title.large {
font-size: var(--text-5xl);
letter-spacing: -0.025em;
}
.title.medium {
font-size: var(--text-3xl);
letter-spacing: -0.015em;
}
.subline {
font-size: var(--text-xl);
color: var(--muted);
line-height: 1.35;
margin-bottom: 16px;
font-weight: 400;
}
/* Price Display */
.price-block {
margin-top: auto;
padding-top: 24px;
border-top: 1px solid var(--line);
}
.price-row {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 20px;
}
.price {
font-size: var(--text-6xl);
font-weight: 700;
letter-spacing: -0.03em;
color: var(--fg-strong);
line-height: 1;
font-feature-settings: 'tnum' 1; /* Tabular numbers */
}
.price-note {
font-size: var(--text-lg);
color: var(--muted);
text-align: right;
line-height: 1.35;
font-weight: 400;
}
/* Bullets List */
.bullets {
list-style: none;
display: flex;
flex-direction: column;
gap: 14px;
margin-top: 20px;
}
.bullets li {
font-size: var(--text-xl);
line-height: 1.35;
display: flex;
align-items: flex-start;
gap: 16px;
color: var(--fg);
font-weight: 400;
}
.bullets .dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--accent);
margin-top: 13px;
flex-shrink: 0;
}
/* Footer Text (within info box) */
.info-footer {
margin-top: auto;
padding-top: 20px;
border-top: 1px solid var(--line);
}
.footer-text {
font-size: var(--text-base);
color: var(--muted);
line-height: 1.45;
font-weight: 400;
}
.footer-row {
display: flex;
justify-content: space-between;
align-items: baseline;
gap: 20px;
}
/* ========================================
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 */
.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;
}
/* ========================================
DISCLAIMER
======================================== */
.disclaimer {
font-size: var(--text-xs);
color: var(--muted-light);
margin-top: 12px;
font-weight: 400;
letter-spacing: 0.01em;
}
/* ========================================
ANIMATIONS (for player integration)
======================================== */
.slide.fade-in {
animation: fadeIn 0.6s ease-out forwards;
}
.slide.fade-out {
animation: fadeOut 0.6s ease-in forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
/* ========================================
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;
}