/* Hide scrollbar for profile pills and horizontal scroll containers */
.hide-scrollbar::-webkit-scrollbar { display: none; }
.hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }

/* Pulsing dot animation for generation progress indicator */
@keyframes pulse-dot {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: .5; transform: scale(1.4); }
}
.animate-pulse-dot {
    animation: pulse-dot 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

/* Line clamp fallback — ensures card text truncation works even if
   the Tailwind CDN line-clamp utility is unavailable (Review Fix 4).
   Tailwind's built-in class takes precedence when present. */
.line-clamp-3 {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Toggle switch for model active/inactive state.
   Review Fix W2: Outer label is 44x28 for mobile touch target compliance.
   Review Fix W3: Colors map to governed design tokens:
     - #3f4851 = outline-variant (unchecked track)
     - #E7E9EA = on-surface / text-primary (knob)
     - #1d9bf0 = primary-container / accent-blue (checked track)
   Raw hex is required here because CSS pseudo-elements cannot use
   Tailwind utility classes. */
.toggle-switch {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    cursor: pointer;
}
.toggle-slider {
    position: absolute;
    width: 44px;
    height: 24px;
    background-color: #3f4851;
    border-radius: 9999px;
    transition: background-color 0.2s;
}
.toggle-switch input {
    opacity: 0;
    width: 0;
    height: 0;
    position: absolute;
}
.toggle-slider::before {
    content: '';
    position: absolute;
    height: 18px;
    width: 18px;
    left: 3px;
    bottom: 3px;
    background-color: #E7E9EA;
    border-radius: 9999px;
    transition: transform 0.2s;
}
.toggle-switch input:checked + .toggle-slider {
    background-color: #1d9bf0;
}
.toggle-switch input:checked + .toggle-slider::before {
    transform: translateX(20px);
}

/* Prompt editor fullscreen overlay.
   Review Fix 5: Colors map to governed design tokens:
     - rgba(0,0,0,0.85) = near-opaque page background overlay
     - #16181C = bg-card (surface-container)
     - #2F3336 = border-default (outline-variant area)
   Raw values required in CSS because pseudo/overlay elements cannot
   use Tailwind utility classes. */
.prompt-overlay {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.85);
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.prompt-editor-container {
    width: 100%;
    max-width: 800px;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    background-color: #16181C;
    border: 1px solid #2F3336;
    border-radius: 8px;
    padding: 1.5rem;
}
.prompt-editor-container textarea {
    min-height: 60vh;
}

/* Login page — radial gradient overlay and body defaults */
.login-page {
    background-color: #000000;
    color: #E7E9EA;
}
.login-page::before {
    content: '';
    position: fixed;
    inset: 0;
    background: radial-gradient(ellipse at 50% 30%, rgba(29,155,240,0.03) 0%, transparent 60%);
    pointer-events: none;
    z-index: 0;
}
