:root{--primary:#0078d7;--primary-hover:#005a9e;--bg-gradient:linear-gradient(135deg, #e0f2fe 0%, #bae6fd 50%, #7dd3fc 100%);--glass-bg:#ffffffa6;--glass-border:#fffc;--glass-shadow:0 8px 32px 0 #1f268726;--glass-highlight:inset 0 1px 0 #ffffffe6, inset 0 0 20px #ffffff80;--text-main:#1e293b;--text-muted:#475569;--success:#059669;--danger:#dc2626}@keyframes toastIn{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes toastOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100%)}}.toast-in{animation:.4s cubic-bezier(.16,1,.3,1) forwards toastIn}.toast-out{animation:.4s cubic-bezier(.7,0,.84,0) forwards toastOut}@keyframes shake{0%{transform:translate(0)}25%{transform:translate(-5px)}50%{transform:translate(5px)}75%{transform:translate(-5px)}to{transform:translate(0)}}.btn-shake{animation:.4s cubic-bezier(.36,.07,.19,.97) both shake}*{box-sizing:border-box;margin:0;padding:0;font-family:Inter,system-ui,-apple-system,sans-serif}body{background:var(--bg-gradient);color:var(--text-main);min-height:100vh;position:relative;overflow-x:hidden}.bg-slide{z-index:-1;filter:blur(10px)brightness(.4);opacity:0;pointer-events:none;background-position:50%;background-size:cover;width:100%;height:100%;animation:30s linear infinite bgFade;position:fixed;top:0;left:0;transform:scale(1.1)}@keyframes bgFade{0%{opacity:0}3%{opacity:1}33%{opacity:1}36%{opacity:0}to{opacity:0}}.glass-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(20px)saturate(150%);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);box-shadow:var(--glass-shadow), var(--glass-highlight);border-radius:1rem;padding:2rem}.btn{cursor:pointer;border:none;border-radius:.5rem;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);transform:translateY(-1px)}.input-group{margin-bottom:1.5rem}.input-group label{color:var(--text-muted);margin-bottom:.5rem;font-size:.875rem;display:block}.input-field{width:100%;color:var(--text-main);background:#fff;border:1px solid #000;border-radius:.5rem;padding:.75rem;transition:all .2s;box-shadow:inset 0 1px 3px #0000000d}.input-field:focus{border-color:var(--primary);background:#fffffff2;outline:none;box-shadow:0 0 0 3px #0078d733}.input-field:disabled,.btn:disabled,.icon-btn:disabled{opacity:.55;cursor:not-allowed}.badge{text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;border-radius:999px;align-items:center;gap:.3rem;padding:.2rem .6rem;font-size:.65rem;font-weight:800;display:inline-flex;box-shadow:0 2px 4px #0000001a}.badge-admin{color:#fff;background:#ef4444;border:1px solid #dc2626}.badge-preceptor{color:#fff;background:#6366f1;border:1px solid #4f46e5}.badge-preceptor_taller{color:#fff;background:#10b981;border:1px solid #059669}.badge-preceptor_ef{color:#fff;background:#f59e0b;border:1px solid #d97706}.badge-profesor{color:#fff;background:#94a3b8;border:1px solid #64748b}.badge-secretaria_de_alumnos{color:#fff;background:#ec4899;border:1px solid #db2777}.badge-jefe_de_auxiliares{color:#fff;background:#8b5cf6;border:1px solid #7c3aed}.badge-director{color:#fff;background:#f43f5e;border:1px solid #e11d48}.badge-vicedirector{color:#fff;background:#fb7185;border:1px solid #f43f5e}.table-container{border:1px solid var(--glass-border);color:#000;background:#fff;border-radius:.5rem;overflow-x:auto}.table-container th{color:#fff;background:#0078d7;border-color:#fff3}.table-container td{border-color:#0000001a}.list-item{border-bottom:1px solid var(--glass-border);border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:.5rem;padding:1rem;display:flex}.list-item-actions{gap:.5rem;display:flex}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--glass-border);padding:1rem}th{white-space:nowrap;background:#00000008;font-weight:600}.compact-panel{padding:1.1rem 1.1rem .9rem}.panel-toolbar{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.6rem;display:flex}.panel-toolbar h1{color:var(--text-main);margin:0;font-size:1.2rem;font-weight:800}.panel-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.panel-filters{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.6rem;display:flex}.filter-item{align-items:center;gap:.55rem;display:flex}.compact-select{width:auto;min-width:220px;padding:.55rem .75rem}.panel-filters .label{white-space:nowrap;font-size:.76rem}.panel-stats{flex-wrap:wrap;gap:1rem;margin-left:auto;font-size:.82rem;display:flex}.panel-stat{align-items:center;gap:.45rem;display:inline-flex}.tab-nav{flex-wrap:wrap;gap:.6rem;margin-bottom:.6rem;display:flex}.tab-btn{border:1px solid var(--glass-border);color:var(--text-main);cursor:pointer;background:#fff6;border-radius:999px;padding:.55rem .9rem;font-weight:500;transition:all .2s;box-shadow:0 2px 5px #0000000d}.tab-btn:hover{background:#fffc}.tab-btn.active{background:var(--primary);color:#fff;border-color:#0000;box-shadow:0 4px 10px #0078d74d}.preview-inline{min-width:0}.compact-inline-input{padding:.65rem .75rem}.page-section{gap:.7rem;display:grid}.section-title{align-items:center;gap:.5rem;margin-bottom:.4rem;display:flex}.section-title h2{font-size:.98rem}.stack-form{gap:.65rem;display:grid}.helper-text{color:var(--text-muted);margin-bottom:.7rem;font-size:.82rem}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#000000b3;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}.modal-content{-webkit-backdrop-filter:blur(25px)saturate(200%);backdrop-filter:blur(25px)saturate(200%);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow), var(--glass-highlight);color:var(--text-main);background:#ffffffd9}@media (width<=900px){.tab-nav{display:none!important}.panel-toolbar{flex-direction:row;align-items:center;gap:.5rem;padding:.4rem 0}.panel-toolbar .logo-section{flex:1;order:2;gap:.5rem!important}.panel-toolbar img{height:30px}.panel-toolbar h1{white-space:nowrap;letter-spacing:-.02em;text-transform:uppercase;max-width:none;font-size:.65rem;overflow:visible}.panel-toolbar h2,.panel-toolbar .welcome-section{display:none}.panel-actions{order:1;gap:.4rem}.btn-hamburger-mobile{color:#ff8080!important;background:#ef444433!important;border:1px solid #ef44444d!important}.panel-actions .btn{padding:.4rem .6rem;font-size:.75rem}.panel-filters{grid-template-columns:1fr 1fr;gap:.4rem;margin-top:.5rem;display:grid}.filter-item{border:1px solid var(--glass-border);background:#fff6;border-radius:6px;align-items:center;gap:4px;padding:4px 8px;display:flex}.filter-item label{white-space:nowrap;color:var(--text-muted);margin:0;font-size:.7rem}.compact-select{background:0 0;border:none;width:100%;min-width:0;padding:2px 4px;font-size:.75rem}.panel-stats{background:0 0;border-radius:0;grid-area:2/2;justify-content:flex-end;gap:.4rem;margin:0;padding:0;font-size:.65rem}.panel-stat{gap:.2rem}.section-title h2{white-space:nowrap;font-size:.82rem!important}}.mobile-menu-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:2000;opacity:0;visibility:hidden;background:#0009;width:100%;height:100%;transition:all .3s;position:fixed;top:0;left:0}.mobile-menu-overlay.open{opacity:1;visibility:visible}.mobile-menu-drawer{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-left:1px solid var(--glass-border);z-index:2001;background:#ffffffe6;flex-direction:column;width:280px;height:100%;padding:1.5rem;transition:right .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;right:-280px;box-shadow:-10px 0 30px #0000001a}.mobile-menu-overlay.open .mobile-menu-drawer{right:0}.menu-header{border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;display:flex}.menu-nav{flex-direction:column;flex:1;gap:.5rem;display:flex;overflow-y:auto}.menu-item{border:1px solid var(--glass-border);color:var(--text-main);cursor:pointer;background:#fff6;border-radius:12px;align-items:center;gap:12px;padding:1rem;font-weight:500;text-decoration:none;transition:all .2s;display:flex;position:relative}.menu-item:active{background:#fff9;transform:scale(.98)}.menu-item.active{background:var(--primary);color:#fff;border-color:#0000;box-shadow:0 4px 12px #0078d74d}.menu-footer{border-top:1px solid #ffffff0d;margin-top:auto;padding-top:1.5rem}@media (width<=600px){.compact-panel{padding:.75rem}.panel-filters{flex-direction:column;align-items:stretch}.compact-select{width:100%;min-width:0}.table-container{-webkit-overflow-scrolling:touch;border-left:none;border-right:none;border-radius:0;margin:0 -.75rem}}@media print{.bg-slide,.glass-overlay,.panel-toolbar,.btn,.icon-btn,.tab-nav,.panel-filters,.section-title,.panel-actions,.helper-text,.panel-status,header{display:none!important}body,.container{color:#000!important;background:#fff!important;margin:0!important;padding:0!important}.glass-card{-webkit-backdrop-filter:none!important;box-shadow:none!important;background:0 0!important;border:none!important;width:100%!important;max-width:100%!important;margin:0!important;padding:0!important}.table-container{border:1px solid #000!important;overflow:visible!important}table{border-collapse:collapse!important;color:#000!important;width:100%!important}th,td{color:#000!important;background:#fff!important;border:1px solid #000!important;padding:3px 5px!important;font-size:8pt!important;line-height:1.1!important}th{background:#f0f0f0!important}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.print-only-container{visibility:visible;width:100%;position:absolute;top:0;left:0;background:#fff!important;display:block!important}.printable-page{page-break-after:always;min-height:29.7cm;padding:1.5cm;color:#000!important;background:#fff!important}.print-table{border-collapse:collapse;border:2px solid #000;width:100%;margin-top:1rem}.print-table th,.print-table td{text-align:left;border:1px solid #000;padding:12px 8px;font-size:.9rem;color:#000!important}}@keyframes skeleton-loading{0%{background-position:100%}to{background-position:0}}.skeleton{background:linear-gradient(90deg,#ffffff08 25%,#ffffff14 37%,#ffffff08 63%) 0 0/400% 100%;border-radius:4px;animation:1.4s infinite skeleton-loading}.skeleton-text{width:100%;height:.8rem;margin:.4rem 0}.skeleton-circle{border-radius:50%;width:32px;height:32px}.skeleton-table-wrapper{width:100%}.skeleton-table-row-flex{border-bottom:1px solid #ffffff0d;gap:8px;padding:12px 0;display:flex}.skeleton-cell-dynamic{flex:1;height:20px}.skeleton-cell-dynamic.first{flex:2}.attendance-container{flex-direction:column;gap:.75rem;padding-bottom:2rem;display:flex}.attendance-header{background:#ffffff08;border:1px solid #ffffff0d;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1rem;display:flex}.attendance-legend-top{background:#ffffff08;border:1px solid #ffffff14;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.5rem;padding:.75rem 1.25rem;display:flex}.legend-group{flex-wrap:wrap;gap:1rem;display:flex}.month-selector-wrapper{align-items:center;gap:.75rem;display:flex}.month-selector-wrapper label{color:var(--text-muted);font-size:.85rem;font-weight:500}.month-select{border:1px solid var(--glass-border);color:#fff;cursor:pointer;background:#0f172acc;border-radius:8px;outline:none;padding:.5rem 1rem;font-size:.9rem;transition:all .2s}.month-select:hover{border-color:var(--primary);background:#0f172af2}.search-input-container{border:1px solid var(--glass-border);background:#0f172a99;border-radius:8px;align-items:center;padding:0 .75rem;transition:all .2s;display:flex}.search-input-container:focus-within{border-color:var(--primary);background:#0f172acc}.search-icon{color:var(--text-muted);margin-right:.5rem}.search-input{color:#fff;background:0 0;border:none;outline:none;width:200px;padding:.5rem 0;font-size:.9rem}.attendance-grid-wrapper{background:#0003;border:1px solid #ffffff0d;border-radius:12px;position:relative;overflow-x:auto}.teacher-profile-page{max-width:1200px;margin:0 auto;padding:1rem;animation:.3s ease-out fadeIn}.profile-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.btn-back{color:#333;cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:8px;align-items:center;gap:8px;padding:.6rem 1.2rem;transition:all .2s;display:flex;box-shadow:0 2px 5px #0000000d}.btn-back:hover{background:#f5f5f5;transform:translate(-4px)}.profile-content{grid-template-columns:1fr 1fr;gap:2rem;display:grid}@media (width<=900px){.profile-content{grid-template-columns:1fr}}.profile-card{background:#fff;border:1px solid #0000000d;border-radius:20px;padding:2rem;box-shadow:0 10px 30px #0000000d}.main-info{text-align:center;flex-direction:column;align-items:center;display:flex}.profile-avatar{color:#0078d7;background:#e0f2fe;border-radius:30px;justify-content:center;align-items:center;width:100px;height:100px;margin-bottom:1.5rem;display:flex}.profile-title h2{color:#111;margin-bottom:.5rem;font-size:1.8rem}.badge-status{color:#166534;background:#dcfce7;border-radius:100px;margin-bottom:2rem;padding:.4rem 1rem;font-size:.85rem;font-weight:600;display:inline-block}.info-grid{text-align:left;grid-template-columns:1fr 1fr;gap:1.5rem;width:100%;display:grid}.info-item label{color:#666;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem;font-size:.75rem;font-weight:600;display:block}.info-item .value{color:#111;font-size:1.1rem;font-weight:500}.input-field.compact{background:#fff;width:100%;padding:.4rem .8rem;font-size:.95rem;border:1px solid #000!important}.profile-name-input{text-align:center;border-radius:8px;margin-bottom:1rem;background:#fff!important;border:2px solid #000!important;font-size:1.5rem!important;font-weight:700!important}.history-section .section-header{color:#0078d7;align-items:center;gap:12px;margin-bottom:2rem;display:flex}.history-section h3{margin:0;font-size:1.3rem;font-weight:700}.history-list{flex-direction:column;gap:1rem;display:flex}.history-category{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;transition:all .2s;overflow:hidden}.history-category:hover{background:#f1f5f9}.category-header{cursor:pointer;padding:1.2rem}.category-info{align-items:center;gap:12px;display:flex}.category-icon{color:#334155;background:#e2e8f0;border-radius:6px;justify-content:center;align-items:center;width:24px;height:24px;font-weight:700;display:flex}.category-name{color:#1e293b;font-size:1rem;font-weight:600}.category-count{color:#64748b;font-size:.85rem}.category-details{border-top:1px solid #e2e8f0;padding:1rem 1.2rem 1.2rem 3rem}.history-item{color:#334155;align-items:center;gap:10px;margin-bottom:.6rem;font-size:.9rem;display:flex}.item-dot{background:#0078d7;border-radius:50%;width:6px;height:6px}.empty-state{text-align:center;color:#64748b;padding:4rem 2rem}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.attendance-table{border-collapse:collapse;width:100%}.attendance-table th,.attendance-table td{text-align:center;border-bottom:1px solid #0000000d;border-right:1px solid #0000000d;padding:.5rem}.attendance-table thead th{z-index:10;color:#fff;text-transform:uppercase;letter-spacing:.05em;background:#0078d7;font-size:.75rem;font-weight:600;position:sticky;top:0}.day-label{opacity:.6;margin-bottom:2px;font-size:.6rem}.day-num{font-size:.9rem;font-weight:700}.attendance-table thead th.ui-vertical-header{writing-mode:vertical-rl;text-align:center;background:#0078d7;border-bottom:1px solid #fff3;border-right:1px solid #fff3;min-width:45px;max-width:45px;height:120px;padding:10px 5px;transform:rotate(180deg);font-size:.6rem!important}.attendance-table .teacher-name-cell{z-index:11;text-align:left;width:180px;min-width:180px;max-width:180px;padding-left:1rem;position:sticky;left:0;box-shadow:2px 0 5px #0000001a;background:#fff!important}.attendance-table thead th.teacher-name-cell{z-index:12;background:#0078d7!important}.attendance-teacher-name{white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:500;overflow:hidden}.day-cell{width:45px;min-width:45px}.attendance-input{text-align:center;text-transform:uppercase;border-radius:4px;height:28px;font-size:.85rem;font-weight:600;transition:all .2s;color:#000!important;background:#fff!important;border:1px solid #ccc!important;width:40px!important}.attendance-input::-webkit-calendar-picker-indicator{display:none!important}.attendance-input:hover{background:#ffffff1a;border-color:#fff3}.attendance-input:focus{border-color:var(--primary);background:#6366f11a;outline:none;box-shadow:0 0 0 2px #6366f133}.attendance-input.val-p{color:#10b981}.attendance-input.val-a{color:#ef4444}.attendance-input.val-aj{color:#f59e0b}.attendance-input.val-pd{color:#ef4444;text-decoration:line-through}.attendance-input.val-blocked{color:#64748b;cursor:not-allowed;background:#0003!important}.week-alt{background:#ffffff0a!important}.attendance-table th.week-alt{background:#ffffff14!important}.day-active{border-left:2px solid #10b981;border-right:2px solid #10b981;background:#10b98126!important}.day-empty{opacity:.3;background:#0000001a}.mobile-nav-arrows{gap:.25rem;display:flex}.btn-icon{border:1px solid var(--glass-border);color:#fff;cursor:pointer;background:#ffffff0d;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;padding:0;transition:all .2s;display:flex}.btn-icon:hover:not(:disabled){border-color:var(--primary);background:#ffffff1a}.btn-icon:disabled{opacity:.3;cursor:not-allowed}.legend-card{background:#ffffff08;border:1px solid #ffffff0d;border-radius:10px;flex-wrap:wrap;gap:1.5rem;padding:1rem;display:flex}.legend-item{color:var(--text-muted);align-items:center;gap:.5rem;font-size:.8rem;display:flex}.legend-badge{border-radius:4px;justify-content:center;align-items:center;width:24px;height:24px;font-size:.75rem;font-weight:700;display:flex}.badge-p{color:#10b981;background:#10b98126;border:1px solid #10b9814d}.badge-a{color:#ef4444;background:#ef444426;border:1px solid #ef44444d}.badge-aj{color:#f59e0b;background:#f59e0b26;border:1px solid #f59e0b4d}.badge-pd{color:#ef4444;background:#ef44441a;border:1px solid #ef44444d;text-decoration:line-through}.badge-blocked{color:#64748b;background:#64748b26;border:1px solid #64748b4d}@media (width<=768px){.attendance-grid-wrapper{overflow-x:hidden}.attendance-header{flex-direction:column;align-items:stretch}.attendance-table .student-col{width:140px;min-width:140px;font-size:.75rem}.attendance-legend-top{flex-direction:column;align-items:flex-start;gap:.5rem;padding:.5rem .75rem}.legend-group{gap:.5rem}.legend-item{font-size:.65rem}.legend-badge{width:18px;height:18px;font-size:.55rem}.slide-left{animation:.3s cubic-bezier(.25,1,.5,1) slideLeftAnim}.slide-right{animation:.3s cubic-bezier(.25,1,.5,1) slideRightAnim}}@keyframes slideLeftAnim{0%{opacity:0;transform:translate(-15px)}to{opacity:1;transform:translate(0)}}@media print{@page{size:landscape;margin:1cm}.controls-row,.attendance-legend-top,.attendance-header,.icon-btn,.btn,.attendance-codes-list,.no-print{display:none!important}}@keyframes slideRightAnim{0%{opacity:0;transform:translate(15px)}to{opacity:1;transform:translate(0)}}
