/* ============================================================
   style.css - Sistema RRHH Defensor Sporting Club
   Paleta: Violeta #4C008E, Azul #05A5FC, Lila #EEA6B6
           Fondos blancos y grises claros.
   ============================================================ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

body{
    font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;
    background:#f5f5f8;
    color:#333;
    min-height:100vh;
    display:flex;flex-direction:column;
}

a{color:#4C008E;text-decoration:none}
a:hover{color:#05A5FC;text-decoration:underline}

/* ── HEADER ── */
header{
    background:linear-gradient(135deg,#4C008E 0%,#3a006b 100%);
    color:#fff;
    padding:0;
    box-shadow:0 4px 12px rgba(76,0,142,0.25);
}
.header-container{
    max-width:1300px;margin:0 auto;
    display:flex;align-items:center;justify-content:space-between;
    padding:0 1.5rem;height:64px;
}
.logo-area{display:flex;align-items:center;gap:0.75rem}
.logo-area img{height:38px;width:auto}
.logo-icon{
    width:42px;height:42px;background:#fff;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-weight:900;font-size:1.2rem;color:#4C008E;letter-spacing:1px;
}
.logo-text{font-size:1.1rem;font-weight:600;letter-spacing:.5px}
.logo-sub{font-size:.7rem;opacity:.8;font-weight:400;display:block}

nav{display:flex;gap:.25rem}
nav a{
    color:rgba(255,255,255,.85);padding:.5rem 1rem;border-radius:6px;
    font-weight:500;font-size:.9rem;transition:background .2s,color .2s;text-decoration:none;
}
nav a:hover,nav a.active{background:rgba(255,255,255,.15);color:#fff;text-decoration:none}

/* ── USER BAR ── */
.user-bar{
    display:flex;align-items:center;gap:.75rem;
}
.user-bar span{font-size:.85rem;opacity:.9}
.user-bar .btn-logout{
    background:rgba(255,255,255,.2);color:#fff;border:none;
    padding:.35rem .75rem;border-radius:6px;font-size:.8rem;font-weight:600;
    cursor:pointer;transition:background .2s;
}
.user-bar .btn-logout:hover{background:rgba(255,255,255,.35)}

/* ── MAIN ── */
main{
    flex:1;max-width:1300px;width:100%;margin:2rem auto;padding:0 1.5rem;
}
.page-title{color:#4C008E;font-size:1.6rem;font-weight:700;margin-bottom:.25rem}
.page-subtitle{color:#777;font-size:.95rem;margin-bottom:1.5rem}

/* ── STATS CARDS ── */
.stats-row{
    display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
    gap:1.25rem;margin-bottom:2rem;
}
.stat-card{
    background:#fff;border-radius:12px;padding:1.25rem 1.5rem;
    box-shadow:0 2px 8px rgba(0,0,0,.06);
    border-left:4px solid #4C008E;transition:transform .2s,box-shadow .2s;
}
.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(76,0,142,.12)}
.stat-card.warning{border-left-color:#f39c12}
.stat-card.danger{border-left-color:#e74c3c}
.stat-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;color:#999;margin-bottom:.35rem}
.stat-value{font-size:2rem;font-weight:700;color:#4C008E}
.stat-card.warning .stat-value{color:#f39c12}
.stat-card.danger .stat-value{color:#e74c3c}
.stat-icon{font-size:1.4rem;float:right;opacity:.3}

/* ── CARDS / TABLES ── */
.card{
    background:#fff;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.06);
    overflow:hidden;margin-bottom:2rem;
}
.card-header{
    background:#f9f7fb;padding:1rem 1.5rem;border-bottom:1px solid #ebe5f2;
    display:flex;align-items:center;justify-content:space-between;
}
.card-header h3{color:#4C008E;font-size:1.1rem;font-weight:600}
.card-body{padding:1.5rem}
.card-body.no-padding{padding:0}

table{width:100%;border-collapse:collapse}
thead th{
    background:#f9f7fb;color:#4C008E;font-weight:600;font-size:.85rem;
    text-transform:uppercase;letter-spacing:.5px;padding:.85rem 1rem;
    text-align:left;border-bottom:2px solid #ebe5f2;
}
tbody td{padding:.8rem 1rem;border-bottom:1px solid #f0ecf5;font-size:.92rem}
tbody tr:hover{background:#fdfbff}

.badge{display:inline-block;padding:.25rem .6rem;border-radius:20px;font-size:.78rem;font-weight:600}
.badge-success{background:#d4edda;color:#155724}
.badge-warning{background:#fff3cd;color:#856404}
.badge-danger{background:#f8d7da;color:#721c24}
.badge-info{background:#d1ecf1;color:#0c5460}
.checkbox-list{max-height:260px;overflow-y:auto;border:1.5px solid #d5cae8;border-radius:6px;padding:.4rem .6rem;background:#faf8fd}
.checkbox-list .checkbox-item{display:flex;align-items:center;gap:.5rem;padding:.28rem .15rem;font-size:.88rem;color:#333;cursor:pointer;border-radius:4px}
.checkbox-list .checkbox-item:hover{background:#f0eaf9}
.checkbox-list .checkbox-item input{cursor:pointer}
.text-center{text-align:center}
.text-right{text-align:right}

/* ── BUTTONS ── */
.btn{
    display:inline-flex;align-items:center;gap:.4rem;
    padding:.55rem 1.25rem;font-size:.9rem;font-weight:600;border-radius:8px;
    border:none;cursor:pointer;
    transition:background .2s,transform .15s,box-shadow .2s;text-decoration:none;
}
.btn:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(0,0,0,.12);text-decoration:none}
.btn-primary{background:#4C008E;color:#fff}
.btn-primary:hover{background:#5e00b0;color:#fff}
.btn-accent{background:#05A5FC;color:#fff}
.btn-accent:hover{background:#048bd6;color:#fff}
.btn-secondary{background:#e9e2f3;color:#4C008E}
.btn-secondary:hover{background:#d5cae8;color:#3a006b}
.btn-success{background:#27ae60;color:#fff}
.btn-success:hover{background:#219a52;color:#fff}
.btn-danger{background:#e74c3c;color:#fff}
.btn-danger:hover{background:#c0392b;color:#fff}
.btn-sm{padding:.35rem .75rem;font-size:.8rem;border-radius:6px}

/* ── FORMS ── */
.form-group{margin-bottom:1.25rem}
.form-group label{display:block;font-weight:600;font-size:.88rem;color:#444;margin-bottom:.4rem}
.form-control{
    width:100%;padding:.6rem .85rem;font-size:.92rem;
    border:1.5px solid #d5cae8;border-radius:8px;background:#fff;
    transition:border-color .2s,box-shadow .2s;font-family:inherit;
}
.form-control:focus{outline:none;border-color:#4C008E;box-shadow:0 0 0 3px rgba(76,0,142,.12)}
.form-control:disabled{background:#f5f3f7;color:#888}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:600px){.form-row{grid-template-columns:1fr}}

/* ── ALERTS ── */
.alert{
    padding:.9rem 1.25rem;border-radius:8px;margin-bottom:1.25rem;
    font-size:.9rem;font-weight:500;display:flex;align-items:center;gap:.5rem;
}
.alert-success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}
.alert-error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}
.alert-info{background:#e8dff5;color:#4C008E;border:1px solid #d1c4e9}

/* ── TEACHER INFO ── */
.profesor-info{
    background:linear-gradient(135deg,#f9f7fb 0%,#f0ebf7 100%);
    border:1px solid #d5cae8;border-radius:10px;
    padding:1rem 1.25rem;margin-bottom:1.25rem;
    display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
}
.profesor-info .info-item{display:flex;flex-direction:column}
.profesor-info .info-label{font-size:.72rem;text-transform:uppercase;color:#888;letter-spacing:.5px}
.profesor-info .info-value{font-size:1.1rem;font-weight:700;color:#4C008E}
.profesor-info .info-value.danger{color:#e74c3c}

/* ── FOOTER ── */
footer{
    background:#2d1a3e;color:rgba(255,255,255,.7);
    text-align:center;padding:1rem;font-size:.82rem;margin-top:auto;
}
footer span{color:#EEA6B6}

/* ── EMPTY STATE ── */
.empty-state{text-align:center;padding:3rem 1.5rem;color:#999}
.empty-state .empty-icon{font-size:3rem;margin-bottom:.75rem;opacity:.5}
.empty-state p{font-size:.95rem;margin-bottom:1rem}

/* ── LOGIN PAGE ── */
body.login-page{
    background:linear-gradient(135deg,#4C008E 0%,#2d0058 50%,#1a0033 100%);
    min-height:100vh;display:flex;align-items:center;justify-content:center;
}
.login-wrapper{width:100%;max-width:420px;padding:1.5rem}
.login-card{
    background:#4C008E;border-radius:16px;padding:2.5rem 2rem;
    box-shadow:0 8px 32px rgba(0,0,0,.35);text-align:center;color:#fff;
}
.login-logo{margin-bottom:1.25rem}
.login-logo img{max-width:120px;height:auto}
.login-card h2{color:#fff;font-size:1.4rem;margin-bottom:.25rem}
.login-subtitle{color:rgba(255,255,255,.75);font-size:.9rem;margin-bottom:1.5rem}
.login-card .form-group{text-align:left}
.login-card .form-group label{color:rgba(255,255,255,.9);font-weight:500}
.login-card .form-control{border-color:rgba(255,255,255,.3);background:rgba(255,255,255,.15);color:#fff}
.login-card .form-control::placeholder{color:rgba(255,255,255,.5)}
.login-card .form-control:focus{background:rgba(255,255,255,.25);border-color:#05A5FC;box-shadow:0 0 0 3px rgba(5,165,252,.25)}
.login-card .btn-primary{background:#fff;color:#4C008E;font-weight:700}
.login-card .btn-primary:hover{background:#e9e2f3;color:#4C008E}
.login-card .alert-error{background:rgba(255,255,255,.2);color:#fff;border:1px solid rgba(255,255,255,.3)}

/* ── CALENDAR (gantt) ── */
.calendar-container{
    background:#fff;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.06);
    overflow:hidden;margin-bottom:2rem;
}
.calendar-nav{
    display:flex;align-items:center;justify-content:space-between;
    padding:1rem 1.5rem;background:#f9f7fb;border-bottom:1px solid #ebe5f2;
    gap:.75rem;flex-wrap:wrap;
}
.calendar-nav-group{display:flex;align-items:center;gap:.5rem}
.calendar-nav select{
    padding:.5rem .75rem;font-size:.9rem;border:1.5px solid #d5cae8;border-radius:6px;
    background:#fff;color:#333;font-family:inherit;cursor:pointer;
}
.calendar-nav select:focus{outline:none;border-color:#4C008E;box-shadow:0 0 0 3px rgba(76,0,142,.12)}
.calendar-nav .btn-nav{
    background:#4C008E;color:#fff;border:none;padding:.5rem .9rem;
    border-radius:6px;cursor:pointer;font-size:1rem;font-weight:600;
    transition:background .2s;line-height:1;
}
.calendar-nav .btn-nav:hover{background:#5e00b0}
.calendar-nav .btn-today{
    background:#e9e2f3;color:#4C008E;border:none;padding:.5rem 1rem;
    border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:600;transition:background .2s;
}
.calendar-nav .btn-today:hover{background:#d5cae8}
.calendar-month-label{font-size:1.1rem;font-weight:700;color:#4C008E;min-width:160px;text-align:center}

.calendar-leyenda{
    display:flex;align-items:center;gap:1.25rem;padding:.6rem 1.5rem;
    background:#fff;border-bottom:1px solid #f0ecf5;font-size:.78rem;color:#777;flex-wrap:wrap;
}
.leyenda-item{display:flex;align-items:center;gap:.35rem}
.leyenda-color{width:14px;height:14px;border-radius:3px;border:1px solid #ccc}
.leyenda-color.licencia{background:#4C008E;border-color:#3a006b}
.leyenda-color.no-laborable{background:#f0f0f0;border-color:#ddd}
.leyenda-color.laborable{background:#fff;border-color:#d5cae8}

.calendar-scroll{overflow-x:auto;overflow-y:visible;max-height:70vh;border-top:1px solid #f0ecf5}
.calendar-scroll::-webkit-scrollbar{height:8px}
.calendar-scroll::-webkit-scrollbar-track{background:#f5f3f7;border-radius:4px}
.calendar-scroll::-webkit-scrollbar-thumb{background:#d5cae8;border-radius:4px}
.calendar-scroll::-webkit-scrollbar-thumb:hover{background:#b8a5d4}

.calendar-table{border-collapse:collapse;min-width:100%;table-layout:auto}
.calendar-table thead th{
    position:sticky;top:0;z-index:2;background:#f9f7fb;color:#555;
    font-weight:600;font-size:.75rem;text-align:center;padding:.5rem 0;
    min-width:36px;width:36px;border-right:1px solid #ebe5f2;border-bottom:2px solid #d5cae8;white-space:nowrap;
}
.calendar-table thead th.weekend{background:#ece7f3;color:#888}
.calendar-table thead th.today-col{background:#e8dff5;color:#4C008E;font-weight:800;border-bottom:2px solid #4C008E}
.calendar-table .row-header{
    position:sticky;left:0;z-index:1;background:#fff;font-weight:600;
    font-size:.82rem;color:#333;text-align:left;padding:.55rem .75rem;
    min-width:180px;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    border-right:2px solid #d5cae8;border-bottom:1px solid #f0ecf5;
}
.calendar-table tbody tr:hover .row-header{background:#f9f7fb}
.calendar-table .day-cell{
    text-align:center;padding:0;min-width:36px;width:36px;height:34px;
    border-right:1px solid #f0ecf5;border-bottom:1px solid #f0ecf5;
    cursor:default;transition:background .15s;
}
.calendar-table .day-cell.normal{background:#fff}
.calendar-table .day-cell.no-laborable{background:#f0f0f0}
.calendar-table .day-cell.licencia{background:#4C008E;color:#fff;position:relative}
.calendar-table .day-cell.licencia::after{
    content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
    width:6px;height:6px;background:rgba(255,255,255,.5);border-radius:50%;
}
.calendar-table .day-cell.licencia:hover{
    background:#5e00b0;cursor:pointer;box-shadow:inset 0 0 0 2px rgba(255,255,255,.3);
}
.calendar-table .day-cell.today{box-shadow:inset 0 0 0 2px #4C008E;font-weight:700}
.calendar-empty{text-align:center;padding:3rem 1.5rem;color:#999}
.calendar-empty .empty-icon{font-size:3rem;margin-bottom:.75rem;opacity:.5}

/* ── CALENDARIO ANUAL (matriz 12 meses) ── */
.anual-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}
@media(max-width:1100px){.anual-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.anual-grid{grid-template-columns:1fr}}

.anual-mes-card{
    background:#fff;border-radius:10px;box-shadow:0 2px 6px rgba(0,0,0,.05);
    overflow:hidden;
}
.anual-mes-header{
    background:linear-gradient(135deg,#4C008E,#3a006b);color:#fff;
    padding:.65rem 1rem;font-weight:700;font-size:.95rem;text-align:center;
}
.anual-mes-body{padding:.5rem;min-height:60px}
.anual-bloque{
    background:#f3eef9;border-left:3px solid #4C008E;
    border-radius:4px;padding:.4rem .55rem;margin-bottom:.35rem;
    font-size:.78rem;line-height:1.3;
    transition:background .15s;
}
.anual-bloque:hover{background:#e8dff5}
.anual-bloque .bloque-profesor{font-weight:700;color:#4C008E}
.anual-bloque .bloque-fechas{color:#555;font-size:.75rem}
.anual-bloque:nth-child(odd){background:#f9f7fb;border-left-color:#05A5FC}
.anual-bloque:nth-child(odd):hover{background:#eef6ff}
.anual-empty{text-align:center;color:#bbb;font-size:.78rem;padding:1rem;font-style:italic}

/* ── SEARCH BAR ── */
.search-bar{
    padding:1rem 1.5rem;background:#fff;border-bottom:1px solid #f0ecf5;
    display:flex;align-items:center;gap:.75rem;
}
.search-bar input{
    flex:1;max-width:350px;padding:.5rem .75rem;
    border:1.5px solid #d5cae8;border-radius:8px;font-size:.88rem;
    font-family:inherit;transition:border-color .2s,box-shadow .2s;
}
.search-bar input:focus{
    outline:none;border-color:#4C008E;box-shadow:0 0 0 3px rgba(76,0,142,.12);
}
.search-bar .search-icon{color:#888;font-size:1rem}
.search-bar .search-clear{
    background:none;border:none;color:#999;cursor:pointer;font-size:1rem;
    padding:.2rem .4rem;display:none;
}
.search-bar .search-clear:hover{color:#4C008E}
.search-info{font-size:.78rem;color:#888;white-space:nowrap}

/* ── SORTABLE HEADERS ── */
th.sortable{
    cursor:pointer;user-select:none;position:relative;
    padding-right:1.5rem !important;
    transition:background .15s;
}
th.sortable:hover{background:#e8dff5}
th.sortable .sort-arrow{
    position:absolute;right:.5rem;top:50%;transform:translateY(-50%);
    font-size:.7rem;opacity:.4;
}
th.sortable.sorted .sort-arrow{opacity:1;color:#4C008E}
th.sortable.sorted.asc .sort-arrow::after{content:'▲'}
th.sortable.sorted.desc .sort-arrow::after{content:'▼'}

/* ── PAGINATION ── */
.pagination{
    display:flex;align-items:center;justify-content:center;gap:.35rem;
    padding:1rem 1.5rem;flex-wrap:wrap;
}
.pagination a,.pagination span{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:36px;height:36px;padding:0 .6rem;
    border-radius:6px;font-size:.85rem;font-weight:600;
    text-decoration:none;transition:all .15s;
}
.pagination a{
    background:#fff;color:#4C008E;border:1.5px solid #d5cae8;
}
.pagination a:hover{background:#e8dff5;border-color:#4C008E;text-decoration:none}
.pagination .active{
    background:#4C008E;color:#fff;border:1.5px solid #4C008E;
}
.pagination .disabled{
    background:#f5f3f7;color:#bbb;border:1.5px solid #e0dce8;cursor:default;
}
.pagination .pagination-info{font-size:.8rem;color:#888;margin:0 .5rem}

/* ── MODAL ── */
.modal-overlay{
    display:none;position:fixed;top:0;left:0;width:100%;height:100%;
    background:rgba(0,0,0,.5);z-index:1000;align-items:center;justify-content:center;
}
.modal-overlay.active{display:flex}
.modal-content{
    background:#fff;border-radius:14px;width:90%;max-width:600px;max-height:85vh;
    overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.25);animation:modalIn .25s ease;
}
@keyframes modalIn{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
.modal-header{
    background:#4C008E;color:#fff;padding:1rem 1.5rem;display:flex;
    align-items:center;justify-content:space-between;border-radius:14px 14px 0 0;
}
.modal-header h3{margin:0;font-size:1.1rem;font-weight:600}
.modal-close{
    background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;
    line-height:1;opacity:.8;transition:opacity .2s;
}
.modal-close:hover{opacity:1}
.modal-body{padding:1.5rem}
.modal-body table{width:100%;border-collapse:collapse}
.modal-body table td{padding:.55rem .75rem;border-bottom:1px solid #f0ecf5;font-size:.88rem;vertical-align:top}
.modal-body table td:first-child{font-weight:600;color:#4C008E;width:40%;white-space:nowrap}

/* ── RESPONSIVE ── */
@media(max-width:768px){
    .header-container{flex-direction:column;height:auto;padding:.75rem 1rem;gap:.5rem}
    nav{flex-wrap:wrap;justify-content:center}
    main{margin:1rem auto;padding:0 1rem}
    .stats-row{grid-template-columns:1fr 1fr}
    table{font-size:.82rem}
    thead th,tbody td{padding:.6rem .5rem}
    .calendar-nav{flex-direction:column;align-items:stretch}
    .calendar-nav-group{justify-content:center}
    .calendar-month-label{text-align:center}
    .calendar-leyenda{justify-content:center}
}