/* CoDIRA — Facetime-inspired call vibe (dark, video-centric, minimal chrome) */

:root {
    --call-bg: #0d0d0f;
    --call-surface: #1c1c1e;
    --call-surface-elevated: #2c2c2e;
    --call-border: rgba(255, 255, 255, 0.08);
    --call-text: #f5f5f7;
    --call-text-secondary: rgba(255, 255, 255, 0.65);
    --call-text-muted: rgba(255, 255, 255, 0.45);
    --call-accent: #6B9FFF;
    --call-accent-soft: rgba(107, 159, 255, 0.2);
    --call-danger: #ff453a;
    --call-warning: #ff9f0a;
    --call-radius: 20px;
    --call-radius-lg: 28px;
    --call-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
    --call-blur: 12px;
    --safe-top: env(safe-area-inset-top, 0);
    --safe-bottom: env(safe-area-inset-bottom, 0);
    --safe-left: env(safe-area-inset-left, 0);
    --safe-right: env(safe-area-inset-right, 0);
    --touch-min: 44px;
    /* Legacy names for compatibility */
    --primary-medical: #6B9FFF;
    --primary-dark: #5A8EE6;
    --accent-emergency: #ff453a;
    --accent-success: #6B9FFF;
    --shadow-soft: 0 2px 12px rgba(0, 0, 0, 0.25);
    --shadow-medium: 0 4px 20px rgba(0, 0, 0, 0.3);
    --shadow-strong: 0 8px 30px rgba(0, 0, 0, 0.4);
}

/* Global — call-style dark body */
body {
    background: var(--call-bg);
    font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    color: var(--call-text);
    min-height: 100vh;
    padding-left: var(--safe-left);
    padding-right: var(--safe-right);
    padding-bottom: var(--safe-bottom);
}

.app-body--call {
    background: var(--call-bg);
}

.main--call {
    padding-top: 0;
}

/* Minimal header — slim, dark, no heavy border */
.app-header--minimal .navbar {
    background: rgba(28, 28, 30, 0.85) !important;
    backdrop-filter: blur(var(--call-blur));
    -webkit-backdrop-filter: blur(var(--call-blur));
    border-bottom: 1px solid var(--call-border);
    padding-top: calc(0.5rem + var(--safe-top));
    padding-bottom: 0.5rem;
    padding-left: calc(0.5rem + var(--safe-left));
    padding-right: calc(0.5rem + var(--safe-right));
}

.app-header--minimal .navbar-brand {
    font-weight: 600;
    font-size: 1.15rem;
    color: var(--call-text) !important;
    letter-spacing: -0.02em;
}

.navbar-version {
    font-size: 0.8rem;
    color: var(--call-text-muted);
    font-weight: 500;
}

/* Minimal footer */
.app-footer--minimal {
    background: rgba(28, 28, 30, 0.6);
    backdrop-filter: blur(var(--call-blur));
    border-top: 1px solid var(--call-border);
    padding-bottom: calc(0.5rem + var(--safe-bottom));
}

.app-footer--minimal .container {
    padding-left: var(--safe-left);
    padding-right: var(--safe-right);
}

.app-footer--minimal a {
    color: var(--call-text-secondary);
    text-decoration: none;
    font-size: 0.85rem;
    min-height: var(--touch-min);
    display: inline-flex;
    align-items: center;
}

.app-footer--minimal a:hover {
    color: var(--call-text);
}

.footer-dot {
    color: var(--call-text-muted);
    margin: 0 0.35rem;
    font-size: 0.75rem;
}

/* Chat container = call card: one rounded surface */
.chat-container {
    border-radius: var(--call-radius-lg);
    overflow: hidden;
    box-shadow: var(--call-shadow);
    background: var(--call-surface);
    border: 1px solid var(--call-border);
    animation: fadeIn 0.4s ease-out;
    max-width: 900px;
    margin: 0 auto;
}

@keyframes fadeIn {
    from { opacity: 0; transform: scale(0.98); }
    to { opacity: 1; transform: scale(1); }
}

/* Header — compact, same surface */
.chat-header {
    background: var(--call-surface-elevated);
    color: var(--call-text);
    padding: 0.85rem 1rem;
    padding-left: calc(1rem + var(--safe-left));
    padding-right: calc(1rem + var(--safe-right));
    border-bottom: 1px solid var(--call-border);
}

.chat-header h4 {
    font-weight: 600;
    margin: 0;
    font-size: 1rem;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.chat-header small {
    color: var(--call-text-muted);
    font-size: 0.8rem;
}

/* Video = hero: original Dexter window size, fixed so no resizing before/during/after video */
.avatar-video-container {
    width: 100%;
    max-width: 800px;
    height: 280px;
    min-height: 280px;
    max-height: 280px;
    flex-shrink: 0;
    flex-grow: 0;
    background: #000;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    margin: 0.75rem auto;
    border-radius: var(--call-radius);
    overflow: hidden;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.5);
}

.avatar-video-container video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: var(--call-radius);
    background: #000;
}

@media (min-width: 576px) {
    .avatar-video-container {
        height: 360px;
        min-height: 360px;
        max-height: 360px;
        margin: 1rem auto;
    }
}

@media (min-width: 768px) {
    .avatar-video-container {
        height: 420px;
        min-height: 420px;
        max-height: 420px;
    }
}

@media (min-width: 992px) {
    .avatar-video-container {
        height: 500px;
        min-height: 500px;
        max-height: 500px;
    }
}

/* Placeholder & loading — soft, centered */
#placeholder {
    color: var(--call-text-secondary);
    padding: 2rem;
}

#placeholder .placeholder-icon,
#placeholder .fa-video {
    color: var(--call-text-muted);
}

#placeholder h5 {
    color: var(--call-text);
    font-weight: 600;
    font-size: 1.1rem;
}

#placeholder .placeholder-hint,
#placeholder p {
    color: var(--call-text-muted);
    font-size: 0.9rem;
}

/* Loading overlay: only used during session start; overlays placeholder so layout never shifts */
.avatar-loading-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.6);
    color: var(--call-text-secondary);
    z-index: 2;
}

#loading .spinner-border {
    color: var(--call-accent);
}

.chat-messages .transcript-placeholder-icon {
    color: var(--call-text-muted);
}

/* Transcript area — frosted strip */
.chat-messages {
    padding: 0.85rem 1rem;
    padding-left: calc(1rem + var(--safe-left));
    padding-right: calc(1rem + var(--safe-right));
    height: 200px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    background: rgba(28, 28, 30, 0.6);
    border-top: 1px solid var(--call-border);
}

.chat-messages.chat-transcript {
    height: 200px;
}

@media (max-width: 576px) {
    .chat-messages.chat-transcript {
        height: 160px;
    }
}

.chat-messages::-webkit-scrollbar {
    width: 6px;
}

.chat-messages::-webkit-scrollbar-track {
    background: transparent;
}

.chat-messages::-webkit-scrollbar-thumb {
    background: var(--call-text-muted);
    border-radius: 10px;
}

/* Message bubbles — call-style */
.message-user,
.mb-2.p-2.rounded.bg-primary.text-white.ms-auto {
    background: var(--call-surface-elevated) !important;
    color: var(--call-text) !important;
    border: 1px solid var(--call-border);
    border-radius: 18px 18px 6px 18px;
    padding: 0.7rem 1rem;
    margin-bottom: 0.75rem;
    margin-left: auto;
    max-width: 85%;
}

.message-ai,
.mb-2.p-2.rounded.bg-light {
    background: rgba(255, 255, 255, 0.06) !important;
    color: var(--call-text) !important;
    border: 1px solid var(--call-border);
    border-radius: 18px 18px 18px 6px;
    padding: 0.7rem 1rem;
    margin-bottom: 0.75rem;
    max-width: 85%;
}

.message-error,
.mb-2.p-2.rounded.bg-danger.text-white {
    background: var(--call-danger) !important;
    color: #fff !important;
    border-radius: 18px;
    padding: 0.7rem 1rem;
}

.chat-messages .text-muted {
    color: var(--call-text-muted) !important;
}

.chat-messages small.text-muted {
    color: var(--call-text-muted) !important;
    font-size: 0.7rem;
}

/* Welcome/placeholder inside transcript */
.chat-messages .text-center.text-muted {
    color: var(--call-text-muted);
}

/* Input area — glass bar at bottom */
.chat-input-container {
    background: var(--call-surface-elevated);
    padding: 1rem;
    padding-left: calc(1rem + var(--safe-left));
    padding-right: calc(1rem + var(--safe-right));
    padding-bottom: calc(1rem + var(--safe-bottom));
    border-top: 1px solid var(--call-border);
}

.chat-input-container .input-group.input-group-mobile {
    flex-wrap: wrap;
    gap: 0.5rem;
}

.chat-input-container .input-group.input-group-mobile .form-control {
    flex: 1 1 100%;
    min-width: 0;
}

.chat-input-container .input-group.input-group-mobile .btn {
    min-height: var(--touch-min);
    flex: 1 1 0;
    min-width: 0;
    white-space: normal;
    text-align: center;
    border-radius: var(--call-radius) !important;
}

/* Input field — pill, dark */
.chat-input-container .form-control {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid var(--call-border);
    color: var(--call-text);
    border-radius: 22px;
    padding: 0.65rem 1.25rem;
    min-height: var(--touch-min);
    font-size: 16px;
    transition: background 0.2s, border-color 0.2s;
}

.chat-input-container .form-control::placeholder {
    color: var(--call-text-muted);
}

.chat-input-container .form-control:focus {
    background: rgba(255, 255, 255, 0.12);
    border-color: var(--call-accent);
    box-shadow: 0 0 0 2px var(--call-accent-soft);
    outline: none;
    color: var(--call-text);
}

/* Buttons — pill, soft */
.chat-input-container .btn {
    border-radius: var(--call-radius) !important;
    font-weight: 600;
    font-size: 0.9rem;
    border: none;
    transition: transform 0.15s, opacity 0.15s;
}

.chat-input-container .btn-primary {
    background: var(--call-accent);
    color: #000;
}

.chat-input-container .btn-primary:hover:not(:disabled) {
    background: #7EADFF;
    color: #000;
    transform: scale(1.02);
}

.chat-input-container .btn-info {
    background: var(--call-surface-elevated);
    color: var(--call-text);
    border: 1px solid var(--call-border);
}

.chat-input-container .btn-info:hover:not(:disabled) {
    background: rgba(255, 255, 255, 0.1);
    color: var(--call-text);
    transform: scale(1.02);
}

.chat-input-container .btn-success {
    background: var(--call-accent);
    color: #000;
}

.chat-input-container .btn-success:hover:not(:disabled) {
    background: #7EADFF;
    color: #000;
    transform: scale(1.02);
}

.chat-input-container .btn-danger {
    background: var(--call-danger);
    color: #fff;
}

.chat-input-container .btn-danger:hover:not(:disabled) {
    background: #ff5c52;
    color: #fff;
    transform: scale(1.02);
}

.chat-input-container .btn:disabled {
    opacity: 0.5;
}

/* Helper text under input */
.chat-input-container small.text-muted,
.chat-input-container .text-muted {
    color: var(--call-text-muted) !important;
}

.chat-input-container label.cursor-pointer,
.chat-input-container .cursor-pointer {
    color: var(--call-text-secondary);
}

.chat-input-container .form-check-input {
    background-color: rgba(255, 255, 255, 0.2);
    border-color: var(--call-border);
}

.chat-input-container .form-check-input:checked {
    background-color: var(--call-accent);
    border-color: var(--call-accent);
}

/* Recording status */
#recordingStatus small {
    color: var(--call-warning);
}

/* Status badge in header */
#statusBadge {
    background: rgba(255, 255, 255, 0.1) !important;
    color: var(--call-text-secondary) !important;
    font-weight: 500;
    font-size: 0.75rem;
    padding: 0.25rem 0.6rem;
    border-radius: 20px;
}

#statusBadge .text-success { color: var(--call-accent) !important; }
#statusBadge .text-warning { color: var(--call-warning) !important; }
#statusBadge .text-danger { color: var(--call-danger) !important; }
#statusBadge .text-secondary { color: var(--call-text-muted) !important; }

/* Avatar page container */
.container-fluid.h-100.py-4 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
    padding-left: calc(0.75rem + var(--safe-left)) !important;
    padding-right: calc(0.75rem + var(--safe-right)) !important;
}

/* Logs / sources panels (if shown) */
.logs-panel, .sources-panel {
    background: var(--call-surface);
    border: 1px solid var(--call-border);
    border-radius: var(--call-radius);
    box-shadow: var(--call-shadow);
}

.sources-header, .logs-header {
    background: var(--call-surface-elevated);
    color: var(--call-text);
    border-bottom: 1px solid var(--call-border);
}

.sources-body, .logs-body {
    background: var(--call-surface);
    color: var(--call-text-secondary);
}

/* Quiz (if used) */
.quiz-container {
    background: var(--call-surface);
    border: 1px solid var(--call-border);
    border-radius: var(--call-radius);
}

.quiz-header h5 {
    color: var(--call-accent);
}

/* Modals */
.modal-content {
    background: var(--call-surface);
    border: 1px solid var(--call-border);
    border-radius: var(--call-radius-lg);
    box-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
}

.modal-body {
    color: var(--call-text);
}

/* Scrollbars global */
::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

::-webkit-scrollbar-track {
    background: var(--call-bg);
}

::-webkit-scrollbar-thumb {
    background: var(--call-text-muted);
    border-radius: 10px;
}

::-webkit-scrollbar-thumb:hover {
    background: var(--call-text-secondary);
}

/* Touch targets */
@media (max-width: 768px) {
    .btn:not(.btn-sm) {
        min-height: var(--touch-min);
        padding: 0.6rem 1rem;
    }

    .chat-header h4 {
        font-size: 0.95rem;
    }
}

@media (max-width: 576px) {
    .chat-input-container {
        padding: 0.85rem;
        padding-left: calc(0.85rem + var(--safe-left));
        padding-right: calc(0.85rem + var(--safe-right));
        padding-bottom: calc(0.85rem + var(--safe-bottom));
    }

    .chat-container {
        border-radius: var(--call-radius);
    }

    .avatar-video-container {
        margin: 0.5rem;
        border-radius: 16px;
    }

    .avatar-video-container video {
        border-radius: 16px;
    }
}
