/* =============================================
   Variables — tema claro (por defecto)
   ============================================= */
:root {
    --color-fondo:   #f8f9fa;
    --color-primary: #0d6efd;
    --color-texto:   #212529;
    --color-muted:   #6c757d;
    --color-card:    #ffffff;
    --fs-sm:         0.75rem;
    --fs-base:       1rem;
}

/* =============================================
   Variables — tema oscuro
   ============================================= */
[data-bs-theme="dark"] {
    --color-fondo:   #1a1d21;
    --color-primary: #6ea8fe;
    --color-texto:   #dee2e6;
    --color-muted:   #adb5bd;
    --color-card:    #2b2d31;
}

/* =============================================
   Base
   ============================================= */
body {
    background-color: var(--color-fondo);
    color: var(--color-texto);
}

/* =============================================
   Inputs
   ============================================= */
.form-control:focus,
.form-select:focus {
    box-shadow: none;
}

/* =============================================
   Login
   ============================================= */
.login-wrapper {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.login-card {
    width: 100%;
    max-width: 420px;
}

.login-error {
    min-height: 3rem;
    margin-bottom: 0.5rem;
}

.login-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: var(--color-muted);
    font-size: var(--fs-sm);
    margin-top: 1rem;
}

.login-footer .btn-tema {
    color: var(--color-muted);
    padding: 0;
}

/* =============================================
   Botón tema
   ============================================= */
.oculto {
    display: none;
}

.link-sm {
    font-size: var(--fs-sm);
}

.capitalize { text-transform: capitalize; }

/* =============================================
   Ventana flotante referidos
   ============================================= */
#referidos-flotante {
    position: fixed;
    right: 24px;
    top: 80px;
    z-index: 9000;
    width: 340px;
    background: var(--color-card);
    border: 1.5px solid var(--color-primary);
    border-radius: 12px;
    box-shadow: 0 6px 20px rgba(0,0,0,0.18);
    font-size: .85rem;
    overflow: hidden;
    display: none;
}
#referidos-handle {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
    background: var(--color-primary);
    color: #fff;
    font-weight: 600;
    font-size: .83rem;
    cursor: grab;
    user-select: none;
}
#referidos-handle span { flex: 1; }
#referidos-close {
    background: none;
    border: none;
    color: rgba(255,255,255,0.8);
    font-size: 1.1rem;
    line-height: 1;
    cursor: pointer;
    padding: 0 2px;
}
#referidos-close:hover { color: #fff; }
#referidos-body { max-height: 320px; overflow-y: auto; }


/* Cabeceras de cards sin color explícito */
.card-header:not([class*="bg-"]) {
    background-color: var(--bs-secondary-bg);
}

/* Columna de acciones sticky al hacer scroll horizontal */
.td-sticky-right {
    position: sticky;
    right: 0;
    background-color: var(--bs-body-bg);
    z-index: 1;
}
tbody tr:hover .td-sticky-right {
    box-shadow: inset 0 0 0 9999px var(--bs-table-hover-bg);
}

/* =============================================
   Botón y decoraciones accent (sigue al tema)
   ============================================= */
.btn-accent {
    background-color: var(--color-primary) !important;
    border-color: var(--color-primary) !important;
    color: #fff !important;
}
.btn-accent:hover, .btn-accent:focus {
    filter: brightness(1.12);
}

.input-group-accent .input-group-text {
    background-color: var(--color-primary) !important;
    border-color: var(--color-primary) !important;
    color: #fff !important;
}
.input-group-accent .form-control {
    border-color: var(--color-primary) !important;
}
.input-group-accent .form-control:focus {
    border-color: var(--color-primary) !important;
    box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--color-primary) 25%, transparent) !important;
}

/* Combobox: sincronizar borde de foco entre input y select superpuestos */
.combo-wrap:focus-within .form-control,
.combo-wrap:focus-within .form-select {
    border-color: var(--color-primary) !important;
}


/* Alertas flotantes de página (no afectan al layout) */
.alert-page {
    position: fixed;
    top: 1.2rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1055;
    min-width: 300px;
    max-width: 90vw;
    box-shadow: 0 4px 16px rgba(0,0,0,.15);
    transition: opacity 0.5s;
}

.btn-add {
    background-color: var(--color-primary);
    border-color: var(--color-primary);
    color: #fff;
}
.btn-add:hover, .btn-add:focus {
    background-color: transparent;
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.file-input-primary::file-selector-button {
    background-color: #cfe2ff;
    border-color: #9ec5fe;
    color: #084298;
    border-right: 1px solid #9ec5fe;
}

/* Quill editor */
.ql-toolbar.ql-snow {
    border-color: var(--bs-border-color);
    background: var(--bs-tertiary-bg);
}
.ql-container.ql-snow {
    border-color: var(--bs-border-color);
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
}
.ql-editor {
    font-size: 15px;
}
.ql-editor.ql-blank::before {
    color: var(--bs-secondary-color) !important;
}
.ql-snow .ql-stroke,
.ql-snow .ql-stroke-miter {
    stroke: #90c4f9 !important;
}
.ql-snow .ql-fill,
.ql-snow .ql-stroke.ql-fill {
    fill: #90c4f9 !important;
}
.ql-snow .ql-picker {
    color: #90c4f9 !important;
}
.ql-snow.ql-toolbar button:hover .ql-stroke,
.ql-snow.ql-toolbar button:focus .ql-stroke,
.ql-snow.ql-toolbar button.ql-active .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,
.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke {
    stroke: #cce5ff !important;
}
.ql-snow.ql-toolbar button:hover .ql-fill,
.ql-snow.ql-toolbar button:focus .ql-fill,
.ql-snow.ql-toolbar button.ql-active .ql-fill,
.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill {
    fill: #cce5ff !important;
}
.ql-snow.ql-toolbar button:hover,
.ql-snow.ql-toolbar button.ql-active,
.ql-snow.ql-toolbar .ql-picker-label:hover,
.ql-snow.ql-toolbar .ql-picker-item:hover,
.ql-snow.ql-toolbar .ql-picker-item.ql-selected {
    color: #cce5ff !important;
}
.ql-snow .ql-picker-options {
    background: var(--bs-body-bg) !important;
    border-color: var(--bs-border-color) !important;
    color: #90c4f9 !important;
}

/* Quill size picker labels */
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="10px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="10px"]::before { content: 'Pequeño'; font-size: 10px; }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="13px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="13px"]::before { content: 'Normal'; font-size: 13px; }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="16px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16px"]::before { content: 'Grande'; font-size: 16px; }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="20px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="20px"]::before { content: 'Muy grande'; font-size: 20px; }
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="28px"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="28px"]::before { content: 'Título'; font-size: 28px; }

/* Botón revisar emails IMAP */
.btn-revisar-imap {
    background-color: #6ea8fe;
    border-color: #6ea8fe;
    color: #000;
    transition: background-color .15s ease, color .15s ease;
}
.btn-revisar-imap:hover,
.btn-revisar-imap:focus {
    background-color: transparent;
    border-color: #6ea8fe;
    color: #6ea8fe;
}

/* Quill preview — sin margen extra en párrafos */
#preview-firma-texto p,
#preview-firma-u-texto p,
#bloque-firma p,
.ql-editor p { margin-bottom: 0; }
