@charset "UTF-8";
/* ===========================================================
   Portada — capa de componentes con movimiento.
   Se carga solo en index.html, encima de style.css.
   Todo el movimiento se apaga con prefers-reduced-motion.
   =========================================================== */

/* ---------- Revelado al hacer scroll (solo si hay JS) ---------- */
.js [data-reveal] {
  opacity: 0; transform: translateY(34px);
  transition: opacity .9s cubic-bezier(.2,.8,.2,1), transform .9s cubic-bezier(.2,.8,.2,1);
  transition-delay: var(--d, 0s);
}
.js [data-reveal="left"]  { transform: translateX(-46px); }
.js [data-reveal="right"] { transform: translateX(46px); }
.js [data-reveal="zoom"]  { transform: scale(.93); }
.js [data-reveal].in { opacity: 1; transform: none; }

/* ---------- Grano sobre fondos oscuros ---------- */
.grain { position: relative; isolation: isolate; }
.grain::before {
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  opacity: .10; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* ---------- Cabecera sobre el hero ---------- */
.site-header.over { background: transparent; border-bottom-color: transparent; backdrop-filter: none; transition: background .4s ease, border-color .4s ease; }
.site-header.over.scrolled { background: rgba(17,17,16,.9); border-bottom-color: rgba(255,255,255,.07); backdrop-filter: saturate(170%) blur(12px); }

/* =========================== HERO =========================== */
.hx {
  position: relative; overflow: hidden; isolation: isolate;
  background: #111110; color: #D3D1CE; text-align: center;
  padding: 118px 0 18px; margin-top: -74px;          /* la cabecera flota encima */
}
.hx .glow { position: absolute; border-radius: 50%; filter: blur(100px); pointer-events: none; z-index: -1; }
.hx .g1 { width: 620px; height: 620px; background: rgba(221,216,207,.15); top: -260px; left: 50%; margin-left: -310px; animation: deriva 15s ease-in-out infinite; }
.hx .g2 { width: 460px; height: 460px; background: rgba(88,86,83,.38); bottom: 60px; left: -160px; animation: deriva 19s ease-in-out infinite reverse; }
.hx .g3 { width: 420px; height: 420px; background: rgba(88,86,83,.30); bottom: 120px; right: -140px; animation: deriva 17s ease-in-out infinite; }
@keyframes deriva { 0%, 100% { translate: 0 0; } 50% { translate: 50px -36px; } }

.kicker {
  display: inline-flex; align-items: center; gap: 12px;
  font-size: .74rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
  color: #B7B4AF; margin-bottom: 24px;
}
.kicker b { color: var(--lime); font-weight: 700; }
.kicker .sep { width: 26px; height: 1px; background: rgba(255,255,255,.25); }
.live { position: relative; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--lime); }
.live::after { content: ''; position: absolute; inset: 0; border-radius: 50%; background: var(--lime); animation: latido 2.2s ease-out infinite; }
@keyframes latido { 0% { transform: scale(1); opacity: .75; } 100% { transform: scale(3.4); opacity: 0; } }

.hx h1 {
  font-size: clamp(2.6rem, 1.1rem + 4vw, 4.6rem); line-height: .98; letter-spacing: -.05em;
  color: #F6F6F5; max-width: 19ch; margin: 0 auto 22px;
}
.hx h1 em { font-style: normal; color: var(--lime); }
.hx .lead { color: #B7B4AF; max-width: 64ch; margin: 0 auto; font-size: 1.16rem; }
.hx .actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 28px; }

/* ---------- El arco que gira ----------
   Misma forma que el arco original (fichas en abanico que se inclinan y
   bajan hacia los lados), pero en movimiento: cada ficha está colgada de
   un punto de giro muy por debajo y anim.js va avanzando el ángulo, así
   las fichas recorren la curva y reaparecen por el otro lado. */
.wheel-stage {
  position: relative; height: 350px; margin-top: 22px; overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 12%, #000 88%, transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 12%, #000 88%, transparent 100%);
}
.wt {
  position: absolute; left: 50%; top: 48px; width: 208px; margin-left: -104px;
  transform: rotate(var(--t, 0deg));            /* el ángulo lo pone anim.js */
  will-change: transform, opacity;
}
.wt-in {
  min-height: 186px; padding: 19px; border-radius: 6px; text-align: left;
  background: #F7F5EF; color: var(--ink);
  box-shadow: 0 20px 44px rgba(0,0,0,.4);
  transition: transform .35s cubic-bezier(.2,.85,.3,1), box-shadow .35s ease, filter .35s ease;
}
.wt-in.dark { background: #201F1E; color: #F6F6F5; border: 1px solid rgba(255,255,255,.08); }
.wt-in.lime { background: var(--lime); color: var(--forest-900); }
.wt-in.photo { padding: 10px; display: block; place-items: normal; background: #F7F5EF; overflow: visible; border-radius: 6px; }
.wt-in .k { font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; opacity: .62; }
.wt-in .v { font-family: var(--head); font-weight: 700; font-size: 2rem; letter-spacing: -.05em; margin-top: 7px; line-height: 1; font-variant-numeric: tabular-nums; }
.wt-in .d { font-size: .74rem; margin-top: 8px; opacity: .76; line-height: 1.5; }
.wt-in .mini { display: flex; align-items: flex-end; gap: 4px; height: 44px; margin-top: 14px; }
.wt-in .mini i { flex: 1; border-radius: 2px; background: currentColor; opacity: .22; }
.wt-in .mini i.on { opacity: 1; }
.wt-in .ph { position: relative; width: 100%; aspect-ratio: 1 / 1; border-radius: 4px; overflow: hidden; }
.wt-in .ph img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.wt-in .pcap { font-size: .74rem; font-weight: 600; margin: 9px 4px 2px; color: var(--ink); }
/* al pasar el ratón: se para todo, la ficha sube y las demás se oscurecen */
.wt:hover .wt-in { transform: translateY(-26px) scale(1.07); box-shadow: 0 34px 70px rgba(0,0,0,.55); }
.wheel-stage:hover .wt:not(:hover) .wt-in { filter: brightness(.78) saturate(.9); }

.ring-hint { font-size: .78rem; color: #807D78; letter-spacing: .04em; margin: 0; }

/* =========================== CINTA =========================== */
.marquee { background: var(--lime); color: var(--forest-900); overflow: hidden; padding: 22px 0; }
.marquee-track { display: flex; width: max-content; animation: cinta 46s linear infinite; }
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-track span {
  display: inline-flex; align-items: center; gap: 36px; padding-right: 36px; white-space: nowrap;
  font-family: var(--head); font-weight: 700; letter-spacing: -.03em;
  font-size: clamp(1.25rem, .9rem + 1.1vw, 1.9rem);
}
.marquee-track span::after { content: ''; width: 11px; height: 11px; border-radius: 50%; background: currentColor; opacity: .55; }
@keyframes cinta { to { transform: translateX(-50%); } }

/* =========================== CIFRAS =========================== */
.numbers { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.numbers > div { padding: 44px 28px 40px; border-right: 1px solid var(--line); }
.numbers > div:last-child { border-right: none; }
.numbers b {
  display: block; font-family: var(--head); font-weight: 700;
  font-size: clamp(2.5rem, 1.5rem + 2.6vw, 4rem); letter-spacing: -.055em; line-height: 1;
  color: var(--ink); font-variant-numeric: tabular-nums;
}
.numbers b small { font-size: .5em; letter-spacing: -.02em; color: var(--lime-ink); margin-left: 2px; }
.numbers span { display: block; margin-top: 14px; color: var(--ink-2); font-size: .92rem; max-width: 26ch; line-height: 1.5; }

/* ======================= CABECERA DE SECCIÓN ======================= */
.shead { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: end; margin-bottom: 48px; }
.shead h2 { margin: 0; max-width: 16ch; font-size: clamp(2rem, 1.2rem + 2.4vw, 3.2rem); line-height: 1.02; }
.shead p { margin: 0; color: var(--ink-2); font-size: 1.08rem; max-width: 46ch; justify-self: end; }
.bg-dark .shead p, .hx .shead p { color: var(--forest-text); }
.num-tag { font-family: var(--head); font-weight: 700; font-size: .82rem; color: var(--lime-ink); letter-spacing: .02em; margin-bottom: 14px; display: block; }
.bg-dark .num-tag { color: var(--lime); }

/* =========================== PUERTAS =========================== */
.doors { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.dr {
  position: relative; display: flex; flex-direction: column;
  background: var(--card); border: 1px solid var(--line); border-radius: 8px; overflow: hidden;
  transition: translate .45s cubic-bezier(.2,.8,.2,1), rotate .5s cubic-bezier(.2,.8,.2,1), box-shadow .45s ease, border-color .45s;
}
.dr:hover { translate: 0 -6px; box-shadow: var(--shadow); border-color: transparent; }
.dr-img { position: relative; height: 250px; overflow: hidden; }
.dr-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1.1s cubic-bezier(.2,.8,.2,1); }
.dr:hover .dr-img img { transform: scale(1.07); }
.dr-tag {
  position: absolute; top: 18px; left: 18px;
  background: var(--lime); color: var(--forest-900); border-radius: 8px; padding: 8px 12px;
  font-size: .7rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
}
.dr-body { flex: 1; display: flex; flex-direction: column; padding: 30px 32px 34px; text-align: left; }
.dr h3 { font-size: 1.6rem; line-height: 1.12; margin-bottom: .45em; }
.dr-body > p { color: var(--ink-2); }
.dr ol { counter-reset: paso; list-style: none; padding: 0; margin: 18px 0 28px; }
.dr li { counter-increment: paso; display: flex; gap: 14px; margin: 0; padding: 11px 0; border-top: 1px solid var(--line); font-size: .95rem; color: var(--ink); }
.dr li::before { content: counter(paso, decimal-leading-zero); min-width: 24px; font-family: var(--head); font-weight: 700; font-size: .84rem; color: var(--lime-ink); }
.dr .btn { align-self: flex-start; margin-top: auto; }

/* =================== BARRAS QUE CRECEN =================== */
.anim-bars { display: flex; align-items: flex-end; gap: 6px; height: 64px; }
.anim-bars i { flex: 1; display: block; height: var(--h); border-radius: 3px 3px 0 0; background: #D8D2C2; }
.anim-bars i.hi { background: var(--lime-dark); }
.anim-bars i.bad { background: var(--bad); }
.js .anim-bars i { height: 4%; transition: height 1.2s cubic-bezier(.2,.8,.2,1); transition-delay: calc(var(--k, 0) * 70ms); }
.js .in .anim-bars i, .js .anim-bars.in i { height: var(--h); }
.bg-dark .anim-bars i { background: rgba(255,255,255,.14); }
.bg-dark .anim-bars i.hi { background: var(--lime); }

/* =================== CARRIL DE FOTOS =================== */
.photo-run { background: #111110; padding: 30px 0 34px; overflow: hidden; }
.photo-run .track { display: flex; align-items: center; gap: 16px; width: max-content; animation: cinta 80s linear infinite; }
.photo-run:hover .track { animation-play-state: paused; }
.photo-run figure { position: relative; flex: none; margin: 0; width: 300px; height: 390px; border-radius: 6px; overflow: hidden; }
.photo-run figure:nth-child(even) { height: 310px; }
.photo-run img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.9); transition: transform .9s cubic-bezier(.2,.8,.2,1), filter .6s ease; }
.photo-run figure:hover img { transform: scale(1.08); filter: saturate(1.05); }
.photo-run figcaption {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 44px 16px 15px;
  background: linear-gradient(transparent, rgba(10,10,10,.9)); color: #F6F6F5; font-size: .82rem; font-weight: 600;
}

/* =================== CITA SOBRE FOTO =================== */
.quote-photo { position: relative; overflow: hidden; isolation: isolate; padding: 150px 0; text-align: center; }
.quote-photo > img { position: absolute; inset: -10% 0; width: 100%; height: 120%; object-fit: cover; z-index: -2; will-change: transform; }
.quote-photo::after { content: ''; position: absolute; inset: 0; z-index: -1; background: radial-gradient(60% 80% at 50% 50%, rgba(17,17,16,.62), rgba(17,17,16,.78) 70%, rgba(17,17,16,.9)); }
.quote-photo blockquote {
  border: none; padding: 0; margin: 0 auto 24px; max-width: 22ch;
  font-family: var(--head); font-weight: 600; letter-spacing: -.035em; line-height: 1.18;
  font-size: clamp(1.7rem, 1rem + 2.4vw, 3rem); color: #F6F6F5;
}
.quote-photo blockquote em { font-style: normal; color: var(--lime); }
.quote-photo p { color: #B7B4AF; max-width: 48ch; margin: 0 auto; }

/* =================== VÍDEO DEL HERO ===================
   Emplatado (Pexels, K. Kelly) y servicio de vino (Pexels, Bonus Studio),
   licencia Pexels. Se alternan con un fundido cruzado. Debajo hay una foto fija
   que es lo único que se ve en móvil, con ahorro de datos o con
   prefers-reduced-motion. El vídeo entra con un fundido cuando empieza. */
.hx-video { position: absolute; inset: 0; z-index: -3; overflow: hidden; pointer-events: none; }
.hx-video::before { content: ''; position: absolute; inset: 0; background: url("../img/emplatado-pinzas.webp") center 40% / cover no-repeat; opacity: .16; }
.hx-video video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.6s ease; }
.hx-video video.activo { opacity: .8; }
.hx-video::after {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(80% 70% at 50% 35%, rgba(17,17,16,.5) 0%, rgba(17,17,16,.66) 60%, #111110 100%),
              linear-gradient(180deg, rgba(17,17,16,.3) 0%, rgba(17,17,16,0) 30%, #111110 94%);
}

/* =================== VÍDEOS DEL RESTO DE LA PÁGINA ===================
   Clips de Pexels (licencia Pexels). Siempre hay una foto debajo: es lo que
   se ve en móvil, con ahorro de datos o con prefers-reduced-motion, y
   mientras el vídeo carga. */
.quote-photo > video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; opacity: 0; transition: opacity 1.4s ease; }
.quote-photo > video.on { opacity: 1; }
.photo-run figure.vid video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1s ease; }
.photo-run figure.vid video.on { opacity: 1; }
.photo-run figure.vid::before {
  content: ''; position: absolute; z-index: 2; top: 14px; right: 14px; width: 8px; height: 8px; border-radius: 50%;
  background: var(--lime); box-shadow: 0 0 0 4px rgba(221,216,207,.22);
}
.dr-img video { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .6s ease, transform 1.1s cubic-bezier(.2,.8,.2,1); }
.dr-img video.on { opacity: 1; }
.dr:hover .dr-img video { transform: scale(1.04); }
.dr-tag { z-index: 2; }
.dr-play {
  position: absolute; z-index: 2; top: 16px; right: 16px; width: 40px; height: 40px; border-radius: 50%;
  background: rgba(17,17,16,.55); border: 1px solid rgba(255,255,255,.28); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  transition: opacity .4s ease, transform .4s cubic-bezier(.2,.8,.2,1);
}
.dr-play::after { content: ''; position: absolute; inset: 0; margin: auto; width: 12px; height: 13px; background: #F6F6F5; clip-path: polygon(15% 0, 100% 50%, 15% 100%); translate: 1px 0; }
.dr-img.playing .dr-play { opacity: 0; transform: scale(.6); }
@media (hover: none), (max-width: 720px) { .dr-play { display: none; } }

/* =================== TITULAR PALABRA A PALABRA ===================
   anim.js envuelve cada palabra en .w > span. La palabra sube desde
   debajo de su propia máscara y la parte en lima se subraya después. */
[data-split] .w, [data-split] .w > span { background: none; padding: 0; color: inherit; }
/* la máscara se ensancha un poco por los lados: con el interletrado negativo
   la última letra de cada palabra se sale de su caja y quedaba cortada */
[data-split] .w { display: inline-block; overflow: hidden; vertical-align: top; padding: 0 .09em .14em; margin: 0 -.09em -.14em; }
[data-split] .w > span { display: inline-block; transform: translateY(110%); transition: transform 1s cubic-bezier(.2,.8,.2,1) var(--d, 0s); }
[data-split].in .w > span { transform: none; }
[data-split] em .w > span {
  color: var(--lime);
  background: linear-gradient(var(--lime), var(--lime)) 0 94% / 0 3px no-repeat;
  transition: transform 1s cubic-bezier(.2,.8,.2,1) var(--d, 0s), background-size .7s cubic-bezier(.7,0,.2,1) calc(var(--d, 0s) + .55s);
}
[data-split].in em .w > span { background-size: 100% 3px; }
.hx-note { font-size: .82rem; color: #928E87; margin: 18px 0 0; }

/* =================== ARCO: ARRASTRE =================== */
.wheel-stage { cursor: grab; touch-action: pan-y; -webkit-user-select: none; user-select: none; outline: none; }
.wheel-stage.dragging { cursor: grabbing; }
.wheel-stage.dragging .wt-in { transition: none; }
.wheel-stage img { -webkit-user-drag: none; pointer-events: none; }
.wt.open .wt-in { transform: translateY(-26px) scale(1.07); box-shadow: 0 34px 70px rgba(0,0,0,.55); }
.wheel-stage.has-open .wt:not(.open) .wt-in { filter: brightness(.78) saturate(.9); }
.wheel-stage:focus-visible { outline: 2px solid var(--lime); outline-offset: -6px; border-radius: 6px; }
.ring-hint { display: inline-flex; align-items: center; gap: 10px; }
.drag-ico {
  width: 22px; height: 14px; background-color: currentColor; animation: empuja 2.4s ease-in-out infinite;
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 18'><path d='M7 3 2 9l5 6M23 3l5 6-5 6M3 9h24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 18'><path d='M7 3 2 9l5 6M23 3l5 6-5 6M3 9h24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
}
@keyframes empuja { 0%, 100% { translate: -3px 0; } 50% { translate: 3px 0; } }

/* =================== BOTONES MAGNÉTICOS E INCLINACIÓN 3D =================== */
[data-magnet] { transition: color .4s cubic-bezier(.7,0,.2,1), border-color .4s ease, transform .2s ease, translate .5s cubic-bezier(.2,.8,.2,1); }
[data-tilt] { position: relative; }
.glare {
  position: absolute; inset: 0; z-index: 3; pointer-events: none; border-radius: inherit; opacity: 0;
  background: radial-gradient(420px circle at var(--gx, 50%) var(--gy, 50%), rgba(255,255,255,.22), transparent 55%);
  mix-blend-mode: soft-light; transition: opacity .4s ease;
}
.tilting .glare { opacity: 1; }

/* =================== MÉTODO: RECORRIDO CON EL SCROLL ===================
   La letra de la izquierda se queda fija y cambia según el paso que
   esté en el centro de la pantalla; la barra de cada paso se llena
   a medida que lo recorres. */
.ps-pin { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: start; }
.ps-side { align-self: stretch; }
@media (min-width: 981px) {
  /* recorrido: la altura fija más tres tramos de scroll, uno por cada hoja que pasa */
  .ps { height: calc(100vh - 100px + 4 * 70vh); }   /* portada + 4 páginas: cuatro pasos de hoja */
  .ps-pin { position: sticky; top: 90px; height: calc(100vh - 110px); max-height: 740px; min-height: 520px; align-items: stretch; }
  .ps-pin .ps-stick { position: static; height: 100%; max-height: none; min-height: 0; }
  .ps-steps { position: relative; height: 100%; }
  .ps-steps::before, .ps-steps::after {
    content: ''; position: absolute; z-index: 0; height: 40px; border-radius: 0 0 6px 6px; background: #EFEADD; box-shadow: 0 10px 22px rgba(0,0,0,.3);
  }
  .ps-steps::before { left: 10px; right: 10px; bottom: 8px; }
  .ps-steps::after { left: 22px; right: 22px; bottom: 0; background: #E3DDCD; }
  .ps-steps .ps-step { position: absolute; inset: 0 0 16px 0; z-index: 1; overflow: hidden; will-change: clip-path; }
}
/* pantallas de portátil bajas: la página de la carta tiene que caber entera */
@media (min-width: 981px) and (max-height: 860px) {
  .ps-steps .ps-step { padding: 24px 32px 16px; }
  .ps-steps .ps-step h3.pg-area { font-size: clamp(1.7rem, 1.1rem + 1.4vw, 2.3rem); }
  .ps-steps .ps-step .pg-hand { font-size: 1.25rem; }
  .ps-steps .ps-step .pg-desc { font-size: .9rem; margin-bottom: 8px; }
  .ps-steps .ps-step .ps-cols li { padding: 5px 0; font-size: .84rem; }
  .ps-steps .ps-step .ps-cols h4 { margin-bottom: 4px; }
}
.ps-stick {
  position: sticky; top: 100px; height: calc(100vh - 140px); max-height: 680px; min-height: 460px;
  display: flex; flex-direction: column; gap: 18px; padding-bottom: 10px;
}
.ps-label {
  display: flex; align-items: center; gap: 10px; margin: 0; font-size: .72rem; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: #B7B4AF;
}
.ps-label b { color: var(--lime); font-weight: 700; }
.ps-label .sep { width: 22px; height: 1px; background: rgba(255,255,255,.25); }
.ps-label .ps-n { display: inline-block; min-width: .7em; color: #F6F6F5; font-variant-numeric: tabular-nums; transition: opacity .25s ease, translate .25s ease; }
.ps-label .ps-n.cambia { opacity: 0; translate: 0 -6px; }
.ps-visual { position: relative; flex: 1; border-radius: 8px; overflow: hidden; background: #201F1E; box-shadow: var(--shadow-lg); }
.ps-l { position: absolute; inset: 0; opacity: 0; transition: opacity .7s ease; }
.ps-l.on { opacity: 1; }
.ps-l img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform: scale(1.12); transition: transform 1.6s cubic-bezier(.2,.8,.2,1); }
.ps-l.on img { transform: scale(1); }
.ps-l::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(13,13,12,0) 35%, rgba(13,13,12,.88) 100%); }
.ps-l b {
  position: absolute; z-index: 2; left: 26px; bottom: 58px;
  font-family: var(--head); font-weight: 800; line-height: .76; letter-spacing: -.08em; color: var(--lime);
  font-size: clamp(7rem, 3rem + 8vw, 12rem);
  transform: translateY(50px); opacity: 0; transition: transform .9s cubic-bezier(.2,.8,.2,1) .1s, opacity .5s ease .1s;
}
.ps-l span {
  position: absolute; z-index: 2; left: 30px; bottom: 24px;
  font-family: var(--head); font-weight: 700; font-size: 1.35rem; color: #F6F6F5; letter-spacing: -.035em;
  transform: translateY(20px); opacity: 0; transition: transform .8s cubic-bezier(.2,.8,.2,1) .22s, opacity .5s ease .22s;
}
.ps-l.on b, .ps-l.on span { transform: none; opacity: 1; }
.ps-nav { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.ps-nav li { margin: 0; color: #706E6A; font-size: .8rem; font-weight: 600; transition: color .4s ease; }
.ps-nav li.on, .ps-nav li.done { color: #F6F6F5; }
.ps-nav i { position: relative; display: block; height: 3px; border-radius: 2px; background: rgba(255,255,255,.13); overflow: hidden; margin-bottom: 9px; }
.ps-nav s { position: absolute; inset: 0; background: var(--lime); transform: scaleX(var(--p, 0)); transform-origin: left; }

.ps-step {
  position: relative; display: flex; flex-direction: column; padding: 38px 44px 34px; border-radius: 6px;
  background: #FFFEF9; color: var(--ink-2); box-shadow: 0 30px 60px rgba(0,0,0,.35);
}
.ps-step::before { content: ''; position: absolute; inset: 10px; border: 1px solid #E6E1D3; border-radius: 3px; pointer-events: none; }
/* sombra que proyecta la hoja que se levanta sobre la siguiente */
.ps-step::after { content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: linear-gradient(180deg, rgba(13,13,12,.55), rgba(13,13,12,0) 70%); opacity: var(--s, 0); }
/* Cabecera de página de carta */
.pg-head { display: grid; justify-items: center; gap: 2px; margin-bottom: 6px; text-align: center; }
.pg-kick { font-size: .62rem; font-weight: 700; letter-spacing: .3em; text-transform: uppercase; color: var(--lime-ink); }
.ps-step h3.pg-area { margin: 6px 0 0; font-family: var(--head); font-weight: 700; font-size: clamp(2rem, 1.3rem + 1.8vw, 2.8rem); letter-spacing: -.045em; line-height: 1; color: var(--ink); }
.pg-area em { font-style: normal; color: var(--lime-ink); }
.pg-hand { margin-top: 2px; font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.45rem; line-height: 1.1; color: #B23C24; rotate: -2deg; }
.ps-step .pg-desc { max-width: 46ch; margin: 4px auto 12px; text-align: center; font-size: .95rem; line-height: 1.5; color: var(--ink-2); }
.ps-step .ps-cols h4 { display: flex; align-items: center; gap: 10px; color: var(--ink-2); font-size: .62rem; letter-spacing: .26em; }
.ps-step .ps-cols h4::before, .ps-step .ps-cols h4::after { content: ''; flex: 1; height: 1px; background: #E3DED0; }
.ps-step .ps-cols li { border-top: 0; border-bottom: 1px dotted #D3CDBE; }
.pg-hace li::before { content: ''; flex: none; width: 5px; height: 5px; margin-top: 9px; rotate: 45deg; background: #C9C2B0; }
.pg-foot { margin-top: auto; padding-top: 10px; text-align: center; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .7rem; letter-spacing: .2em; color: #A39A8A; }
.pg-hint { display: none; }
@media (min-width: 981px) {
  .pg-hint {
    display: block; position: absolute; right: 70px; bottom: 30px; margin: 0; z-index: 2; rotate: -7deg;
    font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.2rem; color: #B23C24;
  }
  .pg-hint::after { content: ' ↘'; }
  /* capa del pliegue: el dorso de la hoja y la sombra que proyecta */
  .pg-curl { position: absolute; left: 0; top: 0; z-index: 30; width: 100%; height: calc(100% - 16px); overflow: visible; pointer-events: none; }
  .pg-flap { fill: url(#pgDorso); filter: url(#pgSombraFlap); }
  .pg-sombra { fill: url(#pgSombra); }
}
.pg-curl { display: none; }
@media (min-width: 981px) { .pg-curl { display: block; } }
.ps-img { display: none; }
.ps-k { display: none; }
.ps-step h3 { color: var(--ink); font-size: clamp(1.6rem, 1.1rem + 1.4vw, 2.3rem); margin-bottom: .4em; }
.ps-step > p { color: var(--ink-2); font-size: 1.05rem; max-width: 52ch; }
.ps-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin-top: 8px; }
.ps-cols h4 { font-family: var(--body); color: var(--lime-ink); font-size: .7rem; letter-spacing: .15em; text-transform: uppercase; margin-bottom: 10px; }
.ps-cols ul { list-style: none; padding: 0; margin: 0; }
.ps-cols li { margin: 0; padding: 8px 0; border-top: 1px dotted #D3CDBE; font-size: .92rem; color: var(--ink); display: flex; gap: 10px; }
.ps-cols div:last-child li::before {
  content: ''; flex: none; width: 14px; height: 14px; margin-top: 5px; background-color: var(--lime-ink);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m5 12.5 4.5 4.5L19 7.5' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m5 12.5 4.5 4.5L19 7.5' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
}

/* =================== CUADRO DE MANDO EN DIRECTO =================== */
.en-vivo { margin-left: auto; display: inline-flex; align-items: center; gap: 7px; font-size: .6rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--good); }
.en-vivo i { position: relative; width: 7px; height: 7px; border-radius: 50%; background: #7A7873; }
.en-vivo i::after { content: ''; position: absolute; inset: 0; border-radius: 50%; background: #7A7873; animation: latido 1.8s ease-out infinite; }
.ui-row3 { grid-template-columns: repeat(3, 1fr); }
.ui-kpi .d.is-ok { color: var(--good); }
.ui-kpi .v { transition: color .5s ease; }
.ui-kpi .v.tick { color: var(--lime-ink); }
.spark-line { display: block; width: 100%; height: 74px; overflow: visible; }
.js .sl-line { stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 2.2s cubic-bezier(.45,0,.2,1) .35s; }
.js .in .sl-line { stroke-dashoffset: 0; }
.js .sl-area { opacity: 0; transition: opacity 1.1s ease 1.7s; }
.js .in .sl-area { opacity: 1; }
.sl-hours { display: flex; justify-content: space-between; font-size: .58rem; letter-spacing: .04em; color: #A39A92; margin-top: 6px; }
.sl-hours span:last-child { color: var(--good); font-weight: 700; }

/* =================== ANTES / DESPUÉS =================== */
.ba {
  margin-top: 84px; border-radius: 9px; padding: 42px 44px 36px; color: var(--forest-text);
  background: var(--forest-900); background-image: radial-gradient(80% 120% at 100% 0%, #302F2D 0%, var(--forest-900) 60%);
  box-shadow: 0 40px 90px rgba(28,28,27,.22);
}
.ba-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 36px; margin-bottom: 34px; }
.ba-head h3 { color: #F6F6F5; font-size: clamp(1.45rem, 1.1rem + 1vw, 2rem); margin-bottom: .35em; }
.ba-head p { margin: 0; max-width: 56ch; }
.ba .num-tag { color: var(--lime); }
.ba-ebitda { flex: none; text-align: right; }
.ba-ebitda span { display: block; font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; font-weight: 700; color: #8E8A83; }
.ba-ebitda b {
  display: block; font-family: var(--head); font-weight: 700; letter-spacing: -.055em; line-height: 1; margin: 8px 0 6px;
  font-size: clamp(2.6rem, 1.8rem + 2.4vw, 3.8rem); color: #E8826A; font-variant-numeric: tabular-nums; transition: color .4s ease;
}
.ba-ebitda b.good { color: var(--lime); }
.ba-ebitda small { font-size: .84rem; }
.ba-rows { display: grid; gap: 16px; }
.ba-row { display: grid; grid-template-columns: 210px 1fr 150px; gap: 20px; align-items: center; }
.ba-l { color: #DFDEDC; font-size: .95rem; }
.ba-bar { height: 12px; border-radius: 6px; background: rgba(255,255,255,.07); overflow: hidden; }
.ba-bar i { display: block; height: 100%; border-radius: 6px; background: rgba(255,255,255,.3); }
.ba-row:first-child .ba-bar i { background: var(--lime); }
.ba-row.down .ba-bar i { background: linear-gradient(90deg, rgba(255,255,255,.3), #807E79); }
.ba-v { text-align: right; font-family: var(--head); font-weight: 700; color: #F6F6F5; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.ba-v small { display: block; font-family: var(--body); font-weight: 500; font-size: .74rem; color: #8E8A83; letter-spacing: 0; }
.ba-slider { display: flex; align-items: center; gap: 20px; margin-top: 34px; font-size: .84rem; font-weight: 700; color: #F6F6F5; }
.ba-slider span { flex: none; }
.ba-slider span:last-child { color: var(--lime); }
.ba-note { font-size: .78rem; color: #807D78; margin: 20px 0 0; }

/* Deslizadores (antes/después y calculadora) */
.ba-slider input, .mcalc input[type="range"] {
  -webkit-appearance: none; appearance: none; flex: 1; width: 100%; height: 6px; margin: 0; border-radius: 3px; cursor: pointer;
  background: linear-gradient(90deg, var(--lime) var(--p, 0%), rgba(255,255,255,.14) var(--p, 0%));
}
.ba-slider input::-webkit-slider-thumb, .mcalc input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none; width: 28px; height: 28px; border-radius: 50%; background: var(--lime);
  border: 6px solid var(--forest-900); box-shadow: 0 0 0 1px var(--lime), 0 8px 20px rgba(0,0,0,.45);
  transition: transform .2s ease;
}
.ba-slider input::-moz-range-thumb, .mcalc input[type="range"]::-moz-range-thumb {
  width: 16px; height: 16px; border-radius: 50%; background: var(--lime);
  border: 6px solid var(--forest-900); box-shadow: 0 0 0 1px var(--lime), 0 8px 20px rgba(0,0,0,.45);
}
.ba-slider input:active::-webkit-slider-thumb, .mcalc input[type="range"]:active::-webkit-slider-thumb { transform: scale(1.15); }
.ba-slider input:focus-visible, .mcalc input[type="range"]:focus-visible { outline: 2px solid var(--lime); outline-offset: 8px; }

/* =================== FORMAS DE TRABAJO: LISTA CON FOTO QUE SIGUE AL CURSOR =================== */
#formas { position: relative; }
.of-float {
  position: fixed; left: 0; top: 0; z-index: 45; width: 260px; height: 320px; border-radius: 7px; overflow: hidden;
  pointer-events: none; opacity: 0; transform: translate(-50%, -50%) scale(.55) rotate(var(--rot, 0deg));
  box-shadow: 0 30px 70px rgba(0,0,0,.3); transition: opacity .3s ease, transform .5s cubic-bezier(.2,.8,.2,1);
}
.of-float.on { opacity: 1; transform: translate(-50%, -50%) scale(1) rotate(var(--rot, 0deg)); }
.of-float img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* =================== TRAYECTORIA (pendiente de datos reales) =================== */
.track-record { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 18px; }
.track-record div { border: 1px dashed #C9C2B0; border-radius: 5px; padding: 16px; }
.track-record b { display: block; font-family: var(--head); font-size: 2rem; line-height: 1; color: var(--ink); }
.track-record span { display: block; margin-top: 8px; font-size: .8rem; line-height: 1.4; color: var(--ink-2); }

/* =================== CALCULADORA EN PORTADA =================== */
.calc-split { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
#calcula h2 { font-size: clamp(2rem, 1.2rem + 2.4vw, 3.2rem); line-height: 1.02; max-width: 14ch; }
#calcula .num-tag { color: var(--forest-900); }
.tool-links { margin-top: 30px; border-top: 1px solid rgba(28,28,27,.2); }
.tool-links a {
  position: relative; display: grid; grid-template-columns: 1fr auto; column-gap: 16px;
  padding: 14px 4px; border-bottom: 1px solid rgba(28,28,27,.2); color: var(--forest-900); transition: padding .4s cubic-bezier(.2,.8,.2,1);
}
.tool-links a:hover { padding-left: 14px; text-decoration: none; }
.tool-links b { font-family: var(--head); font-size: 1.1rem; letter-spacing: -.03em; }
.tool-links span { grid-column: 1; font-size: .86rem; color: #464542; }
.tool-links a::after {
  content: ''; grid-column: 2; grid-row: 1 / span 2; align-self: center; width: 16px; height: 16px; background-color: var(--forest-900);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M7 17 17 7M9 7h8v8' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M7 17 17 7M9 7h8v8' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
  transition: transform .4s cubic-bezier(.7,0,.2,1);
}
.tool-links a:hover::after { transform: rotate(45deg); }
.mcalc { background: var(--forest-900); color: var(--forest-text); border-radius: 9px; padding: 34px; box-shadow: 0 40px 80px rgba(28,28,27,.35); }
.mc-field { margin-bottom: 28px; }
.mc-field label { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; color: #F6F6F5; font-weight: 600; font-size: .92rem; margin-bottom: 14px; }
.mc-field output { font-family: var(--head); font-weight: 700; font-size: 1.15rem; color: var(--lime); font-variant-numeric: tabular-nums; letter-spacing: -.03em; }
.mc-res { background: rgba(255,255,255,.05); border: 1px solid var(--forest-line); border-radius: 6px; padding: 22px 22px 18px; margin-bottom: 22px; }
.mc-res > span { font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; font-weight: 700; color: #ACA9A4; }
.mc-res b {
  display: block; margin: 10px 0 16px; font-family: var(--head); font-weight: 700; letter-spacing: -.055em; line-height: 1;
  font-size: clamp(2.6rem, 1.8rem + 2.4vw, 3.6rem); color: var(--lime); font-variant-numeric: tabular-nums;
}
.mc-res b.ok { color: #F6F6F5; }
.mc-bar { position: relative; height: 8px; border-radius: 4px; background: rgba(255,255,255,.1); margin-bottom: 12px; }
.mc-bar i { position: absolute; left: 0; top: 0; bottom: 0; width: 50%; border-radius: 4px; background: var(--lime); transition: width .25s ease, background-color .3s ease; }
.mc-bar i.bad { background: #E8826A; }
.mc-bar em { position: absolute; top: -5px; bottom: -5px; width: 2px; margin-left: -1px; background: #F6F6F5; border-radius: 1px; }
.mc-res small { display: block; font-size: .78rem; color: #8E8A83; }
.mcalc .btn-primary { background: var(--lime); color: var(--forest-900); }
.mcalc .btn-primary::before { background: #fff; }
.mcalc .btn-primary:hover { color: var(--forest-900); }

/* =================== CONTACTO =================== */
.next-steps { list-style: none; padding: 0; margin: 28px 0 0; display: grid; gap: 12px; counter-reset: ns; }
.next-steps li { counter-increment: ns; display: flex; align-items: center; gap: 14px; margin: 0; color: var(--forest-text); }
.next-steps li::before {
  content: counter(ns); flex: none; width: 32px; height: 32px; border-radius: 3px; display: grid; place-items: center;
  background: rgba(221,216,207,.12); color: var(--lime); font-family: var(--head); font-weight: 700; font-size: .86rem;
}
.numbers-note { font-size: .78rem; color: var(--ink-2); margin: 14px 0 0; opacity: .85; }
.numbers b[data-prefix] small { margin: 0 6px 0 0; }

/* =================== PRESUPUESTO Y PREVISIÓN ===================
   Barras de ventas por mes: lima sólida lo real, rayada la previsión.
   La raya blanca de cada mes es el presupuesto. Escala: 400 mil €. */
.fc-split { display: grid; grid-template-columns: 1.15fr .85fr; gap: 56px; align-items: center; }
.fc {
  border-radius: 9px; padding: 30px 30px 24px; color: var(--forest-text);
  background: var(--forest-900); background-image: radial-gradient(90% 110% at 0% 0%, #302F2D 0%, var(--forest-900) 60%);
  box-shadow: 0 40px 90px rgba(28,28,27,.24);
}
.fc-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; flex-wrap: wrap; margin-bottom: 30px; }
.fc-k { display: block; font-size: .66rem; letter-spacing: .13em; text-transform: uppercase; font-weight: 700; color: #8E8A83; }
.fc-title { display: block; margin-top: 6px; font-family: var(--head); font-size: 1.15rem; letter-spacing: -.03em; color: #F6F6F5; }
.fc-seg { display: inline-flex; gap: 2px; padding: 4px; border-radius: 4px; background: rgba(255,255,255,.06); border: 1px solid var(--forest-line); }
.fc-seg button {
  appearance: none; border: 0; background: transparent; cursor: pointer; border-radius: 9px; padding: 8px 14px;
  font: 600 .82rem var(--body); color: #BCBAB5; transition: color .3s ease, background-color .3s ease;
}
.fc-seg button:hover { color: #F6F6F5; }
.fc-seg button.on { background: var(--lime); color: var(--forest-900); }
.fc-bars { position: relative; display: grid; grid-template-columns: repeat(12, 1fr); gap: 8px; height: 220px; margin-bottom: 26px; }
.fc-m { position: relative; height: 100%; display: flex; align-items: flex-end; }
.fc-m i {
  display: block; width: 100%; height: calc(var(--v) / 400 * 100%); border-radius: 6px 6px 2px 2px; background: var(--lime);
  transition: height .8s cubic-bezier(.2,.8,.2,1);
}
.fc-m.prev i { background: repeating-linear-gradient(135deg, rgba(221,216,207,.38) 0 6px, rgba(221,216,207,.12) 6px 12px); box-shadow: inset 0 0 0 1px rgba(221,216,207,.6); }
.fc-m em { position: absolute; left: -3px; right: -3px; bottom: calc(var(--p) / 400 * 100%); height: 2px; border-radius: 1px; background: #F6F6F5; opacity: .8; }
.fc-m small { position: absolute; left: 0; right: 0; bottom: -22px; text-align: center; font-size: .66rem; color: #8E8A83; }
.fc-m.hoy::before {
  content: 'hoy'; position: absolute; top: -18px; bottom: 0; left: -5px; padding-left: 5px;
  border-left: 1px dashed rgba(255,255,255,.35); font-size: .6rem; letter-spacing: .06em; color: #ACA9A4;
}
.js .fc-m i { height: 0; transition-delay: calc(var(--k, 0) * 45ms); }
.js .fc.in .fc-m i { height: calc(var(--v) / 400 * 100%); }
.fc-legend { display: flex; flex-wrap: wrap; gap: 18px; font-size: .74rem; color: #BCBAB5; }
.fc-legend span { display: inline-flex; align-items: center; gap: 7px; }
.fc-legend span::before { content: ''; width: 12px; height: 12px; border-radius: 3px; }
.fc-legend .lg-real::before { background: var(--lime); }
.fc-legend .lg-prev::before { background: repeating-linear-gradient(135deg, rgba(221,216,207,.45) 0 3px, rgba(221,216,207,.12) 3px 6px); box-shadow: inset 0 0 0 1px rgba(221,216,207,.6); }
.fc-legend .lg-pres::before { height: 2px; background: #F6F6F5; }
.fc-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--forest-line); }
.fc-kpis span { display: block; min-height: 2.7em; font-size: .7rem; line-height: 1.35; color: #8E8A83; }
.fc-kpis b { display: block; margin-top: 4px; font-family: var(--head); font-size: 1.32rem; letter-spacing: -.04em; color: #F6F6F5; font-variant-numeric: tabular-nums; }
.fc-note { font-size: .74rem; color: #807D78; margin: 16px 0 0; }
.fc-list { list-style: none; padding: 0; margin: 16px 0 26px; border-top: 1px solid var(--line); }
.fc-list li { display: grid; gap: 2px; margin: 0; padding: 12px 0; border-bottom: 1px solid var(--line); }
.fc-list b { font-family: var(--head); font-weight: 700; color: var(--ink); letter-spacing: -.02em; }
.fc-list span { font-size: .92rem; }
@media (max-width: 980px) { .fc-split { grid-template-columns: 1fr; gap: 40px; } }
@media (max-width: 720px) {
  .fc { padding: 22px 16px 18px; }
  .fc-bars { gap: 4px; height: 170px; }
  .fc-m small { font-size: .6rem; }
  .fc-seg button { padding: 7px 10px; font-size: .78rem; }
  .fc-kpis { grid-template-columns: 1fr 1fr; }
}
@media (prefers-reduced-motion: reduce) { .fc-m i, .fc-seg button { transition: none; } .js .fc-m i { height: calc(var(--v) / 400 * 100%); } }

/* =====================================================================
   MÉTODO: LA CARTA FÍSICA
   Funda de cuero con costura y cantoneras, portada en relieve, papel con
   fibra y páginas escritas como una carta (platos en Fraunces, con su
   descripción en cursiva y la semana donde iría el precio).
   ===================================================================== */
.ps-steps article.ps-step {
  color: #3A342C; background-color: #FCF9F0;
  background-image:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='f'><feTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .35  0 0 0 0 .3  0 0 0 0 .2  0 0 0 .55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23f)' opacity='.2'/></svg>"),
    radial-gradient(130% 100% at 50% 35%, rgba(255,255,255,0) 55%, rgba(170,150,105,.2) 100%);
}
.ps-steps .ps-step h3.pg-area { font-family: 'Fraunces', Georgia, serif; font-weight: 600; letter-spacing: -.02em; color: #211D18; }
.pg-area em { color: #41403E; }
.pg-adorno { display: flex; align-items: center; justify-content: center; gap: 12px; width: 62%; margin: 4px auto 12px; color: #B9A97E; font-size: .78rem; }
.pg-adorno i { flex: 1; height: 1px; background: linear-gradient(90deg, transparent, #CDBF98, transparent); }
.pg-cuerpo { display: grid; grid-template-columns: 1.4fr .9fr; gap: 24px; text-align: left; }
.pg-cuerpo h4 {
  display: flex; align-items: center; gap: 10px; margin: 0 0 6px;
  font-family: var(--body); font-size: .6rem; font-weight: 700; letter-spacing: .26em; text-transform: uppercase; color: #7A7060;
}
.pg-cuerpo h4::before, .pg-cuerpo h4::after { content: ''; flex: 1; height: 1px; background: #E0D6BE; }
.pg-platos { list-style: none; padding: 0; margin: 0; }
.pg-platos li { display: grid; grid-template-columns: auto 1fr auto; column-gap: 6px; align-items: baseline; margin: 0; padding: 6px 0 7px; border: 0; }
.pg-platos li::before { content: none; }
.pl-n { font-family: 'Fraunces', Georgia, serif; font-weight: 600; font-size: 1rem; letter-spacing: -.01em; color: #211D18; }
.pl-dots { min-width: 14px; border-bottom: 1.5px dotted #C9BC9A; translate: 0 -4px; }
.pl-sem { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .68rem; letter-spacing: .04em; color: #8A7B5C; white-space: nowrap; }
.pl-d { grid-column: 1 / -1; margin-top: 1px; font-family: 'Fraunces', Georgia, serif; font-style: italic; font-size: .84rem; line-height: 1.3; color: #7A6F60; }
.pg-sugerencia {
  position: relative; margin: 4px 0 18px; padding: 14px 16px 12px; text-align: center;
  border: 1px solid #CDBF98; outline: 1px solid #CDBF98; outline-offset: 3px; background: rgba(221,216,207,.09);
}
.sg-k { display: block; font-size: .58rem; font-weight: 700; letter-spacing: .24em; text-transform: uppercase; color: #41403E; }
.pg-sugerencia p { margin: 6px 0 4px; font-family: 'Fraunces', Georgia, serif; font-style: italic; font-size: 1.02rem; line-height: 1.35; color: #211D18; }
.sg-nota { display: block; font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.15rem; line-height: 1.1; color: #B23C24; rotate: -2deg; }
.pg-queda ul { list-style: none; padding: 0; margin: 0; }
.pg-queda li { display: flex; gap: 8px; margin: 0; padding: 5px 0; border-bottom: 1px dotted #D8CDB2; font-size: .84rem; line-height: 1.35; color: #3A342C; }
.pg-queda li::before {
  content: ''; flex: none; width: 13px; height: 13px; margin-top: 3px; background-color: #41403E;
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m5 12.5 4.5 4.5L19 7.5' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m5 12.5 4.5 4.5L19 7.5' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
}
.ps-steps .pg-foot { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; color: #A39A8A; }
.ps-steps .pg-foot span:first-child { font-size: .7rem; letter-spacing: .2em; }

/* «Para llevar» / «Incluye»: una línea al pie de la página */
.pg-llevar { margin: 12px 0 0; text-align: center; font-family: 'Fraunces', Georgia, serif; font-style: italic; font-size: .86rem; line-height: 1.45; color: #6E6556; }
.pg-llevar b { display: block; margin-bottom: 2px; font-family: var(--body); font-style: normal; font-size: .58rem; font-weight: 700; letter-spacing: .26em; text-transform: uppercase; color: #41403E; }

/* 1 · Plato del día: foto redonda como un plato y los platos al lado */
.pd-cuerpo { display: grid; grid-template-columns: 200px 1fr; gap: 26px; align-items: center; text-align: left; }
.pd-foto { margin: 0; text-align: center; }
.pd-plato {
  display: block; width: 190px; height: 190px; margin: 0 auto; border-radius: 50%; overflow: hidden;
  border: 8px solid #FFFDF6; box-shadow: 0 0 0 1px #DDD3BB, 0 14px 26px rgba(60,45,20,.22);
}
.pd-plato img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1.2s cubic-bezier(.2,.8,.2,1); }
.pg-v1:hover .pd-plato img { transform: scale(1.06) rotate(-3deg); }
.pd-foto figcaption { margin-top: 10px; rotate: -3deg; font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.12rem; line-height: 1.1; color: #B23C24; }
.pd-foto figcaption::before { content: '↑ '; }

/* la página 1 reparte el espacio: cuerpo centrado y pie abajo */
.pg-v1 .pd-cuerpo { flex: 1; align-content: center; grid-template-columns: minmax(120px, 30%) 1fr; gap: 20px; }
.pg-v1 .pd-plato { width: min(100%, 200px); height: auto; aspect-ratio: 1 / 1; }
.pg-v1 .pl-n { font-size: .95rem; }
.pg-v1 .pg-platos li { padding: 2px 0 3px; }
.pg-v1 .pd-lista .pl-d { line-height: 1.2; }
.pg-v2 .md-curso { padding: 6px 0; }
.pg-v1 .pl-d { font-size: .76rem; }
.pd-pie { display: grid; gap: 10px; margin-top: 12px; padding-top: 12px; border-top: 1px solid #E3DAC3; }
.pd-pie .pg-llevar { margin: 0; }
.pd-marida { display: grid; grid-template-columns: auto 1fr 1fr; gap: 4px 18px; align-items: baseline; }
.pd-marida b { margin: 0; }
.pd-marida b { display: block; margin-bottom: 4px; font-size: .58rem; font-weight: 700; letter-spacing: .26em; text-transform: uppercase; color: #41403E; }
.pd-marida a { display: flex; flex-direction: column; gap: 0; padding: 5px 0; border-bottom: 1px dotted #CDBF98; color: #211D18; text-decoration: none; transition: padding .3s ease, color .3s ease; }
.pd-marida a span { font-family: 'Fraunces', Georgia, serif; font-weight: 600; font-size: .95rem; }
.pd-marida a span::after { content: ' ↗'; color: #41403E; }
.pd-marida a em { font-family: 'Caveat', cursive; font-style: normal; font-weight: 700; font-size: 1.05rem; color: #B23C24; white-space: nowrap; }
.pd-marida a:hover { padding-left: 6px; color: #41403E; }

/* 2 · Menú del día: recuadro central con primero, segundo y postre */
.md-caja {
  position: relative; max-width: 440px; margin: 2px auto 0; padding: 16px 26px 14px; text-align: center;
  border: 1px solid #CDBF98; outline: 1px solid #CDBF98; outline-offset: 4px; background: rgba(255,253,246,.7);
}
.md-t { margin: 0 0 6px; font-family: 'Fraunces', Georgia, serif; font-style: italic; font-weight: 600; font-size: 1.5rem; letter-spacing: -.01em; color: #211D18; }
.md-curso { padding: 8px 0; border-top: 1px dotted #D3CDBE; }
.md-k { display: block; margin-bottom: 3px; font-size: .58rem; font-weight: 700; letter-spacing: .3em; text-transform: uppercase; color: #41403E; }
.md-curso p { margin: 0; font-family: 'Fraunces', Georgia, serif; font-weight: 600; font-size: 1rem; line-height: 1.35; color: #211D18; }
.md-curso em { display: block; font-family: 'Fraunces', Georgia, serif; font-size: .82rem; color: #7A6F60; }
.md-precio { display: grid; gap: 2px; padding-top: 10px; border-top: 2px solid var(--ink); }
.md-precio > span:first-child { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-weight: 600; font-size: 1rem; letter-spacing: .04em; color: #211D18; }
.md-nota { font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.1rem; line-height: 1.1; color: #B23C24; rotate: -2deg; }

@media (min-width: 981px) and (max-height: 700px) {
  .ps-steps .pg-v1 .pl-d, .ps-steps .pg-v2 .md-nota, .ps-steps .pg-v1 .pd-marida a em { display: none; }
  .ps-steps .pg-v1 .pg-platos li { padding: 2px 0 3px; }
  .ps-steps .pg-v1 .pl-n { font-size: .86rem; }
  .ps-steps .pg-v1 .pd-pie { margin-top: 6px; padding-top: 8px; }
  .ps-steps .pg-v2 .md-t { font-size: 1.12rem; margin-bottom: 2px; }
  .ps-steps .pg-v2 .md-curso { padding: 3px 0; }
  .ps-steps .pg-v2 .md-curso p { font-size: .86rem; }
}
/* 3 · La carta: el formato de dos columnas con sugerencia de la casa (sin cambios) */

/* 4 · Carta de vinos: tabla a columnas y recomendación del sumiller */
.ps-step .vn-tabla { width: 100%; margin: 4px 0 0; border-collapse: collapse; font-size: .88rem; text-align: left; }
.ps-step .vn-tabla th {
  padding: 6px 4px; background: none; border-bottom: 1.5px solid var(--ink);
  font-family: var(--body); font-size: .58rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: #7A7060;
}
.ps-step .vn-tabla td { padding: 9px 4px; border-bottom: 1px solid #E3DAC3; vertical-align: baseline; color: #3A342C; }
.ps-step .vn-tabla td:first-child b { display: block; font-family: 'Fraunces', Georgia, serif; font-weight: 600; font-size: 1rem; color: #211D18; }
.ps-step .vn-tabla td:first-child em { font-family: 'Fraunces', Georgia, serif; font-size: .8rem; color: #7A6F60; }
.ps-step .vn-tabla td:nth-child(2) { font-size: .8rem; color: #5A5245; }
.ps-step .vn-tabla th:last-child, .ps-step .vn-tabla td:last-child { width: 46px; text-align: right; font-family: 'IBM Plex Mono', ui-monospace, monospace; }
.ps-step .vn-tabla tbody tr { transition: background-color .3s ease; }
.ps-step .vn-tabla tbody tr:hover { background: rgba(221,216,207,.12); }
.vn-pie { display: grid; gap: 10px; margin-top: 12px; }
.vn-pie .vn-sumiller { display: block; margin: 0; }
.vn-pie .vn-sumiller p { display: inline; margin: 0 8px 0 0; }
.vn-pie .vn-k { display: block; margin-bottom: 2px; }
.vn-pie .pg-llevar { margin: 0; }
.ps-step .vn-tabla td { padding: 7px 4px; }
.ps-step .vn-tabla td:first-child b { font-size: .95rem; }
.ps-step .vn-tabla td:nth-child(2), .ps-step .vn-tabla th:nth-child(2) { width: 132px; }
.vn-sumiller { display: grid; grid-template-columns: auto 1fr; column-gap: 14px; align-items: baseline; margin: 14px 0 0; padding: 10px 14px; text-align: left; border-left: 3px solid #41403E; background: rgba(221,216,207,.08); }
.vn-k { grid-column: 1 / -1; font-size: .58rem; font-weight: 700; letter-spacing: .24em; text-transform: uppercase; color: #41403E; }
.vn-sumiller p { margin: 2px 0 0; font-family: 'Fraunces', Georgia, serif; font-style: italic; font-size: .98rem; color: #211D18; }
.vn-nota { font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.08rem; color: #B23C24; rotate: -2deg; }

/* pantallas bajas: los formatos nuevos también tienen que caber */
@media (min-width: 981px) and (max-height: 860px) {
  .pd-cuerpo, .pg-v1 .pd-cuerpo { grid-template-columns: minmax(130px, 33%) 1fr; gap: 20px; }
  .pd-plato, .pg-v1 .pd-plato { width: min(100%, 176px); height: auto; aspect-ratio: 1 / 1; border-width: 6px; }
  .md-caja { padding: 12px 22px 10px; }
  .md-t { font-size: 1.3rem; margin-bottom: 4px; }
  .md-curso { padding: 5px 0; }
  .md-curso p { font-size: .92rem; }
  .ps-step .vn-tabla td { padding: 6px 4px; }
  .vn-sumiller { margin-top: 10px; padding: 8px 12px; }
  .pg-llevar { margin-top: 8px; font-size: .8rem; }
}
@media (min-width: 981px) and (max-height: 740px) {
  .pd-plato, .pg-v1 .pd-plato { width: min(100%, 150px); height: auto; aspect-ratio: 1 / 1; }
  .ps-steps .pg-v1 .pl-d { display: block; }
  .pg-v1 .pd-cuerpo { grid-template-columns: minmax(120px, 30%) 1fr; }
  .pd-cuerpo .pl-d, .md-curso em, .ps-step .vn-tabla td:first-child em { display: none; }
  .pg-llevar b { display: inline; margin-right: 6px; }
}
@media (max-width: 720px) {
  .pg-v1 .ps-img { display: none; }
  .pd-cuerpo, .pg-v1 .pd-cuerpo { grid-template-columns: 1fr; gap: 16px; }
  .pd-pie { gap: 14px; }
  .pd-marida { grid-template-columns: 1fr; }
  .md-caja { padding: 14px 14px 12px; }
  .ps-step .vn-tabla td:nth-child(2), .ps-step .vn-tabla th:nth-child(2) { display: none; }
  .vn-sumiller { grid-template-columns: 1fr; }
  .vn-pie { grid-template-columns: 1fr; }
}

/* Portada de cuero con el título en relieve */
.ps-steps article.pg-portada {
  padding: 0; color: #E1DCD3; background-color: #232220;
  background-image:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='c'><feTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .5 0'/></filter><rect width='100%25' height='100%25' filter='url(%23c)' opacity='.08'/></svg>"),
    radial-gradient(120% 90% at 30% 15%, rgba(255,255,255,.09), transparent 55%),
    radial-gradient(130% 100% at 50% 50%, transparent 55%, rgba(0,0,0,.5) 100%);
}
.ps-steps article.pg-portada::before { inset: 14px; border: 1.5px dashed rgba(225,220,211,.32); border-radius: 6px; }
.tapa { position: relative; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 40px; text-align: center; }
.tapa-k { font-size: .7rem; letter-spacing: .42em; text-transform: uppercase; color: rgba(225,220,211,.7); }
.tapa-t {
  font-family: 'Fraunces', Georgia, serif; font-weight: 700; font-size: clamp(4.5rem, 3rem + 4vw, 7.2rem); line-height: 1; letter-spacing: .14em; margin-right: -.14em;
  background: linear-gradient(180deg, #F1EEE8 0%, #DBD6CE 52%, #F1EEE8 100%); -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 -1px 0 rgba(0,0,0,.65)) drop-shadow(0 1px 0 rgba(255,255,255,.14));
}
.tapa-s { font-family: 'Fraunces', Georgia, serif; font-style: italic; font-size: 1rem; color: rgba(225,220,211,.75); }
.tapa-sello { display: flex; align-items: center; justify-content: center; width: 62px; height: 62px; margin-top: 18px; border: 1.5px solid rgba(225,220,211,.45); border-radius: 50%; font-family: 'Fraunces', Georgia, serif; font-weight: 700; font-size: 1.6rem; color: #E1DCD3; }
.tapa-sello i { font-style: normal; color: var(--lime); }
.tapa-pie { position: absolute; left: 0; right: 0; bottom: 34px; font-size: .6rem; letter-spacing: .3em; text-transform: uppercase; color: rgba(225,220,211,.5); }
.ps-steps .pg-portada .pg-hint { color: #E1DCD3; bottom: 70px; right: 54px; }

/* Funda, dorso trasparentado y brillo del pliegue (solo escritorio) */
.carta-funda, .ps-steps .pg-dorso { display: none; }
@media (min-width: 981px) {
  .ps-steps { isolation: isolate; }
  .carta-funda {
    display: block; position: absolute; z-index: -1; left: -18px; right: -18px; top: -18px; bottom: -6px; border-radius: 5px;
    background-color: #20201F;
    background-image:
      url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='c'><feTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .5 0'/></filter><rect width='100%25' height='100%25' filter='url(%23c)' opacity='.07'/></svg>"),
      radial-gradient(120% 90% at 20% 10%, rgba(255,255,255,.07), transparent 55%);
    box-shadow: 0 34px 70px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.06);
  }
  .carta-funda::before { content: ''; position: absolute; inset: 8px; border: 1.5px dashed rgba(225,220,211,.26); border-radius: 4px; }
  .carta-funda i { position: absolute; width: 34px; height: 34px; background: linear-gradient(135deg, #F3EFDF, #A9A186 55%, #E2DBC4); }
  .carta-funda i:nth-child(1) { top: 0; left: 0; clip-path: polygon(0 0, 100% 0, 0 100%); border-top-left-radius: 16px; }
  .carta-funda i:nth-child(2) { top: 0; right: 0; clip-path: polygon(0 0, 100% 0, 100% 100%); border-top-right-radius: 16px; }
  .carta-funda i:nth-child(3) { bottom: 0; right: 0; clip-path: polygon(100% 0, 100% 100%, 0 100%); border-bottom-right-radius: 16px; }
  .carta-funda i:nth-child(4) { bottom: 0; left: 0; clip-path: polygon(0 0, 100% 100%, 0 100%); border-bottom-left-radius: 16px; }
  .ps-steps .pg-dorso {
    display: block; z-index: 31; visibility: hidden; pointer-events: none; transform-origin: 0 0;
    background: none; box-shadow: none; opacity: .14; filter: blur(.4px);
  }
  .ps-steps .pg-dorso::before, .ps-steps .pg-dorso::after { display: none; }
  .pg-brillo { stroke: rgba(255,255,255,.9); stroke-width: 1.6; }
  .pg-curl.tapa .pg-flap { fill: url(#pgTapaDorso); }
  .pg-curl.tapa .pg-brillo { stroke: rgba(225,220,211,.35); }
}
/* hoja 1 con siete platos: en pantallas bajas o estrechas solo los nombres */
@media (min-width: 981px) and (max-height: 860px), (min-width: 981px) and (max-width: 1200px) {
  .ps-steps .pg-v1 .pd-lista .pl-d { display: none; }
  .ps-steps .pg-v1 .pg-platos li { padding: 4px 0 5px; }
}
/* pantallas estrechas de escritorio y tabletas en horizontal (981-1200 px) */
@media (min-width: 981px) and (max-width: 1200px) {
  .ps-steps .pg-v1 .pd-foto { display: none; }
  .ps-steps .pg-v1 .pd-cuerpo { grid-template-columns: 1fr; }
  .ps-steps .pd-marida a em, .ps-steps .pg-adorno, .ps-steps .pg-kick, .ps-steps .pg-foot span:last-child { display: none; }
}
@media (min-width: 981px) and (max-width: 1200px) and (max-height: 800px) {
  .ps-steps .vn-tabla td:first-child em { display: none; }
}
/* portátiles con poca altura: la página tiene que caber entera */
@media (min-width: 981px) and (max-height: 860px) {
  .ps-steps .pg-adorno { margin: 2px auto 8px; }
  .ps-steps .pg-platos li { padding: 4px 0 5px; }
  .ps-steps .pl-n { font-size: .94rem; }
  .ps-steps .pl-d { font-size: .78rem; }
  .ps-steps .pg-sugerencia { padding: 10px 12px 9px; margin-bottom: 12px; }
  .ps-steps .pg-sugerencia p { font-size: .94rem; }
  .ps-steps .pg-queda li { padding: 4px 0; font-size: .8rem; }
}
@media (min-width: 981px) and (max-height: 740px) {
  .ps-steps .pg-adorno, .ps-steps .pg-kick { display: none; }
  .ps-steps .ps-step h3.pg-area { font-size: 1.6rem; }
  .ps-steps .pg-hand { font-size: 1.1rem; }
  .ps-steps .pl-d { font-size: .74rem; }
  .ps-steps .pg-platos li { padding: 3px 0 4px; }
  .ps-steps .pg-foot span:last-child { display: none; }
}
/* móvil: las páginas del método se pliegan a su cabecera */
@media (max-width: 980px) {
  .ps-steps article.ps-step { margin-bottom: 12px; padding: 18px 18px 16px; }
  .ps-steps article.ps-step:not(.abierta) > :not(.pg-head) { display: none; }
  .ps-steps .pg-head { position: relative; cursor: pointer; padding-right: 34px; margin-bottom: 0; justify-items: start; text-align: left; }
  .ps-steps article.abierta .pg-head { margin-bottom: 12px; }
  .ps-steps .pg-head::after {
    content: ''; position: absolute; right: 0; top: 50%; width: 26px; height: 26px; margin-top: -13px; border-radius: 50%;
    background: #EFE8D6 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 9l6 6 6-6' fill='none' stroke='%234B5C23' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / 14px no-repeat;
    transition: transform .35s cubic-bezier(.2,.8,.2,1);
  }
  .ps-steps article.abierta .pg-head::after { transform: rotate(180deg); }
  .ps-steps .ps-step h3.pg-area { font-size: 1.7rem; }
  .ps-steps .pg-hand { font-size: 1.15rem; }
  .ps-steps .pg-head:focus-visible { outline: 2px solid var(--forest-700); outline-offset: 4px; border-radius: 6px; }
}
@media (max-width: 980px) {
  .pg-portada { display: none; }
  .pg-cuerpo { grid-template-columns: 1fr; gap: 14px; }
  .ps-steps .pg-foot { flex-direction: column; align-items: center; gap: 2px; }
}

/* =====================================================================
   MANUAL DE OPERACIONES: ARCHIVADOR DE ANILLAS CON PESTAÑAS
   ===================================================================== */
.manual { display: grid; grid-template-columns: 1fr 270px; gap: 44px; align-items: center; }
.mn-carpeta { position: relative; display: grid; grid-template-columns: 54px 1fr 200px; min-height: 480px; filter: drop-shadow(0 30px 40px rgba(16,16,14,.16)); }
.mn-anillas {
  position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: space-around; align-items: center; padding: 30px 0;
  border-radius: 5px 0 0 5px; background: linear-gradient(90deg, #181817, #2E2D2C 70%, #20201F);
}
.mn-anillas i {
  display: block; width: 46px; height: 22px; translate: 20px 0; border-radius: 4px;
  border: 5px solid #CDD2CC; border-left-color: #8E968F; border-bottom-color: #7A827C; box-shadow: 0 2px 3px rgba(0,0,0,.3);
}
.mn-hoja {
  position: relative; z-index: 1; padding: 24px 30px 44px 42px; border-radius: 0 4px 4px 0;
  background-color: #FFFEF9;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='f'><feTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .35  0 0 0 0 .3  0 0 0 0 .2  0 0 0 .55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23f)' opacity='.14'/></svg>");
}
/* taladros de la hoja, alineados con las anillas */
.mn-hoja::before { content: ''; position: absolute; left: 12px; top: 0; bottom: 0; width: 14px; background: radial-gradient(circle at 7px 50%, #E6E0CF 5px, transparent 5.6px) 0 0 / 14px 33.333% repeat-y; }
.mn-hoja-top { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 16px; padding-bottom: 10px; border-bottom: 2px solid var(--ink); font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; color: #8A867C; }
.mn-caps { position: relative; min-height: 300px; }
.mn-cap[hidden] { display: none; }
.mn-cap { animation: mnEntra .5s cubic-bezier(.2,.8,.2,1); }
@keyframes mnEntra { from { opacity: 0; transform: translateX(22px); } }
.mn-cap-head { display: flex; align-items: baseline; gap: 14px; margin-bottom: 12px; padding-left: 12px; border-left: 6px solid var(--c); }
.mn-cap-n { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; color: #8A867C; white-space: nowrap; }
.mn-cap-head h3 { margin: 0; font-family: var(--head); font-size: clamp(1.5rem, 1.1rem + 1vw, 2rem); color: var(--ink); }
.mn-tabla-h, .mn-tabla li { display: grid; grid-template-columns: 70px 1fr 130px; gap: 12px; }
.mn-tabla-h { padding: 6px 0; border-bottom: 1px solid #D9D3C3; font-size: .6rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #8A867C; }
.mn-tabla-h span:last-child { text-align: right; }
.mn-tabla { list-style: none; padding: 0; margin: 0; }
.mn-tabla li { align-items: baseline; margin: 0; padding: 11px 0; border-bottom: 1px dotted #D3CDBE; }
.mn-cod { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .72rem; color: #6B6860; }
.mn-paso { font-size: .93rem; line-height: 1.4; color: var(--ink); }
.mn-quien { text-align: right; font-size: .76rem; font-weight: 600; color: #41403E; }
.mn-nota { position: absolute; right: 26px; bottom: 14px; margin: 0; rotate: -2deg; font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.1rem; color: #B23C24; }
.mn-tabs { display: flex; flex-direction: column; gap: 4px; padding: 18px 0; margin-left: -6px; }
.mn-tab {
  appearance: none; border: 0; cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 9px 14px; text-align: left;
  border-radius: 0 3px 3px 0; background: var(--c); color: var(--ink); font: 600 .82rem/1.2 var(--body);
  box-shadow: inset 7px 0 7px -5px rgba(0,0,0,.2); filter: saturate(.7) brightness(.97);
  transition: translate .35s cubic-bezier(.2,.8,.2,1), filter .3s ease, box-shadow .3s ease;
}
.mn-tab b { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .68rem; opacity: .6; }
.mn-tab:hover { translate: 6px 0; filter: none; }
.mn-tab.on { translate: 14px 0; filter: none; box-shadow: inset 7px 0 7px -5px rgba(0,0,0,.2), 4px 4px 12px rgba(0,0,0,.12); }
.mn-tab:focus-visible { outline: 2px solid var(--forest-700); outline-offset: 2px; }
.mn-incluye { list-style: none; padding: 0; margin: 0; display: grid; gap: 20px; }
.mn-incluye li { margin: 0; padding-left: 16px; border-left: 3px solid var(--lime-ink); }
.mn-incluye b { display: block; margin-bottom: 3px; font-family: var(--head); font-size: 1.05rem; letter-spacing: -.02em; color: var(--ink); }
.mn-incluye span { display: block; font-size: .9rem; line-height: 1.5; color: var(--ink-2); }
@media (max-width: 1080px) {
  .manual { grid-template-columns: 1fr; }
  .mn-incluye { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
  /* móvil: la hoja a la izquierda y las pestañas asomando por la derecha, como en el ordenador */
  .mn-carpeta { grid-template-columns: 1fr 96px; min-height: 0; filter: drop-shadow(0 18px 26px rgba(16,16,14,.14)); }
  .mn-anillas, .mn-hoja::before, .mn-hoja-top span:last-child, .mn-tabla-h { display: none; }
  .mn-hoja { padding: 16px 14px 14px; border-radius: 6px 0 0 6px; }
  .mn-hoja-top { margin-bottom: 10px; font-size: .56rem; }
  .mn-caps { min-height: 0; }
  .mn-cap-head { gap: 8px; margin-bottom: 6px; padding-left: 8px; border-left-width: 4px; flex-direction: column; align-items: flex-start; }
  .mn-cap-head h3 { font-size: 1.2rem; line-height: 1.15; }
  .mn-cap-n { font-size: .56rem; }
  .mn-tabla li { grid-template-columns: auto 1fr; grid-template-areas: "cod quien" "paso paso"; gap: 1px 8px; padding: 8px 0; }
  .mn-cod { grid-area: cod; font-size: .62rem; }
  .mn-quien { grid-area: quien; text-align: right; font-size: .66rem; }
  .mn-paso { grid-area: paso; font-size: .84rem; line-height: 1.35; }
  .mn-nota { position: static; margin-top: 10px; font-size: 1rem; }
  .mn-tabs { flex-direction: column; gap: 3px; margin: 0 0 0 -4px; padding: 10px 0; }
  .mn-tab { padding: 7px 8px; gap: 5px; align-items: flex-start; font-size: .68rem; line-height: 1.15; border-radius: 0 9px 9px 0; }
  .mn-tab b { font-size: .58rem; }
  .mn-tab:hover { translate: 0 0; }
  .mn-tab.on { translate: 6px 0; }
  .mn-incluye { grid-template-columns: 1fr 1fr; gap: 14px; }
  .mn-incluye b { font-size: .92rem; }
  .mn-incluye span { font-size: .8rem; }
}
@media (prefers-reduced-motion: reduce) { .mn-cap { animation: none; } .mn-tab { transition: none; } }

/* =====================================================================
   GRÁFICOS PROPIOS
   Papel térmico (IBM Plex Mono) para comandas y tickets, y anotaciones a
   rotulador (Caveat) sobre los gráficos, como un consultor marcando un
   informe. El rojo de rotulador es #B23C24.
   ===================================================================== */

/* ---------- Comandas colgadas del pase ---------- */
.pase-sec { padding-top: 46px; padding-bottom: 52px; overflow: hidden; }
.rail {
  position: relative; z-index: 2; height: 12px; margin: 0 -14px; border-radius: 6px;
  background: linear-gradient(180deg, #ECECEB 0%, #AEB5AF 45%, #7D857F 58%, #CDD1CB 100%);
  box-shadow: 0 8px 16px rgba(16,16,14,.14), inset 0 1px 0 rgba(255,255,255,.7);
}
.tickets { display: grid; grid-template-columns: repeat(4, 1fr); gap: 30px; padding: 0 10px; margin-top: -5px; }
.tk { position: relative; rotate: var(--r, 0deg); transform-origin: 50% 0; filter: drop-shadow(0 16px 16px rgba(16,16,14,.14)); }
.tk::before {
  content: ''; position: absolute; z-index: 3; top: -3px; left: 50%; width: 46px; height: 18px; margin-left: -23px; border-radius: 4px;
  background: linear-gradient(180deg, #9AA29C, #5E6660); box-shadow: inset 0 1px 0 rgba(255,255,255,.35);
}
.tk-paper, .rc-paper {
  --z: 9px;
  background: #FFFEF9; color: var(--ink); font-family: 'IBM Plex Mono', ui-monospace, Menlo, Consolas, monospace;
  -webkit-mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(2 * var(--z)) 100%;
          mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(2 * var(--z)) 100%;
}
.tk-paper { padding: 28px 18px calc(20px + var(--z)); }
.js .tk .tk-paper { clip-path: inset(0 0 100% 0); transition: clip-path 1.3s steps(16, end); transition-delay: calc(var(--d, 0s) + .25s); }
.js .tk.in .tk-paper { clip-path: inset(0 0 0 0); }
.tk-paper header { display: flex; justify-content: space-between; padding-bottom: 10px; border-bottom: 1px dashed #BDB8AC; font-size: .66rem; letter-spacing: .06em; text-transform: uppercase; color: #6B6860; }
.tk-k { margin: 14px 0 4px; font-size: .72rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.tk-big { display: block; font-weight: 600; font-size: clamp(1.9rem, 1.3rem + 1.6vw, 2.6rem); line-height: 1.05; letter-spacing: -.04em; color: var(--ink); font-variant-numeric: tabular-nums; }
.tk-big small { font-size: .45em; font-weight: 500; letter-spacing: 0; }
.tk-d { margin: 10px 0 14px; padding-bottom: 14px; border-bottom: 1px dashed #BDB8AC; font-size: .78rem; line-height: 1.5; color: #4A4740; }
.tk-paper footer { text-align: center; font-size: .64rem; letter-spacing: .1em; text-transform: uppercase; color: #8A867C; }
.tk:hover { animation: balanceo 1.4s cubic-bezier(.3,.7,.4,1); }
@keyframes balanceo { 0% { rotate: var(--r); } 25% { rotate: calc(var(--r) * -1.8); } 55% { rotate: calc(var(--r) * 1.2); } 80% { rotate: calc(var(--r) * -.5); } 100% { rotate: var(--r); } }
.pase-sec .numbers-note { margin-top: 30px; }

/* ---------- Paneles del cuadro de mando ---------- */
.boards { display: grid; grid-template-columns: 1.12fr .88fr; gap: 22px; align-items: stretch; }
.board { position: relative; background: var(--card); border: 1px solid var(--line); border-radius: 7px; padding: 24px 24px 20px; box-shadow: var(--shadow); }
.bd-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 20px; }
.bd-k { display: block; font-size: .64rem; letter-spacing: .13em; text-transform: uppercase; font-weight: 700; color: var(--ink-2); }
.bd-top > div b { display: block; margin-top: 5px; font-family: var(--head); font-size: 1.12rem; letter-spacing: -.03em; color: var(--ink); }
.bd-top .en-vivo { flex: none; margin: 2px 0 0; font-size: .7rem; letter-spacing: 0; text-transform: none; font-weight: 500; color: var(--ink-2); }
.bd-top .en-vivo b { color: var(--ink); font-weight: 700; transition: color .5s ease; }
.bd-top .en-vivo b.tick { color: var(--lime-ink); }
.bd-ok { flex: none; padding: 6px 10px; border-radius: 8px; background: var(--lime-tint); color: #373633; font-size: .72rem; font-weight: 700; }

/* Mapa de calor */
.heat { display: grid; grid-template-columns: 22px repeat(4, 1fr) 8px repeat(4, 1fr); gap: 4px; }
.heat .h { padding-bottom: 2px; text-align: center; font-size: .6rem; color: var(--ink-2); }
.heat .dia { align-self: center; font-size: .7rem; font-weight: 700; color: var(--ink-2); }
.heat .c {
  position: relative; display: block; aspect-ratio: 1.55 / 1; border-radius: 5px;
  background: var(--c, rgba(23,67,58, calc(.06 + var(--o) * .94)));
  transition: opacity .5s ease, transform .6s cubic-bezier(.2,.8,.2,1), box-shadow .25s ease;
}
.js .heat .c { opacity: 0; transform: scale(.4); transition-delay: calc(var(--k) * 12ms); }
.js .in .heat .c { opacity: 1; transform: none; }
.heat .c:hover, .js .in .heat .c:hover { transform: scale(1.14); box-shadow: 0 6px 14px rgba(0,0,0,.2); z-index: 2; transition-delay: 0s; }
.heat .c.now { outline: 2px solid var(--lime-dark); outline-offset: 2px; animation: ahora 1.6s ease-in-out infinite; }
@keyframes ahora { 50% { outline-color: rgba(139,135,127,.15); } }
.heat-leg { display: flex; align-items: center; gap: 8px; margin-top: 12px; font-size: .64rem; color: var(--ink-2); }
.heat-leg i { width: 120px; height: 8px; border-radius: 4px; background: linear-gradient(90deg, #2E2D2C, #DDD8CF 30%, #F1EEE8 50%, #F8D6C8 62%, #D6684E); }
.heat-leg .obj { padding: 2px 8px; border-radius: 6px; background: var(--lime-tint); color: #373633; font-weight: 600; }
.heat-leg .now-leg { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; }
.heat-leg .now-leg::before { content: ''; width: 9px; height: 9px; border-radius: 3px; outline: 2px solid var(--lime-dark); }

/* Marcas a rotulador sobre celdas y puntos */
.mk {
  position: absolute; z-index: 3; top: 50%; left: 50%; width: 34px; height: 30px; margin: -15px 0 0 -17px; pointer-events: none;
  border: 2px solid #B23C24; border-radius: 52% 48% 55% 45% / 48% 55% 45% 52%; rotate: -8deg;
}
.mk::after { content: attr(data-n); position: absolute; top: -17px; right: -12px; font: 700 1.25rem/1 'Caveat', cursive; color: #B23C24; rotate: 8deg; }
.js .mk { opacity: 0; scale: .2; transition: opacity .3s ease 1.2s, scale .5s cubic-bezier(.3,1.6,.5,1) 1.2s; }
.js .in .mk { opacity: 1; scale: 1; }
.notes { list-style: none; padding: 0; margin: 14px 0 0; display: grid; gap: 4px; counter-reset: nt; }
.notes[start="3"] { counter-reset: nt 2; }
.notes[start="5"] { counter-reset: nt 4; }
.notes li {
  counter-increment: nt; display: flex; align-items: baseline; gap: 10px; margin: 0;
  font-family: 'Caveat', cursive; font-weight: 600; font-size: 1.3rem; line-height: 1.15; color: #B23C24;
}
.notes li::before {
  content: counter(nt); flex: none; display: inline-grid; place-items: center; width: 24px; height: 23px; translate: 0 2px;
  border: 2px solid currentColor; border-radius: 52% 48% 55% 45% / 48% 55% 45% 52%; font-size: 1rem; line-height: 1;
}
.js .notes li { opacity: 0; translate: -10px 0; transition: opacity .5s ease 1.5s, translate .5s ease 1.5s; }
.js .notes li:nth-child(2) { transition-delay: 1.8s; }
.js .in .notes li { opacity: 1; translate: 0 0; }

/* Matriz de ingeniería de menú */
.mx {
  position: relative; aspect-ratio: 1.25 / 1; margin: 4px 4px 26px 20px;
  border-left: 2px solid var(--ink); border-bottom: 2px solid var(--ink);
  background:
    repeating-linear-gradient(180deg, #CFC8B6 0 5px, transparent 5px 10px) 50% 0 / 1px 100% no-repeat,
    repeating-linear-gradient(90deg, #CFC8B6 0 5px, transparent 5px 10px) 0 50% / 100% 1px no-repeat,
    linear-gradient(rgba(221,216,207,.16), rgba(221,216,207,.16)) 100% 0 / 50% 50% no-repeat;
}
.mx .q { position: absolute; font-size: .6rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #A39A8A; }
.mx .q1 { top: 8px; left: 10px; }
.mx .q2 { top: 8px; right: 10px; color: var(--lime-ink); }
.mx .q3 { bottom: 8px; left: 10px; color: var(--bad); }
.mx .q4 { bottom: 8px; right: 10px; }
.mx .ax-y { position: absolute; left: -12px; top: 50%; transform: translate(-50%, -50%) rotate(-90deg); font-size: .62rem; color: var(--ink-2); white-space: nowrap; }
.mx .ax-x { position: absolute; right: 0; bottom: -22px; font-size: .62rem; color: var(--ink-2); }
.mx-dot {
  position: absolute; left: calc(var(--x) * 1%); top: calc(var(--y) * 1%); width: 12px; height: 12px; margin: -6px 0 0 -6px; border-radius: 50%;
  background: var(--forest-700); box-shadow: 0 0 0 4px rgba(46,45,44,.12);
  transition: left 1s cubic-bezier(.2,.8,.2,1), top 1s cubic-bezier(.2,.8,.2,1), opacity .4s ease; transition-delay: calc(.2s + var(--k) * 90ms);
}
.mx-dot b { position: absolute; left: 16px; top: 50%; translate: 0 -50%; white-space: nowrap; font-size: .7rem; font-weight: 600; color: var(--ink); }
.mx-dot.izq b { left: auto; right: 16px; }
.js .mx-dot { left: 50%; top: 50%; opacity: 0; }
.js .in .mx-dot { left: calc(var(--x) * 1%); top: calc(var(--y) * 1%); opacity: 1; }

/* Cuatro puntos bajo los paneles */
.tech-points { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; margin-top: 30px; padding-top: 26px; border-top: 1px solid var(--line); }
.tech-points b { display: block; margin-bottom: 4px; font-family: var(--head); font-size: 1.02rem; letter-spacing: -.02em; color: var(--ink); }
.tech-points span { display: block; font-size: .88rem; line-height: 1.5; color: var(--ink-2); }

/* ---------- Cascada antes / después ---------- */
.wf { position: relative; display: grid; grid-template-columns: repeat(5, 1fr); height: 300px; padding: 34px 0 30px; margin-top: 6px; border-bottom: 1px solid var(--forest-line); }
.wf-col { position: relative; height: 100%; --b: 0; --h: 100; --lvl: 100; }
.wf-col i {
  position: absolute; left: 16%; right: 16%; bottom: calc(var(--b) * 1%); height: calc(var(--h) * 1%); border-radius: 6px;
  background: repeating-linear-gradient(135deg, rgba(232,130,106,.6) 0 6px, rgba(232,130,106,.3) 6px 12px);
  transition: bottom .3s ease, height .3s ease;
}
.wf-total i { background: var(--lime); }
.wf-res i { background: #E8826A; transition: bottom .3s ease, height .3s ease, background-color .4s ease; }
.wf-res.good i { background: var(--lime); }
.wf-v {
  position: absolute; left: 0; right: 0; bottom: calc((var(--b) + var(--h)) * 1% + 8px); text-align: center; white-space: nowrap;
  font-family: var(--head); font-weight: 700; font-size: .92rem; color: #F6F6F5; font-variant-numeric: tabular-nums; transition: bottom .3s ease;
}
.wf-col small { position: absolute; left: 0; right: 0; bottom: -26px; text-align: center; font-size: .74rem; color: #ACA9A4; }
.wf-col:not(.wf-res)::after { content: ''; position: absolute; left: 84%; width: 32%; bottom: calc(var(--lvl) * 1%); border-top: 1px dashed rgba(255,255,255,.4); transition: bottom .3s ease; }
.wf-note {
  position: absolute; right: 1%; top: 0; margin: 0; text-align: right; rotate: -4deg;
  font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.55rem; line-height: 1.02; color: var(--lime);
  opacity: 0; translate: 0 10px; transition: opacity .5s ease, translate .5s ease;
}
.wf.show .wf-note { opacity: 1; translate: 0 0; }

/* ---------- Temperatura de cámara y registros ---------- */
.temp { display: block; width: 100%; height: auto; overflow: visible; }
.temp .band { fill: var(--lime-tint); }
.temp .band-t { font: 600 9px var(--body); fill: var(--lime-ink); text-anchor: end; }
.temp .gl { stroke: var(--line); stroke-width: 1; }
.temp .ax { font: 500 9px var(--body); fill: #A39A8A; text-anchor: end; }
.temp .ax-x { text-anchor: middle; }
.temp .tl-path { fill: none; stroke: var(--forest-700); stroke-width: 2.2; stroke-linejoin: round; stroke-linecap: round; }
.js .temp .tl-path { stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 2s cubic-bezier(.45,0,.2,1) .3s; }
.js .in .temp .tl-path { stroke-dashoffset: 0; }
.temp .alarm { fill: var(--bad); }
.temp .alarm-ring { fill: none; stroke: #B23C24; stroke-width: 2; transform-box: fill-box; transform-origin: center; }
.js .temp .alarm, .js .temp .alarm-ring { opacity: 0; transition: opacity .4s ease 1.9s; }
.js .in .temp .alarm { opacity: 1; }
.in .temp .alarm-ring, html:not(.js) .temp .alarm-ring { opacity: 1; animation: alarma 1.8s ease-out 2s infinite; }
@keyframes alarma { 0% { scale: .5; opacity: 1; } 100% { scale: 1.9; opacity: 0; } }
.checks { list-style: none; padding: 0; margin: 14px 0 0; border-top: 1px solid var(--line); }
.checks li { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin: 0; padding: 10px 6px; border-bottom: 1px solid var(--line); font-size: .88rem; color: var(--ink); }
.checks li span { display: flex; align-items: center; gap: 10px; }
.checks li span::before {
  content: ''; flex: none; width: 18px; height: 18px; border-radius: 5px; border: 1.5px solid #C9C2B0;
  background: transparent center / 12px no-repeat; transition: background-color .3s ease, border-color .3s ease;
}
.checks li.ok span::before {
  background-color: var(--lime); border-color: var(--lime-dark);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m5 12.5 4.5 4.5L19 7.5' fill='none' stroke='%2310291F' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}
.checks small { font-size: .74rem; color: var(--ink-2); font-variant-numeric: tabular-nums; }
.checks li:not(.ok) small { color: var(--warn); font-weight: 600; }
.checks li.recien { animation: firma 1.2s ease; }
@keyframes firma { 0% { background: var(--lime-tint); } 100% { background: transparent; } }

/* ---------- Ticket del diagnóstico ---------- */
.receipt { width: 100%; max-width: 420px; justify-self: center; rotate: 2deg; filter: drop-shadow(0 26px 30px rgba(0,0,0,.45)); }
.rc-paper { --z: 10px; padding: 26px 24px calc(22px + var(--z)); }
.js .receipt .rc-paper { clip-path: inset(0 0 100% 0); transition: clip-path 2.2s steps(24, end) .6s; }
.js .receipt.in .rc-paper { clip-path: inset(0 0 0 0); }
.rc-paper header { display: grid; gap: 2px; padding-bottom: 12px; border-bottom: 1px dashed #BDB8AC; text-align: center; font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: #6B6860; }
.rc-paper header b { font-size: .9rem; letter-spacing: .08em; color: var(--ink); }
.rc-sub { margin: 12px 0 6px; font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: #6B6860; }
.rc-paper ol { list-style: none; padding: 0; margin: 0 0 12px; counter-reset: rc; }
.rc-paper li { counter-increment: rc; display: flex; align-items: baseline; gap: 8px; margin: 0; padding: 6px 0; font-size: .8rem; }
.rc-paper li::before { content: counter(rc, decimal-leading-zero); color: #8A867C; }
.rc-paper li span { flex: 1; display: flex; align-items: baseline; min-width: 0; }
.rc-paper li span::after { content: ''; flex: 1; min-width: 12px; margin: 0 4px; border-bottom: 2px dotted #C9C2B0; translate: 0 -3px; }
.rc-paper li b { font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.rc-total { display: flex; justify-content: space-between; align-items: baseline; padding: 12px 0; border-top: 2px solid var(--ink); border-bottom: 1px dashed #BDB8AC; font-size: .76rem; font-weight: 600; text-transform: uppercase; }
.rc-total b { font-size: 1.6rem; letter-spacing: -.03em; }
.rc-paper footer { margin-top: 12px; text-align: center; font-size: .64rem; line-height: 1.7; letter-spacing: .06em; text-transform: uppercase; color: #8A867C; }

/* Halo blanco para que la marca se vea también sobre celdas oscuras o rojas */
.heat .mk { box-shadow: 0 0 0 2px rgba(255,255,255,.85), inset 0 0 0 1px rgba(255,255,255,.6); }

/* ---------- Precios: la carta de la casa ---------- */
.offer {
  position: relative; max-width: 1000px; margin: 0 auto; padding: 50px 60px 34px;
  background: #FFFEF9; border: 1px solid var(--line); border-radius: 6px; box-shadow: 0 30px 70px rgba(16,16,14,.09);
}
.offer::before { content: ''; position: absolute; inset: 10px; border: 1px solid #E6E1D3; border-radius: 3px; pointer-events: none; }
.of-head { display: grid; justify-items: center; gap: 4px; margin-bottom: 18px; text-align: center; }
.of-kicker { font-size: .7rem; font-weight: 700; letter-spacing: .32em; text-transform: uppercase; color: var(--lime-ink); }
.of-head b { font-family: var(--head); font-weight: 700; font-size: clamp(2rem, 1.4rem + 1.8vw, 2.9rem); letter-spacing: -.045em; color: var(--ink); line-height: 1.05; }
.of-hand { font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.45rem; color: #B23C24; rotate: -3deg; }
.of-cat { display: flex; align-items: center; gap: 16px; margin: 26px 0 4px; font-size: .7rem; font-weight: 700; letter-spacing: .3em; text-transform: uppercase; color: var(--ink-2); }
.of-cat::before, .of-cat::after { content: ''; flex: 1; height: 1px; background: #E3DED0; }
.of-row {
  position: relative; display: grid; grid-template-columns: 34px auto 1fr auto 44px; align-items: baseline; column-gap: 12px; row-gap: 4px;
  padding: 16px 12px; border-radius: 4px; color: var(--ink); transition: background-color .35s ease, padding .45s cubic-bezier(.2,.8,.2,1);
}
.of-row:hover { text-decoration: none; background-color: #F6F2E6; padding-left: 20px; padding-right: 8px; }
.of-n { grid-row: 1; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .74rem; color: #8A867C; }
.of-name { grid-row: 1; font-family: var(--head); font-weight: 700; font-size: clamp(1.25rem, 1rem + .8vw, 1.7rem); letter-spacing: -.035em; line-height: 1.1; }
.of-dots { grid-row: 1; align-self: end; min-width: 20px; margin-bottom: .45em; border-bottom: 2px dotted #C9C2B0; }
.of-price { grid-row: 1; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-weight: 600; font-size: 1.02rem; white-space: nowrap; color: var(--ink); }
.of-desc { grid-row: 2; grid-column: 2 / 5; max-width: 66ch; font-size: .92rem; line-height: 1.5; color: var(--ink-2); }
.of-desc em { font-style: normal; font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.15rem; color: #B23C24; margin-left: 4px; }
.of-a { grid-row: 1 / span 2; grid-column: 5; align-self: center; position: relative; width: 44px; height: 44px; border-radius: 4px; border: 1px solid var(--line); transition: background-color .35s ease, border-color .35s ease; }
.of-a::after {
  content: ''; position: absolute; inset: 0; margin: auto; width: 15px; height: 15px; background-color: var(--ink);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M7 17 17 7M9 7h8v8' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M7 17 17 7M9 7h8v8' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
  transition: transform .45s cubic-bezier(.7,0,.2,1), background-color .3s ease;
}
.of-row:hover .of-a { background-color: var(--forest-700); border-color: var(--forest-700); }
.of-row:hover .of-a::after { background-color: var(--lime); transform: rotate(45deg); }
.of-foot { margin: 22px 0 0; text-align: center; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; color: #8A867C; }

/* ---------- La calculadora devuelve «la cuenta» ---------- */
.mc-ticket {
  --z: 8px; position: relative; padding: 20px 20px calc(18px + var(--z)); border: 0; border-radius: 0; rotate: -1deg;
  background: #FFFEF9; color: var(--ink); font-family: 'IBM Plex Mono', ui-monospace, Menlo, Consolas, monospace;
  -webkit-mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(2 * var(--z)) 100%;
          mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(2 * var(--z)) 100%;
}
.mc-ticket header { display: flex; justify-content: space-between; padding-bottom: 10px; margin-bottom: 8px; border-bottom: 1px dashed #BDB8AC; font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; color: #6B6860; }
.mc-ticket header span:first-child { font-weight: 600; color: var(--ink); }
.mc-line { display: flex; align-items: baseline; gap: 6px; margin: 0; padding: 4px 0; font-size: .78rem; }
.mc-line span { flex: 1; display: flex; align-items: baseline; }
.mc-line span::after { content: ''; flex: 1; min-width: 10px; margin: 0 4px; border-bottom: 2px dotted #D3CDBE; translate: 0 -3px; }
.mcalc .mc-ticket .mc-line b { display: inline; margin: 0; font: 600 .82rem/1.4 'IBM Plex Mono', ui-monospace, monospace; letter-spacing: 0; color: var(--ink); font-variant-numeric: tabular-nums; }
.mc-total { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-top: 8px; padding: 10px 0 12px; border-top: 2px solid var(--ink); }
.mc-total span { font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.mcalc .mc-ticket .mc-total b { margin: 0; font-family: inherit; font-weight: 600; font-size: clamp(1.7rem, 1.2rem + 1.4vw, 2.3rem); letter-spacing: -.04em; color: #B23C24; }
.mcalc .mc-ticket .mc-total b.ok { color: #373633; }
.mc-ticket .mc-bar { background: #ECE8DD; }
.mc-ticket .mc-bar i { background: #807E79; }
.mc-ticket .mc-bar i.bad { background: #E8826A; }
.mc-ticket .mc-bar em { background: var(--ink); }
.mc-ticket small { color: #8A867C; font-size: .64rem; letter-spacing: .04em; text-transform: uppercase; }
.mc-ticket.reimprime { animation: reimprime .5s steps(5, end); }
@keyframes reimprime { 0% { clip-path: inset(0 0 60% 0); } 100% { clip-path: inset(0); } }

/* ---------- Comandas dentro del arco ---------- */
.wt-in.tkt {
  --z: 7px; padding-bottom: calc(16px + var(--z)); border-radius: 0; box-shadow: none;
  background: #FFFEF9; color: var(--ink); font-family: 'IBM Plex Mono', ui-monospace, monospace;
  -webkit-mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(2 * var(--z)) 100%;
          mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(2 * var(--z)) 100%;
}
.wt:has(.tkt) { filter: drop-shadow(0 18px 22px rgba(0,0,0,.4)); }
.wt-in.tkt .tkh { display: flex; justify-content: space-between; padding-bottom: 8px; margin-bottom: 10px; border-bottom: 1px dashed #BDB8AC; font-size: .6rem; letter-spacing: .08em; text-transform: uppercase; color: #6B6860; }
.wt-in.tkt .v { font-family: inherit; font-weight: 600; letter-spacing: -.04em; }
.wt:hover .wt-in.tkt, .wt.open .wt-in.tkt { box-shadow: none; }

@media (max-width: 720px) {
  .offer { padding: 34px 18px 24px; }
  .offer::before { inset: 6px; }
  .of-row { grid-template-columns: 1fr auto; padding: 14px 6px; }
  .of-row:hover { padding-left: 6px; padding-right: 6px; }
  .of-n, .of-dots, .of-a { display: none; }
  .of-name { grid-column: 1 / -1; }
  .of-price { grid-row: 2; grid-column: 1 / -1; font-size: .92rem; color: var(--lime-ink); }
  .of-desc { grid-row: 3; grid-column: 1 / -1; }
  .wt-in.tkt .tkh { font-size: .5rem; }
}

@media (max-width: 980px) {
  .boards { grid-template-columns: 1fr; }
  .tech-points { grid-template-columns: 1fr 1fr; }
  .tickets { grid-template-columns: 1fr 1fr; row-gap: 40px; }
  .rail { display: none; }
}
@media (max-width: 720px) {
  .tickets { gap: 30px 16px; padding: 0; }
  .tk-paper { padding: 26px 12px calc(16px + var(--z)); }
  .tk-big { font-size: 1.55rem; }
  .tk-d { font-size: .72rem; }
  .board { padding: 18px 14px 16px; }
  .bd-top { flex-direction: column; gap: 8px; }
  .notes li { font-size: 1.15rem; }
  .tech-points { grid-template-columns: 1fr; gap: 16px; }
  .wf { height: 260px; }
  .wf-v { font-size: .68rem; }
  .wf-col small { font-size: .6rem; }
  .wf-note { font-size: 1.2rem; }
  .mx-dot b { font-size: .62rem; }
}
@media (prefers-reduced-motion: reduce) {
  .js .tk .tk-paper, .js .receipt .rc-paper { clip-path: none; transition: none; }
  .js .heat .c, .js .mx-dot, .js .mk, .js .notes li { opacity: 1; transform: none; scale: 1; translate: 0 0; transition: none; }
  .js .mx-dot { left: calc(var(--x) * 1%); top: calc(var(--y) * 1%); }
  .js .temp .tl-path { stroke-dashoffset: 0; transition: none; }
  .js .temp .alarm, .js .temp .alarm-ring { opacity: 1; transition: none; }
  .heat .c.now, .in .temp .alarm-ring, .tk:hover { animation: none; }
}

/* =====================================================================
   HERRAMIENTAS: FICHA TÉCNICA (escandallo) Y CIERRE Z (autodiagnóstico)
   ===================================================================== */
.ficha-wrap, .z-wrap { position: relative; align-self: start; }
.ficha-wrap { padding-top: 18px; overflow-x: clip; }   /* el golpe del sello no debe ensanchar la página */
.ficha {
  position: relative; padding: 40px 26px 26px; border-radius: 6px; rotate: .5deg;
  background: #FFFEF9; color: var(--ink);
  box-shadow: 0 2px 0 #E9E4D6, 0 4px 0 #F3EFE4, 0 30px 60px rgba(16,16,14,.14);
}
.ficha-clip {
  position: absolute; z-index: 2; top: -18px; left: 50%; width: 124px; height: 36px; margin-left: -62px; border-radius: 9px 9px 4px 4px;
  background: linear-gradient(180deg, #D3D7D1, #8E968F 60%, #6F7770); box-shadow: 0 5px 10px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.6);
}
.ficha-clip::after { content: ''; position: absolute; left: 50%; top: 8px; width: 46px; height: 10px; margin-left: -23px; border-radius: 5px; background: #4E5650; box-shadow: inset 0 2px 3px rgba(0,0,0,.45); }
.fh-top { display: flex; justify-content: space-between; padding-bottom: 10px; border-bottom: 2px solid var(--ink); font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; color: #6B6860; }
.fh-top span:first-child { font-weight: 600; color: var(--ink); }
.ficha-head h3 { margin: 14px 0 12px; font-family: var(--head); font-size: 1.55rem; letter-spacing: -.035em; color: var(--ink); }
.fh-meta { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; border: 1px solid #D9D3C3; }
.fh-meta div { padding: 8px 10px; border-right: 1px solid #D9D3C3; }
.fh-meta div:last-child { border-right: 0; }
.fh-meta dt { font-size: .58rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #8A867C; }
.fh-meta dd { margin: 2px 0 0; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-weight: 600; font-size: .84rem; }
.ficha-sub { margin: 16px 0 4px; font-size: .62rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #8A867C; }
.ficha-ing { list-style: none; padding: 0; margin: 0; counter-reset: ing; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .76rem; }
.ficha-ing li { counter-increment: ing; display: flex; align-items: baseline; gap: 8px; margin: 0; padding: 5px 0; border-bottom: 1px dotted #D9D3C3; }
.ficha-ing li::before { content: counter(ing, decimal-leading-zero); color: #A39A8A; }
.ficha-ing li.vacio::before { content: ''; }
.ficha-ing li span { flex: 1; }
.ficha-ing li i { margin-left: 4px; font-style: normal; font-size: .66rem; color: #B23C24; }
.ficha-ing li b { font-weight: 600; white-space: nowrap; }
.ficha-coste { display: flex; justify-content: space-between; align-items: baseline; margin: 14px 0 16px; padding: 12px 14px; border-radius: 6px; background: var(--forest-900); }
.ficha-coste span { font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #ACA9A4; }
.ficha-coste b { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-weight: 600; font-size: 1.9rem; letter-spacing: -.04em; color: var(--lime); }
.ficha-campos { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.ficha-campos .field { margin-bottom: 10px; }
.ficha-campos .hint { font-size: .7rem; }
.ficha input { background: #FFFEF9; border-color: #D9D3C3; }
.ficha .result-row, .zt .result-row { border-bottom-color: #ECE7DA; }
.ficha .value, .zt .value { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-weight: 600; letter-spacing: 0; }
.ficha .verdict, .zt .verdict {
  margin: 16px 0 0; padding: 0; background: none; border: 0;
  font-family: 'Caveat', cursive; font-weight: 600; font-size: 1.32rem; line-height: 1.15;
}
.ficha .verdict strong, .zt .verdict strong { font-size: 1.5rem; margin-bottom: 2px; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; }
.ficha .verdict.good, .zt .verdict.good { color: #2E7D54; }
.ficha .verdict.warn, .zt .verdict.warn { color: #9A6B10; }
.ficha .verdict.bad, .zt .verdict.bad { color: #B23C24; }
.ficha-firma { display: flex; justify-content: space-between; gap: 20px; margin: 20px 0 0; padding-top: 26px; font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; color: #A39A8A; }
.ficha-firma span { flex: 1; padding-top: 6px; border-top: 1px solid #C9C2B0; }
.sello {
  position: absolute; z-index: 3; right: 20px; top: 92px; padding: 6px 14px; border: 3px solid currentColor; border-radius: 8px;
  font-family: 'IBM Plex Mono', ui-monospace, monospace; font-weight: 600; font-size: 1.1rem; letter-spacing: .18em; text-transform: uppercase;
  rotate: -12deg; opacity: 0; pointer-events: none; mix-blend-mode: multiply;
}
.sello.aprobada { color: #2E7D54; opacity: .85; }
.sello.ajustar { color: #C27A12; opacity: .85; }
.sello.revisar { color: #B23C24; opacity: .85; }
.sello.sinprecio { color: #8A867C; opacity: .7; }
.sello.golpe { animation: golpe .5s cubic-bezier(.3,1.6,.5,1); }
@keyframes golpe { 0% { opacity: 0; scale: 2.3; } 60% { opacity: .95; scale: .92; } 100% { scale: 1; } }

/* Cierre Z */
.zt { rotate: -.8deg; filter: drop-shadow(0 24px 30px rgba(16,16,14,.18)); }
.zt-paper {
  --z: 10px; padding: 26px 24px calc(22px + var(--z));
  background: #FFFEF9; color: var(--ink); font-family: 'IBM Plex Mono', ui-monospace, Menlo, Consolas, monospace;
  -webkit-mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(2 * var(--z)) 100%;
          mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / calc(2 * var(--z)) 100%;
}
.js .zt .zt-paper { clip-path: inset(0 0 100% 0); transition: clip-path 2.4s steps(26, end) .3s; }
.js .zt.in .zt-paper { clip-path: inset(0 0 0 0); }
.zt-head { display: grid; gap: 2px; margin-bottom: 8px; padding-bottom: 12px; border-bottom: 1px dashed #BDB8AC; text-align: center; font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: #6B6860; }
.zt-head b { font-size: .9rem; letter-spacing: .08em; color: var(--ink); }
.zt-line { display: flex; align-items: baseline; gap: 8px; padding: 5px 0; font-size: .8rem; }
.zt-line span { flex: 1; display: flex; align-items: baseline; }
.zt-line span::after { content: ''; flex: 1; min-width: 10px; margin: 0 4px; border-bottom: 2px dotted #D3CDBE; translate: 0 -3px; }
.zt-line em { font-style: normal; font-size: .74rem; color: #6B6860; font-variant-numeric: tabular-nums; }
.zt-line b { min-width: 64px; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; }
.zt-big { margin-top: 6px; padding-top: 8px; border-top: 1px dashed #BDB8AC; font-weight: 600; }
.zt-big b { font-size: 1.05rem; }
.zt-prime { font-weight: 600; }
.zt-sec { display: flex; align-items: center; gap: 10px; margin: 14px 0 2px; font-size: .64rem; letter-spacing: .16em; text-transform: uppercase; color: #8A867C; }
.zt-sec::before, .zt-sec::after { content: ''; flex: 1; border-top: 1px dashed #BDB8AC; }
.zt .bar { height: 6px; margin: 0 0 4px; border-radius: 0; background: repeating-linear-gradient(90deg, #E7E2D5 0 3px, transparent 3px 5px); }
.zt .bar > i { border-radius: 0; background: repeating-linear-gradient(90deg, var(--ink) 0 3px, transparent 3px 5px); }
.zt .bar > i.is-bad { background: repeating-linear-gradient(90deg, #B23C24 0 3px, transparent 3px 5px); }
.zt .bar > i.is-good { background: repeating-linear-gradient(90deg, #2E7D54 0 3px, transparent 3px 5px); }
.zt .value.is-bad { color: #B23C24; }
.zt .value.is-good { color: #2E7D54; }
.zt .value.is-warn { color: #9A6B10; }
.zt-total { margin-top: 14px; padding: 14px 0; border-top: 2px solid var(--ink); border-bottom: 2px solid var(--ink); text-align: center; }
.zt-total span { display: block; font-size: .72rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.zt-total b { display: block; margin: 4px 0; font-size: clamp(2rem, 1.4rem + 1.6vw, 2.6rem); letter-spacing: -.04em; color: #B23C24; font-variant-numeric: tabular-nums; }
.zt-total small { font-size: .64rem; letter-spacing: .08em; text-transform: uppercase; color: #8A867C; }
.zt-desglose { margin-top: 10px; }
.zt-desglose .result-row { padding: 4px 0; border-bottom: 1px dotted #D9D3C3; }
.zt-desglose .result-row .label { font-size: .74rem; color: #4A4740; }
.zt-desglose .value { font-size: .8rem; }
.zt-desglose p { font-size: .7rem !important; color: #6B6860 !important; }
.zt-foot { margin-top: 14px; text-align: center; font-size: .62rem; line-height: 1.7; letter-spacing: .06em; text-transform: uppercase; color: #8A867C; }
@media (max-width: 720px) {
  .ficha { padding: 36px 16px 20px; rotate: 0deg; }
  .ficha-campos { grid-template-columns: 1fr; gap: 0; }
  .fh-meta dd { font-size: .74rem; }
  .sello { top: 70px; right: 12px; font-size: .9rem; }
  .zt { rotate: 0deg; }
  .zt-paper { padding: 22px 14px calc(18px + var(--z)); }
}
@media (prefers-reduced-motion: reduce) {
  .js .zt .zt-paper { clip-path: none; transition: none; }
  .sello.golpe { animation: none; }
}

/* =====================================================================
   HERRAMIENTAS: EXPEDIENTE DE APERTURA (viabilidad)
   ===================================================================== */
.exp-wrap { position: relative; align-self: start; overflow-x: clip; }
.expediente {
  position: relative; padding: 22px 24px 20px; border-radius: 4px; border-top: 6px solid var(--forest-900);
  background-color: #FBFAF4;
  background-image: repeating-linear-gradient(135deg, rgba(46,45,44,.035) 0 2px, transparent 2px 9px);
  background-size: 100% 70px; background-repeat: no-repeat;
  box-shadow: 0 2px 0 #E9E4D6, 0 30px 60px rgba(16,16,14,.14); color: var(--ink);
}
.ex-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px solid var(--ink); }
.ex-k { display: block; font-size: .58rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: #6B6860; }
.ex-head b { display: block; margin-top: 3px; font-family: var(--head); font-size: 1.35rem; letter-spacing: -.03em; color: var(--ink); }
.ex-n { flex: none; padding: 4px 8px; border: 1px solid #CFC8B6; border-radius: 3px; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .68rem; color: #6B6860; white-space: nowrap; }
.ex-grid { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid #CFC8B6; border-left: 1px solid #CFC8B6; }
.ex-c { padding: 8px 10px; border-right: 1px solid #CFC8B6; border-bottom: 1px solid #CFC8B6; }
.ex-c > span { display: block; font-size: .55rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #8A867C; }
.ex-c b { display: block; margin-top: 3px; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-weight: 600; font-size: .92rem; color: var(--ink); }
.ex-big, .ex-ancha { grid-column: 1 / -1; }
.ex-big { background: rgba(46,45,44,.05); }
.ex-big b { font-size: 2.3rem; letter-spacing: -.03em; line-height: 1.1; }
.ex-big small { font-size: .72rem; color: #6B6860; }
.expediente .value.is-good { color: #2E7D54; }
.expediente .value.is-warn { color: #9A6B10; }
.expediente .value.is-bad { color: #B23C24; }
.ex-sub { display: block; margin: 0 0 4px; font-size: .58rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #6B6860; }
.ex-riesgo { margin-top: 16px; }
.ex-escala { position: relative; height: 12px; margin: 28px 0 24px; border-radius: 6px; background: linear-gradient(90deg, #807E79 0 45%, #E9B949 45% 65%, #E8826A 65% 80%, #B23C24 80% 100%); }
.ex-mk { position: absolute; left: 0; top: -9px; width: 3px; height: 30px; margin-left: -1.5px; border-radius: 2px; background: var(--ink); transition: left .6s cubic-bezier(.2,.8,.2,1); }
.ex-mk span { position: absolute; left: 50%; bottom: 100%; translate: -50% -1px; white-space: nowrap; font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.05rem; line-height: 1; color: var(--ink); }
.ex-mk.prev { background: var(--forest-700); }
.ex-mk.prev span { bottom: auto; top: 100%; translate: -50% 1px; color: var(--forest-700); }
.ex-esc-l { position: relative; height: 14px; margin-top: -18px; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .56rem; color: #A39A8A; }
.ex-esc-l span { position: absolute; top: 0; translate: -50% 0; white-space: nowrap; }
.ex-esc-l span:first-child { translate: 0 0; }
.ex-esc-l span:last-child { translate: -100% 0; }
.ex-extra { margin-top: 18px; }
.ex-extra .result-row { padding: 6px 0; border-bottom: 1px dotted #D3CDBE; }
.ex-extra .result-row .label { font-size: .82rem; }
.ex-extra .value { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-weight: 600; font-size: .86rem; letter-spacing: 0; }
.ex-cap { margin: 0; font-size: .82rem; color: #4A4740; }
.expediente .verdict { margin: 14px 0 0; padding: 0; background: none; border: 0; font-family: 'Caveat', cursive; font-weight: 600; font-size: 1.3rem; line-height: 1.15; }
.expediente .verdict strong { font-size: 1.48rem; margin-bottom: 2px; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; }
.expediente .verdict.good { color: #2E7D54; }
.expediente .verdict.warn { color: #9A6B10; }
.expediente .verdict.bad { color: #B23C24; }
.expediente .sello { top: 70px; right: 22px; }
.ex-firma { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; margin: 18px 0 0; padding-top: 6px; border-top: 1px solid #CFC8B6; font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; color: #8A867C; }
.ex-rubrica { font-family: 'Caveat', cursive; font-weight: 700; font-size: 1.9rem; letter-spacing: 0; text-transform: none; color: #1D3B7A; rotate: -6deg; translate: 0 6px; }
@media (max-width: 720px) {
  .expediente { padding: 18px 14px 16px; }
  .ex-big b { font-size: 1.9rem; }
  .expediente .sello { top: 58px; right: 10px; font-size: .85rem; }
}

/* =====================================================================
   HERRAMIENTAS: MATRIZ VIVA (ingeniería de menú)
   ===================================================================== */
.im-top { display: grid; grid-template-columns: 1.45fr 1fr; gap: 22px; align-items: start; margin-bottom: 22px; }
.im-board .mx { margin-bottom: 30px; }
.im-mx .mx-dot { transition-delay: 0s; }
.im-cuenta { flex: none; padding: 6px 10px; border-radius: 8px; background: var(--cream-2); font-size: .72rem; font-weight: 700; color: var(--ink-2); }
.mx-dot.estrella { background: #41403E; box-shadow: 0 0 0 4px rgba(63,62,60,.16); }
.mx-dot.caballo { background: #C27A12; box-shadow: 0 0 0 4px rgba(194,122,18,.16); }
.mx-dot.puzzle { background: #3F6B8F; box-shadow: 0 0 0 4px rgba(63,107,143,.16); }
.mx-dot.perro { background: #B23C24; box-shadow: 0 0 0 4px rgba(178,60,36,.16); }
.im-mx .mx-dot { cursor: default; }
.im-mx .mx-dot:hover { z-index: 5; scale: 1.25; }
.im-mx .mx-dot:hover b { background: #FFFEF9; padding: 1px 4px; border-radius: 4px; box-shadow: 0 2px 6px rgba(0,0,0,.12); }
.im-ayuda { margin: 12px 0 0; font-size: .82rem; color: var(--ink-2); }
.im-cuads { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.im-q { padding: 16px 16px 14px; border-radius: 5px; border: 1px solid var(--line); border-top: 4px solid var(--c); background: var(--card); }
.im-q.estrella { --c: #41403E; }
.im-q.caballo { --c: #C27A12; }
.im-q.puzzle { --c: #3F6B8F; }
.im-q.perro { --c: #B23C24; }
.im-q h3 { display: flex; justify-content: space-between; align-items: baseline; margin: 0 0 6px; font-size: 1rem; }
.im-n { min-width: 28px; padding: 2px 8px; border-radius: 8px; background: var(--c); color: #fff; text-align: center; font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: .8rem; }
.im-q p { margin: 0 0 8px; font-size: .8rem; line-height: 1.45; color: var(--ink-2); }
.im-lista { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 4px; }
.im-lista li { margin: 0; padding: 2px 8px; border-radius: 6px; background: var(--cream-2); font-size: .74rem; font-weight: 600; color: var(--ink); }
#tabla tr.im-resalta td { background: rgba(221,216,207,.18); }
@media (max-width: 980px) { .im-top { grid-template-columns: 1fr; } }
@media (max-width: 720px) { .im-cuads { grid-template-columns: 1fr; } }

/* =====================================================================
   PÁGINAS INTERIORES (diagnóstico y herramientas)
   ===================================================================== */
.page-hero {
  position: relative; overflow: hidden; isolation: isolate;
  background: #111110; color: #D3D1CE; padding: 152px 0 86px; margin-top: -74px;
}
.page-hero .glow { position: absolute; border-radius: 50%; filter: blur(100px); pointer-events: none; z-index: -1; }
.page-hero .g1 { width: 560px; height: 560px; background: rgba(221,216,207,.13); top: -240px; right: -120px; animation: deriva 16s ease-in-out infinite; }
.page-hero .g2 { width: 460px; height: 460px; background: rgba(88,86,83,.36); bottom: -200px; left: -160px; animation: deriva 19s ease-in-out infinite reverse; }
.page-hero h1 { color: #F6F6F5; font-size: clamp(2.4rem, 1.2rem + 3.6vw, 4.3rem); line-height: 1; letter-spacing: -.05em; max-width: 17ch; margin: 0 0 22px; }
.page-hero h1 em { font-style: normal; color: var(--lime); }
.page-hero .lead { color: #B7B4AF; max-width: 58ch; font-size: 1.14rem; margin: 0; }
.page-hero strong { color: #F6F6F5; }
.page-hero .kicker a { color: inherit; }
.page-hero .actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 30px; }
.ph-split { display: grid; grid-template-columns: 1.1fr .9fr; gap: 60px; align-items: center; }
.tool-sec { padding-top: 64px; }

/* Ranking de acciones (informe de ejemplo en el hero del diagnóstico) */
.rank { background: #181817; border: 1px solid var(--forest-line); border-radius: 7px; padding: 22px 24px; box-shadow: var(--shadow-lg); }
.rank-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: #8E8A83; margin-bottom: 14px; }
.rank-top span:last-child { color: var(--lime); letter-spacing: .06em; }
.rank ol { list-style: none; padding: 0; margin: 0; counter-reset: rk; }
.rank li { counter-increment: rk; display: grid; grid-template-columns: 24px 1fr auto; gap: 4px 12px; align-items: center; margin: 0; padding: 11px 0; border-top: 1px solid var(--forest-line); color: #DFDEDC; font-size: .9rem; }
.rank li::before { content: counter(rk, decimal-leading-zero); font-family: var(--head); font-weight: 700; font-size: .78rem; color: var(--lime); }
.rank li b { font-family: var(--head); font-weight: 700; color: #F6F6F5; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.rank li i { grid-column: 2 / -1; display: block; height: 4px; border-radius: 2px; background: rgba(255,255,255,.08); overflow: hidden; }
.rank li i::after { content: ''; display: block; height: 100%; width: var(--w); background: var(--lime); border-radius: 2px; }
.js .rank li i::after { width: 0; transition: width 1.2s cubic-bezier(.2,.8,.2,1); transition-delay: calc(.5s + var(--k, 0) * 120ms); }
.js .rank.in li i::after { width: var(--w); }
.rank-total { display: flex; justify-content: space-between; align-items: baseline; padding-top: 14px; border-top: 1px solid var(--forest-line); color: #F6F6F5; font-weight: 600; }
.rank-total b { font-family: var(--head); font-size: 1.9rem; letter-spacing: -.05em; color: var(--lime); }
.rank-note { font-size: .74rem; color: #807D78; margin: 12px 0 0; }

/* Las cuatro áreas */
.areas { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.area { position: relative; background: var(--card); border: 1px solid var(--line); border-radius: 7px; padding: 26px 24px; transition: translate .45s cubic-bezier(.2,.8,.2,1), box-shadow .45s ease, border-color .45s ease; }
.area:hover { translate: 0 -6px; box-shadow: var(--shadow); border-color: transparent; }
.area .L { display: block; font-family: var(--head); font-weight: 800; font-size: 4rem; line-height: .8; letter-spacing: -.07em; color: var(--forest-700); margin-bottom: 18px; transition: color .4s ease; }
.area:hover .L { color: var(--lime-ink); }
.area h3 { font-size: 1.15rem; margin-bottom: .35em; }
.area > p { font-size: .9rem; margin-bottom: 14px; }
.area ul { list-style: none; padding: 0; margin: 0; }
.area li { margin: 0; padding: 8px 0; border-top: 1px solid var(--line); font-size: .87rem; color: var(--ink); }

/* Entregables */
.deliv { border-top: 1px solid var(--line); }
.deliv > div { display: grid; grid-template-columns: 1fr 1.2fr; gap: 28px; padding: 22px 6px; border-bottom: 1px solid var(--line); transition: background-color .35s ease, padding .45s cubic-bezier(.2,.8,.2,1); border-radius: 5px; }
.deliv > div:hover { background-color: var(--card); padding-left: 20px; padding-right: 20px; }
.deliv b { font-family: var(--head); font-weight: 700; font-size: 1.15rem; letter-spacing: -.03em; color: var(--ink); }
.deliv span { color: var(--ink-2); }

/* Línea de tiempo de tres semanas */
.tl { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; padding-top: 34px; }
.tl-line { position: absolute; left: 0; right: 0; top: 7px; height: 2px; background: var(--line); border-radius: 2px; overflow: hidden; }
.tl-line i { position: absolute; inset: 0; background: var(--lime-ink); transform-origin: left; }
.js .tl-line i { transform: scaleX(0); transition: transform 1.8s cubic-bezier(.45,0,.2,1) .2s; }
.js .tl.in .tl-line i { transform: scaleX(1); }
.tl-step { position: relative; }
.tl-step::before { content: ''; position: absolute; top: -34px; left: 0; width: 16px; height: 16px; border-radius: 50%; background: var(--cream); border: 3px solid var(--lime-ink); }
.tl-n { display: block; font-family: var(--head); font-weight: 700; font-size: .84rem; color: var(--lime-ink); margin-bottom: 8px; }
.tl-step h3 { font-size: 1.3rem; }
.tl-you { margin: 14px 0 0; padding: 14px 16px; border-radius: 5px; background: var(--card); border: 1px solid var(--line); font-size: .9rem; }

/* Preguntas frecuentes desplegables */
.faq { border-top: 1px solid var(--line); }
.faq details { border-bottom: 1px solid var(--line); interpolate-size: allow-keywords; }
.faq summary {
  list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 20px;
  padding: 22px 4px; font-family: var(--head); font-weight: 700; font-size: 1.15rem; letter-spacing: -.025em; color: var(--ink);
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: ''; flex: none; width: 16px; height: 16px; background-color: var(--forest-700); transition: transform .4s cubic-bezier(.7,0,.2,1);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 4v16M4 12h16' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 4v16M4 12h16' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/></svg>") center / contain no-repeat;
}
.faq details[open] summary::after { transform: rotate(45deg); }
.faq summary:hover { color: var(--forest-700); }
.faq details::details-content { height: 0; overflow: clip; transition: height .45s cubic-bezier(.2,.8,.2,1), content-visibility .45s allow-discrete; }
.faq details[open]::details-content { height: auto; }
.faq details p { margin: 0 4px 24px; max-width: 70ch; }

/* Tarjetas de herramientas */
.tcard { position: relative; display: flex; flex-direction: column; background: var(--card); border: 1px solid var(--line); border-radius: 7px; padding: 28px 26px; color: var(--ink-2); transition: translate .45s cubic-bezier(.2,.8,.2,1), box-shadow .45s ease, border-color .45s ease; }
.tcard:hover { translate: 0 -6px; box-shadow: var(--shadow); border-color: var(--forest-700); text-decoration: none; }
.tcard .nn { font-family: var(--head); font-weight: 700; font-size: .84rem; color: var(--lime-ink); margin-bottom: 26px; }
.tcard h3 { margin-bottom: .45em; }
.tcard p { font-size: .94rem; }
.tcard .meta { margin: auto 0 0; padding-top: 14px; border-top: 1px solid var(--line); font-size: .8rem; font-weight: 600; color: var(--forest-700); }
.tcard::after {
  content: ''; position: absolute; right: 24px; top: 26px; width: 18px; height: 18px; background-color: var(--ink-2);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M7 17 17 7M9 7h8v8' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M7 17 17 7M9 7h8v8' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
  transition: transform .4s cubic-bezier(.2,.8,.2,1), background-color .3s;
}
.tcard:hover::after { transform: rotate(45deg); background-color: var(--forest-700); }

/* Banda lima de cierre */
.lime-cta { display: flex; justify-content: space-between; align-items: center; gap: 30px; }
.lime-cta h2 { margin: 0 0 .3em; max-width: 20ch; }
.lime-cta p { margin: 0; max-width: 56ch; }

/* =================== RESPONSIVE =================== */
@media (max-width: 980px) {
  .ph-split { grid-template-columns: 1fr; gap: 40px; }
  .areas { grid-template-columns: repeat(2, 1fr); }
  .lime-cta { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 720px) {
  .page-hero { padding: 130px 0 60px; }
  .areas, .tl { grid-template-columns: 1fr; }
  .tl { padding-top: 0; padding-left: 30px; gap: 30px; }
  .tl-line { top: 0; bottom: 0; left: 7px; right: auto; width: 2px; height: auto; }
  .tl-line i { transform-origin: top; }
  .js .tl-line i { transform: scaleY(0); }
  .js .tl.in .tl-line i { transform: scaleY(1); }
  .tl-step::before { top: 2px; left: -30px; }
  .deliv > div { grid-template-columns: 1fr; gap: 6px; }
}
@media (max-width: 980px) {
  .ps-side { display: none; }
  .ps-pin { grid-template-columns: 1fr; gap: 0; }
  .ps-step { margin-bottom: 26px; padding: 30px 22px 26px; }
  .ps-img { display: block; position: relative; aspect-ratio: 16 / 10; border-radius: 4px; overflow: hidden; margin-bottom: 20px; }
  .ps-img img { position: absolute; left: 0; top: -8%; width: 100%; height: 116%; object-fit: cover; }
  .ps-k { display: none; }
  .calc-split { grid-template-columns: 1fr; gap: 40px; }
  .ba-row { grid-template-columns: 150px 1fr 120px; }
}
@media (max-width: 860px) {
  .numbers { grid-template-columns: repeat(2, 1fr); }
  .numbers > div:nth-child(2) { border-right: none; }
  .numbers > div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .shead { grid-template-columns: 1fr; gap: 16px; }
  .shead p { justify-self: start; }
  .doors { grid-template-columns: 1fr; }
  .ba-head { flex-direction: column; align-items: flex-start; }
  .ba-ebitda { text-align: left; }
}
@media (max-width: 720px) {
  .wheel-stage { height: 270px; margin-top: 26px; }
  .wt { width: 150px; margin-left: -75px; top: 36px; }
  .wt-in, .wt-in.photo { min-height: 140px; padding: 14px; border-radius: 5px; }
  .wt-in.photo { padding: 8px; }
  .wt-in .v { font-size: 1.4rem; }
  .wt-in .d { display: none; }
  .wt-in .mini { height: 30px; }
  .hx { padding: 120px 0 20px; }
  .hx h1 { font-size: 2.3rem; margin-bottom: 16px; }
  .hx .lead { font-size: 1rem; }
  .hx .actions { margin-top: 22px; gap: 10px; }
  .hx .actions .btn-lg { padding: 15px 18px; font-size: .92rem; }
  .hx-note { font-size: .74rem; }
  .photo-run figure { width: 220px; height: 290px; }
  .photo-run figure:nth-child(even) { height: 230px; }
  .quote-photo { padding: 96px 0; }
  .ps-cols { grid-template-columns: 1fr; gap: 18px; }
  .ps-cols > div:first-child { display: none; }
  .ps-img { aspect-ratio: 16 / 9; }
  .kicker { flex-wrap: wrap; justify-content: center; row-gap: 6px; font-size: .66rem; }
  .kicker .sep { display: none; }
  .kicker b { width: 100%; text-align: center; }
  .page-hero .kicker { justify-content: flex-start; }
  .page-hero .kicker b { text-align: left; }
  .kicker .live { display: none; }
  .dr-body { padding: 24px 22px 26px; }
  .dr li { padding: 8px 0; font-size: .9rem; }
  .dr-img { height: 170px; }
  #producto .ui .ui-list, #producto .ui .ui-chart:has(.anim-bars) { display: none; }
  .hero-split > div > table { display: none; }
  .numbers > div { padding: 28px 16px 26px; }
  .ui-row3 { grid-template-columns: 1fr 1fr; }
  .ui-row3 .ui-kpi:last-child { display: none; }
  .ba { padding: 28px 20px 24px; margin-top: 60px; }
  .ba-row { grid-template-columns: 1fr auto; gap: 6px 12px; }
  .ba-bar { grid-column: 1 / -1; grid-row: 2; }
  .ba-slider { gap: 12px; font-size: .76rem; }
  .track-record { grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
  .track-record div { padding: 12px; }
  .mcalc { padding: 24px; }
}
@media (hover: none), (max-width: 860px) { .of-float { display: none; } }

@media (prefers-reduced-motion: reduce) {
  .marquee-track, .photo-run .track, .hx .glow, .page-hero .glow, .live::after, .en-vivo i::after, .drag-ico { animation: none !important; }
  .js .rank li i::after { width: var(--w); transition: none; }
  .js .tl-line i { transform: none !important; transition: none; }
  .faq details::details-content { transition: none; }
  .js [data-reveal] { opacity: 1; transform: none; transition: none; }
  .js .anim-bars i { height: var(--h); transition: none; }
  [data-split] .w > span { transform: none; transition: none; }
  [data-split] em .w > span { background-size: 100% 3px; }
  .js .sl-line { stroke-dashoffset: 0; transition: none; }
  .js .sl-area { opacity: 1; transition: none; }
  .ps-l, .ps-l img, .ps-l b, .ps-l span, .ps-step { transition: none; }
}


/* =====================================================================
   PORTADA CORTA: tarjetas «a fondo», comanda «pide precio», WhatsApp
   ===================================================================== */
.af-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.af-grid.af-2 { grid-template-columns: repeat(2, 1fr); }
.af {
  display: flex; flex-direction: column; padding: 14px 14px 24px; border-radius: var(--r);
  background: var(--card); border: 1px solid var(--line); color: var(--ink-2); text-decoration: none;
  transition: transform .45s cubic-bezier(.2,.7,.2,1), box-shadow .45s ease, border-color .3s ease;
}
.af:hover { text-decoration: none; transform: translateY(-6px); box-shadow: var(--shadow); border-color: var(--cream-3); }
.af-k { margin: 20px 10px 6px; font-size: .74rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--lime-ink); }
.af h3 { margin: 0 10px 10px; font-size: 1.36rem; max-width: 20ch; }
.af p { margin: 0 10px 18px; font-size: .95rem; line-height: 1.55; }
.af-go { margin: auto 10px 0; display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--forest-700); }
.af-go::after { content: '→'; transition: transform .35s ease; }
.af:hover .af-go::after { transform: translateX(5px); }

.af-vis { position: relative; height: 168px; border-radius: 4px; overflow: hidden; }
/* manual: hoja con pestañas de colores */
.af-manual { background: var(--cream-2); display: flex; justify-content: center; align-items: flex-end; padding-top: 22px; }
.afm-hoja { width: 62%; height: 100%; background: #FFFEF9; border-radius: 6px 6px 0 0; box-shadow: 0 10px 24px rgba(16,16,14,.1); padding: 18px 16px; display: flex; flex-direction: column; gap: 9px; }
.afm-hoja b { height: 9px; width: 52%; border-radius: 3px; background: var(--forest-700); margin-bottom: 4px; }
.afm-hoja i { height: 5px; border-radius: 3px; background: var(--cream-3); }
.afm-hoja i:nth-child(3n) { width: 72%; }
.afm-hoja i:nth-child(3n+1) { width: 88%; }
.afm-tabs { display: flex; flex-direction: column; gap: 3px; padding-top: 6px; align-self: stretch; }
.afm-tabs span { flex: 1; width: 13px; border-radius: 0 4px 4px 0; background: var(--c); transition: width .35s cubic-bezier(.2,.7,.2,1); transition-delay: calc(var(--i, 0) * 30ms); }
.af:hover .afm-tabs span { width: 22px; }
/* finanzas: barras real y previsión */
.af-fin { background: #FFFEF9; border: 1px solid var(--line); display: flex; align-items: flex-end; gap: 6px; padding: 22px 18px 18px; }
.af-fin i { flex: 1; height: var(--h); border-radius: 3px 3px 0 0; transform-origin: bottom; transition: transform .6s cubic-bezier(.2,.7,.2,1); }
.af-fin i.r { background: var(--forest-700); }
.af-fin i.p { background: repeating-linear-gradient(135deg, var(--lime-dark) 0 4px, var(--lime) 4px 8px); }
.af:hover .af-fin i { transform: scaleY(1.06); }
/* tecnología: mapa de calor */
.af-tec { background: var(--forest-900); display: grid; grid-template-columns: repeat(8, 1fr); gap: 4px; padding: 18px; }
.af-tec i { border-radius: 3px; background: rgba(196,214,135, calc(.08 + var(--o) * .9)); transition: background .4s ease; }
.af:hover .af-tec i { background: rgba(196,214,135, calc(.14 + var(--o) * .86)); }

/* comanda «pide tu precio» */
.pide-in { display: grid; grid-template-columns: 1.15fr .85fr; gap: 60px; align-items: center; }
.pide h2 { max-width: 15ch; }
.pide .lead { max-width: 50ch; margin-bottom: 0; }
.pide-tk { justify-self: end; width: 100%; max-width: 380px; rotate: 1.4deg; filter: drop-shadow(0 18px 22px rgba(28,28,27,.22)); }
.pide-paper { padding: 26px 20px calc(22px + var(--z)); }
.pide-paper .tk-k { margin: 16px 0 10px; }
.pide-b {
  display: grid; grid-template-columns: 22px 1fr auto; align-items: center; gap: 12px;
  padding: 12px 4px; border-bottom: 1px dashed #BDB8AC; color: var(--ink); text-decoration: none;
  transition: background .25s ease, padding .25s ease;
}
.pide-b svg { width: 22px; height: 22px; color: var(--forest-700); }
.pide-b span { display: flex; flex-direction: column; line-height: 1.25; }
.pide-b b { font-weight: 600; font-size: .95rem; }
.pide-b small { font-size: .74rem; color: #6B6860; }
.pide-b i { font-style: normal; transition: transform .3s ease; }
.pide-b:hover { text-decoration: none; background: rgba(221,216,207,.28); padding-left: 10px; padding-right: 10px; }
.pide-b:hover i { transform: translateX(4px); }
.pide-b.wa b::after { content: 'lo más rápido'; margin-left: 8px; padding: 2px 6px; border-radius: 4px; font-size: .62rem; font-weight: 500; letter-spacing: .06em; text-transform: uppercase; vertical-align: 2px; background: var(--forest-900); color: var(--lime); }
.pide-paper footer { margin-top: 16px; }

/* contacto: botones directos */
.cto-dir { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.cto-tel { margin: 14px 0 0; font-size: .9rem; color: var(--forest-text); }
.btn-ico::after { display: none !important; }
.btn-ico svg { width: 20px; height: 20px; flex: none; }
.bg-dark .cto-dir .btn-primary { background: var(--lime); color: var(--forest-900); }
.bg-dark .cto-dir .btn-primary::before { background: #fff; }
.bg-dark .cto-dir .btn-primary:hover { color: var(--forest-900); }
.hx-note a { color: var(--lime); text-decoration: underline; text-underline-offset: 3px; }

/* botón flotante de WhatsApp */
.wa-float {
  position: fixed; right: 22px; bottom: 22px; z-index: 70;
  display: inline-flex; align-items: center; gap: 10px; padding: 12px 18px 12px 14px; border-radius: 99px;
  background: var(--forest-900); color: #F6F6F5; font-weight: 600; font-size: .9rem; text-decoration: none;
  border: 1px solid rgba(221,216,207,.35); box-shadow: 0 14px 34px rgba(17,17,16,.32);
  transition: transform .3s ease, background .3s ease;
}
.wa-float svg { width: 22px; height: 22px; color: var(--lime); }
.wa-float:hover { text-decoration: none; color: #F6F6F5; transform: translateY(-3px); background: var(--forest-700); }

@media (max-width: 980px) {
  .af-grid, .af-grid.af-2 { grid-template-columns: 1fr; gap: 16px; }
  .af { padding: 12px 12px 18px; }
  .af-vis { height: 120px; }
  .pide-in { grid-template-columns: 1fr; gap: 34px; }
  .pide-tk { justify-self: start; rotate: 0deg; max-width: 420px; }
}
@media (max-width: 640px) {
  .af-vis { height: 96px; }
  .af-k { margin-top: 14px; }
  .af h3 { font-size: 1.18rem; }
  .wa-float { right: 14px; bottom: 14px; padding: 13px; }
  .wa-float span { display: none; }
  .wa-float svg { width: 26px; height: 26px; }
}

/* =====================================================================
   CONCEPTO Y MARCA: tarjeta, mapa de zona, manual de marca, ficha y calendario
   ===================================================================== */
.af-grid.af-4 { grid-template-columns: repeat(4, 1fr); gap: 18px; }
.af-4 .af h3 { font-size: 1.2rem; }
.af-con {
  background-color: #EFEAE0;
  background-image: repeating-linear-gradient(-8deg, transparent 0 34px, #FFFDF8 34px 38px), repeating-linear-gradient(82deg, transparent 0 46px, #FFFDF8 46px 50px);
}
.afc-r { position: absolute; left: 50%; top: 50%; width: 110px; height: 110px; margin: -55px 0 0 -55px; border-radius: 50%; border: 1.5px dashed var(--forest-700); background: rgba(221,216,207,.32); transition: transform .5s cubic-bezier(.2,.7,.2,1); }
.af:hover .afc-r { transform: scale(1.2); }
.af-con i { position: absolute; left: var(--x); top: var(--y); width: 11px; height: 11px; margin: -5px 0 0 -5px; border-radius: 50%; background: var(--forest-700); border: 2px solid #FFFDF8; }
.af-con b { position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; background: var(--lime); border: 3px solid var(--forest-900); }

/* mapa de zona */
.zm-mapa { position: relative; border-radius: 5px; overflow: hidden; background: #EFEAE0; }
.zm-svg { display: block; width: 100%; height: auto; }
.zm-fondo { fill: #EFEAE0; }
.zm-parque { fill: #D4D3D0; }
.zm-calles line { stroke: #FFFDF8; stroke-width: 9; }
.zm-avenida { stroke: #FFFDF8; stroke-width: 18; }
.zm-radio { fill: rgba(221,216,207,.3); stroke: var(--forest-700); stroke-width: 1.5; stroke-dasharray: 5 5; transition: r .6s cubic-bezier(.2,.7,.2,1); }
.zm-pin { cursor: pointer; outline: none; transition: opacity .4s ease; }
.zm-pin circle { fill: var(--forest-700); stroke: #FFFDF8; stroke-width: 2.5; transition: r .25s ease, fill .25s ease; }
.zm-pin text, .zm-tu text { font: 700 12px var(--body); fill: var(--forest-900); text-anchor: middle; paint-order: stroke; stroke: #FFFDF8; stroke-width: 4px; stroke-linejoin: round; }
.zm-pin text { opacity: 0; transition: opacity .2s ease; }
.zm-pin:hover circle, .zm-pin:focus-visible circle, .zm-pin.on circle { r: 9; fill: #B23C24; }
.zm-pin:hover text, .zm-pin:focus-visible text, .zm-pin.on text { opacity: 1; }
.zm-pin.fuera { opacity: .25; }
.zm-tu circle { fill: var(--lime); stroke: var(--forest-900); stroke-width: 3; }
.zm-tu .zm-onda { fill: none; stroke: var(--forest-900); stroke-width: 2; transform-box: fill-box; transform-origin: center; animation: onda 2.4s ease-out infinite; }
@keyframes onda { from { transform: scale(1); opacity: .7; } to { transform: scale(3.4); opacity: 0; } }
.zm-info { position: absolute; left: 12px; bottom: 12px; margin: 0; padding: 7px 12px; border-radius: 9px; background: color-mix(in srgb, var(--acento-2) 90%, transparent); color: #F6F6F5; font-size: .8rem; line-height: 1.3; }
.zm-kpis { grid-template-columns: repeat(3, 1fr); }

/* manual de marca */
.bb {
  --b1: #7A2E1F; --b2: #F3EAD8; --b3: #C8A15A; --b4: #2A2420; --bf: 'Fraunces', Georgia, serif;
  background: #FFFEF9; border: 1px solid var(--line); border-radius: 7px; padding: 28px 30px 22px; box-shadow: var(--shadow);
}
.bb[data-dir="1"] { --b1: #1C1C1A; --b2: #ECEAE4; --b3: #E0573A; --b4: #8C8A82; --bf: 'Inter Tight', sans-serif; }
.bb[data-dir="2"] { --b1: #1F4E79; --b2: #F5EFE3; --b3: #D98C4A; --b4: #807E79; --bf: 'Caveat', cursive; }
.bb-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; flex-wrap: wrap; margin-bottom: 24px; }
.bb .fc-k, .cal .fc-k { color: var(--ink-2); }
.bb-titulo, .cal-titulo { display: block; margin-top: 6px; font-family: var(--head); font-size: 1.15rem; letter-spacing: -.03em; color: var(--ink); }
.bb .fc-seg { background: var(--cream-2); border-color: var(--line); }
.bb .fc-seg button { color: var(--ink-2); }
.bb .fc-seg button:hover { color: var(--ink); }
.bb .fc-seg button.on { background: var(--forest-900); color: var(--lime); }
.bb-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 16px; }
.bb-logo {
  display: flex; flex-direction: column; justify-content: center; align-items: center; min-height: 210px; padding: 20px;
  border-radius: 5px; background: var(--b1); color: var(--b2); text-align: center; transition: background .5s ease, color .5s ease;
}
.bb-name { font-family: var(--bf); font-weight: 600; font-size: clamp(2.4rem, 1.6rem + 2.4vw, 3.8rem); line-height: 1; letter-spacing: -.02em; }
.bb-name em { font-style: italic; color: var(--b3); transition: color .5s ease; }
.bb-logo small { margin-top: 12px; font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; opacity: .8; }
.bb-meta { display: grid; grid-template-rows: 1fr auto; gap: 16px; }
.bb-colores { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.bb-sw { position: relative; min-height: 110px; border-radius: 4px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.07); transition: background .5s ease; }
.bb-sw i { position: absolute; left: 8px; bottom: 8px; font: 500 .68rem 'IBM Plex Mono', ui-monospace, monospace; color: #fff; mix-blend-mode: difference; }
.bb-tipo { display: flex; align-items: center; gap: 16px; padding: 14px 16px; border-radius: 4px; background: var(--cream-2); }
.bb-tipo b { font-family: var(--bf); font-size: 2.6rem; line-height: 1; color: var(--b1); transition: color .5s ease; }
.bb-tipo span { display: flex; flex-direction: column; line-height: 1.3; }
.bb-tipo strong { color: var(--ink); }
.bb-tipo small { font-size: .8rem; }
.bb-apps { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.ap { margin: 0; }
.ap > div { position: relative; height: 170px; border-radius: 4px; overflow: hidden; background: var(--cream-2); display: flex; align-items: center; justify-content: center; transition: background .5s ease; }
.ap figcaption { margin-top: 8px; font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-2); }
.bb-n { font-family: var(--bf); font-weight: 600; color: var(--b1); transition: color .5s ease; }
.ap-carta > div { flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 7px; padding: 18px 16px; background: var(--b2); }
.ap-carta .bb-n { text-align: center; font-size: 1.3rem; margin-bottom: 6px; }
.ap-carta p { display: flex; align-items: baseline; gap: 6px; margin: 0; font-size: .74rem; line-height: 1.2; color: #3A342E; }
.ap-carta p i { flex: 1; border-bottom: 1px dotted currentColor; opacity: .5; }
.ap-carta p em { font-style: normal; font-weight: 700; color: var(--b1); }
.ap-toldo > div { flex-direction: column; justify-content: flex-start; background: #D9D3C7; }
.ap-rayas {
  width: 100%; height: 34px; flex: none; background: repeating-linear-gradient(90deg, var(--b1) 0 16px, var(--b2) 16px 32px);
  -webkit-mask: radial-gradient(circle at 8px 100%, transparent 7px, #000 7.5px) 0 0 / 16px 100%;
          mask: radial-gradient(circle at 8px 100%, transparent 7px, #000 7.5px) 0 0 / 16px 100%;
}
.ap-toldo .bb-n { margin-top: 14px; padding: 6px 14px; border-radius: 4px; background: var(--b1); color: var(--b2); font-size: 1rem; transition: background .5s ease, color .5s ease; }
.ap-puerta { margin-top: 12px; width: 46px; flex: 1; border-radius: 8px 8px 0 0; background: #2B2A26; }
.ap-tela {
  width: 92px; height: 132px; display: flex; align-items: center; justify-content: center; background: var(--b1); transition: background .5s ease;
  clip-path: polygon(30% 0, 70% 0, 70% 18%, 100% 30%, 100% 100%, 0 100%, 0 30%, 30% 18%);
}
.ap-tela b { margin-top: 22px; font-family: var(--bf); font-size: 1.15rem; color: var(--b3); transition: color .5s ease; }
.ap-post img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ap-post span { position: absolute; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; padding: 9px 12px; background: var(--b1); transition: background .5s ease; }
.ap-post .bb-n { color: var(--b2); font-size: 1rem; line-height: 1.1; }
.ap-post small { font-size: .68rem; color: var(--b3); }

.mk-incluye { list-style: none; padding: 0; margin: 34px 0 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.mk-incluye li { display: grid; gap: 4px; align-content: start; margin: 0; padding-top: 14px; border-top: 2px solid var(--forest-700); }
.mk-incluye b { font-family: var(--head); color: var(--ink); letter-spacing: -.02em; }
.mk-incluye span { font-size: .92rem; line-height: 1.5; }

/* presencia digital: ficha en el móvil y calendario */
.dg-split { display: grid; grid-template-columns: .8fr 1.2fr; gap: 50px; align-items: center; }
.movil { justify-self: center; width: 300px; padding: 12px; border-radius: 44px; background: #16181A; box-shadow: 0 40px 80px rgba(28,28,27,.28), inset 0 0 0 2px #2C2F31; }
.mv-pantalla { border-radius: 11px; overflow: hidden; background: #fff; }
.mv-foto { position: relative; height: 150px; }
.mv-foto img { display: block; width: 100%; height: 100%; object-fit: cover; }
.mv-ej { position: absolute; top: 14px; left: 14px; padding: 3px 8px; border-radius: 6px; background: rgba(0,0,0,.58); color: #fff; font-size: .64rem; letter-spacing: .08em; text-transform: uppercase; }
.mv-ficha { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px 18px; font-size: .82rem; color: #3C3B37; }
.mv-nombre { font-family: var(--head); font-size: 1.25rem; letter-spacing: -.02em; color: var(--ink); }
.mv-est { font-weight: 600; color: var(--ink); }
.mv-est i, .mv-quien i { font-style: normal; letter-spacing: 1px; color: #D9962F; }
.mv-est small { font-weight: 400; color: #6B6860; }
.mv-sub { font-size: .74rem; color: #6B6860; }
.mv-btns { display: flex; gap: 6px; margin: 10px 0 8px; }
.mv-btns span { flex: 1; padding: 7px 4px; border-radius: 99px; border: 1px solid var(--line); text-align: center; font-size: .72rem; font-weight: 600; color: var(--forest-700); }
.mv-btns .on { background: var(--forest-700); border-color: transparent; color: #fff; }
.mv-res { padding-top: 10px; border-top: 1px solid var(--line); }
.mv-res p { margin: 0 0 4px; line-height: 1.4; }
.mv-quien i { font-size: .7rem; }
.mv-resp { margin-top: 6px; padding: 8px 10px; border-radius: 3px; background: var(--cream-2); font-size: .76rem; }
.mv-resp b { font-size: .7rem; color: var(--forest-700); }

.cal { padding: 24px 24px 20px; border-radius: 7px; background: #FFFEF9; border: 1px solid var(--line); box-shadow: var(--shadow); }
.cal-top { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.cal-hand { font-family: 'Caveat', cursive; font-size: 1.3rem; line-height: 1; color: #B23C24; }
.cal-dias, .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cal-dias span { padding-bottom: 6px; text-align: center; font-size: .7rem; font-weight: 700; letter-spacing: .1em; color: var(--ink-2); }
.cal-d { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; min-height: 66px; padding: 5px 6px; border-radius: 8px; background: var(--cream-2); }
.cal-d small { font-size: .66rem; color: #8A867C; }
.cal-d.hoy { box-shadow: inset 0 0 0 2px var(--forest-700); }
.cc { display: inline-block; padding: 3px 6px; border-radius: 5px; font-size: .64rem; font-weight: 600; line-height: 1.2; }
.t-plato { background: var(--lime); color: var(--forest-900); }
.t-detras { background: #F2C9A0; color: #5A3418; }
.t-equipo { background: #A9CFE0; color: #123A4D; }
.t-evento { background: var(--forest-700); color: #F6F6F5; }
.t-resena { background: #EBCB78; color: #4A3A0A; }
.cal-ley { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }

.lz-sec { padding-top: 90px; }
.lz-sec .shead { margin-bottom: 40px; }

@media (max-width: 1180px) { .af-grid.af-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 980px) {
  .bb-grid { grid-template-columns: 1fr; }
  .bb-apps { grid-template-columns: repeat(2, 1fr); }
  .dg-split { grid-template-columns: 1fr; gap: 36px; }
  .mk-incluye { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .af-grid.af-4 { grid-template-columns: 1fr; }
  .zm-info { left: 8px; right: 8px; bottom: 8px; font-size: .72rem; }
  .zm-kpis { grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
  .zm-kpis b { font-size: 1.05rem; }
  .bb { padding: 20px 16px 18px; }
  .bb-logo { min-height: 150px; }
  .bb-sw { min-height: 64px; }
  .ap > div { height: 132px; }
  .mk-incluye { grid-template-columns: 1fr; gap: 14px; margin-top: 26px; }
  .movil { width: 272px; }
  .cal { padding: 18px 12px 16px; }
  .cal-dias, .cal-grid { gap: 3px; }
  .cal-d { min-height: 44px; padding: 3px 4px; }
  .cal-d .cc { width: 100%; height: 6px; padding: 0; font-size: 0; }
  .lz-sec { padding-top: 64px; }
}
@media (prefers-reduced-motion: reduce) { .zm-tu .zm-onda { animation: none; opacity: 0; } .zm-radio { transition: none; } }
