/* =============================================================================
   LMS — CIAV Branded
   Deep navy (#1B2A4A), warm coral (#E8593C), gold accents, Poppins font
   Matched to ciav.com's professional, warm, approachable identity
   ============================================================================= */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');

:root {
    --ciav-navy: #1B2A4A;
    --ciav-navy-light: #2A3D66;
    --ciav-navy-dark: #111D35;
    --ciav-coral: #E8593C;
    --ciav-coral-dark: #D14520;
    --ciav-coral-light: #FDF0ED;
    --ciav-gold: #F2A623;
    --ciav-gold-light: #FEF7E6;
    --ciav-teal: #2A9D8F;
    --ciav-teal-light: #E6F5F3;
    --color-primary: var(--ciav-navy);
    --color-primary-light: #E8EDF5;
    --color-accent: var(--ciav-coral);
    --color-success: #16a34a;
    --color-success-light: #dcfce7;
    --color-danger: #dc2626;
    --color-danger-light: #fee2e2;
    --color-bg: #F5F7FA;
    --color-surface: #ffffff;
    --color-border: #E2E8F0;
    --color-text: #1E293B;
    --color-text-secondary: #64748B;
    --color-text-muted: #94A3B8;
    --font-body: 'Poppins', 'Segoe UI', system-ui, sans-serif;
    --font-mono: 'Cascadia Code', 'Fira Code', Consolas, monospace;
    --radius: 10px;
    --radius-lg: 14px;
    --shadow-sm: 0 1px 3px rgba(27,42,74,0.06);
    --shadow-md: 0 4px 12px rgba(27,42,74,0.08);
    --shadow-lg: 0 8px 24px rgba(27,42,74,0.12);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font-body);background:var(--color-bg);color:var(--color-text);line-height:1.65}
a{color:var(--ciav-coral);text-decoration:none;transition:color .15s}
a:hover{color:var(--ciav-coral-dark);text-decoration:underline}
.mono{font-family:var(--font-mono);font-size:.85em;letter-spacing:.02em}

/* Navbar */
.navbar{background:var(--ciav-navy);padding:0 1.5rem;display:flex;align-items:center;gap:1rem;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(0,0,0,.15);height:56px}
.nav-brand{font-weight:700;font-size:1.1rem;color:#fff;display:flex;align-items:center;gap:.5rem}
.nav-brand:hover{text-decoration:none;color:#fff}
.nav-brand-logo{height:28px;width:auto;border-radius:4px}
.nav-links{display:flex;gap:.15rem;flex:1}
.nav-links a{padding:.4rem .75rem;border-radius:6px;font-size:.85rem;font-weight:500;color:rgba(255,255,255,.75);transition:all .15s}
.nav-links a:hover{background:rgba(255,255,255,.1);color:#fff;text-decoration:none}
.nav-user{display:flex;align-items:center;gap:.6rem;font-size:.8rem;color:rgba(255,255,255,.6)}
.nav-user a{color:rgba(255,255,255,.75);padding:.3rem .6rem;border-radius:6px;font-size:.8rem}
.nav-user a:hover{background:rgba(255,255,255,.1);color:#fff;text-decoration:none}

/* Container */
.container{max-width:1100px;margin:0 auto;padding:1.75rem}

/* Page Header */
.profile-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.75rem;flex-wrap:wrap;gap:.75rem}
.profile-header h1{font-size:1.6rem;font-weight:700;color:var(--ciav-navy)}
.subtitle{color:var(--color-text-secondary);font-size:.9rem;margin-top:.2rem}
.header-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.section-title{font-size:1.15rem;font-weight:600;margin:1.75rem 0 .85rem;padding-left:4px;color:var(--ciav-navy)}

/* Stats */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:2rem}
.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem 1rem;text-align:center;box-shadow:var(--shadow-sm);transition:box-shadow .2s}
.stat-card:hover{box-shadow:var(--shadow-md)}
.stat-card--link{display:block;text-decoration:none;color:inherit;cursor:pointer}
.stat-card--link:hover{box-shadow:var(--shadow-md)}
.stat-card--warning{border-left:3px solid var(--ciav-coral)}
.stat-number{font-size:2rem;font-weight:700;color:var(--ciav-navy);display:block;line-height:1.2}
.stat-label{font-size:.78rem;color:var(--color-text-secondary);font-weight:500;margin-top:.2rem}

/* Cards */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}
.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.15rem;box-shadow:var(--shadow-sm);transition:all .2s}
.card--link{display:block;color:inherit;border-left:3px solid transparent}
.card--link:hover{box-shadow:var(--shadow-md);text-decoration:none;border-left-color:var(--ciav-coral);transform:translateY(-1px)}
.card-header{display:flex;gap:.5rem;margin-bottom:.5rem}
.card h3{font-size:.95rem;font-weight:600;margin-bottom:.25rem;color:var(--ciav-navy)}
.card-meta{font-size:.8rem;color:var(--color-text-muted)}
.section{margin-bottom:2rem}
.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}
.section-header h2{color:var(--ciav-navy)}

/* Profile Grid */
.profile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-bottom:1rem}
.info-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.35rem;box-shadow:var(--shadow-sm)}
.info-card h3{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ciav-coral);margin-bottom:.85rem;padding-bottom:.55rem;border-bottom:2px solid var(--ciav-coral-light)}
.data-row{display:flex;justify-content:space-between;padding:.35rem 0;font-size:.875rem}
.data-row .label{color:var(--color-text-secondary)}
.data-row .value{font-weight:500;text-align:right}
.guardian-block{font-size:.875rem}
.guardian-block strong{color:var(--ciav-navy)}
.guardian-block small{color:var(--color-text-secondary)}
.divider{border:0;border-top:1px solid var(--color-border);margin:.85rem 0}
.link-list{display:flex;flex-direction:column;gap:.5rem}
.doc-link{font-size:.875rem;color:var(--ciav-coral);font-weight:500}
.doc-link:hover{color:var(--ciav-coral-dark)}
.no-docs{color:var(--color-text-muted);font-size:.85rem;font-style:italic}
.docs-block{display:flex;flex-direction:column;gap:.85rem}
.doc-section-title{font-size:.85rem;font-weight:600;color:var(--color-text-secondary);margin:0 0 .35rem 0}
.doc-year-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.3rem}
.doc-year-list li{display:flex;align-items:center;gap:.6rem;font-size:.875rem}
.doc-year{display:inline-block;min-width:3rem;font-weight:600;color:var(--ciav-navy);background:var(--color-bg-muted,#f3f4f6);padding:.1rem .5rem;border-radius:4px;text-align:center}
.doc-link-inline{color:var(--ciav-coral);font-weight:500}
.doc-link-inline:hover{color:var(--ciav-coral-dark)}
.doc-notes{font-size:.78rem;color:var(--color-text-muted);font-style:italic}
.stats-row{display:flex;gap:1.25rem;justify-content:center}
.stat-box{text-align:center}
.stat-box .stat-number{font-size:1.75rem;font-weight:700;display:block;color:var(--ciav-navy)}
.stat-box .stat-label{font-size:.75rem;color:var(--color-text-secondary);font-weight:500}

/* Tables */
.table-responsive{overflow-x:auto}
.data-table{width:100%;border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--color-border)}
.data-table thead{background:var(--ciav-navy)}
.data-table th{padding:.6rem .85rem;text-align:left;font-size:.72rem;font-weight:600;color:rgba(255,255,255,.9);text-transform:uppercase;letter-spacing:.04em}
.data-table td{padding:.55rem .85rem;border-bottom:1px solid var(--color-border);font-size:.875rem}
.data-table tbody tr:hover{background:#F8FAFD}
.clickable-row{cursor:pointer}
.clickable-row:hover{background:var(--color-primary-light)!important}
.results-count{font-size:.85rem;color:var(--color-text-muted);margin-bottom:.75rem}

/* Badges */
.badge{display:inline-block;padding:.2em .6em;font-size:.7rem;font-weight:600;border-radius:99px;text-transform:capitalize}
.badge--curso{background:var(--color-primary-light);color:var(--ciav-navy)}
.badge--fases{background:var(--ciav-coral-light);color:var(--ciav-coral)}
.badge--aprobado,.badge--sent{background:var(--color-success-light);color:var(--color-success)}
.badge--reprobado,.badge--error{background:var(--color-danger-light);color:var(--color-danger)}
.badge--pending{background:var(--ciav-gold-light);color:#92400e}
.badge--perfect-attendance{background:var(--ciav-gold-light);color:#92400e;font-size:.8rem}

/* Buttons */
.btn{display:inline-flex;align-items:center;padding:.5rem 1rem;font-size:.85rem;font-weight:500;font-family:var(--font-body);border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:all .15s;text-decoration:none;gap:.35rem}
.btn:hover{background:var(--color-bg);text-decoration:none;box-shadow:var(--shadow-sm)}
.btn-primary{background:var(--ciav-coral);color:#fff;border-color:var(--ciav-coral)}
.btn-primary:hover{background:var(--ciav-coral-dark);border-color:var(--ciav-coral-dark);color:#fff}
.btn-secondary{background:var(--ciav-navy);color:#fff;border-color:var(--ciav-navy)}
.btn-secondary:hover{background:var(--ciav-navy-light);border-color:var(--ciav-navy-light);color:#fff}
.btn-sm{padding:.3rem .65rem;font-size:.8rem}
.btn-full{width:100%;justify-content:center}

/* Forms */
.form-group{margin-bottom:1rem}
.form-group label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.35rem;color:var(--ciav-navy)}
.form-input,.form-select{width:100%;padding:.5rem .75rem;font-size:.9rem;font-family:var(--font-body);border:1.5px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-text);transition:border-color .15s,box-shadow .15s}
.form-input:focus,.form-select:focus{outline:none;border-color:var(--ciav-coral);box-shadow:0 0 0 3px var(--ciav-coral-light)}
.search-form{margin-bottom:1.5rem}
.search-row{display:flex;gap:.6rem;flex-wrap:wrap}
.search-input{flex:1;min-width:200px}
.search-row .form-select{width:auto;min-width:190px}

/* Auth */
.auth-page{display:flex;align-items:center;justify-content:center;min-height:90vh;background:linear-gradient(135deg,var(--ciav-navy) 0%,var(--ciav-navy-light) 100%)}
.auth-card{background:var(--color-surface);border-radius:var(--radius-lg);padding:2.5rem;box-shadow:var(--shadow-lg);width:100%;max-width:400px;text-align:center}
.auth-card h1{font-size:1.6rem;margin-bottom:.25rem;color:var(--ciav-navy)}
.auth-card .subtitle{margin-bottom:1.75rem;color:var(--ciav-coral);font-weight:500}
.auth-card .form-group{text-align:left}

/* Alerts */
.messages{max-width:1100px;margin:.75rem auto;padding:0 1.75rem}
.alert{padding:.6rem 1rem;border-radius:8px;margin-bottom:.5rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem;font-weight:500}
.alert-success{background:var(--color-success-light);color:var(--color-success)}
.alert-error{background:var(--color-danger-light);color:var(--color-danger)}
.alert-warning{background:var(--ciav-gold-light);color:#92400e}
.alert-close{background:none;border:none;font-size:1.1rem;cursor:pointer;color:inherit;opacity:.7}

/* Utility */
.text-success{color:var(--color-success)!important}
.text-danger{color:var(--color-danger)!important}
.text-warning{color:var(--ciav-gold)!important}
.text-muted{color:var(--color-text-muted)!important}
.empty-state{text-align:center;padding:2.5rem;color:var(--color-text-muted);font-style:italic}



/* Scores */
.scores-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:.6rem}
.score-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:.7rem;text-align:center;transition:box-shadow .15s}
.score-card:hover{box-shadow:var(--shadow-sm)}
.score-name{font-size:.72rem;font-weight:500;margin-bottom:.15rem;line-height:1.3;color:var(--ciav-navy)}
.score-category{font-size:.65rem;color:var(--color-text-muted);margin-bottom:.35rem}
.score-value{font-size:1.15rem;font-weight:700;color:var(--ciav-navy)}

/* =============================================================================
   CALENDAR GRID — proper Mon-Fri calendar with message column
   ============================================================================= */
.cal-wrap{overflow-x:auto}
.cal-grid{min-width:820px}

.cal-hdr{
    display:grid;
    grid-template-columns:80px repeat(5,52px) 70px 36px 1fr;
    gap:1px;
    background:var(--ciav-navy);
    border-radius:var(--radius) var(--radius) 0 0;
}
.cal-hd{
    padding:10px 6px;
    font-size:.7rem;
    font-weight:600;
    color:rgba(255,255,255,.85);
    text-align:center;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.cal-hd-wk{text-align:left;padding-left:12px}
.cal-hd-st{padding:10px 2px}
.cal-hd-msg{text-align:left;padding-left:14px}

.cal-body{display:flex;flex-direction:column;gap:1px}

.cal-row{
    display:grid;
    grid-template-columns:80px repeat(5,52px) 70px 36px 1fr;
    gap:1px;
    background:var(--color-border);
}
.cal-row--empty{opacity:.5}

.cal-year-row{
    background:var(--ciav-navy);
}
.cal-year-label{
    padding:6px 12px;
    font-size:.78rem;
    font-weight:700;
    color:#fff;
    letter-spacing:.05em;
}

.cal-c{
    background:var(--color-surface);
    padding:10px 6px;
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:50px;
    font-size:.8rem;
}

.cal-wk{
    flex-direction:column;
    gap:1px;
    justify-content:center;
    align-items:flex-start;
    padding-left:12px;
}
.cal-wk strong{font-size:.82rem;color:var(--ciav-navy);font-weight:700}
.cal-wk small{font-size:.6rem;color:var(--color-text-muted);font-weight:400;line-height:1.2}

.cal-dc{padding:8px 4px}

.cal-dot{
    width:22px;
    height:22px;
    border-radius:50%;
    border:2px solid var(--color-border);
    background:var(--color-surface);
    display:block;
    transition:transform .1s;
}
.cal-dot:hover{transform:scale(1.2)}
.cal-dot--P{background:var(--color-success);border-color:var(--color-success)}
.cal-dot--L{background:var(--ciav-gold);border-color:var(--ciav-gold)}
.cal-dot--A{background:var(--ciav-coral);border-color:var(--ciav-coral)}
.cal-dot--E{background:var(--ciav-teal);border-color:var(--ciav-teal)}
.cal-dot--AJ{background:#9CA3AF;border-color:#9CA3AF}
.cal-dot--ANP{background:#fff;border-color:var(--ciav-coral);position:relative}
.cal-dot--ANP::before{content:'';position:absolute;left:50%;top:50%;width:6px;height:6px;background:var(--ciav-coral);border-radius:50%;transform:translate(-50%,-50%)}
/* Legacy: T was the old code for late, treat as L */
.cal-dot--T{background:var(--ciav-gold);border-color:var(--ciav-gold)}
.cal-dot--none,.cal-dot--None{background:var(--color-bg);border-color:var(--color-border)}

.cal-sc{font-size:.75rem;flex-direction:column;gap:0}
.cal-sc-v{font-weight:700;color:var(--ciav-navy)}
.cal-sc small{color:var(--color-text-muted);font-size:.65rem}
.cal-sc-na{color:var(--color-text-muted)}

.cal-st{padding:8px 2px}
.cal-sd{
    display:block;
    width:10px;
    height:10px;
    border-radius:50%;
}
.cal-sd--sent{background:var(--color-success)}
.cal-sd--error{background:var(--ciav-coral)}
.cal-sd--pending{background:var(--ciav-gold)}

.cal-msg{
    justify-content:flex-start;
    padding:8px 14px;
    font-size:.78rem;
    color:var(--color-text);
    line-height:1.45;
    border-left:3px solid transparent;
    border-radius:0;
}
.cal-msg--on{
    border-left-color:var(--ciav-coral);
    background:var(--ciav-coral-light);
}
.cal-msg-who{
    font-weight:600;
    color:var(--ciav-coral);
    margin-right:.25rem;
}
.cal-msg-na{
    color:var(--color-text-muted);
    font-style:italic;
    font-size:.75rem;
}

.cal-legend{
    display:flex;
    gap:1.25rem;
    margin-top:1rem;
    padding:.75rem 1rem;
    font-size:.78rem;
    color:var(--color-text-secondary);
    flex-wrap:wrap;
    background:var(--color-surface);
    border-radius:8px;
    border:1px solid var(--color-border);
}
.cal-lg{display:flex;align-items:center;gap:.4rem;font-weight:500}
.cal-lg .cal-dot{width:12px;height:12px}
.cal-lg .cal-sd{width:8px;height:8px}

/* Responsive */
@media(max-width:768px){
    .navbar{flex-wrap:wrap;height:auto;padding:.5rem 1rem}
    .nav-links{order:3;width:100%}
    .container{padding:1rem}
    .profile-grid{grid-template-columns:1fr}
    .search-row{flex-direction:column}
    .search-row .form-select{width:100%}
    .stats-grid{grid-template-columns:repeat(2,1fr)}
    .cal-wrap{margin:0 -1rem}
}

/* ===================================================================
   Additions: weekly-report sending, Enlace dashboard, sync detail,
   school nivel tag. Moved here from per-template <style> blocks.
   =================================================================== */

/* ── Shared: form pages (send weekly reports, etc.) ──────────────── */
.form-page{max-width:600px;margin:0 auto}
.form-page-header{margin-bottom:1.5rem}
.form-page-header h1{margin:.5rem 0 .25rem}
.page-subtitle{color:var(--color-text-muted);margin:0;font-size:.9rem}
.back-link{font-size:.85rem;color:var(--ciav-coral);text-decoration:none}
.back-link:hover{text-decoration:underline}

.form-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}
.form-card fieldset{border:none;padding:1.25rem 1.5rem;margin:0}
.form-card legend{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ciav-coral);padding:0;margin-bottom:.85rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.form-help{font-size:.82rem;color:var(--color-text-muted);margin-top:.75rem;line-height:1.5}
.checkbox-row{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--ciav-navy);margin-top:.85rem}
.form-actions{display:flex;justify-content:flex-end;gap:.75rem;padding:1.25rem 1.5rem;background:var(--color-bg);border-radius:0 0 var(--radius) var(--radius)}

.alert-error{background:#FEE2E2;color:#B91C1C;padding:.75rem 1rem;margin-bottom:1rem;border-radius:8px;font-size:.9rem}
.alert-info{background:#DBEAFE;color:#1E40AF;padding:.75rem 1rem;margin-bottom:1rem;border-radius:8px;font-size:.9rem;line-height:1.5}

/* ── Send-result summary card ────────────────────────────────────── */
.result-card{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--ciav-coral);border-radius:var(--radius);padding:1.25rem 1.5rem;margin-bottom:1.5rem}
.result-card h3{margin:0 0 .85rem;font-size:.95rem;color:var(--ciav-navy)}
.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}
.result-stat{background:var(--color-bg);border-radius:8px;padding:.85rem;text-align:center}
.result-stat--ok{background:#DCFCE7}
.result-stat--err{background:#FEE2E2}
.result-num{font-size:1.6rem;font-weight:700;color:var(--ciav-navy);line-height:1}
.result-label{font-size:.72rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-top:.35rem}
.result-note{font-size:.85rem;color:var(--color-text-muted);margin:.85rem 0 0;line-height:1.5}

.empty-state-card{text-align:center;padding:3rem 1rem;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius)}

/* ── Send-history table (weekly report runs) ─────────────────────── */
.history-section{margin-top:2.5rem}
.history-title{font-size:1rem;color:var(--ciav-navy);margin-bottom:.75rem}
.history-table{width:100%;border-collapse:collapse;font-size:.82rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}
.history-table th,.history-table td{padding:.5rem .7rem;text-align:left;border-bottom:1px solid var(--color-border)}
.history-table th{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-weight:600}
.history-table .num{text-align:right;white-space:nowrap}
.history-detail td{background:var(--color-bg);font-size:.78rem;color:var(--color-text-muted);padding:.35rem .7rem}
.dry-tag{font-size:.7rem;color:var(--color-text-muted);font-style:italic;margin-left:.3rem}

/* ── Status badges (shared: send history, sync detail) ───────────── */
.badge--success{background:#DCFCE7;color:#15803D}
.badge--warning{background:#FEF3C7;color:#B45309}
.badge--danger{background:#FEE2E2;color:#B91C1C}
.badge--neutral{background:#E5E7EB;color:#6B7280}

/* ── Sync detail (group management list, expandable row) ─────────── */
.sync-detail summary{cursor:pointer;list-style:none}
.sync-detail summary::-webkit-details-marker{display:none}
.sync-detail-toggle{margin-left:.5rem;color:var(--ciav-coral);font-weight:600;font-size:.78rem;white-space:nowrap}
.sync-detail[open] .sync-detail-toggle::after{content:' (ocultar)'}
.sync-detail-body{margin-top:.6rem;padding-top:.6rem;border-top:1px solid var(--color-border)}
.sync-runs-table{width:100%;border-collapse:collapse;font-size:.78rem}
.sync-runs-table th,.sync-runs-table td{text-align:left;padding:.35rem .6rem;border-bottom:1px solid var(--color-border);vertical-align:top}
.sync-runs-table th{color:var(--color-text-muted);font-weight:600;text-transform:uppercase;font-size:.7rem;letter-spacing:.03em}
.sync-run-msg{max-width:380px;white-space:normal;color:var(--color-text)}

/* ── School detail: nivel tag ────────────────────────────────────── */
.nivel-tag{background:var(--ciav-coral-light);color:var(--ciav-coral-dark);padding:.1em .5em;border-radius:4px;font-size:.82em;font-weight:600;letter-spacing:.03em}

/* ── Enlace dashboard ────────────────────────────────────────────── */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin-bottom:1.5rem}
.stat-card--big{padding:1.5rem 1.75rem}
.stat-label{font-size:.72rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.stat-value{font-size:2.5rem;font-weight:600;color:var(--ciav-navy);margin-top:.25rem;line-height:1}
.stat-card--big .stat-value{font-size:3.5rem}
.stat-sub{color:var(--color-text-muted);margin-top:.5rem;font-size:.85rem}

.view-toggle{display:flex;gap:.4rem;margin-bottom:1.5rem}
.toggle-btn{padding:.45rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text-muted);text-decoration:none;font-size:.85rem;font-weight:500;transition:all .15s}
.toggle-btn:hover{border-color:var(--ciav-coral)}
.toggle-btn--active{background:var(--ciav-navy);color:#fff;border-color:var(--ciav-navy)}

.enlace-section-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:1rem}
.enlace-section-header .section-title{margin-bottom:0}
.sort-form{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--color-text-muted)}
.sort-form .form-select{font-size:.85rem;padding:.3rem .5rem}

.depto-block{margin-top:1.75rem}
.depto-heading{font-size:1.05rem;color:var(--ciav-navy);margin:0 0 .6rem;padding-bottom:.35rem;border-bottom:2px solid var(--ciav-coral);display:flex;align-items:baseline;justify-content:space-between}
.depto-count{font-size:.78rem;color:var(--color-text-muted);font-weight:400}

/* ── Responsive ──────────────────────────────────────────────────── */
@media(max-width:600px){
    .form-row{grid-template-columns:1fr}
}


/* ===================================================================
   CONSOLIDATED FROM TEMPLATE <style> BLOCKS
   Shared classes (.form-page, .form-card, .form-row, .alert-error,
   .stat-grid, etc.) already live above; this section only adds the
   classes that were still inline in individual templates.
   =================================================================== */

/* ── Page header (used by list/detail/dashboard pages) ───────────── */
.page-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
.page-header h1 { margin-bottom: 0.25rem; }
.page-header-actions { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; }

/* ── Table helper columns ────────────────────────────────────────── */
.num-col { text-align: right; white-space: nowrap; }

/* ── Form extras (group/staff/student forms) ─────────────────────── */
.form-row.two-col { grid-template-columns: 1fr 1fr; }
.form-row.three-col { grid-template-columns: repeat(3, 1fr); }
.form-error { margin-top: 0.35rem; font-size: 0.8rem; color: #B91C1C; }
.form-group-checkbox label { display: inline-flex; align-items: center; gap: 0.5rem; cursor: pointer; }
.form-group-checkbox input[type="checkbox"] { width: auto; margin: 0; }
.field-with-action { display: flex; align-items: baseline; justify-content: space-between; gap: 0.5rem; margin-bottom: 0.25rem; }
.field-with-action label { margin: 0; }
.inline-add-link { font-size: 0.78rem; color: var(--ciav-coral); text-decoration: none; white-space: nowrap; }
.inline-add-link:hover { text-decoration: underline; color: var(--ciav-coral-dark); }
.readonly-field { margin-top: 0.5rem; padding: 0.5rem 0.75rem; background: var(--color-bg); border-radius: 6px; font-size: 0.8rem; }
.readonly-field code { background: var(--color-surface); padding: 0.1em 0.4em; border-radius: 4px; font-size: 0.9em; }
.reminder-box { background: #FEF3C7; color: #78350F; padding: 0.75rem 1rem; border-radius: 8px; font-size: 0.85rem; line-height: 1.5; margin-top: 1rem; }
.form-readonly-note { background: #FEF3C7; color: #78350F; padding: 0.6rem 0.9rem; border-radius: 8px; font-size: 0.82rem; margin: 0.75rem 0 0; }

/* ── Info note / info box callouts ───────────────────────────────── */
.info-note { margin-top: 1rem; padding: 0.6rem 0.85rem; background: var(--color-bg); border-left: 3px solid var(--ciav-coral); border-radius: 4px; font-size: 0.78rem; color: var(--color-text-muted); line-height: 1.55; }
.info-note strong { color: var(--ciav-navy); }
.info-note em { font-style: normal; font-weight: 500; color: var(--ciav-navy); }
.info-box { background: var(--color-surface); border: 1px solid var(--color-border); border-left: 3px solid var(--ciav-coral); border-radius: var(--radius); padding: 1.25rem 1.5rem; margin-top: 2rem; }
.info-box h3 { font-size: 0.9rem; margin-bottom: 0.75rem; color: var(--ciav-navy); }
.info-box ol { margin: 0; padding-left: 1.25rem; font-size: 0.875rem; line-height: 1.7; }
.info-box code { background: var(--color-bg); padding: 0.1em 0.35em; border-radius: 4px; font-size: 0.85em; }

/* ── Info-card grid (school detail / school form sidebars) ───────── */
.info-card-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 0.75rem; margin-bottom: 1.5rem; }
.info-card .big-number { font-size: 2rem; font-weight: 600; color: var(--ciav-navy); margin: 0; }
.director-list { margin: 0; padding: 0; list-style: none; }
.director-list li { padding: 0.4rem 0; border-bottom: 1px solid var(--color-border); font-size: 0.9rem; }
.director-list li:last-child { border-bottom: none; }

/* ── Audit log diff styling ──────────────────────────────────────── */
.audit-log .data-table { font-size: 0.82rem; }
.audit-old { color: #B91C1C; text-decoration: line-through; }
.audit-new { color: #15803D; font-weight: 500; }

/* ── Stat card: left-bordered variant for director dashboards ────── */
/* (the plain .stat-card above is centered; dashboards opt into this) */
.stat-card--bordered { background: var(--color-surface); border: 1px solid var(--color-border); border-left: 3px solid var(--ciav-coral); border-radius: var(--radius); padding: 1rem 1.25rem; text-align: left; box-shadow: none; }
.stat-card--bordered.stat-card--big { padding: 1.5rem 1.75rem; }
.stat-card--bordered .stat-label { font-size: 0.72rem; color: var(--color-text-muted); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; }
.stat-card--bordered .stat-value { font-size: 2.5rem; font-weight: 600; color: var(--ciav-navy); margin-top: 0.25rem; line-height: 1; }
.stat-card--bordered.stat-card--big .stat-value { font-size: 3.5rem; }
.stat-card--bordered .stat-sub { color: var(--color-text-muted); margin-top: 0.5rem; font-size: 0.85rem; }

/* ── Director dashboards: municipio cards (depto dashboard) ───────── */
.muni-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0.75rem; }
.muni-card { display: block; padding: 1.25rem 1.5rem; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius); text-decoration: none; color: inherit; transition: all 0.15s; }
.muni-card:hover { border-color: var(--ciav-coral); transform: translateY(-2px); box-shadow: var(--shadow-sm); }
.muni-name { font-weight: 600; color: var(--ciav-navy); font-size: 1rem; margin-bottom: 0.5rem; }
.muni-count { font-size: 2.2rem; font-weight: 600; color: var(--ciav-coral); line-height: 1; }
.muni-label { color: var(--color-text-muted); font-size: 0.8rem; margin-top: 0.25rem; }

/* ── Empty-state dashboard ───────────────────────────────────────── */
.empty-dashboard { max-width: 500px; margin: 4rem auto; text-align: center; }
.empty-dashboard h1 { color: var(--ciav-navy); margin-bottom: 1rem; font-size: 1.4rem; }
.empty-dashboard p { color: var(--color-text-muted); }

/* ── Group-leader dashboard: group cards ─────────────────────────── */
.group-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 0.75rem; }
.group-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius); padding: 1.25rem 1.5rem; }
.group-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 0.75rem; gap: 0.5rem; }
.group-card-header h3 { margin: 0; color: var(--ciav-navy); font-size: 1.05rem; }
.group-card-meta { font-size: 0.85rem; color: var(--color-text-muted); margin-bottom: 1rem; line-height: 1.7; }
.meta-label { color: var(--ciav-navy); font-weight: 500; }
.group-card-actions { display: flex; gap: 0.4rem; }

/* ── Tutor dashboard ─────────────────────────────────────────────── */
.group-section { margin-bottom: 2rem; }
.group-section-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 0.75rem; gap: 0.75rem; flex-wrap: wrap; }
.group-section-header h2 { margin: 0; color: var(--ciav-navy); }
.group-meta { color: var(--color-text-muted); margin: 0.25rem 0 0; font-size: 0.85rem; }
.tutor-table { font-size: 0.92rem; }
.badge--count { background: var(--ciav-coral); color: #fff; }

/* ── Filter bar (schools list, staff list) ───────────────────────── */
.filter-bar { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; margin-bottom: 1rem; padding: 0.75rem; background: var(--color-bg); border-radius: var(--radius); }
.filter-search { flex: 1; min-width: 220px; }
.filter-checkbox { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.85rem; }
.filter-checkbox input { width: auto; margin: 0; }

/* ── Advanced filters panel (student search) ─────────────────────── */
.filters-panel { margin-top: 0.75rem; padding: 0.75rem 1rem; background: var(--color-bg); border-radius: var(--radius); }
.filters-panel summary { cursor: pointer; font-size: 0.85rem; color: var(--ciav-coral); user-select: none; padding: 0.25rem 0; }
.filters-panel summary:hover { color: var(--ciav-coral-dark); }
.filters-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0.75rem; margin-top: 0.75rem; }
.filter-group { display: flex; flex-direction: column; gap: 0.25rem; }
.filter-group label { font-size: 0.75rem; font-weight: 600; color: var(--color-text-muted); text-transform: uppercase; letter-spacing: 0.04em; }
.empty-hint { color: var(--color-text-muted); font-style: italic; margin-top: 1rem; }

/* ── Per-table tweaks ────────────────────────────────────────────── */
.schools-table { font-size: 0.88rem; }
.schools-table .num-col { text-align: right; white-space: nowrap; }
.schools-table .actions-col { white-space: nowrap; }
.schools-table .mono { font-size: 0.82rem; }
.staff-table { font-size: 0.88rem; }
.staff-table .actions-col { white-space: nowrap; }
.staff-table .row-inactive { opacity: 0.6; }
.staff-table small { color: var(--color-text-muted); }
.groups-table { font-size: 0.85rem; }
.groups-table .actions-col { white-space: nowrap; }
.groups-table .inline-form { display: inline; }
.groups-table .row-inactive { opacity: 0.55; }
.groups-table .row-detail td { background: var(--color-bg); font-size: 0.8rem; color: var(--color-text-muted); padding: 0.4rem 0.85rem; border-bottom: 2px solid var(--color-border); }
.groups-table small { color: var(--color-text-muted); }

/* ── Expandable sync detail (group management list) ──────────────── */
.sync-detail summary { cursor: pointer; list-style: none; }
.sync-detail summary::-webkit-details-marker { display: none; }
.sync-detail-toggle { margin-left: 0.5rem; color: var(--ciav-coral); font-weight: 600; font-size: 0.78rem; white-space: nowrap; }
.sync-detail[open] .sync-detail-toggle::after { content: ' (ocultar)'; }
.sync-detail-body { margin-top: 0.6rem; padding-top: 0.6rem; border-top: 1px solid var(--color-border); }
.sync-runs-table { width: 100%; border-collapse: collapse; font-size: 0.78rem; }
.sync-runs-table th, .sync-runs-table td { text-align: left; padding: 0.35rem 0.6rem; border-bottom: 1px solid var(--color-border); vertical-align: top; }
.sync-runs-table th { color: var(--color-text-muted); font-weight: 600; text-transform: uppercase; font-size: 0.7rem; letter-spacing: 0.03em; }
.sync-run-msg { max-width: 380px; white-space: normal; color: var(--color-text); }
.sheet-link { font-size: 0.8rem; text-decoration: none; color: var(--ciav-coral); }
.sheet-link:hover { text-decoration: underline; }

/* ── Staff list: role badges + group pills ───────────────────────── */
.role-badge { display: inline-block; padding: 0.15rem 0.55rem; border-radius: 999px; font-size: 0.75rem; font-weight: 500; background: var(--color-bg); color: var(--ciav-navy); white-space: nowrap; }
.role-tutor           { background: #DBEAFE; color: #1E40AF; }
.role-group_leader    { background: #FCE4DF; color: #B91C1C; }
.role-school_director { background: #FEF3C7; color: #78350F; }
.role-muni_director   { background: #E0E7FF; color: #3730A3; }
.role-depto_director  { background: #DCFCE7; color: #14532D; }
.role-enlace          { background: #E0E7FF; color: #312E81; }
.groups-cell { max-width: 250px; }
.group-pill { display: inline-block; padding: 0.1rem 0.45rem; margin: 0.1rem 0.1rem 0.1rem 0; background: var(--color-bg); border-radius: 4px; font-size: 0.75rem; color: var(--ciav-navy); white-space: nowrap; }

/* ── Student profile: badges ─────────────────────────────────────── */
.profile-badges { display: flex; gap: 0.4rem; flex-wrap: wrap; margin-top: 0.5rem; }
.profile-badge { display: inline-block; padding: 0.2rem 0.65rem; background: var(--color-bg); border-radius: 999px; font-size: 0.78rem; color: var(--ciav-navy); white-space: nowrap; }
.profile-badge--nivel { background: #DCFCE7; color: #14532D; font-weight: 600; }

/* ── School detail: nivel tag (already referenced in markup) ─────── */
.nivel-tag { background: var(--ciav-coral-light); color: var(--ciav-coral-dark); padding: 0.1em 0.5em; border-radius: 4px; font-size: 0.82em; font-weight: 600; letter-spacing: 0.03em; }
.page-subtitle code { background: var(--color-bg); padding: 0.1em 0.35em; border-radius: 4px; font-size: 0.9em; }

/* ── Responsive ──────────────────────────────────────────────────── */
@media (max-width: 700px) {
    .form-row, .form-row.two-col, .form-row.three-col { grid-template-columns: 1fr; }
}

/* ── Master Sheet overview + review ──────────────────────────────── */
.master-config { padding: 1.25rem 1.5rem; margin-bottom: 2rem; }
.master-config h3 { margin: 0 0 0.85rem; color: var(--ciav-navy); }
.master-config .data-row { padding: 0.3rem 0; font-size: 0.88rem; }
.master-config .data-row .label { display: inline-block; min-width: 180px; color: var(--color-text-muted); }
.master-config-actions { display: flex; gap: 0.5rem; margin-top: 1rem; flex-wrap: wrap; }

.diff-controls { display: flex; gap: 0.4rem; margin-bottom: 1rem; }
.diff-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius); padding: 0; margin-bottom: 0.75rem; overflow: hidden; }
.diff-header { display: flex; align-items: center; gap: 0.75rem; padding: 0.85rem 1.25rem; cursor: pointer; background: var(--color-bg); border-bottom: 1px solid var(--color-border); user-select: none; }
.diff-header input[type="checkbox"] { width: 18px; height: 18px; cursor: pointer; }
.diff-header-text { flex: 1; }
.diff-school-name { font-weight: 600; color: var(--ciav-navy); font-size: 0.95rem; }
.diff-school-meta { font-size: 0.78rem; color: var(--color-text-muted); margin-top: 0.15rem; }
.diff-school-meta code { background: var(--color-surface); padding: 0.05em 0.35em; border-radius: 3px; font-size: 0.9em; }
.diff-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.diff-table th, .diff-table td { padding: 0.5rem 1.25rem; text-align: left; border-bottom: 1px solid var(--color-border); }
.diff-table tbody tr:last-child td { border-bottom: none; }
.diff-table th { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--color-text-muted); font-weight: 600; }
.diff-table .diff-db { color: var(--color-text-muted); text-decoration: line-through; }
.diff-table .diff-sheet { color: #15803D; font-weight: 500; }
