:root{--primary-color:#5856d6;--primary-hover:#4341b5;--secondary-color:#e5e5ea;--success-color:#34c759;--success-hover:#28a745;--warning-color:#ff9500;--danger-color:#ff3b30;--danger-bg:#ffeef0;--background:#f2f2f7;--sidebar-bg:#fff;--card-bg:#fff;--text-primary:#1c1c1e;--text-secondary:#8e8e93;--border-color:#e5e5ea;--font-sans:"Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--shadow-sm:0 2px 8px #0000000a;--shadow-md:0 4px 20px #00000014}*{box-sizing:border-box;margin:0;padding:0}html,body{font-family:var(--font-sans);color:var(--text-primary);-webkit-tap-highlight-color:transparent;width:100vw;height:100dvh;overflow:hidden;background-color:var(--background)!important}.app-container{width:100vw;height:100dvh;display:flex}.sidebar{background-color:var(--sidebar-bg);border-right:1px solid var(--border-color);flex-direction:column;flex-shrink:0;width:260px;padding:24px;display:flex}.brand{align-items:center;gap:12px;margin-bottom:40px;display:flex}.brand .logo-icon{color:#fff;background:linear-gradient(135deg,#a2a1ff,#5856d6);border-radius:12px;padding:6px;font-size:28px}.brand h2{color:var(--primary-color);font-size:20px;font-weight:700}.nav-menu{flex-direction:column;flex-grow:1;gap:8px;display:flex}.nav-item{color:var(--text-secondary);border-radius:12px;align-items:center;gap:12px;padding:12px 16px;font-size:15px;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.nav-item:hover,.nav-item.active{color:var(--primary-color);background-color:#f2f2f7}.nav-item.active{background-color:#efefff;font-weight:600}.sidebar-footer{border-top:1px solid var(--border-color);padding-top:16px}.docente-info-card{background-color:#f8f8fa;border-radius:12px;padding:12px}.docente-name{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.institucion-name{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;overflow:hidden}.main-content{flex-direction:column;flex-grow:1;min-width:0;max-width:100%;height:100%;padding:40px;display:flex;position:relative;overflow-y:auto}.panel{flex-direction:column;gap:32px;animation:.3s fadeIn;display:none}.panel.active{display:flex}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.panel-header{justify-content:space-between;align-items:center;display:flex}.panel-header h1{letter-spacing:-.5px;font-size:28px;font-weight:700}.subtitle{color:var(--text-secondary);margin-top:4px;font-size:14px}.btn{font-family:var(--font-sans);cursor:pointer;border:none;border-radius:12px;align-items:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover{background-color:var(--primary-hover);box-shadow:0 4px 12px #5856d633}.btn-secondary{background-color:var(--secondary-color);color:var(--text-primary)}.btn-secondary:hover{background-color:#d1d1d6}.btn-success{background-color:var(--success-color);color:#fff}.btn-success:hover{background-color:var(--success-hover);box-shadow:0 4px 12px #34c75933}.btn-back{color:var(--primary-color);cursor:pointer;background:0 0;border:none;margin-bottom:8px;font-size:14px;font-weight:600}.btn-block{justify-content:center;width:100%}.grupos-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;display:grid}.grupo-card{background-color:var(--card-bg);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;gap:8px;padding:14px 16px;transition:all .15s;display:flex;position:relative;overflow:hidden}.grupo-card:before{content:"";background-color:var(--primary-color);width:6px;height:100%;position:absolute;top:0;left:0}.grupo-card:hover{box-shadow:var(--shadow-md);transform:translateY(-4px)}.grupo-card h3{font-size:18px;font-weight:700}.grupo-card .curso-tag{color:var(--text-secondary);background-color:#f2f2f7;border-radius:20px;align-self:flex-start;padding:4px 12px;font-size:12px;font-weight:600}.grupo-card .meta{color:var(--text-secondary);font-size:13px}.grupo-card .card-footer{justify-content:space-between;align-items:center;margin-top:8px;display:flex}.btn-delete-icon{color:var(--danger-color);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px;font-size:16px}.btn-delete-icon:hover{background-color:var(--danger-bg)}.tabs-container{border-bottom:2px solid var(--border-color);gap:8px;padding-bottom:8px;display:flex}.tab-btn{font-family:var(--font-sans);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:10px 20px;font-size:15px;font-weight:500;transition:all .2s;position:relative}.tab-btn.active{color:var(--primary-color);font-weight:600}.tab-btn.active:after{content:"";background-color:var(--primary-color);border-radius:3px 3px 0 0;width:100%;height:3px;position:absolute;bottom:-10px;left:0}.table-card{background-color:var(--card-bg);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);border-radius:20px;flex-direction:column;display:flex;overflow:hidden}.table-responsive{max-height:calc(100vh - 350px);overflow-x:auto}.table-notas{border-collapse:collapse;width:100%;font-size:13px}.table-notas th{color:var(--text-secondary);border-bottom:1px solid var(--border-color);border-right:1px solid var(--border-color);text-align:center;white-space:nowrap;background-color:#f8f8fa;padding:10px 8px;font-weight:600}.table-notas td{border-bottom:1px solid var(--border-color);border-right:1px solid var(--border-color);text-align:center;white-space:nowrap;padding:6px 8px}.table-notas td.student-name,.table-notas th.student-name{text-align:left;background-color:var(--card-bg);z-index:2;border-right:2px solid var(--border-color);font-weight:600;position:sticky;left:0}.table-notas tr:hover td.student-name{background-color:#f8f8fa}.input-nota{border:1px solid var(--border-color);text-align:center;width:48px;font-family:var(--font-sans);border-radius:6px;outline:none;padding:4px;font-size:13px;font-weight:500;transition:all .15s}.input-nota:focus{border-color:var(--primary-color);box-shadow:0 0 0 2px #5856d626}.nota-riesgo{color:var(--danger-color);background-color:var(--danger-bg);font-weight:600}.cell-calculated{color:var(--text-primary);background-color:#f8f8fa;font-weight:600}.badge{border-radius:6px;padding:4px 8px;font-size:11px;font-weight:700}.badge-da{color:#196f27;background-color:#d1f7d6}.badge-aa{color:#0d47a1;background-color:#e3f2fd}.badge-pa{color:#e65100;background-color:#fff3e0}.badge-na{color:#c62828;background-color:#ffeef0}.config-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:32px;display:grid}.config-card{background-color:var(--card-bg);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);border-radius:20px;width:100%;min-width:0;padding:24px}.config-card h3{border-bottom:2px solid var(--background);margin-bottom:20px;padding-bottom:8px;font-size:18px}.form-group{flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.form-group label{color:var(--text-secondary);font-size:13px;font-weight:600}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--border-color);font-family:var(--font-sans);border-radius:10px;outline:none;padding:10px 14px;font-size:14px;transition:all .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary-color)}.form-row{gap:12px;margin-bottom:16px;display:flex}.form-row input{border:1px solid var(--border-color);font-family:var(--font-sans);border-radius:10px;outline:none;flex-grow:1;padding:10px 14px}.config-list{flex-direction:column;gap:10px;max-height:250px;list-style:none;display:flex;overflow-y:auto}.config-list li{background-color:#f8f8fa;border-radius:10px;justify-content:space-between;align-items:center;padding:10px 16px;font-size:14px;font-weight:500;display:flex}.modal{z-index:1100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#f2f2f7bf;justify-content:center;align-items:center;width:100vw;height:100vh;display:none;position:fixed;top:0;left:0}.modal.open{display:flex}.modal-content{background-color:var(--card-bg);width:100%;max-width:480px;box-shadow:var(--shadow-md);border-radius:24px;padding:32px;animation:.3s modalPop;position:relative}.modal-large{max-width:700px}@keyframes modalPop{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-close{color:var(--text-secondary);cursor:pointer;font-size:24px;position:absolute;top:24px;right:24px}.modal-subtitle{color:var(--text-secondary);margin-bottom:24px;font-size:13px}.modal-footer{justify-content:flex-end;gap:12px;margin-top:24px;display:flex}.sge-toast-pill{box-sizing:border-box;pointer-events:none}.toast.hidden{opacity:0;pointer-events:none;transform:translateY(50px)}.hidden{display:none!important}body.auth-mode{height:auto!important;overflow-y:auto!important}.auth-container,.activation-container{z-index:1000;background-color:var(--background);width:100vw;height:100dvh;padding:max(24px, calc(env(safe-area-inset-top,0px) + 16px)) 16px max(24px, calc(env(safe-area-inset-bottom,0px) + 16px)) 16px;-webkit-overflow-scrolling:touch;flex-direction:column;justify-content:flex-start;align-items:center;display:flex;position:fixed;inset:0;overflow-y:auto}.auth-card,.activation-card{border:1px solid var(--border-color);width:100%;max-width:480px;box-shadow:var(--shadow-sm);background:#fff;border-radius:20px;flex-direction:column;flex-shrink:0;gap:20px;margin:auto 0;padding:32px 28px;display:flex}.auth-brand,.activation-brand{text-align:center;flex-direction:column;align-items:center;gap:8px;display:flex}.auth-brand .logo-icon,.activation-brand .logo-icon{color:#fff;background:linear-gradient(135deg,#a2a1ff,#5856d6);border-radius:16px;padding:10px;font-size:36px;box-shadow:0 4px 12px #5856d64d}.auth-brand h2,.activation-brand h2{color:var(--primary-color);font-size:24px;font-weight:700}.auth-brand p,.activation-brand p{color:var(--text-secondary);font-size:13px}.auth-tabs{border-bottom:2px solid var(--border-color);margin-bottom:8px;display:flex}.auth-tab-btn{font-family:var(--font-sans);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;flex:1;padding:12px;font-size:15px;font-weight:600;transition:all .2s}.auth-tab-btn.active{color:var(--primary-color);border-bottom:3px solid var(--primary-color);margin-bottom:-2px}.auth-form,.activation-form{flex-direction:column;gap:16px;display:flex}.auth-form .btn,.activation-form .btn{margin-top:8px;padding:12px}.activation-info{color:var(--text-primary);text-align:center;border-left:4px solid var(--warning-color);background-color:#f2f2f7;border-radius:12px;padding:16px;font-size:13px;line-height:1.5}.admin-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:32px;display:grid}.admin-list-container{border:1px solid var(--border-color);-webkit-overflow-scrolling:touch;background:#f8f8fa;border-radius:12px;max-height:350px;margin-top:12px;overflow:auto}.admin-table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}.admin-table th,.admin-table td{border-bottom:1px solid var(--border-color);white-space:nowrap;padding:12px 14px}.admin-table th{background-color:var(--secondary-color);color:var(--text-primary);z-index:1;font-weight:600;position:sticky;top:0}.admin-table tbody tr:hover{background-color:#00000005}.claves-generadas-box{border:1px solid var(--success-color);background:#eef9f0;border-radius:12px;margin-top:16px;padding:16px}.mobile-header{padding-top:max(12px, env(safe-area-inset-top,0px));padding-bottom:12px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));background-color:var(--sidebar-bg);border-bottom:1px solid var(--border-color);z-index:100;justify-content:space-between;align-items:center;display:none;position:sticky;top:0}.menu-toggle-btn{color:var(--text-primary);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:4px 8px;font-size:24px}.menu-toggle-btn:hover{background-color:var(--background)}.mobile-brand{color:var(--primary-color);font-size:18px;font-weight:700}.sidebar-backdrop{z-index:499;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:#f2f2f7bf;width:100vw;height:100vh;display:none;position:fixed;top:0;left:0}.table-notas th:first-child,.table-notas td:first-child{z-index:2;background-color:var(--card-bg);width:36px;min-width:36px;max-width:36px;position:sticky;left:0}.table-notas th:first-child{z-index:3;background-color:#f8f8fa}.table-notas th:nth-child(2),.table-notas td:nth-child(2){z-index:2;background-color:var(--card-bg);width:110px;min-width:110px;max-width:110px;position:sticky;left:36px}.table-notas th:nth-child(2){z-index:3;background-color:#f8f8fa}.table-notas th.student-name,.table-notas td.student-name{z-index:2;background-color:var(--card-bg);border-right:2px solid var(--border-color);white-space:nowrap;text-overflow:ellipsis;width:220px;min-width:180px;height:38px;line-height:38px;position:sticky;left:146px;overflow:hidden}.table-notas th.student-name{z-index:3;background-color:#f8f8fa}.table-notas tr:hover td:first-child,.table-notas tr:hover td:nth-child(2),.table-notas tr:hover td.student-name{background-color:#f8f8fa}@media (width<=768px){.mobile-header{display:flex}.mobile-header .menu-toggle-btn{display:none!important}.app-container{width:100vw;overflow:hidden;flex-direction:column!important;height:calc(100dvh - 53px)!important}.sidebar{display:none!important}.main-content{-webkit-overflow-scrolling:touch;padding-top:16px!important;padding-bottom:calc(90px + env(safe-area-inset-bottom,0px))!important;padding-left:max(16px, env(safe-area-inset-left,0px))!important;padding-right:max(16px, env(safe-area-inset-right,0px))!important;min-width:0!important;max-width:100%!important;height:100%!important;overflow-y:auto!important}.form-row{flex-direction:column;gap:16px}.panel-header{flex-direction:column;align-items:flex-start;gap:16px}.panel-header .action-buttons{flex-wrap:wrap;gap:8px;width:100%;display:flex}.panel-header .action-buttons .btn{flex:calc(50% - 8px);justify-content:center;padding:12px;font-size:13px}.tabs-container{white-space:nowrap;-webkit-overflow-scrolling:touch;padding-bottom:4px;overflow-x:auto}.tab-btn{flex-shrink:0;padding:8px 12px;font-size:13px}.table-responsive{max-height:none!important;overflow:auto visible!important}.config-grid,.admin-grid{grid-template-columns:1fr;gap:16px}.grupos-grid{gap:16px;grid-template-columns:1fr!important}.grupo-card{border-radius:16px!important;gap:10px!important;padding:16px!important}.grupo-card h3{font-size:15px!important}.grupo-card .meta{font-size:12px!important}.grupo-card .card-footer{margin-top:4px!important}.table-notas th:first-child,.table-notas td:first-child,.table-notas th:nth-child(2),.table-notas td:nth-child(2){background-color:inherit!important;z-index:auto!important;border-right:1px solid var(--border-color)!important;width:auto!important;min-width:auto!important;position:static!important;left:auto!important}.table-notas th.student-name,.table-notas td.student-name{white-space:nowrap!important;text-overflow:ellipsis!important;background-color:inherit!important;z-index:auto!important;border-right:1px solid var(--border-color)!important;width:160px!important;min-width:140px!important;max-width:170px!important;height:36px!important;padding:0 6px!important;font-size:10px!important;font-weight:600!important;line-height:36px!important;position:static!important;left:auto!important;overflow:hidden!important}}@media (width<=480px){.auth-card,.activation-card{border-radius:16px;padding:24px 16px}.modal-content{border-radius:16px;width:95%;max-height:90vh;padding:24px 16px;overflow-y:auto}.modal-footer{flex-direction:column}.modal-footer .btn{width:100%}}.bottom-nav{display:none}@media (width<=768px){.app-container{flex-direction:column;height:100dvh;overflow:hidden}.main-content{padding:16px 12px calc(70px + env(safe-area-inset-bottom,0px)) 12px!important;-webkit-overflow-scrolling:touch!important;flex:1!important;height:100%!important;overflow-y:auto!important}.bottom-nav{background-color:var(--sidebar-bg);border-top:1px solid var(--border-color);z-index:1000;justify-content:space-around;align-items:center;height:48px;padding-top:2px;padding-bottom:2px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 10px #0000000d}.bottom-nav-item{color:var(--text-secondary);font-family:var(--font-sans);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;height:100%;font-size:11px;font-weight:600;transition:all .2s;display:flex}.bottom-nav-item .icon{font-size:20px}.bottom-nav-item.active{color:var(--primary-color)}}
