<br />
<b>Deprecated</b>:  Elementor\Modules\GlobalClasses\Atomic_Global_Styles::get_cache_root_key(): Implicitly marking parameter $key as nullable is deprecated, the explicit nullable type must be used instead in <b>/home/incantomodelosco/public_html/cursos/wp-content/plugins/elementor/modules/global-classes/atomic-global-styles.php</b> on line <b>410</b><br />
{"id":12,"date":"2026-07-03T15:52:59","date_gmt":"2026-07-03T15:52:59","guid":{"rendered":"https:\/\/incantomodelos.com\/cursos\/carrito\/"},"modified":"2026-07-30T23:47:53","modified_gmt":"2026-07-30T23:47:53","slug":"carrito","status":"publish","type":"page","link":"https:\/\/incantomodelos.com\/cursos\/carrito\/","title":{"rendered":"Carrito"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12\" class=\"elementor elementor-12\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0f49b22 e-con e-atomic-element e-flexbox-base e-9c39967 \" data-id=\"0f49b22\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"0f49b22\" data-e-type=\"e-flexbox\" data-id=\"0f49b22\">\n    \t\t<div class=\"elementor-element elementor-element-3068a35 elementor-widget elementor-widget-html\" data-id=\"3068a35\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\r\n  ============================================================================\r\n  INCANTO MODELOS \u00b7 CARRITO (\/cursos\/carrito\/) \u00b7 v1 self-contained\r\n  ============================================================================\r\n  D\u00d3NDE PEGARLO (Theme Builder de Elementor Pro):\r\n    Edit\u00e1 la p\u00e1gina \"Carrito\" de WooCommerce (\/cursos\/carrito\/) con Elementor,\r\n    o asignale una plantilla Single Page desde el Theme Builder.\r\n    Pon\u00e9 TODO este bloque en UN SOLO widget \"HTML\" dentro de un Container.\r\n    (Header y Footer salen de sus plantillas globales; NO agregues el shortcode\r\n     [woocommerce_cart]: esta plantilla es 100% Store API custom.)\r\n  CONFIGURACI\u00d3N DEL CONTAINER:\r\n    Ancho: FULL WIDTH \u00b7 Padding: 0 \u00b7 Gap (Elementos): 0 \u00b7 Margen: 0.\r\n\r\n  QU\u00c9 HACE:\r\n    - Renderizado 100% client-side v\u00eda WooCommerce Store API (\/cursos\/wp-json\/wc\/store\/v1).\r\n    - Lista de items del carrito (imagen, nombre, precio, bot\u00f3n QUITAR con SVG).\r\n    - Como son CURSOS: cantidad SIEMPRE 1 (stepper deshabilitado, chip \"1 acceso\").\r\n    - Remove v\u00eda POST \/cart\/remove-item con nonce X-WC-Store-API-Nonce.\r\n    - Panel resumen: subtotal, total, \"FINALIZAR COMPRA\" -> \/cursos\/finalizar-compra\/,\r\n      \"Seguir viendo cursos\" -> \/cursos\/. Dispara eventos de Woo tras cada cambio.\r\n    - Skeleton shimmer inicial \u00b7 estado vac\u00edo elegante \u00b7 estado error (con WhatsApp).\r\n\r\n  SCOPE: todo el CSS bajo #inc-cart \u00b7 clases prefijadas inc-cart__ \u00b7 reset * bajo el id.\r\n  SIN merchandising: sin \"+IVA\", sin \"min. Xu\", sin env\u00edos, sin cupones mayoristas.\r\n-->\r\n\r\n<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Lato:wght@400;500;700;900&display=swap');\r\n\r\n  #inc-cart, #inc-cart *, #inc-cart *::before, #inc-cart *::after { box-sizing: border-box; }\r\n  #inc-cart {\r\n    --inc-turq:       #23222B;\r\n    --inc-turq-deep:  #15141B;\r\n    --inc-turq-text:  #23222B;\r\n    --inc-turq-cta-h: #33323D;\r\n    --inc-turq-soft:  #F2ECEE;\r\n    --inc-ink:        #23222B;\r\n    --inc-ink-2:      #4A4952;\r\n    --inc-mauve:      #C4C9D6;\r\n    --inc-mauve-soft: #EBEDF2;\r\n    --inc-paper:      #FFFFFF;\r\n    --inc-paper-2:    #F6F4F0;\r\n    --inc-line:       #E3E0DA;\r\n    --inc-muted:      #7A767C;\r\n    --inc-success:    #2E7D5B;\r\n    --inc-danger:     #C0392B;\r\n    --inc-font:       \"Lato\", \"Helvetica Neue\", Arial, sans-serif;\r\n    --inc-display:    \"N27\", \"Space Grotesk\", \"Helvetica Neue\", Arial, sans-serif;\r\n    --inc-pink:       #DAC9CD;\r\n    --inc-peri:       #C4C9D6;\r\n    --inc-sage:       #BDC5B1;\r\n    --inc-sage-deep:  #A7B098;\r\n    --inc-radius:     16px;\r\n    --inc-radius-sm:  10px;\r\n    --inc-pill:       999px;\r\n    --inc-pad-x:      clamp(16px, 4vw, 56px);\r\n    --inc-maxw:       1360px;\r\n    --inc-shadow:     0 24px 48px -28px rgba(60,60,59,.28);\r\n    font-family: var(--inc-font);\r\n    color: var(--inc-ink);\r\n    background: var(--inc-paper);\r\n    line-height: 1.55;\r\n    -webkit-font-smoothing: antialiased;\r\n  }\r\n  #inc-cart a { color: inherit; text-decoration: none; }\r\n  \/* Los CTA rellenos son <a> con clase (0,1,0) y pierden contra #inc-cart a (1,0,1),\r\n     que les impone color heredado (carb\u00f3n). En tema neutro el fondo tambi\u00e9n es carb\u00f3n\r\n     \u2192 texto invisible. Subimos la especificidad a (1,1,0) para blindar el texto blanco\r\n     en AMBOS temas. Aplica a: finalizar compra, ver cursos (vac\u00edo) y WhatsApp (error). *\/\r\n  #inc-cart a.inc-cart__cta { color: #fff; }\r\n  #inc-cart img { max-width: 100%; display: block; }\r\n\r\n  \/* ===== Blindaje de titulares vs Kit de Elementor ===== *\/\r\n  #inc-cart .inc-cart__title,\r\n  #inc-cart h1.inc-cart__title,\r\n  #inc-cart .inc-cart__empty-title,\r\n  #inc-cart h2.inc-cart__empty-title,\r\n  #inc-cart .inc-cart__summary-h,\r\n  #inc-cart h2.inc-cart__summary-h {\r\n    font-family: var(--inc-display) !important;\r\n    font-weight: 300 !important;\r\n    text-transform: uppercase !important;\r\n    line-height: .98 !important;\r\n    letter-spacing: .03em !important;\r\n    color: var(--inc-ink) !important;\r\n    margin: 0;\r\n  }\r\n  #inc-cart .inc-cart__item-name,\r\n  #inc-cart h3.inc-cart__item-name {\r\n    font-family: var(--inc-font) !important;\r\n    font-weight: 600 !important;\r\n    text-transform: none !important;\r\n    line-height: 1.25 !important;\r\n    letter-spacing: .01em !important;\r\n    color: var(--inc-ink) !important;\r\n    margin: 0;\r\n  }\r\n\r\n  \/* ===== HERO ===== *\/\r\n  #inc-cart .inc-cart__hero {\r\n    position: relative; overflow: hidden;\r\n    padding: clamp(48px, 6vw, 88px) var(--inc-pad-x) clamp(28px, 3vw, 44px);\r\n    border-bottom: 1px solid var(--inc-line);\r\n    background:\r\n      radial-gradient(900px 420px at 108% -10%, rgba(0,178,201,.14), transparent 62%),\r\n      linear-gradient(180deg, var(--inc-paper-2) 0%, var(--inc-paper) 82%);\r\n  }\r\n  #inc-cart .inc-cart__hero-inner { max-width: var(--inc-maxw); margin: 0 auto; position: relative; z-index: 2; }\r\n  #inc-cart .inc-cart__crumbs {\r\n    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;\r\n    font-size: 11px; letter-spacing: .18em; text-transform: uppercase;\r\n    color: var(--inc-muted); font-weight: 600; margin-bottom: 22px;\r\n  }\r\n  #inc-cart .inc-cart__crumbs a { color: var(--inc-muted); }\r\n  #inc-cart .inc-cart__crumbs a:hover { color: var(--inc-ink); }\r\n  #inc-cart .inc-cart__crumbs svg { width: 10px; height: 10px; }\r\n  #inc-cart .inc-cart__crumbs strong { color: var(--inc-turq-text); font-weight: 700; }\r\n  #inc-cart .inc-cart__eyebrow {\r\n    display: inline-flex; align-items: center; gap: 10px;\r\n    font-weight: 600; font-size: 12px; letter-spacing: .24em; text-transform: uppercase;\r\n    color: var(--inc-turq-text); margin-bottom: 16px;\r\n  }\r\n  #inc-cart .inc-cart__eyebrow::before { content: \"\"; width: 8px; height: 8px; border-radius: 999px; background: var(--inc-turq); }\r\n  #inc-cart .inc-cart__title { font-size: clamp(40px, 7vw, 96px); margin: 0 0 20px; }\r\n\r\n  \/* ===== BODY \u00b7 grid 2 columnas ===== *\/\r\n  #inc-cart .inc-cart__body {\r\n    max-width: var(--inc-maxw); margin: 0 auto;\r\n    padding: clamp(28px,4vw,48px) var(--inc-pad-x) clamp(56px,7vw,96px);\r\n    display: grid; grid-template-columns: 1.6fr 1fr; gap: 32px; align-items: start;\r\n  }\r\n\r\n  \/* ===== LISTA DE ITEMS ===== *\/\r\n  #inc-cart .inc-cart__items { display: flex; flex-direction: column; gap: 14px; }\r\n  #inc-cart .inc-cart__item {\r\n    display: grid; grid-template-columns: 118px 1fr auto; gap: 22px;\r\n    padding: 18px; background: var(--inc-paper);\r\n    border: 1px solid var(--inc-line); border-radius: var(--inc-radius);\r\n    align-items: center; transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease;\r\n  }\r\n  #inc-cart .inc-cart__item:hover { border-color: var(--inc-turq); box-shadow: var(--inc-shadow); }\r\n  #inc-cart .inc-cart__item.is-removing { opacity: .35; transform: translateX(-14px); transition: all .25s ease; }\r\n  #inc-cart .inc-cart__item-img {\r\n    width: 118px; height: 100px; border-radius: var(--inc-radius-sm);\r\n    overflow: hidden; background: var(--inc-mauve-soft); position: relative;\r\n  }\r\n  #inc-cart .inc-cart__item-img a { display: block; height: 100%; }\r\n  #inc-cart .inc-cart__item-img img { width: 100%; height: 100%; object-fit: cover; }\r\n  #inc-cart .inc-cart__item-img-fallback {\r\n    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;\r\n    background: linear-gradient(135deg, var(--inc-turq-soft), var(--inc-mauve-soft));\r\n    color: var(--inc-turq); font-weight: 300; font-size: 30px; letter-spacing: .1em;\r\n  }\r\n  #inc-cart .inc-cart__item-body { display: flex; flex-direction: column; gap: 7px; min-width: 0; }\r\n  #inc-cart .inc-cart__item-name { font-size: clamp(16px, 1.7vw, 20px); }\r\n  #inc-cart .inc-cart__item-name:hover { color: var(--inc-turq-deep) !important; }\r\n  #inc-cart .inc-cart__item-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 2px; }\r\n  #inc-cart .inc-cart__chip {\r\n    display: inline-flex; align-items: center; gap: 6px;\r\n    padding: 5px 11px; border-radius: var(--inc-pill);\r\n    background: var(--inc-turq-soft); color: var(--inc-turq-text);\r\n    font-size: 10.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;\r\n  }\r\n  #inc-cart .inc-cart__chip svg { width: 12px; height: 12px; }\r\n  #inc-cart .inc-cart__chip--muted { background: var(--inc-mauve-soft); color: var(--inc-ink-2); }\r\n\r\n  #inc-cart .inc-cart__item-side {\r\n    display: flex; flex-direction: column; align-items: flex-end; justify-content: center;\r\n    gap: 12px; text-align: right;\r\n  }\r\n  #inc-cart .inc-cart__item-price { font-weight: 700; font-size: clamp(19px, 2vw, 24px); color: var(--inc-ink); line-height: 1; }\r\n  #inc-cart .inc-cart__item-remove {\r\n    background: transparent; border: 0; cursor: pointer; color: var(--inc-muted);\r\n    font-family: var(--inc-font); font-weight: 600; font-size: 11px; letter-spacing: .12em; text-transform: uppercase;\r\n    display: inline-flex; align-items: center; gap: 6px; padding: 4px 6px;\r\n    transition: color .2s ease;\r\n  }\r\n  #inc-cart .inc-cart__item-remove svg { width: 13px; height: 13px; }\r\n  #inc-cart .inc-cart__item-remove:hover { color: var(--inc-danger); }\r\n\r\n  \/* ===== NOTA (acceso) ===== *\/\r\n  #inc-cart .inc-cart__note {\r\n    display: flex; align-items: center; gap: 12px;\r\n    margin-top: 18px; padding: 16px 18px;\r\n    background: var(--inc-turq-soft); border-radius: var(--inc-radius-sm);\r\n    border-left: 3px solid var(--inc-turq);\r\n    font-size: 13px; color: var(--inc-ink-2); line-height: 1.5;\r\n  }\r\n  #inc-cart .inc-cart__note svg { width: 22px; height: 22px; color: var(--inc-turq-deep); flex-shrink: 0; }\r\n  #inc-cart .inc-cart__note strong { color: var(--inc-ink); font-weight: 700; }\r\n\r\n  \/* ===== SUMMARY (col derecha, sticky) ===== *\/\r\n  #inc-cart .inc-cart__summary {\r\n    position: sticky; top: 24px;\r\n    background: var(--inc-paper); border: 1px solid var(--inc-line);\r\n    border-radius: var(--inc-radius); padding: 26px; box-shadow: var(--inc-shadow);\r\n  }\r\n  #inc-cart .inc-cart__summary-eyebrow {\r\n    font-weight: 600; font-size: 11px; letter-spacing: .24em; text-transform: uppercase;\r\n    color: var(--inc-turq-text); margin-bottom: 8px;\r\n  }\r\n  #inc-cart .inc-cart__summary-h {\r\n    font-size: clamp(24px, 2.6vw, 32px);\r\n    padding-bottom: 16px; margin-bottom: 6px; border-bottom: 2px solid var(--inc-turq);\r\n  }\r\n  #inc-cart .inc-cart__summary-items { list-style: none; padding: 0; margin: 8px 0 0; display: flex; flex-direction: column; }\r\n  #inc-cart .inc-cart__summary-item {\r\n    display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;\r\n    padding: 12px 0; border-bottom: 1px dashed var(--inc-line); font-size: 13px;\r\n  }\r\n  #inc-cart .inc-cart__summary-item:last-child { border-bottom: 0; }\r\n  #inc-cart .inc-cart__summary-item-name { font-weight: 600; color: var(--inc-ink); line-height: 1.3; word-break: break-word; }\r\n  #inc-cart .inc-cart__summary-item-qty { font-size: 11px; color: var(--inc-muted); letter-spacing: .04em; margin-top: 2px; }\r\n  #inc-cart .inc-cart__summary-item-total { font-weight: 700; color: var(--inc-ink); white-space: nowrap; flex-shrink: 0; }\r\n\r\n  #inc-cart .inc-cart__summary-row {\r\n    display: flex; justify-content: space-between; align-items: baseline;\r\n    padding: 14px 0; font-size: 14px; color: var(--inc-ink-2);\r\n    border-top: 1px dashed var(--inc-line);\r\n  }\r\n  #inc-cart .inc-cart__summary-row .label { color: var(--inc-ink-2); }\r\n  #inc-cart .inc-cart__summary-row .value { font-weight: 700; font-size: 16px; color: var(--inc-ink); }\r\n\r\n  #inc-cart .inc-cart__total {\r\n    display: flex; justify-content: space-between; align-items: baseline;\r\n    padding: 18px 0 6px; margin-top: 6px; border-top: 2px solid var(--inc-ink);\r\n  }\r\n  #inc-cart .inc-cart__total .label { font-weight: 600; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--inc-ink); }\r\n  #inc-cart .inc-cart__total .value { font-weight: 800; font-size: clamp(26px, 3vw, 34px); color: var(--inc-ink); letter-spacing: .01em; line-height: 1; }\r\n\r\n  \/* ===== Botones (PLANOS, sin glow) ===== *\/\r\n  #inc-cart .inc-cart__cta {\r\n    display: flex; align-items: center; justify-content: center; gap: 10px;\r\n    width: 100%; margin-top: 18px; padding: 17px 22px;\r\n    border: 0; border-radius: var(--inc-pill); cursor: pointer;\r\n    font-family: var(--inc-font); font-weight: 700; font-size: 13px;\r\n    letter-spacing: .14em; text-transform: uppercase;\r\n    background: var(--inc-turq-text); color: #fff; text-decoration: none;\r\n    transition: background .2s ease, transform .2s ease;\r\n  }\r\n  #inc-cart .inc-cart__cta svg { width: 18px; height: 18px; }\r\n  #inc-cart .inc-cart__cta:hover { background: var(--inc-turq-cta-h); transform: translateY(-2px); }\r\n  #inc-cart .inc-cart__continue {\r\n    display: inline-flex; align-items: center; gap: 8px; justify-content: center;\r\n    width: 100%; margin-top: 14px; padding: 4px;\r\n    font-weight: 600; font-size: 13px; letter-spacing: .04em; color: var(--inc-ink-2);\r\n    transition: color .2s ease;\r\n  }\r\n  #inc-cart .inc-cart__continue svg { width: 16px; height: 16px; }\r\n  #inc-cart .inc-cart__continue:hover { color: var(--inc-turq-deep); }\r\n  #inc-cart .inc-cart__secure {\r\n    display: flex; align-items: center; gap: 8px; justify-content: center;\r\n    margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--inc-line);\r\n    font-size: 11.5px; letter-spacing: .04em; color: var(--inc-muted);\r\n  }\r\n  #inc-cart .inc-cart__secure svg { width: 14px; height: 14px; color: var(--inc-success); }\r\n\r\n  \/* ===== ESTADO VAC\u00cdO ===== *\/\r\n  #inc-cart .inc-cart__empty {\r\n    max-width: 640px; margin: clamp(40px,6vw,80px) auto;\r\n    padding: clamp(40px, 5vw, 72px);\r\n    text-align: center; background: var(--inc-paper-2);\r\n    border: 1px dashed var(--inc-line); border-radius: var(--inc-radius);\r\n  }\r\n  #inc-cart .inc-cart__empty-icon {\r\n    width: 84px; height: 84px; margin: 0 auto 26px;\r\n    background: var(--inc-paper); border-radius: 999px;\r\n    display: flex; align-items: center; justify-content: center; color: var(--inc-turq);\r\n  }\r\n  #inc-cart .inc-cart__empty-icon svg { width: 38px; height: 38px; }\r\n  #inc-cart .inc-cart__empty-title { font-size: clamp(28px, 4vw, 46px); margin: 0 0 12px; }\r\n  #inc-cart .inc-cart__empty p { color: var(--inc-ink-2); margin: 0 auto 28px; font-size: 15px; line-height: 1.6; max-width: 46ch; }\r\n  #inc-cart .inc-cart__empty .inc-cart__cta { display: inline-flex; width: auto; margin-top: 0; padding: 15px 32px; }\r\n\r\n  \/* ===== SKELETON ===== *\/\r\n  #inc-cart .inc-cart__skel {\r\n    background: linear-gradient(90deg, var(--inc-paper-2) 0%, #ececec 50%, var(--inc-paper-2) 100%);\r\n    background-size: 200% 100%; animation: inc-cart-shimmer 1.4s infinite linear;\r\n    border-radius: var(--inc-radius);\r\n  }\r\n  @keyframes inc-cart-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }\r\n\r\n  \/* ===== TOAST ===== *\/\r\n  #inc-cart .inc-cart__toast {\r\n    position: fixed; bottom: 32px; left: 50%;\r\n    transform: translateX(-50%) translateY(160%);\r\n    padding: 14px 22px; border-radius: var(--inc-pill);\r\n    background: var(--inc-ink); color: #fff;\r\n    font-weight: 600; font-size: 13px; letter-spacing: .1em;\r\n    z-index: 99999; transition: transform .3s ease;\r\n    display: inline-flex; align-items: center; gap: 10px; max-width: 90vw;\r\n    box-shadow: var(--inc-shadow);\r\n  }\r\n  #inc-cart .inc-cart__toast svg { width: 15px; height: 15px; flex-shrink: 0; }\r\n  #inc-cart .inc-cart__toast.is-show { transform: translateX(-50%) translateY(0); }\r\n  #inc-cart .inc-cart__toast.is-error { background: var(--inc-danger); }\r\n\r\n  \/* ===== Responsive ===== *\/\r\n  @media (max-width: 992px) {\r\n    #inc-cart .inc-cart__body { grid-template-columns: 1fr; gap: 24px; }\r\n    #inc-cart .inc-cart__summary { position: static; }\r\n  }\r\n  @media (max-width: 768px) {\r\n    #inc-cart .inc-cart__item { grid-template-columns: 96px 1fr; gap: 16px; }\r\n    #inc-cart .inc-cart__item-img { width: 96px; height: 88px; }\r\n    #inc-cart .inc-cart__item-side {\r\n      grid-column: 1 \/ -1; flex-direction: row; align-items: center; justify-content: space-between;\r\n      margin-top: 4px; padding-top: 14px; border-top: 1px dashed var(--inc-line); text-align: left;\r\n    }\r\n  }\r\n  @media (max-width: 480px) {\r\n    #inc-cart .inc-cart__item { padding: 14px; }\r\n    #inc-cart .inc-cart__summary { padding: 20px; }\r\n  }\r\n  @media (prefers-reduced-motion: reduce) {\r\n    #inc-cart * { animation: none !important; transition: none !important; }\r\n    #inc-cart .inc-cart__item:hover { transform: none; }\r\n  }\r\n<\/style>\r\n\r\n<div id=\"inc-cart\">\r\n\r\n  <!-- ===== HERO ===== -->\r\n  <section class=\"inc-cart__hero\">\r\n    <div class=\"inc-cart__hero-inner\">\r\n      <nav class=\"inc-cart__crumbs\" aria-label=\"Ruta de navegaci\u00f3n\">\r\n        <a href=\"\/cursos\/\">Inicio<\/a>\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"m9 6 6 6-6 6\"\/><\/svg>\r\n        <a href=\"\/cursos\/\">Cursos<\/a>\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"m9 6 6 6-6 6\"\/><\/svg>\r\n        <strong>Tu carrito<\/strong>\r\n      <\/nav>\r\n      <div class=\"inc-cart__eyebrow\" data-inc-eyebrow>TU SELECCI\u00d3N<\/div>\r\n      <h1 class=\"inc-cart__title\">TU CARRITO<\/h1>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- ===== BODY (se rellena por JS) ===== -->\r\n  <div id=\"inc-cart-body\">\r\n    <!-- Skeleton inicial -->\r\n    <section class=\"inc-cart__body\">\r\n      <div class=\"inc-cart__items\">\r\n        <div class=\"inc-cart__skel\" style=\"height:136px;\"><\/div>\r\n        <div class=\"inc-cart__skel\" style=\"height:136px;\"><\/div>\r\n        <div class=\"inc-cart__skel\" style=\"height:136px;\"><\/div>\r\n      <\/div>\r\n      <div class=\"inc-cart__skel\" style=\"height:360px;\"><\/div>\r\n    <\/section>\r\n  <\/div>\r\n\r\n  <!-- ===== TOAST ===== -->\r\n  <div class=\"inc-cart__toast\" id=\"inc-cart-toast\">\r\n    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M5 13l4 4L19 7\"\/><\/svg>\r\n    <span>Carrito actualizado<\/span>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  \"use strict\";\r\n\r\n  \/* ===== Constantes centralizadas (f\u00e1ciles de cambiar) ===== *\/\r\n  var BASE  = '\/cursos';\r\n  var STORE = BASE + '\/wp-json\/wc\/store\/v1';\r\n  var PAGES = {\r\n    shop:     BASE + '\/',\r\n    cart:     BASE + '\/carrito\/',\r\n    checkout: BASE + '\/finalizar-compra\/',\r\n    account:  BASE + '\/mi-cuenta\/'\r\n  };\r\n  var WHATSAPP = 'https:\/\/wa.me\/5493875460464';\r\n\r\n  function $(s, c) { return (c || document).querySelector(s); }\r\n  function $$(s, c) { return Array.prototype.slice.call((c || document).querySelectorAll(s)); }\r\n\r\n  var cartState = null;\r\n  var storeNonce = '';\r\n\r\n  \/* ===== Helpers ===== *\/\r\n  function decodeEntities(s) {\r\n    if (!s) return '';\r\n    var t = document.createElement('textarea'); t.innerHTML = s; return t.value;\r\n  }\r\n  function safeText(s) {\r\n    return decodeEntities(s).replace(\/[&<>\"']\/g, function (c) {\r\n      return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c];\r\n    });\r\n  }\r\n  function fmtPrice(priceStr, minor, symbol) {\r\n    var num = parseFloat(priceStr || 0) \/ Math.pow(10, minor || 2);\r\n    return (symbol || '$') + ' ' + num.toLocaleString('es-AR', {\r\n      minimumFractionDigits: num % 1 === 0 ? 0 : 2,\r\n      maximumFractionDigits: 2\r\n    });\r\n  }\r\n  function showToast(msg, isError) {\r\n    var t = $('#inc-cart-toast');\r\n    if (!t) return;\r\n    t.querySelector('span').textContent = msg;\r\n    t.classList.toggle('is-error', !!isError);\r\n    t.classList.add('is-show');\r\n    setTimeout(function () { t.classList.remove('is-show'); }, 2600);\r\n  }\r\n  \/* Notifica al header\/Woo que el carrito cambi\u00f3 (contador din\u00e1mico + fragments) *\/\r\n  function fireWooEvents(extraEvent) {\r\n    if (!window.jQuery) return;\r\n    try {\r\n      window.jQuery(document.body).trigger('wc_fragment_refresh');\r\n      window.jQuery(document.body).trigger('updated_cart_totals');\r\n      if (extraEvent) window.jQuery(document.body).trigger(extraEvent);\r\n    } catch (e) {}\r\n  }\r\n\r\n  \/* ===== Fetch helpers (nonce X-WC-Store-API-Nonce) ===== *\/\r\n  function captureNonce(r) {\r\n    storeNonce = r.headers.get('Nonce') || r.headers.get('X-WC-Store-API-Nonce') || storeNonce;\r\n  }\r\n  function fetchCart() {\r\n    return fetch(STORE + '\/cart', { credentials: 'same-origin' }).then(function (r) {\r\n      if (!r.ok) throw new Error('cart fetch ' + r.status);\r\n      captureNonce(r);\r\n      return r.json();\r\n    });\r\n  }\r\n  function apiCall(path, method, body) {\r\n    var headers = { 'Content-Type': 'application\/json' };\r\n    if (storeNonce) { headers['Nonce'] = storeNonce; headers['X-WC-Store-API-Nonce'] = storeNonce; }\r\n    return fetch(STORE + path, {\r\n      method: method, credentials: 'same-origin', headers: headers,\r\n      body: body ? JSON.stringify(body) : undefined\r\n    }).then(function (r) {\r\n      if (!r.ok) {\r\n        return r.json().then(function (j) { throw new Error(j.message || 'Error de la API'); },\r\n                             function () { throw new Error('Error de la API'); });\r\n      }\r\n      captureNonce(r);\r\n      return r.json();\r\n    });\r\n  }\r\n\r\n  \/* ===== Remove (endpoint action-based: devuelve el carrito COMPLETO) ===== *\/\r\n  function removeItem(itemKey) {\r\n    apiCall('\/cart\/remove-item', 'POST', { key: itemKey }).then(function (cart) {\r\n      cartState = cart;\r\n      showToast('Curso quitado del carrito');\r\n      renderAll();\r\n      fireWooEvents('removed_from_cart');\r\n    }).catch(function (e) {\r\n      showToast(e.message || 'No se pudo quitar', true);\r\n      fetchCart().then(function (cart) { cartState = cart; renderAll(); }).catch(function () {});\r\n    });\r\n  }\r\n\r\n  \/* ===== Render item ===== *\/\r\n  function renderItem(item, cart) {\r\n    var symbol = cart.totals.currency_symbol || '$';\r\n    var minor  = cart.totals.currency_minor_unit || 2;\r\n    var img  = (item.images && item.images[0]) ? item.images[0].src : '';\r\n    var name = safeText(item.name);\r\n    var lineTotal = fmtPrice(item.totals.line_total, minor, symbol);\r\n\r\n    var mediaInner = img\r\n      ? '<img decoding=\"async\" src=\"' + img + '\" alt=\"' + name + '\" loading=\"lazy\">'\r\n      : '<div class=\"inc-cart__item-img-fallback\">im<\/div>';\r\n\r\n    return '' +\r\n      '<div class=\"inc-cart__item\" data-key=\"' + item.key + '\">' +\r\n        '<div class=\"inc-cart__item-img\"><a href=\"' + item.permalink + '\">' + mediaInner + '<\/a><\/div>' +\r\n        '<div class=\"inc-cart__item-body\">' +\r\n          '<h3 class=\"inc-cart__item-name\"><a href=\"' + item.permalink + '\">' + name + '<\/a><\/h3>' +\r\n          '<div class=\"inc-cart__item-meta\">' +\r\n            '<span class=\"inc-cart__chip\">' +\r\n              '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>' +\r\n              '1 acceso' +\r\n            '<\/span>' +\r\n            '<span class=\"inc-cart__chip inc-cart__chip--muted\">' +\r\n              '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"\/><path d=\"M8 21h8M12 17v4\"\/><\/svg>' +\r\n              'Online' +\r\n            '<\/span>' +\r\n          '<\/div>' +\r\n        '<\/div>' +\r\n        '<div class=\"inc-cart__item-side\">' +\r\n          '<div class=\"inc-cart__item-price\">' + lineTotal + '<\/div>' +\r\n          '<button type=\"button\" class=\"inc-cart__item-remove\" data-action=\"remove\" data-key=\"' + item.key + '\" aria-label=\"Quitar ' + name + ' del carrito\">' +\r\n            '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\"><path d=\"M6 6 18 18M18 6 6 18\"\/><\/svg>' +\r\n            'Quitar' +\r\n          '<\/button>' +\r\n        '<\/div>' +\r\n      '<\/div>';\r\n  }\r\n\r\n  \/* ===== Render summary ===== *\/\r\n  function renderSummary(cart) {\r\n    var symbol = cart.totals.currency_symbol || '$';\r\n    var minor  = cart.totals.currency_minor_unit || 2;\r\n    var subtotal = fmtPrice(cart.totals.total_items || cart.totals.total_price, minor, symbol);\r\n    var total    = fmtPrice(cart.totals.total_price, minor, symbol);\r\n    var count    = (cart.items || []).length;\r\n\r\n    var breakdown = (cart.items || []).map(function (it) {\r\n      return '' +\r\n        '<li class=\"inc-cart__summary-item\">' +\r\n          '<div>' +\r\n            '<div class=\"inc-cart__summary-item-name\">' + safeText(it.name) + '<\/div>' +\r\n            '<div class=\"inc-cart__summary-item-qty\">Acceso al curso<\/div>' +\r\n          '<\/div>' +\r\n          '<span class=\"inc-cart__summary-item-total\">' + fmtPrice(it.totals.line_total, minor, symbol) + '<\/span>' +\r\n        '<\/li>';\r\n    }).join('');\r\n\r\n    return '' +\r\n      '<div class=\"inc-cart__summary\">' +\r\n        '<div class=\"inc-cart__summary-eyebrow\">Resumen<\/div>' +\r\n        '<h2 class=\"inc-cart__summary-h\">Tu compra<\/h2>' +\r\n        '<ul class=\"inc-cart__summary-items\">' + breakdown + '<\/ul>' +\r\n        '<div class=\"inc-cart__summary-row\">' +\r\n          '<span class=\"label\">Subtotal (' + count + (count === 1 ? ' curso' : ' cursos') + ')<\/span>' +\r\n          '<span class=\"value\">' + subtotal + '<\/span>' +\r\n        '<\/div>' +\r\n        '<div class=\"inc-cart__total\">' +\r\n          '<span class=\"label\">Total<\/span>' +\r\n          '<span class=\"value\">' + total + '<\/span>' +\r\n        '<\/div>' +\r\n        '<a class=\"inc-cart__cta\" href=\"' + PAGES.checkout + '\">' +\r\n          'Finalizar compra' +\r\n          '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 5l7 7-7 7\"\/><\/svg>' +\r\n        '<\/a>' +\r\n        '<a class=\"inc-cart__continue\" href=\"' + PAGES.shop + '\">' +\r\n          '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 12H5M11 19l-7-7 7-7\"\/><\/svg>' +\r\n          'Seguir viendo cursos' +\r\n        '<\/a>' +\r\n        '<div class=\"inc-cart__secure\">' +\r\n          '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><\/svg>' +\r\n          'Pago 100% seguro' +\r\n        '<\/div>' +\r\n      '<\/div>';\r\n  }\r\n\r\n  \/* ===== Render vac\u00edo ===== *\/\r\n  function renderEmpty() {\r\n    return '' +\r\n      '<div class=\"inc-cart__empty\">' +\r\n        '<div class=\"inc-cart__empty-icon\">' +\r\n          '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 3h2l2.4 12.2a2 2 0 0 0 2 1.6h8.7a2 2 0 0 0 2-1.6L22 7H6\"\/><circle cx=\"9\" cy=\"21\" r=\"1\"\/><circle cx=\"18\" cy=\"21\" r=\"1\"\/><\/svg>' +\r\n        '<\/div>' +\r\n        '<h2 class=\"inc-cart__empty-title\">Todav\u00eda no elegiste ning\u00fan curso<\/h2>' +\r\n        '<p>Tu carrera empieza ac\u00e1. Descubr\u00ed las formaciones de Incanto y sum\u00e1 el primer curso para empezar hoy mismo.<\/p>' +\r\n        '<a class=\"inc-cart__cta\" href=\"' + PAGES.shop + '\">' +\r\n          'Ver cursos' +\r\n          '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 5l7 7-7 7\"\/><\/svg>' +\r\n        '<\/a>' +\r\n      '<\/div>';\r\n  }\r\n\r\n  \/* ===== Render error (con WhatsApp) ===== *\/\r\n  function renderError() {\r\n    return '' +\r\n      '<div class=\"inc-cart__empty\">' +\r\n        '<div class=\"inc-cart__empty-icon\">' +\r\n          '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><path d=\"M12 9v4M12 17h.01\"\/><\/svg>' +\r\n        '<\/div>' +\r\n        '<h2 class=\"inc-cart__empty-title\">No pudimos cargar tu carrito<\/h2>' +\r\n        '<p>Recarg\u00e1 la p\u00e1gina o prob\u00e1 en unos segundos. Si el problema sigue, escribinos y te damos una mano.<\/p>' +\r\n        '<a class=\"inc-cart__cta\" href=\"' + WHATSAPP + '\" target=\"_blank\" rel=\"noopener\">' +\r\n          '<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17.5 14.4c-.3-.1-1.6-.8-1.9-.9-.3-.1-.4-.1-.6.1-.2.3-.7.9-.8 1-.2.2-.3.2-.6.1-.3-.1-1.2-.5-2.3-1.4-.9-.8-1.4-1.8-1.6-2.1-.2-.3 0-.5.1-.6.1-.1.3-.3.4-.5.1-.2.2-.3.3-.5.1-.2 0-.4 0-.5-.1-.1-.6-1.4-.8-1.9-.2-.5-.4-.4-.6-.4h-.5c-.2 0-.5.1-.7.4-.2.3-.9.9-.9 2.2 0 1.3.9 2.5 1.1 2.7.1.2 1.8 2.7 4.3 3.8 1.5.6 2.1.7 2.9.5.4-.1 1.6-.6 1.8-1.3.2-.6.2-1.2.2-1.3-.1-.2-.3-.2-.6-.3zM12 2C6.5 2 2 6.5 2 12c0 1.8.5 3.5 1.3 4.9L2 22l5.2-1.4c1.4.7 3 1.2 4.8 1.2 5.5 0 10-4.5 10-10S17.5 2 12 2z\"\/><\/svg>' +\r\n          'Escribinos por WhatsApp' +\r\n        '<\/a>' +\r\n      '<\/div>';\r\n  }\r\n\r\n  \/* ===== Render principal ===== *\/\r\n  function renderAll() {\r\n    var body = $('#inc-cart-body');\r\n    var eyebrow = $('[data-inc-eyebrow]');\r\n\r\n    if (!cartState || !cartState.items || cartState.items.length === 0) {\r\n      if (eyebrow) eyebrow.textContent = 'CARRITO VAC\u00cdO';\r\n      body.innerHTML = renderEmpty();\r\n      return;\r\n    }\r\n\r\n    var n = cartState.items.length;\r\n    if (eyebrow) eyebrow.textContent = n === 1 ? '1 CURSO SELECCIONADO' : n + ' CURSOS SELECCIONADOS';\r\n\r\n    body.innerHTML = '' +\r\n      '<section class=\"inc-cart__body\">' +\r\n        '<div>' +\r\n          '<div class=\"inc-cart__items\">' +\r\n            cartState.items.map(function (it) { return renderItem(it, cartState); }).join('') +\r\n          '<\/div>' +\r\n          '<div class=\"inc-cart__note\">' +\r\n            '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 16v-4M12 8h.01\"\/><\/svg>' +\r\n            '<span>Cada curso es un <strong>acceso individual<\/strong>. Apenas confirm\u00e1s la compra, el contenido queda disponible en <strong>Mi cuenta<\/strong> para verlo cuando quieras.<\/span>' +\r\n          '<\/div>' +\r\n        '<\/div>' +\r\n        '<div>' + renderSummary(cartState) + '<\/div>' +\r\n      '<\/section>';\r\n\r\n    bindEvents();\r\n  }\r\n\r\n  \/* ===== Event bindings ===== *\/\r\n  function bindEvents() {\r\n    $$('[data-action=\"remove\"]').forEach(function (btn) {\r\n      btn.addEventListener('click', function () {\r\n        var key = btn.getAttribute('data-key');\r\n        var itemEl = btn.closest('.inc-cart__item');\r\n        if (itemEl) itemEl.classList.add('is-removing');\r\n        removeItem(key);\r\n      });\r\n    });\r\n  }\r\n\r\n  \/* ===== Escuchar cambios externos (header, add-to-cart en otra pesta\u00f1a) ===== *\/\r\n  if (window.jQuery) {\r\n    window.jQuery(document.body).on('added_to_cart removed_from_cart wc_fragments_refreshed', function () {\r\n      fetchCart().then(function (cart) { cartState = cart; renderAll(); }).catch(function () {});\r\n    });\r\n  }\r\n\r\n  \/* ===== Init ===== *\/\r\n  function init() {\r\n    fetchCart().then(function (cart) {\r\n      cartState = cart;\r\n      renderAll();\r\n    }).catch(function (e) {\r\n      if (window.console) console.error('[inc-cart]', e);\r\n      $('#inc-cart-body').innerHTML = renderError();\r\n    });\r\n  }\r\n\r\n  init();\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Inicio Cursos Tu carrito TU SELECCI\u00d3N TU CARRITO Carrito actualizado<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-12","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/incantomodelos.com\/cursos\/wp-json\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/incantomodelos.com\/cursos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/incantomodelos.com\/cursos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/incantomodelos.com\/cursos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/incantomodelos.com\/cursos\/wp-json\/wp\/v2\/comments?post=12"}],"version-history":[{"count":15,"href":"https:\/\/incantomodelos.com\/cursos\/wp-json\/wp\/v2\/pages\/12\/revisions"}],"predecessor-version":[{"id":197,"href":"https:\/\/incantomodelos.com\/cursos\/wp-json\/wp\/v2\/pages\/12\/revisions\/197"}],"wp:attachment":[{"href":"https:\/\/incantomodelos.com\/cursos\/wp-json\/wp\/v2\/media?parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}