/* Maxsel Hotel — menú lateral oscuro, tarjetas de habitación tipo llavero. En celular el menú pasa arriba. */
:root{
  --bg:#eef0f4; --panel:#fff; --panel2:#f6f7fa; --ink:#161d2b; --muted:#5b6476; --line:#d9dde6;
  --nav:#131a28; --navInk:#c9cfdc; --navOn:#fff; --accent:#1f3f8f; --accentInk:#fff; --brass:#a8741c;
  --libre:#1b845a; --libreBg:#e3f4ec; --ocup:#c03434; --ocupBg:#fbe7e7; --limp:#b77a06; --limpBg:#fcf1d9; --mant:#6550b8; --mantBg:#ece8fa;
  --shadow:0 1px 2px rgba(20,29,43,.08),0 4px 14px rgba(20,29,43,.06);
  --fDisp:"Bahnschrift","Segoe UI Semibold","Arial Narrow",system-ui,sans-serif;
  --fBody:"Segoe UI",system-ui,-apple-system,Roboto,sans-serif;
  --fMono:Consolas,"Cascadia Mono",ui-monospace,monospace;
  --m-dia:#2563eb; --m-semana:#e07a10; --m-mes:#b4237a;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--fBody);font-size:15px;line-height:1.45}
button,input,select,textarea{font:inherit;color:inherit}
svg.i{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.app{display:grid;grid-template-columns:220px 1fr;min-height:100%}
aside{background:var(--nav);color:var(--navInk);padding:18px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}
.brand{padding:2px 8px 16px;display:flex;flex-direction:column;gap:6px}
.brand img{display:block;width:100%;max-width:180px;height:auto;background:none;border-radius:0;padding:0;object-fit:contain}
.brand small{font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.nav{display:flex;flex-direction:column;gap:2px}
.nav button{background:none;border:0;text-align:left;padding:10px 12px;border-radius:8px;cursor:pointer;color:var(--navInk);font-weight:600;display:flex;justify-content:space-between;align-items:center;gap:8px}
.nav button:hover{background:rgba(255,255,255,.06);color:var(--navOn)}
.nav button.on{background:rgba(255,255,255,.1);color:var(--navOn);box-shadow:inset 3px 0 0 var(--brass)}
.nav .cnt{font-size:12px;background:rgba(255,255,255,.14);border-radius:20px;padding:0 8px}
.pie{margin-top:auto;padding:10px;font-size:12px;display:flex;flex-direction:column;gap:6px}
.pie button{background:none;border:1px solid rgba(255,255,255,.2);color:var(--navInk);border-radius:8px;padding:6px;cursor:pointer}
main{padding:24px 28px 60px;min-width:0}
.top{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:flex-end;margin-bottom:18px}
h1{font-family:var(--fDisp);font-weight:700;font-size:28px;margin:0;letter-spacing:-.01em}
h2{font-family:var(--fDisp);font-weight:700;font-size:18px;margin:0 0 10px}
.sub{color:var(--muted);font-size:13px}
.btn{border:1px solid var(--line);background:var(--panel);padding:9px 14px;border-radius:9px;cursor:pointer;font-weight:600;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}
.btn:hover{border-color:var(--muted)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--accentInk)}
.btn.ok{background:var(--libre);border-color:var(--libre);color:#fff}
.btn.bad{color:var(--ocup);border-color:var(--ocup)}
.btn.sm{padding:5px 10px;font-size:13px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;min-width:0}
.stack{display:flex;flex-direction:column;gap:16px}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.tabs button{border:1px solid var(--line);background:var(--panel);border-radius:20px;padding:7px 14px;cursor:pointer;font-weight:600}
.tabs button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
/* estados */
.states{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:12px}
.st{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:10px 12px;cursor:pointer;text-align:left;display:flex;flex-direction:column}
.st b{font-family:var(--fDisp);font-size:26px;font-variant-numeric:tabular-nums;line-height:1.1}
.st span{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.st.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.st[data-s=libre] b{color:var(--libre)}.st[data-s=ocupada] b{color:var(--ocup)}.st[data-s=limpieza] b{color:var(--limp)}.st[data-s=mant] b{color:var(--mant)}
.leyenda{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-bottom:18px;align-items:center}
.leyenda i{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:-2px;margin-right:5px}
/* tarjetas de habitación */
.floor{margin-bottom:22px}
.floor h3{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:12px}
.tag{position:relative;border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:22px 12px 12px;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:5px;box-shadow:var(--shadow);border-top:7px solid var(--c);min-height:168px}
.tag.ocupada{background:color-mix(in srgb,var(--c) 9%,var(--panel))}
.tag::before{content:"";position:absolute;top:7px;left:50%;width:11px;height:11px;margin-left:-5px;border-radius:50%;background:var(--bg);border:1px solid var(--line)}
.tag:hover{transform:translateY(-1px)}
.tag .cab{display:flex;justify-content:space-between;align-items:flex-start;gap:6px}
.tag .num{font-family:var(--fDisp);font-weight:700;font-size:28px;line-height:1;color:var(--brass);font-variant-numeric:tabular-nums}
.tag .clase{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);border-radius:6px;padding:1px 6px;color:var(--muted)}
.tag .clase.depto{border-color:var(--accent);color:var(--accent)}
.tag .nom{font-size:12px;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tag .who{font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tag .out{font-size:12px;color:var(--muted)}
.tag .out.late{color:var(--ocup);font-weight:700}
.feats{display:flex;flex-wrap:wrap;gap:4px 8px;font-size:12px;color:var(--muted);align-items:center}
.feats span{display:inline-flex;align-items:center;gap:2px}
.feats svg.i{width:15px;height:15px}
.amen{display:flex;flex-wrap:wrap;gap:3px;color:var(--muted)}
.amen svg.i{width:15px;height:15px}
.pill{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;border-radius:20px;background:var(--b);color:var(--c);width:fit-content}
.s-libre{--c:var(--libre);--b:var(--libreBg)}.s-limpieza{--c:var(--limp);--b:var(--limpBg)}.s-mant{--c:var(--mant);--b:var(--mantBg)}.s-ocupada{--c:var(--ocup);--b:var(--ocupBg)}
.m-dia{--c:var(--m-dia)}.m-semana{--c:var(--m-semana)}.m-mes{--c:var(--m-mes)}
.pill.mod{background:var(--c);color:#fff}
.p-ok{--c:var(--libre);--b:var(--libreBg)}.p-bad{--c:var(--ocup);--b:var(--ocupBg)}.p-warn{--c:var(--limp);--b:var(--limpBg)}
/* tablas */
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:8px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
tr.click{cursor:pointer}tr.click:hover td{background:var(--panel2)}
.mono{font-family:var(--fMono);font-size:13px}
.empty{color:var(--muted);padding:14px 4px;font-size:14px}
/* formularios */
.f{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
label.l,div.l,.lbl{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.03em}
input,select,textarea{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:9px 10px;font-size:15px;width:100%;min-width:0}
input[type=color]{padding:2px;height:40px;cursor:pointer}
input[type=checkbox]{width:auto}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.seg label{flex:1;min-width:110px;border:1px solid var(--line);border-radius:10px;padding:10px;cursor:pointer;display:flex;flex-direction:column;gap:2px;font-size:14px;font-weight:600;position:relative}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg label:has(input:checked){border-color:var(--c,var(--accent));box-shadow:inset 0 0 0 2px var(--c,var(--accent))}
.seg label:has(input:disabled){opacity:.4;cursor:not-allowed}
.seg small{color:var(--muted);font-weight:500}
.seg .dot{width:10px;height:10px;border-radius:50%;background:var(--c);display:inline-block;margin-right:6px}
.chipsel{display:flex;flex-wrap:wrap;gap:8px}
.chipsel label{border:1px solid var(--line);border-radius:20px;padding:6px 12px 6px 9px;cursor:pointer;display:inline-flex;gap:6px;align-items:center;font-size:13px;font-weight:600;position:relative}
.chipsel input{position:absolute;opacity:0;pointer-events:none}
.chipsel label:has(input:checked){background:var(--accent);color:var(--accentInk);border-color:var(--accent)}
.f.cont{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.contador{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--line);border-radius:10px;padding:6px 10px}
.contador span{font-size:13px;font-weight:600;display:flex;gap:6px;align-items:center}
.qty{display:flex;align-items:center;gap:6px}
.qty button{width:30px;height:30px;border-radius:7px;border:1px solid var(--line);background:var(--panel2);cursor:pointer;font-size:16px}
.qty b{min-width:18px;text-align:center;font-variant-numeric:tabular-nums}
.calc{background:var(--panel2);border-radius:10px;padding:12px;display:grid;grid-template-columns:1fr auto;gap:4px 12px;font-size:14px}
.calc b{font-variant-numeric:tabular-nums;text-align:right}
.calc .big{font-family:var(--fDisp);font-size:22px}
.aviso{background:var(--limpBg);border:1px solid var(--limp);border-radius:10px;padding:10px 12px;font-size:14px}
.aviso.bad{background:var(--ocupBg);border-color:var(--ocup)}
.aviso.ok{background:var(--libreBg);border-color:var(--libre)}
/* tienda */
.pos{display:grid;grid-template-columns:1fr 360px;gap:16px;align-items:start}
.prods{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-top:12px}
.prod{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:10px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:2px}
.prod b{font-variant-numeric:tabular-nums}.prod small{color:var(--muted)}
.prod[disabled]{opacity:.45;cursor:not-allowed}
.line{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.total{display:flex;justify-content:space-between;align-items:baseline;margin:12px 0}
.total b{font-family:var(--fDisp);font-size:30px;font-variant-numeric:tabular-nums}
/* reportes */
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}
.kpi span{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.kpi b{display:block;font-family:var(--fDisp);font-size:26px;font-variant-numeric:tabular-nums}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--line);border-left:4px solid var(--c);border-radius:8px;padding:6px 10px;background:var(--panel);font-size:13px}
.chip b{font-family:var(--fDisp);color:var(--brass);margin-right:6px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:14px}
.kv span{color:var(--muted)}
/* modal */
#modal{position:fixed;inset:0;background:rgba(10,14,22,.55);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto;z-index:20}
.mbox{background:var(--panel);border-radius:14px;width:100%;max-width:600px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.mbox.ancho{max-width:760px}
.mbox header{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line)}
.mbox h3{margin:0;font-family:var(--fDisp);font-size:20px}
.mbox header button{border:0;background:none;font-size:26px;cursor:pointer;color:var(--muted);line-height:1}
.mbody{padding:18px;display:flex;flex-direction:column;gap:14px}
.mbox footer{padding:14px 18px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:10px;font-weight:600;z-index:30;box-shadow:var(--shadow);max-width:90vw}
#toast.bad{background:var(--ocup);color:#fff}
/* acceso */
.acceso{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:var(--nav)}
.acceso .card{width:100%;max-width:420px;display:flex;flex-direction:column;gap:14px;padding:26px}
.acceso img{max-width:300px;width:100%;height:auto;align-self:center;background:none}
.codigo{font-family:var(--fMono);font-size:22px;letter-spacing:2px;text-align:center;background:var(--panel2);border-radius:10px;padding:12px}
/* solo ver (monitoreo) */
.solover .op{display:none!important}
/* ticket */
#ticket{display:none}
@media print{
  body *{visibility:hidden}
  #ticket,#ticket *{visibility:visible}
  #ticket{display:block;position:absolute;left:0;top:0;color:#000;background:#fff}
  @page{margin:2mm}
}
/* responsivo */
@media (max-width:900px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.pos{grid-template-columns:1fr}.states{grid-template-columns:repeat(3,1fr)}}
@media (max-width:760px){
  .app{grid-template-columns:1fr}
  aside{position:sticky;top:0;height:auto;flex-direction:row;align-items:center;padding:8px 10px;padding-top:calc(8px + env(safe-area-inset-top,0px));z-index:10;overflow-x:auto}
  .brand{padding:0 6px 0 2px}.brand img{max-width:96px;padding:0}.brand small{display:none}
  .nav{flex-direction:row}.nav button{white-space:nowrap;padding:8px 10px}.nav .cnt{display:none}
  .pie{margin:0;flex-direction:row}.pie span{display:none}
  main{padding:16px 16px 60px}
  h1{font-size:22px}
  .grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .states{grid-template-columns:repeat(3,1fr)}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---------- v1.1: firmas, fotos, mantenimiento, documentos ---------- */
.padf{display:flex;flex-direction:column;gap:6px;min-width:0}
.padf canvas{width:100%;height:auto;aspect-ratio:600/190;border:1.5px dashed var(--muted);border-radius:10px;background:#fff;touch-action:none;cursor:crosshair}
.firma-img{width:100%;max-height:120px;object-fit:contain;border:1px solid var(--line);border-radius:10px;background:#fff}
.fotos{display:flex;flex-wrap:wrap;gap:8px}
.fotos img{width:96px;height:96px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}
.fmini{position:relative}
.fmini button{position:absolute;top:-6px;right:-6px;width:24px;height:24px;border-radius:50%;border:0;background:var(--ocup);color:#fff;cursor:pointer;line-height:1}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.mcard{display:flex;gap:12px;text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:10px;cursor:pointer;box-shadow:var(--shadow);min-width:0}
.mcard img,.mcard .msin{width:84px;height:84px;flex:none;border-radius:8px;object-fit:cover;background:var(--panel2);display:flex;align-items:center;justify-content:center;color:var(--muted)}
.mcard .msin svg.i{width:30px;height:30px}
.mbody2{display:flex;flex-direction:column;gap:4px;min-width:0}
.mbody2 b{font-size:15px}
.linea{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:8px;font-size:14px}
.linea li{position:relative;color:var(--muted)}
.linea li::before{content:"";position:absolute;left:-21px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--line)}
.linea li.ok{color:var(--ink)}.linea li.ok::before{background:var(--libre)}
.enlace{cursor:pointer;text-decoration:underline dotted}
#toast{pointer-events:none}
.padf canvas{user-select:none;-webkit-user-select:none}
/* vista previa e impresión de documentos */
.prev{background:#e9ebef;border-radius:10px;padding:14px;overflow:auto;max-height:65vh}
.prev .doc{background:#fff;margin:0 auto;box-shadow:0 2px 10px rgba(0,0,0,.15)}
.doc{color:#000;font-family:Arial,Helvetica,sans-serif}
.doc.f-80{width:76mm;padding:3mm;font-size:12px}
.doc.f-58{width:54mm;padding:2mm;font-size:10.5px}
.doc.f-carta{width:100%;max-width:190mm;padding:6mm;font-size:12px}
.doc pre.tk{font-family:Consolas,"Courier New",monospace;font-size:inherit;white-space:pre-wrap;margin:0}
.doc .dc{display:flex;flex-direction:column;gap:6px}
.doc .dc-enc{text-align:center;display:flex;flex-direction:column}
.doc .dc-enc b{font-size:1.25em}
.doc .dc-tit{text-align:center;font-weight:700;border-top:1px dashed #000;border-bottom:1px dashed #000;padding:4px 0;margin-top:4px}
.doc .dc-copia{text-align:center;font-size:.85em;letter-spacing:.2em;font-weight:700}
.doc .dc-kv{display:grid;grid-template-columns:auto 1fr;gap:2px 8px}
.doc .dc-kv b{text-align:right}
.doc .dc-monto{text-align:center;font-size:1.8em;font-weight:700;border:1.5px solid #000;border-radius:6px;padding:4px;display:flex;flex-direction:column}
.doc .dc-monto small{font-size:.42em;font-weight:400}
.doc .dc-nota{margin:0;font-size:.95em}
.doc .dc-firmas{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
.doc.f-58 .dc-firmas,.doc.f-80 .dc-firmas{grid-template-columns:1fr}
.doc .dc-firma{display:flex;flex-direction:column;align-items:center;text-align:center;font-size:.9em}
.doc .dc-firma img{width:100%;max-width:62mm;height:20mm;object-fit:contain}
.doc .dc-sinfirma{height:16mm}
.doc .dc-linea{width:90%;border-top:1px solid #000}
.doc .corte{text-align:center;margin:10px 0;color:#444;font-size:.9em}
.doc.f-carta .mitad{border:1px solid #000;border-radius:6px;padding:5mm;min-height:118mm}
.doc .ct{font-size:11.5px;line-height:1.5}
.doc .ct h3{text-align:center;margin:8px 0 2px;font-size:16px;letter-spacing:.05em}
.doc .ct h4{text-align:center;margin:12px 0 4px}
.doc .ct p{margin:0 0 7px;text-align:justify}
.doc .ct-folio{text-align:center;font-size:.9em;margin-bottom:6px}
.doc .ct-res{width:100%;border-collapse:collapse;margin:6px 0 10px;font-size:11px}
.doc .ct-res td{border:1px solid #000;padding:3px 5px}
.doc .ct-res td:nth-child(odd){font-weight:700;background:#f0f0f0;width:16%}
.doc .ct-firmas{margin-top:22px;break-inside:avoid}
@media print{#ticket .doc{box-shadow:none;margin:0}#ticket .doc.f-carta{max-width:none;padding:0}.doc.f-carta .mitad{break-inside:avoid}}

/* ---------- v1.2: turno de caja y permisos ---------- */
.turnoBar{padding:6px 4px}
.turnoBar .tb{width:100%;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.06);color:var(--navOn);border-radius:10px;padding:8px 10px;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;gap:1px;font-weight:700;text-align:left}
.turnoBar .tb small{font-weight:500;color:var(--navInk);font-size:11px}
.turnoBar .tb.on{border-color:var(--libre);box-shadow:inset 3px 0 0 var(--libre)}
.turnoBar .tb:not(.on){border-color:var(--brass);box-shadow:inset 3px 0 0 var(--brass)}
.permgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}
.permg{border:1px solid var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:6px;font-size:13px}
.permg label{display:flex;gap:8px;align-items:flex-start;cursor:pointer}
.permg input{margin-top:2px;flex:none;width:16px;height:16px}
@media (max-width:760px){.turnoBar{padding:0 4px}.turnoBar .tb{white-space:nowrap;padding:6px 8px}}
.doc.f-80 pre.tk{font-size:10px;line-height:1.35}
.doc.f-58 pre.tk{font-size:9.5px;line-height:1.35}
.mixto{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:6px;padding:10px;border:1px dashed var(--accent);border-radius:10px;background:var(--panel2)}
.mixto label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:700;color:var(--muted)}
.mixto[hidden]{display:none!important}
/* 1.2.2 Método de pago: renglón completo con los 4 montos */
.f > div.l:has(> .mixto){grid-column:1/-1}
.mixto{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}
div.l > small.sub{font-weight:400;font-size:13px;letter-spacing:0}
/* 1.3 Habitaciones en lote */
.mbox.extra{max-width:1100px}
.edgrid{max-height:46vh;overflow:auto}
.edgrid table input,.edgrid table select{padding:5px 7px;font-size:13px;min-height:0}
.edgrid td{padding:4px 6px;vertical-align:middle}
.edgrid tr.sel td{background:color-mix(in srgb,var(--accent) 10%,transparent)}
.edgrid tr.cambio td:nth-child(2){box-shadow:inset 3px 0 0 var(--ocup)}
.edgrid .edinc{white-space:nowrap;font-size:12px}
.edgrid thead th{position:sticky;top:0;background:var(--panel);z-index:1}
details.edlote{padding:12px}
details.edlote summary{cursor:pointer;margin-bottom:8px}
/* 1.4 Rato y noche, por vencer, vencida */
:root{--m-rato:#0d9488;--m-noche:#4f46e5;--porvencer:#ea580c;--vencida:#c03434}
.m-rato{--c:var(--m-rato)}.m-noche{--c:var(--m-noche)}
.tag.porvencer{--c:var(--porvencer)}
.tag.vencida{--c:var(--vencida)}
.tag.porvencer,.tag.vencida{border-color:var(--c);box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 35%,transparent),var(--shadow)}
.tag .out.late{color:var(--vencida)}
.tag .out.pronto{color:var(--porvencer);font-weight:700}
.pill.pv{--c:#fff;--b:var(--porvencer)}
body.sin-contratos .solo-contratos{display:none!important}
.seg + .lbl{margin-top:4px}
/* 1.4 Gastos fijos */
.fijos{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.fijo{border:1px solid var(--line);border-left:6px solid var(--libre);border-radius:12px;padding:12px;background:var(--panel);display:flex;flex-direction:column;gap:3px}
.fijo .big{font-size:20px;font-weight:700;margin-top:4px}
.fijo.f-por_vencer{border-left-color:var(--porvencer);background:color-mix(in srgb,var(--porvencer) 7%,var(--panel))}
.fijo.f-vencido{border-left-color:var(--vencida);background:color-mix(in srgb,var(--vencida) 8%,var(--panel))}
.fijo .pronto{color:var(--porvencer);font-weight:700;font-size:13px}
.fijo .malo{color:var(--vencida);font-weight:700;font-size:13px}
/* 1.4.2 Corte detallado en PDF */
.doc .rep{font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#000}
.doc .rep h3{font-size:12px;margin:10px 0 4px;border-bottom:1.5px solid #000;padding-bottom:2px;text-transform:uppercase;letter-spacing:.04em}
.doc .rep table{width:100%;border-collapse:collapse;margin-bottom:4px}
.doc .rep th,.doc .rep td{padding:2px 4px;border-bottom:1px solid #ccc;text-align:left;font-size:10.5px}
.doc .rep th{background:#eee;font-weight:700}
.doc .rep .n{text-align:right;white-space:nowrap}
.doc .rep tr.t td{font-weight:700;border-top:1.5px solid #000}
.doc .rep-enc{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;margin-bottom:8px}
.doc .rep-enc b{font-size:16px}
.doc .rep-tot{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:6px 0}
.doc .rep-tot div{border:1.5px solid #000;border-radius:6px;padding:5px;display:flex;flex-direction:column;align-items:center}
.doc .rep-tot small{font-size:9.5px;text-transform:uppercase}
.doc .rep-tot b{font-size:15px}
.doc .rep-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.doc .rep-firmas{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:30px;text-align:center}
.doc .rep-firmas span{display:block;border-top:1px solid #000;margin-bottom:3px}
.doc .rep-pie{margin-top:10px;font-size:9px;color:#555;text-align:center}
/* 1.5 Clasificación de gastos */
.kpi.kpib{text-align:left;cursor:pointer;font:inherit;color:inherit}
.kpi.kpib:hover{border-color:var(--accent)}
.kpi.kpib.on{border-color:var(--accent);box-shadow:inset 0 -3px 0 var(--accent)}
/* 1.6 Empleados, proveedores, nómina */
.xsec{border:1px dashed var(--accent);border-radius:10px;padding:10px;background:var(--panel2)}
.xsec[hidden]{display:none!important}
.nomgrid{max-height:48vh;overflow:auto}
.nomgrid td{vertical-align:middle;padding:4px 6px}
.nomgrid input[type=number]{padding:5px 7px;font-size:13px;min-height:0;text-align:right}
.doc .rep table.raya td{height:13mm;vertical-align:middle}
.doc .rep table.raya td.firma{border-bottom:1px solid #000}
/* 1.7 Asistencia y cierre de mes */
.checador{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:16px}
.checador > .card:nth-child(3),.checador > .card:nth-child(4){grid-column:span 1}
.chk-reloj{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:160px}
.chk-hora{font-family:var(--fDisp);font-size:56px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}
.chk-res{min-height:70px;display:flex;align-items:center}
.chk-ok{display:flex;flex-direction:column;gap:2px;border-left:6px solid var(--libre);padding:8px 12px;background:var(--libreBg);border-radius:10px;width:100%}
.chk-ok b{font-size:22px}.chk-ok span{font-size:16px}
.chk-ok.tarde{border-left-color:var(--porvencer);background:color-mix(in srgb,var(--porvencer) 10%,var(--panel))}
.chk-aviso{color:var(--porvencer);font-weight:700}
.chk-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chk-btns .btn.pri{font-size:17px;padding:12px 26px}
table.hor input{padding:5px 7px;min-height:0;font-size:14px}
@media (max-width:900px){.checador{grid-template-columns:1fr}}
/* ---------- 1.8 ---------- */
:root{--cx-debe:#d29a06;--cx-pagada:#1b845a;--cx-vencida:#c03434}
.tag .clase.local{border-color:#b4237a;color:#b4237a}
.tabs.unidades button small{opacity:.7;margin-left:4px;font-weight:500}
.scan{display:flex;align-items:center;gap:8px;border:2px solid var(--accent);border-radius:12px;padding:4px 10px;background:var(--panel)}
.scan svg.i{width:26px;height:26px;color:var(--accent);flex:none}
.scan input{border:0;outline:0;font-size:17px;padding:8px 2px;flex:1;background:transparent}
.scan .sub{white-space:nowrap;font-size:12px;color:var(--libre);font-weight:700}
.scan:focus-within{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.chips.areas{margin:10px 0}
.chips.areas .chip{border-left-width:1px;cursor:pointer;font-weight:600}
.chips.areas .chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.chips.areas .chip small{opacity:.7}
.card.autoriza{border:2px dashed var(--porvencer);padding:12px;margin-top:12px}
.pill.ct-multa{--c:#c03434;--b:#fbe7e7}.pill.ct-mora{--c:#b45309;--b:#fdf0dc}.pill.ct-limpieza{--c:#0d9488;--b:#dff5f2}.pill.ct-mascota{--c:#7c3aed;--b:#efe7fd}.pill.ct-otro{--c:#4b5563;--b:#eef0f2}
.pill.cx-debe{--c:var(--cx-debe);--b:color-mix(in srgb,var(--cx-debe) 16%,var(--panel))}
.pill.cx-pagada{--c:var(--cx-pagada);--b:color-mix(in srgb,var(--cx-pagada) 16%,var(--panel))}
.pill.cx-vencida{--c:var(--cx-vencida);--b:color-mix(in srgb,var(--cx-vencida) 16%,var(--panel))}
tr.cxr td:first-child{border-left:5px solid transparent}
tr.cxr.cx-debe td:first-child{border-left-color:var(--cx-debe)}
tr.cxr.cx-pagada td:first-child{border-left-color:var(--cx-pagada)}
tr.cxr.cx-vencida td:first-child{border-left-color:var(--cx-vencida)}
tr.cxr.cx-vencida{background:color-mix(in srgb,var(--cx-vencida) 7%,transparent)}
.kpi.cx-debe{border-top:4px solid var(--cx-debe)}.kpi.cx-vencida{border-top:4px solid var(--cx-vencida)}
.seg.sm label{padding:6px 10px;font-size:13px}
.pastel{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.pastel svg{flex:none;max-width:100%;height:auto}
.pleyenda{flex:1;min-width:240px;display:grid;gap:6px}
.pleyenda div{display:grid;grid-template-columns:14px 1fr auto auto;gap:8px;align-items:center;font-size:14px}
.pleyenda i{width:14px;height:14px;border-radius:4px;display:block}
.pleyenda .sub{min-width:92px;text-align:right}
.pleyenda .tot{grid-template-columns:1fr auto;border-top:1px solid var(--line);padding-top:6px;margin-top:2px}
.doc .pastel{gap:14px}.doc .pleyenda div{font-size:11px}
@media print{.pastel svg circle:last-of-type{fill:#fff}}
/* ---------- 1.8 Ventana de cobro ---------- */
#cobro{position:fixed;inset:0;z-index:60;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;padding:16px}
#cobro[hidden]{display:none}
.vc{background:var(--panel);border-radius:20px;box-shadow:0 30px 80px rgba(0,0,0,.35);display:grid;grid-template-columns:1fr 250px;width:min(980px,100%);max-height:calc(100vh - 32px);overflow:auto}
.vc-main{padding:22px 26px}
.vc-cab{display:flex;flex-direction:column;gap:2px;font-weight:800;font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.vc-cab small{text-transform:none;letter-spacing:0;font-weight:500}
.vc-total{font-size:clamp(46px,7vw,72px);font-weight:800;text-align:center;letter-spacing:-.02em;margin:6px 0 0;color:var(--accent);font-variant-numeric:tabular-nums}
.vc-usd{text-align:center;color:var(--muted);font-size:13px;margin-bottom:16px}
.vc-mets{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:10px;margin-bottom:16px}
.vc-mets button{position:relative;border:2px solid var(--line);background:var(--panel);border-radius:14px;padding:14px 6px 10px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;font-weight:700;font-size:13px;color:var(--ink)}
.vc-mets button svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;color:var(--muted)}
.vc-mets button.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--panel));color:var(--accent)}
.vc-mets button.on svg{color:var(--accent)}
.vc-mets kbd,.vc-b kbd,.pk kbd,.pv-cobrar kbd,.pv-tks kbd{font:600 10px/1 ui-monospace,monospace;border:1px solid currentColor;border-radius:4px;padding:2px 4px;opacity:.7}
.vc-mets kbd{position:absolute;top:6px;right:6px}
.vc-zona{min-height:140px}
.vc-campo{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:13px;color:var(--muted)}
.vc-campo input,.vc-campo select{font-size:30px;font-weight:800;padding:10px 14px;border-radius:12px;color:var(--ink)}
.vc-mix{display:grid;grid-template-columns:1fr 1fr;gap:12px}.vc-mix .vc-campo input{font-size:22px}
.vc-bill{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.vc-bill button{border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:10px 14px;font-weight:800;font-size:15px;cursor:pointer}
.vc-bill button:hover{border-color:var(--accent);color:var(--accent)}
.vc-fijo{display:flex;justify-content:space-between;align-items:center;border:1px dashed var(--line);border-radius:12px;padding:14px 16px;margin-bottom:12px}
.vc-fijo b{font-size:26px}
.vc-lado{background:var(--bg);border-left:1px solid var(--line);padding:22px 16px;display:flex;flex-direction:column;gap:10px;border-radius:0 20px 20px 0}
.vc-b{display:flex;align-items:center;gap:10px;justify-content:flex-start;border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:14px;font-weight:700;font-size:15px;cursor:pointer;color:var(--ink)}
.vc-b.pri{background:var(--accent);color:var(--accentInk);border-color:var(--accent);font-size:16px;padding:18px 14px}
.vc-b.sm{padding:10px 14px;font-size:14px}
.vc-nota{font-size:14px;padding:8px 10px}
.vc-art{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;margin-top:6px;font-weight:600;color:var(--muted)}
.vc-art b{font-size:26px;color:var(--ink)}
.vc-art b.cambio{font-size:38px;color:var(--libre)}.vc-art b.malo{font-size:30px;color:var(--ocup)}
#vcRes{margin-top:auto;border-top:1px solid var(--line);padding-top:12px}
.vc-aviso{border:1px dashed var(--accent);color:var(--accent);border-radius:10px;padding:10px 12px;font-weight:700;font-size:13px}
@media (max-width:760px){.vc{grid-template-columns:1fr}.vc-lado{border-left:0;border-top:1px solid var(--line);border-radius:0 0 20px 20px}}
/* ---------- 1.8 Tienda estilo punto de venta ---------- */
.pv{display:flex;flex-direction:column;gap:12px}
.pv-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.pv-tks{display:flex;gap:6px;flex-wrap:wrap}
.pv-tks button{border:1px solid var(--line);background:var(--panel);border-radius:10px 10px 4px 4px;padding:8px 14px;font-weight:700;cursor:pointer;color:var(--ink)}
.pv-tks button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.pv-tks button small{font-weight:600;opacity:.75;margin-left:4px}
.pv-tks .mas{border-style:dashed;color:var(--accent)}
.pv-hoy{color:var(--muted);font-size:14px}.pv-hoy b{color:var(--ink)}
.pv-teclas{display:flex;gap:8px;flex-wrap:wrap}
.pk{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:8px 12px;font-weight:700;font-size:13px;cursor:pointer;color:var(--ink)}
.pk:hover{border-color:var(--accent);color:var(--accent)}
.pv-cuerpo{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:14px;align-items:start}
.pv-izq,.pv-der{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:14px}
.pv-izq{display:flex;flex-direction:column;gap:12px;min-height:520px}
.pv-tabla{flex:1;overflow:auto;max-height:52vh;border:1px solid var(--line);border-radius:12px}
.pv-tabla table{width:100%}
.pv-tabla thead th{position:sticky;top:0;background:var(--bg);z-index:1}
.pv-tabla tbody tr{cursor:pointer}
.pv-tabla tbody tr.sel td{background:color-mix(in srgb,var(--accent) 12%,var(--panel))}
.pv-tabla .x{border:0;background:transparent;font-size:20px;color:var(--ocup);cursor:pointer;line-height:1}
.pv-vacio{text-align:center;color:var(--muted);padding:56px 10px!important}
.pv-vacio svg.i{width:46px;height:46px;opacity:.45;margin-bottom:6px}
.pv-pie{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;border-top:2px solid var(--line);padding-top:12px;color:var(--muted);font-weight:700}
.pv-total{text-align:right}.pv-total span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.pv-total b{font-size:44px;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.pv-cobrar{border:0;background:var(--libre);color:#fff;font-size:22px;font-weight:800;border-radius:14px;padding:18px 28px;cursor:pointer;display:flex;align-items:center;gap:10px}
.pv-cobrar:disabled{opacity:.45;cursor:not-allowed}
.pv-der .prods{max-height:62vh;overflow:auto}
.vp-res{text-align:center;padding:18px 0 6px}.vp-res b{font-size:22px}.vp-precio{font-size:54px;font-weight:800;color:var(--accent)}
@media (max-width:980px){.pv-cuerpo{grid-template-columns:1fr}}
ol.pasos{padding-left:22px;line-height:1.75;margin:6px 0 0}ol.pasos li{margin-bottom:6px}
.prod.serv{border-style:dashed}.prod.serv small{color:var(--accent);font-weight:700}
.doc table.conteo td.caja{border:1px solid #444;height:22px}
.doc table.conteo td,.doc table.conteo th{padding:4px 6px}
tr.falta td{background:color-mix(in srgb,var(--ocup) 8%,transparent)}
@keyframes avisa{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.mbox.avisa{animation:avisa .25s ease 2}
.doc .tk-logo{text-align:center;margin-bottom:4px}.doc .tk-logo img{max-width:100%;height:auto}
.doc .tk-ley{text-align:center;font-family:Consolas,"Courier New",monospace;font-size:9px;margin-top:6px;border-top:1px dashed #999;padding-top:4px}
.tk-prevlogo{width:220px;min-height:90px;border:1px dashed var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;padding:10px;background:#fff}
.tk-prevlogo img{max-width:100%;max-height:160px}

/* Logo de Maxsel chico al final del ticket */
.doc .tk-ley-logo{width:34%;max-width:130px;opacity:.85;height:auto;margin:2px auto 3px;filter:grayscale(1) contrast(1.4)}

/* 1.9 Celular: las cifras grandes caben en la tarjeta */
.kpi{min-width:0}
@media (max-width:560px){.kpi{padding:12px}.kpis .kpi b,.kpi b{font-size:clamp(15px,4.8vw,22px)!important;white-space:nowrap;letter-spacing:-.01em;line-height:1.2}}
.bk-l{font-size:13px!important;letter-spacing:0!important;text-align:left!important;word-break:break-all;flex:1;min-width:0;user-select:all;padding:8px 10px}

/* 1.11 limpieza */
.p-info{--c:var(--mant);--b:var(--mantBg)}
.blancos-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px}
/* 1.12 comparativo de ventas */
.tdn-ks{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:12px 0}
.tdn-k{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;min-width:0}
.tdn-k span:first-child{font-size:12px;color:var(--muted)}.tdn-k b{font-size:18px;font-family:var(--fDisp)}
.tdn-c{font-size:12px;font-weight:700;color:var(--muted)}.tdn-c.up{color:var(--libre)}.tdn-c.down{color:var(--ocup)}
.tdn-ley{display:flex;gap:16px;font-size:12px;color:var(--muted);margin-bottom:4px}
.tdn-sw{display:inline-block;width:18px;height:0;border-top:2px solid var(--accent);vertical-align:middle;margin-right:6px}.tdn-sw.b{border-top:2px dashed #8d96a8}
.tdn-wrap{position:relative}.tdn-svg{width:100%;height:auto;display:block}
.tdn-grid{stroke:var(--line);stroke-width:1}.tdn-ax{font-size:11px;fill:var(--muted)}
.tdn-la{fill:none;stroke:var(--accent);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.tdn-lb{fill:none;stroke:#8d96a8;stroke-width:2;stroke-dasharray:5 4;stroke-linejoin:round}
.tdn-pa{fill:var(--accent);stroke:var(--panel);stroke-width:2}.tdn-cruz{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}
.tdn-tip{position:absolute;top:6px;width:180px;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px;padding:8px 10px;font-size:12px;pointer-events:none;display:flex;flex-direction:column;gap:2px}
.tdn-an{margin:4px 0 0;padding-left:18px;line-height:1.6}
.dc-cond{border:1.5px solid #000;padding:6px 8px;margin:8px 0;font-size:12px;line-height:1.4;text-align:center}

/* 1.14: firmas más compactas (en ticket van lado a lado) */
.doc .dc-sinfirma{height:9mm}
.doc .dc-firma img{height:12mm}
.doc.f-58 .dc-firmas,.doc.f-80 .dc-firmas{grid-template-columns:1fr 1fr;gap:6px;margin-top:4px}
.doc.f-58 .dc-firma,.doc.f-80 .dc-firma{font-size:.78em}
/* 1.14: urgencia, controles de prioridad y QR de las apps del personal */
.mcard.m-urg{border:2px solid var(--ocup);box-shadow:0 0 0 3px var(--ocupBg)}
.vm-ctl{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:10px}
.vm-ctl .l{flex:1;min-width:140px}
.qr-app{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-top:8px}
.qr-box{background:#fff;padding:6px;border:1px solid var(--line);border-radius:10px;line-height:0}
.qr-box svg{width:170px;height:170px}

/* 1.17 pagos anteriores al registrar */
.pp-r{display:grid;grid-template-columns:1.1fr 1fr 1fr auto;gap:8px;align-items:center}
@media (max-width:560px){.pp-r{grid-template-columns:1fr 1fr}}
