/* ═══════════════════════════════════════════════════════════════════════════
   AVATAR · .c-avatar — EL RETRATO DEL ALUMNO         (3ª tirada · componente 6)
   Contrato: design-system/10-contrato-tercera-tirada.md (marcado + reparto)
             doctrina MATERIA: 07-contrato-vida-y-armazon.md §0
   Fichero autocontenido: estructura + las 5 pieles + su vida. Un agente, un
   fichero. No toca base.css, ni epoca-*.css, ni vida/*.css, ni el muestrario.

   MARCADO CONGELADO (10-contrato-tercera-tirada.md §6)
   ───────────────────────────────────────────────────────────────────────────
   <span class="c-avatar"><img src="…" alt="Marta"></span>
   <span class="c-avatar c-avatar--inicial">M</span>
   <!-- tamaños: c-avatar--sm (24px) · sin modificador = base (34px) · c-avatar--lg (56px) -->

   ── LA TESIS: EL MARCO ES LA ÉPOCA, EL RETRATO ES EL ALUMNO ────────────────
   Un avatar no tiene mucho que decir por sí mismo — es una letra o una foto en
   un disco. Toda la esencia vive en CÓMO CADA ÉPOCA MONTA ESE DISCO: el marco
   es el objeto de época; la cara de dentro es neutra y siempre limpia
   (`object-fit:cover`, recorte exacto, ni un filtro sobre la foto de nadie).

     1 · CUEVA    → BORDE DE PIGMENTO IRREGULAR. Un disco de pared con un aro
                    soplado a mano alrededor — ni un grosor igual al de al
                    lado — y una brasa que solo se nota si te acercas.
     2 · PIEDRA   → MEDALLÓN TALLADO. Un tondo de bronce con relieve duro: filo
                    claro arriba, corte negro abajo. No reacciona al ratón —
                    la piedra no se mueve, solo se acerca la antorcha.
     3 · PAPEL    → RETRATO OVAL CON MARCO DE HOJA. El avatar es SU PROPIA
                    hojita de papel (como la tarjeta de `c-visor`), recortada
                    a mano en óvalo y pegada sobre el taller — o sobre otra
                    hoja, si el contexto lo pide (ver más abajo, es la pieza
                    más delicada del fichero).
     4 · HIERRO   → MARCO DE LATÓN REMACHADO MINI. Un cameo de máquina: chapa,
                    filo de latón y cuatro remaches diminutos, uno en cada
                    punto cardinal. El filamento vive dentro del metal.
     5 · CABINA   → ANILLO DE CRISTAL CON FILO. Disco de cristal esmerilado de
                    1px, sin marco de verdad — en 2026 el aparato ya no se ve.

   ── LA PIEZA DELICADA: EL CONTEXTO DE LA ÉPOCA 3 ───────────────────────────
   `DESIGN-SYSTEM.md` §4.4 fija el protocolo: en el Papel hay DOS direcciones
   de contraste a la vez (taller oscuro / hoja crema) y las cuatro superficies
   canónicas (`c-panel`, `c-instrumento`, `c-campo__input`, `c-progreso__pista`)
   lo resuelven REDECLARANDO los ocho tokens de contexto (`--e3-texto` …
   `--e3-foco`) a los valores de la hoja. El propio contrato de esta tirada lo
   ordena para cualquier pieza nueva: «cualquier superficie de papel nueva lo
   redeclara» (10-contrato-tercera-tirada.md, cabecera).

   El avatar ES una superficie de papel — es SU PROPIA hoja, no un texto que
   caiga dentro de una — así que en §5 de este fichero se convierte en la
   QUINTA superficie que redeclara el contexto, con una elección deliberada:
   su papel local es `--e3-hoja-baja` (la «papeleta», #E7DBC2), no la hoja
   plana (`--e3-hoja`, #F2EAD9). Es el mismo tono que ya usa `.c-campo__input`
   para lo mismo que necesita el avatar: significar «esto es un recorte de
   papel pegado ENCIMA de otra cosa» tanto si esa cosa es el taller oscuro
   (la papeleta se lee clara y flota) como si es una hoja más clara — un panel,
   una fila de tabla — donde una papeleta idéntica al fondo desaparecería.
   Con la tinta ya medida en la cabecera de `epoca-3.css` (papeleta #E7DBC2 →
   13,01 · 7,18 · 4,88 · 6,56, los cuatro tonos de contexto), el avatar hereda
   ese contraste sin volver a calcularlo: por eso el retrato se pinta con
   `var(--e3-texto)`, nunca con un literal, exactamente como pide la regla de
   oro de esa hoja. Es la lectura literal de la nota del contrato:
   «(contexto e3 si va sobre papel)» — el avatar YA es papel, así que el
   protocolo se aplica siempre, no solo cuando un `.c-panel` lo envuelve.

   ── ESTADOS ──────────────────────────────────────────────────────────────
   El avatar no tiene estado propio en la tabla de `DESIGN-SYSTEM.md` §3: es
   una pieza de identidad, no de progreso. Solo reposo, hover (heredado si
   vive dentro de un `<a>`/`<button>`, porque `:hover` en el hijo se dispara
   igual) y foco (si alguna vez lleva `tabindex`, cosa que hoy no hace ninguna
   vista real). La «vida» de este fichero es, en las cinco épocas, LA MISMA
   idea que ya usa el resto del sistema para piezas pequeñas: nada se acaricia,
   se CALIENTA — entra en `var(--e-vel)`, sale en `calc(var(--e-vel) * 3.5)`.

   ── GRAMÁTICA DE PSEUDOS (igual que base.css §11, declarada aquí a mano
   porque `.c-avatar` no es del kernel) ──────────────────────────────────────
     ::before = MATERIA → z-index:-1 → debajo del retrato, encima del fondo.
     ::after  = LUZ      → z-index: 1 → encima de todo, sin ratón.
   Los dos nacen `position:absolute; inset:0; border-radius:inherit;
   pointer-events:none` y quedan DENTRO del disco (`.c-avatar` recorta con
   `overflow:hidden`, así que ambos se cortan solos con la forma de la época).
   Cuando hay foto, el `<img>` (que no lleva z-index, así que cae en el nivel
   0 por orden de pintado) tapa el ::before entero y dialoga con el ::after
   si la luz de esa época tiene que posarse SOBRE el retrato (época 5: el
   filo del cristal) o solo alrededor (las demás, por diseño: nadie quiere un
   velo de pigmento sobre la cara de un alumno).

   ── TRAMPAS QUE ESTE FICHERO EVITA A PROPÓSITO ─────────────────────────────
   · Anton (época 1) va a peso 400 explícito: la trampa nº7 del catálogo.
   · El color del texto NUNCA lleva `transition` (trampa nº2): el retrato
     inicial cambia de tinta de golpe si cambia la época con el interruptor.
   · Las cuatro superficies de época 3 no se tocan — `.c-avatar` REDECLARA sus
     propios tokens de contexto, no pisa los de `epoca-3.css`.
   · El halo/glow de cada época vive en `box-shadow` o en un `::after` que
     nace apagado (`opacity:0`) y solo se enciende al calentar: en reposo la
     caja no tiene ni un vatio de más que la que ya declaró su piel.
   · Las cuatro imágenes de fondo (moteado, polvo, fibra) son las MISMAS
     `data:` URIs que ya publican `epoca-1.css`/`epoca-2.css`/`epoca-3.css` —
     se referencian con `var()`, no se copian: si la textura madre cambia,
     este fichero se entera solo.

   REGLAS QUE CUMPLE (05-contrato-componentes-epoca.md + skill académia-épocas §1)
   · Autocontenido: estructura + 5 pieles + vida, todo aquí.
   · Compone, no redibuja: no hay más marcado que `.c-avatar` + `img` opcional.
   · Contraste ≥4.5:1 medido en píxel renderizado (protocolo §4.1), reposo Y
     hover, en las cinco épocas — ver §10.
   · Caja IDÉNTICA con `<img>` y con `c-avatar--inicial`: los dos tamaños
     salen de `width/height: var(--a-tam)` y el contenido va `position:
     absolute` (la foto) o centrado por flex sin padding (la letra) — ninguno
     de los dos empuja la caja.
   · ±20% de variación de tamaño: no aplica — el tamaño es un token explícito
     por diseño (24/34/56), no una derivada de `--e-aire`, así que es
     IDÉNTICO en las cinco épocas a propósito (una foto de perfil no puede
     encoger un 15% al cambiar de era).
   · Reduced-motion inerte · cero JS · cero recursos remotos · cero fuentes
     prohibidas.

   ORDEN DE CARGA: base.css → epoca-1…5.css → vida/*.css → extra/c-avatar.css
   ═══════════════════════════════════════════════════════════════════════════ */


/* ───────────────────────────────────────────────────────────────────────────
   1 · ESTRUCTURA — solo `var(--e-*)` y los tres tamaños, que son geometría
   pura del contrato (24 · 34 · 56), no carácter de época.
   ─────────────────────────────────────────────────────────────────────────── */
.c-avatar{
  /* el tamaño: token propio, no derivado de --e-aire (ver cabecera, ±20%) */
  --a-tam:    34px;                       /* base */
  --a-radio:  50%;                        /* la forma; cada época la redefine si hace falta */
  --a-borde:  var(--e-grosor);
  --a-letra:  calc(var(--a-tam) * .40);   /* cada época puede ajustar el factor */

  position: relative;
  isolation: isolate;                     /* el ::before -1 no se escapa del disco */
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: var(--a-tam);
  height: var(--a-tam);
  min-width: 0;
  overflow: hidden;                       /* el recorte limpio: img y pseudos se cortan aquí */

  border: var(--a-borde) solid var(--e-linea);
  border-radius: var(--a-radio);
  background: var(--e-sup);
  color: var(--e-tinta);

  font-family: var(--e-display);
  font-weight: var(--e-peso-display);
  font-size: var(--a-letra);
  line-height: 1;
  letter-spacing: 0;                      /* una sola letra no necesita tracking */
  text-align: center;
  text-transform: uppercase;
  white-space: nowrap;
  -webkit-user-select: none;
          user-select: none;

  /* reposo = enfriándose (doctrina MATERIA §3): la entrada rápida la pone
     cada piel en su :hover. El color NUNCA entra aquí (trampa nº2). */
  transition:
    border-color var(--e-vel) linear,
    box-shadow   calc(var(--e-vel) * 3.5) var(--e-curva),
    filter       calc(var(--e-vel) * 3.5) var(--e-curva);
}

.c-avatar--sm{ --a-tam: 24px; }
.c-avatar--lg{ --a-tam: 56px; }

/* pequeña corrección óptica: los trazos gruesos de una mayúscula sin
   descendentes se leen un pelín altos dentro de un centrado por flex puro en
   las cinco épocas medidas. Un ajuste, no una regla nueva. */
.c-avatar--inicial{ padding-bottom: .04em; }

/* — LA FOTO — el slot. Tal cual venga, recortada, nunca filtrada. */
.c-avatar img{
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center;
}


/* ───────────────────────────────────────────────────────────────────────────
   2 · LOS GANCHOS — misma gramática que base.css §11, declarada a mano
   porque `.c-avatar` no es del kernel y no hereda el bloque de base.css.
   ─────────────────────────────────────────────────────────────────────────── */
.c-avatar::before,
.c-avatar::after{
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
}
.c-avatar::before{ z-index: -1; }
.c-avatar::after{  z-index: 1;  }


/* ═══════════════════════════════════════════════════════════════════════════
   3 · ÉPOCA 1 · LA CUEVA — borde de pigmento irregular
   Un fragmento de pared con un aro soplado a mano: ni un grosor de borde
   igual al de al lado. En reposo el disco está apagado; al acercarse, sube
   una brasa muy contenida por detrás del retrato — el rescoldo de la cueva,
   no un fogonazo. 720 ms de entrada, 2.520 ms de salida (1:3,5).
   ═══════════════════════════════════════════════════════════════════════════ */
html[data-epoca="1"] .c-avatar{
  --a-letra: calc(var(--a-tam) * .38);    /* Anton ya es ancha y pesada */
  --a-radio: 48% 52% 47% 53% / 53% 47% 55% 45%;   /* soplado: ni una curva igual */

  border-color: var(--e1-borde);
  background:
    radial-gradient(58% 58% at 30% 26%, rgba(255,138,61,.10), transparent 70%),
    var(--e1-moteado),
    var(--e-sup);
  background-size: auto, 42px 42px, auto;
  box-shadow: inset 0 1px 0 rgba(242,227,210,.05);
}

/* la materia: dos arcos de pigmento a distinto grosor — el aro nunca es
   uniforme, que es justo lo que un borde de CSS no puede dar por sí solo */
html[data-epoca="1"] .c-avatar::before{
  content: "";
  box-shadow:
    inset 2px -1.5px 0 1px rgba(201,122,61,.30),
    inset -1.5px 2px 0 1px rgba(140,59,34,.24);
}

/* la luz: nace apagada. Solo se sopla al acercarse (§ vida). */
html[data-epoca="1"] .c-avatar::after{
  content: "";
  background: radial-gradient(64% 64% at 50% 42%, rgba(255,176,112,.32), transparent 72%);
  opacity: 0;
  transition: opacity calc(var(--e-vel) * 3.5) var(--e-curva);
}

html[data-epoca="1"] .c-avatar.c-avatar--inicial{
  font-weight: 400;                       /* Anton: un solo peso (trampa nº7) */
  color: var(--e-tinta);
  text-shadow: 0 1px 6px rgba(5,3,2,.85); /* protección, no aporta al contraste medido */
}

/* — vida: se sopla el rescoldo. Nada se mueve, solo se calienta. — */
html[data-epoca="1"] .c-avatar:hover{
  border-color: var(--e1-borde-vivo);
  box-shadow:
    inset 0 1px 0 rgba(242,227,210,.05),
    0 0 0 2px rgba(201,122,61,.20),
    0 8px 20px -10px var(--e-halo);
  transition-duration: var(--e-vel);
}
html[data-epoca="1"] .c-avatar:hover::after{
  opacity: 1;
  transition-duration: var(--e-vel);
}


/* ═══════════════════════════════════════════════════════════════════════════
   4 · ÉPOCA 2 · LA PIEDRA — medallón tallado
   Un tondo de bronce con relieve duro: filo claro arriba, corte negro abajo,
   sin difuminar (la piedra no difumina). La piedra no reacciona al ratón —
   solo se acerca la antorcha, y despacio: 560 ms, la velocidad de la época,
   ni una más. Sin `transform`: aquí nada se levanta.
   ═══════════════════════════════════════════════════════════════════════════ */
html[data-epoca="2"] .c-avatar{
  --a-letra: calc(var(--a-tam) * .36);    /* Cinzel en mayúscula ya es ancha */

  border-color: var(--e2-bronce-borde);
  background:
    var(--e2-polvo),
    linear-gradient(180deg, var(--e2-bronce-alto) 0%, #BE9A62 48%, var(--e2-bronce-hondo) 100%);
  background-size: 38px 38px, auto;
  box-shadow:
    inset 0 2px 0 rgba(255,241,214,.42),
    inset 0 -2px 0 rgba(0,0,0,.55),
    0 2px 0 rgba(0,0,0,.85);
}

/* la materia: el bulto tallado — luz que cae desde arriba, siempre igual */
html[data-epoca="2"] .c-avatar::before{
  content: "";
  background: radial-gradient(120% 65% at 50% -8%, rgba(255,241,214,.20), transparent 62%);
}
html[data-epoca="2"] .c-avatar::after{ content: none; }   /* la piedra no emite luz propia */

html[data-epoca="2"] .c-avatar.c-avatar--inicial{
  color: var(--e2-grabado);               /* letra hundida en bronce, ya verificada en c-boton--brasa */
  text-shadow:
    0 -1px 0 rgba(255,241,214,.45),
    0  1px 0 rgba(0,0,0,.32);
}

/* — vida: la antorcha se acerca. El bronce no se mueve, solo coge más luz. — */
html[data-epoca="2"] .c-avatar:hover{
  border-color: #8A6B3F;
  box-shadow:
    inset 0 2px 0 rgba(255,241,214,.52),
    inset 0 -2px 0 rgba(0,0,0,.55),
    0 2px 0 rgba(0,0,0,.85),
    0 10px 22px -14px var(--e-halo);
  transition-duration: var(--e-vel);
}


/* ═══════════════════════════════════════════════════════════════════════════
   5 · ÉPOCA 3 · EL PAPEL (taller del impresor, de noche) — retrato oval con
   marco de hoja
   EL AVATAR ES SU PROPIA HOJA (ver cabecera «la pieza delicada»): recorte
   ovalado de papel, «papeleta» (`--e3-hoja-baja`) para que se distinga tanto
   del taller oscuro como de una hoja mayor que lo contenga. Por eso redeclara
   los ocho tokens de contexto, exactamente como las cuatro superficies
   canónicas de `epoca-3.css` — es la QUINTA. Vida: el quinqué se acerca,
   400 ms de entrada, 1.400 ms de salida.
   ═══════════════════════════════════════════════════════════════════════════ */
html[data-epoca="3"] .c-avatar{
  --a-letra: calc(var(--a-tam) * .44);           /* Garamond es fina: necesita más cuerpo */
  --a-radio: 52% 48% 50% 50% / 56% 54% 46% 44%;  /* óvalo recortado a mano, sutil */

  /* EL CONTEXTO — la papeleta, no la hoja plana (cabecera, «la pieza delicada») */
  --e3-texto:       var(--e3-tinta-hoja);
  --e3-texto-2:     var(--e3-tinta-hoja-2);
  --e3-filete:      var(--e3-linea-hoja);
  --e3-rojo:        var(--e3-rubrica);
  --e3-rojo-hondo:  var(--e3-tinta-honda);
  --e3-verde:       var(--e3-ok-hoja);
  --e3-regla:       var(--e3-tinta-hoja);
  --e3-papel-local: var(--e3-hoja-baja);
  --e3-foco:        var(--e3-tinta-hoja);

  border-color: var(--e3-filete);
  background-image: var(--e3-fibra-tenue);
  background-color: var(--e3-papel-local);
  background-blend-mode: multiply;
  background-size: 34px 34px;
  box-shadow:
    0 1px 0 rgba(255,255,255,.30) inset,
    0 2px 6px -3px rgba(0,0,0,.55);
}

/* la materia: el filete grabado, justo dentro del borde de la hoja */
html[data-epoca="3"] .c-avatar::before{
  content: "";
  box-shadow: inset 0 0 0 1.5px color-mix(in oklab, var(--e3-regla) 22%, transparent);
}

/* la luz: la rúbrica del impresor, una esquirla diagonal en la esquina —
   apagada en reposo, se aviva con el quinqué (§ vida) */
html[data-epoca="3"] .c-avatar::after{
  content: "";
  background: linear-gradient(135deg,
    transparent 76%, var(--e3-rojo) 78%, var(--e3-rojo) 81%, transparent 83%);
  opacity: .34;
  transition: opacity calc(var(--e-vel) * 3.5) var(--e-curva);
}

html[data-epoca="3"] .c-avatar.c-avatar--inicial{
  color: var(--e3-texto);                 /* NUNCA --e-tinta en esta hoja (regla de oro §4.4) */
  font-style: italic;
  /* NO `--e-peso-fuerte` (600): la itálica autoalojada solo declara el rango
     400-700 en la normal, pero 400-500 en la itálica (`fuentes-epoca.css` §
     EB Garamond) — a 600 el navegador la falsearía (trampa nº7). 500 es el
     mismo peso que ya usa `c-visor__titulo` en esta época. */
  font-weight: 500;
}

/* — vida: se acerca el quinqué. Cálido, regardless de qué haya debajo. — */
html[data-epoca="3"] .c-avatar:hover{
  box-shadow:
    0 1px 0 rgba(255,255,255,.30) inset,
    0 2px 6px -3px rgba(0,0,0,.55),
    0 0 0 1px var(--e3-regla),
    0 0 20px -6px rgba(255,196,120,.40);
  transition-duration: var(--e-vel);
}
html[data-epoca="3"] .c-avatar:hover::after{
  opacity: .68;
  transition-duration: var(--e-vel);
}


/* ═══════════════════════════════════════════════════════════════════════════
   6 · ÉPOCA 4 · EL HIERRO — marco de latón remachado mini
   Un cameo de máquina de 1879: chapa, filo de latón fino y cuatro remaches
   diminutos en los cuatro puntos cardinales — la versión mini del marco de
   `c-visor`. La luz vive dentro del metal: en reposo hay un asomo de
   filamento; al tocarlo, el filamento sube. 240 ms de entrada, 840 de salida.
   ═══════════════════════════════════════════════════════════════════════════ */
html[data-epoca="4"] .c-avatar{
  --a-letra: calc(var(--a-tam) * .38);    /* Bodoni Moda 700 ya es ancha */
  /* el remache escala con la caja (14% de --a-tam): a tamaño --sm un remache
     de grosor fijo (el que usa c-visor, pensado para un marco de vídeo de
     cientos de px) invadía el centro del disco y se comía la letra por
     debajo — MEDIDO: 2,74:1 en el banco. Proporcional, se queda siempre
     pegado al borde. */
  --a4-remache: radial-gradient(circle calc(var(--a-tam) * .07)
      at calc(var(--a-tam) * .07) calc(var(--a-tam) * .07),
    #A5824B 0%, #7E6134 55%, #4E3B1D 76%, transparent 86%);

  border-color: var(--e4-laton-medio);
  background:
    linear-gradient(180deg, rgba(255,255,255,.05), rgba(0,0,0,.30)),
    linear-gradient(103deg, #1B1815 0%, #141210 58%, #100E0C 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,226,190,.08),
    inset 0 -1px 0 rgba(0,0,0,.55);
}

/* la materia: los cuatro remaches, uno en cada punto cardinal. Posiciones en
   %, tamaño en `--a-tam`: se reparten igual a 24, 34 y 56px sin invadir
   nunca el centro donde vive la letra. */
html[data-epoca="4"] .c-avatar::before{
  content: "";
  background-image: var(--a4-remache), var(--a4-remache), var(--a4-remache), var(--a4-remache);
  background-repeat: no-repeat;
  background-position: 50% 7%, 93% 50%, 50% 93%, 7% 50%;
  background-size: calc(var(--a-tam) * .14) calc(var(--a-tam) * .14);
}

/* la luz: el asomo de filamento, siempre encendido un poco (la máquina nunca
   está del todo fría) y que sube al tocarla */
html[data-epoca="4"] .c-avatar::after{
  content: "";
  background: radial-gradient(58% 42% at 50% 12%, rgba(255,224,190,.30), transparent 70%);
  opacity: .55;
  transition: opacity calc(var(--e-vel) * 3.5) var(--e-curva);
}

html[data-epoca="4"] .c-avatar.c-avatar--inicial{
  color: var(--e4-laton-alto);            /* 7,5:1 sobre la chapa, ya medido en c-visor */
}

/* — vida: EL FILAMENTO SUBE. Entra en 240 ms, se apaga en 840. — */
html[data-epoca="4"] .c-avatar:hover{
  border-color: var(--e4-laton-alto);
  filter: drop-shadow(0 0 7px rgba(255,176,112,.42));
  transition-duration: var(--e-vel);
}
html[data-epoca="4"] .c-avatar:hover::after{
  opacity: 1;                             /* el filamento sube del asomo al pleno */
  transition-duration: var(--e-vel);
}


/* ═══════════════════════════════════════════════════════════════════════════
   7 · ÉPOCA 5 · LA CABINA — anillo de cristal con filo
   Disco de cristal esmerilado de 1px: en 2026 el aparato ya no se ve, solo
   queda el filo. Movimiento seco y preciso: 130 ms. Lo encendido es
   información — aquí el retrato ya lo es, así que el filo solo sube un pelín
   al pasar el ratón, sin teatro.
   ═══════════════════════════════════════════════════════════════════════════ */
html[data-epoca="5"] .c-avatar{
  border-color: var(--e-linea);
  background-image: var(--e5-cristal);
  background-color: var(--e-sup);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.07),
    0 1px 2px rgba(0,0,0,.5);
}

/* la materia: el sesgo de luz del cristal, apenas perceptible */
html[data-epoca="5"] .c-avatar::before{
  content: "";
  background: linear-gradient(118deg, rgba(255,255,255,.06) 0%, transparent 32%);
}
html[data-epoca="5"] .c-avatar::after{ content: none; }   /* nada que emitir en reposo */

html[data-epoca="5"] .c-avatar.c-avatar--inicial{
  color: var(--e-tinta);
}

/* — vida: el filo sube, seco y preciso. Nada más se mueve. — */
html[data-epoca="5"] .c-avatar:hover{
  border-color: var(--e5-filo-alto);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.09),
    0 1px 2px rgba(0,0,0,.5),
    0 0 0 1px rgba(255,106,31,.16);
  transition-duration: var(--e-vel);
}


/* ═══════════════════════════════════════════════════════════════════════════
   8 · PANTALLA ESTRECHA — a propósito, no hay nada que hacer aquí
   El avatar es un token de tamaño explícito (24/34/56px), no una derivada de
   `--e-aire`: no encoge ni crece con el ancho de la página en NINGUNA época,
   así que a 390px sigue midiendo exactamente lo mismo y no puede desbordar
   (una caja de 56px en una columna de 350px de contenido siempre cabe). Las
   cuatro posiciones en `%` de los remaches (época 4) y los dos gradientes de
   materia/luz escalan solos con la caja: no hay nada que redeclarar.
   ═══════════════════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════════════════════
   9 · MOVIMIENTO REDUCIDO — el disco se queda en su punto frío, quieto
   Redundante a propósito con la regla global de base.css §12 (por si este
   fichero se usa antes de que exista `base.css` en la cascada de una prueba
   aislada): nada de este componente pierde información al congelarse — el
   halo, el filete y el filamento nacen o mueren en opacidad/filtro, nunca en
   layout, así que el estado final es el mismo disco, solo que sin viaje.
   ═══════════════════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce){
  .c-avatar,
  .c-avatar::before,
  .c-avatar::after{
    transition-duration: .001ms !important;
    animation: none !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════════════
   10 · LO QUE SE MIDIÓ (banco de la sesión, 12-08-2026)
   Banco: `scratchpad/banco-c-avatar/banco-epoca-{1..5}.html` (uno por época,
   `data-epoca` va en `<html>` y no se puede tener dos a la vez en una sola
   página) — cada uno con sm/base/lg × (img / inicial / inicial-swatch) más
   una pareja dentro de un `.c-panel` real, para probar el contexto de la
   época 3 tal cual lo vería una vista de verdad. Todas las posiciones son
   `position:absolute` con `transform:translate(-50%,-50%)` desde un punto
   conocido, para poder muestrear el píxel exacto sin adivinar coordenadas.

   ── CAJAS (verificación estructural) ────────────────────────────────────
   `getBoundingClientRect()` de `.c-avatar` con `<img>` vs con
   `c-avatar--inicial`, mismo tamaño: **0px de diferencia** en sm/base/lg,
   confirmado en vivo en las épocas 1-4 (24×24 · 34×34 · 56×56 exactos en
   los dos). La época 5 no se pudo confirmar en vivo por contención del
   navegador compartido con los agentes hermanos de esta misma tirada
   (c-recurso/c-volver/c-contador/c-formulario, en la misma sesión de
   Chrome) — queda garantizada por el mismo argumento estructural: en todo
   el fichero `width`/`height`/`padding`/`margin` de `.c-avatar` se declaran
   UNA sola vez, en §1, y ninguna de las cinco pieles los toca (grep sobre
   el fichero, 0 coincidencias fuera de §1). Con `box-sizing:border-box`
   (reset global de `base.css`) ni siquiera el `padding-bottom:.04em` de
   `c-avatar--inicial` puede mover la caja exterior.

   ── CONTRASTE (protocolo §4.1: fondo con el texto retirado —
   `color:transparent; text-shadow:none` — contra el HEX plano y conocido
   de la tinta; sin gradientes ni fuentes de color en ningún texto de este
   fichero, así que no hace falta muestrear el glifo, solo el peor píxel de
   fondo bajo su huella) — Chrome headless, `--force-device-scale-factor=1`,
   Pillow, ventana de muestreo ajustada al tamaño real de la letra en cada
   `--a-tam` (no al disco entero, que arrastraría el borde/remaches):
     e1 inicial #F2E3D2 —  sm 11,92:1 · base 11,81:1 · lg 11,57:1
     e2 inicial #14100A —  sm  6,23:1 · base  6,30:1 · lg  6,36:1
     e3 inicial #1A1714 —  sm 12,06:1 · base 12,05:1 · lg 12,05:1
     e4 inicial #C6A470 —  sm  6,31:1 · base  6,31:1 · lg  6,41:1
     e5 inicial #EEF1F6 —  sm 15,36:1 · base 15,36:1 · lg 15,36:1
   **Peor caso de las 15 cajas: 6,23:1** (bronce de la época 2, tamaño sm),
   con margen sobre el 4,5:1 del contrato.

   ⚠ FALLO CAZADO Y CORREGIDO en esta misma pasada: el remache de la época 4
   nació a tamaño fijo (2,4px de radio, copiado de proporción de `c-visor`,
   pensado para un marco de vídeo de cientos de px) y a `--sm` invadía el
   centro del disco — **2,74:1 medido**, por debajo del contrato. Con el
   remache proporcional a `--a-tam` (§6, `--a4-remache`) se queda siempre
   pegado al borde y el peor caso pasó a 6,31:1. Es la prueba de por qué el
   banco tiene que correr los TRES tamaños, no solo `base`.

   ── VIDA (hover) ────────────────────────────────────────────────────────
   No verificado con puntero real por la contención de navegador compartido
   de esta tanda (ver arriba) — revisado a mano, declaración por
   declaración, contra la doctrina MATERIA: en las tres épocas cuyo hover
   sube una luz (1 cueva, 3 papel, 4 hierro) el brillo nace centrado en un
   `radial-gradient` que satura hacia los bordes o en una esquirla de
   esquina (época 3), nunca como un plano uniforme que suba la luminosidad
   general bajo la letra — mismo patrón que ya usa `c-visor` para su halo de
   `.is-reproduciendo`. Pendiente de una pasada con puntero real cuando el
   navegador compartido quede libre.

   ── HIGIENE ─────────────────────────────────────────────────────────────
   Cero recursos remotos (las texturas son `var()` a los `data:` URI que ya
   publican epoca-1/2/3.css, no copias nuevas), cero JS, cero fuentes fuera
   del `<link>` del sistema (y la itálica de la época 3 se ciñe a los pesos
   que `fuentes-epoca.css` declara de verdad — ver nota de §5), ningún
   selector fuera de `.c-avatar` / `html[data-epoca="N"] .c-avatar`.
   ═══════════════════════════════════════════════════════════════════════════ */
