[hidden]{display:none!important}
:root{--p:#0b6e4f;--p2:#08513a;--bg:#f3f5f4;--card:#fff;--err:#c62828;--ok:#2e7d32;--warn:#ef6c00;--mut:#667;--b:#d6dcd9}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);font:16px/1.35 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:#1b1f1d}
header{background:var(--p);color:#fff;display:flex;gap:8px;font-size:14px;justify-content:space-between;align-items:center;padding:10px 12px;position:sticky;top:0;z-index:5}
header .link{color:#fff}
nav{display:flex;gap:4px;overflow-x:auto;background:#fff;border-bottom:1px solid var(--b);padding:6px}
nav a{flex:0 0 auto;padding:8px 12px;border-radius:20px;color:var(--p2);text-decoration:none;font-weight:600;font-size:15px}
nav a.on{background:var(--p);color:#fff}
main{max-width:980px;margin:0 auto;padding:12px}
.card{background:var(--card);border:1px solid var(--b);border-radius:12px;padding:14px;margin-bottom:12px}
h2{margin:0 0 10px;font-size:20px} h3{margin:10px 0 6px;font-size:17px}
label{display:block;font-size:13px;color:var(--mut);margin:8px 0 3px}
input,select,textarea{width:100%;padding:11px 10px;border:1px solid var(--b);border-radius:8px;font:inherit;background:#fff}
button{font:inherit;padding:11px 14px;border-radius:8px;border:0;background:var(--p);color:#fff;font-weight:600;cursor:pointer}
button.sec{background:#e3ebe7;color:var(--p2)} button.danger{background:var(--err)} button.link{background:none;color:var(--p);padding:4px;font-weight:500}
button:disabled{opacity:.5}
.big{font-size:19px;padding:15px;width:100%}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap} .row>*{flex:1 1 140px} .between{justify-content:space-between}
.row>.auto{flex:0 0 auto}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.svc{background:#fff;border:2px solid var(--b);border-radius:10px;padding:10px;text-align:left;color:#1b1f1d;font-weight:500}
.svc b{display:block;color:var(--p2)} .svc small{color:var(--mut)}
.muted{color:var(--mut);font-size:14px} .err{color:var(--err);font-weight:600} .okc{color:var(--ok);font-weight:600}
.pill{display:inline-block;padding:2px 8px;border-radius:12px;font-size:12px;font-weight:700;background:#eee}
.pill.ok{background:#d9f2dd;color:var(--ok)} .pill.bad{background:#fde0e0;color:var(--err)} .pill.warn{background:#ffe9d2;color:var(--warn)}
.ejemplo{background:#fff3cd;color:#7a5b00;border:1px solid #f0d27a;padding:2px 6px;border-radius:6px;font-size:11px;font-weight:700}
table.t{width:100%;border-collapse:collapse;font-size:14px} table.t th,table.t td{padding:7px 5px;border-bottom:1px solid var(--b);text-align:left} table.t td.r,table.t th.r{text-align:right}
.cart-line{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px dashed var(--b)}
.total{font-size:26px;font-weight:800;text-align:right;margin:8px 0}
.status{border-radius:12px;padding:16px;color:#fff;text-align:center;font-weight:800;font-size:24px;margin:10px 0}
.status.ok{background:var(--ok)} .status.bad{background:var(--err)} .status.warn{background:var(--warn)}
.status small{display:block;font-size:15px;font-weight:500;margin-top:4px}
.box-ok{border-left:6px solid var(--ok)} .box-bad{border-left:6px solid var(--err)}
.cal{overflow-x:auto} .cal table{border-collapse:collapse;min-width:100%} .cal th,.cal td{border:1px solid var(--b);padding:0;font-size:13px;text-align:center}
.cal th{background:#eef3f1;padding:6px 4px;position:sticky;top:0} .cal td.h{background:#eef3f1;font-weight:700;padding:6px}
.cal .free{background:#fff;cursor:pointer;height:38px;min-width:90px} .cal .free:hover{background:#e3f5ec}
.cal .busy{background:#ffd9d9;color:#7b1111;font-weight:600;padding:3px} .cal .paid{background:#cfe9d9;color:#08513a}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:20;padding:10px}
.modal-box{background:#fff;border-radius:12px;padding:12px;width:100%;max-width:560px;max-height:95vh;overflow:auto}
#scanVideo{width:100%;background:#000;border-radius:8px;aspect-ratio:4/3;object-fit:cover}
#toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:#222;color:#fff;padding:12px 18px;border-radius:10px;z-index:30;max-width:90vw}
.login{max-width:360px;margin:40px auto}
.kpi{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px} .kpi div{background:#eef3f1;border-radius:10px;padding:10px} .kpi b{display:block;font-size:20px}
@media (min-width:800px){ .two{display:grid;grid-template-columns:1.2fr 1fr;gap:12px} }
.grid-p table td:first-child,.grid-p table th:first-child{position:sticky;left:0;background:#f6faf8;z-index:1}
.qcode{float:right;background:var(--p);color:#fff;border-radius:6px;padding:0 7px;font-weight:800;font-size:15px;margin-left:4px}
.status.warn{background:var(--warn)}
.qcode-i{display:inline-block;background:var(--p);color:#fff;border-radius:6px;padding:0 7px;font-weight:800;margin-right:4px}
/* quinchos: calendario mensual */
.qcal td{vertical-align:top;min-width:120px}.qcal tr.hoy td{background:#eef7f2}
.qchip{border-radius:6px;padding:3px 6px;margin:2px 0;font-size:13px;cursor:pointer;line-height:1.2}
.qchip.ok{background:#d4edda;border:1px solid #9fd3ad}.qchip.res{background:#fff3cd;border:1px solid #e6cf7a}
.qadd{font-size:20px;padding:0 6px}
.cvlogo{height:26px;max-width:120px;object-fit:contain;vertical-align:middle;background:#fff;border-radius:4px}.cvlogo.lg{height:40px;max-width:140px}
.cvrow{border:1px solid #ddd;border-radius:10px;padding:10px;margin:8px 0}
/* encabezado fijo + menú de usuario (siempre visible, también en celular) */
header{position:sticky;top:0;z-index:40;min-height:52px;flex-wrap:nowrap}
header .brand{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}
header .who{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.um{position:relative}
.um-btn{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.45);color:#fff;padding:6px 10px;border-radius:22px;min-height:40px;font-weight:600}
.um-btn:hover,.um-btn[aria-expanded=true]{background:rgba(255,255,255,.28)}
.um-who{display:flex;flex-direction:column;line-height:1.1;text-align:left;max-width:180px}.um-who b,.um-who small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.um-who small{font-weight:400;opacity:.85;font-size:11px}
.um-ham{font-size:20px;line-height:1}
.um-panel{position:absolute;right:0;top:calc(100% + 6px);background:#fff;color:#1b2420;border:1px solid var(--b);border-radius:12px;box-shadow:0 8px 28px rgba(0,0,0,.25);min-width:230px;z-index:45;overflow:hidden}
.um-panel .um-head{padding:12px 14px;background:#f3f7f5;border-bottom:1px solid var(--b)}
.um-panel button{display:block;width:100%;text-align:left;background:#fff;color:#1b2420;border-radius:0;padding:13px 14px;font-weight:500;border-bottom:1px solid #eef2f0}
.um-panel button:hover{background:#eef6f2}
.um-panel .um-salir{color:var(--err);font-weight:700}
@media (max-width:700px){
  .um-who,.um-car{display:none}
  .um-btn{padding:6px 12px}
  .um-panel{position:fixed;left:8px;right:8px;top:58px;min-width:0}
}
.cal th{z-index:2}
.modal{z-index:60} #toast{z-index:70}
.regrec{background:#fff8e6;border-color:#f3d48a;font-size:14px;padding:10px 12px}
.regprev{border:1px solid var(--b);border-radius:8px;padding:10px 14px;max-height:520px;overflow:auto;background:#fff;font-size:14px}.regprev blockquote{background:#fff6e5;border-left:4px solid var(--warn);margin:0 0 8px;padding:6px 10px}

/* clave de fábrica sin cambiar (aviso persistente al admin) y entrega de clave temporaria */
.clave-aviso{background:#fff3e0;border-bottom:3px solid #ef6c00;color:#5d3200;padding:10px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:15px}
.clave-aviso button{width:auto;padding:6px 12px}.clave-aviso a{font-weight:700}
.entrega{background:#e8f5e9;border:2px dashed #2e7d32;border-radius:10px;padding:10px;margin-top:10px}.entrega code{font-size:17px;background:#fff;padding:2px 6px;border-radius:4px;user-select:all}

/* Conexo: oferta de asociación, ficha, filas de fichas */
.cx-offer{background:#eaf4ff;border:2px solid #1e6fd9;border-radius:10px;padding:8px 10px;margin:8px 0;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.cx-offer.req{background:#fff3e0;border-color:#ef6c00}.cx-offer button{width:auto}
.cx-box{max-width:760px;width:96vw;max-height:92vh;overflow:auto}
.cx-row{display:flex;gap:8px;align-items:center;border-bottom:1px solid #e3e3e3;padding:8px 0;flex-wrap:wrap}.cx-row .d{flex:1 1 280px}
label.chk{display:flex;gap:8px;align-items:flex-start;width:auto;color:#000;font-size:15px;margin:6px 0}label.chk input{width:auto;margin-top:3px}
.reg-prev{border:1px solid #ccc;border-radius:8px;padding:8px 12px;background:#fff;margin-top:8px}
div.af.fx{display:flex;flex-wrap:wrap;gap:6px;align-items:center}div.af.fx .d{flex:1 1 260px}.af.fx .fx-acc{flex-wrap:nowrap}.af.fx .fx-acc button{width:auto}

/* ---- AJUSTE A PANTALLA (escritorio grande y celular) ---- */
html,body{max-width:100%;overflow-x:hidden}
@supports (overflow:clip){html,body{overflow-x:clip}}
body{min-height:100dvh}
.card{min-width:0;max-width:100%;overflow-x:auto}
table.t{min-width:max-content}
@media (min-width:1200px){ main{max-width:1280px;padding:16px 20px} }
@media (min-width:1600px){ main{max-width:1600px} }
@media (min-width:1200px){ .two{grid-template-columns:minmax(0,2fr) minmax(340px,1fr);gap:16px;align-items:start} .two>div:last-child{position:sticky;top:64px} }
@media (min-width:1200px){ .grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))} }
/* login (y recuperar) centrado en toda la pantalla, sin scroll */
main:has(> .card.login){max-width:none;display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:16px;box-sizing:border-box}
header ~ main:has(> .card.login){min-height:calc(100dvh - 52px)}
.card.login{margin:0 auto;width:100%;max-width:420px;box-sizing:border-box;box-shadow:0 10px 40px rgba(0,0,0,.08)}
@media (min-width:1200px){ .card.login{max-width:460px;padding:28px} .card.login h2{font-size:1.6rem} }
@media (min-width:1200px){ main#papp:not(:has(> .card.login)){max-width:1100px} }
/* ordenar servicios por arrastre */
.ordenando [data-s]{cursor:grab;touch-action:none;outline:2px dashed #9fc9b4;outline-offset:-2px;user-select:none}
.ordenando [data-s]::before{content:'⠿';position:absolute;left:4px;top:2px;color:#0b6e4f;font-size:18px;line-height:1}
.svc{position:relative}
.drag{cursor:grab;touch-action:none;user-select:none;font-size:20px;color:#0b6e4f;padding:4px 8px;text-align:center}
.ord-arr{box-shadow:0 12px 30px rgba(0,0,0,.25);opacity:.95;background:#fff}
.ord-ph{opacity:.35;background:#dff1e8!important;border:2px dashed #0b6e4f!important}
.ord-bar{background:#fff6dc;border:1px solid #f0c75a;border-radius:8px;padding:6px 10px;margin:6px 0}

/* escaneo de DNI con cámara: marco guía y estado */
.scan-wrap{position:relative}
.scan-guia{position:absolute;left:6%;right:6%;top:30%;bottom:30%;border:3px dashed rgba(255,255,255,.85);border-radius:10px;box-shadow:0 0 0 999px rgba(0,0,0,.28);pointer-events:none;transition:border-color .2s}
.scan-guia.casi{border-color:#ffd54a;border-style:solid}.scan-guia.ok{border-color:#3ddc84;border-style:solid}
.scan-stat{font-weight:700;margin:6px 0;min-height:1.3em}
#scanConf .card{border:2px solid var(--p);background:#eef8f2}

/* cliente al que se le cobra (Vender) */
.cli-bar{position:sticky;top:52px;z-index:30;margin:0 0 10px}
.cli-card{background:#fff;border:3px solid var(--p);border-radius:10px;padding:8px 12px;box-shadow:0 3px 10px rgba(0,0,0,.12)}
.cli-card.none{border:3px dashed #c0392b;background:#fff6f5}
.cli-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.cli-lbl{font-size:14px;color:#555;text-transform:uppercase;letter-spacing:.5px}
.cli-name{font-size:22px;line-height:1.2}
.cli-meta{font-size:15px;margin-top:2px;display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.pill.cat{background:var(--p);color:#fff;font-size:13px}
.cli-x{width:auto;flex:0 0 auto;background:#fff;color:#c0392b;border:2px solid #c0392b;padding:6px 10px;font-weight:700}
.cli-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;align-items:center}
.chip{width:auto;padding:4px 10px;border-radius:16px;border:2px solid var(--p);background:#fff;color:var(--p);font-size:14px;font-weight:700}
.chip.on{background:var(--p);color:#fff} .chip small{font-weight:400;opacity:.85}
#cobroCli .cli-card{box-shadow:none;border-width:2px;margin-bottom:8px} #cobroCli .cli-name{font-size:18px}
.cart-line .for{font-weight:700;color:var(--p)} .ben-sel{width:auto;max-width:100%;padding:3px;font-size:14px;font-weight:700}
.svc.needcli{opacity:.45;filter:grayscale(.6)}
@media (min-width:1200px){ .two>div:last-child{top:calc(64px + var(--clih,0px))} }
@media (max-width:700px){ .cli-name{font-size:18px} .cli-meta{font-size:13px} .cli-bar{top:52px} }
.pill.inst{background:#e6eefc;color:#1d3f8a}
@media (max-width:700px){ .cli-card{padding:6px 8px} .cli-head{flex-wrap:nowrap} .cli-main{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}
  .cli-lbl{font-size:11px} .cli-x{padding:4px 8px;font-size:13px} .cli-meta{gap:2px 4px}
  .cli-chips{flex-wrap:nowrap;overflow-x:auto;margin-top:4px;padding-bottom:2px} .cli-chips>.muted{display:none} .chip{white-space:nowrap;font-size:13px;padding:3px 8px} }
.dup-alert{background:#fde0e0;border:2px solid #c0392b;color:#7a1d14;border-radius:8px;padding:8px 10px;margin:0 0 8px;font-size:15px}
