/* Paleta, estructura, componentes y adaptación responsive; detalles en README.md. */
.email-test-form{display:grid;grid-template-columns:minmax(190px,1fr) auto;gap:.45rem;margin-top:.55rem}.email-test-form .form-control{min-width:0}.email-account-form .field-notification_kinds>div{display:flex;flex-wrap:wrap;gap:.65rem 1rem;padding:.75rem;border:1px solid var(--line);border-radius:8px}.email-account-form .field-notification_kinds label{display:inline-flex;align-items:center;gap:.4rem;cursor:pointer}.email-account-form .field-notification_kinds input{margin:0}@media(max-width:700px){.email-test-form{grid-template-columns:1fr}.email-account-form .field-notification_kinds>div{display:grid}}
/* Barra de perspectivas: sólo se renderiza para el administrador real. */
.topbar{height:auto!important;min-height:76px;gap:1rem;flex-wrap:wrap}
.view-as-toolbar{display:flex;align-items:center;justify-content:center;gap:.35rem;flex:1}.view-as-toolbar form{margin:0}.view-as-button{display:inline-flex;align-items:center;min-height:36px;padding:.45rem .65rem;border:1px solid rgba(255,255,255,.55);border-radius:7px;background:transparent;color:#fff;font:inherit;font-size:.78rem;font-weight:700;white-space:nowrap;cursor:pointer}.view-as-button:hover,.view-as-button:focus,.view-as-button.active{background:#fff;color:var(--blue);outline:none}.view-as-dropdown{position:relative}.view-as-dropdown-menu{display:none;position:absolute;z-index:30;top:100%;left:0;min-width:185px;padding:.35rem 0;background:#fff;border:1px solid #dfe3ee;border-radius:8px;box-shadow:0 8px 24px #1114}.view-as-dropdown:hover .view-as-dropdown-menu,.view-as-dropdown:focus-within .view-as-dropdown-menu{display:block}.view-as-dropdown-menu button{width:100%;padding:.55rem .8rem;border:0;background:#fff;color:#202431;font:inherit;text-align:left;cursor:pointer}.view-as-dropdown-menu button:hover,.view-as-dropdown-menu button:focus{background:#eef0ff;color:var(--blue)}.user-menu em{display:block;color:#ffeb70;font-size:.72rem;font-style:normal;font-weight:700}.view-as-notice{margin:0 0 1rem;padding:.75rem 1rem;border:1px solid #d5ad00;border-radius:9px;background:#fff7cd;color:#4b3d00}
@media(max-width:1180px){.view-as-toolbar{order:3;flex-basis:100%;padding-bottom:.6rem}}
@media(max-width:700px){.topbar{flex-wrap:nowrap}.view-as-toolbar{order:initial;flex-basis:auto;justify-content:flex-start;overflow-x:auto;padding-bottom:0}.view-as-button{font-size:.7rem}.brand span{display:none}}
.brand-logo{display:block;width:40px;height:50px;object-fit:contain;flex:0 0 auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}
.login-logo{display:block;width:min(322px,70%);height:auto;max-height:400px;object-fit:contain;margin-bottom:28px;filter:drop-shadow(0 12px 25px rgba(0,0,0,.22))}.login-logo-mobile{display:none;width:78px;height:96px;object-fit:contain;margin-bottom:8px}
@media(max-width:700px){.login-logo-mobile{display:block}}
.event-card{border-left:5px solid #7a8098;padding-left:12px}.event-type-examen{border-left-color:#c62828}.event-type-reunion{border-left-color:#1976d2}.event-type-actividad{border-left-color:#2e7d32}.event-type-acto{border-left-color:#7b1fa2}.event-type-otro{border-left-color:#616161}.membership-row{border-bottom:1px solid var(--line);padding:14px 0}.checkbox-field{align-content:center}
.schedule-slot-row{border-bottom:1px solid var(--line);padding:14px 0;display:grid;grid-template-columns:1.2fr 1fr 1fr auto;gap:14px;align-items:end}.schedule-slot-row select,.schedule-slot-row input{width:100%;border:1px solid #d9dce9;border-radius:9px;padding:10px 12px;background:#fff}.schedule-delete-field{display:none}.schedule-delete{color:#9b2636}.schedule-builder .panel-head{gap:16px;margin-bottom:12px}.schedule-builder .panel-head h2{margin-bottom:2px}.schedule-grid td{min-width:150px;vertical-align:top}.schedule-grid td strong,.schedule-grid td small{display:block}.schedule-grid td small{color:var(--muted)}
.skip-link{position:fixed;left:12px;top:-60px;z-index:100;background:#fff;color:var(--blue);padding:10px 14px;border-radius:8px;font-weight:800}.skip-link:focus{top:10px}*:focus-visible{outline:3px solid #f5d90a;outline-offset:3px}.sidebar a[aria-current="page"]{background:#e8eafd;color:var(--blue)}.table-input{min-width:90px;width:100%;padding:8px;border:1px solid #d9dce9;border-radius:7px}.actions{display:flex;gap:8px;flex-wrap:wrap}.warning{background:#fff6d8;color:#715900;padding:12px;border-radius:10px}.metric-note{color:var(--muted);font-size:13px}
.form-section{border:1px solid var(--line)}.form-section legend{padding:0 10px;color:var(--blue);font-size:18px;font-weight:800}.enrollment-form>.form-actions{margin-bottom:24px}.recipient-results{display:grid;gap:5px;max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:9px;padding:8px;background:#fff}.recipient-result{display:flex;gap:9px;align-items:center;padding:8px;border-radius:7px;font-weight:500;cursor:pointer}.recipient-result:hover{background:#f0f2ff}.recipient-selected{display:flex;gap:6px;flex-wrap:wrap}.recipient-chip{background:#e8eafd;color:var(--blue);border-radius:999px;padding:5px 9px;font-size:12px}.event-date{font-size:12px;white-space:nowrap}
input[type=date]{cursor:pointer}input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer}
:root{--blue:#18226E;--blue-2:#26349a;--institution-primary-rgb:24,34,110;--ink:#1e2440;--muted:#6d738d;--line:#e4e6f0;--bg:#f5f6fb;--white:#fff;--success:#14795d;--shadow:0 12px 35px rgba(var(--institution-primary-rgb),.08)}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}a{color:var(--blue);text-decoration:none}button,input,select,textarea{font:inherit}.topbar{height:76px;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:20;box-shadow:0 5px 20px rgba(11,17,72,.25)}.brand{display:flex;gap:13px;align-items:center;color:#fff}.brand span:last-child{display:grid}.brand small,.user-menu small{opacity:.7}.logo-slot{display:grid;place-items:center;border:1px dashed rgba(255,255,255,.55);font-weight:800;letter-spacing:.08em}.logo-slot-small{width:46px;height:46px;border-radius:12px}.logo-slot-large{width:142px;height:142px;border-radius:30px;font-size:28px;background:rgba(255,255,255,.1)}.user-menu{display:grid;text-align:right}.nav-toggle{display:none;background:transparent;border:0;color:#fff;font-size:24px}.app-shell{display:grid;grid-template-columns:235px 1fr;min-height:calc(100vh - 112px)}.sidebar{background:#fff;border-right:1px solid var(--line);padding:22px 14px;display:flex;flex-direction:column;gap:5px}.sidebar a,.logout-form button{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:10px;color:#4d526b;font-weight:650;border:0;background:none;width:100%;cursor:pointer}.sidebar a:hover,.logout-form button:hover{color:var(--blue);background:#f0f2ff}.logout-form{margin-top:auto}.content{padding:36px;max-width:1450px;width:100%;margin:auto}.page-head{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:25px}.page-head h1{font-size:30px;line-height:1.2;margin:3px 0 5px}.page-head p{margin:0;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:800;color:var(--blue)}.btn{border-radius:10px;padding:10px 16px;font-weight:750;border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.btn.primary{background:var(--blue);color:#fff}.btn.primary:hover{background:var(--blue-2)}.btn.secondary{background:#e8eafd;color:var(--blue)}.btn.ghost{background:#fff;border-color:var(--line);color:var(--ink)}.panel,.stat-card,.course-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.panel{padding:22px;margin-bottom:22px}.panel h2{margin:0 0 16px;font-size:18px}.panel-head{display:flex;justify-content:space-between;align-items:center}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.stat-card{padding:20px;display:grid;gap:8px}.stat-card span{color:var(--muted);font-weight:650}.stat-card strong{font-size:34px;color:var(--blue)}.stat-card a{font-size:13px;font-weight:750}.stat-card.accent{background:var(--blue);color:#fff}.stat-card.accent span,.stat-card.accent strong,.stat-card.accent a{color:#fff}.list-stack{display:grid}.list-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;padding:14px 4px;border-bottom:1px solid var(--line);color:var(--ink)}.list-row:last-child{border:0}.list-row span:nth-child(2){display:grid}.list-row small{color:var(--muted)}.avatar{width:40px;height:40px;border-radius:12px;background:#e9ebfb;color:var(--blue);display:grid;place-items:center;font-weight:800}.filterbar,.import-form{display:flex;gap:10px;align-items:end;margin-bottom:18px}.filterbar input{flex:1;padding:10px 13px;border:1px solid var(--line);border-radius:9px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em;padding:11px 12px;border-bottom:1px solid var(--line)}td{padding:14px 12px;border-bottom:1px solid var(--line)}tbody tr:last-child td{border-bottom:0}.badge{background:#eef0f7;color:#555b74;font-size:12px;font-weight:750;padding:4px 8px;border-radius:999px;display:inline-flex}.badge.success{background:#e5f5ef;color:var(--success)}.empty{text-align:center;padding:28px;color:var(--muted)}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.course-card{padding:22px;color:var(--ink);transition:.2s}.course-card:hover{transform:translateY(-2px);border-color:#c9cdef}.course-card>div{display:flex;justify-content:space-between}.course-card h2{margin:25px 0 4px}.course-card p,.course-card small{color:var(--muted)}.code{font-weight:850;color:var(--blue);letter-spacing:.12em}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}dl{display:grid;grid-template-columns:140px 1fr;gap:9px;margin:0}dt{color:var(--muted)}dd{margin:0;font-weight:650}.contact{display:grid;padding:11px 0;border-bottom:1px solid var(--line)}.contact span,.contact small{color:var(--muted)}.form-panel{max-width:900px}.model-form,.search-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.field,.import-form label{display:grid;gap:6px;font-weight:650}.form-control,.model-form input,.model-form select,.model-form textarea,.search-grid input,.search-grid select{width:100%;border:1px solid #d9dce9;border-radius:9px;padding:10px 12px;background:#fff}.model-form input[type=checkbox]{width:auto}.errorlist{color:#a42335;margin:4px 0;padding-left:18px}.form-actions{grid-column:1/-1;display:flex;gap:10px;padding-top:10px}.thread{max-width:900px;display:grid;gap:14px}.message-bubble{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;max-width:82%;box-shadow:var(--shadow)}.message-bubble.mine{margin-left:auto;background:#eef0ff;border-color:#d6daf5}.message-bubble header{display:flex;justify-content:space-between;gap:20px;margin-bottom:10px}.message-bubble time,.message-bubble details{font-size:12px;color:var(--muted)}.attachment{display:block;margin-top:12px;background:#fff;border:1px solid var(--line);padding:9px;border-radius:9px}.template-links{display:flex;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:18px}.messages{margin-bottom:18px}.alert{padding:12px 15px;border-radius:10px;background:#e8f5ef;color:#11694f}.alert.error{background:#fdebed;color:#9b2636}code{color:var(--blue);font-weight:700}footer{text-align:center;font-size:12px;color:var(--muted);padding:10px}.login-layout{min-height:calc(100vh - 36px);display:grid;grid-template-columns:1.05fr .95fr}.login-brand{background:var(--blue);color:#fff;padding:9vw;display:flex;flex-direction:column;justify-content:center}.login-brand p{margin:28px 0 0;text-transform:uppercase;letter-spacing:.2em}.login-brand h1{font-size:54px;line-height:1.05;margin:8px 0 22px}.login-brand span:last-child{opacity:.78}.login-card{background:#fff;display:flex;flex-direction:column;justify-content:center;padding:10vw;gap:22px}.login-card h2{font-size:34px;margin:5px 0}.login-card p,.login-card small{color:var(--muted)}.stack-form{display:grid;gap:16px}.stack-form label{display:grid;gap:6px;font-weight:700}.stack-form input{padding:12px;border:1px solid var(--line);border-radius:9px}@media(max-width:1000px){.stat-grid{grid-template-columns:repeat(2,1fr)}.card-grid{grid-template-columns:repeat(2,1fr)}.content{padding:24px}.app-shell{grid-template-columns:78px 1fr}.sidebar span{display:none}.sidebar a,.logout-form button{justify-content:center;font-size:20px}}@media(max-width:700px){.topbar{padding:0 16px}.brand strong{font-size:13px}.user-menu{display:none}.nav-toggle{display:block}.app-shell{display:block}.sidebar{position:fixed;inset:76px auto 0 0;width:235px;z-index:15;transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.sidebar span{display:inline}.sidebar a,.logout-form button{justify-content:flex-start;font-size:15px}.content{padding:20px 14px}.page-head{align-items:flex-start;flex-direction:column}.stat-grid,.card-grid,.detail-grid,.model-form,.search-grid{grid-template-columns:1fr}.filterbar,.import-form{align-items:stretch;flex-direction:column}.login-layout{grid-template-columns:1fr}.login-brand{display:none}.login-card{padding:28px}.message-bubble{max-width:96%}.form-actions{grid-column:auto}.stat-card strong{font-size:28px}}
/* Mantiene la licencia y su acción contextual en una misma fila legible. */
.leave-entry{display:flex;align-items:center;justify-content:space-between;gap:14px}.leave-copy{display:grid}.leave-entry .leave-copy strong{color:var(--ink)}
/* Destaca el control al que se desplazó la pantalla después de un error. */
[aria-invalid="true"]{border-color:#a42335!important;box-shadow:0 0 0 3px rgba(164,35,53,.12)}.form-error-focus{background:#fff5f6;border-radius:10px;padding:8px}
/* El editor mantiene las acciones visibles y ofrece una revisión PDF amplia. */
.report-template-editor{display:grid;gap:0}.sticky-actions{position:sticky;bottom:12px;z-index:5;padding:14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.96);box-shadow:var(--shadow)}.report-preview-frame{width:100%;height:min(78vh,900px);margin-top:16px;border:1px solid var(--line);border-radius:10px;background:#e9ebf3}.preview-summary{display:flex;align-items:center;gap:32px;flex-wrap:wrap}.preview-summary>div{display:grid;gap:5px}.color-chip{display:inline-flex;align-items:center;gap:7px;margin-right:8px}.color-chip:before{content:"";width:18px;height:18px;border-radius:50%;border:1px solid #9da2b5;background:var(--preview-color)}
/* Editor de contenido académico del boletín y grilla de carga por curso. */
.assessment-card-list{display:grid;gap:16px}.assessment-card{padding:18px;border:1px solid var(--line);border-radius:13px;background:#fbfbfe}.assessment-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.assessment-card h3{margin:4px 0 10px;color:var(--blue)}.assessment-card h4{margin:0}.assessment-card dl{grid-template-columns:120px 1fr}.assessment-area-builder{display:grid;gap:0}.indicator-form-row{display:grid;grid-template-columns:minmax(280px,1fr) 120px auto;align-items:end;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.indicator-form-row:last-child{border-bottom:0}.indicator-delete-field{display:none}.assessment-section-head,.assessment-subheading{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.assessment-section-head{margin-bottom:18px}.assessment-section-head h2{margin-bottom:2px}.assessment-subheading{margin:18px 0 8px}.indicator-list{display:grid;border:1px solid var(--line);border-radius:11px;overflow:hidden;background:#fff}.indicator-list-row{display:grid;grid-template-columns:32px minmax(220px,1fr) auto;align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line)}.indicator-list-row:last-child{border-bottom:0}.indicator-list-row.inactive{opacity:.65;background:#f3f4f8}.indicator-list-row>div:nth-child(2){display:grid}.indicator-list-row small{color:var(--muted)}.indicator-order{width:28px;height:28px;display:grid;place-items:center;border-radius:8px;background:#e8eafd;color:var(--blue);font-weight:800}.indicator-actions{justify-content:flex-end}.indicator-actions .btn{min-height:34px;padding:6px 10px}.assessment-section-actions{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.version-readonly-notice{border-left:5px solid var(--blue);background:#f4f5ff}.assessment-entry-grid th{min-width:190px;vertical-align:bottom}.assessment-entry-grid th:first-child{position:sticky;left:0;z-index:2;min-width:190px;background:#fff}.assessment-entry-grid td{min-width:190px;vertical-align:top}.assessment-entry-grid td:first-child{position:sticky;left:0;z-index:1;background:#fff}.compact-field{display:grid;gap:5px;margin-bottom:8px;color:var(--muted);font-size:12px;font-weight:700}.compact-field:last-child{margin-bottom:0}.final-grade-cell{background:#f0f2ff}.assessment-grid-form .form-actions{justify-content:flex-end}.assessment-card .btn,.assessment-area-builder .btn,.assessment-grid-form .btn{background:var(--blue);color:#fff}.assessment-card .btn:hover,.assessment-area-builder .btn:hover,.assessment-grid-form .btn:hover{background:var(--blue-2)}
@media(max-width:800px){.indicator-form-row,.indicator-list-row{grid-template-columns:1fr}.indicator-order{display:none}.indicator-actions{justify-content:flex-start}.assessment-card dl{grid-template-columns:1fr}.assessment-entry-grid th,.assessment-entry-grid td{min-width:170px}}
/* Confirmaciones modales del cierre y publicación de boletines. */
.confirmation-dialog{z-index:60;width:min(620px,calc(100vw - 32px));max-height:82vh;overflow:auto;padding:24px;border:1px solid var(--line);border-radius:16px;background:#fff;color:var(--ink);box-shadow:0 24px 80px rgba(12,18,65,.32)}.confirmation-dialog::backdrop{background:rgba(20,25,55,.55)}.confirmation-dialog h2{margin-top:0;color:var(--blue)}.confirmation-dialog ul{max-height:260px;overflow:auto;padding-left:22px}.confirmation-dialog .actions{margin-top:20px}
/* Estados consistentes del tablero de boletines y controles de solo lectura. */
.btn.danger{background:#a42335;color:#fff}.btn.danger:hover{background:#821929}.badge.danger{background:#fdebed;color:#9b2636}.badge.warning{background:#fff3cd;color:#775a00}.badge.neutral{background:#e7e8ed;color:#4f5362}.alert.warning{background:#fff7db;color:#6f5500}.table-input:disabled,.form-control:disabled{cursor:not-allowed;background:#f1f2f6;color:#45495a;opacity:1}.muted{color:var(--muted)}
/* Las grillas anchas se desplazan dentro de su panel sin ensanchar la aplicación. */
html,body{max-width:100%;overflow-x:hidden}.topbar,.app-shell{width:100%;max-width:100%}.app-shell{grid-template-columns:235px minmax(0,1fr)}.app-shell,.content,.wide-grade-panel,.assessment-grid-form{min-width:0}.content{max-width:1450px}.wide-grade-panel{overflow:hidden}.wide-grade-scroll{width:100%;max-width:100%;max-height:calc(100vh - 285px);max-height:calc(100dvh - 285px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;border:1px solid var(--line);border-radius:10px}.wide-grade-scroll table{width:max-content;min-width:100%}.grade-page-head{margin-bottom:10px}.grade-navigation{position:sticky;top:86px;z-index:14;display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;width:100%;margin:0 0 14px;padding:9px;border:1px solid var(--line);border-radius:11px;background:rgba(245,246,251,.96);box-shadow:0 6px 18px rgba(var(--institution-primary-rgb),.08);backdrop-filter:blur(7px)}
/* Reducción moderada: conserva legibilidad y permite ver más conceptos a la vez. */
.assessment-entry-grid th,.assessment-entry-grid td{width:165px;min-width:165px;max-width:165px;padding:10px;white-space:normal;overflow-wrap:anywhere}.assessment-entry-grid thead th,.standard-grade-grid thead th{position:sticky;top:0;z-index:4;background:#f7f8fc;box-shadow:inset 0 -1px var(--line)}.assessment-entry-grid th:first-child,.assessment-entry-grid td:first-child,.standard-grade-grid th:first-child,.standard-grade-grid td:first-child{position:sticky;left:0;width:178px;min-width:178px;max-width:178px;background:#fff;box-shadow:1px 0 var(--line)}.assessment-entry-grid thead th:first-child,.standard-grade-grid thead th:first-child{z-index:6;background:#f7f8fc}.assessment-entry-grid tbody td:first-child,.standard-grade-grid tbody td:first-child{z-index:3}.assessment-entry-grid .table-input{min-width:0}.standard-grade-grid th,.standard-grade-grid td{min-width:145px}.standard-grade-grid th:first-child,.standard-grade-grid td:first-child{min-width:178px}
@media(max-width:1180px) and (min-width:1001px){.grade-navigation{top:126px}}
@media(max-width:1000px) and (min-width:701px){.app-shell{grid-template-columns:78px minmax(0,1fr)}.grade-navigation{top:126px}}
@media(max-width:700px){.grade-navigation{top:82px;justify-content:flex-start}.wide-grade-scroll{max-height:calc(100vh - 240px);max-height:calc(100dvh - 240px)}.assessment-entry-grid th,.assessment-entry-grid td{width:155px;min-width:155px;max-width:155px}.assessment-entry-grid th:first-child,.assessment-entry-grid td:first-child,.standard-grade-grid th:first-child,.standard-grade-grid td:first-child{width:160px;min-width:160px;max-width:160px}}
/* El filtro admite nivel, curso, período y ambas fechas sin desbordar la página. */
.report-period-filter{flex-wrap:wrap}.report-period-filter label{flex:1 1 155px}.report-period-filter .btn{flex:0 0 auto}
/* Editor unificado: navegación, formulario y muestra conviven sin alterar el PDF. */
.designer-page-head{margin-bottom:12px}.designer-toolbar{position:sticky;top:86px;z-index:16;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding:11px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.97);box-shadow:var(--shadow);backdrop-filter:blur(8px)}.designer-toolbar>div:first-child{display:grid}.designer-save-state{color:var(--muted);font-size:12px}.designer-toolbar form{margin:0}.designer-workspace{display:grid;grid-template-columns:190px minmax(0,1fr) minmax(300px,390px);gap:18px;align-items:start}.designer-section-nav{position:sticky;top:155px;display:grid;gap:7px;padding:12px}.designer-tab{width:100%;padding:11px 12px;border:0;border-radius:9px;background:transparent;color:var(--ink);font-weight:750;text-align:left;cursor:pointer}.designer-tab:hover,.designer-tab.active{background:#e8eafd;color:var(--blue)}.designer-editing-column{min-width:0}.designer-panel{min-height:430px}.designer-panel[hidden]{display:none!important}.designer-panel-heading{margin-bottom:20px}.designer-panel-heading h2{margin:3px 0 4px}.designer-panel-heading p{margin:0;color:var(--muted)}.designer-course-builder{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.designer-course-builder h3{margin:0}.designer-course-builder .panel-head{gap:14px;flex-wrap:wrap}.designer-course-rows{display:grid;gap:10px;margin-top:14px}.designer-course-row{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:12px;align-items:end;padding:12px;border:1px solid var(--line);border-radius:11px;background:#fafbff}.designer-preview-column{position:sticky;top:155px;display:grid;gap:12px;margin-bottom:0}.designer-inline-preview{height:62vh;min-height:520px;margin:0}.designer-home-tabs{display:flex;gap:9px;margin-bottom:14px}.designer-home-tabs+.panel{scroll-margin-top:155px}#contenido{scroll-margin-top:155px}
@media(max-width:1180px){.designer-toolbar{top:126px}.designer-workspace{grid-template-columns:160px minmax(0,1fr)}.designer-preview-column{position:relative;top:auto;grid-column:1/-1}.designer-section-nav{top:195px}}
@media(max-width:800px){.designer-toolbar{top:82px;align-items:flex-start;flex-direction:column}.designer-workspace{grid-template-columns:1fr}.designer-section-nav{position:static;display:flex;overflow-x:auto}.designer-tab{min-width:165px}.designer-preview-column{grid-column:auto}.designer-course-row{grid-template-columns:1fr}.designer-inline-preview{min-height:440px}.designer-home-tabs{overflow-x:auto}}

/* La escala central prioriza el selector y ofrece espacio para listas extensas. */
.assessment-scale-editor{max-width:900px;margin-inline:auto}.assessment-scale-values{grid-column:1/-1}.assessment-scale-values textarea{min-height:210px;line-height:1.55}

/* Boletines 2: un flujo visual separado, compacto y accesible. */
.report2-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.report2-action-card{display:block;color:var(--ink);margin:0;transition:transform .15s ease,border-color .15s ease}.report2-action-card:hover{transform:translateY(-2px);border-color:#b9bee0}.report2-action-card h2{margin:10px 0 5px}.report2-action-card p{margin:0;color:var(--muted)}.report2-step{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--blue);color:#fff;font-weight:850}.report2-stats{margin-bottom:22px}.report2-scheme-tabs{display:flex;flex-wrap:wrap;gap:8px}.report2-date-section{margin:24px 0}.report2-date-rows{display:grid;gap:10px}.report2-date-row{display:grid;grid-template-columns:140px 1fr 1fr;gap:14px;align-items:end;padding:14px;border:1px solid var(--line);border-radius:12px;background:#fafbff}.report2-date-row strong{align-self:center}.report2-course-picker{margin:18px 0}.report2-course-picker>div,.report2-course-picker ul,.report2-course-picker #id_courses{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;list-style:none;padding:0}.report2-course-picker label,.form-section #id_courses label{display:inline-flex;align-items:center;gap:8px;font-weight:650;padding:9px;border:1px solid var(--line);border-radius:9px;background:#fff}.report2-designer-toolbar{position:sticky;top:84px;z-index:12;display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px;padding:12px 16px;border:1px solid #cbd0e8;border-radius:12px;background:#fff;box-shadow:0 8px 24px rgba(var(--institution-primary-rgb),.12)}.report2-designer-toolbar span{display:grid}.report2-designer-toolbar small{color:var(--muted)}.report2-designer-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:20px;align-items:start}.report2-live-preview{position:sticky;top:160px}.report2-common-subject-info{display:flex;align-items:center;gap:10px;margin-top:12px}.report2-common-subject-info .alert{flex:1;margin:0}.report2-attendance-card,.report2-block-card{margin-top:14px;padding:18px;border:1px solid var(--line);border-radius:14px;background:#fafbff}.report2-attendance-card{border-left:5px solid var(--success)}.report2-attendance-card h3{margin:8px 0 2px}.report2-attendance-card p{margin:0;color:var(--muted)}.report2-block-card h3,.report2-block-card h4{margin:0}.report2-topic-row{display:grid;grid-template-columns:1fr auto;gap:10px;margin-top:9px}.report2-preview-block{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:10px}.report2-preview-block strong,.report2-preview-block small{display:block}.report2-preview-block ul{padding-left:20px;margin-bottom:0}.report2-final-actions{justify-content:flex-end}.report2-dialog{z-index:100;width:min(620px,calc(100% - 30px));border:0;border-radius:16px;padding:24px;box-shadow:0 20px 70px #1118}.report2-dialog p{white-space:pre-line}.report2-dialog::backdrop{background:#1118}.report2-window-list{display:grid;gap:15px}.report2-window-card{padding:18px;border:1px solid var(--line);border-radius:14px;background:#fafbff}.report2-window-card h3{margin:0}.report2-window-card p{margin:3px 0;color:var(--muted)}.report2-scope-list{display:grid;gap:8px;margin:15px 0}.report2-scope-row{display:grid;grid-template-columns:minmax(220px,1fr) auto auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}.report2-scope-row span:first-child{display:grid}.report2-scope-row small{color:var(--muted)}.report2-window-footer{display:flex;justify-content:space-between;align-items:center;gap:15px;border-top:1px solid var(--line);padding-top:13px}.report2-grade-table-wrap{max-width:100%;overflow:auto;max-height:70vh;border:1px solid var(--line);border-radius:12px}.report2-grade-table{border-collapse:separate;border-spacing:0;min-width:max-content}.report2-grade-table th,.report2-grade-table td{min-width:135px;max-width:170px;padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;vertical-align:top}.report2-grade-table thead th{position:sticky;top:0;z-index:3;background:#eef0ff}.report2-grade-table .report2-student-column{position:sticky;left:0;z-index:2;min-width:200px;max-width:240px;background:#fafbff;text-align:left}.report2-grade-table thead .report2-student-column{z-index:4;background:#e8eafd}.report2-grade-table th small,.report2-grade-table th em{display:block;color:var(--muted);font-size:11px;font-style:normal}.report2-grade-table td select{margin-top:5px;max-width:150px}.report2-sticky-save{position:sticky;left:0;bottom:10px;width:max-content;padding:10px;margin-top:15px;border:1px solid var(--line);border-radius:12px;background:#fffd;backdrop-filter:blur(6px)}.report2-published-report{max-width:900px;margin:auto}.report2-published-report>header{text-align:center;border-bottom:2px solid var(--blue);padding-bottom:18px}.report2-published-report section{margin-top:22px}.report2-published-report table{width:100%;border-collapse:collapse}.report2-published-report th,.report2-published-report td{border:1px solid var(--line);padding:9px}.report2-attendance-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px}.report2-attendance-grid span{display:grid;padding:10px;border:1px solid var(--line);border-radius:9px}.report2-attendance-grid strong{font-size:20px;color:var(--blue)}
@media(max-width:900px){.report2-action-grid,.report2-designer-grid{grid-template-columns:1fr}.report2-live-preview{position:relative;top:auto}.report2-date-row{grid-template-columns:1fr 1fr}.report2-date-row strong{grid-column:1/-1}.report2-scope-row{grid-template-columns:1fr}.report2-window-footer{align-items:flex-start;flex-direction:column}.report2-designer-toolbar{top:80px}}
@media print{.topbar,.sidebar,footer,.report2-print-hide{display:none!important}.app-shell{display:block}.content{padding:0;max-width:none}.report2-published-report{border:0;box-shadow:none;margin:0}.report2-published-report section{break-inside:avoid}}

/* Encabezado institucional editable y presentación oficial de Boletines 2. */
.report2-institution-form{max-width:900px;margin-inline:auto}.report2-institution-form .form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.report2-institution-form label{display:grid;gap:6px;font-weight:650}.report2-institution-form label small{color:var(--muted);font-weight:500}.report2-institution-form .span-2{grid-column:1/-1}.report2-institution-extra-list{display:grid;gap:10px}.report2-institution-extra-row{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(240px,1.2fr) auto;gap:12px;align-items:end;padding:12px;border:1px solid var(--line);border-radius:11px;background:#fafbff}.report2-institution-preview{text-align:center}.report2-institution-preview h2{margin:8px 0 3px}.report2-institution-preview p{margin:2px 0}.report2-institution-preview hr{margin:18px 0;border:0;border-top:2px solid var(--blue)}.report2-student-header-example,.report2-student-header{display:grid;gap:5px;margin-top:14px;padding:12px 14px;border:1px solid var(--line);border-radius:9px;text-align:left}.report2-official-header>h1{margin:0 0 4px;font-size:23px}.report2-official-header>p{margin:2px 0}.report2-official-header>h2{margin:18px 0 8px;color:var(--blue)}.report2-student-header p{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin:0}.report2-student-header p:first-child{display:block}.report2-student-header p strong:not(:first-child){margin-left:auto}.report2-period-label{margin-top:12px!important}.report2-grade-block table th:not(:first-child),.report2-grade-block table td:not(:first-child){width:22%;text-align:center}
.report2-official-header{position:relative;min-height:95px}.report2-report-logo{position:absolute;top:0;left:0;width:72px;height:auto;object-fit:contain}.report2-institution-copy{min-height:89px;padding:0 82px;text-align:center}.report2-institution-copy h1{margin:0 0 4px;font-size:23px}.report2-institution-copy p{margin:2px 0}.report2-grade-block table{border:1px solid var(--blue);border-collapse:collapse}.report2-grade-block thead th{background:#eef0ff;color:var(--blue);font-weight:800}.report2-grade-block tbody tr:last-child td{border-bottom:1px solid var(--blue)}
@media(max-width:700px){.report2-institution-form .form-grid,.report2-institution-extra-row{grid-template-columns:1fr}.report2-institution-form .span-2{grid-column:auto}.report2-student-header p{display:grid}.report2-student-header p strong:not(:first-child){margin:6px 0 0}}
@media(max-width:600px){.report2-report-logo{position:static;width:60px;margin-bottom:8px}.report2-institution-copy{min-height:0;padding:0}}
.report2-publication-groups,.report2-publication-periods{display:grid;gap:14px}.report2-publication-course h2{margin-bottom:2px}.report2-publication-period{display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(300px,auto);gap:16px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:12px;background:#fafbff}.report2-publication-period>div:first-child{display:grid}.report2-publication-period small{color:var(--muted)}.report2-publication-period .actions,.report2-publication-summary .actions,td .actions{justify-content:flex-end;flex-wrap:wrap}.report2-publication-period form,.report2-publication-summary form,td .actions form{margin:0}.report2-publication-summary{display:flex;justify-content:space-between;align-items:center;gap:20px}.report2-publication-summary p{margin:8px 0 0}.report2-publication-summary .alert{margin-top:12px}
@media(max-width:950px){.report2-publication-period{grid-template-columns:1fr}.report2-publication-period .actions{justify-content:flex-start}.report2-publication-summary{align-items:flex-start;flex-direction:column}}

/* Formularios de mensajería: campos breves compactos y editor con ancho útil. */
.message-compose-panel,.message-model-panel{width:100%;max-width:1100px}
.message-compose-form,.message-model-form{align-items:start}
.message-compose-form>.errorlist,.message-model-form>.errorlist{grid-column:1/-1}
.message-compose-form{
  grid-template-columns:repeat(2,minmax(0,1fr));
  grid-template-areas:
    "recipients courses"
    "include include"
    "subject template"
    "body body"
    "scheduled attachments"
    "actions actions";
}
.message-compose-form .field-recipients{grid-area:recipients}
.message-compose-form .field-courses{grid-area:courses}
.message-compose-form .field-include_course_teacher{grid-area:include}
.message-compose-form .field-subject{grid-area:subject}
.message-compose-form .field-template{grid-area:template}
.message-compose-form .field-body{grid-area:body}
.message-compose-form .field-scheduled_for{grid-area:scheduled}
.message-compose-form .field-attachments{grid-area:attachments}
.message-compose-form .form-actions{grid-area:actions}
.message-compose-form .field,
.message-model-form .field{min-width:0;align-self:start;align-content:start}
.message-compose-form .field-subject input,
.message-compose-form .field-template select,
.message-model-form .field-subject input{height:46px}
.message-compose-form .field-template select{min-height:46px;max-height:46px}
.message-compose-form .field-body .rich-editor{min-height:250px}
.family-message-compose{
  grid-template-areas:
    "recipients recipients"
    "subject subject"
    "body body"
    "actions actions";
}
.message-model-form{
  grid-template-columns:repeat(2,minmax(0,1fr));
  grid-template-areas:
    "name level"
    "subject subject"
    "body body"
    "active active"
    "actions actions";
}
.message-model-form-no-level{
  grid-template-areas:
    "name name"
    "subject subject"
    "body body"
    "active active"
    "actions actions";
}
.message-model-form .field-name{grid-area:name}
.message-model-form .field-level{grid-area:level}
.message-model-form .field-subject{grid-area:subject}
.message-model-form .field-body{grid-area:body}
.message-model-form .field-active{grid-area:active}
.message-model-form .form-actions{grid-area:actions}
.message-model-form .field-body .rich-editor{min-height:240px}
@media(max-width:700px){
  .message-compose-form,
  .family-message-compose{
    grid-template-columns:1fr;
    grid-template-areas:
      "recipients"
      "courses"
      "include"
      "subject"
      "template"
      "body"
      "scheduled"
      "attachments"
      "actions";
  }
  .message-model-form,
  .message-model-form-no-level{
    grid-template-columns:1fr;
    grid-template-areas:
      "name"
      "level"
      "subject"
      "body"
      "active"
      "actions";
  }
}

/* Mensajería: conserva los saltos escritos y ofrece selección clara de cursos. */
.message-body{white-space:pre-wrap;overflow-wrap:anywhere}
.recipient-search-control{position:relative}
.recipient-search-control .recipient-search{padding-right:42px}
.recipient-search-control .recipient-search::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
.recipient-search-clear{position:absolute;top:50%;right:9px;display:grid;place-items:center;width:26px;height:26px;transform:translateY(-50%);border:0;border-radius:50%;background:#e8eafd;color:var(--blue);font-size:20px;line-height:1;cursor:pointer}
.recipient-search-clear:hover{background:#d9ddfa}
.course-message-picker{display:grid;gap:9px;max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:9px;padding:9px;background:#fff}
.course-message-options{display:grid;gap:5px}
.course-message-option{display:flex;align-items:center;gap:9px;padding:8px;border-radius:7px;font-weight:600}
.course-message-option:hover{background:#f0f2ff}
.course-message-option input{flex:0 0 auto}
.course-message-option-all{border-bottom:1px solid var(--line);border-radius:0;color:var(--blue);font-weight:800}
.course-message-summary{color:var(--muted);padding:2px 8px 4px}

/* Campana privada y estados de lectura de la bandeja de mensajes. */
.notification-center{position:relative;margin-left:auto}
.notification-center>summary{position:relative;display:grid;place-items:center;width:38px;height:42px;border:0;border-radius:0;background:transparent;color:#fff;cursor:pointer;list-style:none}
.notification-center>summary::-webkit-details-marker{display:none}
.notification-center>summary:hover,.notification-center[open]>summary{background:transparent;opacity:.82}
.notification-bell-icon{display:block;width:25px;height:25px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}
.notification-count{position:absolute;top:-7px;right:-7px;display:grid;place-items:center;min-width:21px;height:21px;padding:0 5px;border:2px solid var(--blue);border-radius:999px;background:#d62f45;color:#fff;font-size:11px;line-height:1}
.notification-menu{position:absolute;top:50px;right:0;z-index:40;width:min(390px,calc(100vw - 28px));overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--ink);box-shadow:0 18px 55px rgba(11,17,72,.25)}
.notification-menu>header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line)}
.notification-menu>header small{color:var(--muted)}
.notification-list{display:grid;max-height:470px;overflow:auto}
.notification-item{display:grid;grid-template-columns:34px minmax(0,1fr) 10px;gap:10px;align-items:start;padding:13px 15px;border-bottom:1px solid var(--line);color:var(--ink)}
.notification-item:last-child{border-bottom:0}
.notification-item:hover{background:#f5f6ff}
.notification-item.unread{background:#eef0ff}
.notification-item>span:nth-child(2){display:grid;gap:2px}
.notification-item small{color:var(--muted);font-size:11px}
.notification-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#e8eafd;color:var(--blue);font-weight:800}
.notification-item i{width:8px;height:8px;margin-top:6px;border-radius:50%;background:#2974d1}
.inbox-thread.unread{margin-inline:-10px;padding-inline:14px;border-radius:10px;background:#eef0ff}
.inbox-thread.unread strong{color:var(--blue)}
.inbox-state{display:flex!important;align-items:center;justify-content:flex-end;gap:9px}
.badge.unread{background:#dce7ff;color:#1756a9}
.nav-message-link,.nav-report2-link,.nav-art-link,.nav-regular-certificate-link{position:relative}
.unread-message-dot,.unread-report2-dot,.unread-art-dot,.unread-regular-certificate-dot{flex:0 0 8px;width:8px;height:8px;margin-left:auto;border-radius:50%;background:#d62f45;box-shadow:0 0 0 2px #fff}
@media(max-width:700px){.notification-center{margin-left:auto}.notification-menu{position:fixed;top:70px;right:8px}.inbox-state{align-items:flex-end;flex-direction:column}.inbox-state b{display:none}}
/* El paginador conserva botones amplios sin desplazar las tablas en móvil. */
.pagination {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  justify-content: center;
  margin-top: 1rem;
}

/* Encabezados ordenables: el texto conserva contraste y la flecha comunica el sentido. */
.sortable-heading{display:inline-flex;align-items:center;gap:6px;color:inherit;text-decoration:none;white-space:nowrap}
.sortable-heading span{display:inline-grid;place-items:center;min-width:18px;color:var(--blue);font-size:13px}
.sortable-heading:hover,.sortable-heading:focus-visible{color:var(--blue);text-decoration:underline;text-underline-offset:3px}
.teacher-list-toolbar{display:flex;justify-content:flex-end;margin-bottom:12px}.teacher-list-search{display:flex;align-items:center;gap:7px;width:min(100%,420px)}.teacher-list-search input[type=search]{min-width:0;flex:1;height:38px;padding:7px 11px;border:1px solid #d9dce9;border-radius:9px;background:#fff}.teacher-list-search .btn{min-height:38px;padding:7px 11px;font-size:13px}@media(max-width:560px){.teacher-list-search{width:100%;flex-wrap:wrap}.teacher-list-search input[type=search]{flex-basis:100%}}

/* Ayuda contextual reutilizable: permanece sobre la pantalla y conserva datos. */
.screen-help-button{position:fixed;right:24px;bottom:24px;z-index:38;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:9px 14px;border:2px solid #fff;border-radius:24px;background:var(--blue);color:#fff;font-weight:800;box-shadow:0 8px 24px rgba(var(--institution-primary-rgb),.28);cursor:pointer}.screen-help-button>span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#fff;color:var(--blue);font-size:16px}.screen-help-button small{padding:2px 6px;border-radius:9px;background:#ffe36b;color:#3e3300;font-size:10px;text-transform:uppercase;letter-spacing:.04em}.screen-help-button:hover,.screen-help-button:focus-visible{background:var(--blue-2);transform:translateY(-1px)}.screen-help-dialog{z-index:100;width:min(760px,calc(100vw - 32px));height:min(760px,84vh);height:min(760px,84dvh);max-width:none;max-height:none;margin:auto;padding:0;border:1px solid #cbd0e8;border-radius:17px;background:#fff;color:var(--ink);overflow:hidden;box-shadow:0 26px 90px rgba(9,14,55,.4)}.screen-help-dialog::backdrop{background:rgba(16,20,48,.62);backdrop-filter:blur(2px)}.screen-help-shell{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;height:100%}.screen-help-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 24px 15px;border-bottom:1px solid var(--line)}.screen-help-header h2{margin:4px 0;color:var(--blue)}.screen-help-header small{color:var(--muted)}.screen-help-close{display:grid;place-items:center;flex:0 0 auto;width:38px;height:38px;border:0;border-radius:50%;background:#eef0ff;color:var(--blue);font-size:28px;line-height:1;cursor:pointer}.screen-help-close:hover,.screen-help-close:focus-visible{background:var(--blue);color:#fff}.screen-help-index{display:flex;gap:7px;padding:10px 24px;border-bottom:1px solid var(--line);overflow-x:auto;background:#f8f9ff;scrollbar-width:thin}.screen-help-index a{flex:0 0 auto;padding:6px 9px;border-radius:8px;color:var(--blue);font-size:12px;font-weight:750}.screen-help-index a:hover,.screen-help-index a:focus-visible{background:#e5e8ff}.screen-help-scroll{min-height:0;padding:5px 24px 24px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.screen-help-scroll section{padding-top:18px;scroll-margin-top:8px}.screen-help-scroll h3{margin:0 0 8px;color:var(--blue);font-size:18px}.screen-help-scroll p{margin:0;line-height:1.55}.screen-help-scroll ol,.screen-help-scroll ul{margin:8px 0 0;padding-left:22px}.screen-help-scroll li{margin:7px 0;line-height:1.45}.screen-help-role-note{margin-top:13px!important;padding:12px 14px;border-left:4px solid var(--blue);border-radius:8px;background:#eef0ff}.screen-help-scroll dl{display:grid;gap:9px;margin:10px 0 0}.screen-help-scroll dl>div{padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#fafbff}.screen-help-scroll dt{font-weight:800;color:var(--blue)}.screen-help-scroll dd{margin:3px 0 0;line-height:1.45}.screen-help-tips{margin-top:18px;padding:16px 18px!important;border:1px solid #ead88c;border-radius:11px;background:#fff8dc}.screen-help-example{margin-top:15px;padding:16px 18px!important;border:1px solid #b9ddd3;border-radius:11px;background:#eef9f5}.screen-help-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 24px;border-top:1px solid var(--line);background:#fff}.screen-help-footer span{color:var(--muted);font-size:12px}.screen-help-footer .btn{flex:0 0 auto}

/* Ayudas breves de campo generadas desde los textos que ya posee el formulario. */
label.has-field-help{position:relative;padding-right:29px}.field-help-button{position:absolute;top:0;right:0;z-index:3;display:grid;place-items:center;width:22px;height:22px;padding:0;border:1px solid #b9bee0;border-radius:50%;background:#eef0ff;color:var(--blue);font-size:12px;font-weight:900;line-height:1;cursor:pointer}.field-help-button:hover,.field-help-button:focus-visible,.field-help-button[aria-expanded="true"]{border-color:var(--blue);background:var(--blue);color:#fff}.field-help-popover{position:absolute;top:28px;right:0;z-index:45;width:min(290px,calc(100vw - 54px));padding:10px 12px;border:1px solid #c6cae4;border-radius:9px;background:#fff;color:var(--ink);font-size:12px;font-weight:500;line-height:1.4;box-shadow:0 10px 28px rgba(var(--institution-primary-rgb),.2)}.field-help-popover[hidden]{display:none}

@media(max-width:700px){.screen-help-button{right:14px;bottom:14px}.screen-help-dialog{width:calc(100vw - 18px);height:calc(100vh - 22px);height:calc(100dvh - 22px);border-radius:13px}.screen-help-header{padding:18px 17px 13px}.screen-help-index{padding:8px 17px}.screen-help-scroll{padding:3px 17px 18px}.screen-help-footer{align-items:flex-start;padding:11px 17px}.screen-help-footer span{max-width:68%}}
@media print{.screen-help-button,.screen-help-dialog,.field-help-button,.field-help-popover{display:none!important}}

/* Auditoría de mensajes: filtros compactos y conversaciones separadas de la bandeja propia. */
.message-audit-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.message-audit-filters label{display:grid;gap:6px;font-weight:700}.message-audit-filters input,.message-audit-filters select{width:100%;padding:10px 12px;border:1px solid #d9dce9;border-radius:9px;background:#fff}.message-audit-list{display:grid;gap:14px}.message-audit-row{padding:17px;border:1px solid var(--line);border-radius:13px;background:#fbfbfe}.message-audit-heading,.message-audit-footer{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.message-audit-heading>div{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap}.message-audit-heading h2{margin:0;font-size:17px;overflow-wrap:anywhere}.message-audit-heading time{flex:0 0 auto;color:var(--muted);font-size:12px}.message-audit-people{margin:10px 0 7px;color:var(--muted);font-size:13px}.message-audit-excerpt{padding:10px 12px;border-left:3px solid #c9cdef;background:#fff;white-space:pre-line}.message-audit-footer{align-items:center;margin-top:12px}.message-audit-footer .btn{padding:7px 11px;font-size:12px}.message-audit-summary{display:flex;gap:7px;flex-wrap:wrap}.badge.search{background:#fff2bd;color:#6b5100}.audit-thread .message-bubble{width:100%;max-width:100%;scroll-margin-top:130px}.audit-readonly-note{max-width:900px;margin-top:18px;border-left:5px solid var(--blue)}.audit-readonly-note p{margin:5px 0 0;color:var(--muted)}.audit-match-navigation{position:sticky;top:88px;z-index:8;display:flex;align-items:center;gap:10px;max-width:900px;margin:0 0 16px;padding:12px 15px;border:1px solid #d5c36f;border-radius:12px;background:#fff8d8;box-shadow:var(--shadow)}.audit-match-navigation span{margin-left:auto;color:var(--muted);font-weight:700}.audit-match-navigation .btn{padding:7px 11px}.audit-subject-match{max-width:900px;border-left:5px solid #d5ad00;background:#fff8d8}.audit-search-match{border-color:#e0ca5f}.audit-search-current{animation:audit-target-pulse 1.6s ease-out;box-shadow:0 0 0 4px rgba(245,217,10,.42),var(--shadow)}.message-body mark.audit-search-term{padding:1px 2px;border-radius:3px;background:#ffe75a;color:#1e2440}@keyframes audit-target-pulse{0%,35%{background:#fff5b8}100%{background:#fff}}
@media(max-width:850px){.message-audit-filters{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.message-audit-filters{grid-template-columns:1fr}.message-audit-heading,.message-audit-footer{align-items:flex-start;flex-direction:column}.message-audit-heading>div{align-items:flex-start;flex-direction:column}.audit-match-navigation{top:78px;flex-wrap:wrap}.audit-match-navigation span{margin-left:0;margin-right:auto}}

/* Base permanente WCAG 2.2 AA: no cambia la identidad institucional; mejora
   contraste, foco, tamaño de objetivos, reflujo y preferencias del sistema. */
:root{--muted:#666c84}
html{scroll-padding-top:96px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{overflow-wrap:anywhere}
*:focus-visible{outline:3px solid #fff!important;outline-offset:2px!important;box-shadow:0 0 0 5px var(--blue)!important}
.topbar *:focus-visible,.login-brand *:focus-visible{box-shadow:0 0 0 5px #f5d90a!important}
.view-as-button:focus{outline:3px solid #fff}
.view-as-dropdown.open .view-as-dropdown-menu{display:block}
.btn,.nav-toggle,.notification-center>summary,.screen-help-close{min-width:44px;min-height:44px}
.btn:disabled,.btn[aria-disabled="true"]{cursor:not-allowed;opacity:.48;filter:grayscale(.25)}
.app-shell.focus-shell{grid-template-columns:minmax(0,1fr);min-height:calc(100vh - 36px);min-height:calc(100dvh - 36px)}
.focus-shell .content{max-width:1200px;padding-top:28px}
input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]),select,textarea{min-height:44px}
input[type="checkbox"],input[type="radio"]{width:24px!important;height:24px!important;min-width:24px;min-height:24px;margin:0;accent-color:var(--blue)}
.field-help-button{width:24px;height:24px}
.editor-toolbar button,.recipient-search-clear{min-width:44px;min-height:44px}
.table-wrap[tabindex="0"],.wide-grade-scroll[tabindex="0"],.report2-grade-table-wrap[tabindex="0"]{scrollbar-gutter:stable;scroll-padding:8px}
.content a:not(.btn):not(.course-card):not(.list-row):not(.report2-action-card):not(.notification-item){text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.18em}
.content a:not(.btn):not(.course-card):not(.list-row):not(.report2-action-card):not(.notification-item):hover{text-decoration-thickness:.14em}

@media(max-width:400px){
  .content{padding:18px 10px}
  .panel{padding:16px}
  .page-head h1{font-size:25px}
  .form-actions,.actions{align-items:stretch;flex-direction:column}
  .form-actions .btn,.actions .btn{width:100%}
  dl{grid-template-columns:1fr}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}
  .course-card:hover,.screen-help-button:hover{transform:none}
}

@media(forced-colors:active){
  .btn,.panel,.stat-card,.course-card,.badge,.alert,input,select,textarea,dialog{border:1px solid CanvasText}
  .unread-message-dot,.unread-report2-dot,.unread-art-dot,.unread-regular-certificate-dot,.notification-item i{background:CanvasText}
  *:focus-visible{outline:3px solid Highlight!important;box-shadow:none!important}
}

/* El acceso y las páginas de error usan un único título principal. */
.login-brand-primary{align-items:stretch;text-align:center}
.login-brand-primary .login-brand-content{display:grid;width:100%;justify-items:center}
.login-brand-primary .login-logo{margin-right:auto;margin-left:auto}
.login-brand-primary .login-tagline{display:block;width:min(520px,100%);margin:0 auto;font-size:clamp(16px,1.35vw,21px);font-weight:500;line-height:1.5;text-align:center;text-wrap:balance}
.tagline-settings-panel{max-width:760px}.tagline-settings-form{max-width:680px}.login-tagline-admin-preview{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:18px;max-width:760px;min-height:430px;padding:38px;border-radius:16px;background:var(--blue);color:#fff;text-align:center;box-shadow:var(--shadow)}.login-tagline-admin-preview .eyebrow{color:#fff}.login-tagline-admin-preview img{display:block;max-width:55%;height:auto;object-fit:contain;filter:drop-shadow(0 8px 18px rgba(0,0,0,.22))}.login-tagline-admin-preview p{max-width:560px;margin:0;font-size:19px;line-height:1.5;text-wrap:balance}
.login-card h1{font-size:34px;margin:5px 0}
.login-card a:not(.btn){text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.18em}

/* ART prioriza lectura rápida de teléfonos sin apartarse del diseño institucional. */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.art-information{display:grid;gap:26px;max-width:1050px}
.art-description{max-width:900px;font-size:1.05rem;line-height:1.75;color:var(--ink)}
.art-description p{margin:0 0 .8rem}
.art-phones{display:grid;gap:10px;padding:22px;border-left:6px solid var(--blue);border-radius:12px;background:#eef0ff;color:var(--blue)}
.art-phones p{display:grid;gap:3px;margin:0;font-size:clamp(1.15rem,2vw,1.45rem);line-height:1.4;overflow-wrap:anywhere}
.art-phones strong{font-size:inherit}
.art-phones strong span{font-size:.82em}
.art-phone-number{display:block;font-size:1.08em;font-weight:800;letter-spacing:.02em}
.art-institution{padding-top:5px;border-top:1px solid var(--line)}
.art-institution h2{font-size:1.15rem}
.art-claim-number{padding:18px 20px;border:2px solid var(--blue);border-radius:12px;background:#f7f8ff}
.art-claim-number h2{margin:0 0 5px;color:var(--blue)}
.art-claim-number strong{display:block;font-size:1.35rem;overflow-wrap:anywhere}
.art-personnel-search{margin-top:18px}
.art-claim-form{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:8px;min-width:310px;align-items:center}
.art-claim-form .btn{padding:9px 12px}
.art-claim-field{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}
.art-claim-field input[readonly]{background:#f1f2f6;color:#45495a;cursor:default}
.art-claim-edit-actions{display:flex;gap:6px}
.art-claim-help{position:relative}
.art-claim-help summary{display:grid;place-items:center;width:28px;height:28px;border:1px solid #c7cbe0;border-radius:50%;background:#eef0ff;color:var(--blue);font-weight:850;cursor:pointer;list-style:none}
.art-claim-help summary::-webkit-details-marker{display:none}
.art-claim-help summary:hover,.art-claim-help summary:focus-visible{border-color:var(--blue);background:var(--blue);color:#fff}
.art-claim-help p{position:absolute;right:0;z-index:12;width:min(300px,70vw);margin:7px 0 0;padding:10px 12px;border:1px solid #cbd0e8;border-radius:9px;background:#fff;color:var(--ink);font-size:12px;font-weight:600;line-height:1.45;box-shadow:var(--shadow)}
@media(max-width:700px){.art-phones{padding:17px}.art-institution dl{grid-template-columns:1fr}.art-institution dd{margin-bottom:8px}.art-claim-form{grid-template-columns:1fr;min-width:220px}.art-claim-edit-actions{flex-wrap:wrap}}

/* Constancias: selección clara, editor compacto y documento integrado. */
.certificate-issue-form{align-items:start}.certificate-student-summary{display:grid;gap:5px;align-self:stretch;padding:14px 16px;border:1px solid #cbd0e8;border-left:5px solid var(--blue);border-radius:10px;background:#f7f8ff}.certificate-student-summary strong{color:var(--blue)}.certificate-date-wording{grid-column:1/-1;margin:0;padding:10px 13px;border-radius:9px;background:#eef0ff;color:var(--blue);font-weight:700}.certificate-format-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:0;padding:9px;border:1px solid #cbd0e8;border-bottom:0;border-radius:10px 10px 0 0;background:#f5f6fb}.certificate-format-toolbar>div{display:flex;flex-wrap:wrap;gap:5px;padding-right:8px;border-right:1px solid #d9dcec}.certificate-format-toolbar>div:last-child{border-right:0}.certificate-format-toolbar button{min-height:42px;padding:7px 11px;border:1px solid #cbd0e8;border-radius:7px;background:#fff;color:var(--blue);font:inherit;font-weight:700;cursor:pointer}.certificate-format-toolbar button:hover{background:#e9ecff}.certificate-format-toolbar button:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.certificate-rich-editor{min-height:300px;padding:18px;border:1px solid #cbd0e8;border-radius:0 0 10px 10px;background:#fff;line-height:1.7}.certificate-rich-editor:focus-visible{border-color:var(--blue);outline:3px solid rgba(var(--institution-primary-rgb),.2)}.certificate-rich-editor[aria-invalid=true]{border-color:#a21d2d;box-shadow:0 0 0 3px rgba(162,29,45,.15)}.certificate-rich-editor p,.certificate-rich-editor div{margin:0 0 16px}.certificate-marker-groups{display:grid;gap:14px;margin-top:20px}.certificate-marker-groups section{padding:14px;border:1px solid var(--line);border-radius:10px;background:#fafbff}.certificate-marker-groups h3{margin:0 0 10px;color:var(--blue);font-size:15px}.certificate-marker-toolbar{display:flex;flex-wrap:wrap;gap:7px}.certificate-marker-toolbar .btn{min-height:40px;padding:7px 11px}.certificate-settings-form textarea{width:100%;min-height:260px;line-height:1.6}.certificate-viewer-panel{padding:28px}.certificate-document{position:relative;display:flex;flex-direction:column;min-height:920px;max-width:850px;margin:auto;padding:52px 64px 34px;background:#fff;color:#151a30;box-shadow:0 10px 35px rgba(18,24,68,.12)}.certificate-document-header{display:grid;grid-template-columns:90px 1fr 90px;align-items:center;color:var(--blue);text-align:center}.certificate-document-header img{width:76px;height:auto}.certificate-document-header div{display:grid;font-size:13px;line-height:1.45}.certificate-document>h2{margin:34px 0 52px;color:var(--blue);font-size:25px;text-align:center}.certificate-document-body{font-size:17px;line-height:1.75;text-align:justify}.certificate-document-body p,.certificate-document-body div{margin:0 0 22px}.certificate-document-body ul,.certificate-document-body ol{margin:0 0 22px;padding-left:28px}.certificate-document-body blockquote{margin:0 20px 22px;padding-left:14px;border-left:3px solid #cbd0e8}.certificate-signatures{display:grid;grid-template-columns:1fr 1fr;gap:55px;margin:55px 25px 0;text-align:center;color:var(--muted);font-size:12px}.certificate-signature-block{display:flex;flex-direction:column}.certificate-signature-visual{display:flex;align-items:flex-end;justify-content:center;min-height:122px}.certificate-signature-visual img{display:block;width:92px;height:auto;max-height:118px;object-fit:contain}.certificate-signature-block>span{display:block;min-height:25px;padding-top:8px;border-top:1px solid var(--blue)}.certificate-document footer{margin-top:auto;color:var(--muted);font-size:10px;text-align:center}
.certificate-level-nav{display:flex;flex-wrap:wrap;gap:9px;margin:-8px 0 18px}.certificate-request-policy{border-left:5px solid var(--blue)}.certificate-policy-form,.certificate-family-request-form{align-items:end}.certificate-policy-form .checkbox-row{min-height:46px}.certificate-pending-list{display:grid;gap:10px;margin-top:15px}.certificate-pending-list article{display:grid;gap:4px;padding:14px 16px;border:1px solid #d9dcec;border-left:5px solid #d3a300;border-radius:10px;background:#fffdf2}.certificate-pending-list article strong{color:var(--blue)}.certificate-pending-list article span{color:var(--muted);font-size:14px}.inline-form{display:inline}.inline-form .btn{white-space:nowrap}
@media(max-width:700px){.certificate-marker-toolbar{max-height:210px;overflow:auto}.certificate-viewer-panel{padding:10px;overflow:auto}.certificate-document{min-width:650px;min-height:850px;padding:42px 48px}}
@media print{body{background:#fff}.topbar,.sidebar,.page-head,.screen-help-button,.screen-help-dialog,body>footer{display:none!important}.app-shell,.content{display:block!important;max-width:none!important;margin:0!important;padding:0!important}.certificate-viewer-panel{margin:0!important;padding:0!important;border:0!important;box-shadow:none!important}.certificate-document{min-height:270mm;max-width:none;margin:0;padding:18mm 20mm;box-shadow:none}.certificate-document footer{display:block!important}}
/* En la impresión de constancias se aísla el documento completo. Los avisos
   posteriores a la emisión y cualquier control de la aplicación no ocupan
   espacio ni pueden aparecer por encima de la hoja institucional. */
@media print{
  body.certificate-print-page .skip-link,
  body.certificate-print-page .messages,
  body.certificate-print-page .content>*:not(.certificate-viewer-panel),
  body.certificate-print-page .certificate-viewer-panel>h2{display:none!important}
  body.certificate-print-page .certificate-viewer-panel,
  body.certificate-print-page .certificate-document{display:block!important}
}
.nav-icon{flex:0 0 auto;min-width:20px;text-align:center}
@media(max-width:1000px){.sidebar .nav-icon{display:inline}.sidebar .nav-label{display:none}}
@media(max-width:700px){.sidebar .nav-label{display:inline}}

/* Archivo salarial: jerarquía año/mes y estados legibles sin depender del color. */
.payslip-filter-form{grid-template-columns:minmax(16rem,2fr) repeat(3,minmax(9rem,1fr)) auto;align-items:end}
.payslip-year,.payslip-month{margin-top:.8rem;overflow:clip;border:1px solid var(--line);border-radius:.8rem;background:#fff}
.payslip-year>summary,.payslip-month>summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:3rem;padding:.75rem 1rem;cursor:pointer}
.payslip-year>summary{background:var(--blue);color:#fff}.payslip-month>summary{background:#f4f6ff;color:var(--blue)}
.payslip-year-content{padding:0 .8rem .8rem}.payslip-status,.payslip-result{display:inline-block;padding:.2rem .55rem;border:1px solid currentColor;border-radius:999px;font-weight:750}
.payslip-status.viewed,.payslip-result.uploaded{background:#eefaf2;color:#176b35}.payslip-status.unseen,.payslip-result.rejected{background:#fff2f2;color:#9d1c1c}.payslip-result.duplicate{background:#fff8db;color:#745300}
.payslip-status.status-emitido{background:#eefaf2;color:#176b35}.payslip-status.status-borrador{background:#eef0f7;color:#4e5771}.payslip-status.status-rectificativo{background:#eaf3ff;color:#174f91}.payslip-status.status-anulado{background:#fff2f2;color:#9d1c1c}.payslip-document-summary code{overflow-wrap:anywhere}
.payslip-recipient-summary{display:flex;align-items:center;gap:.7rem;margin-bottom:.8rem;padding:.72rem .9rem;border:1px solid;border-radius:.75rem}.payslip-recipient-summary.has-pending{border-color:#e2bd5c;background:#fff9e8;color:#624700}.payslip-recipient-summary.is-complete{border-color:#abd7bd;background:#eef9f3;color:#175f37}.payslip-recipient-summary-icon{display:grid;place-items:center;flex:0 0 1.8rem;width:1.8rem;height:1.8rem;border-radius:50%;color:#fff;font-size:.85rem;font-weight:900}.payslip-recipient-summary.has-pending .payslip-recipient-summary-icon{background:#745300}.payslip-recipient-summary.is-complete .payslip-recipient-summary-icon{background:#176b35}.payslip-recipient-summary>div{display:grid;gap:.05rem}.payslip-recipient-summary strong{font-size:.95rem}.payslip-recipient-summary span:last-child{font-size:.82rem}
.payslip-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,25rem),1fr));gap:.7rem;padding:.8rem}.payslip-card{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:.75rem;row-gap:.55rem;align-items:center;min-height:7.6rem;padding:.82rem;border:1px solid var(--line);border-left:4px solid #a9aec4;border-radius:.7rem;background:#fff;box-shadow:0 4px 12px rgba(var(--institution-primary-rgb),.05)}.payslip-card.is-pending{border-left-color:#c38300;background:#fffdfa}.payslip-card.is-confirmed{border-left-color:#268052}.payslip-card.is-void{border-left-color:#a51f31;background:#fffafa}.payslip-card-document{display:grid;grid-template-columns:2.35rem minmax(0,1fr);gap:.65rem;align-items:start}.payslip-card-icon{display:grid;place-items:center;width:2.35rem;height:2.75rem;border-radius:.4rem;background:#eef0ff;color:var(--blue);font-size:.62rem;font-weight:900;letter-spacing:.04em}.payslip-card-document h3{margin:0 0 .15rem;color:var(--ink);font-size:1rem}.payslip-card-document p{margin:0;color:var(--blue);font-size:.78rem;font-weight:750;overflow-wrap:anywhere}.payslip-card-document small{display:block;margin-top:.15rem;color:var(--muted);font-size:.72rem}.payslip-card-reception{display:flex;grid-row:2;grid-column:1;align-items:center;flex-wrap:wrap;gap:.35rem .55rem}.payslip-card-state{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .5rem;border:1px solid currentColor;border-radius:999px;font-size:.74rem;font-weight:800}.payslip-card-state.pending{background:#fff6d9;color:#745300}.payslip-card-state.confirmed{background:#eefaf2;color:#176b35}.payslip-card-state.void{background:#fff2f2;color:#9d1c1c}.payslip-card-state.inactive{background:#eef0f7;color:#4e5771}.payslip-card-reception small{color:var(--muted);font-size:.72rem}.payslip-card-action{grid-row:1/3;grid-column:2;align-self:center;min-height:2.6rem;padding:.55rem .8rem;white-space:nowrap}
.payslip-recipient-message{grid-column:1/-1;margin-top:.2rem;color:var(--blue);font-weight:800;white-space:pre-line}.payslip-acknowledgement-panel{max-width:none}.payslip-acknowledgement-heading{display:flex;align-items:center;gap:.55rem;margin-bottom:1rem}.payslip-acknowledgement-heading h2{margin:0}.payslip-acknowledgement-help{position:relative}.payslip-acknowledgement-help>summary{display:grid;place-items:center;width:1.45rem;height:1.45rem;border:1px solid var(--blue);border-radius:50%;color:var(--blue);font-weight:900;line-height:1;cursor:pointer;list-style:none}.payslip-acknowledgement-help>summary::-webkit-details-marker{display:none}.payslip-acknowledgement-help>summary:hover,.payslip-acknowledgement-help>summary:focus-visible,.payslip-acknowledgement-help[open]>summary{background:var(--blue);color:#fff}.payslip-acknowledgement-help>p{position:absolute;z-index:5;top:1.8rem;left:0;width:min(32rem,calc(100vw - 4rem));margin:0;padding:.75rem .9rem;border:1px solid #c6cae4;border-radius:.6rem;background:#fff;color:var(--ink);font-size:.85rem;font-weight:500;box-shadow:0 10px 28px rgba(var(--institution-primary-rgb),.2)}.payslip-confirmation-option{display:flex;grid-column:1/-1;align-items:center;gap:.65rem;font-weight:650}.payslip-confirmation-option input{flex:0 0 auto;margin:0}.payslip-confirmation-option span{min-width:0}
.payslip-upload-progress progress{width:100%;height:1rem;accent-color:var(--blue)}
.job-progress-panel progress{width:100%;height:1.15rem;accent-color:var(--blue)}.job-progress-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.job-status{font-weight:750}.job-status-completado{color:#176b35}.job-status-error,.job-status-con_errores{color:#9d1c1c}.job-status-procesando,.job-status-pendiente{color:var(--blue)}
.document-preparing progress{width:100%;height:1rem;accent-color:var(--blue)}
.payslip-upload-metrics{display:flex;flex-wrap:wrap;gap:.65rem;margin:1rem 0}.payslip-upload-metrics>span{padding:.45rem .75rem;border:1px solid var(--line);border-radius:999px}
.payslip-result.failed,.payslip-result.processing{background:#fff3cd;color:#694600}
.payslip-upload-results{max-height:34rem;margin-top:1rem;overflow:auto}
.payslip-viewer-panel{padding:1rem}.payslip-viewer-panel h2{margin:.25rem 0 1rem}.payslip-viewer-frame{display:block;width:100%;height:75vh;height:75dvh;min-height:34rem;border:1px solid var(--line);border-radius:.6rem;background:#eef0f7}
@media(max-width:720px){.payslip-filter-form{grid-template-columns:1fr}}
@media(max-width:600px){.payslip-year-content{padding:0 .45rem .45rem}.payslip-card-grid{padding:.55rem}.payslip-card{grid-template-columns:1fr;grid-template-rows:auto;gap:.65rem;min-height:0}.payslip-card-reception{grid-row:auto;grid-column:1}.payslip-card-action{grid-row:auto;grid-column:1;width:100%}.payslip-recipient-summary{align-items:flex-start}.payslip-confirmation-option{align-items:flex-start}.payslip-confirmation-option input{margin-top:.25rem}.payslip-viewer-panel{padding:.6rem}.payslip-viewer-frame{height:68vh;height:68dvh;min-height:28rem}}

/* El boletín anual conserva una primera columna cómoda y distribuye los
   períodos de forma uniforme sin ensanchar toda la aplicación. */
.report2-annual-report{max-width:1120px}.report2-annual-table-wrap{max-width:100%;overflow:auto;border:1px solid var(--blue);border-radius:8px;scrollbar-gutter:stable}.report2-annual-table{min-width:760px;border:0!important}.report2-annual-table th:first-child,.report2-annual-table td:first-child{width:42%;min-width:290px;text-align:left}.report2-annual-table th:not(:first-child),.report2-annual-table td:not(:first-child){width:auto;min-width:118px;text-align:center}.report2-annual-grade-cell{font-weight:650;color:#22284b}.report2-annual-table-wrap:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
@media(max-width:700px){.report2-annual-table{min-width:680px}.report2-annual-table th:first-child,.report2-annual-table td:first-child{min-width:245px}}
@media print{.report2-annual-table-wrap{overflow:visible;border:0}.report2-annual-table{min-width:0}.report2-annual-table th:first-child,.report2-annual-table td:first-child{min-width:0}}

/* Inicio personalizado: jerarquiza contexto, pendientes, agenda y cursos sin
   repetir la bandeja de mensajes ni las métricas técnicas del tablero previo. */
.dashboard-page .content{max-width:1520px}
.dashboard-hero{position:relative;display:flex;align-items:center;justify-content:space-between;min-height:230px;margin-bottom:22px;overflow:hidden;border-radius:24px;background:linear-gradient(135deg,var(--blue) 0%,var(--blue-2) 100%);color:#fff;box-shadow:0 18px 45px rgba(var(--institution-primary-rgb),.18)}
.dashboard-hero::after{position:absolute;inset:auto -8% -55% 35%;height:230px;border-radius:50%;background:rgba(255,255,255,.06);content:""}
.dashboard-hero-copy{position:relative;z-index:2;padding:38px 42px}.dashboard-kicker{display:block;margin-bottom:9px;color:#ffed70;font-size:12px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.dashboard-hero h1{margin:0 0 8px;font-size:clamp(30px,3.2vw,48px);line-height:1.08}.dashboard-hero p{margin:0;color:rgba(255,255,255,.8);font-size:16px}.dashboard-hero>img{position:absolute;z-index:1;right:30px;width:190px;height:auto;opacity:.19;filter:saturate(.75)}
.dashboard-account{display:inline-block;margin-top:8px;color:rgba(255,255,255,.72);font-size:12px;font-weight:750}
.dashboard-hero-metrics{display:flex;gap:12px;margin-top:25px}.dashboard-hero-metrics span{display:flex;align-items:baseline;gap:6px;padding:8px 13px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(255,255,255,.09);font-size:12px}.dashboard-hero-metrics strong{font-size:18px}
.dashboard-announcement,.dashboard-announcement-empty{display:flex;align-items:center;gap:16px;margin-bottom:22px;padding:18px 20px;border:1px solid #e3c91a;border-radius:16px;background:#fffceb}.dashboard-announcement-icon{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border-radius:50%;background:#f5d90a;color:var(--blue);font-size:20px;font-weight:900}.dashboard-announcement>div{flex:1}.dashboard-announcement h2{margin:1px 0 4px;font-size:18px}.dashboard-announcement p{margin:0;color:#4f4a29}.dashboard-announcement small{display:block;margin-top:5px;color:#716a38}.dashboard-announcement-empty{justify-content:space-between;color:var(--muted)}
.dashboard-section{margin-bottom:24px;padding:22px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 10px 30px rgba(var(--institution-primary-rgb),.06)}.dashboard-section-head{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:16px}.dashboard-section-head h2{margin:1px 0 0;font-size:21px}.dashboard-section-head>a{font-weight:750}.dashboard-section-count{padding:5px 10px;border-radius:999px;background:#eef0ff;color:var(--blue);font-size:12px;font-weight:800}
.dashboard-task-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.dashboard-task{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:11px;align-items:center;min-height:82px;padding:14px;border:1px solid var(--line);border-left:4px solid #a9aec4;border-radius:12px;color:var(--ink);transition:transform .16s ease,border-color .16s ease}.dashboard-task:hover{transform:translateY(-2px);border-color:#b7bce0}.dashboard-task>span:first-child{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#eef0ff;color:var(--blue);font-weight:900}.dashboard-task>span:nth-child(2){display:grid;gap:2px}.dashboard-task small{color:var(--muted);line-height:1.35}.dashboard-task>b{color:var(--blue);font-size:18px}.dashboard-task-warning{border-left-color:#d39100}.dashboard-task-info{border-left-color:#3977c5}.dashboard-all-clear{display:flex;align-items:center;gap:13px;padding:17px;border-radius:12px;background:#edf8f3;color:#176744}.dashboard-all-clear>span{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#d7efe3;font-size:20px;font-weight:900}.dashboard-all-clear p{margin:2px 0 0;color:#4a745f}
.dashboard-action-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px}.dashboard-action-card{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto;gap:1px 11px;align-items:center;min-height:82px;padding:13px;border:1px solid var(--line);border-radius:13px;color:var(--ink);transition:background .16s ease,transform .16s ease}.dashboard-action-card:hover{transform:translateY(-2px);background:#f7f8ff}.dashboard-action-card>span{display:grid;grid-row:1/3;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--blue);color:#fff;font-size:18px}.dashboard-action-card small{overflow:hidden;color:var(--muted);font-size:11px;line-height:1.25;text-overflow:ellipsis}
.dashboard-main-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,.7fr);gap:22px}.dashboard-main-grid>.dashboard-section:only-child{grid-column:1/-1}.dashboard-agenda-grid{display:grid;grid-template-columns:repeat(5,minmax(125px,1fr));overflow:auto;border:1px solid var(--line);border-radius:12px}.dashboard-agenda-day{min-height:190px;border-right:1px solid var(--line)}.dashboard-agenda-day:last-child{border-right:0}.dashboard-agenda-day>header{display:grid;grid-template-columns:1fr auto;gap:1px 8px;padding:10px 11px;border-bottom:1px solid var(--line);background:#f7f8fc}.dashboard-agenda-day>header strong{text-transform:capitalize}.dashboard-agenda-day>header span{font-weight:800}.dashboard-agenda-day>header small{grid-column:1/-1;color:var(--blue);font-weight:800}.dashboard-agenda-day.is-today>header{background:#e8ebff;color:var(--blue)}.dashboard-agenda-day>div{display:grid;gap:7px;padding:8px}.dashboard-event{display:grid;gap:1px;padding:8px;border-left:3px solid #6774bf;border-radius:7px;background:#f4f5fc;color:var(--ink);font-size:12px}.dashboard-event small{color:var(--muted);font-size:10px}.dashboard-no-event{padding:12px 3px;color:#9296a8;font-size:11px;text-align:center}.dashboard-event.event-type-examen{border-left-color:#b5283b;background:#fff1f3}.dashboard-event.event-type-reunion{border-left-color:#3278bf;background:#eef6ff}.dashboard-event.event-type-acto{border-left-color:#a37600;background:#fff9df}.dashboard-event.event-type-actividad{border-left-color:#1b7b56;background:#eefaf5}
.dashboard-schedule-list{display:grid}.dashboard-schedule-list>a{display:grid;grid-template-columns:52px 1fr;gap:10px;padding:12px 2px;border-bottom:1px solid var(--line);color:var(--ink)}.dashboard-schedule-list>a:last-child{border-bottom:0}.dashboard-schedule-list time{color:var(--blue);font-weight:850}.dashboard-schedule-list span{display:grid}.dashboard-schedule-list small{color:var(--muted)}
.dashboard-course-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.dashboard-course-card{display:flex;flex-direction:column;min-height:205px;padding:18px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#fff,#fafbff)}.dashboard-course-card>div{display:flex;align-items:center;justify-content:space-between;gap:8px}.dashboard-course-level,.dashboard-attendance-state{font-size:11px;font-weight:800}.dashboard-course-level{color:var(--blue);text-transform:uppercase}.dashboard-attendance-state{color:#9a5900}.dashboard-attendance-state.complete{color:#19714f}.dashboard-course-card h3{margin:24px 0 5px;font-size:19px}.dashboard-course-card p{margin:0 0 4px;color:var(--muted)}.dashboard-course-card>small{margin-bottom:17px;color:var(--muted)}.dashboard-course-card>.btn{align-self:flex-start;margin-top:auto}.dashboard-empty-courses{grid-column:1/-1;padding:26px;color:var(--muted);text-align:center}.dashboard-empty-courses p{margin:4px 0 0}
.dashboard-announcement-dialog{width:min(720px,calc(100vw - 28px));padding:0;border:0;border-radius:18px;box-shadow:0 24px 75px rgba(15,21,70,.35)}.dashboard-announcement-dialog::backdrop{background:rgba(14,19,55,.58)}.dashboard-announcement-form{padding:24px}.dashboard-announcement-form>header{display:flex;grid-column:1/-1;justify-content:space-between;gap:20px;margin-bottom:4px}.dashboard-announcement-form>header h2{margin:2px 0}.dashboard-announcement-form>header p{margin:0;color:var(--muted)}.dashboard-announcement-body{grid-column:1/-1}.dashboard-announcement-form .field>textarea{min-height:115px}.dashboard-announcement-form .field>input[type=checkbox]{justify-self:start}
@media(max-width:1150px){.dashboard-task-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-action-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-main-grid{grid-template-columns:1fr}.dashboard-course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.dashboard-page .content{padding-top:18px}.dashboard-hero{min-height:220px;border-radius:18px}.dashboard-hero-copy{padding:30px 24px}.dashboard-hero>img{right:-38px;width:180px}.dashboard-hero p{max-width:78%}.dashboard-hero-metrics{flex-wrap:wrap}.dashboard-section{padding:17px}.dashboard-task-grid,.dashboard-action-grid,.dashboard-course-grid{grid-template-columns:1fr}.dashboard-agenda-grid{grid-template-columns:repeat(5,minmax(145px,1fr))}.dashboard-announcement{align-items:flex-start;flex-wrap:wrap}.dashboard-announcement>.btn{margin-left:58px}.dashboard-announcement-form{grid-template-columns:1fr}.dashboard-announcement-body,.dashboard-announcement-form>header{grid-column:auto}}
@media(max-width:700px){.import-history-table{min-width:900px}}
@media(prefers-reduced-motion:reduce){.dashboard-task,.dashboard-action-card{transition:none}}
