/*
  Sistema LVS Cloud · Capa visual institucional v2.9.15
  Esta hoja solo mejora presentación, accesibilidad visual y adaptación responsive.
  No modifica lógica, permisos ni datos.
*/
:root{
  --lvs-navy:#123b5d;
  --lvs-navy-2:#1f4e79;
  --lvs-blue:#2f75b5;
  --lvs-blue-2:#4d91cf;
  --lvs-sky:#eaf4ff;
  --lvs-sky-2:#f5f9fe;
  --lvs-gold:#f4b183;
  --lvs-green:#16825d;
  --lvs-amber:#c77a08;
  --lvs-red:#c93f45;
  --lvs-purple:#7651aa;
  --lvs-ink:#172033;
  --lvs-muted:#66758a;
  --lvs-line:#d9e3ef;
  --lvs-surface:#ffffff;
  --lvs-surface-soft:#f7faff;
  --lvs-shadow-sm:0 6px 18px rgba(18,59,93,.07);
  --lvs-shadow:0 14px 38px rgba(18,59,93,.11);
  --lvs-shadow-lg:0 24px 68px rgba(18,59,93,.17);
  --lvs-radius-sm:12px;
  --lvs-radius:18px;
  --lvs-radius-lg:26px;
}

html{scroll-behavior:smooth}
body{
  color:var(--lvs-ink);
  background:
    radial-gradient(circle at 8% 0%,rgba(77,145,207,.13),transparent 29rem),
    radial-gradient(circle at 100% 4%,rgba(244,177,131,.14),transparent 24rem),
    linear-gradient(180deg,#eef5fd 0%,#f7f9fc 48%,#f2f6fb 100%) !important;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection{background:rgba(47,117,181,.22);color:#0b2840}
button,a,input,select,textarea{transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease,color .16s ease,transform .16s ease,opacity .16s ease}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:3px solid rgba(47,117,181,.28) !important;
  outline-offset:2px;
}
button:not(:disabled):active{transform:translateY(0) scale(.985) !important}
input,select,textarea{
  border-color:var(--lvs-line) !important;
  background:rgba(255,255,255,.96) !important;
}
input:hover,select:hover,textarea:hover{border-color:#b9cadc !important}
input:focus,select:focus,textarea:focus{
  border-color:var(--lvs-blue) !important;
  box-shadow:0 0 0 4px rgba(47,117,181,.12) !important;
}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:#edf2f7}
::-webkit-scrollbar-thumb{background:#bac9d8;border:3px solid #edf2f7;border-radius:999px}
::-webkit-scrollbar-thumb:hover{background:#91a8bc}

/* Botones compartidos */
.page-portal .btn,
.page-admin .btn,
.page-recursos .btn{
  border-radius:13px !important;
  min-height:42px;
  padding:10px 15px;
  letter-spacing:.005em;
  box-shadow:0 5px 13px rgba(18,59,93,.08);
}
.page-portal .btn-primary,
.page-recursos .btn-primary{
  background:linear-gradient(135deg,var(--lvs-navy-2),var(--lvs-blue)) !important;
  box-shadow:0 10px 24px rgba(31,78,121,.22) !important;
}
.page-portal .btn-secondary,
.page-portal .btn-light,
.page-portal .btn-outline,
.page-admin .btn-light,
.page-recursos .btn-secondary{
  background:linear-gradient(180deg,#fff,#f5f8fc) !important;
  color:var(--lvs-navy-2) !important;
  border:1px solid var(--lvs-line) !important;
}
.page-portal .btn:not(:disabled):hover,
.page-admin .btn:not(:disabled):hover,
.page-recursos .btn:not(:disabled):hover{
  transform:translateY(-2px);
  box-shadow:0 10px 22px rgba(18,59,93,.14);
}

/* Pantallas de carga coherentes */
.screen-loader-overlay,.page-loader,.globalLoader,.loader{
  backdrop-filter:blur(8px);
}
.screen-loader-overlay,.page-loader,.globalLoader{
  background:
    radial-gradient(circle at 20% 10%,rgba(255,255,255,.14),transparent 22rem),
    radial-gradient(circle at 85% 95%,rgba(244,177,131,.18),transparent 20rem),
    linear-gradient(135deg,#0d2d49 0%,#1f4e79 52%,#2f75b5 100%) !important;
}
.screen-loader-card,.page-loader-card,.globalLoader>div,.loaderCard{
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.18);
  border-radius:28px;
  padding:30px !important;
  box-shadow:0 28px 80px rgba(4,20,35,.28);
}
.screen-loader-logo,.page-loader-logo,.globalLoaderLogo,.loaderLogo{
  box-shadow:0 14px 32px rgba(0,0,0,.18);
  border:1px solid rgba(255,255,255,.72);
}
.screen-loader-progress,.page-loader-bar,.globalLoaderProgress,.loaderProgressWrap{
  box-shadow:inset 0 1px 4px rgba(0,0,0,.16);
}

/* =========================================================
   PORTAL Y ASISTENCIA
   ========================================================= */
.page-portal .login-view{padding:32px}
.page-portal .login-shell{gap:26px;max-width:1120px}
.page-portal .login-info{
  border-radius:34px;
  min-height:590px;
  background:
    linear-gradient(145deg,rgba(13,45,73,.98),rgba(47,117,181,.96)),
    linear-gradient(135deg,var(--lvs-navy),var(--lvs-blue));
  box-shadow:var(--lvs-shadow-lg);
}
.page-portal .login-info:before{width:390px;height:390px;background:rgba(255,255,255,.09)}
.page-portal .login-info:after{background:rgba(244,177,131,.34)}
.page-portal .portal-logo-large{
  border-radius:28px;
  background:rgba(255,255,255,.15);
  border:1px solid rgba(255,255,255,.3);
  box-shadow:0 16px 36px rgba(0,0,0,.15),inset 0 1px rgba(255,255,255,.2);
}
.page-portal .brand-top h1{font-size:40px;letter-spacing:-.035em}
.page-portal .brand-top p{font-size:16px;line-height:1.6;max-width:420px}
.page-portal .login-card{
  border-radius:34px;
  padding:38px;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(18px);
  border:1px solid rgba(255,255,255,.9);
  box-shadow:var(--lvs-shadow-lg);
}
.page-portal .form-title h2{font-size:30px;letter-spacing:-.025em}
.page-portal .input-wrap input{min-height:50px;border-radius:15px}
.page-portal .left-icon{font-size:18px}
.page-portal .portal-topbar,
.page-portal .attendance-topbar{
  background:rgba(255,255,255,.88) !important;
  backdrop-filter:blur(18px);
  border-bottom:1px solid rgba(217,227,239,.9) !important;
  box-shadow:0 10px 28px rgba(18,59,93,.07) !important;
}
.page-portal .top-logo,.page-portal .topbar-mark{
  background:linear-gradient(145deg,var(--lvs-navy),var(--lvs-blue)) !important;
  box-shadow:0 8px 18px rgba(31,78,121,.22);
}
.page-portal .pill{
  background:linear-gradient(180deg,#f7fbff,#eaf3fb) !important;
  border:1px solid #d7e5f2;
  color:var(--lvs-navy-2) !important;
}
.page-portal .portal-main{padding-top:30px}
.page-portal .welcome{
  overflow:hidden;
  border-radius:28px;
  padding:30px;
  border:1px solid rgba(199,216,234,.9);
  background:
    radial-gradient(circle at 92% 15%,rgba(244,177,131,.24),transparent 13rem),
    linear-gradient(135deg,#fff 0%,#f4f9ff 58%,#edf6ff 100%) !important;
  box-shadow:var(--lvs-shadow);
}
.page-portal .welcome:before{
  content:"";position:absolute;right:-45px;bottom:-72px;width:210px;height:210px;border-radius:50%;
  background:rgba(47,117,181,.075);
}
.page-portal .welcome h1{font-size:31px;color:var(--lvs-navy);letter-spacing:-.025em;position:relative}
.page-portal .welcome p,.page-portal .welcome-actions,.page-portal .welcome-date{position:relative}
.page-portal .welcome-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.page-portal .section-title h3{color:var(--lvs-navy);font-size:20px}
.page-portal .cards-grid{gap:18px}
.page-portal .module-card{
  position:relative;
  overflow:hidden;
  border-radius:26px;
  border:1px solid rgba(208,222,236,.95);
  background:linear-gradient(155deg,#fff 0%,#fbfdff 100%);
  box-shadow:var(--lvs-shadow-sm);
}
.page-portal .module-card:before{
  content:"";position:absolute;inset:0 auto 0 0;width:5px;background:linear-gradient(180deg,var(--lvs-blue),var(--lvs-gold));opacity:.9
}
.page-portal .module-card:after{
  content:"";position:absolute;width:150px;height:150px;border-radius:50%;right:-70px;top:-70px;background:rgba(47,117,181,.065)
}
.page-portal .module-card:nth-child(2):before{background:linear-gradient(180deg,var(--lvs-green),#69b89d)}
.page-portal .module-card:nth-child(3):before{background:linear-gradient(180deg,var(--lvs-purple),#a98bd0)}
.page-portal .module-card:nth-child(4):before{background:linear-gradient(180deg,var(--lvs-amber),var(--lvs-gold))}
.page-portal .module-icon{
  position:relative;border-radius:19px;background:linear-gradient(145deg,#edf6ff,#dcecf9);box-shadow:inset 0 1px #fff
}
.page-portal .module-card h4,.page-portal .module-card p,.page-portal .module-open,.page-portal .tag-row{position:relative}
.page-portal .module-card h4{color:var(--lvs-navy)}
.page-portal .module-open{display:inline-flex;align-items:center;gap:8px}
.page-portal .module-open:after{content:"→";font-size:17px}
.page-portal .tag{border:1px solid #e0e8f1;background:#f6f9fc}

/* Asistencia */
.page-portal .attendance-main{padding:28px}
.page-portal .attendance-hero{
  border-radius:28px;
  padding:28px;
  background:
    radial-gradient(circle at 88% 0%,rgba(255,255,255,.12),transparent 16rem),
    linear-gradient(135deg,#0d314d 0%,#1e5f8e 58%,#367fc0 100%) !important;
  box-shadow:0 22px 58px rgba(18,59,93,.23);
}
.page-portal .hero-clock,.page-portal .mode-panel,.page-portal .window-panel{
  border:1px solid rgba(255,255,255,.15);
  background:rgba(255,255,255,.075);
  backdrop-filter:blur(8px);
  border-radius:20px;
  padding:18px;
}
.page-portal .big-clock-time{font-variant-numeric:tabular-nums;letter-spacing:.04em}
.page-portal .attendance-mode-switch{box-shadow:inset 0 1px 4px rgba(0,0,0,.14)}
.page-portal .register-workspace{gap:18px}
.page-portal .scan-launch-card,
.page-portal .quick-code-card,
.page-portal .recent-card,
.page-portal .result-panel,
.page-portal .search-card,
.page-portal .report-filter-card,
.page-portal .report-results-card,
.page-portal .alerts-hero,
.page-portal .stat-card,
.page-portal .card{
  border-radius:22px !important;
  border-color:rgba(211,224,237,.96) !important;
  box-shadow:var(--lvs-shadow-sm) !important;
  background:rgba(255,255,255,.97) !important;
}
.page-portal .scan-primary-button{
  border-radius:22px !important;
  background:linear-gradient(135deg,var(--lvs-navy-2),var(--lvs-blue)) !important;
  box-shadow:0 16px 30px rgba(31,78,121,.23);
}
.page-portal .scan-primary-button:hover{transform:translateY(-3px);box-shadow:0 20px 38px rgba(31,78,121,.29)}
.page-portal .summary-bar{border-radius:19px;box-shadow:var(--lvs-shadow-sm)}
.page-portal .stat-icon{box-shadow:inset 0 1px rgba(255,255,255,.7)}
.page-portal .table-wrap{
  border-radius:20px !important;
  border:1px solid var(--lvs-line) !important;
  box-shadow:var(--lvs-shadow-sm);
  background:#fff;
}
.page-portal table tbody tr:nth-child(even){background:#f8fbfe}
.page-portal table tbody tr:hover{background:#eef6ff}
.page-portal .dropdown-menu{border-radius:20px;box-shadow:var(--lvs-shadow-lg);padding:12px}
.page-portal .nav-btn{border-radius:13px;min-height:44px}
.page-portal .nav-btn.active{background:linear-gradient(135deg,var(--lvs-navy-2),var(--lvs-blue)) !important}
.page-portal .toast{border-radius:16px;box-shadow:var(--lvs-shadow-lg)}

/* =========================================================
   ADMINISTRACIÓN
   ========================================================= */
.page-admin .top{
  background:rgba(255,255,255,.9) !important;
  backdrop-filter:blur(18px);
  border-bottom:1px solid rgba(217,227,239,.95) !important;
  box-shadow:0 10px 28px rgba(18,59,93,.07);
  padding:14px 22px;
}
.page-admin .logo{background:linear-gradient(145deg,var(--lvs-navy),var(--lvs-blue)) !important;box-shadow:0 8px 18px rgba(31,78,121,.23)}
.page-admin .brand h1{color:var(--lvs-navy);letter-spacing:-.015em}
.page-admin .wrap{max-width:1380px;padding:26px}
.page-admin .hero{
  position:relative;overflow:hidden;
  color:#fff;
  padding:27px 28px !important;
  border:0 !important;
  border-radius:26px !important;
  background:
    radial-gradient(circle at 90% 0%,rgba(255,255,255,.15),transparent 17rem),
    linear-gradient(135deg,#102f4a,#1f4e79 54%,#347fbf) !important;
  box-shadow:0 18px 44px rgba(18,59,93,.2) !important;
}
.page-admin .hero:after{content:"";position:absolute;width:210px;height:210px;border-radius:50%;right:-80px;bottom:-115px;background:rgba(244,177,131,.16)}
.page-admin .hero h2{color:#fff !important;font-size:25px !important;position:relative}
.page-admin .hero p{color:rgba(255,255,255,.84) !important;position:relative}
.page-admin .tabs{
  position:sticky;top:74px;z-index:30;
  padding:9px !important;margin:16px 0 !important;
  border:1px solid rgba(210,223,237,.94) !important;
  border-radius:17px;
  background:rgba(255,255,255,.88);
  backdrop-filter:blur(15px);
  box-shadow:var(--lvs-shadow-sm);
  flex-wrap:nowrap !important;overflow:auto;
}
.page-admin .tab{white-space:nowrap;border-radius:12px !important;background:transparent !important;color:#526377 !important;min-height:42px}
.page-admin .tab:hover{background:#edf5fc !important;color:var(--lvs-navy-2) !important}
.page-admin .tab.active{background:linear-gradient(135deg,var(--lvs-navy-2),var(--lvs-blue)) !important;color:#fff !important;box-shadow:0 7px 16px rgba(31,78,121,.2)}
.page-admin .grid{gap:15px}
.page-admin .card,
.page-admin .user-card,
.page-admin .tablebox{
  border-color:rgba(210,223,237,.98) !important;
  border-radius:20px !important;
  box-shadow:var(--lvs-shadow-sm) !important;
  background:rgba(255,255,255,.97) !important;
}
.page-admin .card{padding:19px}
.page-admin .card h3{color:var(--lvs-navy);font-size:17px}
.page-admin .stat{position:relative;overflow:hidden;padding:22px 16px}
.page-admin .stat:after{content:"";position:absolute;width:82px;height:82px;border-radius:50%;right:-35px;top:-34px;background:rgba(47,117,181,.075)}
.page-admin .stat b{font-size:32px;color:var(--lvs-blue);letter-spacing:-.035em;position:relative}
.page-admin .stat span{font-weight:700;position:relative}
.page-admin .info{border-radius:17px;border-color:#c9def2;background:linear-gradient(135deg,#f0f7ff,#f8fbff);box-shadow:0 4px 12px rgba(18,59,93,.04)}
.page-admin .toolbar{padding:12px;background:rgba(255,255,255,.9);border:1px solid var(--lvs-line);border-radius:17px;box-shadow:var(--lvs-shadow-sm)}
.page-admin .toolbar input,.page-admin .toolbar select{min-height:42px;border-radius:12px}
.page-admin .tablebox{overflow:auto}
.page-admin table{border-collapse:separate;border-spacing:0}
.page-admin th{background:linear-gradient(180deg,#1a4b73,#123b5d) !important;color:#fff;padding:12px}
.page-admin td{padding:12px;border-bottom:1px solid #e7eef5}
.page-admin tbody tr:nth-child(even){background:#f8fbfe}
.page-admin tbody tr:hover{background:#edf6ff}
.page-admin .user-grid{gap:13px}
.page-admin .user-card{position:relative;padding:16px;overflow:hidden}
.page-admin .user-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--lvs-blue),var(--lvs-gold))}
.page-admin .user-card:hover{transform:translateY(-2px);box-shadow:var(--lvs-shadow) !important}
.page-admin .module-check{border-radius:13px;background:#f8fbfe}
.page-admin .autologin-list{gap:13px}
.page-admin .autologin-card{border-radius:20px;padding:17px;border-color:var(--lvs-line);box-shadow:var(--lvs-shadow-sm);background:linear-gradient(145deg,#fff,#fbfdff)}
.page-admin .autologin-title{color:var(--lvs-navy);font-size:16px}
.page-admin .status-dot{padding:6px 10px;border-radius:999px;background:#f2f6fa}
.page-admin .link-preview{margin-top:7px;background:#f3f7fb;border:1px solid #e0e8f1;border-radius:10px;padding:8px}
.page-admin .danger-zone{border-radius:20px;padding:20px;background:linear-gradient(135deg,#fff8f8,#fff);box-shadow:0 8px 22px rgba(201,63,69,.07)}
.page-admin .modalbg{backdrop-filter:blur(8px)}
.page-admin .modal{border-radius:25px;box-shadow:var(--lvs-shadow-lg);border:1px solid rgba(255,255,255,.8)}
.page-admin .toast{box-shadow:var(--lvs-shadow-lg)}

/* =========================================================
   AGENDA PIP
   ========================================================= */
.page-agenda .topbar{
  background:rgba(255,255,255,.9) !important;
  backdrop-filter:blur(18px);
  border-bottom:1px solid rgba(217,227,239,.95) !important;
  box-shadow:0 10px 28px rgba(18,59,93,.07);
}
.page-agenda .brandMini,.page-agenda .globalLoaderLogo{
  background:linear-gradient(145deg,var(--lvs-navy),var(--lvs-blue)) !important;
  box-shadow:0 8px 18px rgba(31,78,121,.23);
}
.page-agenda .container{max-width:1480px;padding:25px}
.page-agenda .loginBody{background:transparent !important}
.page-agenda .loginGrid{gap:25px}
.page-agenda .loginHero{
  border-radius:30px !important;
  background:
    radial-gradient(circle at 85% 0%,rgba(255,255,255,.14),transparent 17rem),
    linear-gradient(145deg,#123b5d,#2f75b5) !important;
  box-shadow:var(--lvs-shadow-lg) !important;
}
.page-agenda .box,
.page-agenda .cardInfo,
.page-agenda .formPanel,
.page-agenda .panelRecursos,
.page-agenda .compatBox,
.page-agenda .horarioVisualBox,
.page-agenda .archivoActual{
  border-radius:20px !important;
  border-color:rgba(210,223,237,.98) !important;
  box-shadow:var(--lvs-shadow-sm) !important;
  background:rgba(255,255,255,.97) !important;
}
.page-agenda .semanaBar{
  border-radius:22px !important;
  border:1px solid var(--lvs-line) !important;
  background:linear-gradient(135deg,#fff,#f5faff) !important;
  box-shadow:var(--lvs-shadow-sm) !important;
  padding:16px !important;
}
.page-agenda .fechaSemana{color:var(--lvs-navy);font-weight:900}
.page-agenda .tabs{padding:7px;border:1px solid var(--lvs-line);border-radius:16px;background:rgba(255,255,255,.9);box-shadow:var(--lvs-shadow-sm)}
.page-agenda .tabBtn{border-radius:11px !important}
.page-agenda .tabBtn.active{background:linear-gradient(135deg,var(--lvs-navy-2),var(--lvs-blue)) !important;box-shadow:0 7px 16px rgba(31,78,121,.2)}
.page-agenda .layoutMain{gap:18px}
.page-agenda .sidebarStack{gap:15px}
.page-agenda .reservaModoCard{border-radius:17px;border-color:var(--lvs-line);background:linear-gradient(145deg,#fff,#f8fbfe)}
.page-agenda .reservaModoCard:hover{transform:translateY(-2px);box-shadow:var(--lvs-shadow-sm)}
.page-agenda .horarioVisualTable{border-collapse:separate;border-spacing:0;overflow:hidden;border-radius:18px}
.page-agenda .horarioVisualTable th{background:linear-gradient(180deg,#1a4b73,#123b5d) !important;color:#fff}
.page-agenda .horarioVisualTable td{border-color:#e1e9f1 !important}
.page-agenda .horarioVisualTable tbody tr:nth-child(even) td{background:#f8fbfe}
.page-agenda .horarioVisualTable tbody tr:hover td{background:#edf6ff}
.page-agenda .btnSesion,
.page-agenda .btnSesionSin,
.page-agenda .btnSesionVer,
.page-agenda .btnSesionDocenteNueva,
.page-agenda .btnSesionDocenteModificar{
  border-radius:12px !important;box-shadow:0 4px 10px rgba(18,59,93,.08)
}
.page-agenda .categoriaHeader,.page-agenda .catNivelBtn,.page-agenda .catTemaBtn,.page-agenda .itemRecursoBtn{border-radius:13px !important}
.page-agenda .modalBg{backdrop-filter:blur(8px)}
.page-agenda .modal{border-radius:25px !important;box-shadow:var(--lvs-shadow-lg) !important}
.page-agenda .menuWrap .dropdown{border-radius:18px;box-shadow:var(--lvs-shadow-lg)}

/* =========================================================
   REGISTRO DE CALIFICACIONES
   ========================================================= */
.page-notas .container{max-width:1480px;padding:25px}
.page-notas .topbar{
  background:rgba(255,255,255,.9) !important;
  backdrop-filter:blur(18px);
  border:1px solid rgba(217,227,239,.95) !important;
  border-radius:20px !important;
  box-shadow:var(--lvs-shadow-sm) !important;
  padding:14px 17px !important;
}
.page-notas .brand{color:var(--lvs-navy)}
.page-notas .userBox{background:linear-gradient(180deg,#f8fbff,#edf5fc) !important;border:1px solid #d6e4f1;border-radius:14px !important}
.page-notas .navTabs{
  padding:8px !important;
  border:1px solid var(--lvs-line) !important;
  border-radius:17px !important;
  background:rgba(255,255,255,.9) !important;
  box-shadow:var(--lvs-shadow-sm);
  gap:6px !important;
  overflow:auto;
  flex-wrap:nowrap !important;
}
.page-notas .tabBtn{white-space:nowrap;border-radius:12px !important;background:transparent !important;color:#56677a !important}
.page-notas .tabBtn:hover{background:#edf5fc !important;color:var(--lvs-navy-2) !important}
.page-notas .tabBtn.active{background:linear-gradient(135deg,var(--lvs-navy-2),var(--lvs-blue)) !important;color:#fff !important;box-shadow:0 7px 16px rgba(31,78,121,.2)}
.page-notas .box,
.page-notas .card,
.page-notas .panelInfo,
.page-notas .quickAdminCard,
.page-notas .statsCompetenceCard,
.page-notas .statsSummaryCard,
.page-notas .plantillaExcelCard,
.page-notas .requestCard,
.page-notas .assignmentCard,
.page-notas .studentBox{
  border-radius:20px !important;
  border-color:rgba(210,223,237,.98) !important;
  box-shadow:var(--lvs-shadow-sm) !important;
  background:rgba(255,255,255,.97) !important;
}
.page-notas .sectionTitle h2,.page-notas .sectionTitle h3{color:var(--lvs-navy);letter-spacing:-.015em}
.page-notas .gridCards{gap:15px !important}
.page-notas .cardClickable{position:relative;overflow:hidden}
.page-notas .cardClickable:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--lvs-blue),var(--lvs-gold))}
.page-notas .cardClickable:hover{transform:translateY(-3px);box-shadow:var(--lvs-shadow) !important}
.page-notas .gradoProgressBox{border-radius:15px !important;background:linear-gradient(135deg,#f5f9fd,#eef6ff) !important;border:1px solid #dce8f3 !important}
.page-notas .gradoProgressTrack{height:11px !important;background:#e3ebf3 !important;box-shadow:inset 0 1px 3px rgba(18,59,93,.1)}
.page-notas .gradoProgressFill{background:linear-gradient(90deg,var(--lvs-blue),#5ba0d8) !important}
.page-notas .areaCardsGrid{gap:14px !important}
.page-notas .areaCard{position:relative;border-radius:18px !important;border-color:var(--lvs-line) !important;background:linear-gradient(145deg,#fff,#f9fcff) !important;box-shadow:0 5px 14px rgba(18,59,93,.055) !important}
.page-notas .areaCard:hover{transform:translateY(-2px);box-shadow:var(--lvs-shadow-sm) !important}
.page-notas .areaCardEmoji{border-radius:14px !important;background:linear-gradient(145deg,#eef6fd,#deedf9) !important;box-shadow:inset 0 1px #fff}
.page-notas .areaCardEstadoPill,.page-notas .pill,.page-notas .studentPendingBadge{border-radius:999px !important}
.page-notas .pendingAlertIcon{filter:drop-shadow(0 3px 5px rgba(199,122,8,.2))}
.page-notas .registroAlertas{border-radius:17px !important;box-shadow:0 7px 18px rgba(199,122,8,.08)}
.page-notas .gradeLegend{border-radius:16px !important;background:linear-gradient(135deg,#f7faff,#eef5fb) !important;border:1px solid #dce7f2 !important}
.page-notas .gradeLegendItem{box-shadow:0 3px 8px rgba(18,59,93,.08)}
.page-notas .tableWrap{border-radius:20px !important;border:1px solid var(--lvs-line) !important;box-shadow:var(--lvs-shadow-sm);background:#fff}
.page-notas table{border-collapse:separate;border-spacing:0}
.page-notas th{background:linear-gradient(180deg,#1a4b73,#123b5d) !important;color:#fff !important}
.page-notas td{border-color:#e5edf5 !important}
.page-notas tbody tr:nth-child(even){background:#f8fbfe}
.page-notas tbody tr:hover{background:#eef6ff}
.page-notas .studentCell{background:inherit !important}
.page-notas .compCell{border-radius:15px !important;background:#fbfdff !important;border:1px solid #e4ecf4 !important}
.page-notas .statsFilterPanel{border-radius:20px !important;border:1px solid var(--lvs-line) !important;box-shadow:var(--lvs-shadow-sm) !important;background:#fff !important}
.page-notas .statsFilterGroup{border-radius:15px !important;background:#f8fbfe !important;border:1px solid #e1eaf3 !important}
.page-notas .statsCheck{border-radius:11px !important}
.page-notas .statsCheck:hover{background:#eaf4ff !important}
.page-notas .statsCompetenceHead{border-bottom-color:#e2eaf2 !important}
.page-notas .verticalChart,.page-notas .pieWrap{background:linear-gradient(180deg,#fbfdff,#f5f9fd) !important;border-radius:16px !important;border:1px solid #e2ebf3 !important}
.page-notas .modalBg{backdrop-filter:blur(8px)}
.page-notas .modal{border-radius:25px !important;box-shadow:var(--lvs-shadow-lg) !important}
.page-notas .toast{box-shadow:var(--lvs-shadow-lg)}

/* =========================================================
   RECURSOS PEDAGÓGICOS
   ========================================================= */
.page-recursos .topbar{
  background:rgba(255,255,255,.9) !important;
  backdrop-filter:blur(18px);
  border-bottom:1px solid rgba(217,227,239,.95) !important;
  box-shadow:0 10px 28px rgba(18,59,93,.07) !important;
}
.page-recursos .top-logo{background:linear-gradient(145deg,var(--lvs-navy),var(--lvs-blue)) !important;box-shadow:0 8px 18px rgba(31,78,121,.23)}
.page-recursos .main{max-width:1240px;padding:28px}
.page-recursos .welcome{
  position:relative;overflow:hidden;
  padding:27px 28px !important;
  border-radius:26px !important;
  border:1px solid #d4e2ef !important;
  background:
    radial-gradient(circle at 90% 0%,rgba(244,177,131,.25),transparent 14rem),
    linear-gradient(135deg,#fff,#eef7ff) !important;
  box-shadow:var(--lvs-shadow) !important;
}
.page-recursos .welcome:after{content:"";position:absolute;width:170px;height:170px;border-radius:50%;right:-60px;bottom:-100px;background:rgba(47,117,181,.08)}
.page-recursos .welcome h1{color:var(--lvs-navy);font-size:29px;letter-spacing:-.025em;position:relative}
.page-recursos .category-grid{gap:17px}
.page-recursos .category-card{
  min-height:178px !important;
  border-radius:24px !important;
  border-color:rgba(210,223,237,.98) !important;
  background:linear-gradient(145deg,#fff,#f7fbff) !important;
  box-shadow:var(--lvs-shadow-sm) !important;
}
.page-recursos .category-card:nth-child(2){background:linear-gradient(145deg,#fff,#f5fbf8) !important}
.page-recursos .category-card:nth-child(3){background:linear-gradient(145deg,#fff,#faf7ff) !important}
.page-recursos .category-card:nth-child(4){background:linear-gradient(145deg,#fff,#fff9f3) !important}
.page-recursos .category-card:hover{transform:translateY(-4px);box-shadow:var(--lvs-shadow) !important}
.page-recursos .category-icon{border-radius:18px !important;box-shadow:inset 0 1px #fff,0 6px 14px rgba(18,59,93,.08)}
.page-recursos .category-open{display:inline-flex;align-items:center;gap:7px;background:linear-gradient(180deg,#f5f9fd,#eaf2f9) !important;border:1px solid #dae6f1}
.page-recursos .category-open:after{content:"→"}
.page-recursos .resource-panel,
.page-recursos .admin-panel{
  border-radius:24px !important;
  border-color:rgba(210,223,237,.98) !important;
  box-shadow:var(--lvs-shadow) !important;
  background:rgba(255,255,255,.97) !important;
}
.page-recursos .resource-head{background:linear-gradient(180deg,#fbfdff,#f4f9fd) !important}
.page-recursos .resource-search{padding:4px}
.page-recursos .resource-search input{min-height:46px;border-radius:14px !important}
.page-recursos .breadcrumb button{border-radius:999px !important;background:#f5f8fb !important}
.page-recursos .resource-list{gap:12px}
.page-recursos .resource-item{
  min-height:86px;
  border-radius:18px !important;
  border-color:#dce6ef !important;
  background:linear-gradient(145deg,#fff,#fbfdff) !important;
  box-shadow:0 4px 12px rgba(18,59,93,.04);
}
.page-recursos .resource-item:hover{transform:translateY(-2px);box-shadow:var(--lvs-shadow-sm) !important;background:#f7fbff !important}
.page-recursos .res-icon{border-radius:15px !important;box-shadow:inset 0 1px #fff}
.page-recursos .resource-action-btn{border-radius:12px !important;background:linear-gradient(180deg,#fff,#f3f7fb) !important}
.page-recursos .empty,.page-recursos .loader{border-radius:20px !important;background:linear-gradient(145deg,#fff,#f8fbfe) !important}

/* Responsive general */
@media(max-width:1050px){
  .page-portal .cards-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .page-admin .wrap,.page-agenda .container,.page-notas .container,.page-recursos .main{padding:18px}
}
@media(max-width:760px){
  .page-portal .login-view{padding:14px}
  .page-portal .login-card{padding:25px;border-radius:25px}
  .page-portal .portal-main,.page-portal .attendance-main{padding:15px}
  .page-portal .welcome{padding:22px;border-radius:22px}
  .page-portal .welcome-date{position:static;margin-top:10px}
  .page-portal .cards-grid{grid-template-columns:1fr}
  .page-portal .module-card{min-height:190px}
  .page-portal .attendance-hero{padding:17px;border-radius:22px}
  .page-portal .hero-clock,.page-portal .mode-panel,.page-portal .window-panel{padding:14px}
  .page-admin .top,.page-recursos .topbar{padding:11px 13px}
  .page-admin .wrap,.page-agenda .container,.page-notas .container,.page-recursos .main{padding:12px}
  .page-admin .hero{padding:22px 18px !important;border-radius:21px !important}
  .page-admin .tabs{top:68px;margin:12px 0 !important}
  .page-admin .toolbar{padding:9px}
  .page-admin .card{padding:15px}
  .page-agenda .semanaBar{border-radius:17px !important}
  .page-notas .topbar{border-radius:16px !important}
  .page-notas .navTabs{border-radius:14px !important}
  .page-recursos .welcome{padding:21px !important;border-radius:20px !important}
  .page-recursos .category-grid{grid-template-columns:1fr !important}
  .page-recursos .category-card{min-height:150px !important}
  .page-recursos .resource-panel{border-radius:19px !important}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;scroll-behavior:auto !important;transition-duration:.01ms !important}
}


/* =========================================================
   NAVEGACIÓN SUPERIOR UNIFICADA · v2.9.15
   ========================================================= */
.lvs-header-cluster{display:flex;align-items:center;gap:11px;min-width:0}
.lvs-corner-menu{position:relative;flex:0 0 auto;z-index:120}
.lvs-menu-toggle{width:44px;height:44px;min-width:44px;border:1px solid var(--lvs-line)!important;border-radius:14px!important;background:linear-gradient(180deg,#fff,#f3f7fb)!important;color:var(--lvs-navy-2)!important;display:grid!important;place-items:center!important;padding:0!important;font-size:21px!important;font-weight:900!important;box-shadow:0 7px 18px rgba(18,59,93,.10)!important;cursor:pointer}
.lvs-menu-toggle:hover{transform:translateY(-1px);box-shadow:0 11px 24px rgba(18,59,93,.16)!important}
.lvs-menu-panel{position:absolute;left:0;right:auto;top:calc(100% + 9px);width:min(330px,calc(100vw - 24px));background:#fff;border:1px solid var(--lvs-line);border-radius:18px;box-shadow:var(--lvs-shadow-lg);padding:10px;z-index:250}
.lvs-menu-panel.hidden{display:none!important}
.lvs-menu-user{padding:11px 12px 12px;border-bottom:1px solid var(--lvs-line);margin-bottom:5px;display:grid;gap:4px}
.lvs-menu-user strong{color:var(--lvs-ink);font-size:14px;line-height:1.3}
.lvs-menu-user span{color:var(--lvs-muted);font-size:12px}
.lvs-menu-section{padding:9px 11px 5px;color:#7a8da1;font-size:10px;font-weight:900;letter-spacing:.09em;text-transform:uppercase}
.lvs-menu-item{width:100%!important;min-height:42px!important;border:0!important;border-radius:11px!important;background:transparent!important;color:#1d3448!important;padding:10px 11px!important;display:flex!important;align-items:center!important;gap:10px!important;text-align:left!important;font-weight:800!important;box-shadow:none!important;cursor:pointer}
.lvs-menu-item:hover{background:#eef5fb!important;transform:none!important}
.lvs-menu-item.danger{color:#a61b28!important}
.lvs-menu-item.danger:hover{background:#fff0f1!important}
.lvs-menu-divider{height:1px;background:var(--lvs-line);margin:7px 4px}
.lvs-menu-icon{width:24px;text-align:center;font-size:16px}
.lvs-home-logo{width:44px;height:44px;min-width:44px;border:0!important;border-radius:14px!important;background:linear-gradient(145deg,var(--lvs-navy),var(--lvs-blue))!important;color:#fff!important;display:grid!important;place-items:center!important;padding:0!important;font-weight:950!important;box-shadow:0 8px 18px rgba(31,78,121,.23)!important;cursor:pointer}
.lvs-home-logo:hover{transform:translateY(-1px);box-shadow:0 12px 24px rgba(31,78,121,.29)!important}
.lvs-home-logo:after{content:'';position:absolute}
@media(max-width:700px){.lvs-menu-panel{width:min(310px,calc(100vw - 18px))}.lvs-header-cluster{gap:8px}.lvs-menu-toggle,.lvs-home-logo{width:42px;height:42px;min-width:42px}}

/* v2.9.15 · resumen de asistencia y selector de periodos */
.attendance-summary-block{display:grid;gap:12px;margin-top:18px}
.attendance-summary-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 2px}
.attendance-summary-heading h2{margin:0;color:#102a67;font-size:22px}
.attendance-summary-heading p{margin:4px 0 0;color:#64748b;font-size:13px}
.attendance-summary-heading .btn{white-space:nowrap;box-shadow:0 8px 18px rgba(31,78,121,.18)}
.report-filters label.hidden{display:none!important}
#reportWeekSelect{min-width:210px}
@media(max-width:720px){
  .attendance-summary-heading{align-items:stretch;flex-direction:column}
  .attendance-summary-heading .btn{width:100%}
  #reportWeekSelect{min-width:0;width:100%}
}
