{"id":23390,"date":"2026-07-02T22:40:26","date_gmt":"2026-07-02T20:40:26","guid":{"rendered":"https:\/\/www.spanishminute.com\/?p=23390"},"modified":"2026-07-07T02:58:31","modified_gmt":"2026-07-07T00:58:31","slug":"cultura-de-negocios-en-espana-lo-que-necesitas-saber-para-trabajar-espanol-b1","status":"publish","type":"post","link":"https:\/\/www.spanishminute.com\/ru\/cultura-de-negocios-en-espana-lo-que-necesitas-saber-para-trabajar-espanol-b1\/","title":{"rendered":"Cultura de negocios en Espa\u00f1a: lo que necesitas saber para trabajar (espa\u00f1ol B1)"},"content":{"rendered":"<p><!-- alloop-ax:7221a1bc6d36aecf3cd2366176fa106d --><br \/>\n<iframe class=\"ax-frame\" data-ax-uid=\"7221a1bc6d36aecf3cd2366176fa106d\" sandbox=\"allow-scripts\" referrerpolicy=\"no-referrer\" loading=\"lazy\" style=\"width:100%;border:none;display:block;min-height:80px\" srcdoc=\"&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;es&quot;&gt;\n&lt;head&gt;\n&lt;meta charset=&quot;utf-8&quot;&gt;\n&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot;&gt;\n&lt;meta http-equiv=&quot;Content-Security-Policy&quot; content=&quot;default-src &#039;none&#039;; script-src &#039;unsafe-inline&#039;; style-src &#039;unsafe-inline&#039;; img-src https: data:; media-src https:; frame-src &#039;none&#039;; connect-src &#039;none&#039;&quot;&gt;\n&lt;style&gt;\n\/* ax-runtime.css \u2014 estilos base de componentes alloop-ax\n * Usa variables de color del registro (var(--ax-brand), etc.).\n * Espa\u00f1ol en todos los textos de UI; n\u00fameros en d\u00edgito.\n * No modifiques este archivo directamente; es generado por el m\u00f3dulo de render.\n *\/\n\n:root {\n    --ax-accent: #ff7a59;\n    --ax-brand:  #2bb3c0;\n    --ax-brand2: #1f8e99;\n    --ax-ink:    #1d2733;\n    --ax-ok:     #2e9b5b;\n    --ax-no:     #d9534f;\n    --ax-warn:   #e6a417;\n    --ax-paper:  #ffffff;\n    --ax-muted:  #6b7785;\n    --ax-bg:     #eef2f5;\n    --ax-border: #cfd8df;\n    --ax-radius: 12px;\n    --ax-radius-lg: 16px;\n}\n\n*, *::before, *::after { box-sizing: border-box; }\n\nbody {\n    margin: 0;\n    font-family: -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;\n    background: var(--ax-bg);\n    color: var(--ax-ink);\n    padding: 16px;\n    font-size: 15px;\n    line-height: 1.5;\n}\n\n\/* \u2500\u2500 Tipograf\u00eda base \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.ax-q {\n    font-size: 18px;\n    font-weight: 700;\n    margin: 0 0 14px;\n    color: var(--ax-ink);\n}\n\n.ax-meta {\n    font-size: 13px;\n    color: var(--ax-muted);\n    margin-bottom: 12px;\n}\n\n\/* \u2500\u2500 Botones \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.ax-btn {\n    display: inline-block;\n    border: 0;\n    border-radius: var(--ax-radius);\n    padding: 10px 18px;\n    font-size: 15px;\n    font-weight: 600;\n    cursor: pointer;\n    background: var(--ax-brand);\n    color: var(--ax-paper);\n    transition: opacity .15s;\n}\n.ax-btn:hover { opacity: .88; }\n.ax-btn:disabled { opacity: .45; cursor: default; }\n\n.ax-btn--ghost {\n    background: var(--ax-bg);\n    color: var(--ax-ink);\n    border: 1px solid var(--ax-border);\n}\n.ax-btn--ok {\n    background: var(--ax-ok);\n    color: var(--ax-paper);\n}\n.ax-btn--no {\n    background: var(--ax-no);\n    color: var(--ax-paper);\n}\n\n\/* \u2500\u2500 Opciones m\u00faltiple \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.ax-opts {\n    display: grid;\n    gap: 10px;\n}\n\n.ax-opt {\n    display: block;\n    width: 100%;\n    text-align: left;\n    border: 2px solid var(--ax-border);\n    background: color-mix(in srgb, var(--ax-ink) 3%, var(--ax-paper));\n    border-radius: var(--ax-radius);\n    padding: 11px 14px;\n    font-size: 15px;\n    cursor: pointer;\n    transition: border-color .15s, background .15s;\n    color: var(--ax-ink);\n}\n.ax-opt:hover:not(:disabled) { border-color: var(--ax-brand); }\n.ax-opt:disabled { cursor: default; }\n.ax-opt--selected { border-color: var(--ax-brand) !important; background: color-mix(in srgb, var(--ax-brand) 10%, var(--ax-paper)); }\n.ax-opt--correct { border-color: var(--ax-ok) !important; background: color-mix(in srgb, var(--ax-ok) 14%, var(--ax-paper)) !important; }\n.ax-opt--wrong   { border-color: var(--ax-no) !important; background: color-mix(in srgb, var(--ax-no) 12%, var(--ax-paper)) !important; }\n\n\/* \u2500\u2500 Feedback \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.ax-feedback {\n    margin-top: 14px;\n    font-size: 14px;\n    min-height: 20px;\n}\n.ax-feedback--ok { color: var(--ax-ok); font-weight: 600; }\n.ax-feedback--no { color: var(--ax-no); }\n\n\/* \u2500\u2500 Barra de progreso \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.ax-progress {\n    height: 6px;\n    border-radius: 6px;\n    background: var(--ax-border);\n    overflow: hidden;\n    margin-top: 14px;\n}\n.ax-progress &gt; i {\n    display: block;\n    height: 100%;\n    background: var(--ax-brand);\n    width: 0;\n    transition: width .3s;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   QUIZ\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\/* usa clases gen\u00e9ricas ax-q, ax-opts, ax-opt, ax-feedback, ax-progress *\/\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   ROSCO (Pasapalabra)\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-rosco-root {}\n\n.ax-rosco-stat {\n    display: flex;\n    gap: 18px;\n    font-size: 14px;\n    color: var(--ax-muted);\n    margin-bottom: 12px;\n    flex-wrap: wrap;\n}\n.ax-rosco-stat b { color: var(--ax-ink); }\n\n.ax-rosco-wrap {\n    display: flex;\n    gap: 24px;\n    flex-wrap: wrap;\n    align-items: flex-start;\n}\n\n.ax-rosco-ring-wrap {\n    flex: 0 0 auto;\n    margin: auto;\n}\n\n.ax-rosco-ring {\n    position: relative;\n    width: min(280px, 78vw);\n    height: min(280px, 78vw);\n    margin: 0 auto;\n}\n\n.ax-rosco-center {\n    position: absolute;\n    inset: 16%;\n    border-radius: 50%;\n    background: var(--ax-paper);\n    box-shadow: inset 0 0 0 2px var(--ax-bg);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    text-align: center;\n    padding: 12px;\n}\n\n.ax-rosco-big {\n    font-size: 28px;\n    font-weight: 800;\n    color: var(--ax-brand);\n}\n\n.ax-rosco-sub {\n    font-size: 11px;\n    color: var(--ax-muted);\n}\n\n.ax-rosco-ltr {\n    position: absolute;\n    width: 28px;\n    height: 28px;\n    transform: translate(-50%, -50%);\n    border-radius: 50%;\n    background: color-mix(in srgb, var(--ax-ink) 10%, var(--ax-paper));\n    color: var(--ax-muted);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-weight: 700;\n    font-size: 12px;\n    transition: background .2s, transform .2s;\n}\n.ax-rosco-ltr--current {\n    background: var(--ax-brand) !important;\n    color: var(--ax-paper);\n    transform: translate(-50%, -50%) scale(1.25);\n    box-shadow: 0 0 0 4px color-mix(in srgb, var(--ax-brand) 25%, transparent);\n}\n.ax-rosco-ltr--ok   { background: var(--ax-ok) !important;   color: var(--ax-paper); }\n.ax-rosco-ltr--no   { background: var(--ax-no) !important;   color: var(--ax-paper); }\n.ax-rosco-ltr--pass { background: var(--ax-warn) !important; color: var(--ax-paper); }\n\n.ax-rosco-play {\n    flex: 1;\n    min-width: 240px;\n}\n\n.ax-rosco-clue {\n    font-size: 16px;\n    line-height: 1.45;\n    min-height: 56px;\n    color: var(--ax-ink);\n}\n.ax-rosco-clue b { color: var(--ax-accent); }\n\n.ax-rosco-answer-row {\n    display: flex;\n    gap: 8px;\n    margin-top: 14px;\n    flex-wrap: wrap;\n}\n\n.ax-rosco-answer-row input {\n    flex: 1;\n    min-width: 120px;\n    border: 2px solid var(--ax-border);\n    border-radius: var(--ax-radius);\n    padding: 10px 12px;\n    font-size: 15px;\n    color: var(--ax-ink);\n    background: var(--ax-paper);\n}\n.ax-rosco-answer-row input:focus {\n    outline: 0;\n    border-color: var(--ax-brand);\n}\n\n.ax-rosco-done {\n    margin-top: 14px;\n    font-size: 15px;\n    color: var(--ax-ink);\n    line-height: 1.6;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   V\u00cdDEO INTERACTIVO\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-video-root {}\n\n.ax-video-stage {\n    position: relative;\n    width: 100%;\n    aspect-ratio: 16 \/ 9;\n    background: var(--ax-ink);\n    border-radius: 14px;\n    overflow: hidden;\n    box-shadow: 0 8px 30px color-mix(in srgb, var(--ax-ink) 18%, transparent);\n}\n\n.ax-video-stage iframe {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    border: 0;\n}\n\n.ax-video-hint {\n    position: absolute;\n    left: 14px;\n    bottom: 14px;\n    max-width: 60%;\n    background: color-mix(in srgb, var(--ax-brand) 96%, transparent);\n    color: var(--ax-paper);\n    font-size: 13px;\n    line-height: 1.3;\n    padding: 8px 12px;\n    border-radius: 10px;\n    display: none;\n    z-index: 4;\n    box-shadow: 0 4px 14px color-mix(in srgb, var(--ax-ink) 25%, transparent);\n    animation: ax-pop .25s ease;\n}\n.ax-video-hint--show { display: block; }\n\n.ax-video-overlay {\n    position: absolute;\n    inset: 0;\n    display: none;\n    align-items: center;\n    justify-content: center;\n    background: color-mix(in srgb, var(--ax-ink) 70%, transparent);\n    backdrop-filter: blur(2px);\n    padding: 18px;\n    z-index: 5;\n}\n.ax-video-overlay--show {\n    display: flex;\n    animation: ax-pop .25s ease;\n}\n\n.ax-video-card {\n    max-width: 520px;\n    width: 100%;\n    background: var(--ax-paper);\n    border-radius: var(--ax-radius-lg);\n    padding: 22px;\n    box-shadow: 0 12px 40px color-mix(in srgb, var(--ax-ink) 35%, transparent);\n}\n\n.ax-video-bar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n    align-items: center;\n    margin-top: 14px;\n}\n\n.ax-video-bar-label {\n    font-size: 13px;\n    color: var(--ax-muted);\n}\n\n.ax-video-bm {\n    border: 1px solid var(--ax-border);\n    background: var(--ax-paper);\n    border-radius: 999px;\n    padding: 6px 12px;\n    font-size: 13px;\n    cursor: pointer;\n    color: var(--ax-ink);\n}\n.ax-video-bm:hover { border-color: var(--ax-brand); color: var(--ax-brand); }\n\n.ax-video-timeline {\n    margin-top: 10px;\n    height: 6px;\n    border-radius: 6px;\n    background: var(--ax-border);\n    position: relative;\n    overflow: hidden;\n}\n\n.ax-video-timeline &gt; i {\n    position: absolute;\n    inset: 0 100% 0 0;\n    background: var(--ax-brand);\n    transition: right .2s linear;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   FILL BLANKS\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-fill-root {}\n\n.ax-fill-form {\n    font-size: 17px;\n    line-height: 2.2;\n    color: var(--ax-ink);\n}\n\n.ax-fill-blank {\n    display: inline-block;\n    margin: 0 4px;\n}\n\n.ax-fill-blank input {\n    border: 0;\n    border-bottom: 2px solid var(--ax-border);\n    border-radius: 0;\n    padding: 2px 6px;\n    font-size: 17px;\n    background: transparent;\n    color: var(--ax-ink);\n    text-align: center;\n    min-width: 80px;\n    transition: border-color .15s;\n}\n.ax-fill-blank input:focus {\n    outline: 0;\n    border-bottom-color: var(--ax-brand);\n}\n\n.ax-fill-blank--ok input { border-bottom-color: var(--ax-ok); color: var(--ax-ok); }\n.ax-fill-blank--no input { border-bottom-color: var(--ax-no); color: var(--ax-no); }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   MATCH (Emparejar)\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-match-root {}\n\n.ax-match-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px 24px;\n}\n\n.ax-match-col {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.ax-match-item {\n    display: block;\n    width: 100%;\n    text-align: left;\n    border: 2px solid var(--ax-border);\n    background: color-mix(in srgb, var(--ax-ink) 3%, var(--ax-paper));\n    border-radius: var(--ax-radius);\n    padding: 10px 14px;\n    font-size: 15px;\n    cursor: pointer;\n    color: var(--ax-ink);\n    transition: border-color .15s, background .15s;\n}\n.ax-match-item:hover:not(:disabled) { border-color: var(--ax-brand); }\n.ax-match-item:disabled { cursor: default; }\n.ax-match-item--selected { border-color: var(--ax-brand); background: color-mix(in srgb, var(--ax-brand) 8%, transparent); }\n.ax-match-item--correct  { border-color: var(--ax-ok) !important; background: color-mix(in srgb, var(--ax-ok) 14%, var(--ax-paper)) !important; color: var(--ax-ok); }\n.ax-match-item--wrong    { border-color: var(--ax-no) !important; background: color-mix(in srgb, var(--ax-no) 12%, var(--ax-paper)) !important; }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   FLASHCARDS\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-flash-root {}\n\n.ax-flash-scene {\n    width: 100%;\n    max-width: 480px;\n    margin: 0 auto;\n    perspective: 1000px;\n    cursor: pointer;\n    user-select: none;\n}\n\n.ax-flash-card {\n    position: relative;\n    width: 100%;\n    padding-bottom: 55%;\n    transform-style: preserve-3d;\n    transition: transform .45s;\n    border-radius: var(--ax-radius-lg);\n}\n.ax-flash-card--flipped { transform: rotateY(180deg); }\n\n.ax-flash-face {\n    position: absolute;\n    inset: 0;\n    backface-visibility: hidden;\n    border-radius: var(--ax-radius-lg);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 24px;\n    font-size: 18px;\n    font-weight: 600;\n    text-align: center;\n    box-shadow: 0 6px 24px color-mix(in srgb, var(--ax-ink) 10%, transparent);\n}\n\n.ax-flash-face--front {\n    background: var(--ax-paper);\n    border: 2px solid var(--ax-border);\n    color: var(--ax-ink);\n}\n\n.ax-flash-face--back {\n    background: var(--ax-brand);\n    color: var(--ax-paper);\n    transform: rotateY(180deg);\n}\n\n.ax-flash-hint {\n    text-align: center;\n    font-size: 13px;\n    color: var(--ax-muted);\n    margin: 8px 0 0;\n}\n\n.ax-flash-know-row {\n    display: flex;\n    gap: 12px;\n    justify-content: center;\n    margin-top: 16px;\n}\n\n.ax-flash-nav {\n    display: flex;\n    gap: 8px;\n    justify-content: center;\n    margin-top: 12px;\n    flex-wrap: wrap;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   ORDENAR LA FRASE (sequence)\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-seq-answer {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n    align-items: center;\n    min-height: 52px;\n    padding: 10px;\n    border: 2px dashed var(--ax-border);\n    border-radius: var(--ax-radius);\n    background: var(--ax-paper);\n    margin-bottom: 12px;\n}\n.ax-seq-ph { color: var(--ax-muted); font-size: 14px; }\n.ax-seq-bank {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n    margin-bottom: 14px;\n}\n.ax-seq-chip {\n    border: 2px solid var(--ax-border);\n    background: color-mix(in srgb, var(--ax-ink) 3%, var(--ax-paper));\n    color: var(--ax-ink);\n    border-radius: var(--ax-radius);\n    padding: 9px 14px;\n    font-size: 15px;\n    cursor: pointer;\n    transition: border-color .15s, background .15s;\n}\n.ax-seq-chip:hover { border-color: var(--ax-brand); }\n.ax-seq-chip--ok { border-color: var(--ax-ok) !important; background: color-mix(in srgb, var(--ax-ok) 14%, var(--ax-paper)) !important; }\n.ax-seq-chip--no { border-color: var(--ax-no) !important; background: color-mix(in srgb, var(--ax-no) 12%, var(--ax-paper)) !important; }\n.ax-seq-actions { display: flex; gap: 8px; flex-wrap: wrap; }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   MARCA LAS PALABRAS (mark_words)\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-mark-text {\n    font-size: 17px;\n    line-height: 2.1;\n    color: var(--ax-ink);\n    margin-bottom: 16px;\n}\n.ax-mark-word {\n    display: inline-block;\n    padding: 2px 6px;\n    border-radius: 6px;\n    cursor: pointer;\n    border: 1px solid transparent;\n    transition: background .12s, border-color .12s;\n}\n.ax-mark-word:hover { background: color-mix(in srgb, var(--ax-brand) 10%, var(--ax-paper)); }\n.ax-mark-word--sel { background: color-mix(in srgb, var(--ax-brand) 18%, transparent); border-color: var(--ax-brand); }\n.ax-mark-word--ok     { background: color-mix(in srgb, var(--ax-ok) 14%, var(--ax-paper)); border-color: var(--ax-ok); color: var(--ax-ok); font-weight: 700; }\n.ax-mark-word--no     { background: color-mix(in srgb, var(--ax-no) 12%, var(--ax-paper)); border-color: var(--ax-no); color: var(--ax-no); text-decoration: line-through; }\n.ax-mark-word--missed { border-color: var(--ax-ok); border-style: dashed; }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   DICTADO (dictation)\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-dict-audio { width: 100%; margin: 4px 0 14px; }\n.ax-dict-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }\n.ax-dict-input {\n    flex: 1;\n    min-width: 160px;\n    border: 2px solid var(--ax-border);\n    border-radius: var(--ax-radius);\n    padding: 10px 12px;\n    font-size: 16px;\n    color: var(--ax-ink);\n    background: var(--ax-paper);\n}\n.ax-dict-input:focus { outline: 0; border-color: var(--ax-brand); }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   IM\u00c1GENES en lados (match\/flashcards\/categorize\/quiz) \u2014 fillSide() inserta &lt;img.ax-img&gt;\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-img {\n    max-width: 100%;\n    max-height: 130px;\n    display: block;\n    margin: 0 auto;\n    border-radius: 10px;\n    object-fit: contain;\n}\n.ax-match-item.ax-has-img,\n.ax-cat-chip.ax-has-img { text-align: center; }\n.ax-flash-face .ax-img { max-height: 200px; }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   CLASIFICAR EN CATEGOR\u00cdAS (categorize)\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-cat-root {}\n\n.ax-cat-bank-label {\n    font-size: 13px;\n    color: var(--ax-muted);\n    margin: 0 0 8px;\n}\n.ax-cat-bank {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n    min-height: 48px;\n    padding: 10px;\n    border: 2px dashed var(--ax-border);\n    border-radius: var(--ax-radius);\n    background: var(--ax-paper);\n    margin-bottom: 16px;\n}\n.ax-cat-ph { color: var(--ax-muted); font-size: 14px; }\n\n.ax-cat-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n    gap: 12px;\n    margin-bottom: 14px;\n}\n.ax-cat-col {\n    border: 2px solid var(--ax-border);\n    border-radius: var(--ax-radius);\n    background: color-mix(in srgb, var(--ax-brand) 4%, var(--ax-paper));\n    padding: 10px;\n    cursor: pointer;\n    transition: border-color .15s, background .15s;\n}\n.ax-cat-col:hover { border-color: var(--ax-brand); }\n.ax-cat-title {\n    font-weight: 700;\n    font-size: 14px;\n    color: var(--ax-brand);\n    text-align: center;\n    margin-bottom: 8px;\n    text-transform: uppercase;\n    letter-spacing: .02em;\n}\n.ax-cat-drop {\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    min-height: 44px;\n}\n.ax-cat-chip {\n    border: 2px solid var(--ax-border);\n    background: color-mix(in srgb, var(--ax-ink) 3%, var(--ax-paper));\n    color: var(--ax-ink);\n    border-radius: var(--ax-radius);\n    padding: 9px 12px;\n    font-size: 15px;\n    cursor: pointer;\n    transition: border-color .15s, background .15s;\n}\n.ax-cat-chip:hover { border-color: var(--ax-brand); }\n.ax-cat-chip--selected { border-color: var(--ax-brand) !important; background: color-mix(in srgb, var(--ax-brand) 12%, transparent); }\n.ax-cat-chip--ok { border-color: var(--ax-ok) !important; background: color-mix(in srgb, var(--ax-ok) 14%, var(--ax-paper)) !important; color: var(--ax-ok); }\n.ax-cat-chip--no { border-color: var(--ax-no) !important; background: color-mix(in srgb, var(--ax-no) 12%, var(--ax-paper)) !important; }\n.ax-cat-actions { display: flex; gap: 8px; flex-wrap: wrap; }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   LECCI\u00d3N MULTI-ACTIVIDAD (lesson) \u2014 compone varias actividades + progreso + resultados\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.ax-lesson-root {}\n\n.ax-lesson-header {\n    background: linear-gradient(110deg, var(--ax-brand), var(--ax-accent));\n    color: var(--ax-paper);\n    border-radius: var(--ax-radius-lg);\n    padding: 22px 22px 20px;\n    margin-bottom: 16px;\n    box-shadow: 0 8px 28px color-mix(in srgb, var(--ax-ink) 16%, transparent);\n}\n.ax-lesson-kicker {\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: .14em;\n    text-transform: uppercase;\n    opacity: .9;\n}\n.ax-lesson-title {\n    margin: 6px 0 0;\n    font-size: 22px;\n    font-weight: 800;\n    line-height: 1.2;\n    color: var(--ax-paper);\n}\n.ax-lesson-intro {\n    margin: 0 0 16px;\n    color: var(--ax-ink);\n    font-size: 15px;\n}\n\n.ax-lesson-prog-wrap { margin-bottom: 18px; }\n.ax-lesson-prog-label { font-size: 13px; color: var(--ax-muted); margin-bottom: 6px; }\n\n.ax-lesson-activities { display: flex; flex-direction: column; gap: 16px; }\n\n.ax-lesson-activity {\n    border: 2px solid var(--ax-border);\n    border-radius: var(--ax-radius-lg);\n    background: var(--ax-paper);\n    padding: 16px;\n    transition: border-color .2s;\n}\n.ax-lesson-activity--done { border-color: var(--ax-ok); }\n\n.ax-lesson-act-hdr {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 12px;\n}\n.ax-lesson-act-num {\n    flex: 0 0 auto;\n    width: 28px;\n    height: 28px;\n    border-radius: 50%;\n    background: var(--ax-brand);\n    color: var(--ax-paper);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-weight: 800;\n    font-size: 14px;\n}\n.ax-lesson-act-title { font-weight: 700; font-size: 16px; color: var(--ax-ink); flex: 1; }\n.ax-lesson-act-status { font-size: 18px; color: var(--ax-muted); min-width: 20px; text-align: right; }\n.ax-lesson-act-status--done { color: var(--ax-ok); font-weight: 800; }\n.ax-lesson-act-status--partial { color: var(--ax-no, #d9534f); font-weight: 700; font-size: 14px; }\n.ax-lesson-act-body--err { color: var(--ax-no); font-size: 14px; }\n\n.ax-lesson-results {\n    margin-top: 18px;\n    border: 2px solid var(--ax-ok);\n    border-radius: var(--ax-radius-lg);\n    background: color-mix(in srgb, var(--ax-ok) 6%, var(--ax-paper));\n    padding: 22px;\n    text-align: center;\n    animation: ax-pop .25s ease;\n}\n.ax-lesson-res-head { display: flex; flex-direction: column; align-items: center; gap: 4px; }\n.ax-lesson-medal { font-size: 44px; line-height: 1; }\n.ax-lesson-res-score { font-size: 32px; font-weight: 800; color: var(--ax-ink); }\n.ax-lesson-res-msg { font-size: 15px; color: var(--ax-muted); margin-bottom: 14px; }\n.ax-lesson-res-cards {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n    gap: 10px;\n    margin: 0 0 18px;\n}\n.ax-lesson-res-card {\n    border: 1px solid var(--ax-border);\n    border-radius: var(--ax-radius);\n    background: var(--ax-paper);\n    padding: 10px;\n}\n.ax-lesson-res-name { font-size: 13px; color: var(--ax-muted); margin-bottom: 4px; }\n.ax-lesson-res-card-score { font-size: 18px; font-weight: 800; color: var(--ax-brand); }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   ANIMACIONES GLOBALES\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n@keyframes ax-pop {\n    from { opacity: 0; transform: scale(.96); }\n    to   { opacity: 1; transform: scale(1); }\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   RESPONSIVE \/ M\u00d3VIL \u2014 el iframe auto-ajusta su alto (ax-runtime.js), y aqu\u00ed\n   compactamos para pantallas estrechas (\u2264600px) sin romper la mec\u00e1nica.\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n@media (max-width: 600px) {\n    body { padding: 12px; font-size: 14px; }\n\n    .ax-q { font-size: 16px; margin-bottom: 12px; }\n    .ax-opt { padding: 10px 12px; font-size: 14px; }\n    .ax-btn { padding: 10px 14px; font-size: 14px; }\n\n    \/* Quiz\/fill: huecos c\u00f3modos para el dedo, sin desbordar de ancho. *\/\n    .ax-fill-form { font-size: 16px; line-height: 2; }\n    .ax-fill-blank input { min-width: 64px; font-size: 16px; }\n\n    \/* Match: mantenemos 2 columnas (es la mec\u00e1nica) pero m\u00e1s compactas. *\/\n    .ax-match-grid { gap: 8px 10px; }\n    .ax-match-item { padding: 9px 10px; font-size: 14px; }\n\n    \/* Rosco: en m\u00f3vil UNA sola columna \u2014 aro arriba centrado, panel de juego debajo\n       a ancho completo (en escritorio siguen lado a lado). *\/\n    .ax-rosco-wrap { flex-direction: column; align-items: stretch; gap: 16px; }\n    .ax-rosco-ring { margin: 0 auto; }\n    .ax-rosco-play { min-width: 0; width: 100%; }\n    .ax-rosco-stat { gap: 12px; font-size: 13px; }\n    .ax-rosco-ltr { width: 26px; height: 26px; font-size: 11px; }\n    .ax-rosco-big { font-size: 24px; }\n    .ax-rosco-clue { font-size: 15px; min-height: 48px; }\n\n    \/* V\u00eddeo: la tarjeta de pregunta y los marcadores caben mejor. *\/\n    .ax-video-card { padding: 16px; }\n    .ax-video-overlay { padding: 12px; }\n    .ax-video-bm { padding: 6px 10px; font-size: 12px; }\n\n    \/* Flashcards. *\/\n    .ax-flash-face { font-size: 16px; padding: 16px; }\n\n    \/* Nuevos tipos: textos c\u00f3modos y chips t\u00e1ctiles sin desbordar. *\/\n    .ax-mark-text { font-size: 16px; line-height: 2; }\n    .ax-seq-chip { font-size: 14px; padding: 9px 12px; }\n    .ax-dict-input { font-size: 16px; }\n\n    \/* Categorize: columnas a ancho completo apiladas (1 por fila) y chips compactos. *\/\n    .ax-cat-grid { grid-template-columns: 1fr; }\n    .ax-cat-chip { font-size: 14px; padding: 9px 11px; }\n\n    \/* Lesson: cabecera y resultados compactos; tarjetas de resultado a 2 por fila. *\/\n    .ax-lesson-header { padding: 18px 16px 16px; }\n    .ax-lesson-title { font-size: 19px; }\n    .ax-lesson-activity { padding: 12px; }\n    .ax-lesson-results { padding: 16px; }\n    .ax-lesson-res-cards { grid-template-columns: 1fr 1fr; }\n    .ax-img { max-height: 110px; }\n}\n\n:root {\n  --ax-brand: #1e6fa3;\n  --ax-accent: #fbd017;\n  --ax-ink: #1d2733;\n  --ax-ok: #2e9b5b;\n  --ax-no: #d9534f;\n  --ax-paper: #ffffff;\n}\n&lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;script&gt;window.__AX__={&quot;type&quot;:&quot;quiz&quot;,&quot;uid&quot;:&quot;7221a1bc6d36aecf3cd2366176fa106d&quot;,&quot;spec&quot;:{&quot;questions&quot;:[{&quot;multi&quot;:false,&quot;options&quot;:[{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No. Yulia ya ten\\u00eda un buen trabajo en Ucrania.&quot;,&quot;text&quot;:&quot;Por trabajo&quot;},{&quot;correct&quot;:true,&quot;explain&quot;:&quot;Correcto: se enamor\\u00f3 de un chico y vino a Espa\\u00f1a por amor.&quot;,&quot;text&quot;:&quot;Por amor&quot;},{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No. Estudiar espa\\u00f1ol fue una consecuencia, no el motivo.&quot;,&quot;text&quot;:&quot;Para estudiar&quot;}],&quot;q&quot;:&quot;\\u00bfPor qu\\u00e9 vino Yulia a Espa\\u00f1a?&quot;},{&quot;multi&quot;:false,&quot;options&quot;:[{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No. Aunque ahora ense\\u00f1a, su formaci\\u00f3n es otra.&quot;,&quot;text&quot;:&quot;Profesora&quot;},{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No, aunque hoy trabaja en medios de comunicaci\\u00f3n.&quot;,&quot;text&quot;:&quot;Periodista&quot;},{&quot;correct&quot;:true,&quot;explain&quot;:&quot;Correcto: es farmac\\u00e9utica y trabajaba en una multinacional.&quot;,&quot;text&quot;:&quot;Farmac\\u00e9utica&quot;}],&quot;q&quot;:&quot;\\u00bfCu\\u00e1l era su profesi\\u00f3n antes de emigrar?&quot;},{&quot;multi&quot;:false,&quot;options&quot;:[{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No. Primero se crea confianza.&quot;,&quot;text&quot;:&quot;Antes de la reuni\\u00f3n&quot;},{&quot;correct&quot;:true,&quot;explain&quot;:&quot;Correcto: los temas de dinero se hablan tras la comida, m\\u00e1s relajados.&quot;,&quot;text&quot;:&quot;Despu\\u00e9s de comer&quot;},{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No. En Espa\\u00f1a se prefiere el trato en persona.&quot;,&quot;text&quot;:&quot;Por correo electr\\u00f3nico&quot;}],&quot;q&quot;:&quot;Seg\\u00fan Yulia, \\u00bfcu\\u00e1ndo se hablan en Espa\\u00f1a los temas de dinero?&quot;},{&quot;multi&quot;:false,&quot;options&quot;:[{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No. Solo gram\\u00e1tica, sin pr\\u00e1ctica, no funciona.&quot;,&quot;text&quot;:&quot;Estudiar solo gram\\u00e1tica&quot;},{&quot;correct&quot;:true,&quot;explain&quot;:&quot;Correcto: hay que practicar hablando en la vida real.&quot;,&quot;text&quot;:&quot;Hablar con la gente (incluso con las abuelas)&quot;},{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No. Ella dice que si no te equivocas, no aprendes.&quot;,&quot;text&quot;:&quot;No cometer errores&quot;}],&quot;q&quot;:&quot;\\u00bfQu\\u00e9 consejo da para practicar espa\\u00f1ol?&quot;},{&quot;multi&quot;:false,&quot;options&quot;:[{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No. A un espa\\u00f1ol no le vendes solo por Zoom.&quot;,&quot;text&quot;:&quot;Solo una buena oferta por Zoom&quot;},{&quot;correct&quot;:true,&quot;explain&quot;:&quot;Correcto: en Espa\\u00f1a el trato se cierra en persona y comiendo.&quot;,&quot;text&quot;:&quot;Quedar y comer con \\u00e9l, y hablar espa\\u00f1ol&quot;},{&quot;correct&quot;:false,&quot;explain&quot;:&quot;No. Necesitas hablar espa\\u00f1ol t\\u00fa mismo para generar confianza.&quot;,&quot;text&quot;:&quot;Un traductor&quot;}],&quot;q&quot;:&quot;\\u00bfQu\\u00e9 necesitas para venderle a un cliente espa\\u00f1ol?&quot;}],&quot;shuffle&quot;:true},&quot;assets&quot;:{&quot;logoUrl&quot;:&quot;https:\\\/\\\/www.spanishminute.com\\\/wp-content\\\/uploads\\\/Diseno-sin-titulo-2022-11-08T065527.374-1.webp&quot;}};&lt;\/script&gt;\n&lt;div id=&quot;ax-root&quot;&gt;&lt;\/div&gt;\n&lt;script&gt;\n\/**\n * Motor Quiz \u2014 alloop-ax\n * Exporta AXComponents.quiz(rootEl, spec, assets)\n * spec: { questions:[{q, options:[{text, correct, explain?}], multi?}], shuffle? }\n *\/\n(function (global) {\n    &#039;use strict&#039;;\n\n    function shuffle(arr) {\n        var a = arr.slice();\n        for (var i = a.length - 1; i &gt; 0; i--) {\n            var j = Math.floor(Math.random() * (i + 1));\n            var tmp = a[i]; a[i] = a[j]; a[j] = tmp;\n        }\n        return a;\n    }\n\n    function quiz(rootEl, spec, assets) {\n        var questions = (spec &amp;&amp; spec.questions) ? spec.questions.slice() : [];\n        if (spec &amp;&amp; spec.shuffle) { questions = shuffle(questions); }\n        var total = questions.length;\n        var current = 0;\n        var score = 0;\n\n        function renderQuestion() {\n            rootEl.innerHTML = &#039;&#039;;\n            if (current &gt;= total) { renderEnd(); return; }\n\n            var it = questions[current];\n            var opts = it.options ? it.options.slice() : [];\n            var mapping = opts.map(function (o, i) { return i; }); \/\/ \u00edndice original\n\n            if (spec &amp;&amp; spec.shuffle) {\n                var paired = opts.map(function (o, i) { return { opt: o, idx: i }; });\n                paired = shuffle(paired);\n                opts = paired.map(function (p) { return p.opt; });\n                mapping = paired.map(function (p) { return p.idx; });\n            }\n\n            var meta = document.createElement(&#039;div&#039;);\n            meta.className = &#039;ax-meta&#039;;\n            meta.textContent = &#039;Pregunta &#039; + (current + 1) + &#039; \/ &#039; + total;\n            rootEl.appendChild(meta);\n\n            var qEl = document.createElement(&#039;p&#039;);\n            qEl.className = &#039;ax-q&#039;;\n            qEl.textContent = it.q || &#039;&#039;;\n            rootEl.appendChild(qEl);\n\n            var optsEl = document.createElement(&#039;div&#039;);\n            optsEl.className = &#039;ax-opts&#039;;\n\n            var fbEl = document.createElement(&#039;div&#039;);\n            fbEl.className = &#039;ax-feedback&#039;;\n\n            var isMulti = !!it.multi;\n\n            function appendNextButton() {\n                var nextBtn = document.createElement(&#039;button&#039;);\n                nextBtn.className = &#039;ax-btn&#039;;\n                nextBtn.style.marginTop = &#039;14px&#039;;\n                nextBtn.textContent = (current &lt; total - 1) ? &#039;Siguiente \u2192&#039; : &#039;Ver resultado&#039;;\n                nextBtn.onclick = function () { current++; renderQuestion(); };\n                rootEl.appendChild(nextBtn);\n            }\n\n            function revealCorrect() {\n                opts.forEach(function (o2, k) {\n                    if (o2.correct) { optsEl.children[k].classList.add(&#039;ax-opt--correct&#039;); }\n                });\n            }\n\n            if (isMulti) {\n                \/\/ Selecci\u00f3n m\u00faltiple: el alumno marca\/desmarca varias y pulsa Comprobar.\n                \/\/ Acierta solo si selecciona TODAS las correctas y NINGUNA incorrecta.\n                var selected = [];\n                opts.forEach(function (opt, i) {\n                    selected.push(false);\n                    var btn = document.createElement(&#039;button&#039;);\n                    btn.className = &#039;ax-opt&#039;;\n                    btn.textContent = opt.text || &#039;&#039;;\n                    btn.onclick = function () {\n                        selected[i] = !selected[i];\n                        btn.classList.toggle(&#039;ax-opt--selected&#039;, selected[i]);\n                    };\n                    optsEl.appendChild(btn);\n                });\n\n                rootEl.appendChild(optsEl);\n                rootEl.appendChild(fbEl);\n\n                var checkBtn = document.createElement(&#039;button&#039;);\n                checkBtn.className = &#039;ax-btn&#039;;\n                checkBtn.style.marginTop = &#039;14px&#039;;\n                checkBtn.textContent = &#039;Comprobar&#039;;\n                checkBtn.onclick = function () {\n                    var allRight = true;\n                    opts.forEach(function (opt, k) {\n                        if (selected[k] !== !!opt.correct) { allRight = false; }\n                    });\n                    Array.prototype.forEach.call(optsEl.children, function (b) { b.disabled = true; });\n                    checkBtn.disabled = true;\n                    revealCorrect();\n                    opts.forEach(function (opt, k) {\n                        if (selected[k] &amp;&amp; !opt.correct) { optsEl.children[k].classList.add(&#039;ax-opt--wrong&#039;); }\n                    });\n                    if (allRight) {\n                        score++;\n                        fbEl.className = &#039;ax-feedback ax-feedback--ok&#039;;\n                        fbEl.textContent = &#039;\u00a1Correcto!&#039;;\n                    } else {\n                        fbEl.className = &#039;ax-feedback ax-feedback--no&#039;;\n                        fbEl.textContent = &#039;No del todo. En verde est\u00e1n las opciones correctas.&#039;;\n                    }\n                    appendNextButton();\n                };\n                rootEl.appendChild(checkBtn);\n            } else {\n                \/\/ Selecci\u00f3n \u00fanica: un clic decide.\n                var locked = false;\n                opts.forEach(function (opt, i) {\n                    var btn = document.createElement(&#039;button&#039;);\n                    btn.className = &#039;ax-opt&#039;;\n                    btn.textContent = opt.text || &#039;&#039;;\n                    btn.onclick = function () {\n                        if (locked) { return; }\n                        locked = true;\n                        var correct = !!opt.correct;\n                        if (correct) {\n                            score++;\n                            btn.classList.add(&#039;ax-opt--correct&#039;);\n                            fbEl.className = &#039;ax-feedback ax-feedback--ok&#039;;\n                            fbEl.textContent = &#039;\u00a1Correcto!&#039; + (opt.explain ? &#039; &#039; + opt.explain : &#039;&#039;);\n                        } else {\n                            btn.classList.add(&#039;ax-opt--wrong&#039;);\n                            fbEl.className = &#039;ax-feedback ax-feedback--no&#039;;\n                            fbEl.textContent = &#039;No es correcto.&#039; + (opt.explain ? &#039; &#039; + opt.explain : &#039;&#039;);\n                            revealCorrect();\n                        }\n                        Array.prototype.forEach.call(optsEl.children, function (b) { b.disabled = true; });\n                        appendNextButton();\n                    };\n                    optsEl.appendChild(btn);\n                });\n\n                rootEl.appendChild(optsEl);\n                rootEl.appendChild(fbEl);\n            }\n\n            var prog = document.createElement(&#039;div&#039;);\n            prog.className = &#039;ax-progress&#039;;\n            var bar = document.createElement(&#039;i&#039;);\n            bar.style.width = (current \/ total * 100) + &#039;%&#039;;\n            prog.appendChild(bar);\n            rootEl.appendChild(prog);\n        }\n\n        function renderEnd() {\n            \/\/ Contrato de progreso (modo lecci\u00f3n).\n            if (window.AXComponents &amp;&amp; window.AXComponents.reportDone) {\n                window.AXComponents.reportDone(assets, score, total);\n            }\n            rootEl.innerHTML = &#039;&#039;;\n            var msg = document.createElement(&#039;p&#039;);\n            msg.className = &#039;ax-q&#039;;\n            msg.textContent = &#039;Has acertado &#039; + score + &#039; de &#039; + total + &#039;.&#039;;\n            rootEl.appendChild(msg);\n\n            var sub = document.createElement(&#039;p&#039;);\n            sub.style.color = &#039;var(--ax-muted, #6b7785)&#039;;\n            sub.textContent = (score === total)\n                ? &#039;\u00a1Perfecto! Dominas este ejercicio.&#039;\n                : &#039;Repasa el contenido y vuelve a intentarlo.&#039;;\n            rootEl.appendChild(sub);\n\n            var restart = document.createElement(&#039;button&#039;);\n            restart.className = &#039;ax-btn ax-btn--ghost&#039;;\n            restart.textContent = &#039;\u21bb Reiniciar&#039;;\n            restart.onclick = function () { current = 0; score = 0; renderQuestion(); };\n            rootEl.appendChild(restart);\n        }\n\n        renderQuestion();\n    }\n\n    global.AXComponents = global.AXComponents || {};\n    global.AXComponents.quiz = quiz;\n}(window));\n\n&lt;\/script&gt;\n&lt;script&gt;\n\/**\n * ax-runtime.js \u2014 Bootstrap del iframe sandbox alloop-ax\n *\n * Lee window.__AX__ = { type, spec, assets, uid }\n * Despacha al motor AXComponents[type](rootEl, spec, assets)\n * Para &#039;custom_html&#039; no hace nada (el html\/css\/js ya va inyectado directamente).\n * Instala un ResizeObserver (o fallback) que hace\n *   parent.postMessage({ ax: &#039;height&#039;, uid, value }, &#039;*&#039;)\n *\/\n(function () {\n    &#039;use strict&#039;;\n\n    var ax = window.__AX__ || {};\n    var type = ax.type || &#039;&#039;;\n    var spec = ax.spec || {};\n    var assets = ax.assets || {};\n    var uid = ax.uid || &#039;&#039;;\n\n    \/\/ \u2500\u2500 Helper compartido: HTML inline seguro \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    \/\/ Algunos tipos (match, flashcards, rosco-clue) permiten formato inline simple\n    \/\/ (negrita\/cursiva\/salto) seg\u00fan la skill. En vez de innerHTML crudo (que abrir\u00eda\n    \/\/ XSS por &lt;img onerror&gt;), escapamos TODO y luego rehabilitamos SOLO una allowlist\n    \/\/ m\u00ednima de etiquetas sin atributos. Resultado: el formato se ve, pero ning\u00fan\n    \/\/ atributo\/evento\/etiqueta peligrosa sobrevive. Se expone en window.AXComponents\n    \/\/ para que cada motor lo use de forma uniforme (DRY).\n    window.AXComponents = window.AXComponents || {};\n    if (typeof window.AXComponents.inlineHtml !== &#039;function&#039;) {\n        window.AXComponents.inlineHtml = function (str) {\n            if (str === null || str === undefined) { return &#039;&#039;; }\n            \/\/ 1) Escapar por completo.\n            var esc = String(str)\n                .replace(\/&amp;\/g, &#039;&amp;&#039;)\n                .replace(\/&lt;\/g, &#039;&lt;&#039;)\n                .replace(\/&gt;\/g, &#039;&gt;&#039;);\n            \/\/ 2) Rehabilitar solo etiquetas de formato sin atributos: b,i,em,strong,br,u.\n            \/\/    (apertura, cierre, y &lt;br&gt; \/ &lt;br\/&gt;). Nada con atributos pasa el patr\u00f3n.\n            esc = esc.replace(\/&lt;(\\\/?)(b|i|em|strong|u)&gt;\/gi, &#039;&lt;$1$2&gt;&#039;)\n                     .replace(\/&lt;br\\s*\\\/?&gt;\/gi, &#039;&lt;br&gt;&#039;);\n            return esc;\n        };\n    }\n\n    \/\/ \u2500\u2500 Helper compartido: pintar un lado que puede ser TEXTO o IMAGEN \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    \/\/ Varios tipos (match, flashcards, categorize, quiz) admiten que un &quot;lado&quot; sea\n    \/\/ texto inline (string u {text}) o una imagen ({image, alt}). Aqu\u00ed lo pintamos\n    \/\/ de forma uniforme y SEGURA: el texto pasa por inlineHtml (sin XSS); la imagen\n    \/\/ se crea como nodo &lt;img&gt; con .src\/.alt asignados por PROPIEDAD (nunca innerHTML,\n    \/\/ as\u00ed ning\u00fan atributo\/handler se cuela). El ORIGEN de la URL ya lo valida el\n    \/\/ servidor contra el allowlist ANTES de publicar (DISALLOWED_EXTERNAL_ORIGIN);\n    \/\/ aqu\u00ed solo renderizamos. Devuelve true si pint\u00f3 una imagen (para estilar el host).\n    if (typeof window.AXComponents.fillSide !== &#039;function&#039;) {\n        window.AXComponents.fillSide = function (el, side) {\n            if (!el) { return false; }\n            el.innerHTML = &#039;&#039;;\n            var isObj = side &amp;&amp; typeof side === &#039;object&#039;;\n            var imgUrl = (isObj &amp;&amp; typeof side.image === &#039;string&#039;) ? side.image : &#039;&#039;;\n            if (imgUrl) {\n                var img = document.createElement(&#039;img&#039;);\n                img.className = &#039;ax-img&#039;;\n                img.src = imgUrl;\n                img.alt = (isObj &amp;&amp; typeof side.alt === &#039;string&#039;) ? side.alt : &#039;&#039;;\n                img.loading = &#039;lazy&#039;;\n                el.appendChild(img);\n                el.classList.add(&#039;ax-has-img&#039;);\n                return true;\n            }\n            var txt = isObj ? (typeof side.text === &#039;string&#039; ? side.text : &#039;&#039;) : (side == null ? &#039;&#039; : String(side));\n            el.innerHTML = window.AXComponents.inlineHtml(txt);\n            return false;\n        };\n    }\n\n    \/\/ \u2500\u2500 Helper compartido: contrato de progreso para el tipo compuesto `lesson` \u2500\n    \/\/ Cada motor &quot;building-block&quot; (quiz, match, fill_blanks, sequence, mark_words,\n    \/\/ categorize) llama a reportDone(assets, correct, total) cuando el alumno termina\n    \/\/ la actividad. En modo de ejercicio suelto, assets.onDone no existe \u2192 no-op\n    \/\/ (retrocompatible). En modo lecci\u00f3n, el shell inyecta assets.onDone para pintar\n    \/\/ el progreso y la tarjeta de resultado de esa actividad.\n    if (typeof window.AXComponents.reportDone !== &#039;function&#039;) {\n        window.AXComponents.reportDone = function (assets, correct, total) {\n            if (assets &amp;&amp; typeof assets.onDone === &#039;function&#039;) {\n                try { assets.onDone({ correct: correct, total: total }); } catch (e) { \/* aislar el shell *\/ }\n            }\n        };\n    }\n    \/\/ Se\u00f1ala que una actividad de lecci\u00f3n dej\u00f3 de estar completa (p. ej. el alumno puls\u00f3 &quot;Reiniciar&quot;):\n    \/\/ el shell la des-marca del progreso para que no quede una nota obsoleta. No-op fuera de lecci\u00f3n.\n    if (typeof window.AXComponents.reportReset !== &#039;function&#039;) {\n        window.AXComponents.reportReset = function (assets) {\n            if (assets &amp;&amp; typeof assets.onReset === &#039;function&#039;) {\n                try { assets.onReset(); } catch (e) { \/* aislar el shell *\/ }\n            }\n        };\n    }\n\n    \/\/ \u2500\u2500 Montar componente \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function mount() {\n        if (type === &#039;custom_html&#039;) {\n            \/\/ El HTML ya est\u00e1 inyectado; nada que hacer desde el runtime.\n            return;\n        }\n\n        var fn = window.AXComponents &amp;&amp; window.AXComponents[type];\n        if (typeof fn !== &#039;function&#039;) {\n            \/\/ Motor no disponible (build parcial o tipo desconocido).\n            var msg = document.createElement(&#039;p&#039;);\n            msg.style.cssText = &#039;color:var(--ax-no,#d9534f);font-size:14px;padding:16px&#039;;\n            msg.textContent = &#039;Motor no disponible para el tipo: &#039; + (type || &#039;(vac\u00edo)&#039;);\n            document.body.appendChild(msg);\n            return;\n        }\n\n        \/\/ Ra\u00edz del componente\n        var rootEl = document.getElementById(&#039;ax-root&#039;);\n        if (!rootEl) {\n            rootEl = document.createElement(&#039;div&#039;);\n            rootEl.id = &#039;ax-root&#039;;\n            document.body.appendChild(rootEl);\n        }\n\n        try {\n            fn(rootEl, spec, assets);\n        } catch (e) {\n            var errEl = document.createElement(&#039;p&#039;);\n            errEl.style.cssText = &#039;color:var(--ax-no,#d9534f);font-size:14px;padding:16px&#039;;\n            errEl.textContent = &#039;Error al montar el ejercicio: &#039; + (e &amp;&amp; e.message ? e.message : String(e));\n            rootEl.appendChild(errEl);\n        }\n    }\n\n    \/\/ \u2500\u2500 Auto-alto: ResizeObserver + fallback con polling \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function sendHeight() {\n        var h = document.documentElement.scrollHeight || document.body.scrollHeight || 0;\n        try {\n            parent.postMessage({ ax: &#039;height&#039;, uid: uid, value: h }, &#039;*&#039;);\n        } catch (e) { \/* cross-origin bloqueado *\/ }\n    }\n\n    function installResizeObserver() {\n        if (typeof ResizeObserver === &#039;function&#039;) {\n            var ro = new ResizeObserver(function () { sendHeight(); });\n            ro.observe(document.body);\n        } else {\n            \/\/ Fallback: polling cada 500ms para navegadores sin ResizeObserver\n            var lastH = 0;\n            setInterval(function () {\n                var h = document.documentElement.scrollHeight || document.body.scrollHeight || 0;\n                if (h !== lastH) { lastH = h; sendHeight(); }\n            }, 500);\n        }\n\n        \/\/ Recalcular cuando cambia el ANCHO disponible: al reflowar (responsive) el alto\n        \/\/ var\u00eda y el contenedor debe seguirlo. Evita scroll interno en m\u00f3vil\/redimensi\u00f3n.\n        window.addEventListener(&#039;resize&#039;, sendHeight);\n        \/\/ Tras cargar im\u00e1genes\/recursos y tras asentarse el layout (v\u00eddeo 16:9, fuentes).\n        window.addEventListener(&#039;load&#039;, sendHeight);\n        setTimeout(sendHeight, 300);\n        setTimeout(sendHeight, 1000);\n\n        \/\/ Env\u00edo inicial\n        sendHeight();\n    }\n\n    \/\/ \u2500\u2500 Punto de entrada \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    if (document.readyState === &#039;loading&#039;) {\n        document.addEventListener(&#039;DOMContentLoaded&#039;, function () {\n            mount();\n            installResizeObserver();\n        });\n    } else {\n        mount();\n        installResizeObserver();\n    }\n\n}());\n\n&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\"><\/iframe>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"_joinchat":[],"ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":"","jetpack_post_was_ever_published":false},"categories":[281,146],"tags":[],"class_list":["post-23390","post","type-post","status-publish","format-standard","hentry","category-negocios","category-sin-categoria","entry","owp-thumbs-layout-horizontal","owp-btn-normal","owp-tabs-layout-horizontal","has-no-thumbnails","has-product-nav"],"jetpack_featured_media_url":"","uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"trp-custom-language-flag":false,"ocean-thumb-m":false,"ocean-thumb-ml":false,"ocean-thumb-l":false,"woocommerce_thumbnail":false,"woocommerce_single":false,"woocommerce_gallery_thumbnail":false},"uagb_author_info":{"display_name":"Inma Mart\u00edn","author_link":"https:\/\/www.spanishminute.com\/ru\/author\/moon\/"},"uagb_comment_info":0,"uagb_excerpt":null,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/posts\/23390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/comments?post=23390"}],"version-history":[{"count":2,"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/posts\/23390\/revisions"}],"predecessor-version":[{"id":23393,"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/posts\/23390\/revisions\/23393"}],"wp:attachment":[{"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/media?parent=23390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/categories?post=23390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.spanishminute.com\/ru\/wp-json\/wp\/v2\/tags?post=23390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}