*{box-sizing:border-box}body{margin:0;background:#f4f3f5;color:#26232b;font:15px system-ui,-apple-system,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.6}.sidebar{position:fixed;inset:0 auto 0 0;width:252px;background:#241e25;color:#fff;padding:28px 18px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;font-weight:750;letter-spacing:2px;padding:0 10px}.brand small{display:block;font-weight:400;font-size:12px;letter-spacing:0;color:#c7bbc9;margin-top:5px}.crest{display:grid;place-items:center;width:42px;height:48px;border:1px solid #98667a;border-radius:8px 8px 18px 18px;font-size:23px;background:#69253b}.nav-caption{font-size:10px;color:#a99aaa;letter-spacing:2px;margin:40px 12px 12px}nav{display:grid;gap:6px}nav button{border:0;background:transparent;color:#c8c1cb;text-align:left;padding:13px 12px;border-radius:9px;font-size:13px}nav button:hover{background:#352c36}nav button.active{background:#69253b;color:white}.sidebar-bottom{margin-top:auto;padding:20px 12px 0;font-size:12px;color:#c8bdcb}.sidebar-bottom small{display:block;margin-top:8px;color:#998d9b}.status-dot{display:inline-block;width:7px;height:7px;background:#92bba8;border-radius:50%;margin-right:7px}.main{margin-left:252px;padding:28px 38px}header{display:flex;align-items:center;gap:16px;margin-bottom:24px}header>div{flex:1}header small{font-size:12px;color:#756978}h1{font-size:26px;font-weight:650;margin:7px 0}h2{font-size:18px;margin:0 0 15px}h3{font-size:15px;margin:0 0 12px}.avatar{background:#e9e0e4;color:#69253b;border-radius:50%;padding:13px;font-size:12px;font-weight:700}.demo-banner{background:#fff5df;color:#6b511b;border:1px solid #edd9ab;padding:12px 16px;border-radius:8px;font-size:12px;line-height:1.6;margin-bottom:24px}.demo-banner strong{margin-right:10px;font-size:10px;letter-spacing:.8px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}.stat,.card{background:white;border:1px solid #e7e2e8;border-radius:12px;padding:22px}.stat small{font-size:12px;color:#756978}.stat b{display:block;font-size:32px;font-weight:600;margin:10px 0 4px}.stat p{font-size:11px;color:#8b7e8e;margin:0}.split{display:grid;grid-template-columns:1.5fr 1fr;gap:20px}.card p{color:#786d7a;line-height:1.65;font-size:13px}.toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:14px;margin:0 0 18px}.toolbar label{flex:1;min-width:150px}label{display:grid;gap:6px;font-size:12px;color:#695f6c}input,select,textarea{border:1px solid #dcd4df;border-radius:7px;background:white;padding:10px 12px;color:#29232d}textarea{min-height:86px;resize:vertical}.primary{border:0;border-radius:7px;background:#69253b;color:white;padding:11px 17px}.secondary{border:1px solid #ddd3df;background:white;border-radius:7px;padding:10px 16px;color:#69253b}.legend{display:flex;gap:18px;flex-wrap:wrap;color:#746876;font-size:12px;margin:12px 0}.table-wrap{overflow:auto;background:white;border:1px solid #e7e2e8;border-radius:11px}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;font-size:11px;font-weight:600;color:#86768a;padding:14px 18px;background:#faf8fa;border-bottom:1px solid #e7e2e8}td{padding:14px 18px;border-bottom:1px solid #f0ebf1}tr:last-child td{border-bottom:0}.student small{display:block;color:#9a8d9d;font-size:10px;margin-top:3px}.student button{padding:0;border:0;background:transparent;color:#69253b;font-weight:600;text-align:left}.codes{display:flex;gap:5px}.code{min-width:40px;padding:8px;border:1px solid #e3dce5;background:white;border-radius:6px;color:#716577}.code.selected[data-code=P]{background:#edf7f1;color:#287447;border-color:#81b998}.code.selected[data-code=A]{background:#fff0f0;color:#a93333;border-color:#d49191}.code.selected[data-code=AJ]{background:#edf2ff;color:#405d9f;border-color:#9aadd5}.code.selected[data-code=PT]{background:#fff7e5;color:#8b651b;border-color:#d3b879}.chip{display:inline-block;padding:5px 9px;border-radius:6px;background:#f2edf5;color:#75647f;font-size:11px}.muted{color:#8b7d8f;font-size:12px}.notice{border-left:3px solid #b18845;background:#fffaf0;padding:12px 16px;font-size:12px;line-height:1.7;color:#7e6030;margin:15px 0}.row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid #f0ebf1}.row:last-child{border:0}.row small{display:block;margin-top:5px;color:#948698}.link{border:0;background:transparent;color:#69253b;font-size:12px;font-weight:650}.section-head{display:flex;justify-content:space-between;align-items:center;margin:24px 0 15px}.form-grid{display:grid;gap:16px}.empty{text-align:center;color:#8c7f90;padding:35px}.check-demo{font-size:18px;padding:8px 12px;border-radius:5px;border:1px solid #c4b6c8;display:inline-block}.audit{font-size:11px;color:#8a7c8e}.month td,.month th{padding:10px;text-align:center;white-space:nowrap}.month td:first-child,.month th:first-child{text-align:left;position:sticky;left:0;background:white}.month td.P{color:#287447}.month td.A{color:#b03d3d}.month td.AJ{color:#486bb1}.month td.PT{color:#93691e}footer{font-size:11px;color:#a196a3;margin-top:28px}#toast{position:fixed;bottom:25px;right:25px;z-index:10;background:#29212c;color:white;padding:14px 20px;border-radius:9px;box-shadow:0 8px 30px #0002;display:none;max-width:360px}#instalar{border:1px solid #d3c3ce;background:white;padding:9px;border-radius:7px;color:#69253b}@media(max-width:1050px){.main{padding:24px}.stats{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}}@media(max-width:760px){.sidebar{position:static;width:auto;padding:18px}.brand{padding:0}.nav-caption,.sidebar-bottom{display:none}nav{display:flex;overflow:auto;margin-top:18px;gap:5px}nav button{white-space:nowrap;padding:10px;font-size:11px}.main{margin:0;padding:18px}h1{font-size:22px}.stats{gap:10px}.stat{padding:16px}.stat b{font-size:27px}.avatar{display:none}td,th{padding:12px}.codes{gap:3px}.code{min-width:34px;padding:8px 5px}.demo-banner{font-size:11px}.toolbar{gap:10px}.card{padding:18px}}


.panel-toolbar{display:flex;align-items:end;gap:18px;flex-wrap:wrap;margin-bottom:18px}.panel-toolbar>div{flex:1;min-width:240px}.panel-toolbar h2{margin:0}.panel-toolbar label{min-width:160px}.turn-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#eee7eb;border:1px solid #ded0d9;padding:18px 20px;border-radius:12px}.turn-summary strong{display:block;color:#69253b;font-size:17px}.turn-summary span{display:block;margin-top:6px;color:#7a6574;font-size:12px}.metric{text-align:left;transition:border-color .15s,box-shadow .15s}.metric:hover{border-color:#98697d;box-shadow:0 3px 15px #69253b12}.metric:focus-visible{outline:3px solid #b6879b;outline-offset:3px}.metric p span{float:right;color:#69253b;font-size:14px}.cycle-heading{margin-top:26px}.cycle-heading h2{margin-bottom:4px}@media(max-width:760px){.panel-toolbar{gap:12px}.panel-toolbar label{flex:1;min-width:130px}.turn-summary{align-items:start;flex-direction:column}.turn-summary button{width:100%}.cycle-heading{gap:12px}}

/* Visual v0.3: hierarchy, interactive cards, drawer and mobile navigation. */
button,a,input,select,textarea{outline-offset:3px}
button:focus-visible,a:focus-visible{outline:3px solid #a9728a}
.profile-meta{text-align:right;font-size:12px}.profile-meta strong{display:block;color:#5e4151;font-weight:600}.profile-meta small{display:block;margin-top:6px;font-size:10px;color:#7c6c78}
.turn-summary{background:linear-gradient(120deg,#69253b,#864760);border:0;box-shadow:0 10px 28px #69253b15;padding:22px 24px}
.turn-summary strong{color:white;font-size:20px}.turn-summary span{color:#f2dce7}.turn-summary .secondary{background:#ffffff14;border-color:#ffffff50;color:white}
.load-progress{background:white;border:1px solid #e7e2e8;border-radius:12px;padding:20px 24px;margin-top:16px}.load-progress>div{display:flex;align-items:center;gap:12px}.load-progress>div>div{flex:1}.load-progress strong{font-size:13px}.load-progress small{display:block;color:#7b6d7b;margin-top:5px;font-size:11px}.load-progress b{font-size:23px;color:#69253b}.progress-icon{display:grid;place-items:center;background:#f2e7ed;color:#69253b;border-radius:10px;width:38px;height:38px}
progress{display:block;width:100%;height:6px;border:0;background:#efeaf0;border-radius:6px;overflow:hidden;appearance:none;margin:15px 0 10px}progress::-webkit-progress-bar{background:#efeaf0}progress::-webkit-progress-value{background:#86526b;border-radius:6px}progress::-moz-progress-bar{background:#86526b;border-radius:6px}
.load-progress .link{padding:4px 0;font-size:11px}.metric{position:relative;overflow:hidden;min-height:150px}.metric:before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:#a9899d}.metric.presentes:before{background:#5b9d7b}.metric.ausentes:before{background:#c77878}.metric.pendientes:before{background:#c9a559}.metric.presentes b{color:#287447}.metric.ausentes b{color:#ad4141}.metric.pendientes b{color:#8e681e}.metric small{font-weight:500}.metric p{color:#726478}.metric b{letter-spacing:-1px}.metric:hover{transform:translateY(-2px)}
.course-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.course-card{background:white;border:1px solid #e7e2e8;border-radius:13px;padding:20px;transition:box-shadow .18s,border-color .18s}.course-card:hover{box-shadow:0 8px 24px #3720320a;border-color:#c8adbe}.course-top{display:flex;align-items:center;gap:9px}.course-icon{background:#f5edf2;border-radius:9px;padding:8px 10px;color:#69253b;font-size:17px}.course-top .chip{font-size:10px}.course-state{margin-left:auto;font-size:10px;padding:5px 7px;border-radius:5px}.course-state.pending{color:#876119;background:#fff6df}.course-state.complete{color:#2c7450;background:#edf7f0}.course-card h3{font-size:21px;font-weight:650;margin:18px 0 5px}.course-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:20px 0}.course-numbers b{display:block;font-size:24px;font-weight:600}.course-numbers small{display:block;font-size:10px;color:#7e6e80;margin-top:4px}.course-numbers>div:nth-child(1) b{color:#287447}.course-numbers>div:nth-child(2) b{color:#ad4141}.course-numbers>div:nth-child(3) b{color:#8e681e}.course-card .primary{margin-top:10px;width:100%;display:flex;justify-content:space-between;background:#f5eef2;color:#69253b;font-weight:600;font-size:12px}.course-card .primary:hover{background:#69253b;color:white}.followup-card{margin-top:24px}.followup-card .section-head{margin-top:0}.followup-card .section-head h2{margin-bottom:8px}.followup-card .section-head p{font-size:11px;margin:0;max-width:540px}.student-short{display:flex;gap:12px;align-items:center}.student-icon,.large-student-icon{display:grid;place-items:center;background:#f1e9ef;color:#85546d;border-radius:50%;font-size:12px;font-weight:600;width:38px;height:38px;flex-shrink:0}
.calendar-cell{border:0;background:transparent;color:inherit;width:38px;height:34px;border-radius:6px;font-weight:600;font-size:12px}.calendar-cell:hover{background:#eae0e8}.calendar-cell.today{outline:1px solid #b794a6;outline-offset:-1px}.month td{padding:6px}.month td.AJ{background:#f3f6ff}.month td.PT{background:#fff9ee}
.mobile-nav{display:none}.drawer-open{overflow:hidden}.drawer-overlay{position:fixed;inset:0;background:#25152755;z-index:40;backdrop-filter:blur(2px)}.student-drawer{position:fixed;top:0;right:0;bottom:0;width:min(540px,100%);z-index:41;background:#fbf9fc;display:flex;flex-direction:column;box-shadow:-15px 0 60px #21172420;animation:drawer-in .2s ease-out}.drawer-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:24px;background:white;border-bottom:1px solid #e5dce7}.drawer-header small{font-size:9px;letter-spacing:1.5px;color:#8b7487}.drawer-header h2{margin:7px 0 0;font-size:19px;line-height:1.4}.icon-button{border:1px solid #e4dce6;border-radius:8px;background:white;padding:10px 12px;color:#78667d}.student-drawer[hidden],.drawer-overlay[hidden]{display:none}#drawerContenido{padding:24px;overflow-y:auto;flex:1}#drawerContenido>section{margin-top:26px;border-top:1px solid #e6dfe8;padding-top:20px}.drawer-student{display:flex;gap:14px;align-items:center}.large-student-icon{width:56px;height:56px;font-size:18px}.drawer-student strong{font-size:14px}.drawer-student small{display:block;margin:5px 0 8px;color:#806f82;font-size:11px}.drawer-student .chip{font-size:10px}.drawer-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:22px 0}.drawer-stats>div{background:white;border:1px solid #e7e1e9;border-radius:8px;padding:12px 9px}.drawer-stats b{display:block;font-size:23px;font-weight:600}.drawer-stats small{font-size:9px;color:#7c6a7e;display:block;margin-top:5px}.drawer-actions{display:flex;gap:10px}.drawer-actions button{flex:1;font-size:11px;padding:12px}.attendance-days{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:16px}.day{border:1px solid #e4dbe8;border-radius:8px;background:white;padding:12px;color:#796b7d}.day small{display:block;font-size:9px;margin-bottom:7px}.day strong{font-size:15px}.day.P{background:#eff8f2;color:#337853}.day.A{background:#fff0f1;color:#ab454e}.day.AJ{background:#f0f3ff;color:#49649c}.day.PT{background:#fff8e9;color:#947127}.day:hover{border-color:#9a6d85;box-shadow:0 3px 10px #69253b0c}.drawer-entry{padding:12px 0;border-bottom:1px solid #e8e0eb}.drawer-entry strong{display:block;font-size:12px;font-weight:600}.drawer-entry small{display:block;font-size:10px;color:#8b778e;margin-top:5px}.drawer-entry p{font-size:12px;line-height:1.6;color:#706073}.record-card{padding:20px;background:white;border:1px solid #e7dfe9;border-radius:10px;margin-top:20px}.record-card p{font-size:12px;color:#806c83;line-height:1.7}.drawer-codes{margin:20px 0}.drawer-codes .code{flex:1;padding:14px}.more-menu{display:grid;gap:12px}.more-menu button{background:white;border:1px solid #e0d7e3;border-radius:9px;padding:18px;color:#69253b;text-align:left}.muted,.audit{color:#756678}.stat small{color:#756579}
@keyframes drawer-in{from{transform:translateX(24px);opacity:.5}to{transform:translateX(0);opacity:1}}
@media(max-width:1100px){.profile-meta{display:none}}
@media(max-width:760px){.sidebar nav{display:none}.sidebar{padding:15px 18px}.main{padding-bottom:95px}.mobile-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;background:#fffc;backdrop-filter:blur(12px);border-top:1px solid #e1d6e3;padding:8px 6px calc(8px + env(safe-area-inset-bottom));z-index:30;gap:4px}.mobile-nav button{border:0;background:transparent;color:#8e7e92;border-radius:8px;padding:7px 0;font-size:9px}.mobile-nav button span{display:block;font-size:19px;margin-bottom:4px}.mobile-nav button.active{background:#f2e6ed;color:#69253b;font-weight:600}.course-grid{grid-template-columns:1fr}.turn-summary{padding:19px}.load-progress{padding:18px}.load-progress b{font-size:20px}.metric{min-height:130px}.followup-card .section-head{align-items:start;flex-direction:column;gap:12px}.followup-card .secondary{width:100%}.drawer-header{padding:20px}#drawerContenido{padding:20px}.drawer-stats{grid-template-columns:repeat(2,1fr)}.attendance-days{grid-template-columns:repeat(4,1fr)}.drawer-actions{flex-direction:column}#toast{left:18px;right:18px;bottom:95px;max-width:none;font-size:12px}.student-short strong{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}


/* Identidad institucional: logo con transparencia, texto completo y disposición adaptable. */
.school-brand{display:flex;flex-direction:column;gap:13px;align-items:center;text-align:center;padding:0;letter-spacing:0}.school-brand picture{display:block;line-height:0}.school-logo{display:block;width:140px;height:140px;object-fit:contain;filter:drop-shadow(0 3px 9px #0002)}.school-name{max-width:212px}.school-name>span{display:block;color:#e8dfe7;font-size:13px;font-weight:500;letter-spacing:.2px}.school-name strong{display:block;font-size:17px;font-weight:650;line-height:1.35;color:white;margin-top:4px}.school-name small{color:#c8b9c6;font-size:11px;font-weight:400;margin-top:9px;letter-spacing:.5px}.school-brand~.nav-caption{margin-top:28px}.sidebar{overflow-y:auto}.sidebar-bottom{padding-top:24px;min-height:78px;flex-shrink:0}@media(max-width:760px){.school-brand{flex-direction:row;text-align:left;align-items:center;gap:13px}.school-logo{width:64px;height:64px}.school-name{max-width:none}.school-name>span{font-size:11px}.school-name strong{font-size:15px;line-height:1.2;margin-top:3px}.school-name small{font-size:10px;margin-top:5px}.sidebar{padding:12px 18px;overflow:visible}.school-brand~.nav-caption{display:none}}

/* Instalación accesible desde la cabecera y el menú móvil. */
#instalar{flex-shrink:0;font-size:12px}.install-brand{display:flex;align-items:center;gap:15px}.install-brand img{object-fit:contain;flex-shrink:0}.install-brand strong,.install-brand span,.install-brand small{display:block}.install-brand strong{font-size:12px;color:#796775}.install-brand span{font-size:16px;color:#69253b;font-weight:650;margin:4px 0}.install-brand small{font-size:10px;color:#796775}.install-status{margin:24px 0 16px;padding:16px;border:1px solid #ded0da;border-radius:10px;background:#f4ebf0}.install-status strong{font-size:14px;color:#69253b}.install-status p{font-size:12px;line-height:1.7;margin-bottom:0}.install-action{width:100%}.install-url{display:block;color:#69253b;font-size:12px;overflow-wrap:anywhere;padding:10px 0}.install-guide{margin-top:12px;background:white;border:1px solid #e4dbe6;border-radius:9px;padding:14px}.install-guide summary{cursor:pointer;font-size:13px;font-weight:600}.install-guide ol{padding-left:20px;font-size:12px;color:#756678;line-height:1.8}.install-guide li+li{margin-top:8px}@media(max-width:760px){header{flex-wrap:wrap}header>div:first-child{min-width:180px}#instalar{padding:10px;font-size:11px}}

.calendar-card{margin-top:24px}.month th small{display:block;margin-top:4px;font-size:9px}.month .no-lectivo{background:#eeebf0;color:#726576}.month .feriado{background:#fff4da;color:#806122}.calendar-cell:disabled{opacity:1;color:inherit;cursor:default;font-size:9px}.calendar-notice strong{font-size:14px}
