# Full Dominoes — Pack 05

Corrijo lo de los botones (me pasé, redefiní el diseño cuando solo querías
la luz), los pips en negro con iluminación de grabado, y te explico
exactamente qué archivo falta para lo de la mesa.

---

## 1. Archivos

| Archivo | Destino | Tipo |
|---|---|---|
| `public/assets/js/sala.js` | `public/assets/js/` | **reemplaza** ← el de la mesa |
| `public/assets/js/tablero3d.js` | `public/assets/js/` | **reemplaza** |
| `public/assets/js/btn-lobby-luz.js` | `public/assets/js/` | **nuevo** |
| `public/home.html` | `public/` | **reemplaza** |

**Borrá `btn-lobby-pack.js`** si lo subiste. Ese era el del pack 03/04 que
reemplazaba los botones enteros. Ya no va.

---

## 2. Botones: solo la luz

Tenías razón, me pasé. Redefiní los componentes completos y con eso me
llevé puesto el diseño de cada botón.

`btn-lobby-luz.js` hace lo contrario: **no redefine nada**. Entra después
de que tus `btn-*.js` originales hicieron su trabajo, encuentra sus
instancias y le inyecta a cada shadow root una hoja de estilos que solo
suma luz:

| Se agrega | Se respeta |
|---|---|
| halo exterior de color | layout y disposición |
| aro biselado sólido | tamaños y tipografía |
| filo interno oscuro | colores de fondo |
| luz interna en el borde superior | forma y radios |
| barrido de brillo en bucle | todo lo demás |
| realce al pulsar | |

Y sí, los iconos nuevos se quedan: se reemplaza solo el dibujo del `<svg>`,
en el mismo hueco, con el mismo tamaño y la misma posición que tenía el
icono viejo.

Un detalle de implementación que vale la pena: el barrido **no usa
`::before` ni `::after`**. Tus botones ya los tienen ocupados con sus
propios brillos y pisárselos les cambiaría el diseño. En su lugar inserto
un `<span>` real dentro de un contenedor que recorta con `border-radius:
inherit`, así el brillo queda dentro del contorno exacto del botón sea
cual sea su forma, sin tocar su `overflow`.

El `home.html` del pack ya vuelve a cargar los ocho `btn-*.js` originales
y suma una sola línea al final:

```html
<script src="assets/js/btn-lobby-luz.js?v=1"></script>
```

Tiene que ir **después** de todos los `btn-*.js`. Si algún botón no querés
que reciba luz: `<btn-ranking data-sin-luz></btn-ranking>`.

---

## 3. Los pips

Estaban en `#000000` puro pero completamente planos, y así se leen como
una calcomanía redonda. El intento anterior de darles brillo los agrisó,
porque el reflejo iba **encima** del pip.

Un pip real no es una mancha pintada: es un hueco taladrado en el marfil y
relleno de laca negra. Lo que el ojo reconoce de un hueco son tres cosas,
y **ninguna toca el centro**:

1. **Sombra del bisel**, justo por FUERA del borde de arriba — el canto
   del taladro tapa la luz que viene de arriba-izquierda.
2. **Filo iluminado** en la pared opuesta, abajo-derecha, donde sí llega
   la luz. Es un **arco** de ~20° a 160°, no un círculo: si fuera completo
   se leería como un anillo y no como profundidad. Gris oscuro, nunca
   blanco.
3. **Destello del barniz**, del 30% del radio y desplazado a
   arriba-izquierda. A ese tamaño aporta brillo sin levantar el valor
   medio del pip.

El centro se queda en `#000` absoluto. Por eso el negro sigue siendo negro
y no se pierde el contraste contra el marfil — que es lo que falló las dos
veces anteriores.

El filo va dentro de un `clip()` circular, así que por más que se ajuste el
grosor nunca se derrama fuera del pip.

---

## 4. La mesa — creo que sé qué pasa

Volví a simular, esta vez con el caso que **no había probado**: casi todas
las fichas al mismo extremo. Ahí sí se encadenan varios codos, que es donde
decís que falla.

```
27 fichas al mismo lado, con el sala.js corregido:
  codo 1   #5(257,0)     -> #6(270,41)     sep=0.0
  codo 2   #16(-257,81)  -> #17(-270,122)  sep=0.0
  codos=2   solapes=0
```

Dos codos encadenados, cero huecos, cero solapamientos. Con el archivo
corregido **no falla**.

Y con el original sí falla, exactamente donde decís:

```
ALGORITMO ORIGINAL, doble en la esquina:
  SOLAPE #10 vs #12  ->  13.5 x 13.5 px
  SOLAPE #11 vs #13  ->  13.5 x 13.5 px
```

Eso encaja punto por punto con "la primera cruza bien pero la segunda no":
el primer giro te cayó sin doble en la esquina y el segundo con doble.

**Mi conclusión: `sala.js` no está subido.** Es el archivo donde vive la
corrección, y solo lo mandé en el pack 02. Los packs 03 y 04 traían
`tablero3d.js`, que es otro archivo — si actualizaste solo esos, el layout
sigue siendo el viejo.

Por eso lo vuelvo a mandar acá. Para confirmar sin adivinar, abrí tu
`public/assets/js/sala.js` y buscá esta línea:

```js
const medioAltoAnterior = (cursor.ultimoAlto !== undefined ? cursor.ultimoAlto : TABLERO_TILE_CORTO) / 2;
```

- **Si aparece** → el archivo está bien y el problema es otro; ahí sí
  necesito la captura del segundo giro.
- **Si no aparece** → es el archivo viejo, y con solo reemplazarlo se
  arregla.

---

## 5. Sigue pendiente

Reestructurar `sala.html` (posición de avatares, tamaño de la mesa
respecto a la escenografía, dónde va el marcador). Lo dejo para cuando lo
de arriba esté confirmado funcionando, así no acumulamos cambios sobre
algo que todavía no sabemos si está bien.
