/* ============================================================
   AVENTURAS DE RAYET — CSS ESPECÍFICO DEL PORTAL PRIMARIA
   Versión 1.0 — 20 juegos con 5 secciones temáticas
   ------------------------------------------------------------
   Temática: Ciudad + Carreras
   Paleta: Naranja / Amarillo / Gris urbano
   ============================================================ */

/* ------------------------------------------------------------
   1. VARIABLES ESPECÍFICAS DEL PORTAL PRIMARIA
   ------------------------------------------------------------ */
.portal-primaria {
    /* Colores de las 5 secciones */
    --sec-matematicas-1: #ff8c42;
    --sec-matematicas-2: #d96a1e;
    --sec-matematicas-bg: linear-gradient(135deg, #fff0d8, #ffe0b8);

    --sec-lenguaje-1: #2b5e9c;
    --sec-lenguaje-2: #1c3d6b;
    --sec-lenguaje-bg: linear-gradient(135deg, #e0edff, #c8d9f5);

    --sec-ciencias-1: #4caf50;
    --sec-ciencias-2: #2e7d32;
    --sec-ciencias-bg: linear-gradient(135deg, #e0ffe0, #c8f0c8);

    --sec-logica-1: #7c3aed;
    --sec-logica-2: #5b21b6;
    --sec-logica-bg: linear-gradient(135deg, #f0e0ff, #e0c8ff);

    --sec-retos-1: #f7c948;
    --sec-retos-2: #d9a51f;
    --sec-retos-bg: linear-gradient(135deg, #fff9d8, #fff0b8);

    /* Identidad Rayet */
    --ray-color-1: #ff8c42;
    --ray-color-2: #d96a1e;
    --ray-dark: #3d1f00;
    --ray-glow: rgba(255, 140, 66, 0.5);

    /* Fondos */
    --bg-ciudad: linear-gradient(180deg, #c8ddf0 0%, #e0ecf5 45%, #a8bfd9 100%);
    --bg-games: linear-gradient(180deg, #f5f9ff 0%, #eef4fc 100%);
}

body.world-portal {
    background: var(--bg-ciudad);
    min-height: 100vh;
    overflow-x: hidden;
}

/* ------------------------------------------------------------
   2. HEADER ESPECÍFICO DEL PORTAL PRIMARIA
   ------------------------------------------------------------ */
.brand-primaria:hover { transform: translateY(-1px) scale(1.01); }

.brand-logo-primaria {
    background: linear-gradient(135deg, #ff8c42 0%, #d96a1e 50%, #b54a0c 100%) !important;
    box-shadow:
        0 8px 22px rgba(255, 140, 66, 0.5),
        inset 0 -3px 8px rgba(0, 0, 0, 0.2),
        inset 0 3px 8px rgba(255, 255, 255, 0.4) !important;
}
.brand-logo-primaria .brand-logo-emoji {
    font-size: 1.6rem;
    line-height: 1;
    animation: carShake 0.8s ease-in-out infinite;
}
@keyframes carShake {
    0%, 100% { transform: rotate(-2deg) translateX(0); }
    25% { transform: rotate(1deg) translateX(1px); }
    50% { transform: rotate(-1deg) translateX(-1px); }
    75% { transform: rotate(2deg) translateX(1px); }
}

/* Nav items del portal */
.nav-btn.nav-juegos.is-active     { color: var(--ray-color-1); text-shadow: 0 0 12px var(--ray-glow); }
.nav-btn.nav-inicial.is-active    { color: #7ed957; text-shadow: 0 0 12px rgba(126, 217, 87, 0.6); }
.nav-btn.nav-secundaria.is-active { color: #00e5ff; text-shadow: 0 0 12px rgba(0, 229, 255, 0.6); }
.nav-btn.nav-ayuda.is-active      { color: #f472b6; text-shadow: 0 0 12px rgba(244, 114, 182, 0.6); }

.nav-btn .nav-btn-ico {
    font-size: 1rem;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));
}

/* ------------------------------------------------------------
   3. HERO DEL PORTAL PRIMARIA — Ciudad y Pista de Carreras
   ------------------------------------------------------------ */
.portal-hero {
    position: relative;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: calc(var(--header-h) + 60px) 24px 80px;
    overflow: hidden;
}

.hero-primaria {
    background: var(--bg-ciudad);
}

.portal-hero-bg {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
}

.portal-hero-bg .layer {
    position: absolute;
    inset: 0;
}

/* Capas del fondo */
.portal-hero-bg .layer-sky       { z-index: 1; }
.portal-hero-bg .layer-mountains { z-index: 2; }
.portal-hero-bg .layer-trees     { z-index: 3; }
.portal-hero-bg .layer-deco      { z-index: 4; }
.portal-hero-bg .layer-ground    { z-index: 5; }

/* Sol urbano */
.sun-primaria {
    position: absolute;
    top: 8%;
    right: 10%;
    width: 130px;
    height: 130px;
    border-radius: 50%;
    background: radial-gradient(circle, #fff7b0 0%, #ffb347 50%, #ff7e3a 100%);
    box-shadow:
        0 0 70px #ffb347,
        0 0 140px rgba(255, 140, 66, 0.55),
        0 0 200px rgba(255, 126, 58, 0.35);
    animation: sunGlowPrimaria 6s ease-in-out infinite;
}
.sun-primaria .sun-rays {
    position: absolute;
    inset: -25px;
    border-radius: 50%;
    background: conic-gradient(from 0deg,
        transparent 0%,
        rgba(255, 200, 130, 0.5) 12%,
        transparent 25%,
        rgba(255, 200, 130, 0.4) 37%,
        transparent 50%,
        rgba(255, 200, 130, 0.5) 62%,
        transparent 75%,
        rgba(255, 200, 130, 0.4) 87%,
        transparent 100%);
    animation: sunRaysPrimaria 20s linear infinite;
}
@keyframes sunGlowPrimaria {
    0%, 100% { transform: scale(1); filter: brightness(1); }
    50% { transform: scale(1.06); filter: brightness(1.12); }
}
@keyframes sunRaysPrimaria {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* Líneas de velocidad en el cielo */
.speed-lines {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.5) 45%, transparent 50%),
        linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.4) 45%, transparent 50%);
    background-size: 400px 2px, 300px 2px;
    background-position: 0 20%, 200px 40%;
    background-repeat: repeat-x;
    opacity: 0.5;
    animation: speedLines 3s linear infinite;
    pointer-events: none;
}
@keyframes speedLines {
    from { background-position: 0 20%, 200px 40%; }
    to   { background-position: 400px 20%, 500px 40%; }
}

/* Nubes del hero */
.hero-primaria .cloud {
    position: absolute;
    background: #ffffff;
    border-radius: 50%;
    opacity: 0.75;
    box-shadow:
        40px 12px 0 -6px #fff,
        80px 2px 0 -10px #fff,
        -40px 8px 0 -6px #fff;
    filter: drop-shadow(0 8px 20px rgba(148, 163, 184, 0.2));
}
.hero-primaria .cloud-1 { width: 100px; height: 52px; top: 12%; left: -12%; animation: cloudMove 50s linear infinite; }
.hero-primaria .cloud-2 { width: 130px; height: 66px; top: 26%; left: -22%; animation: cloudMove 68s linear infinite 5s; opacity: 0.65; }
.hero-primaria .cloud-3 { width: 80px;  height: 42px; top: 42%; left: -18%; animation: cloudMove 58s linear infinite 10s; opacity: 0.55; }

/* Skyline doble */
.city-skyline-back {
    position: absolute;
    bottom: 28%; left: 0; right: 0;
    height: 200px;
    background-image:
        linear-gradient(90deg,
            transparent 0 3%, #4a6a92 3% 6%, transparent 6% 9%,
            #3d5a80 9% 14%, transparent 14% 17%, #4a6a92 17% 22%,
            transparent 22% 26%, #3d5a80 26% 32%, transparent 32% 36%,
            #4a6a92 36% 42%, transparent 42% 46%, #3d5a80 46% 52%,
            transparent 52% 56%, #4a6a92 56% 62%, transparent 62% 66%,
            #3d5a80 66% 72%, transparent 72% 76%, #4a6a92 76% 82%,
            transparent 82% 86%, #3d5a80 86% 92%, transparent 92%);
    opacity: 0.6;
}

.city-skyline-front {
    position: absolute;
    bottom: 22%; left: 0; right: 0;
    height: 240px;
    background-color: #1f2a44;
    background-image:
        linear-gradient(90deg,
            transparent 0 5%, #1f2a44 5% 12%, transparent 12% 17%,
            #2b3f60 17% 26%, transparent 26% 32%, #1f2a44 32% 42%,
            transparent 42% 48%, #2b3f60 48% 58%, transparent 58% 64%,
            #1f2a44 64% 74%, transparent 74% 80%, #2b3f60 80% 90%, transparent 90%);
    background-blend-mode: screen;
    box-shadow: 0 -10px 40px rgba(15, 23, 42, 0.4);
}
.city-skyline-front::before {
    content: "";
    position: absolute;
    inset: 24px 0 0;
    background-image:
        radial-gradient(circle, #ffe066 1.5px, transparent 2px),
        radial-gradient(circle, #ffd93d 1px, transparent 1.5px);
    background-size: 28px 28px, 18px 18px;
    background-position: 0 0, 10px 10px;
    opacity: 0.55;
    animation: lightsBlink 4s ease-in-out infinite;
}
@keyframes lightsBlink {
    0%, 100% { opacity: 0.5; }
    50% { opacity: 0.85; }
}

/* Semáforo */
.traffic-light {
    position: absolute;
    bottom: 24%; left: 8%;
    width: 36px;
    padding: 7px;
    border-radius: 14px;
    background: linear-gradient(180deg, #1f2937, #0f172a);
    border: 2px solid #334155;
    display: flex;
    flex-direction: column;
    gap: 5px;
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.35);
    z-index: 3;
}
.traffic-light span {
    width: 100%;
    aspect-ratio: 1;
    border-radius: 50%;
    box-shadow: inset 0 -2px 4px rgba(0, 0, 0, 0.4);
}
.tl-red    { background: radial-gradient(circle at 35% 30%, #ff8a80, #b71c1c); }
.tl-yellow { background: radial-gradient(circle at 35% 30%, #fff59d, #f57f17); }
.tl-green  {
    background: radial-gradient(circle at 35% 30%, #a5d6a7, #1b5e20);
    box-shadow: 0 0 14px #4caf50, inset 0 -2px 4px rgba(0, 0, 0, 0.4);
    animation: greenGlow 2s ease-in-out infinite;
}
@keyframes greenGlow {
    0%, 100% { box-shadow: 0 0 8px #4caf50, inset 0 -2px 4px rgba(0, 0, 0, 0.4); }
    50% { box-shadow: 0 0 22px #4caf50, 0 0 32px #4caf50, inset 0 -2px 4px rgba(0, 0, 0, 0.4); }
}

/* Señales viales SVG */
.road-sign {
    position: absolute;
    bottom: 34%;
    width: 60px;
    height: 60px;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    filter: drop-shadow(0 6px 12px rgba(0, 0, 0, 0.4));
    animation: signBounce 3s ease-in-out infinite;
    pointer-events: none;
    z-index: 3;
}
.sign-1 {
    left: 18%;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 54 54'><polygon points='27,4 50,27 27,50 4,27' fill='%23ffd93d' stroke='%232b2b2b' stroke-width='2.5' stroke-linejoin='round'/><circle cx='27' cy='18' r='3.2' fill='%232b2b2b'/><path d='M27 22v10M21 30l6-4 6 4M21 38l6-5 6 5' stroke='%232b2b2b' stroke-width='2.2' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}
.sign-2 {
    right: 22%;
    animation-delay: 1.5s;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 54 54'><circle cx='27' cy='27' r='23' fill='%232563eb' stroke='%23ffffff' stroke-width='2.5'/><path d='M27 41V15M18 24l9-9 9 9' stroke='%23ffffff' stroke-width='4' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}
@keyframes signBounce {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

/* Árboles urbanos */
.urban-tree {
    position: absolute;
    bottom: 26%;
    width: 14px;
    height: 110px;
    background: linear-gradient(90deg, #4a2a14, #6b4423 50%, #4a2a14);
    border-radius: 7px;
    box-shadow: inset -3px 0 0 rgba(0, 0, 0, 0.3);
    z-index: 3;
}
.urban-tree::before {
    content: "";
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    width: 110px;
    height: 110px;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 30%, #a8e08a, #6fb356 60%, #3d8b3d);
    box-shadow: 0 12px 26px rgba(60, 120, 60, 0.4);
}
.ut-1 { left: 28%; }
.ut-2 { right: 28%; height: 130px; }

/* Banderas a cuadros y partículas de velocidad */
.checkered-flag {
    position: absolute;
    width: 60px;
    height: 40px;
    background-image:
        linear-gradient(45deg, #000 25%, transparent 25%, transparent 75%, #000 75%),
        linear-gradient(45deg, #000 25%, #fff 25%, #fff 75%, #000 75%);
    background-size: 15px 15px;
    background-position: 0 0, 7.5px 7.5px;
    border-radius: 4px;
    box-shadow: 0 6px 14px rgba(0, 0, 0, 0.35);
    z-index: 4;
    opacity: 0.9;
}
.flag-1 {
    top: 20%; left: 4%;
    animation: flagWave 2.5s ease-in-out infinite;
    transform-origin: right center;
}
.flag-2 {
    top: 30%; right: 5%;
    animation: flagWave 2.5s ease-in-out infinite .5s;
    transform-origin: left center;
}
@keyframes flagWave {
    0%, 100% { transform: rotate(-8deg) translateY(0); }
    50% { transform: rotate(8deg) translateY(-6px); }
}

.speed-particle {
    position: absolute;
    font-size: 2rem;
    z-index: 4;
    filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.25));
    opacity: 0.85;
    pointer-events: none;
}
.sp-1 {
    top: 55%; left: 6%;
    animation: speedParticle 3s ease-in-out infinite;
}
.sp-2 {
    top: 70%; right: 8%;
    animation: speedParticle 3.5s ease-in-out infinite 1s;
}
.sp-3 {
    top: 35%; left: 82%;
    font-size: 1.6rem;
    animation: speedParticle 2.8s ease-in-out infinite .5s;
}
@keyframes speedParticle {
    0%, 100% { transform: translate(0, 0) rotate(-10deg); opacity: 0.5; }
    50% { transform: translate(15px, -8px) rotate(10deg); opacity: 1; }
}

/* Pista de carreras */
.sidewalk {
    position: absolute;
    bottom: 22%; left: 0; right: 0;
    height: 36px;
    background: repeating-linear-gradient(90deg, #94a3b8 0 80px, #64748b 80px 84px);
    box-shadow: inset 0 6px 12px rgba(0, 0, 0, 0.2), inset 0 -6px 12px rgba(0, 0, 0, 0.25);
}
.road {
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 22%;
    background: linear-gradient(180deg, #4a5568 0%, #2d3748 60%, #1a2332 100%);
    box-shadow: inset 0 8px 20px rgba(0, 0, 0, 0.5);
}
.road-lines {
    position: absolute;
    top: 50%;
    left: 0; right: 0;
    height: 8px;
    background: repeating-linear-gradient(90deg, #ffe066 0 70px, transparent 70px 140px);
    transform: translateY(-50%);
    animation: roadMove 2.2s linear infinite;
    box-shadow: 0 0 12px rgba(255, 224, 102, 0.6);
}
@keyframes roadMove {
    from { background-position: 0 0; }
    to { background-position: 140px 0; }
}
.starting-line {
    position: absolute;
    bottom: 12%; left: 0; right: 0;
    height: 20px;
    background-image:
        linear-gradient(45deg, #000 25%, transparent 25%, transparent 75%, #000 75%),
        linear-gradient(45deg, #000 25%, #fff 25%, #fff 75%, #000 75%);
    background-size: 20px 20px;
    background-position: 0 0, 10px 10px;
    opacity: 0.85;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
    animation: startLineFade 3s ease-in-out infinite;
}
@keyframes startLineFade {
    0%, 100% { opacity: 0.85; }
    50% { opacity: 1; }
}

/* ------------------------------------------------------------
   4. CONTENIDO DEL HERO — Robot (imagen real) + Texto
   ------------------------------------------------------------ */
.portal-hero-content {
    position: relative;
    z-index: 10;
    width: 100%;
    max-width: 1200px;
    display: grid;
    grid-template-columns: 1fr 1.15fr;
    gap: 60px;
    align-items: center;
    margin-bottom: 40px;
}

.hero-character {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 420px;
}

/* Plataforma bajo el robot (asfalto) */
.character-platform {
    position: absolute;
    bottom: 8%;
    left: 50%;
    transform: translateX(-50%);
    width: 70%;
    max-width: 320px;
    height: 50px;
    border-radius: 50%;
    z-index: 1;
}
.platform-road {
    background: radial-gradient(ellipse, rgba(15, 23, 42, 0.6), rgba(100, 116, 139, 0.2) 60%, transparent 70%);
    filter: blur(12px);
    animation: platformBreath 4s ease-in-out infinite;
}
@keyframes platformBreath {
    0%, 100% { transform: translateX(-50%) scale(1); opacity: 0.85; }
    50% { transform: translateX(-50%) scale(1.08); opacity: 1; }
}

/* Escenario del robot */
.hero-character .robot-display {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 380px;
    aspect-ratio: 1 / 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ✨ Aura naranja pulsante detrás de la imagen */
.hero-character .robot-display::before {
    content: "";
    position: absolute;
    inset: -5%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 140, 66, 0.55) 0%, transparent 65%);
    filter: blur(30px);
    z-index: 0;
    animation: robotAura 4s ease-in-out infinite;
    pointer-events: none;
}
@keyframes robotAura {
    0%, 100% { transform: scale(1); opacity: 0.7; }
    50% { transform: scale(1.08); opacity: 1; }
}

/* 🖼️ Imagen real del robot con flotación personalizada */
.hero-character .robot-img {
    position: relative;
    z-index: 2;
    width: 100%;
    height: 100%;
    object-fit: contain;
    filter: drop-shadow(0 22px 40px rgba(15, 23, 42, 0.35))
            drop-shadow(0 0 20px rgba(255, 140, 66, 0.3));
    animation: robotFloatPortal 4.5s ease-in-out infinite;
    user-select: none;
    -webkit-user-drag: none;
    pointer-events: none;
    transition: transform var(--t-mid, 0.35s ease), filter var(--t-mid, 0.35s ease);
}
@keyframes robotFloatPortal {
    0%, 100% { transform: translateY(0) rotate(-1.5deg) scale(1); }
    50% { transform: translateY(-16px) rotate(1.5deg) scale(1.02); }
}

.hero-character:hover .robot-img {
    filter: drop-shadow(0 26px 50px rgba(15, 23, 42, 0.4))
            drop-shadow(0 0 35px rgba(255, 140, 66, 0.55));
    transform: scale(1.04);
}

/* Anillo decorativo girando */
.hero-character .robot-display::after {
    content: "";
    position: absolute;
    inset: 2%;
    border-radius: 50%;
    border: 2px dashed rgba(255, 140, 66, 0.45);
    z-index: 1;
    animation: ringSpin 30s linear infinite;
    pointer-events: none;
}
@keyframes ringSpin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* ------------------------------------------------------------
   5. HERO TEXTO (lado derecho)
   ------------------------------------------------------------ */
.hero-text {
    text-align: left;
    color: var(--c-texto-principal);
}

.hero-badge-primaria {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 8px 20px;
    border-radius: var(--r-full);
    background: rgba(255, 255, 255, 0.8);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 140, 66, 0.5);
    color: #b54a0c;
    font-family: var(--font-title);
    font-weight: 600;
    font-size: 0.85rem;
    letter-spacing: 0.04em;
    box-shadow: 0 6px 18px rgba(255, 140, 66, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.9);
    margin-bottom: 22px;
}
.hero-badge-primaria .badge-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: linear-gradient(135deg, #ffb347, #ff7e3a);
    box-shadow: 0 0 10px rgba(255, 140, 66, 0.8);
    animation: badgeDot 2s ease-in-out infinite;
}
@keyframes badgeDot {
    0%, 100% { transform: scale(1); opacity: 0.85; }
    50% { transform: scale(1.35); opacity: 1; }
}

.portal-hero-title {
    font-family: var(--font-title);
    font-size: clamp(2.4rem, 5vw, 4.2rem);
    font-weight: 700;
    line-height: 1;
    letter-spacing: -0.02em;
    margin-bottom: 22px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.portal-hero-title-line:first-child {
    color: #1e293b;
}
.portal-hero-title-accent {
    background: linear-gradient(120deg, #ffb347 0%, #ff8c42 40%, #d96a1e 100%);
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    filter: drop-shadow(0 6px 22px rgba(255, 140, 66, 0.5));
    animation: titleShimmer 5s ease infinite;
}
@keyframes titleShimmer {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

/* Burbuja de diálogo */
.rugged-dialogue {
    position: relative;
    display: inline-block;
    max-width: 100%;
    padding: 18px 26px;
    margin-bottom: 24px;
    border-radius: 24px;
    background: #ffffff;
    box-shadow:
        0 14px 34px rgba(255, 140, 66, 0.28),
        inset 0 1px 0 rgba(255, 255, 255, 1);
    border: 2px solid rgba(255, 140, 66, 0.45);
}
.rugged-dialogue {
    background: linear-gradient(160deg, #ffffff 0%, #fff4e6 100%);
}
.rugged-dialogue-tail {
    position: absolute;
    left: -12px;
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
    width: 22px;
    height: 22px;
    background: inherit;
    border-left: 2px solid rgba(255, 140, 66, 0.45);
    border-bottom: 2px solid rgba(255, 140, 66, 0.45);
    border-radius: 0 0 0 6px;
}
.rugged-dialogue-text {
    font-family: var(--font-title);
    font-size: 1.1rem;
    font-weight: 500;
    color: #b54a0c;
    line-height: 1.4;
    position: relative;
    z-index: 2;
}

.portal-hero-subtitle {
    font-size: 1.15rem;
    color: #475569;
    font-weight: 600;
    margin-bottom: 32px;
    font-style: italic;
}

.hero-actions { display: flex; gap: 16px; flex-wrap: wrap; }

/* Botón del hero Primaria */
.btn-hero-primaria {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    padding: 20px 42px;
    border-radius: var(--r-full);
    font-family: var(--font-title);
    font-size: 1.15rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: #ffffff;
    background: linear-gradient(135deg, #ffb347 0%, #ff8c42 55%, #d96a1e 100%);
    box-shadow:
        0 18px 40px rgba(255, 140, 66, 0.55),
        inset 0 -4px 0 rgba(0, 0, 0, 0.2),
        inset 0 4px 0 rgba(255, 255, 255, 0.35);
    text-decoration: none;
    position: relative;
    overflow: hidden;
    transition: transform var(--t-mid), box-shadow var(--t-mid), filter var(--t-fast);
}
.btn-hero-primaria .btn-icon {
    font-size: 1.4rem;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.25));
}
.btn-hero-primaria:hover {
    transform: translateY(-3px) scale(1.02);
    filter: brightness(1.06);
    box-shadow:
        0 24px 50px rgba(217, 106, 30, 0.55),
        inset 0 -4px 0 rgba(0, 0, 0, 0.2),
        inset 0 4px 0 rgba(255, 255, 255, 0.4);
}
.btn-hero-primaria:active {
    transform: translateY(1px) scale(0.98);
}
.btn-hero-primaria .btn-glow {
    position: absolute;
    inset: -2px;
    border-radius: inherit;
    background: linear-gradient(135deg, #ffb347, #d96a1e);
    filter: blur(18px);
    opacity: 0.6;
    z-index: -1;
}

/* Scroll hint */
.hero-primaria .scroll-hint,
.scroll-hint {
    position: absolute;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 10;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}
.scroll-txt {
    font-family: var(--font-title);
    font-size: 0.75rem;
    letter-spacing: 0.2em;
    color: #64748b;
    text-transform: uppercase;
    font-weight: 600;
}
.scroll-mouse {
    width: 24px;
    height: 40px;
    border-radius: 14px;
    border: 2px solid rgba(100, 116, 139, 0.5);
    position: relative;
    background: rgba(255, 255, 255, 0.6);
}
.scroll-wheel {
    position: absolute;
    top: 6px;
    left: 50%;
    transform: translateX(-50%);
    width: 4px; height: 8px;
    border-radius: 2px;
    background: linear-gradient(180deg, #ff8c42, #d96a1e);
    animation: scrollWheel 1.8s ease-in-out infinite;
}
@keyframes scrollWheel {
    0%, 100% { transform: translate(-50%, 0); opacity: 1; }
    50% { transform: translate(-50%, 8px); opacity: 0.3; }
}

/* ------------------------------------------------------------
   6. ÁREA DE JUEGOS
   ------------------------------------------------------------ */
.games-area {
    position: relative;
    padding: 90px 40px 80px;
    background: var(--bg-games);
    scroll-margin-top: calc(var(--header-h) + 20px);
}

.games-header {
    text-align: center;
    max-width: 720px;
    margin: 0 auto 48px;
}

.section-title {
    font-family: var(--font-title);
    font-size: clamp(1.9rem, 3.4vw, 2.6rem);
    font-weight: 700;
    color: #1e293b;
    display: inline-flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 14px;
}
.section-title-ico {
    font-size: 1.2em;
    filter: drop-shadow(0 4px 12px rgba(255, 140, 66, 0.5));
    animation: iconBounce 2.5s ease-in-out infinite;
}
@keyframes iconBounce {
    0%, 100% { transform: translateY(0) rotate(-4deg); }
    50% { transform: translateY(-6px) rotate(4deg); }
}
.section-title-txt {
    background: linear-gradient(120deg, #1e293b 0%, #ff8c42 50%, #d96a1e 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    letter-spacing: -0.01em;
}

.section-subtitle {
    font-size: 1.05rem;
    font-weight: 600;
    color: #475569;
    line-height: 1.6;
    max-width: 600px;
    margin: 0 auto;
}

/* ------------------------------------------------------------
   7. FILTROS POR CATEGORÍA
   ------------------------------------------------------------ */
.filters {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    max-width: 1100px;
    margin: 0 auto 56px;
    padding: 10px;
    background: rgba(255, 255, 255, 0.75);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.9);
    border-radius: var(--r-full);
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9);
}

.filter-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    border-radius: var(--r-full);
    font-family: var(--font-title);
    font-size: 0.9rem;
    font-weight: 600;
    color: #475569;
    background: rgba(255, 255, 255, 0.7);
    border: 2px solid transparent;
    transition: transform var(--t-fast), background var(--t-fast), color var(--t-fast), box-shadow var(--t-fast), border-color var(--t-fast);
    cursor: pointer;
    white-space: nowrap;
    min-height: 42px;
}
.filter-btn:hover {
    transform: translateY(-2px);
    color: #b54a0c;
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.1);
}
.filter-btn.is-active {
    background: linear-gradient(135deg, #ffb347 0%, #ff8c42 100%);
    color: #ffffff;
    border-color: rgba(255, 140, 66, 0.4);
    box-shadow:
        0 10px 24px rgba(255, 140, 66, 0.45),
        inset 0 -3px 0 rgba(0, 0, 0, 0.15),
        inset 0 3px 0 rgba(255, 255, 255, 0.35);
    font-weight: 700;
}

.filter-ico { font-size: 1.05rem; line-height: 1; }
.filter-txt { font-weight: inherit; }

.filter-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 22px;
    padding: 0 7px;
    border-radius: var(--r-full);
    background: rgba(15, 23, 42, 0.1);
    font-size: 0.72rem;
    font-weight: 800;
    color: currentColor;
    transition: background var(--t-fast);
}
.filter-btn.is-active .filter-count {
    background: rgba(255, 255, 255, 0.35);
    color: #ffffff;
}

/* ------------------------------------------------------------
   8. SECCIONES DE JUEGOS
   ------------------------------------------------------------ */
.games-section {
    max-width: 1400px;
    margin: 0 auto 70px;
    padding: 0;
    transition: opacity var(--t-mid), transform var(--t-mid);
}
.games-section.is-hidden { display: none; }

.games-section-head {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 22px 30px;
    border-radius: var(--r-lg);
    margin-bottom: 32px;
    background: var(--sec-bg, #ffffff);
    border: 1px solid rgba(255, 255, 255, 0.9);
    box-shadow:
        0 14px 34px rgba(15, 23, 42, 0.06),
        inset 0 1px 0 rgba(255, 255, 255, 0.9);
    position: relative;
    overflow: hidden;
}
.games-section-head::before {
    content: "";
    position: absolute;
    top: 0; left: 0; bottom: 0;
    width: 6px;
    background: linear-gradient(180deg, var(--sec-c1, #ff8c42), var(--sec-c2, #d96a1e));
}

/* Colores por sección */
.games-section-matematicas .games-section-head {
    --sec-bg: var(--sec-matematicas-bg);
    --sec-c1: var(--sec-matematicas-1);
    --sec-c2: var(--sec-matematicas-2);
}
.games-section-lenguaje .games-section-head {
    --sec-bg: var(--sec-lenguaje-bg);
    --sec-c1: var(--sec-lenguaje-1);
    --sec-c2: var(--sec-lenguaje-2);
}
.games-section-ciencias .games-section-head {
    --sec-bg: var(--sec-ciencias-bg);
    --sec-c1: var(--sec-ciencias-1);
    --sec-c2: var(--sec-ciencias-2);
}
.games-section-logica .games-section-head {
    --sec-bg: var(--sec-logica-bg);
    --sec-c1: var(--sec-logica-1);
    --sec-c2: var(--sec-logica-2);
}
.games-section-retos .games-section-head {
    --sec-bg: var(--sec-retos-bg);
    --sec-c1: var(--sec-retos-1);
    --sec-c2: var(--sec-retos-2);
}

.games-section-ico {
    flex-shrink: 0;
    width: 64px;
    height: 64px;
    border-radius: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.9rem;
    background: linear-gradient(135deg, var(--sec-c1, #ff8c42), var(--sec-c2, #d96a1e));
    box-shadow:
        0 12px 26px rgba(15, 23, 42, 0.15),
        inset 0 -3px 0 rgba(0, 0, 0, 0.15),
        inset 0 3px 0 rgba(255, 255, 255, 0.35);
    color: #ffffff;
    animation: secIcoFloat 4s ease-in-out infinite;
}
@keyframes secIcoFloat {
    0%, 100% { transform: translateY(0) rotate(0); }
    50% { transform: translateY(-4px) rotate(-3deg); }
}

.games-section-info { flex: 1; min-width: 0; }

.games-section-title {
    font-family: var(--font-title);
    font-size: 1.55rem;
    font-weight: 700;
    color: #0f172a;
    margin-bottom: 4px;
    letter-spacing: -0.01em;
}

.games-section-desc {
    font-size: 0.92rem;
    font-weight: 600;
    color: #64748b;
    line-height: 1.4;
}

.games-section-count {
    flex-shrink: 0;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 8px 18px;
    border-radius: var(--r-full);
    background: rgba(255, 255, 255, 0.75);
    box-shadow: 0 6px 16px rgba(15, 23, 42, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9);
    font-family: var(--font-title);
}
.games-section-count-num {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--sec-c2, #d96a1e);
    line-height: 1;
}
.games-section-count-txt {
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #94a3b8;
}

/* ------------------------------------------------------------
   9. GRID DE JUEGOS
   ------------------------------------------------------------ */
.games-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}

/* ------------------------------------------------------------
   10. TARJETA DE JUEGO (con toque racing)
   ------------------------------------------------------------ */
.game-card {
    position: relative;
    border-radius: var(--r-lg);
    background: #ffffff;
    border: 1px solid rgba(15, 23, 42, 0.06);
    box-shadow:
        0 10px 26px rgba(15, 23, 42, 0.08),
        inset 0 1px 0 rgba(255, 255, 255, 1);
    overflow: hidden;
    transition: transform var(--t-mid), box-shadow var(--t-mid), border-color var(--t-mid);
    isolation: isolate;
}
.game-card:hover {
    transform: translateY(-8px);
    box-shadow:
        0 22px 50px rgba(255, 140, 66, 0.2),
        inset 0 1px 0 rgba(255, 255, 255, 1);
}
.game-card:focus-within {
    outline: 3px solid var(--ray-color-1);
    outline-offset: 3px;
}

.game-card-link {
    display: flex;
    flex-direction: column;
    height: 100%;
    text-decoration: none;
    color: inherit;
}

/* Miniatura */
.game-card-thumb {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: #f1f5f9;
    display: flex;
    align-items: center;
    justify-content: center;
}
.game-thumb-img {
    position: relative;
    z-index: 2;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--t-slow);
}
.game-card:hover .game-thumb-img {
    transform: scale(1.08) rotate(1deg);
}
.game-thumb-bg {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(135deg, #fff0d8, #e0edff);
    opacity: 0;
    transition: opacity var(--t-mid);
}
.game-card:hover .game-thumb-bg { opacity: 1; }

/* Fondos de reserva por categoría */
.thumb-matematicas { background: linear-gradient(135deg, #fff0d8, #ffe0b8); }
.thumb-lenguaje    { background: linear-gradient(135deg, #e0edff, #c8d9f5); }
.thumb-ciencias    { background: linear-gradient(135deg, #e0ffe0, #c8f0c8); }
.thumb-logica      { background: linear-gradient(135deg, #f0e0ff, #e0c8ff); }
.thumb-retos       { background: linear-gradient(135deg, #fff9d8, #fff0b8); }

/* Badge numerado (estilo racing) */
.game-number {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 4;
    width: 38px;
    height: 38px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-title);
    font-size: 0.95rem;
    font-weight: 800;
    font-style: italic;
    background: linear-gradient(135deg, #1e293b, #0f172a);
    color: #ffffff;
    box-shadow:
        0 6px 14px rgba(15, 23, 42, 0.35),
        inset 0 -2px 0 rgba(0, 0, 0, 0.3),
        inset 0 2px 0 rgba(255, 255, 255, 0.15);
    letter-spacing: -0.05em;
}

/* Badge "NUEVO" */
.game-badge-new {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 4;
    padding: 5px 12px;
    border-radius: var(--r-full);
    font-family: var(--font-title);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #ffffff;
    background: linear-gradient(135deg, #ff8c42, #d96a1e);
    box-shadow:
        0 6px 14px rgba(255, 140, 66, 0.55),
        inset 0 2px 0 rgba(255, 255, 255, 0.4),
        inset 0 -2px 0 rgba(0, 0, 0, 0.15);
    animation: newBadgePulse 2.2s ease-in-out infinite;
}
@keyframes newBadgePulse {
    0%, 100% { transform: scale(1); box-shadow: 0 6px 14px rgba(255, 140, 66, 0.55), inset 0 2px 0 rgba(255,255,255,.4); }
    50%      { transform: scale(1.06); box-shadow: 0 8px 22px rgba(255, 140, 66, 0.85), 0 0 30px rgba(255, 140, 66, 0.45), inset 0 2px 0 rgba(255,255,255,.5); }
}

/* Badge "CAMPEONATO" (reto final) */
.game-badge-featured {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 4;
    padding: 6px 14px;
    border-radius: var(--r-full);
    font-family: var(--font-title);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #3d1f00;
    background: linear-gradient(135deg, #ffd93d 0%, #f7c948 100%);
    box-shadow:
        0 8px 20px rgba(247, 201, 72, 0.6),
        0 0 30px rgba(255, 217, 61, 0.5),
        inset 0 2px 0 rgba(255, 255, 255, 0.5),
        inset 0 -2px 0 rgba(0, 0, 0, 0.15);
    animation: featuredGlow 2.5s ease-in-out infinite;
}
@keyframes featuredGlow {
    0%, 100% { transform: scale(1); filter: brightness(1); }
    50%      { transform: scale(1.05); filter: brightness(1.12); }
}

/* Dificultad */
.game-difficulty {
    position: absolute;
    bottom: 12px;
    left: 12px;
    z-index: 4;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border-radius: var(--r-full);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    backdrop-filter: blur(10px);
    box-shadow: 0 6px 14px rgba(15, 23, 42, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.5);
}
.diff-dot {
    width: 7px; height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
}

.difficulty-facil {
    background: rgba(126, 217, 87, 0.95);
    color: #0b3b1f;
}
.difficulty-facil .diff-dot {
    background: #4a9e3a;
    box-shadow: 0 0 8px #4a9e3a;
    animation: diffPulse 1.8s ease-in-out infinite;
}
.difficulty-medio {
    background: rgba(255, 184, 0, 0.95);
    color: #3d1f00;
}
.difficulty-medio .diff-dot {
    background: #d97706;
    box-shadow: 0 0 8px #d97706;
    animation: diffPulse 1.5s ease-in-out infinite;
}
.difficulty-dificil {
    background: rgba(239, 68, 68, 0.95);
    color: #ffffff;
}
.difficulty-dificil .diff-dot {
    background: #ffffff;
    box-shadow: 0 0 10px #ffffff;
    animation: diffPulse 1.2s ease-in-out infinite;
}
@keyframes diffPulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.4); opacity: 0.7; }
}

/* Cuerpo de la tarjeta */
.game-card-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 18px 20px 20px;
    gap: 10px;
}

.game-card-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 2px;
}

.game-category-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    border-radius: var(--r-full);
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    white-space: nowrap;
}
.tag-matematicas { background: rgba(255, 140, 66, 0.15); color: #b54a0c; }
.tag-lenguaje    { background: rgba(43, 94, 156, 0.15); color: #1c3d6b; }
.tag-ciencias    { background: rgba(76, 175, 80, 0.15); color: #2e7d32; }
.tag-logica      { background: rgba(124, 58, 237, 0.15); color: #5b21b6; }
.tag-retos       { background: rgba(247, 201, 72, 0.25); color: #8a6400; }

.game-age {
    font-size: 0.7rem;
    font-weight: 700;
    color: #94a3b8;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.game-title {
    font-family: var(--font-title);
    font-size: 1.1rem;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.2;
    letter-spacing: -0.01em;
}

.game-desc {
    font-size: 0.85rem;
    font-weight: 600;
    color: #64748b;
    line-height: 1.5;
    flex: 1;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
}

.game-card-bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: 4px;
    padding-top: 12px;
    border-top: 1px dashed rgba(15, 23, 42, 0.08);
}

/* Rating */
.game-rating {
    display: inline-flex;
    gap: 2px;
    font-size: 0.95rem;
    line-height: 1;
}
.star {
    color: #cbd5e1;
    transition: color var(--t-fast), transform var(--t-fast);
}
.star.is-filled {
    color: #ff8c42;
    filter: drop-shadow(0 2px 4px rgba(255, 140, 66, 0.4));
}
.game-card:hover .star.is-filled {
    transform: scale(1.08);
}

/* Botón "Jugar" */
.game-play {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border-radius: var(--r-full);
    font-family: var(--font-title);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: #ffffff;
    background: linear-gradient(135deg, #ff8c42, #d96a1e);
    box-shadow:
        0 8px 18px rgba(255, 140, 66, 0.4),
        inset 0 -2px 0 rgba(0, 0, 0, 0.2),
        inset 0 2px 0 rgba(255, 255, 255, 0.3);
    transition: transform var(--t-fast), box-shadow var(--t-fast), filter var(--t-fast);
}
.game-play-ico {
    font-size: 0.72rem;
    line-height: 1;
}
.game-card:hover .game-play {
    transform: scale(1.06);
    filter: brightness(1.08);
    box-shadow:
        0 12px 24px rgba(255, 140, 66, 0.55),
        inset 0 -2px 0 rgba(0, 0, 0, 0.2),
        inset 0 2px 0 rgba(255, 255, 255, 0.4);
}

/* Colores del botón por categoría */
.game-card[data-category="matematicas"] .game-play {
    background: linear-gradient(135deg, #ff8c42, #d96a1e);
    box-shadow: 0 8px 18px rgba(255, 140, 66, 0.4), inset 0 -2px 0 rgba(0,0,0,.2), inset 0 2px 0 rgba(255,255,255,.3);
}
.game-card[data-category="lenguaje"] .game-play {
    background: linear-gradient(135deg, #2b5e9c, #1c3d6b);
    box-shadow: 0 8px 18px rgba(43, 94, 156, 0.4), inset 0 -2px 0 rgba(0,0,0,.2), inset 0 2px 0 rgba(255,255,255,.3);
}
.game-card[data-category="ciencias"] .game-play {
    background: linear-gradient(135deg, #4caf50, #2e7d32);
    box-shadow: 0 8px 18px rgba(76, 175, 80, 0.4), inset 0 -2px 0 rgba(0,0,0,.2), inset 0 2px 0 rgba(255,255,255,.3);
}
.game-card[data-category="logica"] .game-play {
    background: linear-gradient(135deg, #7c3aed, #5b21b6);
    box-shadow: 0 8px 18px rgba(124, 58, 237, 0.4), inset 0 -2px 0 rgba(0,0,0,.2), inset 0 2px 0 rgba(255,255,255,.3);
}
.game-card[data-category="retos"] .game-play {
    background: linear-gradient(135deg, #f7c948, #d9a51f);
    color: #3d1f00;
    box-shadow: 0 8px 18px rgba(247, 201, 72, 0.5), inset 0 -2px 0 rgba(0,0,0,.2), inset 0 2px 0 rgba(255,255,255,.4);
}

/* Tarjeta destacada (CAMPEONATO) */
.game-card-featured {
    background: linear-gradient(160deg, #ffffff 0%, #fffef0 100%);
    border-color: rgba(247, 201, 72, 0.4);
    box-shadow:
        0 14px 34px rgba(247, 201, 72, 0.2),
        inset 0 1px 0 rgba(255, 255, 255, 1);
}
.game-card-featured:hover {
    box-shadow:
        0 26px 60px rgba(247, 201, 72, 0.35),
        0 0 40px rgba(255, 217, 61, 0.25),
        inset 0 1px 0 rgba(255, 255, 255, 1);
    border-color: rgba(247, 201, 72, 0.6);
}
.game-card-featured .game-card-thumb {
    background: linear-gradient(135deg, #fff9d8, #fff0b8);
}

/* Brillo animado en tarjetas NUEVO */
.game-card-new .game-card-thumb::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 3;
    background: linear-gradient(120deg, transparent 30%, rgba(255, 140, 66, 0.35) 50%, transparent 70%);
    background-size: 200% 100%;
    animation: newCardShine 4s ease-in-out infinite;
    pointer-events: none;
}
@keyframes newCardShine {
    0%   { background-position: 200% 0; }
    100% { background-position: -100% 0; }
}

/* ------------------------------------------------------------
   11. MENSAJE DE VACÍO
   ------------------------------------------------------------ */
.games-empty {
    text-align: center;
    padding: 60px 24px;
    max-width: 480px;
    margin: 40px auto;
}
.games-empty-ico {
    font-size: 4rem;
    display: block;
    margin-bottom: 16px;
    filter: drop-shadow(0 8px 20px rgba(15, 23, 42, 0.15));
}
.games-empty-txt {
    font-family: var(--font-title);
    font-size: 1.15rem;
    font-weight: 600;
    color: #64748b;
    margin-bottom: 24px;
}

.btn-show-all {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 28px;
    border-radius: var(--r-full);
    font-family: var(--font-title);
    font-size: 1rem;
    font-weight: 700;
    color: #ffffff;
    background: linear-gradient(135deg, #ff8c42, #d96a1e);
    box-shadow: 0 12px 28px rgba(255, 140, 66, 0.45), inset 0 -3px 0 rgba(0,0,0,.2), inset 0 3px 0 rgba(255,255,255,.3);
    cursor: pointer;
    border: none;
    transition: transform var(--t-fast), box-shadow var(--t-fast);
}
.btn-show-all:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 36px rgba(255, 140, 66, 0.55), inset 0 -3px 0 rgba(0,0,0,.2), inset 0 3px 0 rgba(255,255,255,.4);
}

/* ------------------------------------------------------------
   12. SECCIÓN DE AYUDA
   ------------------------------------------------------------ */
.help-section {
    position: relative;
    padding: 80px 40px;
    background:
        radial-gradient(circle at 15% 20%, rgba(255, 140, 66, 0.15), transparent 45%),
        radial-gradient(circle at 85% 80%, rgba(43, 94, 156, 0.15), transparent 45%),
        linear-gradient(180deg, #eef4fc 0%, #e0edff 100%);
    scroll-margin-top: calc(var(--header-h) + 20px);
}

.help-inner {
    max-width: 1140px;
    margin: 0 auto;
}

.help-header {
    text-align: center;
    margin-bottom: 44px;
}
.help-ico {
    display: inline-block;
    font-size: 2.8rem;
    margin-bottom: 12px;
    filter: drop-shadow(0 8px 20px rgba(255, 140, 66, 0.5));
    animation: iconBounce 2.5s ease-in-out infinite;
}
.help-title {
    font-family: var(--font-title);
    font-size: clamp(1.7rem, 2.8vw, 2.2rem);
    font-weight: 700;
    color: #1e293b;
    margin-bottom: 8px;
    letter-spacing: -0.01em;
}
.help-subtitle {
    font-size: 1rem;
    font-weight: 600;
    color: #64748b;
}

.help-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 22px;
}

.help-card {
    position: relative;
    padding: 28px 22px;
    border-radius: var(--r-lg);
    background: rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.9);
    box-shadow:
        0 14px 34px rgba(15, 23, 42, 0.08),
        inset 0 1px 0 rgba(255, 255, 255, 1);
    text-align: center;
    transition: transform var(--t-mid), box-shadow var(--t-mid);
}
.help-card::before {
    content: "";
    position: absolute;
    top: 0; left: 20%; right: 20%;
    height: 4px;
    border-radius: 0 0 4px 4px;
    background: linear-gradient(90deg, #ff8c42, #d96a1e);
}
.help-card:nth-child(2)::before { background: linear-gradient(90deg, #2b5e9c, #1c3d6b); }
.help-card:nth-child(3)::before { background: linear-gradient(90deg, #4caf50, #2e7d32); }
.help-card:nth-child(4)::before { background: linear-gradient(90deg, #7c3aed, #5b21b6); }

.help-card:hover {
    transform: translateY(-5px);
    box-shadow:
        0 22px 50px rgba(15, 23, 42, 0.14),
        inset 0 1px 0 rgba(255, 255, 255, 1);
}

.help-card-ico {
    display: inline-block;
    font-size: 2rem;
    margin-bottom: 12px;
    filter: drop-shadow(0 4px 10px rgba(15, 23, 42, 0.1));
}
.help-card-title {
    font-family: var(--font-title);
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
    margin-bottom: 8px;
}
.help-card-desc {
    font-size: 0.88rem;
    font-weight: 600;
    color: #64748b;
    line-height: 1.55;
}
.help-card-desc strong { color: #b54a0c; font-weight: 800; }

/* ------------------------------------------------------------
   13. FOOTER ESPECÍFICO DEL PORTAL
   ------------------------------------------------------------ */
.footer-primaria {
    background: linear-gradient(180deg, #1a2332 0%, #0f172a 100%);
}
.footer-primaria::before {
    background: linear-gradient(90deg, transparent, rgba(255, 140, 66, 0.5), rgba(247, 201, 72, 0.4), transparent);
}

.footer-primaria .footer-brand {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
    font-family: var(--font-title);
    font-size: 1.15rem;
    font-weight: 700;
}
.footer-brand-ico { font-size: 1.6rem; filter: drop-shadow(0 4px 12px rgba(255, 140, 66, 0.6)); }
.footer-brand-txt {
    background: linear-gradient(90deg, #ffb347, #ff8c42, #f7c948);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    letter-spacing: 0.02em;
}

.footer-primaria .footer-msg {
    margin-bottom: 20px;
    color: #cbd5e1;
}

.footer-primaria .footer-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-bottom: 24px;
    font-family: var(--font-title);
    font-size: 0.95rem;
}
.footer-nav-link {
    color: #cbd5e1;
    padding: 6px 12px;
    border-radius: var(--r-full);
    transition: color var(--t-fast), background var(--t-fast), transform var(--t-fast);
}
.footer-nav-link:hover {
    color: #ffffff;
    background: rgba(255, 255, 255, 0.08);
    transform: translateY(-1px);
}
.footer-primaria .footer-dot { color: #ff8c42; opacity: 0.7; }

/* ------------------------------------------------------------
   14. ANIMACIONES DE REVEAL
   ------------------------------------------------------------ */
.reveal-child {
    opacity: 0;
    transform: translateY(40px);
    transition:
        opacity 0.9s cubic-bezier(0.22, 0.61, 0.36, 1),
        transform 0.9s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.reveal-child[data-reveal="2"] { transition-delay: 0.12s; }
.reveal-child[data-reveal="3"] { transition-delay: 0.22s; }
.reveal-child[data-reveal="4"] { transition-delay: 0.32s; }
.reveal-child[data-reveal="5"] { transition-delay: 0.42s; }
.reveal-child.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* ------------------------------------------------------------
   15. RESPONSIVE
   ------------------------------------------------------------ */

/* Pantallas grandes */
@media (min-width: 1400px) {
    .games-area { padding: 100px 60px 90px; }
    .games-grid { gap: 28px; }
}

/* Laptops */
@media (max-width: 1200px) {
    .games-grid { grid-template-columns: repeat(3, 1fr); }
}

/* Tablets horizontales */
@media (max-width: 1024px) {
    .portal-hero-content {
        grid-template-columns: 1fr;
        gap: 40px;
        text-align: center;
        max-width: 640px;
    }
    .hero-character {
        min-height: 360px;
        order: 1;
    }
    .hero-character .robot-display { max-width: 300px; }
    .hero-text { text-align: center; order: 2; }
    .rugged-dialogue { text-align: left; }
    .hero-actions { justify-content: center; }

    .games-area { padding: 70px 24px 60px; }
    .games-grid { grid-template-columns: repeat(3, 1fr); gap: 20px; }

    .help-grid { grid-template-columns: repeat(2, 1fr); }

    /* Ocultar decoraciones pesadas */
    .flag-1, .flag-2 { display: none; }
}

/* Tablets verticales */
@media (max-width: 900px) {
    .games-grid { grid-template-columns: repeat(2, 1fr); gap: 18px; }

    .games-section-head {
        padding: 18px 22px;
        gap: 14px;
    }
    .games-section-ico {
        width: 54px;
        height: 54px;
        font-size: 1.6rem;
        border-radius: 16px;
    }
    .games-section-title { font-size: 1.3rem; }
    .games-section-desc { font-size: 0.85rem; }
    .games-section-count { padding: 6px 14px; }
    .games-section-count-num { font-size: 1.15rem; }

    .filters {
        border-radius: 22px;
        padding: 12px;
        gap: 8px;
    }
    .filter-btn {
        padding: 8px 14px;
        font-size: 0.85rem;
    }
    .filter-txt { font-size: 0.82rem; }

    .help-section { padding: 60px 24px; }
}

/* Móviles grandes */
@media (max-width: 700px) {
    .portal-hero {
        padding: calc(var(--header-h) + 30px) 18px 60px;
        min-height: auto;
    }
    .hero-character { min-height: 280px; }
    .hero-character .robot-display { max-width: 240px; }
    .portal-hero-title { font-size: 2.2rem; }
    .rugged-dialogue-text { font-size: 0.98rem; }
    .portal-hero-subtitle { font-size: 1rem; }
    .btn-hero-primaria {
        padding: 16px 28px;
        font-size: 1rem;
    }

    .sun-primaria { width: 90px; height: 90px; }
    .urban-tree { display: none; }
    .road-sign { width: 44px; height: 44px; }
    .traffic-light { width: 28px; padding: 5px; }
    .speed-particle { font-size: 1.4rem; }

    .games-area { padding: 60px 18px 50px; }

    .section-title { font-size: 1.7rem; gap: 10px; }
    .section-subtitle { font-size: 0.95rem; }

    .filters {
        padding: 10px;
        gap: 6px;
        border-radius: 20px;
    }
    .filter-btn {
        padding: 7px 12px;
        font-size: 0.8rem;
        min-height: 38px;
    }
    .filter-ico { font-size: 0.95rem; }
    .filter-count { min-width: 20px; height: 20px; font-size: 0.68rem; }

    .games-grid { grid-template-columns: repeat(2, 1fr); gap: 14px; }

    .game-card-body { padding: 14px 16px 16px; gap: 8px; }
    .game-title { font-size: 1rem; }
    .game-desc { font-size: 0.8rem; -webkit-line-clamp: 2; }
    .game-play { padding: 6px 12px; font-size: 0.75rem; }
    .game-number { width: 32px; height: 32px; font-size: 0.85rem; }
    .game-badge-new, .game-badge-featured { padding: 4px 10px; font-size: 0.62rem; }
    .game-difficulty { font-size: 0.68rem; padding: 4px 10px; }

    .help-grid { grid-template-columns: 1fr; gap: 16px; }
    .help-card { padding: 22px 18px; }

    .footer-primaria .footer-nav { font-size: 0.85rem; gap: 8px; }
}

/* Móviles pequeños */
@media (max-width: 500px) {
    .portal-hero-title { font-size: 1.9rem; }
    .hero-badge-primaria { font-size: 0.75rem; padding: 6px 14px; }

    .games-area { padding: 50px 14px 40px; }

    .filters {
        flex-direction: column;
        border-radius: 18px;
        align-items: stretch;
    }
    .filter-btn {
        justify-content: center;
        width: 100%;
    }

    .games-grid { grid-template-columns: 1fr; gap: 16px; }

    .games-section-head {
        padding: 16px 18px;
        gap: 12px;
        border-radius: 20px;
    }
    .games-section-ico { width: 46px; height: 46px; font-size: 1.4rem; }
    .games-section-info { min-width: 0; }
    .games-section-title { font-size: 1.15rem; }
    .games-section-desc { font-size: 0.78rem; }
    .games-section-count { padding: 5px 12px; }
    .games-section-count-num { font-size: 1rem; }

    .game-card-thumb { aspect-ratio: 16 / 9; }
}

/* Accesibilidad */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
    .reveal-child { opacity: 1; transform: none; }
    .hero-character .robot-img { animation: none; }
    .hero-character .robot-display::before,
    .hero-character .robot-display::after { animation: none; }
    .road-lines { animation: none; }
    .speed-lines { animation: none; }
}
/* Visor sin controles superpuestos en las esquinas */
#visor-juego { position:fixed; inset:0; height:100dvh; width:100%; background:#000; z-index:9999999; display:none; }
#visor-juego.activo { display:block; }
#visor-juego #frame-juego { display:block; width:100%; height:100%; border:0; background:#fff; }
#visor-juego .visor-exit-tab { position:absolute; top:50%; left:0; z-index:3; width:24px; height:52px; padding:0;
 border:0; border-radius:0 12px 12px 0; background:rgba(26,37,48,.76); color:white;
 opacity:.65; font:700 23px 'Fredoka',sans-serif; cursor:grab; touch-action:none; user-select:none;
 transition:background .2s,opacity .2s; }
#visor-juego .visor-exit-tab:hover, #visor-juego .visor-exit-tab:focus-visible,
#visor-juego .visor-exit-tab[aria-expanded="true"] { background:#ffb347; color:#172338; opacity:1; }
#visor-juego .visor-exit-tab:active { cursor:grabbing; }
#visor-juego .visor-exit-panel[hidden] { display:none; }
#visor-juego .visor-exit-panel { position:absolute; z-index:4; top:50%; left:50%; transform:translate(-50%,-50%);
 width:min(390px,calc(100% - 30px)); padding:24px; border-radius:20px; background:#fff; color:#263447;
 text-align:center; box-shadow:0 16px 60px #0009; font-family:'Nunito',sans-serif; }
#visor-juego .visor-exit-panel p { margin:0 0 18px; font-size:19px; font-weight:800; }
#visor-juego .visor-exit-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:10px; }
#visor-juego .visor-exit-actions button { border:0; padding:12px 15px; border-radius:12px; background:#e9eef5;
 color:#263447; font:800 14px 'Nunito',sans-serif; cursor:pointer; }
#visor-juego #visorFullscreen { background:#ffb347; color:#172338; }
#visor-juego #visorConfirmExit { background:#d84d4d; color:white; }
#visor-juego .visor-exit-actions button:hover { filter:brightness(.9); }
#visor-juego button:focus-visible { outline:3px solid #ffb347; outline-offset:3px; }
.nav-robot-img { width:22px; height:22px; object-fit:contain; flex-shrink:0; }

/* Ajustes propios de esta página */

        /* ============================================================
           CORRECCIONES ESTRUCTURALES Y TEXTOS FLOTANTES
           ============================================================ */
        body, html { overflow-x: hidden; }

        .game-card-thumb {
            position: relative;
            overflow: hidden;
            display: block;
            line-height: 0;
        }

        .dynamic-thumb {
            position: absolute;
            top: 0; left: 0;
            width: 400%; 
            height: 400%;
            transform: scale(0.25); 
            transform-origin: top left;
            pointer-events: none; 
            border: none;
            z-index: 1;
            background-color: transparent;
        }

        .game-thumb-bg { z-index: 2; }
        .game-number, .game-difficulty, .game-badge-new, .game-badge-featured { z-index: 3; }

        .rugged-dialogue, .about-rayet-bubble {
            max-width: 95%;
            word-wrap: break-word;
            position: relative;
            z-index: 10;
        }

        .game-title { margin: 12px 0 6px 0; line-height: 1.2; }
        .game-desc { margin: 0 0 12px 0; line-height: 1.4; }

        .hero-text .portal-hero-subtitle {
            background-color: rgba(255, 255, 255, 0.95);
            color: #1a2530 !important;
            padding: 10px 25px;
            border-radius: 30px;
            display: inline-block;
            font-weight: 700;
            margin-top: 10px;
            margin-bottom: 25px;
            box-shadow: 0 4px 10px rgba(0,0,0,0.15);
        }

        .hero-stats {
            background-color: rgba(26, 37, 48, 0.85);
            padding: 15px 30px;
            border-radius: 20px;
            display: inline-flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 30px;
            margin-bottom: 30px;
            backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            border: 2px solid rgba(255, 255, 255, 0.15);
            box-shadow: 0 8px 20px rgba(0,0,0,0.25);
        }

        .hero-stat {
            color: #ffffff !important;
            text-align: center;
            display: flex;
            flex-direction: column;
            align-items: center;
        }

        .hero-stat-num {
            display: block;
            font-size: 1.8rem;
            font-weight: 900;
            color: #ffaa00; 
            line-height: 1;
            margin-bottom: 6px;
            text-shadow: 1px 1px 3px rgba(0,0,0,0.6);
        }

        .hero-stat-lbl {
            display: block;
            font-size: 0.9rem;
            font-weight: 600;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            opacity: 0.9;
        }

        /* ============================================================
           MEJORAS DE UI Y NUEVO ESTADO "PRÓXIMAMENTE"
           ============================================================ */

        /* Overlay Próximamente para juegos Placeholder */
        .placeholder-overlay {
            position: absolute;
            inset: 0;
            background: rgba(44, 62, 80, 0.85); /* Azul oscuro semi transparente */
            z-index: 5;
            display: flex;
            align-items: center;
            justify-content: center;
            backdrop-filter: blur(4px);
            -webkit-backdrop-filter: blur(4px);
        }

        .placeholder-text {
            color: #ffaa00;
            font-family: 'Fredoka', sans-serif;
            font-weight: 900;
            font-size: 1.5rem;
            letter-spacing: 1px;
            text-transform: uppercase;
            text-shadow: 2px 2px 0px rgba(0,0,0,0.5);
            transform: rotate(-10deg);
            border: 4px solid #ffaa00;
            padding: 8px 15px;
            border-radius: 12px;
            background: rgba(0,0,0,0.4);
        }

        /* Tarjeta deshabilitada */
        .game-card.disabled {
            cursor: not-allowed;
            opacity: 0.85;
            filter: grayscale(40%);
        }
        
        .game-card.disabled .game-card-link {
            pointer-events: none; /* Desactiva el clic por completo */
        }

        /* Resto de UI */
        .scroll-hint {
            position: absolute;
            bottom: 30px !important;
            left: 50%;
            transform: translateX(-50%);
            z-index: 50;
            display: flex;
            flex-direction: column;
            align-items: center;
            color: #fff;
            background-color: rgba(26, 37, 48, 0.85);
            padding: 12px 25px;
            border-radius: 25px;
            backdrop-filter: blur(6px);
            -webkit-backdrop-filter: blur(6px);
            border: 2px solid rgba(255, 255, 255, 0.15);
            box-shadow: 0 8px 20px rgba(0,0,0,0.4);
        }

        .scroll-txt {
            font-size: 0.85rem;
            font-weight: 700;
            letter-spacing: 1px;
            text-transform: uppercase;
            margin-bottom: 8px;
            opacity: 0.95;
        }

        .hero-actions { margin-bottom: 60px; }

        .about-section {
            background: linear-gradient(180deg, #eef2f5 0%, #ffffff 100%);
            padding: 80px 20px;
            color: #2c3e50;
        }

        .about-inner { max-width: 1100px; margin: 0 auto; }
        .about-header { text-align: center; margin-bottom: 50px; }

        .about-mission {
            display: flex;
            align-items: center;
            gap: 40px;
            background: #fff;
            padding: 40px;
            border-radius: 20px;
            box-shadow: 0 15px 35px rgba(0,0,0,0.05);
            margin-bottom: 60px;
        }

        .about-mission-text { flex: 1; font-size: 1.1rem; line-height: 1.6; }

        .about-mission-visual {
            flex: 0 0 320px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-end;
            position: relative;
        }

        .about-rayet-img-wrap { width: 100%; display: flex; justify-content: center; }
        .about-rayet-img { max-width: 250px; height: auto; display: block; }

        @media (max-width: 768px) {
            .about-mission { flex-direction: column; text-align: center; padding: 30px 20px; }
            .about-mission-visual { flex: 0 0 auto; }
        }

        .about-values-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 25px;
            margin-bottom: 60px;
        }

        .about-value-card {
            background: #fff;
            padding: 30px 25px;
            border-radius: 15px;
            box-shadow: 0 8px 20px rgba(0,0,0,0.06);
            border-top: 5px solid #ffaa00;
            transition: transform 0.2s;
        }

        .about-value-card:hover { transform: translateY(-5px); }
        .about-values-title { text-align: center; font-size: 2rem; margin-bottom: 40px; }

        .about-cta {
            text-align: center;
            background: #1a2530;
            color: #fff;
            padding: 50px 20px;
            border-radius: 20px;
            box-shadow: 0 15px 30px rgba(0,0,0,0.2);
        }

        .about-cta-desc { margin-bottom: 30px; font-size: 1.1rem; opacity: 0.9; }
    
/* Organización final: reglas acotadas para evitar cruces con styles.css. */
body.portal-primaria {
 --header-h:88px; --font-title:'Fredoka',sans-serif; --r-full:999px;
 --r-lg:24px; --t-mid:.25s ease; --c-texto-principal:#172338;
 margin:0; font-family:'Nunito',sans-serif; color:#172338;
}
.portal-primaria *, .portal-primaria *::before, .portal-primaria *::after { box-sizing:border-box; }
.portal-primaria .site-header {
 position:fixed; inset:0 0 auto; width:100%; height:auto; min-height:var(--header-h);
 z-index:10000; overflow:visible !important; contain:none; background:#172338;
 box-shadow:0 5px 24px #15243e26;
}
.portal-primaria .header-inner {
 position:relative; width:min(1440px,100%); min-height:var(--header-h); height:auto;
 margin:auto; padding:12px 24px; display:flex; align-items:center; justify-content:space-between;
 gap:20px; overflow:visible !important;
}
.portal-primaria .brand { display:flex; align-items:center; gap:12px; min-width:0; text-decoration:none; color:white; }
.portal-primaria .brand-logo { width:48px; height:48px; border-radius:16px; display:grid; place-items:center; flex-shrink:0; position:relative; }
.portal-primaria .brand-name { margin:0; font-size:clamp(.95rem,1.4vw,1.2rem); line-height:1.2; }
.portal-primaria .brand-tagline { margin:5px 0 0; font-size:.75rem; color:#dbe6f6; }
.portal-primaria .main-nav { position:relative; display:flex; align-items:center; gap:5px; overflow:visible; background:transparent; }
.portal-primaria .nav-btn { position:relative; display:flex; align-items:center; gap:7px; padding:12px 10px; border-radius:12px; text-decoration:none; color:#fff; font-size:.84rem; white-space:nowrap; }
.portal-primaria .nav-btn:hover, .portal-primaria .nav-btn:focus-visible { background:#30415e; }
.portal-primaria .nav-indicator { display:none; }
.portal-primaria .menu-toggle { display:none; }
.portal-primaria .scroll-progress { position:absolute; bottom:0; left:0; height:3px; background:#ffb347; }
.portal-primaria .hero-text { position:relative; inset:auto; transform:none; display:flex; flex-direction:column; align-items:flex-start; gap:18px; min-width:0; }
.portal-primaria .hero-text > * { margin:0; max-width:100%; }
.portal-primaria .hero-text .rugged-dialogue {
 position:relative; inset:auto; width:auto; height:auto; max-width:100%; display:block;
 padding:18px 22px; border-radius:20px; transform:none; animation:none; opacity:1;
 background:#fff7ed; border:2px solid #ffc78b; color:#943e13;
}
.portal-primaria .rugged-dialogue-text { margin:0; line-height:1.5; }
.portal-primaria .hero-text .portal-hero-subtitle { padding:0; background:none; box-shadow:none; color:#334155 !important; font-style:normal; line-height:1.5; border-radius:0; }
.portal-primaria .hero-stats { display:flex; width:100%; justify-content:space-around; gap:16px; padding:18px; border-radius:20px; }
.portal-primaria .hero-actions { width:100%; margin:0; }
.portal-primaria .scroll-hint { position:relative; inset:auto; transform:none; margin:12px auto 0; padding:10px 20px; }
.portal-primaria .games-area-inner { position:relative; z-index:1; }
.portal-primaria .games-section-head { position:relative; inset:auto; }
.portal-primaria .game-card { min-width:0; border-radius:24px; }
.portal-primaria .game-card-body { padding:20px; gap:12px; min-width:0; }
.portal-primaria .game-card-top { flex-wrap:wrap; justify-content:flex-start; gap:8px; }
.portal-primaria .game-category-tag { white-space:normal; line-height:1.45; max-width:100%; letter-spacing:0; }
.portal-primaria .game-age { color:#56647a; }
.portal-primaria .game-title { position:static; margin:0; line-height:1.3; overflow-wrap:anywhere; }
.portal-primaria .game-desc { position:static; margin:0; display:block; overflow:visible; line-height:1.6; }
.portal-primaria .game-card.disabled { opacity:1; filter:none; cursor:default; }
.portal-primaria .game-card.disabled:hover { transform:translateY(-3px); }
.portal-primaria .placeholder-overlay {
 background:linear-gradient(135deg,#fff0c6,#ffd3b1 55%,#ffbda6); backdrop-filter:none;
 flex-direction:column; gap:10px; padding:42px 12px 20px; z-index:2; line-height:1.2;
}
.portal-primaria .coming-icon { font-size:2.6rem; filter:drop-shadow(0 4px 0 #ffffff88); }
.portal-primaria .placeholder-text {
 color:#75300f; font-size:clamp(.8rem,1.3vw,1.05rem); letter-spacing:.06em;
 text-shadow:none; transform:none; border:1px solid #e8a459; padding:10px 14px;
 border-radius:999px; background:#fff9e9; box-shadow:0 4px 0 #eeb37b;
}
.portal-primaria .disabled .game-number { z-index:3; }
.portal-primaria .disabled .game-difficulty { display:none; }
.portal-primaria .library-preview { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; background:radial-gradient(ellipse at top,#ffe7a3,#c28148); color:#482a20; padding:20px; line-height:1.2; }
.portal-primaria .library-preview > span { font-size:3.4rem; }
.portal-primaria .library-preview strong { font:600 1.4rem 'Fredoka',sans-serif; }
.portal-primaria .library-preview small { font-weight:800; }
.portal-primaria .about-rayet-bubble { background:#fff3df; color:#943e13; border:1px solid #ffd08c; border-radius:18px; padding:14px 20px; text-align:center; }
.portal-primaria .about-values-grid { grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); }
.portal-primaria :focus-visible { outline:3px solid #ed920f; outline-offset:4px; }
@media(max-width:1100px) {
 .portal-primaria .menu-toggle { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; width:46px; height:46px; padding:10px; flex-shrink:0; border:1px solid #56647a; border-radius:12px; background:#2c3e59; cursor:pointer; }
 .portal-primaria .menu-toggle span { display:block; width:23px; height:3px; margin:0; background:white; border-radius:3px; }
 .portal-primaria .main-nav { position:absolute !important; inset:100% 12px auto !important; width:auto; height:auto; max-height:calc(100dvh - var(--header-h) - 16px); display:none; flex-direction:column; align-items:stretch; padding:12px; margin:0; overflow-y:auto; background:#172338; border:1px solid #4c5d79; border-radius:0 0 20px 20px; box-shadow:0 18px 30px #14223e55; transform:none !important; opacity:1 !important; visibility:visible !important; z-index:10001; }
 .portal-primaria .main-nav.is-open { display:flex !important; }
 .portal-primaria .nav-btn { min-height:48px; padding:12px 16px; width:100%; }
}
@media(max-width:1024px) {
 .portal-primaria .hero-text { align-items:center; text-align:center; }
 .portal-primaria .hero-actions { justify-content:center; }
}
@media(max-width:600px) {
 body.portal-primaria { --header-h:76px; }
 .portal-primaria .header-inner { padding:10px 14px; gap:10px; }
 .portal-primaria .brand-logo { width:40px; height:40px; }
 .portal-primaria .brand-tagline { font-size:.65rem; }
 .portal-primaria .portal-hero { padding-top:calc(var(--header-h) + 24px); }
 .portal-primaria .portal-hero-content { gap:20px; margin-bottom:24px; }
 .portal-primaria .hero-character { min-height:220px; }
 .portal-primaria .rayet-stage { max-width:240px; width:100%; }
 .portal-primaria .hero-stats { gap:8px; padding:16px 10px; }
 .portal-primaria .hero-stat-num { font-size:1.5rem; }
 .portal-primaria .hero-stat-lbl { font-size:.65rem; }
 .portal-primaria .games-grid { grid-template-columns:1fr; }
 .portal-primaria .games-section-head { flex-wrap:wrap; gap:12px; }
 .portal-primaria .games-section-info { flex-basis:calc(100% - 64px); }
 .portal-primaria .games-section-count { flex-direction:row; gap:5px; margin-left:58px; }
 .portal-primaria .filters { display:grid; grid-template-columns:1fr 1fr; }
 .portal-primaria .filter-btn { min-width:0; width:100%; padding:10px 8px; white-space:normal; min-height:48px; }
 .portal-primaria .filter-txt { white-space:normal; }
 .portal-primaria .about-section { padding:48px 14px; }
 .portal-primaria .placeholder-text { font-size:1rem; }
 .portal-primaria .footer-nav { flex-wrap:wrap; }
}

/* ==========================================================
   RUGGED / COSMIC PLAYGROUND
   Fondo continuo, luz violeta y cian, tarjetas por misión.
   ========================================================== */
body.portal-primaria {
 --bg-ciudad:#11122c; --bg-games:#11122c; --c-texto-principal:#f4f2ff;
 --t-fast:.18s ease; --r-md:16px; --ray-color-1:#72f4df; --ray-glow:#72f4df44;
 background:#11122c; color:#f4f2ff;
 background-image:radial-gradient(ellipse at 0% 30%,#5329a02b,transparent 45%),radial-gradient(ellipse at 100% 70%,#14747b26,transparent 45%);
}
.portal-primaria .site-header { background:#11122cf5; border-bottom:1px solid #ffffff14; box-shadow:0 8px 28px #090a1e33; }
.portal-primaria .header-inner { max-width:1400px; }
.portal-primaria .brand-name { font-family:'Fredoka',sans-serif; letter-spacing:.03em; }
.portal-primaria .brand-logo-primaria { background:linear-gradient(140deg,#9065f7,#5a39b0) !important; box-shadow:0 5px 18px #9f6fff35 !important; }
.portal-primaria .nav-btn { color:#d7d6ec; }
.portal-primaria .nav-btn.is-active { color:#8affea; background:#8affea12; text-shadow:none; }
.portal-primaria .nav-btn:hover { background:#a28bf422; color:white; }
.portal-primaria .scroll-progress { background:linear-gradient(90deg,#ae88ff,#65ffe1); }
.portal-primaria .portal-hero { min-height:800px; min-height:max(780px,100svh); padding:calc(var(--header-h) + 65px) 32px 40px; background:transparent; }
.portal-primaria .rugged-world { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.portal-primaria .rugged-world::before { content:''; position:absolute; inset:0; background:radial-gradient(ellipse at 25% 40%,#673db84a,transparent 48%),radial-gradient(ellipse at 85% 45%,#235e7330,transparent 40%); }
.portal-primaria .rugged-world::after { content:''; position:absolute; inset:0; opacity:.35; background-image:radial-gradient(#b2a6e6 1px,transparent 1px); background-size:46px 46px; mask-image:linear-gradient(#0009,transparent); }
.portal-primaria .cyber-grid { position:absolute; width:180%; height:480px; bottom:-200px; left:-40%; transform:perspective(460px) rotateX(58deg); transform-origin:center top; background-image:linear-gradient(#a183ef28 1px,transparent 1px),linear-gradient(90deg,#a183ef28 1px,transparent 1px); background-size:70px 70px; mask-image:linear-gradient(transparent,#000 25%,transparent 90%); animation:cyberGridFlow 12s linear infinite; }
.portal-primaria .cyber-horizon { position:absolute; bottom:95px; left:12%; width:76%; height:1px; background:linear-gradient(90deg,transparent,#8c70e9aa,#65ffe17a,transparent); box-shadow:0 0 40px #9973ff; }
.portal-primaria .cyber-orb { position:absolute; width:320px; aspect-ratio:1; border:1px solid #bb9cff1a; border-radius:50%; }
.portal-primaria .orb-one { top:13%; left:-180px; box-shadow:0 0 0 65px #bb9cff06,0 0 0 130px #bb9cff04; }
.portal-primaria .orb-two { width:130px; top:26%; right:5%; border:20px solid #62efda08; }
.portal-primaria .world-coordinate { position:absolute; bottom:48px; left:32px; font-size:.62rem; letter-spacing:.2em; color:#a096bd; writing-mode:vertical-rl; }
.portal-primaria .portal-hero-content { max-width:1240px; gap:75px; grid-template-columns:1fr 1.1fr; margin:0 auto 42px; }
.portal-primaria .hero-text { gap:23px; }
.portal-primaria .hero-badge-primaria { background:#b18cff12; border:1px solid #b18cff55; color:#d8c7ff; box-shadow:none; backdrop-filter:none; padding:9px 15px; font-size:.8rem; }
.portal-primaria .badge-dot { background:#7cf5d9; box-shadow:0 0 12px #7cf5d955; }
.portal-primaria .portal-hero-title { gap:8px; line-height:.97; letter-spacing:-.025em; font-size:clamp(3.4rem,6.2vw,5.9rem); }
.portal-primaria .portal-hero-title-line:first-child { color:#eeeaff; font-size:.49em; letter-spacing:.06em; font-weight:500; }
.portal-primaria .portal-hero-title-accent { background:linear-gradient(105deg,#d8b8ff,#ac8bff 48%,#79f6df); -webkit-background-clip:text; background-clip:text; filter:none; animation:none; }
.portal-primaria .hero-text .rugged-dialogue { background:#ffffff06; color:#dbd2f3; border:0; border-left:3px solid #b698ff; border-radius:0 14px 14px 0; padding:12px 17px; box-shadow:none; }
.portal-primaria .rugged-dialogue-tail { display:none; }
.portal-primaria .rugged-dialogue-text { color:#ded5f3; font:500 1rem/1.6 'Nunito',sans-serif; }
.portal-primaria .hero-text .portal-hero-subtitle { color:#b8b3d1 !important; max-width:460px; font-size:1.05rem; line-height:1.7; }
.portal-primaria .hero-stats { background:transparent; border:0; border-top:1px solid #ffffff16; border-bottom:1px solid #ffffff16; padding:20px 0; gap:20px; border-radius:0; box-shadow:none; justify-content:flex-start; backdrop-filter:none; }
.portal-primaria .hero-stat { padding-right:24px; align-items:flex-start; border-right:1px solid #ffffff16; }
.portal-primaria .hero-stat:last-child { border:0; }
.portal-primaria .hero-stat-num { color:#ede4ff; font:600 1.65rem 'Fredoka',sans-serif; text-shadow:none; }
.portal-primaria .hero-stat-lbl { color:#b0a7c8; font-size:.65rem; letter-spacing:.12em; }
.portal-primaria .btn-hero-primaria { border:0; background:#7cebd7; color:#112b31; box-shadow:0 6px 0 #329b94,0 15px 35px #63e6d222; border-radius:16px; padding:18px 26px; font-size:1rem; transition:transform .2s,box-shadow .2s; }
.portal-primaria .btn-hero-primaria:hover { transform:translateY(-3px); box-shadow:0 8px 0 #329b94,0 20px 40px #63e6d233; }
.portal-primaria .btn-glow { display:none; }
.portal-primaria .scroll-hint { border:0; background:transparent; box-shadow:none; color:#aaa0c5; backdrop-filter:none; padding:0; gap:8px; }
.portal-primaria .scroll-txt { font-size:.65rem; letter-spacing:.16em; }
.portal-primaria .scroll-mouse { width:18px; height:28px; border-color:#9380be; background:transparent; }
.portal-primaria .scroll-wheel { background:#8cf2dd; }
/* El escenario y la imagen tienen animaciones separadas. */
.portal-primaria .hero-character { min-height:480px; perspective:900px; }
.portal-primaria .rayet-stage { position:relative; width:min(100%,420px); aspect-ratio:1; display:grid; place-items:center; transform:rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg)); transition:transform .3s ease-out; }
.portal-primaria .rayet-stage::before { content:''; position:absolute; inset:0; border:1px solid #b7a0ff24; border-radius:50%; background:radial-gradient(circle,#9867f01c,transparent 65%); box-shadow:0 0 0 30px #b8a1ff04,0 0 0 60px #b8a1ff03; }
.portal-primaria .rayet-stage::after { content:'+'; position:absolute; top:9%; right:10%; color:#8bf6df; font:300 34px monospace; text-shadow:0 0 20px #8bf6df66; animation:markerSpin 9s linear infinite; }
.portal-primaria .rayet-stage .robot-img { width:88%; height:auto; max-height:380px; object-fit:contain; filter:drop-shadow(0 25px 20px #08061788) drop-shadow(0 0 32px #ab82fa33); animation:ruggedHover 5s ease-in-out infinite; }
.portal-primaria .rayet-aura { position:absolute; inset:15%; border-radius:50%; background:#9867f02b; filter:blur(38px); animation:reactorGlow 4s ease-in-out infinite; }
.portal-primaria .rayet-ring { position:absolute; inset:2%; border:2px dashed #9c84d535; border-radius:50%; animation:markerSpin 55s linear infinite; }
.portal-primaria .rayet-shadow { position:absolute; bottom:1%; left:20%; width:60%; height:18px; background:#07071888; border-radius:50%; filter:blur(8px); animation:shadowBreathe 5s ease-in-out infinite; }
.portal-primaria .character-platform { position:absolute; bottom:12px; left:50%; width:85%; height:42px; border-radius:50%; transform:translateX(-50%); background:radial-gradient(ellipse,#9872e92b,transparent 65%); border:1px solid #9e7ef444; box-shadow:0 8px 35px #9867f022; }
.portal-primaria .robot-chip { position:absolute; z-index:4; padding:11px 15px; border:1px solid #ac91ec55; background:#24203ce8; border-radius:13px; font-size:.65rem; letter-spacing:.1em; font-weight:900; color:#d7c7fb; box-shadow:0 10px 30px #09091b44; }
.portal-primaria .chip-top { top:25px; left:0; transform:rotate(-6deg); }
.portal-primaria .chip-bottom { bottom:25px; right:-10px; color:#9cf6df; transform:rotate(4deg); }
.portal-primaria .chip-bottom span { display:inline-block; width:6px; height:6px; border-radius:50%; margin-right:6px; background:#84f5d4; box-shadow:0 0 10px #84f5d4; }
.portal-primaria .rayet-speed-lines { display:none; }
.portal-primaria .rayet-sparkles { position:absolute; inset:0; pointer-events:none; }
.portal-primaria .spark { position:absolute; font-size:18px; }
.portal-primaria .spark-1 { left:0; top:40%; }.portal-primaria .spark-2 { right:8%; bottom:12%; }.portal-primaria .spark-3 { right:2%; top:40%; }
.portal-primaria .is-boosting .robot-img { animation:ruggedBoost .85s ease both; }
/* Un mismo mundo continúa detrás de todas las categorías. */
.portal-primaria .games-area { background:transparent; padding-top:65px; }
.portal-primaria .games-bg { position:absolute; inset:0; pointer-events:none; overflow:hidden; opacity:1; background:radial-gradient(ellipse at 0% 12%,#603b9e30,transparent 35%),radial-gradient(ellipse at 100% 50%,#167a7e1a,transparent 35%); }
.portal-primaria .games-bg > * { display:none; }
.portal-primaria .games-bg::after { content:''; position:absolute; inset:0; background-image:radial-gradient(#a58ecb28 1px,transparent 1px); background-size:30px 30px; mask-image:linear-gradient(transparent,#000,transparent); }
.portal-primaria .games-header { margin-bottom:30px; }
.portal-primaria .section-title { margin-top:0; }
.portal-primaria .section-title-txt { background:linear-gradient(100deg,#f1eaff,#b9a1ef); -webkit-background-clip:text; background-clip:text; }
.portal-primaria .section-subtitle { color:#b5abc9; }
.portal-primaria .filters { background:#1c1b37; border:1px solid #afa0df29; border-radius:20px; padding:10px; box-shadow:0 12px 40px #06061933; gap:8px; }
.portal-primaria .filter-btn { background:transparent; border:1px solid transparent; color:#bfb4d7; font-size:.85rem; padding:11px 14px; border-radius:12px; }
.portal-primaria .filter-btn:hover { background:#b696ff16; color:#f0e6ff; box-shadow:none; }
.portal-primaria .filter-btn.is-active { background:#a88aff; color:#1b1236; border-color:#cdb6ff; box-shadow:0 3px 0 #7050b5; }
.portal-primaria .filter-count { background:#ffffff0d; }
.portal-primaria .games-section { --mission:#c2a3ff; --mission-rgb:194,163,255; margin-bottom:64px; }
.portal-primaria .games-section[data-section="resolucion"] { --mission:#ffc181; --mission-rgb:255,193,129; }
.portal-primaria .games-section[data-section="secuencias"] { --mission:#91c8ff; --mission-rgb:145,200,255; }
.portal-primaria .games-section[data-section="clasificacion"] { --mission:#85e7c4; --mission-rgb:133,231,196; }
.portal-primaria .games-section[data-section="retos"] { --mission:#ffcc74; --mission-rgb:255,204,116; }
.portal-primaria .games-section-head { background:linear-gradient(90deg,rgba(var(--mission-rgb),.12),#1c1b3700); border:0; border-bottom:1px solid rgba(var(--mission-rgb),.2); border-radius:18px 18px 0 0; padding:21px 24px; margin-bottom:24px; box-shadow:none; }
.portal-primaria .games-section-head::before { width:3px; background:var(--mission); border-radius:3px; }
.portal-primaria .games-section-ico { background:rgba(var(--mission-rgb),.12); border:1px solid rgba(var(--mission-rgb),.25); box-shadow:none; animation:none; width:54px; height:54px; border-radius:16px; font-size:1.6rem; }
.portal-primaria .games-section-title { color:#eee6ff; font-weight:500; margin:0 0 6px; }
.portal-primaria .games-section-desc { color:#aaa0bd; margin:0; font-weight:500; }
.portal-primaria .games-section-count { background:#ffffff07; border:1px solid #ffffff12; box-shadow:none; border-radius:14px; }
.portal-primaria .games-section-count-num { color:var(--mission); }
.portal-primaria .games-section-count-txt { color:#b2a5c7; }
.portal-primaria .games-grid { gap:22px; }
.portal-primaria .game-card { background:linear-gradient(150deg,#29263f,#201e35); border:1px solid #ffffff15; box-shadow:0 8px 20px #08071935; border-radius:23px; transition:transform .25s,box-shadow .25s,border-color .25s; }
.portal-primaria .game-card:not(.disabled):hover { transform:translateY(-7px); border-color:rgba(var(--mission-rgb),.65); box-shadow:0 15px 30px #08071955,0 0 24px rgba(var(--mission-rgb),.08); }
.portal-primaria .game-card-thumb { border-bottom:1px solid #ffffff0e; aspect-ratio:16/10; }
.portal-primaria .game-card-body { padding:20px; gap:14px; }
.portal-primaria .game-category-tag { padding:0; background:transparent; color:var(--mission); font-size:.67rem; font-weight:800; }
.portal-primaria .game-card-top { gap:10px; align-items:flex-start; }
.portal-primaria .game-age { font-size:.65rem; color:#aaa0bd; margin-left:auto; }
.portal-primaria .game-title { color:#f4edff; font-size:1.2rem; font-weight:500; }
.portal-primaria .game-desc { color:#b7adc8; font-size:.86rem; font-weight:500; }
.portal-primaria .game-card-bottom { border-color:#ffffff12; margin-top:6px; padding-top:15px; }
.portal-primaria .game-play { color:#1e1931; background:var(--mission); border:0; box-shadow:0 3px 0 rgba(var(--mission-rgb),.25); font-size:.75rem; border-radius:10px; padding:9px 13px; }
.portal-primaria .star { color:#555069; }
.portal-primaria .star.is-filled { color:var(--mission); filter:none; text-shadow:none; }
/* Las vistas previas existentes conservan sus recursos y su tratamiento. */
.portal-primaria .placeholder-overlay { background:radial-gradient(circle at 20% 20%,rgba(var(--mission-rgb),.14),transparent 70%),#242239; gap:12px; }
.portal-primaria .coming-icon { font-size:2.3rem; filter:none; padding:10px; border-radius:18px; background:rgba(var(--mission-rgb),.09); border:1px solid rgba(var(--mission-rgb),.15); }
.portal-primaria .placeholder-text { color:var(--mission); background:rgba(var(--mission-rgb),.1); border:1px solid rgba(var(--mission-rgb),.3); box-shadow:none; font-size:.72rem; letter-spacing:.1em; padding:9px 14px; }
.portal-primaria .game-card.disabled { background:linear-gradient(150deg,#252239,#1f1c31); }
.portal-primaria .game-card.disabled .game-title { color:#e1d7ef; }
.portal-primaria .game-card.disabled .game-desc { color:#afa4c2; }
.portal-primaria .about-section { background:radial-gradient(ellipse at 50% 0,#4e32773b,transparent 65%),#14132d; color:#cdc2de; border-top:1px solid #ffffff12; }
.portal-primaria .about-values-title { color:#f0e7ff; font-family:'Fredoka',sans-serif; font-weight:500; }
.portal-primaria .about-highlight { color:#86e9d4; }
.portal-primaria .about-mission { background:#211e37; border:1px solid #ffffff13; box-shadow:none; }
.portal-primaria .about-mission-text h3 { color:#e7dcff !important; font-family:'Fredoka',sans-serif; }
.portal-primaria .about-rayet-bubble { background:#342b4c; color:#dccafa; border-color:#aa84ec44; }
.portal-primaria .about-value-card { background:#211e37; border:1px solid #ffffff14; border-top:2px solid #aa88e9; box-shadow:none; border-radius:20px; }
.portal-primaria .about-value-card h4 { color:#e8dcfa !important; }.portal-primaria .about-value-card p { color:#b7a9c9 !important; }
.portal-primaria .about-cta { background:radial-gradient(ellipse at top left,#59368166,transparent),#25203d; border:1px solid #b898ed33; box-shadow:none; border-radius:24px; }
.portal-primaria .site-footer { background:#0d0d21; color:#b2a5c9; border-top:1px solid #ffffff0d; padding:40px 24px; text-align:center; }
.portal-primaria .footer-inner { max-width:1100px; margin:auto; }
.portal-primaria .footer-brand { color:#e2d3fa; font-family:'Fredoka',sans-serif; }
.portal-primaria .footer-nav { display:flex; flex-wrap:wrap; justify-content:center; gap:15px; margin:22px 0; }
.portal-primaria .footer-nav-link { color:#c0afd9; text-decoration:none; }
.portal-primaria .footer-copy { color:#8d809f; font-size:.75rem; }
.portal-primaria .sound-toggle { position:fixed; right:20px; bottom:20px; z-index:11000; width:48px; height:48px; border-radius:16px; border:1px solid #b99aef55; background:#29223f; box-shadow:0 6px 20px #08071866; cursor:pointer; font-size:20px; }
@keyframes ruggedHover { 0%,100% { transform:translateY(0) rotate(-3deg); } 50% { transform:translateY(-16px) rotate(3deg); } }
@keyframes ruggedBoost { 0%,100% { transform:translateY(0) rotate(-3deg); } 20% { transform:translateY(8px) rotate(-8deg) scale(.97); } 50% { transform:translateY(-35px) rotate(7deg) scale(1.06); } 75% { transform:translateY(-8px) rotate(-4deg); } }
@keyframes shadowBreathe { 50% { transform:scale(.8); opacity:.5; } }
@keyframes reactorGlow { 50% { opacity:.5; transform:scale(.85); } }
@keyframes markerSpin { to { transform:rotate(360deg); } }
@keyframes cyberGridFlow { to { background-position:0 70px; } }
@media(max-width:1100px) {
 .portal-primaria .main-nav { background:#211c37; border-color:#b192e544; }
 .portal-primaria .menu-toggle { background:#302541; border-color:#ad8ee64a; }
}
@media(max-width:1024px) {
 .portal-primaria .portal-hero { min-height:auto; padding-top:calc(var(--header-h) + 34px); }
 .portal-primaria .portal-hero-content { grid-template-columns:1fr; gap:32px; max-width:640px; }
 .portal-primaria .hero-character { min-height:360px; }
 .portal-primaria .rayet-stage { width:310px; }
 .portal-primaria .character-platform { width:65%; }
 .portal-primaria .chip-top { left:9%; }.portal-primaria .chip-bottom { right:8%; }
 .portal-primaria .hero-stats { justify-content:center; }.portal-primaria .hero-stat { align-items:center; }
 .portal-primaria .hero-text .portal-hero-subtitle { max-width:100%; }
 .portal-primaria .portal-hero-title { font-size:4.5rem; }
 .portal-primaria .world-coordinate { display:none; }
}
@media(max-width:600px) {
 .portal-primaria .portal-hero { padding:calc(var(--header-h) + 25px) 22px 35px; }
 .portal-primaria .hero-character { min-height:285px; }
 .portal-primaria .rayet-stage { width:240px; max-width:100%; }
 .portal-primaria .robot-chip { font-size:.53rem; padding:9px 10px; }
 .portal-primaria .chip-top { top:5px; left:0; }.portal-primaria .chip-bottom { right:0; bottom:0; }
 .portal-primaria .portal-hero-content { gap:28px; }
 .portal-primaria .hero-text { gap:19px; }
 .portal-primaria .portal-hero-title { font-size:3.8rem; }
 .portal-primaria .hero-text .portal-hero-subtitle { font-size:.95rem; }
 .portal-primaria .hero-stat { padding-right:18px; }.portal-primaria .hero-stat:last-child { padding-right:0; }
 .portal-primaria .games-area { padding:45px 16px; }
 .portal-primaria .section-title { font-size:1.7rem; }
 .portal-primaria .games-section-head { padding:16px; }
 .portal-primaria .games-section-desc { line-height:1.6; }
 .portal-primaria .game-card-body { padding:22px; }
 .portal-primaria .game-title { font-size:1.25rem; }
 .portal-primaria .game-desc { font-size:.9rem; }
 .portal-primaria .game-card-thumb { aspect-ratio:16/10; }
 .portal-primaria .placeholder-text { font-size:.8rem; }
 .portal-primaria .about-mission { padding:24px 20px; }
 .portal-primaria .about-cta h3 { font-size:1.6rem !important; }
}
@media(prefers-reduced-motion:reduce) {
 .portal-primaria *, .portal-primaria *::before, .portal-primaria *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
 .portal-primaria .rayet-stage { transform:none; }
}

/* Identidad de carreras: naranja en contraste con violeta y cian. */
.portal-primaria .game-card[hidden] { display:none !important; }
.portal-primaria .brand-logo-primaria { background:linear-gradient(140deg,#ffbd75,#f57838) !important; box-shadow:0 5px 18px #ff94352a !important; }
.portal-primaria .portal-hero-title-accent { background-image:linear-gradient(100deg,#ffd19c,#ff9e61 48%,#c4a3ff); }
.portal-primaria .btn-hero-primaria { background:linear-gradient(120deg,#ffc583,#ff9b57); color:#432311; box-shadow:0 6px 0 #ac512c,0 15px 35px #ff943522; }
.portal-primaria .btn-hero-primaria:hover { box-shadow:0 8px 0 #ac512c,0 20px 40px #ff943533; }
.portal-primaria .scroll-progress { background:linear-gradient(90deg,#ff974c,#af8fff,#74f0da); }
.portal-primaria .rugged-world::before { background:radial-gradient(ellipse at 17% 55%,#ba63242b,transparent 42%),radial-gradient(ellipse at 50% 20%,#673db83b,transparent 48%),radial-gradient(ellipse at 85% 45%,#235e7330,transparent 40%); }
.portal-primaria .cyber-horizon { background:linear-gradient(90deg,transparent,#ff9d62aa,#a282e9aa,#65ffe17a,transparent); }
.portal-primaria .rayet-stage::before { border-color:#ffb27135; background:radial-gradient(circle,#ff9f4912,transparent 65%); }
.portal-primaria .rayet-ring { border-color:#ffa96b55; }
.portal-primaria .rayet-stage::after { color:#ffb77d; text-shadow:0 0 20px #ffb77d66; }
.portal-primaria .chip-top { color:#ffd3a4; border-color:#ffab6255; background:#352537ed; }
.portal-primaria .character-platform { border-color:#ffae6955; box-shadow:0 8px 35px #ff8b4020; }
.portal-primaria .hero-text .rugged-dialogue { border-left-color:#ffa568; }
.portal-primaria .hero-badge-primaria { border-color:#ffa76955; color:#ffd6ac; background:#f7a35a0d; }
.portal-primaria .badge-dot { background:#ffb178; box-shadow:0 0 12px #ffa76955; }
.portal-primaria .filter-btn.is-active { background:linear-gradient(120deg,#ffc284,#ff9e62); color:#432311; border-color:#ffd2a1; box-shadow:0 3px 0 #a8502b; }
.portal-primaria .filters { max-width:1250px; border-top-color:#f4a36444; }
.portal-primaria .games-bg { background:radial-gradient(ellipse at 0% 12%,#9e56331f,transparent 35%),radial-gradient(ellipse at 100% 50%,#42367a26,transparent 35%); }
.portal-primaria .games-area::before { content:''; position:absolute; top:0; left:0; right:0; height:5px; background:repeating-linear-gradient(120deg,#ffa765 0 20px,#ffa76500 20px 40px); opacity:.45; }
.portal-primaria .games-section[data-section="matematica"] { --mission:#ffba82; --mission-rgb:255,186,130; }
.portal-primaria .games-section[data-section="comunicacion"] { --mission:#bfa0ff; --mission-rgb:191,160,255; }
.portal-primaria .games-section[data-section="ciencia-ambiente"] { --mission:#85e7c4; --mission-rgb:133,231,196; }
.portal-primaria .games-section[data-section="personal-social"] { --mission:#87caff; --mission-rgb:135,202,255; }
.portal-primaria .games-section[data-section="tecnologia"] { --mission:#71e6e7; --mission-rgb:113,230,231; }
.portal-primaria .games-section[data-section="integrados"] { --mission:#ffd477; --mission-rgb:255,212,119; }
.portal-primaria .game-category-tag { max-width:100%; }
.portal-primaria .about-value-card { border-top-color:#eea36a; }
@media(min-width:1101px) { .portal-primaria .filters { justify-content:center; } }

/* Ciudad ilustrada y circuito de carreras para Primaria. */
.portal-primaria .brand-logo-primaria { overflow:visible; padding:4px; }
.portal-primaria .brand-rugged-img { display:block; width:100%; height:100%; object-fit:contain; position:relative; z-index:1; filter:drop-shadow(0 3px 2px #6a361444); }
.portal-primaria .footer-rugged-img { width:42px; height:36px; object-fit:contain; vertical-align:middle; margin-right:8px; }
.portal-primaria .portal-hero { min-height:900px; min-height:max(900px,100svh); padding-bottom:110px; }
.portal-primaria .racing-city-world { background:#292d54; }
.portal-primaria .racing-city { position:absolute; inset:0; width:100%; height:100%; }
.portal-primaria .racing-city-world::before, .portal-primaria .racing-city-world::after { display:none; }
.portal-primaria .portal-hero-content { gap:55px; align-items:center; margin-bottom:30px; }
.portal-primaria .hero-text { background:linear-gradient(140deg,#161c3de8,#222143e3); border:1px solid #e7bb9a2e; border-top:3px solid #ffae78; border-radius:30px; padding:32px; box-shadow:0 22px 65px #0c123c44; backdrop-filter:blur(8px); }
.portal-primaria .portal-hero-title { font-size:clamp(3.6rem,5.8vw,5.5rem); }
.portal-primaria .hero-text .portal-hero-subtitle { color:#e0d7e9 !important; }
.portal-primaria .hero-text .rugged-dialogue { background:#ffc28b09; }
.portal-primaria .hero-stat-lbl { color:#d1c2df; }
.portal-primaria .hero-character { min-height:470px; }
.portal-primaria .rayet-stage { width:min(100%,440px); }
.portal-primaria .rayet-stage::before { inset:8%; border:0; background:radial-gradient(circle,#ffbf8d20,transparent 65%); box-shadow:none; }
.portal-primaria .rayet-stage::after { content:'⚡'; font:32px 'Nunito',sans-serif; animation:citySpark 4s ease-in-out infinite; }
.portal-primaria .rayet-ring { inset:5%; border-style:solid; border-width:2px; border-color:#ffc48b1c; border-top-color:#ffc48b99; border-right-color:#94dfd466; }
.portal-primaria .rayet-stage .robot-img { width:95%; max-height:400px; animation:ruggedRaceIdle 4.5s ease-in-out infinite; filter:drop-shadow(0 22px 12px #15152c88); }
.portal-primaria .character-platform { width:92%; height:70px; bottom:12px; border:5px solid #ffbd7b; background:repeating-linear-gradient(90deg,#f3d8b0 0 18px,#282d4e 18px 36px); box-shadow:0 8px 0 #a85d43,0 15px 25px #10162d77; opacity:.9; transform:translateX(-50%) perspective(360px) rotateX(57deg); }
.portal-primaria .chip-top { top:8px; left:0; background:#3e314ce8; border-color:#ffc17b88; }
.portal-primaria .chip-bottom { bottom:2px; right:-5px; background:#203d4ce8; }
.portal-primaria .hero-stats { padding:16px 0; }
.portal-primaria .race-track-caption { position:absolute; bottom:20px; left:50%; transform:translateX(-50%); border:1px solid #fbc08c55; border-radius:14px; padding:11px 18px; background:#19213de8; color:#ffd7a3; font:600 .8rem 'Fredoka',sans-serif; letter-spacing:.08em; display:flex; align-items:center; gap:10px; white-space:nowrap; }
.portal-primaria .race-track-caption b { font:700 .58rem 'Nunito',sans-serif; color:#c8d8dd; margin-left:6px; }
.portal-primaria .scroll-hint { background:#19213dce; padding:10px 18px; border-radius:16px; color:#e6d5e5; }
.portal-primaria .city-cloud { animation:cityCloudDrift 16s ease-in-out infinite alternate; }
.portal-primaria .cloud-b { animation-delay:-8s; }
.portal-primaria .race-lane-dashes { animation:raceLaneFlow 6s linear infinite; }
.portal-primaria .city-race-car { offset-path:path('M-100 800C220 540 510 900 860 680S1250 625 1530 730'); offset-rotate:auto; animation:cityCarLap 18s linear infinite; }
.portal-primaria .game-card { border:2px solid #ed975ce0; box-shadow:0 6px 0 #b663361a,0 10px 24px #08071944; }
.portal-primaria .game-card:not(.disabled):hover { border-color:#ffd1a0; box-shadow:0 7px 0 #e8955a24,0 18px 35px #f28b3a20; }
.portal-primaria .game-card.disabled { border-color:#cb8955aa; }
/* SVG propio: evita las reglas de .sound-icon del CSS compartido. */
body.portal-primaria #soundToggle.rugged-sound-button { display:grid !important; place-items:center; position:fixed; inset:auto 20px 20px auto; width:56px; height:56px; min-width:56px; padding:13px; z-index:11000; color:#fff0db !important; background:#302744 !important; border:2px solid #ffae63; border-radius:18px; opacity:1 !important; visibility:visible !important; overflow:visible; box-shadow:0 5px 0 #9c542d,0 8px 24px #0005; cursor:pointer; }
body.portal-primaria #soundToggle .rugged-sound-glyph { display:block !important; position:static; width:26px; height:26px; opacity:1 !important; visibility:visible !important; color:inherit; stroke:currentColor; fill:none; transform:none; }
.portal-primaria #soundToggle[aria-pressed="false"] .rugged-sound-waves { display:none; }
.portal-primaria #soundToggle[aria-pressed="true"] .rugged-sound-cross { display:none; }
body.portal-primaria #soundToggle[aria-pressed="true"] { background:#985124 !important; }
body.portal-primaria #soundToggle:hover { transform:translateY(-2px); }
@keyframes ruggedRaceIdle { 0%,100% { transform:translateY(0) rotate(-2deg); } 30% { transform:translateY(-7px) rotate(1deg); } 65% { transform:translateY(-2px) rotate(-1deg); } }
@keyframes cityCloudDrift { to { transform:translateX(65px); } }
@keyframes cityCarLap { from { offset-distance:0%; } to { offset-distance:100%; } }
@keyframes raceLaneFlow { to { stroke-dashoffset:-124; } }
@keyframes citySpark { 50% { transform:translateY(-9px) rotate(10deg); } }
.portal-primaria .is-boosting .robot-img { animation:ruggedBoost .85s ease both; }
@media(max-width:1024px) {
 .portal-primaria .portal-hero { min-height:auto; padding-bottom:130px; }
 .portal-primaria .portal-hero-content { max-width:640px; gap:30px; }
 .portal-primaria .hero-character { min-height:350px; }
 .portal-primaria .rayet-stage { width:320px; }
 .portal-primaria .character-platform { width:70%; }
 .portal-primaria .hero-text { width:100%; padding:28px; }
 .portal-primaria .racing-city { height:100%; }
 .portal-primaria .chip-top { left:8%; }.portal-primaria .chip-bottom { right:8%; }
}
@media(max-width:600px) {
 .portal-primaria .portal-hero { padding:calc(var(--header-h) + 24px) 16px 110px; }
 .portal-primaria .hero-character { min-height:285px; }
 .portal-primaria .rayet-stage { width:250px; }
 .portal-primaria .hero-text { padding:24px 18px; border-radius:24px; }
 .portal-primaria .portal-hero-title { font-size:3.4rem; }
 .portal-primaria .chip-top { left:0; }.portal-primaria .chip-bottom { right:0; bottom:-6px; }
 .portal-primaria .character-platform { bottom:0; width:88%; }
 .portal-primaria .race-track-caption { font-size:.68rem; max-width:calc(100% - 32px); padding:10px 14px; bottom:15px; }
 .portal-primaria .race-track-caption b { display:none; }
 body.portal-primaria #soundToggle.rugged-sound-button { inset:auto 14px calc(16px + env(safe-area-inset-bottom,0px)) auto; width:50px; height:50px; min-width:50px; border-radius:16px; padding:10px; }
}
@media(prefers-reduced-motion:reduce) {
 .portal-primaria .city-cloud, .portal-primaria .race-lane-dashes, .portal-primaria .city-race-car, .portal-primaria .rayet-stage .robot-img, .portal-primaria .rayet-stage::after { animation:none !important; }
 .portal-primaria .city-race-car { offset-distance:60%; }
}

/* Sonido en la esquina superior, debajo de la cabecera. */
body.portal-primaria #soundToggle.rugged-sound-button {
 top:calc(var(--header-h) + 16px); right:20px; bottom:auto; left:auto;
}
body.portal-primaria.rugged-game-open #soundToggle.rugged-sound-button { display:none !important; }
@media(max-width:600px) {
 body.portal-primaria #soundToggle.rugged-sound-button {
  top:calc(var(--header-h) + 12px); right:14px; bottom:auto; left:auto;
 }
}

/* Base definida de circuito: sin desenfoque ni halo bajo Rugged. */
.portal-primaria .hero-character .platform-road {
 filter:none; backdrop-filter:none; animation:none;
 background:linear-gradient(180deg,#41465f,#282d45);
 border:3px solid #ffb776; height:42px; border-radius:50%;
 box-shadow:0 5px 0 #9c5638,0 8px 0 #22253a;
 opacity:1; transform:translateX(-50%) perspective(360px) rotateX(57deg);
}
.portal-primaria .hero-character .rayet-shadow,
.portal-primaria .hero-character .rayet-aura { display:none; }
.portal-primaria .rayet-stage .robot-img { filter:none; }


/* Tarjetas compactas: conserva el estilo y las miniaturas existentes. */
.portal-primaria .games-grid { align-items:stretch; }
.portal-primaria .game-card { height:var(--equal-card-height, auto); }
.portal-primaria .game-card .game-card-link { height:100%; }
.portal-primaria .game-card .game-card-thumb { aspect-ratio:16/9; }
.portal-primaria .game-card .game-card-body { padding:14px 16px; gap:8px; }
.portal-primaria .game-card .game-card-top { gap:6px; margin:0; }
.portal-primaria .game-card .game-category-tag { white-space:normal; }
.portal-primaria .game-card .game-title { margin:2px 0; font-size:1.1rem; line-height:1.25; }
.portal-primaria .game-card .game-desc { display:block; -webkit-line-clamp:unset; overflow:visible; overflow-wrap:anywhere; line-height:1.4; margin:0; flex:none; }
.portal-primaria .game-card .game-card-bottom { margin-top:auto; padding-top:8px; }

/* La portada conserva su altura aunque el texto ocupe más espacio. */
.portal-primaria .game-card .game-card-thumb { flex:0 0 auto; min-height:0; width:100%; }
.portal-primaria .game-card .game-card-body { min-height:min-content; }
.portal-primaria .game-card .dynamic-thumb { display:block; position:absolute; inset:0 auto auto 0; width:400%; height:400%; transform:scale(.25); transform-origin:top left; border:0; pointer-events:none; z-index:1; }
.portal-primaria .game-card .game-thumb-bg { pointer-events:none; }
