/* Barbones · estilos comunes a los tres frontends */
:root{
  --bg:#0A0A0A; --panel:#141414; --panel2:#1C1C1C; --line:#2A2A2A; --line2:#3A3A3A;
  --cream:#F1EBDD; --muted:#A7A296; --dim:#8C877C; --alerta:#F0A99B; --ok:#BFD8B8;
  --serif:'Playfair Display',Georgia,serif; --sans:'DM Sans',system-ui,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--cream);font-family:var(--sans);line-height:1.45}
h1,h2,h3{margin:0;font-family:var(--serif);font-weight:600}
h1{font-size:40px}
h2{font-size:26px}
h3{font-size:20px}
p{margin:0}
button,input,select,textarea{font-family:inherit;font-size:16px;color:var(--cream)}
button{cursor:pointer}
button:disabled{cursor:not-allowed}
a{color:var(--cream)}
:focus-visible{outline:2px solid var(--cream);outline-offset:2px}
.muted{color:var(--muted)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Botones */
.btn{min-height:44px;padding:0 22px;border-radius:999px;border:1px solid var(--line2);background:transparent;font-size:15px}
.btn:hover:not(:disabled){border-color:var(--cream)}
.btn.primary{background:var(--cream);color:#0A0A0A;border-color:var(--cream);font-weight:600}
.btn.primary:disabled{background:var(--panel2);color:var(--dim);border-color:var(--line)}
.btn.danger{border-color:var(--alerta);color:var(--alerta)}
.btn.sm{min-height:38px;padding:0 16px;font-size:14px}
.btn.block{width:100%}
.pill{min-height:40px;padding:0 20px;border-radius:999px;font-size:14px;background:transparent;border:1px solid var(--line2)}
.pill.on{background:var(--cream);color:#0A0A0A;border-color:var(--cream);font-weight:600}

/* Formularios */
.campo{display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--muted);flex:1 1 220px;min-width:0}
.campo .ayuda{font-size:12px;color:var(--dim)}
.input,.campo input,.campo select,.campo textarea{width:100%;min-height:48px;border-radius:12px;border:1px solid var(--line2);background:var(--panel);color:var(--cream);padding:0 14px}
.campo textarea{padding:12px 14px;min-height:88px;resize:vertical}
.campo input[type=checkbox]{width:20px;min-height:20px;accent-color:var(--cream)}
.campo input:focus,.campo select:focus,.campo textarea:focus{outline:2px solid var(--cream);outline-offset:1px}
.fila{display:flex;flex-wrap:wrap;gap:16px}
.check{display:flex;gap:12px;align-items:flex-start;font-size:14px;color:var(--muted);line-height:1.4}
.check input{margin-top:2px;width:20px;height:20px;flex:none;accent-color:var(--cream)}
.error{border:1px solid var(--alerta);color:var(--alerta);border-radius:12px;padding:12px 14px;font-size:14px}
.aviso{border:1px solid var(--line2);color:var(--muted);border-radius:12px;padding:12px 14px;font-size:14px;background:var(--panel)}

/* Estados de cita (no dependen solo del color) */
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:999px;border:1px solid var(--line2);color:var(--muted);white-space:nowrap}
.chip.pendiente{border-style:dashed;border-color:var(--cream);color:var(--cream)}
.chip.confirmada{background:var(--cream);color:#0A0A0A;border-color:var(--cream)}
.chip.atendida{border-color:var(--ok);color:var(--ok)}
.chip.no_asistio,.chip.cancelada{border-color:var(--alerta);color:var(--alerta)}

/* Ventanas y avisos */
body.bloqueado{overflow:hidden}
.ov{position:fixed;inset:0;background:rgba(0,0,0,.72);display:flex;align-items:flex-start;justify-content:center;padding:32px 16px;overflow-y:auto;z-index:50}
.modal{width:100%;background:var(--panel);border:1px solid var(--line2);border-radius:20px;padding:28px;display:flex;flex-direction:column;gap:18px;margin:auto 0}
[hidden]{display:none!important}
.pops{position:fixed;top:16px;right:16px;z-index:80;display:flex;flex-direction:column;gap:10px;width:min(360px,calc(100vw - 32px))}
.pop{position:relative;background:var(--panel2);border:1px solid var(--cream);border-radius:16px;padding:16px 44px 16px 18px;display:flex;flex-direction:column;gap:8px;box-shadow:0 12px 40px rgba(0,0,0,.6);animation:pop-in .25s ease-out}
.pop b{font-family:var(--serif);font-size:18px}
.pop p{margin:0;font-size:14px;line-height:1.45;color:var(--muted)}
.pop p strong{color:var(--cream);font-weight:600}
.pop .x{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:50%;border:0;background:transparent;font-size:15px;color:var(--muted)}
.pop .btn{align-self:flex-start}
@keyframes pop-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pop{animation:none}}
.modal>.campo{flex:none}
.modal .acts{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
.modal .cab{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.modal .cierra{width:40px;height:40px;border-radius:50%;border:1px solid var(--line2);background:transparent;font-size:18px;flex:none}
.toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:80;width:min(92vw,460px)}
.toast{background:var(--cream);color:#0A0A0A;border-radius:14px;padding:12px 18px;font-size:15px;font-weight:500;box-shadow:0 8px 30px rgba(0,0,0,.5)}
.toast.mal{background:#2A1512;color:var(--alerta);border:1px solid var(--alerta)}

/* Pantalla de acceso */
.acceso{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.acceso .tarjeta{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:36px 32px;display:flex;flex-direction:column;gap:20px}
.acceso img{width:120px;height:120px;object-fit:contain;align-self:center}
.acceso .campo{flex:none}
.acceso h1{font-size:30px;text-align:center}
.acceso .sub{text-align:center;color:var(--muted);font-size:15px}

.placeholder-foto{background:repeating-linear-gradient(135deg,#1C1C1C 0 14px,#242424 14px 28px)}
@media (max-width:640px){h1{font-size:32px}.modal{padding:22px 18px}}
@media (prefers-reduced-motion:no-preference){.btn,.pill{transition:border-color .15s,background .15s}}
