/* =============================================================================
   wow-eras — sistema de diseño
   =============================================================================

   Sustituye a las ~1.300 lineas de <style> que SahtoutCMS repetia pagina por
   pagina. Un solo archivo, cargado desde header.php, para que cambiar el aspecto
   sea cambiar un sitio y no cinco.

   LA IDEA
   -------
   Casi todos los sitios de servidores privados se parecen: paneles azul y oro,
   letras con resplandor, tarjetas. Esto va por otro lado: una CRONICA. Tres
   eras, un personaje. Tipografia con peso, laminas a sangre con su pie, mucho
   aire, y el oro como una linea fina, no como un brillo.

   Nada de text-shadow ni drop-shadow por todas partes: es lo que hace que un
   sitio parezca de 2009.

   Cada era tiene su color, y el color viaja: la barra superior, el filo de una
   lamina y el numero romano usan el mismo. Se pone con la clase .era-i / .era-ii
   / .era-iii en cualquier antecesor.
   ============================================================================= */

:root {
    /* --- tinta y suelo --- */
    --negro:        #0a0b0d;
    --negro-2:      #101216;
    --negro-3:      #16191f;
    --linea:        #262a33;
    --linea-suave:  #1b1f26;

    /* Papel, no blanco. El blanco puro sobre negro cansa y grita. */
    --papel:        #e8e2d5;
    --papel-2:      #b6b0a4;
    --papel-3:      #7d786e;

    /* --- oro, con moderacion --- */
    --oro:          #c9a227;
    --oro-claro:    #e8c552;
    --oro-tenue:    rgba(201, 162, 39, .22);

    /* --- una era, un color --- */
    --era-i:        #4a7ebb;   /* Azeroth      */
    --era-ii:       #6aa84f;   /* Terrallende  */
    --era-iii:      #7fb3d5;   /* Rasganorte   */
    --era:          var(--oro);

    /* --- tipografia --- */
    --display: 'Cinzel', 'Times New Roman', serif;
    --texto:   'Spectral', Georgia, 'Times New Roman', serif;
    --tecnica: ui-monospace, 'Cascadia Mono', Consolas, monospace;

    /* Escala tipografica en una razon de 1.25, redondeada a algo legible. */
    --t-xs:  .75rem;
    --t-sm:  .875rem;
    --t-md:  1rem;
    --t-lg:  1.125rem;
    --t-xl:  1.5rem;
    --t-2xl: 2rem;
    --t-3xl: 2.75rem;
    --t-4xl: 4rem;

    --ancho:  1180px;
    --ancho-texto: 68ch;   /* medida comoda de lectura */
}

.era-i   { --era: var(--era-i); }
.era-ii  { --era: var(--era-ii); }
.era-iii { --era: var(--era-iii); }

/* ============================================================ base ========= */

*, *::before, *::after { box-sizing: border-box; }

body {
    margin: 0;
    background: var(--negro);
    color: var(--papel-2);
    font-family: var(--texto);
    font-size: var(--t-md);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
    font-family: var(--display);
    color: var(--papel);
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: .01em;
    margin: 0 0 .6em;
}

h1 { font-size: clamp(2.25rem, 6vw, var(--t-4xl)); font-weight: 900; }
h2 { font-size: clamp(1.6rem, 3.4vw, var(--t-2xl)); }
h3 { font-size: var(--t-xl); }

p { margin: 0 0 1.1em; max-width: var(--ancho-texto); }

a { color: var(--oro-claro); text-decoration: none; }
a:hover { color: var(--papel); }

strong { color: var(--papel); font-weight: 600; }
em { font-style: italic; }

img { max-width: 100%; height: auto; display: block; }

::selection { background: var(--oro); color: var(--negro); }

/* ========================================================= estructura ====== */

.envoltorio { max-width: var(--ancho); margin: 0 auto; padding: 0 1.5rem; }
.seccion    { padding: clamp(3rem, 8vw, 6rem) 0; }
.seccion + .seccion { border-top: 1px solid var(--linea-suave); }

/* Rotulo pequeno en versalitas: marca de seccion, no un titulo. */
.rotulo {
    font-family: var(--display);
    font-size: var(--t-xs);
    letter-spacing: .32em;
    text-transform: uppercase;
    color: var(--era);
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: .8rem;
}
.rotulo::after {
    content: '';
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, var(--oro-tenue), transparent);
}

.entradilla {
    font-size: var(--t-lg);
    color: var(--papel-2);
    max-width: var(--ancho-texto);
}

/* ============================================== la cinta de las tres eras == */
/* El elemento de identidad del sitio. Aparece en todas las paginas.           */

.cinta {
    display: flex;
    align-items: stretch;
    border: 1px solid var(--linea);
    background: var(--negro-2);
    overflow: hidden;
}

.cinta-paso {
    flex: 1 1 0;
    padding: 1rem 1.25rem;
    border-left: 1px solid var(--linea);
    text-decoration: none;
    display: block;
    position: relative;
    transition: background .25s ease;
}
.cinta-paso:first-child { border-left: 0; }
.cinta-paso::before {
    content: '';
    position: absolute;
    inset: 0 0 auto 0;
    height: 2px;
    background: var(--era);
    opacity: .55;
}
.cinta-paso:hover { background: var(--negro-3); }
.cinta-paso:hover::before { opacity: 1; }

.cinta-num {
    font-family: var(--display);
    font-size: var(--t-xs);
    letter-spacing: .28em;
    color: var(--era);
}
.cinta-nombre {
    font-family: var(--display);
    font-size: var(--t-lg);
    color: var(--papel);
    font-weight: 700;
    margin: .15rem 0 .1rem;
}
.cinta-dato {
    font-size: var(--t-xs);
    color: var(--papel-3);
    letter-spacing: .06em;
    text-transform: uppercase;
}

@media (max-width: 720px) {
    .cinta { flex-direction: column; }
    .cinta-paso { border-left: 0; border-top: 1px solid var(--linea); }
    .cinta-paso:first-child { border-top: 0; }
}

/* ================================================================ laminas == */
/* Imagen a sangre con su pie. Sustituye al carrusel de tarjetas.              */

.lamina {
    position: relative;
    border: 1px solid var(--linea);
    overflow: hidden;
    background: var(--negro-2);
}
.lamina img {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    filter: saturate(.85) contrast(1.05);
    transition: transform .8s cubic-bezier(.2, .7, .3, 1), filter .5s ease;
}
.lamina:hover img { transform: scale(1.03); filter: saturate(1) contrast(1.05); }

.lamina::after {
    content: '';
    position: absolute;
    inset: auto 0 0 0;
    height: 60%;
    background: linear-gradient(transparent, rgba(6, 7, 9, .92));
    pointer-events: none;
}

.lamina-pie {
    position: absolute;
    inset: auto 0 0 0;
    padding: 1.25rem;
    z-index: 1;
}
.lamina-pie .cinta-num { margin-bottom: .2rem; }
.lamina-pie h3 { margin: 0 0 .2rem; }
.lamina-pie p  { margin: 0; font-size: var(--t-sm); color: var(--papel-2); }

.laminas {
    display: grid;
    gap: 1.25rem;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

/* ================================================================= panel === */

.panel {
    border: 1px solid var(--linea);
    background: var(--negro-2);
    padding: clamp(1.25rem, 3vw, 2rem);
}
.panel-borde-era { border-top: 2px solid var(--era); }

/* ================================================================ botones == */

.boton {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    font-family: var(--display);
    font-size: var(--t-sm);
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    padding: .85rem 1.6rem;
    border: 1px solid var(--oro);
    color: var(--oro-claro);
    background: transparent;
    cursor: pointer;
    transition: background .2s ease, color .2s ease;
}
.boton:hover { background: var(--oro); color: var(--negro); }

.boton-solido {
    background: var(--oro);
    color: var(--negro);
    border-color: var(--oro);
}
.boton-solido:hover { background: var(--oro-claro); border-color: var(--oro-claro); color: var(--negro); }

.boton-tenue { border-color: var(--linea); color: var(--papel-2); }
.boton-tenue:hover { background: var(--negro-3); color: var(--papel); border-color: var(--papel-3); }

/* ================================================================= datos === */

.datos { width: 100%; border-collapse: collapse; }
.datos th, .datos td {
    text-align: left;
    padding: .85rem 1rem;
    border-bottom: 1px solid var(--linea-suave);
    vertical-align: top;
}
.datos th {
    font-family: var(--display);
    font-size: var(--t-xs);
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--oro-claro);
    white-space: nowrap;
    width: 32%;
}
.datos td { color: var(--papel-2); font-size: var(--t-sm); }
.datos tr:last-child th, .datos tr:last-child td { border-bottom: 0; }

@media (max-width: 640px) {
    .datos th, .datos td { display: block; width: 100%; }
    .datos th { border-bottom: 0; padding-bottom: .15rem; }
    .datos td { padding-top: 0; }
}

/* ================================================================= listas == */

.marcas { list-style: none; margin: 0; padding: 0; }
.marcas li {
    position: relative;
    padding-left: 1.4rem;
    margin-bottom: .4rem;
    font-size: var(--t-sm);
}
.marcas li::before {
    content: '';
    position: absolute;
    left: 0; top: .62em;
    width: 6px; height: 6px;
    background: var(--era);
    transform: rotate(45deg);
}

.rejilla-marcas {
    list-style: none; margin: 0; padding: 0;
    display: grid; gap: .2rem 1.2rem;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
.rejilla-marcas li {
    position: relative; padding-left: 1.1rem;
    font-size: var(--t-sm); color: var(--papel-2); line-height: 1.6;
}
.rejilla-marcas li::before {
    content: '';
    position: absolute; left: 0; top: .62em;
    width: 5px; height: 5px;
    border: 1px solid var(--era);
}

/* ================================================================= estado == */

.punto { display: inline-block; width: 8px; height: 8px; border-radius: 50%; }
.punto-ok    { background: #6aa84f; box-shadow: 0 0 0 3px rgba(106, 168, 79, .18); }
.punto-mal   { background: #c0504d; box-shadow: 0 0 0 3px rgba(192, 80, 77, .18); }

.cifra { font-family: var(--display); font-size: var(--t-2xl); color: var(--papel); line-height: 1; }
.cifra-pie { font-size: var(--t-xs); letter-spacing: .18em; text-transform: uppercase; color: var(--papel-3); }

/* ================================================================== cita === */

.cita {
    border-left: 2px solid var(--oro);
    padding-left: 1.4rem;
    font-size: var(--t-lg);
    color: var(--papel);
    font-style: italic;
    max-width: var(--ancho-texto);
}

/* =============================================== accesibilidad y respeto === */

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .01ms !important;
        transition-duration: .01ms !important;
    }
    .lamina:hover img { transform: none; }
}

:focus-visible {
    outline: 2px solid var(--oro-claro);
    outline-offset: 2px;
}

/* =============================================================================
   LA CABECERA COMUN
   Vive aqui y no en header.php para que el aspecto siga estando en un solo
   sitio. header.php solo pone el marcado y la logica de sesion.
   ============================================================================= */

/* --- el cursor de WoW. Es del CMS y se conserva a peticion expresa. --- */
body { cursor: url('../../img/pointer_wow.gif') 16 16, auto; }
a, button, summary, [role="button"], .boton, .cinta-paso, .lamina {
    cursor: url('../../img/hover_wow.gif') 16 16, pointer;
}

.barra {
    position: fixed;
    inset: 0 0 auto 0;
    z-index: 100;
    background: rgba(10, 11, 13, .78);
    backdrop-filter: blur(14px);
    border-bottom: 1px solid var(--linea-suave);
    transition: background .3s ease, border-color .3s ease;
}
/* En la portada arranca transparente y se opaca al bajar (lo pone el JS). */
.barra-transparente { background: transparent; border-bottom-color: transparent; }

.barra-dentro {
    max-width: 1400px;
    margin: 0 auto;
    padding: .7rem 1.5rem;
    display: flex;
    align-items: center;
    gap: 1.25rem;
}

.barra-logo img { height: 46px; width: auto; }

.menu { display: flex; align-items: center; gap: .25rem; margin-left: auto; }

.menu a {
    font-family: var(--display);
    font-size: var(--t-xs);
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--papel-2);
    padding: .6rem .85rem;
    position: relative;
}
.menu a:hover { color: var(--papel); }
.menu a::after {
    content: '';
    position: absolute;
    left: .85rem; right: .85rem; bottom: .35rem;
    height: 1px;
    background: var(--oro);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .25s ease;
}
.menu a:hover::after, .menu a.activo::after { transform: scaleX(1); }
.menu a.activo { color: var(--oro-claro); }

.barra-acciones { display: flex; align-items: center; gap: .6rem; }

.boton-mini {
    font-family: var(--display);
    font-size: var(--t-xs);
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    padding: .5rem 1rem;
    border: 1px solid var(--oro);
    color: var(--oro-claro);
}
.boton-mini:hover { background: var(--oro); color: var(--negro); }
.boton-mini-solido { background: var(--oro); color: var(--negro); }
.boton-mini-solido:hover { background: var(--oro-claro); color: var(--negro); }

/* --- monedas y ficha de usuario --- */
.moneda {
    display: inline-flex; align-items: center; gap: .35rem;
    font-family: var(--tecnica); font-size: var(--t-xs);
    color: var(--papel-2);
    border: 1px solid var(--linea);
    padding: .3rem .6rem;
}
.moneda i { color: var(--oro); }

.retrato {
    width: 40px; height: 40px; object-fit: cover;
    border: 1px solid var(--oro-tenue);
    transition: border-color .2s ease;
}
.retrato:hover { border-color: var(--oro); }

.desplegable {
    position: absolute; right: 0; top: calc(100% + .6rem);
    width: 260px;
    background: var(--negro-2);
    border: 1px solid var(--linea);
    box-shadow: 0 18px 40px rgba(0, 0, 0, .55);
    z-index: 120;
}
.desplegable-cabeza { padding: 1rem; border-bottom: 1px solid var(--linea-suave); }
.desplegable-nombre { font-family: var(--display); color: var(--oro-claro); font-size: var(--t-sm); font-weight: 700; }
.desplegable-correo { font-size: var(--t-xs); color: var(--papel-3); word-break: break-all; }
.desplegable a {
    display: flex; align-items: center; gap: .7rem;
    padding: .65rem 1rem;
    font-size: var(--t-sm);
    color: var(--papel-2);
    border-bottom: 1px solid var(--linea-suave);
}
.desplegable a:last-child { border-bottom: 0; }
.desplegable a:hover { background: var(--negro-3); color: var(--papel); }
.desplegable a i { color: var(--oro); width: 1.1rem; text-align: center; }

/* --- movil --- */
.menu-boton { display: none; background: none; border: 0; padding: .5rem; margin-left: auto; }
.menu-boton span, .menu-boton span::before, .menu-boton span::after {
    display: block; width: 22px; height: 2px; background: var(--papel); content: '';
}
.menu-boton span::before { transform: translateY(-7px); }
.menu-boton span::after  { transform: translateY(5px); }

@media (max-width: 1000px) {
    .menu-boton { display: block; }
    .menu {
        position: fixed; inset: 0 0 0 auto; width: min(320px, 84vw);
        flex-direction: column; align-items: stretch; gap: 0;
        background: var(--negro-2);
        border-left: 1px solid var(--linea);
        padding: 5rem 0 2rem;
        transform: translateX(100%);
        transition: transform .3s cubic-bezier(.4, 0, .2, 1);
        margin-left: 0;
    }
    .menu.abierto { transform: translateX(0); }
    .menu a { padding: 1rem 1.5rem; border-bottom: 1px solid var(--linea-suave); font-size: var(--t-sm); }
    .menu a::after { display: none; }
}

/* --- el pie --- */
.pie { border-top: 1px solid var(--linea-suave); padding: 2.5rem 0; margin-top: 2rem; }
.pie-dentro {
    max-width: var(--ancho); margin: 0 auto; padding: 0 1.5rem;
    display: flex; justify-content: space-between; align-items: center;
    gap: 1.5rem; flex-wrap: wrap;
}
.pie-marca {
    font-family: var(--display); font-size: var(--t-sm);
    letter-spacing: .18em; text-transform: uppercase; color: var(--papel-3);
}
.pie-enlaces { display: flex; gap: 1.25rem; flex-wrap: wrap; }
.pie-enlaces a { font-size: var(--t-xs); color: var(--papel-3); letter-spacing: .08em; text-transform: uppercase; }
.pie-enlaces a:hover { color: var(--oro-claro); }

/* Deja sitio a la barra fija. La portada lo anula con .sin-hueco. */
body { padding-top: 68px; }
body.sin-hueco { padding-top: 0; }

/* Utilidad heredada del CMS: la usan account, news, shop e index. Se conserva
   para no romperlas al retirar el <style> de header.php. */
.force-wrap { overflow-wrap: anywhere; word-break: break-word; }
