/** * Theme für den Publisher-Hub pressekonto.de (pressekonto.test) * * Charakter: * - Surface: warmes Buchpapier (gleiche Familie wie BP24/Presseecho) * - Primary: Hub-Blau (#1A2540) – seriös, plattform-neutral * - Accent: gedecktes Bernstein (#B07A3A) – bewusst NICHT Orange (BP24) und NICHT Grün (Presseecho) * - Schrift: Inter Tight + JetBrains Mono * * Tokens (Farben, Fonts, Radii, Schatten) leben seit Phase 0 in * resources/css/shared/design-tokens.css als Single Source of Truth * — sie werden via shared-styles.css → design-tokens.css importiert. * * Hier nur noch: * - HSL-Variablen für Legacy-Komponenten (shared-styles) * - @layer components { … } mit Hub-spezifischen Klassen * (Eyebrows, Hero-Grid, Auth-Felder, FAQ-Accordion, …) * * Dokumentation: dev/frontend/hub-flux/01-PHASE-0-TOKENS.md */ @import "./shared-styles.css"; /* HSL-Variablen für Legacy-Komponenten (shared-styles) */ :root { --font-primary: var(--font-sans); --font-secondary: var(--font-sans); --background: 40 30% 95%; /* #f6f4ef */ --foreground: 144 8% 11%; --card: 0 0% 100%; --card-foreground: 144 8% 11%; --popover: 0 0% 100%; --popover-foreground: 144 8% 11%; /* Primary: #1A2540 -> hsl(222, 43%, 18%) */ --primary: 222 43% 18%; --primary-foreground: 0 0% 100%; --primary-50: 222 43% 96%; --primary-100: 222 43% 92%; --primary-200: 222 43% 85%; --primary-300: 222 43% 75%; --primary-400: 222 43% 60%; --primary-500: 222 43% 45%; --primary-600: 222 43% 36%; --primary-700: 222 43% 28%; --primary-800: 222 43% 22%; --primary-900: 222 43% 18%; --primary-950: 222 43% 12%; --secondary: 224 30% 30%; --secondary-foreground: 0 0% 100%; --muted: 40 18% 90%; --muted-foreground: 144 6% 38%; --accent: 31 51% 46%; --accent-foreground: 0 0% 100%; --destructive: 0 84% 60%; --destructive-foreground: 0 0% 100%; --border: 38 23% 85%; --input: 38 23% 85%; --ring: 222 43% 18%; --radius: 4px; --shadow-card: 0 1px 2px 0 rgb(26 37 64 / 0.06); --shadow-card-hover: 0 4px 12px -2px rgb(26 37 64 / 0.12); } @layer base { html, body { margin: 0; padding: 0; } body { background-color: #e8e4da; color: var(--color-ink); font-family: var(--font-sans); -webkit-font-smoothing: antialiased; font-feature-settings: "ss01", "cv11"; } h1, h2, h3, h4 { font-family: var(--font-sans); color: inherit; letter-spacing: -0.01em; } .font-mono { font-family: var(--font-mono); font-feature-settings: "tnum"; } } @layer components { /* Hub-Eyebrow — sperrgesetzt, in Hub-Blau */ .eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--color-hub); } .eyebrow.muted { color: var(--color-ink-3); letter-spacing: 0.16em; font-weight: 600; font-size: 10.5px; } .eyebrow.accent { color: var(--color-accent-deep); } .eyebrow.on-dark { color: var(--color-hub-line); } /* Section-Eyebrow mit kurzem Linien-Schwanz */ .section-eyebrow { display: inline-flex; align-items: center; gap: 12px; font-size: 11px; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: var(--color-hub); } .section-eyebrow::after { content: ""; display: block; width: 42px; height: 1px; background: var(--color-hub); opacity: 0.45; } .section-eyebrow.on-dark { color: var(--color-hub-line); } .section-eyebrow.on-dark::after { background: var(--color-hub-line); opacity: 0.55; } .rule { height: 1px; background: var(--color-bg-rule); border: 0; margin: 0; } .rule-strong { height: 1px; background: var(--color-bg-rule-strong); border: 0; margin: 0; } .rule-hub { height: 2px; background: var(--color-hub); border: 0; margin: 0; } /* Subtile geometrische Hintergrundlinien fürs Hero */ .hero-grid { background-image: linear-gradient( to right, rgba(26, 37, 64, 0.04) 1px, transparent 1px ), linear-gradient( to bottom, rgba(26, 37, 64, 0.04) 1px, transparent 1px ); background-size: 48px 48px; background-position: -1px -1px; } /* Hub-Gradient-Klassen */ .bg-hub-grad { background-image: linear-gradient( 135deg, var(--color-hub) 0%, var(--color-hub-2) 100% ); } .bg-hub-grad-2 { background-image: linear-gradient( 180deg, var(--color-hub) 0%, var(--color-topbar-deep) 100% ); } .bg-accent-grad { background-image: linear-gradient( 135deg, var(--color-accent) 0%, var(--color-accent-deep) 100% ); } .bg-topbar-grad { background-image: linear-gradient( 135deg, var(--color-topbar) 0%, var(--color-topbar2) 100% ); } /* Empfohlen-Ribbon auf Tarif-Karten */ .ribbon-recommend { position: absolute; top: -1px; left: -1px; right: -1px; background: var(--color-hub); color: #fff; font-size: 10.5px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; text-align: center; padding: 8px 0; } /* Accordion-Pfeil (FAQ) */ details > summary { list-style: none; cursor: pointer; } details > summary::-webkit-details-marker { display: none; } details[open] .faq-chev { transform: rotate(180deg); } .faq-chev { transition: transform 0.2s ease; } /* * Auth-Seiten (Anmelden, Registrieren, Passwort zurücksetzen, …) * — Konsistente Felder, Buttons und Atmosphäre für den Publisher-Hub */ /* Hintergrund-Raster (Atmosphäre) */ .auth-grid { position: absolute; inset: 0; background-image: linear-gradient( to right, rgba(26, 37, 64, 0.045) 1px, transparent 1px ), linear-gradient( to bottom, rgba(26, 37, 64, 0.045) 1px, transparent 1px ); background-size: 56px 56px; pointer-events: none; } /* From=portal Banner über der Auth-Card */ .from-banner { background: #ffffff; border: 1px solid var(--color-bg-rule); border-left: 2px solid var(--color-hub); border-radius: 4px; padding: 8px 14px; font-size: 12px; color: var(--color-ink-2); } /* Auth-Card mit weicher, fokussierender Schatten-Glocke */ .auth-card { background: var(--color-bg-card); border: 1px solid var(--color-bg-rule); border-radius: 8px; padding: 34px 36px 32px; box-shadow: 0 1px 0 rgba(26, 31, 28, 0.03), 0 20px 50px -32px rgba(26, 37, 64, 0.28); } /* Eyebrow & Link in Hub-Blau für Auth-Kontext */ .eyebrow-hub { font-size: 10.5px; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: var(--color-hub); } .link-hub { color: var(--color-hub); font-weight: 600; text-decoration: none; text-underline-offset: 3px; } .link-hub:hover { text-decoration: underline; } /* Input-Felder */ .field-label { display: block; font-size: 12.5px; font-weight: 600; color: var(--color-ink); margin-bottom: 6px; } .field-input { width: 100%; background: #ffffff; border: 1px solid var(--color-bg-rule); border-radius: 6px; padding: 11px 13px; font-size: 14px; color: var(--color-ink); outline: none; transition: border-color 0.15s, box-shadow 0.15s, background 0.15s; font-family: inherit; } .field-input::placeholder { color: var(--color-ink-4); } .field-input:hover { border-color: #cfc8b5; } .field-input:focus { border-color: var(--color-hub); box-shadow: 0 0 0 3px rgba(26, 37, 64, 0.1); } .field-input[aria-invalid="true"], .field-input.is-invalid { border-color: var(--color-loss); } /* Passwort-Feld mit „Anzeigen“-Button */ .field-pw-wrap { position: relative; } .field-affix { position: absolute; top: 50%; right: 10px; transform: translateY(-50%); color: var(--color-ink-3); font-size: 11.5px; font-weight: 600; background: transparent; border: 0; cursor: pointer; padding: 4px 6px; border-radius: 3px; font-family: inherit; } .field-affix:hover { color: var(--color-hub); background: var(--color-bg); } /* Checkbox */ .auth-check { appearance: none; -webkit-appearance: none; width: 16px; height: 16px; border: 1.5px solid #cfc8b5; border-radius: 3px; background: #ffffff; cursor: pointer; position: relative; flex-shrink: 0; transition: border-color 0.12s, background 0.12s; margin: 0; } .auth-check:hover { border-color: var(--color-hub); } .auth-check:checked { background: var(--color-hub); border-color: var(--color-hub); } .auth-check:checked::before { content: ""; position: absolute; left: 4px; top: 1px; width: 5px; height: 9px; border: solid #fff; border-width: 0 1.8px 1.8px 0; transform: rotate(42deg); } /* Buttons (auth-spezifisch, um den allgemeinen .btn-primary nicht zu überschreiben) */ .auth-btn-primary { width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 11px 16px; background: var(--color-hub); color: #ffffff; border-radius: 6px; font-size: 14px; font-weight: 600; border: 0; cursor: pointer; transition: background-color 0.15s; font-family: inherit; } .auth-btn-primary:hover { background: var(--color-hub-2); } .auth-btn-primary:disabled { opacity: 0.6; cursor: not-allowed; } .auth-btn-outline { width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 16px; background: #ffffff; color: var(--color-ink); border: 1px solid var(--color-bg-rule); border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; transition: background-color 0.15s, border-color 0.15s; font-family: inherit; } .auth-btn-outline:hover { background: var(--color-bg-elev); border-color: #cfc8b5; } /* Validierungs-Fehler-Text */ .field-error { margin-top: 6px; color: var(--color-loss); font-size: 12px; line-height: 1.4; } /* Erfolgs-/Status-Mitteilung */ .field-status { background: #f1f6ef; border: 1px solid #c8dec0; color: #2e5b32; padding: 10px 14px; border-radius: 4px; font-size: 12.5px; line-height: 1.5; } } @layer utilities { .tabular-nums { font-variant-numeric: tabular-nums; } } [x-cloak] { display: none !important; }