:root{--bg: #f6f7f9;--panel: #ffffff;--text: #1c2430;--muted: #6b7684;--border: #e2e6eb;--primary: #0b6bcb;--primary-ink: #ffffff;--danger: #c0392b;--ok: #1e7d43;--radius: 10px;--shadow: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .06)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--text);background:var(--bg);font-size:14px;line-height:1.5}h1{font-size:1.5rem;margin:0 0 .5rem}h2{font-size:1.1rem;margin:0 0 .75rem}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--muted)}.small{font-size:.85rem}.row{display:flex;gap:.5rem;align-items:center}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:1.5rem;padding:.75rem 1.25rem;background:var(--panel);border-bottom:1px solid var(--border)}.brand{font-weight:700;display:flex;align-items:center;gap:.5rem}.brand-logo{height:24px;width:auto;max-width:120px;object-fit:contain}.mainnav{display:flex;gap:1rem 1.1rem;flex:1;flex-wrap:wrap}.mainnav a{color:var(--text);padding:.25rem 0}.mainnav a.active{color:var(--primary);font-weight:600}.userbox{display:flex;align-items:center;gap:.6rem}.userbox-logo{border-radius:6px;object-fit:contain}.content{padding:1.5rem;max-width:1040px;width:100%;margin:0 auto}.center{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:1.5rem}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem}.login{width:340px;display:flex;flex-direction:column;gap:.75rem}.login-logo{max-height:48px;width:auto;max-width:100%;object-fit:contain;align-self:center}.client-logo,.userbox-logo{border-radius:6px;object-fit:contain;background:#fff}.logo-box{display:inline-block;border-radius:6px;background:var(--border);opacity:.5}.logo-preview{width:64px;height:64px;border:1px dashed var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;overflow:hidden;flex:none}.logo-preview img{max-width:100%;max-height:100%;object-fit:contain}.logo-preview:empty:after{content:"Sin logo";font-size:.7rem;color:var(--muted);text-align:center;padding:0 .25rem}.cards{list-style:none;padding:0;display:flex;gap:1rem;flex-wrap:wrap}.cards .card{min-width:200px}.pagehead{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}label{display:flex;flex-direction:column;gap:.25rem;font-weight:500}label.check{flex-direction:row;align-items:center;gap:.5rem;font-weight:400}input,select{font:inherit;padding:.5rem .6rem;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text)}input:focus,select:focus{outline:2px solid var(--primary);outline-offset:0}input[type=checkbox],input[type=radio]{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;width:16px;height:16px;padding:0;margin:0;border:none;background:none;flex:none;accent-color:var(--primary)}.btn{font:inherit;cursor:pointer;padding:.5rem .9rem;border-radius:8px;border:1px solid var(--border);background:var(--panel);color:var(--text)}.btn:hover{background:#f0f2f5}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.btn.primary:hover{filter:brightness(.95);background:var(--primary)}.btn.ghost{background:transparent}.badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;background:#eef1f4;color:var(--muted);text-transform:capitalize}.badge.estado-activo{background:#e4f6ea;color:var(--ok)}.badge.estado-suspendido{background:#fdf1dc;color:#9a6700}.badge.estado-baja{background:#fbe6e4;color:var(--danger)}.badge.estado-finalizado,.badge.estado-pendiente{background:#eef1f4;color:var(--muted)}.badge.estado-pagada{background:#e4f6ea;color:var(--ok)}.badge.estado-parcial{background:#fdf1dc;color:#9a6700}.badge.estado-vencida{background:#fbe6e4;color:var(--danger)}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}th.num{text-align:right}.totals{padding-top:.5rem}textarea{font:inherit;padding:.5rem .6rem;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);resize:vertical}textarea:focus{outline:2px solid var(--primary)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.stack{display:flex;flex-direction:column;gap:1.25rem}.rowform{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.6rem 1rem;align-items:end}.rowform .btn{height:fit-content}.status-select{padding:.25rem .4rem;font-size:.85rem}.seg{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.bar{background:var(--border);border-radius:4px;height:10px;min-width:60px;overflow:hidden}.bar>span{display:block;height:100%;background:var(--primary)}.bar.diverging{position:relative;overflow:visible}.bar.diverging:after{content:"";position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--muted);opacity:.6}.bar.diverging>span{position:absolute;top:0}.bar.diverging>span.pos{left:50%;border-radius:0 4px 4px 0}.bar.diverging>span.neg{right:50%;border-radius:4px 0 0 4px;background:var(--danger)}.neg-text{color:var(--danger)}@media (prefers-color-scheme: dark){.neg-text{color:#ff7b6e}.bar.diverging>span.neg{background:#ff7b6e}}tr.total-row td{font-weight:600;border-top:2px solid var(--border);background:#7f7f7f14}.filters{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.filters input{min-width:280px;flex:1}.tablewrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.table th,.table td{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--border)}.table th{font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.table tr:last-child td{border-bottom:none}.pager{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem}.form{display:flex;flex-direction:column;gap:1rem}fieldset{border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem 1.25rem;display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1.25rem;background:var(--panel)}fieldset legend{font-weight:700;padding:0 .4rem}fieldset label.check{grid-column:1 / -1}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;align-items:start}.kv{display:grid;grid-template-columns:max-content 1fr;gap:.3rem 1rem;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0}.alert{padding:.6rem .75rem;border-radius:8px;font-size:.9rem}.alert.error{background:#fbe6e4;color:var(--danger)}.alert.ok{background:#e4f6ea;color:var(--ok)}.temp-pass{font-size:1.1rem;background:#eef1f4;padding:.2rem .5rem;border-radius:6px}.seg{display:flex;gap:1rem;align-items:center}:root{--chart-grid: #e7ebef;--chart-axis: #c3cbd3}.chart-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:.75rem 1rem 1rem}.chart-head{display:flex;align-items:center;justify-content:space-between}.chart-head h3{margin:0 0 .5rem;font-size:.95rem}.chart-body{width:100%}.kpi-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.75rem}.kpi-tile{border:1px solid var(--border);border-radius:10px;background:var(--panel);padding:.6rem .75rem}.kpi-name{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--muted)}.kpi-value{font-size:1.4rem;font-weight:700;font-variant-numeric:tabular-nums;margin-top:.15rem}.kpi-unit{font-size:.8rem;font-weight:500;color:var(--muted)}.kpi-sub{font-size:.78rem;color:var(--muted);margin-top:.1rem}.kpi-sub .up{color:var(--ok)}.kpi-sub .down{color:var(--danger)}.kpi-spark{margin-top:.3rem}.chart-tooltip{background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);padding:.5rem .65rem;font-size:.82rem;max-width:280px}.chart-tooltip-head{color:var(--muted);margin-bottom:.3rem}.chart-tooltip-row{display:grid;grid-template-columns:10px 1fr auto;gap:.4rem;align-items:center}.chart-tooltip-key{width:10px;height:2px;border-radius:2px;display:inline-block}.chart-tooltip-name{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart-tooltip-val{font-weight:700;font-variant-numeric:tabular-nums}@media (max-width: 720px){.topbar{flex-wrap:wrap;gap:.75rem}fieldset,.grid2{grid-template-columns:1fr}.filters input{min-width:0}}@media (prefers-color-scheme: dark){:root{--bg: #14181d;--panel: #1c222a;--text: #e6e9ee;--muted: #9aa4b2;--border: #2c343f;--primary: #4c9ee8;--primary-ink: #0b1017}input,select{background:#232a33}.btn:hover{background:#262e38}.badge{background:#2a323c}:root{--chart-grid: #2b333d;--chart-axis: #3a444f}}:root{--warn-bg: #fdf1dc;--warn: #9a6700;--danger-bg: #fbe6e4;--ok-bg: #e4f6ea}.brand{color:var(--text)}.brand:hover{text-decoration:none}.content{max-width:1280px}.badge.estado-registrada{background:#e7f0fb;color:var(--primary)}.badge.estado-validada{background:var(--ok-bg);color:var(--ok)}.badge.estado-anulada{background:#eef1f4;color:var(--muted);text-decoration:line-through}.badge.origen-app{background:#efe9fb;color:#5b3fb5}.badge.origen-web_manual{background:#eef1f4;color:var(--muted)}.badge.rol-admin{background:#e7f0fb;color:var(--primary)}.num.fuera,.fuera{color:var(--danger);font-weight:700}tr.row-fuera td:first-child{box-shadow:inset 3px 0 0 var(--danger)}tr.row-anulada td{color:var(--muted)}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#7f7f7f0f}.filters.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.6rem .75rem;align-items:end}.filters.grid input{min-width:0}.filters.grid label{font-size:.82rem}.actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.thumb{width:44px;height:44px;border-radius:6px;object-fit:cover;display:block;background:var(--border)}.img-missing,.img-loading{display:inline-block;width:44px;height:44px;border-radius:6px;background:var(--border);font-size:.6rem;color:var(--muted);text-align:center;line-height:1.2;padding-top:.7rem}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}.gallery figure{margin:0;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--panel)}.gallery img,.gallery .img-missing,.gallery .img-loading{width:100%;height:130px;object-fit:cover;display:block;cursor:zoom-in;border-radius:0}.gallery figcaption{padding:.35rem .5rem;font-size:.78rem;display:flex;justify-content:space-between;gap:.25rem;align-items:center}.gallery .pdf{height:130px;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--muted);cursor:pointer}.planilla{width:100%;border-collapse:collapse;background:var(--panel)}.planilla th{background:#d9d9d9;color:#1c2430;font-size:.75rem;text-transform:uppercase;padding:.45rem .4rem;border:1px solid #9aa4b2;white-space:nowrap}.planilla td{border:1px solid var(--border);padding:.2rem;vertical-align:top}.planilla input,.planilla select{width:100%;padding:.35rem .4rem;border-radius:4px;font-size:.85rem;min-width:0}.planilla input.valor{text-align:right;font-variant-numeric:tabular-nums;width:80px}.planilla input.valor.fuera{border-color:var(--danger);background:var(--danger-bg);color:var(--danger)}.planilla tr.ok td{background:var(--ok-bg)}.planilla tr.err td{background:var(--danger-bg)}.planilla .rowmsg{font-size:.75rem;color:var(--danger);padding:.15rem .3rem 0}.planilla .rowmsg.ok{color:var(--ok)}.planilla .idx{color:var(--muted);font-size:.75rem;text-align:center;padding-top:.5rem}.planilla .x{padding:.2rem .45rem}.kpi-tile.alert-tile .kpi-value{color:var(--danger)}.legend{display:flex;gap:.9rem;flex-wrap:wrap;font-size:.8rem;color:var(--muted);margin-bottom:.4rem}.legend-key{display:inline-block;width:14px;height:2px;border-radius:2px;vertical-align:middle;margin-right:.35rem}.legend-band{display:inline-block;width:14px;height:10px;background:#1e7d431f;border:1px dashed var(--ok);vertical-align:middle;margin-right:.35rem}.timeline{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.timeline li{border-left:2px solid var(--border);padding-left:.75rem}.timeline pre{margin:.25rem 0 0;font-size:.75rem;white-space:pre-wrap;color:var(--muted);max-height:160px;overflow:auto}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:20;padding:1rem}.modal{width:min(560px,100%);max-height:90vh;overflow:auto}.checks{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem}.inline-form{display:flex;gap:.5rem;flex-wrap:wrap;align-items:end}@media (prefers-color-scheme: dark){:root{--warn-bg: #3a2f17;--warn: #e8b55a;--danger-bg: #3b1f1c;--ok-bg: #173323}.planilla th{background:#2c343f;color:var(--text);border-color:#3a444f}.badge.estado-registrada,.badge.rol-admin{background:#1d2f45}.badge.origen-app{background:#2b2445;color:#b5a6f0}.alert.error{background:var(--danger-bg);color:#ff8a7e}.alert.ok{background:var(--ok-bg);color:#6fd39a}.num.fuera,.fuera{color:#ff7b6e}}.badge.alerta{background:var(--danger-bg);color:var(--danger);text-transform:none}@media (prefers-color-scheme: dark){.badge.alerta{color:#ff7b6e}}.planilla input.hora{width:72px;text-align:center;font-variant-numeric:tabular-nums}
