/**
 * younited® Produktgrid Block - CSS v3.0.0
 * Pinegrow WordPress Block Version
 *
 * Enthält alle Styles für Grid, Cards, Detail View und Animationen
 *
 * @package younited
 * @since 3.0.0
 */

/* ============================================================
   COLUMN VARIANTS (f\u00fcr Blog-Einbindungen etc.)
   Nutzung: Custom Class auf Produktgrid-Block setzen.
   ============================================================ */
.produktgrid-section.produktgrid-cols-2 .events-grid,
.produktgrid-cols-2 .events-grid {
    grid-template-columns: repeat(1, 1fr) !important;
}
@media (min-width: 640px) {
    .produktgrid-section.produktgrid-cols-2 .events-grid,
    .produktgrid-cols-2 .events-grid {
        grid-template-columns: repeat(2, 1fr) !important;
    }
}
.produktgrid-section.produktgrid-cols-3 .events-grid,
.produktgrid-cols-3 .events-grid {
    grid-template-columns: repeat(2, 1fr) !important;
}
@media (min-width: 1024px) {
    .produktgrid-section.produktgrid-cols-3 .events-grid,
    .produktgrid-cols-3 .events-grid {
        grid-template-columns: repeat(3, 1fr) !important;
    }
}

/* ============================================================
   BLOG-POST-KONTEXT (.blog-post-content)
   Produktgrid passt sich automatisch an die schmalere
   Content-Spalte eines Blog-Artikels an - ohne Custom-Class.
   ============================================================ */
/* Grid: mobil 2 Spalten, ab xl 3 Spalten (Content-Spalte ist
   bei lg + Sidebar zu schmal fuer 3 Spalten). */
.blog-post-content .produktgrid-section .events-grid {
    grid-template-columns: repeat(2, 1fr) !important;
}
@media (min-width: 1280px) {
    .blog-post-content .produktgrid-section .events-grid {
        grid-template-columns: repeat(3, 1fr) !important;
    }
}

/* Padding: Im Blog kein zusaetzlicher Innenrand - Content hat
   bereits das Layout-Padding. Gilt auch fuer explizite 3-Spalten-
   Variante (z.B. in Glossar-Eintraegen, eingewrappt in content-wrapper-narrow). */
.blog-post-content .produktgrid-section > nav,
.produktgrid-section.produktgrid-cols-3 > nav {
    padding-left: 0 !important;
    padding-right: 0 !important;
}
.blog-post-content .produktgrid-section .products-grid,
.produktgrid-section.produktgrid-cols-3 .products-grid {
    padding-left: 0 !important;
    padding-right: 0 !important;
    padding-bottom: 1.5rem !important;
}
@media (min-width: 768px) {
    .blog-post-content .produktgrid-section .products-grid,
    .produktgrid-section.produktgrid-cols-3 .products-grid {
        padding-bottom: 2.5rem !important;
    }
}

/* Filter-Bar: Im Blog-Kontext wird server-seitig ausschliesslich das
   kompakte 3-Badge-Layout (Alle Events | Events filtern ▼ | Gemerkt)
   gerendert (siehe produktgrid-block-functions.php: $is_blog_compact).
   Keine versteckten Duplikate im DOM noetig. */

/* ============================================================
   CSS VARIABLES
   ============================================================ */
.produktgrid-section {
    --pg-orange-50: #fff7ed;
    --pg-orange-100: #ffedd5;
    --pg-orange-400: #fb923c;
    --pg-orange-500: #f97316;
    --pg-orange-600: #ea580c;
    --pg-gray-50: #f9fafb;
    --pg-gray-100: #f3f4f6;
    --pg-gray-200: #e5e7eb;
    --pg-gray-300: #d1d5db;
    --pg-gray-400: #9ca3af;
    --pg-gray-500: #6b7280;
    --pg-gray-600: #4b5563;
    --pg-gray-700: #374151;
    --pg-gray-800: #1f2937;
    --pg-gray-900: #111827;
    --pg-pink-50: #fdf2f8;
    --pg-pink-400: #f472b6;
    --pg-pink-500: #ec4899;
    --pg-blue-50: #eff6ff;
    --pg-blue-200: #bfdbfe;
    --pg-blue-400: #60a5fa;
    --pg-blue-600: #2563eb;
}

/* ============================================================
   ASPECT RATIO
   ============================================================ */
.aspect-3-4 {
    aspect-ratio: 3 / 4;
}

/* Fallback für ältere Browser */
@supports not (aspect-ratio: 3 / 4) {
    .aspect-3-4 {
        position: relative;
        padding-bottom: 133.33%;
    }
    .aspect-3-4 > * {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
    }
}

/* ============================================================
   STICKER ROTATIONS
   ============================================================ */
.sticker-rot-1 { transform: rotate(-1.5deg); }
.sticker-rot-2 { transform: rotate(1deg); }
.sticker-rot-3 { transform: rotate(-2deg); }
.sticker-rot-4 { transform: rotate(1.5deg); }
.sticker-rot-5 { transform: rotate(-0.5deg); }

/* ============================================================
   SCROLLBAR HIDING
   ============================================================ */
.filter-bar::-webkit-scrollbar {
    display: none;
}
.filter-bar {
    scrollbar-width: none;
    -ms-overflow-style: none;
}

/* ============================================================
   FAVORITES FILTER - VISUAL SEPARATION
   ============================================================ */
.filter-divider {
    display: block !important;
    width: 1px !important;
    height: 2rem !important;
    margin: 0 1rem !important;
    padding: 0 !important;
    background-color: var(--pg-gray-300) !important;
    flex-shrink: 0;
    border: none !important;
}

/* Desktop: Favorites Button mit Pink-Akzent */
.grid-filter-btn--favorites:hover:not(.active) {
    border-color: var(--pg-pink-400) !important;
    color: #be185d !important;
}

.grid-filter-btn--favorites.active {
    background-color: var(--pg-pink-500) !important;
    border-color: var(--pg-pink-500) !important;
    color: white !important;
}

/* Mobile: Favorites Option Hover */
.grid-mobile-filter-option--favorites:hover {
    background-color: var(--pg-pink-50) !important;
    color: #be185d !important;
}

.grid-mobile-filter-option--favorites.active-mobile-filter .filter-dot {
    background-color: var(--pg-pink-500) !important;
}

/* Favorites Count Badge */
.favorites-count-badge {
    background-color: var(--pg-pink-500);
    color: white;
    min-width: 1.25rem;
}

.favorites-count-badge:not(.hidden) {
    display: inline-flex !important;
}

.grid-filter-btn--favorites.active .favorites-count-badge {
    background-color: white;
    color: var(--pg-pink-500);
}

/* ============================================================
   CARD HOVER EFFECTS
   ============================================================ */
.card-hover {
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
    cursor: pointer;
    will-change: transform;
}

.card-hover:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.12);
    border-color: var(--pg-orange-500);
}

.card-hover:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.4);
}

.card-hover:active {
    transform: translateY(-2px);
}

/* ============================================================
   BUTTON HOVER EFFECTS
   ============================================================ */
.btn-hover {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    transform: translateY(0);
}

.btn-hover:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 10px 25px rgba(249, 115, 22, 0.3);
}

.btn-hover:active:not(:disabled) {
    transform: translateY(0);
}

/* ============================================================
   DROPDOWN ANIMATION
   ============================================================ */
.dropdown-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease-out, opacity 0.2s ease-out, visibility 0s linear 0.2s;
    opacity: 0;
    visibility: hidden;
}

.dropdown-content.open {
    max-height: 400px;
    opacity: 1;
    visibility: visible;
    transition: max-height 0.3s ease-out, opacity 0.2s ease-out, visibility 0s linear 0s;
}

/* ============================================================
   FILTER BUTTONS
   ============================================================ */
.grid-filter-btn {
    transition: all 0.15s ease;
}

.grid-filter-btn:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.3);
}

.grid-mobile-filter-option:focus {
    outline: none;
    background-color: var(--pg-orange-50);
}

/* ============================================================
   LOADING OVERLAY
   ============================================================ */
.grid-loading-overlay {
    transition: opacity 0.2s ease;
}

/* Spinner Animation */
@keyframes spin {
    to { transform: rotate(360deg); }
}

.animate-spin {
    animation: spin 0.8s linear infinite;
}

/* ============================================================
   SLIDE ANIMATIONS
   ============================================================ */
@keyframes slideIn {
    from { 
        opacity: 0; 
        transform: translateY(-20px); 
    }
    to { 
        opacity: 1; 
        transform: translateY(0); 
    }
}

@keyframes slideInFromRight {
    from { 
        transform: translateX(20px); 
        opacity: 0; 
    }
    to { 
        transform: translateX(0); 
        opacity: 1; 
    }
}

@keyframes slideInFromLeft {
    from { 
        transform: translateX(-20px); 
        opacity: 0; 
    }
    to { 
        transform: translateX(0); 
        opacity: 1; 
    }
}

.animate-slideIn { 
    animation: slideIn 0.3s ease-out forwards; 
}

.animate-slideInFromRight { 
    animation: slideInFromRight 0.2s ease-out forwards; 
}

.animate-slideInFromLeft { 
    animation: slideInFromLeft 0.2s ease-out forwards; 
}

/* Slide Out für Navigation */
.slide-out-left {
    transform: translateX(-20px);
    opacity: 0;
    transition: all 0.15s ease-out;
}

.slide-out-right {
    transform: translateX(20px);
    opacity: 0;
    transition: all 0.15s ease-out;
}

/* ============================================================
   CARD STICKER (Event-Name auf Karten)
   ============================================================ */
#main-content .card-sticker,
.card-sticker {
    font-size: 0.75rem !important; /* text-xs */
    line-height: 1.25 !important; /* leading-tight */
    margin: 0 !important;
    font-weight: 700 !important; /* font-bold */
    color: white !important;
}

@media (min-width: 768px) {
    #main-content .card-sticker,
    .card-sticker {
        font-size: 0.875rem !important; /* md:text-sm */
    }
}

/* ============================================================
   EVENT CARD BADGES (Neu!, Beliebt etc.)
   Text-Label Badge, eigene BEM-Klassen (Purge-sicher)
   ============================================================ */
.produktgrid-section .event-card .event-badge,
.event-card .event-badge {
    position: absolute !important;
    top: 0.5rem;
    left: 0.5rem;
    border-radius: 9999px;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    z-index: 10;
    border-width: 2px;
    border-style: solid;
    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
    pointer-events: none;
    margin: 0 !important;
    padding: 0.125rem 0.5rem !important;
    line-height: 1.2 !important;
    white-space: nowrap;
}

@media (min-width: 768px) {
    .produktgrid-section .event-card .event-badge,
    .event-card .event-badge {
        top: 0.75rem;
        left: 0.75rem;
        padding: 0.2rem 0.625rem !important;
    }
}

.event-badge--hot {
    color: #ea580c;
    background-color: #fff7ed;
    border-color: #fed7aa;
}

.event-badge--new {
    color: #2563eb;
    background-color: #eff6ff;
    border-color: #bfdbfe;
}

.event-badge__text {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1;
}

@media (min-width: 768px) {
    .event-badge__text {
        font-size: 0.75rem;
    }
}

/* ============================================================
   DETAIL FAVORITE BUTTON
   ============================================================ */
.detail-favorite-btn {
    transition: all 0.2s ease;
}

/* Hover State */
.detail-favorite-btn:hover .detail-favorite-icon {
    color: #ec4899; /* pink-500 */
}

/* Active/Favorited State */
.detail-favorite-btn.favorite-active {
    background-color: #fdf2f8; /* pink-50 */
    border-color: #ec4899; /* pink-500 */
}

.detail-favorite-btn.favorite-active .detail-favorite-icon {
    fill: #ec4899; /* pink-500 */
    stroke: #ec4899;
    color: #ec4899;
}

/* Hover auf aktivem Button */
.detail-favorite-btn.favorite-active:hover {
    background-color: #fce7f3; /* pink-100 */
    border-color: #db2777; /* pink-600 */
}

.detail-favorite-btn.favorite-active:hover .detail-favorite-icon {
    fill: #db2777; /* pink-600 */
    stroke: #db2777;
    color: #db2777;
}

/* ============================================================
   DETAIL VIEW (inline im Grid zwischen Reihen)
   ============================================================ */
.grid-detail-view {
    transition: all 0.3s ease;
    grid-column: 1 / -1; /* Spannt über alle Grid-Spalten */
    border-radius: 1rem;
    margin-top: 0.5rem;
    margin-bottom: 0.5rem;
    overflow: hidden;
}

.grid-detail-view.hidden {
    display: none !important;
}

.grid-detail-view.active {
    display: block !important;
}

/* ============================================================
   DETAIL CONTENT LAYOUT (CSS Grid, responsiv)
   ============================================================
   Struktur: .detail-content hat 4 direkte Kinder:
     1. .detail-image-link     (Bild)
     2. .detail-info           (Name, Subtitle, Tags, Beschreibung)
     3. .detail-specs-wrapper  (Specs-Box)
     4. .detail-actions-wrapper (Booking + Favorit + Share)

   Breakpoints:
     < md (<768px):  alles gestapelt (1 Spalte)
     md-lg (768-1023px): Bild | Info nebeneinander, Specs + Actions volle Breite darunter
     lg+ (1024px+) Standard: Bild-Spalte spannt 3 Zeilen, rechts stacken Info/Specs/Actions
     lg+ (.detail-content--compact, Blog): bleibt wie md-lg (Blog-Spalte ist zu schmal)
   ============================================================ */
.detail-content {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    /* Fluid Inset: 24 px Mobile (375px) → 48 px Desktop (1280px+).
       Konsistent mit Section-Padding-Skala (clamp). */
    padding: clamp(1.5rem, 1rem + 2vw, 3rem);
    transition: opacity 0.15s ease, transform 0.15s ease;
}

@media (min-width: 768px) {
    .detail-content {
        grid-template-columns: auto 1fr;
        column-gap: 2rem;
        row-gap: 2rem;
        /* Padding kommt jetzt aus der globalen .detail-content clamp-Regel */
    }
    .detail-content > .detail-image-link { grid-column: 1; grid-row: 1; }
    .detail-content > .detail-info          { grid-column: 2; grid-row: 1; }
    .detail-content > .detail-specs-wrapper { grid-column: 1 / -1; grid-row: 2; }
    .detail-content > .detail-actions-wrapper { grid-column: 1 / -1; grid-row: 3; }
}

@media (min-width: 1024px) {
    .detail-content:not(.detail-content--compact) {
        column-gap: 3rem;
        padding: 3rem;
    }
    .detail-content:not(.detail-content--compact) > .detail-image-link {
        grid-row: 1 / span 3;
    }
    .detail-content:not(.detail-content--compact) > .detail-specs-wrapper,
    .detail-content:not(.detail-content--compact) > .detail-actions-wrapper {
        grid-column: 2;
    }
    .detail-content:not(.detail-content--compact) > .detail-specs-wrapper  { grid-row: 2; }
    .detail-content:not(.detail-content--compact) > .detail-actions-wrapper { grid-row: 3; }
}

/* Blog-Compact: Subtitle + Price bleiben immer untereinander (Info-Spalte
   ist auch bei lg+ zu schmal fuer side-by-side). Tailwind lg:flex-row
   wuerde sie sonst ab 1024px nebeneinander stellen. */
.detail-content--compact .detail-subtitle-row {
    flex-direction: column !important;
    align-items: flex-start !important;
    justify-content: flex-start !important;
    gap: 0.5rem !important;
}

/* Desktop (Non-Compact): mehr Luft zwischen Subtitle und Price,
   sonst kollidieren lange Subtitle-Texte mit dem Preis. */
@media (min-width: 1024px) {
    .detail-content:not(.detail-content--compact) .detail-subtitle-row {
        gap: 3rem !important;
    }
}

/* Detail Image */
.detail-image-wrapper {
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
}

.detail-image {
    transition: transform 0.3s ease;
}

.detail-image-wrapper:hover .detail-image {
    transform: scale(1.02);
}

/* ============================================================
   DETAIL VIEW - TYPOGRAPHY OVERRIDES
   Überschreibt #main-content Styles
   ============================================================ */

/* Detail Header Title */
#main-content .grid-detail-view .detail-header-title,
.grid-detail-view .detail-header-title {
    font-size: 1.125rem !important; /* text-lg */
    font-weight: 600 !important;
    line-height: 1.4 !important;
    margin: 0 !important;
    color: #1f2937 !important;
}

@media (min-width: 768px) {
    #main-content .grid-detail-view .detail-header-title,
    .grid-detail-view .detail-header-title {
        font-size: 1.25rem !important; /* text-xl */
    }
}

/* Detail Event Name (h3) - H2-Visual-Rolle (24→36 px fluid)
   Bewusste Display-Ausnahme: Tag bleibt H3 (Modal-Header ist bereits H2),
   visuell H2-Scale als inhaltliches Herzstück des Modals.
   Siehe docs/typography-system.md §5 (Bewusste Ausnahmen). */
#main-content .grid-detail-view .detail-name,
.grid-detail-view .detail-name {
    font-size: clamp(1.5rem, 1.25rem + 1vw, 2.25rem) !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    margin: 0 0 0.75rem 0 !important;
    color: #111827 !important;
    word-wrap: break-word;
    hyphens: auto;
}

/* Detail Subtitle */
#main-content .grid-detail-view .detail-subtitle,
.grid-detail-view .detail-subtitle {
    font-size: 1.125rem !important;
    font-weight: 600 !important;
    line-height: 1.4 !important;
    margin: 0 !important;
    color: #f97316 !important; /* orange-500 */
}

@media (min-width: 768px) {
    #main-content .grid-detail-view .detail-subtitle,
    .grid-detail-view .detail-subtitle {
        font-size: 1.25rem !important;
    }
}

/* Detail Price */
#main-content .grid-detail-view .detail-price,
.grid-detail-view .detail-price {
    font-size: 1.25rem !important;
    font-weight: 700 !important;
    color: #1f2937 !important;
    white-space: nowrap;
}

@media (min-width: 768px) {
    #main-content .grid-detail-view .detail-price,
    .grid-detail-view .detail-price {
        font-size: 1.5rem !important;
    }
}

/* Detail Description - Card-Body (16 px) auf Mobile, Primary-Body (18 px) auf Desktop.
   Line-Height folgt der Size: 1.625 (leading-relaxed) bei 16 px, 1.75 bei 18 px. */
#main-content .grid-detail-view .detail-description,
.grid-detail-view .detail-description {
    font-size: 1rem !important;
    font-weight: 400 !important;
    line-height: 1.625 !important;
    color: #4b5563 !important;
    margin: 0 0 1rem 0 !important;
}

@media (min-width: 768px) {
    #main-content .grid-detail-view .detail-description,
    .grid-detail-view .detail-description {
        font-size: 1.125rem !important;
        line-height: 1.625 !important;
        margin: 0 0 1.5rem 0 !important;
    }
}

/* Empty State Heading */
#main-content .produktgrid-section .produktgrid-empty h3,
.produktgrid-section .produktgrid-empty h3 {
    font-size: 1.25rem !important;
    font-weight: 600 !important;
    line-height: 1.4 !important;
    margin: 0 0 0.5rem 0 !important;
    color: #1f2937 !important;
}

@media (min-width: 768px) {
    #main-content .produktgrid-section .produktgrid-empty h3,
    .produktgrid-section .produktgrid-empty h3 {
        font-size: 1.5rem !important;
        margin: 0 0 0.75rem 0 !important;
    }
}

/* ============================================================
   DETAIL VIEW - OTHER STYLES
   ============================================================ */

/* Detail Tags */
.detail-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.detail-tags span {
    display: inline-block;
    background-color: #f3f4f6; /* gray-100 */
    color: #4b5563; /* gray-600 */
    padding: 0.375rem 0.75rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 500;
    border: 1px solid #e5e7eb; /* gray-200 */
    transition: background-color 0.15s ease;
}

.detail-tags span:hover {
    background-color: #e5e7eb; /* gray-200 */
}

/* Detail Specs Grid */
.detail-specs {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
}

@media (min-width: 768px) {
    .detail-specs {
        grid-template-columns: repeat(4, 1fr);
        gap: 1.25rem;
    }
}

/* Spec Item Styling */
.detail-specs > div {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
}

/* Spec Labels - überschreibe globale Styles */
#main-content .detail-specs .spec-label,
.detail-specs .spec-label {
    font-size: 0.75rem !important;
    text-transform: uppercase !important;
    letter-spacing: 0.05em !important;
    color: #9ca3af !important; /* gray-400 */
    font-weight: 500 !important;
    line-height: 1.4 !important;
    margin: 0 !important;
}

/* Spec Values */
#main-content .detail-specs .spec-value,
.detail-specs .spec-value {
    font-size: 0.875rem !important;
    font-weight: 600 !important;
    color: #1f2937 !important; /* gray-800 */
    margin-top: 0.125rem !important;
    line-height: 1.4 !important;
}

/* Detail Action Buttons */
.detail-favorite-btn.active {
    background-color: var(--pg-pink-50);
    border-color: var(--pg-pink-500);
}

.detail-favorite-btn.active .detail-favorite-icon {
    color: var(--pg-pink-500);
}

/* Detail Navigation Buttons */
.detail-prev-btn:disabled,
.detail-next-btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.detail-prev-btn:not(:disabled):hover,
.detail-next-btn:not(:disabled):hover {
    background-color: var(--pg-orange-500);
    border-color: var(--pg-orange-500);
    color: white;
}

/* ============================================================
   CUSTOM EVENT CARD
   ============================================================ */
.custom-event-card {
    background: linear-gradient(135deg, var(--pg-orange-500) 0%, var(--pg-orange-600) 100%);
}

.custom-event-card:hover {
    transform: translateY(-4px) scale(1.01);
}

.custom-event-card::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -50%;
    width: 100%;
    height: 100%;
    background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
    pointer-events: none;
}

/* ============================================================
   EMPTY STATE
   ============================================================ */
.produktgrid-empty {
    animation: fadeIn 0.3s ease;
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* ============================================================
   RESPONSIVE ADJUSTMENTS
   ============================================================ */

/* Mobile: Detail View */
@media (max-width: 767px) {
    .grid-detail-view .detail-content {
        flex-direction: column;
    }
    
    .detail-image-wrapper {
        width: 100%;
        max-width: 320px;
        margin: 0 auto;
    }
    
    .detail-name {
        font-size: 1.5rem;
    }
    
    .detail-specs {
        grid-template-columns: repeat(2, 1fr);
    }

    /* detail-info 100% width auf mobil */
    .detail-info {
        width: 100%;
        min-width: 0;
    }
}

/* Tablet */
@media (min-width: 768px) and (max-width: 1023px) {
    .detail-image-wrapper {
        width: 280px;
    }
}

/* Desktop */
@media (min-width: 1024px) {
    .detail-image-wrapper {
        width: 360px;
    }
}

/* ============================================================
   REDUCED MOTION
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
    
    .card-hover:hover,
    .btn-hover:hover:not(:disabled) {
        transform: none;
    }
}

/* ============================================================
   PRINT STYLES
   ============================================================ */
@media print {
    .grid-loading-overlay,
    .load-more-container,
    .detail-favorite-btn,
    .detail-share-btn,
    .grid-filter-btn,
    .grid-mobile-filter-trigger,
    nav[role="navigation"],
    .custom-event-card {
        display: none !important;
    }
    
    .grid-detail-view {
        page-break-inside: avoid;
    }
    
    .event-card {
        break-inside: avoid;
    }
}

/* ============================================================
   FOCUS VISIBLE (Modern Browsers)
   ============================================================ */
.card-hover:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.5);
}

.grid-filter-btn:focus-visible,
.detail-prev-btn:focus-visible,
.detail-next-btn:focus-visible,
.detail-close-btn:focus-visible,
.detail-favorite-btn:focus-visible,
.detail-share-btn:focus-visible,
.detail-booking-btn:focus-visible,
.load-more-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.5);
}

/* ============================================================
   DARK MODE SUPPORT (Optional)
   ============================================================ */
@media (prefers-color-scheme: dark) {
    /* Nur aktivieren wenn Theme Dark Mode unterstützt */
    /*
    .produktgrid-section {
        --pg-gray-50: #1f2937;
        --pg-gray-100: #374151;
        --pg-gray-200: #4b5563;
        --pg-gray-800: #f3f4f6;
        --pg-gray-900: #f9fafb;
    }
    */
}

/* ============================================================
   HIGH CONTRAST MODE
   ============================================================ */
@media (prefers-contrast: high) {
    .card-hover {
        border-width: 3px;
    }
    
    .grid-filter-btn {
        border-width: 3px;
    }
    
    .detail-prev-btn,
    .detail-next-btn,
    .detail-favorite-btn,
    .detail-share-btn {
        border-width: 3px;
    }
}

/* ============================================================
   TAILWIND CLASS OVERRIDES (falls nötig)
   ============================================================ */

/* Border-3 (nicht in Standard-Tailwind) */
.border-3 {
    border-width: 3px;
}

.border-\[3px\] {
    border-width: 3px;
}

/* ============================================================
   UTILITY CLASSES
   ============================================================ */

/* Screen Reader Only */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

/* No Underline für Links */
.no-underline {
    text-decoration: none;
}
