/* ===================================================================
   STUDIO — hoja propia del taller

   Esta hoja NO sustituye a assets/css/estilos.css: se carga después y
   solo añade lo que el taller necesita y el resto del sitio no. Usa las
   mismas variables (--texto, --borde, --azul-medio…), así que hereda
   sin esfuerzo los tres temas: claro, oscuro y lectura.

   Dos cosas viven aquí:

     1. LA PUERTA. El candado ya está resuelto en la hoja general. Aquí
        solo se corrige lo que cambió de sentido ahora que esto dejó de
        ser un curso: menos color, más silencio.

     2. LAS DOS VOCES. El sistema de anotación al margen. Es la forma
        propia del taller y la razón de que esta hoja exista.
   =================================================================== */


/* ===================================================================
   1. La puerta
   ===================================================================
   .candado--taller ocupa el lugar que antes ocupaba .candado--curso.
   Repite su caja (la hoja general no se toca) y baja el volumen: el
   disco azul se vuelve un aro fino, porque una puerta de taller no
   necesita anunciarse.
   =================================================================== */

/* La puerta se centra en la ventana, no se queda arriba dejando un vacío
   debajo. El centrado vive en el <main data-destino>, no en la tarjeta:
   candado.js le quita ese atributo al abrir, así que en cuanto entra el
   contenido el centrado desaparece solo y la página fluye normal. */
main[data-destino] {
  min-height: 100vh;
  min-height: 100dvh;      /* móviles: descuenta la barra del navegador */
  display: grid;
  align-content: center;
  padding: var(--e6) var(--e6);
}

.candado--taller {
  max-width: 560px;
  margin: 0 auto;
  padding: var(--e12) var(--e8) var(--e12);   /* equilibrado: antes sobraban 80px abajo */
}

.candado--taller .candado__marca {
  background: transparent;
  border: 1px solid var(--borde);
  color: var(--texto-suave);
  width: 58px;
  height: 58px;
}
.candado--taller .candado__marca svg { width: 26px; height: 26px; }

.candado--taller .candado__etiqueta {
  letter-spacing: .14em;
  font-size: var(--letra-11);
}

.candado--taller .candado__titulo {
  font-size: var(--letra-22);
  letter-spacing: -.01em;
  max-width: 20ch;
  margin-inline: auto;
}

/* Una regla fina bajo el título, en lugar de más texto explicativo */
.candado--taller .candado__titulo::after {
  content: "";
  display: block;
  width: 34px;
  height: 1px;
  margin: var(--e4) auto 0;
  background: var(--borde);
}


/* ===================================================================
   2. Las dos voces
   ===================================================================
   La idea: el taller no se escribe con una sola voz que explica. Se
   escribe con dos que discuten. Para eso no sirven las burbujas de
   chat —envejecen mal y convierten el pensamiento en conversación
   desechable—; sirve una forma que la arquitectura ya tenía: la
   anotación al margen. El plano con la observación del crítico en la
   esquina, la edición anotada, el redline.

   CÓMO SE USA
   -----------
   El cuerpo va en .taller y las notas son <aside class="nota">
   colocadas JUSTO ANTES del párrafo que comentan: una nota flotada se
   alinea con el punto del texto donde se declara, no donde termina.

     <div class="taller">
       <p>Texto del cuerpo…</p>

       <aside class="nota nota--claude">
         <p class="nota__voz">Claude</p>
         <p>La objeción al margen.</p>
       </aside>
       <p>El párrafo que la nota comenta…</p>
     </div>

   CÓMO SE COMPORTA
   ----------------
   El cuerpo nunca pasa de 64ch: la medida a la que se lee sin cansarse.
   Las notas viven en la banda derecha sobrante. Cuando la ventana deja
   de tener esa banda (por debajo de 1080px) dejan de flotar y se
   intercalan en el texto como interrupciones, que es exactamente lo que
   son. No se esconden nunca: una nota que desaparece en el teléfono es
   una nota que no debía existir.
   =================================================================== */

.taller {
  --cuerpo: 64ch;      /* medida de lectura del cuerpo */
  --margen: 260px;     /* ancho de la banda de notas   */
  --aire: 44px;        /* separación entre ambas       */

  max-width: calc(var(--cuerpo) + var(--aire) + var(--margen));
  margin: 0 auto;
  padding: var(--e16) var(--e6) var(--e24);
}

/* Todo lo que es cuerpo se detiene en la medida de lectura */
.taller > p,
.taller > h2,
.taller > h3,
.taller > ul,
.taller > ol,
.taller > blockquote,
.taller > figure,
.taller > hr,
.taller > .taller__cab { max-width: var(--cuerpo); }

/* --- Tipografía del cuerpo --- */

.taller__cab { padding-bottom: var(--e6); border-bottom: 1px solid var(--borde); margin-bottom: var(--e8); }
.taller__etiqueta {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--texto-suave); margin: 0 0 var(--e3);
}
.taller__cab h1 { font-size: clamp(1.7rem, 3.6vw, 2.3rem); line-height: 1.2; margin: 0 0 .4em; letter-spacing: -.02em; }
.taller__bajada { color: var(--texto-suave); font-size: var(--letra-17); line-height: 1.6; margin: 0; }
.taller__fecha { font-size: var(--letra-13); color: var(--texto-suave); margin: var(--e4) 0 0; }

.taller h2 {
  font-size: var(--letra-22); line-height: 1.3; margin: 2.4em 0 .7em;
  color: var(--azul-oscuro); letter-spacing: -.01em;
}
.taller h3 { font-size: var(--letra-17); margin: 2em 0 .5em; color: var(--texto); }
.taller p { margin: 0 0 1.15em; line-height: 1.72; }
.taller ul, .taller ol { margin: 0 0 1.3em; padding-left: 1.4em; line-height: 1.7; }
.taller li { margin-bottom: .5em; }
.taller li::marker { color: var(--azul-medio); }
.taller strong { font-weight: 650; }
.taller hr { border: 0; border-top: 1px solid var(--borde); margin: 3em 0; }

/* La pregunta que abre cada autopsia: no es un título, es un instrumento */
.taller__pregunta {
  font-size: var(--letra-17); font-weight: 600; color: var(--texto);
  margin: 2.2em 0 .8em; padding-left: var(--e4);
  border-left: 2px solid var(--azul-medio);
}

/* --- Las notas al margen --- */

.nota {
  float: right;
  clear: right;
  width: var(--margen);
  margin: .35em 0 1.6em var(--aire);
  padding-left: var(--e4);
  border-left: 2px solid var(--borde);
  font-size: var(--letra-15);
  line-height: 1.58;
  color: var(--texto-suave);
}
.nota p { margin: 0 0 .7em; line-height: inherit; }
.nota p:last-child { margin-bottom: 0; }

.nota__voz {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .13em;
  text-transform: uppercase; margin: 0 0 var(--e2) !important;
}

/* Cada voz tiene su color en la regla del margen. No fondo, no caja:
   una raya, como la del corrector. */
.nota--claude { border-left-color: var(--azul-medio); }
.nota--claude .nota__voz { color: var(--azul-medio); }

.nota--miguel { border-left-color: var(--verde); }
.nota--miguel .nota__voz { color: var(--verde); }

/* Desacuerdo declarado. Que se vea desde lejos dónde no coincidimos:
   es la parte del taller que nadie más puede publicar. */
.nota--desacuerdo { border-left-color: var(--rojo); }
.nota--desacuerdo .nota__voz { color: var(--rojo); }

/* Nota abierta, esperando respuesta de la otra voz */
.nota--pendiente { border-left-style: dashed; opacity: .78; }

/* --- Por debajo de la banda de margen: las notas se intercalan --- */
@media (max-width: 1080px) {
  .taller { max-width: calc(var(--cuerpo) + 48px); }

  .nota {
    float: none;
    width: auto;
    max-width: var(--cuerpo);
    margin: 1.6em 0 1.8em;
    padding: 2px 0 2px var(--e4);
  }
}

@media (max-width: 640px) {
  .taller { padding-inline: var(--e6); }
  .taller h2 { font-size: var(--letra-19); }
}

/* --- Impresión: las notas vuelven al margen del papel --- */
@media print {
  .nota { color: #444; border-left-color: #999; }
  .taller { max-width: none; }
}


/* --- Pie: la salida --- */
.taller__pie {
  max-width: var(--cuerpo);
  margin: 4em 0 0;
  padding-top: var(--e6);
  border-top: 1px solid var(--borde);
  font-size: var(--letra-13);
  color: var(--texto-suave);
}
.taller__pie a { color: var(--azul-medio); font-weight: 600; }


/* ===================================================================
   3. La cara pública  (studio/index.html)
   ===================================================================
   Lo que ve quien no tiene llave: la postura, la escalera de áreas
   ordenada por consecuencia del error, las fichas probadas, las
   promesas bajo prueba y, al final, la puerta del taller.

   Una sola voz aquí. Las dos voces se quedan dentro.
   =================================================================== */

.studio {
  max-width: 860px;
  margin: 0 auto;
  padding: var(--e12) var(--e6) var(--e24);
}

.studio__volver {
  font-size: var(--letra-13); color: var(--texto-suave); text-decoration: none;
}
.studio__volver:hover { color: var(--azul-medio); }

/* La marca de STUDIO lleva las líneas de construcción del dibujo (ejes,
   arco de compás): a menos de 280px se pierden, así que va un poco más
   grande que el logotipo liso del resto del sitio. */
.studio__marca {
  width: 290px; max-width: 76%; height: auto; display: block;
  margin: var(--e8) 0 var(--e8);
}
/* El logotipo es negro; en tema oscuro se invierte para que no desaparezca */
[data-tema="oscuro"] .studio__marca { filter: invert(1) hue-rotate(180deg); }

.studio__cab h1 {
  font-size: clamp(1.6rem, 3.4vw, 2.2rem); line-height: 1.2;
  margin: 0 0 .3em; letter-spacing: -.02em;
}
.studio__sub { font-size: var(--letra-19); color: var(--texto-suave); margin: 0; }

.studio__postura {
  max-width: 64ch; margin: var(--e12) 0 0; padding-top: var(--e8);
  border-top: 1px solid var(--borde);
}
.studio__postura p { line-height: 1.72; margin: 0 0 1.1em; }

/* La regla que atraviesa todo: se distingue, no se decora */
.studio__regla {
  font-size: var(--letra-19); font-weight: 600; color: var(--azul-oscuro);
  padding-left: var(--e4); border-left: 2px solid var(--azul-medio);
  margin: 1.4em 0 1.4em !important;
}

.studio h2 {
  font-size: var(--letra-13); font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--texto-suave);
  margin: var(--e16) 0 var(--e6);
}
.studio__intro {
  max-width: 64ch; color: var(--texto-suave); line-height: 1.65;
  margin: -6px 0 var(--e6);
}

/* --- Chips de estado --------------------------------------------- */

.estado {
  display: inline-flex; align-items: center; gap: var(--e2);
  padding: var(--e1) var(--e3); border-radius: 999px;
  font-size: var(--letra-13); font-weight: 650; white-space: nowrap;
  text-decoration: none; line-height: 1.4;
}
.estado--probado   { background: var(--verde-claro);       color: var(--verde); }
.estado--reservas  { background: var(--naranja-claro);     color: var(--naranja); }
.estado--no        { background: var(--rojo-claro);        color: var(--rojo); }
.estado--sinprobar { background: var(--gris-calido-claro); color: var(--gris-calido); }
.estado--prueba    { background: var(--gris-azul-claro);   color: var(--gris-azul); }
.estado--ficha     { background: var(--azul-claro);        color: var(--azul-medio); }
.estado--ficha:hover { background: var(--azul-medio); color: #fff; }

/* --- La escalera ------------------------------------------------- */

.escala {
  list-style: none; margin: 0; padding: 0;
  border-top: 1px solid var(--borde);
}
.escala__fila {
  display: grid;
  grid-template-columns: 18px 130px minmax(0, 1fr) auto;
  gap: 0 var(--e4); align-items: start;
  padding: var(--e4) 0; border-bottom: 1px solid var(--borde);
}

/* El punto de cada fila va del azul al rojo según su peso (1 a 6):
   la escalera se lee como un termómetro sin necesidad de leyenda. */
.escala__nivel {
  width: 10px; height: 10px; border-radius: 50%; margin-top: var(--e2);
  background: color-mix(in srgb, var(--rojo) calc(var(--peso) * 16%), var(--azul-medio));
}

.escala__verbo {
  font-size: var(--letra-17); font-weight: 650; color: var(--texto);
  text-decoration: none; padding-top: 1px;
}
a.escala__verbo { color: var(--azul-oscuro); }
a.escala__verbo:hover { text-decoration: underline; }

.escala__que { line-height: 1.55; color: var(--texto); padding-top: 3px; }
.escala__que em {
  display: block; font-style: normal; color: var(--texto-suave);
  font-size: var(--letra-15); margin-top: 2px;
}
.escala__fila .estado { margin-top: 3px; }

.escala__fila--activa { background: linear-gradient(90deg, var(--azul-claro), transparent 60%); margin: 0 -14px; padding-inline: var(--e4); }

/* --- La ficha ---------------------------------------------------- */

.probado {
  border: 1px solid var(--borde); border-radius: var(--radio);
  background: var(--tarjeta); box-shadow: var(--sombra);
  padding: var(--e8) var(--e8) var(--e8);
  scroll-margin-top: var(--e6);
}
.probado__cab {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--e3) var(--e4);
  margin-bottom: var(--e6); padding-bottom: var(--e4); border-bottom: 1px solid var(--borde);
}
.probado__cab h3 {
  margin: 0; font-size: var(--letra-26); letter-spacing: -.01em; margin-right: auto;
}
.probado__meta { font-size: var(--letra-13); color: var(--texto-suave); flex-basis: 100%; }

.probado dl {
  display: grid; grid-template-columns: 110px minmax(0, 1fr);
  gap: var(--e4) var(--e6); margin: 0;
}
.probado dt {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .12em;
  text-transform: uppercase; color: var(--texto-suave); padding-top: var(--e1);
}
.probado dd { margin: 0; line-height: 1.68; }
.probado dd p { margin: 0; }
.probado dd a { color: var(--azul-medio); font-weight: 600; }

.pasos {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: var(--e2) var(--e1); align-items: center;
}
.pasos li {
  padding: var(--e1) var(--e3); border-radius: 7px; font-size: var(--letra-15);
  background: var(--fondo-alt); border: 1px solid var(--borde);
}
.pasos li + li::before { content: "→"; margin-right: var(--e2); color: var(--texto-suave); }
.pasos__nota { margin: var(--e3) 0 0 !important; font-size: var(--letra-15); color: var(--texto-suave); font-style: italic; }

.probado__criterio {
  font-size: var(--letra-19); font-weight: 600; color: var(--azul-oscuro);
  padding-left: var(--e4); border-left: 2px solid var(--azul-medio); line-height: 1.5;
}

/* --- Promesas bajo prueba ---------------------------------------- */

.promesas { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--borde); }
.promesa {
  display: grid; grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--e2) var(--e6); align-items: start;
  padding: var(--e6) 0; border-bottom: 1px solid var(--borde);
}
.promesa__dicho { margin: 0; font-size: var(--letra-17); font-weight: 600; line-height: 1.4; }
.promesa__estado { grid-column: 2; grid-row: 1; margin-top: 2px; }
.promesa__visto { grid-column: 1 / -1; margin: 0; color: var(--texto-suave); line-height: 1.62; font-size: var(--letra-15); max-width: 64ch; }
.promesa__visto a { color: var(--azul-medio); font-weight: 600; }
.promesa__fecha { grid-column: 1 / -1; font-size: var(--letra-13); color: var(--texto-suave); }

/* --- La puerta del taller ---------------------------------------- */

.puerta {
  margin-top: var(--e16); padding: var(--e8) var(--e8) var(--e8);
  border: 1px solid var(--borde); border-radius: var(--radio);
  background: var(--fondo-alt);
}
.puerta h2 { margin-top: 0; }
.puerta p { max-width: 62ch; line-height: 1.7; margin: 0 0 1.1em; }
.puerta__ir { margin-top: var(--e2); }
.puerta__ir .ico-candado { opacity: .85; }
.puerta__nota { font-size: var(--letra-13); color: var(--texto-suave); margin: var(--e4) 0 0 !important; }
.puerta__nota a { color: var(--azul-medio); font-weight: 600; }

.studio__pie {
  display: flex; flex-wrap: wrap; gap: var(--e2) var(--e6);
  margin-top: var(--e16); padding-top: var(--e6); border-top: 1px solid var(--borde);
  font-size: var(--letra-13); color: var(--texto-suave);
}
.studio__pie a { color: var(--azul-medio); font-weight: 600; text-decoration: none; }
.studio__pie a:hover { text-decoration: underline; }

/* --- Estrecho ----------------------------------------------------- */
@media (max-width: 720px) {
  .studio { padding: var(--e8) var(--e6) var(--e16); }
  .studio__marca { width: 240px; }
  .studio h2 { margin-top: var(--e12); }

  .escala__fila {
    grid-template-columns: 14px minmax(0, 1fr);
    gap: var(--e1) var(--e3); padding: var(--e4) 0;
  }
  .escala__nivel { grid-row: 1; }
  .escala__verbo { grid-column: 2; }
  .escala__que { grid-column: 2; }
  .escala__fila .estado { grid-column: 2; justify-self: start; margin-top: var(--e2); }
  .escala__fila--activa { margin: 0; padding-inline: 0; background: none; }

  .probado { padding: var(--e6) var(--e6) var(--e6); border-radius: var(--radio-sm); }
  .probado dl { grid-template-columns: 1fr; gap: var(--e2) 0; }
  .probado dt { margin-top: var(--e4); }
  .probado dt:first-child { margin-top: 0; }

  .promesa { grid-template-columns: 1fr; }
  .promesa__estado { grid-column: 1; grid-row: auto; justify-self: start; }

  .puerta { padding: var(--e6) var(--e6) var(--e6); border-radius: var(--radio-sm); }
}


/* ===================================================================
   4. El vestíbulo y las páginas interiores
   ===================================================================
   Para quién: estudiantes de arquitectura con cero experiencia en IA.
   La primera página recibe; el rigor aparece conforme se profundiza.

   Tres niveles, tres estándares de honestidad (ver como-trabajamos):
     Nivel 1 · Orientación  — qué puedes hacer, por dónde empezar.
     Nivel 2 · Flujo        — paso a paso, solo donde lo hemos hecho.
     Nivel 3 · Criterio     — solo lo que salió del taller.
   =================================================================== */

/* --- Hero del vestíbulo --- */
.studio__cab h1 { max-width: 24ch; }
.studio__sub { max-width: 52ch; line-height: 1.55; }

.accesos { display: flex; flex-wrap: wrap; gap: var(--e3); margin: var(--e8) 0 0; }
.accesos .btn { padding: var(--e3) var(--e6); font-size: var(--letra-17); }

.studio__bienvenida {
  max-width: 60ch; margin: var(--e8) 0 0; color: var(--texto-suave); line-height: 1.7;
}

/* --- Las seis áreas, como tarjetas --- */
.areas {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--e4);
}
.area {
  display: flex; flex-direction: column; gap: var(--e2);
  padding: var(--e6) var(--e6) var(--e6);
  border: 1px solid var(--borde); border-radius: var(--radio);
  background: var(--tarjeta); box-shadow: var(--sombra);
  text-decoration: none; color: var(--texto);
  transition: transform .16s, box-shadow .16s, border-color .16s;
}
.area:hover { transform: translateY(-2px); box-shadow: var(--sombra-hover); border-color: color-mix(in srgb, var(--azul-medio) 40%, var(--borde)); }
.area__verbo { font-size: var(--letra-19); font-weight: 650; letter-spacing: -.01em; color: var(--azul-oscuro); }
.area__que { line-height: 1.55; color: var(--texto-suave); font-size: var(--letra-15); flex: 1; }
.area__ir { font-size: var(--letra-15); font-weight: 650; color: var(--azul-medio); margin-top: var(--e2); }
.area--completa .area__verbo::after {
  content: "guía completa"; display: inline-block; margin-left: var(--e2); vertical-align: 2px;
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--verde); background: var(--verde-claro); padding: 3px var(--e2); border-radius: 999px;
}

/* --- Asomos al final del vestíbulo --- */
.asomo {
  margin-top: var(--e16); padding-top: var(--e6); border-top: 1px solid var(--borde);
  display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: var(--e2) var(--e8); align-items: start;
}
.asomo h2 { margin: 0; padding-top: var(--e1); }
.asomo p { margin: 0 0 var(--e3); max-width: 60ch; line-height: 1.68; }
.asomo a.enlace { font-weight: 650; color: var(--azul-medio); text-decoration: none; }
.asomo a.enlace:hover { text-decoration: underline; }

/* --- Páginas interiores --- */
.pagina { max-width: 720px; margin: 0 auto; padding: var(--e8) var(--e6) var(--e24); }
.pagina a.pagina__volver { font-size: var(--letra-13); color: var(--texto-suave); font-weight: 500; text-decoration: none; }
.pagina a.pagina__volver:hover { color: var(--azul-medio); }
.pagina__cab { margin: var(--e6) 0 var(--e8); padding-bottom: var(--e6); border-bottom: 1px solid var(--borde); }
.pagina__cab h1 { font-size: clamp(1.7rem, 3.6vw, 2.3rem); line-height: 1.2; margin: var(--e3) 0 .4em; letter-spacing: -.02em; }
.pagina__bajada { color: var(--texto-suave); font-size: var(--letra-17); line-height: 1.6; margin: 0; max-width: 58ch; }
.pagina__meta { display: flex; flex-wrap: wrap; gap: var(--e2); align-items: center; margin-top: var(--e4); font-size: var(--letra-13); color: var(--texto-suave); }

.pagina h2 { font-size: var(--letra-22); line-height: 1.3; margin: 2.2em 0 .6em; color: var(--azul-oscuro); letter-spacing: -.01em; }
.pagina h3 { font-size: var(--letra-17); margin: 1.8em 0 .5em; }
.pagina p { line-height: 1.72; margin: 0 0 1.1em; }
.pagina ul, .pagina ol { margin: 0 0 1.3em; padding-left: 1.4em; line-height: 1.68; }
.pagina li { margin-bottom: .5em; }
.pagina li::marker { color: var(--azul-medio); }
.pagina a { color: var(--azul-medio); font-weight: 600; }
.pagina hr { border: 0; border-top: 1px solid var(--borde); margin: 2.6em 0; }

/* La pregunta, en «Estoy empezando»: cada una es una entrada, no un título */
.pagina .pregunta { font-size: var(--letra-19); margin-top: 2.4em; }

/* Caja de «ojo»: el aviso amable, sin alarma */
.ojo {
  margin: 1.4em 0; padding: var(--e4) var(--e4); border-radius: var(--radio-sm);
  background: var(--naranja-claro); color: var(--texto); line-height: 1.62; font-size: var(--letra-15);
}
.ojo strong { color: var(--naranja); }

/* Caja de «todavía no»: lo que falta, dicho con claridad */
.falta {
  margin: 1.6em 0; padding: var(--e4) var(--e6); border: 1px dashed var(--borde); border-radius: var(--radio-sm);
  color: var(--texto-suave); line-height: 1.62; font-size: var(--letra-15);
}

/* Nivel de la página o de la sección */
.nivel {
  display: inline-flex; align-items: center; gap: var(--e2); padding: var(--e1) var(--e3); border-radius: 999px;
  font-size: var(--letra-13); font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
}
.nivel--1 { background: var(--azul-claro); color: var(--azul-medio); }
.nivel--2 { background: var(--gris-azul-claro); color: var(--gris-azul); }
.nivel--3 { background: var(--verde-claro); color: var(--verde); }

/* Navegación entre áreas al pie de cada página */
.areas-pie { margin-top: var(--e16); padding-top: var(--e6); border-top: 1px solid var(--borde); }
.areas-pie p { font-size: var(--letra-13); letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--texto-suave); margin: 0 0 var(--e3); }
.pagina .areas-pie ul, .areas-pie ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--e2); }
.pagina .areas-pie li, .areas-pie li { margin: 0; }
.areas-pie a {
  display: inline-block; padding: var(--e2) var(--e3); border-radius: 999px; font-size: var(--letra-15); font-weight: 600;
  border: 1px solid var(--borde); color: var(--texto); text-decoration: none;
}
.areas-pie a:hover, .areas-pie a[aria-current] { border-color: var(--azul-medio); color: var(--azul-medio); }

/* Los tres niveles explicados, en «Cómo trabajamos» */
.niveles { list-style: none; margin: 0 0 1.5em; padding: 0; display: grid; gap: var(--e3); }
.niveles li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--e4); align-items: start; padding: var(--e4) var(--e4); border: 1px solid var(--borde); border-radius: var(--radio-sm); background: var(--tarjeta); }
.niveles p { margin: 0; line-height: 1.6; font-size: var(--letra-15); }

@media (max-width: 720px) {
  .asomo { grid-template-columns: 1fr; gap: var(--e2) 0; }
  .pagina { padding: var(--e6) var(--e6) var(--e16); }
  .niveles li { grid-template-columns: 1fr; gap: var(--e2); }
}

/* --- El sello «STUDIO abierto en esta sesión» + Salir, en las páginas cifradas --- */
.studio__cab .candado__sello, .pagina__cab .candado__sello { margin-top: var(--e6); }


/* ===================================================================
   5. Idear — situaciones, regla y ejercicios guiados
   ===================================================================
   El estudiante entra con una situación, no con una teoría. Se
   reconoce en una frase, baja a su ejercicio, y encuentra siempre la
   misma anatomía: qué necesitas antes · empieza la conversación · qué
   vas a recibir · qué haces tú · hasta dónde fiarte · al terminar
   tendrás. A la segunda vez ya sabe leerla.
   =================================================================== */

/* --- ¿En qué estás? --- */
/* Más específicas que .pagina ul / .pagina li, que traen sangría y separación */
.pagina .situaciones { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--borde); }
.pagina .situaciones li { margin: 0; border-bottom: 1px solid var(--borde); }
.situaciones a {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--e3); align-items: baseline;
  padding: var(--e4) var(--e2); text-decoration: none; color: var(--texto); font-weight: 400;
}
.situaciones a:hover { background: var(--fondo-alt); }
.situaciones__dicho { font-size: var(--letra-17); }
.situaciones__ir {
  font-size: var(--letra-13); font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--azul-medio); white-space: nowrap;
}

/* --- La regla del área --- */
.regla { margin: 2.2em 0 0; padding: var(--e6) var(--e6); border-radius: var(--radio); background: var(--azul-claro); }
.regla p.regla__titulo {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
  color: var(--azul-medio); margin: 0 0 var(--e2);
}
.regla p { margin: 0; font-size: var(--letra-17); font-weight: 600; line-height: 1.5; color: var(--azul-oscuro); }

/* --- Cada ejercicio --- */
.guiado { margin: 2.6em 0 0; padding-top: 2.2em; border-top: 1px solid var(--borde); scroll-margin-top: var(--e6); }
.guiado__cab { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--e1) var(--e4); margin-bottom: var(--e6); }
.guiado__num { font-size: var(--letra-13); font-weight: 700; letter-spacing: .14em; color: var(--texto-suave); }
.guiado__cab h2 { margin: 0; font-size: var(--letra-26); }
.guiado__tiempo {
  margin-left: auto; font-size: var(--letra-13); font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--texto-suave);
}
.guiado__dicho { flex-basis: 100%; font-size: var(--letra-17); color: var(--texto-suave); }

.paso { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: var(--e2) var(--e6); margin: 0 0 var(--e4); }
/* Todo lo que no sea la etiqueta va en la columna derecha: sin esto, un
   segundo párrafo dentro del bloque cae debajo del rótulo. */
.paso > * { grid-column: 2; }
.paso > .paso__que { grid-column: 1; grid-row: 1; }
.paso > p + p { margin-top: .8em; }
.paso__que {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--texto-suave); padding-top: var(--e1);
}
.paso p { margin: 0; line-height: 1.68; }
.paso--tendras { padding: var(--e4) var(--e4); border-radius: var(--radio-sm); background: var(--verde-claro); }
.paso--tendras .paso__que { color: var(--verde); }
.paso--tendras small { display: block; margin-top: var(--e2); color: var(--texto-suave); font-size: var(--letra-13); }

/* --- «Empieza la conversación»: la caja con huecos y botón Copiar --- */
.copiar { position: relative; }
.copiar pre {
  margin: 0; padding: var(--e4) var(--e4); padding-right: 100px;
  white-space: pre-wrap; overflow-wrap: anywhere;
  font: inherit; font-size: var(--letra-15); line-height: 1.62;
  background: var(--fondo-alt); border: 1px solid var(--borde); border-radius: var(--radio-sm);
  color: var(--texto);
}
.copiar mark {
  background: var(--naranja-claro); color: var(--naranja); font-weight: 600;
  padding: 0; border-radius: 3px; box-shadow: 0 0 0 3px var(--naranja-claro);
}
.copiar__btn {
  position: absolute; top: 10px; right: 10px;
  font: inherit; font-size: var(--letra-13); font-weight: 650; padding: var(--e2) var(--e3); border-radius: 999px;
  border: 1px solid var(--borde); background: var(--tarjeta); color: var(--azul-medio); cursor: pointer;
}
.copiar__btn:hover { border-color: var(--azul-medio); }
.copiar__btn--ok { background: var(--verde-claro); color: var(--verde); border-color: transparent; }
.copiar__nota { margin: var(--e2) 0 0 !important; font-size: var(--letra-13); color: var(--texto-suave); }

@media (max-width: 720px) {
  .pagina .situaciones a { grid-template-columns: 1fr; gap: var(--e1); padding: var(--e4) var(--e1); }
  .paso { grid-template-columns: 1fr; gap: var(--e1) 0; }
  .copiar pre { padding-right: var(--e4); padding-top: var(--e12); }
  .guiado__cab h2 { font-size: var(--letra-22); }
}


/* ===================================================================
   6. El elegidor — los dos cuadros de entrada  (studio/index.html)
   ===================================================================
   Lo primero que ve quien acaba de teclear la llave: dos puertas.
   Diplomado (todavía cerrada) y Laboratorio (abierta). Cuando el
   diplomado exista, basta cambiar el <div> por un <a href> y la
   clase --pronto por --abierta: el diseño ya contempla las dos.
   =================================================================== */

.studio--elegir { max-width: 900px; }
.studio--elegir .studio__cab { margin-bottom: var(--e12); }

.entradas {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--e4);
}
.entradas li { margin: 0; }

.entrada {
  display: flex; flex-direction: column; height: 100%;
  padding: var(--e8) var(--e8) var(--e6);
  border: 1px solid var(--borde); border-radius: var(--radio);
  background: var(--tarjeta); box-shadow: var(--sombra);
  text-decoration: none; color: var(--texto);
}

.entrada__estado {
  align-self: flex-start; margin: 0 0 var(--e4);
  padding: var(--e1) var(--e3); border-radius: 999px;
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  background: var(--gris-calido-claro); color: var(--gris-calido);
}
.entrada__estado--vivo { background: var(--verde-claro); color: var(--verde); }

.entrada__nombre {
  margin: 0 0 var(--e3); font-size: var(--letra-32); font-weight: 650;
  letter-spacing: -.02em; line-height: 1.1; color: var(--azul-oscuro);
}
.entrada__que { margin: 0 0 var(--e6); flex: 1; line-height: 1.65; color: var(--texto-suave); }
.entrada__pie { margin: 0; font-size: var(--letra-15); font-weight: 650; }

/* La abierta invita: se levanta al pasar por encima. El subrayado de
   a:hover de la hoja general subrayaría los tres párrafos de la tarjeta:
   se anula, y el subrayado se reserva para «Entrar», donde sí significa. */
.entrada--abierta { transition: transform .16s, box-shadow .16s, border-color .16s; }
a.entrada, a.entrada:hover { text-decoration: none; }
.entrada__nombre, .entrada__que, .entrada__estado { text-decoration: none; }
.entrada--abierta .entrada__pie { color: var(--azul-medio); }
.entrada--abierta:hover .entrada__pie { text-decoration: underline; }
.entrada--abierta:hover {
  transform: translateY(-3px); box-shadow: var(--sombra-hover);
  border-color: color-mix(in srgb, var(--azul-medio) 45%, var(--borde));
}

/* La que todavía no abre: presente pero en voz baja. Sin sombra, sin
   cursor de enlace — que no invite a un clic que no lleva a ningún lado. */
.entrada--pronto {
  background: var(--fondo-alt); box-shadow: none; border-style: dashed;
}
.entrada--pronto .entrada__nombre { color: var(--texto-suave); }
.entrada--pronto .entrada__pie { color: var(--texto-suave); }

.studio__nota {
  max-width: 58ch; margin: var(--e8) 0 0;
  font-size: var(--letra-15); line-height: 1.65; color: var(--texto-suave);
}

@media (max-width: 720px) {
  .entrada { padding: var(--e6) var(--e6) var(--e6); border-radius: var(--radio-sm); }
  .entrada__nombre { font-size: var(--letra-26); }
}


/* ===================================================================
   7. El diplomado  (diplomado · temario · bibliografia)
   ===================================================================
   Reutiliza .pagina, .paso, .regla, .estado, .ojo y .falta del
   laboratorio: el diplomado no es otro sitio, es otra puerta de la
   misma casa. Aquí solo lo que el laboratorio no tenía.
   =================================================================== */

.pagina--ancha { max-width: 800px; }
.pagina .enlace { font-weight: 650; }
.pagina__nota { font-size: var(--letra-15); color: var(--texto-suave); margin-top: -.4em; }

/* --- Ficha de formato: definiciones a dos columnas --- */
.cifras { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: 0; margin: 0 0 1.4em; }
.cifras dt {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--texto-suave); padding: var(--e3) 0; border-top: 1px solid var(--borde);
}
.cifras dd { margin: 0; padding: var(--e3) 0; border-top: 1px solid var(--borde); line-height: 1.6; }

/* --- Los seis módulos --- */
.modulos { list-style: none; margin: 0 0 1.2em; padding: 0; counter-reset: none; }
.modulo {
  display: grid; grid-template-columns: 36px 190px minmax(0, 1fr);
  gap: var(--e1) var(--e4); align-items: baseline;
  margin: 0; padding: var(--e4) 0; border-bottom: 1px solid var(--borde);
}
.modulo:first-child { border-top: 1px solid var(--borde); }
.modulo__num {
  grid-row: span 2; align-self: center;
  width: 32px; height: 32px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--azul-claro); color: var(--azul-medio);
  font-size: var(--letra-13); font-weight: 700;
}
.modulo__nombre { font-size: var(--letra-17); font-weight: 650; color: var(--azul-oscuro); }
.modulo__ses { font-size: var(--letra-13); font-weight: 650; color: var(--texto-suave); text-align: right; }
.modulo__que { grid-column: 2 / -1; color: var(--texto-suave); font-size: var(--letra-15); line-height: 1.55; }

/* --- Entregables numerados --- */
.pagina .entregables { counter-reset: e; list-style: none; padding-left: 0; }
.pagina .entregables li {
  position: relative; padding-left: var(--e12); margin-bottom: .9em; line-height: 1.65;
}
.pagina .entregables li::before {
  counter-increment: e; content: counter(e);
  position: absolute; left: 0; top: 1px;
  width: 26px; height: 26px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--verde-claro); color: var(--verde);
  font-size: var(--letra-13); font-weight: 700;
}

/* --- Temario: salto rápido a una sesión --- */
.salto { margin: 0 0 var(--e3); }
.salto p { font-size: var(--letra-11); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--texto-suave); margin: 0 0 var(--e3); }
.pagina .salto ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--e2); }
.pagina .salto li { margin: 0; }
.salto a {
  display: grid; place-items: center; width: 34px; height: 34px;
  border: 1px solid var(--borde); border-radius: 50%;
  font-size: var(--letra-15); font-weight: 650; color: var(--texto); text-decoration: none;
}
.salto a:hover { border-color: var(--azul-medio); color: var(--azul-medio); }

/* --- Temario: encabezado de módulo --- */
.temario__modulo {
  display: flex; align-items: baseline; gap: var(--e3);
  font-size: var(--letra-22) !important; text-transform: none !important; letter-spacing: -.01em !important;
  color: var(--azul-oscuro) !important; margin: 3em 0 .2em !important;
  padding-top: 1.4em; border-top: 2px solid var(--azul-medio);
}
.temario__modulo span {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--texto-suave); white-space: nowrap;
}

/* --- Temario: cada sesión --- */
.sesion { margin: 2.2em 0 0; padding-top: 1.8em; border-top: 1px solid var(--borde); scroll-margin-top: var(--e6); }
.sesion__cab { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--e2) var(--e4); margin-bottom: var(--e4); }
.sesion__num { font-size: var(--letra-13); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--azul-medio); }
.sesion__cab h3 { margin: 0; font-size: var(--letra-22); letter-spacing: -.01em; flex: 1; }
.sesion__horas { font-size: var(--letra-13); font-weight: 700; letter-spacing: .1em; color: var(--texto-suave); }

.sesion__cita { margin: 0 0 var(--e6); padding: 0 0 0 var(--e4); border-left: 2px solid var(--borde); }
.sesion__cita p { margin: 0 0 var(--e1); font-style: italic; color: var(--texto-suave); line-height: 1.55; }
.sesion__cita cite { font-style: normal; font-size: var(--letra-13); color: var(--texto-suave); }

.sesion .paso ul { margin: 0; padding-left: 1.25em; }
.sesion .paso li { margin-bottom: .55em; line-height: 1.62; }
.sesion .paso li:last-child { margin-bottom: 0; }
.sesion .ojo { margin-left: calc(150px + var(--e6)); /* = columna de .paso + su gap: se alinea con la 2ª columna */ }

/* --- Bibliografía --- */
.libros {
  padding: var(--e6) 0 var(--e6); border-bottom: 1px solid var(--borde);
}
.libros__titulo { margin: 0 0 var(--e1); font-size: var(--letra-17); font-weight: 650; line-height: 1.35; color: var(--azul-oscuro); }
.libros__ficha { margin: 0 0 var(--e3); font-size: var(--letra-13); color: var(--texto-suave); }
.libros__que { margin: 0 0 var(--e4); line-height: 1.68; }
.libros__pie { margin: 0 !important; font-size: var(--letra-15); color: var(--texto-suave); line-height: 1.6; }
.libros__pie .estado { margin-right: var(--e2); vertical-align: 1px; }

@media (max-width: 720px) {
  .cifras { grid-template-columns: 1fr; }
  .cifras dt { padding-bottom: 2px; }
  .cifras dd { padding-top: 0; border-top: 0; padding-bottom: var(--e4); }
  .modulo { grid-template-columns: 32px minmax(0, 1fr); }
  .modulo__num { grid-row: span 3; }
  .modulo__ses { grid-column: 2; text-align: left; }
  .modulo__que { grid-column: 2; }
  .sesion .ojo { margin-left: 0; }
  .temario__modulo { flex-direction: column; gap: 2px; }
}


/* ===================================================================
   8. La cuadrícula — rejilla, celdas y tarjas
   ===================================================================
   Waffle antes que scroll. Donde el contenido es un conjunto de piezas
   comparables —doce sesiones, ocho libros, cuatro ejercicios, seis
   módulos— se muestra como cuadrícula, no como columna. Donde el
   contenido es un argumento (cómo trabajamos, la regla, qué no
   promete) se queda como prosa: una cuadrícula de párrafos no es una
   cuadrícula, es un texto roto.

   Dos piezas:
     .celda  — ficha fija, no se abre. Para lo corto.
     .tarja  — <details> nativo. Cerrada ocupa una casilla; abierta se
               extiende a lo ancho de su fila y el resto de la
               cuadrícula sigue visible arriba y abajo. Sin JS: funciona
               con teclado y sobre el contenido que candado.js inyecta
               al descifrar.

   Las tarjas de un grupo comparten name=, así que abrir una cierra la
   anterior: nunca hay dos casillas peleándose la pantalla.
   =================================================================== */

.pagina--rejilla { max-width: 1120px; }

.rejilla {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--e3);
  margin: 0 0 1.8em;
}
.rejilla--holgada { grid-template-columns: repeat(auto-fit, minmax(285px, 1fr)); }

.rejilla__rotulo {
  font-size: var(--letra-11) !important; font-weight: 700 !important; letter-spacing: .12em;
  text-transform: uppercase; color: var(--texto-suave) !important;
  margin: 2.6em 0 var(--e3) !important;
}
.rejilla__rotulo:first-child { margin-top: 0 !important; }

/* --- La celda fija --- */
.celda {
  display: flex; flex-direction: column; gap: var(--e2); min-width: 0;
  padding: var(--e4) var(--e4) var(--e4);
  border: 1px solid var(--borde); border-radius: var(--radio);
  background: var(--tarjeta); box-shadow: var(--sombra);
}
.celda__num {
  width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center;
  background: var(--azul-claro); color: var(--azul-medio);
  font-size: var(--letra-13); font-weight: 700; margin-bottom: 3px;
}
.celda__num--verde { background: var(--verde-claro); color: var(--verde); }
.celda__t { font-size: var(--letra-17); font-weight: 650; line-height: 1.3; color: var(--azul-oscuro); }
.pagina .celda__que, .celda__que { margin: 0; flex: 1; font-size: var(--letra-15); line-height: 1.58; color: var(--texto-suave); }
.celda__pie {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--texto-suave);
}

/* --- La tarja que se abre --- */
.tarja {
  min-width: 0; scroll-margin-top: var(--e4);
  border: 1px solid var(--borde); border-radius: var(--radio);
  background: var(--tarjeta); box-shadow: var(--sombra);
  transition: border-color .16s, box-shadow .16s;
}
.tarja > summary {
  display: flex; flex-direction: column; gap: var(--e2);
  min-height: 196px; padding: var(--e4) var(--e4) var(--e4);
  cursor: pointer; list-style: none;
}
.tarja > summary::-webkit-details-marker { display: none; }
.tarja > summary::marker { content: ""; }
.tarja > summary:focus-visible { outline: 2px solid var(--azul-medio); outline-offset: 2px; }
.tarja:not([open]):hover {
  border-color: color-mix(in srgb, var(--azul-medio) 45%, var(--borde));
  box-shadow: var(--sombra-hover);
}

.tarja__sobre {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--texto-suave);
}
.tarja__num {
  width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center;
  background: var(--azul-claro); color: var(--azul-medio); font-size: var(--letra-13); font-weight: 700;
  flex: none;
}
.tarja__t {
  margin: 0 !important; font-size: var(--letra-19) !important; font-weight: 650;
  line-height: 1.28; letter-spacing: -.01em; color: var(--azul-oscuro);
}
.pagina .tarja__cita, .tarja__cita {
  margin: 0; font-size: var(--letra-15); font-style: italic; line-height: 1.5; color: var(--texto-suave);
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.tarja__pie {
  margin: auto 0 0 !important; padding-top: var(--e3); border-top: 1px solid var(--borde);
  font-size: var(--letra-13); line-height: 1.45; color: var(--texto-suave);
}
.tarja__pie b {
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--texto-suave); white-space: nowrap; margin-right: var(--e1);
}
.tarja__ent {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.tarja__abrir {
  display: block; margin-top: var(--e2); text-align: right;
  font-weight: 700; color: var(--azul-medio); white-space: nowrap;
}
.tarja__abrir::after { content: "Ver \2192"; }
.tarja:hover > summary .tarja__abrir { text-decoration: underline; }

/* Abierta: se extiende a lo ancho de su fila */
.tarja[open] {
  grid-column: 1 / -1;
  border-color: color-mix(in srgb, var(--azul-medio) 55%, var(--borde));
  box-shadow: var(--sombra-hover);
}
.tarja[open] > summary {
  flex-direction: row; flex-wrap: wrap; align-items: center; gap: var(--e2) var(--e4);
  min-height: 0; padding: var(--e4) var(--e6); border-bottom: 1px solid var(--borde);
}
.tarja[open] > summary .tarja__cita { display: none; }
.tarja[open] > summary .tarja__pie { margin: 0 0 0 auto !important; padding-top: 0; border-top: 0; }
.tarja[open] > summary .tarja__pie b,
.tarja[open] > summary .tarja__ent { display: none; }
.tarja[open] > summary .tarja__abrir { margin-top: 0; }
.tarja[open] > summary .tarja__abrir::after { content: "Cerrar \2715"; }

.tarja__cuerpo { padding: var(--e6) var(--e6) var(--e6); max-width: 900px; }
.tarja__cuerpo > :first-child { margin-top: 0; }
.tarja__cuerpo > :last-child { margin-bottom: 0; }
.tarja__cuerpo .ojo { margin-left: calc(150px + var(--e6)); /* = columna de .paso + su gap: se alinea con la 2ª columna */ }

/* Imprimir: un <details> cerrado no se imprime. Aquí se abren todos. */
@media print {
  .rejilla { display: block; }
  .celda, .tarja { break-inside: avoid; box-shadow: none; margin-bottom: var(--e4); }
  .tarja > summary {
    min-height: 0; flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: var(--e1) var(--e4);
  }
  .tarja > .tarja__cuerpo { display: block !important; }
  .tarja__cita, .tarja__abrir { display: none !important; }
}

@media (max-width: 720px) {
  .tarja__cuerpo .ojo { margin-left: 0; }
}
@media (max-width: 560px) {
  .rejilla { gap: var(--e3); }
  .tarja > summary { min-height: 0; padding: var(--e4) var(--e4) var(--e4); }
  .tarja[open] > summary { padding: var(--e4) var(--e4); }
  .tarja__cuerpo { padding: var(--e4) var(--e4) var(--e6); }
  .pagina .tarja__cita, .tarja__cita { -webkit-line-clamp: 2; }
  .celda { padding: var(--e4) var(--e4) var(--e4); }
}
.celda--baja { padding: var(--e4) var(--e4); gap: var(--e1); }
.tarja__cita--recta { font-style: normal !important; }
.tarja > summary > .estado { align-self: flex-start; }

/* La celda que además es puerta (módulos → temario) */
a.celda, a.celda:hover { text-decoration: none; color: var(--texto); font-weight: 400; }
a.celda { transition: transform .16s, box-shadow .16s, border-color .16s; }
a.celda:hover {
  transform: translateY(-2px); box-shadow: var(--sombra-hover);
  border-color: color-mix(in srgb, var(--azul-medio) 40%, var(--borde));
}
a.celda .celda__pie { color: var(--azul-medio); }

/* Las seis áreas, más cuadradas: cuadrícula antes que lista de tarjetas */
.area { min-height: 168px; }

/* Los dos cuadros del elegidor, más cuadrados */
.entrada { min-height: 300px; }

/* Que todas las casillas de una fila terminen a la misma altura: la
   tarjeta ha de llenar su celda, y el <summary> ha de llenar la tarjeta.
   Sin esto, «Ver →» y «Explorar →» bailan de tarjeta en tarjeta. */
.area { height: 100%; }
.tarja { display: flex; flex-direction: column; }
.tarja > summary { flex: 1 1 auto; }
.tarja[open] > summary { flex: 0 0 auto; }
.celda--dato { gap: var(--e1); }
.celda--dato .celda__pie { color: var(--texto-suave); }

/* El programa: página ancha para que las cuadrículas quepan en tres
   columnas, pero con la prosa atada a un ancho de lectura. La columna
   de texto no crece porque la página crezca. */
.pagina--programa { max-width: 940px; }
.pagina--programa > :not(.rejilla):not(.pagina__cab):not(.areas-pie):not(.pagina__volver) {
  max-width: 68ch;
}

/* --- Una sola columna: módulos apilados, sesiones apiladas dentro ---
   El temario deja de ser una cuadrícula de doce y pasa a ser tres módulos
   en vertical. Las sesiones no existen en la página hasta que se abre su
   módulo, y entonces aparecen también en vertical, dentro de él. */
.rejilla--columna { grid-template-columns: 1fr; gap: var(--e4); }
.rejilla--columna .tarja > summary { min-height: 0; }

.tarja--modulo > summary { padding: var(--e6) var(--e8) var(--e6); gap: var(--e2); }
.tarja--modulo .tarja__t { font-size: var(--letra-26) !important; line-height: 1.2; }
.tarja--modulo .tarja__num {
  width: 34px; height: 34px; font-size: var(--letra-15);
}
.tarja--modulo[open] { border-color: color-mix(in srgb, var(--azul-medio) 55%, var(--borde)); }
.tarja--modulo[open] > summary { padding: var(--e4) var(--e6); }

/* El cuerpo de un módulo no es prosa: es la lista de sus sesiones. */
.tarja__cuerpo--sesiones {
  max-width: none; padding: var(--e4); background: var(--fondo-alt);
}
.tarja__cuerpo--sesiones .tarja { box-shadow: none; }

@media (max-width: 560px) {
  .tarja--modulo > summary { padding: var(--e4) var(--e4) var(--e4); }
  .tarja--modulo[open] > summary { padding: var(--e4) var(--e4); }
  .tarja--modulo .tarja__t { font-size: var(--letra-22) !important; }
  .tarja__cuerpo--sesiones { padding: var(--e3); }
}


/* ===================================================================
   9. Las dos barras — el diplomado como documentación
   ===================================================================
   Rejilla de tres columnas: navegación del diplomado a la izquierda,
   contenido en medio, «en esta página» a la derecha.

   Las dos barras van DENTRO de <main>, es decir dentro de lo que
   cifrar.py cifra. No es un capricho de maquetación: llevan nombres de
   módulos y de sesiones, que son contenido. Fuera de <main> cualquiera
   leería el temario en el código fuente sin tener la llave.
   =================================================================== */

.docs {
  display: grid;
  grid-template-columns: 232px minmax(0, 1fr) 236px;
  gap: 0 var(--e8);
  max-width: 1420px; margin: 0 auto; padding: 0 var(--e6);
  align-items: start;
}
.pagina--docs { max-width: none; margin: 0; padding: var(--e8) 0 var(--e24); }

.barra, .encima {
  position: sticky; top: 20px; align-self: start;
  max-height: calc(100dvh - 40px); overflow-y: auto; overscroll-behavior: contain;
  padding: var(--e12) 0 var(--e12); font-size: var(--letra-15); line-height: 1.5;
}
.barra { border-right: 1px solid var(--borde); padding-right: var(--e6); }
.encima { border-left: 1px solid var(--borde); padding-left: var(--e6); }

.barra__rotulo, .encima__rotulo {
  margin: 0 0 var(--e3) !important; padding-left: var(--e3);
  font-size: var(--letra-11) !important; font-weight: 700 !important; letter-spacing: .12em;
  text-transform: uppercase; color: var(--texto-suave) !important;
}
.docs nav ul { list-style: none; margin: 0; padding: 0; }
.docs nav li { margin: 0; }
.docs nav a {
  display: block; padding: var(--e2) var(--e3); border-radius: var(--radio-sm);
  color: var(--texto-suave); text-decoration: none; font-weight: 500;
}
.docs nav a:hover { background: var(--fondo-alt); color: var(--texto); text-decoration: none; }
.docs nav a[aria-current] { color: var(--azul-medio); font-weight: 700; background: var(--azul-claro); }

.docs nav ul ul { margin: 2px 0 var(--e2); padding-left: var(--e2); border-left: 1px solid var(--borde); }
.docs nav ul ul a { font-size: var(--letra-13); padding: var(--e1) var(--e3); }

/* La barra derecha del temario es espejo del acordeón, no su índice: las
   sesiones de un módulo aparecen solo cuando ese módulo está abierto.
   Con :has(), sin una línea de JavaScript. */

@media (max-width: 1200px) {
  .docs { grid-template-columns: 216px minmax(0, 1fr); }
  .encima { display: none; }
}
@media (max-width: 900px) {
  /* Sin sitio para columnas, la barra izquierda no se esconde: se pone
     arriba del contenido. Si desapareciera, el temario se quedaría sin
     mando —los paneles se abren desde ahí— y sin salida. */
  .docs { grid-template-columns: 1fr; max-width: 760px; padding: 0; }
  .barra {
    position: static; max-height: none; overflow: visible;
    border-right: 0; border-bottom: 1px solid var(--borde);
    padding: var(--e6) var(--e6) var(--e4); margin-bottom: var(--e1);
  }
  .pagina--docs { max-width: none; margin: 0; padding: var(--e6) var(--e6) var(--e16); }
}

/* --- El árbol vive en la barra izquierda -----------------------------
   El desglose es navegación, no contenido: los módulos se despliegan en
   la barra, y el centro solo muestra lo que corresponda. El vínculo
   entre las dos columnas es :has() — sin JavaScript. */
.barra__arbol { margin: 2px 0 var(--e2); padding-left: var(--e2); border-left: 1px solid var(--borde); }
.barra__mod > summary {
  display: block; padding: var(--e2) var(--e3) var(--e2) var(--e6); border-radius: var(--radio-sm);
  position: relative; cursor: pointer; list-style: none;
  color: var(--texto-suave); font-weight: 500; font-size: var(--letra-13);
}
.barra__mod > summary::-webkit-details-marker { display: none; }
.barra__mod > summary::marker { content: ""; }
.barra__mod > summary::before {
  content: ""; position: absolute; left: 8px; top: 50%;
  width: 0; height: 0; margin-top: -4px;
  border: 4px solid transparent; border-left-color: var(--texto-suave);
  transition: transform .15s;
}
.barra__mod[open] > summary::before {
  transform: rotate(90deg) translateX(-2px); border-left-color: var(--azul-medio);
}
.barra__mod > summary:hover { background: var(--fondo-alt); color: var(--texto); }
.barra__mod > summary:focus-visible { outline: 2px solid var(--azul-medio); outline-offset: 1px; }
.barra__mod[open] > summary { color: var(--azul-medio); font-weight: 700; }

/* El centro: una sesión a la vez, en limpio. Sin tarjeta y sin plegar —
   la que no está elegida no existe en la pantalla. Lo activa studio.js,
   que es el mismo que ya hace falta para descifrar la página. */
.sespanel { display: none; }
.sespanel.activa { display: block; }
.encima__ses { display: none; }
.encima__ses.activa { display: block; }

.sespanel__sobre {
  margin: 0 0 var(--e4) !important; font-size: var(--letra-11); font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; color: var(--texto-suave);
}
.pagina .sespanel__pregunta {
  margin: 0 0 .15em; font-size: clamp(1.5rem, 3vw, 2rem); line-height: 1.2;
  letter-spacing: -.02em; color: var(--azul-oscuro);
}
.pagina .sespanel__t {
  margin: 0 0 1.4em; font-size: var(--letra-17); color: var(--texto-suave); line-height: 1.5;
}
.sespanel > .paso { scroll-margin-top: var(--e6); }

/* El enlace de la sesión que se está viendo, en la barra izquierda */
.barra a.activa { color: var(--azul-medio); font-weight: 700; background: var(--azul-claro); }


/* Con ningún módulo abierto, la barra derecha del temario no tiene qué decir */

/* La competencia abre cada sesión: qué sabe hacer al terminarla. */
.paso--competencia { padding: var(--e4) var(--e4); border-radius: var(--radio-sm); background: var(--azul-claro); }
.paso--competencia .paso__que { color: var(--azul-medio); }
.paso--competencia p { color: var(--azul-oscuro); }

.pagina ol.competencias { margin: 0 0 1.4em; padding-left: 1.4em; }
.pagina ol.competencias li { margin-bottom: .9em; line-height: 1.68; }

/* --- Bibliografía en APA: lista vertical con sangría francesa --------- */
.pagina .apa-lista { list-style: none; margin: 0 0 2.4em; padding: 0; counter-reset: none; }
.apa { padding: var(--e6) 0 var(--e6); border-bottom: 1px solid var(--borde); }
.apa:first-child { padding-top: var(--e1); }
.apa__papel {
  display: block; margin-bottom: var(--e2);
  font-size: var(--letra-11); font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--texto-suave);
}
.pagina .apa__ref {
  margin: 0 0 1em; padding-left: 2.2em; text-indent: -2.2em;
  line-height: 1.62; color: var(--texto);
}
.pagina .apa__que { margin: 0 0 1em; line-height: 1.7; color: var(--texto-suave); }
.pagina .apa__pie { margin: 0; font-size: var(--letra-15); line-height: 1.6; color: var(--texto-suave); }
.apa__pie .estado { margin-right: var(--e2); vertical-align: 1px; }

@media (max-width: 560px) {
  .pagina .apa__ref { padding-left: 1.4em; text-indent: -1.4em; }
}
