/** * Gemeinsame Styles für alle Frontend-Themes * Diese Datei wird von allen Web-Themes importiert * * Hub × FluxUI: Seit Phase 0 leben die Design-Tokens (Farben, Fonts, * Radii, Schatten) zentral in resources/css/shared/design-tokens.css. * Wir importieren sie hier — damit kommen sie automatisch in jedes * Web-Theme (theme-pressekonto.css, theme-presseecho.css, * theme-businessportal24.css). */ @import "tailwindcss"; @import "../shared/design-tokens.css"; @import "../shared/hub-components.css"; /* Definiere wo Tailwind nach Klassen suchen soll */ @source "../../views/web"; @source "../../views/layouts/web"; @source "../../views/livewire/web"; @source "../../views/components/web"; @source "../../views/livewire/auth"; @source "../../views/components/layouts/auth"; /* Tailwind Base Layer für gemeinsame Elemente */ @layer base { *, ::after, ::before, ::backdrop, ::file-selector-button { border-color: var(--color-zinc-200, currentColor); } body { @apply font-sans antialiased; } /* Typography Defaults */ h1, h2, h3, h4, h5, h6 { @apply font-bold leading-tight; } h1 { @apply text-4xl md:text-5xl; } h2 { @apply text-3xl md:text-4xl; } h3 { @apply text-2xl md:text-3xl; } h4 { @apply text-xl md:text-2xl; } h5 { @apply text-lg md:text-xl; } h6 { @apply text-base md:text-lg; } /* Link Styles */ a { @apply transition-colors duration-200; } /* Focus Styles */ :focus-visible { @apply outline-none ring-2 ring-offset-2; } } /* Gemeinsame Component Styles */ @layer components { /* Button Base Styles */ .btn { @apply inline-flex items-center justify-center px-4 py-2 rounded-lg font-medium transition-all duration-200; @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2; } .btn-primary { @apply inline-flex items-center justify-center rounded-lg px-4 py-2 text-sm font-medium text-white shadow-md transition-all duration-300 hover:shadow-lg; background-image: linear-gradient(to right, hsl(var(--primary)), hsl(var(--secondary))); } .btn-primary:hover { background-image: linear-gradient( to right, hsl(var(--primary) / 0.9), hsl(var(--secondary) / 0.9) ); } .btn-secondary { @apply inline-flex items-center justify-center rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 px-4 py-2 text-sm font-medium text-zinc-700 dark:text-zinc-300 transition-all duration-200 hover:bg-zinc-50 dark:hover:bg-zinc-700; } /* Card Styles - Base */ .card { @apply rounded-xl border transition-all duration-300 bg-white dark:bg-zinc-900; border-color: hsl(var(--border)); box-shadow: var(--shadow-card); } .dark .card { border-color: hsl(var(--border) / 0.1); box-shadow: var(--shadow-card); } .card:hover { box-shadow: var(--shadow-card-hover); } .card-hover { @apply hover:scale-[1.02]; } .card-hover:hover { border-color: hsl(var(--primary) / 0.3); } /* Shadow utilities */ .shadow-card { box-shadow: var(--shadow-card); } .shadow-card-hover { box-shadow: var(--shadow-card-hover); } /* Badge Styles - Base */ .badge { @apply inline-flex items-center gap-1 rounded-full px-3 py-1 text-xs font-medium transition-all duration-200; } .badge-primary { @apply border; background-color: hsl(var(--primary) / 0.1); color: hsl(var(--primary)); border-color: hsl(var(--primary) / 0.2); } .badge-secondary { @apply border text-zinc-700 dark:text-zinc-300; background-color: hsl(var(--secondary) / 0.1); border-color: hsl(var(--secondary) / 0.2); } /* Input Styles */ .input-primary { @apply w-full rounded-lg border px-4 py-2 text-sm transition-all duration-200 bg-white dark:bg-zinc-900 text-zinc-900 dark:text-zinc-100; border-color: hsl(var(--input)); } .input-primary:focus { @apply outline-none; --tw-ring-color: hsl(var(--primary)); box-shadow: 0 0 0 2px var(--tw-ring-color); border-color: transparent; } /* Container */ .container-custom { @apply container mx-auto px-4 sm:px-6 lg:px-8; } /* Section Spacing */ .section { @apply py-12 md:py-16 lg:py-20; } /* Section Header Styles */ .section-header { @apply mb-8; } .section-title { @apply text-2xl md:text-3xl font-bold text-zinc-900 dark:text-zinc-100 mb-2; } .section-subtitle { @apply text-zinc-600 dark:text-zinc-400; } } /* Utility Classes & Animations */ @layer utilities { .text-balance { text-wrap: balance; } /* Animations */ @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes fade-in-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fade-in-down { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slide-in-right { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } @keyframes scale-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } .animate-fade-in { animation: fade-in 0.6s ease-out forwards; } .animate-fade-in-up { animation: fade-in-up 0.6s ease-out forwards; } .animate-fade-in-down { animation: fade-in-down 0.6s ease-out forwards; } .animate-slide-in-right { animation: slide-in-right 0.6s ease-out forwards; } .animate-scale-in { animation: scale-in 0.4s ease-out forwards; } .animation-delay-100 { animation-delay: 0.1s; opacity: 0; } .animation-delay-200 { animation-delay: 0.2s; opacity: 0; } .animation-delay-300 { animation-delay: 0.3s; opacity: 0; } .animation-delay-400 { animation-delay: 0.4s; opacity: 0; } /* ============================================ HIGHLIGHTS SLIDER - Gemeinsame Styles ============================================ */ /* Gradient Indicator */ .gradient-indicator { width: 0.5rem; height: 2.5rem; background: linear-gradient(to bottom, hsl(var(--primary)), hsl(var(--secondary))); border-radius: 9999px; display: inline-block; } /* Slider Wrapper */ .slider-wrapper { position: relative; margin-left: -1.5rem; margin-right: -1.5rem; padding: 0.5rem 1rem; margin-top: -3rem; } /* Slider Container */ .highlights-slider { overflow-x: auto; overflow-y: visible; scroll-snap-type: x mandatory; scroll-behavior: smooth; display: flex; gap: 1.5rem; padding: 1.5rem 1.25rem 2rem; scrollbar-width: none; -ms-overflow-style: none; } .highlights-slider::-webkit-scrollbar { display: none; } /* Slider Navigation Buttons */ .slider-nav-btn { width: 2.5rem; height: 2.5rem; border-radius: 9999px; border: 1px solid; border-color: rgb(228 228 231 / 1); background: transparent; display: flex; align-items: center; justify-content: center; transition: all 0.2s; cursor: pointer; } .dark .slider-nav-btn { border-color: rgb(63 63 70 / 1); } .slider-nav-btn:hover:not(:disabled) { border-color: hsl(var(--primary)); background: hsl(var(--primary) / 0.1); } .slider-nav-btn:disabled { opacity: 0.3; cursor: not-allowed; } /* Slider Dots */ .slider-dots { display: flex; justify-content: center; gap: 0.5rem; margin-top: 0; } .slider-dot { width: 0.5rem; height: 0.5rem; border-radius: 9999px; background: rgb(212 212 216 / 1); transition: all 0.3s; cursor: pointer; border: none; padding: 0; } .dark .slider-dot { background: rgb(82 82 91 / 1); } .slider-dot.active { width: 2rem; background: hsl(var(--primary)); } /* Highlight Card Link */ .highlight-card-link { display: block; flex-shrink: 0; width: 100%; scroll-snap-align: center; text-decoration: none; } .highlight-card-link:focus { outline: 2px solid hsl(var(--primary)); outline-offset: 2px; } .card-premium { background: var(--color-white); box-shadow: var(--shadow-card); border: 1px solid; border-color: hsl(var(--primary) / 0.2); } .card-premium-hover { box-shadow: var(--shadow-card-hover); border-color: hsl(var(--primary) / 0.4); transform: translateY(-0.125rem); } /* Highlight Card */ .highlight-card { background: linear-gradient(to bottom right, rgb(244 244 245 / 0.5), rgb(244 244 245 / 0.25)); border-radius: 0.75rem; border: 1px solid; border-color: hsl(var(--primary) / 0.2); overflow: hidden; transition: all 0.3s; box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1); height: 100%; display: flex; flex-direction: column; } .dark .highlight-card { background: linear-gradient(to bottom right, rgb(39 39 42 / 1), rgb(39 39 42 / 0.5)); border-color: rgb(63 63 70 / 1); } .highlight-card-link:hover .highlight-card { box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); border-color: hsl(var(--primary) / 0.3); transform: translateY(-0.125rem); } /* Highlight Card Image */ .highlight-card-image { position: relative; height: 16rem; overflow: hidden; background: linear-gradient(to bottom right, rgb(244 244 245 / 1), rgb(250 250 250 / 1)); } .dark .highlight-card-image { background: linear-gradient(to bottom right, rgb(39 39 42 / 1), rgb(24 24 27 / 1)); } @media (min-width: 768px) { .highlight-card-image { height: 100%; } } /* Highlight Badge */ .highlight-badge { display: inline-block; font-size: 0.625rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; padding: 0.375rem 0.75rem; box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); backdrop-filter: blur(12px); border-radius: 0.25rem; color: white; } /* Highlight Card Content */ .highlight-card-content { display: flex; flex-direction: column; justify-content: space-between; padding: 1.5rem 2rem; } /* Highlight Meta */ .highlight-meta { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; margin-bottom: 1rem; font-size: 0.75rem; line-height: 1rem; color: rgb(113 113 122 / 1); } .dark .highlight-meta { color: rgb(161 161 170 / 1); } /* Highlight Title */ .highlight-title { font-size: 1.5rem; line-height: 2rem; font-weight: 700; color: rgb(24 24 27 / 1); margin-bottom: 1rem; line-height: 1.25; transition: color 0.2s; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } @media (min-width: 768px) { .highlight-title { font-size: 1.875rem; line-height: 2.25rem; } } .dark .highlight-title { color: rgb(250 250 250 / 1); } .highlight-card-link:hover .highlight-title { color: hsl(var(--primary)); } /* Highlight Text */ .highlight-text { font-size: 1rem; line-height: 1.625; color: rgb(82 82 91 / 1); margin-bottom: 1.5rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } .dark .highlight-text { color: rgb(161 161 170 / 1); } /* Highlight Footer */ .highlight-footer { display: flex; align-items: center; justify-content: space-between; padding-top: 1.25rem; border-top: 1px solid; border-color: hsl(var(--primary) / 0.1); } /* ============================================ SECTION CONTAINERS - Gemeinsame Styles ============================================ */ .section-light-bg { background: linear-gradient(135deg, rgb(250 250 250 / 0.5) 0%, rgb(244 244 245 / 0.5) 100%); } .dark .section-light-bg { background: linear-gradient(135deg, rgb(24 24 27 / 0.5) 0%, rgb(39 39 42 / 0.5) 100%); } .section-gradient-bg { background: linear-gradient(to bottom right, hsl(var(--primary) / 0.05), hsl(var(--secondary) / 0.05)); border-top: 1px solid; border-bottom: 1px solid; border-color: hsl(var(--primary) / 0.1); } .dark .section-gradient-bg { background: linear-gradient(to bottom right, hsl(var(--primary) / 0.1), hsl(var(--secondary) / 0.1)); } /* ============================================ HERO BANNER - Gemeinsame Styles ============================================ */ .hero-gradient { background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(var(--secondary)) 100%); box-shadow: inset 0 -6px 16px rgba(0, 0, 0, 0.16); position: relative; } .dark .hero-gradient { box-shadow: inset 0 -6px 16px rgba(0, 0, 0, 0.2); } .hero-title { text-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } .hero-subtitle { text-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); } /* ============================================ INDUSTRY ICONS - Gemeinsame Styles ============================================ */ .industry-icon-badge img { opacity: 0.6; } .dark .industry-icon-badge img { opacity: 0.6; filter: brightness(0) saturate(100%) invert(100%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(100%) contrast(100%); } /* ============================================ PAGE HEADER - Unterseiten ============================================ */ .page-header { padding: 3rem 0; background: linear-gradient(135deg, rgb(250 250 250 / 0.5) 0%, rgb(244 244 245 / 0.5) 100%); border-bottom: 1px solid rgb(228 228 231 / 1); } .dark .page-header { background: linear-gradient(135deg, rgb(24 24 27 / 0.5) 0%, rgb(39 39 42 / 0.5) 100%); border-bottom: 1px solid rgb(63 63 70 / 1); } .page-header-compact { padding: 2rem 0; } .page-header-title { font-size: 2.25rem; line-height: 2.5rem; font-weight: 700; color: rgb(24 24 27 / 1); margin-bottom: 1rem; } @media (min-width: 768px) { .page-header-title { font-size: 3rem; line-height: 1.2; } } .dark .page-header-title { color: rgb(250 250 250 / 1); } .page-header-subtitle { font-size: 1.125rem; line-height: 1.75rem; color: rgb(82 82 91 / 1); } .dark .page-header-subtitle { color: rgb(161 161 170 / 1); } /* ============================================ SIDEBAR WIDGETS ============================================ */ .sidebar-widget { background: rgb(255 255 255 / 1); border: 1px solid rgb(228 228 231 / 1); border-radius: 0.75rem; padding: 1.5rem; margin-bottom: 1.5rem; transition: all 0.2s; } .dark .sidebar-widget { background: rgb(39 39 42 / 1); border-color: rgb(63 63 70 / 1); } .sidebar-widget:hover { box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); } .sidebar-widget-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px solid rgb(228 228 231 / 1); } .dark .sidebar-widget-header { border-bottom-color: rgb(63 63 70 / 1); } .sidebar-widget-title { font-size: 1.125rem; font-weight: 600; color: rgb(24 24 27 / 1); } .dark .sidebar-widget-title { color: rgb(250 250 250 / 1); } .sidebar-widget-content { color: rgb(82 82 91 / 1); } .dark .sidebar-widget-content { color: rgb(161 161 170 / 1); } /* ============================================ NAVIGATION - Aktive States ============================================ */ .main-nav-link.active { color: hsl(var(--primary)); } .main-nav-link.active::after { width: 100%; } /* ============================================ PAGINATION - Gradient für aktive Seite ============================================ */ .pagination-btn { padding: 0.5rem 1rem; font-size: 0.875rem; font-weight: 500; border-radius: 0.5rem; transition: all 0.2s ease; background: rgba(255, 255, 255, 0.7); color: var(--zinc-900); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: var(--shadow-sm); cursor: pointer; } .dark .pagination-btn { background: rgba(255, 255, 255, 0.2); color: var(--zinc-100); } .pagination-btn:hover:not(.pagination-active):not(:disabled) { background: var(--zinc-100); transform: translateY(-2px); box-shadow: var(--shadow-lg); } .dark .pagination-btn:hover:not(.pagination-active):not(:disabled) { background: rgba(255, 255, 255, 0.1); } .pagination-active, .dark .pagination-active { background: linear-gradient(90deg, hsl(var(--primary)) 0%, hsl(var(--secondary)) 100%); box-shadow: var(--shadow-md); color: white; } .pagination-active:hover { background: linear-gradient(90deg, hsl(var(--primary) / 0.9) 0%, hsl(var(--secondary) / 0.9) 100%); box-shadow: var(--shadow-lg); transform: translateY(-2px); } .pagination-nav { background: transparent; box-shadow: none; color: #6b7280; } .dark .pagination-nav { color: #9ca3af; } .pagination-nav:hover:not(:disabled) { color: #111827; background: transparent; box-shadow: none; transform: none; } .dark .pagination-nav:hover:not(:disabled) { color: #f3f4f6; } }