/* =====================================================================
   RISE · móvil y tableta (menos de 1200 px)
   Copia exacta del PDF "Rediseño Pag MÓVIL - RISE_2" (mesa de 1080 px de ancho): mismas posiciones, tamaños de
   letra, imágenes y espacios, escalados al ancho de la pantalla.
   - --m: 1 px de la mesa de 1080 escalado al ancho de la pantalla (head.php pone --mf = ancho / 1080), también en tableta.
   - Cada texto se coloca por su línea base del PDF: con interlineado L (en múltiplos del tamaño), la caja del renglón
     empieza (L − 1.03) / 2 + 0.82 tamaños arriba de la línea base (métricas de Origin Light y Bold; Regular: 1.11 y 0.89).
   No afecta al escritorio: todo está dentro de la misma consulta de medios.
   ===================================================================== */

@media (max-width: 1199px) {

  :root {
    --mf: .3333; /* head.php lo pone con el ancho real (ancho / 1080) */
    --m: calc(var(--mf) * 1px);
    --px: .5px; /* head.php lo pone con un pixel de pantalla real (1 / devicePixelRatio) */
    /* Barra y menú a medio camino entre los de antes del PDF móvil (barra de 64 px, logo de 74 px) y los del PDF
       (barra de 84, logo de 104, unidades de la mesa): cada medida es el promedio de las dos. */
    --header-h: calc((64px + 84 * var(--m)) / 2);
    --g: 22px; /* margen lateral del botón de regreso de Desarrolladores (el de antes) */
    --hd: max(0px, calc(var(--header-h) - 84 * var(--m))); /* lo que la barra mide de más que la del PDF (84): baja lo que tapa */
    --fs-sm: calc(20 * var(--m));
    --fs-lg: calc(25 * var(--m));
  }

  .frame { width: calc(1080 * var(--m)); height: auto; }
  .solo-movil { display: revert; }
  .solo-movil[hidden] { display: none; } /* revert también quitaría el oculto de [hidden] */
  .solo-escritorio { display: none; }

  /* ---------------------------------------------------------------- encabezado y menú */
  /* Promedio de las medidas de antes y las del PDF. El botón de la hamburguesa mide 44 px para tocarlo fácil; sus tres
     rayas y su posición se redondean a pixeles de pantalla (--px) para que las tres se vean igual de gruesas. */
  .site-header__logo { left: calc((22px + 34 * var(--m)) / 2); top: calc((17px + 19.8 * var(--m)) / 2); width: calc((74px + 104 * var(--m)) / 2); }
  .nav-toggle {
    --bw: calc((24px + 28.75 * var(--m)) / 2); /* ancho de las rayas */
    --bg: calc((6.5px + 7 * var(--m)) / 2); /* separación entre rayas */
    --bg: round(calc((6.5px + 7 * var(--m)) / 2), var(--px));
    --bt: 1px; /* grosor */
    --bt: max(var(--px), round(1.25px, var(--px)));
    display: block; position: absolute; width: 44px; height: 44px; padding: 0; border: 0; background: none; cursor: pointer;
    right: calc((20px + 33.75 * var(--m)) / 2 - (44px - var(--bw)) / 2);
    right: round(calc((20px + 33.75 * var(--m)) / 2 - (44px - var(--bw)) / 2), var(--px));
    top: calc(var(--header-h) / 2 - 22px);
    top: round(calc(var(--header-h) / 2 - 22px), var(--px));
  }
  .nav-toggle span {
    position: absolute; left: calc((44px - var(--bw)) / 2); right: calc((44px - var(--bw)) / 2); height: var(--bt); background: var(--c-ink);
    top: calc(22px - var(--bt) / 2);
    top: round(calc(22px - var(--bt) / 2), var(--px));
    transition: transform .3s var(--ease), opacity .2s;
  }
  .nav-toggle span:nth-child(1) { transform: translateY(calc(-1 * var(--bg))); }
  .nav-toggle span:nth-child(3) { transform: translateY(var(--bg)); }
  .site-header.is-open .nav-toggle span:nth-child(1) { transform: rotate(45deg); }
  .site-header.is-open .nav-toggle span:nth-child(2) { opacity: 0; }
  .site-header.is-open .nav-toggle span:nth-child(3) { transform: rotate(-45deg); }

  /* Con el menú abierto, la barra toma el mismo blanco del panel; al cerrarlo vuelve a ser translúcida. */
  .site-header { transition: background-color .25s var(--ease); }
  body .site-header.is-open { background: var(--c-paper); }
  .site-nav {
    display: none; position: absolute; left: 0; right: 0; top: var(--header-h);
    padding: calc((8px + 10 * var(--m)) / 2) 0 calc((18px + 30 * var(--m)) / 2); background: var(--c-paper);
    box-shadow: 0 12px 24px rgb(35 30 31 / .12);
  }
  .site-header.is-open .site-nav { display: block; }
  .site-nav ul { flex-direction: column; gap: 0; }
  /* El enlace mide lo que su texto: la raya de la página actual va de la primera a la última letra
     (se descuenta el espaciado que queda después de la última). */
  .site-nav { --ml: calc((22px + 34 * var(--m)) / 2); } /* margen de los enlaces: el mismo del logo */
  .site-nav a { width: fit-content; padding: calc((14px + 26 * var(--m)) / 2) var(--ml); font-size: calc((19px + 28 * var(--m)) / 2); line-height: 1.2; }
  .site-nav a::after { left: var(--ml); right: calc(var(--ml) + var(--track)); width: auto; top: calc(100% - (10px + 20 * var(--m)) / 2); }

  .social-bar { display: none; } /* las redes están en el footer; en móvil taparía el contenido */
  /* Con el menú abierto, las redes aparecen a la derecha del panel, sin rayitas, centradas en la altura de los
     enlaces y con el mismo aire a la orilla derecha que los enlaces tienen a la izquierda. */
  .site-header.is-open ~ .social-bar {
    display: flex; top: calc(var(--header-h) + (43px + 30 * var(--m)) / 2); right: calc((22px + 34 * var(--m)) / 2); z-index: 51;
    gap: calc((16px + 30 * var(--m)) / 2);
  }
  /* Alto fijo: los íconos miden distinto (33.2–34 px); así la separación queda pareja. */
  .social-bar li { display: flex; align-items: center; width: auto; height: calc((34px + 60 * var(--m)) / 2); }
  .social-bar li::after { display: none; }
  .social-bar a { width: calc((34px + 60 * var(--m)) / 2); }

  /* ---------------------------------------------------------------- botones */
  .btn { height: calc(52.3 * var(--m)); min-width: 0; padding: 0 calc(26 * var(--m)); border-radius: calc(10 * var(--m)); font-size: calc(25.2 * var(--m)); }

  /* ---------------------------------------------------------------- contacto */
  /* Título en y 9660.5 (desde 9601); campos de x 140 a 940: líneas cada 77.5, etiqueta 19.6 arriba de su línea;
     select de 61 y mensaje de 78.5; aviso; casilla de reCAPTCHA de 289 de ancho y ENVIAR (197 × 52) a la derecha. */
  .contact, .page-contacto .contact { height: auto; }
  .contact__inner { padding: calc(59.5 * var(--m)) 0 calc(64.4 * var(--m)); }
  .page-contacto .contact { padding-top: calc(84 * var(--m) + var(--hd)); }
  /* Página de Contacto: llena la pantalla sin hueco antes del footer. De lo que sobra (alto natural: 926.6 + el footer,
     369.7), cada uno de los 7 espacios del formulario (antes de cada campo, del aviso, y de la casilla y ENVIAR) crece
     hasta 20 px, el cuadro de Mensaje hasta 100 px más, y el resto se reparte igual arriba del título y abajo de ENVIAR:
     el título queda junto a los campos y todo el bloque, centrado en la pantalla. */
  .page-contacto {
    --sl: max(0px, 100vh - (926.6 + 369.7) * var(--m) - var(--hd));
    --sl: max(0px, 100dvh - (926.6 + 369.7) * var(--m) - var(--hd));
    --ex: min(20px, var(--sl) / 7);
    --tx: min(100px, var(--sl) - 7 * var(--ex));
    --rs: calc((var(--sl) - 7 * var(--ex) - var(--tx)) / 2);
  }
  .page-contacto .contact__inner { padding-top: calc(59.5 * var(--m) + var(--rs)); padding-bottom: calc(64.4 * var(--m) + var(--rs)); }
  .page-contacto .field--box textarea { height: calc(78.5 * var(--m) + var(--tx)); }
  .page-contacto .field--line { height: calc(77.5 * var(--m) + var(--ex)); }
  .page-contacto .field--select { margin-top: calc(38.7 * var(--m) + var(--ex)); }
  .page-contacto .field--box { margin-top: calc(37.3 * var(--m) + var(--ex)); }
  .page-contacto .check { margin-top: calc(22.9 * var(--m) + var(--ex)); }
  .page-contacto .captcha-slot { margin-top: calc(30.2 * var(--m) + var(--ex)); }
  .page-contacto .contact-form .btn { margin-top: calc(47.2 * var(--m) + var(--ex)); }
  body.page-contacto { background: var(--c-ink); }
  .contact__title { display: flex; align-items: center; gap: calc(12 * var(--m)); margin-left: calc(76 * var(--m)); font-size: calc(29.2 * var(--m)); line-height: 1; }
  .contact__chevron { position: static; width: calc(9.6 * var(--m)); }
  .contact-form { display: block; width: calc(800 * var(--m)); margin: calc(18.8 * var(--m)) 0 0 calc(140 * var(--m)); }
  .field { font-size: calc(21.6 * var(--m)); line-height: 1; }
  .field--line { height: calc(77.5 * var(--m)); }
  .field--line .field__label { bottom: calc(15.4 * var(--m)); }
  .field--line input { height: calc(50 * var(--m)); padding-bottom: calc(12 * var(--m)); line-height: 1; }
  .field--line:focus-within .field__label,
  .field--line.is-filled .field__label { transform: translateY(calc(-30 * var(--m))) scale(.75); }
  .field--select { margin-top: calc(38.7 * var(--m)); }
  .select { margin-top: calc(15.4 * var(--m)); }
  .select select { height: calc(61 * var(--m)); padding: 0 calc(60 * var(--m)) 0 calc(20.5 * var(--m)); border-radius: calc(14 * var(--m)); line-height: 1; }
  .select__chevron { right: calc(24 * var(--m)); width: calc(21 * var(--m)); }
  .field--otro { height: calc(77.5 * var(--m)); }
  .contact-form__col + .contact-form__col { margin-top: 0; }
  .field--box { margin-top: calc(37.3 * var(--m)); }
  .field--box textarea { height: calc(78.5 * var(--m)); margin-top: calc(15.4 * var(--m)); padding: calc(12 * var(--m)) calc(20 * var(--m)); border-radius: calc(16 * var(--m)); line-height: 1.3; }
  .check { gap: calc(21.1 * var(--m)); margin-top: calc(22.9 * var(--m)); font-size: calc(21.6 * var(--m)); line-height: 1; }
  .check__box { width: calc(21.6 * var(--m)); height: calc(21.6 * var(--m)); border-radius: calc(4 * var(--m)); }
  /* Casilla a la izquierda y ENVIAR a la derecha, 15 más abajo. La casilla de Google (304 × 78 px) se escala a 289 de ancho. */
  .contact-form__col:last-child { flex-flow: row wrap; align-items: flex-start; justify-content: space-between; }
  .contact-form__col:last-child > .field, .contact-form__col:last-child > .check, .contact-form__status { flex: 0 0 100%; }
  .captcha-slot { position: relative; width: calc(288.9 * var(--m)); height: calc(288.9 / 304 * 78 * var(--m)); margin-top: calc(30.2 * var(--m)); }
  .captcha-slot .g-recaptcha { transform: scale(calc(288.9 * var(--mf) / 304)); transform-origin: 0 0; }
  .captcha-slot:has(.g-recaptcha):not(:has(iframe))::before {
    content: "Cargando verificación…"; position: absolute; inset: 0; display: flex; align-items: center; padding: 0 calc(16 * var(--m));
    border: 1px dashed rgb(237 236 237 / .35); border-radius: 2px;
    font-size: calc(18 * var(--m)); color: rgb(237 236 237 / .7); letter-spacing: 0;
  }
  .contact-form .btn { width: calc(196.7 * var(--m)); margin-top: calc(47.2 * var(--m)); padding-top: calc(5.2 * var(--m)); } /* en el PDF el texto va 2.6 abajo del centro */
  .contact-form__status { margin-top: calc(12 * var(--m)); font-size: calc(21.6 * var(--m)); }
  .contact-form__status:empty { display: none; }

  /* ---------------------------------------------------------------- footer */
  /* Punto de 34 en x 43 y línea de 2 desde x 50; dirección (x 56) y teléfono y correo (hasta x 1024); redes de 40,
     una cada 62.4, en y 182; textos legales en un renglón, en y 278. */
  .site-footer { height: calc(369.7 * var(--m)); }
  .dot-line { height: calc(34.2 * var(--m)); }
  .dot-line::before { left: calc(49.9 * var(--m)); height: calc(2 * var(--m)); margin-top: calc(-1 * var(--m)); }
  .dot-line::after { left: calc(42.7 * var(--m)); width: calc(34.2 * var(--m)); height: calc(34.2 * var(--m)); }
  .site-footer__inner { padding: 0 calc(56.3 * var(--m)); }
  .site-footer__row--top { padding-top: calc(73 * var(--m)); }
  .site-footer__address { margin-top: calc(5.4 * var(--m)); font-size: calc(24.6 * var(--m)); line-height: calc(29.5 * var(--m)); }
  .site-footer__contact { font-size: calc(24.6 * var(--m)); line-height: calc(32.7 * var(--m)); }
  .site-footer__pin { width: calc(18.5 * var(--m)); margin: 0 calc(3.2 * var(--m)) 0 calc(-.8 * var(--m)); vertical-align: 0; } /* pin de 18.5 × 21 parado en la línea base */
  .site-footer__row--mid { position: absolute; left: calc(56.3 * var(--m)); top: calc(182.4 * var(--m)); margin: 0; }
  .site-footer__social { gap: calc(22.4 * var(--m)); margin: 0; }
  .site-footer__social a { width: calc(40 * var(--m)); }
  .site-footer__row--legal {
    left: calc(56.3 * var(--m)); right: calc(56.3 * var(--m)); top: calc(278.5 * var(--m));
    font-size: calc(19 * var(--m)); line-height: 1;
  }

  /* =================================================================== 404 */
  .no-encontrada { gap: calc(40 * var(--m)); min-height: calc(1100 * var(--m) + var(--header-h)); padding: var(--header-h) calc(80 * var(--m)) 0; }
  .no-encontrada__titulo { font-size: calc(64 * var(--m)); }
  .no-encontrada__texto { font-size: calc(32 * var(--m)); }
  .no-encontrada .btn { margin-top: calc(16 * var(--m)); width: calc(320 * var(--m)); }

  /* =================================================================== INICIO */
  /* Hero de 1749 con el botón de play (174 × 108) centrado en y 904. */
  .home-hero { height: calc(1749 * var(--m)); }
  .home-hero__img { object-position: 50% 0; } /* foto recortada como en el PDF (inicio-hero-movil) */
  .home-hero__play { top: calc(904 * var(--m)); width: calc(174 * var(--m)); transform: translate(-50%, -50%); }
  .home-hero__video { object-position: 50% 0; } /* video propio de móvil (1080 × 1750), igual que su primer cuadro */
  @media (prefers-reduced-motion: no-preference) {
    .home-hero__play { display: none; } /* como en escritorio: con el video de fondo no hay botón de play */
  }

  /* Franja de 96: "UNA VISIÓN DE:" centrado y los tres socios en un renglón centrado, cada rótulo a la izquierda de su
     logo, con las separaciones del PDF (19, 14 y 12.8 entre rótulo y logo; 33 entre socios). */
  .home-band { position: relative; height: calc(96 * var(--m)); }
  .home-band__desktop { display: none; }
  .home-band__mobile { display: block; color: var(--c-paper); }
  .home-band__title { position: absolute; left: 0; right: 0; top: calc(20.9 * var(--m)); text-align: center; font-size: calc(14 * var(--m)); line-height: 1; letter-spacing: var(--track-sm); }
  .home-band__partners {
    position: absolute; left: 50%; top: calc(66.1 * var(--m)); transform: translate(-50%, -50%);
    display: flex; align-items: center; gap: calc(33 * var(--m)); white-space: nowrap;
  }
  .home-band__partner { display: flex; align-items: center; }
  .home-band__partner:nth-child(1) { gap: calc(19 * var(--m)); }
  .home-band__partner:nth-child(2) { gap: calc(14 * var(--m)); }
  .home-band__partner:nth-child(3) { gap: calc(12.8 * var(--m)); }
  .home-band__partner span { font-weight: 400; font-size: calc(16.1 * var(--m)); line-height: 1; letter-spacing: 0; white-space: nowrap; }
  .home-band__partner span br { display: none; }
  /* Las letras de los tres logos ("nest", "ANCORE" y "alora") se apoyan en la misma línea base que su rótulo. */
  .home-band .home-band__logo { position: static; display: block; height: auto; color: var(--c-paper); transform: translateY(var(--lb)); }
  .home-band .home-band__logo--nest { --lb: calc(-2.1 * var(--m)); }
  .home-band .home-band__logo--ancore { --lb: calc(-2.3 * var(--m)); }
  .home-band .home-band__logo--alora { --lb: calc(-7.4 * var(--m)); }
  .home-band .home-band__logo--nest { width: calc(86 * var(--m)); }
  .home-band .home-band__logo--ancore { width: calc(158 * var(--m)); }
  .home-band .home-band__logo--alora { width: auto; height: calc(31.3 * var(--m)); }

  /* La torre (1469 de alto): diagrama de escritorio a 1.31416 (x −493.7, y −22.9); niveles con la barra dorada en
     x 70; párrafo justificado de x 72.5 a 626; plano de conjunto con calles y norte a 0.8169 (x −960, y 578.9). */
  .home-tower { height: calc(1469 * var(--m)); }
  .home-tower .frame { height: 100%; }
  .home-tower__diagram { left: calc(-493.7 * var(--m)); top: calc(-22.9 * var(--m)); width: calc(1920 * 1.31416 * var(--m)); }
  .home-tower__diagram text[transform], .home-tower__diagram text[x="1808.08"] { display: none; } /* calles y norte: los muestra la copia de abajo */
  .home-tower__diagram text[x^="1006.55"] { font-style: italic; } /* SKY DECK y LOBBY, en cursiva en el PDF */
  .home-tower__levels {
    left: calc(70.2 * var(--m)); top: calc(94.1 * var(--m)); height: calc(173.9 * var(--m));
    padding-left: calc(17.2 * var(--m)); border-left-width: calc(4.7 * var(--m));
  }
  .home-tower__levels h2 { margin-top: calc(-8.4 * var(--m)); font-size: calc(28.2 * var(--m)); line-height: calc(38.85 * var(--m)); }
  .home-tower__levels ul { margin-top: calc(34.7 * var(--m)); font-size: calc(28.2 * var(--m)); line-height: calc(38.85 * var(--m)); }
  .home-tower__text { left: calc(72.5 * var(--m)); top: calc(430.2 * var(--m)); width: calc(553.4 * var(--m) + .1em); font-size: calc(19.2 * var(--m)); line-height: calc(26.25 * var(--m)); } /* + el espaciado tras la última letra */
  .home-tower__calles { position: absolute; left: 0; top: calc(655 * var(--m)); width: calc(560 * var(--m)); height: calc(610 * var(--m)); overflow: hidden; }
  .home-tower__calles svg { position: absolute; left: calc(-960 * var(--m)); top: calc(-76.1 * var(--m)); width: calc(1920 * .8169 * var(--m)); height: auto; }
  .home-tower__calles text { display: none; }
  .home-tower__calles text[transform], .home-tower__calles text[x="1808.08"] { display: inline; }
  .home-tower__plan { left: calc(68.5 * var(--m)); top: calc(706.3 * var(--m)); width: calc(414.2 * var(--m)); }

  /* Carrusel de 395: fotos de 290 × 230 desde x 30 e y 73, una cada 310.7; nombre 17.3 abajo. */
  .home-carousel { height: calc(395 * var(--m)); }
  .carousel__viewport { top: calc(73 * var(--m)); }
  .carousel__track { gap: calc(20.7 * var(--m)); padding-left: calc(30 * var(--m)); }
  .carousel__slide { width: calc(290 * var(--m)); }
  .carousel__slide img { height: calc(230 * var(--m)); }
  .carousel__slide figcaption { margin-top: calc(17.3 * var(--m)); padding-left: calc(2.5 * var(--m)); font-size: calc(17.9 * var(--m)); line-height: 1; }

  /* Tarjetas de 603.8 × 413.6 en x 238, una cada 539.4 desde y 149 (la primera pestaña en y 101.5); pestaña de
     337 × 95 centrada (la de escritorio a 0.832). Título de 25 y párrafos de 20 justificados, de x 52.5 a 557.6 de la
     tarjeta. "Conoce a los desarrolladores" en un recuadro de 639 × 71 en x 220, y 1724.5. */
  .home-partners { height: calc(1853 * var(--m)); }
  .home-partners .frame { display: block; height: 100%; padding: 0; }
  .partner-card, .partner-card--ancore {
    position: absolute; left: calc(238.1 * var(--m)); width: calc(603.8 * var(--m)); height: calc(413.6 * var(--m)); min-height: 0;
    padding: calc(101.3 * var(--m)) calc(46.2 * var(--m) - 2 * var(--m)) 0 calc(52.5 * var(--m)); border-radius: calc(20 * var(--m));
    box-shadow: 0 calc(10 * var(--m)) calc(30 * var(--m)) rgb(0 0 0 / .35);
  }
  .partner-card:nth-child(1) { top: calc(149.2 * var(--m)); }
  .partner-card:nth-child(2) { top: calc(688.6 * var(--m)); }
  .partner-card:nth-child(3) { top: calc(1227.9 * var(--m)); }
  .partner-card__tab, .partner-card--ancore .partner-card__tab {
    left: calc(133.3 * var(--m)); top: calc(-47.7 * var(--m)); transform: none;
    width: calc(337.2 * var(--m)); height: calc(95.4 * var(--m)); border-radius: calc(16.6 * var(--m));
    box-shadow: 0 calc(6.7 * var(--m)) calc(21.6 * var(--m)) rgb(0 0 0 / .22);
  }
  .partner-card--nest .partner-card__tab svg { left: calc(49.1 * var(--m)); top: calc(33.3 * var(--m)); width: calc(238.8 * var(--m)); }
  .partner-card--ancore .partner-card__tab svg { left: calc(30.8 * var(--m)); top: calc(39.9 * var(--m)); width: calc(274.6 * var(--m)); }
  .partner-card__tab--alora { gap: calc(20 * var(--m)); }
  .partner-card__by { font-size: calc(14.1 * var(--m)); }
  .partner-card__logo { height: calc(14.1 * 1.97 * 1.2 * var(--m)); transform: translateY(calc(-.6 * var(--m))); }
  .partner-card h3 { font-size: calc(25 * var(--m)); line-height: calc(30 * var(--m)); }
  .partner-card__body { width: auto; margin-top: calc(24 * var(--m)); font-size: calc(20 * var(--m)); line-height: calc(25 * var(--m)); text-align: justify; text-align-last: left; }
  .partner-card__body p + p { margin-top: calc(25 * var(--m)); }
  /* Renglones del PDF (copias para móvil en index.php): cada .ln es un renglón; los párrafos de las tarjetas van
     justificados salvo el último renglón de cada uno. */
  .ln { white-space: nowrap; }
  .partner-card__body .ln { display: block; text-align-last: justify; }
  .partner-card__body .ln--last { text-align-last: auto; }
  .partner-card h3 .ln { display: block; }
  .home-partners__cta {
    left: calc(220 * var(--m)); top: calc(1724.5 * var(--m)); width: calc(639 * var(--m)); height: calc(70.8 * var(--m));
    display: flex; align-items: center; gap: calc(20.7 * var(--m)); padding: calc(7.8 * var(--m)) 0 0 calc(25.7 * var(--m)); border-radius: calc(10 * var(--m)); /* texto 3.9 abajo del centro, como en el PDF */
    background: rgb(35 30 31 / .85); box-shadow: 0 0 0 1px rgb(237 236 237 / .2);
    font-size: calc(26.4 * var(--m)); line-height: 1; text-shadow: none;
  }
  .home-partners__cta svg { width: calc(72.4 * var(--m)); translate: 0 calc(5.55 * var(--m)); } /* centro de la flecha al centro de las minúsculas */

  /* Skyline de 1914: el dibujo de escritorio a 1.8209, recorrido para que se vean RISE y Petronas (x −2284.9, y 3.7);
     se puede desplazar de lado para ver las demás torres. */
  .home-skyline { height: calc(1914 * var(--m)); }
  .home-skyline__scroll { height: 100%; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; }
  .home-skyline__scroll::-webkit-scrollbar { display: none; }
  .home-skyline svg { top: calc(3.7 * var(--m)); width: calc(1920 * 1.8209 * var(--m)); max-width: none; }
  /* Video propio de móvil (1080 × 1914, del tamaño de la sección): recorre las torres con sus nombres y se repite.
     Mientras se ve, el dibujo de arriba queda oculto; con movimiento reducido o si falla, vuelve el dibujo. */
  .home-skyline__video-movil { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; pointer-events: none; }

  /* Certificaciones (1136): textos desde x 83.8; NMX con el punto amarillo (34) en x 89 y la línea desde la orilla;
     logos dos por dos; línea del cerro de 1080 al pie. */
  .home-certs { height: calc(1136 * var(--m)); }
  .home-certs .frame { height: 100%; }
  .home-certs__text { left: calc(83.8 * var(--m)); top: calc(99.2 * var(--m)); }
  .home-certs__text h2, .home-certs__text p { letter-spacing: var(--track); } /* 0.1 em de su propia letra, no la del contenedor */
  .home-certs__text h2 { font-size: calc(32.4 * var(--m)); line-height: 1; }
  .home-certs__text p { margin-top: calc(24.7 * var(--m)); font-size: calc(32.4 * var(--m)); line-height: calc(31.4 * var(--m)); }
  .home-certs__text .home-certs__nmx { margin-top: calc(76.5 * var(--m)); padding-left: calc(58.8 * var(--m)); font-size: calc(32.4 * var(--m)); line-height: 1; }
  .home-certs__nmx::before { right: auto; left: calc(-84.8 * var(--m)); width: calc(117.6 * var(--m)); height: calc(2 * var(--m)); margin-top: calc(-1 * var(--m)); }
  .home-certs__nmx::after { left: calc(5.1 * var(--m)); width: calc(34.2 * var(--m)); height: calc(34.2 * var(--m)); margin-top: calc(-17.1 * var(--m)); }
  .cert--leed { left: calc(177.7 * var(--m)); top: calc(436.5 * var(--m)); width: calc(401.8 * var(--m)); }
  .cert--well { left: calc(521 * var(--m)); top: calc(471.1 * var(--m)); width: calc(382 * var(--m)); } /* el logo del sitio viene más recortado que el del PDF */
  .cert--building-eq { left: calc(141.4 * var(--m)); top: calc(736.9 * var(--m)); width: calc(319.6 * var(--m)); }
  .cert--green-globes { left: calc(572 * var(--m)); top: calc(784.9 * var(--m)); width: calc(365.7 * var(--m)); }
  .home-certs__line { top: calc(1050.4 * var(--m)); width: calc(1080 * var(--m)); }
  .home-certs__video { top: calc((1050.4 + 2 * 1080 / 1060) * var(--m)); width: calc(1048.9 * 1080 / 1060 * var(--m)); }

  /* Foto de sala (989) con el aviso abajo a la derecha, como en escritorio. */
  .home-living { height: calc(989 * var(--m)); }
  .nota-imagen { right: calc(24 * var(--m)); bottom: calc(18 * var(--m)); font-size: calc(20 * var(--m)); }

  /* =================================================================== DEPARTAMENTOS */
  /* Hero de 1520: cada foto cubre el hero, centrada (con el encuadre del PDF solo se veía una esquina); título de 76 y
     subtítulo de 42 centrados, con sus líneas base en y 798 y 850. */
  .depto-hero { height: calc(1520 * var(--m)); }
  .depto-hero .frame { height: 100%; }
  .depto-hero__img { object-position: 50% 50%; } /* cubre el hero y muestra el centro del espacio */
  .depto-hero__slide:nth-child(2) .depto-hero__img { object-position: 35% 50%; } /* segunda foto: un poco a la izquierda */
  .depto-hero__t1, .depto-hero__t2 { transform: translateX(-50%); }
  /* En el PDF móvil los dos renglones llevan más espaciado (0.131 y 0.115 em). */
  .depto-hero__t1 { top: calc(740.3 * var(--m)); font-size: calc(76.6 * var(--m)); line-height: 1; letter-spacing: .131em; padding-left: .131em; }
  .depto-hero__t2 { top: calc(821.1 * var(--m)); font-size: calc(41.8 * var(--m)); line-height: 1; letter-spacing: .115em; padding-left: .115em; }

  /* Tipologías (1395.6): punto de 41 en (32, 103.3) con la línea que baja por x 52; título en x 80; cápsulas en un
     renglón con sus medidas del PDF; planta a 0.7034 en (11, 263.5); datos con la barra amarilla en x 127; plano llave
     a la derecha; COTIZAR de 228.7 × 60.8 en (129, 1207). */
  .tipologias { height: calc(1395.6 * var(--m)); }
  .tipologias .frame { height: 100%; }
  .tipologias__dot { left: calc(32 * var(--m)); top: calc(103.3 * var(--m)); width: calc(41.1 * var(--m)); height: calc(41.1 * var(--m)); }
  .tipologias__dot::after { left: calc(20.05 * var(--m)); width: 1px; height: calc(1395.6 * var(--m)); }
  .tipologias__title { left: calc(80.1 * var(--m)); top: calc(106.1 * var(--m)); font-size: calc(35 * var(--m)); line-height: 1; }
  .tipologias__selector { left: 0; top: 0; display: block; }
  .pill { position: absolute; top: calc(107.8 * var(--m)); height: calc(70.5 * var(--m)); padding: 0; border-radius: calc(14 * var(--m)); }
  .pill:nth-child(1) { left: calc(308.8 * var(--m)); top: calc(110.2 * var(--m)); width: calc(162.5 * var(--m)); --pl: 31.9; --pn: 23.15; }
  .pill:nth-child(2) { left: calc(511.9 * var(--m)); width: calc(241.9 * var(--m)); --pl: 33.7; --pn: 24.75; }
  .pill:nth-child(3) { left: calc(794.4 * var(--m)); width: calc(188.1 * var(--m)); --pl: 29.5; --pn: 22.35; }
  .pill__label { margin: calc(9.5 * var(--m)) 0 0 calc(var(--pl) * var(--m)); font-size: calc(15.4 * var(--m)); line-height: 1; }
  .pill__nums { gap: calc(9.5 * var(--m)); margin: calc(3.6 * var(--m)) 0 0 calc(var(--pn) * var(--m)); }
  .pill:nth-child(2) .pill__label { margin-top: calc(11.9 * var(--m)); }
  .pill:nth-child(2) .pill__nums { margin-top: calc(4.3 * var(--m)); }
  .pill__num[data-tipo="6"][aria-pressed="true"] + .pill__num { margin-left: calc(-10.3 * var(--m)); } /* en el PDF, con el 6 activo, el 7 va más pegado */
  .pill__num { width: calc(32.5 * var(--m)); height: calc(32.5 * var(--m)); font-size: calc(32.9 * var(--m)); line-height: calc(32.5 * var(--m)); }

  .tipologia__planta { left: calc(11 * var(--m)); top: calc(263.5 * var(--m)); width: calc(1057.9 * var(--m)); height: auto; display: block; }
  .tipologia__pendiente { margin: calc(200 * var(--m)) auto 0; width: fit-content; }
  .tipologia__info { left: calc(126.9 * var(--m)); top: calc(933.3 * var(--m)); width: calc(500 * var(--m)); }
  .tipologia__datos {
    height: calc(188.8 * var(--m)); padding: 0 0 0 calc(29.2 * var(--m)); border-left-width: calc(3.1 * var(--m));
    font-size: calc(31.4 * var(--m)); line-height: calc(37.7 * var(--m));
  }
  .tipologia__datos > .tipologia__escritorio { display: none; }
  .tipologia__datos > .tipologia__movil { display: block; }
  .tipologia__datos > .tipologia__unidades.tipologia__movil { margin-top: calc(-4.8 * var(--m)); }
  .tipologia__pisos { margin-top: calc(37.7 * var(--m)); }
  .tipologia__cotizar {
    position: absolute; left: calc(2.1 * var(--m)); top: calc(273.7 * var(--m)); margin: 0;
    width: calc(228.7 * var(--m)); min-width: 0; height: calc(60.8 * var(--m)); padding: calc(5.8 * var(--m)) 0 0; border-radius: calc(10 * var(--m)); font-size: calc(29.3 * var(--m));
  }
  .tipologia__llave { left: calc(667 * var(--m)); top: calc(936 * var(--m)); width: calc(319.6 * var(--m)); }

  /* =================================================================== AMENIDADES */
  /* Hero de 1749: cada foto cubre el hero (las de originales/movil, recortadas a la proporción del hero; las demás, las
     de escritorio). Título de 60.3 y categoría de 32.2 (si el título no cabe en 440 se parte y crece hacia arriba);
     Tour virtual de 213.2 × 58 en (70.4, 1368); tarjetas de 350.7 × 511.3 desde (517.9, 1152.3), una cada 393.3. */
  .amen-hero { height: calc(1749 * var(--m)); }
  .amen-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
  .amen-hero__slide--sala-privada .amen-hero__img { object-position: 62% 50%; } /* Billar: un poco a la derecha */
  .amen-hero .frame { top: 0; height: 100%; }
  .amen-hero__text { left: calc(70.4 * var(--m)); bottom: calc(425.5 * var(--m)); width: calc(440 * var(--m)); }
  .amen-hero__title { font-size: calc(60.3 * var(--m)); line-height: 1; letter-spacing: var(--track); }
  .amen-hero__cat { margin-top: calc(1.4 * var(--m)); font-size: calc(32.2 * var(--m)); line-height: 1; letter-spacing: var(--track); }
  .amen-hero__tour { left: calc(70.4 * var(--m)); top: calc(1368 * var(--m)); bottom: auto; width: calc(213.2 * var(--m)); height: calc(58 * var(--m)); border-radius: calc(10 * var(--m)); font-size: calc(25.3 * var(--m)); }
  .amen-hero__thumbs-scroll { left: calc(500 * var(--m)); right: 0; top: calc(1136.3 * var(--m)); bottom: auto; }
  .amen-hero__thumbs { gap: calc(42.6 * var(--m)); padding: calc(16 * var(--m)) calc(40 * var(--m)) calc(30 * var(--m)) calc(17.9 * var(--m)); }
  .amen-hero__thumbs button { width: calc(350.7 * var(--m)); height: calc(511.3 * var(--m)); border-radius: calc(30 * var(--m)); }
  .slide-progress { height: calc(4 * var(--m)); }

  /* Planta (sección de 1127.9): la composición de escritorio (planta, calles y marcadores) a 0.5642, con la planta de
     x 50.6 a 1029.4 desde y 133.2. Listas desde x 71.3 (números) con INTERIORES y EXTERIORES en x 108.7 y 427.1; el
     plano de exteriores a 0.8597 en (638.1, 701.2), sin la flecha. */
  .amen-plan { height: calc(1127.9 * var(--m)); }
  .amen-plan .frame { height: 100%; --u: calc(.5642 * var(--m)); }
  .amen-plan__stage { display: block; position: absolute; left: calc(-1.65 * var(--m)); top: calc(76.7 * var(--m)); }
  .amen-list { top: calc(760.1 * var(--m)); }
  .amen-list--int { left: calc(108.7 * var(--m)); --num-w: calc(46.5 * var(--m)); }
  .amen-list--ext { left: calc(427.1 * var(--m)); --num-w: calc(48.6 * var(--m)); }
  .amen-list h3 { font-size: calc(18.8 * var(--m)); line-height: 1; letter-spacing: var(--track); }
  .amen-list h3::before, .amen-list--ext h3::before { left: calc(-38.7 * var(--m)); top: 50%; width: calc(27 * var(--m)); }
  .amen-list ol { margin: calc(33.1 * var(--m)) 0 0 calc(-37.4 * var(--m)); font-size: calc(21.7 * var(--m)); line-height: calc(28.95 * var(--m)); letter-spacing: var(--track); }
  .amen-plan__mini { left: calc(638.1 * var(--m)); top: calc(701.2 * var(--m)); width: calc(460 * .8597 * var(--m)); }
  .amen-plan__mini path:first-child { display: none; } /* la flecha de escritorio no va en el PDF móvil */
  /* Las calles van más separadas de la planta que en escritorio: las de arriba (rayas y "Miguel Hidalgo y Costilla")
     suben 47.5 y las de abajo bajan 57.7 (unidades del dibujo). Los nombres, a 15.4 como en el PDF. */
  .amen-plan__capa > :nth-child(n+18):nth-child(-n+121), .amen-plan__capa > :nth-child(229) { translate: 0 -47.5px; }
  .amen-plan__capa > :nth-child(n+122):nth-child(-n+225), .amen-plan__capa > :nth-child(230) { translate: 0 57.7px; }
  .amen-plan__capa > text:nth-child(n+229) { font-size: 27.3px; }
  .amen-plan .amen-plan__capa { overflow: visible; } /* los nombres de las calles quedan fuera del viewBox */

  /* =================================================================== UBICACIÓN */
  /* Franja oscura de 287.4 con la frase de 30 centrada (líneas base en 181.2 y 217.2); mapa de escritorio a 0.9184 desde
     y 170.2 (sus textos quedan a 17.4 y 14.6, como en el PDF), en una franja clara de 1027.6; lista en dos columnas
     (x 84.3 y 537.3) con la barra amarilla en x 55.1; "Cómo llegar" con flecha. */
  .ubic-mapa { height: calc(1816.3 * var(--m) + var(--hd)); }
  .ubic-mapa::after { left: 0; top: calc(285.2 * var(--m) + var(--hd)); bottom: auto; height: calc(1027.6 * var(--m)); }
  .ubic-mapa .frame { top: var(--hd); height: calc(100% - var(--hd)); }
  .page-ubicacion .site-header, .page-contacto .site-header { background: rgb(241 240 241); } /* en el PDF la barra es opaca en estas dos */
  .ubic-mapa__panel { position: static; width: auto; }
  .ubic-mapa__title { left: 0; top: calc(154.1 * var(--m)); width: 100%; text-align: center; padding-left: var(--track); font-size: calc(30 * var(--m)); line-height: calc(36 * var(--m)); }
  .ubic-mapa__mapa { z-index: 1; left: calc(-.2 * var(--m)); top: calc(170.2 * var(--m)); width: calc(1176.1 * .9184 * var(--m)); }
  .ubic-mapa__mapa { clip-path: inset(calc(115 * var(--m)) 0 0 0); } /* el mapa empieza donde termina la franja oscura del título (y 285.2) */
  .ubic-mapa__lista {
    left: calc(55.1 * var(--m)); top: calc(1380.8 * var(--m)); height: auto; width: calc(935.2 * var(--m));
    padding: calc(7.7 * var(--m)) 0 0 calc(29.2 * var(--m)); border-left: 0;
    columns: 2; column-gap: 0;
    font-size: calc(21.1 * var(--m)); line-height: calc(22 * var(--m));
  }
  .ubic-mapa__lista li { break-inside: avoid; }
  .ubic-mapa__lista li:nth-child(11) { break-before: column; margin-top: 0; }
  .ubic-mapa__lista::before { content: ""; position: absolute; left: 0; top: 0; width: calc(2.8 * var(--m)); height: calc(294.6 * var(--m)); background: var(--c-yellow); }
  .ubic-mapa__lista li + li { margin-top: calc(6.15 * var(--m)); }
  .ubic-mapa__lista li.justify { width: auto; }
  .ubic-mapa__lista .justify .ln, .ubic-mapa__lista li.justify { text-align-last: auto; }
  .ubic-mapa__llegar {
    left: calc(84.3 * var(--m)); top: calc(1733.6 * var(--m)); height: auto; min-width: 0; padding: 0; gap: calc(23.8 * var(--m));
    background: none; box-shadow: none; color: var(--c-paper); font-size: calc(25.7 * var(--m)); font-weight: 300; line-height: 1; letter-spacing: var(--track);
  }
  .ubic-mapa__llegar:hover { background: none; color: var(--c-yellow); }
  .ubic-mapa__llegar svg { display: block; width: calc(65.8 * var(--m)); height: auto; color: var(--c-yellow); translate: 0 calc(2.2 * var(--m)); }

  /* Frase: la zona del PDF (pareja, línea del cerro y fondo, ubic-pareja-movil) y el texto de 21 centrado en x 681. */
  .ubic-frase { height: calc(463.8 * var(--m)); }
  .ubic-frase__bg { left: 0; top: 0; width: calc(1080 * var(--m)); height: auto; transform: none; }
  .ubic-frase__text { left: calc(339.7 * var(--m)); top: calc(1930 * var(--m) - 1816.3 * var(--m)); width: calc(680 * var(--m)); font-size: calc(21 * var(--m)); line-height: calc(25.2 * var(--m)); }

  /* =================================================================== DESARROLLADORES */
  /* Hero de 1403.9: la foto de escritorio a 0.6497 (cubre el alto) en x −731.8; botón de regreso de 55.4 × 33 en
     (57.3, 46.3; aquí va el de antes); logo de RISE de 200 en (440, 125.3); "Desarrollado por:" de 30.2
     centrado (línea base 529.8) y los tres logos centrados en y 583 (nest y ANCORE al tamaño del PDF, 332 de ancho; Alora como en escritorio). */
  .dev-hero { height: calc(1403.9 * var(--m)); }
  .dev-hero .frame { height: 100%; }
  .dev-hero__img { inset: auto; left: calc(-731.8 * var(--m)); top: 0; width: calc(3840 * .6497 * var(--m)); height: auto; max-width: none; }
  /* Botón de regreso como antes del PDF móvil (48 × 32 px). La flecha se sale de su viewBox (la punta mide el doble
     de alto y su centro es la orilla de abajo): se deja visible y se sube medio alto para que quede al centro. */
  .dev-hero__back { display: flex; align-items: center; justify-content: center; left: var(--g); top: 18px; width: 48px; height: 32px; border-radius: 8px; }
  .dev-hero__back svg { position: static; width: 22px; overflow: visible; transform: translateY(-50%); }
  .dev-hero__logo { left: calc(440 * var(--m)); top: calc(125.3 * var(--m)); width: calc(200 * var(--m)); }
  .dev-hero__by { left: 0; right: 0; top: calc(505.5 * var(--m)); text-align: center; padding-left: var(--track-sm); font-size: calc(30.2 * var(--m)); line-height: 1; }
  /* nest y ANCORE Group (logo completo, el SVG de escritorio) y Alora. --su es una unidad del SVG: el logo de nest mide
     lo que en el PDF. Más aire entre los tres logos: 47.5 + 24 unidades. Entre nest y ANCORE, que van en el mismo SVG,
     nest se recorre 24 a la izquierda y el SVG deja ese espacio con su margen. */
  .dev-hero__socios { --su: calc(var(--m) * 332 / 332.8); --sa: calc(24 * var(--su)); top: calc(583 * var(--m)); gap: calc(47.5 * var(--su) + var(--sa)); transform: translate(-50%, -50%); }
  .dev-hero__socios svg { width: calc(562.06 * var(--su)); margin-left: var(--sa); }
  .dev-hero__socios svg g[data-nest-align] { transform: translate(-24px, -3.3px); } /* unidades del SVG */
  .dev-hero__alora { height: calc(66.4 * var(--m)); }

  /* Socios: nest (oscuro, foto a la izquierda), ANCORE (claro, foto a la derecha) y Alora (como
     nest). Foto de 406.8 × 314.8 en x 58 (ANCORE: en x 620); rótulo y texto en x 559.4 (en ANCORE, en x 58.3); párrafos de 16.9 cada
     22.45, con un renglón vacío entre ellos. "Más información" no va en el PDF móvil. */
  .dev-socio { position: relative; overflow: hidden; padding: 0; }
  .dev-socio .frame, .dev-socio--foto-izq .frame { display: block; height: 100%; padding: 0; }
  .dev-socio[aria-label="Residences by nest"] { height: calc(409.9 * var(--m)); }
  .dev-socio[aria-label="Offices by ANCORE Group"] { height: calc(415.4 * var(--m)); }
  .dev-socio[aria-label^="Kimpton"] { min-height: calc(413.1 * var(--m)); }
  .dev-socio[aria-label^="Kimpton"] .frame { padding-bottom: calc(48 * var(--m)); }
  .dev-socio__img { position: absolute; left: calc(58.1 * var(--m)); top: calc(48.9 * var(--m)); width: calc(406.8 * var(--m)); height: calc(314.8 * var(--m)); min-height: 0; }
  .dev-socio[aria-label="Offices by ANCORE Group"] .dev-socio__img { left: calc(620 * var(--m)); top: calc(51.2 * var(--m)); width: calc(407 * var(--m)); height: calc(315 * var(--m)); object-position: 43.3% 0; }
  .dev-socio__texto { position: relative; display: block; width: calc(470 * var(--m)); margin-left: calc(559.4 * var(--m)); padding-top: calc(49.1 * var(--m)); }
  .dev-socio[aria-label="Offices by ANCORE Group"] .dev-socio__texto { margin-left: calc(58.3 * var(--m)); padding-top: calc(51.7 * var(--m)); }
  .dev-socio__head { min-height: 0; }
  .dev-socio__head--nest { width: calc(376.1 * .5623 * var(--m)); }
  .dev-socio__head--ancore { width: calc(432.01 * .5627 * var(--m)); }
  .dev-socio__head--alora { gap: calc(16.4 * var(--m)); font-size: calc(14.9 * var(--m)); }
  .dev-socio__head--alora img { height: calc(14.9 * 1.94 * 1.2 * var(--m)); transform: translateY(calc(-.8 * var(--m))); }
  .dev-text { margin-top: calc(28.5 * var(--m)); font-size: calc(16.9 * var(--m)); line-height: calc(22.45 * var(--m)); }
  .dev-socio[aria-label="Offices by ANCORE Group"] .dev-text { margin-top: calc(34.4 * var(--m)); }
  .dev-text p + p { margin-top: calc(22.45 * var(--m)); }
  .dev-text .ln { display: block; }
  .dev-socio__mas { display: none; }
  .dev-socio__img--nota .nota-imagen { right: calc(16 * var(--m)); bottom: calc(12 * var(--m)); font-size: calc(14 * var(--m)); }

  /* Créditos (351.6): tarjetas de 325 × 196.4 en x 162.7 y 592.1 (y 91.2), con sombra suave; pestaña de 91 × 76
     centrada, montada a la mitad; título de 19.5 y renglones de 15.6 cada 19.5, centrados. */
  .dev-creditos { height: calc(351.6 * var(--m)); padding: 0; }
  .dev-creditos .frame { display: block; height: 100%; }
  .credito, .credito--2, .credito--3 {
    position: absolute; top: calc(91.2 * var(--m)); width: calc(325 * var(--m)); height: calc(196.4 * var(--m)); padding: 0;
    border-radius: calc(20 * var(--m)); box-shadow: 0 calc(8 * var(--m)) calc(36 * var(--m)) rgb(35 30 31 / .1);
  }
  .credito--2 { left: calc(162.7 * var(--m)); }
  .credito--3 { left: calc(592.1 * var(--m)); }
  .credito__tab {
    left: 50%; top: calc(-38.5 * var(--m)); transform: translateX(-50%); width: calc(91 * var(--m)); height: calc(76 * var(--m));
    border-radius: calc(14 * var(--m)); display: flex; align-items: center; justify-content: center;
    box-shadow: 0 calc(4 * var(--m)) calc(14 * var(--m)) rgb(35 30 31 / .12);
  }
  .credito__icon, .credito--2 .credito__icon, .credito--3 .credito__icon { position: static; }
  .credito--2 .credito__icon { width: calc(74 * .655 * var(--m)); }
  .credito--3 .credito__icon { width: calc(92 * .655 * var(--m)); }
  .credito h3 { margin-top: calc(58.6 * var(--m)); font-size: calc(19.5 * var(--m)); line-height: 1; }
  .credito p { margin-top: calc(20.8 * var(--m)); padding: 0 0 0 var(--track); font-size: calc(15.6 * var(--m)); line-height: calc(19.5 * var(--m)); }

  /* Fachada de 719.9, a todo lo ancho. */
  .dev-fachada { height: calc(719.9 * var(--m)); }
}
