﻿/* aa-campaign.css - Campaign-Specific Styles
 * Part of WrittenExpressions Design System
 * 
 * Dependencies: aa-variables.css
 * 
 * Purpose: Campaign-specific styles (seasonal, promotional, event-based)
 * - Site-wide announcement banners
 * - Urgency banners
 * - Campaign hero sections (full-width, edge-to-edge)
 * - Featured product displays
 * - Campaign testimonials
 * - Particle effects (future)
 * 
 * Used across: Home, Products, Cart (maybe), Checkout (maybe)
 * 
 * ⚠️ CRITICAL: Campaign elements must break out of page wrapper padding
 * to achieve true edge-to-edge layout
 */

/* =============================================================================
   SITE-WIDE ANNOUNCEMENT BANNER - Full-Width, Top of Page
   Appears ABOVE urgency banner, ABOVE hero
   ============================================================================= */

.campaign-announcement-bar {
    width: 100vw;
    margin: 0;
    padding: var(--aa-spacing-2) var(--aa-spacing-4);
    text-align: center;
    border: none;
    border-radius: 0;
    /* Background color set dynamically via inline style from database */
}

.announcement-content {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--aa-spacing-2);
    font-size: var(--aa-font-size-sm);
    font-weight: var(--aa-font-weight-medium);
}

.announcement-content svg,
.announcement-content i {
    flex-shrink: 0;
    font-size: var(--aa-font-size-base);
}

/* =============================================================================
   CAMPAIGN URGENCY BANNER - Full-Width, Top of Page
   ============================================================================= */

.campaign-urgency-banner {
    width: 100vw;
    margin-left: 0;
    margin-right: 0;
    margin-top: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--aa-spacing-2);
    padding: var(--aa-spacing-2) var(--aa-spacing-4);
    font-size: var(--aa-font-size-sm);
    font-weight: var(--aa-font-weight-semibold);
    text-align: center;
    border: none;
    border-radius: 0;
}

.campaign-urgency-banner svg,
.campaign-urgency-banner i {
    flex-shrink: 0;
    font-size: var(--aa-font-size-base);
}

/* Urgency Banner Variants */
.campaign-urgency-banner.urgency-warning {
    background: var(--campaign-warning, var(--aa-warning));
    color: var(--campaign-warning-text, var(--aa-white));
}

.campaign-urgency-banner.urgency-info {
    background: var(--campaign-info, var(--aa-info));
    color: var(--campaign-info-text, var(--aa-white));
}

.campaign-urgency-banner.urgency-success {
    background: var(--campaign-success, var(--aa-success));
    color: var(--campaign-success-text, var(--aa-white));
}

.campaign-urgency-banner.urgency-danger {
    background: var(--campaign-danger, var(--aa-danger));
    color: var(--campaign-danger-text, var(--aa-white));
}

/* =============================================================================
   CAMPAIGN BADGE - Featured Product Indicator
   Used on product cards to highlight campaign-featured products
   Background color is dynamic (set via inline style from database)
   ============================================================================= */

.campaign-badge {
    position: absolute;
    top: var(--aa-spacing-3);
    right: var(--aa-spacing-3);
    color: var(--aa-white);
    padding: var(--aa-spacing-1) var(--aa-spacing-3);
    border-radius: var(--aa-border-radius-full);
    font-size: var(--aa-font-size-xs);
    font-weight: var(--aa-font-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    box-shadow: var(--aa-shadow-md);
    z-index: 10; /* Above product image */
}

/* =============================================================================
   CAMPAIGN HERO - Full-Width, Edge-to-Edge
   Supports dynamic campaign colors via CSS variables:
   --campaign-primary, --campaign-accent, --campaign-text
   ============================================================================= */

.campaign-hero {
    width: 100%;
    margin: 0;
    padding: 0; /* NO padding - true edge-to-edge */
    border-radius: 0;
    text-align: center;
    /* Fallback background using campaign primary color or system default */
    background: var(--campaign-primary, linear-gradient(135deg, var(--aa-primary) 0%, var(--aa-primary-dark) 100%));
    /* Inline styles from GetCampaignHeroStyles() will override this */
}

/* Campaign hero buttons - Use campaign accent color if set */
.campaign-hero .aa-btn-accent {
    background-color: var(--campaign-accent, var(--aa-accent));
    border-color: var(--campaign-accent, var(--aa-accent));
}

.campaign-hero .aa-btn-accent:hover {
    background-color: color-mix(in srgb, var(--campaign-accent, var(--aa-accent)) 90%, black);
    border-color: color-mix(in srgb, var(--campaign-accent, var(--aa-accent)) 90%, black);
}

.campaign-hero .aa-btn-primary {
    background-color: var(--campaign-primary, var(--aa-primary));
    border-color: var(--campaign-primary, var(--aa-primary));
}

.campaign-hero .aa-btn-primary:hover {
    background-color: color-mix(in srgb, var(--campaign-primary, var(--aa-primary)) 90%, black);
    border-color: color-mix(in srgb, var(--campaign-primary, var(--aa-primary)) 90%, black);
}

/* Fallback hero - Uses same structure as campaign hero */
.campaign-hero-fallback {
    width: 100%;
    margin: 0;
    padding: 0; /* NO padding - true edge-to-edge */
    border-radius: 0;
    text-align: center;
    background: linear-gradient(135deg, var(--aa-primary) 0%, var(--aa-primary-dark) 100%);
    color: var(--aa-white);
}

/* Hero Content Container - Centers content, adds padding for breathing room */
.campaign-hero-content {
    max-width: var(--aa-container-lg);
    margin: 0 auto;
    padding: var(--aa-spacing-2) var(--aa-spacing-2); /* Vertical AND horizontal padding */
}

/* Hero Title - Uses campaign text color if set */
.campaign-hero-title {
    font-size: var(--aa-font-size-4xl);
    font-weight: var(--aa-font-weight-bold);
    margin-bottom: var(--aa-spacing-1);
    color: var(--campaign-text, inherit);
    outline: none; /* Remove focus outline - not an interactive element */
}

/* Ensure the title is not focusable (removes from tab order) */
.campaign-hero-title:focus {
    outline: none;
}

/* Hero Subtitle - Uses campaign text color if set */
.campaign-hero-subtitle {
    font-size: var(--aa-font-size-xl);
    margin-bottom: var(--aa-spacing-1);
    opacity: 0.95;
    color: var(--campaign-text, inherit);
}

/* Hero Description - Uses campaign text color if set */
.campaign-hero-description {
    font-size: var(--aa-font-size-lg);
    line-height: var(--aa-line-height-relaxed);
    margin-bottom: var(--aa-spacing-2);
    opacity: 0.9;
    max-width: var(--aa-container-md);
    margin-left: auto;
    margin-right: auto;
    color: var(--campaign-text, inherit);
}

/* Hero Actions (CTAs) */
.campaign-hero-actions {
    display: flex;
    gap: var(--aa-spacing-4);
    justify-content: center;
    margin-top: var(--aa-spacing-6);
    flex-wrap: wrap;
}

/* Hero Stats Grid - Uses campaign text color if set */
.campaign-hero-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--aa-spacing-6);
    margin-top: var(--aa-spacing-8);
    max-width: var(--aa-container-md);
    margin-left: auto;
    margin-right: auto;
}

.campaign-hero-stat {
    display: flex;
    flex-direction: column;
    gap: var(--aa-spacing-2);
}

.campaign-hero-stat-number {
    font-size: var(--aa-font-size-3xl);
    font-weight: var(--aa-font-weight-bold);
    color: var(--campaign-text, inherit);
}

.campaign-hero-stat-label {
    font-size: var(--aa-font-size-sm);
    opacity: 0.9;
    color: var(--campaign-text, inherit);
}

/* =============================================================================
   RESPONSIVE DESIGN
   ============================================================================= */

/* Tablet */
@media (max-width: 768px) {
    .campaign-hero,
    .campaign-hero-fallback {
        padding: var(--aa-spacing-8) 0;
    }

    .campaign-hero-title {
        font-size: var(--aa-font-size-3xl);
    }

    .campaign-hero-subtitle {
        font-size: var(--aa-font-size-lg);
    }

    .campaign-hero-description {
        font-size: var(--aa-font-size-base);
    }

    .campaign-hero-stats {
        grid-template-columns: 1fr;
        gap: var(--aa-spacing-4);
    }

    .campaign-hero-actions {
        flex-direction: column;
        align-items: stretch;
    }
}

/* Mobile */
@media (max-width: 480px) {
    .campaign-hero,
    .campaign-hero-fallback {
        padding: var(--aa-spacing-6) 0;
    }

    .campaign-urgency-banner {
        padding: var(--aa-spacing-2);
        font-size: var(--aa-font-size-xs);
    }

    .campaign-hero-title {
        font-size: var(--aa-font-size-2xl);
    }

    .campaign-hero-subtitle {
        font-size: var(--aa-font-size-base);
    }

    .campaign-hero-stat-number {
        font-size: var(--aa-font-size-2xl);
    }

    .campaign-hero-stat-label {
        font-size: var(--aa-font-size-xs);
    }
}
