    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    :root {
      --orange: #ED6845;
      --orange-light: rgba(237,104,69,0.10);
      --orange-mid: #c9512e;
      --petrol: #293138;
      --bg: #F2F3F7;
      --surface: #ffffff;
      --surface2: #eaebed;
      --border: rgba(0,0,0,0.09);
      --border-mid: rgba(0,0,0,0.16);
      --text: #1D1D1B;
      --text-muted: #5a5f65;
      --green: #2D8A4E;
      --green-light: rgba(45,138,78,0.08);
      --amber: #b8860b;
      --amber-light: rgba(255,193,7,0.10);
      --radius-sm: 6px;
      --radius-md: 8px;
      --radius-lg: 10px;
    }
    html, body { height: 100%; }
    body {
      font-family: 'Host Grotesk', system-ui, sans-serif;
      background: var(--bg); color: var(--text);
      font-size: 14px; line-height: 1.45;
    }

    /* ─── HEADER ─── */
    .top {
      background: var(--petrol); color: #fff;
      padding: 0.6rem 1.2rem;
      border-bottom: 1px solid rgba(255,255,255,.08);
    }
    .top-inner {
      max-width: 1500px; margin: 0 auto;
      display: flex; align-items: center; gap: 0.8rem;
    }

    /* Banner de bienvenida (URL params desde HubSpot) */
    .welcome-banner {
      max-width: 1500px;
      margin: 0.85rem auto 0;
      padding: 0.7rem 1rem;
      background: linear-gradient(90deg, rgba(237,104,69,0.10) 0%, rgba(237,104,69,0.04) 100%);
      border-left: 3px solid var(--orange);
      border-radius: 8px;
      font-family: 'Host Grotesk', system-ui, sans-serif;
      font-size: 13.5px;
      color: var(--text);
      line-height: 1.45;
    }
    .welcome-banner strong {
      color: var(--orange);
      font-weight: 700;
    }
    @media (max-width: 760px) {
      .welcome-banner {
        margin: 0.6rem 0.85rem 0;
        padding: 0.6rem 0.8rem;
        font-size: 12.5px;
      }
    }

    .top-brand { display: flex; align-items: center; gap: 10px; }
    .top-logo-img {
      height: 24px;
      width: auto;
      max-width: 130px;
      display: block;
    }
    .top-text { display: flex; flex-direction: column; }
    .top-av {
      width: 28px; height: 28px; border-radius: 50%;
      background: var(--orange); color: #fff;
      display: flex; align-items: center; justify-content: center;
      font-weight: 700; font-size: 13px;
    }
    .top-name { font-size: 13px; font-weight: 700; line-height: 1.1; }
    .top-sub { font-size: 10px; color: rgba(255,255,255,.5); margin-top: 1px; }
    .reset-btn {
      margin-left: 14px;
      background: var(--orange);
      color: #fff;
      border: 1px solid var(--orange);
      padding: 6px 16px;
      border-radius: 6px;
      font-family: inherit;
      font-size: 12px;
      font-weight: 600;
      letter-spacing: 0.2px;
      cursor: pointer;
      transition: background .15s, transform .1s;
      display: flex;
      align-items: center;
      gap: 5px;
    }
    .reset-btn:hover {
      background: var(--orange-mid);
      border-color: var(--orange-mid);
    }
    .reset-btn:active {
      transform: scale(0.96);
    }

    /* ─── LAYOUT ─── */
    .app {
      max-width: 1500px; margin: 0 auto;
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 0.9rem;
      padding: 0.9rem;
    }
    @media (max-width: 880px) {
      .app { grid-template-columns: 1fr; }
      .right { position: static !important; max-height: none !important; }
    }


    /* ════════════════════════════════════════════════════
       MOBILE WIZARD — REDISEÑO COMPLETO ≤ 760px
       Estrategia:
       - Header compacto sticky arriba
       - Form full-width single column
       - Bottom-sheet sticky con totales clave
       - Panel desplegable para ver desglose completo
       ════════════════════════════════════════════════════ */
    .mw-totals-bar { display: none; }
    .mw-sheet { display: none; }

    @media (max-width: 760px) {
      /* Layout base */
      html {
        scroll-padding-bottom: 200px; /* deja espacio al hacer scroll automático */
      }
      body {
        padding: 0 !important;
        background: var(--bg);
        padding-bottom: 220px !important; /* espacio amplio para totals bar fija */
      }
      .app {
        grid-template-columns: 1fr;
        gap: 0;
        padding: 0;
        max-width: 100%;
      }

      /* Header del wizard — sticky compacto */
      .top {
        position: sticky;
        top: 0;
        z-index: 50;
        background: #1d242a;
        padding: 0.7rem 0.85rem !important;
        margin: 0 !important;
        box-shadow: 0 2px 6px rgba(0,0,0,0.10);
        border-radius: 0 !important;
      }
      .top-inner {
        flex-wrap: nowrap;
        gap: 0.6rem !important;
      }
      .top-av {
        width: 30px !important;
        height: 30px !important;
        font-size: 13px !important;
      }
      .top-logo-img {
        height: 22px !important;
        max-width: 110px !important;
      }
      .top-name { font-size: 14px !important; }
      .top-sub { font-size: 11px !important; }
      .top-actions { gap: 6px !important; }
      .btn-reset {
        font-size: 11px !important;
        padding: 5px 9px !important;
        white-space: nowrap;
      }

      /* Form — full width, una columna */
      .left {
        grid-template-columns: 1fr !important;
        gap: 0.7rem !important;
        padding: 0.85rem !important;
        padding-bottom: 3rem !important;
      }
      /* La última card siempre debe quedar accesible por encima de la totals-bar */
      .left > .card:last-child,
      .left > .card:nth-last-child(1),
      .left > .card:nth-last-child(2) {
        margin-bottom: 0;
      }
      /* Espacio adicional al final del form para que la última card NUNCA quede cubierta */
      .left::after {
        content: '';
        display: block;
        height: 130px;  /* altura totals-bar + colchón generoso */
        grid-column: 1 / -1;
      }

      /* ─── Cards 2 (Clientes) y 3 (Sedes) en MISMA FILA ─── */
      .row-clientes-sedes {
        display: grid !important;
        grid-template-columns: 2fr 1fr !important;  /* clientes ancha, sedes estrecha */
        gap: 0.7rem !important;
      }
      .row-clientes-sedes > .card {
        margin: 0 !important;
      }
      .row-clientes-sedes .slider-row {
        gap: 0.4rem !important;
      }
      .row-clientes-sedes .slider-num {
        font-size: 14px !important;
        min-width: 0 !important;
      }
      .card {
        padding: 0.95rem 1rem !important;
        border-radius: 14px !important;
        border-width: 0 !important;
        box-shadow: 0 1px 3px rgba(0,0,0,0.04);
      }
      .card.full { grid-column: 1; }
      .card-h {
        gap: 0.55rem !important;
        margin-bottom: 0.7rem !important;
        padding-bottom: 0.55rem;
        border-bottom: 0.5px solid rgba(0,0,0,0.05);
      }
      .card-num {
        width: 22px !important;
        height: 22px !important;
        font-size: 11px !important;
      }
      .card-title { font-size: 13.5px !important; line-height: 1.2; }
      .card-sub { font-size: 11px !important; line-height: 1.4; }

      /* Sub-headers (preguntas dentro de card 6) — más prominentes */
      .sub-h {
        font-size: 13px !important;
        font-weight: 700 !important;
        color: var(--text) !important;
        margin-top: 0.95rem !important;
        margin-bottom: 0.5rem !important;
        padding: 0.45rem 0.65rem !important;
        background: rgba(237,104,69,0.06) !important;
        border-left: 2.5px solid var(--orange) !important;
        border-radius: 4px !important;
      }
      /* Primer sub-h dentro del bloque sin margin-top extra */
      .sub-block > .sub-h:first-child,
      .sub-block > div:first-child > .sub-h:first-child {
        margin-top: 0 !important;
      }

      /* Opciones tipo radio — táctiles, sin romper layout interno */
      .opt {
        padding: 0.65rem 0.8rem !important;
        border-radius: 10px !important;
        min-height: 0 !important;
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 2px !important;
        border-width: 1px !important;
        border-color: rgba(0,0,0,0.08) !important;
        background: #fafbfc !important;
      }
      /* Garantizar que cualquier tap dentro del .opt llegue al button padre,
         pero permitir pointer-events en el ⓘ trigger */
      .opt > *:not(.opt-info-trigger) { pointer-events: none; }
      .opt.on {
        border-color: var(--orange) !important;
        background: var(--orange-light) !important;
      }
      .opt-title { font-size: 13px !important; line-height: 1.25 !important; }
      .opt-desc { font-size: 11px !important; line-height: 1.35 !important; color: var(--text-muted) !important; }
      .opt.slim { padding: 0.55rem 0.7rem !important; }
      .opt.slim .opt-title { font-size: 12.5px !important; }
      .opt.slim .opt-desc { font-size: 10.5px !important; }

      /* Pago modalidad: 2 columnas siempre */
      .opts.cols-2 {
        grid-template-columns: 1fr 1fr !important;
        gap: 6px !important;
      }
      .opts.cols-3 {
        grid-template-columns: 1fr 1fr 1fr !important;
        gap: 6px !important;
      }
      /* Las opciones sin clase cols-X (control accesos: lectores, dirección) → 2 columnas */
      .opts:not(.cols-2):not(.cols-3) {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 6px !important;
      }

      /* Slider de clientes — más alto y dedo-friendly */
      .clientes-slider-wrap { padding: 0.5rem 0; }
      .clientes-tier-pill { font-size: 11.5px !important; padding: 5px 10px !important; }
      .clientes-num-display {
        font-size: 24px !important;
        font-weight: 800;
      }
      input[type="range"] {
        height: 32px !important; /* área de tap más grande */
      }
      input[type="range"]::-webkit-slider-thumb {
        width: 26px !important;
        height: 26px !important;
      }

      /* Sedes counter — botones más grandes */
      .sedes-counter { gap: 10px !important; }
      .sedes-btn {
        width: 38px !important;
        height: 38px !important;
        font-size: 18px !important;
      }
      .sedes-num {
        font-size: 22px !important;
        min-width: 40px !important;
      }

      /* Toggle modalidad mensual/anual */
      .toggle-pago {
        margin-top: 0.4rem !important;
      }
      .toggle-pago-btn {
        font-size: 12.5px !important;
        padding: 9px 14px !important;
      }

      /* Right panel: ocultar — usaremos bottom-sheet en su lugar */
      .right {
        display: none !important;
      }

      /* ─── BOTTOM TOTALS BAR — sticky en la parte inferior ─── */
      .mw-totals-bar {
        display: flex !important;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 40;
        background: #fff;
        box-shadow: 0 -4px 20px rgba(0,0,0,0.10);
        border-top: 1px solid rgba(0,0,0,0.08);
        padding: 0.7rem 0.85rem;
        gap: 0.7rem;
        align-items: stretch;
      }
      .mw-totals-info {
        flex: 1;
        display: flex;
        flex-direction: column;
        gap: 2px;
        justify-content: center;
        min-width: 0;
      }
      .mw-totals-l1 {
        font-size: 10.5px;
        color: var(--muted);
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.4px;
      }
      .mw-totals-row {
        display: flex;
        align-items: baseline;
        gap: 0.7rem;
        flex-wrap: wrap;
      }
      .mw-totals-mes {
        font-size: 19px;
        font-weight: 800;
        color: var(--text);
        letter-spacing: -0.4px;
        font-variant-numeric: tabular-nums;
        line-height: 1;
      }
      .mw-totals-mes-suf {
        font-size: 10.5px;
        color: var(--muted);
        font-weight: 600;
      }
      .mw-totals-ini {
        font-size: 11.5px;
        color: var(--muted);
        font-weight: 500;
      }
      .mw-totals-ini strong {
        color: var(--text);
        font-weight: 700;
        font-variant-numeric: tabular-nums;
      }
      .mw-totals-btn {
        background: var(--orange);
        color: #fff;
        border: 0;
        border-radius: 10px;
        padding: 8px 14px;
        font-family: 'Host Grotesk', system-ui, sans-serif;
        font-size: 12.5px;
        font-weight: 700;
        cursor: pointer;
        white-space: nowrap;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 1px;
        line-height: 1.1;
        min-width: 84px;
      }
      .mw-totals-btn:active { transform: scale(0.97); }
      .mw-totals-btn-icon { font-size: 14px; }
      .mw-totals-btn-txt { font-size: 11px; font-weight: 600; }

      /* ─── BOTTOM SHEET — desglose completo ─── */
      .mw-sheet {
        display: block !important;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 60;
        background: #fff;
        border-radius: 18px 18px 0 0;
        box-shadow: 0 -8px 32px rgba(0,0,0,0.20);
        max-height: 85vh;
        transform: translateY(100%);
        transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
        overflow: hidden;
        display: flex !important;
        flex-direction: column;
      }
      .mw-sheet.open {
        transform: translateY(0);
      }
      .mw-sheet-overlay {
        display: none;
        position: fixed;
        inset: 0;
        background: rgba(0,0,0,0.45);
        z-index: 55;
      }
      .mw-sheet-overlay.on { display: block; }

      .mw-sheet-handle {
        width: 38px;
        height: 4px;
        background: rgba(0,0,0,0.18);
        border-radius: 2px;
        margin: 10px auto 6px;
        flex-shrink: 0;
      }
      .mw-sheet-h {
        padding: 0.6rem 1rem 0.85rem;
        border-bottom: 1px solid rgba(0,0,0,0.06);
        flex-shrink: 0;
        display: flex;
        align-items: center;
        justify-content: space-between;
      }
      .mw-sheet-h-title {
        font-size: 14px;
        font-weight: 700;
        color: var(--text);
      }
      .mw-sheet-close {
        background: rgba(0,0,0,0.05);
        border: 0;
        width: 30px;
        height: 30px;
        border-radius: 50%;
        font-size: 16px;
        color: var(--text);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .mw-sheet-body {
        overflow-y: auto;
        padding: 0;
        flex: 1;
        -webkit-overflow-scrolling: touch;
      }
      /* Reciclamos los estilos del .right dentro del sheet */
      .mw-sheet-body .res-empty,
      .mw-sheet-body .res-h-min,
      .mw-sheet-body .res-stale-banner {
        display: none !important;
      }
      .mw-sheet-body .res-content {
        padding: 0.85rem 1rem 1.5rem;
      }
      .mw-sheet-body .res-totals {
        grid-template-columns: 1fr 1fr !important;
        gap: 0.55rem !important;
        margin-bottom: 0.85rem;
      }
      .mw-sheet-body .res-total-cell {
        background: rgba(237,104,69,0.06);
        border: 1px solid rgba(237,104,69,0.18);
        border-radius: 10px;
        padding: 0.65rem 0.75rem;
      }
      .mw-sheet-body .res-total-label {
        font-size: 10px !important;
        font-weight: 700;
        color: var(--orange);
        text-transform: uppercase;
        letter-spacing: 0.4px;
      }
      .mw-sheet-body .res-total-val {
        font-size: 20px !important;
        font-weight: 800;
        color: var(--text);
        margin-top: 2px;
        font-variant-numeric: tabular-nums;
      }
      .mw-sheet-body .res-total-sub {
        font-size: 10px !important;
        color: var(--muted);
        margin-top: 1px;
      }
      .mw-sheet-body .res-savings {
        font-size: 11.5px !important;
        padding: 0.6rem 0.75rem !important;
        margin-bottom: 0.85rem;
        border-radius: 8px;
      }
      .mw-sheet-body .res-section {
        margin-bottom: 1rem;
      }
      .mw-sheet-body .res-sec-h {
        font-size: 10.5px !important;
        text-transform: uppercase;
        letter-spacing: 0.5px;
        color: var(--muted);
        font-weight: 700;
        margin-bottom: 0.4rem;
        padding-bottom: 0.3rem;
        border-bottom: 0.5px solid rgba(0,0,0,0.06);
      }
      .mw-sheet-body .res-line {
        padding: 5px 0 !important;
        gap: 6px !important;
        align-items: flex-start;
      }
      .mw-sheet-body .res-line-label {
        font-size: 12px !important;
        color: var(--text);
        flex: 1;
      }
      .mw-sheet-body .res-line-val {
        font-size: 12px !important;
        font-weight: 700;
        white-space: nowrap;
        font-variant-numeric: tabular-nums;
      }
      .mw-sheet-body .res-line-sub {
        font-size: 10.5px !important;
        color: var(--muted);
        margin-top: 1px;
      }
      .mw-sheet-body .res-warning {
        font-size: 10.5px !important;
        padding: 0.6rem 0.75rem !important;
        border-radius: 8px;
        margin-top: 0.85rem;
      }
      .mw-sheet-body .res-warning ul { padding-left: 18px; margin: 4px 0 0; }
      .mw-sheet-body .res-warning ul li { font-size: 10.5px !important; line-height: 1.45; margin-top: 3px; }
      .mw-sheet-body .res-actions {
        position: sticky;
        bottom: 0;
        background: #fff;
        padding: 0.85rem 0;
        margin-top: 0.5rem;
        border-top: 1px solid rgba(0,0,0,0.06);
      }
      .mw-sheet-body .btn-action {
        width: 100% !important;
        font-size: 13.5px !important;
        padding: 12px !important;
        border-radius: 10px !important;
        background: var(--orange) !important;
        color: #fff !important;
      }

      /* Acc cards mobile */
      .acc-grid { gap: 0.5rem !important; }
      .acc-card { padding: 0.75rem 0.85rem !important; }
      .acc-card-h { gap: 0.5rem !important; }
      .acc-card-name { font-size: 12.5px !important; }
      .acc-card-price { font-size: 13px !important; }

      /* En móvil desactivar el opt-info hover (lo gestiona el modal) */
      .opt:hover .opt-info,
      .opt-info {
        display: none !important;
      }
      /* Icono ⓘ que aparece en cada .opt con info en móvil */
      .opt-info-trigger {
        position: absolute !important;
        top: 6px !important;
        right: 6px !important;
        width: 22px !important;
        height: 22px !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        background: rgba(0,0,0,0.05) !important;
        color: var(--text-muted) !important;
        border-radius: 50% !important;
        font-size: 13px !important;
        font-weight: 600 !important;
        cursor: pointer !important;
        pointer-events: auto !important;  /* anular .opt > * { pointer-events: none } */
        z-index: 2;
      }
      .opt-info-trigger:active {
        background: var(--orange) !important;
        color: #fff !important;
      }
      /* Las opciones que tienen ⓘ trigger necesitan padding-right extra */
      .opt.has-info-trigger {
        padding-right: 32px !important;
      }

      /* ─── MODAL CENTRAL para todos los popups en móvil ─── */
      /* En móvil, todos los popups (tip, opt-info, sku-card) se renderizan
         como un modal centrado en pantalla, con overlay y botón de cerrar */
      .tip-popup,
      .sku-card {
        position: fixed !important;
        top: 50% !important;
        left: 50% !important;
        transform: translate(-50%, -50%) !important;
        max-width: 90vw !important;
        width: 90vw !important;
        max-height: 75vh !important;
        overflow-y: auto !important;
        font-size: 13px !important;
        line-height: 1.5 !important;
        padding: 1.1rem 1.2rem !important;
        border-radius: 14px !important;
        box-shadow: 0 12px 48px rgba(0,0,0,0.30) !important;
        z-index: 1000 !important;
        pointer-events: auto !important;  /* permitir tap en botón cerrar */
        -webkit-overflow-scrolling: touch;
      }
      /* Quitar la flecha (::after) en móvil */
      .tip-popup::after,
      .sku-card::after {
        display: none !important;
      }
      /* Overlay oscuro detrás del popup móvil */
      .mobile-popup-overlay {
        display: none;
        position: fixed;
        inset: 0;
        background: rgba(0,0,0,0.45);
        z-index: 999;
      }
      .mobile-popup-overlay.on { display: block; }
      /* Botón de cerrar (X) dentro del popup */
      .mobile-popup-close {
        position: absolute;
        top: 8px;
        right: 8px;
        width: 28px;
        height: 28px;
        border-radius: 50%;
        background: rgba(255,255,255,0.15);
        color: #fff;
        border: 0;
        font-size: 16px;
        display: flex;
        align-items: center;
        justify-content: center;
        cursor: pointer;
        z-index: 2;
      }
      .sku-card .mobile-popup-close {
        background: rgba(0,0,0,0.06);
        color: var(--text);
      }
      .sku-card {
        font-size: 13px !important;
      }
      .sku-card-name { font-size: 14.5px !important; padding-right: 32px !important; }
      .sku-card-list li { font-size: 12.5px !important; line-height: 1.45 !important; }

      /* Hacer los iconos sku-info más prominentes (área tap) */
      .sku-info {
        padding: 4px 6px !important;
        margin-left: 2px !important;
        cursor: pointer;
      }
    }

    @media (max-width: 480px) {
      .left { padding: 0.7rem !important; }
      .card { padding: 0.75rem 0.85rem !important; }
      .card-title { font-size: 13px !important; }
      .mw-totals-mes { font-size: 17px; }
      .mw-totals-btn { min-width: 76px; padding: 7px 11px; }
    }

    /* ─── LEFT (formulario) ─── */
    .left {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 0.75rem;
      align-content: start;
    }
    /* En desktop, el wrapper row-clientes-sedes se hace sub-grid 2fr 1fr
       (clientes ancha, sedes estrecha) y ocupa toda la fila del .left */
    .row-clientes-sedes {
      display: grid;
      grid-template-columns: 2fr 1fr;
      gap: 0.75rem;
      grid-column: 1 / -1;
    }
    .card {
      background: var(--surface);
      border: 1px solid var(--border);
      border-radius: var(--radius-lg);
      padding: 1rem 1.1rem;
    }
    .card.full { grid-column: 1 / -1; }
    .card-h {
      display: flex; align-items: center; gap: 0.6rem;
      margin-bottom: 0.7rem;
    }
    .card-num {
      width: 22px; height: 22px; border-radius: 50%;
      background: var(--orange); color: #fff;
      display: flex; align-items: center; justify-content: center;
      font-weight: 700; font-size: 11px;
      flex-shrink: 0;
    }
    .card-title { font-size: 14px; font-weight: 700; letter-spacing: -0.1px; }
    .card-sub { font-size: 11.5px; color: var(--text-muted); margin-top: -2px; margin-bottom: 0.5rem; }

    /* ─── OPTS ─── */
    .opts { display: grid; gap: 0.5rem; }
    .opts.cols-2 { grid-template-columns: 1fr 1fr; }
    .opts.cols-3 { grid-template-columns: 1fr 1fr 1fr; }
    @media (max-width: 600px) {
      .opts.cols-2, .opts.cols-3 { grid-template-columns: 1fr; }
    }
    .opt {
      background: var(--surface); border: 1.5px solid var(--border-mid);
      border-radius: var(--radius-md);
      padding: 0.7rem 0.85rem;
      text-align: left; cursor: pointer;
      transition: all .12s;
      font-family: inherit;
      display: flex; flex-direction: column; gap: 3px;
    }
    .opt:hover { border-color: var(--orange); background: rgba(237,104,69,0.04); }
    .opt.on {
      border-color: var(--orange); background: var(--orange-light);
      box-shadow: 0 0 0 1px var(--orange) inset;
    }
    .opt-title { font-size: 13px; font-weight: 600; line-height: 1.3; }
    .opt-desc  { font-size: 11.5px; color: var(--text-muted); line-height: 1.4; }
    .opt-meta  { font-size: 10.5px; color: var(--orange); font-weight: 600; margin-top: 1px; }
    .opt-discount {
      display: inline-block;
      background: var(--orange);
      color: #fff;
      font-size: 10px;
      font-weight: 700;
      padding: 1px 6px;
      border-radius: 999px;
      margin-left: 4px;
      letter-spacing: 0.2px;
      vertical-align: middle;
      pointer-events: none;
    }

    /* compact slim version for app/imp/torno */
    .opt.slim { padding: 0.6rem 0.75rem; }
    .opt.slim .opt-title { font-size: 12.5px; }
    .opt.slim .opt-desc  { font-size: 11px; }

    /* Iconos grandes dentro de los botones opt (app, imp, accesos, etc.) */
    .opt-icon {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 56px;
      height: 56px;
      margin: 0.1rem auto 0.5rem;
      color: var(--orange);
      flex-shrink: 0;
    }
    .opt-icon svg {
      width: 100%;
      height: 100%;
      /* Las propias SVGs definen stroke="currentColor" y fill explícito por
         elemento; no forzamos aquí stroke/fill para no sobrescribir los
         elementos rellenos. */
    }
    .opt.on .opt-icon { color: var(--orange-mid); }
    .opt-icon-row {
      text-align: center;
    }
    .opt.has-icon {
      align-items: center;
      text-align: center;
    }
    .opt.has-icon .opt-title { text-align: center; }
    .opt.has-icon .opt-desc  { text-align: center; }

    /* ─── SLIDER (minimalista) ─── */
    .slider-row {
      display: flex; align-items: center; gap: 0.7rem;
      padding: 0.2rem 0;
    }
    .slider {
      flex: 1; -webkit-appearance: none; appearance: none;
      height: 5px; background: var(--surface2); border-radius: 999px;
      outline: none; cursor: pointer;
    }
    .slider::-webkit-slider-thumb {
      -webkit-appearance: none; appearance: none;
      width: 18px; height: 18px; border-radius: 50%;
      background: var(--orange); cursor: pointer;
      border: 3px solid #fff;
      box-shadow: 0 1px 3px rgba(0,0,0,0.2);
    }
    .slider::-moz-range-thumb {
      width: 18px; height: 18px; border-radius: 50%;
      background: var(--orange); cursor: pointer;
      border: 3px solid #fff;
    }
    .slider-num {
      min-width: 100px; text-align: right;
      font-weight: 700; font-size: 18px;
      color: var(--text);
      font-variant-numeric: tabular-nums;
    }

    /* ─── INFO BOXES ─── */
    .info {
      padding: 0.45rem 0.6rem;
      border-radius: var(--radius-sm);
      font-size: 10.5px; line-height: 1.35;
      margin-top: 0.45rem;
    }
    .info.green { background: var(--green-light); color: var(--green); border-left: 2px solid var(--green); }
    .info.amber { background: var(--amber-light); color: var(--amber); border-left: 2px solid var(--amber); }
    .info strong { font-weight: 700; }

    /* ─── TOGGLE ─── */
    .toggle-row { display: flex; align-items: center; gap: 0.5rem; padding: 0.2rem 0; }
    .toggle {
      width: 34px; height: 20px;
      background: var(--surface2); border-radius: 999px;
      cursor: pointer; position: relative;
      transition: background .15s;
      flex-shrink: 0;
    }
    .toggle::after {
      content: ''; position: absolute;
      top: 2px; left: 2px;
      width: 16px; height: 16px;
      background: #fff; border-radius: 50%;
      transition: left .15s;
      box-shadow: 0 1px 2px rgba(0,0,0,0.2);
    }
    .toggle.on { background: var(--orange); }
    .toggle.on::after { left: 16px; }
    .toggle-label { font-size: 12.5px; font-weight: 600; }

    .sub-block {
      margin-top: 0.55rem;
      padding-top: 0.55rem;
      border-top: 1px dashed var(--border-mid);
      display: none;
    }
    .sub-block.on { display: block; }
    .sub-h {
      font-size: 10.5px; font-weight: 700;
      color: var(--text-muted);
      text-transform: uppercase;
      letter-spacing: 0.5px;
      margin-bottom: 0.4rem;
      margin-top: 0.6rem;
    }
    .sub-h:first-child { margin-top: 0; }

    /* nested 2-col grid for accesos */
    .acc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.7rem; }
    @media (max-width: 700px) { .acc-grid { grid-template-columns: 1fr; } }

    /* ─── COUNTER ─── */
    .counter {
      display: inline-flex; align-items: center;
      background: var(--surface); border: 1.5px solid var(--border-mid);
      border-radius: var(--radius-md);
      overflow: hidden;
    }
    .counter-btn {
      width: 28px; height: 28px;
      background: transparent; border: none;
      font-family: inherit; font-size: 14px; font-weight: 700;
      color: var(--text-muted);
      cursor: pointer;
    }
    .counter-btn:hover { background: var(--surface2); color: var(--orange); }
    .counter-val {
      min-width: 30px; text-align: center;
      font-weight: 700; font-size: 13px;
      padding: 0 4px;
    }

    /* ─── RIGHT (resultado) ─── */
    .right {
      position: sticky; top: 0;
      align-self: start;
      max-height: calc(100vh - 1.8rem);
      overflow-y: auto;
    }
    .res {
      background: var(--surface);
      border: 1px solid var(--border);
      border-radius: var(--radius-lg);
      overflow: hidden;
    }
    .res-h-min {
      padding: 0.45rem 0.95rem;
      border-bottom: 1px solid var(--border);
      display: flex;
      justify-content: flex-end;
    }
    .res-h-brand {
      font-size: 11px;
      font-weight: 700;
      color: var(--orange);
      letter-spacing: 0.5px;
      text-transform: uppercase;
    }

    /* Resumen breve de la configuración elegida (encima de los totales) */
    .res-summary {
      padding: 0.7rem 0.95rem;
      border-bottom: 1px solid var(--border);
      background: #fbfbfc;
      font-size: 11.5px;
      line-height: 1.55;
      color: var(--text);
    }
    .res-summary .res-summary-title {
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.5px;
      text-transform: uppercase;
      color: var(--orange);
      margin-bottom: 0.35rem;
    }
    /* Chips horizontales: cada respuesta es un pequeño badge que fluye en
       fila y baja a la siguiente línea cuando no cabe. */
    .res-summary-chips {
      display: flex;
      flex-wrap: wrap;
      gap: 0.3rem 0.4rem;
    }
    .res-summary-chip {
      display: inline-flex;
      align-items: baseline;
      gap: 0.2rem;
      background: rgba(237,104,69,0.06);
      border: 1px solid rgba(237,104,69,0.18);
      border-radius: 999px;
      padding: 2px 8px;
      font-size: 10.5px;
      line-height: 1.4;
      white-space: nowrap;
    }
    .res-summary-chip .res-summary-k {
      color: var(--text-muted);
      font-weight: 500;
    }
    .res-summary-chip .res-summary-v {
      color: var(--text);
      font-weight: 700;
    }

    .res-totals {
      display: grid; grid-template-columns: 1fr 1fr;
      border-bottom: 1px solid var(--border);
      background: #f6f7fa;
      transition: background .25s, box-shadow .25s, transform .25s;
    }
    /* Resalte rojo cuando se completa el wizard (4s, fade out) */
    .res-totals.finish-flash {
      animation: finishFlash 4s ease-out forwards;
    }
    .res-totals.finish-flash .res-total-val {
      animation: finishFlashVal 4s ease-out forwards;
    }
    .res-totals.finish-flash .res-total-label,
    .res-totals.finish-flash .res-total-sub {
      animation: finishFlashLabel 4s ease-out forwards;
    }
    @keyframes finishFlash {
      0%   { background: #d4351c; box-shadow: 0 0 0 4px rgba(212,53,28,0.35); transform: scale(1.02); }
      15%  { background: #ee4d31; }
      75%  { background: rgba(212,53,28,0.10); box-shadow: 0 0 0 0 rgba(212,53,28,0); transform: scale(1); }
      100% { background: #f6f7fa; box-shadow: 0 0 0 0 rgba(212,53,28,0); transform: scale(1); }
    }
    @keyframes finishFlashVal {
      0%   { color: #ffffff; font-size: 36px; }
      75%  { color: #d4351c; font-size: 32px; }
      100% { color: #1D1D1B; font-size: 32px; }
    }
    @keyframes finishFlashLabel {
      0%   { color: rgba(255,255,255,0.95); }
      75%  { color: rgba(212,53,28,0.80); }
      100% { color: #5a5f65; }
    }
    .res-total-cell {
      padding: 0.7rem 0.95rem;
      background: linear-gradient(180deg, #f1f2f6 0%, #e9eaef 100%);
    }
    .res-total-cell + .res-total-cell {
      border-left: 1px solid var(--border);
    }
    .res-total-label {
      font-size: 9.5px; color: var(--text-muted);
      text-transform: uppercase; letter-spacing: 0.5px;
      font-weight: 700;
    }
    .res-total-val {
      font-size: 21px; font-weight: 800;
      margin-top: 3px; letter-spacing: -0.4px;
      color: var(--grafito);
    }
    .res-total-sub { font-size: 9.5px; color: var(--text-muted); margin-top: 2px; }

    .res-savings {
      background: var(--green-light);
      border-bottom: 1px solid var(--border);
      padding: 0.5rem 0.95rem;
      font-size: 11px;
      color: var(--green);
    }
    .res-savings strong { font-weight: 700; font-size: 12px; }

    .res-section {
      padding: 0.5rem 0.95rem;
      border-bottom: 1px solid var(--border);
    }
    .res-sec-h {
      font-size: 9.5px; font-weight: 700;
      color: var(--text-muted);
      text-transform: uppercase; letter-spacing: 0.6px;
      margin-bottom: 0.3rem;
    }
    .res-line {
      display: flex; justify-content: space-between; align-items: flex-start;
      gap: 0.7rem;
      padding: 2px 0;
      font-size: 11.5px;
    }
    .res-line-label { flex: 1; }
    .res-line-sub {
      font-size: 10px; color: var(--text-muted);
      margin-top: 1px;
      font-style: italic;
    }

    /* ─── Badge "ⓘ" sutil para ver ficha del producto ─── */
    .sku-info {
      display: inline-block;
      margin-top: 1px;
      margin-left: 12px;
      font-size: 11px;
      color: var(--text-muted);
      cursor: help;
      letter-spacing: 0.2px;
      opacity: 0.6;
      transition: opacity .12s, color .12s;
      user-select: none;
    }
    .sku-info::before {
      content: 'ⓘ';
      margin-right: 4px;
      font-size: 11px;
    }
    .sku-info:hover {
      color: var(--orange);
      opacity: 1;
    }
    .res-line-val { font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
    .res-line.gift .res-line-val { color: var(--green); font-weight: 700; }
    .res-line-total {
      border-top: 1px solid var(--border-mid);
      margin-top: 4px;
      padding-top: 5px;
      font-weight: 700;
      font-size: 12px;
    }

    .res-warning {
      padding: 0.5rem 0.95rem;
      background: var(--amber-light);
      font-size: 10.5px; line-height: 1.4;
      border-bottom: 1px solid var(--border);
    }
    .res-warning strong { color: var(--amber); font-weight: 700; }
    .res-warning ul { list-style: none; padding: 0; margin-top: 3px; }
    .res-warning li { padding: 1.5px 0; }

    .res-actions {
      padding: 0.55rem 0.95rem;
      display: flex; gap: 0.5rem;
    }
    .btn-action {
      flex: 1;
      background: var(--orange); color: #fff;
      border: none; border-radius: var(--radius-md);
      padding: 0.5rem;
      font-family: inherit; font-size: 11.5px; font-weight: 600;
      cursor: pointer;
    }
    .btn-action:hover { background: var(--orange-mid); }

    .res-empty {
      padding: 3rem 1.5rem;
      text-align: center;
      color: var(--text-muted);
      font-size: 12px;
    }
    .res-empty-icon { font-size: 32px; margin-bottom: 0.6rem; }
    .res-empty-title { font-weight: 700; color: var(--text); margin-bottom: 0.3rem; }

    .res-stale-banner {
      background: #fef3c7;
      color: #92400e;
      padding: 0.5rem 0.95rem;
      font-size: 10.5px;
      font-weight: 600;
      border-bottom: 1px solid #fcd34d;
      display: none;
    }
    .res-stale-banner.on { display: block; }

    .card.disabled { opacity: 0.45; pointer-events: none; }

    /* "Continuar sin accesos" — link discreto al lado del toggle de accesos. */
    .skip-link {
      margin-left: auto;
      background: none;
      border: 0;
      color: var(--orange);
      font-family: inherit;
      font-size: 12px;
      font-weight: 600;
      cursor: pointer;
      padding: 0.3rem 0.5rem;
      border-radius: 6px;
      transition: background .12s;
    }
    .skip-link:hover { background: rgba(237,104,69,0.08); }
    .skip-link.hidden { display: none; }

    /* ─── Cascade de cards ─── */
    /* Todas las cards con data-card empiezan ocultas. JS añade .show al avanzar. */
    .card[data-card]:not(.show) { display: none !important; }
    /* Animación suave al aparecer */
    .card[data-card].show {
      animation: cardAppear 0.35s ease-out;
    }
    @keyframes cardAppear {
      from { opacity: 0; transform: translateY(-6px); }
      to   { opacity: 1; transform: translateY(0); }
    }

    /* ─── TOOLTIP (?) — sutil, sin distraer ─── */
    .tip {
      display: inline-flex;
      align-items: center; justify-content: center;
      width: 16px; height: 16px;
      border-radius: 50%;
      background: rgba(0,0,0,0.06);
      color: var(--text-muted);
      border: 0;
      font-size: 10px;
      font-weight: 700;
      cursor: help;
      margin-left: auto;
      flex-shrink: 0;
      transition: background .12s, color .12s, transform .12s;
      user-select: none;
    }
    .tip:hover { background: var(--orange); color: #fff; }

    /* Tooltip flotante posicionado por JS */
    .tip-popup {
      position: fixed;
      z-index: 300;
      background: var(--petrol);
      color: #fff;
      padding: 0.55rem 0.75rem;
      border-radius: var(--radius-sm);
      font-size: 11px;
      font-weight: 400;
      line-height: 1.45;
      box-shadow: 0 4px 14px rgba(0,0,0,0.28);
      max-width: 260px;
      pointer-events: none;
      display: none;
      letter-spacing: 0.05px;
    }
    .tip-popup.on { display: block; }

    /* ─── POPUP de info en App/Implantación/Tornos ─── */
    .opt { position: relative; }
    .opt-info {
      position: absolute;
      bottom: calc(100% + 10px);
      left: 50%;
      transform: translateX(-50%);
      width: 270px;
      max-width: 92vw;
      background: var(--petrol);
      color: #fff;
      padding: 0.65rem 0.85rem;
      border-radius: var(--radius-md);
      font-size: 10.5px;
      line-height: 1.5;
      box-shadow: 0 8px 24px rgba(0,0,0,0.32);
      display: none;
      z-index: 50;
      pointer-events: none;
      text-align: left;
    }
    .opt-info::after {
      content: '';
      position: absolute;
      top: 100%;
      left: 50%;
      margin-left: -6px;
      border: 6px solid transparent;
      border-top-color: var(--petrol);
    }
    .opt-info strong {
      display: block;
      font-size: 11.5px;
      font-weight: 700;
      margin-bottom: 0.35rem;
      color: var(--orange);
    }
    .opt-info ul {
      list-style: none; padding: 0; margin: 0;
    }
    .opt-info ul li {
      padding: 2px 0;
      padding-left: 11px;
      position: relative;
    }
    .opt-info ul li::before {
      content: '·';
      position: absolute;
      left: 4px;
      color: var(--orange);
      font-weight: 700;
    }
    /* La info SOLO se muestra cuando el usuario pulsa el botón ⓘ
       (antes se abría por :hover; ahora requiere click explícito). */
    .opt-info.on {
      display: block;
      pointer-events: auto;
    }
    /* Botón ⓘ visible también en escritorio para abrir la info por click. */
    .opt-info-trigger {
      position: absolute;
      top: 6px;
      right: 6px;
      width: 22px;
      height: 22px;
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(0,0,0,0.06);
      color: var(--text-muted);
      border-radius: 50%;
      font-size: 13px;
      font-weight: 600;
      cursor: pointer;
      pointer-events: auto;
      z-index: 2;
      transition: background .12s, color .12s;
    }
    .opt-info-trigger:hover {
      background: var(--orange);
      color: #fff;
    }
    .opt.has-info-trigger {
      padding-right: 32px;
    }

    /* ─── PULSE animation cuando se actualiza el resultado ─── */
    @keyframes pulse-update {
      0%   { box-shadow: 0 0 0 0 rgba(237,104,69,0.4); }
      50%  { box-shadow: 0 0 0 6px rgba(237,104,69,0.0); }
      100% { box-shadow: 0 0 0 0 rgba(237,104,69,0); }
    }
    .res.pulse {
      animation: pulse-update 0.9s ease-out;
    }
    @keyframes pulse-num {
      0%   { transform: scale(1); color: var(--text); }
      8%   { transform: scale(1.06); color: var(--orange); }
      35%  { transform: scale(1.03); color: var(--orange); }
      100% { transform: scale(1); color: var(--text); }
    }
    .res-total-val.pulse {
      animation: pulse-num 3s ease-out;
    }

    /* ─── HIGHLIGHT línea recién añadida en el desglose ─── */
    @keyframes line-flash {
      0%   { background: rgba(237,104,69,0.40); box-shadow: inset 3px 0 0 var(--orange); }
      10%  { background: rgba(237,104,69,0.40); box-shadow: inset 3px 0 0 var(--orange); }
      75%  { background: rgba(237,104,69,0.18); box-shadow: inset 3px 0 0 rgba(237,104,69,0.5); }
      100% { background: transparent; box-shadow: inset 3px 0 0 transparent; }
    }
    .res-line.fresh {
      animation: line-flash 5s ease-out;
      border-radius: 4px;
      padding-left: 8px; padding-right: 8px;
      margin-left: -8px; margin-right: -8px;
    }

    /* ─── Ficha de producto popup (al hover sobre ⓘ ver ficha) ─── */
    .sku-card {
      position: fixed;
      z-index: 200;
      background: var(--petrol);
      color: #fff;
      border: 1px solid rgba(0,0,0,0.2);
      border-radius: var(--radius-md);
      padding: 0.75rem 0.9rem;
      width: 280px;
      max-width: 90vw;
      box-shadow: 0 10px 32px rgba(0,0,0,0.35);
      font-size: 11px;
      line-height: 1.5;
      pointer-events: none;
      display: none;
    }
    .sku-card.on { display: block; }
    .sku-card-name {
      font-size: 12.5px;
      font-weight: 700;
      color: var(--orange);
      margin-bottom: 0.4rem;
    }
    .sku-card-desc {
      color: rgba(255,255,255,0.85);
      font-size: 11px;
    }
    .sku-card-list {
      list-style: none; padding: 0; margin: 0;
    }
    .sku-card-list li {
      padding: 2px 0;
      padding-left: 11px;
      position: relative;
      color: rgba(255,255,255,0.92);
    }
    .sku-card-list li::before {
      content: '·';
      position: absolute;
      left: 4px;
      color: var(--orange);
      font-weight: 700;
    }

    /* ════════════ CALCULADORA CONTROL DE ACCESOS · estilos propios ════════════ */
    .top-title { color:#fff; font-size:13px; font-weight:700; letter-spacing:.1px; padding-left:12px; margin-left:4px; border-left:1px solid rgba(255,255,255,.18); line-height:1.15; }
    .top-title small { display:block; font-size:10.5px; font-weight:500; color:rgba(255,255,255,.55); }
    .top-inner .reset-btn { margin-left:auto; }
    .app { grid-template-columns: minmax(0,1fr) minmax(0,1.05fr); }
    .left { grid-template-columns: 1fr; }
    .card-h .card-title-dyn { font-size:14px; font-weight:700; }

    /* Panel derecho */
    .viz { padding: 0.85rem 0.95rem 0.9rem; border-bottom:1px solid var(--border); }
    .viz-h { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-bottom:.55rem; }
    .viz-title { font-size:10px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; color:var(--orange); }
    .viz-caption { font-size:11px; color:var(--text-muted); text-align:right; }
    .stage {
      position:relative; border-radius:12px; overflow:hidden;
      background: radial-gradient(120% 90% at 50% 0%, #ffffff 0%, #f3f4f8 55%, #e6e8ee 100%);
      border:1px solid var(--border);
      min-height: 250px;
      display:flex; flex-direction:column; justify-content:flex-end;
      padding: 1.6rem .8rem .7rem;
    }
    .stage::before { /* suelo */
      content:''; position:absolute; left:0; right:0; bottom:0; height:38%;
      background: linear-gradient(180deg, rgba(41,49,56,0) 0%, rgba(41,49,56,0.06) 100%);
      border-top:1px solid rgba(41,49,56,0.06);
      pointer-events:none;
    }
    .stage-row { position:relative; display:flex; align-items:flex-end; justify-content:center; min-height:170px; z-index:1; }
    .unit { position:relative; height:var(--uh,160px); flex-shrink:0; display:flex; align-items:flex-end; justify-content:center; }
    .unit + .unit { margin-left: calc(var(--uh,160px) * -0.14); }
    .unit img.dev { height:100%; width:auto; display:block; filter: drop-shadow(0 10px 8px rgba(0,0,0,0.16)); }
    .unit::after { /* sombra en el suelo */
      content:''; position:absolute; bottom:-6px; left:12%; right:12%; height:12px; border-radius:50%;
      background: radial-gradient(closest-side, rgba(0,0,0,0.18), rgba(0,0,0,0)); z-index:-1;
    }
    .unit.ghost img.dev { opacity:.55; filter: grayscale(1) drop-shadow(0 8px 6px rgba(0,0,0,0.10)); }
    .unit-tag {
      position:absolute; bottom:-22px; left:50%; transform:translateX(-50%);
      font-size:9.5px; font-weight:700; color:var(--text-muted); white-space:nowrap;
      background:rgba(255,255,255,.85); border:1px solid var(--border); padding:1px 6px; border-radius:999px;
    }
    .readers { position:absolute; top: calc(var(--uh,160px) * -0.10); left: 0; right: 0; justify-content: center; display:flex; gap:3px; z-index:50; }
    .reader {
      width: calc(var(--uh,160px) * 0.24); height: calc(var(--uh,160px) * 0.30);
      min-width:26px; min-height:32px;
      background:#fff; border-radius:7px; border:1.5px solid var(--orange);
      box-shadow:0 4px 10px rgba(237,104,69,0.25);
      display:flex; align-items:center; justify-content:center; position:relative;
    }
    .reader img { max-width:78%; max-height:82%; }
    .reader b { position:absolute; bottom:-7px; left:50%; transform:translateX(-50%); font-size:8px; line-height:1; background:var(--orange); color:#fff; padding:2px 4px; border-radius:4px; letter-spacing:.2px; }
    .more-units { align-self:center; margin-left:8px; font-size:12px; font-weight:800; color:var(--petrol); background:#fff; border:1px solid var(--border-mid); border-radius:999px; padding:4px 10px; z-index:2; }
    .flow {
      position:relative; z-index:1; margin-top:30px; display:flex; justify-content:center; gap:.5rem; flex-wrap:wrap;
    }
    .flow-pill { font-size:10.5px; font-weight:700; padding:3px 10px; border-radius:999px; background:var(--petrol); color:#fff; display:inline-flex; align-items:center; gap:5px; }
    .flow-pill.soft { background:rgba(41,49,56,0.08); color:var(--petrol); }
    .stage-empty { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.45rem; color:var(--text-muted); font-size:12px; text-align:center; padding:1rem; z-index:2; }
    .stage-empty svg { width:64px; height:64px; opacity:.55; }
    .stage-empty strong { color:var(--text); font-size:13px; }

    .tray { display:grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap:.45rem; margin-top:.6rem; }
    .tray:empty { display:none; }
    .tray-item {
      background:#fff; border:1px solid var(--border); border-radius:10px; padding:.45rem .45rem .5rem;
      display:flex; flex-direction:column; align-items:center; gap:4px; text-align:center; position:relative;
    }
    .tray-img { height:52px; display:flex; align-items:center; justify-content:center; }
    .tray-img img { max-height:52px; max-width:84px; }
    .tray-name { font-size:10.5px; font-weight:600; line-height:1.2; color:var(--text); }
    .tray-qty { position:absolute; top:5px; right:5px; background:var(--orange); color:#fff; font-size:10px; font-weight:800; border-radius:999px; padding:1px 6px; }

    .res-total-val { transform-origin: left center; }
    .top-inner .reset-btn { white-space:nowrap; flex-shrink:0; }
    .pop { animation: popIn .45s cubic-bezier(.2,1.3,.4,1) backwards; }
    @keyframes popIn { from { opacity:0; transform: translateY(10px) scale(.85); } to { opacity:1; transform:none; } }
    .unit.pop { animation: unitIn .5s cubic-bezier(.2,1.2,.4,1) backwards; }
    @keyframes unitIn { from { opacity:0; transform: translateY(18px); } to { opacity:1; transform:none; } }

    .res-totals.single { grid-template-columns: 1fr; }
    .res-total-cell .res-total-val { font-size:26px; }
    .pay-note { display:inline-flex; align-items:center; gap:5px; font-size:10px; font-weight:700; color:var(--green); background:var(--green-light); border-radius:999px; padding:2px 8px; margin-top:5px; }
    .res-line-qty { color:var(--text-muted); font-size:10px; margin-top:1px; }

    @media (max-width: 760px) {
      .mw-viz { display:block !important; margin: 0 .85rem; }
      .mw-viz .stage { min-height:200px; }
      .top-title { font-size:12px; }
      .top-title small { display:none; }
    }
    .mw-viz { display:none; }

