Estilos de tema
Los estilos de un tema se escriben en Sass (SCSS) y se compilan en tiempo de ejecución. El punto de entrada es wwwroot/tema.scss, que orquesta el orden de importación: primero funciones y variables, luego Bootstrap, luego los parciales del tema.
El archivo raíz tema.scss
El orden importa: las variables deben quedar definidas antes de importar Bootstrap, para que Bootstrap las use. Estructura real (Crono usa Bootstrap 5):
// Funciones de Bootstrap y compartidas de Crono
@import "/lib/bs5/scss/functions";
@import '/compartido/funciones';
@import '/compartido/variables-compartido-bootstrap';
// Archivo virtual con las variables del tema desde la base de datos
@import '/.app/temavars.scss';
// Valores por defecto y anulaciones de variables del tema
@import 'variables-personalizados';
@import 'variables';
// Cabecera de Bootstrap: variables, mixins, mapas (ya usa las variables anteriores)
@import "/lib/bs5/scss/bootstrap-cabecera";
@import 'variables-reseteo';
// Tipografías
@import "fuentes";
// ... parciales del tema (_botones, _menu, _login, _prestamos, ...)
Organización en parciales
Cada área de la interfaz vive en su propio parcial _nombre.scss y se importa desde tema.scss. En el tema Compacto, por ejemplo, hay parciales por dominio: _botones.scss, _menu.scss, _login.scss, _busqueda.scss, _clientes.scss, _prestamos.scss, _reportes.scss, _balance-general.scss, _conciliacion-bancaria.scss, entre muchos otros. Esta granularidad mantiene el CSS mantenible y facilita sobrescribir solo una parte en un tema hijo.
Variables SCSS del tema
Además de las variables del tema.config, el tema define variables Sass propias (no ligadas a Bootstrap) en _variables.scss:
$enable-rfs: false;
$cr-rojo: #9B0000;
$cr-rojo2: #dc3000;
$cr-verde1: #009e74;
// ...
Y las anulaciones de variables de Bootstrap se agrupan aparte (por ejemplo en _variables-reseteo.scss y _variables-personalizados.scss), de modo que quede claro qué se está sobrescribiendo del framework y qué es propio del tema.
Compilación en tiempo de ejecución
El SCSS se compila cuando se sirve, no en el build, y el resultado se guarda en un caché en proceso y en disco. Esto permite que las variables del backend afecten el CSS sin recompilar la aplicación, pero implica que:
- Al editar un
.scssdel tema hay que reiniciar la aplicación (y a veces limpiar el caché de compilación) para ver el cambio: no hay recarga en caliente. - En producción, un autoprefijador añade los prefijos de proveedor necesarios, así que puedes escribir CSS estándar sin prefijos.
Escribe estilos nuevos en un parcial propio y añádelo al final de tema.scss, o —mejor aún para un tema hijo— sobrescribe solo el parcial concreto (ver Herencia de temas). Evita incrustar imágenes en Base64 y prefiere el sistema de medios para no penalizar la compilación ni las consultas.