/* ═══════════════════════════════════════════════════════════════════
   FP 1.25.0 · PLAYFAIR DISPLAY, SERVIDA POR EL THEME
   ═══════════════════════════════════════════════════════════════════
   El archivo vive en assets/fonts. Sin petición a Google: no depende
   de que responda, no lo puede bloquear una extensión, y no manda la
   IP del lector a un tercero —que es además lo que pide el RGPD—.

   `font-display: swap` a propósito: primero se lee el titular con el
   serif del sistema y luego cambia. Es preferible a que la palabra
   AFRICA no exista durante medio segundo. */
@font-face {
    font-family: 'Playfair Display';
    font-style: normal;
    font-weight: 900;
    font-display: swap;
    src: url('../fonts/playfair-display-900.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215;
}

/* ════════════════════════════════════════════════════════════════════
   FINANCIAL PORTS · PIEL  ·  v2.270.0
   ════════════════════════════════════════════════════════════════════

   Se carga DESPUÉS del resto de hojas y SOLO cuando el perfil del sitio
   es financialports. InfoPuertos no la descarga nunca.

   Cómo funciona
   ─────────────
   El azul de marca (#114F6E) dejó de estar escrito a fuego: sus 508
   apariciones son ahora var(--et-brand, #114F6E). Sin esta hoja el
   respaldo devuelve el azul de siempre — por eso InfoPuertos no puede
   cambiar de color por accidente. Aquí redefinimos el token y la web
   entera gira a la paleta de FP de una sola vez.

   La paleta · NEGRO Y ROJO #C1272D, los colores de FP
   ───────────────────────────────────────────────────
   Los dos colores de la marca mandan en todo. El salmón es el papel
   sobre el que se imprimen, como en el Financial Times: no compite,
   sostiene.

   El negro del TEXTO se calienta un punto (#1A1614) porque un negro
   puro sobre salmón vibra y cansa la vista en un artículo largo. El
   negro de las BANDAS sí es negro de verdad (#0D0D0D): ahí es una
   superficie, no letra que haya que leer seguido.

   El rojo se reserva para antetítulos, enlaces activos y datos. Es
   deliberado: un rojo que aparece en todas partes deja de señalar
   nada.
   ════════════════════════════════════════════════════════════════════ */

:root {
    --et-brand: #C1272D;          /* pisa el azul en las 508 apariciones */

    /* FP 1.2.0 · EL SALMÓN DE VERDAD.
       ─────────────────────────────
       Antes solo se pintaban seis contenedores y la web se veía BLANCA:
       el theme tenía 318 fondos blancos repartidos por sus hojas —tarjetas,
       secciones, cajas de datos, el pie, el panel del lector— y todos ellos
       tapaban el salmón por encima.

       Ahora esos 318 son var(--et-paper, #fff): con el respaldo puesto
       InfoPuertos sigue blanco exactamente igual, y aquí basta redefinir
       el token para que TODA la superficie de FP sea salmón de una vez.
       Es el mismo truco que con el azul, y por la misma razón: perseguir
       selectores uno a uno no acaba nunca. */
    --et-paper: #FFF1E5;

    /* FP 1.6.0 · LOS FILETES, EN ROJO CLARO.
       ──────────────────────────────────────
       Las líneas que separan noticias y bloques eran los grises fríos
       del theme (#E4E9EE, #E5E3DD…). Sobre salmón un gris azulado se
       ve sucio, y además no dice nada de la marca.

       Se han tokenizado los 74 filetes del theme igual que el azul y
       los fondos: con el respaldo puesto InfoPuertos no cambia, y aquí
       basta redefinir el token. Es el rojo de FP muy rebajado — tiene
       que ORGANIZAR la página, no llamar la atención: un filete que se
       nota deja de ser un filete y pasa a ser un elemento. */
    --et-rule: #EBC9C9;

    --fp-paper: #FFF1E5;          /* el salmón · fondo de todo */
    --fp-paper-2: #F7E4D3;        /* salmón hundido · cajas y huecos */
    --fp-ink: #1A1614;            /* negro cálido · titulares y texto */
    --fp-ink-2: #4A403A;          /* texto secundario */
    --fp-muted: #6E6058;          /* firmas, horas, pies */
    --fp-claret: #C1272D;         /* el acento */
    --fp-rule: #EBC9C9;           /* filete · el rojo de FP rebajado */
    --fp-rule-strong: #1A1614;    /* filete de cabecera de sección */
    --fp-deep: #0D0D0D;           /* negro de marca · bandas y pie */
    --fp-red-soft: #E05A5A;       /* el rojo aclarado, para fondo negro */

    --fp-serif: Georgia, 'Iowan Old Style', 'Times New Roman', serif;
}

/* ─── El papel ─────────────────────────────────────────────────────
   Todo lo que era blanco pasa a salmón. Se listan los contenedores
   reales del theme en vez de poner background:transparent a todo, que
   arrastraría también a los bloques que SÍ deben ir en blanco (fichas
   de datos, tarjetas de anuncio). */
html,
body,
.et-pcv2-page,
.et-m,
.site,
.et-article-v2 {
    background: var(--fp-paper);
    color: var(--fp-ink);
}

/* ─── Tipografía · el serif es la marca ────────────────────────────
   Titulares en serif; firmas, antetítulos y datos siguen en sans, que
   es lo que da el contraste de periódico económico. */
.et-pcv2-hero__title,
.et-pcv2-hero__title--xl,
.et-pcv2__card-title,
.et-msec__card-title,
.et-msec__row-title,
.et-mhero__title,
.et-m-suc__htitle,
.et-m-suc__stitle,
.et-m-oph__title,
.et-pcv2-oph__title,
.et-article-v2__title,
.et-section-head__title,
.et-msec__head-title,
.et-msec__sub-head,
h1.entry-title,
.et-pc-wordmark__h {
    font-family: var(--fp-serif);
    font-weight: 400;
    letter-spacing: -.015em;
    color: var(--fp-ink);
}

/* El titular no necesita 800 cuando es serif: el peso lo da el cuerpo.
   Se mantiene el TAMAÑO que ya afinamos en móvil — solo cambia el trazo. */
.et-msec__card-title,
.et-mhero__title,
.et-m-suc__htitle,
.et-m-oph__title {
    font-weight: 600;
}

/* ─── Antetítulos y firmas ─────────────────────────────────────────
   El kicker es lo único que va en rojo oscuro dentro del titular. */
.et-pcv2-hero__kicker,
.et-mhero__kicker,
.et-msec .et-pcv2-hero__kicker,
.et-m-suc .et-pcv2-hero__kicker,
.et-m-oph .et-pcv2-hero__kicker {
    color: var(--fp-claret);
    font-family: var(--fp-serif);
    font-weight: 700;
}

.et-pcv2-hero__byline-author,
.et-m-suc .et-pcv2-hero__byline-author,
.et-m-oph .et-pcv2-hero__byline-author,
.et-msec__meta,
.et-pcv2-hero__meta {
    color: var(--fp-muted);
}

/* ─── Filetes ──────────────────────────────────────────────────────
   El gris frío del theme se sustituye por el filete cálido: un
   #E5E3DD sobre salmón se ve sucio. */
.et-msec,
.et-msec__row,
.et-msec__card,
.et-m-suc__sub,
.et-mhero__hairline,
.et-pcv2__col,
.et-pcv2-hero__col {
    border-color: var(--fp-rule);
}

.et-mhero__hairline,
hr {
    background: var(--fp-rule);
    border-color: var(--fp-rule);
}

/* Cabecera de sección: filete negro grueso, como en la maqueta. */
.et-section-head,
.et-msec__head,
.et-msec__sub-head,
.et-m-section-head {
    border-color: var(--fp-rule-strong);
}

.et-msec__sub-head::before {
    background: var(--fp-claret);
}

/* ─── Huecos de imagen ─────────────────────────────────────────────
   Mientras carga la foto se ve salmón hundido, no gris. */
.et-msec__media,
.et-mhero__media,
.et-pcv2-hero__photo,
.et-m-suc__photo,
.et-pcv2-oph__tphoto {
    background-color: var(--fp-paper-2);
}

/* ─── Cabecera y navegación ────────────────────────────────────────*/
.et-pc-masthead,
.et-pc-nav,
.et-m__hdr,
.et-m-subnav {
    background: var(--fp-paper);
    border-color: var(--fp-rule);
}

.et-pc-masthead {
    border-bottom: 1px solid var(--fp-ink);
}

.et-pc-nav {
    border-bottom: 1px solid var(--fp-rule);
}

.et-pc-nav__link {
    color: var(--fp-ink);
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.et-pc-nav__link:hover,
.et-pc-nav__link.is-active {
    color: var(--fp-claret);
}

.et-pc-wordmark__pre {
    color: var(--fp-claret);
}

.et-pc-wordmark__main,
.et-pc-wordmark__h {
    color: var(--fp-ink);
}

.et-pc-wordmark__tagline {
    color: var(--fp-muted);
    font-family: var(--fp-serif);
    font-style: italic;
}

/* ─── Enlaces ──────────────────────────────────────────────────────*/
.et-pcv2-page a,
.et-m a {
    color: inherit;
}

.et-pcv2-page a:hover,
.et-m a:hover {
    color: var(--fp-claret);
}

/* ─── Bandas en negativo · PCP y rankings ──────────────────────────*/
.et-m-pcpl__ticker,
.et-pcv2-pcpl,
.et-m-pcpl {
    background: transparent;
}

.et-m-pcpl__rank,
.et-pcv2-pcpl__rank {
    background: var(--fp-deep);
    color: var(--fp-paper);
}

.et-m-pcpl__rank-h,
.et-m-pcpl__rank-port,
.et-m-pcpl__rank-val {
    color: var(--fp-paper);
    font-family: var(--fp-serif);
}

/* ─── Pie ──────────────────────────────────────────────────────────*/
.et-footer,
.et-footer-premium,
footer.site-footer {
    background: var(--fp-deep);
    color: var(--fp-paper);
    border-top: 0;
}

.et-footer a,
.et-footer-premium a {
    color: var(--fp-paper);
}

/* Sobre el negro del pie, el rojo de marca no tiene contraste suficiente
   para un enlace: se usa su versión aclarada, que sigue siendo el mismo
   color y sí se lee. */
.et-footer a:hover,
.et-footer-premium a:hover,
.et-pcv2-footer a:hover {
    color: var(--fp-red-soft);
}

/* El pie de PC comparte el negro de marca. */
.et-pcv2-footer {
    background: var(--fp-deep);
    color: var(--fp-paper);
}

/* El logotipo del pie, a un tamaño que se lea sin dominar. */
.et-pcv2-footer__logo {
    max-height: 42px;
    width: auto;
}

/* ─── La columna de publicidad de Opinión ──────────────────────────
   FP 1.3.0 · Sin filete a la izquierda —era el que separaba «El debate»
   de la columna de al lado, y con un anuncio dentro parecía un borde de
   caja— y a TODA la altura de la fila: el banner llega hasta abajo en
   vez de quedarse colgando con un hueco debajo. */
/* FP 1.4.0 · LA CAUSA DE LA LÍNEA, POR FIN.
   Al cambiar «El debate» por publicidad le puse a la columna la clase
   `--ad`, pero la rejilla de tres columnas solo tiene reglas para
   `--proa`, `--op` y `--debate`. Mi columna se quedó SIN posición en la
   rejilla y sin el `border-left: 0` que las otras tres sí llevan, así
   que heredaba el filete de la regla genérica de columnas. Por eso
   seguía saliendo por más veces que lo quitara: estaba apagando un
   borde en un selector que no era el que lo pintaba.
   Aquí se le da a `--ad` exactamente el sitio que tenía `--debate`. */
.et-pcv2-oph__grid--v3 .et-pcv2-oph__col--ad {
    grid-column: 3;
    grid-row: 1;
    padding: 0 0 0 32px;
    background: none;
}

/* Y el filete fuera en TODA la rejilla, venga de donde venga. */
.et-pcv2-oph__grid--v3 .et-pcv2-oph__col,
.et-pcv2-oph__grid--v3 .et-pcv2-oph__col--ad,
.et-pcv2-oph__col--ad {
    border-left: 0;
    border-right: 0;
}

.et-pcv2-oph__col--ad {
    padding-left: 0;
    display: flex;
    flex-direction: column;
    align-self: stretch;
}

.et-pcv2-oph__col--ad > * {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
}

/* El creativo estira hasta el fondo de la columna. */
.et-pcv2-oph__col--ad .et-ad,
.et-pcv2-oph__col--ad .et-natad,
.et-pcv2-oph__col--ad .et-natad2 {
    height: 100%;
    min-height: 100%;
}

.et-pcv2-oph__col--ad .et-natad2__media {
    flex: 1 1 auto;
    min-height: 260px;
}

/* ─── World Port Ranking · /port-ranking/ ──────────────────────────
   FP 1.11.0 · La página reutiliza el markup del ranking de CAMAL
   (.rkp__row con barra), que ya trae su CSS de port-stats.css. Aquí
   solo se cambian los colores: tipografía en NEGRO donde era gris y
   filetes y barras en el rojo de FP. */

.et-rank-main { background: var(--fp-paper); }

.rkp--fp { max-width: 1000px; margin: 0 auto; padding: 44px 20px 80px; color: var(--fp-ink); }

.rkp--fp .rkp__head { border-bottom: 2px solid var(--fp-ink); padding-bottom: 14px; margin-bottom: 22px; }
.rkp--fp .rkp__title { font-family: var(--fp-serif); font-weight: 800; font-size: clamp(30px,5vw,46px); line-height: 1.05; letter-spacing: -.02em; margin: 0 0 8px; color: var(--fp-ink); }
.rkp--fp .rkp__sub { margin: 0; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; font-weight: 700; color: var(--fp-claret); }

/* Cabecera de columnas · negra, no gris. */
.rkp--fp .rkp__lh { color: var(--fp-ink); border-bottom: 1px solid var(--fp-ink); font-weight: 700; letter-spacing: .09em; text-transform: uppercase; font-size: 11px; }

/* Filas · filete rojo rebajado en vez del gris. */
.rkp--fp .rkp__row { border-bottom: 1px solid var(--fp-rule); color: var(--fp-ink); }
.rkp--fp .rkp__nm { color: var(--fp-ink); font-weight: 700; }
.rkp--fp .rkp__vl { color: var(--fp-ink); font-weight: 700; font-variant-numeric: tabular-nums; }
/* El país ocupa el hueco del interanual: negro y sin color de signo. */
.rkp--fp .rkp__dl { color: var(--fp-ink); font-weight: 400; }

/* El puesto y la barra, en el rojo de marca. */
.rkp--fp .rkp__rk { color: var(--fp-claret); font-family: var(--fp-serif); }
.rkp--fp .rkp__bar { background: var(--fp-paper-2); }
.rkp--fp .rkp__bar i { background: var(--fp-claret); transition: width .6s cubic-bezier(.33,.9,.25,1); }

/* Podio: las tres primeras con la barra a plena intensidad y el
   puesto más grande. Es lo que hace que un ranking se lea de un
   vistazo en vez de tener que buscarlo. */
.rkp--fp .rkp__row.top .rkp__rk { font-size: 1.35em; }
.rkp--fp .rkp__row.t1 .rkp__bar i { background: var(--fp-claret); }
.rkp--fp .rkp__row.t2 .rkp__bar i,
.rkp--fp .rkp__row.t3 .rkp__bar i { background: #C64A4A; }

/* ─── Alineación de las barras ─────────────────────────────────────
   Las barras salían escalonadas. El motivo: en el ranking original
   CADA FILA es su propia rejilla y las dos últimas columnas van en
   `auto`, así que cada fila se mide sola — un país largo o una cifra
   larga ensanchan SU columna y empujan la barra hacia la izquierda
   solo en esa fila. Ahí no hay nada que alinear porque no comparten
   rejilla.

   La solución es quitarle a esas columnas la libertad de medirse: con
   ancho fijo todas las filas parten y acaban en el mismo sitio, y la
   cabecera cuadra con ellas aunque ponga «Index» y «Country». */
.rkp--fp .rkp__lh,
.rkp--fp .rkp__row {
    /* FP 1.71.3 · el display:grid va AQUÍ, no fiado a port-stats.css:
       esa hoja no carga en las páginas nuevas y las filas salían como
       texto corrido apelmazado (captura del CEO en /port-ranking/). */
    display: grid;
    align-items: center;
    grid-template-columns: 38px minmax(90px, 1fr) minmax(120px, 1.6fr) 78px 132px;
    gap: 16px;
    padding: 11px 0;
    border-bottom: 1px solid var(--fp-rule);
    font-variant-numeric: tabular-nums;
}

/* Con ancho fijo hay que decir qué pasa si el texto no cabe: se corta
   con puntos suspensivos en vez de reventar la columna. */
/* El rótulo del puesto, centrado como el número que va debajo. */
.rkp--fp .rkp__lh-r { text-align: center; }

.rkp--fp .rkp__vl,
.rkp--fp .rkp__dl {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* La línea de medición: fondo del carril algo más marcado para que se
   vea dónde acaba la escala, no solo dónde llega el puerto. */
.rkp--fp .rkp__bar { height: 4px; background: #F3DCDC; border-radius: 0; }
.rkp--fp .rkp__bar i { border-radius: 0; }

/* El atributo hidden NO basta aquí. `[hidden]{display:none}` es una
   regla del NAVEGADOR, y `.rkp__row{display:grid}` del theme es de
   autor: gana el grid y las filas de las páginas 2 en adelante se
   seguían pintando — salían los 900 puertos de golpe con el paginador
   encima. Hay que decirlo en una regla de autor. */
.rkp--fp .rkp__row[hidden] { display: none !important; }

/* ─── Paginación ───────────────────────────────────────────────── */
.rkp__pager { display: flex; flex-wrap: wrap; gap: 6px; margin: 24px 0 0; }
.rkp__pager button {
    appearance: none; cursor: pointer;
    background: transparent;
    border: 1px solid var(--fp-rule);
    color: var(--fp-ink);
    font: 700 12px/1 var(--sans, inherit);
    letter-spacing: .04em;
    padding: 9px 12px;
    font-variant-numeric: tabular-nums;
}
.rkp__pager button { min-width: 38px; text-align: center; }
.rkp__pager button:hover:not([disabled]) { border-color: var(--fp-claret); color: var(--fp-claret); }
.rkp__pager button[disabled] { opacity: .35; cursor: default; }
.rkp__gap { align-self: center; padding: 0 2px; color: var(--fp-muted); font-weight: 700; font-size: 12px; }
.rkp__pager button.on { background: var(--fp-claret); border-color: var(--fp-claret); color: var(--fp-paper); }

.rkp__source, .rkp__empty { margin: 22px 0 0; font-size: 13px; line-height: 1.5; color: var(--fp-ink); }
.rkp__empty { padding: 40px 0; text-align: center; font-family: var(--fp-serif); font-size: 18px; }

@media (max-width: 640px) {
    .rkp--fp { padding: 26px 14px 60px; }
    /* En móvil la barra sobra: se queda puesto · puerto · cifra. */
    .rkp--fp .rkp__bar,
    .rkp--fp .rkp__lh-b { display: none; }
    .rkp--fp .rkp__lh,
    .rkp--fp .rkp__row { grid-template-columns: 30px 1fr 66px 88px; gap: 10px; }
}

/* ─── Suplemento FP Plus ───────────────────────────────────────────
   La barra del suplemento va en negro con el rojo de marca, no en el
   azul heredado de IP Plus. */
.ipp-bar {
    background: var(--fp-deep);
    border-color: var(--fp-claret);
}

.ipp-bar__logo {
    max-height: 34px;
    width: auto;
}

/* ─── Publicidad ───────────────────────────────────────────────────
   El rótulo de publicidad se mantiene visible pero discreto: es una
   obligación de transparencia, no un elemento de diseño. */
.et-ad__label,
.et-natad__label {
    color: var(--fp-muted);
    letter-spacing: .14em;
}

/* ─── Esquinas ─────────────────────────────────────────────────────
   Un periódico económico no lleva esquinas redondeadas. Se anulan las
   del theme en los contenedores de contenido — se dejan las de avatares
   y botones circulares, que sí las necesitan. */
.et-msec__card,
.et-msec__media,
.et-mhero__media,
.et-msec__row,
.et-pcv2-hero__photo,
.et-m-suc__photo,
.et-ad,
.et-natad {
    border-radius: 0;
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.13.0 · FIRMA, FILETES Y SELLO
   ═══════════════════════════════════════════════════════════════════ */

/* ─── La firma ─────────────────────────────────────────────────────
   La plaza (el «custom») en rojo y el autor en negro. Es el reparto
   clásico de un diario económico: la plaza señala, el nombre informa.
   Estas clases las emiten PC y móvil por igual, así que una sola regla
   vale para toda la casa. */
.et-pcv2-hero__byline-custom {
    color: var(--fp-claret);
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.et-pcv2-hero__byline-author,
.et-m-suc .et-pcv2-hero__byline-author,
.et-m-oph .et-pcv2-hero__byline-author {
    color: var(--fp-ink);
    font-weight: 700;
}

/* La fecha y el cargo sí se quedan atrás: si todo pesa, nada pesa. */
.et-pcv2-hero__byline-date,
.et-pcv2-hero__byline-role { color: var(--fp-muted); }


/* ─── Los filetes que faltaban ─────────────────────────────────────
   El theme no pinta sus separadores con el hex a la vista: los reparte
   desde variables propias de cada hoja (--pcv2-line, --msec-hair,
   --et-line, --obs-line, --ip-hair…). Por eso seguía saliendo gris por
   todas partes aunque los bordes sueltos ya estuvieran cambiados: se
   apagaban uno a uno mientras la variable seguía repartiendo.

   Esas 22 variables ya son var(--et-rule, …) en su declaración, así
   que con el token redefinido arriba cambian de golpe todas las líneas
   que cuelgan de ellas —horizontales y verticales—. Aquí solo quedan
   los casos que no pasan por borde. */
.et-pcv2-page hr,
.et-m hr { background: var(--et-rule); border: 0; height: 1px; }

/* Los puntitos bajo los títulos de sección: mismo rojo rebajado. */
.et-pcv2-page [style*="dotted"],
.et-pcv2-page .is-dotted,
.et-m .is-dotted { border-color: var(--et-rule) !important; }


/* ─── El sello sobre las fotos ─────────────────────────────────────
   Va como ::after del contenedor de la foto, no como <img> dentro de
   cada plantilla: las tarjetas del home salen de más de treinta
   parciales distintos y perseguirlas una a una es garantía de que
   alguna se quede sin sello. Los contenedores son <a> con la foto de
   fondo, así que admiten pseudo-elemento sin tocar el HTML. */
.et-pcv2-page [class*="photo"],
.et-pcv2-page [class*="__media"],
.et-pcv2-page [class*="thumb"],
.et-m [class*="photo"],
.et-m [class*="__media"],
.et-m [class*="thumb"] { position: relative; }

.et-pcv2-page [class*="photo"]::after,
.et-pcv2-page [class*="__media"]::after,
.et-pcv2-page [class*="thumb"]::after,
.et-m [class*="photo"]::after,
.et-m [class*="__media"]::after,
.et-m [class*="thumb"]::after {
    content: "";
    position: absolute;
    top: 8px;
    right: 8px;
    width: 38px;
    height: 38px;
    background: url('https://diariodemarruecos.com/wp-content/uploads/2026/09/camal-34-e1788363851872.png') center / contain no-repeat;
    /* El icono va con SU color, sin tocar. Lo que cambia es la sombra:
       era negra y ensuciaba la foto; ahora es un halo CLARO, que hace el
       mismo trabajo —despegarlo del fondo— sin manchar. */
    filter: drop-shadow(0 0 3px rgba(255,255,255,.95)) drop-shadow(0 1px 2px rgba(255,255,255,.7));
    pointer-events: none;
    z-index: 3;
}

/* En las miniaturas, más pequeño: un sello de 38px sobre una foto de
   80 tapa la noticia en vez de firmarla. */
.et-pcv2-page [class*="thumb"]::after,
.et-pcv2-page [class*="mini"]::after,
.et-m [class*="thumb"]::after {
    width: 24px;
    height: 24px;
    top: 5px;
    right: 5px;
}

/* Donde NO va: publicidad, logos de cabecera de bloque, retratos de
   firma y la caja de luz. Ahí el sello sería mentira o estorbo. */
.et-ad [class*="photo"]::after,
.et-ad [class*="__media"]::after,
.et-ad [class*="thumb"]::after,
[class*="ad-img"]::after,
[class*="brand-img"]::after,
[class*="brand-photo"]::after,
.et-pcv2-firma__img::after,
.et-pcv2-lightbox__img::after,
[class*="author-photo"]::after,
/* Los nativos de publicidad y el boletín llevan SU imagen: el sello del
   periódico ahí no pinta nada, y encima el selector genérico lo colaba
   porque `et-natad2__media` contiene la palabra «media». */
.et-natad2__media::after,
.et-natad__media::after,
/* FP 1.66.5 · las tarjetas del Centro de Boletines llevan su LOGO de
   boletín, no una foto de noticia: el ancla ahí sobra (orden del CEO). */
.et-pcv2-news__media::after,
[class*="avatar"]::after { content: none !important; }

@media (max-width: 640px) {
    .et-m [class*="photo"]::after,
    .et-m [class*="__media"]::after { width: 30px; height: 30px; top: 6px; right: 6px; }
}

/* La foto de Conflicts (.et-pcv2-oph__tphoto) se quedó sin sello: la
   metí en la lista de exclusiones creyendo que era el retrato de una
   firma de opinión, y es la foto de la noticia. Va con las demás. */
.et-pcv2-oph__tphoto { position: relative; }
.et-pcv2-oph__tphoto::after {
    content: "";
    position: absolute;
    top: 8px;
    right: 8px;
    width: 34px;
    height: 34px;
    background: url('https://diariodemarruecos.com/wp-content/uploads/2026/09/camal-34-e1788363851872.png') center / contain no-repeat;
    filter: drop-shadow(0 0 3px rgba(255,255,255,.95)) drop-shadow(0 1px 2px rgba(255,255,255,.7));
    pointer-events: none;
    z-index: 3;
}


/* ═══════════════════════════════════════════════════════════════════
   FP 1.16.0 · ECONOMY & MARKETS
   ═══════════════════════════════════════════════════════════════════
   Tres columnas al modo del recorte del CEO: una ancha con foto grande
   que sostiene el bloque, una media que alterna sin-foto/con-foto para
   que la página no se lea como una rejilla, y un carril de datos.

   EL ANCHO
   ────────
   Salía más estrecha que el resto del home porque le puse max-width y
   padding propios. El bloque de Ports | Shipyards NO lleva ninguno de
   los dos: hereda el contenedor de la portada y se limita a separarse
   con margen y filete. Al ponerle los míos, mi padding se sumaba al del
   contenedor y la sección se metía hacia dentro. Aquí se hace lo mismo
   que hace Ports y encaja sola.

   LA TIPOGRAFÍA
   ─────────────
   La misma que Ports | Shipyards: Inter 800. El serif se reserva para
   el hero y las cabeceras — si cada sección usa su propia letra, la
   portada deja de parecer un periódico y pasa a parecer una plantilla.
   La pieza de apertura conserva su tamaño grande, que es lo que le da
   el peso de entrada al bloque. */

.fp-eco {
    margin-top: 44px;
    padding-top: 36px;
    border-top: 1px solid var(--fp-rule);
    background: var(--fp-paper);
    --fp-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.fp-eco__head {
    border-bottom: 2px solid var(--fp-claret);
    padding-bottom: 9px;
    margin-bottom: 20px;
}
/* FP 2.4.1 · El rótulo y la puerta a Stock Markets en la MISMA línea:
   título a la izquierda, enlace en versalitas a la derecha, con la
   flecha que se desliza al pasar el ratón. */
.fp-eco__head--con-enlace {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
}
.fp-eco__head-link {
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--fp-claret);
    text-decoration: none;
    white-space: nowrap;
}
.fp-eco__head-link span {
    display: inline-block;
    transition: transform .15s ease;
}
.fp-eco__head-link:hover { color: var(--fp-ink); }
.fp-eco__head-link:hover span { transform: translateX(3px); }
@media (prefers-reduced-motion: reduce) {
    .fp-eco__head-link span { transition: none; }
}

/* FP 2.0.2 · Un punto mas de negrita en TODA la seccion Economy, por
   orden del CEO: los rotulos (Economy & Markets, World Economy, Markets,
   See all, Container lines) y los titulares de las seis noticias pasan
   de 800 a 900. Inter trae el 900 cargado en el <link> de fuentes; con
   una familia de sistema este cambio no se veria. */
.fp-eco__head-t {
    margin: 0;
    font-family: var(--fp-serif);
    font-weight: 900;
    font-size: 24px;
    letter-spacing: -.01em;
    color: var(--fp-claret);
}

.fp-eco__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) 250px;
}

.fp-eco__col { min-width: 0; }
.fp-eco__col--a { padding-right: 30px; }
.fp-eco__col--b { padding: 0 26px; border-left: 1px solid var(--fp-rule); border-right: 1px solid var(--fp-rule); }
.fp-eco__col--c { padding-left: 26px; }

/* ─── Columna 1 · la pieza de apertura ─────────────────────────── */
.fp-eco__lead-photo {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 10;
    background: var(--fp-paper-2) center / cover no-repeat;
}

.fp-eco__cap {
    margin: 7px 0 0;
    text-align: right;
    font-family: var(--fp-sans);
    font-size: 11.5px;
    line-height: 1.4;
    color: var(--fp-muted);
}

/* Conserva el tamaño grande —es la entrada del bloque— pero con la
   letra y el grosor de Ports. */
.fp-eco__lead-t {
    margin: 15px 0 0;
    font-family: var(--fp-sans);
    font-weight: 900;
    font-size: clamp(24px, 2.2vw, 29px);
    line-height: 1.15;
    letter-spacing: -.5px;
    text-align: center;
    text-wrap: balance;
}

.fp-eco__lead-t a { color: var(--fp-ink); text-decoration: none; }
.fp-eco__lead-t a:hover { color: var(--fp-claret); }

/* La entradilla y la firma acompañan al titular: centradas también. Una
   firma alineada a la izquierda bajo un titular centrado deja el bloque
   descolgado por un lado. */
.fp-eco__lead .fp-eco__dek { text-align: center; }
.fp-eco__lead .et-pcv2-hero__byline { justify-content: center; text-align: center; }

.fp-eco__sub {
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid var(--fp-rule);
}

/* ─── Columna 2 · rótulo + las dos piezas ──────────────────────── */
.fp-eco__col-h {
    margin: 0 0 14px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--fp-rule);
    font-family: var(--fp-sans);
    font-size: 15px;
    font-weight: 900;
    letter-spacing: .02em;
    color: var(--fp-claret);
}

.fp-eco__it + .fp-eco__it {
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid var(--fp-rule);
}

.fp-eco__it-photo {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    margin-bottom: 13px;
    background: var(--fp-paper-2) center / cover no-repeat;
}

/* El resto de titulares, calcados del b1 de Ports. */
.fp-eco__sub-t,
.fp-eco__it-t {
    margin: 0;
    font-family: var(--fp-sans);
    font-weight: 900;
    font-size: 19px;
    line-height: 1.22;
    letter-spacing: -.3px;
}

.fp-eco__sub-t a,
.fp-eco__it-t a { color: var(--fp-ink); text-decoration: none; }
.fp-eco__sub-t a:hover,
.fp-eco__it-t a:hover { color: var(--fp-claret); }

.fp-eco__dek {
    margin: 9px 0 0;
    font-family: var(--fp-sans);
    font-size: 14.5px;
    line-height: 1.46;
    color: var(--fp-ink-2);
}

.fp-eco .et-pcv2-hero__byline {
    display: flex;
    flex-wrap: wrap;
    gap: 0 8px;
    margin: 10px 0 0;
    font-family: var(--fp-sans);
    font-size: 12px;
}

/* ─── Columna 3 · el carril de datos ───────────────────────────────
   Compacto a propósito: son nueve marcadores y con la altura anterior
   el carril estiraba la sección medio metro por debajo de las noticias.
   Rótulo pequeño, fila de dos líneas y cifra en sans tabular — que es
   además como se leen los números en un panel de bolsa. */
.fp-eco__rail { position: sticky; top: 84px; }

/* Rojo y con cuerpo: son los dos rótulos que ordenan el carril, y a
   9,5px se perdían contra los nombres de los marcadores. */
.fp-eco__rail-h {
    margin: 0 0 4px;
    padding-bottom: 7px;
    border-bottom: 1px solid var(--fp-claret);
    font-family: var(--fp-sans);
    font-size: 13px;
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--fp-claret);
}

.fp-eco__rail-h--2 { margin-top: 16px; }

.fp-eco__q {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: baseline;
    gap: 1px 10px;
    padding: 8px 0;
    border-bottom: 1px solid var(--fp-rule);
}

.fp-eco__q-lb {
    font-family: var(--fp-sans);
    font-size: 12px;
    font-weight: 700;
    color: var(--fp-ink);
}

/* La cifra y la referencia van a la izquierda, alineadas con el nombre
   del marcador: en una columna estrecha, alinear a la derecha rompe el
   eje de lectura y obliga a saltar de un lado a otro en cada fila. La
   variación se queda a la derecha porque es lo único que se escanea en
   vertical. */
.fp-eco__q-vl {
    grid-column: 1 / -1;
    font-family: var(--fp-sans);
    font-size: 14px;
    font-weight: 800;
    text-align: left;
    color: var(--fp-ink);
    font-variant-numeric: tabular-nums;
}

.fp-eco__q-un { font-size: 10.5px; font-weight: 600; color: var(--fp-muted); }

/* La referencia y la variación, en la segunda línea: la referencia dice
   QUÉ es y la variación CÓMO va, y juntas ocupan una sola línea. */
.fp-eco__q-nt {
    grid-column: 1 / -1;
    font-family: var(--fp-sans);
    font-size: 9.5px;
    line-height: 1.3;
    letter-spacing: .04em;
    text-transform: uppercase;
    text-align: left;
    color: var(--fp-muted);
}

.fp-eco__q-dl {
    font-family: var(--fp-sans);
    font-size: 11px;
    font-weight: 800;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* El color y la flecha van juntos por accesibilidad: en un panel de
   bolsa el verde y el rojo son la única señal, y quien no los distingue
   se queda sin dato. La flecha lo dice también. */
.fp-eco__q-dl--up   { color: #0A7B4B; }
.fp-eco__q-dl--down { color: var(--fp-claret); }
.fp-eco__q-dl--flat { color: var(--fp-muted); }

.fp-eco__rail-f {
    margin: 12px 0 0;
    font-family: var(--fp-sans);
    font-size: 10px;
    line-height: 1.45;
    color: var(--fp-muted);
}

/* ─── Tableta y móvil ──────────────────────────────────────────── */
@media (max-width: 1080px) {
    .fp-eco__grid { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); }
    .fp-eco__col--b { border-right: 0; padding-right: 0; }
    .fp-eco__col--c {
        grid-column: 1 / -1;
        margin-top: 22px;
        padding: 18px 0 0;
        border-top: 1px solid var(--fp-rule);
    }
    .fp-eco__rail {
        position: static;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
        gap: 0 26px;
    }
    .fp-eco__rail-h, .fp-eco__rail-f { grid-column: 1 / -1; }
}

@media (max-width: 720px) {
    .fp-eco { margin-top: 30px; padding-top: 24px; }
    .fp-eco__grid { grid-template-columns: 1fr; }
    .fp-eco__col--a { padding-right: 0; }
    .fp-eco__col--b {
        margin-top: 20px;
        padding: 18px 0 0;
        border-left: 0;
        border-top: 1px solid var(--fp-rule);
    }
    .fp-eco__lead-t { text-align: left; font-size: 24px; }
    .fp-eco__lead .fp-eco__dek { text-align: left; }
    .fp-eco__lead .et-pcv2-hero__byline { justify-content: flex-start; text-align: left; }
    .fp-eco__cap { text-align: left; }
}


/* ═══════════════════════════════════════════════════════════════════
   FP 1.19.0 · EL BOLETÍN
   ═══════════════════════════════════════════════════════════════════
   NO es una maqueta nueva: es el nativo de Boluda (`.et-natad2`) con un
   formulario donde va el botón. Todo lo que se hereda —la rejilla de
   132px, el titular, la fila de abajo, la píldora negra— no se repite
   aquí; solo se escribe lo que cambia. Así, si mañana se retoca el
   nativo, el boletín se retoca con él.

   ALTURA
   ──────
   La tarjeta no puede ser más alta que la de Boluda, y ahí manda la
   columna de la foto: 132px. Todo lo que se añade —el formulario, la
   casilla, el aviso— tiene que caber dentro de eso, y por eso los
   textos son cortos y la casilla va en una línea de 10,5px. El aviso
   nace vacío y no ocupa nada hasta que hay algo que decir; para
   entonces el lector ya ha pulsado y que crezca 14px da igual. */

/* La zona: ancho de la columna A y filete que la separa de la última
   noticia — el mismo tratamiento que la publicidad de pie de columna. */
.fp-nlzone {
    width: 100%;
    margin: 18px 0 0;
    padding-top: 18px;
    border-top: 1px solid var(--fp-rule);
}

.et-natad2--nl {
    grid-template-columns: 172px 1fr;

    /* SIN suelo de altura a propósito. Llenar de arriba abajo y verse
       entera son incompatibles mientras la caja y la imagen tengan
       proporciones distintas: con `cover` se recorta y con `contain`
       sobra hueco. La única salida es que la caja adopte la proporción
       de la imagen, así que la altura de la tarjeta la marca ella. */

    /* Papel salmón y filete rojo, que esto es de la casa, no de un
       anunciante. */
    background: var(--fp-paper-2);
    border-color: var(--fp-rule);
    border-radius: 0;
}

.et-natad2--nl:hover { box-shadow: none; border-color: var(--fp-rule); }
.et-natad2--nl:hover .et-natad2__title { text-decoration: none; }

.et-natad2--nl .et-natad2__mid { gap: 3px; padding: 16px 16px; }
.et-natad2--nl .et-natad2__brand { color: var(--fp-claret); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.et-natad2--nl .et-natad2__title { color: var(--fp-ink); }
/* Las dos mitades —textos y formulario— centradas entre sí, y la fila
   entera centrada dentro de la tarjeta: el mismo aire arriba y abajo
   contra la imagen de la izquierda. */
.et-natad2--nl .et-natad2__mid { justify-content: center; }
.et-natad2--nl .et-natad2__row { align-items: center; gap: 18px; }

/* La columna de textos: antetítulo, titular y entradilla pegados, con
   su interlínea y nada más. */
.fp-nl__copy {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

/* ─── El bloque de marca, donde el nativo lleva la foto ───────────── */
/* El hueco de la foto lleva la imagen del boletín, en negro de marca por
   detrás: si el PNG tiene transparencia, se apoya en el negro en vez de
   dejar ver el salmón. `contain` y no `cover` porque es un logotipo —
   recortarlo por los bordes sería descabezarlo. */
/* ─── La imagen ────────────────────────────────────────────────────
   Sin recuadro negro y a todo el ancho de su columna.

   Con `background-image` había que elegir entre dos males: `cover` la
   recortaba por los lados y `contain` la encogía dejando el marco
   negro alrededor. Como <img> no hay que elegir: ocupa el ancho de la
   columna, se ve entera y la caja se adapta a su proporción.

   (Y de paso desaparece el problema de especificidad con el atajo
   `background:` de pc-v2.css, que era lo que ignoraba el `contain`.) */
.et-natad2--nl .fp-nl__media {
    display: block;
    align-self: stretch;
    background: none;
    padding: 0;
    line-height: 0;
}

/* A su proporción natural y a todo el ancho de la columna. La tarjeta
   crece o encoge con ella, así que no hay recorte NI hueco: los bordes
   de la imagen SON los bordes de la caja.

   El precio es que la altura del banner depende del archivo: si algún
   día se cambia por uno mucho más alto, la tarjeta se estira. Se avisa
   aquí para que no sorprenda. */
.et-natad2--nl .fp-nl__img {
    display: block;
    width: 100%;
    height: auto;
}

.fp-nl__side {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
    margin-left: auto;
}

.fp-nl__form {
    display: flex;
    align-items: center;
    gap: 6px;
}

/* La etiqueta existe para los lectores de pantalla; en pantalla basta
   el placeholder. */
.fp-nl__lbl {
    position: absolute;
    width: 1px; height: 1px;
    margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0 0 0 0);
    white-space: nowrap;
}

.fp-nl__input {
    width: 200px;
    padding: 8px 11px;
    border: 1px solid #c6cacd;
    border-radius: 999px;
    background: var(--fp-paper);
    font: 400 12.5px/1 inherit;
    color: var(--fp-ink);
}

.fp-nl__input::placeholder { color: var(--fp-muted); }
.fp-nl__input:focus { outline: 2px solid var(--fp-claret); outline-offset: 1px; }

.et-natad2--nl .fp-nl__btn {
    border: 0;
    cursor: pointer;
    background: var(--fp-claret);
    font-family: inherit;
    font-weight: 800;
    letter-spacing: .04em;
}

.et-natad2--nl .fp-nl__btn:hover:not(:disabled) { background: var(--fp-deep); }
.et-natad2--nl .fp-nl__btn:disabled { opacity: .55; cursor: default; }

/* ─── El consentimiento ────────────────────────────────────────────
   Sin marcar y legible. Una casilla premarcada no es consentimiento, y
   en un medio europeo eso se paga. */
.fp-nl__consent {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 10.5px;
    line-height: 1.3;
    color: var(--fp-muted);
    cursor: pointer;
}

.fp-nl__consent input {
    flex: 0 0 auto;
    width: 13px;
    height: 13px;
    accent-color: var(--fp-claret);
}

.et-natad2--nl .fp-nl__consent a,
.fp-nl__consent a {
    color: var(--fp-claret);
    font-weight: 700;
    text-decoration: underline;
}

/* Nace vacío: sin texto no ocupa ni una línea. */
.fp-nl__msg { display: block; text-align: right; font-size: 11.5px; font-weight: 700; }
.fp-nl__msg:empty { display: none; }
.fp-nl__msg.is-ok  { color: #0A7B4B; }
.fp-nl__msg.is-err { color: var(--fp-claret); }

/* ─── Móvil ────────────────────────────────────────────────────────
   Por debajo de 560px el correo y el botón no caben al lado del texto:
   la fila se parte y el formulario pasa a ocupar el ancho. */
@media (max-width: 560px) {
    .et-natad2--nl { grid-template-columns: 116px 1fr; }
    .et-natad2--nl .et-natad2__row { flex-wrap: wrap; }
    .fp-nl__side { flex: 1 1 100%; align-items: stretch; }
    .fp-nl__msg { text-align: left; }
    .fp-nl__input { width: auto; flex: 1 1 auto; min-width: 0; }
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.22.0 · AFRICA
   ═══════════════════════════════════════════════════════════════════
   La maqueta del recorte: logotipo grande arriba a la izquierda, debajo
   el titular en serif centrado con entradilla y firma, y la foto a lo
   alto ocupando la derecha.

   Es el único bloque de la portada que centra su texto, y por eso
   funciona: entre dos secciones alineadas a la izquierda, un bloque
   centrado se lee como una parada distinta y no como más de lo mismo. */

.fp-afr {
    display: grid;
    /* La foto pesa MENOS que el texto: el bloque lo sostiene el logotipo
       y el titular, no la imagen. */
    grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr);
    gap: 36px;
    align-items: center;
    margin: 34px 0;
    padding: 30px 0;
    /* SIN filetes propios. Los ponía yo «para no depender de los vecinos»
       y resultó que los vecinos ya los traían: salían cuatro líneas, dos
       arriba y dos abajo. El bloque de arriba cierra con la suya y
       Conflicts abre con la suya, así que aquí no hace falta ninguna. */
    --fp-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.fp-afr__col {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

/* ─── El logotipo ──────────────────────────────────────────────────
   La palabra en el rojo de marca y el punto en negro. Es la vuelta del
   original —donde la palabra es negra y el punto rojo— y funciona igual
   de bien porque el contraste sigue estando entre los dos. */
.fp-afr__logo {
    display: inline-flex;
    align-items: flex-end;
    gap: 8px;
    margin-bottom: 14px;   /* FP 1.73.2 · menos aire hasta el filete rojo */
    text-decoration: none;
}

/* CONTRA `.et-pcv2-page * { font-family: Inter }` DE pc-v2.css.
   ─────────────────────────────────────────────────────────────────
   Esa regla empata en especificidad con una sola clase y gana por
   orden de carga. Aquí van las TRES defensas a la vez, porque esto ya
   ha vuelto tres veces:

     1. doble clase — sube la especificidad a (0,2,0);
     2. `!important` — gana a cualquier declaración sin marcar, venga
        en el orden que venga y con la especificidad que sea;
     3. la pila de respaldo ESCRITA, no `var(--fp-serif)`. Si esa
        variable no estuviera definida en el ámbito, la declaración
        entera sería inválida y la propiedad heredaría… la Inter del
        selector universal. Justo el síntoma que veíamos. */
.fp-afr .fp-afr__logo-w {
    font-family: 'Playfair Display', Georgia, 'Times New Roman', serif !important;
    font-weight: 900;
    font-size: clamp(44px, 4.6vw, 66px);
    line-height: .85;
    letter-spacing: -.03em;
    color: var(--fp-claret);
}

/* El punto va como caja y no como carácter: un punto tipográfico cambia
   de tamaño y de posición con cada fuente, y aquí tiene que ser SIEMPRE
   el mismo círculo a la misma altura. */
.fp-afr__logo-d {
    width: .21em;
    height: .21em;
    margin-bottom: .07em;
    border-radius: 50%;
    background: var(--fp-deep);
    font-size: clamp(44px, 4.6vw, 66px);
}

/* ─── El texto ─────────────────────────────────────────────────── */
/* Corto y grueso: hace de antetítulo sin repetir la palabra que ya está
   en el logotipo justo encima. */
.fp-afr__rule {
    display: block;
    width: 54px;
    height: 4px;
    margin: 0 0 16px;
    background: var(--fp-claret);
}

.fp-afr__title {
    margin: 0;
    /* FP 1.73.0 · el titular se ensancha (15ch era un carril muy
       estrecho, orden del CEO): más aire a izquierda y derecha y menos
       cortes de línea absurdos. */
    max-width: 36ch;   /* FP 1.73.2 · más ancho aún (2ª pasada del CEO) */
    font-family: var(--fp-serif);
    font-weight: 400;
    font-size: clamp(26px, 2.7vw, 36px);
    line-height: 1.16;
    letter-spacing: -.02em;
    text-wrap: balance;
}

/* El antetítulo va CON el titular: misma familia, mismo cuerpo, mismo
   peso. Lo único que lo separa es el color. Es lo que hace que se lea
   como parte de la frase —«CAPITAL. Marsa Maroc plans…»— y no como una
   etiqueta pegada delante. */
.fp-afr .fp-afr__title .et-pcv2-hero__kicker {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    letter-spacing: inherit;
    text-transform: none;
    vertical-align: baseline;
    color: var(--fp-claret);
}

.fp-afr__title a { color: var(--fp-ink); text-decoration: none; }
.fp-afr__title a:hover { color: var(--fp-claret); }

.fp-afr__dek {
    margin: 18px 0 0;
    max-width: 74ch;   /* FP 1.73.2 · ensanchada con el titular */
    font-family: var(--fp-serif);
    font-size: 14.5px;
    line-height: 1.5;
    color: var(--fp-ink-2);
}

.fp-afr .et-pcv2-hero__byline {
    justify-content: center;
    margin: 16px 0 0;
    font-family: var(--fp-sans);
    font-size: 11.5px;
}

/* ─── FP 1.73.0 · La SEGUNDA de África ──────────────────────────────
   Un segundo titular bajo la principal, separado por un filete: solo
   antetítulo, titular y firma. Cuerpo menor y sin entradilla — tiene
   que leerse como el hermano pequeño, no como otra noticia principal. */
.fp-afr__next {
    width: 100%;
    max-width: 72ch;   /* FP 1.73.2 · a la anchura de la principal */
    margin: 24px auto 0;
    padding: 20px 0 0;
    border-top: 1px solid var(--fp-rule);
}

.fp-afr__next-t {
    margin: 0;
    font-family: var(--fp-serif);
    font-weight: 400;
    font-size: clamp(19px, 1.75vw, 24px);
    line-height: 1.22;
    letter-spacing: -.015em;
    text-wrap: balance;
}
.fp-afr__next-t a { color: var(--fp-ink); text-decoration: none; }
.fp-afr__next-t a:hover { color: var(--fp-claret); }

/* el antetítulo va DENTRO de la frase, igual que en la principal */
.fp-afr .fp-afr__next-t .et-pcv2-hero__kicker {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    letter-spacing: inherit;
    text-transform: none;
    vertical-align: baseline;
    color: var(--fp-claret);
}

.fp-afr .fp-afr__next .et-pcv2-hero__byline {
    justify-content: center;
    margin: 10px 0 0;
    font-size: 10.5px;
}

/* ─── La foto ──────────────────────────────────────────────────── */
.fp-afr__photo {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    background: var(--fp-paper-2) center / cover no-repeat;
}

/* ─── Móvil ────────────────────────────────────────────────────── */
@media (max-width: 860px) {
    .fp-afr {
        grid-template-columns: 1fr;
        gap: 22px;
        margin: 26px 0;
        padding: 24px 0;
    }
    /* La foto sube: en una columna, la imagen es lo que frena el scroll
       y el titular gana leyéndose debajo de ella. */
    .fp-afr__photo { order: -1; aspect-ratio: 16 / 10; }
    .fp-afr__logo { margin-bottom: 12px; }
    .fp-afr__title { max-width: none; }
    .fp-afr__dek,
    .fp-afr__next { max-width: none; }
}

/* ─── El sello de FP Plus en la firma ──────────────────────────────
   El logo de FP tiene otra proporción que el de CAMAL, así que no se
   le fija el ancho: se le da el alto y el navegador calcula el resto.
   Con un ancho heredado saldría estrujado.

   De 12 a 15px, y ALINEADO: caía por debajo del nombre del autor
   porque una imagen en línea se apoya en la línea base del texto, y
   la línea base no es el centro. Se centra con flex, que es lo que
   sí mira el alto real de los dos. */
.ipp-firma-marca {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
    line-height: 1;
}

.ipp-firma-marca img {
    display: block;
    width: auto;
    height: 15px;
}

/* ─── El boletín DENTRO de la noticia ──────────────────────────────
   FP 1.30.0 · En el pie de columna del home la tarjeta tiene 700px y
   todo cabe en una fila. En la noticia la columna es más estrecha, así
   que el titular partía en dos, la entradilla en tres y el formulario
   se quedaba sin sitio: se veía estrujado.

   Aquí la tarjeta se apila —imagen arriba a lo ancho, texto y
   formulario debajo— que es lo que hace cualquier bloque de captación
   en una columna de lectura. */
.et-article-v2 .fp-nlzone,
.dunes-template .fp-nlzone { margin: 30px 0 0; }

.et-article-v2 .et-natad2--nl,
.dunes-template .et-natad2--nl {
    grid-template-columns: 1fr;
    min-height: 0;
}

.et-article-v2 .et-natad2--nl .fp-nl__img,
.dunes-template .et-natad2--nl .fp-nl__img { max-height: 132px; object-fit: cover; }

.et-article-v2 .et-natad2--nl .et-natad2__row,
.dunes-template .et-natad2--nl .et-natad2__row { flex-wrap: wrap; gap: 14px; }

.et-article-v2 .et-natad2--nl .fp-nl__side,
.dunes-template .et-natad2--nl .fp-nl__side {
    flex: 1 1 100%;
    align-items: stretch;
    margin-left: 0;
}

.et-article-v2 .et-natad2--nl .fp-nl__input,
.dunes-template .et-natad2--nl .fp-nl__input { width: auto; flex: 1 1 auto; min-width: 0; }

.et-article-v2 .et-natad2--nl .fp-nl__msg,
.dunes-template .et-natad2--nl .fp-nl__msg { text-align: left; }

/* ─── Remates del artículo ─────────────────────────────────────────
   FP 1.31.0 */

/* El boletín, pegado al borde. Traía el margen del pie de columna del
   home, donde SÍ hace falta separarlo de la última noticia; al final de
   la noticia ese aire deja una franja salmón entre el borde y la
   imagen. */
.et-article-v2 .fp-nlzone,
.dunes-template .fp-nlzone {
    margin: 30px 0 0;
    padding-top: 0;
    border-top: 0;
}

/* La cabecera del panel del sidebar salía en blanco sobre salmón: se ve
   como un parche. En rojo rebajado se lee como parte de la casa. */
.et-cta-side__head,
.et-cta-side__kicker,
[class*="cta-side"] [class*="head"] {
    background: var(--fp-rule) !important;
    color: var(--fp-ink) !important;
}

/* ─── La ficha del autor y la firma · CLASES REALES ────────────────
   FP 1.33.0 · Las dos rondas anteriores fallaron porque escribí los
   selectores por patrón —`[class*="author-card"]`— sin abrir la
   plantilla. Las clases de verdad las pone el plugin:

     · firma de arriba  → .dai-tpl__byline
     · ficha del final  → .dai-tpl-op__author

   Apuntado a ellas, esta vez sí manda. */

/* ── La firma de arriba: menos aire bajo el filete ──
   El bloque traía padding abajo Y margen abajo, y encima el filete de
   separación tiene su propio espacio: tres aires sumados. Se queda uno. */
.dai-tpl__byline {
    gap: 12px;
    padding-bottom: 12px;
    margin-bottom: 16px;
}

.dai-tpl__byline-meta,
.dai-tpl__byline-read,
.dai-tpl__byline-city { line-height: 1.35; }

.dai-tpl__byline-info { gap: 2px; }

/* ── La ficha del final, LIMPIA ──
   FP 1.66.6 · Fuera el panel salmón y la línea roja (orden del CEO, con
   captura): la firma va al aire, centrada, sin caja. Y el retrato
   redondo DE VERDAD: la foto del autor no es cuadrada y al estirarla a
   la caja sin object-fit salía OVALADA. */
.dai-tpl-op__author {
    gap: 12px;
    padding: 0;
    background: transparent;
    border: 0;
}

.dai-tpl-op__author-photo img,
.dai-tpl-op__author-photo {
    width: 72px;
    height: 72px;
    flex: 0 0 auto;
}
.dai-tpl-op__author-photo img {
    object-fit: cover;
    border-radius: 50%;
}

.dai-tpl-op__author-info { gap: 3px; }

.dai-tpl-op__author-name {
    font-size: 15.5px;
    font-weight: 800;
    line-height: 1.2;
    color: var(--fp-ink);
    text-decoration: none;
}

.dai-tpl-op__author-name:hover { color: var(--fp-claret); }

.dai-tpl-op__author-bio {
    margin: 3px 0 0;
    font-size: 13px;
    line-height: 1.45;
    color: var(--fp-ink-2);
}

.dai-tpl-op__author-meta {
    margin-top: 2px;
    font-size: 11px;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--fp-claret);
}

/* ── El logo de CAMAL en el chat del artículo ──
   El PNG nuevo es más alto que el anterior, así que a 15px se comía la
   línea del titular. Bajado a 13 y alineado a la altura de la x. */
.nai__title-logo img { height: 17px !important; }

/* ── La cabecera del panel del sidebar: rojo con letra blanca ── */
.et-cta-sidebar__head,
.et-cta-sidebar__kicker {
    background: var(--fp-claret) !important;
    color: #FFF !important;
    border-color: var(--fp-claret) !important;
}

/* ─── El hueco sobre la imagen del boletín ──────────────────────────
   FP 1.34.0 · No era margen ni padding: es un NODO DE TEXTO.

   En la plantilla el <img> va en su propia línea, indentado dentro del
   <span> de la imagen. Ese salto de línea más la tabulación son un nodo
   de texto en blanco, y cuando el contenedor es de bloque el navegador
   le reserva una línea entera encima de la imagen. De ahí la franja
   salmón que salía DENTRO del borde de la tarjeta.

   Se colapsa poniendo el cuerpo de letra y la interlínea a cero en el
   contenedor: sin altura de línea, el espacio en blanco no ocupa. Se
   arregla en el CSS y no metiendo el <img> pegado a la etiqueta porque
   así no depende de que nadie reformatee la plantilla mañana. */
.et-natad2--nl .fp-nl__media {
    font-size: 0;
    line-height: 0;
    margin: 0;
    padding: 0;
}

.et-natad2--nl .fp-nl__img { vertical-align: top; }

/* Y sin separación entre las filas de la tarjeta apilada. */
.et-article-v2 .et-natad2--nl,
.dunes-template .et-natad2--nl { row-gap: 0; }

/* ═══════════════════════════════════════════════════════════════════
   FP 1.35.0 · LOS DOS QUE SE RESISTÍAN
   ═══════════════════════════════════════════════════════════════════
   Los dos fallaban por lo mismo: yo colgaba las reglas de una clase
   ANCESTRA que adivinaba, y si la plantilla usa otra el selector no
   casa. Ya me pasó con `.et-cta-side` cuando la real era
   `.et-cta-sidebar`. Aquí se deja de adivinar. */

/* ─── 1 · El boletín al final de la noticia ────────────────────────
   Ahora el propio PHP le pone `--art` al renderizarlo ahí, así que no
   depende de qué clase tenga el envoltorio de la plantilla. */
.fp-nlzone--art {
    margin: 30px 0 0;
    padding: 0;
    border: 0;
}

.fp-nlzone--art .et-natad2--nl {
    grid-template-columns: 1fr;
    row-gap: 0;
    min-height: 0;
    overflow: hidden;
}

/* La imagen, a sangre por arriba. El hueco venía del nodo de texto en
   blanco entre la etiqueta y el <img>; sin altura de línea no ocupa. */
.fp-nlzone--art .fp-nl__media {
    display: block;
    font-size: 0;
    line-height: 0;
    margin: 0;
    padding: 0;
    align-self: start;
}

.fp-nlzone--art .fp-nl__img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 150px;
    object-fit: cover;
    vertical-align: top;
    margin: 0;
}

.fp-nlzone--art .fp-nl__side {
    flex: 1 1 100%;
    align-items: stretch;
    margin-left: 0;
}

.fp-nlzone--art .et-natad2__row { flex-wrap: wrap; gap: 12px; }
.fp-nlzone--art .fp-nl__input { width: auto; flex: 1 1 auto; min-width: 0; }
.fp-nlzone--art .fp-nl__msg { text-align: left; }

/* ─── 2 · La cabecera del panel del sidebar ────────────────────────
   El rótulo ya salía rojo, pero la BANDA que lo envuelve seguía rosa:
   son dos elementos y yo solo pintaba uno. En vez de perseguir su
   clase, se pinta el PRIMER HIJO del panel, que es esa banda venga
   como venga. */
.et-cta-sidebar > *:first-child,
.et-cta-sidebar__head {
    background: var(--fp-claret) !important;
    border-color: var(--fp-claret) !important;
}

.et-cta-sidebar > *:first-child,
.et-cta-sidebar > *:first-child *,
.et-cta-sidebar__head,
.et-cta-sidebar__head * { color: #FFF !important; }

/* El chip del rótulo se funde con la banda: dos rojos distintos uno\n   dentro de otro se ven como un error, no como un diseño. */
.et-cta-sidebar__kicker {
    background: transparent !important;
    padding-left: 0 !important;
}

/* ─── El hueco sobre la imagen · TERCERA hipótesis ──────────────────
   FP 1.36.0 · He probado margen, relleno, interlínea y nodo de texto, y
   el hueco sigue. Queda una causa que no es CSS: que el PNG traiga una
   banda vacía —transparente o del color del papel— en su parte de
   arriba. Encajaría con todo lo visto: se ve del color de la tarjeta
   porque ES la tarjeta vista a través del archivo, y por eso ninguna
   propiedad de caja lo quita.

   Se recorta desde el CSS con `object-position`: la imagen llena una
   caja de alto fijo y se encuadra por debajo de esa banda. Es un apaño
   honesto —el arreglo de verdad es reexportar el PNG sin ese margen—,
   pero deja el banner presentable hoy. */
.fp-nlzone--art .fp-nl__img {
    height: 140px;
    max-height: 140px;
    object-fit: cover;
    object-position: center 62%;
}

/* ─── El hueco sobre la imagen · MEDIDO, no adivinado ───────────────
   FP 1.37.0 · Abrí el artículo en el navegador y leí quién gana la
   declaración. El culpable tiene nombre:

     .dunes-template-noticia .dai-tpl__body img { margin-top: 28px }
     (noticia.css, del PLUGIN)

   Es la regla que separa las fotos del cuerpo del texto, y es
   razonable… salvo que el banner del boletín también es un <img>
   dentro de ese cuerpo, así que se comía 28px justo encima.

   Especificidad (0,2,1) contra mis (0,2,0): mi `margin:0` perdía por
   un elemento. De ahí que tres intentos de margen, relleno e interlínea
   no movieran nada: la regla estaba bien escrita, simplemente perdía.

   Se gana con !important a propósito: es una excepción puntual a una
   regla del plugin que no puedo tocar desde el theme, no un parche a
   ciegas. Y la imagen no trae banda vacía —naturalWidth la mide bien—,
   así que se retira el recorte que puse por si acaso. */
.fp-nlzone--art .fp-nl__img {
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    height: auto !important;
    max-height: 160px;
    object-fit: cover;
    object-position: center center;
    display: block !important;
}

.fp-nlzone--art .fp-nl__media {
    margin: 0 !important;
    padding: 0 !important;
}

/* ─── AFRICA · el logotipo pasa a ser imagen ────────────────────────
   FP 1.40.0 · Medido en la web, no calculado a ojo: el rótulo de texto
   ocupaba 234 × 50 px con el viewport a 1280 (la palabra 213 + 8 de
   hueco + 12 del punto), y la imagen mide 893 × 208 → ratio 4.29.

   Para que ocupe LO MISMO manda la anchura, que es lo que se ve en una
   línea: 234 px a 1280 = 18.3vw. Y los topes salen de los mismos que
   tenía la tipografía —clamp(44px, 4.6vw, 66px) de cuerpo, que a razón
   de 3.98 anchos por cuerpo daba de 175 a 262 px—, así que la imagen
   crece y se para exactamente donde se paraba el texto. */
/* FP 1.41.0 · Un 15 % menos: de 234 px a 200 px con el viewport a 1280
   (18.3vw → 15.6vw), y los topes bajan en la misma proporción para que
   siga escalando igual. */
.fp-afr__logo-img {
    display: block;
    width: clamp(150px, 15.6vw, 224px);
    height: auto;
}

/* El contenedor era un flex de dos piezas con hueco; ahora lleva una
   sola y el hueco sobra. */
.fp-afr .fp-afr__logo { gap: 0; align-items: center; }

/* ─── FP 1.44.0 · La FOTO de la noticia: esquinas y franja ──────────
   En 1.43.0 se lo puse al logotipo por leer mal el encargo. Va aquí:
   la fotografía de la pieza, la columna de la derecha.

   Las esquinas, apenas insinuadas: 3 px. En un diario el redondeo
   grande delata plantilla.

   La franja es UN solo elemento con degradado de PARADA DURA, no dos
   cajas apiladas: así el corte cae en el 80 % exacto de la altura que
   tenga la foto en cada momento —cambia con el viewport y en móvil
   pasa de 4/3 a 16/10— sin píxeles fijos que se descuadren.

   El negro es el de la marca (`--fp-deep`), no #000 puro: pegado al
   granate, el negro absoluto canta y parece un error de impresión. */
.fp-afr__photo {
    position: relative;
    border-radius: 3px;
}

.fp-afr__photo::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 6px;
    border-radius: 3px 0 0 3px;
    background: linear-gradient(
        to bottom,
        var(--fp-claret) 0 80%,
        var(--fp-deep, #0D0D0D) 80% 100%
    );
}

/* Las reglas de `.fp-afr__logo-w` y `.fp-afr__logo-d` de más arriba
   quedan DORMIDAS: ya no hay spans que las casen. No se borran a
   propósito —documentan la pelea con `* { font-family: Inter }` de
   pc-v2.css, que volvió tres veces— y devuelven el rótulo de texto en
   cuanto se restauren los dos spans. */

/* ─── Los iconos del panel del sidebar, ahora imágenes ──────────────
   FP 1.42.0 · Las tarjetas de Infopuertos y CamalAI llevaban un SVG
   dibujado a mano; ahora llevan el favicon de la casa hermana y el
   icono rojo de CAMAL. El hueco medía 22×22 con el SVG, así que se
   respeta: `contain` para que ninguno de los dos se deforme si su
   proporción no es exactamente cuadrada. */
.et-cta-sidebar__icon img,
.et-cta__icon img {
    width: 22px;
    height: 22px;
    object-fit: contain;
    display: block;
    margin: 0;
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.45.0 · CABECERA MÓVIL Y ICONOS DEL PANEL
   ═══════════════════════════════════════════════════════════════════ */

/* ─── 1 · Los iconos de imagen no se pintan de rojo al pasar por encima
   `article-v2.css` pinta el cuadrito con el color de acento en :hover y
   al SVG le pone el trazo en blanco, así que el SVG se sigue leyendo.
   Un PNG oscuro, no: se queda invisible sobre el granate.

   El PHP marca el caso con `--img` en vez de que el CSS lo adivine, y
   aquí se le devuelve el fondo neutro en hover Y en :active —el CEO
   avisó de que también pasaba al PICAR, que es el estado que se queda
   pegado en pantallas táctiles—. */
.et-cta-sidebar__link:hover .et-cta-sidebar__icon--img,
.et-cta-sidebar__link:active .et-cta-sidebar__icon--img,
.et-cta-sidebar__link:focus .et-cta-sidebar__icon--img,
.et-cta-sidebar__link:focus-visible .et-cta-sidebar__icon--img {
    background: #F5F5F5 !important;
}

/* Y que no herede ningún tinte por si otra regla intenta recolorearlo. */
.et-cta-sidebar__icon--img img { filter: none !important; opacity: 1 !important; }

/* ─── 2 · El topbar móvil, en salmón ────────────────────────────────
   El subnav ya lo tenía (`--fp-paper`, más arriba en este fichero); el
   topbar se quedó con el blanco translúcido del theme original, y por
   eso la cabecera de móvil no cuajaba con la de PC. Se mantiene la
   translucidez y el desenfoque —es lo que le da el aire de app— y solo
   se cambia el color de debajo. */
.et-m__topbar {
    background: rgba(255, 241, 229, 0.92);
}

/* El pull-to-refresh y el fondo del bloque, del mismo papel: si no, al
   arrastrar aparece una franja blanca detrás de la cabecera. */
.et-m,
.et-m__ptr { background: var(--fp-paper); }

/* ─── 3 · El logotipo, más grande ───────────────────────────────────
   La altura la escribe el PHP en un `style=` en línea, sacada de la
   marca del Studio. Se corrige desde aquí con `!important` a propósito:
   un estilo en línea solo se gana así, y cambiar el valor por defecto
   en el código no habría servido —lo que manda es la opción guardada en
   la base de datos, que ya está escrita. */
.et-m__topbar .et-m__wordmark img { height: 40px !important; }

/* ─── 4 · El sello del subnav ───────────────────────────────────────
   FP 1.46.0 · Medido en el móvil real, no calculado a ojo, y salieron
   dos cosas:

   1. Mi regla de 1.45.0 NO SE APLICÓ. Pedía 18 px con un solo nombre
      de clase (0,1,0) y `mobile.css` fija 15 px con dos
      (`.et-m-subnav .et-m-subnav__brand-logo`, 0,2,0). Perdía. El
      sello seguía a 15. Aquí se escribe con TRES nombres para que no
      dependa del orden de carga.

   2. El desplazamiento NO era geométrico: el enlace, la fecha y el
      sello estaban centrados en el mismo eje —los tres a 75 px— y la
      tinta del PNG está centrada en su lienzo (8 px de aire arriba y
      8 abajo). Lo que engaña es el TEXTO: una línea de 10 px reserva
      hueco para las colas de la p y la j, y como esas letras no
      aparecen, las mayúsculas se ven más altas que el centro real de
      su caja. Centrar la imagen «bien» la deja por debajo del texto.

   Por eso la corrección es óptica y pequeña: 2 px arriba. Un número
   mayor arreglaría el síntoma inventando un descuadre al revés. */
.et-m-subnav .et-m-subnav__brand .et-m-subnav__brand-logo {
    height: 17px;
    width: auto !important;
    max-width: none !important;
    margin-top: -2px;
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.47.0 · /plus/ · papel salmón y maqueta sin chat
   ═══════════════════════════════════════════════════════════════════ */

/* ─── 1 · El papel ──────────────────────────────────────────────────
   El módulo de /plus/ se escribió con blanco en las cajas
   (`var(--et-paper, #fff)`), así que quedaba una isla blanca dentro de
   un diario salmón. Se pasa a `--fp-paper` en el contenedor y en las
   cajas; los filetes al granate claro para que no canten sobre él. */
.ipp,
.ipp-wrap,
.ipp-top,
.ipp-bottom,
.ipp-col,
.ipp-col--fav,
.ipp-col--dest,
.ipp-intro { background: var(--fp-paper) !important; }

.ipp-col,
.ipp-intro { border-color: var(--fp-rule) !important; }

/* ─── 2 · Sin chat, una sola columna arriba ─────────────────────────
   `.ipp-top` era una rejilla de 400px + resto para intro y chat. Con el
   chat fuera, dejar las dos columnas deja media portada vacía. */
.ipp-top { grid-template-columns: 1fr !important; }

/* ─── 3 · Los exclusivos, en horizontal y a todo el ancho ───────────
   `.ipp-bottom` partía el ancho en dos: guardados | exclusivos. Ahora
   se apilan, cada uno a todo el ancho, y los exclusivos reparten sus
   piezas en fila.

   El rótulo ocupa la fila entera (`1 / -1`) porque es el título del
   bloque, no una tarjeta más; y las tarjetas pasan de fila con foto al
   lado a columna con foto arriba, que es lo que pide un carril
   horizontal. `auto-fit` decide cuántas caben sin números fijos. */
.ipp-bottom { grid-template-columns: 1fr !important; }

.ipp-col--dest {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 24px;
    align-items: start;
}

.ipp-col--dest .ipp-col__head { grid-column: 1 / -1; }

.ipp-col--dest .ipp-dest {
    flex-direction: column;
    gap: 10px;
    padding: 0;
    border-top: 0;                 /* el filete separaba filas; ya no hay filas */
}

.ipp-col--dest .ipp-dest__foto,
.ipp-col--dest .ipp-dest img {
    width: 100%;
    height: auto;
    order: -1;                      /* la foto, arriba de la tarjeta */
    border-radius: 3px;
}

/* Los guardados siguen en lista vertical: son la hemeroteca del lector,
   se leen de arriba abajo y no compiten con el carril de exclusivos. */
.ipp-col--fav .ipp-dest { flex-direction: row; }

/* ═══════════════════════════════════════════════════════════════════
   FP 1.48.0 · EL PANEL DEL LECTOR (.et-acc-*)
   ═══════════════════════════════════════════════════════════════════ */

/* ─── Papel salmón en TODO ──────────────────────────────────────────
   El panel se pintó en blanco. Se pasa al papel del diario: contenedor,
   tarjetas, pestañas y bloques. */
.et-acc,
.et-acc__head,
.et-acc__tabs,
.et-acc__card,
.et-acc__panel,
.et-acc__box,
.et-acc__verify,
.et-acc__cards,
.et-acc__main,
.et-acc__side { background: var(--fp-paper) !important; }

.et-acc__card,
.et-acc__panel,
.et-acc__box { border-color: var(--fp-rule) !important; }

/* ─── Fuera la tarjeta de CAMAL AI ──────────────────────────────────
   El PHP le pone `--camal` a esa tarjeta y solo a esa, así que no hay
   que contar posiciones ni usar :nth-child, que se rompe en cuanto se
   añade o se quita una tarjeta. */
.et-acc__card--camal { display: none !important; }

/* ─── «Exclusive stories», en fila y a todo el ancho ────────────────
   Mismo criterio que en /plus/: una rejilla que reparte con `auto-fit`
   —sin número fijo de columnas— y la foto arriba en vez de al lado. */
.et-acc__exclusivas,
.et-acc__plus-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 22px;
    align-items: start;
}

.et-acc__exclusivas > h2,
.et-acc__plus-list > h2 { grid-column: 1 / -1; }

.et-acc__exclusivas article,
.et-acc__plus-list article {
    display: flex;
    flex-direction: column;
    gap: 10px;
    border-top: 0;
    padding: 0;
}

.et-acc__exclusivas article img,
.et-acc__plus-list article img {
    width: 100%;
    height: auto;
    order: -1;
    border-radius: 3px;
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.49.0 · NADA EN BLANCO, TODO EN GRANATE
   ═══════════════════════════════════════════════════════════════════
   En la captura quedaban islas blancas: el panelón del fondo, las
   tarjetas, el pie. Se define un SEGUNDO papel, un poco más oscuro que
   el del diario, para las cajas que antes eran blancas: así se
   distinguen del fondo sin volver al blanco. */
:root {
    --fp-paper-3: #FBE6D6;   /* salmón un punto más oscuro que --fp-paper */
}

/* Las cajas que salían blancas, al papel oscuro. */
.et-acc,
.et-acc__panel,
.et-acc__box,
.et-acc__card,
.et-acc__verify,
.ipp-col,
.ipp-intro,
.et-cta-sidebar,
.et-natad2,
.fp-nlzone .et-natad2 { background: var(--fp-paper-3) !important; }

/* El pie, del papel del diario y no blanco. */
.et-pc-footer,
.et-footer,
footer.et-footer,
.et-m__footer { background: var(--fp-paper) !important; }

/* ─── Bordes y separadores, en granate ──────────────────────────────
   Todos los filetes del sitio pasan al rojo de marca. Se usa el token
   claro para las líneas finas —un granate pleno en cada separador
   convertiría la página en una reja— y el pleno solo donde ya había un
   borde con peso. */
.et-acc__card,
.et-acc__panel,
.et-acc__box,
.et-acc__verify,
.et-acc__tabs,
.ipp-col,
.ipp-intro,
.et-natad2,
.et-cta-sidebar,
.et-pc-footer,
.et-footer { border-color: var(--fp-rule) !important; }

/* Los separadores horizontales y verticales, sin excepción. */
.et-acc__tabs a,
.et-acc__h2,
.ipp-col__head,
.ipp-dest,
.et-acc hr,
.ipp hr,
hr { border-color: var(--fp-rule) !important; }

hr { background: var(--fp-rule) !important; }

/* ═══════════════════════════════════════════════════════════════════
   FP 1.50.0 · CERO BLANCO · CLASES LEÍDAS DEL MARCADO
   ═══════════════════════════════════════════════════════════════════
   En 1.49.0 pinté clases que me inventé (`.et-acc__panel`,
   `.et-acc__exclusivas`) y ninguna existe. Las de verdad, leídas de
   inc/user-panel.php, son: `.et-acc__wrap`, `.et-acc__content`,
   `.et-acc__two`, `.et-acc__col`, `.et-acc__grid`. El recuadro blanco
   grande era `.et-acc__content`. */

.et-acc,
.et-acc__wrap,
.et-acc__content,
.et-acc__two,
.et-acc__col,
.et-acc__grid,
.et-acc-send,
.et-acc-nov,
.et-acc__empty { background: var(--fp-paper) !important; }

.et-acc__content { border-color: var(--fp-rule) !important; }

/* ─── Barrido: nada en blanco ────────────────────────────────────────
   Va a propósito con brocha ancha —cualquier caja con `#fff` o
   `#FFFFFF` inline o heredado— porque la instrucción es que NO quede
   ni un fondo blanco. Es un barrido, no un diseño: cuando el panel se
   rehaga, esto debe volver a sus tokens de origen. */
body,
#page, #content, .site, .site-content,
[class*="footer"],
[class*="__panel"], [class*="__card"], [class*="__box"] {
    background-color: var(--fp-paper) !important;
}

/* Las cajas dentro del panel, un punto más oscuras para que se
   distingan del papel del diario sin volver al blanco. */
.et-acc__card,
.et-acc__verify,
.et-acc__grid > a,
.et-acc__grid > div { background-color: var(--fp-paper-3) !important; }

/* ─── Las exclusivas, en UNA fila a todo el ancho ───────────────────
   `.et-acc__two` partía el ancho en dos para dejar sitio al chat. Sin
   chat, una sola columna; y las piezas de `.et-acc__col` se reparten
   en fila con la foto arriba. */
.et-acc__two { grid-template-columns: 1fr !important; display: grid !important; }

.et-acc__col {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 24px;
    align-items: start;
}

.et-acc__col > .et-acc__h2,
.et-acc__col > a.et-acc__all,
.et-acc__col > .et-acc__more { grid-column: 1 / -1; }

.et-acc__col article {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px;
    padding: 0 !important;
    border-top: 0 !important;
}

.et-acc__col article img {
    width: 100%;
    height: auto;
    order: -1;
    border-radius: 3px;
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.51.0 · LOS DOS QUE FALTABAN, CON EL SELECTOR CORRECTO
   ═══════════════════════════════════════════════════════════════════ */

/* ─── 1 · Las exclusivas, ahora sí en fila ───────────────────────────
   Puse la rejilla en `.et-acc__col`, el padre. Pero las piezas van
   dentro de un `<ul class="et-acc__stack">`, así que para esa rejilla
   la lista entera era UN solo hijo: por eso seguían apiladas. La
   rejilla va en la LISTA. */
.et-acc__stack {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 24px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.et-acc__stack-item {
    border-top: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
}

.et-acc__stack-item img {
    width: 100%;
    height: auto;
    border-radius: 3px;
}

/* El padre vuelve a ser un bloque normal: con la rejilla en la lista,
   la del padre solo servía para descolocar el botón del archivo. */
.et-acc__col { display: block !important; }
.et-acc__col > .et-acc__h2 { margin-bottom: 16px; }

/* ─── 2 · El pie ────────────────────────────────────────────────────
   Aquí estaba el fallo: pinté `[class*="footer"]` y `.et-footer`, pero
   la banda blanca es el ELEMENTO `<footer>`, que no lleva ninguna clase
   con esa palabra. Se pinta por etiqueta y se acaba la discusión. */
footer,
footer > *,
body > footer { background-color: var(--fp-paper) !important; }

/* ─── 3 · El sello de FP Plus, a la altura del texto ─────────────────
   Es el mismo fallo que en el subnav del móvil: una imagen en línea se
   apoya en la LÍNEA BASE, y la línea base no es el centro —queda hueco
   debajo para las colas de la p y la j—. Al lado de un autor en
   mayúsculas y versalitas, la imagen cae.

   Se centra con flex en su propio enlace, que es lo que funcionó allí,
   y se le quita el desfase de la línea base a la imagen. Sin números
   mágicos: el centrado lo calcula el navegador. */
.ipp-firma-marca {
    display: inline-flex !important;
    align-items: center;
    vertical-align: middle;
    line-height: 0;
    position: relative;
    top: -1px;              /* el ajuste óptico, 1px, no más */
}

.ipp-firma-marca img {
    display: block;
    vertical-align: middle;
    margin: 0;
}

/* ─── FP 1.52.0 · El sello de FP Plus junto al kicker ────────────────
   El kicker es un `<span>` en línea, así que el sello va a su lado sin
   tocar la maqueta. Se centra con flex por la razón de siempre —una
   imagen en línea se apoya en la línea base, no en el centro— y se le
   da SOLO el alto: el ancho lo calcula el navegador y no se estruja.

   18px: por encima del cuerpo del kicker (11-12px) para que se lea el
   logotipo, y por debajo del titular para que no compita con él. */
.dai-tpl__kicker + .fp-plus-seal,
.fp-plus-seal {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
    margin-left: 10px;
    line-height: 0;
    text-decoration: none;
    position: relative;
    top: -1px;
}

.fp-plus-seal img {
    display: block;
    height: 18px;
    width: auto;
    max-width: none;
    margin: 0;
}

.fp-plus-seal:hover img { opacity: .82; }

@media (max-width: 640px) {
    .fp-plus-seal img { height: 16px; }
    .fp-plus-seal { margin-left: 8px; }
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.53.0 · EL BLANCO DE /plus/ Y LOS SEPARADORES
   ═══════════════════════════════════════════════════════════════════
   Medí el home con el navegador: NO hay ninguna banda blanca grande.
   Luego el blanco que se ve en /plus/ lo pone un envoltorio propio de
   esa página, y a esa no puedo entrar sin sesión.

   Así que cambio de táctica: en vez de PINTAR de salmón cada caja que
   adivine —llevo tres rondas fallando en eso—, dejo los envoltorios
   TRANSPARENTES. Un envoltorio transparente enseña el `body`, que ya
   es salmón, y no puede equivocarse de color: si acierto, funciona; si
   no, no rompe nada. */
main,
#main, #primary, #content,
.site-main, .content-area,
[class*="__wrap"],
[class*="__shell"],
[class*="__inner"],
[class*="-page"] {
    background-color: transparent !important;
}

/* El `body` es quien pone el color, y con él el pie. */
html, body { background-color: var(--fp-paper) !important; }

/* ─── Los separadores de las noticias ────────────────────────────────
   Una línea de granate claro con aire a los dos lados. Va en el hueco
   ENTRE piezas —`+`, no en todas— para que no quede un filete suelto
   colgando debajo de la última. */
.et-acc__stack-item + .et-acc__stack-item,
.ipp-dest + .ipp-dest,
.et-acc__col article + article {
    border-top: 1px solid var(--fp-rule) !important;
    padding-top: 22px !important;
    margin-top: 22px !important;
}

/* En rejilla el separador se pone a la IZQUIERDA, que es donde está el
   vecino: una línea horizontal entre columnas no separa nada. */
@media (min-width: 700px) {
    .et-acc__stack {
        gap: 0 !important;
        column-gap: 0 !important;
    }
    .et-acc__stack-item {
        padding: 0 22px !important;
        border-left: 1px solid var(--fp-rule) !important;
    }
    .et-acc__stack-item:first-child {
        border-left: 0 !important;
        padding-left: 0 !important;
    }
    .et-acc__stack-item + .et-acc__stack-item {
        border-top: 0 !important;
        margin-top: 0 !important;
        padding-top: 0 !important;
    }
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.54.0 · EL PIE A SANGRE Y EL SELLO PEQUEÑO
   ═══════════════════════════════════════════════════════════════════ */

/* ─── 1 · El pie, de lado a lado ─────────────────────────────────────
   El pie es `.et-pcv2-footer` y ya salía salmón: lo blanco eran los
   LADOS, es decir lo que hay DETRÁS de él. Llevo tres rondas buscando
   ese elemento a ciegas, así que dejo de buscarlo: con `box-shadow` de
   100vmax el propio pie pinta hasta los bordes de la pantalla, y da
   igual qué haya debajo. `clip-path` recorta el desbordamiento lateral
   para que no aparezca barra horizontal. */
.et-pcv2-footer,
.et-m__footer,
footer[class*="footer"] {
    background-color: var(--fp-paper) !important;
    box-shadow: 0 0 0 100vmax var(--fp-paper);
    clip-path: inset(0 -100vmax);
    position: relative;
}

/* ─── 2 · El sello de FP Plus, pequeño ───────────────────────────────
   Salía enorme porque la hoja de la plantilla estira TODA imagen del
   artículo a `width:100%`. Es la misma pelea de siempre: una regla de
   una clase contra otra de una clase, y gana la que carga después. Se
   gana con dos nombres y `!important`, y se fija el ancho además del
   alto para que no haya forma de estirarla. */
.dai-tpl__header .fp-plus-seal img,
.fp-plus-seal img {
    height: 20px !important;
    width: auto !important;
    max-width: 140px !important;
    max-height: 20px !important;
    display: block !important;
    margin: 0 !important;
    border-radius: 0 !important;
}

.dai-tpl__header .fp-plus-seal { margin-left: 0; }

@media (max-width: 640px) {
    .dai-tpl__header .fp-plus-seal img,
    .fp-plus-seal img { height: 17px !important; max-height: 17px !important; }
}

/* ─── FP 1.55.0 · Related stories ────────────────────────────────────
   El rótulo llevaba 16px de margen MÁS 9 de relleno más el filete, y
   encima la rejilla empieza con su propio aire: sumado, un pasillo. Se
   recorta a la mitad, que es lo que separa un rótulo de su contenido en
   el resto del diario. */
.nairel__head { margin-bottom: 10px !important; padding-bottom: 7px !important; }
.nairel { margin-top: 26px !important; }
.nai__rel-grid { margin-top: 0 !important; }

/* La firma de la tarjeta: autor en negro y «custom» en granate, igual
   que en el home. Va en una línea con un separador, no apilado. */
.nai__card-dt {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px;
    font-size: 11.5px;
    line-height: 1.35;
}

.nai__card-aut { color: var(--fp-ink, #1A1614); font-weight: 700; }

.nai__card-cus {
    color: var(--fp-claret) !important;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}

/* El punto que los separa se dibuja, no se escribe: así no aparece
   colgando cuando la pieza no tiene «custom». */
.nai__card-aut + .nai__card-cus::before {
    content: "·";
    color: var(--fp-rule);
    margin-right: 6px;
    font-weight: 400;
}

/* ─── FP 1.56.0 · La franja blanca entre el contenido y el pie ────────
   Escaneé el home midiendo TODO lo ancho junto al pie —esta vez sin el
   filtro de altura que se me comió las franjas finas la vez anterior—:
   no hay nada blanco, y `html` y `body` ya son salmón. Luego la franja
   es de `/plus/`, y a esa página no entro sin sesión.

   Una franja a todo el ancho solo puede ser un elemento de PRIMER
   NIVEL. Así que se hace transparente cualquier hijo directo de `body`
   que no sea el envoltorio del contenido: transparente enseña el
   salmón del `body` y no puede pintar de un color equivocado.

   Se excluyen `header`, `footer` y `main` para no desactivar sus
   fondos propios, que sí están puestos a conciencia. */
body > div:not([class*="header"]):not([class*="footer"]):not([id*="wpadmin"]),
body > section,
body > aside {
    background-color: transparent !important;
}

/* Y el hueco que quede entre el último bloque y el pie, del papel. */
body::after {
    content: "";
    display: block;
    background: var(--fp-paper);
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.57.0 · PÁGINAS LEGALES · CHASIS ESTILO GOOGLE
   ═══════════════════════════════════════════════════════════════════
   Tres zonas: barra lateral pegajosa con las siete políticas, columna
   de lectura estrecha y pie de navegación. La medida de lectura manda:
   680px es donde una línea cabe en un golpe de vista, y por eso el
   texto no se estira aunque haya sitio.

   Paleta: papel salmón del diario, granate para lo que marca, y el
   navy oscuro de los botones de MY FP para la barra y los estados
   activos —es el azul que pidió el CEO—. */
:root {
    --fpl-navy: #114F6E;      /* el de los botones de MY FP */
    --fpl-navy-d: #0C3B52;
}

.fpl {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    gap: 56px;
    max-width: 1100px;
    margin: 0 auto;
    padding: 40px 24px 72px;
    align-items: start;
    background: var(--fp-paper);
}

/* ─── La barra lateral ─────────────────────────────────────────────── */
.fpl__nav { position: sticky; top: 92px; }

.fpl__nav-k {
    display: block;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--fp-claret);
    margin: 0 0 14px;
    padding-bottom: 10px;
    border-bottom: 2px solid var(--fp-claret);
}

.fpl__nav-list { list-style: none; margin: 0; padding: 0; }

.fpl__nav-a {
    display: block;
    padding: 9px 12px;
    font-size: 14px;
    line-height: 1.35;
    color: var(--fp-ink, #1A1614);
    text-decoration: none;
    border-left: 3px solid transparent;
    border-radius: 0 3px 3px 0;
    transition: background .15s, color .15s, border-color .15s;
}

.fpl__nav-a:hover { background: rgba(17, 79, 110, .06); color: var(--fpl-navy); }

/* La activa: el navy pleno. Es el ancla visual de toda la página. */
.fpl__nav-a.is-on {
    background: var(--fpl-navy);
    border-left-color: var(--fp-claret);
    color: #FFF;
    font-weight: 700;
}

.fpl__nav-help {
    margin-top: 26px;
    padding: 16px;
    border: 1px solid var(--fp-rule);
    border-radius: 4px;
    font-size: 13px;
    line-height: 1.5;
}
.fpl__nav-help strong { display: block; margin-bottom: 4px; }
.fpl__nav-help a { color: var(--fp-claret); word-break: break-all; }

/* ─── La columna de lectura ────────────────────────────────────────── */
.fpl__body { max-width: 680px; }

.fpl__head { padding-bottom: 20px; border-bottom: 1px solid var(--fp-rule); margin-bottom: 26px; }

.fpl__h1 {
    margin: 0 0 8px;
    font-size: clamp(30px, 3.4vw, 42px);
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -.02em;
    color: var(--fp-ink, #1A1614);
}

.fpl__date { margin: 0; font-size: 13px; color: #6B6259; }

/* El índice: caja discreta, no un menú. */
.fpl__toc {
    margin: 0 0 34px;
    padding: 18px 20px;
    background: var(--fp-paper-3, #FBE6D6);
    border-left: 3px solid var(--fp-claret);
    border-radius: 0 4px 4px 0;
}
.fpl__toc-k {
    display: block;
    font-size: 10.5px; font-weight: 800; letter-spacing: .1em;
    text-transform: uppercase; color: var(--fp-claret); margin-bottom: 10px;
}
.fpl__toc ol { margin: 0; padding-left: 18px; }
.fpl__toc li { margin: 0 0 6px; font-size: 14px; }
.fpl__toc a { color: var(--fpl-navy); text-decoration: none; }
.fpl__toc a:hover { text-decoration: underline; }

/* El texto. Interlínea generosa: son documentos que se leen despacio. */
.fpl__text { font-size: 16.5px; line-height: 1.72; color: #2B2520; }
.fpl__text p { margin: 0 0 20px; }
.fpl__text a { color: var(--fpl-navy); text-underline-offset: 3px; }
.fpl__text a:hover { color: var(--fp-claret); }
.fpl__text strong { color: var(--fp-ink, #1A1614); }

.fpl__text .fpl-lede {
    font-size: 19px;
    line-height: 1.6;
    color: #4A4038;
    margin-bottom: 32px;
}

.fpl__text h2 {
    margin: 42px 0 14px;
    font-size: 21px;
    font-weight: 800;
    letter-spacing: -.01em;
    color: var(--fp-ink, #1A1614);
    scroll-margin-top: 100px;   /* que el ancla no quede bajo la cabecera */
}

/* Un filete corto de granate encima de cada sección: marca el arranque
   sin necesidad de una línea a todo el ancho. */
.fpl__text h2::before {
    content: "";
    display: block;
    width: 34px; height: 3px;
    background: var(--fp-claret);
    margin-bottom: 12px;
}

/* ─── El pie de la página ──────────────────────────────────────────── */
.fpl__foot { margin-top: 48px; padding-top: 26px; border-top: 1px solid var(--fp-rule); }

.fpl__foot-nav { display: flex; justify-content: space-between; gap: 18px; margin-bottom: 22px; }

/* FP 1.94.0 · Más pequeños, y enfrentados de verdad. El `flex: 0 1 auto`
   evita que uno solo se estire y ocupe la fila entera cuando falta el
   otro —en la primera y la última página del recorrido—. */
.fpl__prev, .fpl__next {
    display: flex; flex-direction: column; gap: 2px;
    padding: 9px 13px;
    border: 1px solid var(--fp-rule);
    border-radius: 3px;
    text-decoration: none;
    flex: 0 1 auto;
    max-width: 47%;
    transition: border-color .15s, background .15s;
}
.fpl__next { text-align: right; margin-left: auto; }
.fpl__prev:hover, .fpl__next:hover { border-color: var(--fpl-navy); background: rgba(17,79,110,.04); }

.fpl__prev span, .fpl__next span {
    font-size: 10.5px; font-weight: 800; letter-spacing: .1em;
    text-transform: uppercase; color: var(--fp-claret);
}
.fpl__prev strong, .fpl__next strong { font-size: 12.5px; font-weight: 600; color: var(--fp-ink, #1A1614); }

.fpl__legalese { margin: 0; font-size: 13px; color: #6B6259; }
.fpl__legalese a { color: var(--fp-claret); }

/* ─── Móvil ────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
    .fpl { grid-template-columns: 1fr; gap: 30px; padding: 26px 18px 56px; }
    .fpl__nav { position: static; }
    .fpl__nav-list { display: flex; flex-wrap: wrap; gap: 6px; }
    .fpl__nav-a { border-left: 0; border-radius: 3px; padding: 7px 11px; font-size: 13px; }
    .fpl__nav-a.is-on { border-left: 0; }
    .fpl__body { max-width: none; }
    .fpl__foot-nav { flex-direction: column; }
    .fpl__prev, .fpl__next { max-width: none; text-align: left; margin-left: 0; }
}

/* ─── FP 1.59.0 · El chasis legal, al ancho del diario ────────────────
   Lo puse en 1100 px por costumbre de página de texto, pero el sitio
   mide 1200 y la diferencia se ve: el bloque quedaba metido hacia
   dentro respecto a la cabecera. Se iguala.

   La columna de lectura sube de 680 a 760 px: sigue siendo una medida
   cómoda —bastante por debajo del punto en que una línea se hace
   difícil de seguir— y aprovecha el ancho nuevo sin estirar el texto.
   La barra lateral gana 40 px para que los títulos largos como
   «Terms of Service» no partan en dos líneas. */
.fpl {
    max-width: 1200px !important;
    grid-template-columns: 300px minmax(0, 1fr) !important;
    gap: 64px !important;
}

.fpl__body { max-width: 760px !important; }

@media (max-width: 900px) {
    .fpl { grid-template-columns: 1fr !important; gap: 30px !important; }
    .fpl__body { max-width: none !important; }
}

/* ─── FP 1.60.0 · El chasis SE SALE del contenedor estrecho ───────────
   Aquí estaba el fallo de verdad, y es el mismo error de razonamiento
   que el del pie: yo ponía `max-width: 1200px` sobre `.fpl`, pero
   `max-width` solo LIMITA, no ensancha. Si la plantilla de página mete
   el contenido en una caja de ~600 px —que es lo que se ve en la
   captura: 300 de barra + 64 de hueco + 250 de texto—, ningún ancho
   máximo va a sacarlo de ahí.

   La solución no es adivinar la clase de esa caja: es que el bloque se
   salga de ella. `margin-left: 50%` lo lleva al centro del padre y
   `translateX(-50%)` lo devuelve la mitad de SU propio ancho, así que
   queda centrado en la pantalla midiendo lo que le pidamos, esté donde
   esté. Es el mismo recurso que el sangrado del pie. */
.fpl {
    width: min(1200px, calc(100vw - 48px)) !important;
    max-width: none !important;
    margin-left: 50% !important;
    margin-right: 0 !important;
    transform: translateX(-50%);
    box-sizing: border-box;
}

/* El título que la plantilla pinta encima sobra: el chasis ya trae el
   suyo, y salían los dos («Transparency» dos veces en la captura). */
.page .entry-title + .fpl,
.fpl { margin-top: 8px !important; }

body.page:has(.fpl) .entry-title,
body.page:has(.fpl) .page-title { display: none !important; }

@media (max-width: 900px) {
    .fpl { width: calc(100vw - 32px) !important; }
}

/* ─── FP 1.61.0 · Anterior / Siguiente ────────────────────────────────
   Salían como dos cajas sueltas con el rótulo encima y el título
   debajo, sin jerarquía y sin dirección: no se leía cuál va hacia
   atrás. Se rehacen como dos tarjetas con flecha, la de «Next»
   alineada a la derecha, y el rótulo en versalita granate sobre el
   título en negro. */
.fpl__foot-nav {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    align-items: stretch;
}

.fpl__prev, .fpl__next {
    display: grid !important;
    grid-template-columns: auto 1fr;
    align-items: center;
    gap: 14px;
    max-width: none !important;
    margin: 0 !important;
    /* FP 1.94.0 · Más pequeños (orden del CEO): la mitad de alto y de
       aire. Son navegación de pie de página, no una llamada a la acción. */
    padding: 10px 13px !important;
    background: var(--fp-paper-3, #FBE6D6);
    border: 1px solid var(--fp-rule) !important;
    border-radius: 3px;
    min-height: 0;
}

.fpl__next { grid-template-columns: 1fr auto; text-align: right !important; }

/* La flecha, dibujada en CSS: no depende de ninguna fuente de iconos. */
.fpl__prev::before, .fpl__next::after {
    content: "";
    width: 7px; height: 7px;
    border-top: 2px solid var(--fp-claret);
    border-right: 2px solid var(--fp-claret);
    transition: transform .15s;
}
.fpl__prev::before { transform: rotate(-135deg); }
.fpl__next::after  { transform: rotate(45deg); }
.fpl__prev:hover::before { transform: rotate(-135deg) translate(2px, 2px); }
.fpl__next:hover::after  { transform: rotate(45deg) translate(2px, 2px); }

.fpl__prev span, .fpl__next span {
    display: block;
    margin-bottom: 1px;
    font-size: 9px !important;
    letter-spacing: .1em !important;
}

.fpl__prev strong, .fpl__next strong {
    display: block;
    font-size: 12.5px !important;
    line-height: 1.2;
    font-weight: 700;
}

.fpl__prev:hover, .fpl__next:hover {
    border-color: var(--fpl-navy) !important;
    background: rgba(17, 79, 110, .05);
}

/* Si no hay anterior, el hueco no debe dejar una caja vacía. */
.fpl__foot-nav > span:empty { display: none; }
.fpl__foot-nav:has(> span:empty) { grid-template-columns: 1fr; justify-items: end; }

@media (max-width: 640px) {
    .fpl__foot-nav { grid-template-columns: 1fr; }
    .fpl__next { text-align: left !important; grid-template-columns: auto 1fr; }
    .fpl__next::after { order: -1; transform: rotate(45deg); }
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.66.3 · EL CENTRO DE BOLETINES, EN LA PALETA DE LA CASA
   ───────────────────────────────────────────────────────────────────
   El bloque antiguo de tarjetas (pc-v2/newsletter.php) vuelve al home
   y a las noticias, antes del footer. Aquí se viste de FP: los paneles
   blancos pasan al salmón un punto más oscuro que el papel (#F6E5D2,
   el mismo de la caja de beneficios del registro) y la rejilla baja de
   5 columnas a 4 — ahora hay 4 boletines, no 5. */
.et-pcv2-news__grid { grid-template-columns: repeat(4, 1fr); }
.et-pcv2-news__card,
.et-pcv2-news__media,
.et-pcv2-news__card.has-logo .et-pcv2-news__media {
    background-color: #F6E5D2;
}
.et-pcv2-news__media,
.et-pcv2-news__card.has-logo .et-pcv2-news__media { border-color: #EADBC8; }
.et-pcv2-newsletter-band .et-pcv2-news::after { background: rgba(26, 22, 20, .16); }

/* ═══════════════════════════════════════════════════════════════════
   FP 1.67.0 · CHOKEPOINT MONITOR
   ───────────────────────────────────────────────────────────────────
   Reutiliza entero el diseño .rkp del World Port Ranking; aquí solo
   viven las dos piezas nuevas: el chip de variación semanal (el
   titular del dato) y la mezcla de buques en pequeño bajo el nombre. */
/* FP 1.69.0 · chips y mezcla compartidos por toda la familia PortWatch
   (chokepoints, ports live, trade pulse). */
.rkp--fp .rkp__delta {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .02em;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.rkp--fp .rkp__delta--up   { color: #0E6B4A; }
.rkp--fp .rkp__delta--down { color: var(--fp-claret, #C1272D); }
.rkp--fp .rkp__delta--flat { color: rgba(26, 22, 20, .45); }

.rkp--fp .rkp__mix {
    display: block;
    margin-top: 2px;
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .01em;
    color: rgba(26, 22, 20, .55);
}

@media (max-width: 640px) {
    .rkp--fp .rkp__mix { display: none; }   /* a ese ancho, ruido */
}

/* ── Chokepoints y Ports Live, A TRES COLUMNAS (orden del CEO) ──────
   Las listas largas en una sola columna eran un desfiladero; en tres,
   la página se lee de un vistazo. Cada tarjeta se compacta: fila 1 =
   puesto · nombre · cifra; fila 2 = barra · chip de variación. La
   leyenda de cabecera no cabe repetida por columna: fuera. */
.rkp--ck .rkp__panel--fp,
.rkp--pl .rkp__panel--fp {
    column-count: 3;
    column-gap: 36px;
}
/* FP 1.71.3 · el Port Ranking, a DOS columnas (orden del CEO): 20
   puertos por página = 10 por columna, con la misma tarjeta compacta. */
.rkp--pr .rkp__panel--fp {
    column-count: 2;
    column-gap: 44px;
}
.rkp--ck .rkp__lh,
.rkp--pl .rkp__lh,
.rkp--pr .rkp__lh { display: none; }
.rkp--ck .rkp__row,
.rkp--pl .rkp__row,
.rkp--pr .rkp__row {
    display: grid;
    break-inside: avoid;
    -webkit-column-break-inside: avoid;
    grid-template-columns: 30px 1fr auto;
    grid-template-rows: auto auto;
    row-gap: 7px;
    align-items: center;
}
.rkp--ck .rkp__rk,  .rkp--pl .rkp__rk,  .rkp--pr .rkp__rk  { grid-column: 1; grid-row: 1 / 3; }
.rkp--ck .rkp__nm,  .rkp--pl .rkp__nm,  .rkp--pr .rkp__nm  { grid-column: 2; grid-row: 1; }
.rkp--ck .rkp__vl,  .rkp--pl .rkp__vl,  .rkp--pr .rkp__vl  { grid-column: 3; grid-row: 1; justify-self: end; }
.rkp--ck .rkp__bar, .rkp--pl .rkp__bar, .rkp--pr .rkp__bar { grid-column: 2; grid-row: 2; }
.rkp--ck .rkp__dl,  .rkp--pl .rkp__dl,  .rkp--pr .rkp__dl  { grid-column: 3; grid-row: 2; justify-self: end; }

/* el país del Port Ranking, discreto en la segunda fila de la tarjeta */
.rkp--pr .rkp__dl {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .03em;
    color: rgba(26, 22, 20, .55);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 150px;
}

@media (max-width: 1024px) {
    .rkp--ck .rkp__panel--fp, .rkp--pl .rkp__panel--fp { column-count: 2; }
}
@media (max-width: 700px) {
    .rkp--ck .rkp__panel--fp, .rkp--pl .rkp__panel--fp,
    .rkp--pr .rkp__panel--fp { column-count: 1; }
}

/* ── El sello FP|LIVE del topbar (FP 1.71.1) ───────────────────────
   Recorta el lienzo cuadrado a la banda real del sello: 66×20 con
   cover y el foco un pelín por encima del centro, que es donde vive
   el dibujo en el PNG. */
.et-pc-topbar__livemark {
    /* FP 1.71.4 · PNG ya recortado → proporción natural, sin encuadres */
    height: 20px;
    width: auto;
    align-self: center;
    flex: 0 0 auto;
    margin-right: 2px;
}

/* ── La tira del pulso en la cabecera del home ─────────────────────── */
.fp-pulse {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 10px;
    padding: 7px 18px;
    background: var(--fp-ink, #1A1614);
    color: #F6E5D2;
    font-family: 'Inter', system-ui, sans-serif;
    font-size: 12px;
    text-decoration: none;
    letter-spacing: .02em;
}
.fp-pulse:hover .fp-pulse__brand { text-decoration: underline; }
.fp-pulse__brand {
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .12em;
    font-size: 10.5px;
}
.fp-pulse__delta {
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}
.fp-pulse__delta--up   { color: #6FD3A4; }
.fp-pulse__delta--down { color: #FF9A8B; }
.fp-pulse__delta--flat { color: rgba(246, 229, 210, .7); }
.fp-pulse__txt { color: rgba(246, 229, 210, .78); }
.fp-pulse__src {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: rgba(246, 229, 210, .45);
}
@media (max-width: 640px) { .fp-pulse__src { display: none; } }

/* ═══════════════════════════════════════════════════════════════════
   FP 1.70.0 · ANUNCIOS DE TEXTO (publicidad nativa premium)
   ───────────────────────────────────────────────────────────────────
   La unidad que pidió el CEO: sello AD + empresa arriba, titular con
   enlace debajo, BIEN JUNTOS. Elegante y claramente publicidad: dos
   filetes editoriales la encuadran (grueso arriba, fino abajo, como
   los rótulos FT de la casa), la empresa va en versalitas y el titular
   lleva un subrayado fino del granate que se enciende al pasar, con la
   flecha deslizándose. Nada de cajas grises de AdSense. */
.fp-ta {
    margin: 26px 0;
    padding: 12px 0 14px;
    border-top: 2px solid var(--fp-ink, #1A1614);
    border-bottom: 1px solid var(--fp-rule, #EADBC8);
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
}

/* FP 1.71.2 · los !important van contra el CSS del cuerpo del artículo,
   que a este <p> le metía sus márgenes de párrafo y separaba el sello
   del titular (la queja del CEO, con captura). */
.fp-ta .fp-ta__top {
    display: flex !important;
    align-items: center !important;   /* FP 1.71.4 · sello y empresa a la misma altura, gane quien gane */
    gap: 9px;
    margin: 0 0 4px !important;   /* los dos textos, bien juntos */
    padding: 0 !important;
    line-height: 1 !important;
}
.fp-ta__seal {
    display: inline-flex !important;
    align-items: center;
    line-height: 0;
    margin: 0 !important;
    flex: 0 0 auto;
}
.fp-ta__brand {
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--fp-ink, #1A1614);   /* FP 1.71.2 · en NEGRO (orden CEO) */
}

.fp-ta__txt {
    display: inline;
    font-size: 18px;
    font-weight: 800;
    letter-spacing: -0.25px;
    line-height: 1.35;
    color: var(--fp-ink, #1A1614);
    text-decoration: none;
    background-image: linear-gradient(to right, rgba(175, 1, 1, .3), rgba(175, 1, 1, .3));
    background-repeat: no-repeat;
    background-size: 100% 2px;
    background-position: 0 100%;
    transition: color .15s ease;
    padding-bottom: 2px;
}
.fp-ta__txt:hover { color: var(--fp-claret, #C1272D); }
.fp-ta__arrow {
    display: inline-block;
    margin-left: 7px;
    font-weight: 700;
    color: var(--fp-claret, #C1272D);
    transition: transform .18s ease;
}
.fp-ta__txt:hover .fp-ta__arrow { transform: translateX(4px); }

@media (max-width: 640px) {
    .fp-ta__txt { font-size: 16.5px; }
}

/* ── La variante EN LISTA (FP 1.71.0) ──────────────────────────────
   Intercalada entre las filas de los rankings y entre los párrafos de
   las noticias: más compacta, con los mismos filetes, y a prueba del
   flujo de columnas de Chokepoints/Ports Live. */
.fp-ta--inlist {
    margin: 0;
    padding: 13px 0 14px;
    break-inside: avoid;
    -webkit-column-break-inside: avoid;
}
.fp-ta--inlist .fp-ta__txt { font-size: 15.5px; letter-spacing: -0.15px; }
.fp-ta--inlist .fp-ta__top { margin-bottom: 4px; }

/* dentro del cuerpo de una noticia respira un poco más */
.dai-tpl__body .fp-ta--inlist,
.et-article__body .fp-ta--inlist,
.entry-content .fp-ta--inlist { margin: 26px 0; }

/* las filas de anuncio del paginador del Port Ranking */
.rkp__adrow[hidden] { display: none; }

/* ═══════════════════════════════════════════════════════════════════
   FP 1.72.0 · SHIPPING STOCKS BOARD
   ───────────────────────────────────────────────────────────────────
   El parqué naviero: cinta de movers arriba (dos paneles enfrentados),
   tablero por segmentos en dos columnas debajo. Números tabulares,
   chips verde/granate, hairlines — terminal financiero con el papel
   salmón de la casa. */
.rkp--stx .stx__movers {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    /* FP 1.72.1 · la cinta destaca sobre salmón un punto más oscuro
       (el tono de la casa), con su aire interior. */
    background: #F6E5D2;
    padding: 20px 24px 22px;
    border-top: 3px solid var(--fp-ink, #1A1614);
    border-bottom: 1px solid var(--fp-rule, #EADBC8);
    margin: 0 0 26px;
}
.rkp--stx .stx__mhead {
    margin: 0 0 10px;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .14em;
    text-transform: uppercase;
}
.rkp--stx .stx__mhead--up   { color: #0E6B4A; }
.rkp--stx .stx__mhead--down { color: var(--fp-claret, #C1272D); }
.rkp--stx .stx__mrow {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin: 0;
    padding: 6px 0;
    border-bottom: 1px solid rgba(26, 22, 20, .09);
    font-size: 14px;
    font-weight: 700;
}
.rkp--stx .stx__mrow:last-child { border-bottom: 0; }
.rkp--stx .stx__mname { color: var(--fp-ink, #1A1614); }

.rkp--stx .stx__board {
    column-count: 2;
    column-gap: 48px;
}
.rkp--stx .stx__seg {
    break-inside: avoid;
    -webkit-column-break-inside: avoid;
    margin: 0 0 26px;
}
.rkp--stx .stx__seghead {
    margin: 0 0 2px;
    padding: 0 0 7px;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--fp-claret, #C1272D);
    border-bottom: 2px solid var(--fp-ink, #1A1614);
}
.rkp--stx .stx__row {
    display: grid;
    grid-template-columns: 1fr auto auto;
    gap: 14px;
    align-items: center;
    padding: 9px 0;
    border-bottom: 1px solid rgba(26, 22, 20, .12);
    font-variant-numeric: tabular-nums;
}
.rkp--stx .stx__row.is-stale { opacity: .55; }
.rkp--stx .stx__co b {
    display: block;
    font-size: 13.5px;
    font-weight: 800;
    letter-spacing: -0.1px;
    color: var(--fp-ink, #1A1614);
    line-height: 1.25;
}
.rkp--stx .stx__co small {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .08em;
    color: rgba(26, 22, 20, .5);
}
.rkp--stx .stx__px {
    font-size: 13px;
    font-weight: 700;
    color: var(--fp-ink, #1A1614);
    white-space: nowrap;
}
.rkp--stx .stx__chip {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    min-width: 74px;
    justify-content: flex-end;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.rkp--stx .stx__chip--up   { color: #0E6B4A; }
.rkp--stx .stx__chip--down { color: var(--fp-claret, #C1272D); }
.rkp--stx .stx__chip--flat { color: rgba(26, 22, 20, .45); }

/* ── FP 1.72.1 · EL LATIDO DEL TICKER ──────────────────────────────
   Las flechas laten en continuo (sube/baja sutil, cada una hacia su
   lado) y el JS enciende filas al azar con un destello breve: el
   tablero respira como un terminal en vivo. */
.rkp--stx .stx__arr { display: inline-block; font-style: normal; }
.rkp--stx .stx__chip--up .stx__arr   { animation: stxBobUp 1.5s ease-in-out infinite alternate; }
.rkp--stx .stx__chip--down .stx__arr { animation: stxBobDown 1.5s ease-in-out infinite alternate; }
@keyframes stxBobUp   { from { transform: translateY(0); } to { transform: translateY(-2px); } }
@keyframes stxBobDown { from { transform: translateY(0); } to { transform: translateY(2px); } }

.rkp--stx .stx__chip.is-tick { animation: stxTick .9s ease-out; }
@keyframes stxTick {
    0%   { text-shadow: none; }
    25%  { text-shadow: 0 0 10px currentColor; }
    100% { text-shadow: none; }
}
.rkp--stx .stx__chip--up.is-tick .stx__arr,
.rkp--stx .stx__chip--down.is-tick .stx__arr { animation-duration: .35s; }

@media (prefers-reduced-motion: reduce) {
    .rkp--stx .stx__arr,
    .rkp--stx .stx__chip.is-tick { animation: none !important; }
}

/* ── FP 1.72.3 · «See all →» EN LA LÍNEA de «Markets», con directo ──
   El rótulo del carril reparte: Markets a la izquierda, el enlace al
   tablero a la derecha con su puntito rojo parpadeante de en vivo. */
.fp-eco__rail-h--seeall {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.fp-eco__seeall {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 10.5px;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--fp-claret, #C1272D);
    text-decoration: none;
    white-space: nowrap;
}
.fp-eco__arr { display: inline-block; transition: transform .15s ease; }
.fp-eco__seeall:hover .fp-eco__arr { transform: translateX(3px); }
.fp-eco__live {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--fp-claret, #C1272D);
    animation: fpLiveBlink 1.1s ease-in-out infinite;
}
@keyframes fpLiveBlink {
    0%, 100% { opacity: 1; }
    50%      { opacity: .22; }
}
@media (prefers-reduced-motion: reduce) {
    .fp-eco__live { animation: none; }
}

/* ── FP 1.72.3 · MARITIME AI en el menú principal ──────────────────
   HEREDA la tipografía y la línea del resto del menú (cero fuentes
   propias); lo único suyo es el icono de CAMAL en pequeño, como
   superíndice a la derecha del texto. */
.et-pc-nav__link--camal { white-space: nowrap; }
.et-pc-nav__camalico {
    display: inline-block;
    width: 10px;
    height: 10px;
    object-fit: contain;
    margin-left: 4px;
    vertical-align: top;
    transform: translateY(-3px);
}

@media (max-width: 860px) {
    .rkp--stx .stx__board  { column-count: 1; }
    .rkp--stx .stx__movers { grid-template-columns: 1fr; gap: 18px; }
}

/* ── El hero del Trade Pulse ───────────────────────────────────────── */
.rkp--tp .tpx__hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 24px;
    padding: 26px 0 22px;
    border-top: 3px solid var(--fp-ink, #1A1614);
    border-bottom: 1px solid var(--fp-rule, #EADBC8);
    margin: 0 0 22px;
}
.rkp--tp .tpx__num {
    display: block;
    font-size: clamp(42px, 6vw, 64px);
    font-weight: 900;
    letter-spacing: -2px;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}
.rkp--tp .tpx__num--up   { color: #0E6B4A; }
.rkp--tp .tpx__num--down { color: var(--fp-claret, #C1272D); }
.rkp--tp .tpx__num--flat { color: rgba(26, 22, 20, .55); }
.rkp--tp .tpx__big-sub {
    display: block;
    margin-top: 8px;
    font-size: 13px;
    color: rgba(26, 22, 20, .6);
    max-width: 34ch;
}
.rkp--tp .tpx__facts { display: flex; gap: 34px; margin: 0; }
.rkp--tp .tpx__facts dt {
    font-size: 24px;
    font-weight: 900;
    letter-spacing: -0.5px;
    font-variant-numeric: tabular-nums;
    color: var(--fp-ink, #1A1614);
}
.rkp--tp .tpx__facts dd {
    margin: 3px 0 0;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: rgba(26, 22, 20, .5);
}

.rkp--tp .tpx__spark {
    display: flex;
    align-items: flex-end;
    gap: 3px;
    height: 74px;
    margin: 0 0 6px;
}
.rkp--tp .tpx__spark-bar {
    flex: 1 1 0;
    min-width: 4px;
    background: var(--fp-claret, #C1272D);
    opacity: .82;
    border-radius: 1px 1px 0 0;
}
.rkp--tp .tpx__spark-bar:hover { opacity: 1; }
.rkp--tp .tpx__spark-cap {
    margin: 0 0 26px;
    font-size: 11px;
    color: rgba(26, 22, 20, .5);
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.68.0 · DISRUPTION WATCH
   ───────────────────────────────────────────────────────────────────
   El marco es el del ranking (.rkp); las filas son ALERTAS: chip de
   nivel a la izquierda con el color del riesgo, cuerpo editorial en
   el centro y el dato marítimo —puertos afectados— a la derecha. */
.dwx { display: flex; flex-direction: column; }

.dwx__row {
    display: grid;
    grid-template-columns: 76px 1fr auto;
    gap: 18px;
    align-items: start;
    padding: 18px 0;
    border-bottom: 1px solid rgba(26, 22, 20, .14);
}
.dwx__row:last-child { border-bottom: 0; }

.dwx__level {
    display: inline-flex;
    justify-content: center;
    padding: 4px 0;
    font-size: 10.5px;
    font-weight: 900;
    letter-spacing: .14em;
    border-radius: 3px;
    color: #fff;
    text-align: center;
    margin-top: 2px;
}
.dwx__row--red    .dwx__level { background: var(--fp-claret, #C1272D); }
.dwx__row--orange .dwx__level { background: #C9772E; }
.dwx__row--green  .dwx__level { background: #0E6B4A; }
.dwx__row--none   .dwx__level { background: rgba(26, 22, 20, .45); }

.dwx__kicker {
    margin: 0 0 3px;
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: rgba(26, 22, 20, .55);
}
.dwx__name {
    margin: 0;
    font-size: 18px;
    font-weight: 800;
    letter-spacing: -0.2px;
    line-height: 1.25;
    color: var(--fp-ink, #1A1614);
}
.dwx__sev {
    margin: 4px 0 0;
    font-size: 13.5px;
    line-height: 1.5;
    color: rgba(26, 22, 20, .68);
}
.dwx__portlist {
    margin: 4px 0 0;
    font-size: 12px;
    line-height: 1.5;
    color: rgba(26, 22, 20, .5);
}

.dwx__side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
    white-space: nowrap;
}
.dwx__ports {
    font-size: 12px;
    font-weight: 800;
    color: var(--fp-claret, #C1272D);
}
.dwx__ports--none { color: rgba(26, 22, 20, .45); font-weight: 600; }
.dwx__date {
    font-size: 11.5px;
    font-variant-numeric: tabular-nums;
    color: rgba(26, 22, 20, .5);
}

@media (max-width: 640px) {
    .dwx__row { grid-template-columns: 1fr; gap: 8px; }
    .dwx__side { flex-direction: row; align-items: center; gap: 12px; }
}


/* ═══════════════════════════════════════════════════════════════════
   FP WEEK · EL ESPECIAL DE LA SEMANA                ·  FP 1.76.0
   ───────────────────────────────────────────────────────────────────
   El corte del home: entre Energy y Shipping la portada se oscurece de
   golpe y aparece la historia de la semana a TODO EL ANCHO, en la
   paleta del World Trade Pulse —negro tinta, salmón y granate—.

   A SANGRE DE VERDAD
   ──────────────────
   El bloque vive dentro del contenedor centrado del home, así que para
   llegar de borde a borde hay que sacarlo: `margin-left: calc(50% -
   50vw)` lo empuja hasta el filo de la ventana sin tocar el resto de
   la portada ni provocar scroll lateral (el ancho es 100vw exacto).

   LA COSTURA DE LA FOTO
   ─────────────────────
   Una foto pegada a un fondo negro siempre canta: se ve el rectángulo.
   Aquí la imagen se funde por su borde izquierdo con un degradado al
   mismo negro, así que no hay canto — la foto nace del fondo. Es lo
   que separa una portada de revista de un banner.
   ═══════════════════════════════════════════════════════════════════ */

.fp-wk {
    position: relative;
    /* `100vw` incluye la barra de scroll y sacaba una barra horizontal;
       se le resta su grosor real, medido por el script del partial. */
    width: calc(100vw - var(--fp-sbw, 0px));
    margin-left: calc(50% - (100vw - var(--fp-sbw, 0px)) / 2);
    margin-right: calc(50% - (100vw - var(--fp-sbw, 0px)) / 2);
    margin-top: 46px;      /* aire con el bloque de arriba */
    margin-bottom: 10px;
    background: #1A1614;
    color: #F6E5D2;
    overflow: hidden;

    /* ─── EL ARCO Y EL CÍRCULO DE LA IMAGEN, CONCÉNTRICOS ───────────
       La imagen de FP Week trae dibujado un círculo crema que ocupa
       toda su altura y va centrado. Para que ESA línea sea justo el
       borde del hero —lo que pidió el CEO— las dos circunferencias
       tienen que compartir radio y centro:

         · radio del arco  = mitad de la altura del bloque  → semicírculo
         · radio del círculo de la imagen = mitad de su altura, y la
           imagen se escala a la altura del bloque (`auto 100%`), así
           que ambos radios coinciden solos, sea cual sea la altura.
         · queda alinear los centros: en la imagen el círculo está a un
           51,3 % del ancho, así que su centro cae a 0,487 × ancho del
           borde derecho. Se empuja la imagen esa diferencia con
           `--fp-wk-shift` y los dos centros se superponen.

       Con la altura declarada aquí, todo lo demás se calcula solo. */
    --fp-wk-h: 500px;
    --fp-wk-shift: calc(0.487 * var(--fp-wk-h) * 1.778 - var(--fp-wk-h) / 2);
    border-radius: 0 calc(var(--fp-wk-h) / 2) calc(var(--fp-wk-h) / 2) 0;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

/* El filete de separación, con el ancho del contenido (no a sangre). */
.fp-wk__sep {
    max-width: var(--pcv2-max, 1280px);
    margin: 34px auto 0;
    padding: 0 var(--pcv2-gut, 28px);
    height: 0;
    border-top: 1px solid var(--fp-rule, #EADBC8);
}

.fp-wk__inner {
    max-width: var(--pcv2-max, 1280px);
    margin: 0 auto;
    padding: 0 var(--pcv2-gut, 28px);
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
    align-items: stretch;
    gap: 0;
    min-height: var(--fp-wk-h, 500px);
}

/* ─── La columna de texto ─────────────────────────────────────────── */
.fp-wk__tx {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    padding: 54px 48px 54px 0;
}


.fp-wk__badge {
    display: inline-flex;
    align-items: baseline;
    gap: 12px;
    margin: 0 0 16px;
}
.fp-wk__badge-n {
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .26em;
    text-transform: uppercase;
    color: #F6E5D2;
    background: var(--fp-claret, #C1272D);
    padding: 6px 12px 5px;
    border-radius: 3px;
}
.fp-wk__badge-s {
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: rgba(246, 229, 210, .5);
    font-variant-numeric: tabular-nums;
}

.fp-wk__rule {
    display: block;
    width: 58px;
    height: 3px;
    background: var(--fp-claret, #C1272D);
    margin: 0 0 20px;
}

.fp-wk__title {
    margin: 0;
    max-width: 17ch;
    /* NEGRA GRUESA (orden del CEO): la sans de la casa a 800 pega el
       puñetazo que un especial de la semana necesita; la serif fina se
       quedaba corta sobre negro. */
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-weight: 800;
    font-size: clamp(30px, 3.4vw, 48px);
    line-height: 1.08;
    letter-spacing: -.03em;
    text-wrap: balance;
}
.fp-wk__title a { color: #F6E5D2; text-decoration: none; transition: color .15s ease; }
.fp-wk__title a:hover { color: #fff; }

.fp-wk__dek {
    margin: 20px 0 0;
    max-width: 46ch;
    font-size: 15px;
    line-height: 1.6;
    color: rgba(246, 229, 210, .72);
}

/* La firma hereda las clases del home; aquí solo se le cambia la ropa
   para que se lea sobre negro. */
.fp-wk__meta { margin: 22px 0 0; }

/* EL SELLO FP PLUS SOBRE LA BANDA NEGRA.
   El partial ya pide la version BLANCA del lockup (el de la casa es
   oscuro y aqui desaparecia). Queda el tamano: en una tarjeta normal
   va a 12px, pero esto es un hero a toda pagina y ahi se queda
   diminuto, asi que sube a 15 y va a opacidad plena — el .9 que
   heredaba estaba pensado para no gritar sobre papel claro, y sobre
   negro solo lo apaga. */
.fp-wk__meta a.ipp-firma-marca img { height: 15px; }
.fp-wk__meta .ipp-firma-marca { opacity: 1; }
.fp-wk .et-pcv2-hero__byline {
    margin: 0;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: rgba(246, 229, 210, .55);
}
.fp-wk .et-pcv2-hero__byline-author { color: #F6E5D2; }
.fp-wk .et-pcv2-hero__byline-custom { color: #FF9A8B; }
.fp-wk .et-pcv2-hero__byline-pipe,
.fp-wk .et-pcv2-hero__byline-sep { background: rgba(246, 229, 210, .28); }

.fp-wk__cta {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-top: 26px;
    padding-bottom: 6px;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: #F6E5D2;
    text-decoration: none;
    border-bottom: 2px solid var(--fp-claret, #C1272D);
    transition: color .15s ease, border-color .15s ease;
}
.fp-wk__cta span { display: inline-block; transition: transform .18s ease; }
.fp-wk__cta:hover { color: #fff; border-color: #F6E5D2; }
.fp-wk__cta:hover span { transform: translateX(5px); }

/* ─── La foto ─────────────────────────────────────────────────────── */
.fp-wk__visual {
    position: relative;
    display: block;
    /* SIN IMAGEN PROPIA: la foto se pinta en las dos capas de abajo.
       El elemento solo aporta el hueco y el recorte. */
    overflow: hidden;
    min-height: var(--fp-wk-h, 500px);

    /* La foto sale del contenedor centrado y llega al filo de la
       ventana: sin esto quedaba una franja negra entre la imagen y el
       arco (lo que el CEO ve en su captura). El `max()` protege las
       pantallas más estrechas que el contenedor, donde solo hay que
       superar el margen interior. */
    margin-right: calc(-1 * max(0px,
        ((100vw - var(--fp-sbw, 0px)) - var(--pcv2-max, 1280px)) / 2 + var(--pcv2-gut, 28px)));
}
/* NOTA DE POR QUÉ NO SE LLAMA «photo»
   ───────────────────────────────────
   fp-skin pinta el ancla de la casa como ::after sobre CUALQUIER clase
   que contenga «photo», «media» o «thumb» — y con más especificidad
   que la de un bloque suelto. Con `.fp-wk__photo`, ese sello ganaba la
   pelea y borraba la capa de la imagen: el hero salía en negro y
   borroso (captura del CEO). Llamándola `visual` la regla genérica ni
   la ve. Lección repetida: al crear un módulo, cuidado con esas tres
   palabras en los nombres de clase.

   ─── CAPA 1 · el relleno ──────────────────────────────────────────
   La foto se escala por ALTURA para que su círculo mida lo que mide el
   arco, así que no llega a cubrir toda la columna y quedaba un CANTO
   SECO contra el negro (lo que el CEO ve en su captura). Aquí la misma
   imagen se estira a lo grande y se desenfoca: rellena el hueco con
   sus propios colores, de modo que donde antes había una línea recta
   ahora hay materia continua. Ni se lee ni se reconoce — solo evita
   la costura. */
.fp-wk__visual::before {
    content: '';
    position: absolute;
    inset: -60px;                 /* se pasa del borde: el desenfoque necesita aire */
    background: var(--fp-wk-img) center / cover no-repeat;
    filter: blur(38px) saturate(.85) brightness(.62);
    opacity: .55;
    pointer-events: none;
}

/* ─── CAPA 2 · la foto nítida + el fundido al negro ────────────────
   La imagen encuadrada al milímetro (el círculo coincide con el arco)
   y, ENCIMA, el degradado que la funde con el negro por la izquierda y
   por abajo. Van en el mismo elemento porque el orden importa: el
   degradado se declara primero y por eso queda por delante. */
.fp-wk__visual::after {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(to right,
            #1A1614 0%,
            rgba(26, 22, 20, .92) 8%,
            rgba(26, 22, 20, .62) 20%,
            rgba(26, 22, 20, .28) 33%,
            rgba(26, 22, 20, 0) 46%),
        linear-gradient(to top, rgba(26, 22, 20, .3) 0%, rgba(26, 22, 20, 0) 34%),
        var(--fp-wk-img);
    background-size: auto, auto, auto 100%;
    background-position: center, center, right calc(-1 * var(--fp-wk-shift)) center;
    background-repeat: no-repeat, no-repeat, no-repeat;
    pointer-events: none;
}

/* ─── Tablet ──────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
    .fp-wk { --fp-wk-h: 420px; }
    .fp-wk__inner { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); }
    .fp-wk__tx { padding: 44px 32px 44px 0; }
    .fp-wk__title { max-width: none; }
}

/* ─── Móvil · la foto arriba, el texto debajo ─────────────────────── */
@media (max-width: 760px) {
    .fp-wk {
        margin-top: 30px;
        /* En vertical el bloque se apila y el arco de media altura no
           tiene sentido: se queda un redondeo suave en las dos esquinas
           de la derecha. */
        --fp-wk-h: auto;
        border-radius: 0 70px 70px 0;
    }
    .fp-wk__sep { margin-top: 24px; }
    .fp-wk__inner {
        grid-template-columns: 1fr;
        min-height: 0;
        padding: 0;
    }
    .fp-wk__visual {
        order: -1;
        min-height: 0;
        aspect-ratio: 16 / 10;
        margin: 0;
    }
    /* en vertical el fundido va HACIA ABAJO, que es por donde continúa
       el texto: la foto se derrama en el fondo negro. */
    /* En vertical la foto cubre de lado a lado: no hace falta relleno,
       y el fundido gira hacia abajo, que es por donde sigue el texto. */
    .fp-wk__visual::before { display: none; }
    .fp-wk__visual::after {
        background-image:
            linear-gradient(to bottom, rgba(26, 22, 20, .08) 0%, rgba(26, 22, 20, .4) 58%, #1A1614 100%),
            var(--fp-wk-img);
        background-size: auto, cover;
        background-position: center, center;
    }
    .fp-wk__visual {
        margin-right: 0;
        min-height: 0;
    }
    .fp-wk__tx {
        padding: 26px 18px 34px;
        margin-top: -34px;   /* el texto sube y monta sobre el fundido */
    }
    .fp-wk__title { font-size: clamp(26px, 7.4vw, 34px); }
    .fp-wk__dek { font-size: 14.5px; margin-top: 16px; }
    .fp-wk__cta { margin-top: 22px; }
}

@media (prefers-reduced-motion: reduce) {
    .fp-wk__cta span { transition: none; }
}


/* ═══════════════════════════════════════════════════════════════════
   FP 1.76.5 · LA FIRMA DE CONFLICTS, EN LA PALETA DE LA CASA
   ───────────────────────────────────────────────────────────────────
   En el bloque de Conflicts / Opinion la plaza salía en GRIS AZULADO y
   el autor en azul: pc-v2.css los pinta ahí con dos reglas propias
   (`.et-pcv2-oph .et-pcv2-hero__byline-*`, con dos clases de
   especificidad) que ganaban a la regla general de la piel de FP. En
   todo el resto del home la plaza va en granate — que se salte esa
   norma justo en el bloque donde más se lee es la pieza descuadrada.

   Se responde con la MISMA especificidad y color escrito. */
.et-pcv2-oph .et-pcv2-hero__byline-custom {
    color: var(--fp-claret, #C1272D);
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.et-pcv2-oph .et-pcv2-hero__byline-author {
    color: var(--fp-ink, #1A1614);
    font-weight: 700;
}


/* ═══════════════════════════════════════════════════════════════════
   FP 1.77.0 · EL LATERAL DE LA NOTICIA — «FP LIVE», UN TERMINAL
   ───────────────────────────────────────────────────────────────────
   La columna deja de ser tres cajas apiladas y pasa a ser UNA cosa: la
   tabla de datos del Financial Times. Las reglas del lenguaje, por si
   mañana hay que ampliarla:

     · CERO CAJAS. Nada de recuadros, sombras ni esquinas redondas —el
       papel salmón es el fondo y lo único que estructura son filetes.
       Un filete grueso abre cada bloque (la cabecera de sección del
       FT) y una hairline separa cada fila.
     · LA CIFRA MANDA. Va a la derecha, en monoespaciada con cifras
       tabulares, para que las cinco se lean en columna aunque tengan
       distinto número de dígitos.
     · EL COLOR ES DATO, NO ADORNO. Verde solo si sube, granate solo si
       baja o hay alerta. En una columna de 300 px el color es la única
       jerarquía que se ve de un vistazo.
   ═══════════════════════════════════════════════════════════════════ */

.fp-lr-rail {
    display: flex;
    flex-direction: column;
    gap: 26px;
    /* Tipografía de datos: la sans de la casa manda, y la mono entra
       solo donde hay cifras. */
    font-family: var(--fp-sans, 'Inter', -apple-system, 'Segoe UI', sans-serif);
}

/* ─── El bloque ──────────────────────────────────────────────────── */
.fp-lr {
    border-top: 3px solid var(--fp-ink, #1A1614);
    padding-top: 11px;
}

.fp-lr__head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.fp-lr__seal {
    display: block;
    width: 53px;
    height: auto;
    /* El sello es el mismo arte del header: no se reescala ni se
       recorta por CSS —eso fue lo que lo dejó pixelado la otra vez—,
       se sirve a su tamaño natural. */
}

.fp-lr__h {
    margin: 0;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--fp-ink, #1A1614);
}

/* El punto en vivo: empujado al extremo derecho de la cabecera. */
.fp-lr__pulse {
    margin-left: auto;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--fp-claret, #C1272D);
    box-shadow: 0 0 0 0 rgba(175, 1, 1, .5);
    animation: fp-lr-pulse 2.4s ease-out infinite;
}
@keyframes fp-lr-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(175, 1, 1, .45); }
    70%  { box-shadow: 0 0 0 7px rgba(175, 1, 1, 0); }
    100% { box-shadow: 0 0 0 0 rgba(175, 1, 1, 0); }
}

/* ─── Las filas ──────────────────────────────────────────────────── */
.fp-lr__list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.fp-lr__item + .fp-lr__item {
    border-top: 1px solid rgba(26, 22, 20, .11);
}

.fp-lr__row {
    display: grid;
    /* Dos columnas: el nombre con su nota, y la cifra. El canalon del
       numero se retiro (orden del CEO). */
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    column-gap: 9px;
    padding: 11px 8px 11px 0;
    text-decoration: none;
    color: inherit;
    /* El fondo se mueve en el hover, así que se anuncia aquí para que
       la transición tenga de dónde salir. */
    background: transparent;
    transition: background-color .16s ease, padding-left .16s ease;
}

.fp-lr__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.fp-lr__name {
    font-size: 14.5px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -.012em;
    color: var(--fp-ink, #1A1614);
}

/* La línea que hace el trabajo: el titular del dato. */
.fp-lr__note {
    font-size: 11.5px;
    font-weight: 400;
    line-height: 1.3;
    color: var(--fp-muted, #6E6058);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* La cifra. `tabular-nums` es lo que alinea los dígitos en columna. */
.fp-lr__val {
    font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
    font-variant-numeric: tabular-nums;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: -.02em;
    color: var(--fp-ink, #1A1614);
    white-space: nowrap;
}

/* Verde solo cuando sube; granate cuando baja o cuando hay alerta.
   El verde está desaturado a propósito: sobre salmón, un verde de
   semáforo chirría y rompe la sobriedad del conjunto. */
.fp-lr__row--up    .fp-lr__val { color: #0A6E4E; }
.fp-lr__row--down  .fp-lr__val,
.fp-lr__row--alert .fp-lr__val { color: var(--fp-claret, #C1272D); }

/* La alerta lleva además un punto: en Disruptions el número solo no
   distingue «3 alertas rojas» de «3 eventos». */
.fp-lr__row--alert .fp-lr__val::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    margin-right: 6px;
    border-radius: 50%;
    background: var(--fp-claret, #C1272D);
    vertical-align: .08em;
}

/* La flecha solo aparece donde NO hay cifra: si el módulo aún no ha
   importado, la fila sigue siendo un acceso y tiene que parecerlo. */
.fp-lr__go {
    color: rgba(26, 22, 20, .3);
    transition: color .16s ease, transform .16s ease;
}
.fp-lr__go svg { display: block; }

/* ─── El gesto del hover ─────────────────────────────────────────── */
.fp-lr__row:hover,
.fp-lr__row:focus-visible {
    background: rgba(255, 255, 255, .6);
    padding-left: 5px;
    outline: none;
}
.fp-lr__row:hover .fp-lr__name,
.fp-lr__row:focus-visible .fp-lr__name {
    text-decoration: underline;
    text-decoration-color: var(--fp-claret, #C1272D);
    text-underline-offset: 3px;
    text-decoration-thickness: 1.5px;
}
.fp-lr__row:hover .fp-lr__go,
.fp-lr__row:focus-visible .fp-lr__go {
    color: var(--fp-claret, #C1272D);
    transform: translateX(2px);
}
/* El foco por teclado tiene que verse aunque el fondo apenas cambie. */
.fp-lr__row:focus-visible { box-shadow: inset 2px 0 0 var(--fp-claret, #C1272D); }

/* ─── El pie de procedencia ──────────────────────────────────────── */
.fp-lr__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 9px 0 0;
    padding-top: 8px;
    border-top: 1px solid rgba(26, 22, 20, .11);
    font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 9.5px;
    font-weight: 400;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--fp-muted, #6E6058);
}
.fp-lr__src { color: rgba(26, 22, 20, .42); }

/* ─── El bloque de servicios ─────────────────────────────────────── */
/* Mismo lenguaje, un punto más discreto: aquí no hay dato en vivo, así
   que el filete de apertura es fino y no compite con el terminal. */
.fp-lr--svc { border-top-width: 1px; }
/* Abriendo la columna, el filete fino se lee como una linea de
   encabezado y deja el negro de 3px para el terminal, que es el bloque
   principal: la jerarquia se mantiene aunque el orden cambie. */
.fp-lr-rail > .fp-lr--svc:first-child {
    border-top-width: 2px;
    padding-top: 9px;
}
.fp-lr--svc .fp-lr__note { white-space: normal; }

/* ═══════════════════════════════════════════════════════════════════
   EL RIEL DE PUBLICIDAD
   ───────────────────────────────────────────────────────────────────
   Rotulado como en el FT: «Advertisement» en versalitas, centrado y
   partiendo un filete. Deja claro qué es sin gritarlo, y —esto importa
   para el anunciante— lo enmarca como parte del periódico en vez de
   dejarlo colgando entre dos bloques editoriales.
   ═══════════════════════════════════════════════════════════════════ */
.fp-lr-ads {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* El rotulo es un enlace a tarifas: se le quita toda la pinta de
   enlace para que siga leyendose como un rotulo del periodico. */
.fp-lr-ads__rule a {
    color: inherit;
    text-decoration: none;
}
.fp-lr-ads__rule a:hover { color: var(--fp-claret, #C1272D); }

.fp-lr-ads__rule {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 9px;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: rgba(26, 22, 20, .38);
}
/* Los dos filetes que flanquean el rótulo, hechos con el propio
   elemento: sin divs de adorno. */
.fp-lr-ads__rule::before,
.fp-lr-ads__rule::after {
    content: '';
    flex: 1;
    height: 1px;
    background: rgba(26, 22, 20, .14);
}

.fp-lr-ads__slot { display: block; }
/* Las creatividades se ajustan a la columna sin deformarse. */
.fp-lr-ads__slot img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 0 auto;
}
.fp-lr-ads__sep {
    display: block;
    height: 1px;
    background: rgba(26, 22, 20, .11);
}
/* La etiqueta que el ad-server pinta dentro de cada hueco sobra: el
   riel ya va rotulado arriba y repetirla cinco veces era ruido. */
.fp-lr-ads__slot .et-ad__tag { display: none; }

/* ═══════════════════════════════════════════════════════════════════
   CUÁNDO SE QUEDA FIJA LA COLUMNA
   ───────────────────────────────────────────────────────────────────
   El contenedor de la plantilla pega el lateral al hacer scroll, y con
   el terminal solo —unos 480 px— está bien: el lector baja por el
   artículo y los cinco datos siguen a la vista.

   Con publicidad ya no. Cinco creatividades hacen la columna más alta
   que la pantalla y, pegada por arriba, sus últimos anuncios se quedan
   por debajo del borde inferior PARA SIEMPRE: nadie los ve y nadie los
   pulsa. Es exactamente la lección que el theme aprendió con el riel
   anterior, así que aquí se suelta el fijado y la columna scrollea con
   el texto.

   Se resuelve con  porque quien sabe si hay anuncios es el
   hijo, no el contenedor. Donde no esté soportado se queda el
   comportamiento de siempre —fijo—, que es peor pero no roto. */
.dai-tpl__sidebar:has(.fp-lr-rail--ads),
.dai-tpl-op__sidebar:has(.fp-lr-rail--ads),
.dai-tpl-tv__sidebar:has(.fp-lr-rail--ads) {
    position: static;
    top: auto;
}

/* ─── Móvil ──────────────────────────────────────────────────────── */
@media (max-width: 900px) {
    .fp-lr-rail { gap: 22px; }
    /* En vertical la columna ocupa todo el ancho y las notas ya no
       necesitan recortarse: caben enteras. */
    .fp-lr__note { white-space: normal; }
    .fp-lr__row { padding: 12px 4px 12px 0; }
}

/* Quien pide menos movimiento no ve latir el punto. */
@media (prefers-reduced-motion: reduce) {
    .fp-lr__pulse { animation: none; }
    .fp-lr__row,
    .fp-lr__go { transition: none; }
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.84.0 · PARTNERS · tres carriles debajo de African Ports
   ───────────────────────────────────────────────────────────────────
   Izquierda y centro son maqueta de periódico: la de la izquierda abre
   con TEXTO y la del centro con FOTO. Ese contraste es lo que hace que
   el bloque respire; si las dos abrieran igual se leería como una tabla.

   El carril de la derecha trata a los medios amigos como corresponsalías,
   no como banners: puerto de origen, hora local de publicación y las
   coordenadas del puerto. En un periódico de puertos la procedencia es
   la credencial, no un adorno.
   ═══════════════════════════════════════════════════════════════════ */
.fp-ptn { margin: 34px 0; padding: 30px 0 0; border-top: 1px solid var(--fp-rule); }

.fp-ptn__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr) minmax(0, .88fr);
}
.fp-ptn__col { padding: 0 26px; border-left: 1px solid var(--fp-rule); min-width: 0; }
.fp-ptn__col:first-child { padding-left: 0; border-left: 0; }

/* Epígrafe: el mismo del resto del home, sin inventar nada. */
/* El rótulo es el MISMO del resto del home: se reusan las clases
   `.et-pcv2-ener__head--section` (Inter 22/900 con la pleca de 56x4
   encima) y aquí solo se añade lo que este bloque necesita de más —el
   indicador Live alineado a la derecha—. Copiar el estilo en vez de
   reusarlo es lo que hace que dos rótulos se separen con el tiempo. */
/* FP 1.87.0 · LA PLECA SALÍA A TODO EL ANCHO.
   ──────────────────────────────────────────
   El rótulo hereda `.et-pcv2-ener__head--section`, cuyo ::before es una
   pleca de 56x4. Para colocar el «Live» a la derecha lo había puesto en
   flex y le había dado `flex: 0 0 100%` al ::before para que hiciera
   salto de línea… y ese 100% es justamente un `flex-basis` que le pisa
   los 56px. La pleca cruzaba la columna entera y no se parecía en nada
   al resto del home.

   Ahora el rótulo NO se toca: se queda en bloque, con su pleca corta
   exactamente igual que las demás secciones. El «Live» se coloca por
   encima, sin entrar en el flujo, así que no puede alterar nada. */
.fp-ptn__ch { position: relative; }

/* ── Titulares · Georgia, como todo FP ─────────────────────────── */
.fp-pt-af__t1  { margin: 0; font-family: var(--fp-serif); font-weight: 800;
                 font-size: clamp(22px, 2vw, 27px); line-height: 1.14; letter-spacing: -.02em;
                 text-wrap: balance; }
.fp-pt-af__t1b { margin: 14px 0 0; font-family: var(--fp-serif); font-weight: 800;
                 font-size: clamp(20px, 1.8vw, 24px); line-height: 1.16; letter-spacing: -.02em;
                 text-wrap: balance; }
.fp-pt-af__t2  { margin: 0; font-family: var(--fp-serif); font-weight: 800;
                 font-size: 17px; line-height: 1.24; letter-spacing: -.012em; }
.fp-pt-af__t3  { margin: 0; font-family: var(--fp-serif); font-weight: 800;
                 font-size: 15px; line-height: 1.28; letter-spacing: -.01em; }
.fp-pt-af__t1 a, .fp-pt-af__t1b a, .fp-pt-af__t2 a, .fp-pt-af__t3 a {
    color: var(--fp-ink); text-decoration: none;
}
.fp-pt-af__t1 a:hover, .fp-pt-af__t1b a:hover,
.fp-pt-af__t2 a:hover, .fp-pt-af__t3 a:hover { color: var(--fp-claret); }

/* El antetítulo va CON el titular: misma familia, mismo cuerpo, mismo
   peso. Lo único que lo separa es el color. Copiado del criterio que ya
   usa África, para que los dos bloques se lean igual. */
.fp-pt-af__t1 .et-pcv2-hero__kicker,
.fp-pt-af__t1b .et-pcv2-hero__kicker,
.fp-pt-af__t2 .et-pcv2-hero__kicker,
.fp-pt-af__t3 .et-pcv2-hero__kicker {
    font-family: inherit; font-size: inherit; font-weight: inherit;
    letter-spacing: inherit; text-transform: none; vertical-align: baseline;
    color: var(--fp-claret);
}

.fp-pt-af__d  { margin: 11px 0 0; font-family: var(--fp-serif);
                font-size: 14px; line-height: 1.5; color: var(--fp-ink-2); }
/* La firma la pinta `et_pcv2_render_meta()`, así que trae su propio
   marcado —autor, plaza y el sello de FP PLUS—. Aquí solo se le da el
   sitio y el cuerpo; el resto lo manda el theme, que es lo que hace que
   se lea igual que en los demás bloques. */
.fp-pt-af__by { margin: 11px 0 0; font-family: var(--fp-sans);
                font-size: 11.5px; color: var(--fp-ink-2); }
.fp-pt-af__by .et-pcv2-hero__byline,
.fp-pt-af__by .et-pcv2-ener__byline { margin: 0; font-size: inherit; }
.fp-pt-af__sm .fp-pt-af__by { margin-top: 8px; }

/* El filete CORTO de la columna izquierda: el del recorte del CEO. */
.fp-pt-af__sm { position: relative; margin-top: 18px; padding-top: 17px; }
.fp-pt-af__sm::before {
    content: ""; position: absolute; top: 0; left: 0;
    width: 34px; height: 1px; background: var(--fp-ink);
}
.fp-pt-af__photoit { margin-top: 20px; }
.fp-pt-af__it   { margin-top: 18px; padding-top: 17px; border-top: 1px solid var(--fp-rule); }

.fp-pt-af__photo { display: block; margin: 0 0 11px; aspect-ratio: 16 / 10; overflow: hidden; }
.fp-pt-af__photo--big { aspect-ratio: 16 / 9; margin: 0; }
.fp-pt-af__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ═══ EL CARRIL DE SOCIOS ═══════════════════════════════════════ */
.fp-ptn__rail { padding-left: 26px; border-left: 1px solid var(--fp-rule); min-width: 0; }
.fp-ptn__ch--pt { color: var(--fp-claret); }
.fp-ptn__ch--pt::before { background: var(--fp-claret) !important; }

.fp-ptn__live {
    position: absolute; right: 0; bottom: 6px;
    display: inline-flex; align-items: center; gap: 5px;
    font-family: var(--fp-mono, "JetBrains Mono", Consolas, monospace);
    font-size: 9.5px; font-style: normal; letter-spacing: .08em; color: var(--fp-claret);
}
.fp-ptn__live i {
    width: 5px; height: 5px; border-radius: 50%;
    background: var(--fp-claret); animation: fp-ptn-pulse 2.4s ease-in-out infinite;
}
@keyframes fp-ptn-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .22; } }
@media (prefers-reduced-motion: reduce) { .fp-ptn__live i { animation: none; } }

/* La ruta: dice que hay una red, y el nodo se enciende al pasar. */
.fp-ptn__route { position: relative; padding-left: 19px; }
.fp-ptn__route::before {
    content: ""; position: absolute; left: 4px; top: 10px; bottom: 10px; width: 1px;
    background: repeating-linear-gradient(to bottom,
        var(--fp-claret) 0 3px, transparent 3px 7px);
    opacity: .55;
}
.fp-ptn__stop { position: relative; }
.fp-ptn__stop + .fp-ptn__stop { margin-top: 18px; }
.fp-ptn__node {
    position: absolute; left: -19px; top: 10px; width: 9px; height: 9px; border-radius: 50%;
    background: var(--fp-paper); border: 2px solid var(--fp-claret);
    transition: background .22s ease;
}
.fp-ptn__stop:hover .fp-ptn__node { background: var(--fp-claret); }

/* La tarjeta. Radio CORTO —5px—: lo justo para quitarle el canto de
   ladrillo sin convertirla en una burbuja. Y la franja de marca a 6px:
   a 3 se leía como un borde, no como una banda. */
.fp-ptc {
    display: block; position: relative; text-decoration: none;
    /* FP 1.85.0 · Salmón, no blanco. Un rectángulo blanco sobre el papel
       de FP se lee como un anuncio incrustado; el salmón hundido las
       separa del fondo sin sacarlas del periódico. */
    background: var(--fp-paper-2);
    border-top: 6px solid var(--fp-claret);
    border-radius: 5px; overflow: hidden;
    box-shadow: none;
    border-left: 1px solid var(--fp-rule);
    border-right: 1px solid var(--fp-rule);
    border-bottom: 1px solid var(--fp-rule);
}
/* FP 1.95.0 · SIN moverse ni crecer la sombra al pasar el ratón (orden
   del CEO). La tarjeta se queda quieta: lo único que responde es el
   titular, que cambia a claret, y la flecha, que avanza. En un bloque
   editorial el movimiento distrae más de lo que ayuda. */
/* FP 1.96.0 · NINGÚN efecto al pasar el ratón (orden del CEO). Ni se
   eleva, ni sombra, ni borde rojo, ni cambia el titular, ni se mueve la
   flecha. La tarjeta entera es un enlace y el cursor ya lo dice: en un
   bloque editorial no hace falta nada más. */

.fp-ptc__ph {
    display: block; position: relative; aspect-ratio: 16 / 9;
    overflow: hidden; background: var(--fp-paper);
}
/* FP 1.89.0 · SIN zoom al pasar el ratón (orden del CEO). La tarjeta ya
   se eleva y el titular cambia de color: mover también la foto era un
   efecto de más. */
.fp-ptc__ph img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* La chapa de origen, sobre la foto. */
.fp-ptc__geo {
    position: absolute; left: 0; bottom: 0; display: flex; align-items: stretch;
    font-family: var(--fp-mono, "JetBrains Mono", Consolas, monospace);
    font-size: 9.5px; letter-spacing: .07em; text-transform: uppercase;
}
.fp-ptc__geo b { display: flex; align-items: center; padding: 5px 7px;
                 background: var(--fp-claret); color: #fff; font-weight: 700; letter-spacing: .1em; }
.fp-ptc__geo u { display: flex; align-items: center; padding: 5px 8px;
                 background: rgba(26, 22, 20, .88); color: #fff; text-decoration: none; }
.fp-ptc__geo em { display: flex; align-items: center; padding: 5px 9px 5px 0;
                  background: rgba(26, 22, 20, .88); color: rgba(255, 255, 255, .6);
                  font-style: normal; font-variant-numeric: tabular-nums; }

.fp-ptc__b { display: block; padding: 13px 15px 14px; }
.fp-ptc__t {
    display: block; font-family: var(--fp-serif); font-weight: 800;
    font-size: 16px; line-height: 1.26; letter-spacing: -.012em; color: var(--fp-ink);
}


.fp-ptc__f {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    margin-top: 12px; padding-top: 11px; border-top: 1px solid rgba(26, 22, 20, .14);
}
/* El logo del socio a color y a tamaño real: si se le pide al lector que
   vaya a otro sitio, la marca tiene que verse. */
/* FP 1.85.0 · EL LOGO SALÍA A TAMAÑO NATURAL, enorme bajo el titular.
   Culpa de `.et-pcv2-page img { height: auto }`, que es (0,1,1) y le
   ganaba a `.fp-ptc__logo` (0,1,0). Se sube la especificidad con la
   clase del padre —(0,2,0) más el contexto—, que es como se arregla
   esto en la casa: nunca con !important. */
.fp-ptc .fp-ptc__logo,
.et-pcv2-page .fp-ptc .fp-ptc__logo {
    display: block; width: auto; max-width: 120px;
    height: 22px; max-height: 22px; object-fit: contain;
}
.fp-ptc__go {
    display: inline-flex; gap: 4px; white-space: nowrap;
    font-family: var(--fp-sans); font-size: 9.5px; font-weight: 700;
    letter-spacing: .09em; text-transform: uppercase; color: var(--fp-claret);
}



.fp-ptc__coord {
    display: block; margin-top: 9px;
    font-family: var(--fp-mono, "JetBrains Mono", Consolas, monospace);
    font-size: 9px; letter-spacing: .06em; color: var(--fp-ink-2);
    opacity: .5; font-variant-numeric: tabular-nums;
}

.fp-ptn__foot {
    margin: 14px 0 0; padding-top: 11px; border-top: 1px solid var(--fp-rule);
    font-family: var(--fp-mono, "JetBrains Mono", Consolas, monospace);
    font-size: 9.5px; letter-spacing: .07em; text-transform: uppercase;
    color: var(--fp-ink-2); opacity: .72;
}
.fp-ptn__foot span { color: var(--fp-claret); }

@media (max-width: 1000px) {
    .fp-ptn__grid { grid-template-columns: 1fr; }
    .fp-ptn__col, .fp-ptn__rail {
        border-left: 0; padding: 20px 0 0; margin-top: 20px;
        border-top: 1px solid var(--fp-rule);
    }
    .fp-ptn__col:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
}

/* ═══════════════════════════════════════════════════════════════════
   FP 1.94.0 · Las dos piezas nuevas de la portada
   ═══════════════════════════════════════════════════════════════════ */

/* Shipping · la que va DEBAJO de la destacada: solo titular y firma,
   separada por un filete corto para que se lea como una pieza aparte y
   no como la continuación de la de arriba. */
.et-pcv2-mrn__a1-extra {
    position: relative;
    margin-top: 14px;
    padding-top: 13px;
}
.et-pcv2-mrn__a1-extra::before {
    content: "";
    position: absolute; top: 0; left: 0;
    width: 34px; height: 1px;
    background: var(--fp-ink, #1A1614);
}
.et-pcv2-mrn__a1-extra-title {
    margin: 0;
    font-family: var(--fp-serif);
    font-weight: 800;
    font-size: 16px;
    line-height: 1.24;
    letter-spacing: -.012em;
}
.et-pcv2-mrn__a1-extra-title a { color: var(--fp-ink, #1A1614); text-decoration: none; }
.et-pcv2-mrn__a1-extra-title a:hover { color: var(--fp-claret); }
.et-pcv2-mrn__a1-extra-title .et-pcv2-hero__kicker {
    font-family: inherit; font-size: inherit; font-weight: inherit;
    letter-spacing: inherit; text-transform: none; color: var(--fp-claret);
}

/* World Economy · la tercera cierra la columna sin foto ni entradilla. */
.fp-eco__it--bare {
    padding-top: 13px;
    border-top: 1px solid var(--fp-rule);
}
.fp-eco__it--bare .fp-eco__it-t { font-size: 15px; line-height: 1.26; }


/* ═══════════════════════════════════════════════════════════════════
   FP 2.0.3 · ECONOMY, CON LA LETRA DEL HERO
   ═══════════════════════════════════════════════════════════════════
   El 800→900 de la 2.0.2 no se veia, y medido en produccion salio el
   porque: estos titulos heredaban --fp-sans resuelto a MANROPE en su
   ambito, mientras el hero del home va en INTER 800. Manrope es mas
   redonda y mas ligera a igual numero — por eso «seguia igual».

   Orden del CEO: la misma letra y grosor que el hero. Inter en literal
   —no via variable, que es justo lo que se torcia— y 800, que es lo que
   el hero tiene de verdad (medido, no supuesto). Va al final del
   fichero a proposito: misma especificidad + despues = gana. */
/* FP 2.0.5 · CON !important, y no por gusto: hay un <style> en linea
   («Manrope por defecto en todo») que fuerza Manrope !important sobre
   `body *` — pisaba la familia pero no el peso, y por eso el 800 entraba
   y la letra no. Entre dos !important gana la especificidad: estas
   clases (0,1,0) baten a `body *` (0,0,1). El default de Manrope del
   resto del sitio queda intacto. */
/* FP 2.0.6 · TAMBIEN LAS ANCLAS. Con la 2.0.5 los h3 pasaron a Inter
   pero las noticias seguian igual: el texto del titular vive en el <a>
   de dentro, y el estilo en linea de Manrope tambien golpea a `a`
   DIRECTAMENTE — y una regla directa sobre el elemento le gana a lo que
   herede del padre, aunque el padre grite. Medido en produccion: el h3
   era Inter y su ancla, Manrope. Se listan las anclas (0,1,1 con
   !important bate al 0,0,1 del estilo en linea). */
.fp-eco__col-h,
.fp-eco__rail-h,
.fp-eco__seeall,
.fp-eco__lead-t,   .fp-eco__lead-t a,
.fp-eco__sub-t,    .fp-eco__sub-t a,
.fp-eco__it-t,     .fp-eco__it-t a {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
    font-weight: 800 !important;
}

/* El kicker dentro de esos titulares, como el del hero: Inter 700
   (medido en el hero real — el span tambien recibe el Manrope directo
   y hay que nombrarlo). */
.fp-eco__lead-t .et-pcv2-hero__kicker,
.fp-eco__sub-t .et-pcv2-hero__kicker,
.fp-eco__it-t .et-pcv2-hero__kicker {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
    font-weight: 700 !important;
}

/* «Economy & Markets» baja un punto (orden del CEO): 700, no 800.
   Con el ambito .et-pcv2-page delante para ganar (0,2,0) a la regla
   general de titulares del home (0,1,1) que se añade debajo. */
.fp-eco__head-t,
.et-pcv2-page .fp-eco__head-t {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
    font-weight: 700 !important;
}


/* ═══════════════════════════════════════════════════════════════════
   FP 2.0.4 · LOS TITULOS AZULES: LA TINTA HEREDADA DE INFOPUERTOS
   ═══════════════════════════════════════════════════════════════════
   El CEO señalo que Containers, Fishing, Shipping & Offshore, Energy
   Renewables, Ports y Shipyards llevaban los titulares en azul oscuro.
   Medido en produccion: #0E2436 — la tinta del theme del que salio este
   fork.

   LA CAUSA DE RAIZ: todos esos titulos pintan con
       color: var(--pcv2-ink1, #0E2436);
   y --pcv2-ink1 NO SE DEFINE EN NINGUNA PARTE, asi que los 25 usos caian
   siempre al respaldo azul. No son 25 fallos: es UNA variable huerfana.
   Se define una vez apuntando a la tinta de FP y los 25 se corrigen de
   golpe — y si mañana una plantilla nueva la usa, ya nace bien. */
:root {
    --pcv2-ink1: var(--fp-ink, #1A1614);
}

/* Los dos que iban con el color escrito a pelo, fuera de la variable:
   el titulo de las tarjetas de newsletters (#0B2A3D) y la marca en texto
   del movil (#0E2436). */
.et-pcv2-news__title,
.et-pcv2-news__count strong,
.et-m-suc__brand-txt {
    color: var(--fp-ink, #1A1614) !important;
}


/* ═══════════════════════════════════════════════════════════════════
   FP 2.0.7 · INTER 800 EN TODOS LOS TITULARES DEL HOME
   ═══════════════════════════════════════════════════════════════════
   Orden del CEO: lo de Economy, a todas las secciones. En vez de cazar
   clase a clase (ener, mrn, oph, news, sports…), una regla de AMBITO
   sobre la portada (.et-pcv2-page): todo titular h1-h4, su ancla y el
   kicker de dentro. Las tres lecciones de Economy vienen aprendidas:

     · !important, porque el <style> en linea de «Manrope por defecto»
       tambien lo lleva;
     · las ANCLAS nombradas, porque el texto vive en el <a> y la regla
       directa del inline le gana a lo heredado;
     · los KICKERS aparte y a 700, que es lo que tiene el hero medido.

   Solo la portada: .et-pcv2-page no existe en artículos ni en /games/. */
.et-pcv2-page h1, .et-pcv2-page h2, .et-pcv2-page h3, .et-pcv2-page h4,
.et-pcv2-page h1 a, .et-pcv2-page h2 a, .et-pcv2-page h3 a, .et-pcv2-page h4 a {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
    font-weight: 800 !important;
}
.et-pcv2-page .et-pcv2-hero__kicker {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
    font-weight: 700 !important;
}

/* ════════════════════════════════════════════════════════════════════
   FP 2.1.0 · LA CURVA DEL PULSO — bajo World Economy
   ────────────────────────────────────────────────────────────────────
   Panel salmón hundido con la serie real de IMF PortWatch: curva FT
   (media 7d en claret sobre el diario en tinta tenue), conmutador de
   métrica, crosshair con tooltip y el crédito de CAMAL AI abajo a la
   derecha. Esquinas VIVAS: nada de redondeos genéricos.
   Verde de subida #166A40: 5.4:1 sobre el salmón (medido, no a ojo).
   ════════════════════════════════════════════════════════════════════ */
/* FP 2.1.1 · Compactado en vertical (la caja dejaba demasiado aire
   entre las noticias, captura del CEO) y SIN caja salmón: la gráfica
   vive directamente sobre el papel del theme, a sangre con la columna,
   como un chart del FT — solo el filete negro arriba la presenta. */
.fp-tpc {
    margin-top: 18px;
    background: transparent;
    border-top: 2px solid var(--fp-ink);
    padding: 10px 0 0;
}
.fp-tpc__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
}
.fp-tpc__eyebrow {
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .9px;
    text-transform: uppercase;
    color: var(--fp-claret);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 7px;
}
.fp-tpc__eyebrow:hover { color: var(--fp-ink); }
/* FP 2.1.2 · el punto parpadeante se fue con la caja salmón */

.fp-tpc__delta {
    font-size: 12.5px;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.fp-tpc__delta small {
    font-size: 10px;
    font-weight: 600;
    color: var(--fp-muted);
    margin-left: 3px;
    text-transform: uppercase;
    letter-spacing: .5px;
}
.fp-tpc__delta--up   { color: #166A40; }
.fp-tpc__delta--down { color: var(--fp-claret); }
.fp-tpc__delta--flat { color: var(--fp-muted); }

.fp-tpc__title {
    font-family: var(--fp-serif);
    font-size: 19px;
    font-weight: 700;
    line-height: 1.15;
    color: var(--fp-ink);
    margin: 6px 0 0;
}
.fp-tpc__sub {
    font-size: 11px;
    color: var(--fp-muted);
    margin: 2px 0 0;
}

.fp-tpc__tabs {
    display: flex;
    gap: 6px;
    margin-top: 8px;
}
.fp-tpc__tab {
    appearance: none;
    background: transparent;
    border: 1px solid var(--fp-rule);
    border-radius: 0;
    color: var(--fp-ink-2);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .6px;
    text-transform: uppercase;
    padding: 5px 11px;
    cursor: pointer;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.fp-tpc__tab:hover { border-color: var(--fp-ink); color: var(--fp-ink); }
.fp-tpc__tab.is-on {
    background: var(--fp-ink);
    border-color: var(--fp-ink);
    color: var(--fp-paper);
}
.fp-tpc__tab:focus-visible {
    outline: 2px solid var(--fp-claret);
    outline-offset: 1px;
}

.fp-tpc__stage {
    position: relative;
    margin-top: 7px;
    cursor: crosshair;
}
.fp-tpc__svg {
    display: block;
    width: 100%;
    transition: opacity .18s ease;
}
.fp-tpc__svg text { font-family: 'Inter', -apple-system, sans-serif; }

.fp-tpc__tip {
    position: absolute;
    z-index: 5;
    pointer-events: none;
    background: var(--fp-deep);
    color: #F6E5D2;
    font-size: 11px;
    line-height: 1.45;
    padding: 7px 10px 8px;
    box-shadow: 0 4px 14px rgba(13, 13, 13, .28);
    font-variant-numeric: tabular-nums;
    max-width: 190px;
}
.fp-tpc__tip strong {
    display: block;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .6px;
    text-transform: uppercase;
    color: #C9B29E;
    margin-bottom: 2px;
}
.fp-tpc__tip span {
    display: block;
    color: #C9B29E;
    font-size: 10.5px;
    margin-top: 1px;
}

.fp-tpc__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 7px;
    padding-top: 6px;
    border-top: 1px solid var(--fp-rule);
}
.fp-tpc__src {
    font-size: 10.5px;
    color: var(--fp-muted);
    white-space: nowrap;   /* FP 2.1.1 · «Source: CAMAL AI» jamás en tres líneas */
}
/* FP 2.1.0 · El crédito es el LOGO de CAMAL AI teñido en claret
   (assets/img/camalai-logo-claret.png, generado del logo último):
   14px de alto bastan — es una firma, no una cabecera. */
.fp-tpc__credit { display: block; align-self: center; }
.fp-tpc__credit-logo {
    height: 18px;   /* FP 2.2.0 · «un poquito más grande» (CEO) y enlazado */
    width: auto;
    display: block;
}
.fp-tpc__credit:hover .fp-tpc__credit-logo { opacity: .8; }

/* ════════════════════════════════════════════════════════════════════
   FP 2.3.0 · LA FICHA DE CADA COTIZADA — /shipping-stocks/{empresa}/
   Mismo lenguaje que las curvas del home; el tablero enlaza aquí. */
.stx__row--link {
    text-decoration: none;
    color: inherit;
}
.stx__row--link:hover .stx__co b {
    color: var(--fp-claret);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.stx__mname--link {
    text-decoration: none;
    color: inherit;
}
.stx__mname--link:hover {
    color: var(--fp-claret);
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* FP 2.3.1 · La ficha ocupa el MISMO ancho que el tablero (los 1000px
   de .rkp--fp) — el tope de 860 la dejaba estrecha frente al listado. */
.stkd__back { margin: 0 0 6px; }
.stkd__back a {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .4px;
    color: var(--fp-muted);
    text-decoration: none;
}
.stkd__back a:hover { color: var(--fp-claret); }

.fp-tpc--page { margin-top: 8px; }
.fp-tpc--page .stkd__name {
    font-size: 34px;
    letter-spacing: -.4px;
    margin-top: 10px;
}
.stkd__price {
    font-family: var(--fp-serif);
    font-size: 44px;
    font-weight: 700;
    line-height: 1;
    color: var(--fp-ink);
    margin: 12px 0 4px;
    font-variant-numeric: tabular-nums;
}
.stkd__price .stkd__cur {
    font-family: 'Inter', -apple-system, sans-serif;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: .6px;
    color: var(--fp-muted);
    margin-left: 4px;
}
.stkd__facts {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 34px;
    margin: 12px 0 0;
    padding: 10px 0 0;
    border-top: 1px solid var(--fp-rule);
}
.stkd__facts dt {
    font-size: 16px;
    font-weight: 800;
    color: var(--fp-ink);
    font-variant-numeric: tabular-nums;
}
.stkd__facts dd {
    margin: 1px 0 0;
    font-size: 10.5px;
    letter-spacing: .5px;
    text-transform: uppercase;
    color: var(--fp-muted);
}

/* FP 2.3.1 · THE NEWSROOM — hermano visual de la ficha: reutiliza la
   cabecera de las curvas (.fp-tpc__eyebrow/title/sub), columna de
   fecha en versalitas estilo FT, y el guiño a la gráfica: el hover
   enciende una BARRA CLARET vertical, como el crosshair de la curva. */
.stkd__news {
    margin-top: 40px;
    border-top: 2px solid var(--fp-ink);   /* el mismo filete que presenta la curva */
    padding-top: 10px;
}
.stkd__news-list { margin-top: 14px; }
.stkd__news-row {
    position: relative;
    display: flex;
    gap: 24px;
    align-items: flex-start;
    padding: 20px 0 20px 14px;
    border-bottom: 1px solid var(--fp-rule);
    transition: background .18s ease;
}
.stkd__news-row::before {
    /* el crosshair de la curva, hecho lomo editorial */
    content: '';
    position: absolute;
    left: 0; top: 16px; bottom: 16px;
    width: 2px;
    background: var(--fp-claret);
    opacity: 0;
    transition: opacity .18s ease;
}
.stkd__news-row:hover { background: rgba(247, 228, 211, .45); }
.stkd__news-row:hover::before { opacity: 1; }

.stkd__news-date {
    flex: 0 0 64px;
    padding-top: 3px;
    text-align: left;
    line-height: 1.2;
}
.stkd__news-date b {
    display: block;
    font-size: 12.5px;
    font-weight: 800;
    letter-spacing: .8px;
    text-transform: uppercase;
    color: var(--fp-ink);
    font-variant-numeric: tabular-nums;
}
.stkd__news-date span {
    font-size: 10.5px;
    letter-spacing: 1px;
    color: var(--fp-muted);
    font-variant-numeric: tabular-nums;
}
.stkd__news-body { flex: 1 1 auto; min-width: 0; }
.stkd__news-t {
    font-family: var(--fp-serif);
    font-size: 21px;
    font-weight: 700;
    line-height: 1.22;
    letter-spacing: -.2px;
    margin: 0;
}
.stkd__news-t a { color: var(--fp-ink); text-decoration: none; }
.stkd__news-row:hover .stkd__news-t a { color: var(--fp-claret); }
.stkd__news-dek {
    font-size: 13.5px;
    line-height: 1.55;
    color: var(--fp-ink-2);
    margin: 7px 0 0;
    max-width: 60ch;
}
.stkd__news-img {
    flex: 0 0 190px;
    height: 118px;
    background-size: cover;
    background-position: center;
    display: block;
}
@media (max-width: 700px) {
    .stkd__news-row { gap: 14px; padding-left: 10px; }
    .stkd__news-date { flex-basis: 48px; }
    .stkd__news-img { flex-basis: 110px; height: 78px; }
    .stkd__news-t { font-size: 17px; }
}
@media (prefers-reduced-motion: reduce) {
    .stkd__news-row, .stkd__news-row::before { transition: none; }
}

/* ════════════════════════════════════════════════════════════════════
   FP 2.4.0 · THE WIDER BOARD — los mercados clave, 3+3 bajo los movers
   (combustible arriba, metales + divisa abajo), cada tarjeta a su
   ficha. Y la píldora «VIEW LIVE CHART →» al pasar el ratón por
   CUALQUIER cotización del tablero. */
.stx__mkts { margin: 34px 0 8px; }
.stx__mkts-sub {
    font-size: 12px;
    color: var(--fp-muted);
    margin: 4px 0 14px;
}
.stx__mkts-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0 28px;
    border-top: 1px solid var(--fp-rule);
}
.stx__mkt {
    position: relative;
    display: block;
    padding: 14px 2px 14px;
    border-bottom: 1px solid var(--fp-rule);
    text-decoration: none;
    color: inherit;
    transition: background .15s ease;
}
.stx__mkt:hover { background: rgba(247, 228, 211, .5); }
.stx__mkt-top {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
}
.stx__mkt-top b {
    font-size: 13px;
    font-weight: 800;
    letter-spacing: .2px;
    color: var(--fp-ink);
}
.stx__mkt:hover .stx__mkt-top b { color: var(--fp-claret); }
.stx__mkt-px {
    display: block;
    font-family: var(--fp-serif);
    font-size: 24px;
    font-weight: 700;
    color: var(--fp-ink);
    margin-top: 6px;
    font-variant-numeric: tabular-nums;
}
.stx__mkt-nt {
    display: block;
    font-size: 10.5px;
    letter-spacing: .5px;
    text-transform: uppercase;
    color: var(--fp-muted);
    margin-top: 3px;
}
@media (max-width: 700px) {
    .stx__mkts-grid { grid-template-columns: repeat(2, 1fr); gap: 0 18px; }
}

/* La píldora del aviso: tinta profunda, versalitas, flecha — aparece
   elevándose sobre la fila/tarjeta al pasar el ratón. */
.stx__row--link, .stx__mkt, .stx__mrow { position: relative; }
.stx__row--link::after,
.stx__mkt::after,
.stx__mrow::after {
    content: 'View live chart \2192';
    position: absolute;
    right: 6px;
    top: -13px;
    z-index: 4;
    background: var(--fp-deep);
    color: #F6E5D2;
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 1.3px;
    text-transform: uppercase;
    padding: 5px 9px 4px;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transform: translateY(5px);
    transition: opacity .16s ease, transform .16s ease;
    box-shadow: 0 3px 10px rgba(13, 13, 13, .22);
}
.stx__row--link:hover::after,
.stx__mkt:hover::after,
.stx__mrow:hover::after {
    opacity: 1;
    transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
    .stx__row--link::after, .stx__mkt::after, .stx__mrow::after { transition: none; }
}

/* ════════════════════════════════════════════════════════════════════
   FP 2.5.0 · LA CURVA DENTRO DE LA NOTICIA + LA CAPITULAR
   La curva compacta hereda todo el lenguaje .fp-tpc; aquí solo el
   encaje dentro de la columna de texto del artículo. */
/* v2.5.2 · MARCHA ATRÁS con la caja de cita (orden del CEO, con
   captura): la curva vuelve al diseño limpio original — directamente
   sobre el papel, presentada solo por el filete negro de arriba, como
   las curvas del home. El fix de que no parta citas ni ads se queda. */
.fp-tpc--article {
    margin: 30px 0;
    padding: 12px 0 0;
}
.fp-tpc--article .fp-tpc__title { font-size: 20px; }
.fp-tpc--article .fp-tpc__title a { color: var(--fp-ink); text-decoration: none; }
.fp-tpc--article .fp-tpc__title a:hover { color: var(--fp-claret); }

/* LA CAPITULAR (orden del CEO): la primera letra de cada noticia en
   Playfair Display negrita — el gesto editorial que separa «bonito»
   de «institución». Solo el primer párrafo del cuerpo, PC y móvil. */
/* v2.5.3 · el selector REAL: en FP los artículos los pinta la plantilla
   del plugin CAMAL (.dai-tpl__body), no .et-body — medido en producción
   (curl al artículo del canal de Panamá: cero .et-body en el DOM). Se
   conservan los del theme por las plantillas propias y el móvil. */
.dai-tpl__body > p:first-of-type::first-letter,
.et-body > p:first-of-type::first-letter,
.et-m__art-body > p:first-of-type::first-letter {
    font-family: 'Playfair Display', Georgia, 'Times New Roman', serif;
    font-weight: 700;
    font-size: 3.35em;
    line-height: .82;
    float: left;
    padding: 4px 9px 0 0;
    color: var(--fp-ink);
}

/* ════════════════════════════════════════════════════════════════════
   FP 2.6.0 · THE WORLD THIS MONTH — el mapa del mes
   Tierra en tinta cálida, mar en salmón hundido, cobertura en escala
   claret (la pinta fp-worldmap.js vía --fpwm-c). */
.fpwm__head { margin-bottom: 18px; }
.fpwm__title {
    font-family: var(--fp-serif);
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -.4px;
    line-height: 1.1;
    color: var(--fp-ink);
    margin: 8px 0 4px;
}
.fpwm__stage {
    position: relative;
    border-top: 2px solid var(--fp-ink);
    padding-top: 16px;
}
.fpwm__map svg { width: 100%; height: auto; display: block; }
/* v2.7.6 · MISMO diseño que World Markets (decisión del CEO): sin
   fondo — la tierra flota sobre el papel — y los países sin cobertura
   en gris cálido claro; la cobertura sigue en la escala claret. */
.fpwm__map path, .fpwm__map circle { fill: #CBC0B4; stroke: var(--fp-paper); stroke-width: .5; }
.fpwm__map .oceanxx { fill: none; stroke: none; }
.fpwm__map .fpwm--has path, .fpwm__map .fpwm--has circle,
.fpwm__map path.fpwm--has, .fpwm__map circle.fpwm--has { fill: var(--fpwm-c, #C05A50); cursor: pointer; }
.fpwm__map .fpwm--has:hover path, .fpwm__map .fpwm--has:hover circle,
.fpwm__map path.fpwm--has:hover, .fpwm__map circle.fpwm--has:hover { fill: var(--fp-claret); }
.fpwm__map .is-sel path, .fpwm__map .is-sel circle,
.fpwm__map path.is-sel, .fpwm__map circle.is-sel { stroke: var(--fp-ink); stroke-width: 2; }

.fpwm__tip {
    position: absolute;
    z-index: 6;
    pointer-events: none;
    background: var(--fp-deep);
    color: #F6E5D2;
    font-size: 11px;
    line-height: 1.5;
    padding: 7px 10px 8px;
    box-shadow: 0 4px 14px rgba(13, 13, 13, .28);
    white-space: nowrap;
}
.fpwm__tip strong {
    display: block;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .8px;
    text-transform: uppercase;
    color: #C9B29E;
}

.fpwm__chips {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin: 18px 0 6px;
    padding-top: 14px;
    border-top: 1px solid var(--fp-rule);
}
.fpwm__chip b {
    font-weight: 800;
    color: var(--fp-claret);
    margin-left: 4px;
}
.fpwm__chip.is-on b { color: inherit; }

.fpwm__news { min-height: 120px; }
.fpwm__kicker {
    display: block;
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: .8px;
    text-transform: uppercase;
    color: var(--fp-claret);
    margin-bottom: 3px;
}
.fpwm__foot { margin-top: 26px; }

/* v2.6.2 · la firma en las filas del mapa: mismo idioma que el resto
   de la casa, en pequeño y con aire sobre el subtítulo. */
.fpwm__byline { margin-top: 7px; font-size: 11.5px; }
.fpwm__byline .et-pcv2-hero__byline-author { font-weight: 800; color: var(--fp-ink); }
.fpwm__byline .et-pcv2-hero__byline-role { color: var(--fp-muted); }
.fpwm__byline .et-pcv2-hero__byline-sep { display: inline-block; width: 1px; height: 10px; background: var(--fp-rule); margin: 0 8px; vertical-align: middle; }

/* v2.6.3 · el patrocinio del mapa: sereno de serie, pleno al pasar. */
.fpwm__sponsor { opacity: .92; transition: opacity .15s ease; cursor: pointer; }
.fpwm__sponsor:hover { opacity: 1; }

/* ════════════════════════════════════════════════════════════════════
   FP 2.7.0 · WORLD MARKETS — el mapa coropleta de los índices en
   /shipping-stocks/: pérdidas hacia el claret, ganancias hacia el
   verde del tablero, plano en arena, sin datos en gris cálido. Panel
   de índices a la derecha con cebra de la casa. */
.stx__wmk { margin: 34px 0 8px; }
.stx__wmk .rkp__source { margin: 16px 0 34px; }   /* v2.7.2 · aire con la seccion de abajo */
.fpmk {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 20px;
    align-items: start;
    border-top: 1px solid var(--fp-rule);
    padding-top: 16px;
}
.fpmk__left { position: relative; min-width: 0; }
.fpmk__map svg { width: 100%; height: auto; display: block; }
.fpmk__map path, .fpmk__map circle { fill: #CBC0B4; stroke: var(--fp-paper); stroke-width: .5; }
/* v2.7.2 · SIN el ovalo de fondo (orden del CEO, como la captura): el
   oceano no se pinta y la tierra flota sobre el papel. */
.fpmk__map .oceanxx { fill: none; stroke: none; }
.fpmk__map .fpmk--has path, .fpmk__map .fpmk--has circle,
.fpmk__map path.fpmk--has, .fpmk__map circle.fpmk--has { fill: var(--fpmk-c, #D8CDC0); cursor: pointer; }
.fpmk__map .fpmk--has:hover path, .fpmk__map .fpmk--has:hover circle { stroke: var(--fp-ink); stroke-width: 1.2; }
.fpmk__map .is-sel path, .fpmk__map .is-sel circle { stroke: var(--fp-ink); stroke-width: 2; }

.fpmk__tip {
    position: absolute;
    z-index: 6;
    pointer-events: none;
    background: var(--fp-deep);
    color: #F6E5D2;
    font-size: 11px;
    line-height: 1.5;
    padding: 7px 10px 8px;
    box-shadow: 0 4px 14px rgba(13, 13, 13, .28);
    white-space: nowrap;
}
.fpmk__tip strong {
    display: block;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .8px;
    text-transform: uppercase;
    color: #C9B29E;
}
.fpmk__tip-up   { color: #6FD3A4; }
.fpmk__tip-down { color: #FF9A8B; }
.fpmk__tip-flat { color: #F6E5D2; }

.fpmk__legend {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 12px;
}
.fpmk__legend-lb {
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--fp-ink);
}
.fpmk__ramp {
    width: 190px;
    height: 10px;
    background: linear-gradient(90deg, #C1272D, #C96A5F, #D8CDC0, #6FA98A, #0E6B4A);
    border: 1px solid var(--fp-rule);
}

.fpmk__panel {
    border-top: 2px solid var(--fp-ink);
    padding-top: 12px;
}
.fpmk__panel-h {
    font-family: var(--fp-serif);
    font-size: 21px;
    font-weight: 700;
    color: var(--fp-ink);
    margin: 0;
}
.fpmk__panel-sub {
    font-size: 11px;
    color: var(--fp-muted);
    margin: 3px 0 10px;
}
.fpmk__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 10px;
}
.fpmk__row:nth-child(even) { background: var(--fp-paper-2); }
.fpmk__row.is-stale { opacity: .65; }
.fpmk__ix { flex: 1 1 auto; min-width: 0; }
.fpmk__ix b {
    display: block;
    font-size: 12.5px;
    color: var(--fp-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.fpmk__ix small {
    font-size: 10px;
    letter-spacing: .5px;
    color: var(--fp-muted);
}
.fpmk__last {
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-size: 13px;
    font-weight: 700;
    color: var(--fp-ink);
    white-space: nowrap;
}
.fpmk__last small { display: block; font-size: 9.5px; font-weight: 600; color: var(--fp-muted); }
.fpmk__chg {
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-size: 12.5px;
    white-space: nowrap;
    min-width: 72px;
}
.fpmk__chg b { display: block; font-weight: 800; }
.fpmk__chg small { font-size: 11px; font-weight: 700; }
.fpmk__chg--up   { color: #0E6B4A; }
.fpmk__chg--down { color: var(--fp-claret); }
.fpmk__chg--flat { color: var(--fp-muted); }

@media (max-width: 860px) {
    .fpmk { grid-template-columns: 1fr; }
}

/* FP 2.7.4 · «World News Map» abre el menú principal en CLARET
   (orden del CEO): destacado pero de la casa, con su hover a tinta. */
/* DM 1.10.0 · EL HUECO DEL MENÚ, MEDIDO EN LA WEB.
   ────────────────────────────────────────────────────────────────
   El CEO veía «mucho espacio» en Palacio Real y sospechaba del icono
   de CAMAL. No era el icono: se abrió la web y se midió. «PALACIO
   REAL» ocupaba **72 px de alto** y «Turismo» **51** — 21 px de
   diferencia, que es exactamente una segunda línea. El rótulo se
   partía en dos («PALACIO» arriba, «REAL» debajo), y como la barra
   crece con el enlace más alto, todos los demás quedaban con un hueco
   debajo.

   Se parte porque son dos palabras y el enlace no tenía `nowrap`. Y
   le pasa antes que a los demás porque el claret lo pone en peso 800,
   que es más ancho que el 700 del resto.

   `nowrap` en TODOS los enlaces, no solo en este: cualquier sección
   futura de dos palabras haría lo mismo. */
.et-pc-nav__link { white-space: nowrap; }
.et-pc-nav__link--rojo { color: var(--fp-claret) !important; font-weight: 800; }
.et-pc-nav__link--rojo:hover { color: var(--fp-ink) !important; }


/* v2.7.6 · la tira del patrocinio bajo el mapa + la nota del top 10 */
.fpwm__sponsor-strip {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--fp-rule);
}
.fpwm__sponsor-lb {
    font-size: 9.5px;
    font-weight: 800;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--fp-ink);
}
.fpwm__sponsor-strip a { display: block; opacity: .92; transition: opacity .15s ease; }
.fpwm__sponsor-strip a:hover { opacity: 1; }
.fpwm__chips-note {
    font-size: 10.5px;
    color: var(--fp-muted);
    letter-spacing: .3px;
    margin-left: 4px;
}

/* ════════════════════════════════════════════════════════════════════
   FP 2.8.0 · COMPOUND GROWTH CALCULATOR — /growth-calculator/
   CLONADO A LA CAPTURA de FT (orden del CEO): barras teal · naranja ·
   amarillo con sus llaves en la banda-resumen tostada, regla negra
   gorda, píldoras redondeadas con el elegido en teal oscuro, sliders
   teal e iconos ⓘ en burdeos. Solo la cabecera de la página viste FP. */
/* FP 2.8.1 · «ancho más grande»: el calculador estira su propio lienzo
   (el rkp--fp general se queda en 1000) y viste la tipografía del
   tablero de /shipping-stocks/: 900 en versalitas espaciadas, números
   tabulares, cabecera claret con subrayado a tinta. */
.rkp--fp.fpgc { max-width: 1240px; }
/* FP 2.8.2 · la cabecera en flex: titular a la izquierda y el
   patrocinio a la DERECHA del todo, a su altura (orden del CEO) */
.fpgc__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    border-bottom: 2px solid var(--fp-ink);
    padding-bottom: 14px;
    margin-bottom: 22px;
}
.fpgc__head-tx { flex: 1 1 auto; min-width: 0; }
.fpgc__title {
    font-family: var(--fp-serif);
    font-weight: 800;
    font-size: clamp(30px, 5vw, 46px);
    line-height: 1.05;
    letter-spacing: -.02em;
    margin: 6px 0 8px;
    color: var(--fp-ink);
}
.fpgc__lede { margin: 0; font-size: 14.5px; line-height: 1.5; color: var(--fp-ink-2); max-width: 640px; }

.fpgc__grid {
    display: grid;
    grid-template-columns: 1fr 360px;
    /* auto 1fr: SIN esto, el alto del panel (que abarca las dos filas)
       se reparte entre ambas y abre un hueco muerto entre la banda y
       la regla negra de la gráfica — el «espacio vacío» que vio el
       CEO. Así, la fila de la banda mide su contenido y punto. */
    grid-template-rows: auto 1fr;
    grid-template-areas: "res panel" "chart panel";
    gap: 18px 48px;
    align-items: start;
}
.fpgc__res   { grid-area: res; }
.fpgc__stage { grid-area: chart; }
.fpgc__panel { grid-area: panel; }

.fpgc__verdict {
    margin: 0 0 16px;
    font-size: 18px;
    line-height: 1.5;
    color: var(--fp-ink);
    max-width: 660px;
}
.fpgc__verdict strong { font-weight: 800; white-space: nowrap; }

/* La banda-resumen: la tira tostada ENTERA (como en la captura),
   con la llave de color de cada tramo a la izquierda de su celda */
.fpgc__band {
    display: grid;
    grid-template-columns: 1.25fr 1fr 1fr 1fr;
    gap: 0;
    background: var(--fp-paper-2);
}
.fpgc__cell { padding: 12px 16px 14px; }
.fpgc__cell small {
    display: block;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--fp-ink-2);
    margin-bottom: 4px;
}
.fpgc__cell b {
    font-size: 20px;
    font-weight: 800;
    color: var(--fp-ink);
    font-variant-numeric: tabular-nums;
    letter-spacing: -.01em;
}
.fpgc__cell--total b { font-size: 30px; }
.fpgc__cell--ini { border-left: 4px solid #0D7680; }
.fpgc__cell--con { border-left: 4px solid #EF9457; }
.fpgc__cell--ret { border-left: 4px solid #F1CC70; }

/* La gráfica, bajo su regla negra gorda (el gesto FT de la captura) */
.fpgc__stage { position: relative; border-top: 6px solid var(--fp-ink); padding-top: 14px; }
.fpgc__chart { min-height: 200px; }
.fpgc__svg { display: block; width: 100%; height: auto; }
.fpgc__svg text { font-family: 'Inter', -apple-system, sans-serif; }
.fpgc__bar { cursor: crosshair; }
.fpgc__bar:hover rect { opacity: .88; }
.fpgc__tip { max-width: 230px; }
.fpgc__vacio {
    margin: 0;
    padding: 60px 20px;
    text-align: center;
    font-family: var(--fp-serif);
    font-size: 17px;
    color: var(--fp-muted);
}

/* El panel de escenario: sobre el salmón desnudo bajo su regla negra,
   con los inputs en blanco — tal cual la captura */
.fpgc__panel {
    border-top: 6px solid var(--fp-ink);
    padding: 16px 0 4px;
}
/* FP 2.8.1 · la voz del tablero: cabecera tipo stx__seghead (claret,
   900, versalitas, subrayado a tinta) y etiquetas espaciadas */
.fpgc__panel-h {
    margin: 0 0 14px;
    padding: 0 0 7px;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--fp-claret);
    border-bottom: 2px solid var(--fp-ink);
}
.fpgc__lb {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--fp-ink);
    margin: 18px 0 8px;
}
.fpgc__panel .fpgc__lb:first-of-type { margin-top: 0; }
.fpgc__info {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 15px;
    height: 15px;
    border: 1.5px solid #990F3D;   /* el burdeos del ⓘ de la captura */
    border-radius: 50%;
    font-size: 9.5px;
    font-weight: 700;
    font-style: italic;
    font-family: var(--fp-serif);
    color: #990F3D;
    cursor: help;
    text-transform: none;
}
.fpgc__info:hover, .fpgc__info:focus-visible { border-color: var(--fp-ink); color: var(--fp-ink); }
.fpgc__duo { display: grid; grid-template-columns: 1fr 110px; gap: 8px; }
.fpgc__in {
    width: 100%;
    background: #FFFEFB;
    border: 1px solid #B9AFA5;
    border-radius: 0;
    padding: 9px 10px;
    font-size: 15px;
    font-weight: 600;
    color: var(--fp-ink);
    font-variant-numeric: tabular-nums;
    font-family: inherit;
    box-sizing: border-box;
}
.fpgc__in:focus { outline: 2px solid #0D7680; outline-offset: -1px; border-color: #0D7680; }
.fpgc__sel { padding-right: 6px; cursor: pointer; }
.fpgc__pills { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.fpgc__pill {
    appearance: none;
    background: #FFFEFB;
    border: 1px solid rgba(26, 22, 20, .35);
    border-radius: 999px;    /* la píldora redonda de la captura */
    color: var(--fp-ink);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .02em;
    font-variant-numeric: tabular-nums;
    padding: 6px 14px;
    cursor: pointer;
    font-family: inherit;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.fpgc__pill:hover { border-color: var(--fp-ink); }
.fpgc__pill.is-on {
    background: #0D5257;     /* el teal oscuro del elegido */
    border-color: #0D5257;
    color: #FFFDF8;
    font-weight: 700;
}
.fpgc__pill:focus-visible { outline: 2px solid #0D7680; outline-offset: 1px; }
.fpgc__range {
    width: 100%;
    accent-color: #0D7680;   /* el slider teal de la captura */
    height: 22px;
    margin: 2px 0 0;
    cursor: pointer;
}
.fpgc__val {
    font-size: 12.5px;
    font-weight: 800;
    letter-spacing: .02em;
    color: #0D7680;
    font-variant-numeric: tabular-nums;
    margin-top: 2px;
}

/* FP 2.8.2 · El patrocinio vive en la cabecera, alineado con el
   titular: columna etiqueta+logo pegada a la derecha, sin filetes
   (los que llevaba cuando vivía bajo las opciones del panel). */
.fpgc__sponsor {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 5px;
    flex: 0 0 auto;
}
.fpgc__sponsor-lb {
    font-size: 9.5px;
    font-weight: 800;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--fp-ink);
}
.fpgc__sponsor a { display: block; opacity: .92; transition: opacity .15s ease; }
.fpgc__sponsor a:hover { opacity: 1; }

.fpgc__foot { margin-top: 18px; }

/* El anuncio de la herramienta al pie del tablero de /shipping-stocks/ */
.fpgc-promo {
    display: block;
    margin-top: 30px;
    padding: 16px 0 4px;
    border-top: 2px solid var(--fp-ink);
    text-decoration: none;
}
.fpgc-promo__eyebrow {
    display: block;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .9px;
    text-transform: uppercase;
    color: var(--fp-claret);
}
.fpgc-promo__title {
    display: block;
    font-family: var(--fp-serif);
    font-size: 23px;
    font-weight: 800;
    color: var(--fp-ink);
    margin: 5px 0 4px;
}
.fpgc-promo__title i { font-style: normal; color: var(--fp-claret); transition: transform .15s ease; display: inline-block; }
.fpgc-promo:hover .fpgc-promo__title { color: var(--fp-claret); }
.fpgc-promo:hover .fpgc-promo__title i { transform: translateX(4px); }
.fpgc-promo__sub { display: block; font-size: 13px; line-height: 1.5; color: var(--fp-muted); max-width: 560px; }

@media (max-width: 860px) {
    .fpgc__grid {
        grid-template-columns: 1fr;
        grid-template-areas: "res" "panel" "chart";
        gap: 20px;
    }
    .fpgc__band { grid-template-columns: 1fr 1fr; }
    .fpgc__cell--total { grid-column: 1 / -1; }
    .fpgc__verdict { font-size: 15.5px; }
}

/* ════════════════════════════════════════════════════════════════════
   FP 2.9.1 · MORE FROM FINANCIAL PORTS — el enlazado interno.
   Seis puertas de salida al pie de cada noticia, con la voz del
   tablero: cabecera claret en versalitas bajo filete de tinta y
   titulares en la serif de la casa. Enlaces normales y rastreables:
   el que se estaba quedando fuera era Googlebot. */
.fprel {
    margin: 40px 0 8px;
    padding-top: 14px;
    border-top: 3px solid var(--fp-ink);
}
.fprel__head {
    margin: 0 0 14px;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--fp-claret);
}
.fprel__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1px;
    background: var(--fp-rule);   /* los filetes son el hueco de la rejilla */
    border: 1px solid var(--fp-rule);
}
.fprel__item {
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 14px 16px 16px;
    background: var(--fp-paper);
    text-decoration: none;
    transition: background .15s ease;
}
.fprel__item:hover { background: var(--fp-paper-2); }
.fprel__kicker {
    font-size: 9.5px;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--fp-claret);
}
.fprel__title {
    font-family: var(--fp-serif);
    font-size: 16px;
    font-weight: 700;
    line-height: 1.22;
    color: var(--fp-ink);
    text-wrap: balance;
}
.fprel__item:hover .fprel__title { color: var(--fp-claret); }
.fprel__date {
    margin-top: auto;
    padding-top: 6px;
    font-size: 10.5px;
    color: var(--fp-muted);
    font-variant-numeric: tabular-nums;
}
@media (max-width: 860px) { .fprel__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .fprel__grid { grid-template-columns: 1fr; } }

/* ════════════════════════════════════════════════════════════════════
   FP 2.10.0 · LA PORTADA MÓVIL — los dos bloques que faltaban.
   ────────────────────────────────────────────────────────────────────
   Shipwrecks | Headlines y Conflicts | Opinion existían en el
   ordenador y NO en el teléfono. Aquí se les da la maqueta de móvil,
   pero la tipografía NO se reinventa: los rótulos los pinta el mismo
   `et_m_section_header()` del theme y los titulares heredan la escala
   de la casa, que era justo lo que el CEO pedía unificar.

   Solo se aplican en pantalla de teléfono: en tableta y ordenador
   manda la portada de PC. */
@media (max-width: 1024px) {

/* ── Shipwrecks | Headlines ─────────────────────────────────────── */
.fp-mptn {
    margin: 0 var(--et-mob-pad, 16px) 26px;
    display: block;
}
.fp-mptn__lead {
    display: block;
    text-decoration: none;
    margin-bottom: 4px;
}
.fp-mptn__ph {
    display: block;
    margin-bottom: 11px;
    background: var(--fp-paper-2, #F7E4D3);
    aspect-ratio: 3 / 2;
    overflow: hidden;
}
.fp-mptn__ph img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.fp-mptn__title {
    display: block;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    font-weight: 800;
    font-size: 17px;
    line-height: 1.24;
    letter-spacing: -0.32px;
    color: var(--fp-ink, #1A1614);
    text-wrap: balance;
}
.fp-mptn__title--lead { font-size: 21px; line-height: 1.18; letter-spacing: -0.5px; }
.fp-mptn__dek {
    display: block;
    margin-top: 7px;
    font-size: 14.5px;
    line-height: 1.45;
    color: var(--fp-ink-2, #4A403A);
}
.fp-mptn__row {
    display: block;
    text-decoration: none;
    padding: 13px 0;
    border-top: 1px solid var(--fp-rule, #EBC9C9);
}
.fp-mptn__lead + .fp-mptn__row { margin-top: 14px; }
.fp-mptn__row:active { opacity: .6; }

/* ── Conflicts | Opinion ────────────────────────────────────────── */
.fp-mop { margin: 0 var(--et-mob-pad, 16px) 26px; }
.fp-mop__item {
    display: grid;
    grid-template-columns: 1fr 96px;
    gap: 13px;
    align-items: start;
    text-decoration: none;
    padding: 14px 0;
    border-top: 1px solid var(--fp-rule, #EBC9C9);
}
.fp-mop__item:active { opacity: .6; }
/* El primero manda: foto ancha arriba, como en el ordenador */
.fp-mop__item--lead {
    grid-template-columns: 1fr;
    border-top: 0;
    padding-top: 0;
}
.fp-mop__item--lead .fp-mop__ph { aspect-ratio: 3 / 2; margin-bottom: 11px; }
.fp-mop__item--lead .fp-mop__title { font-size: 21px; line-height: 1.18; letter-spacing: -0.5px; }
.fp-mop__ph {
    display: block;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: var(--fp-paper-2, #F7E4D3);
    order: 2;
}
.fp-mop__ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fp-mop__tx { display: block; min-width: 0; }
.fp-mop__kicker {
    display: block;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--fp-claret, #C1272D);
    margin-bottom: 5px;
}
.fp-mop__title {
    display: block;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    font-weight: 800;
    font-size: 16.5px;
    line-height: 1.25;
    letter-spacing: -0.3px;
    color: var(--fp-ink, #1A1614);
    text-wrap: balance;
}

/* Opinión: la firma manda, con su retrato redondo */
.fp-mop__op {
    display: grid;
    grid-template-columns: 46px 1fr;
    gap: 13px;
    align-items: center;
    text-decoration: none;
    padding: 14px 0;
    border-top: 1px solid var(--fp-rule, #EBC9C9);
}
.fp-mop__op:active { opacity: .6; }
.fp-mop__av {
    display: block;
    width: 46px;
    height: 46px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--fp-paper-2, #F7E4D3);
}
.fp-mop__av img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fp-mop__op-tx { display: block; min-width: 0; }
.fp-mop__by {
    display: block;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--fp-claret, #C1272D);
    margin-bottom: 4px;
}
.fp-mop__op-t {
    display: block;
    font-family: var(--fp-serif, Georgia, serif);
    font-style: italic;
    font-size: 17px;
    line-height: 1.3;
    color: var(--fp-ink, #1A1614);
}

}

/* ════════════════════════════════════════════════════════════════════
   FP 2.10.1 · EL PULIDO MÓVIL — África, FP Week y la escala común.
   ────────────────────────────────────────────────────────────────────
   MEDIDO EN EL TELÉFONO, no supuesto (375 px, producción 30/08/2026):

     · El titular de African Ports salía en Inter **400** a 26 px
       mientras TODA la portada móvil titula en Inter 800. Esa sola
       diferencia de peso es la que hacía que el bloque no pareciera
       del mismo periódico.
     · Titular, entradilla y firma iban **centrados**. Un diario se
       lee alineado a la izquierda: el ojo vuelve siempre al mismo
       punto al bajar de línea. Centrado se lee como un cartel.
     · La sección tenía `padding: 24px 0` — cero margen lateral—, así
       que el texto llegaba pegado a los dos bordes de la pantalla.
     · Las dos noticias pesaban igual: sin jerarquía no hay portada,
       hay lista.

   La escala de titulares del móvil queda así, y es la MISMA en todos
   los bloques: apertura 25 px · sección 21 px · fila 17 px · pie 14,5.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 860px) {

    /* ── African Ports ─────────────────────────────────────────── */
    .fp-afr {
        margin: 22px 0 26px;
        padding: 0 0 22px;
        text-align: left;
    }
    /* La foto sigue a sangre —es lo que frena el scroll— pero el
       filete decorativo que en PC la enmarca por la izquierda aquí
       asomaba cortado por el borde de la pantalla. */
    .fp-afr__photo { order: -1; aspect-ratio: 16 / 10; margin-bottom: 18px; }
    .fp-afr__photo::before { display: none; }

    /* LA RAÍZ DEL CENTRADO: la columna de texto es un flex vertical
       con `align-items: center`, así que centraba TODOS sus hijos —el
       logotipo, el filete rojo y la firma— por más que se les pusiera
       `text-align: left` uno a uno. Se corrige aquí, en el padre, y
       cae el resto solo. */
    .fp-afr__col { align-items: flex-start; }
    /* La firma es a su vez un flex con `justify-content: center`. La
       de la segunda pieza lleva un selector MÁS específico en el CSS
       base (`.fp-afr .fp-afr__next .et-…`), así que hay que igualarlo
       o se queda centrada ella sola — que es como se ven estos
       despistes de un solo elemento fuera de la línea. */
    .fp-afr .et-pcv2-hero__byline,
    .fp-afr .fp-afr__next .et-pcv2-hero__byline { justify-content: flex-start; }

    /* Todo el texto, dentro del margen de la casa y a la izquierda. */
    .fp-afr__logo,
    .fp-afr__title,
    .fp-afr__dek,
    .fp-afr__next,
    .fp-afr .et-pcv2-hero__byline {
        padding-left: var(--et-mob-pad, 16px);
        padding-right: var(--et-mob-pad, 16px);
        text-align: left;
        max-width: none;
    }
    .fp-afr__logo { margin-bottom: 14px; justify-content: flex-start; }
    .fp-afr__rule { margin-left: var(--et-mob-pad, 16px); width: 42px; height: 3px; }

    /* El titular de apertura: la voz de la portada móvil. */
    .fp-afr__title {
        font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
        font-weight: 800;
        font-size: 25px;
        line-height: 1.17;
        letter-spacing: -0.62px;
    }
    .fp-afr__dek {
        margin-top: 10px;
        font-size: 14.5px;
        line-height: 1.46;
    }
    .fp-afr .et-pcv2-hero__byline { margin-top: 12px; }

    /* La segunda pieza, un escalón por debajo: así se ve de un
       vistazo cuál manda. */
    .fp-afr__next {
        margin-top: 18px;
        padding-top: 16px;
        border-top: 1px solid var(--fp-rule, #EBC9C9);
    }
    .fp-afr__next-t,
    .fp-afr .fp-afr__next-t a {
        font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
        font-weight: 800;
        font-size: 17.5px;
        line-height: 1.24;
        letter-spacing: -0.34px;
        text-align: left;
    }
    .fp-afr .fp-afr__next .et-pcv2-hero__byline { margin-top: 9px; }

    /* ── FP Week ───────────────────────────────────────────────── */
    /* Aquí la tipografía ya era la buena (Inter 800). Lo que faltaba
       era que respirara con el mismo ritmo que el resto y que su
       margen lateral fuese el de la casa, no uno propio de 18 px. */
    .fp-wk { margin: 26px 0 24px; }
    .fp-wk__inner { padding-left: var(--et-mob-pad, 16px); padding-right: var(--et-mob-pad, 16px); }
    .fp-wk__title { font-size: 25px; line-height: 1.17; letter-spacing: -0.62px; }

    /* ── El acabado de app: el dedo tiene que notar que pulsa ──── */
    .fp-afr__title a,
    .fp-afr__next-t a,
    .fp-wk__title a { -webkit-tap-highlight-color: transparent; }
    .fp-afr__title a:active,
    .fp-afr__next-t a:active,
    .fp-wk__title a:active { opacity: .55; }
}

/* ════════════════════════════════════════════════════════════════════
   FP 2.10.2 · EL MÓVIL, REPASO FINO (todo medido a 375 px).
   ────────────────────────────────────────────────────────────────────
   Lo que el CEO vio, con su causa al lado:

     · «Business y World Economy se sale de la pantalla y no tiene el
       mismo margen» → `.fp-eco` traía `padding: 24px 0`: cero margen
       lateral, así que el bloque iba de borde a borde mientras el
       resto de la portada respira a 16 px.
     · «Los 3 banners se ven gigantes» → medido: la tira de Las Palmas
       se pintaba a 790 px de ancho y la de Boluda a 728, en una
       pantalla de 375. Les faltaba el `max-width` de toda la vida.
     · «La 2ª de África sale comprimida sin llegar a la derecha» → era
       `text-wrap: balance`, que reparte el titular en líneas cortas
       parejas. En un titular ancho queda elegante; en tres líneas de
       móvil deja un río de aire a la derecha.
     · «El autor y el custom, mismo color y grosor que en PC» → en el
       ordenador van en claret, 800 y versalitas; en el móvil salían
       en gris y peso 400.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 860px) {

    /* ── Business · World Economy · el carril de datos ──────────── */
    .fp-eco {
        padding: 22px var(--et-mob-pad, 16px) 4px;
        margin: 26px 0 0;
    }
    /* Las curvas y las tablas piden todo el ancho de su caja, no el de
       la pantalla: si no, vuelven a desbordar por dentro. */
    .fp-eco__grid,
    .fp-eco__col,
    .fp-eco__rail { min-width: 0; max-width: 100%; }
    .fp-eco .fp-tpc__svg,
    .fp-eco table { max-width: 100%; }
    /* Aire entre las tres columnas apiladas. */
    .fp-eco__col + .fp-eco__col,
    .fp-eco__col + .fp-eco__rail { margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--fp-rule, #EBC9C9); }

    /* ── LOS BANNERS: que quepan, siempre ───────────────────────── */
    /* Regla de seguridad para CUALQUIER creatividad, ahora y la que
       suba mañana el anunciante: nunca más ancha que su hueco. */
    .et-ad img,
    .et-ad picture,
    .et-ad iframe {
        max-width: 100%;
        height: auto;
        display: block;
        margin-left: auto;
        margin-right: auto;
    }
    .et-ad {
        padding-left: var(--et-mob-pad, 16px);
        padding-right: var(--et-mob-pad, 16px);
        box-sizing: border-box;
        overflow: hidden;
    }

    /* ── África · la segunda pieza, a todo el ancho ──────────────── */
    .fp-afr__next-t,
    .fp-afr__title { text-wrap: pretty; }   /* llena la línea, sin partir palabras huérfanas */
    .fp-afr__next-t,
    .fp-afr .fp-afr__next-t a { font-weight: 800; }

    /* ── La firma: EXACTAMENTE la del ordenador ─────────────────── */
    /* PC: Manrope 12 · autor y sección en claret 800 versalitas ·
       resto en gris. Medido en el propio sitio, no inventado. */
    .fp-afr .et-pcv2-hero__byline,
    main .et-m .et-pcv2-hero__byline {
        font-family: 'Manrope', 'Inter', -apple-system, sans-serif;
        font-size: 12px;
        font-weight: 400;
        color: #6E6E6E;
    }
    main .et-m .et-pcv2-hero__byline b,
    main .et-m .et-pcv2-hero__byline strong,
    main .et-m .et-pcv2-hero__byline-custom,
    .fp-afr .et-pcv2-hero__byline-custom {
        font-weight: 800;
        color: var(--fp-claret, #C1272D);
        text-transform: uppercase;
        letter-spacing: .72px;
        font-size: 12px;
    }

    /* ── El subnav: cinco servicios, y si no caben se desplazan ─── */
    .et-m-subnav__tools {
        display: flex;
        gap: 16px;
        overflow-x: auto;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
        scroll-snap-type: x proximity;
    }
    .et-m-subnav__tools::-webkit-scrollbar { display: none; }
    .et-m-subnav__tool { white-space: nowrap; scroll-snap-align: start; }
}

/* ════════════════════════════════════════════════════════════════════
   FP 2.10.2 · FP WEEK y EL BOLETÍN — diseño propio de teléfono.
   ────────────────────────────────────────────────────────────────────
   Los dos venían de incluir la plantilla del ordenador y confiar en
   que el CSS la apilara. No basta: una franja de dos columnas apilada
   son dos cajas sueltas, y el formulario del boletín se salía 61 px
   por la derecha. Aquí cada uno tiene su maqueta.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 860px) {

/* ── FP WEEK · portada de revista a sangre ──────────────────────── */
.fp-mwk { margin: 30px 0; }
.fp-mwk__card {
    position: relative;
    display: block;
    text-decoration: none;
    background: var(--fp-deep, #0D0D0D);
    overflow: hidden;
    isolation: isolate;
}
.fp-mwk__ph { display: block; }
.fp-mwk__ph img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    /* El negro sube desde abajo y se come la foto: sin costura entre
       imagen y fondo, que es lo que hace que parezca una portada y no
       una foto con un pie debajo. */
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 42%, transparent 92%);
            mask-image: linear-gradient(to bottom, #000 0%, #000 42%, transparent 92%);
}
.fp-mwk__card--sinfoto { padding-top: 26px; }
.fp-mwk__tx {
    position: absolute;
    left: 0; right: 0; bottom: 0;
    display: block;
    padding: 0 var(--et-mob-pad, 16px) 24px;
}
.fp-mwk__card--sinfoto .fp-mwk__tx { position: static; padding-top: 4px; }
.fp-mwk__badge { display: flex; align-items: center; gap: 9px; margin-bottom: 12px; }
.fp-mwk__badge-n {
    font-size: 10px; font-weight: 900; letter-spacing: .16em; text-transform: uppercase;
    color: var(--fp-paper, #FFF1E5);
    background: var(--fp-claret, #C1272D);
    padding: 5px 9px;
}
.fp-mwk__badge-s {
    font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
    color: #C9B29E;
}
.fp-mwk__title {
    display: block;
    font-family: var(--fp-serif, Georgia, serif);
    font-weight: 700;
    font-size: 27px;
    line-height: 1.14;
    letter-spacing: -0.5px;
    color: var(--fp-paper, #FFF1E5);
    text-wrap: pretty;
}
.fp-mwk__dek {
    display: block;
    margin-top: 10px;
    font-size: 14px;
    line-height: 1.45;
    color: #C9B29E;
}
.fp-mwk__cta {
    display: inline-flex; align-items: center; gap: 7px;
    margin-top: 16px;
    font-size: 11.5px; font-weight: 900; letter-spacing: .1em; text-transform: uppercase;
    color: var(--fp-paper, #FFF1E5);
    border-bottom: 2px solid var(--fp-claret, #C1272D);
    padding-bottom: 4px;
}
.fp-mwk__cta i { font-style: normal; transition: transform .16s ease; }
.fp-mwk__card:active .fp-mwk__cta i { transform: translateX(4px); }

/* ── EL BOLETÍN ─────────────────────────────────────────────────── */
.fp-mnl { margin: 30px 0 26px; }
.fp-mnl__box {
    background: var(--fp-deep, #0D0D0D);
    padding: 26px var(--et-mob-pad, 16px) 24px;
}
.fp-mnl__eyebrow {
    margin: 0 0 9px;
    font-size: 10px; font-weight: 900; letter-spacing: .16em; text-transform: uppercase;
    color: var(--fp-red-soft, #E05A5A);
}
.fp-mnl__title {
    margin: 0;
    font-family: var(--fp-serif, Georgia, serif);
    font-weight: 700; font-size: 25px; line-height: 1.16; letter-spacing: -0.5px;
    color: var(--fp-paper, #FFF1E5);
    text-wrap: pretty;
}
.fp-mnl__dek { margin: 10px 0 0; font-size: 14px; line-height: 1.45; color: #C9B29E; }
/* Una sola columna: el campo a todo el ancho y el botón debajo. Así no
   hay forma de que nada se salga por la derecha. */
.fp-mnl__form { display: block; margin-top: 18px; }
.fp-mnl__in {
    display: block; width: 100%; box-sizing: border-box;
    background: var(--fp-paper, #FFF1E5);
    border: 0; border-radius: 0;
    padding: 14px 14px;
    font-family: inherit; font-size: 16px;   /* 16 = iOS no hace zoom al enfocar */
    color: var(--fp-ink, #1A1614);
}
.fp-mnl__in::placeholder { color: #8C8078; }
.fp-mnl__btn {
    display: block; width: 100%; box-sizing: border-box;
    margin-top: 10px;
    background: var(--fp-claret, #C1272D);
    color: var(--fp-paper, #FFF1E5);
    border: 0; border-radius: 0;
    padding: 15px 14px;
    font-family: inherit; font-size: 12.5px; font-weight: 900;
    letter-spacing: .12em; text-transform: uppercase;
    cursor: pointer;
}
.fp-mnl__btn:active { opacity: .8; }
.fp-mnl__legal { margin: 12px 0 0; font-size: 11px; line-height: 1.4; color: #8C8078; }

/* La fila de boletines: se desliza con el dedo, con el margen del
   periódico a la izquierda y la siguiente tarjeta asomando. */
.fp-mnl__rail-h {
    margin: 22px var(--et-mob-pad, 16px) 12px;
    font-size: 11px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase;
    color: var(--fp-ink, #1A1614);
}
.fp-mnl__rail {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    padding: 2px 0 6px var(--et-mob-pad, 16px);
}
.fp-mnl__rail::-webkit-scrollbar { display: none; }
.fp-mnl__rail-end { flex: 0 0 4px; }
.fp-mnl__card {
    flex: 0 0 74%;           /* la siguiente asoma: se ve que hay más */
    max-width: 260px;
    scroll-snap-align: start;
    display: block;
    text-decoration: none;
    background: var(--fp-paper-2, #F7E4D3);
    border-top: 3px solid var(--fp-nl-tint, var(--fp-claret, #C1272D));
}
.fp-mnl__card:active { opacity: .75; }
.fp-mnl__card-ph { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: #E8D3C0; }
.fp-mnl__card-ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fp-mnl__card-tx { display: block; padding: 12px 13px 15px; }
.fp-mnl__card-freq {
    display: block; margin-bottom: 6px;
    font-size: 9.5px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase;
    color: var(--fp-nl-tint, var(--fp-claret, #C1272D));
}
.fp-mnl__card-t {
    display: block;
    font-family: 'Inter', -apple-system, sans-serif;
    font-weight: 800; font-size: 15.5px; line-height: 1.22; letter-spacing: -0.25px;
    color: var(--fp-ink, #1A1614);
}
.fp-mnl__card-d {
    display: block; margin-top: 6px;
    font-size: 12.5px; line-height: 1.4; color: var(--fp-ink-2, #4A403A);
}

}

/* ════════════════════════════════════════════════════════════════════
   FP 2.11.0 · LA FIRMA DEL MÓVIL, EXACTAMENTE LA DEL ORDENADOR.
   ────────────────────────────────────────────────────────────────────
   La queja se repetía en cinco bloques distintos —hero, Ports,
   Shipping, Containers, Shipwrecks— y siempre era lo mismo: en el
   ordenador el autor y el «custom» van en MANROPE 12, CLARET, peso
   800 y versalitas; en el teléfono salían en Inter 11, gris y peso
   400. Medido en los dos sitios, no supuesto.

   Se arregla por CSS y no tocando plantillas porque el markup ya trae
   los elementos separados (`__m-author`, `__m-city`, `__byline`): solo
   les faltaba la voz.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {

/* La caja de la firma, en todos los bloques del home móvil */
.et-mhero__meta,
.et-m-grid__byline,
.et-m-card__byline,
.fp-mfirma {
    font-family: 'Manrope', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 12px;
    font-weight: 400;
    color: #6E6E6E;
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 6px;
}
/* El autor y el custom: claret, 800 y versalitas — como en PC */
.et-mhero__m-author,
.et-mhero__m-city,
.et-m-grid__byline b,
.et-m-grid__byline strong,
.et-m-grid__byline .et-m-grid__author,
.et-m-card__byline b,
.fp-mfirma b,
.fp-mfirma .et-pcv2-hero__byline-custom {
    font-weight: 800;
    color: var(--fp-claret, #C1272D);
    text-transform: uppercase;
    letter-spacing: .72px;
    font-size: 12px;
}
/* El separador, discreto */
.et-mhero__m-sep,
.fp-mfirma .sep { color: #BDB5AE; font-weight: 400; }

/* Y el kicker de sección, con la misma voz en todos los bloques */
.et-m-card__kicker,
.fp-mptn__kicker,
.fp-mop__kicker {
    display: block;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--fp-claret, #C1272D);
    margin-bottom: 5px;
}

/* ── EL HERO: los titulares, en negrita de verdad ─────────────────
   Salían en peso 600 mientras toda la portada titula en 800. Es la
   primera pantalla del periódico: si algo tiene que pesar, es esto. */
.et-mhero__title,
.et-mhero__title a,
.et-mhero__title--xl,
.et-mhero__title--xl a {
    font-weight: 800;
    letter-spacing: -0.5px;
}
.et-mhero__kicker { font-weight: 800; color: var(--fp-claret, #C1272D); }

/* ── Las tarjetas de boletín: la foto, a su sitio ─────────────────
   Salían gigantes y tapaban el texto: la imagen es un apoyo, no la
   tarjeta entera. */
.fp-mnl__card-ph { aspect-ratio: 16 / 9; max-height: 118px; }
.fp-mnl__card-ph img { width: 100%; height: 100%; object-fit: cover; }

}

/* ════════════════════════════════════════════════════════════════════
   FP 2.11.0 · EL BOLETÍN DEL MÓVIL, REHECHO.
   ────────────────────────────────────────────────────────────────────
   El anterior tenía dos fallos de bulto: las cuatro tarjetas salían
   con la foto ENORME —tapaba el texto y no se veía de qué iba cada
   boletín— y el conjunto no tenía la elegancia del resto.

   Ahora la foto es una banda estrecha con el color del boletín encima,
   y manda el nombre. Menos ruido, más legible, y el bloque completo
   cabe de una ojeada.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 860px) {

.fp-mnl { margin: 34px 0 28px; }
.fp-mnl__box {
    background: var(--fp-deep, #0D0D0D);
    padding: 28px var(--et-mob-pad, 16px) 26px;
    position: relative;
}
/* Un filete claret arriba: la firma de la casa */
.fp-mnl__box::before {
    content: '';
    position: absolute; top: 0; left: 0; right: 0; height: 3px;
    background: var(--fp-claret, #C1272D);
}
.fp-mnl__title { font-size: 26px; }

/* Las tarjetas: banda de color + nombre, la foto de apoyo */
.fp-mnl__card {
    flex: 0 0 76%;
    max-width: 268px;
    background: var(--fp-paper, #FFF1E5);
    border: 1px solid var(--fp-rule, #EBC9C9);
    border-top: 3px solid var(--fp-nl-tint, var(--fp-claret, #C1272D));
    display: flex;
    flex-direction: column;
}
.fp-mnl__card-ph {
    aspect-ratio: auto;
    height: 84px;             /* banda, no cartel */
    max-height: 84px;
    position: relative;
    overflow: hidden;
    background: var(--fp-paper-2, #F7E4D3);
}
.fp-mnl__card-ph img {
    width: 100%; height: 100%;
    object-fit: cover;
    /* La foto se tiñe con el color del boletín: se reconoce de un
       vistazo cuál es cuál sin depender de la imagen. */
    opacity: .55;
}
.fp-mnl__card-ph::after {
    content: '';
    position: absolute; inset: 0;
    background: linear-gradient(180deg, transparent 30%, var(--fp-paper, #FFF1E5) 100%);
}
.fp-mnl__card-tx { padding: 12px 14px 16px; flex: 1 1 auto; display: flex; flex-direction: column; }
.fp-mnl__card-freq { font-size: 9px; letter-spacing: .14em; }
.fp-mnl__card-t { font-size: 16px; line-height: 1.2; }
.fp-mnl__card-d {
    font-size: 12.5px;
    line-height: 1.42;
    margin-top: 7px;
    /* Dos líneas y punto: las descripciones largas descuadraban la fila */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
/* La flecha que invita a entrar */
.fp-mnl__card-tx::after {
    content: 'Subscribe →';
    margin-top: 12px;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--fp-nl-tint, var(--fp-claret, #C1272D));
}

/* ── La firma de las piezas nuevas, con su aire ─────────────────── */
.fp-mfirma { margin-top: 8px; }
.fp-mptn__lead-w { margin-bottom: 6px; }
.fp-mptn__row-w { border-top: 1px solid var(--fp-rule, #EBC9C9); padding: 13px 0; }
.fp-mptn__row-w .fp-mptn__row { padding: 0; border-top: 0; }
.fp-mop__item--sinkicker .fp-mop__kicker { display: none; }

}

/* ════════════════════════════════════════════════════════════════════
   FP 2.11.1 · LA FIRMA, AHORA SÍ: CADA COSA DE SU COLOR.
   ────────────────────────────────────────────────────────────────────
   En la 2.11.0 pinté el autor Y el custom en claret y en versalitas.
   Mal: en el ordenador —medido elemento por elemento— son distintos, y
   eso es lo que el CEO vio en el hero («salen los dos en rojo») y en
   African Ports («el autor en mayúsculas»):

     · AUTOR   → Manrope 12 · peso 700 · NEGRO #1A1614 · sin versalitas
     · CUSTOM  → Manrope 12 · peso 800 · CLARET        · VERSALITAS
     · resto   → Manrope 12 · peso 400 · gris #6E6E6E

   Estas reglas van DESPUÉS de las de 2.11.0 a propósito: corrigen
   aquellas sin borrarlas, que es lo que evita romper otra cosa.

   Y el KICKER: el CEO llama kicker al PREFIJO DEL TITULAR («Orderbook.»
   en claret, dentro de la misma línea), no al nombre de la sección
   encima de la pieza. Aquí se le da el mismo trato que en el PC:
   hereda cuerpo y peso del titular, y solo cambia el color.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {

/* EL AUTOR: negro, 700, tal cual se lee en el ordenador */
.et-mhero__m-author,
.et-m-grid__byline .et-pcv2-hero__byline-author,
.fp-mfirma .et-pcv2-hero__byline-author,
.fp-afr .et-pcv2-hero__byline-author,
main .et-m .et-pcv2-hero__byline-author {
    font-family: 'Manrope', 'Inter', -apple-system, sans-serif;
    font-size: 12px;
    font-weight: 700;
    color: var(--fp-ink, #1A1614);
    text-transform: none;
    letter-spacing: normal;
}

/* EL CUSTOM: claret, 800, versalitas */
.et-mhero__m-city,
.et-m-grid__byline .et-pcv2-hero__byline-custom,
.fp-mfirma .et-pcv2-hero__byline-custom,
.fp-afr .et-pcv2-hero__byline-custom,
main .et-m .et-pcv2-hero__byline-custom {
    font-family: 'Manrope', 'Inter', -apple-system, sans-serif;
    font-size: 12px;
    font-weight: 800;
    color: var(--fp-claret, #C1272D);
    text-transform: uppercase;
    letter-spacing: .72px;
}

/* El separador y lo demás de la firma, en gris y a un solo tamaño —
   en African Ports la segunda pieza salía con la letra más pequeña. */
.fp-afr .et-pcv2-hero__byline,
.fp-afr .fp-afr__next .et-pcv2-hero__byline,
main .et-m .et-pcv2-hero__byline,
.fp-mfirma {
    font-family: 'Manrope', 'Inter', -apple-system, sans-serif;
    font-size: 12px;
    font-weight: 400;
    color: #6E6E6E;
}
.et-pcv2-hero__byline-pipe,
.et-mhero__m-sep { color: #BDB5AE; font-weight: 400; }

/* EL KICKER DEL TITULAR: dentro de la línea, no encima */
.fp-mptn__title .et-pcv2-hero__kicker,
.fp-mop__title .et-pcv2-hero__kicker,
.et-mhero__kicker {
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    letter-spacing: inherit;
    text-transform: none;
    color: var(--fp-claret, #C1272D);
}
/* La categoría que puse encima en la 2.11.0 ya no se pinta desde PHP;
   esto la apaga también en cualquier caché de HTML que quede viva. */
.fp-mptn__kicker,
.fp-mop__kicker { display: none; }

}

/* ════════════════════════════════════════════════════════════════════
   FP 2.11.2 · TRES COSAS QUE SEGUÍAN MAL, CON SU CAUSA MEDIDA.
   ────────────────────────────────────────────────────────────────────
   1 · CONFLICTS · la pieza de apertura salía con el TITULAR ARRIBA y la
       foto debajo. Culpa mía: puse `order: 2` en la foto para las filas
       pequeñas —donde va a la derecha— y esa regla se aplicaba también
       a la de apertura, que es a lo ancho. Medido en el navegador:
       `fp-mop__ph order=2`. Se devuelve a su sitio.

   2 · PORTS (y todos los bloques de sección) · la firma NO usa las
       clases del ordenador sino las suyas —`__author`, `__city`,
       `__date`—, así que mis reglas de 2.11.1 no la tocaban. Medido:
       el autor salía en ROJO con versalitas y el custom en gris fino,
       justo al revés de como debe ser.

   3 · LA FECHA, FUERA. «Nunca pongas la fecha en ningún lado» (CEO).
       Salía en estos bloques y en ningún otro sitio del periódico.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {

/* ── 1 · Conflicts: foto arriba, titular debajo ─────────────────── */
.fp-mop__item--lead .fp-mop__ph { order: 0; }
.fp-mop__item--lead .fp-mop__tx { order: 1; }

/* ── 2 · La firma de los bloques de sección, con SUS clases ─────── */
.et-m-grid__author,
.et-m-card__author {
    font-family: 'Manrope', 'Inter', -apple-system, sans-serif !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    color: var(--fp-ink, #1A1614) !important;
    text-transform: none !important;   /* el CEO lo vio en versalitas */
    letter-spacing: normal !important;
}
.et-m-grid__city,
.et-m-card__city {
    font-family: 'Manrope', 'Inter', -apple-system, sans-serif !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    color: var(--fp-claret, #C1272D) !important;
    text-transform: uppercase !important;
    letter-spacing: .72px !important;
}
.et-m-grid__sep,
.et-m-card__sep { color: #BDB5AE; font-weight: 400; }

/* ── 3 · LA FECHA: fuera de la portada, en todas sus formas ─────── */
.et-m-grid__date,
.et-m-card__date,
.et-mhero__m-date,
.fp-mfirma .et-pcv2-hero__byline-date,
main .et-m .et-pcv2-hero__byline-date { display: none !important; }
/* Y el separador que la precedía, para no dejar un «|» huérfano. */
.et-m-grid__date + .et-m-grid__sep,
.et-m-grid__sep:last-child,
.et-m-card__sep:last-child { display: none; }

}

/* ════════════════════════════════════════════════════════════════════
   FP 2.11.2b · EL AUTOR, EN VERSALITAS Y EN NEGRO. Y EL SELLO PLUS.
   ────────────────────────────────────────────────────────────────────
   Aquí me equivoqué interpretando: leí «no sale en todo mayúsculas el
   autor» como una queja de que SÍ salía, cuando era justo lo contrario
   —«siguen en minúsculas el autor en el hero»—. En el teléfono el autor
   va en VERSALITAS y en NEGRO; el custom, en claret. El ordenador lo
   deja en caja normal, y aquí manda lo que pide el CEO.

   El sello de FP PLUS ya no necesita CSS propio: al clonar la firma del
   ordenador viene incluido, porque lo añade ese mismo helper.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {

.et-mhero__m-author,
.et-m-grid__author,
.et-m-card__author,
.fp-mfirma .et-pcv2-hero__byline-author,
.fp-afr .et-pcv2-hero__byline-author,
.et-m-grid__byline .et-pcv2-hero__byline-author,
main .et-m .et-pcv2-hero__byline-author {
    text-transform: uppercase !important;
    letter-spacing: .72px !important;
    font-weight: 700 !important;
    color: var(--fp-ink, #1A1614) !important;
}

/* La firma como FLEX: así los saltos de línea del HTML dejan de
   colarse como espacio delante del nombre —el hueco que el CEO vio
   en la segunda pieza de African Ports—. */
.fp-afr .et-pcv2-hero__byline,
.et-m-grid__byline--pc,
.fp-mfirma,
main .et-m .et-pcv2-hero__byline {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 7px;
}
.fp-afr .et-pcv2-hero__byline > *,
.fp-mfirma > * { margin: 0; }

/* El sello de FP PLUS, a su tamaño en el teléfono */
.ipp-firma-marca { display: inline-flex; align-items: center; }
.ipp-firma-marca img { height: 13px; width: auto; display: block; }

}

/* ════════════════════════════════════════════════════════════════════
   FP 2.11.4 · KICKERS, AIRE DE CONFLICTS Y LOS BOLETINES.
   ────────────────────────────────────────────────────────────────────
   · El kicker salía en VERSALITAS —«JEDDAH ISLAMIC.»— cuando en el
     ordenador se lee con su caja natural: «Jeddah islamic.». Medido.
   · Conflicts abría un hueco grande entre el titular y la firma: se
     sumaban el relleno de la tarjeta y el margen de la firma.
   · Las cuatro portadas de boletín salían AMPLIADAS: `cover` recorta
     y agranda, y estas imágenes son ilustraciones con su composición
     —hay que verlas ENTERAS, no un trozo estirado—.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {

/* ── El kicker, con su caja natural (como en el ordenador) ──────── */
.et-m-card__kicker,
.et-m-grid__title .et-m-card__kicker,
.fp-mptn__title .et-pcv2-hero__kicker,
.fp-mop__title .et-pcv2-hero__kicker,
.et-mhero__kicker {
    text-transform: none !important;
    letter-spacing: inherit !important;
}

/* ── Conflicts: el titular y su firma, juntos ───────────────────── */
.fp-mop__item { padding: 12px 0 2px; }
.fp-mop__item--lead { padding-top: 0; padding-bottom: 0; }
.fp-mop .fp-mfirma,
.fp-mop__item + .fp-mfirma { margin-top: 5px; margin-bottom: 12px; }
.fp-mop__item--lead .fp-mop__title { margin-bottom: 0; }

/* ── Las portadas de boletín: enteras, no recortadas ────────────── */
.fp-mnl__card-ph {
    height: 132px;
    max-height: 132px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--fp-paper-2, #F7E4D3);
}
.fp-mnl__card-ph img {
    width: 100%;
    height: 100%;
    object-fit: contain;      /* la ilustración se ve completa */
    object-position: center;
    opacity: 1;
    padding: 8px;
    box-sizing: border-box;
}
.fp-mnl__card-ph::after { display: none; }   /* fuera el degradado que la tapaba */

}

/* ════════════════════════════════════════════════════════════════════
   FP 2.11.4 · FP WEEK · EL ESPECIAL DE LA SEMANA, EN SERIO.
   ────────────────────────────────────────────────────────────────────
   Tercer intento, y esta vez con una idea en vez de una maqueta: el
   número de semana como MARCA DE AGUA gigante detrás del titular —el
   mismo gesto que hace la portada de escritorio— sobre el negro de la
   casa, con la foto arriba a sangre y fundida.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 860px) {

.fp-mwk { margin: 34px 0 30px; }
.fp-mwk__card {
    position: relative;
    display: block;
    text-decoration: none;
    background: var(--fp-deep, #0D0D0D);
    overflow: hidden;
}
/* La foto: banda alta, fundida al negro por abajo */
.fp-mwk__ph { display: block; position: relative; }
.fp-mwk__ph img {
    display: block; width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 55%, transparent 100%);
            mask-image: linear-gradient(to bottom, #000 0%, #000 55%, transparent 100%);
}
/* EL NÚMERO DE SEMANA, en marca de agua */
.fp-mwk__card::after {
    content: attr(data-week);
    position: absolute;
    right: -12px;
    bottom: -26px;
    font-family: var(--fp-serif, Georgia, serif);
    font-size: 148px;
    font-weight: 700;
    line-height: 1;
    color: rgba(255, 241, 229, .07);
    pointer-events: none;
    letter-spacing: -6px;
}
.fp-mwk__tx {
    position: relative;      /* por encima de la marca de agua */
    z-index: 1;
    display: block;
    margin-top: -34px;
    padding: 0 var(--et-mob-pad, 16px) 26px;
}
.fp-mwk__badge { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.fp-mwk__badge-n {
    font-size: 9.5px; font-weight: 900; letter-spacing: .2em; text-transform: uppercase;
    color: var(--fp-paper, #FFF1E5);
    background: var(--fp-claret, #C1272D);
    padding: 6px 10px;
}
.fp-mwk__badge-s {
    font-size: 9.5px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase;
    color: #C9B29E;
}
.fp-mwk__title {
    display: block;
    font-family: var(--fp-serif, Georgia, serif);
    font-weight: 700;
    font-size: 30px;
    line-height: 1.1;
    letter-spacing: -0.6px;
    color: var(--fp-paper, #FFF1E5);
    text-wrap: pretty;
}
.fp-mwk__dek {
    display: block; margin-top: 12px;
    font-size: 14px; line-height: 1.5; color: #BFA995;
    max-width: 30ch;
}
.fp-mwk__cta {
    display: inline-flex; align-items: center; gap: 8px;
    margin-top: 20px; padding-bottom: 5px;
    font-size: 11px; font-weight: 900; letter-spacing: .14em; text-transform: uppercase;
    color: var(--fp-paper, #FFF1E5);
    border-bottom: 2px solid var(--fp-claret, #C1272D);
}
.fp-mwk__cta i { font-style: normal; transition: transform .16s ease; }
.fp-mwk__card:active .fp-mwk__cta i { transform: translateX(5px); }
.fp-mwk__card--sinfoto .fp-mwk__tx { margin-top: 0; padding-top: 26px; }

}

/* ════════════════════════════════════════════════════════════════════
   FP 2.11.4 · EL BOLETÍN, TERCERA Y DEFINITIVA.
   ────────────────────────────────────────────────────────────────────
   Lo que fallaba de las dos anteriores: la caja negra pesaba demasiado
   para lo que es —una invitación, no un anuncio— y las tarjetas
   competían con ella.
   Ahora manda el papel de la casa: filete grueso arriba, rótulo en
   claret, una frase corta y el formulario limpio. El negro se reserva
   solo para el botón, que es lo único que hay que pulsar.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 860px) {

.fp-mnl { margin: 36px 0 30px; }
.fp-mnl__box {
    background: var(--fp-paper-2, #F7E4D3);
    padding: 24px var(--et-mob-pad, 16px) 26px;
    border-top: 4px solid var(--fp-ink, #1A1614);
}
.fp-mnl__box::before { display: none; }
.fp-mnl__eyebrow {
    margin: 0 0 10px;
    font-size: 10px; font-weight: 900; letter-spacing: .16em; text-transform: uppercase;
    color: var(--fp-claret, #C1272D);
}
.fp-mnl__title {
    font-family: var(--fp-serif, Georgia, serif);
    font-weight: 700; font-size: 27px; line-height: 1.12; letter-spacing: -0.5px;
    color: var(--fp-ink, #1A1614);
}
.fp-mnl__dek { color: var(--fp-ink-2, #4A403A); font-size: 14.5px; margin-top: 9px; }
.fp-mnl__in {
    background: #FFFEFB;
    border: 1px solid #B9AFA5;
    padding: 15px 14px;
}
.fp-mnl__btn {
    background: var(--fp-ink, #1A1614);
    color: var(--fp-paper, #FFF1E5);
    padding: 16px 14px;
    font-size: 12px;
    letter-spacing: .16em;
}
.fp-mnl__btn:active { background: var(--fp-claret, #C1272D); }
.fp-mnl__legal { color: var(--fp-muted, #6E6058); margin-top: 11px; }

/* El rótulo de la fila, con el filete de sección de la casa */
.fp-mnl__rail-h {
    margin: 26px var(--et-mob-pad, 16px) 12px;
    padding-bottom: 7px;
    border-bottom: 2px solid var(--fp-ink, #1A1614);
    color: var(--fp-claret, #C1272D);
    font-size: 12px;
    letter-spacing: .12em;
}

}

/* ═══════════════════════════════════════════════════════════════════
   DM 1.3.0 · EL TITULAR EN ÁRABE
   ═══════════════════════════════════════════════════════════════════
   Bajo cada titular, el mismo titular en árabe. Es el gesto que dice
   que esto se escribe desde Casablanca, y va en la misma línea que el
   logotipo, que ya lleva صحيفة المغرب.

   LAS TRES DECISIONES QUE IMPORTAN, y se tomaron mirando el resultado
   renderizado, no de cabeza:

   1 · `direction: rtl` con `text-align: left`. El árabe se escribe
       bien por dentro —de derecha a izquierda— pero el BLOQUE empieza
       donde empieza el titular. Alineado a la derecha, la tarjeta se
       parte en dos mitades que no se hablan; anclado a la izquierda,
       titular y árabe se leen como una sola unidad.

   2 · `border-left`, NUNCA `border-inline-start`. En un elemento RTL
       el "inline-start" es la DERECHA, así que el filete aparecía al
       otro lado. Se vio en la primera prueba y por eso está escrito
       aquí: quien lo cambie a la propiedad lógica lo rompe otra vez.

   3 · `unicode-bidi: isolate`. Sin aislar, un fragmento árabe puede
       reordenar la puntuación del texto latino de al lado —el clásico
       bug bidireccional, que aparece justo en la coma final y parece
       un fallo de la fuente—.
   ═══════════════════════════════════════════════════════════════════ */

.dm-tar {
    display: block;
    font-family: Amiri, 'Noto Naskh Arabic', 'Times New Roman', serif;
    font-weight: 700;
    /* Amiri tiene la altura de x pequeña: al mismo cuerpo que el
       titular se vería diminuta. 0.78 del titular la iguala ópticamente. */
    font-size: clamp(14px, 0.78em, 21px);
    line-height: 1.5;
    direction: rtl;
    unicode-bidi: isolate;
    text-align: left;
    color: #5B534E;
    margin: 9px 0 0;
    padding-left: 11px;
    border-left: 2px solid var(--et-brand, #C1272D);
    /* En las tarjetas no puede crecer sin freno: dos líneas y corta. */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* En el artículo manda el titular: más cuerpo, filete más grueso y
   sin recorte —ahí el titular entero tiene que poder leerse—. */
.dm-tar--art {
    font-size: clamp(19px, 0.66em, 29px);
    line-height: 1.45;
    margin: 14px 0 0;
    padding-left: 15px;
    border-left-width: 3px;
    -webkit-line-clamp: none;
    display: block;
    overflow: visible;
    color: #4A4441;
}

/* Dentro de un enlace, el árabe no se subraya ni cambia de color al
   pasar por encima: es una firma, no una segunda llamada a la acción. */
a .dm-tar,
a:hover .dm-tar { text-decoration: none; color: #5B534E; }

/* En las miniaturas y en los listados apretados, una sola línea: dos
   sobre una foto de 80px tapan la noticia en vez de firmarla. */
[class*="thumb"] .dm-tar,
[class*="mini"]  .dm-tar,
[class*="__row"] .dm-tar {
    -webkit-line-clamp: 1;
    font-size: clamp(13px, 0.72em, 16px);
    margin-top: 6px;
    padding-left: 9px;
}

/* El hueco del sello de la marca. Cuando el titular va sobre la foto
   —los heroes con texto encima— el gris no se lee: va en blanco con
   la sombra que ya usa el titular. */
[class*="overlay"] .dm-tar,
[class*="--onphoto"] .dm-tar {
    color: rgba(255,255,255,.92);
    border-left-color: rgba(255,255,255,.75);
}

@media (max-width: 767px) {
    .dm-tar      { font-size: clamp(13px, 0.76em, 18px); margin-top: 7px; padding-left: 9px; }
    .dm-tar--art { font-size: clamp(17px, 0.64em, 23px); padding-left: 12px; }
}

/* Impresión: el árabe se queda, es parte de la identidad. */
@media print { .dm-tar { border-left-color: #000; color: #000; } }
