/* Tema de entradas y páginas de Durandir.
   Las @font-face las inyecta functions.php: apuntan a los woff2 del plugin de la portada cuando
   está instalado, y a la copia del tema cuando no. Aquí solo se usan las familias.

   Todo cuelga de `.tmn` (clase que el tema añade al <body>): si una página lleva el atajo de la
   landing, esa hoja actúa dentro de `.imb-landing` y no se cruzan. */

/* La barra es pegajosa: sin este margen, un enlace a un anclaje deja el titular DEBAJO de ella. */
html:has(body.tmn) {
  scroll-padding-top: 74px;
}

/* Sin rebote al tirar con fuerza arriba o abajo, como en la portada. Va en <html>, que es quien
   desplaza la página: en <body> el navegador lo ignora. */
html.tmn-root,
body.tmn {
  overscroll-behavior-y: none;
}

.tmn {
  /* El color de la casa es el relleno de la tira de anuncios de la portada. Los demás son
     variantes suyas, no colores nuevos. */
  --acc-050: #c8cfd7;
  --acc-200: #909eae;
  --acc-400: #909eae;
  --acc-600: #656f7a;
  --ink-deep: #0e0e0e;

  --text: #ffffff;
  --text-70: rgba(255, 255, 255, 0.78);
  --text-50: rgba(255, 255, 255, 0.55);
  --edge: rgba(255, 255, 255, 0.14);
  --edge-soft: rgba(255, 255, 255, 0.08);

  --ink: #000000;
  --surface: rgba(255, 255, 255, 0.045);
  --surface-line: rgba(255, 255, 255, 0.09);
  --radius: 18px;

  --shell: 1240px;
  --read: 760px;
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);

  margin: 0;
  background: var(--ink);
  color: var(--text);
  font-family: "Engramite Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
  font-size: 17px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}

.tmn *,
.tmn *::before,
.tmn *::after {
  box-sizing: border-box;
}

.tmn a {
  color: var(--acc-200);
  text-decoration: none;
}

.tmn a:hover {
  color: var(--acc-050);
}

.tmn img,
.tmn video,
.tmn iframe {
  max-width: 100%;
  height: auto;
}

.tmn :focus-visible {
  outline: 2px solid var(--acc-400);
  outline-offset: 2px;
}

.tmn-shell {
  width: min(100% - 48px, var(--shell));
  margin-inline: auto;
}

.tmn-narrow {
  width: min(100% - 48px, var(--read));
}

.tmn-sr,
.tmn .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.tmn .tmn-skip {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
  padding: 10px 16px;
  background: var(--ink-deep);
  color: var(--text);
}

.tmn .tmn-skip:focus {
  left: 12px;
  top: 12px;
}

/* ---------- tira de anuncios ---------- */
/* Misma franja que la portada. Llega con `hidden` y la enseña el JS, para que a quien ya la cerró
   no le parpadee al cargar. */
.tmn-ticker {
  position: relative;
  z-index: 60;
  display: flex;
  align-items: center;
  gap: 16px;
  min-height: 39px;
  padding-inline: clamp(20px, 3.5vw, 48px);
  background: #909eae;
  color: #141414;
  font-size: 12px;
  font-weight: 500;
}

.tmn-ticker[hidden] {
  display: none;
}

.tmn-ticker p {
  flex: 1;
  margin: 0;
}

.tmn .tmn-ticker a {
  color: #141414;
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.tmn .tmn-ticker a:hover {
  opacity: 0.8;
}

.tmn .tmn-ticker-close {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  padding: 0;
  border: 0;
  background: transparent;
  color: rgba(20, 20, 20, 0.66);
  cursor: pointer;
}

.tmn .tmn-ticker-close:hover {
  background: transparent;
  color: #141414;
}

.tmn .tmn-ticker-close svg {
  width: 13px;
  height: 13px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
}

/* ---------- barra ---------- */
/* The bar: solid page colour, mark on the left and three links on the right. */
.tmn-nav-dock {
  position: sticky;
  top: 0;
  z-index: 50;
}

.tmn-nav {
  width: 100%;
  padding-inline: clamp(20px, 3.5vw, 48px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  height: 58px;
  /* Fondo sólido del color de la página: marca en el blog, blanco en la documentación y negro en
     el resto. El cristal desenfocado queda para la portada y el contacto. */
  background: var(--ink);
  color: #ffffff;
}

/* El cristal va en una capa aparte y no en la barra: un desenfoque dentro de otro no ve la página,
   y el menú desplegado, también de cristal, se quedaba sin desenfocar. */
.tmn-contact-page .tmn-nav {
  position: relative;
  isolation: isolate;
  background: transparent;
}

.tmn-contact-page .tmn-nav::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

/* El menú desplegado lleva el mismo fondo que la barra: cristal aquí, color de la casa en el blog
   y blanco en la documentación (esos dos ya salen de --ink). */
.tmn-contact-page .tmn-section-list {
  background: transparent;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

.tmn-nav-actions {
  display: inline-flex;
  align-items: center;
  gap: 28px;
}

.tmn-brand {
  display: inline-flex;
  align-items: center;
  flex: none;
}

/* Width comes from the mark's viewBox (2100 × 494): an <svg> without a width attribute does not
   derive it from the height the same way in every WebKit. White at the top, house colour once the
   page moves, as on the front page. */
.tmn .tmn-brand-logo {
  display: block;
  height: 32px;
  width: calc(32px * 2100 / 494);
  color: #ffffff;
  transition: color 220ms var(--ease);
}

.tmn.tmn-page-moved .tmn-brand-logo {
  color: #909eae;
}

.tmn .tmn-nav-link {
  display: inline-flex;
  align-items: center;
  color: #ffffff;
  font-family: "Engramite Display", -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
  transition: color 150ms ease;
}

/* Igual que en la portada: sin subrayado, el color de la casa al pasar por encima. */
.tmn .tmn-nav-link:hover,
.tmn .tmn-nav-link:focus-visible {
  color: var(--acc-400);
  text-decoration: none;
}

/* ---------- estructura ---------- */
.tmn-main {
  padding-block: 56px 96px;
}

.tmn-page-head {
  padding-bottom: 8px;
  margin-bottom: 40px;
}

/* Cabecera del blog: rótulo, título grande y entradilla. */
.tmn-blog-head {
  padding-block: 8px 48px;
  max-width: 720px;
}

.tmn-kicker {
  display: inline-block;
  margin-bottom: 16px;
  color: var(--acc-200);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 3px;
  text-transform: uppercase;
}

.tmn-page-title {
  margin: 0;
  font-family: "Engramite Display", "Engramite Sans", serif;
  font-size: clamp(30px, 4vw, 44px);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.1;
}

.tmn-page-sub {
  margin-top: 14px;
  color: var(--text-50);
  font-size: 15px;
}

/* ---------- listado ---------- */
.tmn-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}

/* Tarjeta: superficie levantada, esquinas redondeadas y NADA de sombra. El enlace cubre la
   tarjeta entera para que se pueda pinchar en cualquier parte sin anidar enlaces. */
.tmn-card {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--surface-line);
  border-radius: var(--radius);
  background: var(--surface);
  transition: border-color 160ms var(--ease), background 160ms var(--ease);
}

.tmn-card:hover {
  border-color: rgba(144, 158, 174, 0.55);
  background: rgba(255, 255, 255, 0.06);
}

.tmn-card-link {
  position: absolute;
  inset: 0;
  z-index: 2;
}

.tmn-card-media img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.tmn-card-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 24px 24px 26px;
}

.tmn-chip {
  align-self: flex-start;
  padding: 4px 12px;
  border-radius: 999px;
  background: rgba(144, 158, 174, 0.16);
  color: var(--acc-200);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.tmn-card-title {
  margin: 0;
  font-family: "Engramite Display", "Engramite Sans", serif;
  font-size: 21px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.25;
  color: var(--text);
}

.tmn-card-excerpt {
  margin: 0;
  color: var(--text-70);
  font-size: 15px;
  line-height: 1.6;
}

/* Pegada abajo: así las fechas quedan a la misma altura en toda la fila. */
.tmn-card-date {
  margin-top: auto;
  padding-top: 4px;
  color: var(--text-50);
  font-size: 13px;
}

/* La primera entrada manda: ancho entero, imagen a un lado y texto al otro. */
.tmn-card-featured {
  grid-column: 1 / -1;
  flex-direction: row;
  align-items: stretch;
}

.tmn-card-featured .tmn-card-media {
  flex: 0 0 52%;
}

.tmn-card-featured .tmn-card-media img {
  height: 100%;
  aspect-ratio: auto;
  min-height: 400px;
}

.tmn-card-featured .tmn-card-body {
  justify-content: center;
  gap: 16px;
  padding: 40px;
}

.tmn-card-featured .tmn-card-title {
  font-size: 32px;
}

.tmn-card-featured .tmn-card-excerpt {
  font-size: 17px;
}

.tmn-list {
  display: flex;
  flex-direction: column;
}

.tmn-item {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 28px;
  padding-block: 32px;
}

.tmn-item:first-child {
  padding-top: 0;
}

.tmn-item:not(:has(.tmn-item-media)) {
  grid-template-columns: minmax(0, 1fr);
}

.tmn-item-media img {
  border-radius: var(--radius);
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  filter: saturate(0.9);
}

.tmn-item-title {
  margin: 0;
  font-family: "Engramite Display", "Engramite Sans", serif;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.25;
}

.tmn-item-title a {
  color: var(--text);
}

.tmn-item-title a:hover {
  color: var(--acc-200);
}

.tmn-item-excerpt {
  margin-top: 10px;
  color: var(--text-70);
  font-size: 16px;
}

.tmn-item-excerpt p {
  margin: 0;
}

.tmn-item.sticky .tmn-item-title a::before {
  content: "· ";
  color: var(--acc-400);
}

.tmn-empty {
  padding-block: 40px;
  color: var(--text-70);
}

/* ---------- entrada y página ---------- */
.tmn-entry-head {
  padding-bottom: 4px;
  margin-bottom: 36px;
}

.tmn-entry-title {
  margin: 0;
  font-family: "Engramite Display", "Engramite Sans", serif;
  font-size: clamp(32px, 4.6vw, 52px);
  font-weight: 700;
  letter-spacing: -0.035em;
  line-height: 1.08;
}

.tmn-meta {
  margin-top: 16px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  color: var(--text-50);
  font-size: 13px;
}

.tmn-meta a {
  color: var(--text-50);
}

.tmn-meta a:hover {
  color: var(--acc-200);
}

.tmn-meta-sep {
  opacity: 0.5;
}

/* La imagen a la izquierda y el título a la derecha, a la misma altura. Sin imagen destacada la
   cabecera ocupa el ancho entero, y en un teléfono la imagen se pone encima del título. */
.tmn-entry-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(24px, 4vw, 56px);
  margin-bottom: clamp(36px, 5vw, 64px);
}

.tmn-entry-hero-bare {
  grid-template-columns: minmax(0, 1fr);
}

.tmn-entry-hero .tmn-entry-head {
  padding-bottom: 0;
  margin-bottom: 0;
}

.tmn-entry-hero .tmn-featured {
  margin: 0;
}

.tmn-featured {
  margin: 0 0 40px;
}

.tmn-featured img {
  display: block;
  width: 100%;
  border-radius: var(--radius);
}

/* ---------- texto corrido ---------- */
.tmn-prose {
  color: var(--text-70);
  font-size: 18px;
  line-height: 1.75;
}

.tmn-prose > * + * {
  margin-top: 1.25em;
}

.tmn-prose h1,
.tmn-prose h2,
.tmn-prose h3,
.tmn-prose h4,
.tmn-prose h5,
.tmn-prose h6 {
  margin: 2em 0 0.6em;
  color: var(--text);
  font-family: "Engramite Display", "Engramite Sans", serif;
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.2;
}

.tmn-prose h2 { font-size: 30px; }
.tmn-prose h3 { font-size: 24px; }
.tmn-prose h4 { font-size: 20px; }
.tmn-prose h5,
.tmn-prose h6 { font-size: 17px; }

.tmn-prose a {
  color: var(--acc-200);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.tmn-prose strong {
  color: var(--text);
  font-weight: 600;
}

.tmn-prose ul,
.tmn-prose ol {
  padding-left: 1.3em;
}

.tmn-prose li + li {
  margin-top: 0.4em;
}

.tmn-prose blockquote {
  margin-inline: 0;
  padding-left: 22px;
  border-left: 2px solid var(--acc-400);
  color: var(--text);
  font-size: 20px;
}

.tmn-prose blockquote cite {
  display: block;
  margin-top: 10px;
  color: var(--text-50);
  font-size: 14px;
  font-style: normal;
}

.tmn-prose code,
.tmn-prose kbd {
  padding: 2px 6px;
  background: rgba(255, 255, 255, 0.07);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.88em;
  color: var(--acc-050);
}

.tmn-prose pre {
  padding: 18px 20px;
  overflow-x: auto;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--edge-soft);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 14px;
  line-height: 1.6;
}

.tmn-prose pre code {
  padding: 0;
  background: none;
  color: inherit;
}

.tmn-prose hr,
.tmn-prose .wp-block-separator {
  height: 0;
  border: 0;
  border-top: 1px solid var(--edge-soft);
}

.tmn-prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15px;
}

.tmn-prose th,
.tmn-prose td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--edge-soft);
  text-align: left;
}

.tmn-prose th {
  color: var(--text);
  font-weight: 600;
}

.tmn-prose figure {
  margin-inline: 0;
}

.tmn-prose figcaption,
.tmn-prose .wp-caption-text {
  margin-top: 8px;
  color: var(--text-50);
  font-size: 13px;
}

/* Clases de alineación de WordPress: el contenido las emite y sin esto se ignoran. */
.tmn-prose .alignleft {
  float: left;
  margin: 0.4em 1.6em 1.2em 0;
}

.tmn-prose .alignright {
  float: right;
  margin: 0.4em 0 1.2em 1.6em;
}

.tmn-prose .aligncenter {
  display: block;
  margin-inline: auto;
}

.tmn-prose .alignwide {
  width: min(100vw - 48px, var(--shell));
  max-width: none;
  margin-inline: calc(50% - min(50vw - 24px, var(--shell) / 2));
}

.tmn-prose .alignfull {
  width: 100vw;
  max-width: none;
  margin-inline: calc(50% - 50vw);
}

.tmn-single-full .tmn-prose .alignwide,
.tmn-single-full .tmn-prose .alignfull {
  margin-inline: 0;
  width: auto;
}

.tmn-prose .wp-block-image img {
  display: block;
}

.tmn-prose .wp-block-button__link {
  display: inline-flex;
  align-items: center;
  height: 40px;
  padding-inline: 22px;
  background: var(--acc-200);
  color: var(--ink);
  text-decoration: none;
  border-radius: 0;
}

.tmn-prose .wp-block-pullquote,
.tmn-prose .wp-block-quote {
  border-left: 2px solid var(--acc-400);
}

.tmn-tags {
  margin-top: 40px;
  font-size: 13px;
  color: var(--text-50);
}

.tmn-tags a {
  color: var(--text-70);
  margin-right: 10px;
}

.tmn-linkpages {
  margin-top: 28px;
  font-size: 14px;
  color: var(--text-50);
}

.tmn-post-nav {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  margin-top: 44px;
  font-size: 14px;
}

.tmn-post-nav-next {
  text-align: right;
}

/* ---------- paginación ---------- */
.tmn .navigation.pagination {
  margin-top: 48px;
  font-size: 14px;
}

.tmn .nav-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.tmn .page-numbers {
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 34px;
  padding-inline: 10px;
  border: 1px solid var(--edge-soft);
  color: var(--text-70);
}

.tmn .page-numbers:hover {
  border-color: var(--edge);
  color: var(--text);
}

.tmn .page-numbers.current {
  border-color: var(--acc-400);
  color: var(--text);
}

/* ---------- formularios ---------- */
.tmn-search {
  display: flex;
  gap: 10px;
  max-width: 460px;
}

.tmn input[type="text"],
.tmn input[type="email"],
.tmn input[type="url"],
.tmn input[type="search"],
.tmn textarea {
  width: 100%;
  padding: 12px 14px;
  background: var(--surface);
  border: 1px solid var(--surface-line);
  border-radius: 12px;
  color: var(--text);
  font: inherit;
  font-size: 15px;
}

.tmn input::placeholder,
.tmn textarea::placeholder {
  color: var(--text-50);
}

.tmn button,
.tmn input[type="submit"],
.tmn .tmn-search-submit {
  padding: 12px 22px;
  border: 0;
  border-radius: 12px;
  background: var(--acc-200);
  color: var(--ink);
  font: inherit;
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
}

.tmn button:hover,
.tmn input[type="submit"]:hover {
  background: var(--acc-050);
}

/* ---------- pie ---------- */
.tmn-foot {
  background: #000;
  padding: 32px 0;
}

.tmn-foot-menu {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  margin: 0 0 28px;
  padding: 0;
  list-style: none;
  font-size: 14px;
}

.tmn-foot-menu a {
  color: var(--text-70);
}

.tmn-foot-menu a:hover {
  color: var(--acc-200);
}

.tmn-foot-links {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
}

.tmn-foot-links a {
  color: var(--text-70);
}

.tmn-foot-links a:hover {
  color: var(--acc-200);
}

.tmn-foot-end {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 16px 32px;
  color: var(--text-50);
  font-size: 13px;
}

/* ---------- pantallas estrechas ---------- */
@media (max-width: 900px) {
  .tmn-shell,
  .tmn-narrow {
    width: calc(100% - 32px);
  }

  .tmn-entry-hero {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
  }

  .tmn-item {
    grid-template-columns: minmax(0, 1fr);
    gap: 16px;
  }

  .tmn-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .tmn-card-featured {
    flex-direction: column;
  }

  .tmn-card-featured .tmn-card-media img {
    min-height: 0;
    aspect-ratio: 16 / 9;
  }

  .tmn-card-featured .tmn-card-body {
    padding: 24px;
  }

  .tmn-card-featured .tmn-card-title {
    font-size: 24px;
  }

  .tmn-item-media img {
    aspect-ratio: 16 / 9;
  }

  .tmn-nav-actions {
    gap: 18px;
  }

  .tmn-nav {
    padding-inline: 20px;
  }

  .tmn-main {
    padding-block: 36px 64px;
  }

  .tmn-prose {
    font-size: 17px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .tmn * {
    transition: none !important;
    animation: none !important;
  }
}

@media (max-width: 1100px) and (min-width: 901px) {
  .tmn-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* As on the front page: the notice centres on its strip and the close button sits in the corner,
   so the text keeps one line on a phone. */
@media (max-width: 1024px) {
  .tmn-ticker {
    justify-content: center;
    padding-inline: 34px;
  }

  .tmn-ticker p {
    flex: 0 1 auto;
    text-align: center;
  }

  .tmn .tmn-ticker-close {
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-50%);
  }
}

@media (max-width: 400px) {
  .tmn-ticker {
    font-size: 11px;
  }
}

/* The narrowest phones cannot fit the mark and the three links at full size. */
@media (max-width: 420px) {
  .tmn .tmn-brand-logo {
    height: 26px;
    width: calc(26px * 2100 / 494);
  }

  .tmn-nav-actions {
    gap: 14px;
  }

  .tmn .tmn-nav-link {
    font-size: 13px;
  }
}

/* ---------- documentación: página clara ----------
   Fondo blanco y texto negro. El color de la casa se queda en la tira de anuncios, la marca al
   moverse la página y los acentos; en texto sobre blanco se usa su variante oscura, que se lee.
   La barra va en blanco sólido, con la marca y los enlaces en negro. */
.tmn.tmn-light {
  --text: #000000;
  --text-70: rgba(0, 0, 0, 0.76);
  --text-50: rgba(0, 0, 0, 0.55);
  --edge: rgba(0, 0, 0, 0.16);
  --edge-soft: rgba(0, 0, 0, 0.1);
  --ink: #ffffff;
  --surface: #ffffff;
  --surface-line: rgba(0, 0, 0, 0.1);
  color-scheme: light;
}

.tmn-light .tmn-nav,
.tmn-light .tmn-brand-logo,
.tmn-light .tmn-nav-link {
  color: #000000;
}

.tmn-light a,
.tmn-light .tmn-kicker,
.tmn-light .tmn-prose a {
  color: var(--acc-600);
}

.tmn-light a:hover,
.tmn-light .tmn-prose a:hover {
  color: var(--acc-200);
}

.tmn-light .tmn-card:hover {
  border-color: var(--acc-200);
  background: #ffffff;
}

.tmn-light .tmn-chip {
  background: rgba(144, 158, 174, 0.18);
  color: var(--acc-600);
}

.tmn-light .tmn-prose code,
.tmn-light .tmn-prose kbd {
  background: rgba(0, 0, 0, 0.05);
  color: #000000;
}

.tmn-light .tmn-prose pre {
  background: rgba(0, 0, 0, 0.03);
}

.tmn-light .tmn-prose th {
  background: rgba(144, 158, 174, 0.14);
}

.tmn-light .tmn-foot {
  background: #ffffff;
  border-top: 1px solid var(--edge-soft);
}

.tmn-light .tmn-foot-links a {
  color: var(--text-70);
}

.tmn-light .tmn-foot-links a:hover {
  color: var(--acc-600);
}

/* Tablas de la documentación: en un teléfono se desplazan dentro de su caja. */
.tmn-prose .wp-block-table {
  margin-inline: 0;
  overflow-x: auto;
}

.tmn-prose .wp-block-table table {
  min-width: 520px;
}

.tmn-prose th,
.tmn-prose td {
  vertical-align: top;
}

.tmn-prose .wp-block-image img {
  width: 100%;
  border-radius: 12px;
}

/* ---------- sección junto a la marca (blog y documentación) ----------
   «Durandir / Documentation ⌄»: el nombre de la sección abre un menú con Blog, Documentation y
   Contact. En un teléfono sustituye a los enlaces de la derecha, que no caben junto a él. */
.tmn-brand-wrap {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}

/* Barra y sección con la letra del logotipo (Satoshi) y a su tamaño: con el logo a 32 px, las
   mayúsculas de «Durandir» miden 274/494 de alto (17,75 px), y a 24,3 px las de Satoshi (0,731 em)
   igualan. Se sube 0,052 em para que la línea de base coincida con la del logotipo. */
.tmn-section-sep,
.tmn-section summary {
  font-family: "Engramite Display", "Engramite Sans", -apple-system, sans-serif;
  font-size: 24.3px;
  font-weight: 400;
  letter-spacing: -0.01em;
  transform: translateY(-0.052em);
}

.tmn-section-sep {
  color: var(--text-50);
  line-height: 1;
}

.tmn-section {
  position: relative;
  /* Flex y no bloque: un bloque mete la línea de su propia letra y bajaba el rótulo respecto a la
     barra «/». */
  display: flex;
}

/* La flecha mide lo que una minúscula (0,5 em) y se apoya en la línea de base: queda centrada
   en la altura de las letras, con un trazo del grueso del de la letra. */
.tmn-section summary {
  display: inline-flex;
  align-items: baseline;
  gap: 0.3em;
  list-style: none;
  color: var(--text-50);
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: color 150ms ease;
}

.tmn-section summary::-webkit-details-marker {
  display: none;
}

/* Sin anillo al pinchar con el ratón; con teclado, el contorno de siempre. */
.tmn-section summary:focus:not(:focus-visible) {
  outline: none;
}

.tmn-section summary:focus-visible {
  outline-offset: 4px;
  border-radius: 6px;
}

.tmn-section summary:hover,
.tmn-section[open] summary {
  color: var(--text);
}

.tmn-section summary svg {
  width: 0.5em;
  height: 0.5em;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform 150ms ease;
}

.tmn-section[open] summary svg {
  transform: rotate(180deg);
}

.tmn-section-list {
  position: absolute;
  top: calc(100% + 14px);
  left: 0;
  z-index: 70;
  display: grid;
  min-width: 190px;
  padding: 6px;
  border: 1px solid var(--edge);
  border-radius: 12px;
  background: var(--ink);
}

.tmn .tmn-section-list a {
  padding: 10px 12px;
  border-radius: 8px;
  color: var(--text);
  font-size: 15px;
  line-height: 1.2;
}

/* Sin pastilla: al pasar por encima, y en la página actual, solo se tiñe la letra. */
.tmn .tmn-section-list a:hover,
.tmn .tmn-section-list a:focus-visible,
.tmn .tmn-section-list a[aria-current="page"] {
  background: transparent;
  color: var(--acc-200);
}

@media (max-width: 720px) {
  .tmn-nav-sectioned .tmn-nav-actions {
    display: none;
  }

  .tmn-brand-wrap {
    gap: 10px;
  }

}

/* ---------- blog: fondo del color de la casa ----------
   Texto negro y bordes gris oscuro. Lo que en el resto de la web se pinta en el color de la casa
   (enlaces, marca al moverse, pasar por encima) aquí desaparecería sobre el fondo: pasa a negro,
   y el paso por encima a blanco. */
.tmn.tmn-tinted {
  --text: #000000;
  --text-70: rgba(0, 0, 0, 0.8);
  --text-50: rgba(0, 0, 0, 0.62);
  --edge: #3d4248;
  --edge-soft: rgba(0, 0, 0, 0.22);
  --ink: #909eae;
  --surface: transparent;
  --surface-line: #3d4248;
  color-scheme: light;
}

.tmn-tinted .tmn-nav,
.tmn-tinted .tmn-brand-logo,
.tmn.tmn-tinted.tmn-page-moved .tmn-brand-logo,
.tmn-tinted .tmn-nav-link,
.tmn-tinted a,
.tmn-tinted .tmn-kicker,
.tmn-tinted .tmn-prose a {
  color: #000000;
}

.tmn-tinted .tmn-nav-link:hover,
.tmn-tinted .tmn-nav-link:focus-visible,
.tmn-tinted a:hover,
.tmn-tinted .tmn-prose a:hover {
  color: #ffffff;
}

.tmn-tinted .tmn-card:hover {
  border-color: #000000;
  background: rgba(255, 255, 255, 0.12);
}

.tmn-tinted .tmn-chip {
  background: rgba(0, 0, 0, 0.1);
  color: #000000;
}

.tmn-tinted .tmn-prose blockquote,
.tmn-tinted .tmn-prose .wp-block-quote,
.tmn-tinted .tmn-prose .wp-block-pullquote {
  border-left-color: #000000;
}

.tmn-tinted .tmn-prose code,
.tmn-tinted .tmn-prose kbd {
  background: rgba(0, 0, 0, 0.1);
  color: #000000;
}

.tmn-tinted .tmn-prose pre {
  background: rgba(0, 0, 0, 0.08);
}

.tmn-tinted .tmn-prose .wp-block-button__link {
  background: #000000;
  color: #ffffff;
}

.tmn-tinted .page-numbers.current {
  border-color: #000000;
}

/* En el blog el color de la casa es el fondo: la letra va en gris oscuro y se tiñe de negro. */
.tmn.tmn-tinted .tmn-section-list a {
  color: #3d4248;
}

.tmn.tmn-tinted .tmn-section-list a:hover,
.tmn.tmn-tinted .tmn-section-list a:focus-visible,
.tmn.tmn-tinted .tmn-section-list a[aria-current="page"] {
  background: transparent;
  color: #000000;
}

.tmn-tinted .tmn-foot {
  background: var(--ink);
  border-top: 1px solid var(--edge);
}

.tmn-tinted .tmn-foot-links a {
  color: var(--text-70);
}

.tmn-tinted .tmn-foot-links a:hover {
  color: #ffffff;
}

.tmn-tinted :focus-visible {
  outline-color: #000000;
}

.tmn-tinted .tmn-page-title,
.tmn-tinted .tmn-entry-title,
.tmn-tinted .tmn-card-title,
.tmn-tinted .tmn-item-title a,
.tmn-tinted .tmn-prose h1,
.tmn-tinted .tmn-prose h2,
.tmn-tinted .tmn-prose h3,
.tmn-tinted .tmn-prose h4,
.tmn-tinted .tmn-prose h5,
.tmn-tinted .tmn-prose h6 {
  color: #000000;
}

.tmn-tinted .tmn-chip,
.tmn-tinted .tmn-card-date,
.tmn-tinted .tmn-meta,
.tmn-tinted .tmn-meta a {
  color: #3d4248;
}

.tmn-tinted .tmn-meta a:hover {
  color: #ffffff;
}

/* ---------- contacto ----------
   Negro sólido y todo en blanco: rótulos, bordes y botón. Lo que escribe el visitante sale en el
   color de la casa. */
.tmn-contact {
  max-width: 760px;
}

.tmn-contact-head {
  margin-bottom: 40px;
}

.tmn-contact .tmn-page-title,
.tmn-contact .tmn-page-sub {
  color: #ffffff;
}

.tmn-contact-form {
  display: grid;
  gap: 22px;
}

.tmn-contact-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
}

.tmn-contact-field {
  display: grid;
  gap: 10px;
  color: #ffffff;
  font-size: 14px;
  font-weight: 500;
}

.tmn-contact-field em {
  font-style: normal;
  font-weight: 400;
  opacity: 0.6;
}

.tmn .tmn-contact-form input[type="text"],
.tmn .tmn-contact-form input[type="email"],
.tmn .tmn-contact-form textarea {
  background: transparent;
  border: 1px solid #ffffff;
  color: var(--acc-200);
  caret-color: var(--acc-200);
  font-size: 16px;
}

.tmn .tmn-contact-form textarea {
  resize: vertical;
  min-height: 160px;
}

.tmn .tmn-contact-form input:focus,
.tmn .tmn-contact-form textarea:focus {
  outline: 2px solid var(--acc-200);
  outline-offset: 2px;
}

/* El autorrelleno del navegador pinta su propio fondo; se tapa con negro y se deja el texto en
   el color de la casa. */
.tmn .tmn-contact-form input:-webkit-autofill {
  -webkit-box-shadow: 0 0 0 40px #000000 inset;
  -webkit-text-fill-color: var(--acc-200);
}

.tmn-contact-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 24px;
}

.tmn-contact-note {
  flex: 1 1 320px;
  margin: 0;
  color: rgba(255, 255, 255, 0.7);
  font-size: 13px;
}

.tmn .tmn-contact-note a {
  color: #ffffff;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.tmn .tmn-contact-form button {
  background: #ffffff;
  color: #000000;
  padding-inline: 30px;
}

.tmn .tmn-contact-form button:hover {
  background: var(--acc-200);
  color: #000000;
}

.tmn-contact-trap {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.tmn-contact-status {
  margin: 0 0 28px;
  padding: 14px 16px;
  border: 1px solid #ffffff;
  border-radius: 12px;
  color: #ffffff;
  font-size: 15px;
}

@media (max-width: 600px) {
  .tmn-contact-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .tmn .tmn-contact-form button {
    width: 100%;
  }
}

/* Pantallas verticales: la barra va centrada, como en la portada. */
@media (max-width: 720px) and (orientation: portrait) {
  .tmn-nav-sectioned {
    justify-content: center;
  }

  .tmn-section-list {
    left: 50%;
    transform: translateX(-50%);
  }
}

/* Pantallas verticales, en cuanto la página se mueve un píxel: la palabra «Durandir» se recoge y
   queda solo el símbolo, centrado junto a la sección, como en la portada. El símbolo ocupa 524 de
   los 2100 de ancho del viewBox (alto 494). */
@media (max-width: 720px) and (orientation: portrait) {
  /* Al recogerse, las letras se apagan una a una de la «r» a la «D» mientras el símbolo se desliza
     al centro; al volver arriba, el hueco se abre primero y las letras vuelven de la «D» a la «r».
     Los trazos del SVG no van en orden: cada uno lleva su puesto en la palabra (0 = «D»). */
  .tmn-nav-sectioned .tmn-brand {
    overflow: hidden;
    width: calc(32px * 2100 / 494);
    transition: width 640ms cubic-bezier(0.65, 0, 0.35, 1);
  }

  .tmn-page-moved .tmn-nav-sectioned .tmn-brand {
    width: calc(32px * 524 / 494);
    transition: width 760ms cubic-bezier(0.65, 0, 0.35, 1) 140ms;
  }

  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path {
    transform-box: fill-box;
    transform-origin: 50% 50%;
    transition: opacity 420ms cubic-bezier(0.22, 1, 0.36, 1), transform 520ms cubic-bezier(0.22, 1, 0.36, 1);
    transition-delay: calc(160ms + var(--tmn-letter) * 45ms);
  }

  .tmn-page-moved .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path {
    opacity: 0;
    transform: scale(0.82);
    transition-duration: 380ms, 460ms;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-delay: calc((7 - var(--tmn-letter)) * 45ms);
  }

  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path:nth-child(1) { --tmn-letter: 5; }
  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path:nth-child(2) { --tmn-letter: 6; }
  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path:nth-child(3) { --tmn-letter: 0; }
  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path:nth-child(4) { --tmn-letter: 3; }
  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path:nth-child(5) { --tmn-letter: 4; }
  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path:nth-child(6) { --tmn-letter: 2; }
  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path:nth-child(7) { --tmn-letter: 7; }
  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path:nth-child(8) { --tmn-letter: 1; }
  .tmn-nav-sectioned .tmn-brand-logo > g > g:nth-of-type(2) path:nth-child(9) { --tmn-letter: 6; }


  .tmn-nav-sectioned .tmn-brand-logo {
    flex: none;
  }
}

@media (max-width: 420px) and (orientation: portrait) {
  .tmn-nav-sectioned .tmn-brand {
    width: calc(26px * 2100 / 494);
  }

  .tmn-page-moved .tmn-nav-sectioned .tmn-brand {
    width: calc(26px * 524 / 494);
  }
}

/* Con el logo a 26 px la letra de la sección baja en la misma proporción. */
@media (max-width: 420px) {
  .tmn-section-sep,
  .tmn-section summary {
    font-size: 19.7px;
    transform: translateY(-0.075em);
  }
}
