:root{--icep-navy:#2f343b;--icep-blue:#1D79AC;--icep-cyan:#00A3E0;--icep-green:#28A745;--icep-gray:#F1F2F4;--icep-dark:#1F2937}
*{box-sizing:border-box}body{margin:0;font-family:'Segoe UI',Tahoma,sans-serif;background:var(--icep-gray);color:var(--icep-dark)}
[hidden]{display:none!important}
header.top{background:var(--icep-navy);color:#fff;padding:14px 28px;display:flex;justify-content:space-between;align-items:center}
header.top b{font-size:20px;letter-spacing:.5px}header.top a{color:#cfe6ff;text-decoration:none;font-size:14px}
main{max-width:1100px;margin:28px auto;padding:0 16px}
.card{background:#fff;border-radius:14px;box-shadow:0 4px 18px rgba(30,34,40,.08);padding:24px;margin-bottom:20px}
h1,h2,h3{color:var(--icep-navy);margin-top:0}
.hero{background:linear-gradient(135deg,#1f2328,#2f343b 55%,#4a515b);color:#fff;text-align:center;padding:56px 16px}
.hero h1{color:#fff;font-size:34px;margin:0 0 8px}.hero p{opacity:.9;margin:0}
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
a.role{display:block;text-decoration:none;color:inherit;text-align:center;padding:36px 20px;transition:.2s}
a.role:hover{transform:translateY(-4px);box-shadow:0 10px 26px rgba(0,87,184,.18)}a.role .ic{font-size:44px}
label{display:block;font-size:13px;font-weight:600;margin:12px 0 4px}
input{width:100%;padding:11px 12px;border:1px solid #cdd5df;border-radius:8px;font:inherit}
input:focus{outline:2px solid var(--icep-cyan);border-color:var(--icep-cyan)}
.btn{background:var(--icep-blue);color:#fff;border:0;padding:11px 20px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block}
.btn:hover{background:var(--icep-navy)}.btn.g{background:var(--icep-green)}.btn.r{background:#c0392b}.btn.o{background:#fff;color:var(--icep-blue);border:1px solid var(--icep-blue)}
.btn:disabled{opacity:.4;cursor:not-allowed}.btn.s{padding:6px 10px;font-size:12px;margin:2px}
.form{display:grid;gap:0 16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:end}
.kpi{border-left:5px solid var(--icep-blue)}.kpi b{font-size:32px;color:var(--icep-navy);display:block}
.tbl{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}
th{background:var(--icep-gray);text-align:left;padding:10px;color:var(--icep-navy)}td{padding:10px;border-bottom:1px solid #e5e9ee}
.badge{padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;color:#fff;background:#8a94a3}
.badge.Completado{background:var(--icep-green)}.badge.En\ progreso{background:var(--icep-cyan)}.badge.Pendiente{background:#e0a100}
.opts{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:28px 0}
.opt{width:64px;height:64px;border-radius:50%;border:2px solid var(--icep-blue);background:#fff;font-size:22px;font-weight:700;color:var(--icep-blue);cursor:pointer}
.opt.on,.opt:hover{background:var(--icep-blue);color:#fff}
.bar{height:10px;background:#dde4ec;border-radius:6px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--icep-blue),var(--icep-cyan));transition:.3s}
.q{font-size:24px;text-align:center;min-height:90px;display:flex;align-items:center;justify-content:center;color:var(--icep-navy)}
.nav{display:flex;justify-content:space-between}
.wrap{overflow-x:auto;padding:10px}
.page{width:794px;height:1123px;margin:0 auto 24px;background:#fff;padding:56px;box-shadow:0 4px 18px rgba(0,0,0,.12);position:relative;overflow:hidden}
.page h2{border-bottom:3px solid var(--icep-cyan);padding-bottom:8px}
.cover{background:linear-gradient(160deg,#1f2328,#3b414a);color:#fff;display:flex;flex-direction:column;justify-content:center}
.cover h1{color:#fff;font-size:40px}.cover .pf{font-size:34px;color:var(--icep-cyan);font-weight:700;margin:24px 0}
.dim{margin:18px 0}.dim .bar{height:16px}.pill{display:inline-block;background:var(--icep-gray);border-radius:8px;padding:8px 14px;margin:4px 6px 4px 0}
.pg li{margin:10px 0;line-height:1.5}
@media(max-width:700px){.q{font-size:19px}.opt{width:52px;height:52px}header.top{padding:12px}}
/* Diseño centrado */
body{min-height:100vh}
header.top{flex-direction:column;gap:6px;text-align:center;padding:18px 16px;box-shadow:0 2px 10px rgba(0,0,0,.15)}
header.top b{font-size:24px}
main{display:flex;flex-direction:column;align-items:stretch}
main.wide{max-width:1400px}
.card{text-align:center}.card h2{font-size:22px;margin-bottom:16px}
.card ul{display:inline-block;text-align:left}
.kpi{border-left:0;border-top:5px solid var(--icep-blue)}.kpi b{font-size:38px;margin-bottom:4px}
.grid{justify-items:stretch}
.form label{text-align:center}.form input{text-align:center}
#search{max-width:520px;display:block;margin:0 auto 18px;text-align:center}
th,td{text-align:center;vertical-align:middle}
tbody tr:hover{background:#f7fafd}
.btn{border-radius:10px;transition:.15s}.btn:hover{transform:translateY(-1px)}
.sc{display:inline-block;background:var(--icep-gray);border-radius:6px;padding:2px 7px;margin:1px;font-size:12px;font-weight:600;color:var(--icep-navy)}
.prog{min-width:90px}.prog .bar{height:8px;margin-top:4px}
.page{text-align:left}
.hero{padding:72px 16px}.hero h1{font-size:40px}
a.role{padding:44px 20px}a.role h2{margin-bottom:8px}
@media(max-width:700px){.hero h1{font-size:28px}}
.modal{position:fixed;inset:0;background:rgba(20,22,26,.6);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal .box{max-width:460px;width:100%;margin:0}
.bigcode{font-size:34px;font-weight:700;letter-spacing:3px;color:var(--icep-navy);background:var(--icep-gray);border:2px dashed var(--icep-cyan);border-radius:12px;padding:14px;margin-bottom:18px}
.tests{text-align:left;display:inline-block}.tests label{font-weight:400;margin:2px 0;white-space:nowrap}.tests input{width:auto;margin-right:6px}
.tt{display:block;text-align:left;font-weight:400;white-space:nowrap;margin:2px 0;font-size:12px}.tt input{width:auto;margin-right:4px}
/* Versión móvil */
@media(max-width:800px){
 body{font-size:16px}main{padding:0 10px;margin:14px auto}
 input,button{font-size:16px}.btn{min-height:44px}.btn.s{min-height:40px;padding:8px 12px}
 .card{padding:16px}.hero{padding:44px 14px}
 main.wide .grid{grid-template-columns:repeat(2,1fr);gap:12px}.kpi b{font-size:30px}
 .tbl table,.tbl thead,.tbl tbody,.tbl tr,.tbl td{display:block}.tbl thead{display:none}
 .tbl tr{background:#fff;border:1px solid #e1e7ee;border-radius:12px;margin-bottom:12px;padding:6px 12px;box-shadow:0 2px 8px rgba(30,34,40,.06)}
 .tbl td{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:right;border:0;border-bottom:1px solid #f0f3f6;padding:9px 0;word-break:break-word}
 .tbl td:before{content:attr(data-label);font-weight:700;color:var(--icep-navy);text-align:left;flex:0 0 36%}
 .tbl td.empty:before{content:none}.tbl td:last-child{flex-wrap:wrap;justify-content:center;border:0}
 .prog{min-width:0}.prog .bar{width:90px}
 .opts{gap:8px}.opt{width:56px;height:56px}.q{font-size:20px;min-height:110px}
 .nav .btn{flex:1;margin:0 4px}.bigcode{font-size:26px}
 #search{max-width:100%}
}
/* Acceso de administrador y restablecimiento */
.login-container{max-width:420px;margin:60px auto;padding:0 16px}
.login-container form{background:#fff;border-radius:14px;box-shadow:0 4px 18px rgba(30,34,40,.08);padding:28px;text-align:center}
.login-container h1{margin:0;color:var(--icep-navy)}
.field{text-align:left;margin:12px 0}.field input{text-align:left}
#lerr,#m,#cpe{font-size:14px;color:#c0392b}
.link{background:none;border:0;color:var(--icep-blue);cursor:pointer;font:inherit;text-decoration:underline;padding:6px}
fieldset{border:1px solid #cdd5df;border-radius:10px;margin:0;padding:8px 12px;text-align:left}legend{font-size:13px;font-weight:600;padding:0 6px}

/* Elección forzada A/B */
.optx{display:block;width:100%;text-align:left;padding:16px 18px;margin:8px 0;border:2px solid var(--icep-blue);border-radius:12px;background:#fff;color:var(--icep-navy);font:inherit;font-size:18px;line-height:1.4;cursor:pointer}
.optx b{display:inline-block;min-width:26px;color:var(--icep-blue)}
.optx.on,.optx:hover{background:var(--icep-blue);color:#fff}.optx.on b,.optx:hover b{color:#fff}
#opts:has(.optx){display:block;max-width:640px;margin:20px auto}

/* ===== Panel con barra lateral ===== */
.shell{display:flex;min-height:100vh;align-items:stretch}
.side{width:236px;flex:0 0 236px;background:var(--icep-navy);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}

.me{margin:14px 14px 8px;padding:10px 12px;background:rgba(255,255,255,.08);border-radius:10px;font-size:13px}.me b{display:block;word-break:break-word}.me span{opacity:.75;font-size:12px}
.side nav{padding:8px 10px;display:flex;flex-direction:column;gap:4px}
.side nav button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;color:#dbe9ff;padding:12px 12px;border-radius:10px;font:inherit;font-size:15px;cursor:pointer}
.side nav button i{font-style:normal;width:22px;text-align:center}
.side nav button:hover{background:rgba(255,255,255,.1)}.side nav button.on{background:#fff;color:var(--icep-navy);font-weight:700}
.sidefoot{margin-top:auto;padding:14px 20px 20px;display:flex;flex-direction:column;gap:8px;font-size:13px}.sidefoot a{color:#cfe6ff;text-decoration:none}.sidefoot a:hover{text-decoration:underline}
.content{flex:1;min-width:0;padding:26px 28px 60px;max-width:1500px}
.head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.head h1{margin:0;font-size:28px}
.lead{color:#4b5563;margin:0 0 16px;max-width:900px;line-height:1.5}
h2.sec{margin:28px 0 8px}
.kpis{margin-bottom:20px}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.toolbar input{flex:1 1 260px;margin:0;max-width:none;text-align:left}
select{padding:10px 12px;border:1px solid #cdd5df;border-radius:8px;font:inherit;background:#fff;max-width:100%}
.toolbar select{flex:0 1 190px}
.fgrid select,.field select{width:100%}
.hint{font-size:12.5px;color:#6b7686;margin:12px 0 0}
.code{font-family:Consolas,monospace;letter-spacing:1px;cursor:pointer;color:var(--icep-navy)}
a.nm{font-weight:700;color:var(--icep-blue);text-decoration:none}a.nm:hover{text-decoration:underline}
small.own{display:block;font-size:11.5px;color:#6b7686;font-weight:400;margin-top:2px}
.tbl td.empty{padding:28px;color:#8a94a3}
td.acts{white-space:normal;min-width:178px}
.ab{display:block;width:100%;text-align:left;margin:3px 0;padding:6px 10px;border-radius:8px;border:1px solid var(--icep-blue);background:#fff;color:var(--icep-blue);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.ab:hover{background:var(--icep-blue);color:#fff}
.ab.del{border-color:#c0392b;color:#c0392b}.ab.del:hover{background:#c0392b;color:#fff}
.ab.save{border-color:var(--icep-green);color:#1e8a38}.ab.save:hover{background:var(--icep-green);color:#fff}
.ro{font-size:12px;color:#8a94a3}
tr.editing td{background:#fffbe8;vertical-align:top}tr.editpanel td{background:#fffbe8;text-align:left;border-bottom:2px solid #f0d97a}
.fgrid{display:grid;gap:0 16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));text-align:left}.fgrid .full{grid-column:1/-1}.fgrid input{text-align:left}.fgrid label{text-align:left}
.fgrid .actions{display:flex;gap:10px;justify-content:center;margin-top:10px;flex-wrap:wrap}
.modal .box.wide{max-width:780px;max-height:92vh;overflow-y:auto}
.modal .box{max-height:92vh;overflow-y:auto}
.picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;text-align:left;margin:6px 0 4px}
.pgroup{background:var(--icep-gray);border-radius:10px;padding:8px 12px}.pg-t{font-size:12px;font-weight:700;color:var(--icep-navy);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}
.pk{display:flex;gap:8px;align-items:flex-start;font-weight:400;margin:6px 0;cursor:pointer}.pk input{width:auto;margin-top:3px}.pk small{display:block;color:#6b7686;font-size:11.5px}
.ptotal{grid-column:1/-1;font-size:13px;font-weight:600;color:var(--icep-navy)}
.cards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));align-items:start}
.tcard{text-align:left;margin:0}.tcard h3{margin-bottom:6px;font-size:17px}.tcard p{margin:6px 0;line-height:1.45;font-size:14px}.tcard .small{font-size:12.5px;color:#4b5563}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.tag{background:#e8f1fb;color:var(--icep-navy);border-radius:20px;padding:3px 10px;font-size:12px;font-weight:600}
table.mini{font-size:13px;margin-top:8px}table.mini th,table.mini td{text-align:left;padding:7px 8px}
.meta{line-height:1.8;margin:6px 0 12px}
.fitbox{background:#eef6ff;border-left:4px solid var(--icep-blue);border-radius:8px;padding:10px 14px;margin:0 0 14px;line-height:1.9}
.auditbar{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:#fff3cd;border:1px solid #f0d97a;color:#6b5200;padding:10px 16px;border-radius:12px;margin-bottom:16px;font-weight:600}
.mbar{display:none}.scrim{display:none}
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--icep-navy);color:#fff;padding:12px 22px;border-radius:10px;z-index:99;max-width:92vw;text-align:center}
@media(max-width:900px){
 .shell{display:block}
 .mbar{display:flex;align-items:center;gap:12px;background:var(--icep-navy);color:#fff;padding:10px 14px;position:sticky;top:0;z-index:30}
 .mbar b{font-size:20px}.mbar span{opacity:.85;font-size:14px}.mbtn{background:none;border:0;color:#fff;font-size:26px;line-height:1;cursor:pointer;min-height:44px;min-width:44px}
 .side{position:fixed;left:0;top:0;z-index:60;transform:translateX(-105%);transition:.2s;box-shadow:4px 0 24px rgba(0,0,0,.3)}.side.open{transform:none}
 .scrim{display:block;position:fixed;inset:0;background:rgba(20,22,26,.5);z-index:55}.scrim[hidden]{display:none!important}
 .content{padding:16px 12px 50px}.head h1{font-size:23px}
 .kpis{grid-template-columns:repeat(2,1fr);gap:10px}.kpis .card{margin:0;padding:12px}.kpi b{font-size:26px}
 td.acts{min-width:0}.tbl td.acts{display:flex;flex-wrap:wrap;justify-content:stretch;gap:6px}.tbl td.acts:before{flex:0 0 100%}.tbl td.acts .ab{width:auto;flex:1 1 140px;text-align:center;margin:0}
 .tbl td[data-label=Nombre]{display:block;text-align:left}.tbl td[data-label=Nombre]:before{display:block;margin-bottom:2px}.tbl td[data-label=Nombre] small{text-align:left}
 .tbl td:before{flex:0 0 32%}
 .tbl tr.editpanel{padding:10px}.tbl tr.editpanel td{display:block;text-align:left}.tbl tr.editpanel td:before{content:none}
 .toolbar select{flex:1 1 100%}
}

/* ===== Marca: logo GovirGroup (sin fondo propio; se coloca sobre zonas claras) ===== */
.logo-plate{display:inline-block;line-height:0}
.logo-plate img{display:block;height:40px;width:auto}
.logo-plate.big{margin-bottom:12px}.logo-plate.big img{height:96px}
.by{font-size:18px;letter-spacing:.5px;margin:0 0 10px}.by.dark{color:#6b7686;margin:-2px 0 12px;font-size:14px}
.login-container .logo-plate.big img{height:78px}
/* Encabezados claros para que el logo se vea con sus colores originales */
header.top{background:#fff;color:#2f343b;border-bottom:3px solid #2f343b;box-shadow:0 2px 10px rgba(30,34,40,.08)}
header.top a{color:#2f343b}header.top b{color:#2f343b}
header.top .brandtop{display:flex;align-items:center;gap:14px;justify-content:center;text-align:left}
header.top .brandtop b{display:block;font-size:19px}header.top .brandtop small{display:block;font-size:12px;color:#6b7686}
header.top .brandtop .logo-plate img{height:40px}header.top .sub{display:block;margin-top:2px;color:#6b7686}
.hero{background:linear-gradient(180deg,#fff,#e6e9ed);color:#2f343b;border-bottom:3px solid #2f343b}
.hero h1{color:#2f343b}.hero p{color:#4b5563;opacity:1}.hero .by{color:#2f343b}
/* Barra lateral: franja blanca superior con el logo, menú gris oscuro */
.brand{padding:16px 14px 14px;background:#fff;color:#2f343b;text-align:center}
.brand .logo-plate{display:block;margin-bottom:8px}.brand .logo-plate img{height:52px;margin:0 auto}
.brand b{display:block;font-size:14px;letter-spacing:.2px;color:#2f343b}.brand small{display:block;font-size:12px;color:#6b7686;font-weight:400;opacity:1}
/* Portada de reportes: franja blanca con el logo */
.coverband{position:absolute;top:0;left:0;right:0;height:132px;background:#fff;display:flex;align-items:center;justify-content:center}
.coverband img{height:88px;width:auto}
.cover{padding-top:150px}
.kpis{grid-template-columns:repeat(4,1fr)}@media(max-width:900px){.kpis{grid-template-columns:repeat(2,1fr)}}

@media print{@page{size:A4;margin:0}html,body{background:#fff!important}header.top,.noprint,#toast{display:none!important}#rep{zoom:1!important;margin:0!important;padding:0!important;max-width:none!important}
.page{box-shadow:none!important;margin:0!important;break-after:page;page-break-after:always;-webkit-print-color-adjust:exact;print-color-adjust:exact}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
#pind input[type=checkbox]{width:auto;margin:0}#pind td{padding:4px 6px}#pind select{width:auto}

details.fold>summary{cursor:pointer;font-size:18px;font-weight:700;list-style:none;padding:4px 0;display:flex;align-items:center;gap:8px}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary::before{content:"▸";transition:transform .15s;color:var(--icep-blue)}
details.fold[open]>summary::before{transform:rotate(90deg)}
details.fold>summary .cnt{font-size:13px;font-weight:600;background:#eef1f5;border-radius:12px;padding:1px 9px;color:#374151}
/* Evaluaciones: todas las tarjetas del mismo tamaño */
#catalog,#profiles{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));grid-auto-rows:1fr;align-items:stretch}
#catalog .tcard,#profiles .tcard{display:flex;flex-direction:column;height:100%;box-sizing:border-box}
#catalog .tcard .small,#profiles .tcard .small{margin-top:auto;padding-top:8px}
.sopr{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid #eef0f3;cursor:pointer}
.sopr small{display:block;color:#6b7686;font-size:12px}
.sw{display:flex;align-items:center;gap:8px;flex:0 0 auto}.sw em{font-style:normal;font-size:12.5px;width:66px;color:#4b5563}
.sw input{position:absolute;opacity:0;width:44px;height:24px;margin:0;cursor:pointer}
.sw i{position:relative;width:44px;height:24px;border-radius:12px;background:#c4cad3;transition:.15s;flex:0 0 44px}
.sw i::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s}
.sw input:checked+i{background:var(--icep-green)}.sw input:checked+i::after{left:23px}
.sw input:focus-visible+i{outline:2px solid var(--icep-blue);outline-offset:2px}
.sw{position:relative}
fieldset label input[type=radio]{width:auto;display:inline-block;margin:0 8px 0 0;vertical-align:middle;padding:0}
/* Periodo de prueba: sin impresión ni descarga */
@media print{body.trial,html.trial body{display:none!important}}
html.trial #pdf,html.trial .pdfbtn{display:none!important}
html.trial body{-webkit-user-select:none;user-select:none}

/* Soporte → Precios y planes */
.prgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-top:12px}
.prf label{display:block;font-weight:600;margin-bottom:4px}.prf input,.prf select,.prf textarea{width:100%;box-sizing:border-box;min-height:44px;padding:8px 10px;font:inherit}
.prwide{grid-column:1/-1}.prchk{display:flex!important;gap:8px;align-items:center;min-height:44px;font-weight:400!important}.prchk input{width:24px;min-height:24px}
.prcard{border:1px solid #d9dde3;border-radius:10px;padding:8px 12px;margin:8px 0}
.prerr{color:#b3261e;font-weight:600}.prwarn{color:#8a5a00;font-weight:600}
.ppgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:12px 0}
.ppv{border:1px solid #d9dde3;border-radius:10px;padding:12px;background:#fff}.ppv-off{opacity:.6;border-style:dashed}.ppp{font-size:1.5rem;font-weight:800;margin:4px 0}.ppb{font-size:.75rem;background:#e8eef7;border-radius:99px;padding:2px 8px}
.prbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:14px 0}.prbar .btn,.prbar input,.prbar select{min-height:44px}

/* ===== Pulido visual del panel (v23) ===== */
#app{--pl-line:#e3e8ef;--pl-ink:#1f2a37;--pl-mut:#5b6777;--pl-brand:#1D79AC}
#app main{background:#f4f6f9}
#app main h1{font-size:28px;letter-spacing:-.01em;color:var(--pl-ink)}
#app main .lead{color:var(--pl-mut);max-width:760px}
#app .card{border:1px solid var(--pl-line);box-shadow:0 1px 2px rgba(16,24,40,.04),0 4px 14px rgba(16,24,40,.04);border-radius:14px}
#app .kpis .card{padding:16px 18px;text-align:left}
#app .kpi{border-top:0;border-left:4px solid var(--pl-brand)}
#app .kpi b{font-size:34px;line-height:1.1;font-variant-numeric:tabular-nums}
#app .kpi span,#app .kpi small{color:var(--pl-mut);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
#app table{border-collapse:separate;border-spacing:0;width:100%}
#app thead th{position:sticky;top:0;z-index:1;background:#f0f3f8;color:#3b4859;font-size:12px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;padding:12px 10px;border-bottom:1px solid var(--pl-line)}
#app tbody td{padding:14px 10px;border-bottom:1px solid #eef1f5;vertical-align:middle}
#app tbody tr:hover td{background:#f7faff}
#app tbody tr:nth-child(even) td{background:transparent}
#app #tb td:first-child,#app #tb th:first-child{text-align:left;padding-left:16px}
#app thead th:first-child{text-align:left;padding-left:16px}
#app .code{display:inline-block;white-space:nowrap;background:#f0f3f8;border-radius:6px;padding:4px 8px;font-size:12.5px;letter-spacing:.5px}
#app td.acts{min-width:0;white-space:normal;text-align:right}
#app td.acts .btn.s,#app td.acts .ab{margin:2px;padding:6px 10px;font-size:12px;border-radius:8px;white-space:nowrap}
#app .badge,#app .pill{font-weight:700;border-radius:99px}
#app input:not([type=checkbox]):not([type=radio]),#app select,#app textarea{border:1px solid #cfd6e0;border-radius:10px;background:#fff}
#app input:focus-visible,#app select:focus-visible,#app textarea:focus-visible,#app .btn:focus-visible,#app button:focus-visible{outline:3px solid rgba(10,88,194,.35);outline-offset:2px}
#app .btn{border-radius:10px;font-weight:600;box-shadow:0 1px 2px rgba(16,24,40,.08)}
#app .btn.o{box-shadow:none}
#app .head{align-items:center;margin-bottom:16px}
#app .side nav button{font-weight:500;transition:background .15s}
#app .side nav button.on{box-shadow:0 2px 8px rgba(0,0,0,.18)}
@media(max-width:900px){#app td.acts{text-align:left}}
@media (prefers-reduced-motion:reduce){#app *{transition:none!important}}
#app td.acts .ab,#app td.acts .btn{display:inline-flex!important;width:auto!important;min-width:0}
#app td.acts{min-width:200px}

/* ===== Pulido v24: formularios modales y barra lateral ===== */
.modal .box{border-radius:16px;box-shadow:0 24px 60px rgba(16,24,40,.35)}
.modal .box h2{letter-spacing:-.01em}
.modal .actions{position:sticky;bottom:-1px;background:linear-gradient(to bottom,rgba(255,255,255,0),#fff 28%);padding:18px 0 4px;margin-top:8px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap;z-index:2}
.modal .actions .btn{min-height:44px}
#cpick label,#cpick .t{border-radius:8px}
#app .side nav button{position:relative}
#app .side nav button.on::before{content:"";position:absolute;left:-10px;top:10px;bottom:10px;width:4px;border-radius:0 4px 4px 0;background:#4da3ff}
#app .side nav button:focus-visible{outline:3px solid #9cc9ff;outline-offset:2px}
#app .lead{font-size:14.5px;line-height:1.55}
#app select{padding-right:30px}
#app .pill,#app .badge,#app .st{letter-spacing:.01em}
#app tbody tr{transition:background .12s}
@media(max-width:700px){.modal{padding:0;align-items:flex-end}.modal .box{max-height:94vh;border-radius:18px 18px 0 0}#app main{padding-top:64px}}

/* ===== Botón y modo oscuro (panel, candidato, reportes en pantalla) ===== */
.themefab{position:fixed;right:14px;bottom:14px;z-index:70}
.themebtn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;min-height:44px;padding:0 12px;border-radius:99px;border:1px solid #cfd6e0;background:#fff;color:#1F2937;font:inherit;font-weight:600;cursor:pointer;box-shadow:0 4px 14px rgba(16,24,40,.18)}
@media print{.themefab,.themebtn{display:none!important}}
@media screen{
:root[data-theme=dark]{color-scheme:dark;--icep-gray:#0F1620;--icep-dark:#E6EDF5;--icep-blue:#5BB4E6;--icep-navy:#E6EDF5}
:root[data-theme=dark] body,:root[data-theme=dark] #app main{background:#0F1620;color:#E6EDF5}
:root[data-theme=dark] .card,:root[data-theme=dark] .box,:root[data-theme=dark] .ppv,:root[data-theme=dark] .prcard{background:#17212C;border-color:#2A3644;color:#E6EDF5}
:root[data-theme=dark] #app main h1,:root[data-theme=dark] #app main h2,:root[data-theme=dark] #app main h3,:root[data-theme=dark] .card h1,:root[data-theme=dark] .card h2,:root[data-theme=dark] .card h3,:root[data-theme=dark] .box h2,:root[data-theme=dark] .box h3{color:#F1F5FA}
:root[data-theme=dark] #app main .lead,:root[data-theme=dark] .card .hint,:root[data-theme=dark] .card small,:root[data-theme=dark] .card .muted,:root[data-theme=dark] #app small,:root[data-theme=dark] #app .hint{color:#9FB0C3}
:root[data-theme=dark] #app thead th,:root[data-theme=dark] .card th{background:#1D2938;color:#C5D1DF;border-color:#2A3644}
:root[data-theme=dark] #app td,:root[data-theme=dark] .card td{border-color:#243040;color:#E6EDF5}
:root[data-theme=dark] #app tbody tr:hover td{background:#1B2735}
:root[data-theme=dark] #app tbody tr:nth-child(even) td{background:transparent}
:root[data-theme=dark] .code,:root[data-theme=dark] #app .code{background:#1D2938;color:#DCE7F3}
:root[data-theme=dark] input:not([type=checkbox]):not([type=radio]),:root[data-theme=dark] select,:root[data-theme=dark] textarea,:root[data-theme=dark] #app input:not([type=checkbox]):not([type=radio]),:root[data-theme=dark] #app select,:root[data-theme=dark] #app textarea{background:#0F1620;color:#E6EDF5;border-color:#3A4858}
:root[data-theme=dark] .btn.o,:root[data-theme=dark] .ab{background:#17212C;color:#8DBBFF;border-color:#3F6AA5}
:root[data-theme=dark] .btn.o:hover{background:#1D2D42}
:root[data-theme=dark] .kpi b{color:#F1F5FA}
:root[data-theme=dark] .link,:root[data-theme=dark] .card a:not(.btn){color:#8DBBFF}
:root[data-theme=dark] header.top{background:#121A24;color:#E6EDF5;border-bottom-color:#2A3644}
:root[data-theme=dark] header.top a{color:#8DBBFF}
:root[data-theme=dark] #app details.fold>summary{color:#F1F5FA}
:root[data-theme=dark] .modal .actions{background:linear-gradient(to bottom,rgba(23,33,44,0),#17212C 28%)}
:root[data-theme=dark] #cpick>div,:root[data-theme=dark] .tbox{background:#1D2938}
:root[data-theme=dark] .themebtn{background:#17212C;color:#E6EDF5;border-color:#3A4858}
:root[data-theme=dark] .sopr{border-color:#2A3644}

}
@media screen{
:root[data-theme=dark] #app .card,:root[data-theme=dark] #app .prcard,:root[data-theme=dark] #app .ppv{border-color:#2A3644}
:root[data-theme=dark] #app .kpi{border-left-color:#4D9BFF}
:root[data-theme=dark] #app .btn:not(.o):not(.g):not(.r){background:#2A67A8;color:#fff}
:root[data-theme=dark] #app thead th{border-bottom-color:#2A3644}
}
.pnote{font-size:.9rem;line-height:1.45;padding:12px;border:1px solid #d9dde3;border-radius:10px;background:#f6f8fa;color:#1F2937}
.cinfo{margin:16px 0;padding-left:20px;line-height:1.5}
.errtxt{color:#b3261e;margin:8px 0 0}
@media screen{
:root[data-theme=dark] .pnote{background:#1D2938;border-color:#33414F;color:#DCE6F1}
:root[data-theme=dark] .errtxt{color:#FF9487}
:root[data-theme=dark] .pgroup{background:#1D2938}
:root[data-theme=dark] .pg-t{color:#C5D1DF}
:root[data-theme=dark] header.top .brandtop b,:root[data-theme=dark] header.top b{color:#F1F5FA}
:root[data-theme=dark] header.top .brandtop small,:root[data-theme=dark] header.top .sub{color:#9FB0C3}
:root[data-theme=dark] input[type=checkbox]{accent-color:#4D9BFF}
}

/* Papel de los reportes: siempre claro (se leen e imprimen como documento) */
@media screen{
:root[data-theme=dark] .page{color:#1F2937;color-scheme:light}
:root[data-theme=dark] .page input,:root[data-theme=dark] .page select,:root[data-theme=dark] .page textarea{background:#fff;color:#1F2937;border-color:#cfd6e0}
/* Prueba del candidato */
:root[data-theme=dark] .q{color:#EAF0F7}
:root[data-theme=dark] .opt{background:#1D2938;color:#8DBBFF;border-color:#4D9BFF}
:root[data-theme=dark] .opt:hover,:root[data-theme=dark] .opt.sel,:root[data-theme=dark] .opt.on{background:#2A67A8;color:#fff}
:root[data-theme=dark] #pb,:root[data-theme=dark] .pbar,:root[data-theme=dark] .progress{background:#2A3644}
}
@media screen{
:root[data-theme=dark] .page{--icep-gray:#F1F2F4;--icep-dark:#1F2937;--icep-blue:#1D79AC;--icep-navy:#2f343b}
:root[data-theme=dark] .card .bar{background:#2A3644}
:root[data-theme=dark] .page .bar{background:#dde4ec}
:root[data-theme=dark] .page .code,:root[data-theme=dark] .page .pill{background:#F1F2F4;color:#1F2937}
}
@media screen{:root[data-theme=dark] .page.cover{color:#fff}:root[data-theme=dark] .page.cover .pf{color:#00A3E0}}
@media screen{:root[data-theme=dark] #app .small,:root[data-theme=dark] .card .small,:root[data-theme=dark] .card p.small{color:#A9B8CA}:root[data-theme=dark] #app .tg span,:root[data-theme=dark] .tg span{background:#E8EEF7;color:#17304f}}
@media screen{:root[data-theme=dark] .login-container form{background:#17212C;color:#E6EDF5;border:1px solid #2A3644;box-shadow:0 8px 30px rgba(0,0,0,.4)}:root[data-theme=dark] .login-container h1,:root[data-theme=dark] .login-container h2,:root[data-theme=dark] .login-container label{color:#F1F5FA}:root[data-theme=dark] .login-container a{color:#8DBBFF}:root[data-theme=dark] .login-container .hint,:root[data-theme=dark] .login-container p,:root[data-theme=dark] .login-container small{color:#A9B8CA}}

/* --icep-navy es color de texto en oscuro; los fondos que lo usaban se fijan aquí */
@media screen{
:root[data-theme=dark] .side{background:#0B121A}
:root[data-theme=dark] #toast,:root[data-theme=dark] .mbar{background:#0B121A;color:#fff;border:1px solid #2A3644}
:root[data-theme=dark] .btn:hover{background:#3A7BD0}
:root[data-theme=dark] .bigcode{color:#8DD0FF;background:#0F1620}
:root[data-theme=dark] .side nav button.on{color:#0B121A}
:root[data-theme=dark] .side nav button{color:#dbe9ff}
}
/* Contraste: elementos con fondo claro propio */
@media screen{
:root[data-theme=dark] tbody tr:hover{background:#1B2735}
:root[data-theme=dark] .tag{background:#E8EEF7;color:#17304f}
:root[data-theme=dark] .fitbox{background:#1B2A3D;color:#E6EDF5;border-left-color:#4D9BFF}
:root[data-theme=dark] tr.editing td,:root[data-theme=dark] tr.editpanel td{background:#2B2614;color:#F2E7B8;border-color:#5A4B14}
:root[data-theme=dark] details.fold>summary .cnt{background:#243040;color:#C5D1DF}
:root[data-theme=dark] .hint,:root[data-theme=dark] em,:root[data-theme=dark] .sopr em{color:#A9B8CA}
:root[data-theme=dark] .btn:not(.o):not(.g):not(.r):not(.s.o){background:#2A67A8;color:#fff}
:root[data-theme=dark] .btn:not(.o):not(.g):not(.r):hover{background:#3A7BD0}
:root[data-theme=dark] .btn.s.g,:root[data-theme=dark] .btn.g{background:#1F8A3A;color:#fff}
:root[data-theme=dark] .btn.r{background:#B3342A;color:#fff}
:root[data-theme=dark] .badge.Pendiente{background:#C98B00;color:#14100A}
}
@media screen{
:root[data-theme=dark] [style*="color:#6b7686"],:root[data-theme=dark] [style*="color:#4b5563"],:root[data-theme=dark] [style*="color:#374151"],:root[data-theme=dark] [style*="color:#9aa5b4"]{color:#A9B8CA!important}
:root[data-theme=dark] [style*="color:#8a6200"]{color:#F2C56B!important}
:root[data-theme=dark] [style*="color:#c0392b"],:root[data-theme=dark] [style*="color:#b3261e"]{color:#FF9487!important}
}

/* Logo sin recuadro blanco: se muestra directo sobre el fondo */
.brand{background:transparent;color:#fff}
.brand b{color:#fff}.brand small{color:#9fb0c3}
.coverband{background:transparent}


/* Ejemplo de práctica del candidato */
.pracfb{margin:14px 0;padding:12px 14px;border-radius:10px;border:1px solid #d9dde3;background:#f6f8fa;color:#1F2937;line-height:1.45}
.pracfb.good{background:#e8f6ee;border-color:#9fd5b5;color:#14532d}
.pracfb.bad{background:#fff4e5;border-color:#f0c986;color:#7a4a00}
.pscale{flex-basis:100%;text-align:center;font-size:.85rem;opacity:.8;margin-top:4px}
@media screen{
:root[data-theme=dark] .pracfb{background:#16222e;border-color:#2c3e50;color:#dbe6f2}
:root[data-theme=dark] .pracfb.good{background:#10281b;border-color:#2e6b47;color:#bfe9cf}
:root[data-theme=dark] .pracfb.bad{background:#2b2110;border-color:#7a5a1f;color:#f3d9a6}
}

/* Modo oscuro en celular: las filas-tarjeta de las tablas no deben quedar blancas (ni al tocarlas) */
@media screen{
:root[data-theme=dark] .tbl tr,:root[data-theme=dark] .tbl tr:hover,:root[data-theme=dark] .tbl tr:active,:root[data-theme=dark] .tbl tr:focus-within{background:#17212C;border-color:#2c3e50;box-shadow:none}
:root[data-theme=dark] .tbl td,:root[data-theme=dark] .tbl tr:hover td,:root[data-theme=dark] #app tbody tr:hover td{background:transparent;border-bottom-color:#243241}
:root[data-theme=dark] .tbl tr.editpanel{background:#1B2735}
}

/* Estado del envío automático de la invitación */
.mstat{margin:12px 0;font-size:.95rem;font-weight:600;min-height:1.4em}
.mstat.ok{color:#1a7f45}.mstat.bad{color:#b45309}
@media screen{:root[data-theme=dark] .mstat.ok{color:#6fdca0}:root[data-theme=dark] .mstat.bad{color:#f3c27a}}

/* Modo oscuro: opciones de respuesta (prueba y práctica) legibles */
@media screen{
:root[data-theme=dark] .optx{background:#17212C;color:#E6EDF5;border-color:#4da3ff}
:root[data-theme=dark] .optx b{color:#8ec5ff}
:root[data-theme=dark] .optx.on,:root[data-theme=dark] .optx:hover{background:#1f6fd1;color:#fff;border-color:#8ec5ff}
:root[data-theme=dark] .optx.on b,:root[data-theme=dark] .optx:hover b{color:#fff}
:root[data-theme=dark] .opt{background:#17212C;color:#8ec5ff;border-color:#4da3ff}
:root[data-theme=dark] .opt.on,:root[data-theme=dark] .opt:hover{background:#1f6fd1;color:#fff}
}

/* Contador de tiempo de la prueba (legible en claro y oscuro) */
.clock{float:right;font-weight:700;font-variant-numeric:tabular-nums;padding:2px 10px;border-radius:14px;background:#eef1f5;color:#1F2937}
.clock.warn{background:#fff7e0;color:#7a4a00}.clock.crit{background:#fdecea;color:#c0392b}
@media screen{
:root[data-theme=dark] .clock{background:#243241;color:#E6EDF5}
:root[data-theme=dark] .clock.warn{background:#3a2d10;color:#f3d9a6}
:root[data-theme=dark] .clock.crit{background:#4a1f1b;color:#ffb4a8}
}

/* Comparativa de candidatos */
.seg{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px}.seg>span{font-weight:700;margin-right:4px}
.seg button{min-height:40px;padding:8px 16px;border-radius:999px;border:2px solid var(--icep-blue);background:#fff;color:var(--icep-blue);font:inherit;font-weight:700;cursor:pointer}
.seg button.on,.seg button:hover{background:var(--icep-blue);color:#fff}
.meter{height:8px;width:120px;max-width:100%;border-radius:6px;background:#e1e7ee;overflow:hidden;margin-bottom:4px}.meter i{display:block;height:100%;background:linear-gradient(90deg,#2ba84a,#0b8f6a)}
.medal{font-size:22px;font-weight:800}
.tbl tr.top td:first-child{border-left:4px solid #2ba84a}
.warnchip,.ivchip{display:inline-block;padding:2px 10px;border-radius:12px;font-size:.85rem;font-weight:700}
.warnchip{background:#fff4e5;color:#7a4a00}.ivchip{background:#e8f1fb;color:#0b4a99}
@media screen{
:root[data-theme=dark] .seg button{background:#17212C;color:#8ec5ff;border-color:#4da3ff}
:root[data-theme=dark] .seg button.on,:root[data-theme=dark] .seg button:hover{background:#1f6fd1;color:#fff}
:root[data-theme=dark] .meter{background:#243241}
:root[data-theme=dark] .warnchip{background:#3a2d10;color:#f3d9a6}:root[data-theme=dark] .ivchip{background:#12304f;color:#bfe0ff}
}
.fgrid textarea{width:100%;box-sizing:border-box;font:inherit;padding:10px;border:1px solid #cfd6de;border-radius:10px;resize:vertical}
@media screen{:root[data-theme=dark] .fgrid textarea{background:#0f1720;color:#E6EDF5;border-color:#33465a}}

/* Barra lateral compacta + tema en la barra */
.side{transition:width .18s,flex-basis .18s}
a.brand{display:block;text-decoration:none;cursor:pointer}
.collapse{position:absolute;top:8px;right:8px;z-index:2;width:28px;height:28px;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.1);color:#fff;font-size:16px;line-height:1;cursor:pointer;padding:0}
.collapse:hover{background:rgba(255,255,255,.22)}
.sidefoot a{display:flex;align-items:center;gap:10px}.sidefoot a i{font-style:normal;width:22px;text-align:center}
.themeslot .themebtn{width:100%;justify-content:flex-start;box-shadow:none;border-radius:10px;min-height:40px;background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.2)}
@media(min-width:901px){
 body.sidemin .side{width:68px;flex-basis:68px;overflow-x:hidden}
 body.sidemin .side .nt,body.sidemin .side .me,body.sidemin .brand b,body.sidemin .themeslot .themebtn span{display:none}
 body.sidemin .collapse{position:static;margin:8px auto 0;display:block}
 body.sidemin .brand{padding:10px 6px 8px}body.sidemin .brand .logo-plate img{height:34px}
 body.sidemin .side nav{padding:8px 6px}body.sidemin .side nav button{justify-content:center;padding:12px 0}
 body.sidemin #app .side nav button.on::before{left:-6px}
 body.sidemin .sidefoot{padding:12px 6px;align-items:center}body.sidemin .sidefoot a{justify-content:center}
 body.sidemin .themeslot .themebtn{justify-content:center;padding:0;min-width:44px}
}
@media(max-width:900px){.collapse{display:none}}
body:has(#app:not([hidden])) .themefab{display:none}
@media(min-width:901px){body.sidemin .brand .logo-plate{margin:0}body.sidemin .brand .logo-plate img{height:auto;width:50px;max-width:100%;object-fit:contain}}

/* Logo Dokima: versión para fondo claro por omisión; versión para fondo oscuro donde el fondo es oscuro */
.side .brand img,.coverband img{content:url(../img/dokima-logo-dark.png)}
@media screen{:root[data-theme=dark] header.top img[src$="dokima-logo.png"],:root[data-theme=dark] .login-container img[src$="dokima-logo.png"]{content:url(../img/dokima-logo-dark.png)}}
a.brand .logo-plate img{height:auto;width:150px;max-width:100%}
.coverband img{height:auto;width:360px;max-width:80%}
header.top .brandtop .logo-plate img{height:44px;width:auto}
.logo-plate.big img{height:auto;width:230px}.login-container .logo-plate.big img{height:auto;width:210px}
@media(min-width:901px){body.sidemin .side .brand img{content:url(../img/dokima-simbolo-dark.png);width:34px;height:auto}}


/* Botones de acción de tabla: solo icono, limpios y consistentes */
.ab.ico .bt{display:none}
#app .ab.ico,.ab.ico{display:inline-flex!important;align-items:center;justify-content:center;width:34px!important;height:34px;min-width:0;margin:0 2px;padding:0!important;border:1px solid transparent;border-radius:9px;background:transparent;color:#5b6b7e;transition:background .15s,color .15s,border-color .15s}
.ab.ico .ic{display:block}
.ab.ico:hover,.ab.ico:focus-visible{background:#e8f1fd;color:#0b5cc7;border-color:#c9dcf6}
.ab.ico.del:hover,.ab.ico.del:focus-visible{background:#fdecea;color:#c0392b;border-color:#f3c5bf}
.ab.ico.save{color:#1e8a38}.ab.ico.save:hover{background:#e6f6ea;color:#1e8a38;border-color:#bfe3c8}
.ab.ico:focus-visible{outline:2px solid #4da3ff;outline-offset:1px}
td.acts{white-space:nowrap}
:root[data-theme=dark] .ab.ico{color:#9fb0c3}
:root[data-theme=dark] .ab.ico:hover,:root[data-theme=dark] .ab.ico:focus-visible{background:#1d3550;color:#8fc2ff;border-color:#2d4d72}
:root[data-theme=dark] .ab.ico.del:hover,:root[data-theme=dark] .ab.ico.del:focus-visible{background:#3a1f22;color:#ff9487;border-color:#6b3238}
:root[data-theme=dark] .ab.ico.save{color:#6fd58b}
@media(max-width:900px){.tbl td.acts .ab.ico{flex:0 0 auto}.tbl td.acts{justify-content:flex-start}}

/* Tablas: se conservan en escritorio; se compactan y ocultan columnas secundarias según el ancho real del contenido */
.content{container-type:inline-size;container-name:cont}
@media(min-width:901px){
 #app table{font-size:13px}
 #app tbody td{padding:10px 8px}#app thead th{padding:10px 8px;font-size:11px}
 #app .tbl td small{font-size:11px}
 #app .prog .bar{width:70px}
}
@media(min-width:901px){
@container cont (max-width:1060px){
 #v-cand th:nth-child(4),#v-cand td:nth-child(4),#v-usr th:nth-child(6),#v-usr td:nth-child(6){display:none}
}
@container cont (max-width:940px){
 #v-cand th:nth-child(3),#v-cand td:nth-child(3),#v-usr th:nth-child(5),#v-usr td:nth-child(5),#v-vac th:nth-child(3),#v-vac td:nth-child(3),#v-cmp th:nth-child(5),#v-cmp td:nth-child(5){display:none}
}
@container cont (max-width:820px){
 #v-cand th:nth-child(2),#v-cand td:nth-child(2),#v-vac th:nth-child(4),#v-vac td:nth-child(4),#v-cmp th:nth-child(4),#v-cmp td:nth-child(4){display:none}
}
}

@media(min-width:901px){
@container cont (max-width:820px){

 #app .card{padding:14px}
 #v-cand .code,#v-cand td:nth-child(5),#v-cand td:nth-child(2) code{font-size:11px}
 #app td.acts .ab.ico{padding:0!important;width:30px!important;height:30px;margin:0 1px}
 #app tbody td,#app thead th{padding-left:5px;padding-right:5px}
 #app .prog .bar{width:56px}
}
@container cont (max-width:940px){
 #v-usr td select{max-width:120px;font-size:12px;padding:4px}
 #v-usr td:nth-child(2){word-break:break-all}
 #v-usr td.acts{white-space:normal}
}
}
@media(min-width:901px) and (max-width:1000px){.content{padding-left:14px;padding-right:14px}body:not(.sidemin) #v-cand td:nth-child(5) .prog .bar{width:46px}}

/* ===== Capa de marca Dokima / Govir Group (paleta tomada del logotipo) ===== */
:root{--icep-blue:#1D79AC;--icep-cyan:#3DA5E0;--icep-green:#1FAE93;--icep-navy:#0F2F42;--icep-gray:#F2F6F9;--icep-dark:#1B2A36;
 --dk-line:#E1E8EE;--dk-mut:#5B6B7A;--dk-ok:#0B6B58;--dk-ok-bg:#DDF4EE;--dk-prog:#145B83;--dk-prog-bg:#DFEEF8;--dk-warn:#80530A;--dk-warn-bg:#FDF0D5}
:root[data-theme=dark]{--icep-blue:#5BB4E6;--icep-green:#4FD8B8;--dk-line:#2A3A48;--dk-mut:#9FB0C0;--dk-ok:#7FE3C9;--dk-ok-bg:#12382F;--dk-prog:#9BD0F2;--dk-prog-bg:#173A52;--dk-warn:#F2C56B;--dk-warn-bg:#3A2D10}
body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
#app{--pl-brand:#1D79AC}
.btn{background:var(--icep-blue);border-radius:10px}.btn:hover{background:#155C84}
.btn svg,.ab svg,.tag svg,.ivchip svg,.warnchip svg,small.own svg{display:inline-block;vertical-align:-3px;flex:none}
:focus-visible{outline:2px solid var(--icep-cyan);outline-offset:2px}
h1{font-size:26px;letter-spacing:-.01em;font-weight:700}
.head{margin-bottom:18px}
/* Menú lateral */
.side{background:var(--icep-navy)}
:root[data-theme=dark] .side{background:#0A1A25}
.side nav button i{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px}
.side nav button i svg{width:18px;height:18px}
.side nav button{color:#cfe3f1}
.side nav button.on{background:#fff;color:var(--icep-navy)}
#app .side nav button.on::before{background:var(--icep-green)}
.me{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.08)}
.me b{font-size:14px}.me span{display:block;margin-top:2px}
.sidefoot a{color:#cfe3f1}
.sidefoot a i{display:inline-flex;align-items:center;justify-content:center}.sidefoot a i svg{width:17px;height:17px}
.themeslot .themebtn{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16)}
/* Tarjetas de resumen (filtro rápido) */
.kpis{gap:14px}
button.kpi{font:inherit;text-align:left;cursor:pointer;border:1px solid var(--pl-line,#E1E8EE)!important;border-left:4px solid transparent!important;background:#fff;color:inherit;display:flex;flex-direction:column;gap:2px;transition:border-color .15s,box-shadow .15s,transform .15s}
button.kpi b{font-size:30px;line-height:1.1;margin:0}
button.kpi span{font-size:13px;color:var(--dk-mut)}
button.kpi:hover{box-shadow:0 6px 18px rgba(15,47,66,.10);transform:translateY(-1px)}
button.kpi.on{border-left-color:var(--icep-blue)!important;box-shadow:0 0 0 1px var(--icep-blue) inset,0 6px 18px rgba(15,47,66,.08)}
button.kpi:nth-child(2).on{border-left-color:#C98B00!important}button.kpi:nth-child(4).on{border-left-color:var(--icep-green)!important}
:root[data-theme=dark] button.kpi{background:#17212C;border-color:#2A3A48!important}
/* Tabla */
#app thead th{background:#F4F7FA;color:#4A5B6B;border-bottom:1px solid var(--dk-line)}
th[data-sort]{cursor:pointer;user-select:none}th[data-sort]:hover{color:var(--icep-blue)}
th[data-sort]::after{content:"↕";margin-left:5px;opacity:.35;font-size:11px}
th[aria-sort=ascending]::after{content:"↑";opacity:1;color:var(--icep-blue)}th[aria-sort=descending]::after{content:"↓";opacity:1;color:var(--icep-blue)}
#v-cand #tb tr:not(.editing):not(.editpanel){cursor:pointer}
.nil{color:#A7B3BF}
.pct{font-weight:600;font-size:13px}
.prog .bar{height:6px;margin-top:4px;border-radius:99px;background:#E3EAF0}
.prog .bar i{background:linear-gradient(90deg,var(--icep-blue),var(--icep-green))}
small.own{display:flex;align-items:center;gap:5px;color:var(--dk-mut)}
.code{font-size:12px}
/* Estados: tono suave + punto */
.badge,#app .badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:600;background:#EEF2F5;color:#4A5B6B}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.badge.Completado{background:var(--dk-ok-bg);color:var(--dk-ok)}
.badge.En\ progreso{background:var(--dk-prog-bg);color:var(--dk-prog)}
.badge.Pendiente,:root[data-theme=dark] .badge.Pendiente{background:var(--dk-warn-bg);color:var(--dk-warn)}
/* Estado vacío */
.emptyst{display:flex;flex-direction:column;align-items:center;gap:6px;padding:26px 10px;color:var(--dk-mut)}
.emptyst b{color:var(--icep-dark);font-size:16px}:root[data-theme=dark] .emptyst b{color:#E6EDF5}
.emptyst .btn{margin-top:10px;display:inline-flex;align-items:center;gap:6px}
/* Posición en la comparativa */
.rk{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-weight:700;font-size:13px;background:#EEF2F5;color:#4A5B6B}
.rk.r1{background:#FFE9A8;color:#6B4A00}.rk.r2{background:#E3E8ED;color:#3E4B57}.rk.r3{background:#F6D9C3;color:#6B3A14}
:root[data-theme=dark] .rk{background:#223140;color:#C5D1DF}:root[data-theme=dark] .rk.r1{background:#5A4410;color:#FFE9A8}:root[data-theme=dark] .rk.r2{background:#3A4651;color:#E3E8ED}:root[data-theme=dark] .rk.r3{background:#573721;color:#F6D9C3}
.medal{font-size:inherit}
/* Marca de éxito */
.okmark{width:56px;height:56px;border-radius:50%;margin:0 auto 6px;background:var(--dk-ok-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231FAE93' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4 8-9'/%3E%3C/svg%3E") center/30px no-repeat}
/* Diálogos propios */
.dkd-ov{position:fixed;inset:0;z-index:200;background:rgba(10,26,37,.55);display:flex;align-items:center;justify-content:center;padding:16px;animation:dkf .12s ease-out}
.dkd{background:#fff;color:#1B2A36;border-radius:16px;max-width:440px;width:100%;box-shadow:0 20px 60px rgba(10,26,37,.35);overflow:hidden}
.dkd-b{padding:22px 24px 6px;max-height:60vh;overflow:auto}.dkd-b p{margin:0 0 10px;line-height:1.5;font-size:15px}.dkd-b p:first-child{font-weight:600;font-size:16px}
.dkd-f{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px 18px}
.dkd-btn{font:inherit;font-weight:600;font-size:14px;border-radius:10px;padding:10px 18px;min-height:42px;cursor:pointer;border:1px solid transparent}
.dkd-btn.primary{background:var(--icep-blue);color:#fff}.dkd-btn.primary:hover{background:#155C84}
.dkd-btn.danger{background:#C0392B;color:#fff}.dkd-btn.danger:hover{background:#A52F23}
.dkd-btn.ghost{background:#fff;color:#334756;border-color:#C9D5DF}.dkd-btn.ghost:hover{background:#F2F6F9}
:root[data-theme=dark] .dkd{background:#17212C;color:#E6EDF5}:root[data-theme=dark] .dkd-btn.ghost{background:transparent;color:#C5D1DF;border-color:#3A4A5A}:root[data-theme=dark] .dkd-btn.ghost:hover{background:#1F2D3B}
:root[data-theme=dark] .dkd-btn.primary{background:#2B8FC6}
@keyframes dkf{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* Táctil: objetivos de 44 px */
@media(max-width:900px){.btn,.ab,select,input[type=text],input[type=email],input[type=search],input[type=password]{min-height:44px}.ab.ico{width:44px!important;height:44px}button.kpi b{font-size:26px}}
@media(min-width:901px){@container cont (max-width:820px){th[data-sort]::after{margin-left:2px}.pct{font-size:12px}}}
#app .badge.Completado{background:var(--dk-ok-bg);color:var(--dk-ok)}
#app .badge.En\ progreso{background:var(--dk-prog-bg);color:var(--dk-prog)}
#app .badge.Pendiente,:root[data-theme=dark] #app .badge.Pendiente{background:var(--dk-warn-bg);color:var(--dk-warn)}
#toplogin{justify-content:flex-end;gap:18px}#toplogin a{color:var(--icep-blue);text-decoration:none;font-weight:600;font-size:14px}#toplogin a:hover{text-decoration:underline}
/* Ventanas: cierre fijo arriba a la derecha */
.mx{position:sticky;top:0;height:0;z-index:20;margin:0}
.mx-btn{position:absolute;right:-6px;top:-10px;width:36px;height:36px;border-radius:50%;border:1px solid var(--dk-line);background:#fff;color:#4A5B6B;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;box-shadow:0 2px 8px rgba(15,47,66,.15);transition:background .15s,color .15s}
.mx-btn:hover{background:#FDECEA;color:#C0392B;border-color:#F3C5BF}
.mx-btn svg{width:18px;height:18px}
:root[data-theme=dark] .mx-btn{background:#1F2D3B;color:#C5D1DF;border-color:#3A4A5A}
:root[data-theme=dark] .mx-btn:hover{background:#3A1F22;color:#FF9487;border-color:#6B3238}
.modal .box .head h2,.modal .box>h2{padding-right:40px}
/* Filas de reporte: título a la izquierda, íconos a la derecha */
.rrow{display:flex;align-items:center;justify-content:space-between;gap:12px}
.rrow small{display:block;font-weight:400}
.rbtn{display:inline-flex;gap:4px;flex:none}
.fitbox .rrow{margin-top:2px}
/* Campos de formulario dentro de ventanas */
.modal input[type=text],.modal input[type=email],.modal input[type=date],.modal input[type=time],.modal input[type=url],.modal select,.modal textarea{font:inherit;font-size:15px;padding:10px 12px;border:1px solid #CBD6DF;border-radius:10px;background:#fff;color:inherit;width:100%;box-sizing:border-box}
.modal textarea{line-height:1.5;resize:vertical;min-height:120px}
.modal input:focus,.modal textarea:focus,.modal select:focus{outline:2px solid var(--icep-cyan);outline-offset:0;border-color:var(--icep-cyan)}
:root[data-theme=dark] .modal input[type=text],:root[data-theme=dark] .modal input[type=email],:root[data-theme=dark] .modal input[type=date],:root[data-theme=dark] .modal input[type=time],:root[data-theme=dark] .modal input[type=url],:root[data-theme=dark] .modal select,:root[data-theme=dark] .modal textarea{background:#0F1720;border-color:#33465A;color:#E6EDF5}
.modal table.mini{font-size:13.5px}.modal table.mini th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:10px}.modal table.mini td{padding:10px;vertical-align:middle}
.modal table.mini td:last-child{white-space:nowrap}
.btn.s,a.btn.s{padding:8px 14px;font-size:14px;min-height:36px;border-radius:10px;display:inline-flex;align-items:center;gap:6px;line-height:1.2}
