/* ==========================================================================
   Diploy® — Estilos
   ========================================================================== */

/* ---------- Variables y base ---------- */
:root {
  /* Paleta */
  --bg: #080808;      /* fondo */
  --fg: #f2efe9;      /* texto */
  --line: #2a2a2a;    /* bordes */
  --rosa: #fba5fa;
  --violeta: #7560ff;
  --naranja: #fd6c00;
  --verde: #3cd891;

  --font: "JetBrains Mono", monospace;

  /* Cursores verdes (SVG en línea, con borde negro para que se vean sobre cualquier fondo).
     Normal: flecha clásica · Enlaces: la flecha ↗ de la ficha verde */
  --cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M3 2v17l4.6-4.4 3.3 7.2 3-1.4-3.2-7H18z' fill='%233cd891' stroke='%23080808' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E") 3 2, auto;
  --cursor-link: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='-8 -8 116 116'%3E%3Cpath d='M36 0H100V64H80V34L16 100L0 84L66 20H36Z' fill='%233cd891' stroke='%23080808' stroke-width='8' stroke-linejoin='round' paint-order='stroke'/%3E%3C/svg%3E") 24 2, pointer;

  /* Eje: línea vertical que atraviesa el sitio */
  --axis: 50%;     /* posición de la línea */
  --gutter: 5vw;   /* separación total entre la línea y el contenido (mitad a cada lado) */
  --pad: 2.2vw;    /* margen lateral de las secciones */
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--fg);
  font-family: var(--font);
  text-transform: lowercase;
  overflow-x: hidden;
}

a {
  color: inherit;
  text-decoration: none;
}

/* Cursor verde en todo el sitio */
html {
  cursor: var(--cursor);
}

a,
button,
.chip {
  cursor: var(--cursor-link);
}

::selection {
  background: var(--rosa);
  color: var(--bg);
}

/* Texto monoespaciado pequeño (etiquetas, metadatos) */
.m {
  font: 10px var(--font);
  letter-spacing: .07em;
}

/* Color de acento: cada sección define el suyo con --acento */
.acento {
  color: var(--acento, var(--rosa));
}

/* ==========================================================================
   Fichas animadas (ver <template id="glyphs"> en index.html)
   El tamaño de cada ficha es 1em: se controla con font-size.
   Los colores se pueden cambiar con --g1..--g4 y --glyph-bg.
   ========================================================================== */

.glyphs {
  display: inline-flex;
  gap: .1em;
  vertical-align: middle;
}

.glyphs .gl {
  display: block;
  flex: none;
  width: 1em;
  height: 1em;
  overflow: visible;
}

.gl-1 .gl-fill { fill: var(--g1, var(--rosa)); }
.gl-2 .gl-fill { fill: var(--g2, var(--violeta)); }
.gl-3 .gl-fill { fill: var(--g3, var(--naranja)); }
.gl-4 .gl-fill { fill: var(--g4, var(--verde)); }

/* Estrella recortada de la ficha rosa: toma el color del fondo */
.gl-cut {
  fill: var(--glyph-bg, var(--bg));
}

/* Variante 2×2 */
.glyphs--grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8%;
}

.glyphs--grid .gl {
  width: 100%;
  height: auto;
  aspect-ratio: 1;
}

/* ==========================================================================
   Eje y sistema de dos lados
   ========================================================================== */

main > :is(section, article) {
  position: relative;
  padding-left: var(--pad);
  padding-right: var(--pad);
}

/* La línea: cada sección dibuja su tramo con el color de su texto,
   así se ve continua sobre todos los fondos. */
main > :is(section, article)::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: var(--axis);
  width: 1px;
  background: currentColor;
  opacity: .35;
  pointer-events: none;
}

/* Dos columnas simétricas: el centro del gutter cae justo sobre la línea */
.split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: var(--gutter);
}

/* Izquierda de la línea: alineado hacia la línea */
.l {
  grid-column: 1;
  text-align: right;
}

/* Derecha de la línea: alineado hacia la línea */
.r {
  grid-column: 2;
  text-align: left;
}

/* Zigzag: cada hijo en su propia fila */
.stair > :nth-child(1) { grid-row: 1; }
.stair > :nth-child(2) { grid-row: 2; }
.stair > :nth-child(3) { grid-row: 3; }

/* ---------- Pantalla de carga ---------- */
.load {
  position: fixed;
  inset: 0;
  z-index: 99;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .25em;
  background: var(--bg);
  font-size: 7vw;
  font-weight: 700;
  letter-spacing: -.06em;
}

.load-word {
  color: var(--rosa);
}

.load-word span {
  display: inline-block;
}

/* ---------- Header ---------- */
header {
  position: fixed;
  z-index: 30;
  top: 0;
  width: 100%;
  padding: 14px var(--pad);
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: var(--gutter);
  align-items: center;
  background: rgba(8, 8, 8, .82);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
}

.logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 20px;
  font-weight: 800;
  letter-spacing: -.07em;
}

.logo .glyphs {
  font-size: 18px;
  gap: 3px;
}

.hr {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

nav a {
  margin-right: 20px;
  transition: color .3s;
}

nav a:hover {
  color: var(--rosa);
}

/* Botón de llamada a la acción */
.cta {
  padding: 7px 12px;
  border-radius: 999px;
  background: var(--verde);
  color: var(--bg);
  transition: background .3s;
}

.cta:hover {
  background: var(--rosa);
}

/* ---------- Hero ---------- */
.hero {
  --acento: var(--rosa);
  min-height: 105vh;
  padding-top: 14vh;
  padding-bottom: 4vh;
  border-bottom: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.title {
  font-size: clamp(3rem, 7vw, 9rem);
  line-height: .9;
  letter-spacing: -.085em;
  font-weight: 600;
  margin: 7vh 0;
  row-gap: .1em;
}

.row {
  display: block;
  padding: .06em 0 .12em;
  white-space: nowrap;
}

.title small {
  grid-row: 1;
  align-self: end;
  max-width: 260px;
  font: 10px var(--font);
  letter-spacing: .03em;
}

.bottom {
  align-items: end;
}

.bottom p {
  justify-self: end;
  max-width: 390px;
  margin: 0;
  font-size: 14px;
}

.year {
  margin-top: 12px;
  font-size: 4vw;
  letter-spacing: -.06em;
}

/* Fichas 2×2: ocupan el hueco libre a la izquierda de la línea,
   junto a "& desarrollo", sin tocar "diseño" ni "digital." */
.hero-mark {
  grid-column: 1;
  grid-row: 1 / span 3;
  justify-self: start;
  align-self: center;
  width: 14vw;
  pointer-events: none;
}

/* ---------- 01 Manifiesto ---------- */
.man {
  --acento: var(--verde);
  min-height: 140vh;
  padding-top: 14vh;
  padding-bottom: 14vh;
}

.stick {
  position: sticky;
  top: 15vh;
}

.stick > .m {
  margin-bottom: 5vh;
}

.man h2,
.phrase h2 {
  font-size: 7.5vw;
  line-height: .85;
  letter-spacing: -.085em;
  font-weight: 500;
  margin: 0;
}

.man h2 .r {
  padding-top: .5em;
}

/* ---------- 02 Proyectos ---------- */
.work {
  border-top: 1px solid var(--line);
  padding-top: 10vh;
  padding-bottom: 15vh;
}

.wh {
  align-items: end;
}

.wh .m {
  margin-bottom: 3vh;
}

.wh h2 {
  font-size: 9vw;
  line-height: .75;
  letter-spacing: -.09em;
  margin: 0;
  font-weight: 500;
}

.grid {
  margin-top: 10vh;
}

.project {
  margin-bottom: 10vh;
}

/* Proyectos alternados a cada lado de la línea */
.project:nth-child(odd) {
  grid-column: 1;
}

.project:nth-child(even) {
  grid-column: 2;
  margin-top: 24vh;
}

.project:nth-child(1) { --c: var(--rosa); }
.project:nth-child(2) { --c: var(--violeta); }
.project:nth-child(3) { --c: var(--naranja); }
.project:nth-child(4) { --c: var(--verde); }

.vis {
  aspect-ratio: 1.2;
  overflow: hidden;
  position: relative;
  border-radius: 14px;
}

.project:nth-child(even) .vis {
  aspect-ratio: .9;
}

/* Portada: plano de color con su ficha animada en negro */
.art {
  position: absolute;
  inset: -8%;
  display: grid;
  place-items: center;
  font-size: 8vw;
  font-weight: 800;
  letter-spacing: -.09em;
  background: var(--c);
  color: var(--bg);
}

.art .glyphs {
  position: absolute;
  top: 16%;
  right: 14%;
  font-size: 5vw;
  --g1: var(--bg);
  --g2: var(--bg);
  --g3: var(--bg);
  --g4: var(--bg);
  --glyph-bg: var(--c);
}

.pi {
  display: flex;
  justify-content: space-between;
  border-top: 1px solid var(--line);
  padding-top: 9px;
  margin-top: 9px;
}

.pi b {
  color: var(--c);
}

.pi span {
  text-align: right;
}

/* ---------- 03 Frase ---------- */
.phrase {
  --acento: var(--violeta);
  background: var(--rosa);
  color: var(--bg);
  min-height: 120vh;
  padding-top: 13vh;
  padding-bottom: 13vh;
}

.phrase > .m {
  margin-bottom: 5vh;
}

/* ---------- 04 Servicios ---------- */
.services {
  padding-top: 10vh;
  padding-bottom: 15vh;
}

.sh {
  margin-bottom: 7vh;
}

.sh .m {
  margin-bottom: 3vh;
}

.sh h2 {
  font-size: 6vw;
  line-height: .85;
  letter-spacing: -.075em;
  margin: 0;
  font-weight: 500;
}

/* Ficha+número | título  ·línea·  descripción | flecha
   Columnas simétricas para que el centro coincida con la línea */
.cap {
  display: grid;
  grid-template-columns: 6vw 1fr var(--gutter) 1fr 6vw;
  align-items: center;
  padding: 24px 0;
  border-top: 1px solid var(--line);
}

/* (el primer hijo de .services es .sh, por eso los .cap empiezan en el 2) */
.cap:nth-child(2) { --c: var(--rosa); }
.cap:nth-child(3) { --c: var(--violeta); }
.cap:nth-child(4) { --c: var(--naranja); }
.cap:nth-child(5) { --c: var(--verde); }

.cap:last-child {
  border-bottom: 1px solid var(--line);
}

.num {
  grid-column: 1;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.num .glyphs {
  font-size: 26px;
}

.cap h3 {
  grid-column: 2;
  text-align: right;
  font-size: 2.6vw;
  letter-spacing: -.055em;
  margin: 0;
  font-weight: 500;
  transition: color .3s;
}

.cap p {
  grid-column: 4;
  font-size: 13px;
  max-width: 400px;
  margin: 0;
}

.arr {
  grid-column: 5;
  text-align: right;
  font-size: 25px;
  color: var(--verde);
  transition: transform .3s, color .3s;
}

.cap:hover h3,
.cap:hover .arr {
  color: var(--c);
}

.cap:hover .arr {
  transform: rotate(45deg);
}

/* ---------- 05 Proceso (Deploy) ---------- */
.deploy {
  border-top: 1px solid var(--line);
  min-height: 105vh;
  padding-top: 9vh;
  padding-bottom: 9vh;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

/* Cuatro etapas: dos a cada lado de la línea */
.steps {
  margin: 6vh 0;
}

.steps > * {
  display: flex;
  gap: 3vw;
}

.steps > .l {
  justify-content: flex-end;
}

.step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.step .glyphs {
  font-size: 6vw;
}

.deploy h2 {
  font-size: 9vw;
  line-height: .8;
  letter-spacing: -.1em;
  margin: 0;
}

.deploy h2 span:last-child {
  color: var(--rosa);
}

/* ---------- 06 Contacto ---------- */
.contact {
  --star: 13vw;        /* tamaño de la estrella de la esquina */
  --star-bottom: 4vh;  /* = padding inferior de la sección */
  min-height: 100vh;
  background: var(--violeta);
  color: var(--bg);
  padding-top: 10vh;
  padding-bottom: var(--star-bottom);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.foot {
  align-items: end;
}

/* Izquierda de la línea: correo y redes */
.socials {
  margin-top: 14px;
}

/* Derecha de la línea: "hablemos._" + estrella en la esquina inferior derecha */
.cierre {
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
  gap: 3vw;
}

.contact h2 {
  font-size: 4.5vw;
  line-height: 1;
  letter-spacing: .02em; /* letras separadas */
  margin: 0;
  font-weight: 500;
  white-space: nowrap;
}

.contact .q {
  font-style: normal;
  color: var(--fg);
}

/* Ficha rosa (círculos ↔ estrella) en grande.
   La estrella recortada toma el violeta del fondo. */
.big-star {
  flex: none;
  font-size: var(--star);
  --glyph-bg: var(--violeta);
}

/* ---------- Estrella que se amplía y abre el formulario ----------
   .star-box ocupa el lugar de la estrella; el formulario es un panel rosa
   anclado a la esquina inferior derecha que crece hacia arriba y a la izquierda.
   Se abre con .is-open (js/main.js). */
.star-box {
  --panel-w: max(320px, 34vw);
  --panel-h: max(300px, 26vw);
  --ease: cubic-bezier(.7, 0, .2, 1);
  position: relative;
  flex: none;
  width: var(--star);
  height: var(--star);
}

/* La estrella es un botón */
.big-star {
  position: relative;
  z-index: 2;
  padding: 0;
  border: 0;
  background: none;
  line-height: 0;
}

.big-star .gl {
  transform-origin: 100% 100%;
  transition: transform .5s var(--ease);
}

.star-box:not(.is-open) .big-star:hover .gl {
  transform: scale(1.15);
}

/* Panel (cerrado: del tamaño de la estrella e invisible) */
.star-form {
  position: absolute;
  right: 0;
  bottom: 0;
  z-index: 1;
  width: var(--star);
  height: var(--star);
  padding: 22px;
  overflow: hidden;
  background: var(--rosa);
  color: var(--bg);
  visibility: hidden;
  transition:
    width .6s var(--ease),
    height .6s var(--ease),
    visibility 0s .6s;
}

.star-box.is-open .star-form {
  width: var(--panel-w);
  height: var(--panel-h);
  visibility: visible;
  transition-delay: 0s;
}

/* Contenido del formulario: aparece cuando el panel ya creció */
.star-form > * {
  opacity: 0;
  transition: opacity .2s;
}

.star-box.is-open .star-form > * {
  opacity: 1;
  transition: opacity .3s .4s;
}

.star-title {
  margin: 0 0 18px;
}

.field {
  display: block;
  width: calc(100% - var(--star) * .35);
  margin-bottom: 14px;
}

.field input {
  display: block;
  width: 100%;
  padding: 6px 0;
  border: 0;
  border-bottom: 1px solid var(--bg);
  border-radius: 0;
  background: transparent;
  color: var(--bg);
  font: 16px var(--font);
  text-transform: none;
  outline: none;
}

.field input:focus {
  border-bottom-width: 2px;
}

.star-send {
  position: absolute;
  left: 22px;
  bottom: 22px;
  padding: 10px 16px;
  border: 0;
  border-radius: 999px;
  background: var(--bg);
  color: var(--rosa);
  text-transform: lowercase;
  transition: background .3s, color .3s;
}

.star-send:hover {
  background: var(--verde);
  color: var(--bg);
}

.star-close {
  position: absolute;
  top: 10px;
  right: 14px;
  padding: 4px;
  border: 0;
  background: none;
  color: var(--bg);
  font: 22px var(--font);
  line-height: 1;
}

.star-ok {
  position: absolute;
  left: 22px;
  bottom: 70px;
  margin: 0;
  font-size: 14px;
}

@media (prefers-reduced-motion: reduce) {
  .big-star .gl,
  .star-form,
  .star-form > * {
    transition: none !important;
  }
}

.mail {
  display: inline-block;
  font-size: 2.4vw;
  border-bottom: 1px solid currentColor;
  transition: color .3s;
}

.mail:hover {
  color: var(--fg);
}

/* ==========================================================================
   Blog (blog.html) y entradas (articulo.html)
   Categorías: diseño rosa · desarrollo violeta · marca naranja · proceso verde
   (cada elemento recibe su color en --c)
   ========================================================================== */

nav a[aria-current="page"] {
  color: var(--rosa);
}

/* ---------- Portada del blog ---------- */
.blog-hero {
  min-height: 80vh;
  padding-top: 16vh;
  padding-bottom: 8vh;
  border-bottom: 1px solid var(--line);
}

.blog-hero h1 {
  font-size: clamp(3rem, 8vw, 10rem);
  line-height: .88;
  letter-spacing: -.085em;
  font-weight: 600;
  margin: 8vh 0 0;
}

/* Fichas en la esquina inferior derecha de la portada */
.blog-mark {
  position: absolute;
  right: var(--pad);
  bottom: 8vh;
  font-size: 4.5vw;
}

/* ---------- Entrada destacada ---------- */
.blog-featured {
  padding-top: 10vh;
  padding-bottom: 10vh;
}

.featured {
  align-items: center;
}

.featured-art {
  position: relative;
  aspect-ratio: 1.3;
  display: grid;
  place-items: center;
  border-radius: 14px;
  background: var(--c);
  color: var(--bg);
}

.featured-art .glyphs {
  font-size: 12vw;
  --g1: var(--bg);
  --g2: var(--bg);
  --g3: var(--bg);
  --g4: var(--bg);
  --glyph-bg: var(--c);
}

.featured-art .m {
  position: absolute;
  top: 16px;
  left: 16px;
}

.featured h2 {
  font-size: 3.4vw;
  line-height: 1;
  letter-spacing: -.06em;
  font-weight: 500;
  margin: .4em 0;
  transition: color .3s;
}

.featured p {
  max-width: 460px;
  font-size: 14px;
}

.featured .read {
  color: var(--c);
}

.featured:hover h2 {
  color: var(--c);
}

.post-meta {
  opacity: .7;
}

/* ---------- Filtros ---------- */
.blog-list {
  padding-top: 6vh;
  padding-bottom: 15vh;
}

.filters {
  align-items: center;
  margin-bottom: 5vh;
}

.chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.chip {
  padding: 7px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: none;
  color: var(--fg);
  text-transform: lowercase;
  cursor: var(--cursor-link);
  transition: border-color .3s, background .3s, color .3s;
}

.chip:hover {
  border-color: var(--c, var(--fg));
}

.chip[aria-pressed="true"] {
  background: var(--c, var(--fg));
  border-color: transparent;
  color: var(--bg);
}

/* ---------- Listado de entradas ----------
   Tema | título  ·línea·  resumen + fecha | flecha (igual que Servicios) */
.post {
  display: grid;
  grid-template-columns: 10vw 1fr var(--gutter) 1fr 6vw;
  align-items: center;
  padding: 26px 0;
  border-top: 1px solid var(--line);
}

.post[hidden] {
  display: none;
}

.posts .post:last-child {
  border-bottom: 1px solid var(--line);
}

.post-tag {
  grid-column: 1;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.post-tag .glyphs {
  font-size: 22px;
}

.post h3 {
  grid-column: 2;
  text-align: right;
  font-size: 2.2vw;
  line-height: 1.05;
  letter-spacing: -.055em;
  font-weight: 500;
  margin: 0;
  transition: color .3s;
}

.post-text {
  grid-column: 4;
}

.post-text p {
  max-width: 400px;
  margin: 0 0 6px;
  font-size: 13px;
}

.post:hover h3,
.post:hover .arr {
  color: var(--c);
}

.post:hover .arr {
  transform: rotate(45deg);
}

/* ---------- Página de entrada ---------- */
.article-hero {
  --acento: var(--c);
  min-height: 70vh;
}

.article-hero h1 {
  font-size: clamp(3rem, 9vw, 11rem);
}

.back:hover {
  color: var(--rosa);
}

.article {
  padding-top: 10vh;
  padding-bottom: 12vh;
}

/* Barra lateral (izquierda de la línea) */
.article-side {
  position: sticky;
  top: 12vh;
  align-self: start;
}

.article-side p {
  margin: 0 0 2em;
}

.article-title {
  max-width: 260px;
  margin-left: auto !important;
  font-size: 14px;
}

/* Texto (derecha de la línea) */
.article-text {
  max-width: 620px;
  font-size: 15px;
  line-height: 1.7;
}

.article-text .lead {
  margin-top: 0;
  font-size: 20px;
  line-height: 1.4;
}

.article-text h2 {
  margin: 2em 0 .6em;
  font-size: 24px;
  letter-spacing: -.04em;
  font-weight: 600;
}

.article-text blockquote {
  margin: 2em 0;
  padding-left: 20px;
  border-left: 3px solid var(--c, var(--verde));
  font-size: 20px;
  line-height: 1.4;
}

.article-next {
  margin-top: 12vh;
  padding-top: 24px;
  border-top: 1px solid var(--line);
}

.article-next a:hover {
  color: var(--rosa);
}

/* ==========================================================================
   Responsive
   ========================================================================== */

/* ---------- Móvil / tablet pequeña ----------
   La línea se corre al borde izquierdo y todo el contenido queda a su derecha. */
@media (max-width: 760px) {
  /* Contain animated elements without creating a nested scroll container. */
  html,
  body {
    overflow-x: hidden;
    overflow-x: clip;
  }

  :root {
    --axis: 5vw;
    --pad: 4vw;
  }

  main > :is(section, article) {
    padding-left: calc(var(--axis) + 5vw);
  }

  /* Una sola columna: todo a la derecha de la línea */
  .split {
    display: block;
  }

  .split > * {
    display: block;
    text-align: left;
  }

  .split > * + * {
    margin-top: 1.2em;
  }

  .stair > * + * {
    margin-top: 0;
  }

  /* Header */
  /* Logo y botón arriba; el menú pasa a una segunda fila */
  header {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    row-gap: 12px;
  }

  .hr {
    display: contents;
  }

  nav {
    order: 3;
    width: 100%;
    display: flex;
    justify-content: space-between;
  }

  nav a {
    margin: 0;
  }

  .load {
    font-size: 11vw;
  }

  /* Hero */
  .hero {
    padding-top: 17vh;
  }

  .title {
    font-size: 11vw;
    margin: 6vh 0;
  }

  .title small {
    display: none;
  }

  .bottom p {
    max-width: none;
  }

  .year {
    font-size: 10vw;
  }

  /* Fichas debajo del título, a la derecha */
  .title .hero-mark {
    display: grid;
    width: 30vw;
    margin: 3vh 0 0 auto;
  }

  /* Manifiesto / Frase */
  .man h2,
  .phrase h2 {
    font-size: 11vw;
  }

  /* Proyectos */
  .wh h2 {
    font-size: 16vw;
  }

  .project:nth-child(n) {
    margin: 0 0 12vh;
  }

  .art .glyphs {
    font-size: 12vw;
  }

  /* Servicios */
  .sh h2 {
    font-size: 10vw;
  }

  .cap {
    grid-template-columns: 16vw 1fr auto;
  }

  .num {
    font-size: 0; /* oculta el número, deja solo la ficha */
  }

  .cap h3 {
    grid-column: 2;
    text-align: left;
    font-size: 6vw;
  }

  .cap p {
    display: none;
  }

  .arr {
    grid-column: 3;
  }

  /* Proceso */
  .steps > * {
    display: flex;
    justify-content: flex-start;
    gap: 6vw;
  }

  .steps > .l {
    justify-content: flex-start;
  }

  .step .glyphs {
    font-size: 14vw;
  }

  /* Deploy / Contacto */
  .deploy h2 {
    font-size: 14vw;
  }

  .mail {
    font-size: 5vw;
  }

  /* Texto y estrella lado a lado, abajo a la derecha */
  .foot > .cierre {
    display: flex;
    margin-top: 8vh;
    gap: 4vw;
  }

  .contact h2 {
    font-size: 9vw;
  }

  .contact {
    --star: 20vw;
  }

  .star-box {
    --panel-w: min(max(320px, 34vw), calc(100vw - var(--axis) - 5vw - var(--pad)));
  }

  /* Blog */
  .blog-hero h1 {
    font-size: 14vw;
  }

  .article-hero h1 {
    font-size: 15vw;
  }

  .blog-mark {
    position: static;
    margin-top: 5vh;
    font-size: 10vw;
  }

  .featured h2 {
    font-size: 7vw;
  }

  .featured-art .glyphs {
    font-size: 30vw;
  }

  .filters .chips {
    display: flex;
  }

  .post {
    grid-template-columns: 1fr auto;
    row-gap: 10px;
  }

  .post-tag,
  .post h3,
  .post-text {
    grid-column: 1;
  }

  .post h3 {
    text-align: left;
    font-size: 6vw;
  }

  .post .arr {
    grid-column: 2;
    grid-row: 1 / span 3;
  }

  .article-side {
    position: static;
  }

  .article-title {
    margin-left: 0 !important;
  }
}
