:root{--navy:#0b2855;--blue:#1f66ad;--cyan:#20a7bb;--ink:#18263d;--muted:#718096;--line:#e6ebf2;--paper:#f5f7fb;--shadow:0 12px 35px rgba(20,48,83,.08)}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 80% 0,#e9f5fa 0,transparent 28%),var(--paper);color:var(--ink);font:14px Arial,sans-serif}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:270px 1fr}.sidebar{position:sticky;top:0;height:100vh;padding:26px 18px 20px;background:linear-gradient(165deg,#10386f,#0b2855 50%,#081f42);color:#fff;display:flex;flex-direction:column;box-shadow:10px 0 35px #0a24491f}.brand{display:flex;gap:12px;align-items:center;padding:0 10px 24px;border-bottom:1px solid #ffffff1f}.brand>b,.login-brand>b{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:linear-gradient(145deg,#2cc7d2,#1a70bd);font-size:24px}.brand strong,.brand small,.login-brand strong,.login-brand small{display:block}.brand strong{font-size:17px;letter-spacing:.12em}.brand small{font-size:9px;color:#98b8dc;margin-top:3px;text-transform:uppercase;letter-spacing:.08em}nav{margin-top:18px;display:grid;gap:5px}nav>p{margin:15px 12px 6px;font-size:9px;font-weight:bold;letter-spacing:.14em;color:#6f93bc}nav>a{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:11px;color:#bdcce0;transition:.18s}nav>a:hover{background:#ffffff10;color:#fff;transform:translateX(2px)}nav>a>i{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#ffffff0b;font-style:normal;font-size:17px}nav>a>span{font-size:12px;font-weight:bold}nav>a small{display:block;margin-top:3px;color:#7698bd;font-size:9px;font-weight:normal}nav>a.active{background:#fff;color:var(--navy);box-shadow:0 12px 25px #04193740}nav>a.active i{background:#e5f4f8;color:#1779a5}nav>a.active small{color:#728399}.account{margin-top:auto;display:flex;align-items:center;gap:9px;padding:11px;border:1px solid #ffffff16;border-radius:13px;background:#ffffff0b;min-width:0}.account>b{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:linear-gradient(145deg,#31b8c4,#2678b9)}.account>div{min-width:0;flex:1}.account strong,.account small,.account em{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account strong{font-size:11px}.account small{font-size:9px;color:#8fb3d5;margin:3px 0}.account em{font-size:8px;color:#6f93b8;font-style:normal}.account>a{font-size:18px;color:#a9c4df}.workspace{min-width:0;padding:38px 44px 64px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.page-head>div>span,.panel-head>span{font-size:9px;font-weight:bold;letter-spacing:.15em;color:#2482ac}.page-head h1{font-size:31px;letter-spacing:-.04em;margin:8px 0 5px}.page-head p{margin:0;color:var(--muted);font-size:13px}.role-chip{padding:10px 14px;border-radius:999px;background:#fff;box-shadow:var(--shadow);font-size:11px;color:#49617c}.panel{background:#fff;border-radius:17px;box-shadow:var(--shadow);overflow:hidden}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:26px}.kpis article{padding:21px 22px;border-radius:17px;background:#fff;box-shadow:var(--shadow)}.kpis span{font-size:9px;font-weight:bold;color:#8290a4;letter-spacing:.11em}.kpis strong{display:block;font-size:30px;margin:12px 0 7px}.kpis small{font-size:10px;color:#8b97a9}.kpis .accent{background:linear-gradient(140deg,#0f4d89,#167ba4);color:#fff}.kpis .accent span,.kpis .accent small{color:#c9dfef}.dashboard-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;margin:16px 0}.panel-head{padding:21px 24px 15px;border-bottom:1px solid var(--line)}.panel-head h2{font-size:17px;margin:5px 0 0}.ranking{padding:18px 24px}.ranking>div{display:grid;grid-template-columns:25px 1fr 35px;gap:10px;align-items:center;margin:11px 0}.ranking>div>b{font-size:10px;color:#9ba6b5}.ranking>div>span{font-size:11px}.ranking small{display:inline;margin-left:6px;color:#8c98a7}.ranking i{display:block;height:5px;margin-top:6px;border-radius:5px;background:#edf2f7;overflow:hidden}.ranking em{display:block;height:100%;background:linear-gradient(90deg,#27acbd,#2771ad)}.ranking>div>strong{text-align:right;font-size:11px}.permission-card{text-align:center;padding:30px}.permission-card>b{display:grid;place-items:center;width:60px;height:60px;margin:auto;border-radius:18px;background:#e7f4f8;color:#287ba3;font-size:27px}.permission-card h3{margin:13px 0 6px}.permission-card p{font-size:11px;line-height:1.7;color:#718096}.table-panel{margin-top:16px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;min-width:900px}th{text-align:left;padding:12px 15px;background:#f7f9fc;color:#718096;font-size:9px;letter-spacing:.08em;text-transform:uppercase}td{padding:13px 15px;border-top:1px solid #edf0f5;color:#5c697b;font-size:10px;vertical-align:top}tbody tr:hover{background:#f7fbfd}.site-pill,.tag,.role,.action{display:inline-block;padding:5px 9px;border-radius:999px;font-size:8px;font-weight:bold}.site-pill{background:#e8f3fa;color:#1d668f}.tag.asistencia,.tag.excelente,.tag.saldado{background:#e2f5e9;color:#207543}.tag.falta{background:#fde7e8;color:#aa3a48}.tag.retardo,.tag.regular,.tag.pendiente{background:#fff2d9;color:#9a6717}.tag.permiso,.tag.vacaciones,.tag.incapacidad{background:#e6effb;color:#2b66a2}.role.admin{background:#e5eefb;color:#275f9e}.role.provider{background:#e8f6ee;color:#24794c}.action.create{background:#e5f5eb;color:#25794b}.action.update{background:#fff2d9;color:#956619}.action.delete{background:#fde9eb;color:#a23e4b}.truncate{max-width:380px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.comment{max-width:480px;font-style:italic}.toolbar{display:flex;justify-content:space-between;gap:15px;margin:26px 0 14px;padding:14px 16px;border-radius:15px;background:#fff;box-shadow:var(--shadow)}.toolbar form{display:flex;gap:9px;flex:1}.toolbar select,.toolbar input,.toolbar button,.form-grid input,.form-grid select,.form-grid textarea{height:39px;border:1px solid #dfe6ef;border-radius:10px;background:#f8fafc;padding:0 11px;color:#243650}.toolbar select{min-width:260px}.toolbar input{min-width:240px}.toolbar button{cursor:pointer;color:#286693}.primary{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:11px;background:linear-gradient(135deg,#2468a7,#1c9fb6);color:#fff!important;font-weight:bold;padding:11px 17px;cursor:pointer;box-shadow:0 9px 22px #1d6f9d38}.readonly{margin:0 0 14px;padding:12px 15px;border:1px solid #f2dfb4;background:#fff8e8;border-radius:12px;color:#8b651b;font-size:11px}.actions{display:flex;gap:6px}.actions>a,.actions button{border:0;border-radius:7px;background:#edf5fa;color:#2a6095;padding:6px 9px;font-size:9px;cursor:pointer}.actions form{display:inline}.actions button{background:#fff0f1;color:#a74450}.form-panel{margin-top:26px}.form-panel form{padding:22px 24px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-grid label{font-size:10px;font-weight:bold;color:#69778b}.form-grid input,.form-grid select,.form-grid textarea{display:block;width:100%;margin-top:6px}.form-grid textarea{height:100px;padding:10px;resize:vertical}.form-grid .wide{grid-column:1/-1}.form-grid .check{display:flex;align-items:center;gap:8px}.form-grid .check input{width:auto}.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:20px;padding-top:17px;border-top:1px solid var(--line)}.form-actions>a{padding:11px 15px}.empty{display:flex;align-items:center;justify-content:center;flex-direction:column;min-height:230px;color:#8794a7}.empty>b{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:#eaf4fa;color:#2b80a8;font-size:24px}.empty strong{margin-top:11px;color:#34445b}.empty p{font-size:10px}.alert{margin:20px 0 0;padding:12px 15px;border-radius:10px}.alert.ok,.alert.success{background:#e7f6ed;color:#267449}.alert.error{background:#fdebed;color:#9b3e49}
.auth-body{min-height:100vh;display:grid;place-items:center;padding:25px;background:linear-gradient(145deg,#0d2e5d,#0b2145)}.login-card,.install-card{width:min(430px,100%);padding:30px;border-radius:22px;background:#fff;box-shadow:0 30px 90px #02102666}.install-card{width:min(760px,100%)}.login-brand{display:flex;gap:12px;align-items:center}.login-brand strong{font-size:18px;letter-spacing:.12em}.login-brand small{margin-top:3px;font-size:9px;color:#718096;text-transform:uppercase}.login-copy{margin:35px 0 22px}.login-copy span{font-size:9px;font-weight:bold;letter-spacing:.15em;color:#2783ad}.login-copy h1,.install-card h1{margin:8px 0 5px;font-size:30px}.login-copy p,.install-card>p{color:#718096;font-size:12px}.login-form{display:grid;gap:15px}.login-form label,.install-form label{font-size:10px;font-weight:bold;color:#66758a}.login-form input,.install-form input{display:block;width:100%;height:43px;margin-top:6px;border:1px solid #dfe6ef;border-radius:10px;background:#f8fafc;padding:0 12px}.login-form .primary{height:45px;margin-top:5px}.secure-note{display:block;text-align:center;margin-top:20px;color:#98a3b3;font-size:9px}.install-form fieldset{border:1px solid #e2e8f0;border-radius:14px;margin:18px 0;padding:18px}.install-form legend{padding:0 8px;font-size:11px;font-weight:bold;color:#2c6b95}
@media(max-width:1050px){.app-shell{grid-template-columns:82px 1fr}.sidebar{padding:22px 12px}.brand div,nav a span,nav>p,.account{display:none}.brand{padding:0 7px 22px;border:0}nav a{justify-content:center}.workspace{padding:30px 22px}.kpis{grid-template-columns:1fr 1fr}}@media(max-width:720px){.app-shell{display:block}.sidebar{position:sticky;z-index:10;width:100%;height:auto;padding:10px 14px}.brand,.account{display:none}.sidebar nav{display:flex;overflow:auto;margin:0}.sidebar nav a{min-width:48px}.workspace{padding:24px 13px}.page-head h1{font-size:25px}.role-chip{display:none}.kpis,.dashboard-grid{grid-template-columns:1fr 1fr}.toolbar,.toolbar form{display:grid}.toolbar select,.toolbar input{min-width:0;width:100%}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.dashboard-grid{grid-template-columns:1fr}.install-card{padding:22px}}

/* Identidad visual CONSJA */
:root{--consja-yellow:#ffdb00;--consja-dark:#2f302c;--consja-black:#171815;--consja-soft:#fff8cf;--navy:#2f302c;--blue:#55564f;--cyan:#ffdb00;--ink:#282a27;--paper:#f6f6f3;--shadow:0 14px 40px rgba(37,38,34,.09)}
body{background:radial-gradient(circle at 88% 2%,#fff5ad 0,transparent 25%),var(--paper)}
.sidebar{background:linear-gradient(170deg,#353630,#242520 60%,#171815);box-shadow:10px 0 35px rgba(20,20,18,.2)}
.brand{min-height:72px}.brand img{width:78px;height:45px;object-fit:cover;object-position:left;border-radius:8px;background:#fff}.brand strong{color:#fff}.brand small{color:#c8c8bd}
nav>p{color:#94958b}nav>a{color:#d3d3ca}nav>a small{color:#92938a}nav>a:hover{background:#ffffff12}nav>a.active{background:var(--consja-yellow);color:#20211e;box-shadow:0 12px 28px rgba(0,0,0,.24)}nav>a.active i{background:#ffffff80;color:#20211e}nav>a.active small{color:#5b5c53}
.account>b{background:var(--consja-yellow);color:#242520}.page-head>div>span,.panel-head>span,.login-copy span{color:#9b8500}.role-chip{border:1px solid #e8e8df}.kpis article{border:1px solid #eeeeE7}.kpis .accent{background:linear-gradient(140deg,#3b3c36,#22231f);border-top:4px solid var(--consja-yellow)}
.primary{background:linear-gradient(135deg,#ffdf1f,#f2c900);color:#20211e!important;box-shadow:0 9px 22px rgba(211,177,0,.27)}.primary:hover{filter:brightness(.98);transform:translateY(-1px)}
.ranking em{background:linear-gradient(90deg,#ffdf1f,#d6b600)}.permission-card>b,.empty>b{background:var(--consja-soft);color:#756400}.site-pill{background:#f2f2eb;color:#4b4c45}.toolbar button{color:#6f6100}.auth-body{background:radial-gradient(circle at 80% 20%,#665c18 0,transparent 26%),linear-gradient(145deg,#33342f,#171815)}
.login-brand img{width:155px;height:58px;object-fit:cover;object-position:left;background:#fff;border-radius:8px}.login-brand>div{display:none}.login-card,.install-card{border-top:6px solid var(--consja-yellow)}.install-form legend{color:#746400}

/* Expediente didáctico de actividades */
.activity-hero{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-top:26px;padding:28px 32px;border-radius:20px;background:linear-gradient(130deg,#30312d,#20211e);color:#fff;overflow:hidden;position:relative}.activity-hero:after{content:"";position:absolute;width:230px;height:230px;right:-70px;top:-90px;border:42px solid #ffdc00;border-radius:50%;opacity:.95}.activity-hero>div:first-child{position:relative;z-index:1}.activity-hero span{font-size:9px;letter-spacing:.16em;color:#ffdf27;font-weight:bold}.activity-hero h2{font-size:25px;margin:8px 0}.activity-hero p{margin:0;color:#c9cac3;font-size:12px}.hero-icon{position:relative;z-index:1;display:grid;place-items:center;width:72px;height:72px;border-radius:22px;background:#ffdc00;color:#252621;font-size:35px;box-shadow:0 14px 30px #0003}
.activity-filter{margin-top:16px;padding:20px 22px;border-left:5px solid var(--consja-yellow)}.activity-filter form{display:grid;grid-template-columns:1.25fr .8fr 1fr 1fr auto;gap:12px;align-items:end}.activity-filter label>span{display:block;margin:0 0 7px;font-size:9px;font-weight:bold;color:#6d6e66;text-transform:uppercase;letter-spacing:.06em}.activity-filter input,.activity-filter select{width:100%;height:43px;padding:0 11px;border:1px solid #dedfd7;border-radius:11px;background:#fafaf7;color:#30312d}.activity-filter .primary{height:43px;white-space:nowrap}
.activity-welcome{display:flex;flex-direction:column;align-items:center;text-align:center;margin-top:16px;padding:55px 25px}.welcome-graphic{display:flex;align-items:center;gap:10px}.welcome-graphic b{display:grid;place-items:center;width:45px;height:45px;border-radius:14px;background:#ffdc00;color:#262722;font-size:17px}.welcome-graphic i{font-style:normal;color:#b7b8b0}.activity-welcome h2{margin:20px 0 7px}.activity-welcome p{margin:0;color:#81827b}
.employee-summary{display:grid;grid-template-columns:auto 1fr repeat(3,auto);align-items:center;gap:22px;margin-top:16px;padding:22px 26px;border-top:4px solid var(--consja-yellow)}.employee-avatar{display:grid;place-items:center;width:62px;height:62px;border-radius:19px;background:#292a26;color:#ffdc00;font-size:27px;font-weight:bold}.employee-main span{font-size:8px;letter-spacing:.14em;color:#8b7900;font-weight:bold}.employee-main h2{margin:6px 0 5px;font-size:20px}.employee-main p{margin:0;color:#84857e;font-size:10px}.mini-stat{min-width:95px;padding-left:18px;border-left:1px solid #e8e8e1}.mini-stat strong,.mini-stat span{display:block}.mini-stat strong{font-size:20px}.mini-stat span{margin-top:4px;color:#92938c;font-size:9px}
.activity-list{margin-top:16px}.timeline{padding:22px 26px}.timeline article{display:grid;grid-template-columns:58px 18px 1fr;gap:14px;position:relative}.timeline article:not(:last-child){padding-bottom:18px}.timeline article:not(:last-child):before{content:"";position:absolute;left:80px;top:20px;bottom:-3px;width:2px;background:#ecece5}.timeline-date{text-align:center}.timeline-date strong,.timeline-date span,.timeline-date small{display:block}.timeline-date strong{font-size:22px}.timeline-date span{font-size:9px;font-weight:bold;color:#8e7a00}.timeline-date small{font-size:8px;color:#9b9c94}.timeline-dot{z-index:1;width:12px;height:12px;margin-top:5px;border:3px solid #fff;border-radius:50%;background:#ffcf00;box-shadow:0 0 0 2px #ffcf00}.timeline-card{margin-bottom:2px;padding:16px 18px;border:1px solid #ecece6;border-radius:14px;background:#fbfbf8;transition:.18s}.timeline-card:hover{border-color:#ebcf25;box-shadow:0 9px 25px rgba(60,60,52,.08);transform:translateY(-1px)}.timeline-card p{margin:10px 0 8px;line-height:1.55;color:#4f504a;font-size:11px}.timeline-card>small{color:#a0a199;font-size:8px}.activity-pill,.code-pill{display:inline-block;padding:5px 9px;border-radius:999px;font-size:8px;font-weight:bold}.activity-pill{background:#fff2a2;color:#685900}.code-pill{margin-left:5px;background:#eeeeE8;color:#60615a}
@media(max-width:1200px){.activity-filter form{grid-template-columns:1fr 1fr}.activity-filter .primary{grid-column:1/-1}.employee-summary{grid-template-columns:auto 1fr repeat(3,1fr)}.mini-stat{grid-row:2}}
@media(max-width:720px){.brand img{width:42px}.activity-hero{padding:23px}.hero-icon{display:none}.activity-filter form{grid-template-columns:1fr}.activity-filter .primary{grid-column:auto}.employee-summary{grid-template-columns:auto 1fr}.mini-stat{grid-row:auto;min-width:0}.timeline{padding:18px 12px}.timeline article{grid-template-columns:48px 14px 1fr}.timeline article:not(:last-child):before{left:67px}}

/* Analítica visual por site y descargas */
.download-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 13px;border:1px solid #dfd28a;border-radius:10px;background:#fffbed;color:#6d5d00;font-size:10px;font-weight:bold;white-space:nowrap}.download-btn:hover{background:#ffef88;color:#302a00}.activity-download{display:flex;justify-content:flex-end;margin:14px 0 -2px}.toolbar>.download-btn{order:2}.toolbar>form{order:1}.toolbar>.primary{order:3}
.site-banner{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-top:26px;padding:27px 30px;border-radius:20px;background:linear-gradient(130deg,#30312d,#20211e);color:#fff;border-bottom:5px solid var(--consja-yellow)}.site-banner span{font-size:9px;letter-spacing:.16em;color:#ffdf27;font-weight:bold}.site-banner h2{margin:8px 0 5px;font-size:25px}.site-banner p{margin:0;color:#c9cac3;font-size:11px}.site-banner select{min-width:230px;height:45px;padding:0 14px;border:2px solid #ffdc00;border-radius:12px;background:#fff;color:#292a26;font-weight:bold}
.site-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-top:16px}.site-kpis article{display:flex;align-items:center;gap:15px;padding:20px;border:1px solid #ecece5;border-radius:17px;background:#fff;box-shadow:var(--shadow)}.site-kpis article>i{display:grid;place-items:center;width:45px;height:45px;border-radius:14px;background:#f2f2ec;color:#5c5d56;font-size:21px;font-style:normal}.site-kpis span,.site-kpis strong,.site-kpis small{display:block}.site-kpis span{font-size:8px;font-weight:bold;letter-spacing:.09em;color:#93948d}.site-kpis strong{margin:5px 0 3px;font-size:23px}.site-kpis small{font-size:8px;color:#9b9c95}.site-kpis article.yellow{background:#ffdc00;border-color:#ffdc00}.site-kpis article.yellow>i{background:#fff9cf;color:#5e5100}.site-kpis article.yellow span,.site-kpis article.yellow small{color:#6b5d00}.site-kpis article.yellow strong{font-size:13px;line-height:1.25}
.site-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:16px;margin-top:16px}.chart-panel .panel-head p{margin:6px 0 0;color:#96978f;font-size:9px}.bar-chart{padding:20px 24px}.bar-row{margin-bottom:17px}.bar-label{display:grid;grid-template-columns:25px 1fr auto;gap:8px;align-items:center;margin-bottom:7px}.bar-label b{color:#b0a000;font-size:9px}.bar-label span{font-size:10px;font-weight:bold;color:#4a4b45}.bar-label strong{font-size:10px}.bar-track{height:9px;border-radius:10px;background:#efefe9;overflow:hidden}.bar-track i{display:block;height:100%;border-radius:10px;background:linear-gradient(90deg,#ffdc00,#efbd00);box-shadow:3px 0 8px #ebc50066}.site-bars{display:grid;gap:14px;padding:20px 24px}.site-bars a{display:block}.site-bars a>div{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center}.site-bars b{font-size:10px}.site-bars span{font-size:8px;color:#96978f}.site-bars strong{font-size:10px}.site-bars a>i{display:block;height:6px;margin-top:6px;border-radius:8px;background:#eeeeE8;overflow:hidden}.site-bars em{display:block;height:100%;border-radius:8px;background:#4b4c46}.site-bars a:hover em{background:#e8bf00}
.people-panel{margin-top:16px}.split-head{display:flex;justify-content:space-between;align-items:center;gap:15px}.people-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#ecece6}.people-grid article{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:17px;background:#fff}.people-grid article>b{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:#2d2e2a;color:#ffdc00}.people-grid article div strong,.people-grid article div span{display:block}.people-grid article div strong{font-size:10px}.people-grid article div span{margin-top:4px;color:#96978f;font-size:8px}.people-grid article>em{font-size:13px;font-style:normal;font-weight:bold}.people-grid article>em small{font-size:7px;color:#9b9c95;font-weight:normal}
@media(max-width:1150px){.site-kpis{grid-template-columns:1fr 1fr}.site-grid{grid-template-columns:1fr}.people-grid{grid-template-columns:1fr 1fr}.toolbar{flex-wrap:wrap}.toolbar>form{min-width:100%}}
@media(max-width:720px){.site-banner{align-items:stretch;flex-direction:column}.site-banner select{width:100%;min-width:0}.site-kpis{grid-template-columns:1fr}.people-grid{grid-template-columns:1fr}.split-head{align-items:flex-start;flex-direction:column}.download-btn{width:100%}.activity-download{margin-top:12px}.toolbar>.download-btn{order:3}.toolbar>.primary{order:2}}
