/* byNCP — hoja de estilo única. border-radius:0 en todo, sin sombras, solo filetes. */

:root{
  --paper:#F6F3EC;
  --paper-2:#FBF9F4;
  --ink:#1C1B18;
  --body:#3A3730;
  --meta:#736D61;
  --rule:#D8D2C4;
  --rule-soft:#E4DFD2;
  --rule-faint:#C9C2B2;
  --stripe:#DED8CB;
  --accent:#9A2F22;
  --on-ink-body:#CFC9BC;
  --on-ink-meta:#A39D90;
  --on-ink-rule:rgba(246,243,236,0.25);
  --on-ink-rule-2:rgba(246,243,236,0.35);

  --maxw:1280px;
  --gut:clamp(20px,4.375vw,56px);

  --serif:'Instrument Serif',Georgia,'Times New Roman',serif;
  --sans:'Archivo',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;

  /* escala tipográfica: 390px -> 1280px */
  --fs-h1:clamp(3rem,7.5vw,6rem);
  --fs-h2:clamp(2rem,3.44vw,2.75rem);
  --fs-acompanar:clamp(3rem,6.875vw,5.5rem);
  --fs-sobre:clamp(2.5rem,4.375vw,3.5rem);
  --fs-contacto:clamp(2.625rem,8.125vw,6.5rem);
  --fs-fase:clamp(1.875rem,3.125vw,2.5rem);
  --fs-body:clamp(0.9375rem,1.33vw,1.0625rem);
  --fs-lead:clamp(0.97rem,1.484vw,1.1875rem);
  --fs-small:clamp(0.875rem,1.13vw,0.906rem);
  --fs-mono:clamp(0.6875rem,0.94vw,0.75rem);
  --fs-mono-s:clamp(0.6875rem,0.86vw,0.719rem);

  --nav-h:79px;
  --s:1;
  --pad-top:clamp(32px,3.33vw,48px);
  --pad-bot:clamp(48px,5.56vw,80px);
}

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:300;
  font-size:var(--fs-body);
  line-height:1.55;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:var(--ink);text-decoration:none}
a:hover{color:var(--accent)}
p{margin:0}
/* evita que la última línea quede con una palabra suelta (viudas tipográficas).
   Los navegadores que no lo soporten simplemente parten como antes. */
p,.hero__sub,.fase__txt,.acomp__txt,.niv__intro,.contacto__p,.build__s,.caso__sub,
.map__txt,.niv__panel .pdesc,.caso__col p,.fase__note,.italic-note{text-wrap:pretty}
h1,h2,h3{margin:0;font-weight:400}
button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;text-align:left}
*:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--ink);color:var(--paper);
  padding:12px 18px;font-size:0.9375rem;font-weight:500}
.skip-link:focus{left:0;color:var(--paper)}

/* ───────── primitivas ───────── */
.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--gut);padding-right:var(--gut)}
.serif{font-family:var(--serif);font-weight:400}
.mono{font-family:var(--mono);font-size:var(--fs-mono);color:var(--meta);letter-spacing:0.08em}
.em{font-style:italic}
.rule-top{border-top:1px solid var(--ink)}
.hide{display:none !important}

/* secciones a pantalla completa: seis de las siete */
.section{border-top:1px solid var(--ink);scroll-margin-top:var(--nav-h)}
/* #top es <main>, que arranca justo bajo el nav: sin este margen, saltar a él
   desplaza la página el alto de la barra en vez de llevarla al principio */
#top{scroll-margin-top:var(--nav-h)}
.section--full{display:flex;flex-direction:column;justify-content:flex-start}
.section--full > .wrap{flex:1;display:flex;flex-direction:column;width:100%}
.spacer{flex:1 1 auto;min-height:0}

/* ───────── nav ───────── */
.nav{position:sticky;top:0;z-index:80;background:var(--paper);border-bottom:1px solid var(--rule)}
.nav__in{display:flex;justify-content:space-between;align-items:center;gap:24px;padding-top:18px;padding-bottom:18px}
/* ───────── logo ─────────
   Dos piezas: el «by» compuesto en Instrument Serif itálica y el «ncp.» del PNG.
   Se alinean por arriba, no por la base. Todo se deriva de --logo-h, la altura
   del PNG; las proporciones son las de uploads/LOGO.md. */
.logo{display:inline-flex;align-items:flex-start;gap:calc(var(--logo-h) * 0.045);--logo-h:22px}
.logo-by{font-family:var(--serif);font-style:italic;font-weight:400;line-height:0.66;
  letter-spacing:-0.01em;color:currentColor;
  font-size:calc(var(--logo-h) * 0.818);padding-top:calc(var(--logo-h) * 0.09)}
.logo-ncp{display:block;width:auto;height:var(--logo-h)}
.nav__logo{--logo-h:22px}
.nav__links{display:flex;gap:clamp(14px,2.5vw,32px);align-items:center;font-size:clamp(0.8125rem,1.09vw,0.875rem)}
.nav__en{font-family:var(--mono);font-size:0.75rem;color:var(--meta)}
.nav__en:hover{color:var(--ink)}
/* mismo chip rectangular que el CTA, pero con filete en vez de relleno:
   la acción principal sigue siendo ¡Hablemos! */
.nav__social{font-family:var(--mono);font-size:0.75rem;letter-spacing:0.08em;white-space:nowrap;
  border:1px solid var(--ink);padding:7px 14px;line-height:20px;display:inline-block}
.nav__social:hover{background:var(--ink);color:var(--paper)}
.btn-ink{background:var(--ink);color:var(--paper);padding:10px 16px;font-size:0.875rem;font-weight:500;line-height:20px;display:inline-block}
.btn-ink:hover{background:var(--accent);color:var(--paper)}
.nav__burger{display:none;flex-direction:column;gap:5px;width:22px;cursor:pointer;padding:6px 0}
.nav__burger span{height:1px;background:var(--ink);display:block}

/* ───────── hero ───────── */
.hero{position:relative;overflow:hidden}
/* rayas de libreta del hero — desactivadas a prueba.
   Para recuperarlas, quita el display:none de abajo. */
.hero__stripes{position:absolute;left:var(--gut);right:var(--gut);top:0;bottom:0;
  background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 47px,var(--stripe) 47px,var(--stripe) 48px);
  pointer-events:none;display:none}
.hero__in{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:24px;
  padding-top:clamp(36px,5.6vw,72px);padding-bottom:0;align-items:start;min-height:clamp(480px,53vw,680px)}
.hero__text{max-width:760px;display:flex;flex-direction:column;gap:clamp(20px,2.8vw,36px);align-self:start}
.hero h1{font-family:var(--serif);font-size:var(--fs-h1);line-height:0.98;letter-spacing:-0.025em;text-wrap:balance}
.hero__sub{font-size:var(--fs-lead);line-height:1.55;color:var(--body);max-width:620px}
.hero__cta{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.cta-lg{background:var(--ink);color:var(--paper);padding:16px 24px;font-size:0.9375rem;font-weight:500;display:inline-block}
.cta-lg:hover{background:var(--accent);color:var(--paper)}
.hero__sign{font-family:var(--serif);font-style:italic;font-size:clamp(1.25rem,2.19vw,1.75rem);line-height:1;letter-spacing:-0.01em;text-align:right;justify-self:end;padding-top:clamp(8px,2.5vw,32px)}
.hero__portrait{position:absolute;right:calc(var(--gut) + 2.6vw);bottom:0;height:clamp(300px,46.9vw,600px);width:auto;z-index:1}

/* ───────── cabecera de sección ───────── */
.sechead{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;
  margin-bottom:clamp(24px,2.5vw,32px)}
.sechead__l{display:flex;flex-direction:column;gap:14px}
.sechead h2{font-family:var(--serif);font-size:var(--fs-h2);line-height:1.05;letter-spacing:-0.02em;max-width:760px}
.sechead__r{font-family:var(--mono);font-size:var(--fs-mono);color:var(--meta);text-align:right;line-height:1.7}

/* ───────── 01 cómo trabajo ───────── */
.fases{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,3.1vw,40px)}
.fase{display:flex;flex-direction:column;gap:clamp(12px,1.6vw,20px);border-top:1px solid var(--ink);padding-top:18px}
.fase__row{display:flex;justify-content:space-between;font-family:var(--mono);font-size:var(--fs-mono);color:var(--meta);gap:12px}
.fase__name{font-family:var(--serif);font-size:var(--fs-fase);line-height:1}
.fase__txt{font-size:var(--fs-body);line-height:1.55;color:var(--body)}
.fase__note{border-top:1px solid var(--rule);padding:22px 0 6px;font-family:var(--serif);font-style:italic;
  font-size:clamp(1.1875rem,1.72vw,1.375rem);line-height:1.45}
.fase__foot{display:flex;flex-direction:column;gap:12px;margin-top:auto}
.fase__foot .lbl{font-family:var(--mono);font-size:clamp(0.6875rem,0.86vw,0.6875rem);letter-spacing:0.08em;color:var(--meta);
  border-top:1px solid var(--ink);padding-top:12px}
.chips{display:flex;flex-direction:column;gap:8px}
.chips > div{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--ink);padding:7px 11px;font-family:var(--mono);
  font-size:clamp(0.6875rem,0.9vw,0.719rem);line-height:1.2;color:var(--ink)}
.btn-map{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid var(--ink);
  background:var(--ink);color:var(--paper);padding:14px 16px;cursor:pointer;width:100%}
.btn-map:hover{background:var(--accent);border-color:var(--accent);color:var(--paper)}
.btn-map span:first-child{font-size:0.9375rem;font-weight:500}
.btn-map span:last-child{font-family:var(--mono);font-size:0.75rem}

/* ───────── acompañar ───────── */
/* la columna de la foto es estrecha a propósito: Mee.png son 360×540 y cuanto
   más ancha, más se amplía. Al 34 % toca suelo: amplía 1,47× en vez de 1,93×, y
   por debajo ya no mejora porque pasa a mandar el alto de la sección. */
:is(#acompanamiento,#support){display:grid;grid-template-columns:minmax(0,1fr) 34%;align-items:stretch}
.acomp__l{padding:var(--pad-top) 0 clamp(40px,5.6vw,72px);display:flex;flex-direction:column;
  padding-left:max(var(--gut),calc((100vw - var(--maxw))/2 + var(--gut)));padding-right:clamp(20px,4.375vw,56px)}
.acomp__head{display:flex;flex-direction:column;gap:16px}
.acomp__num{display:flex;gap:20px;font-family:var(--mono);font-size:var(--fs-mono);color:var(--meta);letter-spacing:0.08em}
.acomp__title{margin:0;font-weight:400;font-family:var(--serif);font-size:var(--fs-acompanar);line-height:0.95;letter-spacing:-0.025em}
.acomp__txt{font-size:clamp(0.97rem,1.56vw,1.25rem);line-height:1.5;color:var(--body);max-width:520px;padding-top:28px}
.acomp__img{position:relative;overflow:hidden;min-height:clamp(320px,60vw,100%)}
.acomp__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:30% 42%}

/* ───────── 02 niveles (oscura) ───────── */
:is(#niveles,#levels){background:var(--ink);color:var(--paper);border-top:1px solid var(--ink)}
:is(#niveles,#levels) .wrap{padding-top:clamp(32px,3.33vw,48px);padding-bottom:clamp(48px,5.56vw,72px)}
.niv__head{display:flex;flex-direction:column;gap:18px;margin-bottom:20px}
.niv__lbl{font-family:var(--mono);font-size:var(--fs-mono);color:var(--on-ink-meta);letter-spacing:0.08em}
.niv__h2{font-family:var(--serif);font-size:clamp(2rem,3.125vw,2.5rem);line-height:1.05;letter-spacing:-0.02em}
.niv__link{color:var(--paper);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.niv__link:hover{color:var(--paper);text-decoration-thickness:2px}
.niv__intro{font-size:var(--fs-body);line-height:1.6;color:var(--on-ink-body);max-width:760px;
  border-top:1px solid var(--on-ink-rule);padding-top:20px}
.niv__grid{display:grid;grid-template-columns:minmax(0,520px) minmax(0,1fr);gap:clamp(24px,5vw,64px);align-items:start}
.niv__list{display:flex;flex-direction:column;border-top:1px solid var(--on-ink-rule)}
.niv__item{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:20px;align-items:baseline;
  padding:clamp(10px,1.1vw,14px) 16px;border-bottom:1px solid var(--on-ink-rule);cursor:pointer;width:100%;
  background:transparent;color:var(--paper)}
.niv__item[aria-selected="true"]{background:var(--paper);color:var(--ink)}
.niv__item .n,.niv__item .tag{font-family:var(--mono);color:var(--on-ink-meta)}
.niv__item .n{font-size:0.75rem}
.niv__item .tag{font-size:0.719rem;text-align:right}
.niv__item[aria-selected="true"] .n,.niv__item[aria-selected="true"] .tag{color:var(--meta)}
.niv__item .name{font-family:var(--serif);font-size:clamp(1.25rem,1.875vw,1.5rem);line-height:1.1}
.niv__panel{border:1px solid var(--paper);display:flex;flex-direction:column;min-height:340px}
.niv__panel .top{padding:14px 24px;border-bottom:1px solid var(--on-ink-rule-2);font-family:var(--mono);
  font-size:0.75rem;letter-spacing:0.06em;color:var(--on-ink-meta)}
.niv__panel .body{padding:28px 24px 24px;display:flex;flex-direction:column;gap:20px}
.niv__panel .pname{font-family:var(--serif);font-size:clamp(2rem,3.44vw,2.75rem);line-height:1;letter-spacing:-0.02em}
.niv__panel .pdesc{font-size:clamp(1rem,1.4vw,1.125rem);line-height:1.55;color:var(--on-ink-body);max-width:520px}
.niv__panel .pex{font-family:var(--serif);font-style:italic;font-size:clamp(1.1875rem,1.8vw,1.4375rem);line-height:1.3;
  max-width:520px;border-top:1px solid var(--on-ink-rule);padding-top:20px}
.niv__panel .tools{margin-top:auto;padding:14px 24px;border-top:1px solid var(--on-ink-rule-2);
  font-family:var(--mono);font-size:0.75rem;line-height:1.7;color:var(--on-ink-meta)}
.niv__panel .tools b{color:var(--paper);font-weight:400}
.niv__close{margin-top:auto;padding-top:28px;border-top:1px solid var(--on-ink-rule);
  font-family:var(--serif);font-style:italic;font-size:clamp(1.375rem,2.03vw,1.625rem);line-height:1.3;max-width:760px}
/* acordeón de niveles: solo móvil */
.niv__acc{display:none}

/* ───────── 03 qué construyo ───────── */
.build{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr;gap:20px}
/* grid-auto-rows:1fr: las dos filas miden lo mismo, así todas las tarjetas tienen el mismo tamaño aunque un texto sea más largo */
.build__card{border:1px solid var(--ink);display:flex;flex-direction:column;background:var(--paper)}
.thumb{height:104px;border-bottom:1px solid var(--ink);background:var(--paper-2);position:relative;overflow:hidden;flex:none}
.build__body{padding:18px 18px 20px;display:flex;flex-direction:column;gap:10px;flex:1;min-height:172px}
.build__n{font-family:var(--mono);font-size:0.6875rem;color:var(--meta)}
.build__t{font-family:var(--serif);font-size:clamp(1.375rem,1.95vw,1.5625rem);line-height:1.08;letter-spacing:-0.01em;min-height:2.16em}
.build__t .l{display:block}
/* el título siempre ocupa dos líneas y el texto va justo debajo: así todos los textos empiezan a la misma altura */
.build__s{font-size:clamp(0.875rem,1.13vw,0.906rem);line-height:1.5;color:var(--body)}

/* ───────── 04 portfolio ───────── */
#portfolio .wrap{padding-top:var(--pad-top);padding-bottom:var(--pad-bot)}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}
.filter{border:1px solid var(--ink);background:var(--paper);color:var(--ink);padding:8px 13px;
  font-family:var(--mono);font-size:0.719rem;letter-spacing:0.04em;cursor:pointer}
.filter[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
/* las miniaturas están dibujadas a 570px de ancho: por debajo de eso el dibujo se
   amontona, así que antes de llegar ahí las tarjetas pasan a una sola columna */
@media (max-width:1180px){.cards{grid-template-columns:minmax(0,1fr)}}
.card{display:flex;flex-direction:column;border:1px solid var(--ink);background:var(--paper);color:var(--ink);
  cursor:pointer;text-align:left;width:100%}
.card:hover{color:var(--accent)}
.card--dashed{border-style:dashed}
.card__thumb{height:250px;background:var(--paper-2);border-bottom:1px solid var(--ink);position:relative;
  overflow:hidden;padding:24px;flex:none}
/* la miniatura ilustra, no grita: se atenúa en reposo y toma presencia al pasar el cursor */
.card__thumb > *{opacity:0.55}
.card:hover .card__thumb > *{opacity:1}
.card__thumb::after{content:"";position:absolute;left:0;right:0;bottom:0;height:56px;
  background:linear-gradient(to bottom,rgba(251,249,244,0),var(--paper-2));pointer-events:none}
.card--dashed .card__thumb{border-bottom-style:dashed}
.card__foot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;padding:20px 22px 22px;align-items:center}
.card__sector{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;color:var(--meta)}
.card__title{font-family:var(--serif);font-size:clamp(1.375rem,2.03vw,1.625rem);line-height:1.1;margin-top:8px}
.card__r{display:flex;align-items:center;justify-content:flex-end}
.card__fig{font-family:var(--serif);font-size:clamp(1.75rem,3.125vw,2.5rem);line-height:0.9;letter-spacing:-0.03em;white-space:nowrap}
.card__pill{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.pill{border:1px solid var(--ink);padding:4px 9px;font-family:var(--mono);font-size:0.6875rem;
  letter-spacing:0.1em;color:var(--ink);white-space:nowrap}
.pill--dashed{border-style:dashed}
.card__open{font-family:var(--mono);font-size:0.719rem}
.clickhint{display:flex;align-items:center;gap:10px;align-self:flex-end;font-family:var(--mono);
  font-size:var(--fs-mono);letter-spacing:0.04em;color:var(--meta)}
.clickhint u{border-bottom:1px solid var(--meta);padding-bottom:2px;text-decoration:none}
.clickhint .arrow{font-size:0.9375rem;color:var(--ink)}

/* ventana emergente: el mapa de ejemplo y cada caso del portfolio.
   Sale encima de la sección en vez de mandar al visitante al final de la página.
   Sin sombras: el fondo se resuelve oscureciendo y desenfocando lo de detrás. */
.modal{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
  padding:clamp(16px,7vh,80px) clamp(16px,5vw,88px)}
.modal[hidden]{display:none}
.modal__bg{position:absolute;inset:0;background:rgba(28,27,24,0.42);backdrop-filter:blur(3px);
  -webkit-backdrop-filter:blur(4px)}
/* la ventana no llena la pantalla: se ve página alrededor, para que el caso
   se lea como algo que sale encima y no como otra página a bocajarro.
   El canalón interior se estrecha, así el contenido no pierde ancho al encoger el marco. */
.modal__panel{position:relative;background:var(--paper);border:1px solid var(--ink);
  --gut:clamp(20px,2.6vw,36px);
  width:min(1120px,100%);max-height:100%;overflow:auto;overscroll-behavior:contain}
body.modal-abierto{overflow:hidden}

/* mapa de ejemplo */
.map{padding:44px var(--gut) 56px;display:flex;flex-direction:column;gap:36px}
.map__head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}
.map__h{font-family:var(--serif);font-size:clamp(1.625rem,2.66vw,2.125rem);line-height:1.05;letter-spacing:-0.02em;max-width:640px}
.map__hint{font-family:var(--mono);font-size:var(--fs-mono);color:var(--meta);text-align:right;line-height:1.7;white-space:nowrap}
.map__hint .fr{color:var(--accent)}
.map__flow{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));align-items:center}
.map__node{position:relative;display:flex;align-items:center;justify-content:center;min-height:100px;cursor:default}
.map__line{position:absolute;left:0;right:0;top:50%;height:1px;background:var(--ink)}
.map__box{position:relative;background:var(--paper);border:1px solid var(--ink);padding:14px 12px;
  font-family:var(--mono);font-size:0.719rem;line-height:1.4;text-align:center;width:108px;max-width:100%}
.map__ring{position:absolute;inset:-12px -10px;border:2px solid var(--accent);border-radius:50%;
  transform:rotate(-4deg);opacity:0;pointer-events:none;z-index:1}
.map__foot{min-height:72px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,64px);align-items:start}
.map__note{font-family:var(--serif);font-style:italic;font-size:clamp(1.25rem,2.19vw,1.75rem);line-height:1.25}
.map__txt{font-size:clamp(0.9375rem,1.25vw,1rem);line-height:1.55;color:var(--body);max-width:540px}
.map__list{display:none;flex-direction:column}
.map-section{display:none}
.map-section .map{padding-left:var(--gut);padding-right:var(--gut)}

/* ───────── sobre mí ───────── */
:is(#sobre-mi,#about) .wrap{padding-top:var(--pad-top);padding-bottom:0;display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,500px);gap:clamp(24px,5vw,64px);align-items:stretch;flex:1}
.sobre__l{display:flex;flex-direction:column;gap:24px;padding-bottom:clamp(20px,2.8vh,24px)}
.sobre__h{font-family:var(--serif);font-size:var(--fs-sobre);line-height:1;letter-spacing:-0.02em}
.sobre__txt{display:flex;flex-direction:column;gap:18px;font-size:var(--fs-body);line-height:1.6;color:var(--body);max-width:640px}
.sobre__foot{display:flex;flex-direction:column;gap:8px;margin-top:auto;
  font-family:var(--mono);font-size:var(--fs-mono);line-height:1.6;color:var(--meta)}
.btn-line{color:var(--ink);border:1px solid var(--ink);padding:9px 15px;align-self:flex-start;
  letter-spacing:0.08em;margin-top:6px}
.btn-line:hover{background:var(--ink);color:var(--paper)}
/* el retrato llena el alto de la columna de texto. Va en un contenedor propio
   y en absoluto para que la foto no estire la fila: la altura la marca el texto.
   BYNCP6 son 747×1200, así que crecer no le cuesta nitidez. */
.sobre__foto{position:relative;min-height:0}
.sobre__img{position:absolute;right:0;bottom:0;height:100%;max-height:600px;width:auto;max-width:100%;
  object-fit:contain;object-position:bottom right}

/* ───────── contacto ───────── */
:is(#contacto,#contact) .wrap{padding-top:var(--pad-bot);padding-bottom:var(--pad-top);display:grid;
  grid-template-columns:minmax(0,auto) minmax(0,420px);gap:clamp(24px,8.125vw,104px);
  justify-content:center;align-items:center;flex:1}
.contacto__h{font-family:var(--serif);font-size:var(--fs-contacto);line-height:0.92;letter-spacing:-0.03em}
.contacto__r{display:flex;flex-direction:column;gap:24px}
.contacto__p{font-size:var(--fs-lead);line-height:1.55;color:var(--body)}
.contacto__cta{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
/* el correo se copia con un clic: subrayado fino para que se lea como algo que se puede tocar */
.copy-mail{cursor:pointer;text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:4px}
.copy-mail:hover{color:var(--ink);text-decoration-color:var(--ink)}
.copy-ok{min-width:8ch}

/* ───────── footer ───────── */
.footer{display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding-top:24px;padding-bottom:24px;border-top:1px solid var(--rule);
  font-family:var(--mono);font-size:0.719rem;color:var(--meta)}
.footer .logo{--logo-h:16px;opacity:0.8}

/* ═════════ CASOS ═════════ */
/* la página de caso vive en la misma columna de 1280 que el resto de la web */
.caso{background:var(--paper);color:var(--ink);max-width:var(--maxw);margin:0 auto}
.caso__head{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr) auto;
  gap:clamp(18px,2.5vw,32px);padding:clamp(28px,3.1vw,40px) var(--gut) 28px;align-items:start}
.caso__fig{font-family:var(--serif);font-size:clamp(2.25rem,4.375vw,3.5rem);line-height:0.9;letter-spacing:-0.03em}
.caso__fig .arrow{font-size:0.5em;letter-spacing:0;padding:0 12px}
.caso__figlbl{font-family:var(--mono);font-size:var(--fs-mono);letter-spacing:0.08em;color:var(--meta);margin-top:10px}
.caso__t{font-family:var(--serif);font-size:clamp(1.75rem,3.125vw,2.5rem);line-height:1.08;letter-spacing:-0.015em}
.caso__sub{font-size:var(--fs-lead);line-height:1.55;color:var(--body);max-width:700px;margin-top:14px}
.caso__link{font-family:var(--mono);font-size:var(--fs-mono);color:var(--meta);margin-top:10px}
.caso__link a{text-decoration:underline;text-underline-offset:3px}
.caso__status{display:flex;justify-content:flex-end;align-items:flex-start;gap:16px;padding-top:14px}
.caso__x{font-size:1.25rem;line-height:1;padding:5px 8px;cursor:pointer;color:var(--meta)}
.caso__x:hover{color:var(--accent)}
.caso__box{margin:0 var(--gut);border:1px solid var(--ink);background:var(--paper-2);
  padding:24px clamp(18px,2.5vw,32px) 22px;display:flex;flex-direction:column;gap:22px}
.caso__box--plain{background:transparent}
.caso__desk{display:none}
/* en el mapa del móvil no hay cursor: sin «hover over a friction», queda la leyenda */
#mapa-movil .map__hover,#mapa-movil .map__hover + br{display:none}
#mapa-movil .map__hint .fr{white-space:nowrap}
.caso__cols{padding:44px var(--gut) 24px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(20px,3.1vw,40px);align-items:start}
.caso__col{display:flex;flex-direction:column;gap:14px;border-top:1px solid var(--ink);padding-top:20px}
.caso__col .lbl{font-family:var(--mono);font-size:var(--fs-mono);color:var(--meta)}
.caso__col h3{font-family:var(--serif);font-size:clamp(1.375rem,2.19vw,1.75rem);line-height:1.15}
.caso__col p{font-size:clamp(0.9375rem,1.25vw,1rem);line-height:1.55;color:var(--body)}
.ficha{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 20px;
  font-family:var(--mono);font-size:var(--fs-mono);line-height:1.5;color:var(--body)}
.ficha dt{color:var(--meta)}
.ficha dd{margin:0}
.ficha a{text-decoration:underline;text-underline-offset:3px}
.caso__end{padding:0 var(--gut)}
/* pie de cada página de caso: volver y pasar al siguiente, sobre el filete final */
.caso-nav{display:flex;justify-content:space-between;align-items:baseline;gap:16px 32px;flex-wrap:wrap;
  padding-top:24px;padding-bottom:56px;font-family:var(--mono);font-size:var(--fs-mono);letter-spacing:0.04em}
.caso-nav a{color:var(--meta)}
.caso-nav a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.caso__end div{border-bottom:1px solid var(--ink)}

.blk{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}
.blk__l{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.blk__k{font-family:var(--mono);font-size:0.75rem;letter-spacing:0.12em}
.blk__k--red{color:var(--accent)}
.blk__t{font-family:var(--serif);font-size:clamp(1.375rem,2.03vw,1.625rem);line-height:1.1}
.blk__m{font-family:var(--mono);font-size:0.719rem;color:var(--meta)}
.italic-note{font-family:var(--serif);font-style:italic;font-size:clamp(1.1875rem,1.72vw,1.375rem);line-height:1.3}

.big-btn{border:1px solid var(--ink);padding:16px 24px;font-size:clamp(1rem,1.33vw,1.125rem);font-weight:500;
  cursor:pointer;display:flex;justify-content:center;align-items:center;gap:20px;text-align:center;width:100%;
  background:var(--ink);color:var(--paper)}
.big-btn[data-on="true"]{background:var(--paper);color:var(--ink)}
.big-btn:hover{background:var(--accent);border-color:var(--accent);color:var(--paper)}

.tabs{display:flex;border-bottom:1px solid var(--ink);flex-wrap:wrap}
.tab{padding:12px 22px;font-family:var(--mono);font-size:0.75rem;letter-spacing:0.08em;cursor:pointer;
  background:transparent;color:var(--ink);border:1px solid var(--ink);border-bottom:none;margin-bottom:-1px;white-space:nowrap}
.tab[aria-selected="true"]{background:var(--ink);color:var(--paper)}
.tabs__meta{margin-left:auto;align-self:flex-end;padding-bottom:10px;font-family:var(--mono);
  font-size:0.719rem;color:var(--meta)}

/* caso 01 */
.c1-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;border-top:1px solid var(--rule);padding-top:16px}
.c1-stat{display:flex;flex-direction:column;gap:5px}
.c1-stat b{font-family:var(--serif);font-weight:400;font-size:clamp(1.5rem,2.34vw,1.875rem);line-height:1}
.c1-stat span{font-family:var(--mono);font-size:0.6875rem;line-height:1.5;color:var(--meta)}
.tray{display:flex;flex-wrap:wrap;gap:8px;min-height:44px;align-items:center}
.tray__i{border:1px solid var(--ink);padding:9px 12px;font-family:var(--mono);font-size:0.719rem;
  line-height:1.4;background:var(--paper);cursor:default}
.gantt__hd{display:grid;grid-template-columns:210px minmax(0,1fr);padding:6px 0}
.gantt__hd .h{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));font-family:var(--mono);font-size:0.6875rem;color:var(--meta)}
.gantt__row{display:grid;grid-template-columns:210px minmax(0,1fr);border-top:1px solid var(--rule);min-height:36px;align-items:center}
.gantt__who{display:flex;flex-direction:column;gap:1px;padding:2px 12px 2px 0;line-height:1.2;white-space:nowrap}
.gantt__who b{font-weight:300;font-size:0.844rem}
.gantt__who span{font-family:var(--mono);font-size:0.6875rem;color:var(--meta)}
.gantt__lane{position:relative;height:36px;background-image:repeating-linear-gradient(to right,var(--rule-soft) 0 1px,transparent 1px 11.111%)}
.gantt__off{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(135deg,transparent 0 5px,var(--rule-soft) 5px 6px)}
.gantt__travel{position:absolute;top:17px;border-top:1.5px dashed #736D61}
.gantt__task{position:absolute;top:5px;height:26px;border:1px solid var(--ink);background:var(--paper);
  font-family:var(--mono);font-size:0.6875rem;line-height:24px;padding:0 8px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;cursor:default}
/* trabajos de media hora: la barra mide ~48 px y el nombre («Llaves», «Keys») necesita casi todo el ancho */
.gantt__task--short{padding:0 2px;text-align:center}
.legend{display:flex;gap:24px;flex-wrap:wrap;font-family:var(--mono);font-size:0.6875rem;color:var(--meta);
  border-top:1px solid var(--rule);padding-top:14px}
.legend i{display:inline-block;width:22px;height:10px;vertical-align:middle;margin-right:8px;font-style:normal}
.weeks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.week{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--ink);padding-top:12px}
.week .lbl{font-family:var(--mono);font-size:0.6875rem;color:var(--meta)}
.week .pct{font-family:var(--serif);font-size:clamp(1.75rem,2.8vw,2.25rem);line-height:0.9;letter-spacing:-0.03em}
.week .bar{height:10px;background:var(--rule-soft);position:relative}
.week .bar i{position:absolute;left:0;top:0;bottom:0;display:block}
.week .bar u{position:absolute;left:85%;top:-4px;bottom:-4px;width:1px;background:var(--ink)}
.week .note{font-family:var(--mono);font-size:0.6875rem;line-height:1.5}
.whatif{display:flex;align-items:center;gap:10px;cursor:pointer;font-family:var(--mono);font-size:0.719rem;color:var(--ink)}
.whatif i{width:14px;height:14px;border:1.5px solid var(--ink);display:inline-block;flex:none}

/* caso 02 */
.phases{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:12px}
.phase{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--ink);padding-top:12px;cursor:default}
.phase span{font-family:var(--mono);font-size:0.6875rem;line-height:1.4;min-height:28px}
.phase .tools{display:flex;flex-wrap:wrap;gap:4px}
.phase .tools i{width:13px;height:13px;display:block;border:1px solid var(--rule-faint)}
/* pie del diagnóstico: la nota y las cuatro cifras en una sola franja, en vez de
   apilar las cifras en columna y dejar un hueco blanco bajo la nota */
.diag__foot{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,620px);gap:44px;align-items:center;
  border-top:1px solid var(--rule);padding-top:20px}
.figures{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.figure{display:flex;flex-direction:column;gap:6px}
.figure span{font-family:var(--mono);font-size:0.719rem;color:var(--meta)}
.figure b{font-family:var(--serif);font-weight:400;font-size:clamp(1.5rem,2.34vw,1.875rem);line-height:1;letter-spacing:-0.02em}
.spine{position:relative;height:1px;background:var(--ink)}
.spine i{position:absolute;top:-4px;width:9px;height:9px;background:var(--ink)}
.spine u{position:absolute;right:-1px;top:-4.5px;border-top:5px solid transparent;
  border-bottom:5px solid transparent;border-left:9px solid var(--ink)}
.horizons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.horizon{display:flex;flex-direction:column;gap:6px;padding-bottom:14px;font-family:var(--mono);
  font-size:0.6875rem;letter-spacing:0.1em}
.projects{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding-top:20px;align-items:start}
.projects > div{display:flex;flex-direction:column;gap:12px}
.project{border:1px solid var(--ink);background:var(--paper);padding:16px 18px;display:flex;
  flex-direction:column;gap:8px;cursor:default}
.project .r{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  font-family:var(--mono);color:var(--meta)}
.project .r .n{font-size:0.6875rem}
.project .r .tag{font-size:0.6875rem;letter-spacing:0.08em}
.project b{font-family:var(--serif);font-weight:400;font-size:clamp(1.25rem,1.72vw,1.375rem);line-height:1.15}

/* caso 03 */
.sources{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.source{display:flex;flex-direction:column;gap:10px;border:1px solid var(--ink);background:var(--paper);
  color:var(--ink);padding:16px 18px;cursor:default}
.source .st,.source .wh{font-family:var(--mono);font-size:0.6875rem;color:var(--meta)}
.source .st{letter-spacing:0.08em}
.source .wh{line-height:1.5}
.source .nm{font-size:clamp(0.9375rem,1.33vw,1.0625rem);line-height:1.25}
.source[data-on="true"]{background:var(--ink);color:var(--paper)}
.source[data-on="true"] .st,.source[data-on="true"] .wh{color:var(--on-ink-meta)}
.flow4{display:grid;grid-template-columns:minmax(0,1fr) 60px minmax(0,1fr) minmax(0,1fr);gap:0 16px;align-items:stretch}
.flow4 .c{display:flex;flex-direction:column;gap:6px;justify-content:center}
.flow4 .o{display:flex;flex-direction:column;gap:6px;border-top:2px solid var(--ink);padding:8px 0}
.flow4 .k{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.1em;color:var(--meta)}
.flow4 .o .k{color:var(--ink)}
.flow4 .t{font-size:0.9375rem;line-height:1.4;color:var(--body)}
.flow4 .o .t{color:var(--ink)}
.arrow-h{display:flex;align-items:center}
.arrow-h i{width:100%;height:1px;background:var(--ink);position:relative;display:block}
.arrow-h i::after{content:"";position:absolute;right:-1px;top:-4px;border-top:4.5px solid transparent;
  border-bottom:4.5px solid transparent;border-left:8px solid var(--ink)}
.panel{display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--ink)}
.panel__top{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
  padding:12px 20px;border-bottom:1px solid var(--ink)}
.panel__top .t{font-family:var(--serif);font-size:1.375rem}
.panel__top .m{font-family:var(--mono);font-size:0.6875rem;color:var(--meta);margin-left:14px}
.panel__filters{display:flex;gap:8px}
.pfilter{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;padding:6px 11px;
  border:1px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer}
.pfilter[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.panel__hd,.panel__row{display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr) 130px 100px;gap:20px}
.panel__hd{padding:10px 20px;font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;
  color:var(--meta);border-bottom:1px solid var(--rule-soft)}
.panel__row{padding:8px 20px;border-bottom:1px solid var(--rule-soft);align-items:center}
.panel__row .nm{font-size:0.9375rem}
.bars{display:flex;flex-direction:column;gap:4px}
.bars .b{height:8px;background:var(--rule-soft);position:relative}
.bars .b i{position:absolute;left:0;top:0;bottom:0;display:block}
.bars .b u{position:absolute;top:-6px;bottom:-6px;width:1px;background:var(--ink)}
.num{text-align:right;font-family:var(--mono);font-size:0.781rem}
.kpis{display:grid;grid-template-columns:minmax(0,200px) repeat(3,minmax(0,1fr));gap:24px;
  align-items:stretch;border-top:1px solid var(--ink);padding-top:12px}
/* las cifras quedan alineadas abajo aunque una etiqueta ocupe dos líneas */
.kpi{display:flex;flex-direction:column;justify-content:space-between;gap:8px}
.kpi .l{font-family:var(--mono);font-size:0.6875rem;color:var(--meta)}
.kpi .v{font-family:var(--serif);font-size:clamp(1.75rem,2.81vw,2.25rem);line-height:1;letter-spacing:-0.02em}

/* caso 04 */
.flowmap{position:relative;width:1096px;height:480px;max-width:100%}
.flowmap svg{position:absolute;left:0;top:0;width:100%;height:100%}
.fm-lbl{position:absolute;font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.1em;color:var(--ink);white-space:nowrap}
.fm-box{position:absolute;border:1px solid var(--ink);background:var(--paper);color:var(--ink);
  display:flex;align-items:center;padding:0 14px;font-size:0.875rem;cursor:default}
.fm-box--col{flex-direction:column;justify-content:center;align-items:flex-start;gap:4px;padding:0 16px}
.fm-box .k{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.1em;color:var(--meta)}
.fm-box .s{font-size:0.781rem;line-height:1.35}
.fm-ai{position:absolute;left:240px;top:269px;width:170px;height:96px;border:1px solid var(--ink);
  background:var(--ink);color:var(--paper);display:flex;flex-direction:column;justify-content:center;
  gap:6px;padding:0 16px;cursor:default}
.fm-ai .k{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.1em;color:var(--on-ink-meta)}
.fm-ai .n{font-family:var(--serif);font-size:1.3125rem;line-height:1.1}
.fm-ai .s{font-size:0.781rem;line-height:1.35;color:var(--on-ink-meta)}
/* los cuatro pilares van en 2×2: en cuatro columnas de 95 px «Precualificación» no cabía.
   La caja sigue centrada en y=240, donde llegan las curvas de los canales y salen las de las vistas */
.fm-crm{position:absolute;left:480px;top:100px;width:400px;height:280px;border:1px solid var(--ink);
  background:var(--paper);display:flex;flex-direction:column}
.fm-crm__top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:12px 16px 0;
  font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.1em;color:var(--meta)}
.fm-crm__grid{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));padding:8px 8px 10px}
.pillar{display:flex;flex-direction:column;gap:6px;padding:10px;border-left:1px solid var(--rule-soft);cursor:default}
.pillar:nth-child(odd){border-left-color:transparent}
.pillar:nth-child(n+3){border-top:1px solid var(--rule-soft)}
.pillar .n{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;color:var(--meta)}
.pillar .t{font-family:var(--serif);font-size:1.1875rem;line-height:1.1}
.pillar .s{font-size:0.719rem;line-height:1.4;color:var(--meta)}

/* caso 05 */
.c5{display:grid;grid-template-columns:minmax(0,460px) 120px minmax(0,1fr);align-items:stretch}
.c5__form,.c5__ticket{border:1px solid var(--ink);background:var(--paper);display:flex;flex-direction:column}
.c5__hd{display:flex;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--ink);
  font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;color:var(--meta)}
.c5__sec{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border-bottom:1px solid var(--rule-soft)}
.c5__sec .r{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  font-family:var(--mono);font-size:0.6875rem;color:var(--meta)}
.c5__sec .r .tick{letter-spacing:0.06em}
.c5__frags{font-size:0.906rem;line-height:1.5;display:flex;flex-wrap:wrap;gap:0 4px}
.c5__frags span{font-style:italic;border-bottom:1px solid transparent;cursor:default;padding:0 1px}
.c5__mid{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:0 12px}
.c5__mid i{width:1px;flex:1;background:var(--rule);display:block}
.c5__btn{width:84px;height:84px;border:1px solid var(--ink);background:var(--ink);color:var(--paper);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;text-align:center;flex:none}
.c5__btn[data-on="true"]{background:var(--paper);color:var(--ink)}
.c5__btn:hover{background:var(--accent);border-color:var(--accent);color:var(--paper)}
.c5__btn b{font-size:1.375rem;line-height:1;font-weight:400}
.c5__btn span{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;line-height:1.3}
.c5__crew{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px;padding:9px 16px;
  border-bottom:1px solid var(--rule-soft);align-items:start}
.c5__crew > b{font-family:var(--mono);font-weight:400;font-size:0.6875rem;letter-spacing:0.06em;line-height:1.5}
.c5__items{display:flex;flex-direction:column;gap:5px}
.c5__item{display:flex;justify-content:space-between;gap:12px;font-size:0.844rem;line-height:1.45;cursor:default}
.c5__item .ref{font-family:var(--mono);font-size:0.6875rem;color:var(--meta);white-space:nowrap}
.c5__empty{font-size:0.813rem;color:var(--meta)}
.c5__foot{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px);gap:40px;align-items:start;
  border-top:1px solid var(--rule);padding-top:18px;min-height:60px}
.c5__safe{font-family:var(--mono);font-size:0.6875rem;line-height:1.7;color:var(--meta);text-align:right}

/* caso 06 */
.releases{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.release{display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--ink);padding-top:14px;cursor:default}
.release .mo{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;color:var(--meta)}
.release .th{font-family:var(--serif);font-size:clamp(1.25rem,1.72vw,1.375rem);line-height:1.1}
.release .its{display:flex;flex-wrap:wrap;gap:6px}
.release .its span{border:1px solid var(--ink);background:var(--paper);padding:4px 9px;
  font-family:var(--mono);font-size:0.6875rem;line-height:1.4}
.cycle{display:grid;grid-template-columns:minmax(0,600px) minmax(0,1fr);gap:40px;align-items:start}
.cycle__d{position:relative;width:600px;height:340px;max-width:100%;border:1px solid var(--rule);
  background:var(--paper);overflow:hidden}
.cycle__d svg{position:absolute;left:0;top:0;width:100%;height:100%}
.cycle__lbl{position:absolute;left:20px;top:16px;font-family:var(--mono);font-size:0.6875rem;
  letter-spacing:0.1em;color:var(--meta)}
.cnode{position:absolute;border:1px solid var(--ink);background:var(--paper);color:var(--ink);
  padding:12px 14px;display:flex;flex-direction:column;gap:4px;cursor:default}
.cnode b{font-family:var(--serif);font-weight:400;font-size:1.1875rem;line-height:1.1}
.cnode span{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.06em;color:#736D61}
.cnode[data-fill="true"]{background:var(--ink);color:var(--paper)}
.cnode[data-fill="true"] span{color:var(--on-ink-meta)}
.cmark{position:absolute;font-family:var(--mono);font-size:0.6875rem;line-height:1.4;
  letter-spacing:0.04em;color:var(--meta)}
.facts{display:flex;flex-direction:column}
.fact{display:flex;flex-direction:column;gap:4px;padding:13px 0;border-top:1px solid var(--rule)}
.fact .l{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;color:var(--meta)}
.fact .t{font-size:0.9375rem;line-height:1.45;color:var(--ink)}

/* caso 07 */
.c7-notice{margin:0 var(--gut);border-bottom:1px solid var(--rule);padding:16px 0;display:flex;
  justify-content:space-between;align-items:baseline;font-family:var(--mono);font-size:0.6875rem;
  letter-spacing:0.08em;color:var(--meta)}
.c7-hint{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:0.6875rem;
  letter-spacing:0.04em;color:var(--meta);margin-bottom:-14px}
.c7-hint u{border-bottom:1px solid var(--meta);padding-bottom:2px;text-decoration:none}
.c7-hint .a{font-size:0.875rem;color:var(--ink)}
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.step{display:flex;flex-direction:column;gap:10px;padding:12px 14px 14px 0;border-top:2px solid var(--rule);
  cursor:pointer;text-align:left}
.step:hover{background:#F1EDE3}
.step .r{display:flex;align-items:baseline;gap:8px}
.step .n{font-family:var(--mono);font-size:0.6875rem;color:var(--meta)}
.step .nm{font-family:var(--serif);font-size:1.25rem;line-height:1.1;color:var(--meta)}
.c7-grid{display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:36px;align-items:stretch}
.c7-in,.c7-out{border:1px solid var(--rule);display:flex;flex-direction:column}
.c7-hd{padding:12px 16px;border-bottom:1px solid var(--rule);font-family:var(--mono);font-size:0.6875rem;
  letter-spacing:0.08em;color:var(--meta);display:flex;justify-content:space-between;gap:12px}
.c7-hd .tagd{background:var(--ink);color:var(--paper);padding:3px 8px;letter-spacing:0.06em}
.c7-body{padding:20px 16px;display:flex;flex-direction:column;gap:14px;flex:1}
.c7-msg{font-size:0.969rem;line-height:1.6;font-style:italic;display:flex;flex-wrap:wrap;gap:0 4px}
.c7-msg span{border-bottom:1px solid transparent;padding:0 1px}
.c7-out[data-inv="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.c7-out[data-inv="true"] .c7-hd{color:var(--on-ink-meta);border-bottom-color:var(--body)}
.c7-rows{padding:16px;display:flex;flex-direction:column;gap:10px;flex:1}
.c7-row{display:grid;grid-template-columns:110px minmax(0,1fr) 120px;gap:14px;align-items:baseline;
  padding:8px 0;border-bottom:1px solid var(--rule)}
.c7-out[data-inv="true"] .c7-row{border-bottom-color:var(--body)}
.c7-row .k{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.06em;color:var(--meta)}
.c7-out[data-inv="true"] .c7-row .k{color:var(--on-ink-meta)}
.c7-row .v{font-size:0.906rem;line-height:1.4}
.c7-row .nt{font-family:var(--mono);font-size:0.6875rem;text-align:right;color:var(--meta)}
.c7-out[data-inv="true"] .c7-row .nt{color:var(--on-ink-meta)}
.c7-actions{display:flex;gap:10px;margin-top:auto;padding-top:8px;flex-wrap:wrap}
.c7-approve{flex:1;border:1px solid var(--ink);background:var(--ink);color:var(--paper);padding:12px 16px;
  text-align:center;font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.1em;cursor:pointer}
.c7-approve:hover{background:var(--accent);border-color:var(--accent)}
.c7-fix{border:1px solid var(--ink);color:var(--ink);padding:12px 16px;font-family:var(--mono);
  font-size:0.6875rem;letter-spacing:0.1em}
.c7-next{margin-top:auto;align-self:flex-end;border:1px solid var(--ink);color:var(--ink);
  background:transparent;padding:10px 16px;font-family:var(--mono);font-size:0.6875rem;
  letter-spacing:0.1em;cursor:pointer}
.c7-out[data-inv="true"] .c7-next{border-color:var(--paper);color:var(--paper)}

/* filas de caso en móvil */
.caso-rows{display:none;flex-direction:column}
.caso-row{display:flex;flex-direction:column;gap:12px;padding:24px 0;border-top:1px solid var(--rule);color:var(--ink)}
.caso-row:first-child{border-top-color:var(--ink)}
.caso-row .fig{font-family:var(--serif);font-size:clamp(2.75rem,16vw,4rem);line-height:0.9;letter-spacing:-0.04em}
.caso-row .sc{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;color:var(--meta)}
.caso-row .kl{font-family:var(--mono);font-size:0.6875rem;letter-spacing:0.08em;color:var(--meta)}
.caso-row .tt{font-family:var(--serif);font-size:1.625rem;line-height:1.1;margin-top:6px}
.caso-row .bl{font-size:0.9375rem;line-height:1.5;color:var(--body)}
.caso-row .st{font-family:var(--mono);font-size:0.6875rem;color:var(--meta)}
.caso-row .st b{color:var(--ink);font-weight:400}


/* ═════════ RITMO VERTICAL ═════════
   Sin alturas forzadas: cada sección mide lo que pide su contenido, con el mismo
   aire arriba y abajo. Obligar a cada sección a llenar la ventana solo funciona
   para una altura de pantalla concreta, y no existe una altura estándar. */
@media (min-width:901px){
  /* barra fina: se ve mejor y deja más sitio al contenido */
  .nav__in{padding-top:14px;padding-bottom:14px}
  .nav .btn-ink{padding:8px 16px}
  /* el cierre necesita alto suficiente para poder subir bajo el nav al pulsar
     «¡Hablemos!»; si no, la página se acaba antes y el ancla se queda a medias */
  :is(#contacto,#contact){min-height:calc(100svh - var(--nav-h) - 3.8rem)}
  /* Acompañar sí llena la ventana: su contenido es corto y dejaba asomar una franja
     de la sección oscura siguiente, que parte la composición. Y la foto a sangre
     gana altura sin perder nitidez (con cover manda el ancho, no el alto). */
  :is(#acompanamiento,#support){min-height:calc(100svh - var(--nav-h))}
  /* Sobre mí, igual: dejaba asomar el arranque de Contacto. Se centra en vez de
     estirarse, porque estirando se abrían huecos enormes sobre la foto y el pie. */
  :is(#sobre-mi,#about){min-height:calc(100svh - var(--nav-h))}
  /* La rejilla ocupa toda la altura para que la foto se apoye en el filete de
     abajo; el texto se centra por su cuenta y así no se abren huecos. */
  :is(#sobre-mi,#about) .wrap{flex:1}
  .sobre__l{align-self:center}
}

/* ═════════ responsive ═════════ */
/* tarjetas de «qué construyo» a 2 columnas por debajo de 1200: con 4 columnas estrechas los textos pasan de 3 líneas */
@media (max-width:1200px){.build{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:1080px){
  .niv__grid{grid-template-columns:minmax(0,1fr);gap:28px}
  :is(#sobre-mi,#about) .wrap{grid-template-columns:minmax(0,1fr) minmax(0,380px)}
  .caso__head{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}
  .caso__status{grid-column:2;justify-content:flex-start;order:-1}
  .c5{grid-template-columns:minmax(0,1fr)}
  .c5__mid{flex-direction:row;padding:16px 0}
  .c5__mid i{width:auto;height:1px;flex:1}
  .cycle{grid-template-columns:minmax(0,1fr)}
  .flow4{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
  .arrow-h{display:none}
  .c7-grid{grid-template-columns:minmax(0,1fr)}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .phases{grid-template-columns:repeat(4,minmax(0,1fr))}
  .diag__foot{grid-template-columns:minmax(0,1fr);gap:20px}
}

@media (max-width:900px){
  .thumb{height:92px}
  .build__body{min-height:0}
  .nav__links a:not(.btn-ink),.nav__en{display:none}
  .nav__burger{display:flex}
  .nav.is-open .nav__links{position:absolute;left:0;right:0;top:100%;background:var(--paper);
    border-bottom:1px solid var(--ink);flex-direction:column;align-items:flex-start;
    gap:0;padding:8px var(--gut) 20px}
  .nav.is-open .nav__links a:not(.btn-ink),.nav.is-open .nav__en{display:block;padding:12px 0;
    border-bottom:1px solid var(--rule);width:100%;font-size:1rem}
  .nav.is-open .nav__links .btn-ink{margin-top:14px}
  .nav.is-open .nav__burger span:first-child{transform:translateY(3px) rotate(45deg)}
  .nav.is-open .nav__burger span:last-child{transform:translateY(-3px) rotate(-45deg)}
  /* home con body.home-lite: sin «Let's talk!» en la barra cerrada (ya está en el hero); sigue dentro del menú abierto */
  .home-lite .nav:not(.is-open) .nav__links .btn-ink{display:none}
  .home-lite .nav:not(.is-open) .nav__links{margin-left:auto}
  .home-lite .nav:not(.is-open) .nav__links .nav__en{display:inline-block}
  .home-lite .nav.is-open .nav__links .nav__en{display:none}
  /* LinkedIn dentro del menú abierto: fila normal como las demás, sin recuadro */
  .home-lite .nav.is-open .nav__links .nav__social{border:0;border-bottom:1px solid var(--rule);font-family:var(--sans);
    font-size:1rem;letter-spacing:0;line-height:inherit;background:none;color:var(--ink)}
  /* casos con body.caso-lite: el cambio de idioma vuelve a la barra */
  .caso-lite .nav__links .nav__en{display:inline-block}

  .section--full{min-height:0}
  .hero__in{grid-template-columns:minmax(0,1fr);min-height:0;padding-bottom:0}
  .hero__stripes{background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 35px,var(--stripe) 35px,var(--stripe) 36px)}
  .hero__sign{display:none}
  .hero__portrait{position:static;height:clamp(280px,72vw,340px);margin-left:auto;
    margin-right:calc(-1 * var(--gut) - 10px);margin-top:8px}
  .fases{grid-template-columns:minmax(0,1fr);gap:28px}
  :is(#acompanamiento,#support){grid-template-columns:minmax(0,1fr)}
  .acomp__l{padding-left:var(--gut);padding-right:var(--gut)}
  .acomp__img{min-height:56vw}
  .cards{grid-template-columns:minmax(0,1fr)}
  :is(#sobre-mi,#about) .wrap{grid-template-columns:minmax(0,1fr)}
  .sobre__foto{position:static}
  .sobre__img{position:static;width:auto;height:clamp(300px,80vw,400px);margin-left:auto;margin-right:calc(-1 * var(--gut) - 10px);display:block}
  :is(#contacto,#contact) .wrap{grid-template-columns:minmax(0,1fr);justify-content:stretch}
  .caso__cols{grid-template-columns:minmax(0,1fr);gap:28px;padding-top:36px}
  .c1-stats,.weeks{grid-template-columns:repeat(2,minmax(0,1fr))}
  .phases{grid-template-columns:repeat(2,minmax(0,1fr))}
  .figures{grid-template-columns:repeat(2,minmax(0,1fr))}
  .projects,.horizons,.releases{grid-template-columns:minmax(0,1fr)}
  .sources{grid-template-columns:repeat(2,minmax(0,1fr))}
  .steps{grid-template-columns:minmax(0,1fr)}
  .panel__hd,.panel__row{grid-template-columns:minmax(0,1fr) 90px 80px;gap:12px}
  .panel__hd span:nth-child(2),.panel__row .bars{display:none}
  .kpis{grid-template-columns:minmax(0,1fr)}
  .map__flow{display:none}
  .map__list{display:flex}
  .map__foot{grid-template-columns:minmax(0,1fr);gap:20px}
  .map__hint{white-space:normal}
  .c5__foot{grid-template-columns:minmax(0,1fr);gap:20px}
  .c5__safe{text-align:left}
  .legend{gap:12px}
  .map-section{display:block}
  .btn-map{display:none}
  /* portfolio en móvil: filas enlazadas, no despliegue en línea */
  .cards,.filters,.clickhint{display:none}
  .caso-rows{display:flex}
  /* niveles: acordeón */
  .niv__list,.niv__panel{display:none}
  .niv__acc{display:flex;flex-direction:column;border-top:1px solid var(--on-ink-rule)}
  .niv__accitem{border-bottom:1px solid var(--on-ink-rule)}
  .niv__accbtn{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;align-items:baseline;
    padding:16px 0;min-height:44px;cursor:pointer;width:100%;color:var(--paper);background:transparent}
  .niv__accbtn .n{font-family:var(--mono);font-size:0.6875rem;color:var(--on-ink-meta)}
  .niv__accbtn .c{display:flex;flex-direction:column;gap:4px}
  .niv__accbtn .name{font-family:var(--serif);font-size:1.5rem;line-height:1.1}
  .niv__accbtn .tag{font-family:var(--mono);font-size:0.6875rem;color:var(--on-ink-meta)}
  .niv__accbody{display:flex;flex-direction:column;gap:14px;border:1px solid var(--paper);
    padding:18px;margin:0 0 22px}
  .niv__accbody .k{font-family:var(--mono);font-size:0.75rem;letter-spacing:0.06em;color:var(--on-ink-meta);
    padding-bottom:12px;border-bottom:1px solid var(--on-ink-rule-2)}
  .niv__accbody .d{font-size:0.9375rem;line-height:1.55;color:var(--on-ink-body)}
  .niv__accbody .e{font-family:var(--serif);font-style:italic;font-size:1.1875rem;line-height:1.3;
    border-left:1px solid rgba(246,243,236,0.4);padding-left:14px}
  .niv__accbody .t{font-family:var(--mono);font-size:0.6875rem;color:var(--on-ink-meta)}
}

@media (max-width:620px){
  .build,.c1-stats,.weeks,.sources,.phases{grid-template-columns:minmax(0,1fr)}
  .build__t{min-height:0}
  .build__t .l{display:inline}
  .sechead{flex-direction:column;align-items:flex-start}
  .sechead__r{text-align:left}
  .caso__head{grid-template-columns:minmax(0,1fr);padding-top:32px}
  .caso__status{grid-column:1;justify-content:space-between;width:100%}
  .gantt__hd,.gantt__row{grid-template-columns:110px minmax(0,1fr)}
  .c5__crew{grid-template-columns:minmax(0,1fr);gap:6px}
  .c7-row{grid-template-columns:80px minmax(0,1fr);gap:8px}
  .c7-row .nt{grid-column:2;text-align:left}
  .caso__box{padding:20px 16px}
  /* páginas de caso con body.caso-lite: en móvil sin demo interactiva, solo la nota */
  .caso-lite .caso__box{display:none}
  .caso-lite .caso__desk{display:block;font-family:var(--mono);font-size:var(--fs-mono);letter-spacing:0.04em;color:var(--ink);
    margin:4px var(--gut) 0;padding:14px 16px;border:1px solid var(--ink);background:var(--paper-2)}
}

@media print{.nav,.caso-nav{display:none}}
