/* Hoja base de ClaudeProfessor.
   La comparten las cinco páginas del sitio — index, bóveda, skills, prompts y
   la guía de instalación: si una regla cambia, cambia en las cinco. Antes cada
   página llevaba su copia y se desincronizaban a la primera edición; prompts y
   la guía llegaron a tener su propio modo oscuro, con un negro cálido y un
   coral que no salían de marca.py.

   Los colores salen del manual de marca (marca.py). No se inventa ninguno
   aquí: si hace falta uno nuevo, se añade allí primero. */
:root{
    /* Rampa terracota del logo (tono 38,5° en OKLCH). El 500 es el color
       exacto de la mascota; los demás pasos se derivaron de él. */
    --coral:#CE6B4B; --coral-cl:#FBA589; --coral-os:#93482F;
    --crema:#F0EEE6; --papel:#FAF7F2; --blanco:#fff;
    /* La tinta es la de las gafas del logo, no un gris cálido inventado. */
    --tinta:#11162C; --sec:rgba(17,22,44,.68); --tenue:rgba(17,22,44,.38);
    --linea:rgba(17,22,44,.12); --noche:#11162C; --bata:#EDF5F8;
    --arena:#EAD9C8; --arena-bd:rgba(147,72,47,.30); --arena-tx:#482215;
    --arena-ey:#93482F;
    --punto:rgba(17,22,44,.17);
    --radio:100px; --sombra:0 10px 30px rgba(17,22,44,.08);
  }
  /* El modo oscuro se elige, no se voltea: cada paso está medido contra la
     superficie oscura, no aclarado a ojo desde el claro. */
  @media (prefers-color-scheme:dark){
    :root{--papel:#0C1020; --crema:#161B31; --blanco:#1C2239; --tinta:#EDF5F8;
          --sec:rgba(237,245,248,.72); --tenue:rgba(237,245,248,.42);
          --linea:rgba(237,245,248,.14); --coral:#FBA589; --coral-os:#F0815E;
          /* La arena a plena luz deslumbra sobre fondo oscuro: aquí es el
             terracota llevado al fondo de su rampa, con el texto en claro. */
          --arena:#3A1D14; --arena-bd:rgba(251,165,137,.34); --arena-tx:#FFE0D6;
          --arena-ey:#FBA589;
          --punto:rgba(237,245,248,.14);}
  }
  *{margin:0;padding:0;box-sizing:border-box}
  /* Rejilla de puntos: un punto de 1px cada 32px, tan tenue que no se lee
     como patrón sino como papel milimetrado. Es lo que más define la silueta
     de la referencia. Va en el body y no en una capa aparte: un elemento
     fijo con z-index negativo queda por detrás del fondo del documento y no
     se ve ni un punto. */
  body{background:var(--papel);color:var(--tinta);
       background-image:radial-gradient(var(--punto) 1px,transparent 1px);
       background-size:32px 32px;background-attachment:fixed;
       font:500 17px/1.6 'DM Sans',-apple-system,BlinkMacSystemFont,sans-serif;
       -webkit-font-smoothing:antialiased;overflow-x:hidden}
  .env{max-width:1080px;margin:0 auto;padding:0 24px}
  /* Columna de lectura: 720px de texto dentro del mismo canalón de 24px que
     el resto del sitio, para que la vuelta de arriba y el pie caigan en la
     misma vertical que los párrafos. */
  .env.estrecho{max-width:768px}
  a{color:inherit;text-decoration:none}
  :focus-visible{outline:2.5px solid var(--coral);outline-offset:3px;border-radius:6px}

  /* ── Héroe ───────────────────────────────────────────────────────────
     Centrado y sobre claro, como la referencia: mascota, wordmark en
     minúsculas con punto, lema, tarjeta destacada y dos filas de píldoras.
     Lo que no se copia es el color — el naranja es de tododeia; aquí manda
     el terracota del logo. */
  .heroe{min-height:100svh;display:flex;flex-direction:column;
         position:relative;padding:26px 0 30px}
  /* width:100% es obligatorio: el `margin:0 auto` de .env anula el estirado
     dentro de un contenedor flex y los hijos se encogen al contenido. */
  .heroe > .env{width:100%}
  .barra{display:flex;justify-content:space-between;align-items:center;
         font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;
         font-weight:700;color:var(--tenue);position:relative;z-index:2}
  .barra .ast-mini{width:15px;height:15px;color:var(--coral);
                   vertical-align:-2px;margin-right:8px}
  .barra a:hover{color:var(--tinta)}

  .heroe-cuerpo{flex:1;display:flex;flex-direction:column;align-items:center;
                justify-content:center;text-align:center;gap:15px;
                position:relative;z-index:2;padding:34px 0}
  h1.wordmark{font-family:'Montserrat',sans-serif;font-weight:800;
              font-size:clamp(31px,7.3vw,90px);letter-spacing:-.045em;
              line-height:.95;white-space:nowrap}
  h1.wordmark .pt{color:var(--coral)}
  .lema{color:var(--sec);font-size:clamp(15px,2vw,19px)}

  /* Tarjeta destacada: el equivalente al banner de «edición del mes». Va
     pegada al lema y es el único sitio de la página con fondo cálido, para
     que la vista caiga ahí antes que en las píldoras. */
  .destacado{margin-top:6px;display:inline-flex;align-items:center;gap:14px;
             background:var(--arena);border:1px solid var(--arena-bd);
             border-radius:16px;padding:11px 22px 11px 12px;text-align:left;
             transition:transform .18s,box-shadow .18s}
  .destacado:hover{transform:translateY(-2px);
                   box-shadow:0 10px 26px rgba(17,22,44,.12)}
  .destacado .ico{width:42px;height:42px;border-radius:11px;background:#fff;
                  display:grid;place-items:center;flex:none;
                  box-shadow:0 1px 3px rgba(17,22,44,.16)}
  .destacado .ico svg{width:24px;height:24px;color:var(--coral)}
  .destacado .ed{display:block;font-size:10.5px;font-weight:700;
                 letter-spacing:.16em;text-transform:uppercase;color:var(--arena-ey)}
  .destacado .tt{display:block;font-family:'Montserrat',sans-serif;font-weight:800;
                 font-size:17px;letter-spacing:-.015em;color:var(--arena-tx);margin-top:1px}

  /* Dos filas de píldoras. Las medidas son las de la referencia: radio
     completo, 12px/24px de relleno, 16px de cuerpo. Lo que cambia es el
     reparto de pesos: allí compiten cinco rellenas, aquí solo destacan dos. */
  .pastillas{display:flex;flex-wrap:wrap;justify-content:center;gap:11px;
             margin-top:6px}
  .pill{display:inline-flex;align-items:center;gap:9px;border-radius:100px;
        padding:12px 24px;font-size:16px;font-weight:500;
        border:1px solid transparent;
        transition:transform .16s,box-shadow .16s,background .16s,border-color .16s}
  .pill:hover{transform:translateY(-2px)}
  .pill svg{width:17px;height:17px;flex:none}
  .pill.lleno{background:var(--coral);color:#11162C;font-weight:700}
  .pill.lleno:hover{box-shadow:0 8px 20px rgba(206,107,75,.36)}
  .pill.borde{background:transparent;border-color:var(--coral);
              color:var(--tinta);font-weight:700}
  .pill.borde:hover{background:rgba(206,107,75,.11)}
  .pill.neutro{background:var(--blanco);border-color:var(--linea);color:var(--tinta)}
  .pill.neutro:hover{border-color:var(--coral)}
  /* La oscura lleva un aro terracota, como la «Bóveda» del original: es la
     que hay que pulsar y tiene que ganarle a las neutras. */
  .pill.oscuro{background:var(--noche);color:#EDF5F8;font-weight:700;
               box-shadow:0 0 0 2.5px rgba(206,107,75,.55)}
  .pill.oscuro:hover{box-shadow:0 0 0 2.5px var(--coral),
                     0 8px 20px rgba(17,22,44,.26)}
  .pill.oscuro svg{color:var(--coral-cl)}
  @media (prefers-color-scheme:dark){
    /* Se invierte: sobre fondo oscuro la que manda es la clara. El aro
       también cambia de paso, porque el terracota de modo claro se apaga
       contra la tinta y el aro dejaba de leerse. */
    .pill.oscuro{background:#EDF5F8;color:#11162C;
                 box-shadow:0 0 0 2.5px rgba(251,165,137,.60)}
    .pill.oscuro:hover{box-shadow:0 0 0 2.5px #FBA589,
                       0 8px 20px rgba(0,0,0,.40)}
    .pill.oscuro svg{color:#93482F}
    .pill.lleno{color:#11162C}
  }

  /* Mascot: dos capas para que el brazo salude de verdad. Es CSS y no un
     vídeo: pesa nada, escala nítido y respeta el modo oscuro. */
  .mascot{position:relative;width:clamp(104px,14vw,164px);aspect-ratio:1;flex:none;
          animation:flotar 3.2s ease-in-out infinite}
  .mascot img{position:absolute;inset:0;width:100%;height:100%;
              image-rendering:pixelated}
  /* Pivote en la articulación del hombro (borde interior del brazo, a media
     altura). Con el pivote abajo el brazo se despegaba del cuerpo al girar. */
  .mascot .brazo{transform-origin:80.5% 42%;
                 animation:saludo 2.8s ease-in-out infinite}
  @keyframes saludo{
    0%,52%,100%{transform:rotate(0deg)}
    58%{transform:rotate(-34deg)}
    65%{transform:rotate(-6deg)}
    72%{transform:rotate(-32deg)}
    79%{transform:rotate(-8deg)}
    86%{transform:rotate(-24deg)}
    93%{transform:rotate(-3deg)}
  }
  @keyframes flotar{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
  @media (prefers-reduced-motion:reduce){.mascot,.mascot .brazo{animation:none}}

  /* ── Secciones ───────────────────────────────────────────────────────
     Todas sobre la misma rejilla de puntos, sin paneles que corten la
     página. La referencia no cambia de fondo en ningún momento y es lo que
     le da esa sensación de sitio ligero. */
  section{padding:76px 0}
  .cabecera-sec{text-align:center;margin-bottom:38px}
  .eyebrow{font-size:12px;letter-spacing:.2em;text-transform:uppercase;
           color:var(--coral);font-weight:700;margin-bottom:12px}
  h2{font-family:'Montserrat',sans-serif;font-size:clamp(27px,4.4vw,40px);
     letter-spacing:-.03em;line-height:1.08;font-weight:800;text-wrap:balance}
  h2 em{font-style:italic;font-weight:600;color:var(--coral)}
  .intro{margin:14px auto 0;color:var(--sec);max-width:56ch;font-size:17px}

  .rejilla{display:grid;gap:22px;
           grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
  .rejilla.dos{max-width:880px;margin:0 auto;
               grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}

  /* Tarjeta con cabecera de imagen, como las de producto de la referencia:
     franja de color con el icono centrado, etiqueta encima, y un pie
     separado por una línea con la acción a la derecha. */
  .tarjeta{background:var(--blanco);border:1px solid var(--linea);border-radius:18px;
           overflow:hidden;display:flex;flex-direction:column;
           transition:transform .18s,box-shadow .18s,border-color .18s}
  .tarjeta:hover{transform:translateY(-4px);border-color:rgba(206,107,75,.45);
                 box-shadow:0 18px 44px rgba(17,22,44,.11)}
  /* Cabecera de tarjeta: la mascota en la situación que cuenta el recurso,
     generada con FLUX usando el logo como referencia. El fondo crema de la
     imagen se continúa con el de la caja, así que en modo claro la ilustración
     parece recortada y no pegada dentro de un rectángulo. */
  .capa{position:relative;height:176px;background:#F0EEE6;overflow:hidden}
  .capa img{width:100%;height:100%;object-fit:cover;object-position:center 46%;
            display:block;image-rendering:pixelated}
  @media (prefers-color-scheme:dark){
    /* Sobre fondo oscuro el crema de la ilustración se convierte en un ladrillo
       blanco. Se apaga un punto para que no deslumbre al lado del panel. */
    .capa{background:#241E1A}
    .capa img{filter:brightness(.88) saturate(1.04)}
  }
  .etq{position:absolute;top:13px;left:13px;font-size:10.5px;letter-spacing:.14em;
       text-transform:uppercase;font-weight:700;color:#11162C;
       background:var(--coral-cl);padding:6px 12px;border-radius:100px}
  .cuerpo-t{padding:20px 22px 22px;display:flex;flex-direction:column;gap:9px;flex:1}
  .tarjeta h3{font-family:'Montserrat',sans-serif;font-size:18.5px;
              letter-spacing:-.018em;font-weight:800}
  .tarjeta p{color:var(--sec);font-size:15px;line-height:1.5;flex:1}
  .meta{display:flex;align-items:center;justify-content:space-between;gap:10px;
        font-size:13.5px;color:var(--tenue);
        border-top:1px solid var(--linea);padding-top:15px;margin-top:5px}
  .accion{display:inline-flex;align-items:center;gap:7px;background:var(--coral);
          color:#11162C;font-weight:700;font-size:14px;padding:9px 17px;
          border-radius:100px;transition:box-shadow .16s}
  .tarjeta:hover .accion{box-shadow:0 6px 16px rgba(206,107,75,.38)}

  .ver-todo{text-align:center;margin-top:32px}

  /* ── Páginas interiores ──────────────────────────────────────────────
     Todo lo que no es la portada: sin héroe a pantalla completa y con una
     vuelta arriba. Estaba copiado en el <style> de bóveda y de skills, que
     es justo lo que esta hoja existe para evitar. */
  .volver{display:inline-flex;align-items:center;gap:8px;font-size:13px;
          font-weight:700;letter-spacing:.14em;text-transform:uppercase;
          color:var(--tenue);padding:34px 0 0}
  .volver:hover{color:var(--coral)}
  .volver svg{width:15px;height:15px;color:var(--coral)}
  main > section{padding:46px 0 84px}

  /* ── Páginas de lectura ──────────────────────────────────────────────
     Prompts y la guía de instalación: texto largo en una columna, no una
     rejilla de tarjetas. Son las dos páginas a las que llega el tráfico
     desde el DM, así que tienen que parecer el mismo sitio que la portada;
     antes traían su propia paleta entera y no lo parecían. */
  /* El padding lateral lo pone .env; aquí solo el aire de arriba, que separa
     la vuelta del titular, y el de abajo antes del cierre. */
  .lectura{padding-top:38px;padding-bottom:24px}
  .lectura header{margin-bottom:52px}
  .lectura h1{font-family:'Montserrat',sans-serif;font-weight:800;
              font-size:clamp(33px,6.6vw,50px);line-height:1.06;
              letter-spacing:-.025em;text-wrap:balance}
  .lectura h1 em{font-style:normal;color:var(--coral)}
  .entradilla{margin-top:20px;font-size:19px;color:var(--sec);max-width:56ch}
  .lectura h2{font-family:'Montserrat',sans-serif;margin:54px 0 8px;
              font-size:13px;letter-spacing:.16em;text-transform:uppercase;
              color:var(--coral);font-weight:700}
  .lectura h3{font-family:'Montserrat',sans-serif;font-size:21px;font-weight:800;
              letter-spacing:-.015em;margin-top:32px}
  .lectura h3 + p{margin-top:8px;color:var(--sec)}
  .lectura p + p{margin-top:14px}
  /* El reset de arriba quita el padding a todo, y una lista sin él pierde la
     sangría y se le salen los puntos del contenedor. Se devuelve aquí. */
  .lectura ul,.lectura ol{margin-top:14px;padding-left:26px}
  .lectura li{line-height:1.6;margin-top:7px}
  .lectura li::marker{color:var(--coral)}
  /* Los enlaces dentro del texto sí llevan color: en el resto del sitio el
     enlace es una tarjeta o una píldora entera y se ve solo. */
  .lectura p a,.lectura li a,.lectura td a{color:var(--coral);font-weight:600}
  .lectura p a:hover,.lectura li a:hover,.lectura td a:hover{text-decoration:underline}

  /* Aviso: el inciso que corta la lectura sin sacarte de ella. */
  .aviso{margin-top:30px;padding:18px 22px;border-left:5px solid var(--coral);
         background:var(--blanco);font-size:16px;color:var(--sec)}
  .aviso strong{color:var(--tinta)}

  pre{margin-top:14px;background:var(--blanco);border:1px solid var(--linea);
      border-radius:10px;padding:18px 20px;white-space:pre-wrap;overflow-x:auto;
      font:400 15px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}
  /* El `overflow-wrap` va porque una url dentro de un `code` es una sola
     palabra sin espacios: no parte por ningún sitio, se sale de su columna y
     arrastra la página entera a scroll horizontal. Pasó con la de soporte de
     Google en /google, que mide 360px metida en una columna de 343 y sacaba
     ocho píxeles. Con `anywhere` parte donde le toque. */
  code{font:400 .93em/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;
       background:var(--blanco);border:1px solid var(--linea);
       border-radius:5px;padding:1px 6px;overflow-wrap:anywhere}
  pre code{background:none;border:0;padding:0}

  /* Una tabla de tres columnas no cabe en un móvil, y el body lleva
     overflow-x:hidden: sin este envoltorio la última columna no es que se
     salga, es que desaparece y no hay forma de llegar a ella. Y el móvil es
     todo el tráfico que llega desde Instagram. */
  .tabla{overflow-x:auto;margin-top:18px;-webkit-overflow-scrolling:touch}
  .tabla table{margin-top:0;min-width:456px}
  /* Y en pantalla de móvil ni siquiera rodando se lee: la columna que
     importa —para qué sirve cada skill— queda partida por la mitad. Ahí la
     tabla deja de ser tabla y cada fila se apila. La cabecera sobra porque
     el orden ya dice qué es cada cosa: nombre, paquete, para qué. */
  @media (max-width:560px){
    .tabla{overflow:visible}
    .tabla table,.tabla tbody,.tabla tr,.tabla td{display:block;width:auto;min-width:0}
    .tabla thead{display:none}
    .tabla tr{border-bottom:1px solid var(--linea);padding:15px 0}
    .tabla td{border:0;padding:0}
    .tabla td:first-child{white-space:normal}
    .tabla td:nth-child(2){margin:9px 0 7px}
    .tabla td:last-child{color:var(--sec);font-size:15px;line-height:1.5}
  }
  table{width:100%;border-collapse:collapse;margin-top:18px;font-size:16px}
  th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--linea);
        vertical-align:top}
  th{font-size:12px;letter-spacing:.12em;text-transform:uppercase;
     color:var(--tenue);font-weight:700;border-bottom-width:2px}
  td:first-child{white-space:nowrap}
  td code{font-size:14px}

  /* Cierre de página de lectura: quien llega aquí desde un DM ha terminado
     de leer y no tiene dónde ir. Las mismas píldoras del héroe, en pequeño. */
  .siguiente{margin-top:64px;padding-top:34px;border-top:1px solid var(--linea);
             text-align:center}
  .siguiente p{color:var(--sec);margin-bottom:18px}
  .siguiente .pastillas{margin-top:0}

  .cta-final{text-align:center;padding:84px 24px 96px}
  .cta-final h2{max-width:16ch;margin:0 auto}

  footer{border-top:1px solid var(--linea);padding:34px 0;color:var(--tenue);
         font-size:14.5px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
  footer a:hover{color:var(--coral)}

  @media (max-width:620px){
    .heroe{padding-top:18px}
    .heroe-cuerpo{gap:13px;padding:24px 0}
    .destacado{padding:10px 16px 10px 10px;gap:11px}
    .destacado .tt{font-size:15px}
    .pill{padding:11px 19px;font-size:15px}
    section{padding:56px 0}
    .capa{height:138px}
  }

  /* ── Botón de copiar en los bloques de código ──────────────────────────
     La bóveda son prompts para copiar, y hasta ahora había que seleccionar a
     mano. En el móvil —de donde llega casi todo, porque el enlace va por DM—
     seleccionar diez líneas sin pasarse es una pelea. Lo monta `copiar.js`;
     si el script no carga, el bloque se sigue leyendo igual. */
  .copiable{position:relative}
  .copiable pre{padding-right:96px}
  .copiar{position:absolute;top:12px;right:12px;z-index:2;
          font:600 13px/1 'Poppins',system-ui,sans-serif;letter-spacing:.02em;
          color:var(--tinta);background:var(--crema);border:1px solid var(--linea);
          border-radius:8px;padding:8px 12px;cursor:pointer;
          transition:background .15s ease,color .15s ease,border-color .15s ease}
  .copiar:hover{background:var(--tinta);color:var(--blanco);border-color:var(--tinta)}
  .copiar:focus-visible{outline:2px solid var(--coral);outline-offset:2px}
  .copiar.hecho{background:var(--coral);color:var(--blanco);border-color:var(--coral)}
  @media (max-width:520px){
    .copiable pre{padding-right:20px;padding-top:52px}
    .copiar{top:10px;right:10px}
  }

  /* ── Buscador de la bóveda ─────────────────────────────────────────────
     Aparece solo si hay tarjetas de sobra, y lo monta `buscar.js`. Quien llega
     desde un DM viene a por UNA cosa concreta: no explora, busca. */
  .buscador{margin:0 0 26px}
  .buscador input{width:100%;max-width:440px;font:500 17px/1.4 'Poppins',system-ui,sans-serif;
                  color:var(--tinta);background:var(--blanco);
                  border:1px solid var(--linea);border-radius:12px;padding:14px 18px;
                  transition:border-color .15s ease,box-shadow .15s ease}
  .buscador input::placeholder{color:var(--tenue)}
  .buscador input:focus{outline:0;border-color:var(--coral);
                        box-shadow:0 0 0 3px rgba(206,107,75,.16)}
  .buscador .cuenta{margin:10px 2px 0;font-size:15px;color:var(--sec);min-height:1.2em}
  .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;
                   overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
