/**
 * RVKAI Chat UI - Premium GPT-like Interface
 * A stunning, modern chat experience with beautiful light and dark themes
 * Uses Font Awesome icons for a polished look
 */

/* Box sizing for all chat elements */
.rvk-chat-wrapper,
.rvk-chat-wrapper *,
.rvk-chat-wrapper *::before,
.rvk-chat-wrapper *::after {
    box-sizing: border-box;
}

/* ============================================
   CSS VARIABLES & THEMES
   ============================================ */

:root {
    /* Brand Colors - Layer 1 (overridable via admin settings) */
    --rvk-brand-primary: #0891b2;
    --rvk-brand-primary-rgb: 8, 145, 178;
    --rvk-brand-primary-hover: #0e7490;
    --rvk-brand-primary-active: #155e75;

    /* Animation Timing */
    --rvk-transition-fast: 0.15s ease;
    --rvk-transition-normal: 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    --rvk-transition-slow: 0.4s cubic-bezier(0.4, 0, 0.2, 1);

    /* Shadows */
    --rvk-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
    --rvk-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
    --rvk-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);
    --rvk-shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.15);
    --rvk-shadow-glow: 0 0 20px rgba(16, 163, 127, 0.4);

    /* Border Radius */
    --rvk-radius-sm: 8px;
    --rvk-radius-md: 12px;
    --rvk-radius-lg: 16px;
    --rvk-radius-xl: 24px;
    --rvk-radius-full: 9999px;

    /* Sizing */
    --rvk-chat-width: 400px;
    --rvk-chat-height: 700px;
    --rvk-bubble-size: 60px;

    /* Position Offsets */
    --rvk-offset-x: 20px;
    --rvk-offset-y: 20px;

    /* Mobile Keyboard Handling */
    --keyboard-inset-height: 0px;
}

/* Light Theme (Default) */
.rvk-chat-wrapper,
.rvk-theme-light {
    /* Semantic Colors - Layer 2 (reference brand variables) */
    --rvk-primary: var(--rvk-brand-primary);
    --rvk-primary-hover: var(--rvk-brand-primary-hover);
    --rvk-primary-active: var(--rvk-brand-primary-active);
    --rvk-primary-light: rgba(var(--rvk-brand-primary-rgb), 0.08);
    --rvk-primary-glow: rgba(var(--rvk-brand-primary-rgb), 0.3);

    /* Backgrounds */
    --rvk-bg-primary: #ffffff;
    --rvk-bg-secondary: #f8f9fa;
    --rvk-bg-tertiary: #f1f3f5;
    --rvk-bg-hover: #e9ecef;
    --rvk-bg-input: #ffffff;
    --rvk-bg-message-user: var(--rvk-primary);
    --rvk-bg-message-assistant: #f8f9fa;
    --rvk-bg-code: #1e1e2e;
    --rvk-bg-code-header: #2a2a3e;
    --rvk-bg-inline-code: rgba(0, 0, 0, 0.05);
    
    /* Text Colors */
    --rvk-text-primary: #1a1a2e;
    --rvk-text-secondary: #6c757d;
    --rvk-text-tertiary: #adb5bd;
    --rvk-text-inverse: #ffffff;
    --rvk-text-code: #e9ecef;
    --rvk-text-link: #0891b2;
    
    /* Borders */
    --rvk-border-light: rgba(0, 0, 0, 0.06);
    --rvk-border-medium: rgba(0, 0, 0, 0.1);
    --rvk-border-focus: var(--rvk-primary);
    
    /* Scrollbar */
    --rvk-scrollbar-thumb: #ced4da;
    --rvk-scrollbar-track: transparent;
}

/* Dark Theme */
.rvk-theme-dark {
    /* Semantic Colors - Layer 2 (reference brand variables) */
    --rvk-primary: var(--rvk-brand-primary);
    --rvk-primary-hover: var(--rvk-brand-primary-hover);
    --rvk-primary-active: var(--rvk-brand-primary-active);
    --rvk-primary-light: rgba(var(--rvk-brand-primary-rgb), 0.12);
    --rvk-primary-glow: rgba(var(--rvk-brand-primary-rgb), 0.4);

    /* Backgrounds */
    --rvk-bg-primary: #1a1a2e;
    --rvk-bg-secondary: #242438;
    --rvk-bg-tertiary: #2e2e44;
    --rvk-bg-hover: #363652;
    --rvk-bg-input: #242438;
    --rvk-bg-message-user: var(--rvk-primary);
    --rvk-bg-message-assistant: #242438;
    --rvk-bg-code: #0d0d14;
    --rvk-bg-code-header: #16161f;
    --rvk-bg-inline-code: rgba(255, 255, 255, 0.08);
    
    /* Text Colors */
    --rvk-text-primary: #f1f3f5;
    --rvk-text-secondary: #adb5bd;
    --rvk-text-tertiary: #6c757d;
    --rvk-text-inverse: #ffffff;
    --rvk-text-code: #e9ecef;
    --rvk-text-link: #1eb88a;
    
    /* Borders */
    --rvk-border-light: rgba(255, 255, 255, 0.06);
    --rvk-border-medium: rgba(255, 255, 255, 0.1);
    --rvk-border-focus: var(--rvk-primary);
    
    /* Scrollbar */
    --rvk-scrollbar-thumb: #4a4a60;
    --rvk-scrollbar-track: transparent;
}

/* ============================================
   TYPOGRAPHY INHERITANCE
   ============================================ */

/* Use plugin's own typography - isolated from WordPress theme */
.rvk-chat-wrapper {
    font-family: var(--rvk-font-family,
                 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
    font-size: 15px;
    line-height: 1.6;
}

/* Message content typography */
.rvk-message-content {
    font-size: var(--rvk-message-font-size, 15px);
    line-height: 1.6;
}

/* Header typography - can differ from body */
.rvk-chat-header-title {
    font-family: var(--rvk-font-family-heading, inherit);
}

/* Code blocks always use monospace */
.rvk-code-block code,
.rvk-message-content code {
    font-family: 'SF Mono', 'Fira Code', 'Consolas', 'Monaco', monospace;
}

/* ============================================
   CONTAINMENT CONTEXTS
   ============================================ */

/* Container query support - enables component-level responsiveness */
@supports (container-type: inline-size) {
    /* Main wrapper containment (for inline modes only - popup uses fixed positioning)
       Note: container-type creates a new containing block which breaks position: fixed,
       so we only apply it to inline modes where fixed positioning is not needed */
    .rvk-chat-wrapper[data-mode="inline"],
    .rvk-chat-wrapper[data-mode="inline-sidebar"] {
        container-type: inline-size;
        container-name: rvk-chat;
    }

    /* Messages area containment (for inline-sidebar mode) */
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-messages {
        container-type: inline-size;
        container-name: rvk-messages-area;
    }

    /* Sidebar containment */
    .rvk-recommendations-sidebar {
        container-type: inline-size;
        container-name: rvk-sidebar;
    }
}

/* ============================================
   TOUCH BEHAVIOR
   ============================================ */

/* Interactive elements - prevent double-tap zoom */
.rvk-chat-wrapper button,
.rvk-chat-wrapper a,
.rvk-chat-wrapper [role="button"],
.rvk-chat-wrapper .rvk-recommendation-item,
.rvk-chat-wrapper .rvk-float-icon,
.rvk-chat-wrapper .rvk-chat-minimize,
.rvk-chat-wrapper .rvk-chat-close,
.rvk-chat-wrapper .rvk-send-button,
.rvk-chat-wrapper .rvk-copy-btn,
.rvk-chat-wrapper.rvk-minimized {
    touch-action: manipulation;
}

/* Scrollable containers - allow vertical panning only */
.rvk-chat-messages,
.rvk-recommendations-sidebar,
.rvk-recommendations-list {
    touch-action: pan-y;
}

/* Scroll containment - prevent scroll chaining to page */
.rvk-chat-messages,
.rvk-recommendations-sidebar,
.rvk-recommendations-list {
    overscroll-behavior-y: contain;
    overscroll-behavior-x: none;
    -webkit-overflow-scrolling: touch; /* iOS < 13 fallback */
}

/* Custom tap highlight for interactive elements */
.rvk-chat-wrapper button,
.rvk-chat-wrapper a,
.rvk-chat-wrapper [role="button"],
.rvk-chat-wrapper .rvk-recommendation-item {
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
}

.rvk-theme-dark button,
.rvk-theme-dark a,
.rvk-theme-dark [role="button"],
.rvk-theme-dark .rvk-recommendation-item {
    -webkit-tap-highlight-color: rgba(255, 255, 255, 0.1);
}

/* ============================================
   CONTAINER QUERIES - NARROW LAYOUTS
   ============================================ */

/* Container queries for responsive layouts based on container width, not viewport */
@supports (container-type: inline-size) {
    /* Narrow chat wrapper (max-width: 350px) - for inline in narrow columns */
    @container rvk-chat (max-width: 350px) {
        .rvk-chat-header {
            padding: 12px 14px;
        }

        .rvk-chat-title {
            font-size: 14px;
            gap: 8px;
        }

        .rvk-chat-messages {
            padding: 12px;
            gap: 10px;
        }

        .rvk-message-user .rvk-message-content {
            max-width: 95%;
        }

        .rvk-message-content {
            padding: 10px 12px;
            font-size: 14px;
        }

        .rvk-chat-input-wrapper {
            padding: 10px 12px;
            gap: 8px;
        }

        .rvk-welcome-icon {
            width: 48px;
            height: 48px;
            font-size: 22px;
        }

        .rvk-welcome-message h3 {
            font-size: 16px;
        }

        .rvk-welcome-message p {
            font-size: 13px;
        }
    }

    /* Very narrow chat wrapper (max-width: 280px) - extreme compacting */
    @container rvk-chat (max-width: 280px) {
        .rvk-chat-title span {
            display: none; /* Hide title text, show icon only */
        }

        .rvk-code-block pre {
            font-size: 11px;
        }

        .rvk-welcome-message {
            padding: 24px 12px;
        }
    }

    /* Inline-sidebar grid collapse (container-based alternative to @media 768px) */
    @container rvk-chat (max-width: 600px) {
        .rvk-chat-wrapper[data-mode="inline-sidebar"] {
            grid-template-columns: 1fr;
            grid-template-rows: auto 1fr auto auto auto;
        }

        .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-messages {
            grid-column: 1;
            grid-row: 2;
            border-right: none;
            border-bottom: 1px solid var(--rvk-border-light);
        }

        .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-recommendations-sidebar {
            grid-column: 1;
            grid-row: 4;
            max-height: 300px;
            border-top: 1px solid var(--rvk-border-light);
        }

        .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-input-wrapper {
            grid-row: 3;
        }

        .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-powered-by {
            grid-row: 5;
        }

        /* Split header collapse */
        .rvk-chat-header.rvk-header-split {
            grid-template-columns: 1fr auto;
            padding: 0;
        }

        .rvk-header-split .rvk-chat-title {
            border-right: none;
        }

        .rvk-header-split .rvk-header-right {
            padding: 0 12px;
        }

        .rvk-header-split .rvk-recommendations-title {
            display: none;
        }
    }

    /* Sidebar narrow (max-width: 300px) - compact recommendation cards */
    @container rvk-sidebar (max-width: 300px) {
        .rvk-recommendation-item {
            padding: 10px;
        }

        .rvk-recommendation-title {
            font-size: 12px;
        }

        .rvk-recommendation-excerpt {
            font-size: 11px;
            -webkit-line-clamp: 2;
        }

        .rvk-recommendation-meta {
            font-size: 10px;
        }

        /* Responsive aspect ratio for narrow sidebars */
        .rvk-recommendation-stacked .rvk-recommendation-image {
            aspect-ratio: 16 / 10;
        }

        .rvk-recommendation-image[data-fallback]::after,
        .rvk-recommendation-placeholder::after {
            font-size: 16px;
        }
    }

    /* Sidebar very narrow (max-width: 220px) - minimal view */
    @container rvk-sidebar (max-width: 220px) {
        .rvk-recommendation-stacked .rvk-recommendation-image {
            aspect-ratio: 3 / 1;
        }

        .rvk-recommendation-excerpt {
            display: none;
        }
    }
}

/* ============================================
   MODE ISOLATION WITH @SCOPE
   ============================================ */

/* @scope provides additional isolation layer for multi-mode pages
   When popup and inline modes coexist, this prevents CSS cascade conflicts */

@supports (selector(:scope)) {
    /* Popup mode - z-index isolation for multi-mode pages
       Note: position/coordinates handled by base popup styles (line ~397) */
    @scope (.rvk-chat-wrapper[data-mode="popup"]) {
        :scope {
            z-index: 999999;
        }

        :scope.rvk-minimized {
            /* Bubble state inherits positioning from base styles */
        }
    }

    /* Inline mode - relative positioning with normal z-index */
    @scope (.rvk-chat-wrapper[data-mode="inline"]) {
        :scope {
            position: relative;
            z-index: 1;
        }

        /* Inline modes are embedded in page - no close button needed */
        .rvk-chat-close {
            display: none;
        }
    }

    /* Inline-sidebar mode - relative positioning with normal z-index */
    @scope (.rvk-chat-wrapper[data-mode="inline-sidebar"]) {
        :scope {
            position: relative;
            z-index: 1;
        }

        /* Inline modes are embedded in page - no close button needed */
        .rvk-chat-close {
            display: none;
        }
    }
}

/* ============================================
   FLUID TYPOGRAPHY WITH CONTAINER UNITS
   ============================================ */

/* Typography that scales smoothly with container width using cqi units
   clamp() ensures accessibility bounds (min/max) with fluid middle value */

/* Fluid typography only for inline modes where container width varies */
@supports (font-size: 1cqi) {
    .rvk-chat-wrapper[data-mode="inline"] .rvk-message-content,
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-message-content {
        font-size: clamp(13px, 12px + 1cqi, 16px);
    }

    .rvk-chat-wrapper[data-mode="inline"] .rvk-chat-title span,
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-title span {
        font-size: clamp(14px, 12px + 2cqi, 18px);
    }

    .rvk-chat-wrapper[data-mode="inline"] .rvk-welcome-message h3,
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-welcome-message h3 {
        font-size: clamp(16px, 14px + 2cqi, 22px);
    }

    .rvk-chat-wrapper[data-mode="inline"] .rvk-welcome-message p,
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-welcome-message p {
        font-size: clamp(12px, 11px + 1cqi, 15px);
    }

    .rvk-chat-wrapper[data-mode="inline"] .rvk-recommendation-title,
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-recommendation-title {
        font-size: clamp(11px, 10px + 1cqi, 14px);
    }

    .rvk-chat-wrapper[data-mode="inline"] .rvk-recommendation-excerpt,
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-recommendation-excerpt {
        font-size: clamp(10px, 9px + 0.8cqi, 13px);
    }
}

/* ============================================
   BASE CONTAINER STYLES
   ============================================ */

.rvkai-chat-container {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    font-size: 15px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    position: relative;
}

/* ============================================
   CHAT WRAPPER - MAIN CONTAINER
   ============================================ */

.rvk-chat-wrapper {
    position: fixed;
    z-index: 2147483646;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    font-size: 15px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    transition: all var(--rvk-transition-slow);
    overflow-x: hidden; /* Prevent horizontal overflow globally */
    box-sizing: border-box;
}

/* ============================================
   POPUP MODE (Default)
   ============================================ */

.rvk-chat-wrapper[data-mode="popup"] {
    bottom: var(--rvk-offset-y);
    right: var(--rvk-offset-x);
    width: var(--rvk-chat-width);
    height: var(--rvk-chat-height);
    max-height: calc(100vh - 48px);
    max-height: calc(-webkit-fill-available - 48px);
    max-height: calc(100dvh - 48px);
    max-width: calc(100vw - 48px);
    border-radius: var(--rvk-radius-xl);
    background: var(--rvk-bg-primary);
    box-shadow: var(--rvk-shadow-xl);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--rvk-border-light);
}

/* Position Variants */
.rvk-chat-wrapper[data-position="bottom-left"] {
    right: auto;
    left: var(--rvk-offset-x);
}

.rvk-chat-wrapper[data-position="top-right"] {
    bottom: auto;
    top: var(--rvk-offset-y);
}

.rvk-chat-wrapper[data-position="top-left"] {
    bottom: auto;
    top: var(--rvk-offset-y);
    right: auto;
    left: var(--rvk-offset-x);
}

/* Minimized State */
.rvk-chat-wrapper.rvk-minimized {
    width: var(--rvk-bubble-size);
    height: var(--rvk-bubble-size);
    border-radius: var(--rvk-radius-full);
    cursor: pointer;
    background: var(--rvk-primary);
    box-shadow: var(--rvk-shadow-lg);
    border: none;
    /* Ensure bubble is always on top of page content */
    z-index: 2147483647;
    isolation: isolate;
}

.rvk-chat-wrapper.rvk-minimized:hover {
    transform: scale(1.08);
    box-shadow: var(--rvk-shadow-xl);
}

.rvk-chat-wrapper.rvk-minimized .rvk-chat-header,
.rvk-chat-wrapper.rvk-minimized .rvk-chat-messages,
.rvk-chat-wrapper.rvk-minimized .rvk-chat-input-wrapper,
.rvk-chat-wrapper.rvk-minimized .rvk-powered-by {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

/* Floating Icon */
.rvk-float-icon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-size: var(--rvk-bubble-icon-size, 26px);
    opacity: 0;
    visibility: hidden;
    transition: all var(--rvk-transition-normal);
}

.rvk-float-icon i {
    display: block;
    line-height: 1;
}

.rvk-chat-wrapper.rvk-minimized .rvk-float-icon {
    opacity: 1;
    visibility: visible;
}

/* Button Style Variants */
.rvk-chat-wrapper.rvk-minimized[data-button-style="rounded"] {
    border-radius: var(--rvk-radius-lg);
}

.rvk-chat-wrapper.rvk-minimized[data-button-style="pill"] {
    border-radius: var(--rvk-radius-full);
    width: auto;
    min-width: var(--rvk-bubble-size);
    padding: 0 20px;
}

/* ============================================
   FULLSCREEN POPUP MODE
   ============================================ */

/* Fullscreen mode when opened (not minimized) */
.rvk-chat-wrapper[data-mode="popup"][data-fullscreen="true"]:not(.rvk-minimized) {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100vw;
    height: 100vh;
    height: -webkit-fill-available;
    height: 100dvh;
    max-width: 100vw;
    max-height: 100vh;
    max-height: -webkit-fill-available;
    max-height: 100dvh;
    border-radius: 0;
    z-index: 2147483646;
}

/* Ensure close button is prominent in fullscreen */
.rvk-chat-wrapper[data-mode="popup"][data-fullscreen="true"]:not(.rvk-minimized) .rvk-chat-close {
    width: 44px;
    height: 44px;
    font-size: 20px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: var(--rvk-radius-md);
}

.rvk-chat-wrapper[data-mode="popup"][data-fullscreen="true"]:not(.rvk-minimized) .rvk-chat-close:hover {
    background: rgba(255, 255, 255, 0.2);
}

/* Fullscreen header adjustments */
.rvk-chat-wrapper[data-mode="popup"][data-fullscreen="true"]:not(.rvk-minimized) .rvk-chat-header {
    padding: 20px 24px;
    padding-top: max(20px, env(safe-area-inset-top, 0));
    padding-left: max(24px, env(safe-area-inset-left, 0));
    padding-right: max(24px, env(safe-area-inset-right, 0));
}

/* Fullscreen messages area - more breathing room */
.rvk-chat-wrapper[data-mode="popup"][data-fullscreen="true"]:not(.rvk-minimized) .rvk-chat-messages {
    padding: 24px;
    max-width: 900px;
    margin: 0 auto;
    width: 100%;
}

/* Fullscreen input area */
.rvk-chat-wrapper[data-mode="popup"][data-fullscreen="true"]:not(.rvk-minimized) .rvk-chat-input-wrapper {
    padding: 20px 24px;
    padding-bottom: max(20px, env(safe-area-inset-bottom, 0));
    padding-left: max(24px, env(safe-area-inset-left, 0));
    padding-right: max(24px, env(safe-area-inset-right, 0));
    max-width: 900px;
    margin: 0 auto;
    width: 100%;
    box-sizing: border-box;
}

/* Fullscreen powered by */
.rvk-chat-wrapper[data-mode="popup"][data-fullscreen="true"]:not(.rvk-minimized) .rvk-powered-by {
    padding: 12px 24px;
    padding-bottom: max(12px, env(safe-area-inset-bottom, 0));
    padding-left: max(24px, env(safe-area-inset-left, 0));
    padding-right: max(24px, env(safe-area-inset-right, 0));
}

/* ============================================
   MOBILE: FORCE FULLSCREEN FOR POPUP
   ============================================ */

/* On mobile (<=768px), popup mode is always fullscreen */
@media (max-width: 768px) {
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        width: 100vw;
        height: 100vh;
        height: -webkit-fill-available;
        height: 100dvh;
        max-width: 100vw;
        max-height: 100vh;
        max-height: -webkit-fill-available;
        max-height: 100dvh;
        border-radius: 0;
        z-index: 2147483646;
        display: flex;
        flex-direction: column;
        overflow: hidden; /* Prevent any overflow from wrapper */
    }

    /* Keyboard visible - JS sets height/maxHeight directly via visualViewport */
    .rvk-chat-wrapper[data-mode="popup"].rvk-keyboard-visible:not(.rvk-minimized) {
        /* Height is set inline by MobileKeyboardHandler for reliability */
        overflow: hidden;
    }

    /* Messages area must flex to fill available space */
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-chat-messages {
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
        overflow-x: hidden; /* Prevent horizontal scroll */
        -webkit-overflow-scrolling: touch;
        max-width: 100%;
    }

    /* Input wrapper stays at bottom, doesn't shrink */
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-chat-input-wrapper {
        flex-shrink: 0;
    }

    /* Ensure header respects safe areas on mobile */
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-chat-header {
        flex-shrink: 0;
        padding-top: max(16px, env(safe-area-inset-top, 0));
        padding-left: max(16px, env(safe-area-inset-left, 0));
        padding-right: max(16px, env(safe-area-inset-right, 0));
    }

    /* Ensure input respects safe areas on mobile */
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-chat-input-wrapper {
        padding-bottom: max(12px, env(safe-area-inset-bottom, 0));
        padding-left: max(12px, env(safe-area-inset-left, 0));
        padding-right: max(12px, env(safe-area-inset-right, 0));
    }

    /* Ensure drawer toggle respects safe areas */
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-drawer-toggle {
        flex-shrink: 0;
        padding-left: max(16px, env(safe-area-inset-left, 0));
        padding-right: max(16px, env(safe-area-inset-right, 0));
    }
}

/* ============================================
   INLINE MODE
   ============================================ */

.rvk-chat-wrapper[data-mode="inline"] {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 400px;
    border-radius: var(--rvk-radius-lg);
    background: var(--rvk-bg-primary);
    box-shadow: var(--rvk-shadow-md);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--rvk-border-light);
    z-index: 1;
    bottom: auto;
    right: auto;
    left: auto;
    top: auto;
}

.rvk-chat-wrapper[data-mode="inline"] .rvk-float-icon {
    display: none !important;
}

/* Inline modes should not have close button - they're embedded in page */
.rvk-chat-wrapper[data-mode="inline"] .rvk-chat-close {
    display: none;
}

/* ============================================
   INLINE SIDEBAR MODE
   ============================================ */

.rvk-chat-wrapper[data-mode="inline-sidebar"] {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 600px;
    border-radius: var(--rvk-radius-lg);
    background: var(--rvk-bg-primary);
    box-shadow: var(--rvk-shadow-md);
    display: grid;
    grid-template-columns: 1fr 350px;
    grid-template-rows: auto 1fr auto auto;
    gap: 0;
    overflow: hidden;
    border: 1px solid var(--rvk-border-light);
    z-index: 1;
}

.rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-header {
    grid-column: 1 / -1;
    grid-row: 1;
}

.rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-messages {
    grid-column: 1;
    grid-row: 2;
    border-right: 1px solid var(--rvk-border-light);
    padding: 20px;
}

/* Ensure content aligns between chat and recommendations */
.rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-messages > *:first-child {
    margin-top: 0;
}

.rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-recommendations-sidebar {
    padding: 20px;
}

.rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-recommendations-list {
    margin-top: 0;
}

.rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-input-wrapper {
    grid-column: 1 / -1;
    grid-row: 3;
}

.rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-powered-by {
    grid-column: 1 / -1;
    grid-row: 4;
}

.rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-float-icon {
    display: none !important;
}

/* Inline-sidebar mode should not have close button - it's embedded in page */
.rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-close {
    display: none;
}

/* Recommendations Sidebar */
.rvk-recommendations-sidebar {
    grid-column: 2;
    grid-row: 2;
    background: var(--rvk-bg-secondary);
    padding: 20px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 16px;
    scrollbar-width: thin;
    scrollbar-color: var(--rvk-scrollbar-thumb) var(--rvk-scrollbar-track);
}

.rvk-recommendations-sidebar::-webkit-scrollbar {
    width: 6px;
}

.rvk-recommendations-sidebar::-webkit-scrollbar-track {
    background: var(--rvk-scrollbar-track);
}

.rvk-recommendations-sidebar::-webkit-scrollbar-thumb {
    background: var(--rvk-scrollbar-thumb);
    border-radius: var(--rvk-radius-full);
}

.rvk-recommendations-sidebar::-webkit-scrollbar-thumb:hover {
    background: var(--rvk-text-tertiary);
}

.rvk-recommendations-header {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 600;
    color: var(--rvk-text-primary);
    padding-bottom: 12px;
    border-bottom: 1px solid var(--rvk-border-light);
}

.rvk-recommendations-header i {
    color: var(--rvk-primary);
    font-size: 16px;
}

.rvk-recommendations-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* Scrollbar styling for recommendations sidebar */
.rvk-recommendations-sidebar::-webkit-scrollbar,
.rvk-recommendations-list::-webkit-scrollbar {
    width: 6px;
}

.rvk-recommendations-sidebar::-webkit-scrollbar-track,
.rvk-recommendations-list::-webkit-scrollbar-track {
    background: var(--rvk-scrollbar-track);
}

.rvk-recommendations-sidebar::-webkit-scrollbar-thumb,
.rvk-recommendations-list::-webkit-scrollbar-thumb {
    background: var(--rvk-scrollbar-thumb);
    border-radius: var(--rvk-radius-full);
}

.rvk-recommendations-sidebar::-webkit-scrollbar-thumb:hover,
.rvk-recommendations-list::-webkit-scrollbar-thumb:hover {
    background: var(--rvk-text-tertiary);
}

.rvk-recommendation-item {
    background: var(--rvk-bg-primary);
    border: 1px solid var(--rvk-border-light);
    border-radius: var(--rvk-radius-md);
    padding: 12px;
    transition: all var(--rvk-transition-fast);
    cursor: pointer;
    text-decoration: none;
    color: inherit;
    display: block;
}

.rvk-recommendation-item:hover {
    border-color: var(--rvk-primary);
    box-shadow: 0 2px 8px var(--rvk-primary-light);
    transform: translateY(-1px);
}

.rvk-recommendation-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--rvk-text-primary);
    margin-bottom: 4px;
    line-height: 1.4;
}

.rvk-recommendation-excerpt {
    font-size: 12px;
    color: var(--rvk-text-secondary);
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.rvk-recommendation-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
    font-size: 11px;
    color: var(--rvk-text-tertiary);
}

.rvk-recommendation-type {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    background: var(--rvk-primary-light);
    color: var(--rvk-primary);
    border-radius: 4px;
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rvk-recommendation-type i {
    font-size: 9px;
}

.rvk-recommendations-empty {
    text-align: center;
    padding: 40px 20px;
    color: var(--rvk-text-tertiary);
    font-size: 13px;
}

.rvk-recommendations-empty i {
    font-size: 32px;
    margin-bottom: 12px;
    opacity: 0.5;
}

/* ============================================
   RECOMMENDATION CARD LAYOUTS
   ============================================ */

/* Base image styling - consistent across layouts */
.rvk-recommendation-image {
    position: relative;
    display: block;
    width: 100%;
    background-color: var(--rvk-bg-tertiary);
    overflow: hidden;
}

/* Stacked Layout (default) - Large image on top */
.rvk-recommendation-stacked {
    display: flex;
    flex-direction: column;
}

.rvk-recommendation-stacked .rvk-recommendation-image {
    aspect-ratio: 16 / 9;
    border-radius: var(--rvk-radius-sm) var(--rvk-radius-sm) 0 0;
    object-fit: cover;
    margin-bottom: 10px;
}

/* Horizontal Layout - Image on left side */
.rvk-recommendation-horizontal {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 12px;
}

.rvk-recommendation-horizontal .rvk-recommendation-image {
    width: 80px;
    aspect-ratio: 4 / 3;
    border-radius: var(--rvk-radius-sm);
    object-fit: cover;
    flex-shrink: 0;
}

.rvk-recommendation-horizontal .rvk-recommendation-content {
    flex: 1;
    min-width: 0;
}

/* Compact Layout - Small thumbnail */
.rvk-recommendation-compact {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    padding: 10px;
}

.rvk-recommendation-compact .rvk-recommendation-image {
    width: 48px;
    aspect-ratio: 1 / 1;
    border-radius: var(--rvk-radius-sm);
    object-fit: cover;
    flex-shrink: 0;
}

/* Fallback state - show placeholder icon when image fails */
.rvk-recommendation-image[data-fallback],
.rvk-recommendation-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rvk-text-tertiary);
}

.rvk-recommendation-image[data-fallback]::after,
.rvk-recommendation-placeholder::after {
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 20px;
    content: "\f15c"; /* fa-file-lines default */
}

/* Type-specific fallback icons */
.rvk-recommendation-item[data-type="blog"] .rvk-recommendation-image[data-fallback]::after,
.rvk-recommendation-item[data-type="blog"] .rvk-recommendation-placeholder::after,
.rvk-recommendation-item[data-type="post"] .rvk-recommendation-image[data-fallback]::after,
.rvk-recommendation-item[data-type="post"] .rvk-recommendation-placeholder::after {
    content: "\f1ea"; /* fa-newspaper */
}

.rvk-recommendation-item[data-type="video"] .rvk-recommendation-image[data-fallback]::after,
.rvk-recommendation-item[data-type="video"] .rvk-recommendation-placeholder::after {
    content: "\f04b"; /* fa-play */
}

.rvk-recommendation-item[data-type="page"] .rvk-recommendation-image[data-fallback]::after,
.rvk-recommendation-item[data-type="page"] .rvk-recommendation-placeholder::after {
    content: "\f15c"; /* fa-file-lines */
}

/* ============================================
   VIDEO CARD PLAY BUTTON OVERLAY
   ============================================ */

/* Play button overlay for video recommendation cards */
.rvk-recommendation-item[data-type="video"] .rvk-recommendation-image::after {
    content: "\f04b"; /* fa-play */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 24px;
    color: white;
    background: rgba(0, 0, 0, 0.6);
    width: 64px;
    height: 64px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease, background 0.2s ease;
    z-index: 2;
    pointer-events: none;
    /* Adjust icon position slightly right for visual centering */
    padding-left: 4px;
    box-sizing: border-box;
}

/* Hide play button on fallback/placeholder state (don't overlay on placeholder icon) */
.rvk-recommendation-item[data-type="video"] .rvk-recommendation-image[data-fallback]::after,
.rvk-recommendation-item[data-type="video"] .rvk-recommendation-placeholder::after {
    content: "\f04b"; /* fa-play - for fallback, just show play icon without circle */
    background: none;
    width: auto;
    height: auto;
    padding-left: 0;
}

/* Hover state for play button */
.rvk-recommendation-item[data-type="video"]:hover .rvk-recommendation-image:not([data-fallback])::after {
    transform: translate(-50%, -50%) scale(1.1);
    background: rgba(0, 0, 0, 0.8);
}

.rvk-recommendation-compact .rvk-recommendation-content {
    flex: 1;
    min-width: 0;
}

.rvk-recommendation-compact .rvk-recommendation-title {
    font-size: 12px;
    margin-bottom: 2px;
}

.rvk-recommendation-compact .rvk-recommendation-excerpt {
    display: none;
}

.rvk-recommendation-compact .rvk-recommendation-meta {
    margin-top: 4px;
    font-size: 10px;
}

/* Minimal Layout - Text only, no image */
.rvk-recommendation-minimal {
    padding: 10px 12px;
}

.rvk-recommendation-minimal .rvk-recommendation-image {
    display: none;
}

.rvk-recommendation-minimal .rvk-recommendation-title {
    font-size: 13px;
}

.rvk-recommendation-minimal .rvk-recommendation-excerpt {
    font-size: 11px;
    -webkit-line-clamp: 2;
}

/* Layout container classes */
.rvk-recommendations-list.rvk-layout-compact .rvk-recommendation-item,
.rvk-recommendations-list.rvk-layout-minimal .rvk-recommendation-item {
    padding: 10px;
}

/* Mobile responsive for inline-sidebar
   FALLBACK: This @media query serves as a fallback for browsers without
   container query support. The @container rvk-chat (max-width: 600px) rule
   in the CONTAINER QUERIES section handles this more elegantly for supported browsers. */
@media (max-width: 768px) {
    .rvk-chat-wrapper[data-mode="inline-sidebar"] {
        grid-template-columns: 1fr;
        grid-template-rows: auto 1fr auto auto auto;
    }
    
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-messages {
        grid-column: 1;
        grid-row: 2;
        border-right: none;
        border-bottom: 1px solid var(--rvk-border-light);
    }
    
    .rvk-recommendations-sidebar {
        grid-column: 1;
        grid-row: 4;
        max-height: 300px;
        border-top: 1px solid var(--rvk-border-light);
    }
    
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-chat-input-wrapper {
        grid-row: 3;
    }
    
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-powered-by {
        grid-row: 5;
    }
}

/* ============================================
   POPUP RECOMMENDATIONS DRAWER
   ============================================ */

/* Toggle button in header */
.rvk-recommendations-toggle {
    position: relative;
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    border-radius: 6px;
    background: transparent;
    border: none;
    color: rgba(255, 255, 255, 0.8);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all var(--rvk-transition-fast);
    margin-right: 4px;
}

.rvk-recommendations-toggle:hover {
    background: rgba(255, 255, 255, 0.15);
    color: white;
}

.rvk-recommendations-toggle i {
    font-size: 14px;
}

.rvk-recommendations-badge {
    position: absolute;
    top: -6px;
    right: -8px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    background: #ef4444;
    color: white;
    font-size: 9px;
    font-weight: 700;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

/* Drawer container - positioned relative to chat wrapper */
.rvk-recommendations-drawer {
    position: relative;
    z-index: 50;
}

/* Panel slides down */
.rvk-recommendations-panel {
    max-height: 0;
    background: var(--rvk-bg-primary);
    border-bottom: 1px solid transparent;
    box-shadow: none;
    opacity: 0;
    overflow: hidden;
    transition: all 0.3s ease;
}

.rvk-drawer-open .rvk-recommendations-panel {
    max-height: 320px;
    opacity: 1;
    border-bottom-color: var(--rvk-border-light);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

/* When drawer is open, highlight the toggle button */
.rvk-drawer-open + .rvk-chat-messages ~ .rvk-chat-input-wrapper .rvk-recommendations-toggle,
.rvk-chat-wrapper:has(.rvk-drawer-open) .rvk-recommendations-toggle {
    background: rgba(255, 255, 255, 0.2);
    color: white;
}

.rvk-recommendations-panel-header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    background: var(--rvk-bg-secondary);
    border-bottom: 1px solid var(--rvk-border-light);
    font-size: 12px;
    font-weight: 600;
    color: var(--rvk-text-primary);
}

.rvk-recommendations-panel-header i:first-child {
    color: var(--rvk-primary);
    font-size: 12px;
}

.rvk-recommendations-panel-header span {
    flex: 1;
}

.rvk-recommendations-panel-close {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    border: none;
    background: transparent;
    color: var(--rvk-text-tertiary);
    cursor: pointer;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all var(--rvk-transition-fast);
    font-size: 14px;
}

.rvk-recommendations-panel-close:hover {
    background: var(--rvk-bg-hover);
    color: var(--rvk-text-primary);
}

.rvk-recommendations-drawer .rvk-recommendations-list {
    max-height: 260px;
    overflow-y: auto;
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* Scrollbar styling for recommendations */
.rvk-recommendations-drawer .rvk-recommendations-list::-webkit-scrollbar {
    width: 6px;
}

.rvk-recommendations-drawer .rvk-recommendations-list::-webkit-scrollbar-track {
    background: var(--rvk-scrollbar-track);
}

.rvk-recommendations-drawer .rvk-recommendations-list::-webkit-scrollbar-thumb {
    background: var(--rvk-scrollbar-thumb);
    border-radius: var(--rvk-radius-full);
}

.rvk-recommendations-drawer .rvk-recommendations-list::-webkit-scrollbar-thumb:hover {
    background: var(--rvk-text-tertiary);
}

.rvk-recommendations-drawer .rvk-recommendation-item {
    padding: 10px 12px;
    background: var(--rvk-bg-secondary);
    border: 1px solid var(--rvk-border-light);
    border-radius: var(--rvk-radius-sm);
}

.rvk-recommendations-drawer .rvk-recommendation-item:hover {
    background: var(--rvk-bg-hover);
    border-color: var(--rvk-primary);
}

.rvk-recommendations-drawer .rvk-recommendation-title {
    font-size: 12px;
    margin-bottom: 2px;
}

.rvk-recommendations-drawer .rvk-recommendation-excerpt {
    font-size: 11px;
    -webkit-line-clamp: 1;
}

.rvk-recommendations-drawer .rvk-recommendation-meta {
    margin-top: 6px;
}

.rvk-recommendations-drawer .rvk-recommendations-empty {
    padding: 24px 16px;
    font-size: 12px;
}

.rvk-recommendations-drawer .rvk-recommendations-empty i {
    font-size: 20px;
    margin-bottom: 8px;
    display: block;
}

/* Hide drawer and toggle when chat is minimized */
.rvk-chat-wrapper.rvk-minimized .rvk-recommendations-drawer,
.rvk-chat-wrapper.rvk-minimized .rvk-drawer-toggle {
    display: none !important;
}

/* ============================================
   INLINE CUSTOMIZATION OPTIONS
   ============================================ */

/* No Header Mode - for hero/header integration */
.rvk-chat-wrapper.rvk-no-header .rvk-chat-header {
    display: none;
}

.rvk-chat-wrapper.rvk-no-header .rvk-chat-messages {
    border-radius: var(--rvk-radius-lg) var(--rvk-radius-lg) 0 0;
}

.rvk-chat-wrapper.rvk-no-header[data-mode="inline"],
.rvk-chat-wrapper.rvk-no-header[data-mode="inline-sidebar"] {
    border-radius: var(--rvk-radius-lg);
}

/* No Footer Mode */
.rvk-chat-wrapper.rvk-no-footer .rvk-powered-by {
    display: none;
}

/* No Input Border Mode - seamless integration */
.rvk-chat-wrapper.rvk-no-input-border .rvk-chat-input {
    border: none;
    background: transparent;
    box-shadow: none;
}

.rvk-chat-wrapper.rvk-no-input-border .rvk-chat-input:focus {
    border: none;
    box-shadow: none;
}

.rvk-chat-wrapper.rvk-no-input-border .rvk-chat-input-wrapper {
    background: var(--rvk-bg-secondary);
    border-top: none;
}

/* Compact Mode - reduced padding/margins */
.rvk-chat-wrapper.rvk-compact .rvk-chat-header {
    padding: 10px 14px;
}

.rvk-chat-wrapper.rvk-compact .rvk-chat-title {
    font-size: 14px;
    gap: 8px;
}

.rvk-chat-wrapper.rvk-compact .rvk-chat-messages {
    padding: 12px;
    gap: 10px;
}

.rvk-chat-wrapper.rvk-compact .rvk-chat-input-wrapper {
    padding: 10px 12px;
    gap: 8px;
}

.rvk-chat-wrapper.rvk-compact .rvk-chat-input {
    padding: 8px 12px;
    font-size: 14px;
    min-height: 40px;
    height: 40px;
}

.rvk-chat-wrapper.rvk-compact .rvk-send-button {
    width: 40px;
    height: 40px;
    min-width: 40px;
    min-height: 40px;
}

.rvk-chat-wrapper.rvk-compact .rvk-message-content {
    padding: 8px 12px;
    font-size: 14px;
}

.rvk-chat-wrapper.rvk-compact .rvk-welcome-message {
    padding: 24px 16px;
}

.rvk-chat-wrapper.rvk-compact .rvk-welcome-icon {
    width: 48px;
    height: 48px;
    font-size: 22px;
}

.rvk-chat-wrapper.rvk-compact .rvk-welcome-message h3 {
    font-size: 16px;
}

.rvk-chat-wrapper.rvk-compact .rvk-welcome-message p {
    font-size: 13px;
}

/* ============================================
   FOLLOW-ALONG SIDEBAR
   ============================================ */

.rvk-follow-along-sidebar {
    position: fixed;
    right: -400px;
    top: 50%;
    transform: translateY(-50%);
    width: 360px;
    max-width: calc(100vw - 40px);
    height: 500px;
    max-height: calc(100vh - 80px);
    max-height: calc(-webkit-fill-available - 80px);
    max-height: calc(100dvh - 80px);
    background: var(--rvk-bg-primary, #ffffff);
    border-radius: var(--rvk-radius-xl, 24px) 0 0 var(--rvk-radius-xl, 24px);
    box-shadow: -8px 0 40px rgba(0, 0, 0, 0.15);
    display: flex;
    flex-direction: column;
    z-index: 999998;
    transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: hidden;
}

.rvk-follow-along-sidebar.rvk-follow-along-visible {
    right: 0;
}

.rvk-follow-along-sidebar.rvk-follow-along-hiding {
    right: -400px;
}

/* Follow-along Header */
.rvk-follow-along-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 16px;
    background: var(--rvk-primary, #0891b2);
    color: #ffffff;
    flex-shrink: 0;
}

.rvk-follow-along-title {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 600;
}

.rvk-follow-along-close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    border: none;
    background: rgba(255, 255, 255, 0.1);
    color: rgba(255, 255, 255, 0.8);
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.rvk-follow-along-close:hover {
    background: rgba(255, 255, 255, 0.2);
    color: #ffffff;
}

/* Follow-along Content */
.rvk-follow-along-content {
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.rvk-follow-along-content .rvk-chat-messages,
.rvk-follow-along-content #rvk-follow-along-messages {
    flex: 1;
    overflow-y: auto;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    background: var(--rvk-bg-secondary, #f8f9fa);
}

/* Follow-along Input */
.rvk-follow-along-input-wrapper {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    background: var(--rvk-bg-primary, #ffffff);
    border-top: 1px solid var(--rvk-border-light, rgba(0, 0, 0, 0.06));
    flex-shrink: 0;
}

.rvk-follow-along-input-wrapper .rvk-input-container {
    flex: 1;
}

.rvk-follow-along-input {
    width: 100%;
    padding: 10px 14px;
    background: var(--rvk-bg-input, #ffffff);
    border: 1px solid var(--rvk-border-medium, rgba(0, 0, 0, 0.1));
    border-radius: var(--rvk-radius-md, 12px);
    color: var(--rvk-text-primary, #1a1a2e);
    font-family: inherit;
    font-size: 14px;
    line-height: 1.5;
    resize: none;
    outline: none;
    transition: all 0.2s ease;
    min-height: 42px;
    max-height: 100px;
}

.rvk-follow-along-input:focus {
    border-color: var(--rvk-primary, #0891b2);
    box-shadow: 0 0 0 3px var(--rvk-primary-light, rgba(8, 145, 178, 0.1));
}

.rvk-follow-along-send {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    background: var(--rvk-primary, #0891b2);
    border: none;
    border-radius: var(--rvk-radius-md, 12px);
    color: #ffffff;
    cursor: pointer;
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    flex-shrink: 0;
}

.rvk-follow-along-send:hover {
    background: var(--rvk-primary-hover, #0e7490);
    transform: translateY(-1px);
}

/* Source indicator */
.rvk-follow-along-source {
    position: relative;
}

.rvk-follow-along-source::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border: 2px dashed var(--rvk-primary, #0891b2);
    border-radius: inherit;
    pointer-events: none;
    opacity: 0.5;
}

/* Mobile responsive */
@media (max-width: 480px) {
    .rvk-follow-along-sidebar {
        width: 100%;
        max-width: 100%;
        height: 60vh;
        top: auto;
        bottom: 0;
        transform: translateY(100%);
        border-radius: var(--rvk-radius-xl, 24px) var(--rvk-radius-xl, 24px) 0 0;
        right: 0;
    }
    
    .rvk-follow-along-sidebar.rvk-follow-along-visible {
        transform: translateY(0);
    }

    .rvk-follow-along-sidebar.rvk-follow-along-hiding {
        transform: translateY(100%);
    }
}

/* ============================================
   KEYBOARD-AWARE LAYOUT ADJUSTMENTS
   ============================================ */

/* When keyboard is visible - JS handles height directly via visualViewport */
.rvk-chat-wrapper.rvk-keyboard-visible[data-mode="popup"]:not(.rvk-minimized) {
    /* Height/maxHeight set inline by MobileKeyboardHandler */
    transition: none; /* No animation during keyboard resize */
}

/* Ensure input wrapper stays above keyboard */
.rvk-chat-wrapper.rvk-keyboard-visible .rvk-chat-input-wrapper {
    /* Input wrapper uses sticky positioning to stay at bottom of scrollable area */
    position: sticky;
    bottom: 0;
    z-index: 10;
    background: var(--rvk-bg-primary);
}

/* Messages container shrinks to accommodate keyboard */
.rvk-chat-wrapper.rvk-keyboard-visible .rvk-chat-messages {
    /* Reduce max-height to make room for keyboard */
    flex: 1 1 auto;
    min-height: 0;
}

/* Fullscreen mode keyboard handling - JS sets height directly */
.rvk-chat-wrapper[data-mode="popup"][data-fullscreen="true"].rvk-keyboard-visible:not(.rvk-minimized),
.rvk-chat-wrapper[data-mobile-behavior="fullscreen"].rvk-keyboard-visible:not(.rvk-minimized) {
    /* Height set inline by MobileKeyboardHandler */
    transition: none;
}

/* Mobile popup should use flexbox layout to avoid fixed positioning issues */
@media (max-width: 480px) {
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) {
        display: flex;
        flex-direction: column;
    }

    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-chat-messages {
        flex: 1 1 auto;
        overflow-y: auto;
        min-height: 0; /* Critical for flex overflow */
        -webkit-overflow-scrolling: touch;
    }

    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-chat-input-wrapper {
        flex-shrink: 0;
    }
}

/* ============================================
   CHAT HEADER
   ============================================ */

.rvk-chat-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    background: var(--rvk-header-bg, var(--rvk-primary, #0891b2));
    color: #ffffff;
    border-bottom: 1px solid var(--rvk-border-light);
    flex-shrink: 0;
    transition: all var(--rvk-transition-normal);
}

/* Force white text in header for all elements */
.rvk-chat-header,
.rvk-chat-header *,
.rvk-chat-header .rvk-chat-title,
.rvk-chat-header .rvk-chat-title span,
.rvk-chat-header .rvk-chat-title i,
.rvk-chat-header .rvk-chat-icon {
    color: #ffffff !important;
}

.rvk-chat-header .rvk-chat-minimize,
.rvk-chat-header .rvk-chat-close {
    color: rgba(255, 255, 255, 0.8) !important;
}

.rvk-chat-header .rvk-chat-minimize:hover,
.rvk-chat-header .rvk-chat-close:hover {
    color: #ffffff !important;
    background: rgba(255, 255, 255, 0.1);
}

.rvk-chat-title {
    display: flex;
    align-items: center;
    gap: 12px;
    font-weight: 600;
    font-size: 16px;
}

.rvk-chat-title .rvk-chat-icon {
    font-size: 20px;
}

.rvk-chat-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}

.rvk-chat-minimize,
.rvk-chat-close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    border: none;
    background: transparent;
    cursor: pointer;
    border-radius: var(--rvk-radius-sm);
    transition: all var(--rvk-transition-fast);
    font-size: 16px;
}

/* ============================================
   SPLIT HEADER (Inline-Sidebar Mode)
   ============================================ */

.rvk-chat-header.rvk-header-split {
    display: grid;
    /* Match the main grid: 1fr for chat, 350px for sidebar */
    grid-template-columns: 1fr 350px;
    align-items: stretch;
    gap: 0;
    padding: 0;
}

.rvk-header-split .rvk-chat-title {
    padding: 16px 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    border-right: 1px solid rgba(255, 255, 255, 0.2);
}

/* Container for recommendations title and actions */
.rvk-header-split .rvk-header-right {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 12px 0 20px;
}

.rvk-header-split .rvk-recommendations-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 500;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.9) !important;
}

.rvk-header-split .rvk-recommendations-title i {
    font-size: 16px;
    color: rgba(255, 255, 255, 0.8) !important;
}

.rvk-header-split .rvk-recommendations-title span {
    color: rgba(255, 255, 255, 0.9) !important;
}

.rvk-header-split .rvk-chat-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Mobile: Collapse split header */
@media (max-width: 768px) {
    .rvk-chat-header.rvk-header-split {
        grid-template-columns: 1fr auto;
        padding: 0;
    }
    
    .rvk-header-split .rvk-chat-title {
        border-right: none;
    }
    
    .rvk-header-split .rvk-header-right {
        padding: 0 12px;
    }
    
    .rvk-header-split .rvk-recommendations-title {
        display: none;
    }
}

/* ============================================
   MESSAGES CONTAINER
   ============================================ */

.rvk-chat-messages {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden; /* Prevent horizontal overflow */
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    background: var(--rvk-bg-secondary);
    scroll-behavior: smooth;
    min-height: 0;
    max-width: 100%;
}

/* Custom Scrollbar */
.rvk-chat-messages::-webkit-scrollbar {
    width: 6px;
}

.rvk-chat-messages::-webkit-scrollbar-track {
    background: var(--rvk-scrollbar-track);
}

.rvk-chat-messages::-webkit-scrollbar-thumb {
    background: var(--rvk-scrollbar-thumb);
    border-radius: var(--rvk-radius-full);
}

.rvk-chat-messages::-webkit-scrollbar-thumb:hover {
    background: var(--rvk-text-tertiary);
}

/* ============================================
   WELCOME MESSAGE
   ============================================ */

.rvk-welcome-message {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 40px 20px;
    animation: rvk-fade-in 0.5s ease;
}

.rvk-welcome-icon {
    width: 64px;
    height: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--rvk-primary-light);
    border-radius: var(--rvk-radius-full);
    margin-bottom: 16px;
    color: var(--rvk-primary);
    font-size: 28px;
}

.rvk-welcome-message h3 {
    font-size: 20px;
    font-weight: 600;
    color: var(--rvk-text-primary);
    margin: 0 0 8px 0;
}

.rvk-welcome-message p {
    font-size: 14px;
    color: var(--rvk-text-secondary);
    margin: 0;
    max-width: 280px;
}

/* ============================================
   CHAT MESSAGES
   ============================================ */

.rvk-message {
    display: flex;
    flex-direction: column;
    animation: rvk-slide-up 0.3s ease;
    margin-bottom: 4px;
    max-width: 100%;
    min-width: 0; /* Allow flex items to shrink below content size */
    width: 100%; /* Force full width to prevent overflow */
    box-sizing: border-box;
}

.rvk-message-user {
    align-items: flex-end;
}

.rvk-message-assistant {
    align-items: flex-start;
}

.rvk-message-content {
    max-width: 85%;
    padding: 12px 16px;
    border-radius: var(--rvk-radius-lg);
    font-size: 15px;
    line-height: 1.6;
    letter-spacing: -0.01em;
    word-wrap: break-word;
    overflow-wrap: break-word;
    word-break: break-word; /* Force long words to break */
    min-width: 0; /* Allow content to shrink */
    box-sizing: border-box;
    overflow-x: hidden; /* Prevent horizontal overflow */
}

/* User Messages */
.rvk-message-user .rvk-message-content {
    background: var(--rvk-bg-message-user);
    color: var(--rvk-text-inverse);
    border-bottom-right-radius: var(--rvk-radius-sm);
    box-shadow: var(--rvk-shadow-sm);
}

/* Assistant Messages - full width */
.rvk-message-assistant .rvk-message-content {
    max-width: 100%;
    background: var(--rvk-bg-message-assistant);
    color: var(--rvk-text-primary);
    border-bottom-left-radius: var(--rvk-radius-sm);
    border: 1px solid var(--rvk-border-light);
}

/* Message Content Typography - isolate from WP theme responsive font sizes */
.rvk-message-content p,
.rvk-message-content li,
.rvk-message-content span,
.rvk-message-content div {
    font-size: inherit;
    line-height: inherit;
}

.rvk-message-content p {
    margin: 0 0 12px 0;
}

.rvk-message-content p:last-child {
    margin-bottom: 0;
}

.rvk-message-content strong,
.rvk-message-content b {
    font-weight: 600;
}

.rvk-message-content em,
.rvk-message-content i {
    font-style: italic;
}

.rvk-message-content a {
    color: var(--rvk-text-link);
    text-decoration: none;
    font-weight: 500;
    transition: opacity var(--rvk-transition-fast);
}

.rvk-message-content a:hover {
    opacity: 0.8;
    text-decoration: underline;
}

.rvk-message-user .rvk-message-content a {
    color: var(--rvk-text-inverse);
    text-decoration: underline;
}

/* Modal Links - internal/video links that open in modal */
.rvk-message-content a.rvk-modal-link {
    color: var(--rvk-brand-primary, var(--rvk-text-link));
    font-weight: 600;
    position: relative;
    padding-right: 16px;
}

.rvk-message-content a.rvk-modal-link::after {
    content: '\f35d'; /* Font Awesome external-link-alt */
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    font-size: 0.7em;
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    opacity: 0.7;
}

.rvk-message-content a.rvk-modal-link:hover {
    color: var(--rvk-brand-primary-hover, var(--rvk-primary-hover));
    text-decoration: underline;
}

.rvk-message-content a.rvk-modal-link:hover::after {
    opacity: 1;
}

/* Modal links in user messages */
.rvk-message-user .rvk-message-content a.rvk-modal-link {
    color: var(--rvk-text-inverse);
}

.rvk-message-user .rvk-message-content a.rvk-modal-link::after {
    color: var(--rvk-text-inverse);
}

/* Lists */
.rvk-message-content ul,
.rvk-message-content ol {
    margin: 8px 0;
    padding-left: 24px;
}

.rvk-message-content li {
    margin: 4px 0;
}

/* Inline Code */
.rvk-message-content code:not(pre code) {
    background: var(--rvk-bg-inline-code);
    padding: 2px 6px;
    border-radius: 4px;
    font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
    font-size: 0.9em;
}

/* Blockquotes */
.rvk-message-content blockquote {
    margin: 12px 0;
    padding: 12px 16px;
    background: var(--rvk-bg-tertiary);
    border-left: 3px solid var(--rvk-primary);
    border-radius: 0 var(--rvk-radius-sm) var(--rvk-radius-sm) 0;
    font-style: italic;
    color: var(--rvk-text-secondary);
}

/* Headings - constrain sizes within chat messages */
.rvk-message-content h1,
.rvk-message-content h2,
.rvk-message-content h3,
.rvk-message-content h4,
.rvk-message-content h5,
.rvk-message-content h6 {
    margin: 12px 0 8px 0;
    font-weight: 600;
    line-height: 1.3;
    color: var(--rvk-text-primary);
}

.rvk-message-content h1 { font-size: 1.25em; }
.rvk-message-content h2 { font-size: 1.15em; }
.rvk-message-content h3 { font-size: 1.1em; }
.rvk-message-content h4 { font-size: 1.05em; }
.rvk-message-content h5 { font-size: 1em; }
.rvk-message-content h6 { font-size: 0.95em; }

.rvk-message-content h1:first-child,
.rvk-message-content h2:first-child,
.rvk-message-content h3:first-child,
.rvk-message-content h4:first-child,
.rvk-message-content h5:first-child,
.rvk-message-content h6:first-child {
    margin-top: 0;
}

/* ============================================
   CODE BLOCKS
   ============================================ */

.rvk-code-block {
    margin: 12px 0;
    border-radius: var(--rvk-radius-md);
    overflow: hidden;
    background: var(--rvk-bg-code);
    box-shadow: var(--rvk-shadow-sm);
}

.rvk-code-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 16px;
    background: var(--rvk-bg-code-header);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.rvk-code-lang {
    font-size: 12px;
    font-weight: 500;
    color: var(--rvk-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.rvk-copy-btn {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 14px;
    min-width: 44px;
    min-height: 44px;
    background: rgba(255, 255, 255, 0.08);
    border: none;
    border-radius: var(--rvk-radius-sm);
    color: var(--rvk-text-tertiary);
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all var(--rvk-transition-fast);
}

.rvk-copy-btn:hover {
    background: rgba(255, 255, 255, 0.15);
    color: var(--rvk-text-code);
}

.rvk-copy-btn.copied {
    background: var(--rvk-primary);
    color: white;
}

.rvk-code-block pre {
    margin: 0;
    padding: 16px;
    overflow-x: auto;
    background: transparent;
}

.rvk-code-block code {
    font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
    font-size: 13px;
    line-height: 1.5;
    color: var(--rvk-text-code);
}

/* ============================================
   INPUT AREA
   ============================================ */

.rvk-chat-input-wrapper {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 20px;
    background: var(--rvk-bg-primary);
    border-top: 1px solid var(--rvk-border-light);
    flex-shrink: 0;
    position: relative;
    z-index: 5;
}

.rvk-input-container {
    flex: 1;
    position: relative;
    min-width: 0;
    z-index: 1;
}

.rvk-chat-input {
    width: 100%;
    padding: 12px 16px;
    background: var(--rvk-bg-input);
    border: 1px solid var(--rvk-border-medium);
    border-radius: var(--rvk-radius-lg);
    caret-color: var(--rvk-primary);
    color: var(--rvk-text-primary);
    font-family: inherit;
    font-size: 15px;
    line-height: 1.5;
    resize: none;
    outline: none;
    transition: all var(--rvk-transition-fast);
    height: 48px;
    min-height: 48px;
    max-height: 150px;
    box-sizing: border-box;
    -webkit-appearance: none;
    overflow-y: auto;
    scrollbar-width: none;
}

.rvk-chat-input::-webkit-scrollbar {
    display: none;
}

.rvk-chat-input::placeholder {
    color: var(--rvk-text-tertiary);
}

.rvk-theme-dark .rvk-chat-input {
    color: #ffffff;
}

.rvk-chat-input:focus {
    border-color: var(--rvk-primary);
    box-shadow: 0 0 0 3px var(--rvk-primary-light);
}

.rvk-send-button {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    min-width: 48px;
    min-height: 48px;
    background: var(--rvk-primary);
    border: none;
    border-radius: var(--rvk-radius-lg);
    color: #ffffff;
    cursor: pointer;
    font-size: 18px;
    transition: all var(--rvk-transition-fast);
    flex-shrink: 0;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    position: relative;
    z-index: 10;
}

.rvk-send-button i {
    color: #ffffff;
    font-size: 16px;
    transition: transform var(--rvk-transition-fast);
}

.rvk-send-button:hover:not(:disabled) {
    background: var(--rvk-primary-hover);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}

.rvk-send-button:hover:not(:disabled) i {
    transform: translateX(2px);
}

.rvk-send-button:active:not(:disabled) {
    transform: translateY(0) scale(0.98);
    background: var(--rvk-primary-active);
}

.rvk-send-button:disabled {
    opacity: 1;
    cursor: default;
    background: var(--rvk-primary);
}

/* ============================================
   TYPING INDICATOR
   ============================================ */

.rvk-typing-indicator {
    display: flex !important;
    align-items: center;
    gap: 6px;
    padding: 16px 20px;
    background: var(--rvk-bg-message-assistant);
    border-radius: var(--rvk-radius-lg);
    border-bottom-left-radius: var(--rvk-radius-sm);
    border: 1px solid var(--rvk-border-light);
    width: fit-content;
    animation: rvk-fade-in 0.3s ease;
}

.rvk-typing-indicator span {
    width: 8px;
    height: 8px;
    background: var(--rvk-text-tertiary);
    border-radius: 50%;
    animation: rvk-typing-bounce 1.4s infinite ease-in-out;
    display: inline-block !important;
}

.rvk-typing-indicator span:nth-child(1) { animation-delay: 0s; }
.rvk-typing-indicator span:nth-child(2) { animation-delay: 0.2s; }
.rvk-typing-indicator span:nth-child(3) { animation-delay: 0.4s; }

/* Streaming Cursor */
.rvk-typing-cursor {
    display: inline-block;
    color: var(--rvk-primary);
    font-weight: 400;
    animation: rvk-cursor-blink 1s step-end infinite;
    margin-left: 2px;
}

@keyframes rvk-cursor-blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0; }
}

/* ============================================
   LOADING STATE
   ============================================ */

.rvkai-loading {
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px;
    color: var(--rvk-text-secondary);
    gap: 16px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 10;
}

.rvkai-chat-container > .rvkai-loading:only-child {
    display: flex;
}

.rvkai-chat-container:has(.rvk-chat-wrapper) .rvkai-loading {
    display: none !important;
}

.rvk-loading-spinner {
    display: none !important;
}

.rvkai-chat-container > .rvkai-loading:only-child .rvk-loading-spinner {
    display: block !important;
    width: 32px;
    height: 32px;
    border: 3px solid var(--rvk-border-light);
    border-top-color: var(--rvk-primary);
    border-radius: 50%;
    animation: rvk-spin 0.8s linear infinite;
}

/* History Loading State */
.rvk-history-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px 20px;
    animation: rvk-fade-in 0.3s ease;
}

.rvk-history-loading-content {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 20px;
    background: var(--rvk-bg-tertiary);
    border-radius: var(--rvk-radius-lg);
    color: var(--rvk-text-secondary);
    font-size: 13px;
}

.rvk-history-loading-content i {
    color: var(--rvk-primary);
    font-size: 16px;
}

/* ============================================
   ANIMATIONS (GPU-Optimized)
   Uses transform and opacity for GPU acceleration
   ============================================ */

@keyframes rvk-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes rvk-slide-up {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes rvk-typing-bounce {
    0%, 80%, 100% {
        transform: scale(0.7);
        opacity: 0.5;
    }
    40% {
        transform: scale(1);
        opacity: 1;
    }
}

@keyframes rvk-spin {
    to { transform: rotate(360deg); }
}

@keyframes rvk-pulse {
    0%, 100% {
        transform: translate(-50%, -50%) scale(1);
        box-shadow: 0 0 0 0 var(--rvk-primary-glow);
    }
    50% {
        transform: translate(-50%, -50%) scale(1.05);
        box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
    }
}

@keyframes rvk-bounce {
    0%, 100% { transform: translate(-50%, -50%) translateY(0); }
    50% { transform: translate(-50%, -50%) translateY(-10px); }
}

@keyframes rvk-shake {
    0%, 100% { transform: translate(-50%, -50%) rotate(0deg); }
    10%, 30%, 50%, 70%, 90% { transform: translate(-50%, -50%) rotate(-5deg); }
    20%, 40%, 60%, 80% { transform: translate(-50%, -50%) rotate(5deg); }
}

@keyframes rvk-slide-up-bottom {
    from { transform: translateY(100%); }
    to { transform: translateY(0); }
}

/* Button Animations */
.rvk-float-icon[data-animation="pulse"] { animation: rvk-pulse 2s ease-in-out infinite; }
.rvk-float-icon[data-animation="bounce"] { animation: rvk-bounce 2s ease-in-out infinite; }
.rvk-float-icon[data-animation="shake"] { animation: rvk-shake 3s ease-in-out infinite; }

/* GPU layer promotion for actively animating elements */
.rvk-float-icon[data-animation] {
    will-change: transform;
}

/* Chat open/close animation hint */
.rvk-chat-wrapper:not(.rvk-minimized) {
    will-change: transform, opacity;
}

.rvk-chat-wrapper.rvk-minimized {
    will-change: auto;
}

/* ============================================
   MESSAGE TIMESTAMPS
   ============================================ */

.rvk-message-timestamp {
    font-size: 10px;
    font-weight: 400;
    letter-spacing: 0.02em;
    color: var(--rvk-text-tertiary);
    margin-top: 4px;
    padding: 0 4px;
    opacity: 0;
    transition: opacity 0.2s ease;
    font-variant-numeric: tabular-nums;
}

.rvk-message:hover .rvk-message-timestamp {
    opacity: 0.7;
}

.rvk-message-user .rvk-message-timestamp {
    text-align: right;
    color: var(--rvk-text-tertiary);
}

.rvk-message-assistant .rvk-message-timestamp {
    text-align: left;
}

/* Always show timestamps on touch devices */
@media (hover: none) {
    .rvk-message-timestamp {
        opacity: 0.5;
    }
}

/* ============================================
   POWERED BY FOOTER
   ============================================ */

.rvk-powered-by {
    padding: 10px 16px;
    text-align: center;
    background: var(--rvk-bg-secondary);
    border-top: 1px solid var(--rvk-border-light);
    flex-shrink: 0;
}

.rvk-powered-by a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--rvk-text-secondary);
    text-decoration: none;
    transition: all var(--rvk-transition-fast);
    opacity: 0.8;
}

.rvk-powered-by a:hover {
    color: var(--rvk-text-primary);
    opacity: 1;
}

.rvk-powered-logo {
    height: 14px;
    width: auto;
    vertical-align: middle;
    transition: filter var(--rvk-transition-fast);
}

/* Dark theme logo visibility - invert dark text to white */
.rvk-theme-dark .rvk-powered-logo {
    filter: brightness(0) invert(1);
}

/* Hide powered-by on mobile - always, regardless of setting */
@media (max-width: 768px) {
    .rvk-powered-by {
        display: none !important;
    }
}

/* ============================================
   RESPONSIVE DESIGN
   ============================================ */

@media (max-width: 768px) {
    :root {
        --rvk-chat-width: 90vw;
        --rvk-chat-height: 80vh;
    }

    .rvk-chat-wrapper[data-mode="popup"] {
        max-width: 90vw;
        max-height: 80vh;
    }
    
    .rvk-chat-minimize,
    .rvk-chat-close,
    .rvk-send-button {
        min-width: 44px;
        min-height: 44px;
    }
}

@media (max-width: 480px) {
    :root {
        --rvk-chat-width: 100%;
        --rvk-chat-height: 100%;
        --rvk-bubble-size: 56px;
    }
    
    .rvk-chat-wrapper[data-mode="popup"] {
        bottom: 0;
        right: 0;
        left: 0;
        top: 0;
        max-height: 100vh;
        max-height: -webkit-fill-available;
        max-height: 100dvh;
        max-width: 100vw;
        border-radius: 0;
        padding-bottom: env(safe-area-inset-bottom);
    }
    
    .rvk-chat-wrapper.rvk-minimized {
        bottom: calc(16px + env(safe-area-inset-bottom));
        right: calc(16px + env(safe-area-inset-right));
        left: auto;
        top: auto;
        width: var(--rvk-bubble-size);
        height: var(--rvk-bubble-size);
        border-radius: var(--rvk-radius-full);
        padding-bottom: 0;
    }
    
    .rvk-chat-input {
        font-size: 16px;
    }
    
    .rvk-chat-input-wrapper {
        padding-bottom: max(12px, env(safe-area-inset-bottom));
    }

    .rvk-chat-header {
        padding: 10px 12px;
        padding-top: max(10px, env(safe-area-inset-top));
    }

    .rvk-chat-title {
        font-size: 14px;
        gap: 6px;
    }

    .rvk-chat-icon {
        width: 28px;
        height: 28px;
        font-size: 14px;
    }

    .rvk-chat-minimize,
    .rvk-chat-close {
        width: 36px;
        height: 36px;
        font-size: 14px;
    }

    .rvk-message-user .rvk-message-content {
        max-width: 90%;
    }
}

/* Mobile Behavior Modes */
@media (max-width: 768px) {
    .rvk-chat-wrapper[data-mobile-behavior="fullscreen"][data-mode="popup"]:not(.rvk-minimized) {
        position: fixed !important;
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        width: 100vw !important;
        height: 100vh !important;
        height: -webkit-fill-available !important;
        height: 100dvh !important;
        max-width: 100vw !important;
        max-height: 100vh !important;
        max-height: -webkit-fill-available !important;
        max-height: 100dvh !important;
        border-radius: 0 !important;
    }
    
    .rvk-chat-wrapper[data-mobile-behavior="bottom-sheet"][data-mode="popup"]:not(.rvk-minimized) {
        position: fixed !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        top: auto !important;
        width: 100vw !important;
        max-width: 100vw !important;
        height: 70vh !important;
        height: 70dvh !important;
        max-height: 70vh !important;
        max-height: 70dvh !important;
        border-radius: var(--rvk-radius-xl) var(--rvk-radius-xl) 0 0 !important;
        animation: rvk-slide-up-bottom 0.3s ease-out;
    }
    
    .rvk-chat-wrapper[data-mobile-behavior="bottom-sheet"]:not(.rvk-minimized) .rvk-chat-header::before {
        content: '';
        position: absolute;
        top: 8px;
        left: 50%;
        transform: translateX(-50%);
        width: 40px;
        height: 4px;
        background: var(--rvk-border-medium);
        border-radius: var(--rvk-radius-full);
        display: block;
    }
    
    .rvk-chat-wrapper[data-mobile-behavior="bottom-sheet"]:not(.rvk-minimized) .rvk-chat-header {
        padding-top: max(24px, env(safe-area-inset-top, 0));
    }

    /* Bottom-sheet safe areas for home indicator */
    .rvk-chat-wrapper[data-mobile-behavior="bottom-sheet"]:not(.rvk-minimized) .rvk-powered-by {
        padding-bottom: max(12px, env(safe-area-inset-bottom, 0));
    }
}

/* ============================================
   LANDSCAPE ORIENTATION SAFE AREAS
   ============================================ */

/* Handle notch/Dynamic Island when device is in landscape */
@media (orientation: landscape) {
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) {
        padding-left: max(0px, env(safe-area-inset-left, 0));
        padding-right: max(0px, env(safe-area-inset-right, 0));
    }

    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-chat-header {
        padding-left: max(20px, env(safe-area-inset-left, 0));
        padding-right: max(20px, env(safe-area-inset-right, 0));
    }

    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-chat-input-wrapper {
        padding-left: max(20px, env(safe-area-inset-left, 0));
        padding-right: max(20px, env(safe-area-inset-right, 0));
    }

    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-chat-messages {
        padding-left: max(20px, env(safe-area-inset-left, 0));
        padding-right: max(20px, env(safe-area-inset-right, 0));
    }

    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) .rvk-powered-by {
        padding-left: max(16px, env(safe-area-inset-left, 0));
        padding-right: max(16px, env(safe-area-inset-right, 0));
    }
}

/* ============================================
   TABLET BREAKPOINTS & ORIENTATION HANDLING
   ============================================ */

/* Tablet popup sizing (768px-1024px) */
@media (min-width: 768px) and (max-width: 1024px) {
    :root {
        --rvk-chat-width: min(500px, 70vw);
        --rvk-chat-height: min(700px, 85vh);
    }

    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) {
        width: var(--rvk-chat-width);
        height: var(--rvk-chat-height);
    }

    /* On tablet+, user messages can be narrower for better readability */
    .rvk-message-user .rvk-message-content {
        max-width: 75%;
    }
}

/* Large tablet/small desktop (1024px+) */
@media (min-width: 1024px) {
    :root {
        --rvk-chat-width: 420px;
        --rvk-chat-height: 650px;
    }

    .rvk-message-user .rvk-message-content {
        max-width: 70%;
    }
}

/* Landscape on tablets - wider chat */
@media (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) {
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) {
        width: var(--rvk-chat-width);
        height: var(--rvk-chat-height);
        max-width: min(550px, 50vw);
        max-height: min(500px, 85vh);
    }
}

/* Landscape on phones - bottom sheet style preferred */
@media (max-width: 767px) and (orientation: landscape) {
    .rvk-chat-wrapper[data-mode="popup"]:not(.rvk-minimized) {
        /* In landscape on phone, use narrower height */
        max-height: 100vh;
        max-height: -webkit-fill-available;
        max-height: 100dvh;
        width: min(400px, 60vw);
    }

    /* Don't go full-screen in landscape - use positioned popup */
    .rvk-chat-wrapper[data-mobile-behavior="fullscreen"][data-mode="popup"]:not(.rvk-minimized) {
        top: 10px !important;
        left: auto !important;
        right: 10px !important;
        bottom: 10px !important;
        width: min(400px, 60vw) !important;
        height: auto !important;
        max-height: calc(100vh - 20px) !important;
        max-height: calc(-webkit-fill-available - 20px) !important;
        max-height: calc(100dvh - 20px) !important;
        border-radius: var(--rvk-radius-xl) !important;
    }
}

/* ============================================
   ACCESSIBILITY
   ============================================ */

.rvk-chat-minimize:focus-visible,
.rvk-chat-close:focus-visible,
.rvk-send-button:focus-visible,
.rvk-copy-btn:focus-visible {
    outline: 2px solid var(--rvk-primary);
    outline-offset: 2px;
}

.rvk-chat-input:focus-visible {
    border-color: var(--rvk-primary);
    box-shadow: 0 0 0 3px var(--rvk-primary-light);
}

/* ============================================
   REDUCED MOTION SUPPORT (Enhanced)
   ============================================ */

@media (prefers-reduced-motion: reduce) {
    /* Disable decorative/continuous animations completely */
    .rvk-float-icon[data-animation="pulse"],
    .rvk-float-icon[data-animation="bounce"],
    .rvk-float-icon[data-animation="shake"] {
        animation: none !important;
    }

    /* Replace typing indicator bounce with static opacity */
    .rvk-typing-indicator span {
        animation: none;
        opacity: 0.6;
    }
    .rvk-typing-indicator span:nth-child(2) { opacity: 0.75; }
    .rvk-typing-indicator span:nth-child(3) { opacity: 0.9; }

    /* Replace message entrance animation with simple fade */
    .rvk-message {
        animation: rvk-fade-in-reduced 0.1s ease !important;
    }

    /* Keep hover/active feedback but make it instant */
    .rvk-recommendation-item,
    .rvk-send-button,
    .rvk-chat-minimize,
    .rvk-chat-close,
    .rvk-copy-btn,
    .rvk-float-icon {
        transition-duration: 0.01ms !important;
    }

    /* Remove transform-based hover effects */
    .rvk-recommendation-item:hover,
    .rvk-send-button:hover,
    .rvk-chat-wrapper.rvk-minimized:hover {
        transform: none !important;
    }

    /* Disable cursor blink animation */
    .rvk-cursor {
        animation: none;
        opacity: 1;
    }
}

/* Replacement fade animation for reduced motion */
@keyframes rvk-fade-in-reduced {
    from { opacity: 0; }
    to { opacity: 1; }
}

.rvk-no-animations,
.rvk-no-animations *,
.rvk-no-animations *::before,
.rvk-no-animations *::after {
    animation: none !important;
    transition: none !important;
}

/* ============================================
   DYNAMIC VIEWPORT UNITS SUPPORT
   ============================================ */

/* When dvh is supported, we can rely on it for dynamic browser chrome handling */
@supports (height: 100dvh) {
    :root {
        --rvk-viewport-height: 100dvh;
    }
}

/* ============================================
   PRINT STYLES
   ============================================ */

@media print {
    .rvk-chat-wrapper[data-mode="popup"] {
        display: none;
    }
}

/* ============================================
   MESSAGE PERFORMANCE (content-visibility)
   ============================================ */

/* Skip rendering of off-screen messages for better performance */
.rvk-message {
    content-visibility: auto;
    contain-intrinsic-size: auto 80px; /* Average message height, 'auto' remembers actual size */
}

/* Messages with code blocks need more space reservation */
.rvk-message:has(.rvk-code-block) {
    contain-intrinsic-size: auto 200px;
}

/* Recommendation items also benefit from content-visibility */
.rvk-recommendation-item {
    content-visibility: auto;
    contain-intrinsic-size: auto 120px;
}

/* Feature detection fallback - older browsers render normally */
@supports not (content-visibility: auto) {
    .rvk-message,
    .rvk-recommendation-item {
        /* No special handling needed; normal rendering */
    }
}

/* ============================================
   QUICK REPLY PILLS
   ============================================ */

.rvk-quick-replies {
    display: flex;
    padding: 8px 16px 12px;
    margin-top: -4px;
    max-width: 100%;
    overflow: hidden; /* Contain children */
}

.rvk-quick-replies-scroll {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 4px 0;
    max-width: 100%;
    width: 100%;
    scrollbar-width: none; /* Firefox */
    -webkit-overflow-scrolling: touch;
}

.rvk-quick-replies-scroll::-webkit-scrollbar {
    display: none; /* Chrome/Safari */
}

.rvk-quick-reply-pill {
    flex-shrink: 0;
    padding: 6px 12px;
    background: rgba(var(--rvk-brand-primary-rgb, 8, 145, 178), 0.12);
    border: 1.5px solid var(--rvk-brand-primary, #0891b2);
    border-radius: var(--rvk-radius-full);
    color: var(--rvk-brand-primary, #0891b2);
    font-family: inherit;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.3;
    cursor: pointer;
    white-space: nowrap;
    transition: all var(--rvk-transition-fast);
    touch-action: manipulation;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}

/* Touch-friendly but compact pills on mobile */
@media (max-width: 768px) {
    .rvk-quick-reply-pill {
        padding: 8px 12px;
        font-size: 13px;
        border-width: 1.5px;
        min-height: 36px;
        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
    }
}

.rvk-quick-reply-pill:hover {
    background: var(--rvk-brand-primary, #0891b2);
    border-color: var(--rvk-brand-primary, #0891b2);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(var(--rvk-brand-primary-rgb, 8, 145, 178), 0.35);
}

.rvk-quick-reply-pill:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(var(--rvk-brand-primary-rgb, 8, 145, 178), 0.3);
    border-color: var(--rvk-brand-primary, #0891b2);
}

.rvk-quick-reply-pill:active {
    transform: scale(0.95);
    background: var(--rvk-brand-primary-active, #155e75);
    border-color: var(--rvk-brand-primary-active, #155e75);
    color: #ffffff;
}

/* Dark theme adjustments */
.rvk-theme-dark .rvk-quick-reply-pill {
    -webkit-tap-highlight-color: rgba(255, 255, 255, 0.1);
}

/* Reduced motion - disable transform animation */
@media (prefers-reduced-motion: reduce) {
    .rvk-quick-reply-pill:active {
        transform: none;
    }
}

/* Container query for narrow layouts */
@container rvk-chat (max-width: 350px) {
    .rvk-quick-replies {
        padding: 6px 12px 10px;
    }

    .rvk-quick-replies-scroll {
        gap: 6px;
    }

    .rvk-quick-reply-pill {
        padding: 6px 12px;
        font-size: 13px;
    }
}

/* ============================================
   INLINE QUICK REPLIES (for inline modes)
   Displayed at end of chat messages
   ============================================ */

.rvk-inline-quick-replies {
    margin: 16px 0;
    padding: 16px;
    background: var(--rvk-bg-secondary, #f8fafc);
    border-radius: var(--rvk-radius-lg, 12px);
    border: 1px solid var(--rvk-border-light, #e2e8f0);
}

.rvk-inline-replies-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-bottom: 12px;
    font-size: 13px;
    font-weight: 600;
    color: var(--rvk-brand-primary, #0891b2);
}

.rvk-inline-replies-header i {
    font-size: 14px;
}

.rvk-inline-replies-pills {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
}

/* Dark theme adjustments */
.rvk-theme-dark .rvk-inline-quick-replies {
    background: var(--rvk-bg-secondary, #1e293b);
    border-color: var(--rvk-border-light, #334155);
}

/* ============================================
   CHAT TRANSFER GLOW
   Brief brand-color glow when chat transfers
   between pages (inline to popup or vice versa)
   ============================================ */

@keyframes rvk-transfer-glow {
    0% {
        box-shadow: 0 0 0 0 rgba(var(--rvk-brand-primary-rgb), 0.7);
    }
    50% {
        box-shadow: 0 0 20px 10px rgba(var(--rvk-brand-primary-rgb), 0.3);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(var(--rvk-brand-primary-rgb), 0);
    }
}

.rvk-chat-wrapper.rvk-transfer-complete {
    animation: rvk-transfer-glow 300ms ease-out;
}

/* Reduced motion - fallback to brief opacity change */
@media (prefers-reduced-motion: reduce) {
    .rvk-chat-wrapper.rvk-transfer-complete {
        animation: none;
        opacity: 0.8;
        transition: opacity 100ms ease;
    }
}

/* ==========================================================================
   Mobile Drawer (Phase 10)
   Slide-up drawer for recommendations and quick replies on mobile
   ========================================================================== */

.rvk-mobile-drawer {
    position: fixed;
    inset: 0;
    z-index: 1000001; /* Above content modal */
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
    pointer-events: none;
}

.rvk-mobile-drawer.rvk-drawer-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.rvk-drawer-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

.rvk-drawer-container {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    max-height: 70vh;
    max-height: 70dvh; /* Dynamic viewport height for Safari */
    background: var(--rvk-bg-primary, #ffffff);
    border-radius: var(--rvk-radius-xl, 16px) var(--rvk-radius-xl, 16px) 0 0;
    transform: translateY(100%);
    transition: transform 0.3s cubic-bezier(0.32, 0.72, 0, 1);
    display: flex;
    flex-direction: column;
    /* Extend background below safe area */
    padding-bottom: env(safe-area-inset-bottom, 0);
    box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.15);
}

.rvk-drawer-open .rvk-drawer-container {
    transform: translateY(0);
}

/* Disable transition during drag for immediate feedback */
.rvk-drawer-dragging .rvk-drawer-container {
    transition: none;
}

/* Drawer handle for swipe gesture affordance */
.rvk-drawer-handle {
    flex-shrink: 0;
    padding: 12px 0 8px;
    display: flex;
    justify-content: center;
    cursor: grab;
    touch-action: none;
}

.rvk-drawer-handle-bar {
    width: 40px;
    height: 4px;
    background: var(--rvk-border-medium, #d1d5db);
    border-radius: var(--rvk-radius-full, 9999px);
}

/* Drawer header */
.rvk-drawer-header {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 16px 12px;
    border-bottom: 1px solid var(--rvk-border-light, #e5e7eb);
}

.rvk-drawer-title {
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--rvk-text-primary, #1f2937);
    margin: 0;
}

.rvk-drawer-close {
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    border-radius: var(--rvk-radius-full, 9999px);
    color: var(--rvk-text-secondary, #6b7280);
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease;
    touch-action: manipulation;
}

.rvk-drawer-close:hover,
.rvk-drawer-close:focus {
    background: var(--rvk-bg-secondary, #f3f4f6);
    color: var(--rvk-text-primary, #1f2937);
}

.rvk-drawer-close:focus-visible {
    outline: 2px solid var(--rvk-brand-primary, #3b82f6);
    outline-offset: 2px;
}

/* Drawer content area */
.rvk-drawer-content {
    flex: 1;
    overflow-y: auto;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    padding: 16px;
    /* Respect safe area at bottom */
    margin-bottom: env(safe-area-inset-bottom, 0);
}

/* Drawer sections */
.rvk-drawer-section {
    margin-bottom: 24px;
}

.rvk-drawer-section:last-child {
    margin-bottom: 0;
}

.rvk-drawer-section h4 {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--rvk-text-tertiary, #9ca3af);
    margin: 0 0 12px 0;
}

/* Drawer recommendations list */
.rvk-drawer-recommendations-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* Drawer recommendations with horizontal layout (image + content side by side) */
.rvk-drawer-recommendations-list .rvk-recommendation-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--rvk-bg-primary, #ffffff);
    border: 1px solid var(--rvk-border-light, #e5e7eb);
    border-radius: var(--rvk-radius-md, 8px);
    padding: 10px;
    cursor: pointer;
    transition: all 0.2s ease;
    touch-action: manipulation;
    text-decoration: none;
    -webkit-tap-highlight-color: transparent;
}

.rvk-drawer-recommendations-list .rvk-recommendation-item:hover,
.rvk-drawer-recommendations-list .rvk-recommendation-item:focus {
    border-color: var(--rvk-brand-primary, #3b82f6);
    box-shadow: 0 2px 8px rgba(59, 130, 246, 0.15);
}

.rvk-drawer-recommendations-list .rvk-recommendation-item:active {
    transform: scale(0.98);
}

.rvk-drawer-recommendations-list .rvk-recommendation-item:focus-visible {
    outline: 2px solid var(--rvk-brand-primary, #3b82f6);
    outline-offset: 2px;
}

/* Thumbnail image in drawer */
.rvk-drawer-recommendations-list .rvk-recommendation-image {
    width: 80px;
    height: 60px;
    object-fit: cover;
    border-radius: 6px;
    flex-shrink: 0;
    background: var(--rvk-bg-secondary, #f3f4f6);
}

/* Placeholder for missing images */
.rvk-drawer-recommendations-list .rvk-recommendation-placeholder,
.rvk-drawer-recommendations-list .rvk-recommendation-image[data-fallback] {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--rvk-bg-secondary, #f3f4f6);
}

.rvk-drawer-recommendations-list .rvk-recommendation-placeholder::after,
.rvk-drawer-recommendations-list .rvk-recommendation-image[data-fallback]::after {
    content: '\f15b'; /* fa-file */
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    font-size: 20px;
    color: var(--rvk-text-tertiary, #9ca3af);
}

/* Video type fallback icon */
.rvk-drawer-recommendations-list .rvk-recommendation-item[data-type="video"] .rvk-recommendation-placeholder::after,
.rvk-drawer-recommendations-list .rvk-recommendation-item[data-type="video"] .rvk-recommendation-image[data-fallback]::after {
    content: '\f144'; /* fa-play-circle */
}

/* Blog type fallback icon */
.rvk-drawer-recommendations-list .rvk-recommendation-item[data-type="blog"] .rvk-recommendation-placeholder::after,
.rvk-drawer-recommendations-list .rvk-recommendation-item[data-type="blog"] .rvk-recommendation-image[data-fallback]::after,
.rvk-drawer-recommendations-list .rvk-recommendation-item[data-type="post"] .rvk-recommendation-placeholder::after,
.rvk-drawer-recommendations-list .rvk-recommendation-item[data-type="post"] .rvk-recommendation-image[data-fallback]::after {
    content: '\f1ea'; /* fa-newspaper */
}

/* Video play overlay on thumbnail */
.rvk-drawer-recommendations-list .rvk-recommendation-item[data-type="video"] .rvk-recommendation-image:not([data-fallback]) {
    position: relative;
}

.rvk-drawer-recommendations-list .rvk-recommendation-item[data-type="video"] .rvk-recommendation-image:not([data-fallback])::after {
    content: '\f144';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 24px;
    color: white;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
    opacity: 0.9;
}

/* Content area */
.rvk-drawer-recommendations-list .rvk-recommendation-content {
    flex: 1;
    min-width: 0;
}

.rvk-drawer-recommendations-list .rvk-recommendation-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--rvk-text-primary, #1f2937);
    margin-bottom: 2px;
    line-height: 1.3;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.rvk-drawer-recommendations-list .rvk-recommendation-excerpt {
    font-size: 11px;
    color: var(--rvk-text-secondary, #6b7280);
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-bottom: 4px;
}

.rvk-drawer-recommendations-list .rvk-recommendation-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
}

.rvk-drawer-recommendations-list .rvk-recommendation-type {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 2px 6px;
    background: rgba(59, 130, 246, 0.1);
    color: var(--rvk-brand-primary, #3b82f6);
    border-radius: 4px;
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rvk-drawer-recommendations-list .rvk-recommendation-type i {
    font-size: 9px;
}

/* Drawer pills container - reuses existing pill styles */
.rvk-drawer-pills {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
}

.rvk-drawer-pills .rvk-quick-reply-pill {
    white-space: nowrap;
    max-width: 48%;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Empty state */
.rvk-drawer-empty {
    font-size: 0.875rem;
    color: var(--rvk-text-tertiary, #9ca3af);
    text-align: center;
    padding: 16px;
    margin: 0;
}

/* Toggle button - prominent View Suggestions bar */
.rvk-drawer-toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 14px 16px;
    background: var(--rvk-brand-primary, #0891b2);
    color: #ffffff;
    border: none;
    cursor: pointer;
    transition: background-color 0.2s ease;
    touch-action: manipulation;
    gap: 10px;
    font-size: 0.938rem;
    font-weight: 600;
}

.rvk-drawer-toggle::after {
    content: 'View Suggestions';
}

.rvk-drawer-toggle:hover,
.rvk-drawer-toggle:focus {
    background: var(--rvk-brand-primary-hover, #0e7490);
}

.rvk-drawer-toggle:active {
    background: var(--rvk-brand-primary-active, #155e75);
}

.rvk-drawer-toggle i {
    font-size: 1.125rem;
}

/* Badge on drawer toggle for new recommendations */
.rvk-drawer-badge {
    display: none;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    background: #ffffff;
    color: var(--rvk-brand-primary, #0891b2);
    border-radius: 10px;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    margin-left: 8px;
}

/* Pulse animation when new content arrives */
.rvk-drawer-toggle.rvk-drawer-has-new {
    animation: rvk-drawer-pulse 2s ease-in-out infinite;
}

@keyframes rvk-drawer-pulse {
    0%, 100% {
        background: var(--rvk-brand-primary, #0891b2);
    }
    50% {
        background: var(--rvk-brand-primary-hover, #0e7490);
    }
}

/* Notification dot on toggle when there are recommendations */
.rvk-drawer-toggle[data-has-content="true"] {
    /* Already prominent with solid background */
}

/* Desktop drawer adjustments - position inside chat widget */
@media (min-width: 769px) {
    /* Hide drawer on inline modes on desktop */
    .rvk-chat-wrapper[data-mode="inline"] .rvk-drawer-toggle,
    .rvk-chat-wrapper[data-mode="inline-sidebar"] .rvk-drawer-toggle {
        display: none !important;
    }

    /* Show drawer toggle on popup mode */
    .rvk-chat-wrapper[data-mode="popup"] .rvk-drawer-toggle {
        padding: 10px 14px;
        font-size: 0.875rem;
    }

    /* Drawer inside chat wrapper on desktop popup mode */
    .rvk-mobile-drawer.rvk-drawer-inside {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        width: 100%;
        height: 100%;
        z-index: 1000;
        pointer-events: none;
        border-radius: inherit;
        overflow: hidden;
        background: transparent;
    }

    .rvk-mobile-drawer.rvk-drawer-inside .rvk-drawer-backdrop {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: rgba(0, 0, 0, 0.3);
        opacity: 0;
        transition: opacity 0.3s ease;
        pointer-events: none;
    }

    .rvk-mobile-drawer.rvk-drawer-inside.rvk-drawer-open .rvk-drawer-backdrop {
        opacity: 1;
        pointer-events: auto;
    }

    .rvk-mobile-drawer.rvk-drawer-inside .rvk-drawer-container {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        max-height: 70%;
        border-radius: var(--rvk-radius-lg, 12px) var(--rvk-radius-lg, 12px) 0 0;
        box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.15);
        transform: translateY(100%);
        opacity: 1;
        pointer-events: auto;
        transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rvk-mobile-drawer.rvk-drawer-inside.rvk-drawer-open {
        pointer-events: auto;
    }

    .rvk-mobile-drawer.rvk-drawer-inside.rvk-drawer-open .rvk-drawer-container {
        transform: translateY(0);
    }

    .rvk-mobile-drawer.rvk-drawer-inside .rvk-drawer-handle {
        display: none;
    }

    /* Adjust content area */
    .rvk-mobile-drawer.rvk-drawer-inside .rvk-drawer-content {
        max-height: 350px;
        overflow-y: auto;
    }
}

/* Dark theme support */
[data-theme="dark"] .rvk-drawer-container,
.rvk-chat-wrapper[data-theme="dark"] ~ .rvk-mobile-drawer .rvk-drawer-container {
    background: var(--rvk-bg-primary, #1f2937);
}

[data-theme="dark"] .rvk-drawer-handle-bar,
.rvk-chat-wrapper[data-theme="dark"] ~ .rvk-mobile-drawer .rvk-drawer-handle-bar {
    background: var(--rvk-border-medium, #4b5563);
}

[data-theme="dark"] .rvk-drawer-header,
.rvk-chat-wrapper[data-theme="dark"] ~ .rvk-mobile-drawer .rvk-drawer-header {
    border-bottom-color: var(--rvk-border-light, #374151);
}

[data-theme="dark"] .rvk-drawer-recommendations-list .rvk-recommendation-item,
.rvk-chat-wrapper[data-theme="dark"] ~ .rvk-mobile-drawer .rvk-recommendation-item {
    background: var(--rvk-bg-secondary, #374151);
    border-color: var(--rvk-border-light, #4b5563);
}

[data-theme="dark"] .rvk-drawer-recommendations-list .rvk-recommendation-item:hover,
.rvk-chat-wrapper[data-theme="dark"] ~ .rvk-mobile-drawer .rvk-recommendation-item:hover {
    background: var(--rvk-bg-tertiary, #4b5563);
}

[data-theme="dark"] .rvk-drawer-recommendations-list .rvk-recommendation-title,
.rvk-chat-wrapper[data-theme="dark"] ~ .rvk-mobile-drawer .rvk-recommendation-title {
    color: var(--rvk-text-primary, #f9fafb);
}

[data-theme="dark"] .rvk-drawer-recommendations-list .rvk-recommendation-excerpt,
.rvk-chat-wrapper[data-theme="dark"] ~ .rvk-mobile-drawer .rvk-recommendation-excerpt {
    color: var(--rvk-text-secondary, #9ca3af);
}

/* Reduced motion preference */
@media (prefers-reduced-motion: reduce) {
    .rvk-mobile-drawer,
    .rvk-drawer-container,
    .rvk-drawer-toggle {
        transition: none;
    }
}

/* Global reduced motion catch-all for remaining animations */
@media (prefers-reduced-motion: reduce) {
    .rvk-chat-wrapper *,
    .rvk-chat-wrapper *::before,
    .rvk-chat-wrapper *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}
