/* =====================================================================
   Faifex GMAO — Custom stylesheet
   Brand color: #FF6A00 (naranja)
   ===================================================================== */

/* ── Variables ───────────────────────────────────────────────────────── */
:root {
    --primary:       #FF6A00;
    --primary-dark:  #E55A00;
    --primary-light: rgba(255, 106, 0, 0.12);
    --success:  #28a745;
    --warning:  #ffc107;
    --danger:   #dc3545;
    --info:     #17a2b8;
    --light:    #f8f9fa;
    --dark:     #343a40;
    --sidebar-w: 240px;
}

/* ── Reset / Base ────────────────────────────────────────────────────── */
body {
    font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
    background-color: #f0f2f5;
    color: #333;
}

/* ── Brand / Primary overrides ───────────────────────────────────────── */
.text-primary        { color: var(--primary) !important; }
.border-primary      { border-color: var(--primary) !important; }
.bg-primary          { background-color: var(--primary) !important; }

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

/* ── Forms ───────────────────────────────────────────────────────────── */
.form-control:focus,
.form-select:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 0.2rem rgba(255, 106, 0, 0.25);
}
.form-check-input:checked {
    background-color: var(--primary);
    border-color:     var(--primary);
}

/* ── Navbar ──────────────────────────────────────────────────────────── */
.navbar {
    background-color: #fff;
    border-bottom: 1px solid #e8e8e8;
    box-shadow: 0 2px 6px rgba(0,0,0,0.06);
    z-index: 1030;
}
.navbar-brand {
    font-weight: 700;
    font-size: 1.25rem;
    color: var(--primary) !important;
    letter-spacing: -0.3px;
}
.navbar .nav-link {
    font-weight: 500;
    color: #555 !important;
    transition: color .15s;
}
.navbar .nav-link:hover,
.navbar .nav-link.active {
    color: var(--primary) !important;
}

/* ── Sidebar ─────────────────────────────────────────────────────────── */
.sidebar {
    width: var(--sidebar-w);
    min-height: calc(100vh - 56px);
    background: #fff;
    border-right: 1px solid #e8e8e8;
    padding-top: 1rem;
    flex-shrink: 0;
}
.sidebar .nav-link {
    color: #555;
    font-weight: 500;
    border-radius: 6px;
    margin: 2px 8px;
    padding: 8px 12px;
    transition: background .15s, color .15s;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
    background: var(--primary-light);
    color: var(--primary);
}
.sidebar .nav-link svg,
.sidebar .nav-link .icon {
    width: 18px;
    margin-right: 8px;
    opacity: .7;
}
.sidebar-section {
    font-size: .7rem;
    font-weight: 700;
    color: #999;
    text-transform: uppercase;
    letter-spacing: .8px;
    padding: 12px 20px 4px;
}
.content-wrapper {
    flex: 1;
    min-width: 0;
    padding: 1.5rem;
}

/* ── Cards ───────────────────────────────────────────────────────────── */
.card {
    border-radius: 10px;
    border: 1px solid #e8e8e8;
    transition: box-shadow .2s;
}
.card:hover {
    box-shadow: 0 4px 16px rgba(0,0,0,.08) !important;
}
.card-header {
    border-bottom: 1px solid #e8e8e8;
    font-weight: 600;
}
.kpi-card .kpi-value {
    font-size: 1.9rem;
    font-weight: 700;
    line-height: 1;
}
.kpi-card .kpi-label {
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: #888;
    margin-bottom: .25rem;
}
.kpi-card .kpi-icon {
    font-size: 2rem;
    opacity: .85;
}

/* ── Login special ───────────────────────────────────────────────────── */
.brand-icon { width: 48px; height: 48px; }
.login-card  { max-width: 420px; }

/* ── Tables ──────────────────────────────────────────────────────────── */
.table thead th {
    background-color: #f8f9fa;
    font-weight: 600;
    font-size: .8rem;
    text-transform: uppercase;
    letter-spacing: .4px;
    border-bottom: 2px solid #dee2e6;
    white-space: nowrap;
}
.table-hover tbody tr:hover {
    background-color: #fef6f0;
}
.table td { vertical-align: middle; }

/* ── Badges / Status ─────────────────────────────────────────────────── */
.badge {
    padding: .38em .72em;
    font-weight: 600;
    font-size: .78em;
    border-radius: 5px;
}

/* Estado activos */
.badge-operativo     { background-color: #d4edda; color: #155724; }
.badge-mantenimiento { background-color: #fff3cd; color: #856404; }
.badge-fuera-servicio{ background-color: #f8d7da; color: #721c24; }

/* Prioridad OT */
.badge-critica { background-color: #f8d7da; color: #721c24; }
.badge-alta    { background-color: #fdecc8; color: #7d4800; }
.badge-media   { background-color: #cfe2ff; color: #084298; }
.badge-baja    { background-color: #d1ecf1; color: #0c5460; }

/* Estado OT */
.badge-abierta     { background-color: #cfe2ff; color: #084298; }
.badge-en-progreso { background-color: #fff3cd; color: #856404; }
.badge-en-espera   { background-color: #e2e3e5; color: #383d41; }
.badge-completada  { background-color: #d4edda; color: #155724; }
.badge-cancelada   { background-color: #f8d7da; color: #721c24; }

/* SLA */
.badge-sla-cumplido    { background-color: #d4edda; color: #155724; }
.badge-sla-en-riesgo   { background-color: #fff3cd; color: #856404; }
.badge-sla-incumplido  { background-color: #f8d7da; color: #721c24; }
.badge-sla-pendiente   { background-color: #e2e3e5; color: #383d41; }

/* ── Modals ──────────────────────────────────────────────────────────── */
.modal-header {
    background-color: var(--light);
    border-bottom: 1px solid #dee2e6;
}
.modal-header .btn-close:focus {
    box-shadow: 0 0 0 .25rem rgba(255, 106, 0, .25);
}

/* ── Toast container ─────────────────────────────────────────────────── */
.toast-container {
    position: fixed;
    top: 1rem;
    right: 1rem;
    z-index: 9999;
    min-width: 280px;
}

/* ── Timeline (OT detail) ────────────────────────────────────────────── */
.timeline { position: relative; padding-left: 2rem; }
.timeline::before {
    content: '';
    position: absolute;
    left: .5rem;
    top: 0; bottom: 0;
    width: 2px;
    background: #dee2e6;
}
.timeline-item { position: relative; margin-bottom: 1.5rem; }
.timeline-item::before {
    content: '';
    position: absolute;
    left: -1.625rem;
    top: .35rem;
    width: 10px; height: 10px;
    border-radius: 50%;
    background: var(--primary);
    border: 2px solid #fff;
    box-shadow: 0 0 0 2px var(--primary);
}

/* ── Pagination ──────────────────────────────────────────────────────── */
.page-link:focus    { box-shadow: 0 0 0 .2rem rgba(255,106,0,.25); }
.page-item.active .page-link {
    background-color: var(--primary);
    border-color:     var(--primary);
}
.page-link { color: var(--primary); }

/* ── Responsive ──────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .sidebar { display: none !important; }
    .content-wrapper { padding: 1rem .75rem; }
    .kpi-card .kpi-value { font-size: 1.5rem; }
}
@media (max-width: 576px) {
    .table-responsive-xs { overflow-x: auto; }
    .btn-action-group .btn { padding: .25rem .5rem; font-size: .8rem; }
}
