/* Estados y componentes dinámicos (hecho a mano; sin estilos en línea).
   Todo valor personalizable es una variable de :root: cambia el diseño aquí.
   Va sin capa y con :root delante para ganar a las hojas base, igual que lo hacía el estilo en línea. */
:root{
  --op-inactivo:.6;--op-archivado:.55;--op-revisado:.7;
  --c-aviso-borde:#f59e0b;--c-aviso-fondo:#fffbeb;--c-pendiente-borde:#fca5a5;--c-alerta-texto:#991b1b;
  --c-sin-color:#ef4444;--c-solo-lectura-fondo:#f8fafc;
  --codigo-tam:28px;--codigo-espaciado:.2em;
  --c-peligro-fondo:#fef2f2;--toast-fondo:#0f172a;--z-toast:80000;--z-bloqueo:90000;--op-apagado:.45;
}
/* listas: elementos desactivados / archivados / revisados */
:root .is-inactivo{opacity:var(--op-inactivo)}
:root .is-archivado{opacity:var(--op-archivado)}
:root .is-revisado{opacity:var(--op-revisado)}
:root .is-pendiente{border-color:var(--c-pendiente-borde)}
:root .is-aviso{border-color:var(--c-aviso-borde);background:var(--c-aviso-fondo)}
/* texto de resultados */
:root .txt-alerta{color:var(--c-alerta-texto)}
:root .txt-normal{color:var(--ink-600)}
/* pestañas de estado de cita: el color viene de datos (--est-borde, --est-texto) */
:root .estados button.est-b{border-color:var(--est-borde);color:var(--est-texto)}
:root .estados button.est-b.on{background:var(--est-borde)}
/* ubicaciones del perfil público: la seleccionada */
:root .chips span.sel{background:var(--accent);color:#fff}
/* editor de recetas */
:root .cps .cp-principal{grid-column:1/-1;font-weight:600}
:root .ind .ib.on{background:var(--accent);color:#fff}
:root .sw-dot.sin-color{background-image:linear-gradient(135deg,#fff 45%,var(--c-sin-color) 45%,var(--c-sin-color) 55%,#fff 55%)}
/* plantillas de WhatsApp sin edición */
:root .solo-lectura{background:var(--c-solo-lectura-fondo);color:var(--ink-600);cursor:not-allowed}
/* código de verificación */
:root .campo-codigo{width:100%;text-align:center;border:2px solid var(--ink-200);border-radius:14px;outline:0;padding:13px 10px;font-weight:800}
:root .campo-codigo-grande{font-size:var(--codigo-tam);letter-spacing:var(--codigo-espaciado)}
/* avisos del panel */
:root .aviso{margin-bottom:14px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
:root .aviso.peligro{border-color:var(--c-pendiente-borde);background:var(--c-peligro-fondo)}
:root .aviso.atencion{border-color:var(--c-aviso-borde);background:var(--c-aviso-fondo)}
:root .fila-flex{display:flex;gap:10px;align-items:center;margin-bottom:10px;flex-wrap:wrap}
:root .pie-version{font-size:10.5px;padding:0 14px 8px}
:root .toast-flotante{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:var(--z-toast);background:var(--toast-fondo);color:#fff;padding:12px 16px;border-radius:99px;display:flex;gap:12px;align-items:center;box-shadow:0 12px 36px rgba(0,0,0,.35);font-weight:600;font-size:14px;max-width:92vw}
:root .btn-ancho{width:100%;margin-top:8px}
:root .btn-ancho-calendario{width:100%;margin:10px 0}
/* cámara oculta y pantalla de bloqueo */
:root .cam-oculta{position:fixed;left:-9999px;top:0;width:2px;height:2px;opacity:0}
:root .ov-bloqueo{position:fixed;inset:0;z-index:var(--z-bloqueo);display:grid;place-items:center;background:rgba(15,23,42,.72);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);padding:16px}
/* animaciones y estados que antes se aplicaban con style */
:root .shake{animation:shake .35s}
:root .toast-sale{transition:opacity .3s;opacity:0}
:root .is-apagado{opacity:var(--op-apagado)}
:root .ctx-btn{max-width:300px;overflow:hidden;text-overflow:ellipsis}
:root .sin-puntero{pointer-events:none}
