.admin-page-heading {
    align-items: flex-end;
    display: flex;
    justify-content: space-between;
}

.admin-stat-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-bottom: 1.5rem;
}

.admin-stat-card {
    align-items: center;
    background: var(--sigecap-surface);
    border: 1px solid var(--sigecap-border);
    border-radius: var(--sigecap-radius);
    display: flex;
    gap: 1rem;
    min-width: 0;
    padding: 1.1rem;
}

.admin-stat-card small,
.admin-stat-card strong {
    display: block;
}

.admin-stat-card small {
    color: var(--sigecap-text-muted);
    font-size: 0.73rem;
    font-weight: 700;
    letter-spacing: 0.035em;
    margin-bottom: 0.15rem;
    text-transform: uppercase;
}

.admin-stat-card strong {
    color: var(--sigecap-text);
    font-size: 1.7rem;
    line-height: 1;
}

.admin-stat-icon {
    align-items: center;
    background: #edf3f8;
    border-radius: 0.7rem;
    color: var(--sigecap-primary);
    display: inline-flex;
    flex: 0 0 46px;
    font-size: 1.2rem;
    height: 46px;
    justify-content: center;
}

.tone-success .admin-stat-icon { background: #e9f7ef; color: #23794a; }
.tone-danger .admin-stat-icon { background: #fff0f0; color: #b33b46; }
.tone-neutral .admin-stat-icon { background: #f0f2f4; color: #687783; }

.admin-table-card .content-card-header,
.form-section-card .content-card-header,
.detail-card .content-card-header,
.permission-group .content-card-header {
    border-bottom: 1px solid var(--sigecap-border-soft);
}

.role-chip,
.code-chip {
    background: #edf3f8;
    border: 1px solid #dbe7f0;
    border-radius: 999px;
    color: var(--sigecap-primary);
    display: inline-flex;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.025em;
    margin: 0.1rem 0.15rem 0.1rem 0;
    max-width: 100%;
    padding: 0.28rem 0.55rem;
}

.role-chip-large { font-size: 0.75rem; padding: 0.4rem 0.72rem; }
.code-chip { border-radius: 0.35rem; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

.form-section-card .form-label {
    color: var(--sigecap-text);
    font-size: 0.8rem;
    font-weight: 700;
}

.form-section-card .form-control,
.form-section-card .form-select,
.permission-select {
    border-color: var(--sigecap-border);
    min-height: 44px;
}

.form-section-card .form-control:focus,
.form-section-card .form-select:focus,
.permission-select:focus {
    border-color: var(--sigecap-primary-light);
    box-shadow: 0 0 0 0.2rem rgba(18, 57, 95, 0.1);
}

.activation-switch {
    background: #f5f8fb;
    border: 1px solid var(--sigecap-border-soft);
    border-radius: 0.65rem;
    padding: 0.85rem 0.85rem 0.85rem 3.2rem;
}

.activation-switch label span {
    color: var(--sigecap-text-muted);
    display: block;
    font-size: 0.75rem;
    margin-top: 0.15rem;
}

.security-note {
    align-items: flex-start;
    background: #f5f8fb;
    border-radius: 0.65rem;
    color: var(--sigecap-text-muted);
    display: flex;
    gap: 0.75rem;
    margin-bottom: 1.2rem;
    padding: 1rem;
}

.security-note i { color: var(--sigecap-primary); }
.security-note p { margin: 0; }

.form-actions {
    align-items: center;
    display: flex;
    gap: 0.75rem;
    justify-content: flex-end;
    margin-top: 1.25rem;
}

.detail-grid {
    display: grid;
    gap: 0;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 0;
}

.detail-grid > div {
    border-bottom: 1px solid var(--sigecap-border-soft);
    min-width: 0;
    padding: 1rem 1.25rem;
}

.detail-grid dt,
.detail-label {
    color: var(--sigecap-text-muted);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.045em;
    text-transform: uppercase;
}

.detail-grid dd { color: var(--sigecap-text); margin: 0.25rem 0 0; overflow-wrap: anywhere; }

.role-selection-grid {
    display: grid;
    gap: 0.85rem;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.selection-card,
.permission-check {
    align-items: flex-start;
    background: #fff;
    border: 1px solid var(--sigecap-border);
    border-radius: 0.65rem;
    cursor: pointer;
    display: flex;
    gap: 0.75rem;
    min-width: 0;
    padding: 0.95rem;
}

.selection-card:hover,
.permission-check:hover { border-color: #adc5d8; background: #f9fbfd; }
.selection-card span,
.permission-check span { min-width: 0; }
.selection-card strong,
.selection-card small,
.selection-card em,
.permission-check strong,
.permission-check small { display: block; }
.selection-card small,
.permission-check small { color: var(--sigecap-primary); font-size: 0.69rem; font-weight: 700; margin-top: 0.15rem; overflow-wrap: anywhere; }
.selection-card em { color: var(--sigecap-text-muted); font-size: 0.75rem; font-style: normal; margin-top: 0.35rem; }

.permission-groups { display: grid; gap: 1rem; }
.permission-count { align-items: center; background: #edf3f8; border-radius: 999px; color: var(--sigecap-primary); display: inline-flex; font-size: 0.72rem; font-weight: 700; height: 30px; justify-content: center; min-width: 30px; padding: 0 0.55rem; }
.permission-list { display: grid; }
.permission-row { align-items: center; border-bottom: 1px solid var(--sigecap-border-soft); display: grid; gap: 1rem; grid-template-columns: minmax(220px, 1fr) auto minmax(145px, 180px); padding: 0.8rem 1.1rem; }
.permission-row:last-child { border-bottom: 0; }
.permission-copy strong,
.permission-copy small { display: block; }
.permission-copy small { color: var(--sigecap-text-muted); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.69rem; margin-top: 0.18rem; }
.permission-select { min-height: 36px; }
.permission-check-grid { display: grid; gap: 0.65rem; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 1rem; }
.permission-catalog-grid { display: grid; gap: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.permission-catalog-grid article { border-bottom: 1px solid var(--sigecap-border-soft); min-width: 0; padding: 1rem 1.15rem; }
.permission-catalog-grid article:nth-child(odd) { border-right: 1px solid var(--sigecap-border-soft); }
.permission-catalog-grid strong { display: block; font-size: 0.86rem; margin-top: 0.5rem; }
.permission-catalog-grid p { color: var(--sigecap-text-muted); font-size: 0.75rem; margin: 0.25rem 0 0; }

.sidebar-account-label { margin-top: 1rem; }
.sidebar-logout-form { margin: 0; }
.sidebar-logout-form .sidebar-link { background: transparent; border: 0; text-align: left; width: 100%; }
.sidebar-sublink.active { background: #edf3f8; color: var(--sigecap-primary); font-weight: 700; }

div.dt-container { padding: 0.85rem 1rem 1rem; }
div.dt-container .dt-search input,
div.dt-container .dt-length select { border-color: var(--sigecap-border); }

@media (max-width: 1199.98px) {
    .admin-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .role-selection-grid,
    .permission-check-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767.98px) {
    .admin-page-heading { align-items: flex-start; flex-direction: column; }
    .permission-row { align-items: flex-start; grid-template-columns: 1fr; }
    .permission-inheritance { order: 3; }
    .permission-select { max-width: none; width: 100%; }
    .permission-catalog-grid { grid-template-columns: 1fr; }
    .permission-catalog-grid article:nth-child(odd) { border-right: 0; }
    .detail-grid { grid-template-columns: 1fr; }
}

@media (max-width: 575.98px) {
    .admin-stat-grid,
    .role-selection-grid,
    .permission-check-grid { grid-template-columns: 1fr; }
    .admin-stat-card { padding: 0.9rem; }
    .form-actions { align-items: stretch; flex-direction: column-reverse; }
    .form-actions .btn { width: 100%; }
    .content-card-header { padding: 0.9rem 1rem; }
    .permission-row { padding: 0.8rem 0.9rem; }
    div.dt-container { padding-left: 0.65rem; padding-right: 0.65rem; }
    div.dt-container .dt-layout-row { gap: 0.6rem; }
}


/* ============================================================
   ETAPA 6 - PERSONAS: ESTUDIANTES Y DOCENTES
   ============================================================ */
.person-access-panel {
    border: 1px solid var(--sigecap-border, #dbe3ec);
    border-radius: 0.9rem;
    padding: 1rem;
    background: var(--bs-body-bg);
}

.access-option {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.9rem;
    border: 1px solid var(--sigecap-border, #dbe3ec);
    border-radius: 0.8rem;
    cursor: pointer;
    background: var(--bs-body-bg);
}

.access-option:hover { border-color: var(--sigecap-secondary, #2463a7); }
.access-option span { display: grid; gap: 0.2rem; }
.access-option small { color: var(--bs-secondary-color); font-weight: 400; }

.person-avatar-lg,
.person-avatar-xl {
    object-fit: cover;
    border-radius: 50%;
    border: 3px solid #fff;
    box-shadow: 0 0.35rem 1rem rgba(18, 57, 95, 0.12);
    background: #eef3f8;
}
.person-avatar-lg { width: 92px; height: 92px; }
.person-avatar-xl { width: 118px; height: 118px; }
.person-avatar-placeholder {
    display: inline-grid;
    place-items: center;
    font-size: 2.8rem;
    color: var(--sigecap-primary, #12395f);
}

.person-file-current,
.person-profile-head,
.account-link-summary {
    display: flex;
    align-items: center;
    gap: 1rem;
}
.person-file-current span { color: var(--bs-secondary-color); font-size: 0.875rem; }
.person-profile-head h2 { margin: 0 0 0.4rem; font-size: 1.25rem; }

.account-link-summary {
    padding: 1rem;
    border: 1px solid #b9dfca;
    border-radius: 0.9rem;
    background: #f3fbf6;
}
.account-link-summary p { margin: 0.2rem 0 0; color: #546574; }
.account-link-icon {
    display: inline-grid;
    place-items: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 0.8rem;
    background: #d9f1e2;
    color: #187044;
    font-size: 1.25rem;
    flex: 0 0 auto;
}

.form-actions-sticky {
    position: sticky;
    bottom: 0;
    z-index: 20;
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    margin-top: 1.5rem;
    padding: 1rem;
    border: 1px solid var(--sigecap-border, #dbe3ec);
    border-radius: 1rem;
    background: rgba(255, 255, 255, 0.96);
    box-shadow: 0 -0.5rem 1.5rem rgba(18, 57, 95, 0.08);
    backdrop-filter: blur(8px);
}

@media (max-width: 575.98px) {
    .person-profile-head,
    .account-link-summary { align-items: flex-start; flex-wrap: wrap; }
    .account-link-summary .ms-auto { margin-left: 0 !important; }
    .form-actions-sticky { position: static; flex-direction: column-reverse; }
    .form-actions-sticky .btn { width: 100%; }
}


/* ETAPA 7 - Gestión Académica */
.academic-stat-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.academic-relation-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem; padding:1rem 1.15rem 1.2rem; }
.academic-relation-grid article { background:#f7f9fb; border:1px solid var(--sigecap-border-soft); border-radius:.8rem; padding:1rem; text-align:center; }
.academic-relation-grid strong { color:var(--sigecap-primary); display:block; font-size:1.7rem; line-height:1; }
.academic-relation-grid span { color:var(--sigecap-text-muted); display:block; font-size:.75rem; margin-top:.4rem; }
.academic-text-sections { display:grid; gap:1rem; padding:1rem 1.25rem 1.35rem; }
.academic-text-sections > div { border-bottom:1px solid var(--sigecap-border-soft); padding-bottom:1rem; }
.academic-text-sections > div:last-child { border-bottom:0; padding-bottom:0; }
.academic-text-sections h3 { font-size:.85rem; margin:0 0 .4rem; }
.academic-text-sections p { color:var(--sigecap-text-muted); margin:0; white-space:normal; }
@media (max-width: 767.98px) { .academic-stat-grid { grid-template-columns:1fr; } .academic-relation-grid { grid-template-columns:1fr; } }

/* ETAPA 8 - Ofertas temporales */
.status-info { background: rgba(13,110,253,.11); color: #0a58ca; border-color: rgba(13,110,253,.22); }
.status-warning { background: rgba(255,193,7,.16); color: #8a6500; border-color: rgba(255,193,7,.28); }
.status-danger { background: rgba(220,53,69,.11); color: #b02a37; border-color: rgba(220,53,69,.22); }
.status-secondary { background: rgba(108,117,125,.12); color: #5c636a; border-color: rgba(108,117,125,.22); }
.offer-tabs { display:flex; gap:.5rem; flex-wrap:wrap; padding:.45rem; background:var(--sigecap-card,#fff); border:1px solid rgba(18,56,92,.09); border-radius:1rem; }
.offer-tab { display:inline-flex; align-items:center; gap:.45rem; padding:.7rem 1rem; border-radius:.75rem; text-decoration:none; color:var(--sigecap-text,#243447); font-weight:600; transition:.18s ease; }
.offer-tab:hover { background:rgba(36,99,167,.07); color:var(--sigecap-secondary,#2463a7); }
.offer-tab.active { background:var(--sigecap-primary,#12385c); color:#fff; }
.offer-checklist { display:grid; gap:.2rem; padding:0 1rem 1rem; }
.offer-checklist > a, .offer-checklist > div { display:grid; grid-template-columns:28px 1fr auto; align-items:center; gap:.55rem; padding:.8rem .55rem; border-bottom:1px solid rgba(18,56,92,.07); text-decoration:none; color:inherit; }
.offer-checklist > a:hover { background:rgba(36,99,167,.05); border-radius:.65rem; }
.offer-checklist strong { min-width:2rem; text-align:center; padding:.15rem .45rem; border-radius:999px; background:rgba(18,56,92,.07); }
.offer-state-box { padding:1rem; border-radius:.85rem; background:rgba(18,56,92,.055); display:flex; flex-direction:column; gap:.25rem; }
.offer-state-box strong { font-size:1.05rem; color:var(--sigecap-primary,#12385c); }
.offer-state-box small { color:#6c757d; }
@media (max-width: 575.98px) { .offer-tabs { flex-wrap:nowrap; overflow-x:auto; } .offer-tab { white-space:nowrap; } }


/* ETAPA 9 - Preinscripción pública y revisión */
.public-enrollment-page { min-height:100vh; background:linear-gradient(180deg,#f3f7fb 0,#f8fafc 35%,#fff 100%); }
.public-enrollment-header { max-width:1120px; margin:0 auto; padding:1rem 1.25rem; display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.public-brand { display:flex; align-items:center; gap:.75rem; color:var(--sigecap-primary,#12385c); text-decoration:none; }
.public-brand-logo { width:2.8rem; height:2.8rem; display:grid; place-items:center; border-radius:.85rem; background:var(--sigecap-primary,#12385c); color:#fff; font-size:1.3rem; }
.public-brand strong,.public-brand small { display:block; } .public-brand small { color:#6c757d; font-size:.74rem; }
.public-enrollment-shell { width:min(100% - 2rem,1120px); margin:0 auto; padding:1rem 0 3rem; }
.public-hero { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:2rem; align-items:center; padding:2rem 0 1.5rem; }
.public-kicker { display:block; font-size:.75rem; font-weight:800; letter-spacing:.12em; color:var(--sigecap-secondary,#2463a7); margin-bottom:.55rem; }
.public-hero h1,.public-confirmation-card h1 { color:var(--sigecap-primary,#12385c); font-size:clamp(2rem,5vw,3.35rem); font-weight:800; letter-spacing:-.04em; line-height:1.02; margin:0 0 1rem; }
.public-hero p { color:#637385; max-width:760px; font-size:1.06rem; margin:0; }
.public-hero-badge { min-width:190px; padding:1.2rem; border:1px solid rgba(25,135,84,.17); border-radius:1rem; background:#fff; box-shadow:0 12px 30px rgba(18,56,92,.06); color:#187044; }
.public-hero-badge i { display:block; font-size:1.8rem; margin-bottom:.5rem; } .public-hero-badge strong,.public-hero-badge span{display:block}.public-hero-badge span{color:#6c757d;font-size:.78rem;margin-top:.15rem}
.public-enrollment-form { display:grid; gap:1.25rem; }
.public-form-card,.public-submit-card,.public-empty-card,.public-confirmation-card { background:#fff; border:1px solid rgba(18,56,92,.09); border-radius:1.15rem; box-shadow:0 12px 35px rgba(18,56,92,.055); }
.public-form-card > header { display:flex; gap:.9rem; align-items:flex-start; padding:1.15rem 1.25rem; border-bottom:1px solid rgba(18,56,92,.07); }
.public-form-card > header h2 { font-size:1.05rem; color:var(--sigecap-primary,#12385c); margin:0 0 .2rem; font-weight:750; }.public-form-card > header p{margin:0;color:#718090;font-size:.88rem}
.public-step { width:2rem; height:2rem; border-radius:.65rem; display:grid; place-items:center; background:var(--sigecap-primary,#12385c); color:#fff; font-weight:800; flex:0 0 auto; }
.public-card-body { padding:1.25rem; }
.public-offer-preview { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.75rem; padding:1rem; border-radius:.9rem; background:#f7f9fc; border:1px solid rgba(18,56,92,.08); }
.public-offer-preview > div { min-width:0; }.public-offer-preview small,.public-offer-preview strong,.public-offer-preview span{display:block}.public-offer-preview small{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:#788695}.public-offer-preview strong{color:var(--sigecap-primary,#12385c);margin:.18rem 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.public-offer-preview span{font-size:.8rem;color:#6c757d}
.public-submit-card { padding:1.35rem; display:grid; gap:1rem; }.public-submit-card .btn{justify-self:start}.public-submit-card small{color:#718090}
.public-honeypot { position:absolute!important; left:-10000px!important; width:1px!important; height:1px!important; opacity:0!important; }
.public-empty-card { padding:3rem 1.5rem; text-align:center; }.public-empty-card i{font-size:3rem;color:#8aa1b7}.public-empty-card h2{color:var(--sigecap-primary);margin-top:.75rem}.public-empty-card p{color:#6c757d;max-width:560px;margin:0 auto}
.public-confirmation-card { max-width:760px; margin:3rem auto; padding:clamp(1.5rem,5vw,3rem); text-align:center; }.public-confirmation-icon{font-size:4rem;color:#198754}.public-confirmation-card p{color:#637385;font-size:1.05rem}.public-confirmation-code{display:inline-flex;flex-direction:column;padding:.85rem 1.4rem;border-radius:.9rem;background:#f1f6fb;margin:1rem 0}.public-confirmation-code small{color:#6c757d}.public-confirmation-code strong{color:var(--sigecap-primary);font-size:1.4rem;letter-spacing:.05em}.public-confirmation-course{display:flex;gap:.8rem;align-items:center;text-align:left;padding:1rem;border:1px solid rgba(18,56,92,.09);border-radius:.9rem;margin:0 auto 1.25rem}.public-confirmation-course i{font-size:1.6rem;color:var(--sigecap-secondary)}.public-confirmation-course small,.public-confirmation-course strong{display:block}.public-confirmation-course small{color:#6c757d}.public-next-steps{text-align:left;background:#f8fafc;padding:1rem 1.25rem;border-radius:.9rem;margin-bottom:1.5rem}.public-next-steps h2{font-size:1rem;color:var(--sigecap-primary)}.public-next-steps ol{margin-bottom:0;color:#637385}
.pre-enrollment-stat-grid { grid-template-columns:repeat(5,minmax(0,1fr)); }.pre-payment-summary{padding:1rem 1.15rem 1.25rem}.pre-payment-summary>strong{display:block;font-size:2rem;color:var(--sigecap-primary);margin-bottom:.8rem}.pre-payment-summary dl{display:grid;gap:.45rem}.pre-payment-summary dl div{display:flex;justify-content:space-between;gap:1rem;padding-bottom:.45rem;border-bottom:1px solid rgba(18,56,92,.07)}.pre-payment-summary dt{color:#6c757d;font-weight:500}.pre-payment-summary dd{margin:0;font-weight:650;text-align:right}.detail-grid-wide{grid-column:1/-1}
@media(max-width:991.98px){.public-hero{grid-template-columns:1fr}.public-hero-badge{display:none}.pre-enrollment-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767.98px){.public-offer-preview{grid-template-columns:1fr 1fr}.public-enrollment-header{align-items:flex-start}.public-enrollment-header .btn{white-space:nowrap}}
@media(max-width:575.98px){.public-enrollment-shell{width:min(100% - 1rem,1120px)}.public-enrollment-header{padding:.75rem}.public-brand small{display:none}.public-enrollment-header .btn{font-size:.75rem}.public-hero{padding:1rem .25rem}.public-offer-preview{grid-template-columns:1fr}.public-submit-card .btn{width:100%}.pre-enrollment-stat-grid{grid-template-columns:1fr 1fr}.public-card-body{padding:1rem}}


/* ETAPA 10 - Inscripciones formales */
.enrollment-stat-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
.enrollment-price-box { padding:1rem; border-radius:.9rem; background:#f5f8fb; border:1px solid rgba(18,56,92,.09); }
.enrollment-price-box small,.enrollment-price-box strong,.enrollment-price-box span { display:block; }
.enrollment-price-box small { color:#6c757d; text-transform:uppercase; letter-spacing:.05em; font-size:.7rem; }
.enrollment-price-box strong { color:var(--sigecap-primary,#12385c); font-size:1.55rem; margin:.2rem 0; }
.enrollment-price-box span { color:#187044; font-weight:700; }
.finance-summary-list { display:grid; gap:.65rem; }
.finance-summary-list>div { display:flex; justify-content:space-between; gap:1rem; padding-bottom:.6rem; border-bottom:1px solid rgba(18,56,92,.08); }
.finance-summary-list>div.total { padding:.8rem; margin:0 -.2rem; border:0; border-radius:.75rem; background:#f5f8fb; }
.finance-summary-list>div.total strong { font-size:1.05rem; }
@media(max-width:991.98px){.enrollment-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:575.98px){.enrollment-stat-grid{grid-template-columns:1fr 1fr}}


/* ETAPA 11 - Caja y Finanzas */
.finance-receipt{max-width:850px;}
@media print{
  .app-sidebar,.app-navbar,.app-footer,.no-print,.sidebar-overlay,.breadcrumbs-wrap{display:none!important;}
  .app-main,.app-content{margin:0!important;padding:0!important;width:100%!important;}
  .finance-receipt{border:0!important;box-shadow:none!important;max-width:none!important;}
  body{background:#fff!important;}
}

/* ETAPA 12 - Asistencia y justificativos */
.attendance-stat-grid{grid-template-columns:repeat(5,minmax(0,1fr));}
.attendance-percentage{display:flex;align-items:baseline;gap:.45rem}.attendance-percentage strong{font-size:2rem;color:var(--sigecap-primary,#12385c);line-height:1}.attendance-percentage span{color:#6c757d;font-size:.8rem}
.attendance-state{min-width:140px}.attendance-late{min-width:95px}
@media(max-width:1199.98px){.attendance-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:767.98px){.attendance-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:575.98px){.attendance-stat-grid{grid-template-columns:1fr 1fr}.attendance-state,.attendance-late{min-width:120px}}

/* ============================================================
   ETAPA 14 - BOLETINES Y RESULTADOS ACADÉMICOS
   ============================================================ */
.report-card-sheet{background:#fff;border:1px solid var(--sigecap-border,#dbe3ec);border-radius:1rem;box-shadow:0 10px 28px rgba(16,42,67,.07);padding:1.5rem}.report-card-header{align-items:center;border-bottom:2px solid var(--sigecap-primary,#12385c);display:grid;gap:1rem;grid-template-columns:64px 1fr auto;padding-bottom:1rem}.report-card-logo{align-items:center;background:var(--sigecap-primary,#12385c);border-radius:50%;color:#fff;display:flex;font-size:1.65rem;height:58px;justify-content:center;width:58px}.report-card-header strong,.report-card-header span{display:block}.report-card-header>div:nth-child(2)>strong{color:var(--sigecap-primary,#12385c);font-size:1rem}.report-card-header>div:nth-child(2)>span{color:var(--sigecap-text-muted,#64748b);font-size:.78rem}.report-card-header h2{font-size:1.2rem;margin:.45rem 0 0}.report-card-folio{text-align:right}.report-card-folio small{color:var(--sigecap-text-muted,#64748b);display:block;font-size:.68rem;text-transform:uppercase}.report-card-folio strong{font-size:.85rem}.report-card-info-grid{display:grid;gap:.75rem;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:1.25rem}.report-card-info-grid>div{background:#f8fafc;border:1px solid var(--sigecap-border-soft,#e8edf2);border-radius:.65rem;padding:.75rem}.report-card-info-grid .span-2{grid-column:span 2}.report-card-info-grid span{color:var(--sigecap-text-muted,#64748b);display:block;font-size:.68rem;text-transform:uppercase}.report-card-info-grid strong{display:block;font-size:.85rem;margin-top:.15rem}.report-card-section-title{color:var(--sigecap-primary,#12385c);font-size:.82rem;letter-spacing:.04em;text-transform:uppercase}.report-card-table{font-size:.82rem}.report-card-result-grid{display:grid;gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr))}.report-card-result-grid article{border:1px solid var(--sigecap-border,#dbe3ec);border-radius:.75rem;padding:1rem;text-align:center}.report-card-result-grid span,.report-card-result-grid strong,.report-card-result-grid small{display:block}.report-card-result-grid span{color:var(--sigecap-text-muted,#64748b);font-size:.68rem;text-transform:uppercase}.report-card-result-grid strong{font-size:1.65rem;margin:.3rem 0}.report-card-result-grid small{color:var(--sigecap-text-muted,#64748b);font-size:.72rem}.report-card-result-grid .is-approved{background:#f0f9f3;border-color:#a9d6b7}.report-card-result-grid .is-approved strong{color:#198754}.report-card-result-grid .is-failed{background:#fff5f5;border-color:#ebbbbb}.report-card-result-grid .is-failed strong{color:#dc3545}.student-report-card{transition:transform .15s ease,box-shadow .15s ease}.student-report-card:hover{box-shadow:0 12px 28px rgba(16,42,67,.09);transform:translateY(-2px)}.report-card-mini-stats{display:grid;gap:.5rem;grid-template-columns:repeat(3,1fr)}.report-card-mini-stats>div{background:#f8fafc;border-radius:.55rem;padding:.7rem;text-align:center}.report-card-mini-stats span,.report-card-mini-stats strong{display:block}.report-card-mini-stats span{color:var(--sigecap-text-muted,#64748b);font-size:.65rem;text-transform:uppercase}.report-card-mini-stats strong{font-size:.85rem;margin-top:.2rem}@media(max-width:767.98px){.report-card-header{grid-template-columns:52px 1fr}.report-card-folio{grid-column:1/-1;text-align:left}.report-card-info-grid{grid-template-columns:1fr 1fr}.report-card-result-grid{grid-template-columns:1fr}.report-card-sheet{padding:1rem}}@media(max-width:575.98px){.report-card-info-grid{grid-template-columns:1fr}.report-card-info-grid .span-2{grid-column:auto}.report-card-mini-stats{grid-template-columns:1fr}}

/* ETAPA 15 - Aula Virtual */
.classroom-course-card{border:1px solid var(--bs-border-color);transition:transform .18s ease,box-shadow .18s ease}.classroom-course-card:hover{transform:translateY(-2px);box-shadow:0 .6rem 1.4rem rgba(0,0,0,.07)}
.classroom-mini-stats{display:flex;gap:.75rem;flex-wrap:wrap}.classroom-mini-stats span{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .6rem;border-radius:999px;background:var(--bs-tertiary-bg);font-size:.82rem;color:var(--bs-secondary-color)}
.classroom-announcement{padding:1rem;border:1px solid var(--bs-border-color);border-radius:.8rem;background:var(--bs-body-bg)}.classroom-announcement.is-pinned{border-left:4px solid var(--bs-primary)}
.classroom-rich-text{white-space:normal;overflow-wrap:anywhere}.classroom-resource-card{padding:1rem;border:1px solid var(--bs-border-color);border-radius:.8rem}.classroom-file-icon{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:.7rem;background:var(--bs-primary-bg-subtle);color:var(--bs-primary);font-size:1.25rem;flex:0 0 42px}
@media (max-width:575.98px){.classroom-mini-stats{gap:.4rem}.classroom-mini-stats span{font-size:.76rem}.classroom-announcement,.classroom-resource-card{padding:.85rem}}

/* ETAPA 16 - Mensajería y notificaciones */
.message-inbox .message-unread{background:rgba(13,110,253,.055);border-left:4px solid var(--bs-primary)}
.message-thread{max-height:60vh;overflow-y:auto;background:#f7f9fc;padding:1.25rem}
.message-row{display:flex;margin-bottom:1rem}.message-row.mine{justify-content:flex-end}.message-row.theirs{justify-content:flex-start}
.message-bubble{max-width:min(78%,760px);padding:.8rem 1rem;border-radius:1rem;background:#fff;border:1px solid rgba(15,23,42,.08);box-shadow:0 2px 8px rgba(15,23,42,.04)}
.message-row.mine .message-bubble{background:#eaf2ff;border-color:#cfe2ff}.message-meta{display:flex;gap:.75rem;justify-content:space-between;align-items:center;font-size:.78rem;margin-bottom:.35rem}.message-meta span{color:#6c757d;white-space:nowrap}.message-content{white-space:normal;overflow-wrap:anywhere}.message-file-input{max-width:420px}.min-w-0{min-width:0}
.notification-row-unread{background:rgba(13,110,253,.045);border-left:4px solid var(--bs-primary)}.notification-center-icon{width:2.4rem;height:2.4rem;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#eef4ff;color:#0d6efd;flex:0 0 auto}
@media(max-width:575.98px){.message-bubble{max-width:92%}.message-thread{padding:.75rem}.message-file-input{max-width:100%;width:100%}}

/* ETAPA 19 - Prácticas */
.practice-state-box{padding:1rem;border:1px solid var(--bs-border-color);border-radius:1rem;background:rgba(13,110,253,.04);display:flex;flex-direction:column;gap:.25rem}.practice-state-box strong{font-size:1.15rem}.practice-rich-text{white-space:normal;line-height:1.65}.practice-progress-meta{display:flex;justify-content:space-between;gap:1rem;font-size:.85rem;color:var(--bs-secondary-color)}


/* ETAPA 21 - perfil, manual y soporte */
.user-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.profile-avatar-wrap{width:132px;height:132px;border-radius:50%;overflow:hidden;background:var(--bs-tertiary-bg);display:grid;place-items:center;border:4px solid rgba(13,110,253,.12)}
.profile-avatar-img{width:100%;height:100%;object-fit:cover}.profile-avatar-fallback{font-size:3.5rem;color:var(--bs-secondary-color)}
.manual-icon,.support-brand-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:rgba(13,110,253,.1);color:var(--bs-primary);font-size:1.35rem;flex:0 0 auto}
.manual-toc a{border-bottom:1px solid var(--bs-border-color);color:var(--bs-body-color)}.manual-toc a:hover{color:var(--bs-primary)}
.manual-toc{max-height:calc(100vh - 2rem);overflow:auto;top:1rem!important}
.manual-notice{align-items:flex-start;background:#eaf4fb;border:1px solid #cfe3f1;border-radius:var(--sigecap-radius);color:var(--sigecap-primary);display:flex;gap:.8rem;padding:1rem 1.1rem}
.manual-notice>.bi{font-size:1.25rem}.manual-notice strong{display:block}.manual-notice p{color:var(--sigecap-text-muted);font-size:.82rem;line-height:1.55;margin:.2rem 0 0}
.manual-section{scroll-margin-top:1rem}.manual-audience{color:var(--sigecap-text-muted);font-size:.68rem;font-weight:700;letter-spacing:.035em;text-transform:uppercase}
.manual-summary{background:var(--sigecap-surface-muted);border-left:3px solid var(--sigecap-secondary);border-radius:0 .55rem .55rem 0;color:var(--sigecap-text);font-size:.86rem;line-height:1.65;margin:0 0 1.2rem;padding:.8rem 1rem}
.manual-subtitle{align-items:center;color:var(--sigecap-primary);display:flex;font-size:.82rem;font-weight:750;gap:.45rem;margin:0 0 .75rem;text-transform:uppercase}
.manual-steps{counter-reset:manual-step;display:grid;gap:.65rem;list-style:none;padding:0}
.manual-steps li{background:#fff;border:1px solid var(--sigecap-border-soft);border-radius:.6rem;color:var(--sigecap-text);counter-increment:manual-step;font-size:.82rem;line-height:1.55;padding:.7rem .8rem .7rem 2.8rem;position:relative}
.manual-steps li::before{align-items:center;background:var(--sigecap-primary);border-radius:50%;color:#fff;content:counter(manual-step);display:flex;font-size:.68rem;font-weight:800;height:1.55rem;justify-content:center;left:.72rem;position:absolute;top:.67rem;width:1.55rem}
.manual-access-grid{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:1.2rem}
.manual-access-card{border:1px solid var(--sigecap-border-soft);border-radius:.7rem;padding:1rem}.manual-access-card h3{align-items:center;display:flex;font-size:.82rem;font-weight:750;gap:.45rem;margin:0 0 .65rem}.manual-access-card ul,.manual-tip ul{display:grid;font-size:.78rem;gap:.4rem;line-height:1.5;margin:0;padding-left:1.15rem}
.manual-access-card.is-allowed{background:#f1faf6;border-color:#cfe9dc}.manual-access-card.is-allowed h3{color:#17694f}.manual-access-card.is-denied{background:#fff5f5;border-color:#efd5d5}.manual-access-card.is-denied h3{color:#a63f3f}
.manual-tip{align-items:flex-start;background:#fff9e9;border:1px solid #f0e1b5;border-radius:.7rem;color:#72530c;display:flex;gap:.65rem;margin-top:1rem;padding:.85rem 1rem}.manual-tip>.bi{font-size:1.1rem}.manual-tip strong{display:block;font-size:.8rem;margin-bottom:.35rem}
.manual-print-header{align-items:center;border-bottom:2px solid #173f67;display:flex;gap:18px;margin-bottom:24px;padding-bottom:16px}.manual-print-header img{height:86px;object-fit:contain;width:86px}.manual-print-header h1{font-size:24px;margin:0}.manual-print-header p{margin:4px 0}.manual-print-section{break-inside:avoid;border-bottom:1px solid #d6dce2;margin-bottom:20px;padding-bottom:14px}.manual-print-section h2{color:#173f67;font-size:18px}.manual-print-section h3{font-size:13px;margin:12px 0 5px}.manual-print-section li,.manual-print-section p{font-size:11px;line-height:1.5;margin-bottom:4px}.manual-print-footer{border-top:1px solid #9da9b5;display:flex;font-size:9px;justify-content:space-between;margin-top:20px;padding-top:9px}
.support-description{white-space:normal;line-height:1.65}.support-description br{display:block;margin-bottom:.15rem}
@media (max-width:767.98px){.manual-access-grid{grid-template-columns:1fr}.manual-section{padding:1.1rem!important}.manual-toc{max-height:340px;overflow:auto}.manual-print-header{align-items:flex-start}.manual-print-footer{flex-direction:column;gap:4px}}
@media print{.manual-toc{display:none!important}.manual-print-section{break-inside:auto}.manual-print-section h2,.manual-print-section h3{break-after:avoid}.manual-print-section li{break-inside:avoid}}

/* ETAPA 23 - Inscripción pública */
.public-brand-image{width:52px;height:52px;object-fit:contain;border-radius:.7rem;background:#fff;padding:.2rem;border:1px solid rgba(18,56,92,.1)}
.public-registration-brand-block{display:flex;gap:1.25rem;align-items:center}.public-registration-logo{width:126px;height:126px;object-fit:contain;border-radius:1rem;background:#fff;padding:.5rem;box-shadow:0 10px 25px rgba(18,56,92,.08)}
.public-payment-qr-wrap{background:#fff;border:1px solid rgba(18,56,92,.11);border-radius:1rem;padding:1rem;text-align:center;box-shadow:0 10px 25px rgba(18,56,92,.05)}
.public-payment-qr{display:block;width:min(100%,420px);height:auto;margin:0 auto .6rem;border-radius:.7rem}.public-payment-qr-wrap small{color:#6c757d;font-weight:700}
.auth-public-actions{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:1rem}.auth-public-actions .btn{padding:.75rem .8rem;font-weight:700}.auth-public-actions-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:#6b7a8a;margin-bottom:.55rem;font-weight:800}
@media(max-width:767.98px){.public-registration-brand-block{align-items:flex-start}.public-registration-logo{width:88px;height:88px}.auth-public-actions{grid-template-columns:1fr}}
@media(max-width:575.98px){.public-registration-brand-block{display:block}.public-registration-logo{margin-bottom:1rem}}

/* ETAPA 26 - Mensajería masiva y buscadores inteligentes */
.smart-directory{border:1px solid var(--bs-border-color);border-radius:.8rem;background:var(--bs-body-bg);overflow:hidden}
.smart-directory-toolbar,.smart-select-toolbar{display:flex;gap:.55rem;align-items:center;padding:.65rem;background:var(--bs-tertiary-bg);border-bottom:1px solid var(--bs-border-color)}
.smart-directory-toolbar .form-control,.smart-select-toolbar .form-control{min-width:0;flex:1}
.smart-directory-actions{display:flex;align-items:center;gap:.4rem;padding:.35rem .75rem;border-bottom:1px solid var(--bs-border-color)}
.smart-directory-list{max-height:330px;overflow:auto}
.smart-directory-item{display:flex;gap:.75rem;align-items:flex-start;padding:.7rem .85rem;border-bottom:1px solid var(--bs-border-color);cursor:pointer;transition:background .15s ease}
.smart-directory-item:last-child{border-bottom:0}.smart-directory-item:hover{background:rgba(13,110,253,.045)}
.smart-directory-item .form-check-input{margin-top:.25rem;flex:0 0 auto}.smart-directory-item span{min-width:0;display:block}.smart-directory-item strong,.smart-directory-item small{display:block}.smart-directory-item small{color:var(--bs-secondary-color);font-size:.76rem;margin-top:.1rem;overflow-wrap:anywhere}
.smart-select-box{display:grid;gap:.45rem}.smart-select-box .smart-select-toolbar{padding:0;border:0;background:transparent}.smart-select-box select{width:100%}
@media(max-width:575.98px){.smart-directory-toolbar,.smart-select-toolbar{align-items:stretch;flex-direction:column}.smart-directory-toolbar .btn-group,.smart-select-toolbar .btn-group{width:100%}.smart-directory-toolbar .btn,.smart-select-toolbar .btn{flex:1}.smart-directory-list{max-height:280px}}
