## Convención de estilos (theming global)
El admin usa el theme vendor **Cuba** (BS5) + **Element Plus 2** + **Bootstrap 5**. Para que un
cambio se refleje global sin pelear especificidad:
1. **Fuente de verdad = tokens `:root` `--mn-*`** en `resources/sass/modern.scss` (colores, neutros).
   Cambiá ahí y se propaga.
2. **Puente a frameworks** (ya montado): Bootstrap se remapea en `:root` (`--bs-body-color`, etc.);
   **Element Plus se remapea inline en `resources/js/app.js`** (`--el-text-color-*` y la familia
   `--el-color-primary*` → `var(--mn-*)` vía `color-mix`), porque EP inyecta su `:root` DESPUÉS del
   CSS y ganaría. EP y BS son token-driven: setear sus vars re-tematiza todos sus componentes
   (botones, switches, tabs, paginación, etc.) sin overrides por elemento.
3. **Cuba rocía `color:#404040!important`** (ej. `td`). Eso NO se gana con cascade layers (el
   `!important` se invierte bajo `@layer`). Se gana con **`!important` propio en modern** (carga
   último) — usar `!important` SOLO para esas excepciones de Cuba, mapeadas a `var(--mn-*)`.
4. **CSS de componentes de EP también carga DESPUÉS del nuestro**: `app.js` hace
   `import "element-plus/dist/index.css"` y webpack lo INYECTA en runtime tras `overrides.css`
   (mismo caso que el `:root` del punto 2, pero a nivel de reglas de componente). Para overridear una
   regla de componente EP (no un token) desde modern hace falta `!important`. Ej. real: EP trae
   `.el-button+.el-button{margin-left:12px}` y para imponer 10px modern usa `!important` — NO es
   contra Cuba. **Preferí siempre el puente de tokens (punto 2)**; el `!important` vs reglas de
   componente EP es el último recurso cuando no hay token que cubra el caso.
- NO usar cascade layers con Cuba (su `!important` lo rompe). NO cambiar de theme vendor (mismo problema).
- Regla: estilos nuevos → tokens; framework → puente; `!important` SOLO vs `!important` de Cuba/`setting.css`
  o vs reglas de componente EP inyectadas en runtime (punto 4). Si el elemento es propio (`.btn` plano,
  primer hijo, etc.) y nada le rocía `!important`, un inline/clase normal alcanza — NO metas `!important`.
- **Ojo orden de carga**: el ÚLTIMO stylesheet del layout admin es `public/css/setting.css`
  (estático, sin scss, línea ~117 del blade), DESPUÉS de `overrides.css` (modern). Tiene resets con
  `!important` (p.ej. zeroeaba `.el-button+.el-button`). Si un override de modern no gana pese a
  `!important`, revisá si `setting.css` lo está pisando y corregilo ahí.

> Las preferencias de herramientas propias de cada máquina van en `CLAUDE.local.md`
> (no versionado). Acá solo lo que vale para todo el equipo.

## Auditoría pre-lanzamiento (app móvil)
Los hallazgos pendientes están en `docs/auditoria-prelanzamiento.md`, numerados
B1-B9 (bloqueantes) e I1-I14 (importantes). Cuando te pida arreglar un código
tipo "B8" o "I3", leé primero ese archivo. El orden de trabajo por sesión está
en `docs/plan-lanzamiento.md`.

## Reglas de este repo
- Este código emite comprobantes a SUNAT y mueve caja. Ningún cambio en cálculo
  de totales, IGV, idempotencia o cola offline entra sin test que lo cubra.
- No refactorices de paso. Si ves algo que conviene cambiar y no te lo pedí,
  anotalo al final de tu respuesta en vez de tocarlo.
- Antes de escribir, listame los archivos que vas a modificar.

## Trabajo sin respaldo (regla que faltaba)
Acá suelen correr **varias sesiones a la vez**. El código se pierde cuando una
hace checkout y la otra tenía cambios sin guardar.

- **Commiteá WIP cada tanto**, aunque esté a medias: `git commit -m "wip: ..."`.
  Un commit feo en una rama propia es infinitamente mejor que trabajo de horas
  viviendo solo en el árbol. Si querés recuperar el estado sin commitear después,
  `git reset HEAD~1` te lo devuelve.
- **Usá worktrees, no compartas el árbol.** Cada sesión en su directorio:
  `git worktree add ../sysfarma-<tema> -b <rama>`. `git worktree list` muestra
  los activos. Así dos sesiones nunca se pisan.
- **Antes de cualquier `checkout`/`reset`/`restore`/`clean`**, corré `git status`.
  Si hay cambios que no son tuyos, no los toques: puede haber otra sesión en
  vuelo. Respaldalos o dejalos donde están.
- Si vas a commitear en un árbol con trabajo ajeno, **agregá por path explícito**
  (`git add <archivo>`), nunca `git add -A`.
