/* /experience/ — la trayectoria profesional.
 *
 * El marcado lo genera `construir-experiencia.py`, que parte de
 * `plantilla.html` para heredar cabecera, menú y pie. Todo lo propio va aquí,
 * con el prefijo `xp-`, de modo que borrar este fichero y su <link> devuelve la
 * página a la plantilla sin estilo propio.
 *
 * Los colores son los mismos que `resume.css`: las dos páginas cuentan lo mismo
 * desde ángulos distintos y tienen que parecer hermanas.
 *
 * La rejilla de las 24 tarjetas NO se define aquí: la sigue haciendo
 * `portfolio.css`, que es donde se igualaron a 16:9 después de varias rondas.
 */

.xp-seccion {
    background: #12151a;
    padding: 4rem 0 3rem;
}

.xp-seccion--ejemplos {
    background: #0e1116;
    border-top: 1px solid #2b3340;
    padding-bottom: 4.5rem;
}

.xp {
    --xp-texto: #d9dee5;
    --xp-tenue: #98a2b0;
    --xp-borde: #2b3340;
    --xp-azul: #2f7fd4;

    width: 100%;
    box-sizing: border-box;
    margin: 0 auto;
    padding: 0 16px;
    color: var(--xp-texto);
}

/* La rejilla de Kubio (Bootstrap), para que el texto quede alineado con el
 * resto del sitio. Medida en el navegador, no estimada. */
@media (min-width: 768px)  { .xp { max-width: 720px;  padding: 0; } }
@media (min-width: 992px)  { .xp { max-width: 960px;  } }
@media (min-width: 1200px) { .xp { max-width: 1232px; } }

/* ── Cabecera ─────────────────────────────────────────────────────────── */

.xp-cabecera { margin-bottom: 1.75rem; }

.xp-titulo {
    margin: 0 0 .35rem;
    font-size: 2.4rem;
    line-height: 1.1;
    font-weight: 600;
}

.xp-subtitulo {
    margin: 0;
    font-size: 1.0625rem;
    color: var(--xp-tenue);
}

.xp-intro p {
    margin: 0 0 2.5rem;
    max-width: 68ch;
    font-size: 1.0625rem;
    line-height: 1.7;
}

/* ── Las cuatro etapas ────────────────────────────────────────────────── */

.xp-etapa {
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 1.5rem;
    padding: 1.5rem 0;
    border-bottom: 1px solid var(--xp-borde);
}

.xp-etapa:last-of-type { border-bottom: 0; }

.xp-etapa__cuando {
    font-size: .875rem;
    color: var(--xp-tenue);
    padding-top: .25rem;
    white-space: nowrap;
}

.xp-etapa__empresa {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 600;
}

.xp-etapa__puesto {
    margin: .15rem 0 .8rem;
    font-size: .9375rem;
    color: var(--xp-tenue);
}

.xp-lista {
    margin: 0;
    padding-left: 1.1rem;
}

.xp-lista li {
    margin-bottom: .45rem;
    line-height: 1.65;
    max-width: 66ch;
}

/* ── Las webs, plegadas ───────────────────────────────────────────────── */

.xp-ejemplos__titulo {
    margin: 0 0 .9rem;
    font-size: 1.5rem;
    font-weight: 600;
}

.xp-ejemplos__intro {
    margin: 0 0 1.75rem;
    max-width: 68ch;
    line-height: 1.7;
    color: var(--xp-tenue);
}

/* `<details>` nativo: sin JavaScript, y se abre y cierra con el teclado. */
.xp-ejemplos { border: 0; }

.xp-ejemplos__abrir {
    display: inline-block;
    padding: .8rem 1.5rem;
    border: 1px solid var(--xp-borde);
    border-radius: 3px;
    color: var(--xp-texto);
    font-weight: 600;
    cursor: pointer;
    list-style: none;           /* quita el triángulo por defecto */
    transition: border-color .15s ease, background-color .15s ease;
}

/* Safari usa un pseudoelemento propio para el triángulo. */
.xp-ejemplos__abrir::-webkit-details-marker { display: none; }

.xp-ejemplos__abrir::after {
    content: " ↓";
    color: var(--xp-azul);
}

.xp-ejemplos[open] .xp-ejemplos__abrir::after { content: " ↑"; }

.xp-ejemplos__abrir:hover,
.xp-ejemplos__abrir:focus-visible {
    border-color: var(--xp-azul);
    background: #171b21;
}

.xp-ejemplos__rejilla { margin-top: 2rem; }

/* La plantilla de Kubio da a cada sección un padding lateral propio; dentro del
 * <details> las filas ya están en su contenedor, así que se anula el doble
 * margen que aparecía al abrirlo. */
.xp-ejemplos__rejilla .h-section-grid-container {
    padding-left: 0;
    padding-right: 0;
}

/* ── Móvil ────────────────────────────────────────────────────────────── */
@media (max-width: 640px) {
    .xp-seccion { padding: 2.5rem 0 2rem; }

    .xp-etapa {
        grid-template-columns: 1fr;
        gap: .4rem;
    }

    .xp-titulo { font-size: 1.9rem; }

    .xp-ejemplos__abrir {
        display: block;
        width: 100%;
        box-sizing: border-box;
        text-align: center;
    }
}

/* ─────────────────────────────────────────────────────────────────────────
 * El desplegable de los ejemplos, con la luz de la portada
 *
 * Mismos colores que `.pf-enlace` y `.cv-boton`, tomados de la fotografía del
 * hero (#2851a0 las tiras de luz de los racks, #4a7fd8 los reflejos vivos),
 * para que las tres páginas se vean del mismo sitio.
 * ───────────────────────────────────────────────────────────────────────── */
.xp-ejemplos__abrir {
    display: inline-flex;
    /* Sin esto el `min-height` mide la caja de CONTENIDO, no la del borde: el
     * botón de /resume/ salía a 76 px en vez de 48 porque le sumaba los 25,6 px
     * de padding vertical. El sitio no trae un `border-box` general. */
    box-sizing: border-box;
    align-items: center;
    justify-content: center;
    /* 48 px es el mínimo que se toca con el pulgar sin fallar. */
    min-height: 48px;
    padding: .8rem 1.5rem;
    border-radius: 4px;
    background: rgba(40, 81, 160, .12);
    border: 1px solid #2b3340;
    letter-spacing: .01em;
    transition: background .18s ease, border-color .18s ease, color .18s ease;
}

.xp-ejemplos__abrir:hover,
.xp-ejemplos__abrir:focus-visible {
    background: rgba(47, 127, 212, .18);
    border-color: #3a86df;
}

.xp-ejemplos__abrir:focus-visible {
    outline: 2px solid #7fb6ff;
    outline-offset: 2px;
}

/* ═════════════════════════════════════════════════════════════════════════
 * La trayectoria: separadores, sin línea de tiempo
 *
 * Hubo una versión con línea vertical y un punto azul por etapa. Se quitó por
 * dos motivos, y el segundo es el que manda:
 *
 *  · **Los puntos no se alineaban.** Iban a una altura fija (`top: 2rem`)
 *    mientras que el nombre de la empresa cae donde lo deja su contenido, así
 *    que no coincidían con nada. Alinearlos habría pedido atarlos a la línea
 *    base del `<h3>`, que es frágil.
 *  · **El concepto no convence.** Una línea de tiempo promete una progresión
 *    que aquí no aporta: las cuatro etapas ya se leen en orden y con sus años
 *    delante. Era decoración con aire de infografía.
 *
 * Se vuelve al separador horizontal, que es lo que hace falta: marcar dónde
 * acaba una etapa y empieza la siguiente, y nada más.
 * ═════════════════════════════════════════════════════════════════════════ */
@media (min-width: 641px) {
    .xp-etapa {
        padding: 1.75rem 0;
        border-bottom: 1px solid var(--xp-borde);
    }
    .xp-etapa:last-child { border-bottom: none; }
}

@media (max-width: 640px) {
    .xp-etapa {
        padding: 1.25rem 0;
        border-bottom: 1px solid var(--xp-borde);
    }
    .xp-etapa:last-child { border-bottom: none; }
}

/* ── Las empresas, enlazadas ──────────────────────────────────────────────
 *
 * El enlace **no se pinta de azul**. En el encabezado de la etapa el nombre de
 * la empresa es lo más grande del bloque; en azul dominaría la página entera y
 * en las viñetas dejaría el texto lleno de manchas de color.
 *
 * Se marca con un subrayado fino y separado del texto, en azul a media
 * opacidad: lo justo para que se lea como enlace de un vistazo. Con el color
 * del borde (`#2b3340`) sobre este fondo casi no se veía —comprobado en
 * captura—, y un enlace que no parece enlace no lo pulsa nadie. Al pasar por
 * encima, el azul entero y el texto también.
 *
 * `text-underline-offset` en vez de `border-bottom`: el subrayado sigue las
 * curvas de las letras y se parte bien si el nombre cae a caballo entre dos
 * líneas.
 */
.xp-enlace {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: rgba(47, 127, 212, .6);
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    transition: color .15s, text-decoration-color .15s;
}

.xp-enlace:hover,
.xp-enlace:focus-visible {
    color: var(--xp-azul);
    text-decoration-color: var(--xp-azul);
}

/* El foco por teclado tiene que verse sobre fondo oscuro. */
.xp-enlace:focus-visible {
    outline: 2px solid var(--xp-azul);
    outline-offset: 2px;
}
