* { box-sizing: border-box; margin: 0; padding: 0; }
    html { scroll-behavior: smooth; }
    body { font-family: var(--font-body); background: var(--bg); color: var(--text); line-height: 1.65; -webkit-font-smoothing: antialiased; }
    h1, h2, h3, h4 { font-family: var(--font-heading); line-height: 1.2; }
    img { max-width: 100%; display: block; }
    a { color: inherit; }

    .container { max-width: 1120px; margin: 0 auto; padding: 0 24px; }
    .grid { display: grid; gap: 24px; }
    .grid-3 { grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); }

    .link { color: var(--primary); text-decoration: none; font-weight: 600; }
    .link:hover { text-decoration: underline; }
    .meta { color: var(--muted); font-size: 0.9rem; }
    .badge { display: inline-block; padding: 3px 11px; background: var(--surface); border: 1px solid var(--border); border-radius: 999px; font-size: 0.8rem; color: var(--muted); margin-left: 6px; }
    .empty { text-align: center; color: var(--muted); padding: 40px 0; }

    /* Hero (el fondo .hero--themed lo define _shared/theme según el estilo elegido) */
    .hero { padding: 92px 0; text-align: center; }
    .hero--compact { padding: 56px 0; }
    .hero-title { font-size: 3rem; margin-bottom: 16px; }
    .hero-sub { font-size: 1.25rem; opacity: 0.92; max-width: 720px; margin: 0 auto; }
    .hero .btn { margin-top: 30px; }

    /* Secciones */
    .section { padding: 72px 0; }
    .section-title { font-size: 2rem; margin-bottom: 36px; text-align: center; }
    .section--center { text-align: center; padding: 110px 0; }

    /* Artículo (prosa) */
    .article-body { max-width: 740px; margin: 0 auto; }
    .article-cover { width: 100%; height: 320px; object-fit: cover; border-radius: var(--radius); margin-bottom: 28px; }
    .article-cover--sm { height: 170px; margin-bottom: 14px; }
    /* Card #177 — fallback de marca cuando la nota no tiene foto: mismo bloque/aspect que
       una cover real, degradé del tema y el nombre de la sección (o la marca) centrado. */
    .article-cover--fallback { display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--primary), var(--primary-dark, var(--primary))); }
    .article-cover--fallback > span { color: #fff; font-weight: 800; font-size: .85rem; text-transform: uppercase; letter-spacing: .08em; opacity: .9; padding: 0 12px; text-align: center; }
    .article-title { font-size: 2.4rem; margin-bottom: 14px; }
    .article-lead { font-size: 1.2rem; color: var(--muted); font-style: italic; margin: 18px 0 26px; }
    .article-content { font-size: 1.08rem; }
    .article-content p { margin-bottom: 18px; }
    .article-content h2, .article-content h3 { margin: 28px 0 12px; }
    .article-content img { border-radius: var(--radius); margin: 18px 0; }
    .article-content a { color: var(--primary); }
    .article-back { margin-top: 44px; }
    .card-more { margin-top: 14px; }

    .error-code { font-size: 5rem; color: var(--primary); }
    .error-msg { color: var(--muted); font-size: 1.2rem; margin-top: 12px; }
    .error-cta { margin-top: 30px; }

    /* Byline (autor / editor) + páginas de persona */
    .byline { display: flex; flex-wrap: wrap; gap: 16px 30px; align-items: flex-start; margin: 20px 0 28px; padding: 16px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
    .byline-person { display: flex; align-items: center; gap: 12px; }
    .byline-avatar { width: 46px; height: 46px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
    .byline-text { display: flex; flex-direction: column; line-height: 1.35; }
    .byline-role { font-size: .72rem; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
    .byline-name { font-weight: 700; color: var(--text); text-decoration: none; }
    a.byline-name:hover { color: var(--primary); text-decoration: underline; }
    .byline-bio { font-size: .82rem; color: var(--muted); margin-top: 2px; max-width: 360px; }
    .person-hero-avatar { width: 90px; height: 90px; border-radius: 50%; object-fit: cover; border: 3px solid rgba(255,255,255,.55); margin: 0 auto 16px; display: block; }
    .person-eyebrow { font-size: .8rem; text-transform: uppercase; letter-spacing: .1em; opacity: .85; margin-bottom: 6px; }

    /* Monetización 2/4 — Ad slots con reserva de altura para evitar CLS */
    .ad-slot { display: flex; justify-content: center; align-items: center; margin: 20px auto; text-align: center; overflow: hidden; }
    .ad-slot:empty { display: none !important; min-height: 0 !important; margin: 0 !important; }
    .ad-banner-link { display: block; max-width: 100%; text-decoration: none; }
    .ad-banner-img { max-width: 100%; height: auto; display: block; margin: 0 auto; border-radius: var(--radius, 4px); }
    .ad-slot-top { min-height: 90px; max-width: 728px; }
    .ad-slot-in_article { min-height: 250px; max-width: 300px; }
    .ad-slot-sidebar { min-height: 250px; max-width: 300px; }
    .ad-slot-footer { min-height: 90px; max-width: 728px; }
    /* Monetización 3/4 — Insignia visible de publinota / contenido patrocinado */
    .article-sponsored-badge { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 16px 0 24px; padding: 10px 16px; background: rgba(15, 23, 42, 0.03); border-left: 3px solid var(--primary, #2563eb); border-radius: 4px; font-size: .88rem; color: var(--muted, #64748b); }
    .article-sponsored-badge .sponsored-tag { font-weight: 700; color: var(--text, #0f172a); }
    .article-sponsored-badge .sponsored-link { color: var(--primary, #2563eb); font-weight: 600; text-decoration: underline; }

    @media (max-width: 640px) {
        .ad-slot-top { min-height: 50px; max-width: 320px; }
        .ad-slot-footer { min-height: 100px; max-width: 320px; }
        .hero-title { font-size: 2.1rem; }
        .section { padding: 52px 0; }
    }


. Los valores se emiten con {!! !!} (sin escape
  HTML) porque las comillas de los font-stack ("Segoe UI") no deben volverse
  &quot; (rompe el CSS). Por eso sanitizamos cada valor a mano.

  Variables CSS estándar que cada _layout puede usar:
    --primary --primary-dark --accent --bg --surface --text --muted --border
    --footer-bg --footer-text --radius --font-heading --font-body
--}}
@php
    $tv = function (string $k, $d = null) use ($site) {
        $v = $site->page('theme.' . $k, '');
        return ($v === '' || $v === null) ? $d : $v;
    };
    // Sanitizadores (contexto : evitar romper/inyectar).
    $css  = fn ($v) => preg_replace('/[;{}<>]/', '', (string) $v);              // colores, radio
    $font = fn ($v) => trim(preg_replace('/[^\p{L}\p{N}\s-]/u', '', (string) $v));  // nombres de fuente
    $urlc = fn ($v) => preg_replace('/[)"\'\\\\;<>]/', '', (string) $v);        // url() de imagen

    $fontHeading = $font($tv('font_heading', ''));
    $fontBody    = $font($tv('font_body', ''));
    $loadFonts   = $fontHeading !== '' || $fontBody !== '';

    $gf = '';
    if ($loadFonts) {
        $fams = [];
        if ($fontHeading !== '') { $fams[] = str_replace(' ', '+', $fontHeading) . ':wght@400;600;700'; }
        if ($fontBody !== '' && strcasecmp($fontBody, $fontHeading) !== 0) { $fams[] = str_replace(' ', '+', $fontBody) . ':wght@400;600;700'; }
        $gf = 'https://fonts.googleapis.com/css2?family=' . implode('&family=', $fams) . '&display=swap';
    }

    $sys = '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif';
    $headingStack = ($fontHeading !== '' ? '"' . $fontHeading . '",' : '') . $sys;
    $bodyStack    = ($fontBody !== '' ? '"' . $fontBody . '",' : '') . $sys;

    $heroStyle = $css($tv('hero_style', 'gradient'));
    $heroImg   = $urlc($tv('hero_image_url', ''));
@endphp
@if($loadFonts)
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="{!! $gf !!}" rel="stylesheet">
@endif

    :root {
        --primary: {!! $css($tv('primary', '#2563eb')) !!};
        --primary-dark: {!! $css($tv('primary_dark', '#1e40af')) !!};
        --accent: {!! $css($tv('accent', $tv('primary', '#2563eb'))) !!};
        --bg: {!! $css($tv('bg', '#ffffff')) !!};
        --surface: {!! $css($tv('surface', '#f8fafc')) !!};
        --text: {!! $css($tv('text', '#0f172a')) !!};
        --muted: {!! $css($tv('muted', '#475569')) !!};
        --border: {!! $css($tv('border', '#e2e8f0')) !!};
        --footer-bg: {!! $css($tv('footer_bg', '#0f172a')) !!};
        --footer-text: {!! $css($tv('footer_text', '#cbd5e1')) !!};
        --radius: {!! $css($tv('radius', '12px')) !!};
        --font-heading: {!! $headingStack !!};
        --font-body: {!! $bodyStack !!};
    }
    @if($heroStyle === 'image' && $heroImg)
    .hero--themed { background-image: linear-gradient(rgba(15,23,42,.58), rgba(15,23,42,.58)), url('{!! $heroImg !!}'); background-size: cover; background-position: center; color: #fff; }
    @elseif($heroStyle === 'solid')
    .hero--themed { background: var(--primary); color: #fff; }
    @else
    .hero--themed { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); color: #fff; }
    @endif



    /* Artículo enriquecido (breadcrumb, badge de sección, puntos clave, tags, relacionadas).
       Genérico: los colores salen de las variables del tema; el color del badge lo
       resuelve el render desde pages_content.sections. */
    .breadcrumb { font-size: .85rem; color: var(--muted); margin-bottom: 14px; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
    .breadcrumb-link { color: var(--muted); text-decoration: none; }
    .breadcrumb-link:hover { color: var(--primary); text-decoration: underline; }
    .breadcrumb-sep { color: var(--border); }
    .breadcrumb-current { color: var(--text); }
    .section-badge { display: inline-block; padding: 4px 13px; border-radius: 999px; color: #fff; font-size: .8rem; font-weight: 700; text-decoration: none; margin-bottom: 12px; text-transform: uppercase; letter-spacing: .03em; }
    .section-badge:hover { opacity: .9; }
    /* Card #90 — cupón/oferta vencida. */
    .article-expired-banner { background: #fef2f2; border: 1px solid #fecaca; color: #991b1b; border-radius: var(--radius, 8px); padding: 10px 16px; margin: 0 0 18px; font-size: .92rem; }
    .article-content a.cta-disabled { pointer-events: none; opacity: .55; filter: grayscale(40%); cursor: not-allowed; text-decoration: line-through; }
    .meta-sep { color: var(--border); margin: 0 2px; }
    .article-figure { margin: 0 0 28px; }
    .article-figure .article-cover { margin-bottom: 0; }
    .article-figcaption { font-size: .82rem; color: var(--muted); margin-top: 8px; line-height: 1.4; }
    .article-credito { display: inline; font-style: italic; }
    .article-figcaption .article-credito::before { content: ' — '; }
    .takeaways { background: var(--surface); border-left: 4px solid var(--primary); border-radius: var(--radius); padding: 20px 24px; margin: 8px 0 28px; }
    .takeaways-title { font-size: 1.05rem; margin-bottom: 10px; color: var(--primary); }
    .takeaways-list { margin: 0; padding-left: 20px; }
    .takeaways-list li { margin-bottom: 6px; }
    .article-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 32px; }
    .tag-pill { display: inline-block; padding: 5px 13px; background: var(--surface); border: 1px solid var(--border); border-radius: 999px; font-size: .85rem; color: var(--muted); text-decoration: none; }
    .tag-pill:hover { border-color: var(--primary); color: var(--primary); }
    .related { margin-top: 56px; }
    .related-title { text-align: left; margin-bottom: 26px; }
    /* Card #41b — disclosure de afiliado: sobrio, no compite visualmente con el body. */
    .article-affiliate-disclosure { font-size: .82rem; color: var(--muted); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 10px 14px; margin: 0 0 20px; }
    /* Card #44 — widget aside sticky lateral (solo cuando pages_content.widgets.aside_embed
       está enabled; sin esa config esta regla no aplica a ningún elemento del DOM). */
    .article-layout-with-aside { display: grid; grid-template-columns: 1fr 300px; gap: 40px; align-items: start; }
    .article-main-col { min-width: 0; }
    .article-aside-embed { position: sticky; top: 90px; }
    .aside-embed-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
    .aside-embed-item + .aside-embed-item { padding-top: 14px; border-top: 1px solid var(--border); }
    .aside-embed-link { display: flex; gap: 10px; align-items: center; text-decoration: none; color: var(--text); }
    .aside-embed-img { width: 64px; height: 64px; object-fit: cover; border-radius: var(--radius); flex-shrink: 0; background: var(--surface); }
    .aside-embed-title { font-size: .88rem; line-height: 1.3; }
    .aside-embed-link:hover .aside-embed-title { color: var(--primary); }
    @media (max-width: 860px) {
        .article-layout-with-aside { display: block; }
        .article-aside-embed { position: static; margin-top: 32px; }
    }



    /* ===== Card #110 — menú mobile (hamburguesa + drawer), compartido por los 3
       templates. En desktop el botón está oculto y no cambia nada. ===== */
    .nav-hamburger { display: none; background: none; border: 0; cursor: pointer; padding: 8px; margin-left: auto; }
    .nav-hamburger-bars, .nav-hamburger-bars::before, .nav-hamburger-bars::after {
        display: block; width: 24px; height: 2px; background: currentColor; border-radius: 2px; transition: transform .2s, opacity .2s;
    }
    .nav-hamburger-bars { position: relative; color: inherit; }
    .nav-hamburger-bars::before, .nav-hamburger-bars::after { content: ''; position: absolute; left: 0; }
    .nav-hamburger-bars::before { top: -7px; }
    .nav-hamburger-bars::after  { top: 7px; }

    @media (max-width: 768px) {
        .nav-hamburger { display: inline-flex; align-items: center; }
        /* off-canvas desde la derecha; !important para ganarle al display:flex de cada template */
        .nav-links {
            position: fixed !important; top: 0; right: 0; height: 100dvh; width: min(82vw, 320px); max-width: 92vw;
            flex-direction: column !important; align-items: stretch !important; justify-content: flex-start !important;
            flex-wrap: nowrap !important; gap: 0 !important; background: #fff; box-shadow: -10px 0 32px rgba(0,0,0,.2);
            z-index: 1000; padding: 60px 0 24px !important; overflow-y: auto;
            transform: translateX(100%); transition: transform .26s ease; visibility: hidden;
        }
        .nav-links.nav-open { transform: translateX(0); visibility: visible; }
        .nav-links > li { width: 100%; }
        .nav-links a {
            display: block !important; color: #1a1a1a !important; padding: 13px 22px !important;
            font-size: 1rem !important; font-weight: 500 !important; text-transform: none !important;
            letter-spacing: normal !important; border-bottom: 1px solid #f1f1f1; text-align: left !important;
        }
        .nav-links a:hover { background: #f6f7f9 !important; color: var(--primary, #2563eb) !important; }
        /* dropdown "Servicios": se expande inline dentro del drawer */
        .nav-links li.nav-dropdown .dropdown-menu {
            position: static !important; transform: none !important; display: block !important;
            box-shadow: none !important; border: 0 !important; min-width: 0 !important; margin: 0 !important;
            padding: 0 !important; background: #f7f8fa !important;
        }
        .nav-links li.nav-dropdown .dropdown-menu::before { display: none !important; }
        .nav-links li.nav-dropdown .dropdown-menu a { padding-left: 40px !important; }
        .nav-links li.nav-dropdown > .dropdown-toggle { display: none !important; } /* en drawer no hace falta el toggle */
    }
    /* backdrop + lock de scroll cuando el drawer está abierto */
    html.nav-drawer-open { overflow: hidden; }
    html.nav-drawer-open::after { content: ''; position: fixed; inset: 0; background: rgba(0,0,0,.42); z-index: 999; }

    /* Estilos compartidos de Dropdown de Plugins */
    .nav-links li.nav-dropdown, nav ul li.nav-dropdown {
        position: relative;
    }
    .nav-links li.nav-dropdown .dropdown-menu, nav ul li.nav-dropdown .dropdown-menu {
        display: none;
        position: absolute;
        top: 100%;
        left: 50%;
        transform: translateX(-50%);
        background: white;
        border: 1px solid #e2e8f0;
        border-radius: 8px;
        box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1);
        min-width: 160px;
        padding: 8px 0;
        margin-top: 8px;
        list-style: none;
        z-index: 100;
    }
    .nav-links li.nav-dropdown .dropdown-menu::before, nav ul li.nav-dropdown .dropdown-menu::before {
        content: '';
        position: absolute;
        top: -6px;
        left: 50%;
        transform: translateX(-50%) rotate(45deg);
        width: 12px;
        height: 12px;
        background: white;
        border-top: 1px solid #e2e8f0;
        border-left: 1px solid #e2e8f0;
    }
    .nav-links li.nav-dropdown:hover .dropdown-menu,
    .nav-links li.nav-dropdown.open .dropdown-menu,
    nav ul li.nav-dropdown:hover .dropdown-menu,
    nav ul li.nav-dropdown.open .dropdown-menu {
        display: block;
    }
    .nav-links li.nav-dropdown .dropdown-menu li, nav ul li.nav-dropdown .dropdown-menu li {
        display: block;
        margin: 0;
        padding: 0;
    }
    .nav-links li.nav-dropdown .dropdown-menu a, nav ul li.nav-dropdown .dropdown-menu a {
        display: block;
        padding: 10px 20px;
        color: #334155 !important;
        font-size: 0.9rem;
        font-weight: 500;
        text-align: left;
        text-transform: none !important;
        letter-spacing: normal !important;
        transition: background 0.15s, color 0.15s;
        white-space: nowrap;
    }
    .nav-links li.nav-dropdown .dropdown-menu a:hover, nav ul li.nav-dropdown .dropdown-menu a:hover {
        background: #f1f5f9;
        color: var(--primary, #2563eb) !important;
    }
    .caret {
        font-size: 0.65rem;
        margin-left: 4px;
        display: inline-block;
        transition: transform 0.2s;
        vertical-align: middle;
    }
    .nav-links li.nav-dropdown:hover .caret,
    .nav-links li.nav-dropdown.open .caret,
    nav ul li.nav-dropdown:hover .caret,
    nav ul li.nav-dropdown.open .caret {
        transform: rotate(180deg);
    }



    .qx-rrss { padding: 22px 16px; background: rgba(15, 23, 42, 0.03); }
    .qx-rrss--footer, .qx-rrss--header { padding: 16px; }
    .qx-rrss-inner { max-width: 1120px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; }
    .qx-rrss-title { font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; opacity: .8; color: #475569; }
    .qx-rrss-btns { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
    .qx-rrss-btn { display: inline-flex; align-items: center; gap: 7px; padding: 8px 15px; border-radius: 999px; color: #fff !important; text-decoration: none; font-size: .85rem; font-weight: 600; line-height: 1; transition: filter .15s, transform .15s; }
    .qx-rrss-btn:hover { filter: brightness(1.08); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.15); }
    .qx-rrss-btn svg { flex-shrink: 0; }
    @media (max-width: 560px) { .qx-rrss-btn span { display: none; } .qx-rrss-btn { padding: 10px; } }



    .person-hero-avatar--initials { display: inline-flex; align-items: center; justify-content: center; width: 72px; height: 72px; border-radius: 50%; background: var(--primary, #334155); color: #fff; font-weight: 700; font-size: 1.4rem; letter-spacing: .02em; }
    .section-pagination { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 32px 0 8px; padding: 16px 0; border-top: 1px solid var(--border); }
    .section-pagination-status { color: var(--muted); font-size: .85rem; }
    .section-pagination-disabled { color: var(--border); font-size: .9rem; }
    @media (max-width: 520px) {
        .section-pagination { flex-direction: column; gap: 10px; text-align: center; }
    }



    .authors-index-grid { row-gap: 28px; }
    .author-card { text-align: center; padding: 24px 18px; }
    .author-card-link { display: flex; flex-direction: column; align-items: center; gap: 12px; color: inherit; text-decoration: none; }
    .author-card-avatar { display: inline-flex; align-items: center; justify-content: center; width: 64px; height: 64px; border-radius: 50%; background: var(--primary, #334155); color: #fff; font-weight: 700; font-size: 1.2rem; letter-spacing: .02em; }
    .author-card-name { margin: 0; }
    .author-card-link:hover .author-card-name { color: var(--primary); }
    .author-card-bio { color: var(--muted); font-size: .9rem; margin: 6px 0; }
    .author-card-count { justify-content: center; }
    .author-card .meta { text-align: center; }
    .author-card .card-more { text-align: center; }



    .qx-whatsapp-float-btn:hover {
        transform: scale(1.12);
        box-shadow: 0 10px 28px rgba(37, 211, 102, 0.7) !important;
    }
    .qx-whatsapp-float-btn .qx-wa-pulse {
        position: absolute;
        top: -6px; left: -6px; right: -6px; bottom: -6px;
        border-radius: 50%;
        border: 2px solid #25D366;
        animation: qxWaPulse 2s infinite;
        pointer-events: none;
    }
    @keyframes qxWaPulse {
        0% { transform: scale(0.92); opacity: 0.8; }
        70% { transform: scale(1.35); opacity: 0; }
        100% { transform: scale(1.35); opacity: 0; }
    }



        /* === Plantilla: Diario (portal de noticias) === */
        /* Look sobrio de diario: títulos serif, paleta del tema, secciones con color por sitio. */
        /* Tipografía: si el sitio no eligió font_heading, caemos a un serif serio (Merriweather/Georgia). */
        :root { --diario-serif: "Merriweather", Georgia, "Times New Roman", serif; }
        h1, h2, h3, .diario-serif { font-family: var(--font-heading, var(--diario-serif)); }
        body { background: var(--bg); }

        /* Barra superior (fecha / marca secundaria) */
        .diario-topbar { background: var(--footer-bg); color: var(--footer-text); font-size: .78rem; }
        .diario-topbar-inner { display: flex; align-items: center; justify-content: space-between; padding: 7px 0; gap: 12px; }
        .diario-topbar a { color: inherit; text-decoration: none; }
        .diario-date { text-transform: capitalize; letter-spacing: .02em; }

        /* Cabecera de marca (masthead) */
        .diario-masthead { background: #fff; border-bottom: 1px solid var(--border); padding: 20px 0; text-align: center; }
        .diario-masthead .brand { font-family: var(--font-heading, var(--diario-serif)); font-weight: 800; font-size: 2.1rem; color: var(--text); text-decoration: none; letter-spacing: -.01em; display: inline-flex; align-items: center; justify-content: center; }
        .diario-masthead .brand-logo { height: 52px; width: auto; }
        .diario-tagline { color: var(--muted); font-size: .85rem; margin-top: 4px; font-style: italic; }

        /* Nav de secciones (sticky). Reusa _shared/nav (.nav-links). */
        .nav { background: var(--text); padding: 0; position: sticky; top: 0; z-index: 30; border-bottom: 3px solid var(--primary); }
        .nav-inner { display: flex; align-items: center; justify-content: center; min-height: 46px; }
        .nav .nav-links { list-style: none; display: flex; flex-wrap: wrap; gap: 0; align-items: stretch; justify-content: center; }
        .nav .nav-links a { color: #fff; text-decoration: none; font-size: .82rem; text-transform: uppercase; letter-spacing: .07em; font-weight: 700; padding: 14px 16px; display: inline-block; }
        .nav .nav-links a:hover { background: var(--primary); color: #fff; }
        /* Card #174 — la hamburguesa comparte color con el texto del body (currentColor):
           sobre el nav OSCURO del diario quedaba negra-sobre-negro = "franja negra vacía".
           Los demás templates tienen nav claro y no lo sufren. */
        .nav .nav-hamburger { color: #fff; }

        /* Badge de sección (color por sitio, resuelto en el render desde pages_content.sections). */
        .seccion-badge { display: inline-block; padding: 3px 11px; border-radius: 3px; font-size: .72rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #fff; background: var(--primary); text-decoration: none; line-height: 1.5; }
        .seccion-badge:hover { filter: brightness(.92); }

        /* Hero / nota destacada */
        .diario-hero { padding: 36px 0 8px; }
        .diario-hero-card { display: grid; grid-template-columns: 1.4fr 1fr; gap: 30px; align-items: center; }
        /* Cards #175/#176 — height:auto es OBLIGATORIO: imgAttrs() emite width/height
           reales de la imagen (ej. 675x1200 vertical) y ese height de ATRIBUTO le gana
           al aspect-ratio CSS — una foto vertical estiraba el hero a 1200px de alto y
           la grilla quedaba masonry. Con height:auto el aspect-ratio 16:9 vuelve a
           mandar y object-fit recorta. Los atributos siguen sirviendo para el CLS. */
        .diario-hero-media { width: 100%; height: auto; aspect-ratio: 16/9; object-fit: cover; border-radius: var(--radius); background: var(--surface); }
        .diario-hero-title { font-size: 2.6rem; line-height: 1.12; margin: 12px 0 10px; color: var(--text); }
        .diario-hero-title a { color: inherit; text-decoration: none; }
        .diario-hero-title a:hover { color: var(--primary); }
        .diario-hero-lead { font-size: 1.15rem; color: var(--muted); }
        .diario-hero-byline { font-size: .82rem; color: var(--muted); margin-top: 12px; }

        /* Bloque de sección en la portada */
        .diario-block { padding: 30px 0; border-top: 1px solid var(--border); }
        .diario-block-head { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
        .diario-block-title { font-size: 1.45rem; margin: 0; padding-left: 12px; border-left: 5px solid var(--primary); }
        .diario-block-title a { color: var(--text); text-decoration: none; }
        .diario-block-title a:hover { color: var(--primary); }
        .diario-block-more { margin-left: auto; font-size: .82rem; }

        /* Cards de nota */
        .diario-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 24px; }
        .diario-grid > * { min-width: 0; }
        .diario-card { background: #fff; display: flex; flex-direction: column; }
        .diario-card-media { width: 100%; height: auto; aspect-ratio: 16/9; object-fit: cover; border-radius: var(--radius); background: var(--surface); margin-bottom: 10px; }
        /* Card #176 — límites editoriales: la altura de la card no depende del largo del
           texto ni de la foto; título 3 líneas, bajada 3. */
        .diario-card-title { font-size: 1.08rem; line-height: 1.25; margin: 4px 0 6px; overflow-wrap: break-word; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
        .diario-card-title a { color: var(--text); text-decoration: none; }
        .diario-card-title a:hover { color: var(--primary); }
        .diario-card-excerpt { color: var(--muted); font-size: .9rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
        /* Card #181 — metadatos un punto más grandes y legibles. */
        .diario-card-meta { color: var(--muted); font-size: .8rem; margin-top: 8px; }
        /* Card #176 — "Últimas noticias": grilla regular de 3 columnas en desktop
           (auto-fill metía 4 y desbalanceaba), 1 columna en mobile vía media query. */
        .diario-ultimas .diario-grid { grid-template-columns: repeat(3, 1fr); }

        /* Layout portada con sidebar de widgets */
        .diario-main { display: grid; grid-template-columns: 1fr 320px; gap: 40px; align-items: start; padding: 8px 0 48px; }
        .diario-aside { display: flex; flex-direction: column; gap: 28px; position: sticky; top: 70px; }

        /* Tarjeta genérica de widget (la usan dolar / mas_leidas / columnistas / newsletter) */
        .widget { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
        .widget-head { font-size: .8rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; color: #fff; background: var(--primary); padding: 11px 16px; }
        .widget-body { padding: 16px; }

        /* Footer de diario: secciones + tagline */
        .footer { background: var(--footer-bg); color: var(--footer-text); padding: 48px 0 36px; }
        .footer-inner { display: flex; flex-direction: column; gap: 16px; }
        .footer-brand { font-family: var(--font-heading, var(--diario-serif)); font-weight: 800; font-size: 1.5rem; color: #fff; }
        .footer-logo { height: 46px; width: auto; display: block; }
        .footer-secciones { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 20px; padding: 0; margin: 0; }
        .footer-secciones a { color: var(--footer-text); text-decoration: none; font-size: .85rem; text-transform: uppercase; letter-spacing: .05em; }
        .footer-secciones a:hover { color: #fff; }
        .footer a { color: #fff; text-decoration: none; }
        .footer-legal { font-size: .82rem; border-top: 1px solid rgba(255,255,255,.12); padding-top: 16px; }

        @media (max-width: 860px) {
            .diario-main { grid-template-columns: 1fr; }
            .diario-aside { position: static; }
            .diario-hero-card { grid-template-columns: 1fr; }
            .diario-hero-title { font-size: 1.9rem; }
            .diario-ultimas .diario-grid { grid-template-columns: 1fr; }
        }
        /* Card #173 — anti-overflow mobile: nada del template puede empujar el viewport.
           min-width:0 en los hijos de grid/flex + wrapping seguro de títulos y URLs. */
        .diario-main > *, .diario-hero-card > * { min-width: 0; }
        .diario-hero-title, .diario-hero-lead, .diario-card-excerpt, .diario-block-title,
        .breadcrumb, .article-body, .article-title { overflow-wrap: break-word; word-break: break-word; }
        @media (max-width: 480px) {
            .diario-hero { padding-top: 20px; }
            .diario-hero-title { font-size: 1.55rem; }
            .diario-hero-lead { font-size: 1rem; }
            .diario-masthead .brand-logo { height: 42px; }
            /* Card #175 — techo por si una foto extrema igual intenta crecer. */
            .diario-hero-media { max-height: 55vh; }
        }
        html, body { overflow-x: clip; }

        /* Card #181 — banner de sección compacto: el hero--compact compartido (56px de
           padding + título 3rem) superaba 220px y empujaba el contenido. Techo editorial:
           ≤220px desktop, ≤180px mobile, título contenido. */
        .section-index-hero { padding: 30px 0; max-height: 220px; box-sizing: border-box; overflow: hidden; }
        .section-index-hero .hero-title { font-size: 2rem; margin-bottom: 6px; }
        @media (max-width: 640px) {
            .section-index-hero { padding: 22px 0; max-height: 180px; }
            .section-index-hero .hero-title { font-size: 1.55rem; }
        }
    

/* ============================================================
   La Hora del Chef — skin editorial sobre el template "diario".
   Origen: sistema de diseño del sitio Astro original (contenidos2/hora-del-chef).
   Se inyecta como  al final del <head>, después del CSS del template,
   así que gana en cascada sin !important salvo donde se indica.
   T-58 · 2026-07-24
   ============================================================ */

/* ---------- 0. Tokens propios (los del theme llegan por :root del template) ---------- */
:root {
  --hdc-brand: #E8722A;          /* naranja de marca: superficies y decoración */
  --hdc-brand-dark: #C95D1E;
  --hdc-brand-ink: #B34F14;      /* variante para TEXTO chico: cumple AA sobre crema */
  --hdc-gold: #FFC000;           /* dorado exacto del logo (muestreado del archivo) */
  --hdc-brand-warm: #F0A000;     /* la sombra naranja del propio logo: puente hacia el terracota */
  --hdc-tint: #FFF3EC;           /* naranja al 8% */
  --hdc-paper: #FDF8F3;
  --hdc-paper-alt: #F5F0EA;
  --hdc-ink: #1A1A18;
  --hdc-ink-soft: #5C5C55;       /* texto secundario (bajadas, bios) */
  --hdc-ink-mute: #6E6E66;       /* metadatos (fechas) */
  --hdc-line: #E4DDD4;
  --hdc-line-soft: rgba(26, 26, 24, .07);
  --hdc-radius: 16px;
  --hdc-radius-sm: 8px;
  --hdc-caps: .15em;             /* tracking de los kickers */
  --hdc-shadow-card: 0 2px 8px rgba(26, 26, 24, .05);
  --hdc-shadow-hover: 0 18px 38px rgba(26, 26, 24, .09);
  --hdc-shadow-hero: 0 20px 60px rgba(232, 114, 42, .20);  /* sombra tintada del original */
  --hdc-ease: .3s cubic-bezier(.4, 0, .2, 1);
  /* bloque decorativo para portadas ausentes o rotas (evoca el reloj del logo) */
  --hdc-placeholder:
    radial-gradient(circle at 30% 38%, rgba(232, 114, 42, .16) 0 22%, transparent 22.5%),
    radial-gradient(circle at 72% 66%, rgba(232, 114, 42, .10) 0 14%, transparent 14.5%),
    linear-gradient(135deg, var(--hdc-tint), var(--hdc-paper-alt));
}

/* ---------- 1. Base tipográfica ---------- */
body {
  background: var(--hdc-paper);
  color: var(--hdc-ink);
  line-height: 1.7;
}

h1, h2, h3, h4 {
  font-weight: 900;            /* el original usa Playfair 900; el template pedía 700/800 */
  letter-spacing: -.01em;
  text-wrap: balance;
}

.container { max-width: 1200px; }

/* la bajada del artículo, en serif itálica: el gesto editorial del original */
.article-lead,
.article-content blockquote {
  font-family: "Instrument Serif", Georgia, serif;
  font-style: italic;
  font-weight: 400;
}

/* ---------- 2. Topbar: de franja negra a filete crema ---------- */
.diario-topbar {
  background: var(--hdc-paper-alt);
  color: var(--hdc-ink-mute);
  border-bottom: 1px solid var(--hdc-line);
  font-size: .7rem;
}
.diario-date {
  text-transform: uppercase;
  letter-spacing: var(--hdc-caps);
  font-weight: 600;
}

/* ---------- 3. Masthead ---------- */
.diario-masthead {
  background: #fff;
  border-bottom: 1px solid var(--hdc-line-soft);
  padding: 18px 0;
}
.diario-masthead .brand-logo { height: 56px; }

/* ---------- 4. Nav: barra clara con links tipo pill (original) ---------- */
.nav {
  background: #fff;
  color: var(--hdc-ink);
  /* filete que cierra la cabecera: cose el terracota de la paleta con el dorado
     del logo, que si no queda como un color huérfano arriba de todo */
  border-bottom: 2px solid transparent;
  border-image: linear-gradient(90deg, var(--hdc-brand), var(--hdc-gold) 55%, var(--hdc-brand-warm)) 1;
  box-shadow: 0 1px 12px rgba(26, 26, 24, .04);
}
.nav-inner { min-height: 52px; }
.nav .nav-links { gap: 4px; align-items: center; }
.nav .nav-links a {
  color: var(--hdc-ink-soft);
  font-size: .74rem;
  letter-spacing: var(--hdc-caps);
  font-weight: 700;
  padding: 8px 14px;
  border-radius: 100px;
  transition: background var(--hdc-ease), color var(--hdc-ease);
}
.nav .nav-links a:hover {
  background: var(--hdc-tint);
  color: var(--hdc-brand-ink);
}

/* ---------- 5. Kicker de sección (era un rectángulo sólido) ---------- */
.seccion-badge {
  background: none;
  color: var(--hdc-brand-ink);
  padding: 0;
  border-radius: 0;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: var(--hdc-caps);
  line-height: 1;
  margin-bottom: 10px;
}
.seccion-badge:hover { filter: none; color: var(--hdc-brand-dark); text-decoration: underline; }

/* ---------- 6. Hero de portada ---------- */
.diario-hero { padding: 40px 0 12px; }

.diario-hero-card {
  background: linear-gradient(to bottom, var(--hdc-tint), var(--hdc-paper));
  border-radius: 20px;
  padding: 44px;
  gap: 44px;
  align-items: center;
  grid-template-columns: 1fr 1fr;
}
/* el original pone el texto a la izquierda y la foto a la derecha; el DOM viene al revés */
.diario-hero-media-wrap { order: 2; }
.diario-hero-text { order: 1; display: flex; flex-direction: column; align-items: flex-start; }

.diario-hero-media-wrap {
  display: block;
  aspect-ratio: 4 / 3;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: var(--hdc-shadow-hero);
  background: var(--hdc-placeholder);   /* se ve si la portada falla o no existe */
}
.diario-hero-media {
  width: 100%; height: 100%;
  aspect-ratio: auto;
  object-fit: cover;
  background: transparent;
  border-radius: 0;
}

/* pill "Última publicación": el hero del original lo tenía y el DOM no lo emite */
.diario-hero-text::before {
  content: "Última publicación";
  display: inline-block;
  background: var(--hdc-brand-ink);
  color: #fff;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: 6px 14px 6px 26px;
  border-radius: 100px;
  margin-bottom: 18px;
  background-image: radial-gradient(circle 3px at 13px 50%, #fff 99%, transparent 100%);
}

.diario-hero-title {
  font-size: clamp(2.1rem, 1.6rem + 2vw, 3.1rem);
  line-height: 1.08;
  margin: 0 0 14px;
}
.diario-hero-lead {
  font-size: 1.12rem;
  color: var(--hdc-ink-soft);
  line-height: 1.75;
}
.diario-hero-byline {
  font-size: .8rem;
  color: var(--hdc-ink-mute);
  margin-top: 18px;
  letter-spacing: .02em;
}

/* ---------- 7. Bloque de portada + grilla de cards ---------- */
.diario-block { padding: 44px 0 20px; border-top: 1px solid var(--hdc-line); }
.diario-block-head { margin-bottom: 26px; }
.diario-block-title {
  font-size: 1.9rem;
  padding-left: 0;
  border-left: 0;
  position: relative;
  padding-bottom: 10px;
}
.diario-block-title::after {   /* subrayado corto naranja en vez de la barra lateral */
  content: "";
  position: absolute;
  left: 0; bottom: 0;
  width: 56px; height: 3px;
  background: linear-gradient(90deg, var(--hdc-brand), var(--hdc-gold));
  border-radius: 3px;
}

/* auto-FIT (no auto-fill): con pocas notas las columnas vacías se colapsan y el
   bloque llena el ancho, en vez de dejar huecos a la derecha */
.diario-grid {
  grid-template-columns: repeat(auto-fit, minmax(232px, 1fr));
  gap: 28px;
  align-items: start;          /* sin esto, la card sin imagen se estira y deja un hueco */
}

/* bloque de una sola nota (secciones chicas como Técnicas o Viajes): en vez de una
   card gigante o dos huecos, se arma apaisada — foto a la izquierda, texto a la derecha */
.diario-grid > .diario-card:only-child {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  column-gap: 26px;
  align-content: center;
}
/* todo el texto a la derecha; sin esto el auto-placement mete la bajada debajo de la foto */
.diario-grid > .diario-card:only-child > * { grid-column: 2; }
/* la foto —o el placeholder, cuando la nota no tiene portada— toma la columna entera */
.diario-grid > .diario-card:only-child > a:first-child,
.diario-grid > .diario-card:only-child::before {
  grid-column: 1;
  grid-row: 1 / span 10;
  height: 100%;
  min-height: 230px;
  aspect-ratio: auto;
  align-self: stretch;
}
.diario-grid > .diario-card:only-child .seccion-badge { padding: 22px 22px 0 0; }
.diario-grid > .diario-card:only-child .diario-card-title { padding: 0 22px 0 0; font-size: 1.35rem; }
.diario-grid > .diario-card:only-child .diario-card-excerpt { padding: 0 22px 0 0; -webkit-line-clamp: 4; }
.diario-grid > .diario-card:only-child .diario-card-meta { padding: 12px 22px 22px 0; }
@media (max-width: 640px) {
  .diario-grid > .diario-card:only-child { grid-template-columns: 1fr; }
  .diario-grid > .diario-card:only-child > a:first-child { grid-row: auto; aspect-ratio: 16 / 10; }
  .diario-grid > .diario-card:only-child .seccion-badge,
  .diario-grid > .diario-card:only-child .diario-card-title,
  .diario-grid > .diario-card:only-child .diario-card-excerpt { padding-left: 16px; padding-right: 16px; }
  .diario-grid > .diario-card:only-child .seccion-badge { padding-top: 16px; }
  .diario-grid > .diario-card:only-child .diario-card-meta { padding: 12px 16px 16px; }
}

/* "Ver todas →" de cada bloque */
.diario-block-more { font-size: .76rem; font-weight: 700; letter-spacing: .04em; color: var(--hdc-brand-ink); }

.diario-card {
  background: #fff;
  border: 1px solid var(--hdc-line-soft);
  border-radius: var(--hdc-radius);
  overflow: hidden;
  transition: transform var(--hdc-ease), box-shadow var(--hdc-ease);
}
.diario-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--hdc-shadow-hover);
}
/* el <a> de la portada lleva el ratio y el placeholder de fondo: así, si la imagen
   no carga (cover 404) queda el bloque decorativo en vez de un hueco blanco */
.diario-card > a:first-child {
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--hdc-placeholder);
}
.diario-card-media {
  width: 100%; height: 100%;
  aspect-ratio: auto;
  object-fit: cover;
  background: transparent;   /* el template la pinta de blanco y tapaba el placeholder */
  border-radius: 0;            /* la imagen va a sangre contra el borde de la card */
  margin-bottom: 0;
  transition: transform var(--hdc-ease);
}
.diario-card:hover .diario-card-media { transform: scale(1.03); }

/* el template no agrupa los textos en un contenedor: se paddea pieza por pieza */
.diario-card .seccion-badge { padding: 16px 16px 0; display: block; margin-bottom: 8px; }
.diario-card-title {
  padding: 0 16px;
  font-size: 1.12rem;
  line-height: 1.28;
  margin: 0 0 8px;
}
.diario-card-excerpt {
  padding: 0 16px;
  color: var(--hdc-ink-soft);
  font-size: .88rem;
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.diario-card-meta {
  padding: 12px 16px 16px;
  margin-top: auto;
  color: var(--hdc-ink-mute);
  font-size: .74rem;
  letter-spacing: .02em;
}

/* card sin portada: el template omite el <a><img> entero, así que se dibuja el
   mismo placeholder con idéntico aspect-ratio para no romper el ritmo de la grilla */
.diario-card:not(:has(.diario-card-media))::before {
  content: "";
  display: block;
  aspect-ratio: 16 / 10;
  background: var(--hdc-placeholder);
}

/* ---------- 8. Sidebar y widgets ---------- */
.diario-main { gap: 48px; padding-bottom: 64px; }
.widget {
  border: 1px solid var(--hdc-line);
  border-radius: var(--hdc-radius);
  box-shadow: var(--hdc-shadow-card);
}
.widget-head {
  background: none;
  color: var(--hdc-brand-ink);
  border-bottom: 1px solid var(--hdc-line);
  letter-spacing: var(--hdc-caps);
  font-size: .72rem;
  padding: 14px 18px;
}
.widget-body { padding: 18px; }

.mas-leidas-list { list-style: none; margin: 0; padding: 0; }
.mas-leidas-list li {
  display: flex;
  gap: 14px;
  padding: 12px 0;
  border-top: 1px solid var(--hdc-line-soft);
}
.mas-leidas-list li:first-child { border-top: 0; padding-top: 0; }
.ml-num {
  font-family: var(--font-heading);
  font-size: 1.6rem;
  font-weight: 900;
  line-height: 1;
  color: var(--hdc-brand);
  opacity: .55;
}
.ml-text a {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: .96rem;
  line-height: 1.3;
  color: var(--hdc-ink);
  text-decoration: none;
}
.ml-text a:hover { color: var(--hdc-brand-ink); }
.ml-text .meta { display: block; margin-top: 4px; font-size: .72rem; color: var(--hdc-ink-mute); }

/* newsletter: caja oscura, como el bloque del original */
.widget-newsletter { background: var(--hdc-ink); border-color: var(--hdc-ink); }
.widget-newsletter .widget-head {
  color: var(--hdc-gold);
  border-bottom-color: rgba(255, 255, 255, .12);
}
.widget-newsletter .newsletter-titulo {
  font-family: var(--font-heading);
  font-weight: 900;
  font-size: 1.25rem;
  line-height: 1.2;
  color: #fff;
  margin-bottom: 8px;
}
.widget-newsletter .newsletter-texto { color: rgba(255, 255, 255, .68); font-size: .85rem; }
.widget-newsletter input[type="email"] {
  width: 100%;
  background: rgba(255, 255, 255, .07);
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 100px;
  color: #fff;
  padding: 11px 18px;
  font-family: var(--font-body);
  font-size: .9rem;
  margin: 14px 0 10px;
}
.widget-newsletter input[type="email"]::placeholder { color: rgba(255, 255, 255, .58); }

/* el botón del newsletter no tenía NINGUNA regla: caía al estilo nativo del navegador */
.btn, .btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  background: var(--hdc-brand-ink);
  color: #fff;
  border: 0;
  border-radius: 100px;
  padding: 11px 22px;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: .9rem;
  cursor: pointer;
  transition: background var(--hdc-ease), transform var(--hdc-ease);
}
.btn:hover, .btn-primary:hover { background: var(--hdc-brand-dark); transform: translateY(-1px); }

/* ---------- 9. Footer ---------- */
.footer { background: var(--hdc-ink); color: rgba(255, 255, 255, .68); padding: 56px 0 40px; }
.footer-inner { gap: 20px; }
.footer-logo { height: 52px; }
.footer-secciones a {
  color: rgba(255, 255, 255, .68);
  font-size: .72rem;
  letter-spacing: var(--hdc-caps);
  font-weight: 600;
}
.footer-secciones a:hover { color: var(--hdc-gold); }
.footer a { color: var(--hdc-gold); }
.footer-legal { border-top-color: rgba(255, 255, 255, .1); padding-top: 20px; font-size: .78rem; }
.footer-disclosure { font-style: italic; color: rgba(255, 255, 255, .5); font-size: .76rem; }

/* ---------- 10. Índices: /seccion/* y /autor/* ---------- */
.hero--themed {
  background: linear-gradient(to bottom, var(--hdc-tint), var(--hdc-paper));
  color: var(--hdc-ink);
  border-bottom: 1px solid var(--hdc-line);
}
.hero--themed .hero-sub { color: var(--hdc-ink-soft); opacity: 1; }
.hero-title { font-size: clamp(2.2rem, 1.8rem + 2vw, 3rem); }
.section { padding: 56px 0; }
.section-title { font-size: 2rem; text-align: left; margin-bottom: 28px; }

body .person-hero-avatar {
  background: #fff;
  border: 3px solid var(--hdc-brand);
  color: var(--hdc-brand-ink);
  font-family: var(--font-heading);
  font-weight: 900;
  font-size: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

/* badge de sección de los índices: viene con color inline → hace falta !important */
.section-badge {
  background: none !important;
  color: var(--hdc-brand-ink) !important;
  padding: 0 !important;
  border-radius: 0 !important;
  font-size: .68rem !important;
  font-weight: 700 !important;
  letter-spacing: var(--hdc-caps) !important;
  text-transform: uppercase !important;
  display: inline-block !important;
  margin-bottom: 8px !important;
}

.card, .article-card {
  background: #fff;
  border: 1px solid var(--hdc-line-soft);
  border-radius: var(--hdc-radius);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform var(--hdc-ease), box-shadow var(--hdc-ease);
}
.card:hover, .article-card:hover { transform: translateY(-6px); box-shadow: var(--hdc-shadow-hover); }
.grid-3 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 28px; align-items: start; }

.article-cover--sm { height: auto; aspect-ratio: 16 / 10; margin-bottom: 0; border-radius: 0; }
/* mismo placeholder que en la portada para las notas sin cover de /seccion y /autor */
.article-card:not(:has(img))::before {
  content: "";
  display: block;
  aspect-ratio: 16 / 10;
  background: var(--hdc-placeholder);
}
.article-card .section-badge { padding: 16px 18px 0 !important; }
.card-title { padding: 0 18px; font-size: 1.15rem; line-height: 1.28; margin: 0 0 8px; }
.card-title a { color: var(--hdc-ink); text-decoration: none; }
.card-title a:hover { color: var(--hdc-brand-ink); }
.card .meta, .article-card .meta { padding: 0 18px; color: var(--hdc-ink-mute); font-size: .74rem; }
.card > p, .article-card > p:not(.meta):not(.card-more) {
  padding: 0 18px;
  color: var(--hdc-ink-soft);
  font-size: .88rem;
  line-height: 1.6;
}
.card-more { padding: 0 18px 18px; margin-top: 12px; }
.link { color: var(--hdc-brand-ink); }

/* feature-hero de /seccion/* */
body .feature-hero {
  background: linear-gradient(to bottom, var(--hdc-tint), var(--hdc-paper));
  border: 0;
  border-radius: 20px;
  padding: 32px;
  gap: 32px;
  margin-bottom: 40px;
  align-items: center;
}
body .feature-hero:hover { transform: none; box-shadow: none; }
body .feature-hero-media img {
  border-radius: var(--hdc-radius);
  box-shadow: var(--hdc-shadow-hero);
  aspect-ratio: 4 / 3;
  height: auto;
  min-height: 0;
}
/* el índice de sección repite el nombre en el kicker y en el h1: sobra el kicker */
.section-index-hero .section-badge { display: none !important; }
body .feature-hero-title { font-size: clamp(1.8rem, 1.4rem + 1.6vw, 2.5rem); line-height: 1.12; margin-bottom: 12px; }
body .feature-hero-excerpt { color: var(--hdc-ink-soft); font-size: 1.05rem; }
.feature-hero-body .section-badge { padding: 0 !important; }

body .section-pagination { display: flex; gap: 16px; align-items: center; justify-content: center; margin-top: 44px; }
body .section-pagination-status { color: var(--hdc-ink-mute); font-size: .85rem; }

/* ---------- 11. Página de artículo ---------- */
.article-body { max-width: 720px; }
.article-title { font-size: clamp(2.1rem, 1.6rem + 2.2vw, 3.2rem); line-height: 1.1; margin-bottom: 16px; }
.article-lead { font-size: 1.35rem; line-height: 1.55; color: var(--hdc-ink-soft); margin: 16px 0 24px; }
.article-content { font-size: 1.06rem; line-height: 1.85; }
.article-content p { margin-bottom: 20px; }
.article-content h2, .article-content h3 { margin: 40px 0 14px; }
.article-content a { color: var(--hdc-brand-ink); }
.article-content em, .article-content i { font-family: "Instrument Serif", Georgia, serif; font-size: 1.06em; }
.article-content blockquote {
  font-size: 1.5rem;
  line-height: 1.35;
  border-left: 3px solid var(--hdc-brand);
  padding-left: 22px;
  margin: 32px 0;
  color: var(--hdc-ink);
}
.article-cover, .article-figure img { height: auto; aspect-ratio: 16 / 9; border-radius: var(--hdc-radius); }

/* capitular: tratamiento de revista del original */
.article-content > p:first-of-type::first-letter {
  float: left;
  font-family: var(--font-heading);
  font-weight: 900;
  font-size: 3.6em;
  line-height: .82;
  margin: .06em .1em 0 0;
  color: var(--hdc-brand);
}

body .breadcrumb { font-size: .76rem; color: var(--hdc-ink-mute); margin-bottom: 20px; letter-spacing: .02em; }
body .breadcrumb-link { color: var(--hdc-ink-mute); text-decoration: none; }
body .breadcrumb-link:hover { color: var(--hdc-brand-ink); }
body .breadcrumb-sep { opacity: .5; margin: 0 6px; }

.byline { border-color: var(--hdc-line); gap: 16px 36px; }
.byline-role { letter-spacing: var(--hdc-caps); color: var(--hdc-brand-ink); font-weight: 700; font-size: .66rem; }
.byline-name { color: var(--hdc-ink); }
.byline-bio { color: var(--hdc-ink-soft); }

/* "Puntos clave": el bloque existe en el DOM y no tenía tratamiento propio */
body .takeaways {
  background: var(--hdc-paper-alt);
  border-left: 3px solid var(--hdc-brand);
  border-radius: 0 var(--hdc-radius-sm) var(--hdc-radius-sm) 0;
  padding: 22px 26px;
  margin: 32px 0;
}
body .takeaways-title {
  font-family: var(--font-body);
  font-size: .74rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: var(--hdc-caps);
  color: var(--hdc-brand-ink);
  margin-bottom: 14px;
}
body .takeaways-list { list-style: none; margin: 0; padding: 0; }
body .takeaways-list li {
  position: relative;
  padding-left: 18px;
  margin-bottom: 10px;
  font-size: .96rem;
  line-height: 1.6;
  color: var(--hdc-ink);
}
body .takeaways-list li::before {
  content: "";
  position: absolute;
  left: 0; top: .58em;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--hdc-brand);
}

body .article-tags { margin-top: 36px; display: flex; flex-wrap: wrap; gap: 8px; }
.tag-pill {
  background: var(--hdc-paper-alt) !important;
  border: 1px solid var(--hdc-line) !important;
  border-radius: var(--hdc-radius-sm) !important;
  color: var(--hdc-ink-soft) !important;
  font-size: .74rem !important;
  font-weight: 600;
  text-transform: none;
}
.tag-pill:hover { background: var(--hdc-tint) !important; color: var(--hdc-brand-ink) !important; }

/* ---------- 12. Mobile ---------- */
@media (max-width: 860px) {
  /* el template ya apila el hero acá, pero mis columnas de arriba le ganarían por orden */
  .diario-hero-card {
    grid-template-columns: 1fr;
    padding: 22px;
    gap: 22px;
    border-radius: var(--hdc-radius);
  }
  .diario-hero-media-wrap { order: 1; aspect-ratio: 16 / 10; border-radius: var(--hdc-radius); }
  .diario-hero-text { order: 2; }
  .diario-hero-title { font-size: 1.85rem; }
  .diario-hero-text::before { font-size: .62rem; white-space: nowrap; }
  .diario-block-title { font-size: 1.55rem; }
  body .feature-hero { grid-template-columns: 1fr; padding: 20px; gap: 20px; }
  .diario-main { gap: 36px; }
}
@media (max-width: 768px) {
  /* el drawer del template ya trae !important propios: solo se ajusta el color de marca */
  .nav-links a:hover { color: var(--hdc-brand-ink) !important; }
}
@media (max-width: 640px) {
  .diario-grid { grid-template-columns: 1fr; }
  .article-content > p:first-of-type::first-letter { font-size: 3em; }
}
@media (prefers-reduced-motion: reduce) {
  .diario-card, .card, .article-card, .diario-card-media, .btn, .btn-primary { transition: none; }
  .diario-card:hover, .card:hover, .article-card:hover { transform: none; }
}