@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Franklin:wght@600;700;800&display=swap');
:root{--brand:#6957c6;--brand-dark:#5142aa;--brand-soft:#f0edfb;--ink:#183547;--ink-2:#244b5e;--cream:#f7f6f1;--yellow:#f4c84b;--line:#e4e6e8;--bs-body-font-family:'DM Sans',Arial,sans-serif;--bs-body-font-size:1rem;--bs-body-color:var(--ink);--bs-primary:var(--brand);--bs-primary-rgb:105,87,198}
body{min-height:100vh;background:var(--cream);line-height:1.55}h1,h2,h3,h4,h5,h6{font-family:'Libre Franklin',Arial,sans-serif;letter-spacing:-.025em}a{text-decoration:none}.brand-link{color:var(--brand)}.brand-link:hover{color:var(--brand-dark)}
.btn{--bs-btn-font-weight:700;--bs-btn-border-radius:.7rem}.btn-brand{--bs-btn-color:#fff;--bs-btn-bg:var(--brand);--bs-btn-border-color:var(--brand);--bs-btn-hover-color:#fff;--bs-btn-hover-bg:var(--brand-dark);--bs-btn-hover-border-color:var(--brand-dark);--bs-btn-active-color:#fff;--bs-btn-active-bg:var(--brand-dark);box-shadow:0 8px 20px rgba(105,87,198,.18)}.form-label{font-size:.95rem;font-weight:700;color:#344e5d}.form-control,.form-select{min-height:48px;border-color:#d7dadd;border-radius:.75rem;padding:.65rem .85rem;font-size:1rem}.form-control:focus,.form-select:focus{border-color:var(--brand);box-shadow:0 0 0 .25rem rgba(105,87,198,.13)}textarea.form-control{min-height:125px}.form-text{font-size:.875rem}.eyebrow{display:inline-flex;align-items:center;gap:.55rem;color:var(--brand);font-size:.78rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.eyebrow:before{content:'';width:1.25rem;height:2px;background:var(--yellow)}
/* Login */
.auth-body{background:#fbf8f1}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1.08fr .92fr}.auth-brand{position:relative;align-items:center;overflow:hidden;padding:clamp(3.5rem,8vw,7.5rem);color:#fff;background:linear-gradient(135deg,rgba(24,53,71,.97),rgba(36,75,94,.9)),url('https://images.unsplash.com/photo-1509062522246-3755977927d7?auto=format&fit=crop&w=1600&q=85') center/cover}.auth-brand:after{content:'';position:absolute;width:240px;height:240px;right:-70px;top:-70px;border:30px solid rgba(244,200,75,.18);border-radius:50%}.brand-content{position:relative;z-index:1;max-width:650px}.brand-content h1{font-size:clamp(2.8rem,5.2vw,4.7rem);line-height:1.04;margin:1.2rem 0}.brand-content h1 em{font-family:Georgia,serif;font-weight:400;color:#ddd7ff}.brand-content p{font-size:1.15rem;line-height:1.75;color:#d7e2e7}.benefit-pill{padding:.65rem .85rem;border:1px solid rgba(255,255,255,.18);border-radius:99px;background:rgba(255,255,255,.08);font-size:.88rem}.login-panel{display:grid;place-items:center;padding:2rem;background:radial-gradient(circle at 100% 0,#eeeafa 0,transparent 31%),#fbf8f1}.login-card{width:min(470px,100%);border-radius:1.5rem!important;box-shadow:0 24px 70px rgba(24,53,71,.14)}.mini-logo{display:flex;align-items:center;gap:.8rem}.mini-logo img{width:58px;height:58px;object-fit:cover;border-radius:50%;box-shadow:0 6px 18px rgba(24,53,71,.14)}.mini-logo b,.mini-logo small{display:block}.mini-logo b{font-size:1.1rem}.mini-logo small{font-size:.75rem;color:#788890;letter-spacing:.12em}.login-card h2{font-size:2rem}.access-tabs{background:var(--brand-soft);border-radius:.8rem}.access-tabs .nav-link{color:#666;font-weight:700;border-radius:.6rem}.access-tabs .nav-link.active{color:var(--brand);background:#fff;box-shadow:0 4px 14px rgba(55,43,112,.12)}
/* Panel */
.app-body{padding-left:280px;background:linear-gradient(145deg,#f8f7f2,#f4f3ef)}.sidebar{position:fixed;inset:0 auto 0 0;width:280px;padding:1.75rem 1.35rem;color:#d3e0e5;background:linear-gradient(180deg,var(--ink),#102b3b);box-shadow:12px 0 40px rgba(19,43,57,.08)}.sidebar .offcanvas-body{overflow-y:auto}.app-logo{display:flex;align-items:center;gap:.75rem;margin-bottom:2.5rem;padding:.2rem .35rem;color:#fff}.app-logo:hover{color:#fff}.app-logo img{width:54px;height:54px;object-fit:cover;border-radius:50%;background:#fff}.app-logo b,.app-logo small{display:block}.app-logo b{font-size:1.08rem}.app-logo small{margin-top:.15rem;color:#9db0b9;font-size:.7rem;letter-spacing:.12em}.sidebar .nav-link{display:flex;gap:.65rem;align-items:center;padding:.8rem .9rem;color:#d3e0e5;font-weight:700;border-radius:.7rem}.sidebar .nav-link:hover,.sidebar .nav-link.active{color:#fff;background:rgba(255,255,255,.1)}.sidebar .nav-link.active{box-shadow:inset 3px 0 var(--yellow)}.workspace{min-height:100vh}.app-header{position:sticky;top:0;z-index:100;min-height:94px;padding:1rem clamp(1.25rem,4vw,3rem);display:flex;align-items:center;justify-content:space-between;gap:1rem;border-bottom:1px solid rgba(228,230,232,.9);background:rgba(255,255,255,.92);backdrop-filter:blur(14px)}.app-header h1{margin:.2rem 0 0;font-size:1.55rem}.app-header>div>small{color:var(--brand);font-size:.75rem;font-weight:800;letter-spacing:.14em}.menu-toggle{width:44px;height:44px;color:var(--brand);background:var(--brand-soft);font-size:1.25rem}.user-chip{display:flex;align-items:center;gap:.7rem;padding:.4rem .7rem .4rem .4rem;border:1px solid var(--line);border-radius:.9rem;background:#fff}.user-chip>span,.user-chip>img{width:43px;height:43px;border-radius:.75rem;object-fit:cover}.user-chip>span{display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);font-weight:800}.user-chip b,.user-chip small{display:block}.user-chip b{font-size:.86rem}.user-chip small{color:#71818a;font-size:.76rem}.content{max-width:1500px;margin:auto;padding:2.5rem clamp(1.25rem,4vw,3.25rem) 4rem}.app-alert{margin:1.25rem clamp(1.25rem,4vw,3.25rem) 0}.panel-card{border:1px solid var(--line);border-radius:1.25rem;box-shadow:0 10px 32px rgba(24,53,71,.055)}
.welcome-card{position:relative;overflow:hidden;color:#fff;border-radius:1.4rem;background:linear-gradient(115deg,var(--brand),#8876dc);box-shadow:0 18px 45px rgba(105,87,198,.2)}.welcome-card:after{content:'';position:absolute;right:-45px;top:-85px;width:250px;height:250px;border:35px solid rgba(255,255,255,.08);border-radius:50%}.welcome-card .row{position:relative;z-index:1}.display-title{max-width:800px;font-size:clamp(1.65rem,3vw,2.35rem);line-height:1.2}.stat-card,.quick-card,.teacher-resource{border:1px solid var(--line);border-radius:1rem;box-shadow:0 8px 24px rgba(24,53,71,.04);transition:.2s}.stat-card:hover,.quick-card:hover,.teacher-resource:hover{transform:translateY(-3px);border-color:#cec8ea;box-shadow:0 16px 35px rgba(24,53,71,.1)}.quick-card{color:var(--ink)}.stat-icon,.resource-icon{flex:0 0 auto;display:grid;place-items:center;width:50px;height:50px;border-radius:.85rem;font-size:1.3rem;font-weight:800}.icon-purple,.resource-icon{color:var(--brand);background:var(--brand-soft)}.icon-green{color:#23805f;background:#e8f6f0}.icon-yellow{color:#a7740d;background:#fff3d4}.icon-blue{color:#267698;background:#e6f2f7}
/* Listados, formularios y detalles */
.table{--bs-table-hover-bg:#fbfaf6}.table thead th{padding:1rem;background:#f7f7f4;color:#64737b;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.table td{padding:1rem;font-size:.93rem}.table-note{display:block;margin-top:.2rem;color:#71818a;font-size:.85rem}.badge-soft-purple{color:var(--brand);background:var(--brand-soft)}.page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.form-card{max-width:980px}.form-card-sm{max-width:680px}.form-footer{display:flex;justify-content:flex-end;gap:.75rem;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--line)}.permission-check{min-height:78px;margin:0;padding:1rem 1rem 1rem 2.8rem;border:1px solid var(--line);border-radius:.8rem;background:#faf9f6}.permission-check .form-check-input{margin-left:-1.8rem}.permission-check label strong,.permission-check label span{display:block}.permission-check label span{margin-top:.15rem;color:#71818a;font-size:.87rem}.record-card{max-width:1050px}.avatar-lg,.avatar-profile{display:grid;place-items:center;color:var(--brand);background:var(--brand-soft);font-weight:800}.avatar-lg{width:72px;height:72px;border-radius:1rem;font-size:1.3rem}.detail-box{height:100%;min-height:98px;padding:1rem;border:1px solid var(--line);border-radius:.8rem;background:#faf9f6}.detail-box span,.detail-box strong{display:block}.detail-box span{margin-bottom:.45rem;color:#71818a;font-size:.85rem;font-weight:600}.detail-box strong{overflow-wrap:anywhere}.danger-zone{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.2rem;border:1px solid #f1cfd3;border-radius:.85rem;background:#fff8f8}.resource-row{display:flex;align-items:center;gap:1rem;padding:1.25rem;border:1px solid var(--line);border-radius:1rem;background:#fff}.resource-meta{display:block;margin-bottom:.25rem;color:var(--brand);font-size:.78rem;font-weight:800;letter-spacing:.08em}.resource-icon-lg{width:66px;height:66px;font-size:1.55rem}.empty-state{padding:2.2rem;border:1px dashed #bdc5c8;border-radius:1rem;background:#fbfbf9;text-align:center;color:#667982}.catalog-id{display:grid;place-items:center;min-width:36px;height:36px;border-radius:.6rem;color:var(--brand);background:var(--brand-soft);font-size:.82rem;font-weight:800}.teacher-resource .card-body{display:flex;flex-direction:column}.profile-card{max-width:1150px;overflow:hidden}.profile-summary{color:#fff;background:linear-gradient(145deg,var(--ink),var(--ink-2))}.profile-photo,.avatar-profile{width:128px;height:128px;margin-bottom:1.5rem;border:5px solid rgba(255,255,255,.16);border-radius:1.5rem;object-fit:cover}.avatar-profile{color:var(--ink);background:var(--yellow);font-size:2rem}.profile-badge{padding:.5rem .7rem;border:1px solid rgba(255,255,255,.17);border-radius:99px;background:rgba(255,255,255,.08);font-size:.78rem}.upload-box{padding:1.2rem;border:1px dashed #bcb5df;border-radius:.9rem;background:var(--brand-soft)}
@media(max-width:991.98px){.auth-shell{grid-template-columns:1fr}.app-body{padding-left:0}.sidebar{width:280px}.content{padding-top:1.75rem}.profile-summary{min-height:auto}}
@media(max-width:575.98px){.login-panel{padding:1rem}.login-card .card-body{padding:1.6rem!important}.app-header{min-height:80px}.app-header>div:nth-child(2){display:none}.user-chip b{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content{padding-left:1rem;padding-right:1rem}.page-toolbar,.danger-zone,.resource-row{align-items:flex-start;flex-direction:column}.page-toolbar .btn,.resource-row>div:last-child{width:100%}.form-footer{flex-direction:column-reverse}.form-footer .btn{width:100%}.resource-row .resource-icon{margin-bottom:.25rem}}

/* Interfaz compacta y refinada */
.app-body{padding-left:252px}.sidebar{width:252px;padding:1.3rem 1rem}.app-logo{margin-bottom:1.65rem}.app-logo img{width:46px;height:46px}.sidebar .nav-link{padding:.67rem .78rem;font-size:.9rem}.app-header{min-height:74px;padding:.7rem clamp(1.15rem,3vw,2.4rem)}.app-header h1{font-size:1.25rem}.user-chip>span,.user-chip>img{width:37px;height:37px}.content{max-width:1380px;padding:1.65rem clamp(1.15rem,3vw,2.4rem) 3rem}.panel-card{border-color:#e8e8e5;border-radius:1rem;box-shadow:0 5px 18px rgba(24,53,71,.045)}.panel-card>.card-body{padding:1.55rem!important}.form-card>.card-body,.record-card>.card-body{padding:1.8rem!important}.form-control,.form-select{min-height:43px;padding:.55rem .75rem;border-radius:.62rem}.btn{--bs-btn-border-radius:.58rem;font-size:.9rem}.table thead th{padding:.75rem .85rem}.table td{padding:.78rem .85rem}.resource-row{padding:.9rem 1rem;border-radius:.8rem}.detail-box{min-height:82px;padding:.8rem}.permission-check{min-height:68px;padding:.8rem .8rem .8rem 2.6rem}.empty-state{padding:1.5rem}.page-toolbar{margin-bottom:.9rem}

/* Portada docente */
.teacher-home{max-width:1240px}.teacher-hero{display:grid;grid-template-columns:1fr auto;align-items:center;gap:2rem;padding:1.55rem 1.7rem;border:1px solid #ded9f3;border-radius:1rem;background:linear-gradient(120deg,#fff 0,#f7f4ff 72%,#eee9ff 100%);box-shadow:0 8px 24px rgba(71,58,136,.06)}.teacher-hero h2{margin:.4rem 0 .25rem;font-size:1.65rem}.teacher-hero p{margin:0;color:#647681}.teacher-identity{min-width:220px;padding-left:1.5rem;border-left:1px solid #d8d2ef}.teacher-identity span,.teacher-identity strong,.teacher-identity a{display:block}.subject-label{color:#7a6cc3;font-size:.68rem;font-weight:800;letter-spacing:.12em}.teacher-identity strong{margin:.2rem 0 .4rem;font-size:1rem}.teacher-identity a{color:var(--brand);font-size:.82rem;font-weight:700}.teacher-overview{display:grid;grid-template-columns:190px 190px 1fr;gap:.75rem}.teacher-overview>div{display:flex;align-items:center;gap:.75rem;padding:.75rem .9rem;border:1px solid #e7e7e3;border-radius:.8rem;background:#fff}.overview-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:.65rem;font-weight:800}.overview-icon.purple{color:var(--brand);background:var(--brand-soft)}.overview-icon.blue{color:#287696;background:#e8f4f8}.teacher-overview p,.teacher-overview strong,.teacher-overview span{display:block;margin:0}.teacher-overview strong{font-size:1.25rem;line-height:1}.teacher-overview p span{margin-top:.2rem;color:#75858d;font-size:.76rem}.teacher-overview .overview-message{justify-content:flex-start;background:#183547;color:#fff}.overview-message>span{padding:.27rem .5rem;border-radius:99px;background:rgba(244,200,75,.15);color:#f4d36e;font-size:.68rem;font-weight:800}.overview-message p{font-size:.82rem;color:#d4dfe4}.teacher-module{overflow:hidden;border:1px solid #e6e7e5;border-radius:1rem;background:#fff;box-shadow:0 5px 18px rgba(24,53,71,.04)}.module-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.05rem 1.25rem;border-bottom:1px solid #ecece9;background:#fcfcfa}.module-heading h2{margin:.15rem 0;font-size:1.15rem}.module-heading p{margin:0;color:#73838b;font-size:.84rem}.module-kicker{color:var(--brand);font-size:.66rem;font-weight:800;letter-spacing:.12em}.resource-count{padding:.35rem .65rem;border-radius:99px;color:#6556aa;background:var(--brand-soft);font-size:.75rem;font-weight:700}.teacher-resource-list{padding:.3rem 1.25rem}.teacher-resource-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:1rem;padding:.9rem 0;border-bottom:1px solid #eeeeeb}.teacher-resource-item:last-child{border-bottom:0}.teacher-resource-item .resource-icon{width:42px;height:42px;border-radius:.7rem;font-size:1rem}.tabulator-icon{color:#287696;background:#e8f4f8}.resource-copy h3{margin:.12rem 0 .15rem;font:700 .98rem 'Libre Franklin',Arial,sans-serif}.resource-copy p{margin:0;color:#71818a;font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resource-actions{display:flex;gap:.45rem}.resource-actions .btn{min-width:80px}.compact-empty{margin:1rem;padding:1.25rem}

/* Portada administrativa */
.admin-home{max-width:1250px}.admin-intro{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.25rem 1.4rem;border:1px solid #e1def0;border-radius:1rem;background:#fff}.admin-intro h2{margin:.35rem 0 .2rem;font-size:1.45rem}.admin-intro p{margin:0;color:#6d7e87;font-size:.9rem}.compact-stat .card-body{display:flex;align-items:center;gap:.85rem;padding:.9rem 1rem!important}.compact-stat .stat-icon{width:40px;height:40px;border-radius:.65rem;font-size:1rem}.compact-stat strong,.compact-stat span{display:block}.compact-stat strong{font-size:1.45rem;line-height:1}.compact-stat div>span{margin-top:.2rem;color:#71818a;font-size:.78rem}.compact-body{padding:1.35rem!important}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:.9rem}.section-heading h2{margin:.25rem 0 0;font-size:1.15rem}.section-heading>span{font-size:.78rem}.admin-module-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.65rem}.admin-module-grid a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.8rem;padding:.85rem;border:1px solid #e8e8e5;border-radius:.75rem;color:var(--ink);transition:.18s}.admin-module-grid a:hover{border-color:#cfc8ec;background:#faf9ff;transform:translateY(-1px)}.admin-module-grid a>span{display:grid;place-items:center;width:38px;height:38px;border-radius:.6rem;color:var(--brand);background:var(--brand-soft);font-weight:800}.admin-module-grid strong,.admin-module-grid small{display:block}.admin-module-grid strong{font-size:.9rem}.admin-module-grid small{margin-top:.12rem;color:#77868d;font-size:.76rem}.admin-module-grid b{color:var(--brand)}

@media(max-width:991.98px){.app-body{padding-left:0}.sidebar{width:252px}.teacher-overview{grid-template-columns:1fr 1fr}.teacher-overview .overview-message{grid-column:1/-1}.teacher-resource-item{grid-template-columns:auto 1fr}.resource-actions{grid-column:2}.admin-module-grid{grid-template-columns:1fr}}
@media(max-width:575.98px){.teacher-hero,.admin-intro{grid-template-columns:1fr;display:grid;align-items:start}.teacher-identity{padding:1rem 0 0;border-top:1px solid #d8d2ef;border-left:0}.teacher-overview{grid-template-columns:1fr 1fr}.teacher-overview>div{padding:.65rem}.teacher-resource-list{padding:.2rem .85rem}.teacher-resource-item{gap:.7rem}.resource-copy p{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.resource-actions{width:100%;flex-wrap:wrap}.module-heading{align-items:flex-start}.admin-intro .btn{width:100%}.section-heading>span{display:none}}

/* Navegación lateral profesional */
.sidebar{background:linear-gradient(180deg,#173343 0%,#102a39 72%,#0d2532 100%);box-shadow:8px 0 28px rgba(16,42,57,.09)}.app-logo{padding:.25rem .45rem 1.15rem;margin-bottom:1rem;border-bottom:1px solid rgba(255,255,255,.09)}.app-logo img{border:2px solid rgba(255,255,255,.18)}.sidebar-label{padding:0 .65rem;margin-bottom:.5rem;color:#78909c;font-size:.62rem;font-weight:800;letter-spacing:.16em}.sidebar-label.inner{display:block;margin:.7rem 0 .35rem;padding:0 .65rem}.sidebar-nav{gap:.22rem!important}.sidebar .sidebar-nav .nav-link{position:relative;gap:.72rem;padding:.56rem .62rem;color:#b9c9d0;font-size:.86rem;font-weight:600;border:1px solid transparent;border-radius:.65rem}.sidebar .sidebar-nav .nav-link:hover{color:#fff;background:rgba(255,255,255,.055)}.sidebar .sidebar-nav .nav-link.active{color:#fff;border-color:rgba(255,255,255,.08);background:linear-gradient(90deg,rgba(105,87,198,.32),rgba(105,87,198,.12));box-shadow:none}.sidebar .sidebar-nav .nav-link.active:after{content:'';position:absolute;right:.65rem;width:5px;height:5px;border-radius:50%;background:var(--yellow);box-shadow:0 0 0 3px rgba(244,200,75,.12)}.nav-icon{display:grid;place-items:center;width:28px;height:28px;flex:0 0 28px;border-radius:.48rem;color:#9db2bc;background:rgba(255,255,255,.06);font-size:.72rem;font-weight:800}.nav-link.active .nav-icon{color:#fff;background:var(--brand)}.sidebar-divider{height:1px;margin:.55rem .65rem;background:rgba(255,255,255,.07)}.sidebar-account{padding-top:.8rem;border-top:1px solid rgba(255,255,255,.09)}.sidebar-user{display:flex;align-items:center;gap:.65rem;padding:.25rem .35rem .7rem}.sidebar-user>span,.sidebar-user>img{width:36px;height:36px;flex:0 0 36px;border-radius:.6rem;object-fit:cover}.sidebar-user>span{display:grid;place-items:center;color:#fff;background:var(--brand);font-size:.72rem;font-weight:800}.sidebar-user b,.sidebar-user small{display:block;max-width:155px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user b{color:#eef4f6;font-size:.77rem}.sidebar-user small{margin-top:.08rem;color:#78909c;font-size:.67rem}.sidebar-logout{display:flex;align-items:center;justify-content:center;gap:.45rem;width:100%;padding:.52rem;border:1px solid rgba(255,255,255,.09);border-radius:.58rem;color:#a9bbc3;background:rgba(255,255,255,.025);font-size:.76rem;font-weight:700;transition:.18s}.sidebar-logout:hover{color:#fff;border-color:rgba(255,255,255,.16);background:rgba(255,255,255,.07)}

/* Catálogos compactos */
.catalog-page{max-width:1250px}.catalog-page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;padding:.25rem .1rem}.catalog-page-head h2{margin:.3rem 0 .12rem;font-size:1.35rem}.catalog-page-head p{margin:0;color:#71818a;font-size:.85rem}.catalog-total{padding:.38rem .65rem;border:1px solid #ddd9ef;border-radius:99px;color:var(--brand);background:#f8f6ff;font-size:.72rem;font-weight:700}.catalog-compact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.catalog-card{overflow:hidden;border:1px solid #e4e6e5;border-radius:.85rem;background:#fff;box-shadow:0 4px 15px rgba(24,53,71,.035)}.catalog-card>header{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.65rem;padding:.8rem .9rem;border-bottom:1px solid #ecece9;background:#fbfbf9}.catalog-card-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:.58rem;color:var(--brand);background:var(--brand-soft);font-size:.75rem;font-weight:800}.catalog-card h3{margin:0;font-size:.9rem}.catalog-card header p{margin:.1rem 0 0;color:#7b898f;font-size:.68rem}.catalog-card-count{display:grid;place-items:center;min-width:27px;height:27px;padding:0 .35rem;border-radius:99px;color:#65767e;background:#eef0ef;font-size:.68rem;font-weight:800}.catalog-add{display:grid;place-items:center;width:29px;height:29px;border-radius:.5rem;color:#fff;background:var(--brand);font-size:1.05rem;font-weight:500;line-height:1}.catalog-add:hover{color:#fff;background:var(--brand-dark)}.catalog-rows{padding:.15rem .8rem}.catalog-row{display:flex;align-items:center;justify-content:space-between;gap:.7rem;min-height:47px;padding:.5rem .1rem;border-bottom:1px solid #efefec}.catalog-row:last-child{border-bottom:0}.catalog-row>div:first-child{display:flex;align-items:center;min-width:0;gap:.5rem}.catalog-row>div:first-child span{display:grid;place-items:center;min-width:28px;height:25px;border-radius:.42rem;color:#78878e;background:#f1f2f1;font-size:.63rem;font-weight:700}.catalog-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem}.catalog-actions{display:flex;align-items:center;gap:.25rem;flex:0 0 auto}.catalog-actions a,.catalog-actions button{padding:.28rem .42rem;border:0;border-radius:.38rem;background:transparent;font-size:.68rem;font-weight:700}.catalog-actions a:first-child{color:#288164}.catalog-actions a:nth-child(2){color:#3f6f9d}.catalog-actions button{color:#bd4c59}.catalog-actions a:hover,.catalog-actions button:hover{background:#f2f3f2}.catalog-empty{padding:1.15rem;text-align:center;color:#87949a;font-size:.78rem}
@media(max-width:991.98px){.catalog-compact-grid{grid-template-columns:1fr}}
@media(max-width:575.98px){.catalog-page-head{align-items:flex-start;flex-direction:column}.catalog-row{align-items:flex-start;flex-direction:column}.catalog-actions{width:100%;justify-content:flex-end}.catalog-card>header{grid-template-columns:auto 1fr auto}.catalog-card-count{display:none}.sidebar-user b,.sidebar-user small{max-width:170px}}

/* Gestión profesional de usuarios */
.users-page{max-width:1320px}.users-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.9rem}.users-head h2{margin:.3rem 0 .12rem;font-size:1.4rem}.users-head p{margin:0;color:#71818a;font-size:.86rem}.users-summary{display:grid;grid-template-columns:135px 115px 135px minmax(270px,1fr);gap:.55rem;margin-bottom:.75rem}.users-summary>div,.users-search{display:flex;align-items:center;gap:.58rem;min-height:51px;padding:.65rem .8rem;border:1px solid #e3e5e3;border-radius:.72rem;background:#fff}.users-summary>div strong{font-size:1.2rem;line-height:1}.users-summary>div span{color:#74848b;font-size:.68rem;line-height:1.2}.users-search{justify-self:end;width:min(100%,390px);padding:.4rem .75rem}.users-search>span{color:#829198;font-size:1.2rem}.users-search input{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font-size:.8rem}.users-search input::placeholder{color:#98a2a7}.users-table-card{overflow:hidden;border:1px solid #e3e5e3;border-radius:.85rem;background:#fff;box-shadow:0 4px 16px rgba(24,53,71,.035)}.users-table{min-width:1020px}.users-table thead th{padding:.68rem .8rem;border-bottom-color:#e8e9e7;background:#f8f8f6;color:#74838a;font-size:.66rem;letter-spacing:.09em}.users-table tbody td{padding:.68rem .8rem;border-bottom-color:#eeeeeb}.users-table tbody tr:last-child td{border-bottom:0}.user-identity{display:flex;align-items:center;gap:.65rem;min-width:170px}.user-avatar{display:grid;place-items:center;width:36px;height:36px;flex:0 0 36px;border-radius:.62rem;font-size:.68rem;font-weight:800}.avatar-tone-0{color:#6555aa;background:#eeeafb}.avatar-tone-1{color:#257657;background:#e5f4ed}.avatar-tone-2{color:#a16d0b;background:#fff2d1}.avatar-tone-3{color:#286f91;background:#e5f2f7}.user-identity strong,.user-identity small,.user-contact span,.user-contact small,.subject-name{display:block}.user-identity strong{max-width:175px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem}.user-identity small{margin-top:.08rem;color:#95a0a5;font-size:.62rem}.user-contact span{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.77rem}.user-contact small,.subject-name{margin-top:.15rem;color:#87949a;font-size:.67rem}.role-pill{display:inline-flex;padding:.27rem .5rem;border-radius:99px;font-size:.66rem;font-weight:800}.admin-role{color:#6555aa;background:#eeeafb}.teacher-role{color:#257657;background:#e5f4ed}.permission-pills{display:flex;gap:.3rem}.permission-pills span{display:inline-flex;align-items:center;gap:.25rem;padding:.28rem .42rem;border:1px solid #e5e7e5;border-radius:.42rem;color:#a0aaae;background:#fafafa;font-size:.63rem}.permission-pills span.enabled{color:#4960a2;border-color:#dcd8f0;background:#f5f3fc}.permission-pills b{font-weight:700}.account-status{display:inline-flex;align-items:center;gap:.35rem;color:#7a898f;font-size:.68rem;font-weight:700}.account-status i{width:6px;height:6px;border-radius:50%;background:#a8b0b3}.account-status.active{color:#28775a}.account-status.active i{background:#42a77e;box-shadow:0 0 0 3px #e5f4ed}.account-status.inactive{color:#a14e59}.user-actions{display:flex;align-items:center;justify-content:flex-end;gap:.18rem}.user-actions a,.user-actions button{padding:.28rem .42rem;border:0;border-radius:.38rem;background:transparent;font-size:.67rem;font-weight:700}.view-action{color:#28775a}.edit-action{color:#3d6f9f}.user-actions .delete-action{color:#bb4d59}.user-actions a:hover,.user-actions button:hover{background:#f0f2f1}.users-empty-search{padding:2rem;text-align:center;color:#7c8b92;font-size:.82rem}
@media(max-width:991.98px){.users-summary{grid-template-columns:repeat(3,1fr)}.users-search{grid-column:1/-1;justify-self:stretch;width:100%}}
@media(max-width:575.98px){.users-head{align-items:flex-start;flex-direction:column}.users-head .btn{width:100%}.users-summary{grid-template-columns:repeat(3,1fr)}.users-summary>div{align-items:flex-start;flex-direction:column;gap:.18rem;padding:.55rem}.users-summary>div strong{font-size:1.05rem}}

/* Acceso único, compacto y profesional */
.compact-auth{grid-template-columns:1.05fr .95fr}.compact-auth .auth-brand{padding:clamp(3.5rem,7vw,6.5rem);background:linear-gradient(135deg,rgba(21,48,64,.98),rgba(34,69,86,.92)),url('https://images.unsplash.com/photo-1509062522246-3755977927d7?auto=format&fit=crop&w=1600&q=85') center/cover}.compact-auth .auth-brand:after{width:210px;height:210px;border-width:24px}.compact-auth .brand-content{max-width:580px}.compact-auth .brand-content h1{max-width:570px;margin:1rem 0;font-size:clamp(2.55rem,4.6vw,4.1rem)}.compact-auth .brand-content p{max-width:510px;margin-bottom:0;font-size:1rem}.auth-features{display:flex;flex-direction:column;gap:.7rem;margin-top:1.8rem}.auth-features span{display:flex;align-items:center;gap:.65rem;color:#dce6ea;font-size:.83rem}.auth-features i{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;color:#193747;background:var(--yellow);font-size:.68rem;font-style:normal;font-weight:900}.auth-brand-note{position:absolute;left:clamp(3.5rem,7vw,6.5rem);bottom:2rem;color:#829ba7;font-size:.7rem;letter-spacing:.06em}.compact-auth .login-panel{padding:1.5rem;background:radial-gradient(circle at 100% 0,#eeeafb 0,transparent 30%),#faf9f5}.login-container{width:min(405px,100%);padding:1.8rem 2rem;border:1px solid rgba(229,229,225,.9);border-radius:1.15rem;background:rgba(255,255,255,.95);box-shadow:0 18px 52px rgba(24,53,71,.1)}.login-container .mini-logo{padding-bottom:1.1rem;border-bottom:1px solid #ecece9}.login-container .mini-logo img{width:46px;height:46px}.login-container .mini-logo b{font-size:.96rem}.login-container .mini-logo small{font-size:.63rem}.login-heading{padding:1.3rem 0 1rem}.login-heading h2{margin:.35rem 0 .18rem;font-size:1.65rem}.login-heading p{margin:0;color:#71818a;font-size:.82rem}.login-form{display:flex;flex-direction:column;gap:.9rem}.login-form .form-label{margin-bottom:.35rem;font-size:.78rem}.login-control{display:flex;align-items:center;min-height:44px;border:1px solid #d9dcda;border-radius:.65rem;background:#fff;transition:.18s}.login-control:focus-within{border-color:var(--brand);box-shadow:0 0 0 .2rem rgba(105,87,198,.11)}.login-control>span{display:grid;place-items:center;width:40px;color:#8a979d;font-size:.75rem;border-right:1px solid #ecece9}.login-control input{width:100%;padding:.6rem .72rem;border:0;outline:0;background:transparent;color:var(--ink);font-size:.86rem}.login-control input::placeholder{color:#a1aaae}.login-submit{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:.2rem;min-height:44px;font-size:.85rem}.login-submit span{font-size:1rem}.login-security{display:flex;align-items:center;gap:.65rem;margin-top:1rem;padding:.65rem .75rem;border-radius:.62rem;background:#f5f3fc}.login-security>span{display:grid;place-items:center;width:25px;height:25px;flex:0 0 25px;border-radius:50%;color:#fff;background:var(--brand);font-size:.68rem;font-weight:800}.login-security p,.login-security strong,.login-security small{display:block;margin:0}.login-security strong{font-size:.7rem}.login-security small{margin-top:.05rem;color:#78868c;font-size:.63rem}.login-help{margin:1rem 0 0;text-align:center;color:#849097;font-size:.7rem}.login-help a{color:var(--brand);font-weight:800}
@media(max-width:991.98px){.compact-auth{display:block}.compact-auth .login-panel{min-height:100vh}.login-container{margin:auto}}
@media(max-width:575.98px){.compact-auth .login-panel{padding:1rem}.login-container{padding:1.45rem 1.25rem;border-radius:1rem}.login-heading{padding-top:1.1rem}}

/* Dashboard ejecutivo con KPI y gráficos */
.executive-dashboard{max-width:1300px}.executive-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.executive-head h2{margin:.3rem 0 .12rem;font-size:1.45rem}.executive-head p{margin:0;color:#71818a;font-size:.85rem}.executive-head>div:last-child{display:flex;align-items:center;gap:.7rem}.dashboard-date{color:#829097;font-size:.63rem;font-weight:800;letter-spacing:.11em}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem;margin-bottom:.8rem}.kpi-card{padding:.9rem 1rem;border:1px solid #e4e6e4;border-radius:.82rem;color:var(--ink);background:#fff;box-shadow:0 4px 15px rgba(24,53,71,.035);transition:.18s}.kpi-card:hover{color:var(--ink);border-color:#cec8e9;transform:translateY(-2px);box-shadow:0 10px 25px rgba(24,53,71,.07)}.kpi-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:.55rem}.kpi-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:.55rem;font-size:.7rem;font-weight:900}.kpi-icon.purple{color:#6555aa;background:#eeeafb}.kpi-icon.green{color:#257657;background:#e5f4ed}.kpi-icon.yellow{color:#a16d0b;background:#fff2d1}.kpi-icon.blue{color:#286f91;background:#e5f2f7}.kpi-link{color:#a4adb1;font-size:.8rem}.kpi-card>strong{display:block;font-size:1.55rem;line-height:1}.kpi-card h3{margin:.3rem 0 .08rem;font-size:.82rem}.kpi-card p{margin:0;color:#829097;font-size:.67rem}.dashboard-analysis-grid{display:grid;grid-template-columns:1fr 1.25fr;gap:.8rem;margin-bottom:.8rem}.analytics-card,.operations-card{border:1px solid #e4e6e4;border-radius:.85rem;background:#fff;box-shadow:0 4px 15px rgba(24,53,71,.035)}.analytics-card{padding:1rem 1.1rem}.analytics-card>header,.operations-card>header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:.75rem;border-bottom:1px solid #eeeeeb}.analytics-card h3,.operations-card h3{margin:.15rem 0 0;font-size:.94rem}.analytics-kicker{display:block;color:var(--brand);font-size:.58rem;font-weight:900;letter-spacing:.13em}.analytics-card header a{color:var(--brand);font-size:.67rem;font-weight:700}.analytics-total{padding:.28rem .5rem;border-radius:99px;color:#65767e;background:#f0f1ef;font-size:.66rem;font-weight:700}.donut-content{display:flex;align-items:center;justify-content:center;gap:2rem;min-height:180px}.donut-chart{position:relative;display:grid;place-items:center;width:130px;height:130px;flex:0 0 130px;border-radius:50%;background:conic-gradient(var(--brand) calc(var(--value)*1%),#dce3e5 0)}.donut-chart:before{content:'';position:absolute;inset:18px;border-radius:50%;background:#fff}.donut-chart>div{position:relative;text-align:center}.donut-chart strong,.donut-chart span{display:block}.donut-chart strong{font-size:1.35rem;line-height:1}.donut-chart span{margin-top:.2rem;color:#829097;font-size:.63rem}.chart-legend{min-width:145px}.chart-legend>div{display:flex;align-items:center;gap:.55rem;margin-bottom:.65rem}.chart-legend i{width:8px;height:8px;border-radius:50%}.legend-purple{background:var(--brand)}.legend-slate{background:#dce3e5}.chart-legend p,.chart-legend span,.chart-legend strong{display:block;margin:0}.chart-legend p{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%;font-size:.72rem}.chart-legend span{color:#71818a}.chart-legend small{display:block;max-width:170px;padding-top:.5rem;border-top:1px solid #eeeeeb;color:#929da2;font-size:.6rem;line-height:1.45}.horizontal-metrics{display:flex;flex-direction:column;gap:1rem;padding:1rem 0 .8rem}.metric-label{display:flex;justify-content:space-between;margin-bottom:.35rem;font-size:.72rem}.metric-track{height:8px;overflow:hidden;border-radius:99px;background:#edf0ef}.metric-track i{display:block;height:100%;min-width:0;border-radius:99px}.test-bar{background:linear-gradient(90deg,var(--brand),#8b7adc)}.tabulator-bar{background:linear-gradient(90deg,#347c9b,#60a6c0)}.horizontal-metrics small{display:block;margin-top:.25rem;color:#8b989e;font-size:.6rem}.resource-efficiency{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:.5rem;padding:.55rem .7rem;border-radius:.62rem;background:#f7f7f4}.resource-efficiency span{color:#71818a;font-size:.66rem}.resource-efficiency strong{font-size:1rem}.resource-efficiency p{margin:0;color:#71818a;font-size:.66rem}.operations-card{padding:1rem 1.1rem}.operations-card>header>span{color:#849198;font-size:.67rem}.operations-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem;padding-top:.8rem}.operations-grid a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.55rem;padding:.65rem;border:1px solid #e8e9e7;border-radius:.65rem;color:var(--ink);transition:.18s}.operations-grid a:hover{border-color:#d2cceb;background:#faf9ff}.operations-grid a>span{display:grid;place-items:center;width:30px;height:30px;border-radius:.5rem;color:var(--brand);background:var(--brand-soft);font-size:.65rem;font-weight:900}.operations-grid strong,.operations-grid small{display:block}.operations-grid strong{font-size:.72rem}.operations-grid small{margin-top:.08rem;color:#859298;font-size:.6rem}.operations-grid b{color:var(--brand);font-size:.7rem}
@media(max-width:991.98px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.dashboard-analysis-grid{grid-template-columns:1fr}.operations-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:575.98px){.executive-head{align-items:flex-start;flex-direction:column}.executive-head>div:last-child{width:100%;justify-content:space-between}.dashboard-date{display:none}.executive-head .btn{width:100%}.kpi-grid{grid-template-columns:1fr 1fr}.donut-content{gap:1rem}.operations-grid{grid-template-columns:1fr}.operations-card>header>span{display:none}}
