:root{
  --bordo:#5c1620; --bordo-osc:#451018; --oro:#b3872e; --oro-suave:#d9c08a;
  --crema:#f7efdd; --papel:#fdf8ec; --tinta:#2e2118; --gris:#8a7a5e; --linea:#e2d5b4;
  --ok:#3c6e3c; --warn:#a05a1a; --peligro:#9b2c2c;
  /* plano */
  --plano-papel:#FDFCF8; --reticula:#EAE3D0; --plano-tinta:#5c1620; --plano-suave:#c9a86a; --plano-agua:#f9f1de;
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  font-family:Georgia,'Palatino Linotype','Times New Roman',serif;
  background:var(--crema); color:var(--tinta); min-height:100vh; padding-bottom:84px;
}
input,button,select,textarea{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif}
:focus-visible{outline:2px solid var(--oro); outline-offset:2px}
[hidden]{display:none!important}
@media (prefers-reduced-motion: reduce){*{transition:none!important}}

/* ================= login ================= */
.login{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px}
.login-caja{background:var(--papel); border:1px solid var(--oro-suave); border-radius:12px; padding:26px 22px; width:100%; max-width:380px; text-align:center; position:relative; box-shadow:0 2px 10px rgba(69,16,24,.12)}
.login-caja img{height:90px; display:block; margin:0 auto 8px}
.login-caja h1{color:var(--bordo); font-size:19px; letter-spacing:2px; text-transform:uppercase}
.login-caja .sub{color:var(--oro); font-size:11px; letter-spacing:2.5px; text-transform:uppercase; margin:3px 0 18px}
.login-caja label{display:block; text-align:left; font-size:12.5px; color:var(--gris); margin-bottom:12px; font-family:sans-serif}
.login-caja input{display:block; width:100%; margin-top:4px; font-size:16px; padding:10px; border:1px solid var(--oro-suave); border-radius:8px; background:#fff; color:var(--tinta)}
.login-caja .error{color:var(--peligro); font-size:13px; margin-top:10px; font-family:sans-serif}
.login-caja .aviso{margin-top:14px}
button.primaria{width:100%; background:var(--bordo); color:#f3e6c8; border:1px solid var(--oro); border-radius:8px; padding:11px; font-size:15px; cursor:pointer; font-family:Georgia,serif; letter-spacing:.5px}
button.primaria:disabled{opacity:.6}
button.primaria:active{background:var(--oro); color:var(--bordo-osc)}

/* ================= cabecera ================= */
.besd{position:absolute; top:8px; right:12px; font-size:12px; color:var(--bordo); font-family:sans-serif}
header{background:var(--crema); border-bottom:3px double var(--oro); padding:12px 16px 10px; text-align:center; position:relative}
header img{height:64px; display:block; margin:0 auto 4px}
header h1{color:var(--bordo); font-size:20px; letter-spacing:2px; text-transform:uppercase; font-weight:700}
header .sub{color:var(--oro); font-size:11px; letter-spacing:2.5px; text-transform:uppercase; margin-top:3px}
.meta{display:flex; gap:8px; justify-content:center; align-items:center; flex-wrap:wrap; margin-top:10px}
.chip{font-size:12px; padding:3px 10px; border-radius:20px; border:1px solid var(--oro-suave); background:var(--papel); color:var(--gris); font-family:sans-serif}
.chip.ok{color:var(--ok)}
.chip.warn{color:var(--warn)}
.chip.yo{color:var(--bordo); font-weight:600}
button.link{background:none; border:none; color:#b08585; font-size:12px; text-decoration:underline; cursor:pointer}
.aviso{font-size:11.5px; color:var(--gris); margin-top:7px; font-style:italic}

/* ================= navegación ================= */
nav{display:flex; background:var(--bordo); position:sticky; top:0; z-index:30; box-shadow:0 2px 6px rgba(69,16,24,.25)}
nav button{flex:1; background:none; border:none; color:#e8d3b0; padding:10px 2px 8px; font-size:12.5px; letter-spacing:.3px; cursor:pointer; border-bottom:3px solid transparent; font-family:Georgia,serif; line-height:1.15}
nav button .cnt{display:block; font-size:10.5px; color:var(--oro-suave); font-family:sans-serif; margin-top:2px; min-height:12px}
nav button.act{color:#fff; border-bottom-color:var(--oro); background:var(--bordo-osc)}
#prog{height:3px; background:var(--oro-suave); position:sticky; top:var(--nav-h,53px); z-index:29}
#progfill{height:100%; background:var(--oro); width:0%; transition:width .3s}

main{max-width:1180px; margin:0 auto; padding:14px 14px 20px}
.tabpane{display:none}
.tabpane.act{display:block}

/* ================= tarjetas (honores, reservas, resumen) ================= */
section.card{background:var(--papel); border:1px solid var(--oro-suave); border-radius:8px; padding:14px 14px 8px; margin:0 auto 16px; max-width:680px; box-shadow:0 1px 3px rgba(69,16,24,.07)}
section.card h2{color:var(--bordo); font-size:14px; letter-spacing:2px; text-transform:uppercase; text-align:center; padding-bottom:7px; margin-bottom:6px; border-bottom:1px solid var(--oro)}
section.card h2 small{display:block; font-size:10.5px; color:var(--gris); letter-spacing:1px; margin-top:2px; text-transform:none; font-family:sans-serif}

.fila{padding:9px 2px 7px; border-bottom:1px dotted #d8c9a6}
.fila:last-child{border-bottom:none}
.fila .honor{font-size:14.5px; color:var(--tinta); display:flex; align-items:center; gap:6px}
.fila.llena .honor::after{content:"✓"; color:var(--oro); font-size:13px}
.fila .campos{display:flex; gap:8px; margin-top:5px}
.fila input,.sit-row input{border:none; border-bottom:1.5px dotted var(--oro); background:transparent; padding:4px 2px; font-size:15px; color:var(--bordo); font-weight:600; min-width:0; border-radius:0}
.fila input::placeholder,.sit-row input::placeholder{color:#c4b28b; font-weight:400; font-style:italic; font-size:13px}
.fila input.nom{flex:2.2}
.fila input.monto,.sit-row input.monto{flex:0 0 84px; text-align:right; font-family:sans-serif; font-variant-numeric:tabular-nums}
.fila input.nota,.sit-row input.nota{flex:1.3; font-weight:400; color:var(--tinta); font-size:13px}
.fila.llena input.nom{border-bottom-style:solid}
.fila .quien{font-size:10.5px; color:var(--gris); font-family:sans-serif; margin-top:3px; min-height:12px}

.sit-row{display:flex; gap:8px; align-items:center; padding:8px 2px; border-bottom:1px dotted #d8c9a6}
.sit-row input.nom{flex:2.2; font-size:14.5px}
.sit-row input.cant{width:44px; text-align:center; font-family:sans-serif; flex:0 0 44px}
.sit-row button.del{background:none; border:none; color:#b08585; font-size:17px; cursor:pointer; padding:2px 6px}
#btn-add-reserva{margin:12px auto 6px; display:block; background:var(--papel); color:var(--bordo); border:1.5px solid var(--oro); border-radius:20px; padding:7px 18px; font-size:13.5px; cursor:pointer; font-family:Georgia,serif}
#btn-add-reserva:disabled{opacity:.5}
.sit-tot{text-align:center; font-size:12.5px; color:var(--gris); margin-top:4px}
@media (max-width:480px){
  .fila .campos{flex-wrap:wrap}
  .fila input.nom{flex:1 1 100%}
  .fila input.monto{flex:0 0 90px}
  .fila input.nota{flex:1}
}

/* ================= croquis ================= */
.barra{display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:2px 0 12px}
.tabs{display:flex; gap:4px; background:#ecdfc2; padding:4px; border-radius:10px; overflow-x:auto; max-width:100%}
.tabs button{border:0; background:transparent; font:inherit; font-family:Georgia,serif; font-size:13.5px; color:var(--gris); padding:7px 12px; border-radius:7px; cursor:pointer; white-space:nowrap}
.tabs button[aria-selected="true"]{background:var(--papel); color:var(--bordo); box-shadow:0 1px 2px rgba(69,16,24,.18); font-weight:700}
.cuenta{margin-left:auto; display:flex; gap:14px; align-items:baseline; font-size:13px; color:var(--gris); font-family:sans-serif}
.cuenta strong{font-size:18px; color:var(--bordo); font-variant-numeric:tabular-nums}
.cols{display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:18px; align-items:start}
@media (max-width:860px){.cols{grid-template-columns:1fr}}
.plano{position:relative; background:repeating-linear-gradient(to bottom,transparent 0 23px,var(--reticula) 23px 24px),var(--plano-papel); border:1px solid var(--linea); border-radius:4px; box-shadow:0 1px 3px rgba(69,16,24,.1); overflow:hidden}
.plano::after{content:""; position:absolute; inset:10px; border:1px solid var(--plano-suave); opacity:.6; pointer-events:none; border-radius:2px}
.lienzo{position:absolute; inset:10px}
.mueble{position:absolute; border:1.6px solid var(--plano-tinta); background:rgba(255,255,255,.72); border-radius:2px}
.mueble span{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--plano-tinta); letter-spacing:.02em; white-space:nowrap; font-family:sans-serif}
.mueble.vertical span{transform:rotate(-90deg)}
.mueble.partida::before{content:""; position:absolute; left:50%; top:0; bottom:0; border-left:1.4px solid var(--plano-suave)}
.hejal{border:2px solid var(--oro); background:#FBF4E4}
.hejal span{color:var(--oro); font-weight:700; font-size:12px}
.teva{border:2px solid var(--plano-tinta); background:var(--plano-agua)}
.teva span{font-weight:700; font-size:12px}
.fijo{border-style:dashed; background:transparent}
.fijo span{color:var(--gris)}
.pared{border:0; border-top:2px solid var(--plano-tinta); background:transparent}
.asiento{position:absolute; height:30px; transform:translate(-50%,-50%); border-radius:7px; border:1.6px solid var(--plano-tinta); background:#fff; color:var(--plano-tinta); font-family:sans-serif; font-size:11px; font-weight:600; line-height:1; text-align:left; display:flex; align-items:center; gap:5px; padding:0 7px; cursor:pointer; overflow:hidden}
.asiento .n{font-size:10px; font-weight:700; font-variant-numeric:tabular-nums; opacity:.6; flex:0 0 auto}
.asiento .qn{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.asiento.libre{justify-content:center; padding:0 4px}
.asiento.libre .n{opacity:1; font-size:11.5px}
.asiento.individual{border-radius:2px}
.rotulo{position:absolute; transform:translate(-50%,calc(-50% - 23px)); font-size:10px; color:var(--gris); letter-spacing:.02em; white-space:nowrap; pointer-events:none; font-family:sans-serif}
.asiento:hover{background:var(--plano-agua)}
.asiento.ocupado{background:var(--plano-tinta); color:#fff; border-color:var(--plano-tinta)}
.asiento.ocupado .n{opacity:.75}
.asiento.sel{box-shadow:0 0 0 3px var(--oro)}
@media (max-width:520px){.asiento{height:26px; font-size:10px; padding:0 5px}.rotulo{font-size:9px}}

.panel{display:flex; flex-direction:column; gap:14px; position:sticky; top:70px}
.caja{background:var(--papel); border:1px solid var(--oro-suave); border-radius:8px; padding:14px}
.caja h2{margin:0 0 10px; font-size:12.5px; font-weight:700; color:var(--gris); letter-spacing:1px; text-transform:uppercase}
.sel-vacia{color:var(--gris); font-size:13.5px; margin:0}
.sel-num{font-size:12.5px; color:var(--gris); margin:0 0 8px; font-family:sans-serif}
.sel-num strong{color:var(--bordo); font-size:15px; font-family:Georgia,serif}
.caja label{display:block; font-size:11.5px; color:var(--gris); font-family:sans-serif; margin-bottom:8px}
.caja input[type=text],.caja input[type=tel]{width:100%; font-size:16px; padding:8px 10px; border:1px solid var(--linea); border-radius:6px; background:#fff; color:var(--tinta); margin-top:3px}
.caja input.monto{font-family:sans-serif; text-align:right}
.acciones-sel{display:flex; gap:8px; margin-top:6px}
.acciones-sel button{flex:1; font-size:13.5px; border-radius:6px; padding:9px 10px; cursor:pointer; font-family:Georgia,serif}
.acciones-sel .listo{background:var(--bordo); color:#f3e6c8; border:1px solid var(--oro)}
.acciones-sel .liberar{background:#fff; color:var(--peligro); border:1px solid var(--linea)}
.sel-quien{font-size:11px; color:var(--gris); font-family:sans-serif; margin-top:8px}
.lista{list-style:none; margin:0; padding:0; max-height:320px; overflow:auto}
.lista li{display:flex; gap:9px; font-size:13.5px; padding:5px 0; border-bottom:1px solid #efe4c8; cursor:pointer; align-items:baseline}
.lista li:last-child{border-bottom:0}
.lista li:hover{color:var(--bordo)}
.lista .num{width:24px; text-align:right; color:var(--gris); font-variant-numeric:tabular-nums; font-family:sans-serif; font-size:12px}
.lista .qn{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.lista .m{font-family:sans-serif; font-size:12px; color:var(--gris); font-variant-numeric:tabular-nums}
.lista .libre{color:#b5a57f; font-style:italic}

/* hoja de edición del sitial: en celular flota abajo */
@media (max-width:860px){
  .panel{position:static}
  .caja.hoja.abierta{position:fixed; left:8px; right:8px; bottom:calc(66px + env(safe-area-inset-bottom)); z-index:36; box-shadow:0 -4px 18px rgba(46,33,24,.28); border-color:var(--oro); max-height:calc(100dvh - 90px); overflow:auto; -webkit-overflow-scrolling:touch}
}

/* ================= resumen y auditoría ================= */
.res-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; margin:8px 0 6px}
.res-item{background:#fff; border:1px solid var(--linea); border-radius:8px; padding:10px 12px}
.res-item .k{font-size:11px; color:var(--gris); font-family:sans-serif; letter-spacing:.5px; text-transform:uppercase}
.res-item .v{font-size:20px; color:var(--bordo); font-variant-numeric:tabular-nums; margin-top:2px}
.res-item .s{font-size:11.5px; color:var(--gris); font-family:sans-serif}
.res-tabla{width:100%; border-collapse:collapse; font-size:13px; margin-top:8px}
.res-tabla td,.res-tabla th{padding:5px 4px; border-bottom:1px dotted #d8c9a6; text-align:left}
.res-tabla th{font-size:11px; color:var(--gris); font-family:sans-serif; text-transform:uppercase; letter-spacing:.5px}
.res-tabla td.num,.res-tabla th.num{text-align:right; font-family:sans-serif; font-variant-numeric:tabular-nums}
.auditoria{font-size:12.5px; font-family:sans-serif}
.auditoria .aud{padding:6px 0; border-bottom:1px dotted #d8c9a6; display:flex; gap:8px; flex-wrap:wrap}
.auditoria .aud .t{color:var(--gris); flex:0 0 auto; font-variant-numeric:tabular-nums}
.auditoria .aud .q{color:var(--bordo); font-weight:600; flex:0 0 auto}
.auditoria .aud .d{flex:1; min-width:180px}
.auditoria .aud .d b{color:var(--tinta)}
section.card.admin{border-color:#e0b4b4}
button.peligro{display:block; margin:8px auto 8px; background:#fff; color:var(--peligro); border:1.5px solid var(--peligro); border-radius:8px; padding:9px 18px; font-size:13.5px; cursor:pointer; font-family:Georgia,serif}

/* ================= barra de acciones y modal ================= */
.acciones{position:fixed; bottom:0; left:0; right:0; z-index:40; background:var(--bordo); padding:10px 12px calc(10px + env(safe-area-inset-bottom)); display:flex; gap:10px; justify-content:center; box-shadow:0 -2px 8px rgba(69,16,24,.3)}
.acciones button{flex:1; max-width:230px; background:var(--bordo-osc); color:#f3e6c8; border:1px solid var(--oro); border-radius:8px; padding:11px 8px; font-size:14px; cursor:pointer; font-family:Georgia,serif; letter-spacing:.5px}
.acciones button:active{background:var(--oro); color:var(--bordo-osc)}
.acciones button:disabled{opacity:.6}

#velo{display:none; position:fixed; inset:0; background:rgba(46,33,24,.55); z-index:50; padding:18px; align-items:center; justify-content:center}
#velo.on{display:flex}
#modal{background:var(--papel); border:2px solid var(--bordo); border-radius:10px; max-width:520px; width:100%; padding:16px; max-height:86vh; display:flex; flex-direction:column}
#modal h3{color:var(--bordo); font-size:15px; margin-bottom:8px; text-align:center; letter-spacing:1px}
#modal textarea{flex:1; min-height:200px; font-size:12.5px; border:1px solid var(--oro-suave); border-radius:6px; padding:8px; background:#fff; color:var(--tinta); resize:vertical}
#modal-extra{margin-top:10px; font-family:sans-serif; font-size:13px; text-align:center}
#modal-extra a{color:var(--bordo); word-break:break-all}
#modal .mbtns{display:flex; gap:8px; margin-top:10px}
#modal .mbtns button{flex:1; padding:9px; border-radius:7px; border:1px solid var(--oro); background:var(--bordo); color:#f3e6c8; font-size:13.5px; cursor:pointer; font-family:Georgia,serif}
#modal .mbtns button.sec{background:var(--papel); color:var(--bordo)}

@media print{
  body{background:#fff; padding:0}
  header,nav,#prog,.acciones,footer,.aviso,.meta,#velo,.panel,.barra{display:none!important}
  main{max-width:none; padding:0}
  .tabpane{display:block!important}
  .cols{grid-template-columns:1fr}
  .plano{box-shadow:none; page-break-inside:avoid}
  section.card{border:none; box-shadow:none; break-inside:avoid; padding:6px 4px}
}

/* ================= admin ================= */
.tabla-usuarios{width:100%; border-collapse:collapse; font-size:13px; font-family:sans-serif}
.tabla-usuarios th{font-size:11px; color:var(--gris); text-transform:uppercase; letter-spacing:.5px; text-align:left; padding:4px}
.tabla-usuarios td{padding:5px 4px; border-bottom:1px dotted #d8c9a6; vertical-align:middle}
.tabla-usuarios tr.inactivo td{opacity:.55}
.tabla-usuarios input[type=text]{width:100%; font-size:13.5px; padding:5px 6px; border:1px solid var(--linea); border-radius:5px; background:#fff; color:var(--tinta)}
.tabla-usuarios select{font-size:12.5px; padding:4px; border:1px solid var(--linea); border-radius:5px; background:#fff}
.tabla-usuarios .centro{text-align:center}
.tabla-usuarios button{font-size:12px; padding:5px 8px; border:1px solid var(--oro); background:var(--papel); color:var(--bordo); border-radius:6px; cursor:pointer; white-space:nowrap}
.form-usuario{margin-top:14px; padding-top:10px; border-top:1px solid var(--oro-suave)}
.form-usuario h3{font-size:12px; color:var(--gris); text-transform:uppercase; letter-spacing:1px; margin-bottom:8px; font-family:sans-serif}
.form-usuario .campos{display:flex; gap:6px; flex-wrap:wrap}
.form-usuario input,.form-usuario select{flex:1 1 130px; font-size:14px; padding:7px 8px; border:1px solid var(--linea); border-radius:6px; background:#fff; color:var(--tinta)}
.form-usuario button{flex:0 0 auto; background:var(--bordo); color:#f3e6c8; border:1px solid var(--oro); border-radius:6px; padding:7px 16px; font-family:Georgia,serif; cursor:pointer}
.form-usuario .error{color:var(--peligro); font-size:13px; margin-top:8px; font-family:sans-serif}
p.centro{text-align:center; margin:8px 0}
p.centro a{color:var(--bordo); font-weight:700}
.tabla-usuarios td.acc{white-space:nowrap}
.tabla-usuarios button.u-borrar{margin-left:4px; color:#b08585; border-color:#e0b4b4; background:#fff; padding:5px 7px}
@media (max-width:520px){.tabla-usuarios th:nth-child(3),.tabla-usuarios td:nth-child(3){display:none}.tabla-usuarios input[type=text]{font-size:12.5px; padding:4px}}

/* ================= moneda y plegables ================= */
.monto-wrap{display:flex; align-items:center; gap:4px; flex:0 0 auto}
.fila .campos .monto-wrap,.sit-row .monto-wrap{flex:0 0 120px}
.caja .monto-wrap{margin-top:3px}
.caja .monto-wrap input.monto{flex:1; margin-top:0}
button.mon{flex:0 0 auto; min-width:38px; font-size:11.5px; font-weight:700; padding:5px 6px; border:1px solid var(--oro); border-radius:6px; background:var(--papel); color:var(--bordo); cursor:pointer; font-family:sans-serif; letter-spacing:.3px}
button.mon:active{background:var(--oro); color:#fff}
.fila .campos .monto-wrap input.monto,.sit-row .monto-wrap input.monto{flex:1; min-width:0; width:100%}
h2.plegable{cursor:pointer; user-select:none}
h2.plegable .caret{display:inline-block; transition:transform .15s; font-size:12px}
h2.plegable.abierto .caret{transform:rotate(90deg)}
h2.plegable .cnt-aud{font-size:11px; color:var(--gris); font-family:sans-serif; letter-spacing:0}
.res-item .v.total{font-size:16px; line-height:1.3}
@media (max-width:480px){.fila .campos .monto-wrap{flex:0 0 130px}}

/* ================= pagos, whatsapp, buscador, padrón ================= */
.pago-wrap{display:flex; gap:5px; align-items:center; margin-top:3px}
.pago-wrap select,.fila select.pago,.sit-row select.pago{font-size:12.5px; padding:5px 4px; border:1px solid var(--linea); border-radius:6px; background:#fff; color:var(--tinta); font-family:sans-serif}
.pago-wrap input.monto{flex:1; min-width:0; margin-top:0}
.fila .campos select.pago,.sit-row select.pago{flex:0 0 auto}
.fila .campos input.pagado,.sit-row input.pagado{flex:0 0 76px; text-align:right; font-family:sans-serif}
.fila.pagada .honor::after{content:"✓ pagado"; font-size:11px; color:var(--ok); font-family:sans-serif}
.asiento.ocupado.pagado::before{content:"✓"; font-size:9px; color:#d9c08a; flex:0 0 auto; margin-right:-2px}
.asiento.ocupado.parcial::before{content:"½"; font-size:9px; color:#d9c08a; flex:0 0 auto; margin-right:-2px}
.lista .pg{width:12px; color:var(--ok); font-family:sans-serif; font-size:12px; text-align:center}
.acciones-sel a.wsp{flex:1; text-align:center; text-decoration:none; font-size:13.5px; border-radius:6px; padding:9px 6px; background:#e7f6e7; color:#1f6e3a; border:1px solid #bfe0c4; font-family:Georgia,serif}
.fila .quien a.wsp-h{color:#1f6e3a; text-decoration:none; font-weight:600}
.res-item .s.cob{color:var(--ok)}
.res-item .s.pend{color:var(--warn)}
.res-tabla.personas td:first-child{font-weight:600}
.buscar-wrap{position:sticky; top:calc(var(--nav-h,53px) + 3px); z-index:28; max-width:680px; margin:10px auto 0; padding:0 14px}
#buscar{width:100%; font-size:15px; padding:9px 12px; border:1px solid var(--oro-suave); border-radius:20px; background:var(--papel); color:var(--tinta); box-shadow:0 1px 3px rgba(69,16,24,.08)}
#buscar-res{position:absolute; left:14px; right:14px; top:100%; background:#fff; border:1px solid var(--oro-suave); border-radius:8px; box-shadow:0 6px 18px rgba(46,33,24,.18); max-height:320px; overflow:auto; z-index:45}
#buscar-res .br{display:flex; gap:8px; padding:8px 12px; border-bottom:1px dotted #d8c9a6; cursor:pointer; font-size:13.5px; align-items:baseline}
#buscar-res .br:hover{background:var(--crema)}
#buscar-res .br .q{color:var(--bordo); font-weight:700; flex:0 0 auto}
#buscar-res .br .t{color:var(--gris); font-family:sans-serif; font-size:12px; flex:1; min-width:0}
#buscar-res .br.vacio{color:var(--gris); cursor:default}
.fila.resaltada,.sit-row.resaltada{background:#fff3d6; transition:background .4s}
.btn-sec{display:inline-block; font-size:13px; padding:7px 14px; border:1px solid var(--oro); background:var(--papel); color:var(--bordo); border-radius:8px; cursor:pointer; font-family:Georgia,serif; text-decoration:none}
.tabla-usuarios.padron td input[type=text]{min-width:90px}
@media (max-width:480px){
  .fila .campos select.pago{flex:0 0 auto; font-size:12px}
  .fila .campos input.pagado{flex:0 0 70px}
  .buscar-wrap{top:calc(var(--nav-h,53px) + 1px)}
}

/* ================= editor del plano ================= */
body.editando{overflow:hidden}
#editor{position:fixed; inset:0; z-index:60; background:var(--crema); display:flex; flex-direction:column; font-family:sans-serif}
#editor[hidden]{display:none!important}
.ed-top{display:flex; gap:10px; align-items:center; flex-wrap:wrap; padding:10px 14px; background:var(--bordo); color:#f3e6c8; box-shadow:0 2px 6px rgba(69,16,24,.3)}
.ed-top strong{font-family:Georgia,serif; font-size:16px; letter-spacing:1px}
.ed-salas{display:flex; gap:4px; flex-wrap:wrap; flex:1}
.ed-salas button{font-size:13px; padding:6px 10px; border:1px solid var(--oro); background:transparent; color:#e8d3b0; border-radius:6px; cursor:pointer}
.ed-salas button.act{background:var(--oro); color:var(--bordo-osc); font-weight:700}
.ed-acciones{display:flex; gap:6px}
.ed-acciones button{font-size:13px; padding:7px 12px; border:1px solid var(--oro); background:var(--bordo-osc); color:#f3e6c8; border-radius:6px; cursor:pointer}
.ed-acciones button.primaria-ed{background:var(--oro); color:var(--bordo-osc); font-weight:700}
.ed-cuerpo{flex:1; display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:14px; padding:12px 14px; overflow:auto}
@media (max-width:860px){.ed-cuerpo{grid-template-columns:1fr}}
.ed-lienzo-wrap{min-width:0}
.ed-plano{touch-action:none; user-select:none}
.ed-plano .mueble{cursor:grab}
.ed-plano .mueble.ed-sel{box-shadow:0 0 0 3px var(--oro)}
.ed-plano .mueble.ed-fantasma{border-style:dotted; background:rgba(255,255,255,.35)}
.ed-plano .ed-asiento{cursor:pointer}
.ed-ayuda{font-size:12px; color:var(--gris); margin-top:8px}
.ed-panel{background:var(--papel); border:1px solid var(--oro-suave); border-radius:8px; padding:12px; font-size:13px; align-self:start}
.ed-panel h3{font-family:Georgia,serif; color:var(--bordo); font-size:13px; letter-spacing:1.5px; text-transform:uppercase; margin:8px 0 8px; border-bottom:1px solid var(--oro); padding-bottom:4px}
.ed-panel h3:first-child{margin-top:0}
.ed-campo{display:block; font-size:11.5px; color:var(--gris); margin-bottom:8px}
.ed-campo input,.ed-campo select{display:block; width:100%; margin-top:3px; font-size:14px; padding:6px 8px; border:1px solid var(--linea); border-radius:6px; background:#fff; color:var(--tinta)}
.ed-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:6px}
.ed-check{display:block; font-size:12.5px; margin:6px 0; color:var(--tinta)}
.ed-btns{display:flex; gap:6px; flex-wrap:wrap; margin:8px 0}
.ed-btns button{font-size:12.5px; padding:6px 10px; border:1px solid var(--oro); background:#fff; color:var(--bordo); border-radius:6px; cursor:pointer}
.ed-btns button.peligro-ed{color:var(--peligro); border-color:#e0b4b4}

/* ================= familias, víspera, recibo, letra grande ================= */
.fam-wrap{display:flex; gap:5px; align-items:center; margin-top:3px}
.fam-wrap input{flex:1; min-width:0; margin-top:0}
.fam-wrap button.mon{min-width:34px; font-size:16px; line-height:1; padding:6px 8px}
.modo-familia{display:flex; gap:10px; align-items:center; flex-wrap:wrap; background:var(--bordo); color:#f3e6c8;
  border-radius:8px; padding:9px 14px; margin:0 0 12px; font-family:sans-serif; font-size:13.5px}
.modo-familia button{margin-left:auto; font-family:Georgia,serif; font-size:13.5px; padding:6px 16px; border-radius:6px;
  border:1px solid var(--oro); background:var(--oro); color:var(--bordo-osc); cursor:pointer; font-weight:600}
.asiento.enfamilia{box-shadow:0 0 0 2px var(--oro)}
.lista .qn i.fam{font-style:normal; font-size:11px; color:var(--gris); font-family:sans-serif; margin-left:6px}
.fila .campos input.paga,.sit-row input.paga{flex:0 0 118px; font-weight:400; color:var(--tinta); font-size:13px}
.acciones-sel button.recibo{flex:1; background:#fff; color:var(--bordo); border:1px solid var(--oro)}
.fila .quien button.lnk-recibo{background:none; border:none; padding:0; color:var(--bordo); font-weight:600;
  text-decoration:underline; cursor:pointer; font-family:sans-serif; font-size:10.5px}
.visp-fila{display:flex; gap:10px; align-items:center; padding:9px 2px; border-bottom:1px dotted #d8c9a6}
.visp-fila:last-child{border-bottom:none}
.visp-fila.avisado{opacity:.55}
.visp-check input{width:20px; height:20px; accent-color:var(--bordo)}
.visp-txt{flex:1; min-width:0}
.visp-txt b{display:block; color:var(--bordo); font-size:15px; font-weight:600}
.visp-txt small{color:var(--gris); font-size:12px; font-family:sans-serif}
a.visp-wsp{flex:0 0 auto; text-decoration:none; font-size:13px; padding:7px 14px; border-radius:6px;
  background:#e7f6e7; color:#1f6e3a; border:1px solid #bfe0c4; font-family:Georgia,serif}
.visp-fila.avisado a.visp-wsp{background:#fff; color:var(--gris); border-color:var(--linea)}
/* letra grande: escala tipografía y toques */
:root[data-grande="1"]{font-size:118%}
:root[data-grande="1"] body{font-size:17.5px}
:root[data-grande="1"] .asiento{height:36px; font-size:13px}
:root[data-grande="1"] .asiento .n{font-size:12px}
:root[data-grande="1"] nav button{font-size:14.5px; padding:12px 3px 10px}
:root[data-grande="1"] .lista li{font-size:15.5px; padding:8px 0}
:root[data-grande="1"] .caja input[type=text],:root[data-grande="1"] .fila input,:root[data-grande="1"] .sit-row input{font-size:17px}
:root[data-grande="1"] .acciones button{font-size:16px; padding:13px 8px}
:root[data-grande="1"] .chip,:root[data-grande="1"] .aviso{font-size:13px}
:root[data-grande="1"] .fila .honor{font-size:16.5px}
:root[data-grande="1"] .res-item .v{font-size:23px}
:root[data-grande="1"]{--gris:#6F6047; --oro:#8F6A1E}

a.wsp.sin-tel,a.wsp-h.sin-tel{background:#f3efe4; color:var(--gris); border-color:var(--linea)}

/* ================= objetos del plano ================= */
/* Puerta: la esquina recta del marco es la bisagra; la hoja es el lado grueso y el arco punteado es el giro.
   Cuatro orientaciones dibujadas con bordes, sin transformaciones, para que el marco coincida con la posición real. */
.mueble.puerta{border:0; background:transparent; border-left:2.6px solid var(--plano-tinta); border-right:1.2px dashed var(--plano-suave); border-bottom:1.2px dashed var(--plano-suave); border-radius:0 0 100% 0}
.mueble.puerta.espejo{border-left:1.2px dashed var(--plano-suave); border-right:2.6px solid var(--plano-tinta); border-radius:0 0 0 100%}
.mueble.puerta.vertical{border-left:0; border-right:1.2px dashed var(--plano-suave); border-top:2.6px solid var(--plano-tinta); border-bottom:1.2px dashed var(--plano-suave); border-radius:0 0 100% 0}
.mueble.puerta.vertical.espejo{border-top:1.2px dashed var(--plano-suave); border-bottom:2.6px solid var(--plano-tinta); border-right:1.2px dashed var(--plano-suave); border-radius:0 100% 0 0}
.mueble.puerta span{transform:none; font-size:10px; color:var(--gris)}
.mueble.ventana{border:0; border-top:1.4px solid var(--plano-tinta); border-bottom:1.4px solid var(--plano-tinta); background:rgba(255,255,255,.9); border-radius:0}
.mueble.ventana::after{content:""; position:absolute; left:0; right:0; top:50%; border-top:1px solid var(--plano-suave)}
.mueble.ventana.vertical{border:0; border-left:1.4px solid var(--plano-tinta); border-right:1.4px solid var(--plano-tinta)}
.mueble.ventana.vertical::after{left:50%; right:auto; top:0; bottom:0; border-top:0; border-left:1px solid var(--plano-suave)}
.mueble.columna{border-radius:50%; background:var(--plano-tinta); border-color:var(--plano-tinta); height:auto!important; aspect-ratio:1}
.mueble.escalera{background:repeating-linear-gradient(to bottom, rgba(255,255,255,.9) 0 5px, var(--plano-tinta) 5px 6px); border-radius:0}
.mueble.escalera.vertical{background:repeating-linear-gradient(to right, rgba(255,255,255,.9) 0 5px, var(--plano-tinta) 5px 6px)}
.mueble.mejitza{border:0; border-top:3px dotted var(--oro); background:transparent; border-radius:0; overflow:visible}
.mueble.mejitza span{top:auto; bottom:100%; color:var(--oro); font-size:10px}
.mueble.mejitza.vertical{border-top:0; border-left:3px dotted var(--oro)}
.mueble.mejitza.vertical span{bottom:auto; inset:0}
.mueble.armario{background:#efe6d2; border:1.4px solid var(--plano-tinta)}
.mueble.sala{background:rgba(255,255,255,.55); border:1px solid var(--plano-suave); border-radius:3px}
.mueble.sala span{color:var(--gris)}
.mueble.texto{border:0; background:transparent}
.mueble.texto span{color:var(--plano-tinta); font-weight:600}
.mueble.flecha{border:0; background:transparent}
.mueble.flecha span{color:var(--plano-tinta); font-weight:600}
.mueble.flecha span::before{content:"→ "; font-size:14px}
.mueble.flecha.espejo span::before{content:"← "}
.mueble.flecha.vertical span{transform:none}
.mueble.flecha.vertical span::before{content:"↑ "}
.mueble.flecha.vertical.espejo span::before{content:"↓ "}
.ed-paleta{font-size:12.5px; padding:6px 8px; border:1px solid var(--oro); border-radius:6px; background:#fff; color:var(--bordo); cursor:pointer; max-width:190px}
