:root{--primary:#392870;--accent:#C8156A;--accent-brand:#E7257F;--g1:#5F007E;--g2:#D6006F;--gray:#E5E5E5;--lilac:#E1D9FF;--bg:#F6F4FB;--text:#1f1a33;--muted:#5f5978;--radius:14px}
*{box-sizing:border-box}html,body{margin:0}body{font-family:Montserrat,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:15px}
a{color:var(--primary)}.hidden{display:none!important}.loading{padding:40px;text-align:center}
.grad{background:linear-gradient(135deg,var(--g1),var(--g2))}
/* login */
.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}
.login-hero{color:#fff;padding:56px;display:flex;flex-direction:column;justify-content:space-between}
.login-hero img{height:56px;align-self:flex-start}.login-hero h1{font-size:2.4rem;line-height:1.15;margin:0 0 12px}.login-hero p{opacity:.9;max-width:420px}
.login-form{display:flex;align-items:center;justify-content:center;padding:32px}
.login-card{width:100%;max-width:380px}.login-card h2{color:var(--primary);margin:0 0 6px}.login-card .sub{color:var(--muted);margin:0 0 24px}
.login-card .logo-m{display:none;height:44px;margin-bottom:24px}
/* layout */
.shell{display:flex;min-height:100vh}
.sidebar{width:250px;color:#fff;padding:24px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.sidebar img{height:42px;margin:0 8px 28px;align-self:flex-start}
.nav a{display:flex;gap:10px;align-items:center;color:#fff;text-decoration:none;padding:11px 14px;border-radius:10px;font-weight:500;margin-bottom:4px;opacity:.85}
.nav a:hover{background:rgba(255,255,255,.12);opacity:1}.nav a.active{background:#fff;color:var(--primary);opacity:1;font-weight:700}
.side-foot{margin-top:auto;font-size:.85rem;padding:8px}.side-foot b{display:block}.side-foot button{margin-top:10px;width:100%}
.main{flex:1;min-width:0;padding:28px 32px}
.topbar{display:none}
h1.page{color:var(--primary);font-size:1.6rem;margin:0 0 4px}.page-sub{color:var(--muted);margin:0 0 22px}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.spacer{flex:1}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:22px}
.card{background:#fff;border-radius:var(--radius);padding:20px;box-shadow:0 2px 10px rgba(57,40,112,.06)}
.kpi .label{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.kpi .value{font-size:1.7rem;font-weight:800;color:var(--primary);margin-top:6px}
.kpi.hl{color:#fff;background:linear-gradient(135deg,var(--g1),var(--g2))}.kpi.hl .label,.kpi.hl .value{color:#fff}
.panel{background:#fff;border-radius:var(--radius);padding:20px;box-shadow:0 2px 10px rgba(57,40,112,.06);margin-bottom:22px}
.panel h3{margin:0 0 14px;color:var(--primary);font-size:1.05rem}
.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}
th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:10px;border-bottom:2px solid var(--gray);white-space:nowrap}
td{padding:10px;border-bottom:1px solid var(--gray);vertical-align:middle}tr:hover td{background:#faf8ff}
td.num,th.num{text-align:right;white-space:nowrap}tfoot td{font-weight:700;border-top:2px solid var(--gray)}
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:600;background:var(--lilac);color:var(--primary)}
.badge.off{background:var(--gray);color:var(--muted)}.badge.pink{background:#fde3ef;color:var(--accent)}
.btn{font-family:inherit;font-size:.9rem;font-weight:600;border:0;border-radius:10px;padding:10px 18px;cursor:pointer;background:var(--primary);color:#fff;text-decoration:none;display:inline-block}
.btn:hover{filter:brightness(1.1)}.btn.accent{background:var(--accent)}.btn.ghost{background:var(--lilac);color:var(--primary)}.btn.light{background:rgba(255,255,255,.18);color:#fff}
.btn.sm{padding:6px 12px;font-size:.8rem}.btn.danger{background:#fff;color:#c0264f;border:1px solid #f1c3d2}.btn.full{width:100%}
label{display:block;font-size:.8rem;font-weight:600;color:var(--muted);margin-bottom:5px}
input,select{font-family:inherit;font-size:.95rem;width:100%;padding:10px 12px;border:1.5px solid var(--gray);border-radius:10px;background:#fff;color:var(--text)}
input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--lilac)}
.field{margin-bottom:14px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.inline{width:auto}.err{color:#c0264f;font-size:.85rem;min-height:1.2em}
.modal{position:fixed;inset:0;background:rgba(31,26,51,.5);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto;z-index:50}
.modal-box{background:#fff;border-radius:var(--radius);padding:24px;width:100%;max-width:620px}.modal-box h3{margin-top:0;color:var(--primary)}
.toast{position:fixed;bottom:20px;right:20px;background:var(--primary);color:#fff;padding:12px 18px;border-radius:10px;z-index:60;font-weight:600}
.demo-note{background:#fde3ef;color:var(--accent);padding:8px 12px;border-radius:10px;font-size:.8rem;font-weight:600;margin-bottom:16px}
.drop{border:2px dashed var(--lilac);border-radius:var(--radius);padding:20px;text-align:center;color:var(--muted)}
.clickable{cursor:pointer}.muted{color:var(--muted)}
.mcards{display:none}
@media (max-width:860px){
 .login-wrap{grid-template-columns:1fr}.login-hero{display:none}.login-card .logo-m{display:block}
 .sidebar{position:fixed;left:0;top:0;z-index:40;transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}
 .topbar{display:flex;align-items:center;justify-content:space-between;color:#fff;padding:12px 16px;position:sticky;top:0;z-index:30}
 .topbar img{height:30px}.shell{flex-direction:column}.main{padding:18px 14px}.grid2{grid-template-columns:1fr}
 .kpi .value{font-size:1.35rem}.cards{grid-template-columns:1fr 1fr;gap:10px}
 table.resp thead{display:none}table.resp tr{display:block;border:1px solid var(--gray);border-radius:12px;margin-bottom:10px;padding:6px}
 table.resp td{display:flex;justify-content:space-between;border:0;padding:6px 8px;text-align:right}table.resp td::before{content:attr(data-l);font-weight:600;color:var(--muted);text-align:left;margin-right:10px}
 table.resp tfoot td::before{content:''}table.resp tfoot td:empty{display:none}
}

/* Emitir factura: lecturas y vista previa responsive */
.lect-title{font-weight:700;color:var(--primary);margin:6px 0 8px;text-transform:uppercase;font-size:.8rem;letter-spacing:.04em}
.lect-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.lect-p{border:1px solid #e6e1f3;border-radius:12px;padding:10px 12px;min-width:0}
.lect-h{font-weight:700;color:var(--primary);margin-bottom:6px}
.lect-p .field{margin-bottom:8px}.lect-p input{width:100%;min-width:0;box-sizing:border-box;font-size:1.05rem;text-align:right}
.lect-k{font-size:.9rem}
#prev .pl{display:flex;align-items:baseline;gap:10px;padding:2px 0}
#prev .pl-l{flex:1 1 auto;min-width:0}#prev .pl-v{flex:0 0 auto;white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums}
#prev .pl.tot{font-size:1.2rem;font-weight:800;color:var(--accent);margin-top:6px;border-top:1px solid #e6e1f3;padding-top:6px}
@media (max-width:640px){.lect-grid{grid-template-columns:1fr}.lect-p{display:grid;grid-template-columns:1fr 1fr;column-gap:10px}.lect-h,.lect-k{grid-column:1/-1}#prev .pl-l{font-size:.92rem}}
.sec-t{font-weight:700;color:var(--primary);text-transform:uppercase;font-size:.78rem;letter-spacing:.04em;margin:14px 0 8px;border-bottom:1px solid #e6e1f3;padding-bottom:4px}

/* --- mejoras: filtros, estadísticas, auditoría, avisos, móvil --- */
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:14px 16px}
.filters input,.filters select{width:auto;flex:1 1 170px;min-width:0}.filters input[type=date]{flex:0 1 160px}.filters label.inline{margin:0}
.filters #q{flex:2 1 240px}
.notice{background:var(--lilac);color:var(--primary);border-radius:10px;padding:10px 14px;font-size:.88rem;font-weight:500;margin:0 0 14px}
.notice.warn{background:#fff4e0;color:#8a5300;border:1px solid #f3d9a6}
.grid-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:0 22px}
svg.chart{width:100%;height:auto;display:block;font-family:Montserrat,sans-serif}
.hbars{display:flex;flex-direction:column;gap:10px}.hb{display:grid;grid-template-columns:minmax(90px,30%) 1fr auto;gap:10px;align-items:center;font-size:.88rem}
.hb-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hb-t{background:#f1eef9;border-radius:6px;height:14px;overflow:hidden}.hb-f{display:block;height:100%;background:linear-gradient(90deg,var(--g1),var(--g2));border-radius:6px}.hb-v{font-weight:700;color:var(--primary);white-space:nowrap}
.acts{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.adet{font-size:.8rem;max-width:520px}.adet .kv{display:inline-block;margin-right:10px}.diff{margin:4px 0 0;padding-left:16px}.diff s{color:#c0264f}.diff ins{color:#1b7a3a;text-decoration:none;font-weight:600}
@media (max-width:860px){
 h1.page{font-size:1.3rem}.page-sub{margin-bottom:14px}
 .panel{padding:14px;border-radius:12px}.cards{margin-bottom:14px}.card{padding:14px}
 .filters{padding:12px}.filters input,.filters select{flex:1 1 100%}.filters input[type=date]{flex:1 1 40%}
 .grid-charts{grid-template-columns:1fr}
 table.resp td{flex-wrap:wrap;gap:4px;word-break:break-word}table.resp td .acts{justify-content:flex-end;width:100%}
 table.resp td[data-l=""]::before{display:none}
 .adet{max-width:none;text-align:left}
 .modal{padding:10px 8px}.modal-box{padding:16px}
 .toast{left:12px;right:12px;bottom:12px;text-align:center}
 .row>.btn{flex:0 0 auto}
}
/* --- facturas de liquidaciones --- */
.badge.b-gray{background:var(--gray);color:var(--muted)}.badge.b-pink{background:#fde3ef;color:var(--accent)}.badge.b-green{background:#dcf3e3;color:#1b7a3a}.badge.b-red{background:#fbe1e6;color:#c0264f}
details.panel>summary{cursor:pointer;list-style:none;display:flex;flex-wrap:wrap;gap:8px;align-items:center}details.panel>summary::-webkit-details-marker{display:none}details.panel>summary::before{content:'▸';color:var(--accent)}details.panel[open]>summary::before{content:'▾'}
details.panel form{margin-top:14px}.grid2>label{margin-bottom:12px}.grid2 .full{grid-column:1/-1}
textarea{font-family:inherit;font-size:.95rem;width:100%;padding:10px 12px;border:1.5px solid var(--gray);border-radius:10px}
.grid2 label select+input{margin-top:6px}
.lrow{display:grid;grid-template-columns:1fr 120px auto;gap:8px;margin-bottom:8px}
.kv-tot{background:var(--lilac);border-radius:12px;padding:12px 16px;margin:6px 0 12px}.kv-tot div{display:flex;justify-content:space-between;padding:3px 0}.kv-tot .t{border-top:1px solid #c9bdf0;margin-top:4px;padding-top:8px;font-size:1.05rem;color:var(--primary)}
@media (max-width:860px){.lrow{grid-template-columns:1fr 92px auto}}
/* --- pulido: login, menú, inicio, mensajes --- */
.login-wrap.grad .login-form{background:transparent;flex-direction:column}
.login-wrap.grad .login-card{background:#fff;border-radius:20px;padding:34px 30px;box-shadow:0 20px 50px rgba(30,0,60,.28)}
.logo-m{display:none}.login-copy{display:none;color:rgba(255,255,255,.8);margin-top:18px;font-size:.78rem}
.login-feats{list-style:none;padding:0;margin:22px 0 0}.login-feats li{padding:6px 0 6px 28px;position:relative;font-weight:500}.login-feats li::before{content:'✓';position:absolute;left:0;width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.22);text-align:center;line-height:20px;font-size:.75rem}
.ico{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
.nav-group{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;opacity:.65;font-weight:700;margin:18px 14px 8px}
.side-foot .btn{display:block;width:100%;margin-top:8px}
.bottomnav,.scrim{display:none}
.iconbtn{background:rgba(255,255,255,.16);border:0;color:#fff;border-radius:10px;padding:8px;display:flex;cursor:pointer}
.tb-user{font-weight:600;font-size:.85rem;opacity:.9;min-width:40px;text-align:right}
.hero-card{color:#fff;border-radius:18px;padding:24px 26px;margin-bottom:20px;display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;justify-content:space-between}
.hero-card .hi{margin:0;opacity:.85;font-weight:600}.hero-card h1{margin:4px 0 0;font-size:1.55rem}.hint-w{margin:8px 0 0;font-size:.82rem;opacity:.85}
.hero-mp label{color:#fff;opacity:.85}.hero-mp input{background:rgba(255,255,255,.95);width:auto}
.cards.big{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin-bottom:20px}
.cards.big .kpi{padding:22px}.cards.big .kpi .value{font-size:2rem}
.kpi .sub{font-size:.82rem;color:var(--muted);margin-top:6px;font-weight:500}.kpi.hl .sub{color:rgba(255,255,255,.88)}
a.kpi.link{text-decoration:none;color:inherit;transition:transform .12s,box-shadow .12s}a.kpi.link:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(57,40,112,.14)}
.quick{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 22px}
.empty{text-align:center;padding:34px 16px;color:var(--muted)}.empty b{display:block;color:var(--primary);font-size:1rem;margin-bottom:4px}.empty p{margin:0;font-size:.88rem}
.empty-i{width:54px;height:54px;border-radius:50%;background:var(--lilac);color:var(--primary);display:flex;align-items:center;justify-content:center;margin:0 auto 12px}.empty-i .ico{width:26px;height:26px}
.nd{color:#b3adc6}
.badge.demo{background:#fff3cd;color:#8a5a00;border:1px solid #f2d48a;font-size:.68rem;letter-spacing:.05em;padding:2px 8px}
.toast{display:flex;align-items:center;gap:10px;box-shadow:0 10px 30px rgba(0,0,0,.18);max-width:440px}
.toast.ok{background:#1f8a4c}.toast.err{background:#c0264f}
.ti{width:22px;height:22px;border-radius:50%;background:rgba(255,255,255,.25);display:inline-flex;align-items:center;justify-content:center;font-weight:800;flex:none}
.hint{display:block;font-size:.76rem;color:var(--muted);font-weight:500;margin-top:5px;line-height:1.35}
.small{font-size:.8rem}
.tabs{display:flex;gap:6px;margin-bottom:16px;border-bottom:2px solid var(--gray)}.tabs a{padding:9px 14px;text-decoration:none;font-weight:600;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-2px}.tabs a.active{color:var(--primary);border-color:var(--accent)}
@media (max-width:860px){
 .login-wrap.grad{display:flex;flex-direction:column;justify-content:center}.login-wrap.grad .logo-m{display:block;height:46px;margin:0 auto 22px}
 .login-wrap.grad .login-card{padding:26px 22px}.login-copy{display:block;text-align:center}
 .scrim.show{display:block;position:fixed;inset:0;background:rgba(20,10,40,.45);z-index:35}
 .sidebar{width:270px;overflow-y:auto;box-shadow:8px 0 30px rgba(0,0,0,.25)}
 .main{padding-bottom:90px}
 .bottomnav{display:flex;position:fixed;left:0;right:0;bottom:0;background:#fff;z-index:30;border-top:1px solid var(--gray);box-shadow:0 -4px 16px rgba(57,40,112,.08);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
 .bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:.66rem;font-weight:600;color:var(--muted);text-decoration:none;padding:4px 0;border-radius:10px}
 .bottomnav a.active{color:var(--accent)}.bottomnav a.active .ico{stroke-width:2.4}
 .toast{bottom:84px}
 .hero-card{padding:18px}.hero-card h1{font-size:1.25rem}.cards.big{grid-template-columns:1fr 1fr;gap:10px}.cards.big .kpi{padding:14px}.cards.big .kpi .value{font-size:1.3rem}
 .quick .btn{flex:1;text-align:center}
}
/* --- reglas, notificaciones, copias --- */
.badge.auto{background:#e1f0ff;color:#1f5aa8;font-size:.68rem}
.sb-head{display:flex;align-items:flex-start;justify-content:space-between}.sb-head img{margin-right:0}
.bell{position:relative}.bdot{position:absolute;top:-4px;right:-4px;background:var(--accent);color:#fff;font-style:normal;font-size:.62rem;font-weight:800;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid #fff}
.nlist{margin-top:14px;max-height:60vh;overflow:auto}
.nitem{display:block;text-decoration:none;color:var(--text);padding:12px 14px;border-radius:12px;margin-bottom:8px;background:#faf8ff;border-left:4px solid transparent}
.nitem.unread{background:#fdeef5;border-left-color:var(--accent)}.nitem b{display:block;color:var(--primary)}.nitem span{display:block;font-size:.88rem;margin-top:2px}.nitem small{color:var(--muted);font-size:.75rem}
ul.plain{margin:0;padding-left:18px;line-height:1.6}
@media (max-width:860px){.sidebar .sb-head .bell{display:none}}
/* ===== accesibilidad y modo oscuro (0008) ===== */
:root{color-scheme:light dark;--surface:#fff;--surface2:#faf8ff;--line:#e6e1f3;--focus:#C8156A;--chart-a:#392870;--chart-b:#C8156A;--chart-c:#0072B2;--chart-axis:#5f5978;--chart-grid:#E5E5E5}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:fixed;left:12px;top:-60px;z-index:100;background:var(--primary);color:#fff;padding:12px 18px;border-radius:10px;font-weight:700;text-decoration:none;transition:top .15s}
.skip:focus{top:12px}
:focus{outline:none}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}
.sidebar :focus-visible,.topbar :focus-visible,.grad :focus-visible,.kpi.hl:focus-visible{outline-color:#fff;box-shadow:0 0 0 5px rgba(30,0,60,.55)}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:1px;border-color:var(--focus)}
.nd{color:#767088}
.toast.ok{background:#1b7a3a}
.btn.accent{background:var(--accent)}
.badge.b-pink{background:#fde3ef;color:#a80f57}
.login-card .err,.err{color:#b3123f}
.ferr{color:#b3123f;font-size:.8rem;font-weight:600;margin:5px 0 0;display:flex;gap:6px;align-items:flex-start}.ferr::before{content:'!';flex:none;width:16px;height:16px;border-radius:50%;background:#b3123f;color:#fff;font-size:.7rem;display:inline-flex;align-items:center;justify-content:center;margin-top:1px}
[aria-invalid=true]{border-color:#b3123f!important}
.login-card h1{color:var(--primary);margin:0 0 6px;font-size:1.5rem}
.login-hero .hero-t{font-size:2.4rem;line-height:1.15;margin:0 0 12px;font-weight:700}
h2.h3{margin:0 0 14px;color:var(--primary);font-size:1.05rem}.modal-box h2.h3{font-size:1.17rem;margin:0 0 14px}
/* gráficos */
.chart .bar{fill:var(--chart-a)}.chart .bar.c-b{fill:var(--chart-b)}.chart .bar.c-c{fill:var(--chart-c)}
.chart .bar.hl{fill:url(#hatch)}.chart .bval{fill:var(--primary);font-weight:600}.chart .blab{fill:var(--chart-axis)}.chart .axis{stroke:var(--chart-grid)}
.chart g.bg{cursor:pointer}.chart g.bg:hover .bar,.chart g.bg:focus .bar{opacity:.8}.chart g.bg:focus{outline:none}.chart g.bg:focus-visible .bar{stroke:var(--focus);stroke-width:3}
.ctip{position:fixed;z-index:80;background:#1f1a33;color:#fff;padding:8px 12px;border-radius:10px;font-size:.85rem;font-weight:600;pointer-events:none;box-shadow:0 6px 20px rgba(0,0,0,.25);white-space:nowrap;transform:translate(-50%,calc(-100% - 10px))}
.chart-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.8rem;color:var(--muted);margin-top:6px}.chart-legend i{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:5px}
.lg-hatch{background:repeating-linear-gradient(45deg,var(--chart-b) 0 3px,var(--surface) 3px 6px);border:1px solid var(--chart-b)}
details.cdata{margin-top:8px}details.cdata summary{cursor:pointer;font-size:.85rem;font-weight:600;color:var(--primary);padding:8px 0}
details.cdata table{font-size:.85rem}
/* esqueletos */
.sk{background:linear-gradient(90deg,var(--sk1,#ece8f5) 25%,var(--sk2,#f7f5fc) 50%,var(--sk1,#ece8f5) 75%);background-size:200% 100%;animation:sk 1.2s linear infinite;border-radius:10px}
@keyframes sk{to{background-position:-200% 0}}
.sk-h{height:28px;width:40%;margin:8px 0 10px}.sk-s{height:14px;width:60%;margin-bottom:22px}.sk-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px}.sk-card{height:96px}.sk-row{height:44px;margin-bottom:8px}
.boot{padding:40px 24px;max-width:1100px;margin:0 auto}
/* móvil: tamaños y objetivos táctiles */
@media (max-width:860px){
 body{font-size:16px}
 input,select,textarea{font-size:16px;min-height:44px}
 .btn,.btn.sm{min-height:44px;font-size:.9rem;padding:10px 14px}
 .iconbtn{min-width:44px;min-height:44px;align-items:center;justify-content:center}
 .bottomnav a{min-height:48px;font-size:.72rem}
 .nav a{min-height:44px}.tabs a{min-height:44px;display:inline-flex;align-items:center}
 .hint,.small,th,.kpi .sub,.nitem small{font-size:.8rem}
 a{min-height:24px}
 table.resp td a:not(.btn){display:inline-block;padding:10px 0}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}a.kpi.link:hover{transform:none}}
/* modo oscuro automático */
@media (prefers-color-scheme:dark){
 :root{--primary:#cbbdff;--accent:#ff7ab3;--lilac:#2f2650;--bg:#120e1f;--text:#ece8f7;--muted:#b9b3cf;--gray:#3a3256;--surface:#1e1832;--surface2:#262040;--line:#3a3256;--focus:#ff8fc0;
  --chart-a:#a58cff;--chart-b:#ff7ab3;--chart-c:#56b4e9;--chart-axis:#b9b3cf;--chart-grid:#3a3256;--sk1:#241d3b;--sk2:#2f2750}
 body{background:var(--bg)}
 .card,.panel,.modal-box,.login-wrap.grad .login-card{background:var(--surface);box-shadow:0 2px 14px rgba(0,0,0,.35)}
 input,select,textarea{background:#15112a;color:var(--text);border-color:#4a4170}
 input::placeholder{color:#8f88aa}
 .btn{background:#5b44b8;color:#fff}.btn.accent{background:#C8156A}.btn.ghost{background:var(--lilac);color:var(--primary)}.btn.danger{background:transparent;color:#ff8fa8;border-color:#7a2a44}
 .btn.light{background:rgba(255,255,255,.18);color:#fff}
 .nav a.active{background:#fff;color:#392870}
 .bottomnav{background:#1a1530;border-top-color:var(--line)}.bottomnav a.active{color:var(--accent)}
 th{border-bottom-color:var(--line)}td{border-color:var(--line)!important}
 tr:hover td{background:transparent}
 .badge.b-gray{background:#3a3256;color:#d8d2ea}.badge.b-pink{background:#4a1834;color:#ffb3d3}.badge.b-green{background:#123d24;color:#8fe0ad}.badge.b-red{background:#4a1626;color:#ffadc0}
 .badge.auto{background:#13304f;color:#9fcbff}.badge.demo{background:#3d3010;color:#ffd97a;border-color:#6b5520}
 .notice{background:var(--lilac);color:#e3dbff}.notice.warn{background:#3a2c10;color:#ffd58a;border-color:#6b5520}
 .nitem{background:var(--surface2);color:var(--text)}.nitem.unread{background:#3a1830}
 .hb-t{background:#2a2342}.kv-tot{background:var(--lilac)}.kv-tot .t{border-color:#4a4170}
 .empty-i{background:var(--lilac);color:var(--primary)}
 .err,.login-card .err,.ferr{color:#ff9db5}.ferr::before{background:#ff9db5;color:#120e1f}[aria-invalid=true]{border-color:#ff9db5!important}
 .ctip{background:#f3f0ff;color:#1f1a33}
 .nd{color:#8f88aa}.diff s{color:#ff9db5}.diff ins{color:#8fe0ad}
 .tabs{border-color:var(--line)}
 .hero-mp input{background:#fff;color:#1f1a33}
 img[src*="logo"]{filter:none}
}
@media print{:root{color-scheme:light}}
/* Clientes: filas clicables y paginación */
tr.rowlink{cursor:pointer}tr.rowlink:hover td{background:var(--surface2)}tr.rowlink td a{color:inherit;font-weight:600;text-decoration:none}tr.rowlink td a:hover,tr.rowlink td a:focus-visible{text-decoration:underline}
tr.rowlink:focus-within{outline:2px solid var(--focus);outline-offset:-2px}
.pager{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;margin-top:14px}.pager .pnums{display:flex;flex-wrap:wrap;gap:4px}.pager button:disabled{opacity:.5;cursor:default}.pager .ptxt{flex-basis:100%;text-align:center}
.pager .btn.sm{min-width:44px;min-height:44px}
/* selector de meses múltiple */
.mpick{position:relative;display:inline-block}
.mpick>summary{list-style:none;cursor:pointer}.mpick>summary::-webkit-details-marker{display:none}
.mpick .mp-pop{position:absolute;z-index:50;top:calc(100% + 6px);left:0;background:#fff;color:#222;border:1px solid #ddd;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.15);padding:12px;min-width:300px;max-height:70vh;overflow:auto}
.hero-mp .mpick .mp-pop{left:auto;right:0}
.mp-q{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.mp-y{margin:8px 0}.mp-y b label{font-weight:700}
.mp-g{display:grid;grid-template-columns:repeat(4,1fr);gap:4px 10px;margin-top:4px}.mp-g label{font-size:.85rem;white-space:nowrap;cursor:pointer}
.mp-a{text-align:right;margin-top:8px;position:sticky;bottom:-12px;background:#fff;padding-top:6px}
/* fix selector de meses: casillas no heredan width:100% ni colores del hero/tema */
.mpick .mp-pop,.mpick .mp-pop *{color:#1f1a33}
.mpick .mp-pop label{display:flex;align-items:center;gap:6px;margin:0;opacity:1;font-weight:500;font-size:.88rem;color:#1f1a33;white-space:nowrap;cursor:pointer}
.mpick .mp-pop .mp-y>b label{font-weight:700;font-size:.95rem}
.mpick .mp-pop input[type=checkbox]{width:18px;height:18px;min-height:0;padding:0;margin:0;flex:0 0 18px;accent-color:#E7257F;background:#fff}
.mpick .mp-pop .btn{color:inherit}.mpick .mp-pop .btn.accent{color:#fff}
.mpick .mp-g{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:520px){.mpick .mp-pop{position:fixed;left:8px!important;right:8px!important;top:auto;bottom:8px;min-width:0;max-height:75vh}.mpick .mp-g{grid-template-columns:repeat(3,minmax(0,1fr))}}
