
:root{
  /* Tema CLARO: fondo blanco/azulado + acentos azul oscuro */
  --navy-900:#f3f7fd;--navy-800:#e9f1fb;--navy-700:#e0ebf8;--navy-600:#d4e3f5;
  --blue-royal:#1452d6;--blue-bright:#2e7bff;--blue-sky:#1f6fe0;
  /* (los nombres --red* se conservan, pero ahora son AZULES) */
  --red:#1452d6;--red-bright:#2e7bff;--red-deep:#1140b0;--gold:#2e7bff;
  --ink:#0b1a3a;--muted:#4a5b7a;--line:rgba(20,60,140,.16);
  --card:rgba(255,255,255,.72);--glass:rgba(255,255,255,.82);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Sora',sans-serif;background:var(--navy-900);color:var(--ink);overflow-x:hidden;line-height:1.5}
.bg-field{position:fixed;inset:0;z-index:-2;background:
  radial-gradient(1100px 700px at 78% -8%, rgba(46,123,255,.05), transparent 60%),
  radial-gradient(900px 600px at 8% 12%, rgba(20,82,214,.035), transparent 55%),
  radial-gradient(800px 500px at 50% 108%, rgba(20,82,214,.02), transparent 60%),
  linear-gradient(180deg,#fcfdff 0%,#f5f7fb 50%,#fcfdff 100%);}
.bg-grid{position:fixed;inset:0;z-index:-1;opacity:.5;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:64px 64px;mask-image:radial-gradient(circle at 50% 30%,#000 0%,transparent 78%);}
.grain{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.04;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
.wrap{max-width:1240px;margin:0 auto;padding:0 28px;position:relative;z-index:1}

/* Cabecera CLARA (blanca), a juego con el cuerpo y el pie.
   `:not(.adm-nav)` porque el panel /admin reutiliza esta hoja y su barra
   lateral también es un <nav>: allí manda admin.css (fondo azul oscuro). */
nav:not(.adm-nav){position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);
  background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);}
.nav-in{display:flex;align-items:center;justify-content:space-between;height:74px}
.brand{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--ink);cursor:pointer;background:none;border:none}
.brand img{height:60px;width:auto;border:1px solid var(--line);border-radius:10px}
.brand b{font-family:'Oswald';font-weight:700;font-size:1.35rem;letter-spacing:.5px}
.brand b span{color:var(--blue-sky)}
.brand small{display:block;color:var(--muted);font-size:.8rem;letter-spacing:3.5px;text-transform:uppercase;font-weight:500;text-align:left}
.nav-links{display:flex;gap:30px;align-items:center}
.nav-links a{color:var(--muted);text-decoration:none;font-size:.86rem;font-weight:500;letter-spacing:.3px;transition:.2s;cursor:pointer}
.nav-links a:hover{color:var(--blue-royal)}
.nav-links a.nav-cta{background:#ffe9a8;color:#0b1a3a;padding:9px 20px;border-radius:8px;font-weight:700;font-size:.84rem;
  box-shadow:0 6px 20px rgba(0,0,0,.28);transition:.25s;border:none;cursor:pointer}
.nav-links a.nav-cta:hover{background:#ffe08a;color:#0b1a3a;transform:translateY(-1px)}
/* Póster del hero en las portadas de oposición (sustituye al avatar) */
.hero-poster{display:block;width:100%;max-width:430px;height:auto;margin:0 auto;border-radius:18px;
  border:1px solid var(--line);box-shadow:0 28px 64px rgba(20,40,90,.22)}

/* Laboratorio: portada de sección (póster + texto) */
.lab-intro{display:grid;grid-template-columns:minmax(0,340px) 1fr;gap:34px;align-items:center;margin-top:30px}
.lab-poster{width:100%;height:auto;display:block;border-radius:16px;
  box-shadow:0 14px 40px rgba(8,18,44,.28);border:1px solid rgba(8,18,44,.1)}
.lab-text h2{font-family:'Oswald',sans-serif;font-weight:700;font-size:clamp(1.5rem,3.5vw,2.1rem);
  color:#0c1c3f;margin:0 0 12px}
.lab-text p{color:#3f4f70;font-size:1.04rem;line-height:1.7;margin:0 0 22px}
@media(max-width:760px){.lab-intro{grid-template-columns:1fr}.lab-poster{max-width:340px;margin:0 auto}}

/* Primera pantalla (selector): solo "Salir" alineado a la derecha */
.nav-solo{margin-left:auto;display:flex;align-items:center}
.nav-solo a{color:var(--muted);text-decoration:none;font-size:.86rem;font-weight:600;letter-spacing:.3px;
  padding:8px 18px;border:1px solid var(--line);border-radius:8px;transition:.2s}
.nav-solo a:hover{color:var(--blue-royal);border-color:var(--blue-bright);background:rgba(46,123,255,.07)}
/* Cambiador de oposición (CNP/GC/PL) */
.nav-ops{display:flex;gap:7px;align-items:center;justify-content:center}
.nav-links .nav-ops a{padding:5px 11px;border:1px solid var(--line);border-radius:7px;
  font-size:.74rem;font-weight:700;letter-spacing:.6px;color:var(--muted)}
.nav-links .nav-ops a:hover{color:var(--blue-royal);border-color:var(--blue-bright)}
.nav-links .nav-ops a.on{background:var(--blue-royal);color:#fff;border-color:var(--blue-royal)}
/* Menú desplegable (hamburguesa) — en TODAS las pantallas */
.nav-toggle{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.nav-burger{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:44px;height:44px;cursor:pointer;border:1px solid var(--line);border-radius:10px;background:rgba(20,60,140,.04);transition:.2s}
.nav-burger:hover{background:rgba(46,123,255,.1)}
.nav-burger span{display:block;width:22px;height:2px;background:var(--ink);border-radius:2px;transition:transform .25s,opacity .25s}
.nav-links{display:flex;position:absolute;top:74px;right:18px;flex-direction:column;align-items:stretch;gap:0;
  min-width:230px;border-radius:14px;overflow:hidden;
  background:#fff;
  border:1px solid var(--line);box-shadow:0 18px 40px rgba(20,40,90,.18);
  padding:0 16px;max-height:0;opacity:0;pointer-events:none;
  transition:max-height .3s ease,opacity .25s ease,padding .3s ease}
.nav-links a{padding:13px 6px;border-bottom:1px solid var(--line);font-size:.92rem}
.nav-links a:last-child{border-bottom:none}
/* Piezas del menú: valen para el desplegable de móvil Y para la barra lateral
   de escritorio (mismo HTML, distinta disposición). */
.nav-links a{display:flex;align-items:center;gap:11px}
.nav-links .i{flex:none;display:grid;place-items:center;width:20px;height:20px}
.nav-links .i svg{width:18px;height:18px;stroke-width:1.7}
.nav-group{font-size:.64rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  color:var(--muted);padding:0 6px;margin:14px 0 6px}
.nav-group:first-child{margin-top:8px}
.nav-foot{margin-top:10px;padding-top:6px;border-top:1px solid var(--line)}
.nav-social{display:flex;gap:8px;padding:10px 6px 4px}
.nav-links .nav-social a{width:34px;height:34px;padding:0;border:1px solid var(--line);border-radius:9px;
  display:grid;place-items:center;color:var(--muted);cursor:pointer}
.nav-links .nav-social a:hover{background:var(--blue-bright);border-color:var(--blue-bright);color:#fff}
.nav-copy{font-size:.64rem;color:var(--muted);padding:4px 6px 2px}
.nav-links a.nav-cta{text-align:center;margin:12px 0 4px;padding:11px 20px}
.nav-toggle:checked ~ .nav-links{max-height:80vh;opacity:1;pointer-events:auto;padding-top:6px;padding-bottom:14px}
.nav-toggle:checked ~ .nav-burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle:checked ~ .nav-burger span:nth-child(2){opacity:0}
.nav-toggle:checked ~ .nav-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media(max-width:820px){.nav-links{left:18px;right:18px;min-width:0}}

/* views */
.view{display:none;animation:fade .4s ease}
.view.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* HERO */
.hero{padding:72px 0 56px}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}
.tag{display:inline-flex;align-items:center;gap:9px;font-family:'Oswald';font-weight:500;font-size:.74rem;letter-spacing:3px;
  text-transform:uppercase;color:var(--blue-sky);border:1px solid var(--line);background:rgba(46,123,255,.07);padding:7px 16px;border-radius:50px;margin-bottom:26px}
.tag .dot{width:7px;height:7px;border-radius:50%;background:var(--red-bright);box-shadow:0 0 10px var(--red-bright);animation:pulse 1.8s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
h1{font-family:'Oswald';font-weight:700;font-size:clamp(2.6rem,6vw,4.6rem);line-height:.98;text-transform:uppercase;letter-spacing:-.5px;margin-bottom:22px}
h1 .accent{color:transparent;background:linear-gradient(120deg,var(--blue-sky),var(--blue-bright));-webkit-background-clip:text;background-clip:text}
h1 .red{color:var(--red-bright)}
.lead{font-size:1.08rem;color:var(--muted);max-width:520px;margin-bottom:34px;font-weight:300}
.hero-cta{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:40px}
.btn{font-family:'Sora';font-weight:600;font-size:.95rem;padding:15px 30px;border-radius:11px;cursor:pointer;border:none;text-decoration:none;display:inline-flex;align-items:center;gap:10px;transition:.25s}
.btn-primary{background:linear-gradient(120deg,var(--blue-royal),var(--blue-bright));color:#fff;box-shadow:0 10px 34px rgba(20,82,214,.45)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 16px 44px rgba(20,82,214,.6)}
.btn-ghost{background:rgba(20,60,140,.05);color:var(--ink);border:1px solid var(--line)}
.btn-ghost:hover{background:rgba(46,123,255,.1);border-color:var(--blue-bright)}
.btn-gold{background:var(--red);color:#fff;box-shadow:0 10px 34px rgba(20,82,214,.4)}
.btn-gold:hover{background:var(--red-bright);transform:translateY(-2px)}
.stats{display:flex;gap:38px}
.stat b{font-family:'Oswald';font-weight:700;font-size:2.1rem;color:var(--ink);display:block;line-height:1}
.stat b em{color:var(--red-bright);font-style:normal}
.stat span{font-size:.74rem;color:var(--muted);letter-spacing:1.5px;text-transform:uppercase}
.hero-visual{position:relative}
.avatar-frame{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--line);box-shadow:0 30px 70px rgba(20,40,90,.18);transform:rotate(1.4deg);transition:.5s}
.avatar-frame:hover{transform:rotate(0) scale(1.01)}
.avatar-frame img{width:100%;display:block}
.avatar-frame::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(11,26,58,.45) 100%)}
.float-card{position:absolute;left:-22px;bottom:26px;z-index:3;background:var(--glass);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:14px;padding:16px 20px;box-shadow:0 16px 40px rgba(20,40,90,.16);animation:floaty 5s ease-in-out infinite}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.float-card .ttl{font-family:'Oswald';font-size:1.5rem;color:var(--blue-sky);line-height:1}
.float-card .sub{font-size:.68rem;color:var(--muted);letter-spacing:1px;text-transform:uppercase}
.logo-badge{position:absolute;right:-16px;top:-18px;z-index:3;width:92px;height:92px;border-radius:50%;background:var(--glass);backdrop-filter:blur(10px);border:1px solid var(--line);display:grid;place-items:center;box-shadow:0 14px 34px rgba(20,40,90,.16);animation:floaty 6s ease-in-out infinite}
.logo-badge img{width:74px}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr;gap:40px}.hero-visual{max-width:440px;margin:0 auto}.stats{gap:26px}}

.sec{padding:64px 0}
.sec-head{margin-bottom:42px;max-width:680px}
.sec-kicker{font-family:'Oswald';font-weight:500;font-size:.78rem;letter-spacing:4px;text-transform:uppercase;color:var(--red-bright);margin-bottom:14px;display:flex;align-items:center;gap:12px}
.sec-kicker::before{content:'';width:34px;height:2px;background:var(--red-bright)}
.sec-head h2{font-family:'Oswald';font-weight:700;font-size:clamp(2rem,4vw,3rem);text-transform:uppercase;line-height:1.02}
.sec-head p{color:var(--muted);margin-top:14px;font-weight:300;font-size:1.02rem}

.controls{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-bottom:34px}
.search{flex:1;min-width:240px;position:relative}
.search input{width:100%;background:var(--card);border:1px solid var(--line);border-radius:11px;padding:14px 16px 14px 46px;color:var(--ink);font-family:'Sora';font-size:.95rem;transition:.2s}
.search input:focus{outline:none;border-color:var(--blue-bright);box-shadow:0 0 0 3px rgba(46,123,255,.15)}
.search svg{position:absolute;left:15px;top:50%;transform:translateY(-50%);color:var(--muted)}
.filters{display:flex;gap:8px;flex-wrap:wrap}
.chip{font-family:'Sora';font-weight:500;font-size:.82rem;padding:11px 18px;border-radius:50px;cursor:pointer;background:var(--card);border:1px solid var(--line);color:var(--muted);transition:.2s;white-space:nowrap}
.chip:hover{color:var(--ink);border-color:var(--blue-bright)}
.chip.active{background:linear-gradient(120deg,var(--blue-royal),var(--blue-bright));color:#fff;border-color:transparent;box-shadow:0 6px 18px rgba(20,82,214,.4)}

.block{margin-bottom:50px}
.block-bar{display:flex;align-items:center;gap:16px;margin-bottom:24px}
.block-letter{font-family:'Oswald';font-weight:700;font-size:1.5rem;width:48px;height:48px;border-radius:12px;display:grid;place-items:center;color:#fff;flex-shrink:0}
.block-bar.A .block-letter{background:linear-gradient(135deg,var(--blue-royal),var(--blue-bright))}
.block-bar.B .block-letter{background:linear-gradient(135deg,#0e7a4f,#19b97b)}
.block-bar.C .block-letter{background:linear-gradient(135deg,#64748b,#94a3b8);color:#fff}
.block-bar h3{font-family:'Oswald';font-weight:600;font-size:1.4rem;text-transform:uppercase;letter-spacing:.5px}
.block-bar .count{margin-left:auto;font-size:.78rem;color:var(--muted);letter-spacing:1px}
.block-line{flex:1;height:1px;background:var(--line)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px}
.card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;cursor:pointer;overflow:hidden;transition:.28s;backdrop-filter:blur(6px)}
.card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;transform:scaleY(0);transform-origin:top;transition:.28s}
.card.A::before{background:var(--blue-bright)}.card.B::before{background:#19b97b}.card.C::before{background:#64748b}
.card:hover{transform:translateY(-4px);border-color:rgba(46,123,255,.45);box-shadow:0 18px 40px rgba(20,40,90,.14)}
.card:hover::before{transform:scaleY(1)}
.card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.card-num{font-family:'Oswald';font-weight:700;font-size:.95rem;color:#fff;width:38px;height:38px;border-radius:10px;display:grid;place-items:center}
.card.A .card-num{background:rgba(46,123,255,.18);color:var(--blue-sky)}
.card.B .card-num{background:rgba(25,185,123,.18);color:#3ee6a0}
.card.C .card-num{background:rgba(100,116,139,.20);color:#475569}
.card-epi{font-size:.7rem;color:var(--muted);letter-spacing:.5px;border:1px solid var(--line);padding:4px 10px;border-radius:50px}
.card h4{font-family:'Sora';font-weight:600;font-size:1.04rem;margin-bottom:9px;line-height:1.25}
.card p{font-size:.84rem;color:var(--muted);font-weight:300;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-foot{margin-top:16px;display:flex;align-items:center;justify-content:space-between}
.card-foot .open{font-size:.78rem;font-weight:600;color:var(--blue-sky);display:flex;align-items:center;gap:6px}
.card:hover .card-foot .open{gap:10px}
.card-foot .open svg{transition:.28s}

/* (La portada del temario —rejilla editorial de temas— está más abajo, tras
   los bloques D/E/F, para que pueda sobrescribir sus colores.)             */
.no-results{text-align:center;padding:60px 20px;color:var(--muted)}
.no-results b{font-family:'Oswald';font-size:1.3rem;color:var(--ink);display:block;margin-bottom:8px}

/* ---- DETAIL VIEW ----------------------------------------------------------
   Cabecera común de tema, epígrafe y test. El color lo pone la clase de bloque
   (A…F) mediante --dh-c: así el número, la etiqueta, el acento y el degradado
   salen del MISMO color y no hay que repetirlo en cada regla.               */
.detail{padding:26px 0 80px}
.breadcrumb{display:flex;align-items:center;gap:9px;font-size:.82rem;color:var(--muted);margin-bottom:14px;flex-wrap:wrap}
.breadcrumb a{color:var(--muted);text-decoration:none;cursor:pointer;transition:.2s}
.breadcrumb a:hover{color:var(--blue-sky)}
.breadcrumb .sep{opacity:.5}
.breadcrumb .now{color:var(--ink)}
/* «Volver» pasa a enlace discreto: el breadcrumb ya es la navegación principal,
   un botón grande duplicaba jerarquía sin aportar nada. */
.back-btn{display:inline-flex;align-items:center;gap:7px;background:none;border:none;color:var(--muted);
  padding:0;cursor:pointer;font-family:'Sora';font-weight:500;font-size:.84rem;margin-bottom:20px;transition:.2s}
.back-btn:hover{color:var(--blue-sky)}
.back-btn:hover svg{transform:translateX(-3px)}
.back-btn svg{transition:.2s}
/* minmax(0,1fr) y no 1fr: con "1fr" la columna de contenido tiene suelo
   min-content, así que un texto que no parte (p. ej. el título del paginador,
   nowrap) la ensancha y empuja la barra lateral fuera del lienzo. */
.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:36px;align-items:start}

/* color del bloque */
.detail-hero.A,.epi.A{--dh-c:#1f6fe0;--dh-c2:#2e7bff}
.detail-hero.B,.epi.B{--dh-c:#0e8f5f;--dh-c2:#19b97b}
.detail-hero.C,.epi.C{--dh-c:#4f5d70;--dh-c2:#64748b}
.detail-hero.D,.epi.D{--dh-c:#7c3aed;--dh-c2:#8b5cf6}
.detail-hero.E,.epi.E{--dh-c:#b45309;--dh-c2:#f59e0b}
.detail-hero.F,.epi.F{--dh-c:#0e7490;--dh-c2:#06b6d4}

.detail-hero{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;
  border-radius:18px;overflow:hidden;border:1px solid var(--line);border-left:4px solid var(--dh-c,#1f6fe0);
  padding:26px 30px;margin-bottom:38px;background:#fff;box-shadow:0 8px 26px rgba(20,40,90,.06)}
.detail-hero::before{content:'';position:absolute;inset:0;opacity:.6;pointer-events:none}
.detail-hero.A::before{background:radial-gradient(500px 300px at 90% -10%,rgba(46,123,255,.28),transparent 60%)}
.detail-hero.B::before{background:radial-gradient(500px 300px at 90% -10%,rgba(25,185,123,.24),transparent 60%)}
.detail-hero.C::before{background:radial-gradient(500px 300px at 90% -10%,rgba(100,116,139,.22),transparent 60%)}
.detail-hero>*{position:relative}
/* el número deja de ser marca de agua ilegible y pasa a ser una chapa sólida */
.dh-num{display:inline-grid;place-items:center;min-width:40px;height:40px;padding:0 10px;border-radius:11px;
  background:var(--dh-c,#1f6fe0);color:#fff;font-family:'Oswald';font-weight:700;font-size:1.15rem;line-height:1;
  letter-spacing:.5px;box-shadow:0 4px 12px rgba(20,40,90,.18)}
/* !important: el marcado de las 300+ páginas trae un style="" azul fijo en la
   etiqueta; así hereda el color de su bloque sin tocar página por página. */
.dh-badge{display:inline-flex;align-items:center;gap:8px;font-family:'Oswald';font-weight:500;font-size:.72rem;
  letter-spacing:2px;text-transform:uppercase;padding:6px 13px;border-radius:50px;margin:0;
  background:color-mix(in srgb,var(--dh-c,#1f6fe0) 12%,#fff)!important;color:var(--dh-c,#1f6fe0)!important;
  border:1px solid color-mix(in srgb,var(--dh-c,#1f6fe0) 26%,#fff)}
/* sin max-width: en un contenedor flex, el max-width reduciría el tamaño
   hipotético del ítem y el título dejaría de saltar a su propia línea. */
.detail-hero h1{flex:0 0 100%;font-family:'Oswald';font-weight:700;font-size:clamp(1.6rem,3.2vw,2.35rem);
  line-height:1.06;text-transform:uppercase;margin:2px 0 0;text-wrap:balance}
.dh-meta{flex:0 0 100%;display:flex;gap:8px;color:var(--muted);font-size:.82rem;flex-wrap:wrap;margin-top:2px}
.dh-meta span{display:flex;align-items:center;gap:6px;background:rgba(20,60,140,.05);border:1px solid var(--line);
  border-radius:50px;padding:4px 12px}
.dh-meta span:empty{display:none}          /* el % no se pinta hasta que JS lee el progreso */
.dh-meta b{color:var(--ink);font-weight:600}

/* --- botones de acción (portada de tema: van en la ficha lateral) --- */
.dh-btn{display:inline-flex;align-items:center;gap:9px;border-radius:11px;padding:11px 20px;font-family:'Sora';
  font-weight:600;font-size:.88rem;text-decoration:none;cursor:pointer;transition:.2s;border:1px solid var(--line);
  background:#fff;color:var(--ink)}
.dh-btn:hover{border-color:var(--dh-c,#1f6fe0);color:var(--dh-c,#1f6fe0);transform:translateY(-1px)}
.dh-btn svg{flex:none}
.dh-btn.primary{background:var(--dh-c,#1f6fe0);border-color:var(--dh-c,#1f6fe0);color:#fff;
  box-shadow:0 8px 22px color-mix(in srgb,var(--dh-c,#1f6fe0) 32%,transparent)}
.dh-btn.primary:hover{color:#fff;filter:brightness(1.08)}
.dh-btn .sub{font-weight:400;opacity:.75;font-size:.82rem}

.epi-head{font-family:'Oswald';font-weight:600;font-size:1.02rem;text-transform:uppercase;letter-spacing:1px;margin-bottom:14px;display:flex;align-items:center;gap:12px;color:var(--ink)}
.epi-head::after{content:'';flex:1;height:1px;background:var(--line)}
/* En la portada de tema el título del tema ES la cabecera de la lista (app.js
   mueve aquí el <h1>): no hace falta un bloque aparte que repita el nombre. */
.epi-head.is-title{display:block;margin-bottom:18px;padding-bottom:14px;border-bottom:2px solid var(--dh-c,#1f6fe0);letter-spacing:0}
.epi-head.is-title::after{display:none}
.epi-head.is-title h1{font-family:'Oswald';font-weight:700;font-size:clamp(1.5rem,3vw,2.15rem);line-height:1.06;
  text-transform:uppercase;letter-spacing:-.3px;margin:0;color:var(--ink);text-wrap:balance}
/* entradilla bajo el título (páginas sin ficha lateral, p. ej. simulacros) */
.detail-lead{color:var(--muted);font-size:.95rem;font-weight:300;line-height:1.65;max-width:70ch;margin:-4px 0 22px}
.detail-lead b{color:var(--ink);font-weight:600}
.epi-list{display:flex;flex-direction:column;gap:8px}
.epi{position:relative;display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:13px 16px;transition:.18s;cursor:default;box-shadow:0 1px 2px rgba(20,40,90,.04)}
/* sin desplazamiento lateral: en una lista larga el "salto" al pasar el ratón
   es ruido; basta con el color del borde y una elevación mínima. */
.epi:hover{border-color:color-mix(in srgb,var(--dh-c,#1f6fe0) 45%,#fff);background:color-mix(in srgb,var(--dh-c,#1f6fe0) 4%,#fff);box-shadow:0 6px 18px rgba(20,40,90,.08)}
.epi-n{font-family:'Oswald';font-weight:700;font-size:.98rem;flex-shrink:0;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--dh-c,#1f6fe0) 13%,#fff);color:var(--dh-c,#1f6fe0);transition:.18s}
/* epígrafe ya estudiado: la fila entera lo dice, no solo la casilla */
.epi:has(.epi-check.done){background:rgba(25,185,123,.06);border-color:rgba(25,185,123,.34)}
.epi:has(.epi-check.done) .epi-n{background:rgba(25,185,123,.16);color:#0e8f5f}
.epi:has(.epi-check.done) .epi-body .et{color:var(--muted)}
/* Bloques temáticos extra (D·morado · E·ámbar · F·turquesa) — temario de Policía Local */
.block-bar.D .block-letter{background:linear-gradient(135deg,#5b21b6,#8b5cf6)}
.block-bar.E .block-letter{background:linear-gradient(135deg,#b45309,#f59e0b)}
.block-bar.F .block-letter{background:linear-gradient(135deg,#0e7490,#06b6d4)}
.card.D::before{background:#8b5cf6}.card.E::before{background:#f59e0b}.card.F::before{background:#06b6d4}
.card.D .card-num{background:rgba(139,92,246,.18);color:#7c3aed}
.card.E .card-num{background:rgba(245,158,11,.18);color:#b45309}
.card.F .card-num{background:rgba(6,182,212,.18);color:#0e7490}

/* ══ TEMARIO · PORTADA DE TEMAS ═══════════════════════════════════════════
   Rejilla editorial sobria (sustituye a las antiguas tarjetas-cuaderno).
   Todo va bajo `.cuadernos`, así que solo afecta a /<opo>/temario/.
   Cada tarjeta toma el color de su bloque de la variable --bc, definida una
   sola vez por bloque (A…F): filete superior, número, pastilla y acción.   */

/* Cabecera de la portada: rótulo + título + cifras.
   La portada arranca pegada al menú (menos aire arriba que un `.sec` normal). */
.sec.cuadernos{padding-top:26px}
/* Una sola línea: título a la izquierda y cifras a la derecha, sin saltos.
   (Por debajo de 760px sí se permite que envuelva; ver más abajo.) */
.tm-head{display:flex;align-items:center;justify-content:space-between;gap:26px;flex-wrap:nowrap;
  padding-bottom:16px;margin-bottom:26px;border-bottom:1px solid var(--line)}
.tm-head>div:first-child{min-width:0}
.tm-head h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tm-stats{flex:none}
.tm-kicker{font-family:'Oswald',sans-serif;font-weight:500;font-size:.72rem;letter-spacing:4px;
  text-transform:uppercase;color:var(--blue-sky);display:flex;align-items:center;gap:11px;margin-bottom:13px}
.tm-kicker::before{content:'';width:30px;height:2px;background:currentColor}
.tm-head h1{font-family:'Oswald',sans-serif;font-weight:700;font-size:clamp(1.75rem,3.6vw,2.6rem);
  text-transform:uppercase;letter-spacing:.5px;line-height:1.04;color:var(--ink)}
.tm-head h1 span{font-weight:300;color:var(--muted)}
.tm-head p{color:var(--muted);font-weight:300;font-size:.96rem;line-height:1.6;margin-top:12px;max-width:60ch}
.tm-stats{display:flex;align-items:center}
.tm-stat{padding:2px 22px;border-left:1px solid var(--line);text-align:right}
.tm-stat:first-child{border-left:0}
.tm-stat:last-child{padding-right:0}
.tm-stat b{display:block;font-family:'Oswald',sans-serif;font-weight:700;font-size:1.85rem;line-height:1;color:var(--ink)}
.tm-stat span{display:block;margin-top:5px;font-size:.63rem;letter-spacing:2.2px;text-transform:uppercase;
  color:var(--muted);font-weight:700}
/* La misma cabecera dentro de una página de detalle (lectura «de corrido»):
   ahí los títulos de tema son largos, así que sí pueden ocupar varias líneas. */
.detail .tm-head{flex-wrap:wrap;margin-bottom:24px}
.detail .tm-head h1{white-space:normal;overflow:visible}
@media(max-width:760px){.tm-head{flex-wrap:wrap;align-items:flex-start;gap:18px}
  .tm-head h1{white-space:normal}}
@media(max-width:640px){.tm-stats{width:100%;justify-content:space-between}
  .tm-stat{padding:0 12px;text-align:center}.tm-stat b{font-size:1.35rem}}

/* Buscador y filtros */
.cuadernos .controls{margin-bottom:30px}
.cuadernos .search input{background:#fff;border-radius:10px;box-shadow:0 1px 2px rgba(11,26,58,.05)}
.cuadernos .chip{background:#fff;border-radius:9px;font-weight:600;font-size:.78rem;letter-spacing:.3px;padding:12px 17px}
.cuadernos .chip:hover{color:var(--ink);border-color:rgba(20,60,140,.3)}
.cuadernos .chip.active{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:0 8px 20px rgba(11,26,58,.2)}

/* Cabecera de cada bloque */
.cuadernos .block{margin-bottom:54px}
.cuadernos .block-bar{gap:14px;margin-bottom:22px}
.cuadernos .block-letter{width:40px;height:40px;font-size:1.2rem;border-radius:9px;box-shadow:0 8px 18px rgba(11,26,58,.16)}
.cuadernos .block-bar h3{font-size:1.13rem;font-weight:600;letter-spacing:2px}
.cuadernos .block-bar .count{font-size:.66rem;text-transform:uppercase;letter-spacing:2px;font-weight:700;
  color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:50px;padding:6px 13px}

/* Color de acento de cada bloque (tono CLARO: va sobre azul marino) */
.cuadernos .card.A{--bc:#86bbff}
.cuadernos .card.B{--bc:#57e3a6}
.cuadernos .card.C{--bc:#c9d4e8}
.cuadernos .card.D{--bc:#a78bfa}
.cuadernos .card.E{--bc:#fbbf24}
.cuadernos .card.F{--bc:#22d3ee}

/* Tarjeta: placa azul marino con el escudo grabado al fondo y la bandera al pie */
.cuadernos .grid{grid-template-columns:repeat(auto-fill,minmax(312px,1fr));gap:20px}
.cuadernos .card{
  background:
    linear-gradient(90deg,#c60b1e 0 33.34%,#ffc400 33.34% 66.67%,#c60b1e 66.67%) bottom center/62px 5px no-repeat,
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.34'/%3E%3C/svg%3E") center/140px repeat,
    radial-gradient(120% 100% at 50% -10%,#173a7d 0%,#0e2456 46%,#091733 100%);
  border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:24px 24px 22px;
  box-shadow:0 10px 28px rgba(8,18,44,.24);backdrop-filter:none;overflow:hidden;
  display:flex;flex-direction:column;
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
}
.cuadernos .card::before{      /* escudo (versión azul) asomando por el lado derecho */
  content:'';display:block;left:auto;right:-23%;top:44%;bottom:auto;
  height:122%;width:auto;aspect-ratio:500/694;
  transform:translateY(-50%);
  background:url(/assets/emblemas/escudo-cnp-azul.png) center/contain no-repeat;
  filter:brightness(1.85) saturate(1.15);   /* lo separa del azul marino del fondo */
  /* se desvanece hacia el texto para no competir con él */
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 55%);
  mask-image:linear-gradient(90deg,transparent 0,#000 55%);
  opacity:.5;pointer-events:none;transition:opacity .25s ease,right .25s ease}
.cuadernos .card:hover::before{transform:translateY(-50%);opacity:.66;right:-19%}
.opo-gc .cuadernos .card::before,.opo-pl .cuadernos .card::before{display:none}
.cuadernos .card:hover{transform:translateY(-4px);border-color:rgba(255,255,255,.22);
  box-shadow:0 22px 46px rgba(8,18,44,.4)}
/* Nº de tema (con rótulo "TEMA" encima) + pastilla de epígrafes */
.cuadernos .card-top{align-items:flex-start;margin-bottom:16px;position:relative;z-index:1}
.cuadernos .card .card-num{width:auto;height:auto;background:none;border-radius:0;color:#fff;
  display:flex;flex-direction:column;align-items:flex-start;place-items:initial;
  font-family:'Oswald',sans-serif;font-weight:700;font-size:2rem;line-height:.9;
  text-shadow:0 2px 10px rgba(0,0,0,.35)}
.cuadernos .card .card-num::before{content:'TEMA';font-family:'Sora',sans-serif;font-size:.6rem;font-weight:700;
  letter-spacing:2.8px;color:rgba(255,255,255,.66);margin-bottom:7px;text-shadow:none}
.cuadernos .card-epi{border:1px solid rgba(255,255,255,.55);background:rgba(240,246,255,.94);color:#0b1a3a;
  font-size:.63rem;font-weight:700;letter-spacing:1.3px;text-transform:uppercase;padding:6px 11px;border-radius:7px;
  box-shadow:0 4px 12px rgba(0,0,0,.22)}
/* Título y sumario */
.cuadernos .card h4{position:relative;z-index:1;font-family:'Oswald',sans-serif;font-weight:600;font-size:1.16rem;
  line-height:1.24;letter-spacing:.3px;color:#fff;margin-bottom:9px;text-shadow:0 2px 10px rgba(0,0,0,.4);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cuadernos .card p{position:relative;z-index:1;color:rgba(226,236,252,.82);font-size:.84rem;line-height:1.5;
  text-shadow:0 1px 8px rgba(0,0,0,.35)}
/* Pie: acción + progreso */
.cuadernos .card-foot{position:relative;z-index:1;margin-top:auto;padding-top:16px}
.cuadernos .card .card-foot .open{color:var(--bc);font-size:.74rem;font-weight:700;letter-spacing:1.4px;text-transform:uppercase}
.cuadernos .card .ot-count{color:rgba(226,236,252,.75)}

/* Franja de Simulacros (portada de Tests): misma placa azul marino, en horizontal */
.cuadernos .strip{--bc:#86bbff;display:flex;align-items:center;justify-content:space-between;gap:26px;
  flex-wrap:wrap;text-align:left;margin:0 0 30px;padding:26px 30px;border-radius:14px;
  border:1px solid rgba(255,255,255,.1);box-shadow:0 10px 28px rgba(8,18,44,.24);
  background:
    linear-gradient(90deg,#c60b1e 0 33.34%,#ffc400 33.34% 66.67%,#c60b1e 66.67%) bottom center/62px 5px no-repeat,
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.34'/%3E%3C/svg%3E") center/140px repeat,
    radial-gradient(120% 160% at 50% -30%,#173a7d 0%,#0e2456 46%,#091733 100%)}
.cuadernos .strip::before{display:none}
.cuadernos .strip h2{font-size:1.5rem;letter-spacing:.5px;color:#fff;margin-bottom:6px;text-shadow:0 2px 10px rgba(0,0,0,.4)}
.cuadernos .strip p{color:rgba(226,236,252,.82);margin:0;max-width:52ch;font-size:.9rem}
.cuadernos .strip .btn{flex-shrink:0;padding:13px 24px;font-size:.88rem;background:#fff;color:#0b1a3a;
  box-shadow:0 8px 22px rgba(0,0,0,.28)}
.cuadernos .strip .btn:hover{background:#eaf1ff;transform:translateY(-2px)}

.detail-hero.D::before{background:radial-gradient(500px 300px at 90% -10%,rgba(139,92,246,.26),transparent 60%)}
.detail-hero.E::before{background:radial-gradient(500px 300px at 90% -10%,rgba(245,158,11,.24),transparent 60%)}
.detail-hero.F::before{background:radial-gradient(500px 300px at 90% -10%,rgba(6,182,212,.24),transparent 60%)}
.epi.D .epi-n{background:rgba(139,92,246,.16);color:#7c3aed}
.epi.E .epi-n{background:rgba(245,158,11,.16);color:#b45309}
.epi.F .epi-n{background:rgba(6,182,212,.16);color:#0e7490}
.corrido-epi.D .ce-n{background:rgba(139,92,246,.16);color:#7c3aed}
.corrido-epi.E .ce-n{background:rgba(245,158,11,.16);color:#b45309}
.corrido-epi.F .ce-n{background:rgba(6,182,212,.16);color:#0e7490}
.epi-body{flex:1;min-width:0}
.epi-body .et{font-weight:600;font-size:.95rem;line-height:1.4;margin-bottom:2px}
.epi-body .es{font-size:.82rem;color:var(--muted);font-weight:300;line-height:1.5}
/* casilla «estudiado»: 24px, con estado hover/activo claro y check visible */
.epi-check{flex-shrink:0;width:24px;height:24px;border-radius:7px;border:2px solid var(--line);cursor:pointer;
  display:grid;place-items:center;transition:.18s;background:#fff;align-self:center}
.epi-check:hover{border-color:#19b97b;background:rgba(25,185,123,.1)}
.epi-check.done{background:#19b97b;border-color:#19b97b}
.epi-check svg{opacity:0;transition:.18s}
.epi-check:hover svg{opacity:.45}
.epi-check.done svg{opacity:1}
/* epígrafe abre como submódulo */
.epi-body.go{cursor:pointer}
.epi-open{flex-shrink:0;align-self:center;color:var(--muted);opacity:.3;transition:.18s}
.epi:hover .epi-open{opacity:1;color:var(--dh-c,#1f6fe0);transform:translateX(2px)}
/* vista epígrafe */
.epi-content{font-size:1rem;line-height:1.75;color:var(--ink)}
.epi-content h3{font-family:'Oswald';font-weight:600;font-size:1.2rem;margin:26px 0 10px;color:var(--blue-sky)}
.epi-content h4{font-family:'Oswald';font-weight:600;font-size:1.02rem;margin:20px 0 8px}
.epi-content p{margin-bottom:14px;color:var(--muted);font-weight:300}
.epi-content ul,.epi-content ol{margin:0 0 14px 20px;color:var(--muted);font-weight:300}
.epi-content li{margin-bottom:6px}
.epi-content b,.epi-content strong{color:var(--ink);font-weight:600}
.epi-content i,.epi-content em{font-style:italic}
.epi-content figure.epi-fig{margin:24px 0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}
.epi-content figure.epi-fig img{display:block;width:100%;height:auto}
.epi-content figure.epi-fig figcaption{padding:10px 16px;font-size:.82rem;color:var(--muted);font-weight:300;text-align:center;border-top:1px solid var(--line)}
/* Esquema · mapa conceptual en HTML (raíz → ramas → hojas) */
.esquema{margin:28px 0}
.esq-root{display:inline-block;font-family:'Oswald';font-weight:600;font-size:1rem;text-transform:uppercase;letter-spacing:.6px;color:#fff;background:linear-gradient(120deg,var(--blue-royal),var(--blue-bright));padding:12px 20px;border-radius:12px;box-shadow:0 10px 26px rgba(20,82,214,.26)}
.esquema ul{list-style:none;margin:0;padding:0}
.esquema .esq-tree{padding-left:18px}
.esquema li{position:relative;padding-left:26px}
.esquema li::before{content:'';position:absolute;left:0;top:0;bottom:0;border-left:2px solid var(--line)}
.esquema li::after{content:'';position:absolute;left:0;top:24px;width:24px;border-top:2px solid var(--line)}
.esquema li:last-child::before{height:24px}
.esquema li ul{padding-left:26px}
.esq-pill{display:inline-block;margin:12px 0;font-family:'Oswald';font-weight:600;font-size:.92rem;letter-spacing:.4px;color:#fff;background:linear-gradient(120deg,var(--blue-sky),var(--blue-bright));padding:9px 16px;border-radius:10px}
.esq-leaf{margin:9px 0;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 4px 14px rgba(20,40,90,.05)}
.esq-tag{display:block;font-family:'Oswald';font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:1px;padding:9px 14px;background:rgba(46,123,255,.10);color:var(--blue-sky);border-bottom:1px solid var(--line)}
.esq-leaf p{margin:0;padding:11px 14px;font-size:.86rem;line-height:1.55;color:var(--muted);font-weight:300}
/* Infográfico · pasos numerados con icono y banner de color */
.infogram{margin:28px 0;display:flex;flex-direction:column;gap:14px}
.info-step{display:flex;align-items:center;position:relative}
.info-num{flex:0 0 auto;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-family:'Oswald';font-weight:700;font-size:.92rem;color:#fff;background:var(--c1);box-shadow:0 6px 16px rgba(20,40,90,.20);z-index:3}
.info-ico{flex:0 0 auto;width:52px;height:52px;border-radius:50%;background:#fff;display:grid;place-items:center;color:var(--c1);border:1px solid var(--line);box-shadow:0 6px 16px rgba(20,40,90,.14);margin:0 -12px 0 -12px;z-index:2}
.info-ico svg{width:24px;height:24px}
.infogram .info-banner{flex:1;min-width:0;background:color-mix(in srgb,var(--c1) 13%,#fff);color:var(--ink);padding:13px 18px 13px 30px;border-radius:12px;clip-path:polygon(20px 0,100% 0,100% 100%,0 100%);box-shadow:0 6px 18px rgba(20,40,90,.08)}
.infogram .info-banner b{display:block;font-family:'Oswald';font-weight:600;font-size:1.02rem;letter-spacing:.3px;color:var(--c1)}
.infogram .info-banner span{display:block;font-size:.85rem;line-height:1.5;color:var(--muted);font-weight:300;margin-top:3px}
@media(max-width:560px){.info-num{width:34px;height:34px;font-size:.82rem}.info-ico{width:44px;height:44px}.info-ico svg{width:20px;height:20px}.infogram .info-banner{padding:11px 14px 11px 26px}}
/* Infográfico con cabecera · igual que .infogram pero el título va en BANDA de color (texto blanco, mismo color que el nº) y el cuerpo debajo en pastel */
.infoband{margin:28px 0;display:flex;flex-direction:column;gap:14px}
.ib-step{display:flex;align-items:center;position:relative}
.ib-num{flex:0 0 auto;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-family:'Oswald';font-weight:700;font-size:.92rem;color:#fff;background:var(--c1);box-shadow:0 6px 16px rgba(20,40,90,.20);z-index:3}
.ib-ico{flex:0 0 auto;width:52px;height:52px;border-radius:50%;background:#fff;display:grid;place-items:center;color:var(--c1);border:1px solid var(--line);box-shadow:0 6px 16px rgba(20,40,90,.14);margin:0 -12px 0 -12px;z-index:2}
.ib-ico svg{width:24px;height:24px}
.ib-box{flex:1;min-width:0;border-radius:12px;overflow:hidden;clip-path:polygon(20px 0,100% 0,100% 100%,0 100%);background:color-mix(in srgb,var(--c1) 13%,#fff);box-shadow:0 6px 18px rgba(20,40,90,.08)}
.ib-head{background:var(--c1);color:#fff;font-family:'Oswald';font-weight:600;font-size:1.02rem;letter-spacing:.3px;padding:9px 18px 9px 30px}
.ib-body{display:block;font-size:.85rem;line-height:1.5;color:var(--muted);font-weight:300;padding:11px 18px 13px 30px}
@media(max-width:560px){.ib-num{width:34px;height:34px;font-size:.82rem}.ib-ico{width:44px;height:44px}.ib-ico svg{width:20px;height:20px}.ib-head{padding:8px 14px 8px 26px}.ib-body{padding:10px 14px 12px 26px}}
/* Mapa mental · hub central → ramas → hojas */
.mindmap{margin:30px 0;display:flex;align-items:center}
.mm-branches{position:relative;padding-left:24px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:20px;flex:1;min-width:0}
.mm-branch{position:relative}
.mm-branch::before{content:'';position:absolute;left:-24px;top:18px;width:24px;height:2px;background:color-mix(in srgb,var(--c1) 55%,#fff)}
.mm-cat{display:inline-block;font-family:'Oswald';font-weight:600;font-size:.92rem;letter-spacing:.3px;color:#fff;background:var(--c1);padding:8px 16px;border-radius:9px;box-shadow:0 6px 16px rgba(20,40,90,.18)}
.mm-leaves{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:11px}
.mm-leaf{background:color-mix(in srgb,var(--c1) 12%,#fff);border:1px solid color-mix(in srgb,var(--c1) 26%,#fff);border-radius:11px;padding:10px 13px}
.mm-leaf .mm-h{display:block;font-family:'Oswald';font-weight:600;font-size:.86rem;letter-spacing:.2px;color:var(--c1);margin-bottom:2px}
.mm-leaf span{display:block;font-size:.8rem;line-height:1.45;color:var(--muted);font-weight:300}
@media(max-width:620px){.mindmap{flex-direction:column;align-items:stretch}.mm-branches{margin-left:0}.mm-leaves{grid-template-columns:1fr}}
.epi-placeholder{background:var(--card);border:1px dashed var(--line);border-radius:16px;padding:44px 32px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}
.epi-placeholder b{font-family:'Oswald';font-weight:600;font-size:1.1rem;text-transform:uppercase;letter-spacing:1px}
.epi-placeholder span{color:var(--muted);font-weight:300;max-width:460px;line-height:1.6}
.epi-ph-icon{font-size:2.2rem;opacity:.7}
/* minmax(0,1fr): el título (.ti) es nowrap, así que con "1fr" cada botón
   mediría el título entero y el paginador desbordaría la columna. */
.epi-pager{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-top:30px}
.epi-pager button{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;cursor:pointer;color:var(--ink);transition:.2s;font-family:'Sora'}
.epi-pager button.next{flex-direction:row-reverse;text-align:right}
.epi-pager button:hover:not(:disabled){border-color:var(--blue-bright);transform:translateY(-2px)}
.epi-pager button:disabled{opacity:.3;cursor:not-allowed}
.epi-pager .col{flex:1;min-width:0}
.epi-pager .lab{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}
.epi-pager .ti{display:block;font-size:.9rem;font-weight:600;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Acción principal del epígrafe: sólida, con el color del bloque; verde al
   marcarla (con texto oscuro: blanco sobre verde no da contraste). */
.epi-done-btn{width:100%;padding:11px 14px;border-radius:11px;border:1px solid var(--dh-c,#1f6fe0);
  background:var(--dh-c,#1f6fe0);color:#fff;font-weight:600;font-size:.86rem;cursor:pointer;font-family:'Sora';transition:.18s}
.epi-done-btn:hover{filter:brightness(1.08)}
.epi-done-btn.done{background:#19b97b;border-color:#19b97b;color:#06210f}
.side-tema-link{display:block;width:100%;padding:11px 14px;border-radius:11px;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:600;font-size:.86rem;text-align:center;cursor:pointer;font-family:'Sora';transition:.18s}
.side-tema-link:hover{border-color:var(--dh-c,#2e7bff);color:var(--dh-c,#1f6fe0)}

/* sidebar */
.detail-side{position:sticky;top:96px;display:flex;flex-direction:column;gap:14px}
.side-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 1px 2px rgba(20,40,90,.04)}
.side-card h5{font-family:'Oswald';font-weight:600;font-size:.74rem;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:14px}
/* Ficha lateral de la portada de tema: bloque + situación + progreso + acciones.
   La rellena app.js con lo que antes vivía en la cabecera de la página. */
.side-card .dh-badge{margin-bottom:10px}
/* Una línea por dato: con separadores «·» en línea, al partirse el texto la
   segunda línea empezaba por el punto. */
.side-meta{display:flex;flex-direction:column;gap:3px;font-size:.8rem;color:var(--muted);margin-bottom:16px}
.side-meta span{display:block;background:none;border:none;padding:0;line-height:1.45}
.side-meta b{color:var(--ink);font-weight:600}
.side-cta{display:flex;flex-direction:column;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.side-cta .dh-btn{justify-content:center;padding:11px 14px;font-size:.86rem}

/* Índice de epígrafes del tema, fijo en el lateral de cada epígrafe.
   Lo rellena app.js leyendo la portada del tema. */
.side-index h5{margin-bottom:10px}
.side-epis{list-style:none;display:flex;flex-direction:column;gap:1px;margin:0 -7px;padding:0;
  max-height:min(46vh,420px);overflow:auto}
.side-epi{display:flex;align-items:center;gap:9px;padding:7px;border-radius:9px;text-decoration:none;
  color:var(--muted);font-size:.82rem;line-height:1.35;transition:.15s}
.side-epi .n{flex:none;width:21px;height:21px;border-radius:6px;display:grid;place-items:center;
  background:rgba(20,60,140,.06);font-family:'Oswald';font-weight:600;font-size:.72rem;color:var(--muted);transition:.15s}
.side-epi .t{min-width:0}
.side-epi .ck{flex:none;margin-left:auto;color:#19b97b;font-weight:700;font-size:.8rem;opacity:0;transition:.15s}
.side-epi:hover{background:color-mix(in srgb,var(--dh-c,#1f6fe0) 6%,#fff);color:var(--ink)}
.side-epi.done .n{background:rgba(25,185,123,.16);color:#0e8f5f}
.side-epi.done .ck{opacity:1}
/* el epígrafe abierto: no es un enlace más, es «dónde estoy» */
.side-epi.is-now{background:color-mix(in srgb,var(--dh-c,#1f6fe0) 10%,#fff);color:var(--ink);font-weight:600;
  box-shadow:inset 2px 0 0 var(--dh-c,#1f6fe0)}
.side-epi.is-now .n{background:var(--dh-c,#1f6fe0);color:#fff}
.side-index .side-tema-link{margin-top:12px;padding-top:12px;border:none;border-top:1px solid var(--line);
  border-radius:0;background:none;font-size:.82rem;font-weight:600;color:var(--muted)}
.side-index .side-tema-link:hover{color:var(--dh-c,#1f6fe0)}
.progress-ring{display:flex;align-items:center;gap:14px;margin-bottom:2px}
.ring{position:relative;width:64px;height:64px;flex-shrink:0}
.ring svg{transform:rotate(-90deg)}
/* el stroke del marcado es un atributo de presentación: cualquier regla CSS
   lo gana, así el anillo toma el color del bloque del tema. */
.ring-prog{stroke:var(--dh-c,#2e7bff)}
.ring .pct{position:absolute;inset:0;display:grid;place-items:center;font-family:'Oswald';font-weight:700;font-size:.98rem}
.prog-txt b{font-family:'Oswald';font-size:1.35rem;display:block;line-height:1;font-variant-numeric:tabular-nums}
.prog-txt span{font-size:.76rem;color:var(--muted)}
.side-nav{display:flex;flex-direction:column;gap:8px}
.side-nav button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#fff;border:1px solid var(--line);border-radius:10px;padding:11px 13px;cursor:pointer;color:var(--ink);font-family:'Sora';transition:.18s}
.side-nav button:hover:not(:disabled){border-color:var(--blue-bright);background:rgba(46,123,255,.06)}
.side-nav button:disabled{opacity:.35;cursor:default}
.side-nav .lab{font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.side-nav .ti{font-size:.82rem;font-weight:500;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3}
.side-nav .ar{margin-left:auto;color:var(--muted)}
/* En una columna, en la portada de tema, la ficha del tema (progreso +
   «continuar») sube por delante de la lista y la navegación entre temas baja al
   final. `display:contents` disuelve el <aside> para poder ordenar cada ficha
   por separado. Solo aplica a portadas de tema (.is-tema, la marca app.js):
   en un epígrafe lo primero tiene que seguir siendo el contenido. */
@media(max-width:900px){
  /* align-items:stretch: en columna, `start` dejaría las fichas al ancho de su
     contenido en vez de ocupar la columna. */
  .detail-grid{display:flex;flex-direction:column;align-items:stretch}
  .detail-side{position:static}
  .is-tema .detail-side{display:contents}
  .is-tema .detail-side>.side-card{order:1}
  .is-tema .detail-side>.side-card:first-child{order:-1}
}

.strip{margin:30px 0 0;position:relative;border-radius:24px;overflow:hidden;background:linear-gradient(120deg,var(--navy-600),var(--navy-700));border:1px solid var(--line);padding:54px 44px;text-align:center}
.strip::before{content:'';position:absolute;inset:0;opacity:.5;background:radial-gradient(500px 300px at 80% 0%,rgba(46,123,255,.3),transparent 60%),radial-gradient(400px 250px at 10% 100%,rgba(20,82,214,.16),transparent 60%)}
.strip>*{position:relative}
.strip h2{font-family:'Oswald';font-weight:700;font-size:clamp(1.8rem,4vw,2.8rem);text-transform:uppercase;margin-bottom:14px}
.strip p{color:var(--muted);max-width:520px;margin:0 auto 28px;font-weight:300}

/* Pie CLARO (blanco), a juego con el cuerpo; se separa por la línea superior. */
footer{margin-top:80px;background:#fff;border-top:1px solid var(--line);padding:46px 0 36px;color:var(--muted)}
.foot-in{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:24px}
.foot-brand{display:flex;align-items:center;gap:14px}
.foot-brand img{height:44px}
.foot-brand b{font-family:'Oswald';font-weight:700;color:var(--ink)}.foot-brand b span{color:var(--blue-sky)}
.foot-brand small{display:block;color:var(--muted);font-size:.7rem;letter-spacing:2px;text-transform:uppercase}
footer .copy{color:var(--muted);font-size:.78rem}
.foot-social{display:flex;gap:12px}
.foot-social a{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);display:grid;place-items:center;color:var(--blue-sky);text-decoration:none;transition:.2s;cursor:pointer}
.foot-social a:hover{color:#fff;border-color:var(--blue-bright);background:var(--blue-bright)}
@media(max-width:560px){.wrap{padding:0 18px}.sec{padding:46px 0}.detail-hero{padding:28px 22px}.dh-num{font-size:2.4rem}}

/* ── Apartado especial: acepciones del Derecho según los filósofos ── */
.deep{margin-top:40px}
.deep-head{font-family:'Oswald';font-weight:600;font-size:1.05rem;text-transform:uppercase;letter-spacing:.6px;margin-bottom:6px;display:flex;align-items:center;gap:10px}
.deep-head::before{content:'';width:26px;height:2px;background:var(--red-bright)}
.deep-sub{color:var(--muted);font-weight:300;font-size:.9rem;margin-bottom:22px;max-width:680px}
.acep3{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-bottom:30px}
.acep3 .a{background:rgba(46,123,255,.07);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.acep3 .a b{font-family:'Oswald';color:var(--blue-sky);font-size:.92rem;display:block;margin-bottom:5px;letter-spacing:.5px}
.acep3 .a span{font-size:.8rem;color:var(--muted);font-weight:300;line-height:1.5}
.phlegend{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:22px}
.phlegend .l{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--muted);font-weight:500}
.phlegend .pd{width:11px;height:11px;border-radius:3px}
.phlegend .iusnat{background:var(--blue-bright)}.phlegend .iuspos{background:#19b97b}.phlegend .real{background:#64748b}
.phgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.phil{position:relative;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;overflow:hidden;transition:.28s;backdrop-filter:blur(6px)}
.phil::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;transform:scaleY(0);transform-origin:top;transition:.28s}
.phil:hover{transform:translateY(-4px);border-color:rgba(46,123,255,.45);box-shadow:0 18px 40px rgba(20,40,90,.14)}
.phil:hover::before{transform:scaleY(1)}
.phil.iusnat::before{background:var(--blue-bright)}.phil.iuspos::before{background:#19b97b}.phil.real::before{background:#64748b}
.ph-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:10px}
.ph-num{font-family:'Oswald';font-weight:700;font-size:.9rem;color:#fff;width:40px;height:40px;border-radius:11px;display:grid;place-items:center;flex-shrink:0}
.phil.iusnat .ph-num{background:rgba(46,123,255,.18);color:var(--blue-sky)}
.phil.iuspos .ph-num{background:rgba(25,185,123,.18);color:#3ee6a0}
.phil.real .ph-num{background:rgba(100,116,139,.20);color:#475569}
.ph-era{font-size:.66rem;color:var(--muted);letter-spacing:.5px;border:1px solid var(--line);padding:4px 10px;border-radius:50px;white-space:nowrap}
.phil h5{font-family:'Oswald';font-weight:600;font-size:1.12rem;line-height:1.15;text-transform:uppercase;letter-spacing:.4px;color:var(--ink)}
.ph-school{font-family:'Oswald';font-weight:500;font-size:.7rem;letter-spacing:2px;text-transform:uppercase;margin:6px 0 12px}
.phil.iusnat .ph-school{color:var(--blue-sky)}.phil.iuspos .ph-school{color:#3ee6a0}.phil.real .ph-school{color:#475569}
.ph-quote{font-style:italic;font-size:.88rem;color:var(--ink);border-left:2px solid var(--line);padding-left:12px;margin-bottom:12px;font-weight:300}
.phil p{font-size:.84rem;color:var(--muted);font-weight:300;line-height:1.55}
.phil p b{color:var(--ink);font-weight:600}
.ph-tag{display:inline-block;margin-top:12px;font-size:.66rem;letter-spacing:1px;text-transform:uppercase;color:var(--muted);background:rgba(255,255,255,.04);border:1px solid var(--line);padding:5px 11px;border-radius:50px}


/* ── overrides MPA ── */
a{color:inherit}
.brand,.nav-links a,.card,.epi-body,.back-btn,.side-tema-link,.foot-brand{text-decoration:none}
.card{display:block}
.epi-body.go{display:block;color:inherit}
.foot-brand{display:flex;align-items:center;gap:12px}
.epi-content code{background:rgba(46,123,255,.12);padding:2px 7px;border-radius:6px;font-size:.86em}

/* ── Pantalla de acceso (login) ── */
.login-overlay{position:fixed;inset:0;z-index:999;display:none;place-items:center;padding:24px;
  background:
    radial-gradient(1100px 700px at 78% -8%, rgba(46,123,255,.12), transparent 60%),
    radial-gradient(900px 600px at 8% 12%, rgba(20,82,214,.09), transparent 55%),
    linear-gradient(180deg,#f7faff 0%,#eaf1fb 45%,#f7faff 100%)}
html.locked .login-overlay{display:grid}
html.locked{overflow:hidden}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;z-index:1}
.login-card{width:100%;max-width:400px;background:var(--card);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:20px;padding:40px 34px;text-align:center;box-shadow:0 24px 60px rgba(20,40,90,.14)}
.login-logo{height:64px;width:auto;margin-bottom:22px;filter:drop-shadow(0 4px 14px rgba(46,123,255,.3))}
.login-title{font-family:'Oswald';font-weight:700;font-size:1.9rem;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}
.login-title span{color:var(--blue-sky)}
.login-sub{color:var(--muted);font-size:.9rem;font-weight:300;margin-bottom:26px}
.login-field{position:relative;margin-bottom:16px}
.login-field input{width:100%;background:#fff;border:1px solid var(--line);border-radius:11px;padding:14px 46px 14px 16px;color:var(--ink);font-family:'Sora';font-size:.95rem;transition:.2s}
.login-field input:focus{outline:none;border-color:var(--blue-bright);box-shadow:0 0 0 3px rgba(46,123,255,.15)}
.login-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:1.05rem;opacity:.55;padding:6px;line-height:1}
.login-eye:hover{opacity:1}
.login-btn{width:100%;justify-content:center;margin-top:4px}
.login-error{color:#d23b3b;font-size:.85rem;margin-top:14px;min-height:1.1em;opacity:0;transition:.2s}
.login-error.show{opacity:1}
.login-card.shake{animation:shake .4s}
@keyframes shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-7px)}40%,80%{transform:translateX(7px)}}

/* ═══════════════════════════════════════════════════════════════════════════
   PLANTILLAS DE EPÍGRAFE · catálogo navegable en /resources/plantillas/
   Componentes reutilizables dentro de .epi-content. Color por bloque con
   style="--c1:#hex" inline. Mismo lenguaje: pastel (color-mix), Oswald, sombras.
   ═══════════════════════════════════════════════════════════════════════════ */

/* Cronología · línea de tiempo vertical con hito (dot) + tarjeta */
.timeline{margin:28px 0;padding-left:9px}
.timeline .tl-item{position:relative;padding:0 0 22px 32px;border-left:2px solid var(--line)}
.timeline .tl-item:last-child{padding-bottom:2px}
.timeline .tl-dot{position:absolute;left:-9px;top:1px;width:18px;height:18px;border-radius:50%;background:var(--c1);border:3px solid #fff;box-shadow:0 0 0 2px color-mix(in srgb,var(--c1) 40%,#fff),0 6px 14px rgba(20,40,90,.18)}
.timeline .tl-date{display:inline-block;font-family:'Oswald';font-weight:600;font-size:.8rem;letter-spacing:.4px;color:#fff;background:var(--c1);padding:4px 13px;border-radius:7px;margin-bottom:8px}
.timeline .tl-card{background:color-mix(in srgb,var(--c1) 9%,#fff);border:1px solid color-mix(in srgb,var(--c1) 22%,#fff);border-radius:12px;padding:12px 16px}
.timeline .tl-card>b{display:block;font-family:'Oswald';font-weight:600;font-size:.98rem;color:var(--c1);margin-bottom:3px}
.timeline .tl-card span b{display:inline;font-weight:600;color:inherit}
.timeline .tl-card span{display:block;font-size:.86rem;line-height:1.55;color:var(--muted);font-weight:300}

/* Tabla comparativa · cabecera azul, filas zebra, primera col. destacada */
.cmptable-wrap{margin:26px 0;overflow-x:auto}
.cmptable{width:100%;border-collapse:separate;border-spacing:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;font-size:.9rem}
.cmptable thead th{background:#0a1733;color:#fff;font-family:'Oswald';font-weight:600;letter-spacing:.4px;text-transform:uppercase;font-size:.78rem;padding:12px 16px;text-align:left}
.cmptable tbody th{font-weight:600;color:var(--ink);background:rgba(46,123,255,.06);text-align:left;white-space:nowrap}
.cmptable td,.cmptable tbody th{padding:11px 16px;border-top:1px solid var(--line);vertical-align:top;line-height:1.5}
.cmptable td{color:var(--muted);font-weight:300}
.cmptable tbody tr:nth-child(even) td,.cmptable tbody tr:nth-child(even) th{background:rgba(46,123,255,.035)}
.cmptable b,.cmptable strong{color:var(--ink);font-weight:600}
/* Variante con código de colores de los esquemas: style="--c1:#hex" en el <th> de cada fila */
.cmptable tbody th[style*="--c1"]{color:var(--c1);background:color-mix(in srgb,var(--c1) 12%,#fff);border-left:4px solid var(--c1)}
.cmptable tbody tr:nth-child(even) th[style*="--c1"]{background:color-mix(in srgb,var(--c1) 17%,#fff)}

/* Capas 3D · bloques iso apilados (tapa + frontal + lateral) con nº y rótulo */
.layers3d{margin:30px 0;--lw:300px;--lh:42px;--ld:32px;--lsep:16px;display:flex;flex-direction:column;align-items:center;padding-top:calc(var(--ld) + 6px);padding-right:var(--ld)}
.layers3d .ly{position:relative;width:var(--lw);height:var(--lh);margin-bottom:calc(var(--ld) + var(--lsep));background:var(--c1);border-radius:2px;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 14px rgba(20,40,80,.18)}
.layers3d .ly:last-child{margin-bottom:0}
.layers3d .ly::before{content:'';position:absolute;left:0;bottom:100%;width:100%;height:var(--ld);background:color-mix(in srgb,var(--c1) 80%,#fff);transform-origin:bottom left;transform:skewX(-45deg)}
.layers3d .ly::after{content:'';position:absolute;left:100%;top:0;width:var(--ld);height:100%;background:color-mix(in srgb,var(--c1) 62%,#000);transform-origin:top left;transform:skewY(-45deg)}
.layers3d .ly .ly-n{position:absolute;left:14px;font-family:'Oswald';font-weight:700;font-style:italic;font-size:1.02rem;color:rgba(255,255,255,.9);text-shadow:0 1px 2px rgba(0,0,0,.3);z-index:2}
.layers3d .ly .ly-t{font-family:'Oswald';font-weight:600;font-size:.98rem;letter-spacing:.3px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.35);z-index:2}

/* Callout «idea clave» · caja destacada con icono (azul de marca) */
.keybox{margin:28px 0;display:flex;gap:16px;align-items:flex-start;background:linear-gradient(120deg,color-mix(in srgb,var(--blue-royal) 10%,#fff),color-mix(in srgb,var(--blue-bright) 6%,#fff));border:1px solid color-mix(in srgb,var(--blue-bright) 30%,#fff);border-left:5px solid var(--blue-bright);border-radius:14px;padding:18px 22px;box-shadow:0 8px 22px rgba(20,40,90,.07)}
.keybox .kb-ico{flex:0 0 auto;width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--blue-royal),var(--blue-bright));display:grid;place-items:center;color:#fff;box-shadow:0 8px 18px rgba(20,82,214,.28)}
.keybox .kb-ico svg{width:24px;height:24px}
.keybox .kb-body b{display:block;font-family:'Oswald';font-weight:600;font-size:1rem;letter-spacing:.4px;text-transform:uppercase;color:var(--blue-sky);margin-bottom:4px}
.keybox .kb-body p{margin:0;font-size:.92rem;line-height:1.6;color:var(--muted);font-weight:300}

/* Tarjetas de cifras · grid de datos clave (número grande + etiqueta) */
.statcards{margin:28px 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.statcards .stat{background:color-mix(in srgb,var(--c1) 10%,#fff);border:1px solid color-mix(in srgb,var(--c1) 24%,#fff);border-radius:14px;padding:18px 16px;text-align:center}
.statcards .stat .stat-n{display:block;font-family:'Oswald';font-weight:700;font-size:2rem;line-height:1;color:var(--c1)}
.statcards .stat .stat-l{display:block;margin-top:6px;font-size:.82rem;line-height:1.4;color:var(--muted);font-weight:300}
/* Aísla las tarjetas KPI del `.stat` del HERO (`.stat b` = Oswald 2.1rem en
   bloque · `.stat span` = mayúsculas). Sin esto, cada <b> dentro de .stat-l se
   convertía en un titular gigante en su propia línea y desbordaba la tarjeta. */
.statcards .stat b{font-family:inherit;font-size:inherit;font-weight:600;color:inherit;display:inline;line-height:inherit}
.statcards .stat span{letter-spacing:normal;text-transform:none}

/* Comparativa a 2 columnas · dos tarjetas (cada una con su --c1) + nodo central */
.vs{margin:28px 0;display:grid;grid-template-columns:1fr auto 1fr;align-items:stretch}
.vs .vs-col{background:color-mix(in srgb,var(--c1) 10%,#fff);border:1px solid color-mix(in srgb,var(--c1) 26%,#fff);border-radius:14px;padding:16px 18px}
.vs .vs-col h5{font-family:'Oswald';font-weight:600;font-size:1rem;letter-spacing:.3px;color:var(--c1);margin:0 0 10px;text-transform:uppercase}
.vs .vs-col ul{margin:0;padding-left:18px;color:var(--muted);font-weight:300;font-size:.88rem;line-height:1.55}
.vs .vs-col li{margin-bottom:6px}
.vs .vs-mid{display:grid;place-items:center;padding:0 14px}
.vs .vs-mid span{width:40px;height:40px;border-radius:50%;background:#fff;border:1px solid var(--line);display:grid;place-items:center;font-family:'Oswald';font-weight:700;font-size:.82rem;color:var(--muted);box-shadow:0 6px 14px rgba(20,40,90,.12)}
@media(max-width:560px){.vs{grid-template-columns:1fr;gap:10px}.vs .vs-mid{padding:6px 0}.vs .vs-mid span{transform:rotate(90deg)}}

/* «No confundir» · caja anti-trampa. Aísla el distractor típico del tribunal (lo
   FALSO que suena bien) frente al dato correcto. Cabecera ámbar de aviso; filas a
   2 columnas: .bad (trampa, rojo) | .good (correcto, turquesa). Una .nc-row por
   confusión; cada celda con su <span class="nc-tag"> (p. ej. «Suelen poner» / «Es»). */
.nocon{margin:28px 0;border:1px solid rgba(11,26,58,.22);border-radius:14px;overflow:hidden;box-shadow:0 8px 22px rgba(20,40,90,.1)}
/* Cabecera en azul oscuro (como la del sitio) con el aviso en amarillo. */
.nocon .nc-head{display:flex;align-items:center;gap:10px;background:linear-gradient(180deg,#12294f,#0b1a3a);padding:11px 18px;font-family:'Oswald';font-weight:600;font-size:1rem;letter-spacing:.4px;text-transform:uppercase;color:#eaf1fb}
.nocon .nc-head svg{width:22px;height:22px;flex:0 0 auto;color:#ffc53d}
.nocon .nc-row{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid rgba(11,26,58,.14)}
.nocon .nc-cell{padding:12px 16px;font-size:.9rem;line-height:1.55;color:var(--ink);font-weight:300}
.nocon .nc-cell.bad{background:color-mix(in srgb,#e23b2e 7%,#fff);border-right:1px solid rgba(11,26,58,.14)}
.nocon .nc-cell.good{background:color-mix(in srgb,#13a394 7%,#fff)}
.nocon .nc-tag{display:block;font-family:'Oswald';font-weight:600;font-size:.74rem;letter-spacing:.5px;text-transform:uppercase;margin-bottom:3px}
.nocon .nc-cell.bad .nc-tag{color:#c0392b}
.nocon .nc-cell.good .nc-tag{color:#0f8a7e}
@media(max-width:560px){.nocon .nc-row{grid-template-columns:1fr}.nocon .nc-cell.bad{border-right:0;border-bottom:1px solid rgba(11,26,58,.14)}}

/* Infografía radial · capas concéntricas (sectores de corona) + flechas y etiquetas.
   El SVG es estático (geometría generada); edita solo los textos y, si quieres, los
   colores de cada banda en el SVG. Las etiquetas .rl llevan su color en --c1. */
.radial{position:relative;width:100%;max-width:920px;margin:32px auto;aspect-ratio:1000/720}
.radial>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.radial .r-num{fill:#fff;font-family:'Oswald',sans-serif;font-weight:700;font-size:23px;text-anchor:middle;dominant-baseline:central}
.radial .rl{position:absolute;width:clamp(130px,19vw,210px)}
.radial .rl.left{transform:translate(-100%,-50%);text-align:right;padding-right:16px}
.radial .rl.right{transform:translate(0,-50%);text-align:left;padding-left:16px}
.radial .rl b{display:block;font-family:'Oswald';font-weight:700;font-size:.98rem;letter-spacing:.3px;text-transform:uppercase;color:var(--c1);margin-bottom:4px;line-height:1.15}
.radial .rl p{margin:0;font-size:.76rem;line-height:1.45;color:var(--muted);font-weight:300}
@media(max-width:680px){.radial .rl{width:clamp(96px,28vw,150px)}.radial .rl b{font-size:.74rem}.radial .rl p{font-size:.62rem}}

/* Cronología horizontal de galones · años en bloques-flecha encajados + etiquetas
   alternadas arriba/abajo. Color por bloque con --c1. Las celdas con texto llevan
   class="htl-cell on" (las vacías son huecos). Filas: top (pares) / bot (impares). */
.htl-wrap{margin:30px 0}
.htl-row{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}
.htl-row.top .htl-cell.on{border-left:2px solid var(--c1);padding-left:14px;min-height:118px}
.htl-row.bot .htl-cell.on{border-left:2px solid var(--c1);padding-left:14px;min-height:118px;display:flex;flex-direction:column;justify-content:flex-end}
.htl-wrap .lbl b{display:block;font-family:'Oswald';font-weight:700;font-size:1rem;letter-spacing:.3px;text-transform:uppercase;color:var(--c1);margin-bottom:4px}
.htl-wrap .lbl p{margin:0;font-size:.8rem;line-height:1.45;color:var(--muted);font-weight:300}
.htl{display:flex;gap:7px;border-radius:34px;overflow:hidden;background:#fff}
.htl .seg{flex:1;min-width:0;height:68px;display:flex;align-items:center;justify-content:center;
  color:#fff;font-family:'Oswald';font-weight:700;font-size:1.7rem;letter-spacing:.5px;background:var(--c1);
  clip-path:polygon(0 0,calc(100% - 22px) 0,100% 50%,calc(100% - 22px) 100%,0 100%,22px 50%)}
.htl .seg:first-child{clip-path:polygon(0 0,calc(100% - 22px) 0,100% 50%,calc(100% - 22px) 100%,0 100%)}
.htl .seg:last-child{clip-path:polygon(0 0,100% 0,100% 100%,0 100%,22px 50%)}
@media(max-width:680px){.htl .seg{height:54px;font-size:1.15rem;clip-path:polygon(0 0,calc(100% - 14px) 0,100% 50%,calc(100% - 14px) 100%,0 100%,14px 50%)}
  .htl-wrap .lbl b{font-size:.78rem}.htl-wrap .lbl p{font-size:.66rem}
  .htl-row.top .htl-cell.on,.htl-row.bot .htl-cell.on{min-height:96px;padding-left:9px}}

/* Cronología de flechas con iconos · galones afilados que encajan + icono circular
   conectado por línea de puntos + etiqueta. Alterna arriba/abajo. Color con --c1.
   Filas .al-top (icono arriba) / .al-bot (icono abajo); celdas con nodo = "al-cell on". */
.arrowline{margin:30px 0}
.arrowline .al-row{display:grid;grid-template-columns:repeat(6,1fr)}
.arrowline .al-cell{display:flex}
.arrowline .al-top .al-cell{align-items:flex-end}
.arrowline .al-bot .al-cell{align-items:flex-start}
.arrowline .al-cell.on{min-height:158px}
.arrowline .al-node{display:flex;gap:10px;width:100%;height:100%}
.arrowline .al-label{flex:1;min-width:0}
.arrowline .al-top .al-label{text-align:right}
.arrowline .al-bot .al-label{align-self:flex-end}
.arrowline .al-label b{display:block;font-family:'Oswald';font-weight:700;font-size:1rem;letter-spacing:.3px;color:var(--c1)}
.arrowline .al-label p{margin:6px 0 0;font-size:.77rem;line-height:1.45;color:var(--muted);font-weight:300}
.arrowline .al-conn{display:flex;flex-direction:column;align-items:center;flex:0 0 54px;height:100%}
.arrowline .al-ico{flex:0 0 auto;width:54px;height:54px;border-radius:50%;border:2px solid var(--c1);background:#fff;display:grid;place-items:center;color:var(--c1);box-shadow:0 4px 12px rgba(20,40,90,.10)}
.arrowline .al-ico svg{width:26px;height:26px}
.arrowline .al-line{width:2px;flex:1 0 16px;background:repeating-linear-gradient(var(--c1) 0 5px,transparent 5px 10px)}
.arrowline .al-dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:var(--c1)}
.arrowline .al-bar{display:flex;margin:4px 0}
.arrowline .al-seg{flex:1;min-width:0;height:62px;display:flex;align-items:center;justify-content:center;color:#fff;font-family:'Oswald';font-weight:700;font-size:1.55rem;letter-spacing:.5px;background:var(--c1);
  clip-path:polygon(0 0,calc(100% - 24px) 0,100% 50%,calc(100% - 24px) 100%,0 100%,24px 50%)}
.arrowline .al-seg:first-child{clip-path:polygon(0 0,calc(100% - 24px) 0,100% 50%,calc(100% - 24px) 100%,0 100%)}
.arrowline .al-seg+.al-seg{margin-left:-24px}
@media(max-width:680px){.arrowline .al-ico{width:42px;height:42px}.arrowline .al-ico svg{width:20px;height:20px}
  .arrowline .al-conn{flex-basis:42px}.arrowline .al-cell.on{min-height:124px}
  .arrowline .al-seg{height:48px;font-size:1.1rem;clip-path:polygon(0 0,calc(100% - 15px) 0,100% 50%,calc(100% - 15px) 100%,0 100%,15px 50%)}
  .arrowline .al-seg:first-child{clip-path:polygon(0 0,calc(100% - 15px) 0,100% 50%,calc(100% - 15px) 100%,0 100%)}
  .arrowline .al-seg+.al-seg{margin-left:-15px}
  .arrowline .al-label b{font-size:.76rem}.arrowline .al-label p{font-size:.64rem}}

/* Regla nemotécnica · recuadro compacto con icono "clave" + truco; acrónimo en .mn-key.
   Tonos azules; los elementos fuertes (icono, acrónimo) en azul oscuro.
   --mn-soft = azul (filete/tinte) · --mn-strong = azul oscuro (fuertes). */
.mnemo{--mn-soft:#2e7bff;--mn-strong:#1140b0;margin:24px 0;display:flex;gap:14px;align-items:center;background:color-mix(in srgb,var(--mn-soft) 14%,#fff);border-left:4px solid var(--mn-soft);border-radius:10px;padding:13px 18px}
.mnemo .mn-ico{flex:0 0 auto;width:36px;height:36px;border-radius:10px;background:var(--mn-strong);color:#fff;display:grid;place-items:center;box-shadow:0 6px 14px rgba(17,64,176,.28)}
.mnemo .mn-ico svg{width:20px;height:20px}
.mnemo .mn-body{flex:1;min-width:0}
.mnemo .mn-tag{display:block;font-family:'Oswald';font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:1.2px;color:var(--mn-strong);margin-bottom:2px}
.mnemo .mn-body p{margin:0;font-size:.9rem;line-height:1.5;color:var(--muted);font-weight:300}
.mnemo .mn-key{font-family:'Oswald';font-weight:700;color:var(--mn-strong);letter-spacing:.5px}

/* Ficha de autor · foto (o monograma) al lado + cita y nombre. Para sociología:
   «quién dijo qué». Color por ficha con --c1. Sin foto disponible, usar el
   monograma: <span class="cita-foto cita-ini" data-ini="TL"></span>. */
.citas{margin:26px 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:20px 24px}
.cita{display:flex;gap:16px;align-items:center;margin:0}
.cita .cita-foto{flex:0 0 auto;width:66px;height:66px;border-radius:50%;object-fit:cover;object-position:top center;background:color-mix(in srgb,var(--c1) 16%,#fff);border:2px solid color-mix(in srgb,var(--c1) 38%,#fff);box-shadow:0 4px 12px rgba(20,40,90,.16)}
.cita .cita-ini{display:grid;place-items:center;font-family:'Oswald';font-weight:700;font-size:1.15rem;letter-spacing:.5px;color:var(--c1)}
.cita .cita-ini::after{content:attr(data-ini)}
.cita .cita-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;border-left:3px solid var(--c1);padding-left:16px}
.cita .cita-q{margin:0;font-size:.92rem;line-height:1.55;color:var(--muted);font-weight:300;font-style:italic}
.cita .cita-q b{color:var(--ink);font-weight:600;font-style:normal}
.cita .cita-aut{order:-1;font-style:normal;line-height:1.3}
.cita .cita-aut b{font-family:'Oswald';font-weight:600;font-size:.98rem;letter-spacing:.4px;color:var(--c1)}
.cita .cita-aut span{font-size:.78rem;color:var(--muted);font-weight:300}
.cita .cita-aut span::before{content:'·';margin:0 5px;color:var(--c1);opacity:.6}

/* Organigrama · raíz arriba + columnas de órganos con sus unidades dependientes.
   Para estructuras orgánicas (ministerios, direcciones generales…). Color por
   columna con --c1. Cada unidad puede llevar un .org-rango (badge: rango/nivel). */
.orgchart{margin:30px 0}
.org-root{display:block;width:max-content;max-width:100%;margin:0 auto;font-family:'Oswald';font-weight:600;font-size:1rem;text-transform:uppercase;letter-spacing:.5px;color:#fff;background:linear-gradient(135deg,var(--blue-royal),var(--blue-bright));padding:13px 24px;border-radius:12px;box-shadow:0 12px 30px rgba(20,82,214,.28);text-align:center}
.org-root small{display:block;font-size:.7rem;font-weight:300;letter-spacing:.4px;opacity:.85;text-transform:none;margin-top:3px}
.org-stem{width:2px;height:24px;background:var(--line);margin:6px auto 0}
.org-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:16px;align-items:start}
.org-col{display:flex;flex-direction:column}
.org-head{font-family:'Oswald';font-weight:600;font-size:.92rem;letter-spacing:.3px;color:#fff;background:var(--c1);padding:11px 14px;border-radius:11px 11px 0 0;text-align:center;box-shadow:0 6px 16px rgba(20,40,90,.18)}
.org-head small{display:block;font-size:.66rem;font-weight:300;opacity:.92;text-transform:uppercase;letter-spacing:.6px;margin-top:3px}
.org-body{border:1px solid color-mix(in srgb,var(--c1) 26%,#fff);border-top:none;border-radius:0 0 12px 12px;background:color-mix(in srgb,var(--c1) 6%,#fff);padding:10px;display:flex;flex-direction:column;gap:8px;flex:1}
.org-unit{background:#fff;border:1px solid color-mix(in srgb,var(--c1) 22%,#fff);border-left:3px solid var(--c1);border-radius:8px;padding:9px 12px}
.org-unit b{display:block;font-family:'Oswald';font-weight:600;font-size:.84rem;color:var(--c1);letter-spacing:.2px}
.org-unit span{display:block;font-size:.78rem;line-height:1.45;color:var(--muted);font-weight:300;margin-top:2px}
.org-rango{display:inline-block;margin-top:5px;font-family:'Oswald';font-weight:600;font-size:.62rem;text-transform:uppercase;letter-spacing:.7px;color:var(--c1);background:color-mix(in srgb,var(--c1) 12%,#fff);border:1px solid color-mix(in srgb,var(--c1) 26%,#fff);padding:2px 9px;border-radius:50px}
.org-note{margin:14px 0 0;font-size:.82rem;line-height:1.55;color:var(--muted);font-weight:300;border-left:2px solid var(--line);padding-left:12px}

/* Árbol de organigrama en HTML puro · SIN JavaScript (alternativa a Mermaid).
   Raíz en píldora + tarjetas de unidades con círculo de icono, título de color y
   nota breve; las unidades de 2.º nivel cuelgan indentadas de su tarjeta.
   El color va con --c1 EN EL <li> (lo heredan la tarjeta y la guía del subnivel).
   Estructura:
     <div class="otree">
       <div class="ot-card ot-root"><span class="ot-ic"><i class="fa-solid fa-x"></i></span>
         <span class="ot-t">Raíz<small>nota</small></span></div>
       <div class="ot-stem"></div>
       <ul class="ot-kids">
         <li style="--c1:#d6336c"><div class="ot-card">…</div>
           <ul class="ot-sub"><li><div class="ot-card">…</div></li></ul>
         </li>
       </ul>
     </div>                                                                      */
.otree{margin:30px 0}
.otree .ot-card{display:flex;align-items:center;gap:11px;text-align:left;padding:9px 15px 9px 9px;border-radius:15px;background:color-mix(in srgb,var(--c1) 13%,#fff);border:1px solid color-mix(in srgb,var(--c1) 26%,#fff);box-shadow:0 6px 16px rgba(20,40,90,.08)}
.otree .ot-ic{flex:0 0 auto;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#fff;border:3px solid var(--c1);color:var(--c1);box-shadow:0 6px 16px rgba(20,40,90,.16)}
.otree .ot-ic i{font-size:21px;line-height:1}
.otree .ot-t{font-family:'Oswald',sans-serif;font-weight:600;font-size:.9rem;line-height:1.22;letter-spacing:.2px;color:color-mix(in srgb,var(--c1) 70%,#10202f)}
.otree .ot-t small{display:block;margin-top:3px;font-family:'Sora',sans-serif;font-weight:400;font-size:.7rem;line-height:1.35;letter-spacing:0;color:color-mix(in srgb,var(--c1) 50%,#6a7a90)}
/* Raíz: píldora azul de marca, como la cabecera de un organigrama */
.otree .ot-root{--c1:#4f46e5;width:max-content;max-width:100%;margin:0 auto;background:linear-gradient(135deg,var(--blue-royal),var(--blue-bright));border-color:transparent;box-shadow:0 12px 30px rgba(20,82,214,.28)}
.otree .ot-root .ot-t{color:#fff}
.otree .ot-root .ot-t small{color:rgba(255,255,255,.85)}
.otree .ot-root .ot-ic{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.55);color:#fff}
.otree .ot-stem{width:2px;height:22px;background:var(--line);margin:0 auto}
/* 1.er nivel: rejilla que refluye sola; cada tarjeta con su guía vertical */
.otree .ot-kids{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:14px;align-items:start}
.otree .ot-kids>li{position:relative;padding-top:16px}
/* translateX centra de verdad la guía de 2px (con left:50% queda 1px corrida) */
.otree .ot-kids>li::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:2px;height:16px;background:var(--line)}
/* 2.º nivel: cuelga del CENTRO DEL ICONO del padre (9px de padding + 48px/2 = 33px)
   y cada hija remata con un trazo horizontal que apunta a su tarjeta. */
.otree .ot-sub{list-style:none;margin:9px 0 0 32px;padding:0 0 0 15px;border-left:2px solid color-mix(in srgb,var(--c1) 32%,#fff);display:flex;flex-direction:column;gap:7px}
.otree .ot-sub>li{position:relative}
.otree .ot-sub>li::before{content:'';position:absolute;left:-15px;top:24px;width:13px;height:2px;background:color-mix(in srgb,var(--c1) 32%,#fff)}
.otree .ot-sub .ot-card{padding:7px 12px 7px 7px;border-radius:12px}
.otree .ot-sub .ot-ic{width:34px;height:34px;border-width:2px}
.otree .ot-sub .ot-ic i{font-size:15px}
.otree .ot-sub .ot-t{font-size:.82rem}
@media(max-width:560px){.otree .ot-kids{grid-template-columns:1fr}}

/* Diagramas Mermaid embebidos · centrado + responsive. El tema (colores/fuente) se
   configura en assets/mermaid-init.js; el color por nodo va con classDef en el diagrama. */
.epi-content .mermaid{margin:28px 0;text-align:center;line-height:normal}
.epi-content .mermaid svg{max-width:100%;height:auto}
.epi-content .mermaid:not([data-processed]){color:var(--muted);font-size:.85rem;font-family:'Sora'}
/* Nodo de diagrama: icono grande (Font Awesome) en círculo con borde intenso + título al lado.
   El color de marca del nodo se pone con style="color:#hex" en .mnd → el círculo (border) y el
   icono (currentColor) lo heredan; el título va en tinta para máxima legibilidad. */
.epi-content .mermaid .mnd{display:flex;align-items:center;gap:11px;text-align:left;max-width:300px;color:var(--c1,#2980b9);background:color-mix(in srgb,var(--c1,#2980b9) 13%,#fff);border:1px solid color-mix(in srgb,var(--c1,#2980b9) 26%,#fff);border-radius:15px;padding:8px 15px 8px 9px;box-shadow:0 6px 16px rgba(20,40,90,.08)}
/* Mermaid inyecta "#mermaid-id span{color:#0e1b34}" (selector de ID, alta especificidad)
   que pisa el color de marca → forzamos con !important el círculo, el icono y el título. */
.epi-content .mermaid .mnd-ic{flex:0 0 auto;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#fff;border:3px solid var(--c1,#2980b9)!important;color:var(--c1,#2980b9)!important;box-shadow:0 6px 16px rgba(20,40,90,.16)}
.epi-content .mermaid .mnd-ic i{font-size:22px;line-height:1;color:var(--c1,#2980b9)!important}
.epi-content .mermaid .mnd-t{font-family:'Oswald',sans-serif;font-weight:600;font-size:.9rem;line-height:1.22;letter-spacing:.2px;white-space:normal;color:color-mix(in srgb,var(--c1,#2980b9) 70%,#10202f)!important}
.epi-content .mermaid .mnd-t small{display:block;margin-top:3px;font-family:'Sora',sans-serif;font-weight:400;font-size:.7rem;line-height:1.35;letter-spacing:0;color:color-mix(in srgb,var(--c1,#2980b9) 50%,#6a7a90)}
/* Código de colores de los esquemas (paleta de marca): morado·rojo·oro·turquesa·azul.
   Aplica una clase pN al nodo (class="mnd p2") y el círculo+icono toman ese color. */
.epi-content .mermaid .mnd.p1{--c1:#4f46e5}
.epi-content .mermaid .mnd.p2{--c1:#d6336c}
.epi-content .mermaid .mnd.p3{--c1:#e0a500}
.epi-content .mermaid .mnd.p4{--c1:#13a394}
.epi-content .mermaid .mnd.p5{--c1:#2980b9}

/* ─── Lectura «de corrido» ──────────────────────────────────────────────────
   Botón en la portada del tema + vista que encadena todos los epígrafes. */
/* «Leer de corrido»: acción secundaria de la lista. Va en línea discontinua
   para que no compita con las fichas de epígrafe (que son la acción principal). */
.read-all{display:flex;align-items:center;gap:12px;background:#fff;
  border:1px dashed color-mix(in srgb,var(--dh-c,#1f6fe0) 40%,#fff);color:var(--ink);padding:12px 16px;
  border-radius:12px;margin-bottom:10px;font-family:'Sora';font-weight:500;font-size:.9rem;transition:.18s;
  text-decoration:none}
.read-all:hover{border-style:solid;border-color:var(--dh-c,#1f6fe0);background:color-mix(in srgb,var(--dh-c,#1f6fe0) 5%,#fff);box-shadow:0 6px 18px rgba(20,40,90,.08)}
.read-all svg{flex:0 0 auto;color:var(--dh-c,#1f6fe0)}
.read-all .ra-sub{display:block;font-size:.76rem;color:var(--muted);font-weight:300;margin-top:2px}
.read-all .ra-ar{margin-left:auto;color:var(--dh-c,#1f6fe0);transition:.18s}
.read-all:hover .ra-ar{transform:translateX(3px)}

.corrido-index{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 26px;margin-bottom:30px}
.corrido-index .ci-head{font-family:'Oswald';font-weight:600;font-size:1.05rem;text-transform:uppercase;letter-spacing:1px;
  display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;user-select:none}
.corrido-index .ci-head::-webkit-details-marker{display:none}
.corrido-index .ci-ar{margin-left:auto;color:var(--muted);transition:transform .2s}
.corrido-index[open] .ci-ar{transform:rotate(180deg)}
.corrido-index[open] .ci-head{margin-bottom:16px}
.corrido-index ol{margin:0;padding-left:22px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 28px}
.corrido-index li{color:var(--muted);font-weight:300}
.corrido-index a{color:var(--ink);text-decoration:none;font-weight:400}
.corrido-index a:hover{color:var(--blue-bright)}

.corrido-body{display:flex;flex-direction:column;gap:14px}
.corrido-epi{scroll-margin-top:90px;border:1px solid var(--line);border-radius:18px;padding:30px 34px;background:var(--card)}
.corrido-epi .ce-head{display:flex;align-items:flex-start;gap:16px;padding-bottom:18px;margin-bottom:22px;border-bottom:1px solid var(--line)}
.ce-n{font-family:'Oswald';font-weight:700;font-size:1.1rem;flex-shrink:0;width:44px;height:44px;border-radius:12px;display:grid;place-items:center}
.corrido-epi.A .ce-n{background:rgba(46,123,255,.16);color:var(--blue-sky)}
.corrido-epi.B .ce-n{background:rgba(25,185,123,.16);color:#3ee6a0}
.corrido-epi.C .ce-n{background:rgba(100,116,139,.18);color:#475569}
.ce-tt{flex:1;min-width:0}
.ce-tt h2{font-family:'Oswald';font-weight:700;font-size:1.5rem;line-height:1.12;text-transform:uppercase}
.ce-es{font-size:.88rem;color:var(--muted);font-weight:300;line-height:1.5;margin-top:5px}
.ce-head .epi-check{align-self:flex-start;margin-top:4px}
.corrido-empty{color:var(--muted);font-weight:300}
/* Separador entre temas al cargar de corrido el siguiente */
.corrido-tema-sep{display:flex;align-items:center;gap:14px;margin:14px 0 0;text-align:center}
.corrido-tema-sep::before,.corrido-tema-sep::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--line),transparent)}
.corrido-tema-sep span{font-family:'Oswald';font-weight:700;font-size:1.02rem;text-transform:uppercase;letter-spacing:.5px;color:var(--blue-sky);padding:6px 16px;border:1px solid var(--line);border-radius:999px;background:rgba(46,123,255,.08)}
/* Botón «cargar siguiente tema» del panel de corrido */
.corrido-next{margin-top:26px}
.corrido-next-btn{width:100%;display:flex;align-items:center;gap:14px;cursor:pointer;text-align:left;
  background:linear-gradient(135deg,rgba(46,123,255,.12),rgba(46,123,255,.04));border:1px solid var(--blue-bright);
  border-radius:16px;padding:18px 22px;color:inherit;font:inherit;transition:.18s}
.corrido-next-btn:hover{background:rgba(46,123,255,.16);transform:translateY(-2px);box-shadow:0 10px 24px rgba(20,40,90,.12)}
.corrido-next-btn:disabled{opacity:.6;cursor:default;transform:none;box-shadow:none}
.corrido-next-btn .cn-ico{flex:0 0 auto;color:var(--blue-sky)}
.corrido-next-btn .cn-tt{flex:1;min-width:0}
.corrido-next-btn .lbl{display:block;font-family:'Oswald';font-weight:600;font-size:1.02rem;letter-spacing:.3px}
.corrido-next-btn .cn-sub{display:block;font-size:.78rem;color:var(--muted);font-weight:300;margin-top:2px}
.corrido-next-btn .cn-ar{flex:0 0 auto;margin-left:auto;color:var(--blue-sky);transition:transform .18s}
.corrido-next-btn:hover .cn-ar{transform:translateX(4px)}
.corrido-next-btn.loading .cn-ar{animation:cn-spin .8s linear infinite}
@keyframes cn-spin{to{transform:rotate(360deg)}}
@media(max-width:560px){.corrido-epi{padding:24px 20px}.corrido-index{padding:18px 20px}}

/* ════════ Impresión bloqueada en todo el sitio ════════
   Al imprimir (o "Guardar como PDF"), se oculta TODO el contenido y se muestra
   un aviso. No es una protección infalible (el HTML sigue en el navegador), pero
   impide la impresión/exportación directa desde el menú del navegador. */
@media print{
  html,body{background:#fff !important}
  body>*{display:none !important}
  body::before{
    content:"Impresión no disponible · oposita_tv";
    display:flex;align-items:center;justify-content:center;
    min-height:100vh;padding:40px;text-align:center;
    font-family:'Oswald',sans-serif;font-weight:600;font-size:1.4rem;color:#2c3e63}
}

/* ── Canal Z · feed vertical de vídeos (estilo Reels) ───────────────────
   El feed es el ÚNICO scroll de la página: ocupa la pantalla bajo el nav
   (74px, .nav-in) y hace snap vertical. Por eso, en las páginas que lo llevan,
   el body no scrollea y el pie se oculta (estorbaría al snap). Se detecta con
   :has() para no tener que tocar la plantilla común (inc/header.php). */
body:has(.reels){overflow:hidden}
body:has(.reels) footer{display:none}
body:has(.reels) .bg-field,body:has(.reels) .grain{display:none}
.reels{--navh:74px;height:calc(100svh - var(--navh));overflow-y:auto;background:#050c1e;
  scroll-snap-type:y mandatory;overscroll-behavior:contain;scrollbar-width:none}
.reels::-webkit-scrollbar{display:none}
.reel{position:relative;height:100%;scroll-snap-align:start;scroll-snap-stop:always;
  display:flex;align-items:center;justify-content:center;overflow:hidden;background:#050c1e}
/* Fondo desenfocado con el póster: rellena las bandas del vídeo 16:9 en vertical */
.reel-bg{position:absolute;inset:-40px;background-size:cover;background-position:center;
  filter:blur(34px) brightness(.5) saturate(1.2);transform:scale(1.1)}
.reel-video{position:relative;width:100%;height:100%;object-fit:contain;z-index:1}
.reel-tap{position:absolute;inset:0;z-index:2;border:none;background:none;cursor:pointer;
  -webkit-tap-highlight-color:transparent}
/* Icono de play que asoma al pausar (y parpadea al tocar) */
.reel-icon{position:absolute;z-index:3;width:76px;height:76px;border-radius:50%;pointer-events:none;
  background:rgba(6,14,34,.55) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fff'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E") no-repeat center/34px;
  backdrop-filter:blur(3px);opacity:0;transform:scale(.7);transition:opacity .25s,transform .25s}
.reel.is-paused .reel-icon,.reel.flash .reel-icon{opacity:1;transform:scale(1)}
.reel-side{position:absolute;right:14px;bottom:132px;z-index:4;display:flex;flex-direction:column;gap:14px}
.reel-btn{width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.18);
  background:rgba(6,14,34,.5);color:#fff;cursor:pointer;display:grid;place-items:center;
  backdrop-filter:blur(6px);transition:.2s}
.reel-btn:hover{background:rgba(84,179,255,.35);border-color:#54b3ff}
.reel-btn svg{width:22px;height:22px}
.reel-meta{position:absolute;left:0;right:74px;bottom:0;z-index:4;padding:22px 18px 26px;color:#fff;
  background:linear-gradient(180deg,rgba(6,14,34,0),rgba(6,14,34,.85))}
.reel-chip{display:inline-block;padding:4px 11px;border-radius:999px;background:rgba(84,179,255,.9);
  color:#04142f;font-size:.7rem;font-weight:700;letter-spacing:.6px;text-transform:uppercase}
.reel-meta h2{font-family:'Oswald',sans-serif;font-weight:600;font-size:1.2rem;line-height:1.25;margin:9px 0 0}
.reel-meta p{font-size:.86rem;line-height:1.5;color:#d3e0f7;margin:6px 0 0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.reel-link{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:8px 15px;
  border-radius:9px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);
  color:#fff;text-decoration:none;font-size:.82rem;font-weight:600;transition:.2s}
.reel-link:hover{background:#54b3ff;border-color:#54b3ff;color:#04142f}
.reel-prog{position:absolute;left:0;right:0;bottom:0;z-index:5;height:3px;background:rgba(255,255,255,.16)}
.reel-prog i{display:block;height:100%;width:0;background:#54b3ff;transition:width .25s linear}
/* Estado: cargando / feed vacío / fin del feed (es también el sentinela del scroll) */
.reels-state{height:100%;scroll-snap-align:start;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:16px;padding:30px;text-align:center;color:#c2d0ec}
.reels-state p{margin:0;font-size:.95rem}
.reels-state a{color:#54b3ff}
.reels-spin{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.18);
  border-top-color:#54b3ff;animation:reels-spin .8s linear infinite}
@keyframes reels-spin{to{transform:rotate(360deg)}}
/* En escritorio el feed se centra en una columna estrecha (formato móvil) */
@media(min-width:821px){
  .reels{scroll-padding:0}
  .reel,.reels-state{max-width:430px;margin:0 auto}
  .reel{border-radius:0}
}

/* ── Selector de oposición (portada raíz) ───────────────────────────── */
.op-select{padding:52px 0 80px;position:relative;z-index:1}
.op-hero{text-align:center;max-width:720px;margin:0 auto 46px}
.op-hero .op-logo{width:148px;height:148px;border-radius:26px;object-fit:cover;
  box-shadow:0 18px 46px rgba(8,18,44,.34);border:1px solid rgba(255,255,255,.5)}
.op-hero h1{font-family:'Oswald',sans-serif;font-weight:700;font-size:clamp(2rem,5vw,3.1rem);
  line-height:1.05;margin:22px 0 12px;color:#0c1c3f;text-transform:uppercase;letter-spacing:.5px}
.op-hero h1 .accent{color:#2f7bdc}
.op-hero p{color:#4a5a7e;font-size:1.02rem;line-height:1.6;margin:0}
.op-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;max-width:1080px;margin:0 auto}
.op-card{position:relative;display:block;border-radius:20px;overflow:hidden;background:#0c1c3f;
  box-shadow:0 14px 40px rgba(8,18,44,.28);border:1px solid rgba(8,18,44,.10);
  transition:transform .28s ease,box-shadow .28s ease}
.op-card:hover{transform:translateY(-7px);box-shadow:0 26px 60px rgba(8,18,44,.42)}
.op-card img{width:100%;height:auto;display:block;aspect-ratio:1054/1492;object-fit:cover}
.op-card .op-go{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;
  justify-content:space-between;gap:10px;padding:16px 18px;color:#fff;
  background:linear-gradient(180deg,rgba(6,14,34,0),rgba(6,14,34,.92));
  transform:translateY(8px);opacity:.92;transition:.28s}
.op-card:hover .op-go{transform:translateY(0);opacity:1}
.op-card .op-go b{font-family:'Oswald',sans-serif;font-weight:600;font-size:1.05rem;letter-spacing:.4px}
.op-card .op-go span{display:inline-flex;align-items:center;gap:6px;font-size:.84rem;font-weight:600;
  color:#bcd4ff}
.op-badge{position:absolute;top:14px;right:14px;z-index:2;padding:6px 13px;border-radius:999px;
  font-size:.72rem;font-weight:700;letter-spacing:.6px;text-transform:uppercase;
  backdrop-filter:blur(4px);box-shadow:0 4px 14px rgba(0,0,0,.25)}
.op-badge.live{background:rgba(38,170,109,.95);color:#fff}
.op-badge.soon{background:rgba(255,255,255,.9);color:#0c1c3f}
.op-card .op-badge.soon{}
/* Atenúa ligeramente los cuerpos aún no disponibles */
.op-card:has(.op-badge.soon) img{filter:saturate(.92) brightness(.96)}
/* Variante de 4 tarjetas (portada CNP: Temario · Tests · Laboratorio · Canal Z) */
.op-grid-4{grid-template-columns:repeat(4,1fr);max-width:1440px}
@media(max-width:1180px){.op-grid-4{grid-template-columns:repeat(2,1fr);max-width:720px}}
@media(max-width:820px){.op-grid{grid-template-columns:1fr;max-width:420px}
  .op-grid-4{grid-template-columns:1fr;max-width:420px}}
/* Marca bajo las tarjetas: esta pantalla no lleva cabecera ni pie, así que el
   logo, el nombre y la salida viven aquí. */
.op-mark{display:flex;flex-direction:column;align-items:center;gap:8px;margin:26px auto 0;text-align:center}
.op-mark img{height:100px;width:auto}
.op-mark-name b{font-family:'Oswald',sans-serif;font-weight:700;font-size:1.12rem;letter-spacing:.5px;color:var(--ink)}
.op-mark-name b span{color:var(--blue-sky)}
.op-mark-name small{display:block;color:var(--muted);font-size:.66rem;letter-spacing:.22em;
  text-transform:uppercase;font-weight:500;margin-top:2px}
.op-exit{margin-top:6px;color:var(--muted);text-decoration:none;font-size:.8rem;font-weight:600;
  padding:7px 18px;border:1px solid var(--line);border-radius:8px;transition:.2s}
.op-exit:hover{color:var(--blue-royal);border-color:var(--blue-bright);background:rgba(46,123,255,.07)}
/* Pantalla SIN CROMO (`$ot_bare`): todo sube y se compacta para que las
   tarjetas, el logo y la salida quepan de un vistazo, sin scroll. */
body.ot-bare .op-select{padding:22px 0 20px}
body.ot-bare .op-hero{margin-bottom:18px}
body.ot-bare .op-hero h1{font-size:clamp(1.5rem,3vw,2.1rem);margin:0 0 6px}
body.ot-bare .op-hero p{font-size:.9rem;line-height:1.45}
body.ot-bare .op-mark-name b{font-size:1rem}
body.ot-bare .op-exit{margin-top:2px;padding:6px 15px;font-size:.76rem}
@media screen and (min-width:900px){
  /* Las tarjetas se miden por el ALTO disponible (no por el ancho): así la
     marca de abajo entra siempre en pantalla. El póster se recorta. */
  body.ot-bare .op-card img{aspect-ratio:auto;height:min(44vh,460px)}
  /* La pantalla ocupa el alto completo: las tarjetas se centran en vertical
     entre el titular y la marca, y la marca queda anclada abajo del todo
     (los `margin:auto` del grid se reparten el espacio libre a partes iguales). */
  body.ot-bare .op-select{min-height:100dvh;display:flex}
  body.ot-bare .op-select>.wrap{flex:1;display:flex;flex-direction:column}
  body.ot-bare .op-grid{margin:auto}
  body.ot-bare .op-mark{margin-top:0;padding-top:28px}
}

/* ============================================================
   SIMULACROS · lista + runner de test (assets/test-runner.js)
   ============================================================ */
.sim-state{display:flex;align-items:center;gap:14px;justify-content:center;padding:48px 20px;color:var(--muted);font-weight:300;flex-wrap:wrap}
.sim-state.sim-err{color:var(--ink)}
.sim-spin{width:26px;height:26px;border:3px solid var(--line);border-top-color:var(--blue-bright);border-radius:50%;animation:simspin .8s linear infinite}
@keyframes simspin{to{transform:rotate(360deg)}}

/* --- lista de simulacros --- */
.sim-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:12px}
.sim-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:14px;
  padding:18px;text-decoration:none;color:var(--ink);box-shadow:0 1px 2px rgba(20,40,90,.04);transition:.18s}
.sim-card:hover{border-color:color-mix(in srgb,var(--dh-c,#1f6fe0) 45%,#fff);
  background:color-mix(in srgb,var(--dh-c,#1f6fe0) 4%,#fff);box-shadow:0 6px 18px rgba(20,40,90,.08)}
.sim-card-top{margin-bottom:10px}
.sim-pill{display:inline-block;font-family:'Sora';font-weight:600;font-size:.71rem;letter-spacing:.01em;
  text-transform:none;color:#12408f;background:#eef4ff;border:1px solid #dfe9ff;padding:3px 10px;border-radius:50px;
  font-variant-numeric:tabular-nums}
.sim-card h4{font-family:'Oswald';font-weight:600;font-size:1.05rem;line-height:1.25;margin:0 0 4px}
.sim-card p{color:var(--muted);font-size:.86rem;font-weight:300;line-height:1.5;margin:0;flex:1}
.sim-card-foot{margin-top:14px}
.sim-card-foot .open{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:.86rem;color:var(--dh-c,#1f6fe0);transition:.18s}
.sim-card:hover .open{gap:10px}

/* --- runner (mismo lenguaje que la lista: superficie blanca y título con filete) --- */
.qz-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;
  padding-bottom:14px;border-bottom:2px solid var(--dh-c,#1f6fe0);flex-wrap:wrap}
.qz-head h2{font-family:'Oswald';font-weight:700;font-size:clamp(1.35rem,2.6vw,1.9rem);line-height:1.1;
  text-transform:uppercase;letter-spacing:-.3px;margin:4px 0 0}
.qz-kicker{font-family:'Oswald';font-weight:500;font-size:.74rem;letter-spacing:3px;text-transform:uppercase;color:var(--red-bright)}
.qz-q{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:12px;
  box-shadow:0 1px 2px rgba(20,40,90,.04)}
.qz-enun{display:flex;gap:14px;align-items:flex-start;margin-bottom:16px}
.qz-n{flex:none;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-family:'Oswald';font-weight:700;color:#fff;background:linear-gradient(135deg,var(--blue-royal),var(--blue-bright))}
.qz-enun p{margin:3px 0 0;font-weight:500;font-size:1.02rem;line-height:1.45}
.qz-opts{display:flex;flex-direction:column;gap:10px}
.qz-opt{display:flex;gap:12px;align-items:center;text-align:left;width:100%;background:#fff;border:1.5px solid var(--line);border-radius:10px;padding:11px 14px;cursor:pointer;font-family:'Sora';font-size:.92rem;color:var(--ink);transition:.18s}
.qz-opt:hover:not(:disabled){border-color:var(--blue-bright);background:rgba(46,123,255,.08)}
.qz-opt:disabled{cursor:default}
.qz-letter{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-family:'Oswald';font-weight:700;font-size:.85rem;border:1.5px solid var(--line);color:var(--muted)}
.qz-opt.is-chosen{border-color:var(--blue-bright);background:rgba(46,123,255,.12)}
.qz-opt.is-chosen .qz-letter{background:var(--blue-bright);color:#fff;border-color:transparent}
.qz-opt.is-correct{border-color:#19b97b;background:rgba(25,185,123,.12)}
.qz-opt.is-correct .qz-letter{background:#19b97b;color:#fff;border-color:transparent}
.qz-opt.is-wrong{border-color:#e0506b;background:rgba(224,80,107,.1)}
.qz-opt.is-wrong .qz-letter{background:#e0506b;color:#fff;border-color:transparent}
.qz-expl{margin-top:14px;padding:13px 15px;border-left:3px solid var(--blue-bright);background:rgba(46,123,255,.06);border-radius:0 10px 10px 0;font-size:.9rem;color:var(--muted);line-height:1.5}
.qz-expl b{color:var(--ink)}
/* Barra de «Corregir»: al final del test, en el flujo. Antes iba fija abajo
   (position:sticky) y tapaba la última pregunta. */
.qz-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fff;
  border:1px solid var(--line);border-radius:12px;padding:14px 18px;margin:18px 0 0;flex-wrap:wrap;
  box-shadow:0 1px 2px rgba(20,40,90,.04)}
.qz-prog{color:var(--muted);font-size:.92rem}
.qz-prog b{color:var(--ink);font-family:'Oswald';font-size:1.15rem}

/* --- resultado --- */
.qz-score{background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px;margin-bottom:20px;box-shadow:0 8px 26px rgba(20,40,90,.06)}
.qz-score-main{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.qz-score-main h3{font-family:'Oswald';font-weight:600;font-size:1.5rem;margin:0}
.qz-score-main p{color:var(--muted);margin:6px 0 0;font-size:.95rem}
.qz-ring{flex:none;width:96px;height:96px;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(var(--blue-bright) calc(var(--pct)*1%),var(--line) 0)}
.qz-ring span{width:74px;height:74px;border-radius:50%;background:var(--paper,#fff);display:grid;place-items:center;font-family:'Oswald';font-weight:700;font-size:1.4rem;color:var(--ink)}
.qz-score-tags{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}
.qz-tag{font-size:.85rem;font-weight:600;padding:7px 14px;border-radius:50px;border:1px solid var(--line)}
.qz-tag.ok{color:#0f8f5e;background:rgba(25,185,123,.12)}
.qz-tag.ko{color:#c43b54;background:rgba(224,80,107,.12)}
.qz-tag.bl{color:var(--muted);background:rgba(20,60,140,.05)}
.qz-score-actions{display:flex;gap:12px;flex-wrap:wrap}
@media(max-width:560px){.qz-q{padding:18px}.qz-head h2{font-size:1.35rem}}

/* ============================================================
   PORTADA PÚBLICA (promo · index.php)
   Reutiliza .hero/.tag/.btn/.stats/.sec/.op-card; aquí solo lo propio.
   ============================================================ */
.pr-hero{padding:64px 0 40px}
.pr-hero .avatar-frame img{aspect-ratio:1054/1492;object-fit:cover}

/* Pie de la rejilla de módulos: qué es cada uno, en texto */
.pr-mod-notes{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:26px}
.pr-note{border-top:2px solid var(--line);padding-top:14px}
.pr-note b{font-family:'Oswald';font-weight:600;font-size:.95rem;letter-spacing:.6px;text-transform:uppercase;
  color:var(--blue-sky);display:block;margin-bottom:7px}
.pr-note span{font-size:.85rem;color:var(--muted);font-weight:300;line-height:1.6;display:block}
@media(max-width:1180px){.pr-mod-notes{grid-template-columns:repeat(2,1fr);max-width:720px}}
@media(max-width:820px){.pr-mod-notes{grid-template-columns:1fr;max-width:420px}}

/* Diferencial: rejilla de características */
.pr-why{background:linear-gradient(180deg,transparent,rgba(46,123,255,.045),transparent)}
.pr-feats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pr-feat{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:26px 24px;
  backdrop-filter:blur(6px);transition:.28s}
.pr-feat:hover{transform:translateY(-4px);border-color:rgba(46,123,255,.45);
  box-shadow:0 18px 40px rgba(20,40,90,.14)}
.pr-ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;margin-bottom:16px;
  color:var(--c1,#1452d6);background:color-mix(in srgb,var(--c1,#1452d6) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--c1,#1452d6) 26%,transparent)}
.pr-feat h4{font-family:'Sora';font-weight:600;font-size:1.06rem;margin-bottom:9px;line-height:1.25}
.pr-feat p{font-size:.87rem;color:var(--muted);font-weight:300;line-height:1.6}
@media(max-width:980px){.pr-feats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.pr-feats{grid-template-columns:1fr}}

/* Cierre: franja de llamada final */
.pr-close{padding-bottom:80px}
.pr-final{text-align:center;max-width:760px;margin:0 auto;padding:52px 32px;border-radius:22px;
  background:linear-gradient(150deg,#0c1c3f,#10305f);border:1px solid rgba(255,255,255,.1);
  box-shadow:0 26px 64px rgba(8,18,44,.34)}
.pr-final .tag{color:#7fc0ff;border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.06)}
.pr-final h2{font-family:'Oswald';font-weight:700;text-transform:uppercase;line-height:1.02;
  font-size:clamp(1.9rem,4vw,2.8rem);color:#fff;margin-bottom:14px}
.pr-final p{color:#b9cbea;font-weight:300;font-size:1rem;line-height:1.65;max-width:560px;margin:0 auto 28px}
.pr-final-cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
@media(max-width:560px){.pr-final{padding:40px 22px}}

/* ════════ ESCRITORIO · ESTRUCTURA DE PANTALLA ════════════════════════════
   En PC la web se organiza como el panel /admin: BARRA LATERAL fija a la
   izquierda + lienzo de trabajo que es lo ÚNICO que scrollea (sin barra
   superior: cada página ya trae su propia cabecera). El pie desaparece: su
   contenido (marca, redes, copyright) vive al final de la barra lateral.

   No hay HTML duplicado: la barra lateral es el mismo <nav> del menú móvil,
   recolocado por CSS (en móvil sigue siendo la banda superior + hamburguesa).

   · Va en @media SCREEN → no toca la impresión ni la exportación a PDF.
   · Solo aplica a las páginas de la plantilla del sitio (tienen `.site-main`),
     así el panel /admin, con su propio layout, queda fuera.
   · Las pantallas de selección de oposición (`body.ot-selector`) mantienen la
     cabecera en banda + pie: allí aún no hay contexto que navegar.          */
@media screen and (min-width:1024px){
  :root{--side:252px;--canvas:#f3f5f9;
        --nav-bg:#111f3d;--nav-bg-2:#0b1730;--nav-ink:#aebdd8;--nav-ink-2:#67799c}
  html{height:100%}

  /* ── A · Selector de oposición: banda arriba, pie abajo, scroll en medio ── */
  body.ot-selector{display:flex;flex-direction:column;height:100dvh;overflow:hidden}
  body.ot-selector>nav{position:relative;flex:0 0 auto}
  body.ot-selector>.site-main{flex:1 1 auto;min-height:0;overflow-y:auto;
    overscroll-behavior:contain;scroll-behavior:smooth;scrollbar-gutter:stable}
  body.ot-selector>footer{flex:0 0 auto;margin-top:0;padding:16px 0;
    box-shadow:0 -10px 24px rgba(20,40,90,.07)}
  body.ot-selector .foot-brand img{height:34px}

  /* ── B · Resto del sitio: lateral + topbar + lienzo ─────────────────────── */
  body:has(.site-main):not(.ot-selector){height:100dvh;overflow:hidden;background:var(--canvas)}
  body:has(.site-main):not(.ot-selector)>footer{display:none}          /* su sitio ahora es el lateral */
  body:has(.site-main):not(.ot-selector) .bg-field,
  body:has(.site-main):not(.ot-selector) .grain{display:none}          /* el lienzo es plano, como en /admin */

  /* Barra lateral (el <nav> del menú, recolocado) */
  body:not(.ot-selector)>nav{position:fixed;left:0;top:0;bottom:0;width:var(--side);z-index:40;
    display:block;overflow-y:auto;padding:18px 12px 14px;border-bottom:0;backdrop-filter:none;
    background:linear-gradient(180deg,var(--nav-bg),var(--nav-bg-2));
    border-right:1px solid rgba(0,0,0,.25)}
  body:not(.ot-selector)>nav .nav-in{max-width:none;padding:0;height:auto;min-height:100%;
    display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start}
  body:not(.ot-selector) .nav-burger{display:none}                     /* no hay hamburguesa en PC */

  /* Marca */
  body:not(.ot-selector)>nav .brand{color:#fff;gap:10px;margin:0 0 16px;padding:6px 8px;border-radius:10px}
  body:not(.ot-selector)>nav .brand img{height:34px;border-color:rgba(255,255,255,.14)}
  body:not(.ot-selector)>nav .brand b{font-size:1.02rem}
  body:not(.ot-selector)>nav .brand b span{color:#54b3ff}
  body:not(.ot-selector)>nav .brand small{color:#7f92b5;font-size:.6rem;letter-spacing:.13em}
  body:not(.ot-selector)>nav .brand:hover{background:rgba(255,255,255,.05)}

  /* Menú: de desplegable flotante a columna estática */
  body:not(.ot-selector) .nav-links,
  body:not(.ot-selector) .nav-toggle:checked ~ .nav-links{position:static;flex:1;display:flex;
    flex-direction:column;gap:2px;min-width:0;max-height:none;opacity:1;pointer-events:auto;
    background:none;border:0;border-radius:0;box-shadow:none;padding:0;overflow:visible;transition:none}
  body:not(.ot-selector) .nav-links a{color:var(--nav-ink);font-size:.885rem;font-weight:500;
    padding:9px 12px;border-radius:10px;border-bottom:0;line-height:1.2}
  body:not(.ot-selector) .nav-links a:hover{background:rgba(255,255,255,.07);color:#fff}
  body:not(.ot-selector) .nav-links a.active{background:rgba(46,123,255,.2);color:#fff;font-weight:600}
  body:not(.ot-selector) .nav-links a.active .i{color:#7db0ff}
  body:not(.ot-selector) .nav-group{color:var(--nav-ink-2);padding:0 12px;margin:16px 0 6px}
  body:not(.ot-selector) .nav-group:first-child{margin-top:2px}
  body:not(.ot-selector) .nav-ops{padding:0 8px}
  body:not(.ot-selector) .nav-links .nav-ops a{color:#9fb2d6;border-color:rgba(255,255,255,.16)}
  body:not(.ot-selector) .nav-links .nav-ops a:hover{color:#fff;border-color:#54b3ff;background:none}
  body:not(.ot-selector) .nav-links .nav-ops a.on{background:#2e7bff;border-color:#2e7bff;color:#fff}
  /* Pie de la barra: cuenta, redes y copyright (sustituye al pie de página) */
  body:not(.ot-selector) .nav-foot{margin-top:auto;padding-top:12px;
    border-top:1px solid rgba(255,255,255,.09)}
  body:not(.ot-selector) .nav-links .nav-social a{color:#9fb2d6;border-color:rgba(255,255,255,.14)}
  body:not(.ot-selector) .nav-links .nav-social a:hover{background:#2e7bff;border-color:#2e7bff;color:#fff}
  body:not(.ot-selector) .nav-copy{color:var(--nav-ink-2);padding:6px 12px 0}

  /* Lienzo de trabajo: el ÚNICO scroll de la pantalla */
  body:not(.ot-selector) .site-main{margin-left:var(--side);height:100dvh;overflow-y:auto;
    overscroll-behavior:contain;scroll-behavior:smooth;background:var(--canvas)}

  /* Sin barra superior: el contenido empieza arriba del todo, así que los
     "sticky" del contenido cuentan desde 0. */
  .site-main .detail-side{top:18px}
  .corrido-epi{scroll-margin-top:18px}

  /* Canal Z: el feed ocupa el lienzo entero */
  body:has(.reels) .site-main{overflow:hidden}
  body:has(.reels) .reels{height:100dvh}
}

/* ============================================================
   GUARDIA CIVIL · piel verde
   ------------------------------------------------------------
   El <body> lleva la clase de la oposición activa (opo-cnp | opo-gc | opo-pl),
   así que basta con redefinir aquí la paleta: todo lo que usa var() cambia solo
   y debajo se corrigen los azules escritos a pelo. Los colores semánticos
   (verde acierto, rojo fallo) y los de contenido (mindmaps, infográficos)
   NO se tocan: no son «azul de marca», son significado.
   Verde institucional: #0b6b3c · claro #12925a · sobre oscuro #5fd39b
   ============================================================ */
body.opo-gc{
  --blue-royal:#0b6b3c;--blue-bright:#12925a;--blue-sky:#0e7a49;
  --red:#0b6b3c;--red-bright:#12925a;--red-deep:#064b29;--gold:#12925a;
  --line:rgba(8,80,45,.17);
  --nav-bg:#12402b;--nav-bg-2:#0a2a1c;--nav-ink:#a7c7b6;--nav-ink-2:#6b8f7c;
  --canvas:#f2f7f4;                          /* lienzo de trabajo en PC */
}
/* color de bloque de los temas (el temario de la Guardia Civil es todo bloque A) */
body.opo-gc .detail-hero.A,body.opo-gc .epi.A{--dh-c:#0e7a49;--dh-c2:#12925a}
body.opo-gc .detail-hero.A::before{background:radial-gradient(500px 300px at 90% -10%,rgba(18,146,90,.26),transparent 60%)}

/* --- menú (banda superior en móvil y barra lateral en PC) --- */
body.opo-gc>nav{background:linear-gradient(180deg,rgba(10,42,28,.97),rgba(10,42,28,.88))}
body.opo-gc .brand b span{color:#5fd39b}
body.opo-gc:not(.ot-selector)>nav .brand b span{color:#5fd39b}
body.opo-gc:not(.ot-selector)>nav .brand small{color:#8fb8a3}
body.opo-gc:not(.ot-selector) .nav-links a.active{background:rgba(18,146,90,.26)}
body.opo-gc:not(.ot-selector) .nav-links a.active .i{color:#6fdfa8}
body.opo-gc:not(.ot-selector) .nav-links .nav-ops a{color:#a7c7b6}
body.opo-gc:not(.ot-selector) .nav-links .nav-ops a:hover{border-color:#5fd39b}
body.opo-gc:not(.ot-selector) .nav-links .nav-ops a.on{background:#12925a;border-color:#12925a}
body.opo-gc:not(.ot-selector) .nav-links .nav-social a{color:#a7c7b6}
body.opo-gc:not(.ot-selector) .nav-links .nav-social a:hover{background:#12925a;border-color:#12925a}
body.opo-gc .nav-solo a:hover,body.opo-gc .op-exit:hover{background:rgba(18,146,90,.09)}
body.opo-gc .nav-burger:hover{background:rgba(18,146,90,.1)}

/* --- fondo y tarjetas del temario --- */
body.opo-gc .bg-field{background:
  radial-gradient(1100px 700px at 78% -8%, rgba(18,146,90,.06), transparent 60%),
  radial-gradient(900px 600px at 8% 12%, rgba(11,107,60,.04), transparent 55%),
  linear-gradient(180deg,#fcfefd 0%,#f4f8f6 50%,#fcfefd 100%)}
body.opo-gc .card:hover,body.opo-gc .phil:hover,body.opo-gc .pr-feat:hover{border-color:rgba(18,146,90,.45)}
body.opo-gc .card.A .card-num,
body.opo-gc .corrido-epi.A .ce-n,
body.opo-gc .phil.iusnat .ph-num{background:rgba(18,146,90,.18);color:var(--blue-sky)}
body.opo-gc .cuadernos .card.A{--bc:#7ee2ac}
body.opo-gc .cuadernos .card{background:
  linear-gradient(90deg,#c60b1e 0 33.34%,#ffc400 33.34% 66.67%,#c60b1e 66.67%) bottom center/62px 5px no-repeat,
  radial-gradient(120% 100% at 50% -10%,#14563a 0%,#0d3823 46%,#071f14 100%)}

/* --- tintes azules sueltos (buscadores, botones, tablas, código…) --- */
body.opo-gc .tag,body.opo-gc .acep3 .a,body.opo-gc .cmptable tbody th{background:rgba(18,146,90,.07)}
body.opo-gc .cmptable tbody tr:nth-child(even) td,
body.opo-gc .cmptable tbody tr:nth-child(even) th{background:rgba(18,146,90,.035)}
body.opo-gc .epi-content code{background:rgba(18,146,90,.12)}
body.opo-gc .search input:focus,body.opo-gc .login-field input:focus{box-shadow:0 0 0 3px rgba(18,146,90,.15)}
body.opo-gc .btn-ghost:hover,body.opo-gc .qz-opt:hover:not(:disabled){background:rgba(18,146,90,.1)}
body.opo-gc .btn-primary,body.opo-gc .btn-gold{box-shadow:0 10px 34px rgba(11,107,60,.4)}
body.opo-gc .chip.active{box-shadow:0 6px 18px rgba(11,107,60,.4)}
body.opo-gc .side-nav button:hover:not(:disabled){background:rgba(18,146,90,.06)}
body.opo-gc .strip::before{background:radial-gradient(500px 300px at 80% 0%,rgba(18,146,90,.28),transparent 60%)}
body.opo-gc .mnemo{--mn-soft:#12925a;--mn-strong:#064b29}
body.opo-gc .corrido-next-btn{background:linear-gradient(135deg,rgba(18,146,90,.12),rgba(18,146,90,.04))}
body.opo-gc .corrido-next-btn:hover{background:rgba(18,146,90,.16)}

/* --- tests y simulacros --- */
body.opo-gc .qz-opt.is-chosen{background:rgba(18,146,90,.12)}
body.opo-gc .qz-expl{background:rgba(18,146,90,.06)}
body.opo-gc .sim-pill{color:#0a5c37;background:#e9f7f0;border-color:#cdeadd}
body.opo-gc .cuadernos .chip.active{background:#12402b;border-color:#12402b}   /* filtro «Todos» */
