/* ============================================================
   vesper_mobile.css — Edición móvil de la portada (index.html).

   PUERTA: (pointer: coarse) and (max-width: 820px).
   El `pointer: coarse` es deliberado: significa "el dedo es el puntero
   principal", así que un escritorio con ratón NUNCA entra aquí, ni
   aunque el usuario encoja la ventana. Un teléfono sí entra, de pie y
   acostado. Encima de esa puerta este archivo no pinta absolutamente
   nada y la portada de escritorio queda intacta.

   Paleta y tipos: los mismos que index.html — navy #1B1B2F, oro #c5a059
   y #d9bd84, crema #f5f2eb, Bodoni Moda para cifras y títulos, Inter
   para el resto. Los iconos son el sprite SVG de la propia página
   (clase .i), no Font Awesome.
   ============================================================ */

#m-app { display: none; }

@media (pointer: coarse) and (max-width: 820px) {

  /* 1. Apagar la portada de escritorio ------------------------
     Se oculta <main> entero en vez de enumerar sus hijos: así da igual
     que mañana una sección sea <div> o <section>, no se escapa nada. */
  body > header,
  body > footer,
  main#main { display: none !important; }

  /* 2. Encender la edición móvil ------------------------------ */
  #m-app { display: block; }

  html { scroll-behavior: smooth; }
  body { margin: 0; background: #fff; color: var(--navy, #1B1B2F);
         font-family: 'Inter', system-ui, sans-serif; -webkit-font-smoothing: antialiased; }
  body.m-locked { overflow: hidden; }

  #m-app *, #m-app *::before, #m-app *::after { box-sizing: border-box; }
  /* Las barajas ocultan sus paneles con [hidden]; sin esto los display:flex
     de abajo le ganan al atributo y se apilan las tres listas a la vez. */
  #m-app [hidden] { display: none !important; }
  #m-app img { max-width: 100%; }
  #m-app a { text-decoration: none; color: inherit; }
  #m-app h1, #m-app h2, #m-app h3 { margin: 0; }
  #m-app .m-sb { scrollbar-width: none; }
  #m-app .m-sb::-webkit-scrollbar { width: 0; height: 0; }

  /* Los iconos vienen del sprite de index.html (.i = 1em, trazo 1.5).
     .i--solid es para los dos glifos de marca, que son de relleno. */
  #m-app .i--solid { fill: currentColor; stroke: none; }

  /* --- Tipos de la edición móvil ---
     Bodoni Moda a tamaño pequeño necesita opsz bajo, si no se va a peso
     de pelo y desaparece; a tamaño de titular se deja el óptico automático. */
  #m-app .m-eyebrow { display: inline-block; font: 700 11px 'Inter', sans-serif;
    letter-spacing: 1.6px; text-transform: uppercase; color: #7c5e22; }
  #m-app .m-eyebrow--dark { color: #d9bd84; }
  #m-app .m-h1 { font-family: 'Bodoni Moda', Georgia, serif; font-size: 29px; line-height: 1.14;
    font-weight: 700; margin: 9px 0 10px; text-wrap: pretty;
    font-optical-sizing: none; font-variation-settings: 'opsz' 14; }
  #m-app .m-h1 span { color: #d9bd84; }
  #m-app .m-h2 { font-family: 'Bodoni Moda', Georgia, serif; font-size: 22px; line-height: 1.22;
    font-weight: 700; margin: 7px 0 0;
    font-optical-sizing: none; font-variation-settings: 'opsz' 9; }
  #m-app .m-lead { font: 400 12.5px/1.5 'Inter', sans-serif; color: #5d6470; margin: 6px 0 0; }

  /* --- Botones (oro plano, radio 3, versalita) --- */
  #m-app .m-btn { display: flex; align-items: center; justify-content: center; height: 52px;
    border: none; border-radius: 3px; background: #c5a059; color: #1B1B2F; cursor: pointer;
    font: 700 12.5px 'Inter', sans-serif; letter-spacing: .13em; text-transform: uppercase; }
  #m-app .m-btn--dark { background: #1B1B2F; color: #fff; height: 48px; font-size: 12px; }
  #m-app .m-btn--ghost { background: transparent; color: #fff; height: 48px; font-size: 11.5px;
    border: 1px solid rgba(255,255,255,.28); font-weight: 700; }
  /* #8a6a2a y no #a8843d: sobre blanco daba 3.48:1 y hace falta 4.5. Ahora 5.03. */
  #m-app .m-link { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 2px;
    font: 600 13px 'Inter', sans-serif; color: #8a6a2a; }
  #m-app .m-link span { border-bottom: 1px solid rgba(138,106,42,.45); padding-bottom: 3px; }
  #m-app .m-link .i { margin-bottom: 2px; }
  #m-app .m-link--gold { color: #d9bd84; align-self: center; }
  #m-app .m-link--gold span { border-bottom-color: rgba(217,189,132,.45); }

  /* 3. Barra superior ---------------------------------------- */
  #m-app .m-bar { position: sticky; top: 0; z-index: 60; display: flex; align-items: center;
    justify-content: space-between; height: 56px; padding: 0 14px 0 18px;
    background: #1B1B2F; border-bottom: 1px solid rgba(197,160,89,.28); }
  #m-app .m-brand { display: flex; align-items: center; gap: 9px; min-height: 44px; }
  #m-app .m-brand img { height: 26px; width: 26px; object-fit: contain; }
  #m-app .m-brand b { font-family: 'Bodoni Moda', Georgia, serif; color: #fff; font-size: 15px;
    font-weight: 700; letter-spacing: .3px;
    font-optical-sizing: none; font-variation-settings: 'opsz' 8; }
  #m-app .m-bar__cta { display: inline-flex; align-items: center; height: 40px; padding: 0 13px;
    border-radius: 3px; background: #c5a059; color: #1B1B2F;
    font: 700 11.5px 'Inter', sans-serif; letter-spacing: .1em; text-transform: uppercase; }
  #m-app .m-burger { width: 44px; height: 44px; display: flex; align-items: center;
    justify-content: center; background: none; border: none; color: #fff; font-size: 20px; cursor: pointer; }

  /* Hoja de navegación. Pegada a la barra: antes abría en 96px y dejaba
     44px de hero asomándose entre la barra y el menú. */
  #m-app .m-sheet { display: none; position: fixed; inset: 56px 0 0; z-index: 55;
    background: rgba(20,18,42,.55); }
  #m-app .m-sheet.is-open { display: block; }
  #m-app .m-sheet__inner { background: #1B1B2F; border-bottom: 1px solid rgba(197,160,89,.28);
    padding: 8px 20px 18px; animation: m-sheet .24s cubic-bezier(.22,1,.36,1) both; }
  #m-app .m-sheet a { display: flex; align-items: center; min-height: 52px; color: #fff;
    font: 600 15px 'Inter', sans-serif; border-bottom: 1px solid rgba(255,255,255,.08); }
  #m-app .m-sheet a.is-gold { color: #d9bd84; justify-content: space-between; border-bottom: none; }
  #m-app .m-sheet .m-btn--ghost { margin-top: 10px; }

  /* 4. Hero -------------------------------------------------- */
  #m-app .m-hero { position: relative; overflow: hidden; color: #fff; padding: 26px 20px 24px;
    background: radial-gradient(520px 260px at 88% -12%, rgba(197,160,89,.26), transparent 62%),
                linear-gradient(168deg, #222b47, #1B1B2F 58%, #141a2e); }
  #m-app .m-hero__top { display: flex; align-items: flex-start; gap: 12px; }
  #m-app .m-hero__copy { flex: 1; min-width: 0; }
  #m-app .m-hero p { font: 400 14.5px/1.5 'Inter', sans-serif; color: rgba(255,255,255,.78); margin: 0; }
  #m-app .m-hero__note { font: 400 11.5px 'Inter', sans-serif !important;
    color: rgba(255,255,255,.6) !important; margin: 2px 0 0 !important; text-align: center; }
  #m-app .m-cta { display: flex; flex-direction: column; gap: 12px; margin-top: 18px; }

  /* Mascota (animaciones tomadas de vesper_mascot.js) */
  #m-app .m-cat { flex: none; margin-top: 12px; position: relative; line-height: 0;
    animation: vc-float 3s ease-in-out infinite; }
  #m-app .m-cat img { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; display: block;
    background: rgba(201,168,76,.14); border: 2px solid #C9A84C;
    transform-origin: 60% 92%; animation: vc-wave 1.05s ease-in-out 2; }
  #m-app .m-cat i { position: absolute; width: 13px; height: 13px; border-radius: 50%;
    background: radial-gradient(circle, #f3e2ab, rgba(243,226,171,0) 70%);
    animation: vc-twinkle 1s ease-out infinite; }
  #m-app .m-cat i:first-of-type { top: -5px; right: -5px; }
  #m-app .m-cat i:last-of-type { bottom: -3px; left: -5px; width: 10px; height: 10px; animation-delay: .5s; }

  /* Stats */
  #m-app .m-stats { display: flex; gap: 8px; margin-top: 18px; }
  #m-app .m-stats div { flex: 1; text-align: center; padding: 9px 4px; border-radius: 3px;
    background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.1); }
  #m-app .m-stats b { display: block; font-family: 'Bodoni Moda', Georgia, serif; font-size: 17px;
    font-weight: 700; color: #d9bd84; line-height: 1.15;
    font-optical-sizing: none; font-variation-settings: 'opsz' 8; }
  #m-app .m-stats small { font: 600 11px 'Inter', sans-serif; letter-spacing: .5px;
    text-transform: uppercase; color: rgba(255,255,255,.66); }

  /* 5. Chips de confianza ------------------------------------ */
  #m-app .m-chips { display: flex; gap: 8px; overflow-x: auto; padding: 11px 20px;
    background: #f5f2eb; border-bottom: 1px solid #ece7da; }
  #m-app .m-chips span { flex: none; display: inline-flex; align-items: center; gap: 6px;
    font: 600 11.5px 'Inter', sans-serif; color: #5d6470; background: #fff;
    border: 1px solid #ece7da; border-radius: 999px; padding: 7px 12px; }
  #m-app .m-chips .i { color: #8a6a2a; }

  /* 6. Método (banda navy, la cifra primero) ------------------ */
  #m-app .m-method { background: #1B1B2F; color: #fff; padding: 28px 20px 26px; }
  #m-app .m-method__claim { display: flex; align-items: flex-start; gap: 14px; margin-top: 12px; }
  #m-app .m-method__num { font-family: 'Bodoni Moda', Georgia, serif; font-size: 58px;
    font-weight: 700; line-height: .9; color: #d9bd84; }
  #m-app .m-method__claim p { flex: 1; min-width: 0; font: 400 14px/1.45 'Inter', sans-serif;
    color: rgba(255,255,255,.82); padding-top: 4px; margin: 0; }
  #m-app .m-method__claim b { color: #fff; font-weight: 600; }
  #m-app .m-tags { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 20px; }
  #m-app .m-tags span { display: flex; align-items: center; gap: 9px; padding: 11px 12px;
    border: 1px solid rgba(255,255,255,.14); border-radius: 3px;
    font: 600 12px 'Inter', sans-serif; color: #fff; }
  #m-app .m-tags .i { color: #d9bd84; font-size: 14px; }

  /* 7. Niveles (rail) --------------------------------------- */
  #m-app .m-levels { background: linear-gradient(168deg, #232847, #141a2e);
    border-top: 1px solid rgba(197,160,89,.3); color: #fff; padding: 28px 20px; }
  #m-app .m-levels > p { font: 400 12.5px 'Inter', sans-serif; color: rgba(255,255,255,.66); margin: 6px 0 16px; }
  #m-app .m-lvl { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 48px;
    padding: 6px 0; background: none; border: none; border-bottom: 1px solid rgba(255,255,255,.09);
    text-align: left; cursor: pointer; font-family: inherit; }
  #m-app .m-lvl__cefr { flex: none; width: 48px; font-family: 'Bodoni Moda', Georgia, serif;
    font-size: 16px; font-weight: 700; color: #d9bd84;
    font-optical-sizing: none; font-variation-settings: 'opsz' 8; }
  #m-app .m-lvl.is-open .m-lvl__cefr { color: #f3e2ab; }
  #m-app .m-lvl__body { flex: 1; min-width: 0; }
  #m-app .m-lvl__name { display: block; font: 600 13.5px 'Inter', sans-serif; color: #fff; }
  #m-app .m-lvl__goal { display: none; font: 400 12px/1.45 'Inter', sans-serif;
    color: rgba(255,255,255,.66); margin-top: 3px; }
  #m-app .m-lvl.is-open .m-lvl__goal { display: block; }
  #m-app .m-lvl__bar { flex: none; width: 56px; height: 4px; border-radius: 2px;
    background: rgba(255,255,255,.14); overflow: hidden; }
  #m-app .m-lvl__bar i { display: block; height: 100%; background: #c5a059; }

  /* 8. Baraja (cursos y planes) ------------------------------ */
  #m-app .m-deck { position: relative; overflow: hidden; }
  #m-app .m-deck--courses { height: 266px; margin-top: 16px; }
  #m-app .m-deck--plans { height: 292px; margin-top: 14px; }
  #m-app .m-card { position: absolute; left: 16px; top: 10px; padding: 0; border: none;
    background: none; cursor: pointer; transform-origin: 0 100%;
    transition: transform .46s cubic-bezier(.22,1,.36,1), opacity .46s,
                left .46s cubic-bezier(.22,1,.36,1); }
  #m-app .m-deck--courses .m-card { width: 196px; height: 244px; }
  #m-app .m-deck--plans .m-card { width: 202px; height: 264px; top: 14px; }

  /* Carta de curso */
  #m-app .m-course { position: relative; display: block; width: 100%; height: 100%;
    border-radius: 4px; overflow: hidden; background: #141a2e; border: 1px solid rgba(197,160,89,.35);
    border-bottom: 3px solid #c5a059; box-shadow: 0 8px 20px rgba(20,18,42,.22); }
  #m-app .m-card.is-active .m-course { border-color: #c5a059; box-shadow: 0 18px 40px rgba(20,18,42,.34); }
  #m-app .m-course img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
  #m-app .m-course__shade { position: absolute; inset: auto 0 0 0; height: 120px;
    background: linear-gradient(to top, rgba(20,18,42,.86), rgba(20,18,42,0)); }
  #m-app .m-course__veil { position: absolute; inset: 0; background: rgba(20,18,42,.34);
    transition: background .46s; }
  #m-app .m-card.is-active .m-course__veil { background: rgba(20,18,42,0); }
  #m-app .m-badge { position: absolute; top: 10px; left: 10px; z-index: 2;
    font: 700 11px 'Inter', sans-serif; letter-spacing: .1em; text-transform: uppercase;
    color: #1B1B2F; background: #c5a059; padding: 4px 8px; border-radius: 2px; }
  #m-app .m-course__n { position: absolute; top: 11px; right: 12px; z-index: 2;
    font-family: 'Bodoni Moda', Georgia, serif; font-size: 15px; font-weight: 700; color: rgba(255,255,255,.78);
    font-optical-sizing: none; font-variation-settings: 'opsz' 8; }
  #m-app .m-course__t { position: absolute; left: 13px; right: 13px; bottom: 12px; z-index: 2;
    font-family: 'Bodoni Moda', Georgia, serif; font-size: 18px; font-weight: 700; color: #fff;
    line-height: 1.18; text-align: left;
    font-optical-sizing: none; font-variation-settings: 'opsz' 8; }
  /* Pista de que la carta del frente sí lleva a algún sitio */
  #m-app .m-card.is-active .m-course__go { opacity: 1; }
  #m-app .m-course__go { position: absolute; right: 11px; bottom: 12px; z-index: 3; opacity: 0;
    width: 26px; height: 26px; border-radius: 50%; background: #c5a059; color: #1B1B2F;
    display: flex; align-items: center; justify-content: center; font-size: 14px; transition: opacity .3s; }

  /* Carta de precio */
  #m-app .m-plan { position: relative; display: flex; flex-direction: column; width: 100%;
    height: 100%; border-radius: 4px; overflow: hidden; background: #faf8f3;
    border: 1px solid #e4e0d8; box-shadow: 0 5px 14px rgba(27,27,47,.09); text-align: left; }
  #m-app .m-card.is-active .m-plan { background: #fff; border-color: #c5a059;
    box-shadow: 0 20px 44px rgba(27,27,47,.18); }
  #m-app .m-plan__ribbon { display: flex; align-items: center; justify-content: center; height: 24px;
    flex: none; background: #c5a059; color: #1B1B2F; font: 700 11px 'Inter', sans-serif;
    letter-spacing: .12em; text-transform: uppercase; }
  #m-app .m-plan__body { display: flex; flex-direction: column; flex: 1; padding: 16px 16px 14px; }
  #m-app .m-plan__kind { display: flex; align-items: center; gap: 7px;
    font: 700 11px 'Inter', sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #7c5e22; }
  #m-app .m-plan__kind .i { font-size: 13px; color: #8a6a2a; }
  #m-app .m-plan__name { display: block; font-family: 'Bodoni Moda', Georgia, serif; font-size: 18px;
    font-weight: 700; line-height: 1.18; color: #4a4a5e; margin-top: 9px;
    font-optical-sizing: none; font-variation-settings: 'opsz' 8; }
  #m-app .m-card.is-active .m-plan__name { color: #1B1B2F; }
  #m-app .m-plan__rule { display: block; height: 1px; background: #e4e0d8; margin: 13px 0 12px; }
  #m-app .m-card.is-active .m-plan__rule { background: #c5a059; }
  #m-app .m-plan__price { display: flex; align-items: flex-start; gap: 2px; }
  #m-app .m-plan__cur { font-family: 'Bodoni Moda', Georgia, serif; font-size: 15px;
    font-weight: 700; color: #8a6a2a; padding-top: 5px;
    font-optical-sizing: none; font-variation-settings: 'opsz' 8; }
  #m-app .m-plan__amt { font-family: 'Bodoni Moda', Georgia, serif; font-size: 32px;
    font-weight: 700; line-height: .98; color: #1B1B2F; letter-spacing: -.01em; }
  #m-app .m-plan__unit { display: block; font: 600 11px 'Inter', sans-serif; letter-spacing: .1em;
    text-transform: uppercase; color: #5d6470; margin-top: 7px; }
  #m-app .m-plan__note { display: block; font: 400 11.5px/1.45 'Inter', sans-serif; color: #5d6470;
    margin-top: auto; padding-top: 12px; }

  /* Puntos + contador de baraja.
     El punto se ve de 6px pero el blanco de toque mide 44: el alto va en
     padding y el fondo se recorta al content-box. */
  #m-app .m-deck-foot { display: flex; align-items: center; justify-content: space-between;
    gap: 12px; margin-top: 6px; }
  #m-app .m-dots { display: flex; align-items: center; gap: 0; margin: -19px -9px; }
  #m-app .m-dots button { width: 6px; height: 6px; padding: 19px 9px; border: none; border-radius: 3px;
    box-sizing: content-box; background: rgba(27,27,47,.28); background-clip: content-box; cursor: pointer;
    transition: width .3s, background-color .3s; }
  #m-app .m-dots button.is-on { width: 20px; background-color: #c5a059; }
  #m-app .m-count { font: 700 11.5px ui-monospace, Menlo, monospace; letter-spacing: .08em; color: #5d6470; }
  #m-app .m-includes { display: flex; align-items: center; gap: 9px; margin: 0 0 11px; }
  #m-app .m-includes span { font: 700 11px 'Inter', sans-serif; letter-spacing: .14em;
    text-transform: uppercase; color: #7c5e22; }
  #m-app .m-includes i { flex: 1; height: 1px; background: #ece7da; }
  #m-app .m-perks { display: flex; flex-direction: column; gap: 8px; list-style: none; padding: 0; margin: 0; }
  #m-app .m-perks li { display: flex; gap: 9px; align-items: flex-start;
    font: 400 12.5px/1.4 'Inter', sans-serif; color: #1B1B2F; }
  #m-app .m-perks .i { color: #8a6a2a; margin-top: 2px; font-size: 15px; }

  /* 9. Certificación ---------------------------------------- */
  #m-app .m-cert { background: linear-gradient(135deg, #f5f2eb, #efe9da); padding: 28px 20px; }
  #m-app .m-cert p { font: 400 13px/1.5 'Inter', sans-serif; color: #5d6470; margin: 6px 0 14px; }
  #m-app .m-cert__row { display: flex; gap: 8px; }
  #m-app .m-cert__row div { flex: 1; background: #fff; border: 1px solid #ece7da; border-radius: 3px;
    padding: 12px 10px; text-align: center; }
  #m-app .m-cert__row b { display: block; font-family: 'Bodoni Moda', Georgia, serif;
    font-size: 16px; font-weight: 700; color: #1B1B2F;
    font-optical-sizing: none; font-variation-settings: 'opsz' 8; }
  #m-app .m-cert__row small { font: 400 11.5px 'Inter', sans-serif; color: #5d6470; }

  /* 10. FAQ -------------------------------------------------- */
  #m-app .m-faq { border: 1px solid #ece7da; border-radius: 3px; background: #fff;
    overflow: hidden; margin-bottom: 8px; }
  #m-app .m-faq button { display: flex; width: 100%; align-items: center; justify-content: space-between;
    gap: 12px; min-height: 52px; padding: 12px 15px; background: none; border: none; cursor: pointer;
    text-align: left; font: 600 13.5px/1.35 'Inter', sans-serif; color: #1B1B2F; }
  #m-app .m-faq .i { color: #8a6a2a; font-size: 15px; transition: transform .3s; }
  #m-app .m-faq.is-open .i { transform: rotate(180deg); }
  #m-app .m-faq__a { display: none; padding: 0 15px 14px; font: 400 12.5px/1.55 'Inter', sans-serif; color: #5d6470; }
  #m-app .m-faq.is-open .m-faq__a { display: block; }

  /* 11. Cierre + formulario --------------------------------- */
  #m-app .m-close { background: linear-gradient(168deg, #222b47, #141a2e); color: #fff;
    padding: 30px 20px 26px; text-align: center; }
  #m-app .m-close .m-h2 { color: #fff; margin: 0 0 8px; }
  #m-app .m-close p { font: 400 13.5px/1.5 'Inter', sans-serif; color: rgba(255,255,255,.78); margin: 0 0 16px; }
  #m-app .m-disclose { margin-top: 8px; background: none; border: none; color: #d9bd84;
    font: 600 13px 'Inter', sans-serif; text-decoration: underline; text-underline-offset: 3px;
    min-height: 44px; cursor: pointer; }
  #m-app .m-form { display: none; flex-direction: column; gap: 9px; text-align: left; }
  #m-app .m-form.is-open { display: flex; }
  #m-app .m-form input { height: 48px; padding: 0 16px; border-radius: 3px;
    border: 1px solid rgba(255,255,255,.24); background: rgba(255,255,255,.08); color: #fff;
    font: 400 16px 'Inter', sans-serif; }
  #m-app .m-form input::placeholder { color: rgba(255,255,255,.6); }
  #m-app .m-form button { height: 48px; border-radius: 3px; border: 1px solid #c5a059;
    background: transparent; color: #f3e2ab; cursor: pointer;
    font: 700 11.5px 'Inter', sans-serif; letter-spacing: .13em; text-transform: uppercase; }
  #m-app .m-formmsg { font: 400 12.5px/1.5 'Inter', sans-serif; color: #f3e2ab; margin-top: 12px; }
  #m-app .m-formmsg:empty { margin: 0; }

  /* 12. Pie -------------------------------------------------- */
  #m-app .m-foot { background: #141a2e; color: rgba(255,255,255,.62); padding: 22px 20px 96px; }
  #m-app .m-foot__brand { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
  #m-app .m-foot__brand img { height: 30px; }
  #m-app .m-foot__brand b { font-family: 'Bodoni Moda', Georgia, serif; color: #fff; font-size: 15px;
    font-weight: 700; font-optical-sizing: none; font-variation-settings: 'opsz' 8; }
  #m-app .m-foot__links { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 14px; margin-bottom: 14px; }
  #m-app .m-foot__links a { display: flex; align-items: center; min-height: 44px;
    font: 500 12.5px 'Inter', sans-serif; color: rgba(255,255,255,.66); }
  #m-app .m-foot__bottom { display: flex; align-items: center; justify-content: space-between;
    border-top: 1px solid rgba(255,255,255,.12); padding-top: 8px; font: 400 11.5px 'Inter', sans-serif; }
  #m-app .m-foot__bottom a { display: flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; margin-right: -10px; color: rgba(255,255,255,.66); font-size: 18px; }

  /* 13. Barra de acción fija -------------------------------- */
  #m-app .m-dock { position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
    padding: 10px 14px calc(14px + env(safe-area-inset-bottom));
    background: linear-gradient(to top, rgba(20,18,42,.97), rgba(20,18,42,.9) 70%, rgba(20,18,42,0));
    opacity: 0; transform: translateY(14px); pointer-events: none;
    transition: opacity .28s cubic-bezier(.22,1,.36,1), transform .28s cubic-bezier(.22,1,.36,1); }
  #m-app .m-dock.is-on { opacity: 1; transform: none; pointer-events: auto; }
  #m-app .m-dock__row { display: flex; gap: 9px; align-items: center; }
  #m-app .m-dock .m-btn { flex: 1; height: 50px; font-size: 12px; }
  #m-app .m-dock__wa { flex: none; width: 50px; height: 50px; display: flex; align-items: center;
    justify-content: center; border-radius: 3px; background: transparent;
    border: 1px solid rgba(255,255,255,.32); color: #fff; font-size: 20px; }

  #m-app section { padding: 30px 20px 26px; }
  #m-app .m-flush { padding-left: 0; padding-right: 0; }
  #m-app .m-flush > *:not(.m-deck) { padding-left: 20px; padding-right: 20px; }

  /* Táctiles anchos (tableta pequeña, teléfono acostado): el fondo sigue
     a sangre pero la columna de lectura no se estira. */
  @media (min-width: 620px) {
    #m-app .m-hero__top, #m-app .m-cta, #m-app .m-hero__note, #m-app .m-stats,
    #m-app .m-method__claim, #m-app .m-tags, #m-app .m-cert__row,
    #m-app .m-foot__links, #m-app .m-foot__brand, #m-app .m-foot__bottom,
    #m-app .m-dock__row, #m-app section > * {
      max-width: 560px; margin-left: auto; margin-right: auto; }
    #m-app .m-chips { justify-content: center; }
  }

  @keyframes m-sheet { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
  @keyframes vc-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
  @keyframes vc-wave { 0% { transform: rotate(0); } 15% { transform: rotate(-11deg); }
    35% { transform: rotate(7deg); } 55% { transform: rotate(-9deg); } 75% { transform: rotate(5deg); }
    100% { transform: rotate(0); } }
  @keyframes vc-twinkle { 0% { opacity: 0; transform: scale(.6); } 50% { opacity: 1; transform: scale(1.1); }
    100% { opacity: 0; transform: scale(.6); } }

  @media (prefers-reduced-motion: reduce) {
    #m-app .m-cat, #m-app .m-cat img, #m-app .m-cat i,
    #m-app .m-card, #m-app .m-dock, #m-app .m-sheet__inner { animation: none !important; transition: none !important; }
  }
}
