# Sistema de Diseño — Nucleo 3

## Estructura de archivos CSS

```
assets/css/
├── variables.less    # Variables CSS (:root), breakpoints
├── color.less        # Paleta de colores completa
├── font.less         # Tipografía
├── index.less        # Estilos base, botones, badges, alerts, mixins
├── form.less         # Formularios y controles
├── table.less        # Tablas (DataTables, macro table)
├── nav.less          # Navegación, sidebar, header
├── modal.less        # Modales
├── icons.less        # Iconos
└── dist/             # Archivos compilados (.css)
```

## Compilar LESS
```bash
ssh wappcom@dev.io 'cd www/nucleo/nucleo.3 && lessc assets/css/ARCHIVO.less assets/css/dist/ARCHIVO.css'
```

---

## Variables CSS (color.less)

### Paleta base
```css
--color-blue: #3369e7
--color-green: #11b671
--color-red: #fe3535
--color-orange: #ffc168
--color-purple: #8e43e7
--color-gray: #8e8c97
--color-text: #2c3136
--color-line: #dee2ed
--color-white: #ffffff
--color-black: #000000
```

### Estados
```css
--color-primary: #3369e7    /* azul */
--color-success: #11b671    /* verde */
--color-info: #00aeff       /* sky blue */
--color-warning: #ffc168    /* naranja */
--color-danger: #fe3535     /* rojo */
```

### Variantes suaves (backgrounds)
```css
--color-primary-soft: #4674de
--color-success-soft: #a7f3d3
--color-danger-soft: #fcd0d0
--color-warning-soft: #ffc168
```

### Formularios
```css
--color-input-bg: #f4f4fb
--color-input-border: #dee2ed
--color-input-text: #383551
--color-placeholder-input: #97a0aa
--color-form-label: #797a88
```

### Tablas
```css
--color-table-bg: #ffffff
--color-table-head-bg: #f2f3f9
--color-table-even: #f7f7fa
--color-table-text-thead: #828da1
```

### Bordes y radios
```css
--border-radius: 7px
--border-radius-btn: 7px
--border-radius-form: 7px
--border-radius-table: 10px
```

---

## Botones (index.less)

### Clases de botones
```html
<button class="btn">Default</button>
<button class="btn btnPrimary">Primary</button>
<button class="btn btnInfo">Info</button>
<button class="btn btnSuccess">Success</button>
<button class="btn btnWarning">Warning</button>
<button class="btn btnDanger">Danger</button>
<button class="btn btnFull">Full (outline)</button>
<button class="btn btnDefault">Default</button>
```

### Tamaños
```html
<button class="btn btnLg">Large</button>
<button class="btn btnSmall">Small</button>
<button class="btn btnMini">Mini</button>
```

### Con iconos
```html
<button class="btn btnIconLeft">
    <span class="icon">&#xe800;</span>
    <span>Texto</span>
</button>
<button class="btn btnIcon btnSmall">
    <span class="icon">&#xe801;</span>
</button>
```

---

## Badges / Pills

```html
<span class="badge badgePrimary">Primary</span>
<span class="badge badgeSuccess">Success</span>
<span class="badge badgeInfo">Info</span>
<span class="badge badgeWarning">Warning</span>
<span class="badge badgeDanger">Danger</span>
<span class="badge badgeOther">Gray</span>
<span class="badge badgePurple">Purple</span>
```

---

## Alerts

```html
<div class="alert alertDanger">Error message</div>
<div class="alert alertSuccess">Success message</div>
<div class="alert alertWarning">Warning message</div>
<div class="alert alertInfo">Info message</div>
```

### Toast notifications
```html
<div class="boxAlert bottom-left">
    <div class="alert success">
        <span class="icon">&#xe800;</span>
        <span>Mensaje</span>
    </div>
</div>
```

---

## Formularios (form.less)

### Estructura básica
```html
<div class="form">
    <div class="formControl">
        <label>Nombre del campo</label>
        <input type="text" class="formInput" placeholder="Placeholder">
    </div>
</div>
```

### Input con icono
```html
<div class="formControl formControlIconSelect">
    <span class="iconSelect">&#xe800;</span>
    <input type="text" class="formInput" placeholder="Buscar...">
    <button class="btnSelectIcon">&#xe80b;</button>
</div>
```

### Select
```html
<select class="formInput">
    <option>Opción 1</option>
    <option>Opción 2</option>
</select>
```

### Checkbox
```html
<div class="formControl formCheckbox">
    <div class="formCheckboxItem">
        <input type="checkbox" id="check1">
        <label for="check1">Acepto los términos</label>
    </div>
</div>
```

### Switch toggle
```html
<div class="formControl formStateSwitch">
    <div class="boxBtnStateSwitch">
        <div class="btnStateSwitch" state="1">
            <div class="circle"></div>
            <div class="base"></div>
        </div>
    </div>
</div>
```

### Grupo de radio (segmented control)
```html
<div class="formControl">
    <div class="formRadioGroup">
        <label class="formRadioGroupLabel">Seleccionar:</label>
        <div class="radioGroupOptions">
            <label class="radioGroupOption active">
                <input type="radio" name="tipo" value="1" checked>
                <span>Opción 1</span>
            </label>
            <label class="radioGroupOption">
                <input type="radio" name="tipo" value="2">
                <span>Opción 2</span>
            </label>
        </div>
    </div>
</div>
```

---

## Tablas (table.less)

### Tabla básica
```html
<div class="table-responsive">
    <table class="table">
        <thead>
            <tr>
                <th>ID</th>
                <th>Nombre</th>
                <th>Estado</th>
                <th class="colActions">Acciones</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>Item name</td>
                <td><span class="state-pill state-pill-active">Activo</span></td>
                <td class="actions">
                    <div class="btns">
                        <a class="btnIcon"><span class="icon">&#xe801;</span></a>
                        <a class="btnIcon btnDelete"><span class="icon">&#xe802;</span></a>
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
</div>
```

### State pills
```html
<span class="state-pill state-pill-active">Activo</span>
<span class="state-pill state-pill-inactive">Inactivo</span>
<span class="state-pill state-pill-danger">Error</span>
<span class="state-pill state-pill-info">Info</span>
<span class="state-pill state-pill-warning">Warning</span>
```

### Dropdown actions
```html
<div class="dropdown-actions">
    <button class="dropdown-trigger">
        <span class="icon">&#xe80b;</span>
    </button>
    <ul class="dropdown-actions-menu">
        <li><a class="dropdown-action-item"><span class="icon">&#xe801;</span> Editar</a></li>
        <li><a class="dropdown-action-item"><span class="icon icon-trash">&#xe802;</span> Eliminar</a></li>
    </ul>
</div>
```

### Column widths
```html
<th class="col-id">ID</th>
<th class="col-img">Imagen</th>
<th class="col-actions">Acciones</th>
```

---

## Layout / Contenedores

### Grid columns (ancho fijo)
```html
<div class="col5w">4%</div>
<div class="col10w">10%</div>
<div class="col15w">15%</div>
<div class="col20w">20%</div>
<div class="col25w">25%</div>
<div class="col33w">33%</div>
<div class="col50w">50%</div>
<div class="col75w">75%</div>
<div class="col100w">100%</div>
```

### Espaciado
```html
<div class="space1w">margen 4%</div>
<div class="space5w">margen 43%</div>
```

### Section
```html
<div class="section">
    <div class="left">Izquierda</div>
    <div class="right">Derecha</div>
</div>
```

### Flex helpers
```html
<div class="flexLineEnd">
    <button class="btn">Acción</button>
</div>
<div class="boxBnts">
    <button class="btn btnSmall">Cancelar</button>
    <button class="btn btnPrimary btnSmall">Guardar</button>
</div>
```

---

## Navegación

### Sidebar (menú módulo)
```html
<nav class="sidebarMenuModule">
    <div class="head">
        <span class="icon">&#xe800;</span>
        <label>Mi Módulo</label>
    </div>
    <ul class="tbody">
        <li>
            <a class="active">
                <span class="icon">&#xe801;</span>
                <span>Inicio</span>
            </a>
        </li>
    </ul>
</nav>
```

### Tabs
```html
<div class="groupTabs">
    <div class="tabs">
        <button class="tab active">Tab 1</button>
        <button class="tab">Tab 2</button>
    </div>
    <div class="tabsContents">
        <div class="tabContent active">Contenido 1</div>
        <div class="tabContent">Contenido 2</div>
    </div>
</div>
```

---

## Mixins útiles ( LESS)

```less
.widthAvailable()     // width: fill-available
.heightAvailable()    // height: fill-available
.boxShadow()          // sombra básica
.boxShadowWindow()    // sombra para modales
.boxShadowList()      // sombra para listas dropdown
.transition(@x: .3s) // transición
.border(@x)           // borde
.borderRadius(@x)     // border-radius
```

---

## Reglas de uso

1. **Usar variables CSS** — nunca hardcodear colores hex
2. **Compilar LESS** — siempre después de editar `.less`
3. **No estilos inline** — todo en LESS
4. **No clases inventadas** — usar las existentes del sistema
5. **Responsive** — breakpoints definidos en `variables.less`

## Iconos
Usar fuente `font-brave` con clases `.icon`:
```html
<span class="icon">&#xe800;</span>
```
