/*
Theme Name: JM Portfolio
Theme URI: https://javiermadrigal.es
Author: Javier Madrigal
Description: Tema de bloques ligero para el portfolio profesional de Javier Madrigal.
Version: 1.7.0
Requires at least: 6.6
Requires PHP: 8.0
Text Domain: jm-portfolio
*/

:root {
  --jm-ink: #2f3a32;
  --jm-paper: #f6f1e7;
  --jm-light: #fffdf8;
  --jm-olive: #7b8060;
  --jm-olive-ink: #565b43;
  --jm-beige: #e4d2ba;
  --jm-mustard: #c59643;
  --jm-terra: #b7654b;
  --jm-muted: #657067;
  --jm-line: rgba(47, 58, 50, .17);
  --jm-serif: "Newsreader", Georgia, serif;
  --jm-sans: "Geist", Arial, sans-serif;
  --jm-max: 1440px;
  --jm-gutter: max(32px, calc((100vw - var(--jm-max)) / 2));
}

* { box-sizing: border-box; }
html { max-width: 100%; overflow-x: clip; scroll-behavior: smooth; scroll-padding-top: 92px; }
body { max-width: 100%; overflow-x: clip; background: var(--jm-paper); color: var(--jm-ink); font-family: var(--jm-sans); }
a { color: inherit; text-underline-offset: .18em; }
h1, h2, h3, h4 { overflow-wrap: normal; word-break: normal; hyphens: none; text-wrap: balance; }
p, li { text-wrap: pretty; }
::selection { background: var(--jm-mustard); color: var(--jm-ink); }

.jm-header {
  position: sticky; top: 0; z-index: 50; min-height: 92px;
  padding: 0 var(--jm-gutter); border-bottom: 1px solid var(--jm-line);
  background: rgba(246, 241, 231, .94); backdrop-filter: blur(12px);
}
.jm-header-inner { min-height: 92px; display: flex; align-items: center; justify-content: space-between; gap: 30px; }
.jm-brand { margin: 0; font: 500 2rem/1 var(--jm-sans); letter-spacing: -.06em; }
.jm-brand a { text-decoration: none; }
.jm-brand strong { color: var(--jm-terra); font: inherit; }
.jm-header .wp-block-navigation { gap: 30px; font-size: .78rem; font-weight: 750; }
.jm-header .wp-block-navigation-item__content { text-decoration: none; }
.jm-header .jm-nav-cta { padding: 10px 16px; border: 1px solid var(--jm-ink); border-radius: 999px; }

.jm-hero { padding: 68px var(--jm-gutter) 74px; }
.jm-hero-columns { min-height: calc(100vh - 234px); gap: clamp(60px, 9vw, 138px); align-items: center !important; }
.jm-eyebrow { margin-bottom: 26px !important; color: var(--jm-terra); font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.jm-hero h1 { max-width: 860px; margin: 0 0 30px; font: 500 clamp(3.8rem, 6.4vw, 7rem)/.98 var(--jm-serif); letter-spacing: -.045em; }
.jm-lead { max-width: 690px; color: var(--jm-olive-ink); font-size: clamp(1.2rem, 1.8vw, 1.55rem); font-weight: 650; line-height: 1.52; }
.jm-detail { max-width: 650px; color: var(--jm-muted); font-size: 1rem; line-height: 1.7; }
.jm-actions { margin-top: 28px; gap: 14px; }
.jm-actions .wp-block-button__link { border-radius: 3px; padding: 15px 21px; font-size: .86rem; font-weight: 800; }
.jm-actions .is-style-outline .wp-block-button__link { padding: 14px 20px; }
.jm-availability { margin-top: 32px; color: var(--jm-muted); font-size: .8rem; }
.jm-availability::before { content: ""; display: inline-block; width: 9px; height: 9px; margin-right: 10px; border-radius: 50%; background: var(--jm-olive); box-shadow: 0 0 0 5px rgba(123,128,96,.17); }
.jm-portrait { max-width: 540px; margin-left: auto; }
.jm-portrait img { display: block; width: 100%; aspect-ratio: 4/5; object-fit: cover; filter: saturate(.88) contrast(.98); }
.jm-portrait-note { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 14px; margin-top: 14px; padding: 15px 18px; border-top: 4px solid var(--jm-mustard); background: var(--jm-beige); font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-align: center; text-transform: uppercase; }
.jm-portrait-note strong { font: 500 1.5rem var(--jm-serif); }

.jm-strip { padding: 0 var(--jm-gutter); background: var(--jm-ink); color: var(--jm-light); }
.jm-strip .wp-block-columns { margin: 0; gap: 0; }
.jm-strip .wp-block-column { min-height: 122px; padding: 30px 26px; border-right: 1px solid rgba(255,255,255,.18); }
.jm-strip .wp-block-column:first-child { border-left: 1px solid rgba(255,255,255,.18); }
.jm-strip h3 { margin: 0 0 9px; color: var(--jm-mustard); font: 500 1.12rem var(--jm-serif); }
.jm-strip p { margin: 0; color: #c8c7b8; font-size: .75rem; line-height: 1.5; }

.jm-section { padding: 124px var(--jm-gutter); }
.jm-section-head { display: grid; grid-template-columns: minmax(190px,.45fr) 1.55fr; gap: clamp(40px,8vw,120px); align-items: start; margin-bottom: 70px; }
.jm-kicker { padding-top: 10px; color: var(--jm-muted); font-size: .7rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; white-space: nowrap; }
.jm-kicker strong { display: inline-grid; width: 32px; height: 32px; margin-right: 14px; place-items: center; border: 1px solid currentColor; border-radius: 50%; color: var(--jm-terra); font: italic 700 .72rem var(--jm-serif); letter-spacing: 0; }
.jm-section-head h2 { max-width: 970px; margin: 0 0 22px; font: 500 clamp(3rem,5vw,5.8rem)/1.01 var(--jm-serif); letter-spacing: -.038em; }
.jm-section-head .jm-description { max-width: 720px; margin: 0; color: var(--jm-muted); font-size: 1rem; line-height: 1.72; }

.jm-expertise { background: var(--jm-light); }
.jm-card-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); border-top: 1px solid var(--jm-ink); }
.jm-card { min-height: 360px; padding: 38px 42px 40px 0; border-bottom: 1px solid var(--jm-ink); }
.jm-card:nth-child(odd) { border-right: 1px solid var(--jm-ink); }
.jm-card:nth-child(even) { padding-left: 42px; }
.jm-number { margin: 0 0 50px; color: var(--jm-terra); font: italic 1rem var(--jm-serif); }
.jm-card h3 { margin: 0 0 13px; font: 500 clamp(1.8rem,2.4vw,2.7rem)/1.08 var(--jm-serif); letter-spacing: -.025em; }
.jm-card > p:not(.jm-number) { color: var(--jm-olive-ink); font-weight: 700; line-height: 1.55; }
.jm-card ul, .jm-timeline ul { margin: 24px 0 0; padding: 0; list-style: none; }
.jm-card li, .jm-timeline li { position: relative; margin: 8px 0; padding-left: 18px; color: var(--jm-muted); font-size: .85rem; line-height: 1.5; }
.jm-card li::before, .jm-timeline li::before { content: "↳"; position: absolute; left: 0; color: var(--jm-terra); }

.jm-fit { background: var(--jm-beige); }
.jm-fit-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); border-block: 1px solid var(--jm-ink); }
.jm-fit-card { padding: 30px 26px 34px; border-right: 1px solid rgba(47,58,50,.28); }
.jm-fit-card:first-child { padding-left: 0; }
.jm-fit-card:last-child { padding-right: 0; border-right: 0; }
.jm-fit-card h3 { margin: 34px 0 13px; font: 500 clamp(1.35rem,1.8vw,1.8rem)/1.1 var(--jm-serif); }
.jm-fit-card p { color: #58625a; font-size: .82rem; line-height: 1.62; }
.jm-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; }
.jm-tags p { margin: 0; padding: 8px 11px; border: 1px solid rgba(47,58,50,.22); border-radius: 999px; background: rgba(255,253,248,.42); color: #505a52; font-size: .69rem; font-weight: 700; }

.jm-projects { background: var(--jm-ink); color: var(--jm-light); }
.jm-projects .jm-kicker, .jm-projects .jm-description { color: #c4c5b7; }
.jm-projects .jm-kicker strong { color: var(--jm-mustard); }
.jm-project { padding: 42px 0 54px; border-top: 1px solid rgba(255,255,255,.3); }
.jm-project:last-child { border-bottom: 1px solid rgba(255,255,255,.3); }
.jm-project-meta { display: flex; justify-content: space-between; gap: 20px; color: #c4c5b7; font-size: .67rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.jm-project-meta strong { color: var(--jm-mustard); font: italic 1rem var(--jm-serif); letter-spacing: 0; }
.jm-project h3 { max-width: 880px; margin: 34px 0 46px; font: 500 clamp(2.3rem,4vw,4.6rem)/1.02 var(--jm-serif); letter-spacing: -.032em; }
.jm-project-grid { display: grid; grid-template-columns: .75fr 1.35fr .9fr; gap: clamp(34px,6vw,90px); }
.jm-project-grid h4 { color: var(--jm-mustard); font-size: .66rem; letter-spacing: .15em; text-transform: uppercase; }
.jm-project-grid p, .jm-project-grid li { color: #d2d2c5; font-size: .88rem; line-height: 1.65; }
.jm-project-grid ol { margin: 0; padding-left: 1.4em; }
.jm-result { padding: 23px; border-top: 5px solid var(--jm-mustard); background: var(--jm-beige); color: var(--jm-ink); }
.jm-result h4 { color: var(--jm-olive-ink); }
.jm-result p { color: var(--jm-ink); font: italic 1.02rem/1.55 var(--jm-serif); }

.jm-career { background: var(--jm-light); }
.jm-career-grid { display: grid; grid-template-columns: 1.3fr .7fr; gap: clamp(60px,10vw,150px); }
.jm-label { margin-bottom: 26px; font-size: .69rem; letter-spacing: .15em; text-transform: uppercase; }
.jm-timeline, .jm-education { border-top: 1px solid var(--jm-ink); }
.jm-job { display: grid; grid-template-columns: 150px 1fr; gap: 28px; padding: 30px 0; border-bottom: 1px solid var(--jm-line); }
.jm-date { color: var(--jm-terra); font: italic .9rem var(--jm-serif); }
.jm-job h3 { margin: 0 0 7px; font: 500 clamp(1.35rem,2vw,2rem)/1.12 var(--jm-serif); }
.jm-job h4 { margin: 0 0 12px; color: var(--jm-olive-ink); font-size: .8rem; }
.jm-job p { color: var(--jm-muted); font-size: .85rem; line-height: 1.62; }
.jm-education-card { padding: 24px 0; border-bottom: 1px solid var(--jm-line); }
.jm-education-card h3 { margin: 8px 0; font: 500 1.23rem/1.22 var(--jm-serif); }
.jm-education-card p { margin: 0; color: var(--jm-muted); font-size: .8rem; }
.jm-side-block { margin-top: 52px; }
.jm-career-buttons { display: grid; gap: 12px; margin-top: 34px; }
.jm-career-buttons .wp-block-button { width: 100%; }
.jm-career-buttons .wp-block-button__link { width: 100%; border-radius: 0; }

.jm-about { background: var(--jm-terra); color: #fffaf1; }
.jm-about .jm-kicker { color: rgba(255,250,241,.72); }
.jm-about-grid { display: grid; grid-template-columns: 1.05fr 1fr .7fr; gap: clamp(44px,7vw,100px); align-items: start; }
.jm-about-lead { margin: 0; font: 500 clamp(1.75rem,2.8vw,3.15rem)/1.16 var(--jm-serif); }
.jm-about-copy { color: rgba(255,250,241,.88); font-size: .94rem; line-height: 1.75; }
.jm-now { padding: 28px; background: #fffaf1; color: var(--jm-ink); }
.jm-now h3 { color: var(--jm-terra); font-size: .65rem; letter-spacing: .14em; text-transform: uppercase; }
.jm-now p { color: var(--jm-muted); font-size: .8rem; line-height: 1.55; }

.jm-contact { display: grid; grid-template-columns: 1fr .82fr; gap: clamp(70px,11vw,160px); background: var(--jm-ink); color: var(--jm-light); }
.jm-contact h2 { margin: 42px 0 26px; font: 500 clamp(3.5rem,6vw,7rem)/.98 var(--jm-serif); }
.jm-contact-lead > p { max-width: 600px; color: #d0d0c3; line-height: 1.72; }
.jm-contact-links { margin-top: 40px; }
.jm-contact-links p { margin: 13px 0; }
.jm-contact-links a { color: var(--jm-light); font: 500 1.05rem var(--jm-serif); }
.jm-form { align-self: center; padding: 38px; background: var(--jm-light); color: var(--jm-ink); }
.jm-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.jm-form label { display: block; margin-bottom: 25px; font-size: .7rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.jm-form input, .jm-form textarea { width: 100%; margin-top: 9px; padding: 12px 0; border: 0; border-bottom: 1px solid #aab0aa; border-radius: 0; outline: 0; background: transparent; color: var(--jm-ink); font: 400 .94rem/1.5 var(--jm-sans); }
.jm-form input:focus, .jm-form textarea:focus { border-color: var(--jm-terra); box-shadow: 0 1px 0 var(--jm-terra); }
.jm-form textarea { min-height: 120px; resize: vertical; }
.jm-form .jm-consent { display: flex; align-items: flex-start; gap: 10px; margin: 0 0 14px; font-size: .76rem; font-weight: 500; letter-spacing: 0; line-height: 1.45; text-transform: none; }
.jm-form .jm-consent input { flex: 0 0 auto; width: 17px; height: 17px; margin: 2px 0 0; accent-color: var(--jm-terra); }
.jm-form .jm-consent a, .jm-privacy-summary a { color: var(--jm-terra); text-decoration: underline; text-underline-offset: 2px; }
.jm-privacy-summary { margin: 0 0 18px; color: var(--jm-muted); font-size: .68rem; line-height: 1.55; }
.jm-privacy-summary strong { color: var(--jm-ink); }
.jm-form button { width: 100%; padding: 15px 21px; border: 0; border-radius: 3px; background: var(--jm-terra); color: white; font-weight: 800; cursor: pointer; }
.jm-form-status { padding: 12px; background: #e7f0df; color: #33442b; font-size: .82rem; }
.jm-honeypot { position: absolute !important; left: -9999px !important; }

.jm-footer { padding: 32px var(--jm-gutter); background: #252e28; color: var(--jm-paper); }
.jm-footer-inner { display: flex; align-items: center; justify-content: space-between; gap: 30px; }
.jm-footer p, .jm-footer a:not(.jm-brand a) { color: #bfc2b6; font-size: .72rem; }

/* Interacciones de marca: puntero terracota y easter egg del logotipo. */
.jm-pointer {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
  display: grid;
  width: 40px;
  height: 40px;
  pointer-events: none;
  place-items: center;
  opacity: 0;
  will-change: transform;
  transition: opacity .18s ease;
}
.jm-pointer::before {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--jm-terra);
  box-shadow: 0 0 0 1px rgba(255,255,255,.35);
  content: "";
  opacity: .9;
  transform: scale(1);
  transition: transform .22s ease, opacity .22s ease, box-shadow .22s ease;
}
.jm-pointer.is-visible { opacity: 1; }
.jm-pointer.is-active::before {
  box-shadow: 0 0 0 1px rgba(183,101,75,.55);
  opacity: .18;
  transform: scale(4.5);
}
.jm-brand strong { display: inline-block; }
.jm-brand strong.is-tapped { animation: jm-dot-tap .22s ease; }
.jm-chaos-piece { transition: transform .65s cubic-bezier(.22,1,.36,1); }
body.jm-chaos .jm-chaos-piece {
  transform: translate3d(var(--jm-chaos-x),var(--jm-chaos-y),0) rotate(var(--jm-chaos-r));
  transition-duration: .18s;
}
.jm-easter-toast {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 10000;
  max-width: min(340px,calc(100vw - 48px));
  padding: 13px 17px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 3px;
  background: var(--jm-ink);
  box-shadow: 0 14px 40px rgba(24,30,26,.24);
  color: var(--jm-paper);
  font-size: .8rem;
  font-weight: 650;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .25s ease, transform .25s ease;
}
.jm-easter-toast.is-visible { opacity: 1; transform: translateY(0); }
@keyframes jm-dot-tap {
  50% { transform: scale(1.65); }
}

/* JM. Lab: microjuego accesible sobre la metodología de trabajo. */
.jm-lab-launcher {
  position: fixed;
  bottom: 22px;
  left: 22px;
  z-index: 9998;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 11px 15px;
  border: 1px solid rgba(183,101,75,.65);
  border-radius: 999px;
  background: rgba(243,238,227,.94);
  box-shadow: 0 10px 30px rgba(29,37,32,.14);
  color: var(--jm-ink);
  font: 750 .74rem/1 var(--jm-sans);
  letter-spacing: .02em;
  cursor: pointer;
  backdrop-filter: blur(8px);
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.jm-lab-launcher::before {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--jm-terra);
  content: "";
}
.jm-lab-launcher:hover,
.jm-lab-launcher:focus-visible {
  background: var(--jm-paper);
  box-shadow: 0 14px 34px rgba(29,37,32,.2);
  transform: translateY(-2px);
}
.jm-lab-dialog {
  width: min(760px,calc(100vw - 32px));
  max-width: none;
  max-height: min(780px,calc(100vh - 32px));
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: var(--jm-ink);
  font-family: var(--jm-sans);
  overflow: auto;
}
.jm-lab-dialog::backdrop {
  background: rgba(28,36,31,.78);
  backdrop-filter: blur(5px);
}
.jm-lab-card {
  position: relative;
  padding: clamp(27px,5vw,52px);
  background: var(--jm-paper);
  box-shadow: 0 24px 80px rgba(0,0,0,.28);
  overflow: hidden;
}
.jm-lab-close {
  position: absolute;
  top: 18px;
  right: 18px;
  display: grid;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid rgba(47,58,50,.28);
  border-radius: 50%;
  background: transparent;
  color: var(--jm-ink);
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
  place-items: center;
}
.jm-lab-kicker {
  margin: 0 0 22px;
  color: var(--jm-terra);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .13em;
  text-transform: uppercase;
}
.jm-lab-card h2 {
  max-width: 590px;
  margin: 0 48px 14px 0;
  font: 500 clamp(2.2rem,6vw,4.5rem)/.98 var(--jm-serif);
  letter-spacing: -.035em;
}
.jm-lab-intro {
  max-width: 590px;
  margin: 0 0 30px;
  color: var(--jm-muted);
  font-size: .92rem;
  line-height: 1.6;
}
.jm-lab-pool {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin-bottom: 19px;
}
.jm-lab-step,
.jm-lab-selected {
  padding: 10px 13px;
  border: 1px solid rgba(47,58,50,.35);
  border-radius: 3px;
  background: #fffaf1;
  color: var(--jm-ink);
  font: 700 .76rem/1.2 var(--jm-sans);
  cursor: pointer;
}
.jm-lab-step:hover,
.jm-lab-step:focus-visible { border-color: var(--jm-terra); color: var(--jm-terra); }
.jm-lab-step[disabled] { display: none; }
.jm-lab-sequence {
  display: flex;
  min-height: 60px;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 10px;
  border: 1px dashed rgba(47,58,50,.38);
  background: rgba(216,195,165,.13);
}
.jm-lab-placeholder { margin: 0 4px; color: var(--jm-muted); font-size: .76rem; }
.jm-lab-selected {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border-color: var(--jm-ink);
  background: var(--jm-ink);
  color: var(--jm-paper);
}
.jm-lab-selected span { color: var(--jm-mustard); font-size: .65rem; }
.jm-lab-feedback {
  min-height: 25px;
  margin: 17px 0 8px;
  color: var(--jm-terra);
  font-weight: 700;
  line-height: 1.45;
}
.jm-lab-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 17px; }
.jm-lab-actions button {
  padding: 12px 17px;
  border: 1px solid var(--jm-ink);
  border-radius: 3px;
  background: transparent;
  color: var(--jm-ink);
  font-weight: 750;
  cursor: pointer;
}
.jm-lab-actions .jm-lab-check { background: var(--jm-terra); border-color: var(--jm-terra); color: white; }
.jm-lab-actions .jm-lab-check:disabled { cursor: not-allowed; opacity: .42; }
.jm-lab-card.is-success .jm-lab-sequence { border-color: #667f55; background: #e8efe1; }
.jm-lab-particle {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 8px;
  height: 8px;
  border-radius: 1px;
  background: var(--jm-particle-color,var(--jm-terra));
  pointer-events: none;
  animation: jm-lab-pop .85s cubic-bezier(.2,.7,.3,1) forwards;
}
@keyframes jm-lab-pop {
  to {
    opacity: 0;
    transform: translate(var(--jm-particle-x),var(--jm-particle-y)) rotate(160deg) scale(.5);
  }
}

/* Recorrido profesional de 60 segundos. */
.jm-actions .jm-quick-tour-button {
  flex-basis: 100%;
  margin-top: 2px;
}
.jm-actions .jm-quick-tour-trigger {
  padding: 7px 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--jm-terra) !important;
  font-size: .76rem !important;
  font-weight: 750;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
  cursor: pointer;
}
.jm-actions .jm-quick-tour-trigger:hover,
.jm-actions .jm-quick-tour-trigger:focus-visible { color: var(--jm-ink) !important; }
.jm-tour-dialog {
  width: min(920px,calc(100vw - 32px));
  max-width: none;
  max-height: min(820px,calc(100vh - 32px));
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: var(--jm-ink);
  font-family: var(--jm-sans);
  overflow: auto;
}
.jm-tour-dialog::backdrop {
  background: rgba(28,36,31,.82);
  backdrop-filter: blur(6px);
}
.jm-tour-shell {
  position: relative;
  min-height: 570px;
  padding: clamp(28px,5vw,58px);
  background: var(--jm-paper);
  box-shadow: 0 24px 90px rgba(0,0,0,.3);
  overflow: hidden;
}
.jm-tour-close {
  position: absolute;
  top: 19px;
  right: 19px;
  z-index: 2;
  display: grid;
  width: 39px;
  height: 39px;
  padding: 0;
  border: 1px solid rgba(47,58,50,.3);
  border-radius: 50%;
  background: transparent;
  color: var(--jm-ink);
  font-size: 1.35rem;
  cursor: pointer;
  place-items: center;
}
.jm-tour-eyebrow {
  margin: 0 0 22px;
  color: var(--jm-terra);
  font-size: .68rem;
  font-weight: 850;
  letter-spacing: .13em;
  text-transform: uppercase;
}
.jm-tour-shell h2 {
  max-width: 740px;
  margin: 0 48px 15px 0;
  font: 500 clamp(2.7rem,6vw,5.4rem)/.98 var(--jm-serif);
  letter-spacing: -.04em;
}
.jm-tour-lead {
  max-width: 680px;
  margin: 0 0 34px;
  color: var(--jm-muted);
  font-size: .95rem;
  line-height: 1.65;
}
.jm-tour-routes {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  border-top: 1px solid rgba(47,58,50,.34);
  border-left: 1px solid rgba(47,58,50,.34);
}
.jm-tour-route {
  min-height: 210px;
  padding: 24px;
  border: 0;
  border-right: 1px solid rgba(47,58,50,.34);
  border-bottom: 1px solid rgba(47,58,50,.34);
  background: transparent;
  color: var(--jm-ink);
  text-align: left;
  cursor: pointer;
  transition: background .2s ease, color .2s ease, transform .2s ease;
}
.jm-tour-route:hover,
.jm-tour-route:focus-visible { background: var(--jm-ink); color: var(--jm-paper); transform: translateY(-3px); }
.jm-tour-route small { display: block; margin-bottom: 42px; color: var(--jm-terra); font-weight: 850; letter-spacing: .08em; }
.jm-tour-route strong { display: block; margin-bottom: 10px; font: 500 1.55rem/1.08 var(--jm-serif); }
.jm-tour-route span { display: block; color: var(--jm-muted); font-size: .76rem; line-height: 1.5; }
.jm-tour-route:hover span,
.jm-tour-route:focus-visible span { color: #d0d0c5; }
.jm-tour-route:hover small,
.jm-tour-route:focus-visible small { color: var(--jm-mustard); }
.jm-tour-route-back {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--jm-terra);
  font: 750 .74rem var(--jm-sans);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.jm-tour-progress { display: flex; gap: 8px; margin: 24px 0 42px; }
.jm-tour-progress span { flex: 1; height: 3px; background: rgba(47,58,50,.18); }
.jm-tour-progress span.is-active { background: var(--jm-terra); }
.jm-tour-slide { max-width: 760px; }
.jm-tour-count { margin: 0 0 13px; color: var(--jm-terra); font: italic 700 .85rem var(--jm-serif); }
.jm-tour-slide h3 {
  margin: 0 0 16px;
  font: 500 clamp(2.25rem,4.5vw,4.3rem)/1 var(--jm-serif);
  letter-spacing: -.035em;
}
.jm-tour-slide > p { max-width: 670px; margin: 0 0 24px; color: var(--jm-muted); line-height: 1.65; }
.jm-tour-points { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 9px; margin: 0; padding: 0; list-style: none; }
.jm-tour-points li { min-height: 94px; padding: 16px; border: 1px solid rgba(47,58,50,.28); color: var(--jm-ink); font-size: .76rem; line-height: 1.45; }
.jm-tour-controls { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 40px; }
.jm-tour-controls button,
.jm-tour-cta {
  padding: 12px 17px;
  border: 1px solid var(--jm-ink);
  border-radius: 3px;
  background: transparent;
  color: var(--jm-ink);
  font-weight: 750;
  text-decoration: none;
  cursor: pointer;
}
.jm-tour-controls .jm-tour-next { border-color: var(--jm-terra); background: var(--jm-terra); color: white; }
.jm-tour-summary { max-width: 760px; }
.jm-tour-summary h3 { margin: 0 0 18px; font: 500 clamp(2.5rem,5vw,4.8rem)/1 var(--jm-serif); letter-spacing: -.035em; }
.jm-tour-summary > p { max-width: 670px; color: var(--jm-muted); line-height: 1.65; }
.jm-tour-outcomes { display: flex; flex-wrap: wrap; gap: 8px; margin: 28px 0 34px; }
.jm-tour-outcomes span { padding: 9px 12px; border-radius: 999px; background: #e7eadf; color: var(--jm-ink); font-size: .72rem; font-weight: 700; }
.jm-tour-ctas { display: flex; flex-wrap: wrap; gap: 10px; }
.jm-tour-cta:first-child { border-color: var(--jm-terra); background: var(--jm-terra); color: white; }

@media (pointer: coarse), (prefers-reduced-motion: reduce) {
  .jm-pointer { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .jm-lab-particle { display: none; }
}

/* WordPress aplica por defecto el ancho de contenido (900 px) a los hijos de
   los grupos "constrained". Estas reglas restauran el lienzo amplio del diseño. */
.jm-header > .jm-header-inner,
.jm-hero > .jm-hero-columns,
.jm-strip > .wp-block-columns,
.jm-section > *,
.jm-footer > .jm-footer-inner {
  width: 100%;
  max-width: var(--jm-max) !important;
  margin-inline: auto !important;
}

@media (min-width: 901px) {
  header.wp-block-template-part {
    position: sticky;
    top: 0;
    z-index: 1000;
  }

  .admin-bar header.wp-block-template-part { top: 32px; }
}

@media (max-width: 1100px) {
  .jm-header .wp-block-navigation { gap: 20px; }
  .jm-fit-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .jm-project-grid { grid-template-columns: 1fr 1.25fr; }
  .jm-result { grid-column: 1/-1; }
  .jm-about-grid { grid-template-columns: 1fr 1fr; }
  .jm-now { grid-column: 2; }
}
@media (max-width: 900px) {
  :root { --jm-gutter: 24px; }
  .jm-header .wp-block-navigation-item:not(.jm-nav-cta) { display: none; }
  .jm-hero-columns { min-height: 0; flex-wrap: wrap !important; }
  .jm-hero-columns > .wp-block-column { flex-basis: 100% !important; }
  .jm-portrait { width: min(82%,520px); margin: 0 auto; }
  .jm-section-head { grid-template-columns: 1fr; gap: 28px; }
  .jm-card-grid, .jm-career-grid, .jm-contact { grid-template-columns: 1fr; }
  .jm-card, .jm-card:nth-child(even) { padding: 34px 0; border-right: 0; }
  .jm-project-grid { grid-template-columns: 1fr; }
  .jm-result { grid-column: auto; }
  .jm-about-grid { grid-template-columns: 1fr; }
  .jm-now { grid-column: auto; }
  .jm-tour-routes { grid-template-columns: 1fr; }
  .jm-tour-route { min-height: 0; }
  .jm-tour-route small { margin-bottom: 20px; }
}
@media (max-width: 600px) {
  :root { --jm-gutter: 20px; }
  html { scroll-padding-top: 76px; }
  .jm-header, .jm-header-inner { min-height: 76px; }
  .jm-header .wp-block-navigation__responsive-container-open { display: none; }
  .jm-hero { padding-top: 42px; padding-bottom: 64px; }
  .jm-hero h1 { font-size: clamp(3rem,14vw,4rem); line-height: 1.03; }
  .jm-actions { display: grid !important; }
  .jm-actions .wp-block-button, .jm-actions .wp-block-button__link { width: 100%; }
  .jm-portrait { width: 100%; }
  .jm-portrait-note { padding: 13px 10px; font-size: .58rem; }
  .jm-strip .wp-block-columns { display: block; }
  .jm-strip .wp-block-column, .jm-strip .wp-block-column:first-child { min-height: 0; padding: 22px 0; border: 0; border-bottom: 1px solid rgba(255,255,255,.18); }
  .jm-section { padding-top: 82px; padding-bottom: 82px; }
  .jm-section-head h2 { font-size: clamp(2.65rem,12vw,3.6rem); line-height: 1.06; }
  .jm-fit-grid { grid-template-columns: 1fr; }
  .jm-fit-card, .jm-fit-card:first-child, .jm-fit-card:last-child { padding: 28px 0; border-right: 0; border-bottom: 1px solid rgba(47,58,50,.28); }
  .jm-project-meta { flex-direction: column; gap: 9px; }
  .jm-project h3 { font-size: 2.55rem; line-height: 1.07; }
  .jm-job { grid-template-columns: 1fr; gap: 10px; }
  .jm-form-grid { grid-template-columns: 1fr; gap: 0; }
  .jm-form { padding: 27px 22px; }
  .jm-footer-inner { align-items: flex-start; flex-direction: column; }
  .jm-lab-launcher { bottom: 14px; left: 14px; padding: 10px 13px; }
  .jm-lab-card { padding: 30px 20px 24px; }
  .jm-lab-card h2 { margin-right: 42px; font-size: 2.6rem; }
  .jm-lab-actions { align-items: stretch; flex-direction: column-reverse; }
  .jm-lab-actions button { width: 100%; }
  .jm-tour-shell { min-height: 0; padding: 30px 20px 24px; }
  .jm-tour-shell h2 { margin-right: 42px; font-size: 3rem; }
  .jm-tour-points { grid-template-columns: 1fr; }
  .jm-tour-points li { min-height: 0; }
  .jm-tour-controls { align-items: stretch; flex-direction: column-reverse; }
  .jm-tour-controls button { width: 100%; }
  .jm-tour-ctas { align-items: stretch; flex-direction: column; }
  .jm-tour-cta { text-align: center; }
}

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
