/** * CABINET Display - Offer Slides Styles * Format: 9:16 (1080x1920px) * * Imports shared CABINET base tokens and adds offer-specific layout. */ @import '../shared/cabinet-base.css'; /* ======================================== 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); } /* ======================================== 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; } .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; } /* ======================================== 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; } }