@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500&display=swap");

/* Sistema: tokens de color y tipografía. Fuente única para todas las páginas. */
:root {
  color-scheme: dark;

  /* Escala neutra (tema oscuro base). 0 = más profundo, 7 = blanco. */
  --ink-0: #0a0a0a;
  --ink-1: #111111;
  --ink-2: #1f1f1f;
  --ink-3: #333333;
  --ink-4: #4d4d4d;
  --ink-5: #8a8a8a;
  --ink-6: #c9c9c9;
  --ink-7: #ffffff;

  /* Escala cálida (superficies de lectura, tipo "papel"). */
  --paper-0: #f0efeb;
  --paper-1: #d8d8d5;
  --paper-2: #666666;

  /* Velos y sombras (antes hex con alfa suelto). */
  --veil-1: rgba(0, 0, 0, 0.4);
  --veil-2: rgba(0, 0, 0, 0.6);
  --veil-3: rgba(0, 0, 0, 0.73);
  --veil-4: rgba(0, 0, 0, 0.8);
  --veil-5: rgba(0, 0, 0, 0.87);
  --veil-light-1: rgba(255, 255, 255, 0.2);
  --veil-light-2: rgba(255, 255, 255, 0.4);

  /* Único color de acento del sitio: estados de error del formulario.
     #ef5a4c da 5.6:1 sobre --ink-1 (fondo del formulario) y 4.9:1 sobre
     --ink-2 (fondo de los campos); el #c0392b anterior daba 3.47:1. */
  --error: #ef5a4c;

  /* Escala tipográfica (clamp: mínimo a 390px, máximo a 1440px). 5 pasos
     originales + 3 intermedios (h1, lead, eyebrow) para los roles que la
     escala de 5 no cubría sin forzar saltos de más del 15%. */
  --t-display: clamp(2.5rem, 1.7rem + 3.6vw, 5.5rem);
  --t-h1: clamp(2rem, 1.4rem + 2.8vw, 3.75rem);
  --t-h2: clamp(1.75rem, 1.4rem + 1.6vw, 2.75rem);
  --t-h3: clamp(1.25rem, 1.1rem + 0.7vw, 1.625rem);
  --t-lead: clamp(1.125rem, 1.05rem + 0.45vw, 1.375rem);
  --t-body: clamp(1rem, 0.95rem + 0.2vw, 1.125rem);
  --t-small: 0.9375rem;
  --t-eyebrow: 0.9375rem;

  /* Retícula: un solo gutter y espaciado vertical de sección. */
  --gutter: 6%;
  --section-space: clamp(48px, 8vw, 96px);
}
* {
  box-sizing: border-box;
}
body {
  margin: 0;
  background: var(--ink-1);
  color: var(--paper-0);
  font:
    16px/1.65 "DM Sans",
    Arial,
    sans-serif;
}
/* El menú móvil bloquea el scroll del fondo mientras está abierto. */
body.menu-open {
  overflow: hidden;
}
a {
  color: inherit;
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
  text-underline-offset: 6px;
}
a:focus-visible,
summary:focus-visible,
button:focus-visible {
  outline: 2px solid;
  outline-offset: 5px;
}
.skip {
  position: absolute;
  top: -100px;
}
.skip:focus {
  top: 0;
  background: white;
  padding: 12px;
  z-index: 10;
}
header {
  padding: 30px 5%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  border-bottom: 1px solid var(--ink-6);
}
.brand {
  font-size: var(--t-h3);
  letter-spacing: -1px;
  font-weight: 500;
}
nav {
  display: flex;
  gap: 26px;
  font-size: var(--t-small);
}
nav [aria-current] {
  text-decoration: underline;
  text-underline-offset: 7px;
}
.inquiry {
  font-size: var(--t-small);
  border-bottom: 1px solid;
  padding-bottom: 6px;
}
.menu {
  display: none;
  background: none;
  border: 0;
  font: inherit;
  cursor: pointer;
}
main {
  max-width: 1600px;
  margin: auto;
}
.hero {
  padding: 80px 6% 100px;
  border-bottom: 1px solid var(--ink-6);
}
.eyebrow {
  font-size: var(--t-small);
  color: var(--ink-5);
  margin: 0 0 40px;
}
h1 {
  font-size: var(--t-display);
  line-height: 1.04;
  font-weight: 400;
  letter-spacing: -0.06em;
  max-width: 1000px;
  margin: 0 0 42px;
}
h1,
h2,
h3 {
  text-wrap: balance;
}
p,
li,
figcaption {
  text-wrap: pretty;
}
.intro {
  max-width: 650px;
  margin: 0 0 0 auto;
  font-size: var(--t-lead);
  line-height: 1.4;
}
.chapter {
  padding: 85px 6%;
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 9%;
  border-bottom: 1px solid var(--ink-6);
}
h2 {
  font-weight: 400;
  font-size: var(--t-h2);
  letter-spacing: -0.04em;
  line-height: 1.1;
  margin: 0 0 28px;
}
.chapter-intro p {
  max-width: 430px;
  color: var(--ink-5);
}
.item {
  border-top: 1px solid var(--ink-6);
  padding: 26px 0;
}
.item h3 {
  font-size: var(--t-h3);
  font-weight: 400;
  margin: 0 0 10px;
}
.item p {
  color: var(--ink-5);
  margin: 0;
  max-width: 610px;
}
.faq {
  padding: 80px 6%;
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: 6%;
}
@media (min-width: 1024px) {
  .faq > h2 {
    position: sticky;
    top: 95px;
    align-self: start;
  }
}
@media (max-width: 1023px) {
  .faq {
    grid-template-columns: 1fr;
    gap: 24px;
  }
}
details {
  border-top: 1px solid var(--ink-6);
  padding: 24px 0;
}
summary {
  cursor: pointer;
  font-size: var(--t-h3);
}
details p {
  color: var(--ink-5);
}
.artist {
  margin: 70px 6% 90px;
  background: var(--ink-1);
  color: var(--ink-7);
  min-height: 380px;
  padding: 55px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.artist p {
  font-size: var(--t-small);
  color: var(--ink-6);
  margin: 0;
}
.artist h2 {
  font-size: var(--t-display);
  max-width: 700px;
  margin: 70px 0 0;
  line-height: 1;
}
.next {
  padding: 70px 6%;
  border-top: 1px solid var(--ink-6);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 30px;
}
.next p {
  color: var(--ink-5);
  font-size: var(--t-small);
}
.next a {
  font-size: var(--t-h2);
}
footer {
  background: var(--ink-0);
  color: var(--ink-7);
  padding: 70px 6% 30px;
}
footer h2 {
  font-size: var(--t-h1);
}
footer .email {
  font-size: var(--t-h2);
}
.foot-links {
  display: flex;
  gap: 30px;
  flex-wrap: wrap;
  margin: 55px 0;
}
.bottom {
  border-top: 1px solid var(--ink-4);
  padding-top: 25px;
  color: var(--ink-5);
  font-size: var(--t-small);
  display: flex;
  justify-content: space-between;
  gap: 25px;
}
@media (max-width: 800px) {
  header {
    padding: 22px 6%;
    flex-wrap: wrap;
    gap: 18px;
  }
  .brand {
    margin-right: auto;
  }
  .menu {
    display: block;
  }
  header nav {
    display: none;
    width: 100%;
    flex-direction: column;
    order: 4;
    gap: 0;
  }
  header nav.open {
    display: flex;
  }
  nav a {
    padding: 12px 0;
    border-top: 1px solid var(--ink-6);
  }
  .hero {
    padding: 55px 6% 65px;
  }
  .eyebrow {
    margin-bottom: 30px;
  }
  .intro {
    font-size: var(--t-lead);
  }
  .chapter,
  .faq {
    padding: 55px 6%;
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .chapter-intro p {
    max-width: none;
  }
  .artist {
    padding: 30px;
    min-height: 330px;
    margin-top: 40px;
    margin-bottom: 50px;
  }
  .next {
    padding: 45px 6%;
    align-items: flex-start;
    flex-direction: column;
    gap: 5px;
  }
  .bottom {
    flex-direction: column;
  }
  footer h2 {
    font-size: var(--t-h1);
  }
}

.creative {
  padding: 85px 6%;
  border-bottom: 1px solid var(--ink-6);
  scroll-margin-top: 30px;
}
.creative-heading {
  max-width: 850px;
}
.creative-heading > p:first-child {
  font-size: var(--t-small);
  color: var(--ink-5);
}
.creative-heading > p:last-child {
  max-width: 610px;
  font-size: var(--t-lead);
  color: var(--ink-5);
}
.creative figure {
  margin: 45px 0 0;
}
.creative img {
  width: 100%;
  height: auto;
  display: block;
  mix-blend-mode: multiply;
}
.creative figcaption {
  font-size: var(--t-eyebrow);
  color: var(--ink-5);
  margin-top: 16px;
}
@media (max-width: 800px) {
  .creative {
    padding: 50px 6%;
  }
  .creative-heading > p:last-child {
    font-size: var(--t-lead);
  }
}
.action-link {
  display: inline-block;
  margin-top: 30px;
  font-size: var(--t-body);
  border-bottom: 1px solid;
  padding-bottom: 6px;
}
.item p + p {
  margin-top: 12px;
}
.item a {
  display: inline-block;
  margin-top: 18px;
  font-size: var(--t-small);
  border-bottom: 1px solid var(--ink-5);
}
.process-list {
  margin: 0;
  padding-left: 24px;
}
.process-list li {
  border-top: 1px solid var(--ink-6);
  padding: 22px 0 28px 12px;
}
.process-list h3 {
  font-size: var(--t-h3);
  font-weight: 400;
  margin: 0 0 10px;
}
.process-list p {
  color: var(--ink-5);
  margin: 0;
}
.quote-strip {
  display: flex;
  gap: 40px;
  align-items: center;
  justify-content: space-between;
  padding: 65px 6%;
  background: var(--ink-7);
}
.quote-strip h2 {
  font-size: var(--t-h2);
}
.quote-strip p {
  max-width: 600px;
  color: var(--ink-5);
}
.quote-strip a {
  flex-shrink: 0;
}
/* El formulario va primero; la guía queda como colapsable debajo (item 6:
   a 390 el primer campo debe aparecer a menos de 500px del tope). */
.quote-layout {
  padding: 70px 6% 100px;
  max-width: 720px;
  margin: 0 auto;
}
.quote-layout .quote-guide p,
.quote-layout .quote-guide li {
  color: var(--ink-5);
}
.quote-layout .quote-guide ul {
  padding-left: 20px;
  margin: 30px 0;
}
.quote-layout .quote-guide li {
  margin: 12px 0;
}
.quote-layout .quote-guide > div > a {
  border-bottom: 1px solid;
}
.quote-guide {
  border-top: 1px solid var(--ink-6);
  margin-top: 40px;
  padding-top: 24px;
}
.quote-guide summary {
  font-size: var(--t-h3);
  list-style: none;
  position: relative;
  padding-right: 34px;
}
.quote-guide summary::-webkit-details-marker {
  display: none;
}
.quote-guide summary:after {
  content: "+";
  position: absolute;
  right: 4px;
  top: 0;
  font-size: var(--t-h3);
  color: var(--ink-5);
}
.quote-guide[open] summary:after {
  content: "−";
}
.quote-guide > div {
  padding-top: 20px;
}
.quote-note {
  font-size: var(--t-small);
  color: var(--ink-5);
  line-height: 1.6;
}
.quote-layout label {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 24px;
  font-size: var(--t-body);
}
.quote-layout input,
.quote-layout textarea,
.quote-layout select {
  font: inherit;
  color: inherit;
  background: transparent;
  border: 1px solid var(--ink-5);
  border-radius: 0;
  padding: 13px;
  width: 100%;
  min-width: 0;
}
/* Validación propia: mensaje bajo cada campo, sin depender del tooltip
   nativo del navegador (que sale en el idioma del navegador, no de la
   página). */
.quote-layout [aria-invalid="true"] {
  border-color: var(--error);
}
.field-error {
  margin: 8px 0 0;
  font-size: var(--t-eyebrow);
  color: var(--error);
}
/* El error de la línea va bajo el legend (ver quote.js). */
legend + .field-error {
  margin: 0 0 14px;
}
/* Al enviar con errores la página baja al bloque del campo: un poco de aire
   bajo el header fijo para que el legend no quede pegado. */
.quote-layout fieldset,
.quote-layout label {
  scroll-margin-top: 16px;
}
.quote-layout textarea {
  resize: vertical;
}
.quote-layout fieldset {
  border: 0;
  border-top: 1px solid var(--ink-6);
  margin: 14px 0 28px;
  padding: 20px 0 0;
}
.quote-layout legend {
  padding-right: 16px;
}
.choices label {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 12px;
  min-height: 44px;
  padding: 6px 0;
  margin-bottom: 0;
  font-size: var(--t-small);
}
.choices input {
  width: 18px;
  height: 18px;
  accent-color: var(--ink-1);
  flex-shrink: 0;
}
.quote-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.quote-actions {
  display: flex;
  gap: 18px;
  align-items: center;
  flex-wrap: wrap;
}
.quote-actions button {
  font: inherit;
  background: none;
  border: 1px solid var(--ink-5);
  padding: 13px 22px;
  cursor: pointer;
}
#quote-review {
  margin-top: 45px;
  padding-top: 35px;
  border-top: 1px solid var(--ink-5);
  scroll-margin-top: 30px;
}
#quote-review h2 {
  font-size: var(--t-h2);
}
#quote-text {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  font:
    15px/1.7 "DM Sans",
    Arial,
    sans-serif;
  background: var(--ink-7);
  padding: 25px;
}
#quote-status {
  font-size: var(--t-small);
}
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 2px solid var(--ink-1);
  outline-offset: 3px;
}
[hidden] {
  display: none !important;
}
@media (max-width: 1050px) {
  header {
    flex-wrap: wrap;
  }
  .brand {
    margin-right: auto;
  }
  .menu {
    display: block;
  }
  header nav {
    display: none;
    width: 100%;
    flex-direction: column;
    order: 4;
    gap: 0;
  }
  header nav.open {
    display: flex;
  }
  nav a {
    padding: 12px 0;
    border-top: 1px solid var(--ink-6);
  }
}
@media (max-width: 800px) {
  .quote-layout {
    grid-template-columns: 1fr;
    padding-top: 45px;
    gap: 40px;
  }
  .quote-grid {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .quote-strip {
    display: block;
    padding: 45px 6%;
  }
  .quote-strip h2 {
    font-size: var(--t-h2);
  }
  .quote-layout h2 {
    font-size: var(--t-h2);
  }
  .quote-layout input,
  .quote-layout textarea,
  .quote-layout select {
    font-size: var(--t-body);
  }
  .quote-actions {
    align-items: stretch;
    flex-direction: column;
  }
  .quote-actions a {
    text-align: center;
  }
}
/* Editorial rhythm; light surfaces reserved for reading and inputs. */
body.editorial-page {
  background: var(--paper-1);
}
.editorial-page header {
  background: var(--ink-1);
  color: var(--ink-7);
  border-color: var(--ink-3);
}
.editorial-page .hero {
  background: var(--ink-1);
  color: var(--paper-0);
  border: 0;
}
.editorial-page .hero .eyebrow {
  color: var(--ink-5);
}
.editorial-page .hero .intro {
  color: var(--paper-1);
}
.editorial-page .chapter {
  border-color: var(--paper-1);
}
/* El fondo de .real-photo es siempre el body claro de .editorial-page (no
   hay ninguna variante con fondo oscuro): su pie de foto usaba --ink-5,
   pensado para fondo oscuro, y quedaba en 2.4:1 de contraste. */
.editorial-page .real-photo figcaption {
  color: var(--ink-4);
}
.editorial-page .chapter:nth-of-type(even) {
  background: var(--paper-1);
}
.editorial-page .item {
  border-color: var(--paper-2);
}
.editorial-page .faq {
  background: var(--paper-0);
}
.editorial-page .quote-strip {
  background: var(--ink-3);
  color: var(--ink-7);
}
.editorial-page .quote-strip p {
  color: var(--ink-6);
}
.editorial-page .next {
  background: var(--paper-1);
  border-color: var(--ink-5);
}
.editorial-page .creative {
  background: var(--ink-2);
  color: var(--ink-7);
  border-color: var(--ink-4);
}
.editorial-page .creative-heading > p:last-child {
  color: var(--ink-6);
}
.editorial-page .creative-heading > p:first-child,
.editorial-page .creative figcaption {
  color: var(--ink-5);
}
.editorial-page .creative img {
  mix-blend-mode: normal;
}
.material-banner {
  margin: 0;
  background: var(--ink-1);
  position: relative;
  height: 450px;
}
.material-banner img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.material-banner figcaption {
  position: absolute;
  bottom: 25px;
  left: 6%;
  color: var(--ink-6);
  font-size: var(--t-eyebrow);
}
.editorial-page .artist {
  background: var(--ink-2);
  min-height: 420px;
  margin-top: 0;
  padding-top: 70px;
}
.editorial-page .quote-layout {
  background: var(--paper-0);
}
.editorial-page #quote-text {
  background: var(--paper-1);
}
.editorial-page footer {
  background: var(--ink-0);
}
.manufacturing-page .hero {
  background:
    linear-gradient(90deg, var(--ink-1) 20%, #141414b3),
    url("/hero-editorial.webp") center 45% / cover;
}
.work-page .hero {
  padding-bottom: 70px;
}
.start-page .hero h1 {
  font-size: var(--t-display);
}
.start-page .hero {
  padding-bottom: 65px;
}
@media (max-width: 800px) {
  /* Página de utilidad, no editorial: el formulario debe verse rápido. */
  .start-page .hero {
    padding: 28px 6% 24px;
  }
  .start-page .hero h1 {
    margin-bottom: 14px;
  }
  .start-page .hero .eyebrow {
    margin-bottom: 14px;
  }
  .start-page .hero .intro {
    display: none;
  }
  .start-page .quote-layout {
    padding-top: 20px;
  }
}
.about-page .chapter:last-of-type {
  background: var(--ink-2);
  color: var(--ink-7);
}
.about-page .chapter:last-of-type p {
  color: var(--ink-6);
}
.about-page .chapter:last-of-type .item {
  border-color: var(--ink-5);
}
@media (max-width: 800px) {
  .material-banner {
    height: 300px;
  }
  .editorial-page header nav a {
    border-color: var(--ink-4);
  }
  .editorial-page .hero h1 {
    font-size: var(--t-display);
  }
  .editorial-page .quote-strip a {
    font-size: var(--t-body);
  }
}
.section-index {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  padding: 24px 6%;
  background: var(--ink-2);
  color: var(--ink-7);
  font-size: var(--t-small);
  line-height: 1.5;
  border-top: 1px solid var(--ink-4);
}
.section-index > span {
  width: 100%;
  color: var(--ink-6);
  font-size: var(--t-small);
}
.section-index a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  border-bottom: 1px solid var(--ink-4);
}
.chapter,
.faq,
.artist {
  scroll-margin-top: 90px;
}
.artist-context {
  font-size: var(--t-body) !important;
  color: var(--ink-6) !important;
  max-width: 680px;
  margin-top: 35px !important;
  line-height: 1.6;
}
.artist h2 {
  margin-top: 35px;
}
.artist .action-link {
  align-self: flex-start;
}
.study-image {
  margin: 0;
  padding: 35px 6%;
  background: var(--paper-1);
}
.study-image img {
  display: block;
  width: 100%;
  height: auto;
}
.study-image figcaption {
  font-size: var(--t-small);
  margin-top: 20px;
  color: var(--ink-5);
}
.quote-context {
  padding: 18px;
  background: var(--paper-1);
  font-size: var(--t-body);
  line-height: 1.6;
  margin: 0 0 30px;
}
.scene-explore {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  margin-top: 18px;
  font-size: var(--t-body);
  border-bottom: 1px solid var(--ink-5);
}
.world-explore {
  position: absolute;
  left: 6%;
  top: 54%;
  font-size: var(--t-body);
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  border-bottom: 1px solid var(--ink-5);
}
.office-detail {
  position: absolute;
  left: 6%;
  bottom: 23%;
  font-size: var(--t-small);
  color: var(--ink-6);
}
.reading-mode .world-explore,
.reading-mode .office-detail {
  position: static;
  display: block;
  margin-top: 22px;
}
.reading-mode .world-explore {
  width: max-content;
  max-width: 100%;
}
@media (max-width: 760px) {
  .section-index {
    padding: 20px;
    gap: 8px;
    display: grid;
    grid-template-columns: 1fr;
  }
  .section-index a {
    min-height: 48px;
    padding: 8px 0;
  }
  .study-image {
    padding: 25px 20px;
  }
  .artist .action-link {
    min-height: 48px;
  }
}

/* /privacy/ y /es/privacidad/ como documento de lectura: columna angosta,
   cabezas pequeñas, sin el layout de dos columnas de las páginas de venta. */
.privacy-page main {
  max-width: 68ch;
  margin: 0 auto;
  padding: 0 6%;
}
.privacy-page .hero {
  padding: 60px 0 40px;
  border-bottom: 1px solid var(--ink-6);
}
.privacy-page .hero h1 {
  font-size: var(--t-h2);
  max-width: none;
}
.privacy-page .hero .intro {
  margin: 20px 0 0;
  max-width: none;
  font-size: var(--t-body);
}
.privacy-page .chapter {
  display: block;
  padding: 40px 0;
  border-bottom: 1px solid var(--ink-6);
}
.privacy-page .chapter-intro {
  max-width: none;
}
.privacy-page .chapter h2 {
  font-size: var(--t-h3);
  margin-bottom: 14px;
}
.privacy-page .chapter-intro p {
  max-width: none;
  color: var(--ink-6);
}
@media (max-width: 800px) {
  .privacy-page .hero {
    padding: 40px 0 28px;
  }
  .privacy-page .chapter {
    padding: 28px 0;
  }
}
