/* ludoteca.dev — estética de terminal. Sin fuentes externas: monoespaciada del sistema. */

:root {
    --bg: #0b0e11;
    --bg-2: #11161c;
    --linea: #222a33;
    --texto: #c9d1d9;
    --tenue: #6b7682;
    --acento: #7ee787;
    --enlace: #79c0ff;
    --aviso: #e3b341;
    --error: #ff7b72;
    --j-clave: #79c0ff;
    --j-texto: #a5d6ff;
    --j-num: #ffa657;
    --j-lit: #d2a8ff;
    --sel: rgba(126, 231, 135, .25);
    --mono: ui-monospace, "Cascadia Mono", "SF Mono", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;
    color-scheme: dark;
}

/* Claro: por preferencia del sistema (salvo que se eligiera oscuro a mano) o elegido a mano
   (data-tema en <html>, lo pone ludoteca.js; ver el interruptor de la cabecera). */
@media (prefers-color-scheme: light) {
    :root:not([data-tema="oscuro"]) {
        --bg: #f6f8fa;
        --bg-2: #ffffff;
        --linea: #d0d7de;
        --texto: #1f2328;
        --tenue: #6e7781;
        --acento: #1a7f37;
        --enlace: #0969da;
        --aviso: #9a6700;
        --error: #cf222e;
        --j-clave: #0550ae;
        --j-texto: #0a3069;
        --j-num: #953800;
        --j-lit: #8250df;
        --sel: rgba(26, 127, 55, .18);
        color-scheme: light;
    }
}
:root[data-tema="claro"] {
    --bg: #f6f8fa;
    --bg-2: #ffffff;
    --linea: #d0d7de;
    --texto: #1f2328;
    --tenue: #6e7781;
    --acento: #1a7f37;
    --enlace: #0969da;
    --aviso: #9a6700;
    --error: #cf222e;
    --j-clave: #0550ae;
    --j-texto: #0a3069;
    --j-num: #953800;
    --j-lit: #8250df;
    --sel: rgba(26, 127, 55, .18);
    color-scheme: light;
}

/* Interruptor de tema: [ oscuro | claro | auto ]. Solo con JS (sin JS manda el sistema). */
.tema { color: var(--tenue); white-space: nowrap; }
.tema button {
    padding: 0 .3ch;
    border: 0;
    background: none;
    color: var(--tenue);
    font: inherit;
    cursor: pointer;
}
.tema button:hover { color: var(--texto); }
.tema button[aria-pressed="true"] { color: var(--acento); }

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

html { -webkit-text-size-adjust: 100%; }

body {
    margin: 0;
    background: var(--bg);
    color: var(--texto);
    font: 15px/1.6 var(--mono);
    font-variant-ligatures: none;
}

::selection { background: var(--sel); }

a { color: var(--enlace); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
a:focus-visible, button:focus-visible, input:focus-visible, summary:focus-visible {
    outline: 1px dashed var(--acento);
    outline-offset: 3px;
}

code, kbd, pre { font-family: var(--mono); font-size: 1em; }
kbd {
    padding: 0 .4em;
    border: 1px solid var(--linea);
    border-bottom-width: 2px;
    border-radius: 3px;
    color: var(--texto);
}

.acento { color: var(--acento); }
.tenue { color: var(--tenue); }

/* ---- estructura ---- */

.cabecera, .principal, .pie {
    max-width: 920px;
    margin: 0 auto;
    padding: 0 16px;
}

.cabecera {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px 24px;
    padding-top: 28px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--linea);
}

.logo {
    color: var(--texto);
    font-weight: 700;
    font-size: 1.15em;
    letter-spacing: -.01em;
}
.logo:hover { text-decoration: none; }
.logo-marca {
    color: var(--acento);
    animation: parpadeo 1.1s steps(1) infinite;
}

.nav { display: flex; flex-wrap: wrap; gap: 4px 20px; }
.nav a { color: var(--tenue); }
.nav a:hover { color: var(--acento); text-decoration: none; }

.principal { padding-top: 12px; padding-bottom: 40px; }

.pie {
    padding-top: 20px;
    padding-bottom: 40px;
    border-top: 1px solid var(--linea);
    font-size: .85em;
}
.pie p { margin: 0 0 4px; }

/* ---- bloques de "comando + salida" ---- */

.bloque { margin: 28px 0 0; }

.cmd {
    display: block;
    margin: 0 0 8px;
    color: var(--texto);
    overflow-wrap: anywhere;
}
.ps1 { color: var(--acento); }
.cwd { color: var(--enlace); }

.salida { margin: 0 0 8px; padding-left: 2ch; overflow-wrap: anywhere; }
.lema { margin: 0 0 12px; }
.aviso { color: var(--aviso); }
.error { color: var(--error); }
.ayuda { margin: 8px 0 0; padding-left: 2ch; font-size: .9em; overflow-wrap: anywhere; }
.salida.json, .salida .json { overflow-wrap: normal; }

/* pares clave/valor con relleno de puntos */
.kv {
    display: grid;
    grid-template-columns: 14ch 1fr;
    gap: 2px 1ch;
    margin: 0;
}
.kv-ancho { grid-template-columns: 11ch 1fr; }
.kv dt {
    color: var(--tenue);
    white-space: nowrap;
    overflow: hidden;
}
.kv dt::after { content: " ................................"; color: var(--linea); }
.kv dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }

/* ---- buscador ---- */

.prompt { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 1ch; }
.prompt .cmd { margin: 0; }
.prompt input {
    flex: 1 1 18ch;
    min-width: 0;
    padding: 0;
    border: 0;
    border-bottom: 1px dashed var(--linea);
    border-radius: 0;
    background: transparent;
    color: var(--acento);
    font: inherit;
    caret-color: var(--acento);
    -webkit-appearance: none;
    appearance: none;
}
.prompt input::placeholder { color: var(--tenue); opacity: 1; }
.prompt input:focus { outline: none; border-bottom-color: var(--acento); }
.prompt input::-webkit-search-cancel-button { display: none; }

/* ---- listado tipo ls ---- */

.ls { list-style: none; margin: 0; padding: 0 0 0 2ch; }
.ls li {
    display: grid;
    grid-template-columns: 5ch minmax(0, 1fr) minmax(0, 18ch);
    gap: 2ch;
    padding: 1px 0;
}
.ls li:hover { background: var(--bg-2); }
.ls-titulo { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ls-estudio { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: right; }

/* ---- barras de estadísticas de la portada ---- */

.ls-barras li { grid-template-columns: minmax(0, 22ch) minmax(0, 1fr) 8ch; white-space: nowrap; }
.ls-barras li > a { overflow: hidden; text-overflow: ellipsis; }
.ls-barras .barra { overflow: hidden; letter-spacing: -1px; }
.ls-barras li > span:last-child { text-align: right; }

/* ---- listados por país, tienda y año ---- */

.filtros-ano { display: flex; flex-wrap: wrap; gap: 2px 14px; margin: 10px 0 0; }
.filtros-ano a.actual { color: var(--acento); }
.paginacion { display: flex; flex-wrap: wrap; gap: 4px 2ch; }
.indice-listados {
    list-style: none;
    margin: 0;
    padding: 0 0 0 2ch;
    columns: 3 22ch;
    column-gap: 3ch;
}
.indice-listados li { break-inside: avoid; padding: 1px 0; }

/* ---- ficha ---- */

.ficha {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 28px;
    padding-left: 2ch;
}
.ficha-h { grid-template-columns: 300px minmax(0, 1fr); }
.ficha-sin-portada { grid-template-columns: minmax(0, 1fr); } /* sin portada, los datos ocupan todo el ancho */
.ficha-portada { margin: 0; }
.ficha-portada img {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid var(--linea);
    background: var(--bg-2);
}
.ficha-titulo {
    margin: 0 0 14px;
    font-size: 1.5em;
    line-height: 1.25;
    font-weight: 700;
    color: var(--texto);
}
.ficha-titulo::before { content: "# "; color: var(--acento); }
.ficha-descripcion {
    margin: 16px 0 0;
    padding-top: 14px;
    border-top: 1px dashed var(--linea);
    max-width: 62ch;
}

.tiendas { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.tienda { color: var(--acento); white-space: nowrap; }
.tienda:hover { background: var(--acento); color: var(--bg); text-decoration: none; }

.bandera {
    display: inline-block;
    width: 20px; height: 15px;
    vertical-align: -2px;
    border: 1px solid var(--linea);
    object-fit: cover;
}

/* enlaces a otras bases de datos */
.enlaces-ids { list-style: none; margin: 0; display: flex; flex-wrap: wrap; gap: 4px 18px; }
.enlaces-ids a.destacado { color: var(--acento); }

/* ---- /que-es: presentación visual ---- */
.qe-hero { margin: 8px 0 0; padding: 28px 0 8px; }
.qe-titular { margin: 6px 0 12px; font-size: clamp(1.7em, 4.5vw, 2.6em); line-height: 1.15; letter-spacing: -.01em; color: var(--texto); }
.qe-subtitulo { margin: -4px 0 16px; font-size: clamp(1.05em, 2.4vw, 1.3em); color: var(--acento); }
.qe-lema { max-width: 68ch; margin: 0 0 22px; font-size: 1.05em; }
/* El nexo: tiendas | ficha | bases de datos, unidas por líneas */
.qe-nexo { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; max-width: 760px; margin: 0 0 6px; }
.qe-nexo-lado { list-style: none; margin: 0; padding: 0; border-color: var(--acento); }
.qe-nexo-lado li { position: relative; padding: 3px 0; color: var(--texto); white-space: nowrap; }
.qe-nexo-lado li::after { content: ""; position: absolute; top: 50%; width: 14px; border-top: 1px solid var(--acento); }
/* La barra vertical, a trozos por elemento: así va justo del primero al último. */
.qe-nexo-lado li::before { content: ""; position: absolute; top: 0; bottom: 0; }
.qe-nexo-lado li:first-child::before { top: 50%; }
.qe-nexo-lado li:last-child::before { bottom: 50%; }
.qe-nexo-izq { text-align: right; }
.qe-nexo-izq li { padding-right: 22px; }
.qe-nexo-izq li::after { right: 0; }
.qe-nexo-izq li::before { right: 0; border-right: 1px solid var(--acento); }
.qe-nexo-der li { padding-left: 22px; }
.qe-nexo-der li::after { left: 0; }
.qe-nexo-der li::before { left: 0; border-left: 1px solid var(--acento); }
.qe-nexo-centro { position: relative; margin: 0 26px; padding: 12px 16px; border: 1px solid var(--acento); background: var(--bg-2);
    display: grid; gap: 2px; text-align: center; color: var(--texto); text-decoration: none; }
.qe-nexo-centro:hover { background: var(--sel); }
.qe-nexo-centro::before, .qe-nexo-centro::after { content: ""; position: absolute; top: 50%; width: 26px; border-top: 1px solid var(--acento); }
.qe-nexo-centro::before { right: 100%; }
.qe-nexo-centro::after { left: 100%; }
.qe-nexo-centro b { font-size: 1.3em; color: var(--acento); }
.qe-nexo-centro span:last-child { font-size: .85em; }
.qe-nexo-pie { margin: 0 0 22px; font-size: .85em; }
@media (max-width: 640px) {
    .qe-nexo { grid-template-columns: 1fr; gap: 10px; }
    .qe-nexo-lado { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 10px; border: 0; text-align: center; }
    .qe-nexo-lado li { padding: 2px 8px; border: 1px solid var(--linea); }
    .qe-nexo-lado li::after, .qe-nexo-lado li::before, .qe-nexo-centro::before, .qe-nexo-centro::after { display: none; }
    .qe-nexo-centro { margin: 0 auto; }
}
.qe-cifras { list-style: none; margin: 0 0 22px; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; }
.qe-cifras li { border: 1px solid var(--linea); background: var(--bg-2); padding: 12px 14px; display: grid; gap: 2px; }
.qe-cifras b { font-size: 1.6em; color: var(--acento); font-weight: 600; line-height: 1.1; }
.qe-cifras span { color: var(--tenue); font-size: .85em; }
.qe-buscar { margin-top: 4px; }
.qe-perfiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; }
.qe-tarjeta { border: 1px solid var(--linea); background: var(--bg-2); padding: 16px 18px; display: flex; flex-direction: column; }
.qe-tarjeta:hover { border-color: var(--acento); }
.qe-tarjeta h2 { margin: 0 0 10px; font-size: 1.1em; color: var(--texto); }
.qe-tarjeta ul { margin: 0 0 14px; padding-left: 2ch; flex: 1; }
.qe-tarjeta li { margin: 0 0 7px; color: var(--tenue); }
.qe-tarjeta li b { color: var(--texto); font-weight: 600; }
.qe-tarjeta p { margin: 0; }
.qe-demo { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 14px; }
.qe-demo-caja { border: 1px dashed var(--linea); padding: 14px 16px; min-width: 0; }
.qe-demo-caja h3 { margin: 0 0 10px; font-size: .95em; color: var(--tenue); font-weight: normal; }
.qe-demo-caja h3::before { content: "## "; color: var(--acento); }
.qe-demo-caja h3:not(:first-child) { margin-top: 18px; }
.qe-insignias { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; }
.qe-insignias a { max-width: 100%; }
.qe-insignias img { display: block; max-width: 100%; height: auto; } /* las insignias anchas se encogen en vez de salirse */
.qe-insignias + .tenue { margin: 8px 0 0; font-size: .85em; }
.qe-demo-caja .ludoteca-juego { margin: 0; } /* sin JS: el enlace a la ficha, sin la sangría de blockquote */
.qe-demo-caja iframe { margin: 0 !important; }
.qe-consola { margin: 0; padding: 12px 14px; background: var(--bg); border: 1px solid var(--linea); overflow-x: auto; font-size: .85em; line-height: 1.5; }
.qe-ia { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; align-items: center; }
.qe-ia h2 { margin: 0 0 8px; font-size: 1.25em; color: var(--texto); }
.qe-ia-texto p { margin: 0 0 10px; }
.qe-chat { display: grid; gap: 10px; }
.qe-msg { margin: 0; padding: 10px 14px; border: 1px solid var(--linea); max-width: 46ch; line-height: 1.5; }
.qe-msg-yo { justify-self: end; background: var(--bg-2); border-radius: 12px 12px 2px 12px; }
.qe-msg-ia { justify-self: start; border-color: var(--acento); border-radius: 12px 12px 12px 2px; }
.qe-msg-ia::before { content: "✦ asistente"; display: block; font-size: .75em; color: var(--acento); margin-bottom: 4px; }
.qe-principios { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.qe-principios div { display: grid; gap: 4px; border-left: 2px solid var(--acento); padding-left: 1.5ch; }
.qe-principios span { color: var(--tenue); }
.qe-donar { margin: 20px 0 0; }

/* ---- Ficha: título original (chino, japonés, coreano) bajo el título ---- */
.titulo-original { margin: -6px 0 12px; color: var(--tenue); font-size: 1.05em; font-family: system-ui, sans-serif; }

/* ---- Ficha: tiendas de las que se retiró el juego ---- */
.tiendas-retiradas { display: flex; flex-wrap: wrap; gap: 4px 2.5ch; }
.retirada s { color: var(--tenue); text-decoration-thickness: 1px; }

/* ---- Pie: donar ---- */
.icono-donar { width: 1em; height: 1em; vertical-align: -0.125em; fill: currentColor; }

/* ---- Panel: corregir la URL de un enlace ---- */
details.en-linea { display: inline-block; vertical-align: top; }
details.en-linea > summary { list-style: none; cursor: pointer; }
details.en-linea > summary::-webkit-details-marker { display: none; }
.corregir-url { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.corregir-url input[type="url"] {
    flex: 1 1 40ch; min-width: 0; padding: 2px 6px; border: 1px solid var(--linea);
    background: var(--bg-2); color: var(--texto); font: inherit;
}

/* ---- Diferencias por tienda (ficha) ---- */
.tabla-tiendas { border-collapse: collapse; font-size: inherit; margin: 0 0 6px; width: 100%; }
.tabla-tiendas th { text-align: left; font-weight: normal; color: var(--tenue); border-bottom: 1px dashed var(--linea); padding: 0 2ch 2px 0; }
.tabla-tiendas td { padding: 3px 2ch 3px 0; vertical-align: top; overflow-wrap: anywhere; }
.tabla-tiendas td:first-child { white-space: nowrap; }
@media (max-width: 640px) {
    .tabla-tiendas thead { display: none; }
    .tabla-tiendas tr { display: block; padding: 4px 0; border-bottom: 1px dashed var(--linea); }
    .tabla-tiendas td { display: inline; padding-right: 1.5ch; }
}

/* ---- JSON ---- */

.json {
    margin: 0;
    padding: 14px 16px;
    overflow-x: auto;
    background: var(--bg-2);
    border: 1px solid var(--linea);
    font-size: .88em;
    line-height: 1.55;
    tab-size: 2;
}
details.salida > summary { cursor: pointer; margin-bottom: 8px; }
details.salida > summary:hover { color: var(--texto); }
.j-clave { color: var(--j-clave); }
.j-texto { color: var(--j-texto); }
.j-num { color: var(--j-num); }
.j-lit { color: var(--j-lit); }

.copiar {
    margin-left: 1ch;
    padding: 0 .6ch;
    border: 1px solid var(--linea);
    border-radius: 0;
    background: transparent;
    color: var(--tenue);
    font: inherit;
    font-size: .85em;
    cursor: pointer;
}
.copiar:hover { color: var(--acento); border-color: var(--acento); }
.copiar.ok { color: var(--bg); background: var(--acento); border-color: var(--acento); }

/* ---- terminal interactiva (/terminal) ---- */

.terminal {
    min-height: 60vh;
    padding: 14px 16px;
    background: var(--bg-2);
    border: 1px solid var(--linea);
    cursor: text;
    overflow-wrap: anywhere;
}
.term-l { min-height: 1.6em; white-space: pre-wrap; }
.term-eco { margin-top: 8px; }
.term-h { font-weight: 700; }
.term-desc { display: block; max-width: 70ch; margin-top: 6px; }
.term-fila {
    display: grid;
    grid-template-columns: auto 5ch minmax(0, 1fr) minmax(0, 18ch);
    gap: 1.5ch;
    white-space: normal;
}
.term-fila:hover { background: var(--bg); }
.term-titulo { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.term-estudio { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: right; }
.term-json { margin: 6px 0; font-size: .85em; }
.term-texto { margin: 6px 0; font: inherit; white-space: pre; overflow-x: auto; }
.term-cmd {
    padding: 0;
    border: 0;
    background: none;
    color: var(--enlace);
    font: inherit;
    white-space: pre;
    text-decoration: underline dotted;
    text-underline-offset: 3px;
    cursor: pointer;
}
.term-cmd:hover { color: var(--acento); }
.term-linea { display: flex; align-items: baseline; gap: 1ch; margin-top: 8px; }
.term-ps1 { white-space: nowrap; }
.term-linea input {
    flex: 1;
    min-width: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--texto);
    font: inherit;
    caret-color: var(--acento);
}
.term-linea input:focus { outline: none; }
.terminal.ocupada .term-linea { opacity: .5; }

/* ---- panel /admin ---- */

.ps1-admin { color: var(--error); }
.admin-nav {
    display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 18px;
    margin-top: 20px; padding: 8px 12px;
    border: 1px dashed var(--linea);
}
.admin-nav a { color: var(--tenue); }
.admin-nav a.actual, .salida a.actual { color: var(--acento); }
.en-linea { display: inline; margin: 0; }
.boton {
    padding: 0 .8ch;
    border: 1px solid var(--linea);
    background: transparent;
    color: var(--texto);
    font: inherit; font-size: .85em;
    cursor: pointer;
}
.boton:hover { border-color: var(--texto); }
.boton.ok { color: var(--acento); border-color: var(--acento); }
.boton.ok:hover { background: var(--acento); color: var(--bg); }
.boton.mal { color: var(--error); border-color: var(--error); }
.boton.mal:hover { background: var(--error); color: var(--bg); }
.kv-largo { grid-template-columns: 18ch 1fr; }
.revisar { list-style: none; margin: 0; padding: 0 0 0 2ch; }
.revisar li {
    display: grid; gap: 4px;
    padding: 10px 0;
    border-bottom: 1px dashed var(--linea);
    overflow-wrap: anywhere;
}
.revisar li.oculto { opacity: .7; }
.revisar .acciones { display: flex; flex-wrap: wrap; gap: 8px; }
.etiqueta { color: var(--bg); background: var(--tenue); padding: 0 .6ch; margin-right: 1ch; font-size: .85em; }
.ls-crons li { grid-template-columns: 4ch minmax(0, 20ch) 1fr; }
.ls-crons .ls-detalle { display: block; padding-left: 6ch; font-size: .85em; }
.ls-admin li { grid-template-columns: 5ch minmax(0, 1fr) 10ch 14ch; }
.ls-uso li { grid-template-columns: 6ch minmax(0, 1fr) 16ch; white-space: nowrap; }
.ls-uso li > span:nth-child(2) { overflow: hidden; }
.ls-uso-webs li { grid-template-columns: minmax(0, 24ch) 22ch 8ch minmax(0, 1fr); }
.ls-uso-tabla li { grid-template-columns: 6ch 16ch minmax(0, 1fr) 16ch; white-space: nowrap; }
.ls-uso-tabla li > span:nth-child(3) { overflow: hidden; }
.par { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 3ch; }
.par > div { border-left: 2px solid var(--linea); padding-left: 1.5ch; }
@media (max-width: 640px) { .par { grid-template-columns: 1fr; } }
.campo-latino { padding: 0 .6ch; border: 1px solid var(--linea); background: var(--bg-2); color: var(--texto); font: inherit; max-width: 100%; }
.campo-pais {
    width: 4ch; padding: 0 .4ch; border: 1px solid var(--linea); background: var(--bg-2);
    color: var(--texto); font: inherit; text-transform: uppercase;
}
.formulario { display: grid; gap: 10px; max-width: 420px; }
.formulario label { display: grid; gap: 2px; color: var(--tenue); }
.formulario input {
    padding: 4px 6px; border: 1px solid var(--linea); background: var(--bg-2);
    color: var(--texto); font: inherit;
}
.formulario .boton { justify-self: start; }
.formulario select, .formulario textarea {
    padding: 4px 6px; border: 1px solid var(--linea); background: var(--bg-2);
    color: var(--texto); font: inherit;
}
.aviso-form .formulario { max-width: 560px; margin-top: 8px; }
/* Panel: editar ficha */
.editar-juego { max-width: 760px; margin-top: 8px; }
.formulario label.casilla, .formulario .candado { display: inline-flex; align-items: center; gap: .6ch; }
.formulario .candado { margin-left: 1ch; font-size: .85em; }
.formulario input[type="checkbox"] { padding: 0; accent-color: var(--acento); }
.formulario label > .candado { justify-self: start; }
.trampa { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; } /* campo trampa para robots */
.log { white-space: pre-wrap; font-size: .8em; }

@keyframes parpadeo { 50% { opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
    .logo-marca { animation: none; }
}

/* ---- móvil ---- */

@media (max-width: 640px) {
    body { font-size: 14px; }
    .solo-ancho { display: none; }
    .kv { grid-template-columns: 11ch 1fr; }
    .ls { padding-left: 0; }
    .ls li { grid-template-columns: 5ch minmax(0, 1fr); }
    .ls-estudio { display: none; }
    .ls-barras li { grid-template-columns: minmax(0, 14ch) minmax(0, 1fr) 7ch; }
    .ficha, .ficha-h { grid-template-columns: 1fr; padding-left: 0; gap: 18px; }
    .ficha-portada { max-width: 220px; }
    .ficha-h .ficha-portada { max-width: 100%; }
    .salida, .ayuda { padding-left: 0; }
    .terminal { padding: 10px; min-height: 70vh; }
    .term-fila { grid-template-columns: auto 5ch minmax(0, 1fr); }
    .term-estudio { display: none; }
    .term-linea { flex-wrap: wrap; }
}
