/* ═══════════════════════════════════════════════════════════
   EMMARIA · Sistema de diseño
   Cambia un color aquí y cambia en todo el sistema.
   ═══════════════════════════════════════════════════════════ */
:root {
  --ciruela: #4A1340;
  --ciruela-2: #6B2A5E;
  --magenta: #A3126B;
  --rosa: #E0489B;
  --rosa-claro: #FBE3F0;
  --turquesa: #137A87;
  --turquesa-claro: #E6F6F7;
  --fondo: #F7F5F6;
  --blanco: #FFFFFF;
  --borde: #EADDE5;
  --borde-fuerte: #D9C9D3;
  --texto: #3A1033;
  --texto-suave: #6B4A62;
  --exito: #166534; --exito-claro: #DCFCE7;
  --alerta: #92400E; --alerta-claro: #FEF3C7;
  --error: #B91C1C; --error-claro: #FEE2E2;
  /* un color por módulo */
  --m-clientes: #0369A1; --m-ventas: #2563EB; --m-inventario: #0F766E; --m-finanzas: #15803D;
  --m-nomina: #BE185D; --m-reportes: #7C3AED; --m-cotizador: #7C3AED; --m-taller: #C2410C; --m-usuarios: #4A1340;
  --radio: 14px; --radio-sm: 10px;
  --fuente: 'DM Sans', system-ui, sans-serif;
  --fuente-titulo: 'Outfit', var(--fuente);
  --fuente-marca: 'Marcellus', Georgia, serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--fondo); color: var(--texto); font-family: var(--fuente); font-size: 16px; }
h1, h2, h3 { font-family: var(--fuente-titulo); margin: 0; letter-spacing: -0.01em; }
h1 { font-size: 32px; font-weight: 800; }
h2 { font-size: 22px; font-weight: 700; }
a { color: var(--magenta); }
[hidden] { display: none !important; }

/* ── botones y campos ── */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 0 18px;
  border-radius: var(--radio-sm); border: 1px solid var(--borde-fuerte); background: var(--blanco); color: var(--texto);
  font: 700 15px var(--fuente); cursor: pointer; text-decoration: none; }
.btn:hover { border-color: var(--ciruela-2); }
.btn-primario { background: var(--ciruela); border-color: var(--ciruela); color: #fff; }
.btn-primario:hover { background: var(--ciruela-2); }
.btn-turquesa { background: var(--turquesa); border-color: var(--turquesa); color: #fff; }
.btn-peligro { color: var(--error); border-color: #FCA5A5; }
.btn-chico { min-height: 36px; padding: 0 12px; font-size: 14px; }
.btn:disabled { opacity: .55; cursor: not-allowed; }
:focus-visible { outline: 3px solid #7DD3DC; outline-offset: 2px; }
.campo { display: flex; flex-direction: column; gap: 6px; }
.campo label { font-size: 14px; font-weight: 700; }
.campo input, .campo select, .campo textarea { min-height: 46px; padding: 0 12px; border: 1px solid var(--borde-fuerte);
  border-radius: var(--radio-sm); font: 15px var(--fuente); background: #fff; color: var(--texto); }
.campo textarea { padding: 10px 12px; min-height: 80px; }
.ayuda { font-size: 13px; color: var(--texto-suave); }
.rejilla { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 16px; }

/* ── tarjetas ── */
.tarjeta { background: var(--blanco); border: 1px solid var(--borde); border-radius: var(--radio); padding: 24px; }
.etiqueta { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--texto-suave); }
.pildora { display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; }
.p-ok { background: var(--exito-claro); color: var(--exito); }
.p-gris { background: #F4EEF2; color: var(--texto-suave); }
.p-alerta { background: var(--alerta-claro); color: var(--alerta); }
.p-error { background: var(--error-claro); color: var(--error); }
.p-info { background: #DBEAFE; color: #1E3A8A; }

/* ── inicio de sesión ── */
.login { min-height: 100vh; display: flex; flex-wrap: wrap; }
.login-marca { flex: 1 1 420px; background: var(--ciruela); color: #fff; padding: 56px; display: flex; flex-direction: column; justify-content: space-between; gap: 40px; }
.login-marca .logo-caja { background: #fff; border-radius: 18px; padding: 10px 18px; align-self: flex-start; }
.login-marca .logo-caja img { height: 170px; display: block; }
.login-marca h1 { font-size: 46px; line-height: 1.05; color: #fff; }
.login-marca p { color: #EBCFE0; font-size: 18px; line-height: 1.6; margin: 0; }
.login-forma { flex: 1 1 420px; display: flex; align-items: center; justify-content: center; padding: 48px 24px; }
.login-forma .tarjeta { width: 100%; max-width: 420px; display: flex; flex-direction: column; gap: 18px; }

/* ── aplicación ── */
.app { min-height: 100vh; display: flex; flex-wrap: wrap; }
.lateral { flex: 1 1 250px; max-width: 290px; background: var(--ciruela); color: #fff; padding: 24px 16px; display: flex; flex-direction: column; gap: 22px; }
.lateral .marca { display: flex; align-items: center; gap: 12px; padding: 0 8px; }
.lateral .marca .icono { width: 44px; height: 44px; border-radius: 12px; background: #fff; display: flex; align-items: center; justify-content: center; }
.lateral .marca .icono img { width: 36px; height: 36px; object-fit: contain; }
.lateral .marca span { font-family: var(--fuente-marca); font-size: 24px; letter-spacing: .08em; }
.lateral .grupo { display: flex; flex-direction: column; gap: 4px; }
.lateral .grupo .etiqueta { color: #D9A9C6; padding: 0 8px 4px; }
.lateral select { min-height: 44px; border-radius: var(--radio-sm); border: 0; padding: 0 10px; font: 700 14px var(--fuente); color: var(--ciruela); }
.lateral a.nav { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 12px; border-radius: var(--radio-sm);
  color: #F3E1EC; text-decoration: none; font-weight: 500; }
.lateral a.nav:hover { background: rgba(255,255,255,.08); }
.lateral a.nav.activo { background: var(--turquesa); color: #fff; font-weight: 700; }
.lateral a.nav .punto { width: 12px; height: 12px; border-radius: 4px; flex-shrink: 0; }
.lateral .pie { margin-top: auto; border-top: 1px solid var(--ciruela-2); padding-top: 14px; font-size: 13px; color: #EBCFE0; display: flex; flex-direction: column; gap: 10px; }
.principal { flex: 999 1 560px; min-width: 0; padding: 28px 36px 56px; display: flex; flex-direction: column; gap: 24px; }
.barra { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.barra .chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { padding: 8px 14px; border-radius: 999px; background: #fff; border: 1px solid var(--borde); font-size: 14px; font-weight: 700; }

/* ── tablas ── */
.tabla-caja { overflow-x: auto; background: #fff; border: 1px solid var(--borde); border-radius: var(--radio); }
table { width: 100%; border-collapse: collapse; min-width: 640px; }
th { text-align: left; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--texto-suave); padding: 14px 16px; border-bottom: 1px solid var(--borde); }
td { padding: 14px 16px; border-bottom: 1px solid #F1E6EE; font-size: 15px; vertical-align: middle; }
tr:last-child td { border-bottom: 0; }

/* ── permisos ── */
.permisos { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.permiso { display: flex; flex-direction: column; gap: 6px; }
.permiso .mod { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; }
.permiso .mod i { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.nivel { min-height: 44px; border-radius: var(--radio-sm); font: 700 14px var(--fuente); cursor: pointer; }
.nivel-0 { background: #F4EEF2; color: var(--texto-suave); border: 1px dashed var(--borde-fuerte); }
.nivel-1 { background: #DBEAFE; color: #1E3A8A; border: 1px solid #BFDBFE; }
.nivel-2 { background: var(--exito); color: #fff; border: 1px solid var(--exito); }
.nivel-3 { background: var(--ciruela); color: #fff; border: 1px solid var(--ciruela); }

/* ── ventanas y avisos ── */
.velo { position: fixed; inset: 0; background: rgba(42, 8, 36, .55); display: flex; align-items: center; justify-content: center; padding: 16px; z-index: 50; }
.ventana { background: #fff; border-radius: 18px; width: 100%; max-width: 640px; max-height: 92vh; overflow: auto; padding: 26px; display: flex; flex-direction: column; gap: 18px; }
.ventana .acciones { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; }
.avisos { position: fixed; right: 16px; bottom: 16px; display: flex; flex-direction: column; gap: 8px; z-index: 60; }
.aviso { background: #fff; border-left: 5px solid var(--turquesa); border-radius: 10px; padding: 12px 16px; box-shadow: 0 8px 24px rgba(0,0,0,.15); font-size: 14px; max-width: 360px; }
.aviso.error { border-left-color: var(--error); }
.demo { background: var(--alerta-claro); color: var(--alerta); border-radius: var(--radio-sm); padding: 10px 14px; font-size: 14px; font-weight: 700; }
.vacio { color: var(--texto-suave); font-size: 15px; padding: 18px 0; }

@media (max-width: 640px) {
  .principal { padding: 20px 16px 48px; }
  .login-marca { padding: 32px 20px; }
  .login-marca .logo-caja img { height: 120px; }
  .login-marca h1 { font-size: 34px; }
  .lateral { max-width: none; }
}
