
:root{--bg:#f4f6f8;--panel:#fff;--text:#17212b;--muted:#66727e;--primary:#0b63ce;--dark:#102a43;--line:#e2e8f0;--ok:#16834b;--warn:#b7791f;--bad:#c53030;--teal:#168f80;--shadow:0 4px 18px rgba(20,43,67,.06)}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}
.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#102a43,#0b63ce);padding:20px}.login-card{width:min(440px,94vw);background:#fff;border-radius:18px;padding:32px;box-shadow:0 25px 70px #0005}.brand{font-size:28px;font-weight:800;color:var(--primary)}.muted{color:var(--muted)}.small{font-size:12px}.login-card input{width:100%;padding:12px;margin:8px 0 14px;border:1px solid var(--line);border-radius:9px}
.primary{background:var(--primary);color:#fff;border:0;border-radius:8px;padding:10px 15px;font-weight:700}.secondary{background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 14px}.danger{background:#fff;color:var(--bad);border:1px solid #f3b5b5;border-radius:8px;padding:8px 12px}.successBtn{background:var(--ok);color:#fff;border:0;border-radius:8px;padding:9px 13px}
.layout{display:grid;grid-template-columns:255px 1fr;min-height:100vh}.sidebar{background:var(--dark);color:#dce8f3;padding:18px;position:sticky;top:0;height:100vh;overflow:auto}.logo{font-size:23px;font-weight:800;margin-bottom:18px}.rolebox{background:#173552;border-radius:10px;padding:11px;margin-bottom:12px}.nav button{display:block;width:100%;text-align:left;background:transparent;color:#dce8f3;border:0;padding:10px 12px;border-radius:8px;margin:3px 0}.nav button:hover,.nav button.active{background:#1f4d73;color:#fff}.nav-section{font-size:10px;text-transform:uppercase;color:#8eafc9;margin:18px 10px 6px;letter-spacing:.7px}
.main{min-width:0}.top{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:3}.top .left{display:flex;align-items:center;gap:10px}.menuBtn{display:none;border:0;background:transparent;font-size:22px}.content{padding:24px;max-width:1700px;margin:auto}.title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.title h1{margin:0;font-size:25px}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.card,.form{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;box-shadow:var(--shadow)}.kpi{font-size:27px;font-weight:800;margin-top:5px}.grid2{display:grid;grid-template-columns:1.3fr .7fr;gap:16px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.table-wrap{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:auto}.table{width:100%;border-collapse:collapse;min-width:850px}.table th,.table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:12px;white-space:nowrap}.table th{background:#f8fafc;font-size:10px;text-transform:uppercase;color:#69788d}.toolbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.search{padding:10px;border:1px solid var(--line);border-radius:8px;min-width:240px}
.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:700;background:#eaf2ff;color:#1456a0}.ok{background:#e7f7ee;color:var(--ok)}.warn{background:#fff5df;color:var(--warn)}.bad{background:#fdecec;color:var(--bad)}
.fields{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.field label{display:block;font-size:11px;color:var(--muted);margin-bottom:5px}.field input,.field select,.field textarea{width:100%;padding:9px;border:1px solid var(--line);border-radius:7px}.field textarea{min-height:78px}.span2{grid-column:span 2}.span3{grid-column:span 3}.actions{display:flex;gap:8px;margin-top:15px;flex-wrap:wrap}.section{margin:22px 0 10px;font-size:15px;font-weight:800}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}.tabs button{padding:8px 12px;border:1px solid var(--line);background:#fff;border-radius:8px}.notice{padding:12px;border-radius:9px;background:#eef6ff;border:1px solid #cfe4ff;color:#174a7e}
.metric{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid #edf2f7;font-size:12px}.metric:last-child{border:0}.metric b{font-size:13px}.progress{height:8px;background:#e9eef4;border-radius:10px;overflow:hidden}.progress i{display:block;height:100%;background:var(--teal)}
.rank{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #edf2f7}.rank .pos{width:24px;height:24px;border-radius:50%;background:#eaf2ff;color:#0b63ce;display:grid;place-items:center;font-size:11px;font-weight:800}.alert{padding:10px 12px;border-radius:9px;margin:8px 0;font-size:12px}.alert.red{background:#fdecec;color:#9f2e2e}.alert.yellow{background:#fff6df;color:#8f6500}.alert.green{background:#e7f7ee;color:#126c41}
.gantt{display:grid;grid-template-columns:190px repeat(12,1fr);gap:3px;font-size:10px;align-items:center}.gantt div{padding:6px;background:#fff;border:1px solid #edf2f7}.gantt .on{background:#8fd4c4}.mobile-worklist{display:grid;gap:10px}.work-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}.work-card h3{margin:0 0 6px;font-size:15px}.work-card .meta{font-size:11px;color:var(--muted);line-height:1.6}.work-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}.work-actions button{padding:11px 8px;border-radius:9px;border:1px solid var(--line);background:#fff}.work-actions .mainAction{background:var(--primary);color:#fff;border-color:var(--primary)}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.photo{background:#eef2f7;border-radius:8px;padding:10px;text-align:center;font-size:10px;color:#66727e}.mobile-bottom{display:none}.fab{display:none}
@media(max-width:1000px){.cards{grid-template-columns:repeat(2,1fr)}.grid2,.grid3{grid-template-columns:1fr}.fields{grid-template-columns:1fr 1fr}.layout{grid-template-columns:1fr}.sidebar{position:fixed;left:-270px;top:0;width:255px;transition:.2s;z-index:20}.sidebar.open{left:0}.menuBtn{display:block}}
@media(max-width:650px){body{padding-bottom:70px}.content{padding:14px}.cards{grid-template-columns:repeat(2,1fr);gap:9px}.card{padding:13px}.kpi{font-size:22px}.fields{grid-template-columns:1fr}.span2,.span3{grid-column:auto}.title{align-items:flex-start}.title h1{font-size:20px}.top{padding:0 12px}.top .logoutText{display:none}.toolbar .search{min-width:100%}.mobile-bottom{position:fixed;display:grid;grid-template-columns:repeat(4,1fr);left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);z-index:15}.mobile-bottom button{border:0;background:#fff;padding:10px 4px;font-size:10px;color:#536274}.fab{display:grid;place-items:center;position:fixed;right:18px;bottom:82px;width:54px;height:54px;border-radius:50%;border:0;background:var(--primary);color:#fff;font-size:24px;box-shadow:0 8px 25px #0003;z-index:12}}

.ot-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.ot-tabs button.active{background:#0b63ce;color:#fff;border-color:#0b63ce}
@media(max-width:800px){.ot-tabs{overflow-x:auto;flex-wrap:nowrap}.ot-tabs button{white-space:nowrap}}

/* V1.7.31 COMPACT */
table{font-size:12px} th,td{padding:7px 8px} th{font-size:11px;white-space:nowrap}.compact-table{font-size:11.5px}.compact-table th,.compact-table td{padding:6px 7px}.compact-fields .field label{font-size:11px}.compact-fields input,.compact-fields select{font-size:12px;padding:7px 8px}.card{font-size:13px}.card h3{font-size:14px;margin:0 0 9px}.kpi{font-size:22px}.notice{font-size:12px;padding:9px 11px}.title h1{font-size:21px}.badge{font-size:10px}


/* V1.7.32 - MENÚ DESPLEGABLE Y VISTA MÁS COMPACTA */
body{font-size:12px}
.layout{grid-template-columns:225px 1fr}
.sidebar{padding:12px 10px}
.logo{font-size:18px;margin:3px 7px 12px}
.rolebox{font-size:11px;padding:8px 9px;margin-bottom:8px}
.nav-group{margin:4px 0}
.nav-group-toggle{display:flex!important;align-items:center;justify-content:space-between;width:100%;padding:8px 9px!important;margin:2px 0!important;background:#173552!important;color:#eef6ff!important;font-size:11.5px!important;font-weight:700;border-radius:7px!important}
.nav-group-toggle:hover{background:#1f4d73!important}
.nav-chevron{font-size:10px;transition:.18s}
.nav-group.open .nav-chevron{transform:rotate(180deg)}
.nav-group-items{display:none;padding:2px 0 3px 6px}
.nav-group.open .nav-group-items{display:block}
.nav-group-items>button{font-size:11px!important;padding:7px 8px!important;margin:1px 0!important;line-height:1.15}
.content{padding:17px;max-width:1800px}
.top{height:58px;padding:0 18px;font-size:12px}
.title{margin-bottom:12px}
.title h1{font-size:19px}
.card,.form{padding:13px}
.cards{gap:9px}
.kpi{font-size:20px}
.fields{gap:8px}
.field label{font-size:10px;margin-bottom:3px}
.field input,.field select,.field textarea{font-size:11px;padding:6px 7px}
.primary,.secondary,.danger,.successBtn{font-size:11px;padding:7px 10px}
.section{font-size:13px;margin:15px 0 7px}
.notice{font-size:11px;padding:7px 9px}
table,.table,.compact-table{font-size:10.5px!important}
table th,table td,.table th,.table td,.compact-table th,.compact-table td{padding:5px 6px!important}
table th,.table th,.compact-table th{font-size:9.5px!important}
.search{font-size:11px;padding:7px;min-width:190px}
.metric{font-size:11px;padding:7px 0}
.metric b{font-size:11.5px}
.alert{font-size:10.5px;padding:7px 9px;margin:5px 0}
@media(max-width:1000px){.layout{grid-template-columns:1fr}.sidebar{width:225px;left:-240px}}

/* V1.7.46 DASHBOARDS */
.dash-project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.dash-project-card{border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff}
.dash-project-title{display:flex;justify-content:space-between;gap:8px;align-items:center;font-weight:800;margin-bottom:8px}
.dash-bar-row{margin:8px 0}.dash-bar-label{display:flex;justify-content:space-between;gap:10px;font-size:10.5px}.dash-bar-track{height:8px;background:#e9eef4;border-radius:10px;overflow:hidden;margin:3px 0}.dash-bar-track i{display:block;height:100%;background:var(--primary);border-radius:10px}.dash-bar-row small{font-size:9.5px;color:var(--muted)}.text-bad{color:#b42318!important}

/* V1.7.50 */
.title-actions,.master-tools{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.dash-goal-track{height:12px;background:#e8eef5;border-radius:10px;overflow:hidden;margin:8px 0 12px}.dash-goal-track i{display:block;height:100%;background:#1769d2;border-radius:10px}.badge.bad{background:#fee4e2;color:#b42318}.dash-project-card .metric{padding:5px 0}.master-tools button{font-size:11px}

/* V1.7.69 - PERMISOS GRANULARES */
.perm-group{border:1px solid var(--line);border-radius:10px;margin:8px 0;overflow:hidden;background:#fff}
.perm-group-title{background:#f4f7fa;padding:8px 10px;font-size:11px;font-weight:800}
.perm-grid{display:grid;grid-template-columns:repeat(2,minmax(230px,1fr));gap:5px 12px;padding:10px}
.perm-item{display:flex;align-items:flex-start;gap:7px;font-size:11px;padding:5px;border-radius:6px}
.perm-item:hover{background:#f8fafc}.perm-item input{width:auto;margin-top:1px}
@media(max-width:750px){.perm-grid{grid-template-columns:1fr}}


/* V1.7.69 - LOGIN CORPORATIVO IDÉNTICO AL DISEÑO APROBADO */
.login.login-identico{
  min-height:100vh;
  width:100%;
  display:grid;
  place-items:center;
  overflow:hidden;
  padding:0;
  background:#001c62;
}
.login-art{
  position:relative;
  width:min(100vw,calc(100vh * 1.2495543672));
  aspect-ratio:1402 / 1122;
  flex:none;
  background:#002a86 url("login_epad.png") center/100% 100% no-repeat;
  overflow:hidden;
}
.login-overlay-input{
  position:absolute;
  z-index:3;
  height:4.95%;
  border:0!important;
  border-radius:.55vw!important;
  background:#fff!important;
  color:#4c5668!important;
  box-shadow:none!important;
  outline:none;
  margin:0!important;
  padding:0 1.25%!important;
  font-family:Inter,Arial,Segoe UI,sans-serif!important;
  font-size:clamp(12px,1.38vw,19px)!important;
  line-height:1!important;
}
.login-overlay-input::placeholder{color:#7b8494;opacity:1}
.login-overlay-input:focus{box-shadow:0 0 0 2px rgba(30,132,255,.55)!important}
.login-user-input{left:32.26%;top:49.18%;width:36.46%}
.login-pass-input{left:32.26%;top:60.72%;width:36.46%;padding-right:5%!important}
.login-button-hit{
  position:absolute;z-index:5;left:32.26%;top:68.78%;width:36.46%;height:6.15%;
  border:0;background:transparent;border-radius:10px;cursor:pointer;padding:0;
}
.login-button-hit:hover{background:rgba(255,255,255,.045)}
.login-button-hit:active{background:rgba(0,0,0,.08)}
.login-eye-hit{
  position:absolute;z-index:6;left:63.55%;top:61.55%;width:4.2%;height:3.6%;
  border:0;background:transparent;cursor:pointer;border-radius:50%;padding:0;
}
.login-msg{
  position:absolute;z-index:7;left:29.2%;top:75.8%;width:41.6%;margin:0;
  text-align:center;color:#ffd7d7;font-weight:700;font-size:clamp(10px,.9vw,13px);
  text-shadow:0 1px 2px rgba(0,0,0,.6);
}
@media(max-aspect-ratio:1402/1122){
  .login-overlay-input{font-size:clamp(12px,1.5vh,19px)!important;border-radius:.7vh!important}
}
@media(max-width:650px){
  body:has(.login-identico){padding-bottom:0}
  .login.login-identico{min-height:100dvh}
  .login-art{width:min(100vw,calc(100dvh * 1.2495543672))}
}
