1<!DOCTYPE html> 2<html lang="es" prefix="og: https://ogp.me/ns#"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <meta name="theme-color" content="#ffffff">
vendor: 66 bytes, lines 7-8
7 8 <script async src="https://www.googletagmanager.com/gtag/js?id=
8G-XXXXXXXXXX
vendor: 13 bytes, lines 8-9
8"></script> 9
9<script>
vendor: 118 bytes, line 9
9window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
9G-XXXXXXXXXX
vendor: 3 bytes, line 9
9');
9</script>
9 10
10<script> 11 (function(){ 12 try { 13 var q = window.location.search; 14 if (/[?&]guru-app=1(&|$)/.test(q)) { sessionStorage.setItem('guru_app_preview', '1'); } 15 else if (/[?&]guru-app=0(&|$)/.test(q)) { sessionStorage.removeItem('guru_app_preview'); } 16 } catch (e) {} 17 function isApp(){ 18 try { 19 if (window.navigator.standalone === true) { return true; } 20 if (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches) { return true; } 21 if (sessionStorage.getItem('guru_app_preview') === '1') { return true; } 22 } catch (e) {} 23 return false; 24 } 25 if (isApp()) { document.documentElement.classList.add('guru-app'); } 26 })(); 27 </script>
27 28 29<!-- Optimización en motores de búsqueda por Rank Math PRO - https://rankmath.com/ --> 30<title>Cómo jugar Blackjack en Ecuador: GuÃa paso a paso 2026.</title> 31<meta name="description" content="Ven y descubre como jugar al Blackjack en Ecuador: ¿Cómo ganar?, tipos de juego, estrategia básica, casinos legales para apostar."/> 32<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/> 33<link rel="canonical" href="https://apostar.com.ec/blackjack-online/" /> 34<meta property="og:locale" content="es_ES" /> 35<meta property="og:type" content="article" /> 36<meta property="og:title" content="Cómo jugar Blackjack en Ecuador: GuÃa paso a paso 2026." /> 37<meta property="og:description" content="Ven y descubre como jugar al Blackjack en Ecuador: ¿Cómo ganar?, tipos de juego, estrategia básica, casinos legales para apostar." /> 38<meta property="og:url" content="https://apostar.com.ec/blackjack-online/" /> 39<meta property="og:site_name" content="apostar.com.ec" /> 40<meta property="og:updated_time" content="2026-07-29T13:52:43-03:00" /> 41<meta property="og:image" content="https://apostar.com.ec/wp-content/uploads/2025/12/blackjack-online.jpg" /> 42<meta property="og:image:secure_url" content="https://apostar.com.ec/wp-content/uploads/2025/12/blackjack-online.jpg" /> 43<meta property="og:image:width" content="1024" /> 44<meta property="og:image:height" content="576" /> 45<meta property="og:image:alt" content="blackjack online" /> 46<meta property="og:image:type" content="image/jpeg" /> 47<meta property="article:published_time" content="2025-12-03T09:46:42-03:00" /> 48<meta property="article:modified_time" content="2026-07-29T13:52:43-03:00" /> 49<meta name="twitter:card" content="summary_large_image" /> 50<meta name="twitter:title" content="Cómo jugar Blackjack en Ecuador: GuÃa paso a paso 2026." /> 51<meta name="twitter:description" content="Ven y descubre como jugar al Blackjack en Ecuador: ¿Cómo ganar?, tipos de juego, estrategia básica, casinos legales para apostar." /> 52<meta name="twitter:image" content="https://apostar.com.ec/wp-content/uploads/2025/12/blackjack-online.jpg" /> 53<meta name="twitter:label1" content="Tiempo de lectura" /> 54<meta name="twitter:data1" content="16 minutos" />
55<script type="application/ld+json" class="rank-math-schema-pro">{"@context":"https://schema.org","@graph":[{"@type":["Person","Organization"],"@id":"https://apostar.com.ec/#person","name":"apostar.com.ec","logo":{"@type":"ImageObject","@id":"https://apostar.com.ec/#logo","url":"https://apostar.com.ec/wp-content/uploads/2022/06/logo_apostar-com-ec.svg","contentUrl":"https://apostar.com.ec/wp-content/uploads/2022/06/logo_apostar-com-ec.svg","caption":"apostar.com.ec","inLanguage":"es"},"image":{"@type":"ImageObject","@id":"https://apostar.com.ec/#logo","url":"https://apostar.com.ec/wp-content/uploads/2022/06/logo_apostar-com-ec.svg","contentUrl":"https://apostar.com.ec/wp-content/uploads/2022/06/logo_apostar-com-ec.svg","caption":"apostar.com.ec","inLanguage":"es"}},{"@type":"WebSite","@id":"https://apostar.com.ec/#website","url":"https://apostar.com.ec","name":"apostar.com.ec","publisher":{"@id":"https://apostar.com.ec/#person"},"inLanguage":"es"},{"@type":"ImageObject","@id":"https://apostar.com.ec/wp-content/uploads/2025/12/blackjack-online.jpg","url":"https://apostar.com.ec/wp-content/uploads/2025/12/blackjack-online.jpg","width":"1024","height":"576","caption":"blackjack online","inLanguage":"es"},{"@type":"WebPage","@id":"https://apostar.com.ec/blackjack-online/#webpage","url":"https://apostar.com.ec/blackjack-online/","name":"C\u00f3mo jugar Blackjack en Ecuador: Gu\u00eda paso a paso 2026.","datePublished":"2025-12-03T09:46:42-03:00","dateModified":"2026-07-29T13:52:43-03:00","isPartOf":{"@id":"https://apostar.com.ec/#website"},"primaryImageOfPage":{"@id":"https://apostar.com.ec/wp-content/uploads/2025/12/blackjack-online.jpg"},"inLanguage":"es"},{"@type":"Person","@id":"https://apostar.com.ec/blackjack-online/#author","name":"Byron Caicedo","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/e2944fdfefaea8b8bb0e6961b6e38635d91646d48a96797c34968085acedc390?s=96&d=mm&r=g","url":"https://secure.gravatar.com/avatar/e2944fdfefaea8b8bb0e6961b6e38635d91646d48a96797c34968085acedc390?s=96&d=mm&r=g","caption":"Byron Caicedo","inLanguage":"es"},"sameAs":["https://www.linkedin.com/in/byron-caicedo-861b98412/"]},{"@type":"Article","headline":"C\u00f3mo jugar Blackjack en Ecuador: Gu\u00eda paso a paso 2026.","keywords":"blackjack","datePublished":"2025-12-03T09:46:42-03:00","dateModified":"2026-07-29T13:52:43-03:00","author":{"@id":"https://apostar.com.ec/blackjack-online/#author","name":"Byron Caicedo"},"publisher":{"@id":"https://apostar.com.ec/#person"},"description":"Ven y descubre como jugar al Blackjack en Ecuador: \u00bfC\u00f3mo ganar?, tipos de juego, estrategia b\u00e1sica, casinos legales para apostar.","name":"C\u00f3mo jugar Blackjack en Ecuador: Gu\u00eda paso a paso 2026.","@id":"https://apostar.com.ec/blackjack-online/#richSnippet","isPartOf":{"@id":"https://apostar.com.ec/blackjack-online/#webpage"},"image":{"@id":"https://apostar.com.ec/wp-content/uploads/2025/12/blackjack-online.jpg"},"inLanguage":"es","mainEntityOfPage":{"@id":"https://apostar.com.ec/blackjack-online/#webpage"}}]}</script>
55 56<!-- /Plugin Rank Math WordPress SEO --> 57 58<link rel='dns-prefetch' href='//www.googletagmanager.com' /> 59<link href='https://www.googletagmanager.com' crossorigin rel='preconnect' /> 60<style id="guru-critical-css">/* Guru Critical CSS â Inlined in <head> for instant first paint */ 61 62/* CSS Custom Properties â Light theme (default) */ 63:root{--bg-body:#ffffff;--bg-section:#f7f8fa;--bg-section-alt:#eef1f7;--bg-card:#ffffff;--bg-input:#ffffff;--bg-subtle:rgba(0,0,0,.05);--text-heading:#111827;--text-body:#374151;--text-muted:#6b7280;--text-light:#9ca3af;--border:rgba(0,0,0,.08);--border-strong:rgba(0,0,0,.12);--shadow-sm:0 1px 3px rgba(0,0,0,.05);--shadow-md:0 4px 12px rgba(0,0,0,.08);--shadow-lg:0 8px 30px rgba(0,0,0,.1);--accent:#b8860b;--accent-light:#d4a843;--accent-lighter:#f0c95a;--accent-dark:#b8922e;--accent-rgb:184,134,11;--accent-light-rgb:212,168,67;--accent-glow:rgba(var(--accent-rgb),.3);--accent-bg:rgba(var(--accent-rgb),.06);--accent-bg-light:rgba(var(--accent-rgb),.03);--secondary:#785707;--secondary-light:#9c7209;--secondary-rgb:120,87,7;--secondary-bg:rgba(var(--secondary-rgb),.12);--gold:var(--accent);--gold-light:var(--accent-light);--gold-glow:var(--accent-glow);--gold-bg:var(--accent-bg);--gold-bg-light:var(--accent-bg-light);--header-bg:rgba(255,255,255,.98);--footer-bg:#2f343b;--footer-text:#ffffff;--footer-muted:rgba(255,255,255,.72);--footer-border:rgba(255,255,255,.12)} 64 65/* Reset & Base */ 66*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} 67html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:hidden;overflow-x:clip} 68/* El overflow-x va solo en el html: alcanza para que la página no scrollee de 69 costado, y en el body rompÃa el position:fixed en Safari de iOS â las 70 barras pegadas abajo se despegaban y flotaban con el scroll. */ 71body{font-family:'Inter',system-ui,-apple-system,sans-serif;background:var(--bg-body);color:var(--text-body);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} 72img,video,svg{max-width:100%;height:auto;display:block} 73iframe,embed,object{max-width:100%;display:block} 74iframe[src*="youtube.com"],iframe[src*="youtube-nocookie.com"],iframe[src*="vimeo.com"]{width:100%;height:auto;aspect-ratio:16/9} 75a{color:var(--gold);text-decoration:none;transition:color .2s ease} 76a:hover,a:focus{color:var(--gold-light)} 77h1,h2,h3,h4,h5,h6{font-family:'Playfair Display',Georgia,serif;color:var(--text-heading);line-height:1.2;font-weight:600} 78h1{font-size:clamp(1.6rem,3.8vw,2.75rem)} 79h2{font-size:clamp(1.5rem,3.5vw,2.5rem)} 80h3{font-size:clamp(1.2rem,2.5vw,1.75rem)} 81p{margin-bottom:1rem} 82ul,ol{list-style:none} 83button,input,select,textarea{font:inherit;color:inherit} 84 85/* Screen reader */ 86.screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0} 87.screen-reader-text:focus{position:fixed;top:5px;left:5px;z-index:100000;width:auto;height:auto;padding:15px 23px;clip:auto;background:var(--gold);color:#fff;font-size:1rem;font-weight:700} 88 89/* Skip link */ 90.skip-link:focus{position:fixed;top:5px;left:5px;z-index:100000;padding:15px 23px;background:var(--gold);color:#fff;font-size:1rem;font-weight:700;clip:auto;width:auto;height:auto} 91 92/* Layout */ 93.container{max-width:1200px;margin:0 auto;padding:0 1rem} 94.container--narrow{max-width:800px} 95 96/* ======================================== 97 HEADER 98 ======================================== */ 99.site-header{position:sticky;top:0;z-index:1000;transition:transform .3s ease;box-shadow:var(--shadow-sm)} 100 101/* --- Top bar --- */ 102.header-top{background:var(--header-top-bg,#ffffff);color:var(--header-top-text,#1a1a2e);border-bottom:1px solid var(--header-top-border,#e0e0e0)} 103.header-top__inner{display:flex;align-items:center;justify-content:space-between;padding-top:1rem;padding-bottom:1rem;gap:1rem} 104.header-top__left,.header-top__right{flex:1;display:flex;align-items:center} 105.header-top__left{justify-content:flex-start} 106.header-top__right{justify-content:flex-end} 107 108/* Branding â centered in top bar */ 109.site-branding{flex-shrink:0;display:flex;align-items:center;justify-content:center} 110.site-branding a{display:flex;align-items:center;justify-content:center;text-decoration:none} 111.site-branding img,.site-branding .custom-logo{width:250px;max-height:80px;height:auto;object-fit:contain} 112.site-title{font-family:'Playfair Display',Georgia,serif;font-size:1.75rem;font-weight:700;color:var(--gold);letter-spacing:.02em;transition:color .2s ease} 113.site-title:hover{color:var(--gold-light)} 114 115/* Header CTA (in top bar) */ 116.header-cta{flex-shrink:0} 117/* Botón sol/luna: solo existe si algún contexto está en "auto", y se ve solo cuando lo está el de esta visita (html.guru-dark-auto, lo pone inc/dark-mode.php). */ 118.guru-theme-toggle{display:none;flex-shrink:0;align-items:center;justify-content:center;width:40px;height:40px;margin-right:.5rem;padding:0;border:1px solid var(--header-top-border,#e0e0e0);border-radius:50%;background:transparent;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .2s ease} 119html.guru-dark-auto .guru-theme-toggle{display:inline-flex} 120.guru-theme-toggle:hover{background:rgba(127,127,127,.12)} 121.guru-theme-toggle:focus-visible{outline:3px solid var(--accent,#b8860b);outline-offset:2px} 122.guru-theme-toggle svg{width:20px;height:20px} 123.guru-theme-toggle__sun,html.guru-dark .guru-theme-toggle__moon{display:none} 124html.guru-dark .guru-theme-toggle__sun{display:block} 125@media(max-width:480px){.guru-theme-toggle{width:36px;height:36px;margin-right:.35rem}.guru-theme-toggle svg{width:18px;height:18px}} 126.btn--header-cta{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.25rem;background:var(--btn-bg,linear-gradient(135deg,var(--accent),var(--accent-light)));color:var(--btn-text,#fff);font-size:.85rem;font-weight:600;border-radius:8px;border:none;cursor:pointer;transition:background .2s ease,transform .2s ease,box-shadow .2s ease;white-space:nowrap;box-shadow:0 2px 8px rgba(var(--accent-rgb),.25)} 127.btn--header-cta:hover{background:linear-gradient(135deg,var(--accent-light),var(--accent-lighter));color:var(--btn-text,#fff);transform:translateY(-1px);box-shadow:0 4px 16px rgba(var(--accent-rgb),.35)} 128.btn--header-cta svg{flex-shrink:0} 129 130/* --- Nav bar (below top bar) --- */ 131.header-nav{background:var(--header-nav-bg,var(--bg-section));border-bottom:1px solid var(--border)} 132.header-nav__inner{display:flex;align-items:center;justify-content:center;height:48px} 133 134/* Main Navigation */
135.main-navigation{display:flex;justify-content:center} 136.main-navigation .nav-menu{display:flex;gap:.25rem;align-items:center;margin:0;padding:0} 137.main-navigation .nav-menu>li{position:relative} 138.main-navigation .nav-menu>li>a{display:flex;align-items:center;gap:.3rem;color:var(--header-nav-text,var(--text-body));font-size:.9rem;font-weight:500;padding:.5rem .85rem;border-radius:8px;position:relative;transition:color .2s ease,background .2s ease} 139.main-navigation .nav-menu>li>a:hover,.main-navigation .nav-menu>li>a:focus,.main-navigation .nav-menu>li.current-menu-item>a{background:transparent;font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px} 140.main-navigation .nav-menu>li.current-menu-item>a::after{content:none} 141 142/* Dropdown indicator for parent items */ 143.main-navigation .nav-menu>li.menu-item-has-children>a::after{content:'';display:inline-block;width:14px;height:14px;margin-left:.15rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:14px;transition:transform .25s ease;flex-shrink:0;position:static} 144.main-navigation .submenu-toggle{display:none} 145.main-navigation .nav-menu>li.menu-item-has-children:hover>a::after,.main-navigation .nav-menu>li.menu-item-has-children.is-open>a::after{transform:rotate(180deg)} 146.main-navigation .nav-menu>li.current-menu-item.menu-item-has-children>a::after{bottom:auto} 147 148/* Dropdown submenu */ 149.main-navigation .sub-menu{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(4px);min-width:220px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:.5rem;box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transition:opacity .2s ease,transform .2s ease,visibility .2s;z-index:1001;list-style:none} 150.main-navigation .sub-menu::before{content:'';position:absolute;top:-8px;left:50%;transform:translateX(-50%);width:16px;height:8px;background:var(--bg-card);clip-path:polygon(50% 0%,0% 100%,100% 100%)} 151.main-navigation .nav-menu>li:hover>.sub-menu,.main-navigation .nav-menu>li.is-open>.sub-menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)} 152.main-navigation .sub-menu li{margin:0} 153.main-navigation .sub-menu li a{display:block;padding:.6rem .85rem;color:var(--text-body);font-size:.88rem;font-weight:400;border-radius:8px;transition:color .15s ease,background .15s ease} 154.main-navigation .sub-menu li a:hover{color:var(--gold);background:var(--gold-bg)} 155.main-navigation .sub-menu li.current-menu-item a{color:var(--gold);font-weight:500} 156 157/* Mobile menu toggle */ 158.menu-toggle,.nav-close-btn{display:none;background:none;border:none;cursor:pointer;padding:.5rem;width:44px;height:44px;position:relative;border-radius:8px;transition:background .2s ease} 159.menu-toggle:hover{background:var(--bg-subtle)} 160.hamburger,.hamburger::before,.hamburger::after{display:block;width:22px;height:2px;background:var(--text-body);transition:transform .3s ease,background .3s ease;position:absolute;left:11px} 161.hamburger{top:50%;transform:translateY(-50%)} 162.hamburger::before{content:'';top:-7px} 163.hamburger::after{content:'';top:7px} 164.menu-toggle[aria-expanded="true"] .hamburger{background:transparent} 165.menu-toggle[aria-expanded="true"] .hamburger::before{top:0;transform:rotate(45deg)} 166.menu-toggle[aria-expanded="true"] .hamburger::after{top:0;transform:rotate(-45deg)} 167 168/* Hero */ 169.hero{position:relative;min-height:80vh;display:flex;align-items:center;overflow:hidden;background:linear-gradient(135deg,var(--bg-section) 0%,var(--bg-section-alt) 50%,var(--bg-section) 100%)} 170.hero__bg{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 50%,var(--gold-bg) 0%,transparent 70%);pointer-events:none} 171.hero__inner{position:relative;text-align:center;padding:4rem 0} 172.hero__title{margin-bottom:1rem;background:linear-gradient(135deg,var(--accent),var(--accent-light),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text} 173.hero__subtitle{font-size:clamp(1rem,2vw,1.25rem);color:var(--text-muted);max-width:600px;margin:0 auto 2rem} 174 175/* Buttons */ 176.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border-radius:8px;font-weight:600;font-size:.95rem;cursor:pointer;border:none;transition:background .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease;text-align:center;line-height:1.4} 177.btn--primary{background:var(--btn-bg,linear-gradient(135deg,var(--accent-light),var(--accent-dark)));color:var(--btn-text,#fff)} 178.btn--primary:hover{background:linear-gradient(135deg,var(--accent-lighter),var(--accent-light));color:var(--btn-text,#fff);transform:translateY(-1px);box-shadow:0 4px 20px rgba(var(--accent-rgb),.3)} 179.btn--gold{background:var(--btn-bg,linear-gradient(135deg,var(--accent-light),var(--accent-dark)));color:var(--btn-text,#fff);font-size:1.1rem} 180.btn--gold:hover{background:linear-gradient(135deg,var(--accent-lighter),var(--accent-light));color:var(--btn-text,#fff);transform:translateY(-1px);box-shadow:0 4px 24px rgba(var(--accent-rgb),.3)} 181.btn--outline{border:2px solid var(--gold);color:var(--gold);background:transparent} 182.btn--outline:hover{background:var(--gold);color:var(--btn-text,#fff)} 183.btn--lg{padding:1rem 2rem;font-size:1.1rem} 184 185/* ======================================== 186 CONTENT WITH TOC SIDEBAR 187 ======================================== */
188.content-with-toc{display:flex;flex-wrap:nowrap;gap:2rem;align-items:flex-start} 189/* En mobile este flex es column, y ahà `align-items:flex-start` hace que los 190 hijos se midan por su contenido en vez de estirarse al ancho del contenedor: 191 una tabla ancha estiraba .archive-main a 624px dentro de un viewport de 390 y 192 la página scrolleaba de costado. `min-width:0` no alcanza â en un flex column 193 el eje principal es la altura, asà que no toca el ancho. */ 194.content-with-toc>*{min-width:0;max-width:100%} 195.content-with-toc--archive{padding:2.5rem 0} 196.content-with-toc--archive>.archive-main{flex:1 1 0%;min-width:0;order:1} 197.content-with-toc--archive>.toc-sidebar{order:2;width:300px;max-width:300px} 198.archive-intro{margin-bottom:1.5rem;line-height:1.8;font-size:1.05rem} 199.archive-intro p:last-child{margin-bottom:0} 200.entry-content{flex:1;min-width:0;max-width:100%;overflow-x:hidden} 201.toc-sidebar{width:260px;max-width:260px;flex-shrink:0;align-self:stretch;display:flex;flex-direction:column;gap:1rem} 202.page-sidebar{width:300px} 203.toc{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1.25rem} 204.toc__title{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 .75rem} 205.toc__list{list-style:none;margin:0;padding:0} 206.toc__list li{margin:0} 207.toc__list li a{display:block;padding:.35rem .75rem;font-size:.88rem;color:var(--text-body);text-decoration:none;border-left:2px solid transparent;transition:color .2s,border-color .2s} 208.toc__list li a:hover{color:var(--gold);border-left-color:var(--gold)} 209 210/* Casa destacada compacta del menú mobile: oculta por defecto (desktop). 211 Vive en critical.css âinline y fresco por deployâ para que NUNCA se cuele 212 en desktop aunque main.css quede cacheado por el minificador. */ 213.guru-menu-casa{display:none} 214 215/* ======================================== 216 MOBILE (<769px) 217 ======================================== */ 218@media(max-width:768px){ 219/* TOC mobile */ 220.content-with-toc{flex-direction:column} 221.toc-sidebar{width:100%} 222/* Top bar mobile */ 223.header-top__inner{padding:.4rem 1.25rem} 224.header-top__left{flex:0 0 auto} 225.site-branding{flex:1 1 0%;justify-content:flex-start;margin-left:.5rem} 226.site-branding img,.site-branding .custom-logo{width:180px;max-height:56px} 227.header-top__right{flex:0 0 auto} 228.btn--header-cta{padding:.45rem .9rem;font-size:.8rem} 229.btn--header-cta svg{display:none} 230/* Mobile nav close button */ 231.nav-close-btn{display:flex;position:absolute;top:1rem;right:1.5rem;width:44px;height:44px;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;z-index:1000;color:var(--text-heading);border-radius:8px} 232.nav-close-btn:hover{background:var(--bg-subtle)} 233.nav-close-btn svg{width:24px;height:24px} 234 235/* Nav bar mobile â collapse the desktop nav row to zero height (hamburger moved to header-top__left), but keep .main-navigation rendered inside so its fixed overlay still toggles. */ 236.header-nav{height:0;padding:0;border:0;background:none;overflow:visible} 237.header-nav__inner{height:0;min-height:0;padding:0} 238.header-top__left .menu-toggle{display:flex;align-items:center;justify-content:center;margin-right:.25rem} 239.menu-toggle{display:block} 240 241/* Mobile nav overlay */ 242.main-navigation{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg-body);transform:translateX(100%);transition:transform .35s cubic-bezier(.4,0,.2,1);z-index:999;padding:5rem 1.5rem calc(2rem + var(--guru-bottom-inset,0px));overflow-y:auto;-webkit-overflow-scrolling:touch} 243/* El blur va solo con el panel abierto. Cerrado el panel sigue en el DOM, y un 244 backdrop-filter vivo permanente manda a WebKit al camino lento de scroll: 245 con eso, todos los position:fixed de la página viajan con el scroll. */ 246.main-navigation.is-active{transform:translateX(0);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)} 247.main-navigation .nav-menu{flex-direction:column;gap:0;align-items:stretch} 248.main-navigation .nav-menu>li{display:flex;flex-wrap:wrap;align-items:center;border-bottom:1px solid var(--border)} 249.main-navigation .nav-menu>li>a{flex:1 1 0%;min-width:0;display:flex;justify-content:flex-start;align-items:center;padding:1rem 0;font-size:1.15rem;font-weight:500;border-bottom:none;border-radius:0;color:var(--text-heading)} 250.main-navigation .nav-menu>li>a:hover{background:none;font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px} 251.main-navigation .nav-menu>li.menu-item-has-children>a::after{display:none} 252.main-navigation .submenu-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;background:none;border:none;cursor:pointer;color:var(--text-muted);transition:color .2s ease,background .2s ease;border-radius:8px} 253.main-navigation .submenu-toggle:hover,.main-navigation .submenu-toggle:focus{color:var(--gold);background:var(--gold-bg)} 254.main-navigation .submenu-toggle svg{transition:transform .25s ease} 255.main-navigation .nav-menu>li.is-open>.submenu-toggle svg{transform:rotate(180deg)} 256.main-navigation .nav-menu>li>.sub-menu{flex-basis:100%;order:99} 257.main-navigation .nav-menu>li.current-menu-item>a{font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px} 258.main-navigation .nav-menu>li.current-menu-item>a::after{display:none} 259 260/* Mobile dropdown chevron */ 261.main-navigation .nav-menu>li.menu-item-has-children>a::after{position:static;margin-left:auto;transition:transform .3s ease} 262.main-navigation .nav-menu>li.menu-item-has-children.is-open>a::after{transform:rotate(180deg)} 263 264/* Mobile submenu */ 265.main-navigation .sub-menu{position:static;transform:none;min-width:0;background:transparent;border:none;border-radius:0;padding:0;box-shadow:none;opacity:1;visibility:visible;max-height:0;overflow:hidden;transition:max-height .35s cubic-bezier(.4,0,.2,1)} 266.main-navigation .sub-menu::before{display:none} 267.main-navigation .nav-menu>li.is-open>.sub-menu{max-height:min(500px,calc(100vh - 200px));transform:none} 268.main-navigation .sub-menu li a{padding:.75rem 0 .75rem 1.25rem;font-size:1rem;border-bottom:1px solid var(--border);border-radius:0;color:var(--text-muted)} 269.main-navigation .sub-menu li a:hover{background:none;color:var(--gold)} 270.main-navigation .sub-menu li:last-child a{border-bottom:none} 271 272/* Casa destacada compacta anclada al fondo del drawer. El drawer pasa a
273 columna (manteniendo el menú centrado arriba) y la barra usa margin-top:auto 274 para quedar abajo. */ 275.main-navigation{flex-direction:column;align-items:center;justify-content:flex-start} 276.guru-menu-casa{display:flex;flex-direction:column;gap:.5rem;margin-top:auto;width:100%;padding:.75rem .85rem;background:var(--bg-section-alt);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm)} 277.guru-menu-casa__label{font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);text-align:center} 278.guru-menu-casa__row{display:flex;align-items:center;gap:.6rem} 279.guru-menu-casa__logo{flex:0 0 auto;width:60px;height:34px;display:flex;align-items:center;justify-content:center} 280.guru-menu-casa__logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain} 281.guru-menu-casa__logo-fallback{font-weight:700;color:var(--text-heading);font-size:.9rem} 282.guru-menu-casa__bono{display:flex;flex-direction:column;line-height:1.1;min-width:0;flex:1 1 auto} 283.guru-menu-casa__bono-label{font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)} 284.guru-menu-casa__bono-value{font-family:'Playfair Display',Georgia,serif;font-weight:700;font-size:1.15rem;color:var(--text-heading);line-height:1} 285.guru-menu-casa__cta{flex:0 0 auto;padding:.55rem 1rem;border-radius:8px;background:var(--accent);color:#fff;font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;text-decoration:none;white-space:nowrap} 286 287.hero{min-height:60vh} 288.hero__inner{padding:2.5rem 0} 289.container{padding:0 1rem} 290} 291 292@media(max-width:480px){ 293.site-branding img,.site-branding .custom-logo{width:140px;max-height:46px} 294.btn--header-cta{padding:.4rem .85rem;font-size:.75rem} 295.header-top__inner{padding:.3rem 1rem} 296.hero{min-height:50vh} 297.hero__inner{padding:2rem 0} 298.hero__subtitle{font-size:.9rem} 299} 300</style> 301<link rel="manifest" href="https://apostar.com.ec/?guru_manifest=1"> 302<style id="guru-color-override">:root{--accent:#b91c1c;--accent-light:#ef4444;--accent-lighter:#f87171;--accent-dark:#991b1b;--accent-rgb:185,28,28;--accent-light-rgb:239,68,68;--secondary:#fca5a5;--secondary-light:#fecaca;--secondary-rgb:252,165,165}</style> 303<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://apostar.com.ec/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fapostar.com.ec%2Fblackjack-online%2F" /> 304<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://apostar.com.ec/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fapostar.com.ec%2Fblackjack-online%2F&format=xml" /> 305<style id="guru-footer-color-override">:root{--footer-accent:#113caa;--footer-accent-rgb:17,60,170;--footer-accent-light:#4d6dbf}</style>
306<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https://apostar.com.ec/"},{"@type":"ListItem","position":2,"name":"Blackjack online: GuÃa completa para jugar en Ecuador","item":"https://apostar.com.ec/blackjack-online/"}]}</script>
306 307<style id="wp-img-auto-sizes-contain-inline-css"> 308img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 309/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 310</style> 311<style id="wp-block-library-inline-css"> 312:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
312--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 313 314/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 315</style> 316<style id="classic-theme-styles-inline-css"> 317/*! This file is auto-generated */ 318.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 319/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 320</style> 321 322<style id="global-styles-inline-css"> 323:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
3230) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
323.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 324/*# sourceURL=global-styles-inline-css */ 325</style> 326 327<link rel="stylesheet" id="guru-style-css" href="https://apostar.com.ec/wp-content/themes/repo-igl-main/assets/css/main.css" media="print" onload="this.media='all'" /><noscript><link rel="stylesheet" href="https://apostar.com.ec/wp-content/themes/repo-igl-main/assets/css/main.css" /></noscript><style id="guru-style-inline-css"> 328/* Guru Forecast Banner â banner inline antes del Nth H2 con próximo partido. 329 Adaptación de las tarjetas del header banner (guru-fhb) para el contenido: 330 tarjeta blanca con acento verde arriba, badge de campeonato, escudos 331 circulares + nombres, VS, cuotas 1/2 y CTA rojo. */ 332.guru-fb{ 333 margin:2rem 0; 334 border-radius:16px; 335 background:#fff; 336 border:1px solid rgba(0,0,0,.08); 337 box-shadow:0 8px 26px rgba(0,0,0,.10); 338 overflow:hidden; 339 position:relative; 340 isolation:isolate; 341} 342.guru-fb::before{ 343 content:""; 344 position:absolute; 345 top:0;left:0;right:0; 346 height:4px; 347 background:linear-gradient(90deg,#2c9a42,#1c7a31 55%,#155f27); 348 z-index:1; 349} 350.guru-fb__inner{ 351 position:relative; 352 z-index:1; 353 display:flex; 354 flex-direction:column; 355 align-items:center; 356 gap:.7rem; 357 padding:1.2rem 1rem 1.2rem; 358 text-align:center; 359 box-sizing:border-box; 360 max-width:100%; 361} 362/* Cocarda del campeonato dentro del banner (flujo normal, centrada). */ 363.guru-fb__badge{ 364 display:inline-block; 365 padding:.24rem .85rem; 366 border-radius:999px; 367 background:linear-gradient(180deg,#f5c542,#e0a92a); 368 color:#3a2a05; 369 font-weight:800; 370 font-size:.72rem; 371 text-transform:uppercase; 372 letter-spacing:.06em; 373 box-shadow:0 2px 6px rgba(0,0,0,.12); 374 white-space:nowrap; 375} 376.guru-fb__match{ 377 display:grid; 378 grid-template-columns:1fr auto 1fr; 379 /* align-items:end â todas las columnas apoyan abajo, asà las cuotas 1/EMPATE/2 380 (último elemento de cada columna) quedan alineadas horizontalmente entre sÃ. */ 381 align-items:end; 382 justify-content:center; 383 gap:.4rem .6rem; 384 width:100%; 385 max-width:560px; 386} 387.guru-fb__center{ 388 display:flex; 389 flex-direction:column; 390 align-items:center; 391 gap:.35rem; 392 grid-column:2; 393} 394.guru-fb__side{ 395 display:flex; 396 flex-direction:column; 397 align-items:center; 398 gap:.5rem; 399 min-width:0; 400} 401.guru-fb__side--local{grid-column:1} 402.guru-fb__side--visit{grid-column:3} 403/* La cuota se separa apenas del nombre del equipo / VS. */ 404.guru-fb__odd{margin-top:.15rem} 405.guru-fb__shield{ 406 display:inline-flex; 407 align-items:center; 408 justify-content:center; 409 width:62px; 410 height:62px; 411 border-radius:50%; 412 background:#eef1f4; 413 overflow:hidden; 414 flex:0 0 auto; 415 box-shadow:0 2px 6px rgba(0,0,0,.1); 416} 417.guru-fb__shield img{width:100%;height:100%;object-fit:cover} 418.guru-fb__shield svg{width:64%;height:64%;object-fit:contain;color:#1c7a31} 419.guru-fb__team{ 420 font-weight:800; 421 font-size:.9rem; 422 color:#14301b; 423 text-transform:uppercase; 424 letter-spacing:.01em; 425 line-height:1.2; 426 overflow-wrap:anywhere; 427} 428.guru-fb__vs{ 429 font-weight:900; 430 font-size:1.05rem; 431 color:#9aa4ad; 432 letter-spacing:.03em; 433} 434.guru-fb__odd{ 435 display:inline-flex; 436 flex-direction:column; 437 align-items:center; 438 justify-content:center; 439 gap:.06rem; 440 min-width:48px; 441 padding:.32rem .45rem; 442 border:1px solid #dfe3e8; 443 border-radius:9px; 444 background:#f7f9fb; 445 line-height:1.05; 446 transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease; 447} 448.guru-fb__odd:hover{ 449 border-color:#2c9a42; 450 background:#fff; 451 box-shadow:0 5px 14px rgba(44,154,66,.22); 452 transform:translateY(-2px); 453} 454.guru-fb__odd:hover .guru-fb__odd-key{color:#2c9a42} 455/* Las cuotas son links (mismo destino que el botón). */ 456a.guru-fb__odd{text-decoration:none;cursor:pointer} 457a.guru-fb__odd:hover,a.guru-fb__odd:focus,a.guru-fb__odd:visited{text-decoration:none} 458a.guru-fb__odd:focus-visible{outline:2px solid #2c9a42;outline-offset:2px} 459.guru-fb__odd-key{font-size:.6rem;font-weight:800;color:#8a929e;text-transform:uppercase;letter-spacing:.02em} 460.guru-fb__odd-val{font-size:.92rem;font-weight:800;color:#14301b;font-variant-numeric:tabular-nums;white-space:nowrap} 461/* Texto customizable: va arriba (debajo del campeonato, antes de los equipos) 462 como frase de gancho. Más grande y con los nombres/campeonato en verde de 463 acento para que resalte. */ 464.guru-fb__headline{ 465 margin:.1rem 0 .1rem; 466 font-size:1.32rem; 467 font-weight:700; 468 line-height:1.32;
469 color:#14301b; 470 max-width:520px; 471 letter-spacing:-.01em; 472 overflow-wrap:break-word; 473 word-wrap:break-word; 474} 475.guru-fb__headline strong{font-weight:800;color:#1c7a31} 476.guru-fb__cta-wrap{ 477 display:flex; 478 justify-content:center; 479 width:100%; 480 margin-top:.1rem; 481} 482.guru-fb__cta-wrap > p{margin:0} 483.guru-fb__cta, 484.guru-fb a.guru-fb__cta{ 485 display:inline-block; 486 padding:.72rem 2.1rem; 487 border-radius:999px; 488 background:#e11d2f; 489 color:#fff; 490 border:0; 491 font-weight:800; 492 font-size:1rem; 493 letter-spacing:.03em; 494 text-transform:uppercase; 495 text-decoration:none; 496 box-shadow:0 4px 14px rgba(225,29,47,.35); 497 transition:transform .18s ease,box-shadow .18s ease,background .18s ease; 498} 499.guru-fb__cta:visited, 500.guru-fb a.guru-fb__cta:visited{color:#fff} 501.guru-fb__cta:hover, 502.guru-fb__cta:focus-visible, 503.guru-fb a.guru-fb__cta:hover, 504.guru-fb a.guru-fb__cta:focus, 505.guru-fb a.guru-fb__cta:focus-visible{ 506 background:#c81628; 507 color:#fff; 508 text-decoration:none; 509 transform:scale(1.06); 510 box-shadow:0 9px 24px rgba(225,29,47,.45); 511 outline:none; 512} 513 514/* Escudos como marca de agua en los laterales de la tarjeta: grandes, en color, 515 centrados verticalmente y cortados por el borde (se ve solo la mitad de cada
516 uno). z-index:0 los deja detrás del contenido (.guru-fb__inner va en z-index:1) 517 y el overflow:hidden de la tarjeta recorta la mitad de afuera. */ 518.guru-fb__wm{ 519 position:absolute; 520 top:50%; 521 width:320px; 522 height:320px; 523 opacity:.09; 524 filter:blur(1.5px); 525 pointer-events:none; 526 z-index:0; 527} 528.guru-fb__wm--local{left:0;transform:translate(-50%,-50%)} 529.guru-fb__wm--visit{right:0;transform:translate(50%,-50%)} 530.guru-fb__wm img,.guru-fb__wm svg{width:100%;height:100%;object-fit:contain} 531 532@media (max-width:540px){ 533 .guru-fb{border-radius:12px} 534 .guru-fb__wm{width:230px;height:230px} 535 .guru-fb__inner{padding:1.05rem .55rem 1.05rem;gap:.6rem} 536 .guru-fb__shield{width:46px;height:46px} 537 .guru-fb__team{font-size:.64rem;overflow-wrap:break-word} 538 .guru-fb__match{max-width:100%;gap:.3rem .3rem} 539 .guru-fb__odd{min-width:38px;padding:.26rem .28rem} 540 .guru-fb__odd-val{font-size:.82rem} 541 .guru-fb__odd-key{font-size:.55rem} 542 .guru-fb__cta{padding:.65rem 1.7rem;font-size:.95rem} 543 .guru-fb__headline{font-size:1.1rem} 544} 545@media (prefers-reduced-motion:reduce){ 546 .guru-fb__cta,.guru-fb a.guru-fb__cta,.guru-fb__odd{transition:none} 547 .guru-fb__odd:hover{transform:none} 548} 549 550/* Guru â Modal "Casa sin link" */ 551.guru-nolink-modal,.guru-nolink-modal *{box-sizing:border-box} 552.guru-nolink-modal[hidden]{display:none} 553/* El lock va también en <html>: ver la nota en guru-popup-modal.css. */ 554html.guru-nolink-open,body.guru-nolink-open{overflow:hidden;overscroll-behavior:contain;scroll-behavior:auto} 555.guru-nolink-modal,.guru-nolink-modal__dialog{overscroll-behavior:contain} 556.guru-nolink-modal{position:fixed;inset:0;z-index:99990;display:flex;align-items:flex-end;justify-content:center} 557.guru-nolink-modal__overlay{position:absolute;inset:0;background:rgba(17,24,39,.62);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)} 558.guru-nolink-modal__dialog{position:relative;z-index:1;width:100%;max-width:460px;background:var(--bg-card,#fff);color:var(--text-body,#374151);border-radius:20px 20px 0 0;padding:1.5rem 1.25rem calc(1.35rem + env(safe-area-inset-bottom,0px));box-shadow:0 -12px 48px rgba(0,0,0,.3);max-height:90vh;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;animation:guru-nolink-up .28s cubic-bezier(.22,1,.36,1)} 559@keyframes guru-nolink-up{from{transform:translateY(100%)}to{transform:translateY(0)}} 560.guru-nolink-modal__close{position:absolute;top:.6rem;right:.7rem;width:2.1rem;height:2.1rem;display:flex;align-items:center;justify-content:center;border:0;background:var(--bg-subtle,rgba(0,0,0,.05));font-size:1.4rem;line-height:1;color:var(--text-muted,#6b7280);cursor:pointer;border-radius:50%;transition:background .15s,color .15s} 561.guru-nolink-modal__close:hover{background:var(--border-strong,rgba(0,0,0,.12));color:var(--text-heading,#111827)} 562.guru-nolink-modal__title{margin:.15rem 2rem 1.25rem 0;font-size:1.02rem;font-weight:500;line-height:1.5;color:var(--text-heading,#111827);letter-spacing:-.01em} 563.guru-nolink-modal__domain{font-weight:800;color:var(--accent,#b8860b);white-space:nowrap} 564.guru-nolink-modal__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem} 565.guru-nolink-modal__item{display:flex;align-items:center;gap:.8rem;min-width:0;padding:.5rem .55rem .5rem .7rem;border:1px solid var(--border,rgba(0,0,0,.08));border-radius:14px;background:var(--bg-section,#f7f8fa);transition:border-color .15s,box-shadow .15s} 566.guru-nolink-modal__item:hover{border-color:var(--accent,#b8860b);box-shadow:var(--shadow-sm,0 1px 3px rgba(0,0,0,.06))} 567.guru-nolink-modal__rank{flex:0 0 auto;font-weight:800;font-size:.78rem;color:var(--text-light,#9ca3af)} 568.guru-nolink-modal__logo{flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:flex-start;text-decoration:none;overflow:hidden} 569.guru-nolink-modal__logo img{max-width:100%;max-height:32px;width:auto;height:auto;object-fit:contain;display:block} 570.guru-nolink-modal__logo-fallback{display:inline-flex;align-items:center;justify-content:center;padding:.3rem .55rem;background:#222;color:#fff;border-radius:7px;font-weight:700;text-transform:uppercase;font-size:.78rem} 571.guru-nolink-modal__cta{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;padding:.5rem .95rem;min-height:38px;background:var(--gold,#b8860b);color:#fff;font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;text-decoration:none;border-radius:9px;white-space:nowrap;transition:filter .15s,transform .15s} 572.guru-nolink-modal__cta:hover{filter:brightness(1.08);transform:translateY(-1px)} 573.guru-nolink-modal__cta:active{transform:translateY(0)} 574.guru-nolink-modal__redirect{margin:0 0 1.1rem;padding:.85rem .9rem;border:1px solid var(--border,rgba(0,0,0,.08));border-radius:12px;background:var(--bg-section,#f7f8fa)} 575.guru-nolink-modal__redirect-text{margin:0 0 .55rem;font-size:.84rem;line-height:1.4;text-align:center;color:var(--text-muted,#6b7280)} 576.guru-nolink-modal__count{font-weight:800;color:var(--accent,#b8860b)} 577.guru-nolink-modal__bar{height:6px;border-radius:99px;background:var(--bg-subtle,rgba(0,0,0,.08));overflow:hidden} 578.guru-nolink-modal__bar-fill{display:block;height:100%;width:0;border-radius:99px;background:var(--gold,#b8860b)} 579@media (prefers-reduced-motion:reduce){.guru-nolink-modal__bar-fill{transition:none!important}} 580/* Desktop: modal centrado en vez de bottom-sheet */ 581@media (min-width:600px){ 582 .guru-nolink-modal{align-items:center;padding:1rem} 583 .guru-nolink-modal__dialog{border-radius:20px;padding-bottom:1.5rem;animation:guru-nolink-in .22s ease} 584} 585@keyframes guru-nolink-in{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}} 586@media (prefers-reduced-motion:reduce){.guru-nolink-modal__dialog{animation:none}} 587/* Touch: el :hover queda pegado tras el tap, asà que en touch mantenemos el 588 aspecto base (el :active da el feedback momentáneo). Los equivalentes para 589 los botones del resto del sitio viven en main.css, no acá: esta hoja se 590 sirve solo en las páginas que montan el modal. */ 591@media (hover:none){ 592 .guru-nolink-modal__cta:hover,.guru-nolink-modal__cta:focus{filter:none;transform:none} 593} 594 595/* Guru â Popups tipo modal (4 slots configurables) */ 596.guru-popup,.guru-popup *{box-sizing:border-box} 597.guru-popup[hidden]{display:none} 598/* El lock va en <html> y no solo en <body>: critical.css le pone overflow-x:clip 599 al html, asà que el viewport toma su overflow del html y el del body nunca 600 llega a propagarse. Con el lock solo en body la página seguÃa scrolleando 601 detrás del popup, hasta el fondo. overscroll-behavior corta además el 602 encadenamiento desde el diálogo, que es corto y llega a su tope enseguida. */ 603html.guru-popup-open,body.guru-popup-open{overflow:hidden;overscroll-behavior:contain;scroll-behavior:auto} 604.guru-popup,.guru-popup__dialog{overscroll-behavior:contain} 605.guru-popup{position:fixed;inset:0;z-index:99992;display:flex;align-items:flex-end;justify-content:center} 606.guru-popup__overlay{position:absolute;inset:0;background:rgba(17,24,39,.62);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)} 607.guru-popup__dialog{position:relative;z-index:1;width:100%;max-width:480px;background:var(--bg-card,#fff);color:var(--text-body,#374151);border-radius:20px 20px 0 0;padding:1.75rem 1.35rem calc(1.5rem + env(safe-area-inset-bottom,0px));box-shadow:0 -12px 48px rgba(0,0,0,.3);max-height:90vh;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;text-align:center;animation:guru-popup-up .28s cubic-bezier(.22,1,.36,1)} 608@keyframes guru-popup-up{from{transform:translateY(100%)}to{transform:translateY(0)}} 609.guru-popup__close{position:absolute;top:.6rem;right:.7rem;z-index:10;width:2.1rem;height:2.1rem;display:flex;align-items:center;justify-content:center;border:0;background:var(--bg-card,#fff);box-shadow:0 1px 4px rgba(0,0,0,.18);font-size:1.4rem;line-height:1;color:var(--text-muted,#6b7280);cursor:pointer;border-radius:50%;transition:background .15s,color .15s} 610.guru-popup__close:hover{background:var(--border-strong,rgba(0,0,0,.12));color:var(--text-heading,#111827)} 611.guru-popup__title{margin:.25rem 1.5rem .5rem;font-size:1.5rem;font-weight:800;line-height:1.2;color:var(--text-heading,#111827);letter-spacing:-.02em} 612.guru-popup__subtitle{margin:0 0 1rem;font-size:1.05rem;font-weight:600;line-height:1.35;color:var(--accent,#b8860b)} 613.guru-popup__text{margin:0 0 1.25rem;font-size:.95rem;line-height:1.55;color:var(--text-body,#374151)} 614.guru-popup__text p{margin:0 0 .75rem} 615.guru-popup__text p:last-child{margin-bottom:0} 616.guru-popup__custom{margin:0 0 1.25rem} 617.guru-popup__custom:last-child{margin-bottom:0} 618.guru-popup__custom canvas,.guru-popup__custom img,.guru-popup__custom svg{max-width:100%} 619.guru-popup__cta{display:inline-flex;align-items:center;justify-content:center;width:100%;max-width:340px;padding:.85rem 1.5rem;min-height:48px;background:var(--btn-bg,var(--gold,#b8860b));color:var(--btn-text,#fff);font-size:.95rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;text-decoration:none;border-radius:11px;white-space:nowrap;box-shadow:0 3px 10px rgba(0,0,0,.18);transition:filter .15s,transform .15s,box-shadow .15s,background .15s} 620.guru-popup__cta:hover,.guru-popup__cta:focus{filter:brightness(.86) saturate(1.1);transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.34);color:var(--btn-text,#fff);text-decoration:none} 621.guru-popup__cta:active{transform:translateY(0);box-shadow:0 3px 10px rgba(0,0,0,.2)} 622.guru-popup__disclaimer{margin:1.15rem 0 0;font-size:.72rem;line-height:1.45;color:var(--text-muted,#6b7280)} 623/* Desktop: modal centrado en vez de bottom-sheet */ 624@media (min-width:600px){ 625 .guru-popup{align-items:center;padding:1rem} 626 .guru-popup__dialog{border-radius:20px;padding-bottom:1.75rem;animation:guru-popup-in .22s ease} 627 /* Popup ancho (la creatividad de imagen): el doble. En mobile no aplica, 628 que ya ocupa todo el ancho; el max-width lo acota igual en pantallas 629 angostas de escritorio. */ 630 .guru-popup[data-wide="1"] .guru-popup__dialog{max-width:960px} 631 /* En un diálogo de 960 el CTA de 340 queda perdido. */ 632 .guru-popup[data-wide="1"] .guru-popup__cta{max-width:420px} 633 634 /* Tragaperras: la palanca sobresale por el borde derecho del modal. Requiere 635 overflow visible, y por spec no se puede tener un eje visible y el otro 636 auto â asà que el scroll se delega al contenedor. El .guru-popup ya emite 637 data-kind, con eso alcanza para acotarlo a este popup. */ 638 .guru-popup__dialog--slotmachine{overflow:visible;max-height:none} 639 .guru-popup[data-kind="slotmachine"]{align-items:flex-start;overflow-y:auto} 640 /* margin auto + flex-start: sin esto, el contenido más alto que el viewport 641 se corta por arriba y no hay forma de scrollear hasta ahÃ. */ 642 .guru-popup[data-kind="slotmachine"] .guru-popup__dialog{margin:auto} 643 .guru-popup__dialog--slotmachine .guru-slotmachine__lever{position:absolute;right:-52px;top:0;bottom:0;flex:none;width:44px} 644 .guru-popup__dialog--slotmachine .guru-slotmachine__lever-rod{height:64px} 645 .guru-popup__dialog--slotmachine .guru-slotmachine__lever-knob{width:32px;height:32px;top:-18px} 646 .guru-popup__dialog--slotmachine .guru-slotmachine__lever-base{width:36px;height:26px} 647} 648@keyframes guru-popup-in{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}} 649@media (prefers-reduced-motion:reduce){.guru-popup__dialog{animation:none}} 650@media (hover:none){ 651 .guru-popup__cta:hover,.guru-popup__cta:focus{filter:none;transform:none} 652} 653 654/* Creatividad de imagen (Popup 5) â la imagen sangra hasta los bordes del 655 diálogo, asà que el padding de arriba se va y el radio lo pone la imagen. */ 656.guru-popup__dialog--image{padding-top:0} 657.guru-popup__image{display:block;margin:0 -1.35rem 1.25rem;border-radius:20px 20px 0 0;overflow:hidden;line-height:0} 658.guru-popup__image:last-child{margin-bottom:0} 659.guru-popup__image picture,.guru-popup__image img{display:block;width:100%;height:auto} 660a.guru-popup__image{transition:filter .15s} 661a.guru-popup__image:hover{filter:brightness(.94)} 662@media (hover:none){a.guru-popup__image:hover{filter:none}} 663/* Creatividad de iframe: un banner externo en vez de la imagen. Sangra igual, 664 y el alto lo pone el JS al abrir junto con el src â el creativo va a su 665 tamaño real y escalado desde la esquina para entrar en el diálogo, porque un 666 iframe no achica lo que trae adentro. El fondo tapa el hueco mientras el 667 banner viaja. */ 668.guru-popup__frame{position:relative;margin:0 -1.35rem 1.25rem;border-radius:20px 20px 0 0;overflow:hidden;line-height:0;background:var(--bg-soft,rgba(17,24,39,.05))} 669.guru-popup__frame:last-child{margin-bottom:0} 670.guru-popup__frame iframe{display:block;border:0;transform-origin:top left} 671/* Una creatividad distinta por caso: la que no corresponde a este ancho no se 672 muestra, y si es un iframe nunca recibe src, asà que tampoco se descarga. */ 673.guru-popup__creative--desktop{display:none} 674@media (min-width:600px){ 675 .guru-popup__creative--desktop{display:block} 676 .guru-popup__creative--mobile{display:none} 677} 678/* Compliance de texto libre: legible y alineado a la izquierda como todo texto 679 legal. Sin scroll propio a propósito: un T&C largo estira el diálogo, que ya 680 scrollea, y asà no queda texto legal escondido detrás de una barra chica. */ 681.guru-popup__compliance{margin:1.15rem 0 0;padding:.8rem .9rem;background:var(--bg-soft,rgba(17,24,39,.05));border-radius:10px;font-size:.78rem;line-height:1.5;color:var(--text-muted,#6b7280);text-align:left} 682.guru-popup__compliance p{margin:0 0 .55rem} 683.guru-popup__compliance p:last-child{margin-bottom:0} 684.guru-popup__compliance a{color:inherit;text-decoration:underline} 685 686/* Ruleta de premios (Popup 1) */ 687.guru-roulette{display:flex;flex-direction:column;align-items:center;gap:1.15rem;margin:0 0 1.25rem} 688.guru-roulette__stage{position:relative;margin:0 auto} 689/* Brillo/vidrio fijo sobre la rueda que gira (da profundidad y efecto) */ 690.guru-roulette__stage::after{content:"";position:absolute;inset:7px;border-radius:50%;pointer-events:none;z-index:3;background:radial-gradient(120% 90% at 30% 20%,rgba(255,255,255,.16),rgba(255,255,255,0) 34%),radial-gradient(100% 100% at 50% 120%,rgba(15,23,42,.10),rgba(15,23,42,0) 58%)} 691.guru-roulette__pointer{position:absolute;top:-10px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:15px solid transparent;border-right:15px solid transparent;border-top:24px solid var(--accent,#b8860b);z-index:5;filter:drop-shadow(0 2px 3px rgba(0,0,0,.4))} 692.guru-roulette__wheel{position:relative;width:100%;height:100%;border-radius:50%;box-shadow:0 0 0 8px #fff,0 0 0 11px rgba(0,0,0,.10),0 14px 38px rgba(0,0,0,.45);will-change:transform} 693.guru-roulette__sep{position:absolute;inset:0;border-radius:50%;pointer-events:none;z-index:1} 694.guru-roulette__hub{position:absolute;top:50%;left:50%;width:38px;height:38px;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;z-index:4} 695.guru-roulette__hub-icon{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))} 696.guru-roulette__logo{position:absolute;z-index:2;display:flex;align-items:center;justify-content:center;background:none;border:0;padding:0;box-shadow:none} 697.guru-roulette__logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block;filter:drop-shadow(0 1px 2px rgba(0,0,0,.22));transition:transform .18s ease} 698/* Logo que pasa por la flechita: solo se agranda (colores reales, sin tocar el color) */ 699.guru-roulette__logo.is-active{z-index:3} 700.guru-roulette__logo.is-active img{transform:scale(1.3);filter:drop-shadow(0 3px 8px rgba(0,0,0,.32))} 701.guru-roulette__logo-fallback{font-size:.72rem;font-weight:800;text-transform:uppercase;color:#1f2937;line-height:1;text-shadow:0 1px 2px rgba(255,255,255,.6)} 702@media (prefers-reduced-motion:reduce){.guru-roulette__logo img{transition:none}} 703.guru-roulette__spin{display:inline-flex;align-items:center;justify-content:center;min-width:180px;padding:.8rem 1.6rem;min-height:48px;border:0;border-radius:11px;background:var(--btn-bg,var(--gold,#b8860b));color:var(--btn-text,#fff);font-size:1rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.2);transition:filter .15s,transform .15s} 704.guru-roulette__spin:hov
704er{filter:brightness(.88) saturate(1.1);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.32)} 705.guru-roulette__spin:active{transform:translateY(0)} 706.guru-roulette__spin[disabled]{opacity:.55;cursor:default} 707.guru-roulette__spin[hidden]{display:none} 708.guru-roulette__result{display:flex;flex-direction:column;align-items:center;gap:.85rem;width:100%;animation:guru-roulette-pop .3s ease} 709.guru-roulette__result[hidden]{display:none} 710@keyframes guru-roulette-pop{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}} 711.guru-roulette__win{margin:0;font-size:1.15rem;font-weight:700;line-height:1.35;color:var(--text-heading,#111827)} 712.guru-roulette__winname{color:var(--accent,#b8860b);font-weight:800} 713.guru-roulette__cta{margin:0} 714.guru-roulette__confetti{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:9;} 715/* Latido sutil del botón GIRAR para invitar al giro */ 716.guru-roulette__spin:not([disabled]){animation:guru-roulette-pulse 1.6s ease-in-out infinite} 717@keyframes guru-roulette-pulse{0%,100%{box-shadow:0 4px 14px rgba(0,0,0,.2)}50%{box-shadow:0 4px 22px rgba(0,0,0,.28),0 0 0 6px rgba(184,134,11,.15)}} 718@media (prefers-reduced-motion:reduce){.guru-roulette__wheel{transition:none}.guru-roulette__spin:not([disabled]){animation:none}} 719@media (hover:none){.guru-roulette__spin:hover{filter:none;transform:none}} 720 721/* Fondo del modal cuando hay ruleta: verde paño de casino */ 722.guru-popup__dialog--roulette{background:radial-gradient(130% 100% at 50% -10%,#1f7a45 0%,#14532d 45%,#0b3a22 100%);color:#f0fdf4;box-shadow:0 -12px 48px rgba(11,58,34,.55)} 723.guru-popup__dialog--roulette::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(60% 40% at 50% 8%,rgba(255,255,255,.10),transparent 70%)} 724.guru-popup__dialog--roulette>*{position:relative;z-index:1} 725/* El botón de cierre debe seguir absoluto arriba-derecha (la regla de arriba 726 le pisaba el position:absolute y lo mandaba al flujo/arriba-izquierda). */ 727.guru-popup__dialog--roulette .guru-popup__close{position:absolute;top:.6rem;right:.7rem;z-index:11} 728.guru-popup__dialog--roulette .guru-popup__title{color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.3)} 729.guru-popup__dialog--roulette .guru-popup__subtitle{color:#bbf7d0} 730.guru-popup__dialog--roulette .guru-popup__text{color:#dcfce7} 731.guru-popup__dialog--roulette .guru-popup__disclaimer{color:rgba(220,252,231,.72)} 732.guru-popup__dialog--roulette .guru-popup__close{background:rgba(255,255,255,.16);color:#fff;box-shadow:none} 733.guru-popup__dialog--roulette .guru-popup__close:hover{background:rgba(255,255,255,.3);color:#fff} 734.guru-popup__dialog--roulette .guru-roulette__win{color:#fff} 735.guru-popup__dialog--roulette .guru-roulette__winname{color:#fde68a} 736@media (min-width:600px){.guru-popup__dialog--roulette{box-shadow:0 24px 60px rgba(11,58,34,.6)}} 737 738/* Fondo del modal cuando hay raspadita (vibe premium, distinto a la ruleta) */ 739.guru-popup__dialog--scratch{background:radial-gradient(130% 100% at 50% -10%,#1e3a5f 0%,#16324f 45%,#0c1f34 100%);color:#eaf2fb;box-shadow:0 -12px 48px rgba(12,31,52,.55)} 740.guru-popup__dialog--scratch::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(60% 40% at 50% 8%,rgba(255,255,255,.10),transparent 70%)} 741.guru-popup__dialog--scratch>*{position:relative;z-index:1} 742.guru-popup__dialog--scratch .guru-popup__close{position:absolute;top:.6rem;right:.7rem;z-index:11;background:rgba(255,255,255,.16);color:#fff;box-shadow:none} 743.guru-popup__dialog--scratch .guru-popup__close:hover{background:rgba(255,255,255,.3);color:#fff} 744.guru-popup__dialog--scratch .guru-popup__title{color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.3)} 745.guru-popup__dialog--scratch .guru-popup__subtitle{color:#bfdbfe} 746.guru-popup__dialog--scratch .guru-popup__text{color:#dbe9fb} 747.guru-popup__dialog--scratch .guru-popup__disclaimer{color:rgba(219,233,251,.72)} 748 749/* Raspadita */ 750.guru-scratch{display:flex;flex-direction:column;align-items:center;gap:1rem;margin:0 0 1.25rem} 751.guru-scratch__panel{position:relative;width:100%;max-width:320px;height:132px;border-radius:14px;overflow:hidden;box-shadow:0 6px 20px rgba(0,0,0,.28),inset 0 0 0 2px rgba(255,255,255,.35);background:#fff;user-select:none;-webkit-user-select:none;touch-action:none} 752.guru-scratch__prize{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;padding:.5rem;background:linear-gradient(135deg,#fff7e0,#fde68a)} 753.guru-scratch__label{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#92700f} 754.guru-scratch__code{font-size:1.55rem;font-weight:800;letter-spacing:.06em;color:#1f2937;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace} 755/* Copiar: pill compacto DENTRO del recuadro del código (no agranda el modal) */
756.guru-scratch__copy{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;margin-top:.15rem;min-height:28px;padding:.25rem .7rem;border:1.5px dashed rgba(120,90,10,.5);border-radius:8px;background:rgba(255,255,255,.55);color:#7a5b0a;font-size:.76rem;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s,color .15s} 757.guru-scratch__copy:hover{background:rgba(255,255,255,.85);border-color:rgba(120,90,10,.85)} 758.guru-scratch__copy.is-copied{background:#16a34a;border-color:#16a34a;border-style:solid;color:#fff} 759.guru-scratch__copy-ico{flex:0 0 auto} 760.guru-scratch__cover{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab;z-index:1} 761.guru-scratch__cover:active{cursor:grabbing} 762/* Brillo diagonal animado que invita a raspar (solo sin revelar) */ 763.guru-scratch__shine{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden;border-radius:14px;display:none} 764.guru-scratch.is-scratch:not(.is-revealed) .guru-scratch__shine{display:block} 765.guru-scratch__shine::before{content:"";position:absolute;top:-40%;left:-70%;width:45%;height:180%;transform:rotate(18deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),rgba(255,255,255,.6),rgba(255,255,255,.15),transparent);animation:guru-scratch-shine 2.6s ease-in-out infinite} 766@keyframes guru-scratch-shine{0%{left:-70%}55%,100%{left:130%}} 767@media (prefers-reduced-motion:reduce){.guru-scratch__shine{display:none!important}} 768.guru-scratch__actions{display:flex;flex-direction:column;align-items:center;gap:.7rem;width:100%;animation:guru-roulette-pop .3s ease} 769.guru-scratch__actions[hidden]{display:none} 770.guru-scratch__cta{margin:0} 771@media (prefers-reduced-motion:reduce){.guru-scratch__actions{animation:none}} 772 773/* ââ Tragaperras (Popup 3) âââââââââââââââââââââââââââââââââââââââââââââââ */ 774/* Fondo del modal â púrpura/magenta arcade. Misma estructura que las variantes 775 --roulette (verde) y --scratch (azul noche) de más arriba. */ 776.guru-popup__dialog--slotmachine{background:radial-gradient(130% 100% at 50% -10%,#7e22ce 0%,#5b21b6 42%,#2e1065 100%);color:#f5ecff;box-shadow:0 -12px 48px rgba(46,16,101,.6)} 777.guru-popup__dialog--slotmachine::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(60% 40% at 50% 8%,rgba(255,255,255,.12),transparent 70%),radial-gradient(80% 50% at 50% 105%,rgba(217,70,239,.28),transparent 70%)} 778.guru-popup__dialog--slotmachine>*{position:relative;z-index:1} 779.guru-popup__dialog--slotmachine .guru-popup__title{color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.35)} 780.guru-popup__dialog--slotmachine .guru-popup__subtitle{color:#f0abfc} 781.guru-popup__dialog--slotmachine .guru-popup__text{color:#ede9fe} 782.guru-popup__dialog--slotmachine .guru-popup__disclaimer{color:rgba(237,233,254,.72)} 783.guru-popup__dialog--slotmachine .guru-popup__close{position:absolute;top:.6rem;right:.7rem;z-index:11;background:rgba(255,255,255,.16);color:#fff;box-shadow:none} 784.guru-popup__dialog--slotmachine .guru-popup__close:hover{background:rgba(255,255,255,.3);color:#fff} 785.guru-popup__dialog--slotmachine .guru-slotmachine__win{color:#fff} 786.guru-popup__dialog--slotmachine .guru-slotmachine__winname{color:#fde68a} 787@media (min-width:600px){.guru-popup__dialog--slotmachine{box-shadow:0 24px 60px rgba(46,16,101,.65)}} 788 789.guru-slotmachine{display:flex;flex-direction:column;align-items:center;gap:.9rem;margin:0 0 1.25rem} 790/* Gabinete + palanca, como una sola pieza centrada */ 791.guru-slotmachine__machine{position:relative;display:flex;align-items:stretch;justify-content:center;gap:.5rem;width:100%;max-width:440px;margin:0 auto} 792 793.guru-slotmachine__cabinet{flex:1 1 auto;min-width:0;position:relative;padding:.55rem .6rem .5rem;border-radius:18px;background:linear-gradient(180deg,#4c1d95,#2e1065);border:2px solid rgba(253,224,71,.55);box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -14px 24px rgba(0,0,0,.45),0 10px 26px rgba(0,0,0,.45)} 794 795/* Cartel superior con bombitas */ 796.guru-slotmachine__marquee{display:flex;align-items:center;justify-content:space-between;gap:.25rem;height:22px;margin:0 .1rem .5rem;padding:0 .5rem;border-radius:8px;background:linear-gradient(180deg,#fbbf24,#b45309);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 2px 6px rgba(0,0,0,.35)} 797.guru-slotmachine__bulb{width:8px;height:8px;border-radius:50%;background:#fffbeb;box-shadow:0 0 7px 2px rgba(255,251,235,.9);animation:guru-slot-bulb 1.1s ease-in-out infinite} 798.guru-slotmachine__bulb:nth-child(2n){animation-delay:.18s} 799.guru-slotmachine__bulb:nth-child(3n){animation-delay:.36s} 800.guru-slotmachine__bulb:nth-child(5n){animation-delay:.54s} 801@keyframes guru-slot-bulb{0%,100%{opacity:1}50%{opacity:.28}} 802 803/* Ventana de rodillos */ 804.guru-slotmachine__reels{position:relative;display:flex;width:100%;gap:.4rem;padding:.3rem;overflow:hidden;border-radius:10px;background:#1e1b4b;box-shadow:inset 0 2px 8px rgba(0,0,0,.6)} 805.guru-slotmachine__reel{flex:1 1 0;min-width:0;position:relative;overflow:hidden;border-radius:7px;background:linear-gradient(180deg,#e5e7eb,#fff 22%,#fff 78%,#cbd5e1);box-shadow:inset 0 10px 12px -8px rgba(15,23,42,.75),inset 0 -10px 12px -8px rgba(15,23,42,.75)} 806.guru-slotmachine__strip{display:flex;flex-direction:column;will-change:transform} 807.guru-slotmachine__cell{display:flex;align-items:center;justify-content:center;padding:.4rem;box-sizing:border-box} 808.guru-slotmachine__cell img{max-width:100%;max-height:100%;object-fit:contain;filter:grayscale(.5) brightness(.96);opacity:.94;transition:filter .25s,opacity .25s,transform .25s} 809.guru-slotmachine.is-won .guru-slotmachine__cell img{filter:none;opacity:1;transform:scale(1.04)} 810.guru-slotmachine__cell-fallback{font-size:.8rem;font-weight:800;letter-spacing:.04em;color:#334155;text-transform:uppercase} 811/* LÃnea de pago: dentro de la ventana, asà el 50% es el centro real */ 812.guru-slotmachine__payline{position:absolute;
812left:.5rem;right:.5rem;top:50%;height:2px;transform:translateY(-50%);background:linear-gradient(90deg,transparent,#f43f5e,#f43f5e,transparent);opacity:.8;pointer-events:none;border-radius:2px;z-index:2} 813.guru-slotmachine.is-won .guru-slotmachine__payline{background:linear-gradient(90deg,transparent,#22c55e,#22c55e,transparent);opacity:1} 814 815/* Bandeja de monedas */ 816.guru-slotmachine__tray{display:block;height:11px;margin:.45rem .5rem 0;border-radius:0 0 7px 7px;background:linear-gradient(180deg,#1e1b4b,#0f0a2e);box-shadow:inset 0 3px 6px rgba(0,0,0,.8)} 817 818/* Palanca */ 819.guru-slotmachine__lever{position:relative;flex:0 0 34px;width:34px;cursor:pointer;-webkit-tap-highlight-color:transparent} 820/* Todo en % de la altura del gabinete (la palanca estira con él), asà el pivote 821 queda siempre a la altura de los rodillos sin depender de pÃxeles fijos. */ 822.guru-slotmachine__lever-arm{position:absolute;left:50%;bottom:calc(38% + 12px);width:10px;transform:translateX(-50%);transition:transform .16s cubic-bezier(.34,1.56,.64,1)} 823.guru-slotmachine__lever-rod{display:block;width:8px;height:52px;margin:0 auto;border-radius:5px;background:linear-gradient(90deg,#94a3b8,#f1f5f9 45%,#64748b)} 824.guru-slotmachine__lever-knob{position:absolute;top:-15px;left:50%;width:26px;height:26px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle at 33% 28%,#fca5a5,#ef4444 45%,#991b1b);box-shadow:0 3px 8px rgba(0,0,0,.5),inset 0 -3px 6px rgba(0,0,0,.35)} 825.guru-slotmachine__lever-base{position:absolute;left:50%;bottom:38%;width:30px;height:22px;transform:translateX(-50%);border-radius:7px;background:linear-gradient(180deg,#94a3b8,#334155);box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 3px 7px rgba(0,0,0,.5)} 826/* Tornillo del pivote */ 827.guru-slotmachine__lever-base::after{content:"";position:absolute;left:50%;top:7px;width:8px;height:8px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle at 35% 30%,#e2e8f0,#475569);box-shadow:inset 0 1px 1px rgba(0,0,0,.4)} 828.guru-slotmachine.is-pulled .guru-slotmachine__lever-arm{transform:translateX(-50%) translateY(30px)} 829.guru-slotmachine.is-won .guru-slotmachine__lever{cursor:default} 830 831.guru-slotmachine.is-won .guru-slotmachine__msg{display:none} 832.guru-slotmachine__msg{margin:0;min-height:1.2em;font-size:.9rem;font-weight:700;color:#fde68a;text-align:center} 833.guru-slotmachine__spin{min-width:190px;padding:.7rem 1.4rem;border:0;border-radius:999px;background:linear-gradient(180deg,#fbbf24,#d97706);color:#3b1d02;font-size:1rem;font-weight:800;letter-spacing:.06em;cursor:pointer;box-shadow:0 4px 0 #92400e,0 8px 16px rgba(0,0,0,.35);transition:transform .12s,box-shadow .12s,filter .15s} 834.guru-slotmachine__spin:hover:not(:disabled){filter:brightness(1.07)} 835.guru-slotmachine__spin:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 #92400e,0 4px 10px rgba(0,0,0,.3)} 836.guru-slotmachine__spin:disabled{opacity:.55;cursor:default} 837.guru-slotmachine__spin[hidden]{display:none} 838.guru-slotmachine__result{display:flex;flex-direction:column;align-items:center;gap:.7rem;width:100%;animation:guru-roulette-pop .3s ease} 839.guru-slotmachine__result[hidden]{display:none} 840.guru-slotmachine__win{margin:0;font-size:1.02rem;font-weight:700;text-align:center} 841.guru-slotmachine__winname{color:#fde68a} 842.guru-slotmachine__cta{margin:0} 843@media (max-width:400px){ 844 .guru-slotmachine__lever{flex:0 0 28px;width:28px} 845 .guru-slotmachine__lever-rod{height:44px} 846 .guru-slotmachine__lever-knob{width:22px;height:22px;top:-13px} 847 .guru-slotmachine__spin{min-width:100%} 848} 849@media (prefers-reduced-motion:reduce){ 850 .guru-slotmachine__result{animation:none} 851 .guru-slotmachine__bulb{animation:none} 852 .guru-slotmachine__lever-arm{transition:none} 853} 854 855/* Tragaperras de frutas (Popup 4) â máquina de video: marco dorado sobre violeta, 856 cinco rodillos y barra de controles abajo. Sin palanca. */ 857.guru-popup__dialog--fruits{background:radial-gradient(130% 100% at 50% -8%,#6d28d9 0%,#4c1d95 44%,#1b1140 100%);color:#efe9ff;box-shadow:0 -12px 48px rgba(27,17,64,.62)} 858.guru-popup__dialog--fruits::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(60% 40% at 50% 6%,rgba(255,255,255,.14),transparent 70%),radial-gradient(80% 50% at 50% 104%,rgba(251,191,36,.2),transparent 70%)} 859.guru-popup__dialog--fruits>*{position:relative;z-index:1} 860.guru-popup__dialog--fruits .guru-popup__title{color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.4)} 861.guru-popup__dialog--fruits .guru-popup__subtitle{color:#fcd34d} 862.guru-popup__dialog--fruits .guru-popup__text{color:#e9e2ff} 863.guru-popup__dialog--fruits .guru-popup__disclaimer{color:rgba(233,226,255,.7)} 864.guru-popup__dialog--fruits .guru-popup__close{position:absolute;top:.6rem;right:.7rem;z-index:11;background:rgba(255,255,255,.16);color:#fff;box-shadow:none} 865.guru-popup__dialog--fruits .guru-popup__close:hover{background:rgba(255,255,255,.3);color:#fff} 866@media (min-width:600px){.guru-popup__dialog--fruits{box-shadow:0 24px 60px rgba(27,17,64,.68)}} 867 868/* --guru-cell: alto de cada casilla. Es la medida madre de la máquina (la
869 ventana son 3 filas) y se achica en pantallas bajas para que el popup entre 870 sin scroll. El JS la mide antes de cada tirada para frenar en la lÃnea. */ 871.guru-fruits{--guru-cell:74px;display:flex;flex-direction:column;align-items:center;gap:.8rem;margin:0 0 1.1rem} 872.guru-fruits__sprite{position:absolute;width:0;height:0;overflow:hidden} 873.guru-fruits__machine{position:relative;width:100%;max-width:460px;margin:0 auto .35rem;padding-top:13px} 874/* Con el premio, el anillo de luz se sale 14px del marco y comÃa el espacio 875 hasta el texto de abajo: el resplandor quedaba pegado al mensaje. */ 876.guru-fruits.is-won .guru-fruits__machine{margin-bottom:1.4rem} 877 878/* Cartel: chapa dorada apoyada sobre el borde superior del marco */ 879.guru-fruits__plate{position:absolute;top:0;left:50%;transform:translateX(-50%);z-index:3;display:flex;align-items:center;gap:.45rem;max-width:86%;padding:.2rem .7rem;border-radius:10px;background:linear-gradient(180deg,#fef3c7,#f59e0b 55%,#b45309);border:1px solid rgba(120,53,15,.6);box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 3px 10px rgba(0,0,0,.5)} 880.guru-fruits__plate-text{min-width:0;font-size:.86rem;font-weight:900;letter-spacing:.16em;line-height:1.5;color:#7c2d12;text-transform:uppercase;text-shadow:0 1px 0 rgba(255,255,255,.55);white-space:nowrap;overflow:hidden;text-overflow:ellipsis} 881.guru-fruits__bulbs{display:flex;align-items:center;gap:.24rem} 882.guru-fruits__bulb{width:7px;height:7px;border-radius:50%;background:#fffbeb;box-shadow:0 0 6px 2px rgba(255,251,235,.95);animation:guru-fruits-bulb 1.05s ease-in-out infinite} 883.guru-fruits__bulb:nth-child(2n){animation-delay:.18s} 884.guru-fruits__bulb:nth-child(3n){animation-delay:.36s} 885@keyframes guru-fruits-bulb{0%,100%{opacity:1}50%{opacity:.25}} 886 887/* Marco dorado */ 888.guru-fruits__cabinet{--guru-rivet:radial-gradient(circle at 50% 50%,rgba(255,251,235,.95) 0 2px,rgba(146,64,14,.75) 2.2px 3.4px,transparent 3.6px);position:relative;padding:.55rem .5rem .5rem;border-radius:16px;background:linear-gradient(180deg,#fde68a,#eab308 22%,#a16207 78%,#78350f);box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 -3px 6px rgba(120,53,15,.6),0 10px 28px rgba(0,0,0,.5)} 889/* Remaches de las esquinas */ 890/* Una capa por remache: el número de posiciones lo manda background-image, asà 891 que con un solo gradiente las otras tres posiciones se ignoran. */ 892.guru-fruits__cabinet::before{content:"";position:absolute;inset:4px;border-radius:12px;pointer-events:none;background-image:var(--guru-rivet),var(--guru-rivet),var(--guru-rivet),var(--guru-rivet);background-repeat:no-repeat;background-position:1px 1px,calc(100% - 1px) 1px,1px calc(100% - 1px),calc(100% - 1px) calc(100% - 1px);background-size:9px 9px} 893 894/* Premio: la máquina queda encendida con un halo fijo, y arriba de eso corre la 895 luz del anillo. El halo va en el box-shadow del propio marco (no en una capa 896 encima) porque el botón de giro vive adentro del gabinete. */ 897.guru-fruits.is-won .guru-fruits__cabinet{box-shadow:inset 0 1px 0 rgba(255,255,255,.85),inset 0 -3px 6px rgba(120,53,15,.55),0 10px 28px rgba(0,0,0,.5),0 0 0 2px rgba(251,191,36,.4),0 0 16px 2px rgba(251,191,36,.32)} 898/* Las bombitas del cartel titilan más rápido con el premio */ 899.guru-fruits.is-won .guru-fruits__bulb{animation-duration:.4s} 900 901/* Anillo de luz que da la vuelta al marco. 902 Adentro gira un cuadrado con un gajo de luz (conic-gradient); el `overflow` 903 del anillo lo recorta a la banda que rodea al gabinete y el gabinete, opaco, 904 tapa el resto. Se anima el `transform` del cuadrado y no el ángulo del 905 gradiente: interpolar un ángulo dentro de un gradiente necesita @property, 906 que no está en todos los navegadores donde sà corre esto. */ 907.guru-fruits__halo{position:absolute;top:-1px;left:-14px;right:-14px;bottom:-14px;border-radius:30px;overflow:hidden;pointer-events:none;opacity:0;transition:opacity .35s ease} 908.guru-fruits__halo::before{content:"";position:absolute;top:50%;left:50%;width:160%;aspect-ratio:1;transform:translate(-50%,-50%);background:conic-gradient(from 0deg,transparent 0 62%,rgba(251,191,36,.35) 67%,rgba(253,230,138,.9) 74%,#fffdf5 79%,rgba(253,230,138,.9) 84%,rgba(251,191,36,.35) 91%,transparent 96%);filter:blur(6px);will-change:transform} 909.guru-fruits.is-won .guru-fruits__halo{opacity:1} 910.guru-fruits.is-won .guru-fruits__halo::before{animation:guru-fruits-orbit 2.2s linear infinite} 911@keyframes guru-fruits-orbit{from{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}} 912
913/* Ventana de rodillos: 3 filas visibles, la del medio es la que paga */ 914.guru-fruits__reels{position:relative;display:flex;width:100%;height:calc(var(--guru-cell) * 3);gap:.22rem;padding:.26rem;overflow:hidden;border-radius:10px;background:#160e33;box-shadow:inset 0 2px 12px rgba(0,0,0,.85)} 915.guru-fruits__reel{flex:1 1 0;min-width:0;position:relative;overflow:hidden;border-radius:6px;background:linear-gradient(180deg,#c7d2fe,#fff 20%,#fff 80%,#c7d2fe)} 916/* Sombras arriba y abajo: dan la curva del rodillo y hacen que solo la fila 917 del medio se lea nÃtida, como en una máquina real. */ 918.guru-fruits__reel::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;background:linear-gradient(180deg,rgba(23,14,58,.62),rgba(23,14,58,.05) 30%,rgba(23,14,58,.05) 70%,rgba(23,14,58,.62))} 919.guru-fruits__strip{display:flex;flex-direction:column;will-change:transform} 920.guru-fruits__cell{height:var(--guru-cell);display:flex;align-items:center;justify-content:center;padding:.3rem;box-sizing:border-box} 921.guru-fruits__icon{width:80%;max-width:calc(var(--guru-cell) * .76);height:auto;aspect-ratio:1;display:block;filter:drop-shadow(0 2px 3px rgba(23,14,58,.3))} 922 923/* Banda de la fila que paga: apagada mientras se juega, encendida con el premio 924 (el alto lo pone el PHP, que es quien sabe cuánto mide cada casilla). */ 925.guru-fruits__winline{position:absolute;left:.26rem;right:.26rem;top:50%;transform:translateY(-50%);border-radius:7px;pointer-events:none;z-index:3;opacity:0;background:linear-gradient(180deg,rgba(251,191,36,.05),rgba(251,191,36,.4) 50%,rgba(251,191,36,.05));box-shadow:inset 0 0 0 2px rgba(251,191,36,.95),0 0 24px rgba(251,191,36,.75);transition:opacity .25s} 926.guru-fruits.is-won .guru-fruits__winline{opacity:1;animation:guru-fruits-band 1.1s ease-in-out infinite} 927@keyframes guru-fruits-band{0%,100%{opacity:1}50%{opacity:.55}} 928 929/* LÃnea de pago: adentro de la ventana, asà el 50% es el centro real */ 930.guru-fruits__payline{position:absolute;left:.26rem;right:.26rem;top:50%;height:2px;transform:translateY(-50%);border-radius:2px;background:linear-gradient(90deg,transparent,rgba(244,63,94,.9) 14%,rgba(251,191,36,.9) 50%,rgba(244,63,94,.9) 86%,transparent);opacity:.8;pointer-events:none;z-index:4;transition:opacity .2s} 931.guru-fruits__payline::before,.guru-fruits__payline::after{content:"";position:absolute;top:50%;width:0;height:0;transform:translateY(-50%);border-top:6px solid transparent;border-bottom:6px solid transparent} 932.guru-fruits__payline::before{left:-7px;border-left:8px solid #fbbf24} 933.guru-fruits__payline::after{right:-7px;border-right:8px solid #fbbf24} 934.guru-fruits.is-spinning .guru-fruits__payline{opacity:.4} 935.guru-fruits.is-won .guru-fruits__payline{background:linear-gradient(90deg,transparent,#22c55e 14%,#bbf7d0 50%,#22c55e 86%,transparent);opacity:1} 936.guru-fruits.is-won .guru-fruits__payline::before{border-left-color:#22c55e} 937.guru-fruits.is-won .guru-fruits__payline::after{border-right-color:#22c55e} 938/* Brillo del vidrio, fijo sobre los rodillos que giran */ 939.guru-fruits__glass{position:absolute;inset:0;pointer-events:none;z-index:5;border-radius:10px;background:linear-gradient(115deg,rgba(255,255,255,.15) 0 22%,rgba(255,255,255,0) 46%)} 940 941/* Barra de controles: marcadores tipo display + botón de giro */ 942.guru-fruits__panel{display:flex;flex-wrap:wrap;align-items:stretch;gap:.28rem;margin:.45rem 0 0;padding:.3rem;border-radius:10px;background:linear-gradient(180deg,#241a4d,#140d31);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),inset 0 -2px 6px rgba(0,0,0,.6)} 943.guru-fruits__meter{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.05rem;padding:.3rem .18rem;border-radius:7px;background:#0b0722;border:1px solid rgba(251,191,36,.28);box-shadow:inset 0 2px 6px rgba(0,0,0,.85)} 944.guru-fruits__meter-label{font-size:.54rem;font-style:normal;font-weight:800;letter-spacing:.1em;color:rgba(253,230,138,.72)} 945.guru-fruits__meter-value{font-size:1rem;font-weight:900;line-height:1.15;font-variant-numeric:tabular-nums;color:#fbbf24;text-shadow:0 0 9px rgba(251,191,36,.6)} 946.guru-fruits__meter--prize .guru-fruits__meter-value{color:#4ade80;text-shadow:0 0 9px rgba(74,222,128,.55)} 947.guru-fruits.is-won .guru-fruits__meter--prize{border-color:rgba(74,222,128,.75)} 948.guru-fruits__spin{flex:0 0 auto;min-width:92px;padding:.3rem .9rem;border:0;border-radius:8px;background:linear-gradient(180deg,#7dd3fc,#0284c7 55%,#075985);color:#fff;font-size:.86rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 3px 0 #063f5f,0 5px 12px rgba(0,0,0,.4);transition:transform .12s,box-shadow .12s,filter .15s} 949.guru-fruits__spin:hover:not(:disabled){filter:brightness(1.08)} 950.guru-fruits__spin:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 1px 0 #063f5f,0 3px 8px rgba(0,0,0,.35)} 951.guru-fruits__spin:disabled{opacity:.5;cursor:default} 952.guru-fruits__spin[hidden]{display:none} 953 954.guru-fruits__msg{margin:0;min-height:1.2em;font-size:.9rem;font-weight:700;color:#fcd34d;text-align:center} 955.guru-fruits.is-won .guru-fruits__msg{display:none} 956.guru-fruits__result{display:flex;flex-direction:column;align-items:center;gap:.7rem;width:100%;animation:guru-roulette-pop .3s ease} 957.guru-fruits__result[hidden]{display:none} 958.guru-fruits__win{margin:0;font-size:1.02rem;font-weight:700;line-height:1.4;text-align:center;color:#fff} 959.guru-fruits__winname{color:#fcd34d} 960.guru-fruits__winamount{color:#4ade80} 961.guru-fruits__cta{margin:0} 962.guru-fruits__note{margin:.1rem 0 0;font-size:.68rem;line-height:1.4;color:rgba(233,226,255,.6);max-width:340px} 963@media (max-width:420px){ 964 /* El botón no entra en la misma fila que los tres marcadores: pasa abajo, 965 a todo el ancho de la barra. */ 966 .guru-fruits__spin{flex:1 0 100%;order:4;padding:.5rem .9rem} 967 .guru-fruits__plate-text{font-size:.76rem;letter-spacing:.1em} 968 .guru-fruits__meter-value{font-size:.9rem} 969 .guru-fruits__icon{width:82%} 970} 971 972/* Pantallas bajas (notebooks, ventanas chicas): el diálogo tiene max-height:90vh, 973 asà que si la máquina no achica, el popup queda con scroll interno. */ 974@media (max-height:820px){ 975 .guru-fruits{--guru-cell:62px;gap:.6rem;margin-bottom:.85rem} 976 .guru-fruits.is-won .guru-fruits__machine{margin-bottom:1rem} 977 .guru-popup__dialog--fruits{padding-top:1.4rem} 978 .guru-popup__dialog--fruits .guru-popup__title{font-size:1.25rem;margin-bottom:.35rem} 979 .guru-popup__dialog--fruits .guru-popup__subtitle{font-size:.95rem;margin-bottom:.7rem} 980 .guru-popup__dialog--fruits .guru-popup__disclaimer{margin-top:.85rem} 981 .guru-fruits__note{font-size:.64rem} 982 .guru-fruits__result{gap:.55rem} 983 .guru-fruits__win{font-size:.95rem} 984} 985@media (max-height:680px){ 986 .guru-fruits{--guru-cell:52px;gap:.5rem} 987 .guru-fruits.is-won .guru-fruits__machine{margin-bottom:.75rem} 988 .guru-popup__dialog--fruits .guru-popup__title{font-size:1.1rem} 989 .guru-popup__dialog--fruits .guru-popup__subtitle{font-size:.88rem;margin-bottom:.55rem} 990 .guru-popup__dialog--fruits .guru-popup__cta{min-height:42px;padding:.6rem 1.5rem} 991 .guru-fruits__plate-text{font-size:.78rem} 992 .guru-fruits__meter-value{font-size:.92rem} 993 .guru-fruits__msg{font-size:.82rem} 994} 995@media (prefers-reduced-motion:reduce){ 996 .guru-fruits__result{animation:none} 997 .guru-fruits__bulb{animation:none} 998 .guru-fruits.is-won .guru-fruits__winline{animation:none} 999 /* El resplandor del premio queda, pero sin la luz que gira: en su lugar, un 1000 halo fijo un poco más fuerte, asà el premio sigue notándose. */ 1001 .guru-fruits.is-won .guru-fruits__cabinet{box-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 -3px 6px rgba(120,53,15,.5),0 10px 28px rgba(0,0,0,.45),0 0 0 3px rgba(253,230,138,.75),0 0 44px 12px rgba(251,191,36,.7)} 1002 .guru-fruits.is-won .guru-fruits__halo{opacity:0}
1002 1003 .guru-fruits.is-won .guru-fruits__halo::before{animation:none} 1004} 1005 1006/* Guru â Controles de navegación en modo app (PWA standalone) */ 1007 1008/* Alto de la barra, con la zona segura del gesto de home de iOS sumada. */ 1009:root{--guru-appnav-h:calc(3.1rem + env(safe-area-inset-bottom,0px))} 1010 1011/* Fuera de modo app la barra no existe y --guru-bottom-inset queda sin 1012 definir, asà que cada regla que la usa cae en su fallback de 0px y nada se 1013 mueve. Dos vÃas para entrar en modo app: la media query (Android, escritorio, 1014 iOS 16.4+) y la clase que pone el JS, que es la única en el iOS viejo 1015 (navigator.standalone) y la que usa el modo de prueba ?guru-app=1. 1016 1017 Solo `standalone`: `fullscreen` también matchea con el navegador común en 1018 pantalla completa (F11), y ahà la barra salÃa en desktop sin que la web 1019 estuviera instalada. Nuestro manifest declara display:standalone, asà que 1020 la app instalada nunca corre en fullscreen. */ 1021.guru-appnav{display:none} 1022@media (display-mode:standalone){ 1023 :root{--guru-bottom-inset:var(--guru-appnav-h)} 1024 .guru-appnav{display:flex} 1025 /* El Ãcono de menú pasa a la barra: acá se oculta el de la cabecera. */ 1026 .header-top__left .menu-toggle{display:none} 1027} 1028html.guru-app{--guru-bottom-inset:var(--guru-appnav-h)} 1029html.guru-app .guru-appnav{display:flex} 1030html.guru-app .header-top__left .menu-toggle{display:none} 1031 1032/* El inset le reserva el lugar a la barra al final del documento: sin esto la 1033 barra tapa lo último del footer. */ 1034body{padding-bottom:var(--guru-bottom-inset,0px)} 1035 1036/* z-index 9990: arriba del panel del menú mobile (999) y de sus submenús 1037 (1001), para que la navegación siga a mano con el menú abierto; abajo de la 1038 burbuja del chat (9998) y de los modales (99990/99992), que igual no la 1039 pisan porque se corren por el inset o la esconden. */ 1040.guru-appnav{ 1041 position:fixed;left:0;right:0;bottom:0;z-index:9990; 1042 align-items:stretch;justify-content:space-around; 1043 height:var(--guru-appnav-h); 1044 padding:0 .5rem env(safe-area-inset-bottom,0px); 1045 /* El color principal del sitio. `--accent` lo define el Customizer por 1046 sitio, asà que la barra toma el de cada uno sin configurar nada. */ 1047 background:var(--accent,#b8860b); 1048 border-top:1px solid rgba(255,255,255,.18); 1049 box-shadow:0 -2px 14px rgba(0,0,0,.2); 1050 transition:transform .25s ease; 1051 /* Capa de composición propia: en WebKit es lo que evita que una barra fija 1052 se despegue y viaje con el scroll. Por eso los dos estados van en 1053 translate3d y no en translateY, para no pelearse con esto. */ 1054 transform:translate3d(0,0,0); 1055 will-change:transform; 1056} 1057.guru-appnav__btn{ 1058 flex:1 1 0;max-width:8rem;min-width:0; 1059 display:flex;align-items:center;justify-content:center; 1060 /* `--guru-appnav-fg` lo calcula app-nav.php según el color del sitio: con 1061 un acento claro el blanco da 1,4:1 y los Ãconos se pierden. Solo se 1062 imprime cuando no es blanco, asà que acá el fallback alcanza. */ 1063 padding:0;border:0;background:none;color:var(--guru-appnav-fg,#fff); 1064 cursor:pointer;text-decoration:none;-webkit-tap-highlight-color:transparent; 1065 transition:color .15s,transform .12s,opacity .15s; 1066} 1067.guru-appnav__btn svg{width:23px;height:23px;flex:none} 1068/* Sobre el fondo de acento el hover no puede ser el acento mismo: se marca 1069 bajando la opacidad, que funciona con cualquier color de sitio. */ 1070.guru-appnav__btn:hover,.guru-appnav__btn:focus-visible{color:var(--guru-appnav-fg,#fff);opacity:.7} 1071.guru-appnav__btn:active{transform:scale(.9)} 1072.guru-appnav__btn[aria-disabled="true"]{opacity:.3;pointer-events:none} 1073 1074/* Menú: en modo app el Ãcono de la cabecera se oculta para no tenerlo dos 1075 veces, y el de la barra reusa el <span class="hamburger"> del header, asà 1076 hereda el dibujo y la animación a X de critical.css. Solo hay que centrarlo 1077 (allá va con left:11px dentro de un botón de 44px) y repetir el morph, que 1078 está atado a la clase .menu-toggle. */ 1079.guru-appnav__menu{position:relative} 1080.guru-appnav__menu .hamburger{left:calc(50% - 11px)} 1081/* El hamburguesa del header pinta sus barras con --text-body, que sobre el 1082 fondo de acento no se ve. */ 1083.guru-appnav__menu .hamburger, 1084.guru-appnav__menu .hamburger::before, 1085.guru-appnav__menu .hamburger::after{background:var(--guru-appnav-fg,#fff)} 1086.guru-appnav__menu[aria-expanded="true"] .hamburger{background:transparent} 1087.guru-appnav__menu[aria-expanded="true"] .hamburger::before{top:0;transform:rotate(45deg)} 1088.guru-appnav__menu[aria-expanded="true"] .hamburger::after{top:0;transform:rotate(-45deg)} 1089 1090/* Con un popup o el modal "casa sin link" abiertos la barra se va: el diálogo 1091 es una hoja pegada abajo, justo donde vive ella, y mientras hay un modal la 1092 navegación de atrás no deberÃa estar a mano. */ 1093html.guru-popup-open .guru-appnav,html.guru-nolink-open .guru-appnav{transform:translate3d(0,110%,0);pointer-events:none} 1094 1095@media (prefers-reduced-motion:reduce){ 1096 .guru-appnav,.guru-appnav__btn{transition:none} 1097 .guru-appnav__btn:active{transform:none} 1098} 1099 1100/* Barra superior en modo app: el logo va centrado y más grande. 1101 Se centra con position:absolute y no repartiendo el flex, porque los
1102 costados no miden igual âa la izquierda el hamburguesa, a la derecha el CTA, 1103 que además puede no estarâ y con flex el logo quedarÃa corrido. El 1104 min-height del inner reemplaza la altura que el logo aportaba al flujo. */ 1105html.guru-app .header-top__inner{position:relative;min-height:64px} 1106/* left/right en 0 le dan un ancho definido al wrapper. El wrapper cubre toda la 1107 barra pero es transparente al tap: solo su contenido recibe el toque, asà el 1108 hamburguesa y el CTA de los costados siguen vivos. */ 1109html.guru-app .site-branding{position:absolute;left:0;right:0;top:0;bottom:0;margin:0;max-width:none;transform:none;justify-content:center;pointer-events:none} 1110html.guru-app .site-branding>*{pointer-events:auto} 1111/* El ancho va explÃcito, como en el resto del tema (critical.css le pone 1112 140/180/250px según el ancho de pantalla). Con `width:auto` la imagen queda 1113 sin ancho definido y el `max-width:100%` que hereda de `img{}` se resuelve 1114 contra un <a> que a su vez se mide por su contenido: la dependencia es 1115 circular y el navegador la colapsa a 0Ã0. Con logos en SVG, siempre. */ 1116html.guru-app .site-branding img, 1117html.guru-app .site-branding .custom-logo{width:260px;max-height:60px} 1118/* El tÃtulo en texto, para los sitios sin logo cargado. */ 1119html.guru-app .site-branding .site-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100vw - 8rem)} 1120@media(max-width:768px){ 1121 html.guru-app .header-top__inner{min-height:60px} 1122 html.guru-app .site-branding img, 1123 html.guru-app .site-branding .custom-logo{width:210px;max-height:52px} 1124} 1125@media(max-width:480px){ 1126 html.guru-app .site-branding img, 1127 html.guru-app .site-branding .custom-logo{width:180px;max-height:48px} 1128} 1129 1130/* 1131 * Guru â Banner de Telegram (.guru-tg). 1132 * 1133 * Banner horizontal inyectado al final del post: cocarda "Telegram" con logo, 1134 * tÃtulo destacado, bajada, handle del canal (@) y botón celeste (--tg-c). 1135 * Aislado del cascade de .entry-content vÃa `all: revert` en la raÃz y 1136 * selectores duplicados `.entry-content ...`. 1137 */ 1138 1139.guru-tg, 1140.entry-content .guru-tg { 1141 all: revert; 1142 position: relative; 1143 display: block; 1144 max-width: 640px; 1145 margin: 2.5rem auto; 1146 padding: 1.5rem 1.5rem 1.4rem; 1147 background: linear-gradient(135deg, rgba(var(--tg-c-rgb, 34, 158, 217), .07) 0%, #ffffff 60%); 1148 border: 1px solid #e2e8f0; 1149 border-radius: 16px; 1150 box-shadow: 0 12px 34px -16px rgba(0, 0, 0, .22), 0 2px 6px rgba(0, 0, 0, .05); 1151 color: #14161f; 1152 font-family: inherit; 1153 line-height: 1.45; 1154 box-sizing: border-box; 1155 isolation: isolate; 1156 overflow: hidden; 1157} 1158 1159.guru-tg *, 1160.guru-tg *::before, 1161.guru-tg *::after { 1162 box-sizing: border-box; 1163} 1164 1165/* Fila flex: la maqueta vive en el inner, no en el root, para que ningún 1166 bloque ajeno inyectado pueda volverse un item flex del banner. */ 1167.guru-tg__inner { 1168 display: flex; 1169 flex-wrap: wrap; 1170 align-items: center; 1171 gap: 1rem 1.25rem; 1172 margin-top: 1.1rem; 1173} 1174 1175/* Cocarda "Telegram" arriba a la izquierda. */ 1176.guru-tg__badge { 1177 position: absolute; 1178 top: 0; 1179 left: 1.25rem; 1180 display: inline-flex; 1181 align-items: center; 1182 gap: .35rem; 1183 padding: .3rem .7rem; 1184 background: var(--tg-c, #229ED9); 1185 color: #ffffff; 1186 border-radius: 0 0 10px 10px; 1187 font-size: .72rem; 1188 font-weight: 800; 1189 text-transform: uppercase; 1190 letter-spacing: .06em; 1191} 1192 1193.guru-tg__badge .guru-tg__logo { 1194 width: 15px; 1195 height: 15px; 1196} 1197 1198.guru-tg__body { 1199 flex: 1 1 260px; 1200 min-width: 0; 1201} 1202 1203.guru-tg__title, 1204.entry-content .guru-tg__title { 1205 display: block; 1206 margin: 0 0 .3rem; 1207 font-size: 1.3rem; 1208 line-height: 1.2; 1209 font-weight: 800; 1210 letter-spacing: -.01em; 1211 color: #14161f; 1212} 1213 1214.guru-tg__subtitle, 1215.entry-content .guru-tg__subtitle { 1216 display: block; 1217 margin: 0 0 .4rem; 1218 font-size: .98rem; 1219 font-weight: 500; 1220 color: #55606f; 1221} 1222 1223.guru-tg__channel { 1224 display: inline-block; 1225 font-size: .92rem; 1226 font-weight: 700; 1227 color: var(--tg-c, #229ED9); 1228} 1229 1230/* Botón celeste (Telegram). */ 1231.guru-tg__cta, 1232.entry-content .guru-tg__cta { 1233 display: inline-flex; 1234 align-items: center; 1235 justify-content: center; 1236 gap: .5rem; 1237 flex: 0 0 auto; 1238 padding: .85rem 1.6rem; 1239 background: var(--tg-c, #229ED9); 1240 color: #ffffff; 1241 border: 0; 1242 border-radius: 10px; 1243 font-size: 1rem; 1244 font-weight: 800; 1245 text-transform: uppercase; 1246 letter-spacing: .03em; 1247 text-decoration: none; 1248 white-space: nowrap; 1249 box-shadow: 0 8px 20px -8px rgba(var(--tg-c-rgb, 34, 158, 217), .6); 1250 transition: transform .15s ease, filter .15s ease; 1251} 1252 1253.guru-tg__cta .guru-tg__logo { 1254 width: 18px; 1255 height: 18px; 1256} 1257 1258.guru-tg__cta:hover, 1259.guru-tg__cta:focus { 1260 transform: translateY(-1px); 1261 filter: brightness(1.06); 1262 color: #ffffff; 1263} 1264 1265@media (max-width: 540px) { 1266 .guru-tg { padding: 1.35rem 1.15rem 1.2rem; } 1267 .guru-tg__body { flex-basis: 100%; } 1268 .guru-tg__cta { width: 100%; } 1269 .guru-tg__title { font-size: 1.18rem; } 1270} 1271 1272@media (prefers-reduced-motion: reduce) { 1273 .guru-tg__cta { transition: none; } 1274} 1275 1276/* 1277 * Guru â Banner de newsletter del sidebar (.guru-sn). 1278 * 1279 * Banner vertical con captura de email (Brevo) para la barra lateral. 1280 * Temática de apuestas deportivas. Colores y textos se configuran desde el 1281 * Customizer (sección "Newsletter sidebar"); llegan como variables inline: 1282 * --sn-bg fondo del banner 1283 * --sn-text color de texto base 1284 * --sn-accent color de acento (borde superior, botón, foco) 1285 * --sn-accent-rgb versión rgb del acento para rgba() 1286 */ 1287 1288.guru-sn { 1289 position: relative; 1290 display: flex; 1291 flex-direction: column; 1292 gap: .7rem; 1293 width: 100%; 1294 margin: 1rem 0 1.5rem; 1295 padding: 1.4rem 1.15rem 1.25rem; 1296 background: var(--sn-bg, #ffffff); 1297 border: 1px solid rgba(var(--sn-accent-rgb, 22, 163, 74), .28);
1298 border-top: 4px solid var(--sn-accent, #16a34a); 1299 border-radius: 14px; 1300 box-shadow: 0 10px 28px -14px rgba(0, 0, 0, .22), 0 2px 6px rgba(0, 0, 0, .05); 1301 color: var(--sn-text, #1a1a2e); 1302 text-align: center; 1303 font-family: inherit; 1304 line-height: 1.45; 1305 box-sizing: border-box; 1306 overflow: hidden; 1307} 1308 1309.guru-sn *, 1310.guru-sn *::before, 1311.guru-sn *::after { 1312 box-sizing: border-box; 1313} 1314 1315/* Glow decorativo con el tono de acento. */ 1316.guru-sn::before { 1317 content: ''; 1318 position: absolute; 1319 top: -45px; 1320 right: -45px; 1321 width: 150px; 1322 height: 150px; 1323 background: radial-gradient(circle, rgba(var(--sn-accent-rgb, 22, 163, 74), .14) 0%, transparent 70%); 1324 pointer-events: none; 1325 z-index: 0; 1326} 1327 1328.guru-sn > * { 1329 position: relative; 1330 z-index: 1; 1331} 1332 1333.guru-sn__eyebrow { 1334 align-self: center; 1335 display: inline-flex; 1336 align-items: center; 1337 gap: .4rem; 1338 font-size: .68rem; 1339 font-weight: 800; 1340 letter-spacing: .1em; 1341 text-transform: uppercase; 1342 color: var(--sn-accent, #16a34a); 1343} 1344 1345.guru-sn__eyebrow-icon { 1346 width: 15px; 1347 height: 15px; 1348 flex: 0 0 auto; 1349} 1350 1351.guru-sn__title { 1352 margin: 0; 1353 font-size: 1.3rem; 1354 line-height: 1.2; 1355 font-weight: 800; 1356 letter-spacing: -.01em; 1357 color: var(--sn-text, #14161f); 1358} 1359 1360.guru-sn__subtitle { 1361 margin: 0; 1362 font-size: .92rem; 1363 font-weight: 500; 1364 color: var(--sn-text, #55606f); 1365 opacity: .82; 1366} 1367 1368.guru-sn__form { 1369 display: flex; 1370 flex-direction: column; 1371 gap: .55rem; 1372 margin: .2rem 0 0; 1373} 1374 1375/* Honeypot anti-bots â fuera de pantalla, no lo ve el usuario. */ 1376.guru-sn__hp { 1377 position: absolute; 1378 left: -9999px; 1379 width: 1px; 1380 height: 1px; 1381 overflow: hidden; 1382} 1383 1384.guru-sn__input { 1385 width: 100%; 1386 padding: .75rem .9rem; 1387 background: #ffffff; 1388 border: 1px solid rgba(0, 0, 0, .16); 1389 border-radius: 10px; 1390 color: #14161f; 1391 font-family: inherit; 1392 font-size: .95rem; 1393 line-height: 1.3; 1394 transition: border-color .15s ease, box-shadow .15s ease; 1395} 1396 1397.guru-sn__input::placeholder { 1398 color: #9aa2ae; 1399} 1400 1401.guru-sn__input:focus { 1402 outline: none; 1403 border-color: var(--sn-accent, #16a34a); 1404 box-shadow: 0 0 0 3px rgba(var(--sn-accent-rgb, 22, 163, 74), .18); 1405} 1406 1407.guru-sn__input:disabled { 1408 background: #f3f4f6; 1409 color: #6b7280; 1410 cursor: default; 1411 opacity: .8; 1412} 1413 1414/* El atributo hidden debe ganarle al display de las clases de abajo. */ 1415.guru-sn__button[hidden], 1416.guru-sn__form[hidden] { 1417 display: none; 1418} 1419 1420.guru-sn__button { 1421 display: block; 1422 width: 100%; 1423 padding: .8rem 1.2rem; 1424 background: var(--sn-accent, #16a34a); 1425 color: #ffffff; 1426 border: 0; 1427 border-radius: 10px; 1428 font-family: inherit; 1429 font-size: .95rem; 1430 font-weight: 800; 1431 text-transform: uppercase; 1432 letter-spacing: .04em; 1433 cursor: pointer; 1434 box-shadow: 0 8px 20px -8px rgba(0, 0, 0, .35); 1435 transition: transform .15s ease, filter .15s ease; 1436} 1437 1438.guru-sn__button:hover, 1439.guru-sn__button:focus-visible { 1440 transform: translateY(-1px); 1441 filter: brightness(1.06); 1442} 1443 1444.guru-sn__button:active { 1445 transform: translateY(1px); 1446} 1447 1448.guru-sn__button[disabled] { 1449 opacity: .65; 1450 cursor: default; 1451 transform: none; 1452 filter: none; 1453} 1454 1455/* Mensaje de feedback (éxito / error) tras el submit. */ 1456.guru-sn__message { 1457 margin: .15rem 0 0; 1458 font-size: .85rem; 1459 font-weight: 600; 1460 line-height: 1.35; 1461} 1462 1463.guru-sn__message[hidden] { 1464 display: none; 1465} 1466 1467.guru-sn__message.is-success { 1468 color: #15803d; 1469} 1470 1471.guru-sn__message.is-error { 1472 color: #dc2626; 1473} 1474 1475.guru-sn__disclaimer { 1476 margin: .4rem 0 0; 1477 font-size: .66rem; 1478 line-height: 1.4; 1479 color: var(--sn-text, #8a929e); 1480 opacity: .68; 1481 font-weight: 400; 1482} 1483 1484@media (max-width: 480px) { 1485 .guru-sn { padding: 1.25rem 1rem 1.1rem; } 1486 .guru-sn__title { font-size: 1.2rem; } 1487} 1488 1489@media (prefers-reduced-motion: reduce) { 1490 .guru-sn__input, 1491 .guru-sn__button { transition: none; } 1492} 1493 1494/*# sourceURL=guru-style-inline-css */ 1495</style> 1496<link rel="https://api.w.org/" href="https://apostar.com.ec/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://apostar.com.ec/wp-json/wp/v2/pages/14234" />
1496<script async id="google_gtagjs" src="https://apostar.com.ec/?local_ga_js=4bcaf11ac9f74fde3c2d05d826b77c4f"></script>
vendor: 1 bytes, line 1496
1496
1497<script id="google_gtagjs-inline">
vendor: 124 bytes, line 1498
1498window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', '
1498G-XH8BYWFRQX
vendor: 9 bytes, line 1498
1498', {} );
1499</script>
1499 1500<link rel="icon" href="https://apostar.com.ec/wp-content/uploads/2022/09/ecuador-apuestas.svg" sizes="32x32" /> 1501<link rel="icon" href="https://apostar.com.ec/wp-content/uploads/2022/09/ecuador-apuestas.svg" sizes="192x192" /> 1502<link rel="apple-touch-icon" href="https://apostar.com.ec/wp-content/uploads/2022/09/ecuador-apuestas.svg" /> 1503<meta name="msapplication-TileImage" content="https://apostar.com.ec/wp-content/uploads/2022/09/ecuador-apuestas.svg" /> 1504</head> 1505<body class="wp-singular page-template-default page page-id-14234 wp-custom-logo wp-embed-responsive wp-theme-repo-igl-main"> 1506 1507<a class="skip-link screen-reader-text" href="#main-content">Saltar al contenido</a> 1508 1509<header id="site-header" class="site-header" role="banner"> 1510 <!-- Top bar: logo centered + CTA --> 1511 <div class="header-top"> 1512 <div class="container header-top__inner"> 1513 <div class="header-top__left"> 1514 <button class="menu-toggle" aria-controls="primary-nav" aria-expanded="false" aria-label="Abrir menú"> 1515 <span class="hamburger"></span> 1516 </button> 1517 </div> 1518 1519 <div class="site-branding"> 1520 <a href="https://apostar.com.ec/" class="custom-logo-link" rel="home"> 1521 <img src="https://apostar.com.ec/wp-content/uploads/2022/06/logo_apostar-com-ec.svg" class="custom-logo" alt="apostar.com.ec" width="250" height="80" decoding="async" fetchpriority="high"> 1522 </a> 1523 </div> 1524 1525 <div class="header-top__right"> 1526 <div class="header-cta"> 1527 </div> 1528 </div> 1529 </div> 1530 </div> 1531 1532 <!-- Bottom bar: navigation menu --> 1533 <div class="header-nav"> 1534 <div class="container header-nav__inner"> 1535 <nav id="primary-nav" class="main-navigation" role="navigation" aria-label="Navegación principal"> 1536 <button class="nav-close-btn" aria-label="Cerrar menú"> 1537 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 1538 </button> 1539 <ul id="menu-apostar-com-ec" class="nav-menu"><li id="menu-item-14100" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-14100"><a href="https://apostar.com.ec/casas-de-apuestas/">Casas de apuestas</a></li> 1540<li id="menu-item-13885" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-13885"><a href="https://apostar.com.ec/slots/">Jugar slots</a></li> 1541<li id="menu-item-14759" class="menu-item menu-item-type-taxonomy menu-item-object-category current-menu-ancestor current-menu-parent menu-item-has-children menu-item-14759"><a href="https://apostar.com.ec/casinos/">Casinos</a> 1542<ul class="sub-menu"> 1543 <li id="menu-item-14301" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-14234 current_page_item menu-item-14301"><a href="https://apostar.com.ec/blackjack-online/" aria-current="page">Blackjack online</a></li> 1544 <li id="menu-item-14300" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14300"><a href="https://apostar.com.ec/crash-games/">Crash Games</a></li> 1545 <li id="menu-item-14299" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14299"><a href="https://apostar.com.ec/guia-completa-de-poker-online-domina-las-manos-tacticas-claves-y-donde-jugar/">GuÃa póker online</a></li> 1546</ul> 1547</li> 1548<li id="menu-item-4200" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4200"><a href="https://apostar.com.ec/bonos/">Bonos</a></li> 1549<li id="menu-item-4199" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-4199"><a href="https://apostar.com.ec/apuestas-deportivas/">Apuestas deportivas</a> 1550<ul class="sub-menu"> 1551 <li id="menu-item-14298" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14298"><a href="https://apostar.com.ec/?page_id=12286">Apuestas de fútbol en Ecuador</a></li> 1552</ul> 1553</li> 1554<li id="menu-item-341" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-341"><a href="https://apostar.com.ec/pronosticos/">Pronósticos</a></li> 1555<li id="menu-item-5083" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5083"><a href="https://apostar.com.ec/contacto/">Contacto</a></li> 1556</ul> <aside class="guru-menu-casa" aria-label="Casa destacada"> 1557 <span class="guru-menu-casa__label">CASA DESTACADA</span> 1558 <div class="guru-menu-casa__row"> 1559 <a class="guru-menu-casa__logo" href="https://apostar.com.ec/casas-de-apuestas/bet365/"> 1560 <img width="140" height="40" src="https://apostar.com.ec/wp-content/uploads/2022/06/bet365.svg" class="attachment-guru-card size-guru-card
1560wp-post-image" alt="Bet365" loading="lazy" /> </a> 1561 <span class="guru-menu-casa__bono"> 1562 <span class="guru-menu-casa__bono-label">Bono hasta</span> 1563 <span class="guru-menu-casa__bono-value"><span class="bono-currency guru-menu-casa__bono-currency">$</span><span class="bono-amount guru-menu-casa__bono-amount">30</span></span> 1564 </span> 1565 <a class="guru-menu-casa__cta" href="https://apostar.com.ec/ir/bet365ranksportbono" target="_blank" rel="noopener noreferrer nofollow">REGISTRARSE</a> 1566 </div> 1567 </aside> 1568 </nav> 1569 </div> 1570 </div> 1571</header> 1572 1573 1574 1575<style id="guru-pcb-css">.guru-pcb.guru-pcb--sticky{position:sticky;top:0;z-index:200;transition:top .3s ease} 1576.guru-pcb{position:relative;overflow:visible;isolation:isolate;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.9rem 1.2rem;padding:.85rem 1.1rem;background:linear-gradient(110deg,#5b2bd6 0%,#1f9ed6 26%,#16b87a 50%,#ff7a00 74%,#e22653 100%);background-size:220% 100%;animation:guru-pcb-bg 15s ease-in-out infinite;box-shadow:inset 0 -2px 0 rgba(255,255,255,.18);font-family:inherit} 1577.guru-pcb__fx{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none} 1578.guru-pcb__shape{position:absolute;width:34%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:0;filter:blur(26px);mix-blend-mode:screen;opacity:.55} 1579.guru-pcb__shape--1{background:radial-gradient(circle,rgba(255,221,0,.7),transparent 70%);animation:guru-pcb-float-1 14s ease-in-out infinite} 1580.guru-pcb__shape--2{background:radial-gradient(circle,rgba(255,255,255,.6),transparent 70%);animation:guru-pcb-float-2 19s ease-in-out infinite -5s} 1581.guru-pcb__shape--3{background:radial-gradient(circle,rgba(0,220,255,.55),transparent 70%);animation:guru-pcb-float-3 16s ease-in-out infinite -3s} 1582.guru-pcb::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,.18),rgba(0,0,0,.32));pointer-events:none} 1583.guru-pcb__fx::after{content:"";position:absolute;top:0;bottom:0;left:-30%;width:22%;z-index:1;background:linear-gradient(100deg,transparent,rgba(255,255,255,.18) 50%,transparent);transform:skewX(-18deg);animation:guru-pcb-sheen 6.5s ease-in-out infinite;pointer-events:none} 1584@keyframes guru-pcb-bg{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}} 1585@keyframes guru-pcb-float-1{0%,100%{left:10%;top:35%}33%{left:45%;top:75%}66%{left:80%;top:20%}} 1586@keyframes guru-pcb-float-2{0%,100%{left:78%;top:60%}33%{left:30%;top:25%}66%{left:55%;top:80%}} 1587@keyframes guru-pcb-float-3{0%,100%{left:48%;top:40%}33%{left:88%;top:72%}66%{left:15%;top:55%}} 1588@keyframes guru-pcb-sheen{0%{left:-30%}55%{left:120%}100%{left:120%}} 1589@keyframes guru-pcb-glow{0%,100%{box-shadow:0 0 0 2px rgba(255,255,255,.55),0 0 10px rgba(255,255,255,.3)}50%{box-shadow:0 0 0 2px rgba(255,255,255,.95),0 0 24px rgba(255,255,255,.8)}} 1590@keyframes guru-pcb-logo-glow{0%,100%{filter:drop-shadow(0 0 3px rgba(255,255,255,.45))}50%{filter:drop-shadow(0 0 11px rgba(255,255,255,.95))}} 1591.guru-pcb>*:not(.guru-pcb__fx):not(.guru-pcb__toggle){position:relative;z-index:2} 1592.guru-pcb__logo{height:38px;width:auto;max-width:130px;object-fit:contain;flex:0 0 auto;filter:drop-shadow(0 0 3px rgba(255,255,255,.45));animation:guru-pcb-logo-glow 2.8s ease-in-out infinite;will-change:filter} 1593.guru-pcb__text{margin:0;color:#fff;font-weight:700;font-size:1rem;line-height:1.2;text-shadow:0 1px 3px rgba(0,0,0,.55),0 0 12px rgba(0,0,0,.35)} 1594.guru-pcb__hl-xl{display:inline-block;font-size:1.32em;font-weight:900;letter-spacing:.01em;transform:rotate(-3deg);text-shadow:0 2px 10px rgba(0,0,0,.55);padding:0 .08em} 1595.guru-pcb__hl{display:inline-block;font-style:normal;font-size:1.12em;font-weight:800;transform:rotate(1.5deg);padding:0 .04em} 1596.guru-pcb__code{position:relative;display:inline-flex;flex-direction:row;align-items:center;gap:.45rem;cursor:pointer;background:rgba(0,0,0,.32);color:#fff;border:2px dashed rgba(255,255,255,.85);border-radius:.5rem;padding:.32rem .8rem;font-family:inherit;line-height:1;transition:transform .15s ease,background .15s ease} 1597.guru-pcb__code:hover,.guru-pcb__code:focus-visible{transform:translateY(-1px);background:rgba(0,0,0,.45)} 1598.guru-pcb__code-value{font-weight:900;font-size:1.05rem;letter-spacing:.12em;font-variant-numeric:tabular-nums} 1599.guru-pcb__code-icon{width:15px;height:15px;flex:0 0 auto;opacity:.9} 1600.guru-pcb__code-toast{position:absolute;
1600left:50%;top:-1.7rem;transform:translateX(-50%) translateY(4px);background:#111;color:#fff;font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:.16rem .42rem;border-radius:.25rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease} 1601.guru-pcb__code.is-copied{background:rgba(0,0,0,.5)} 1602.guru-pcb__code.is-copied .guru-pcb__code-toast{opacity:1;transform:translateX(-50%) translateY(0)} 1603.guru-pcb__cta{display:inline-flex;align-items:center;background:var(--pcb-btn-bg);color:var(--pcb-btn-text);padding:.6rem 1.3rem;border-radius:.55rem;font-weight:900;text-decoration:none;text-transform:uppercase;letter-spacing:.05em;font-size:.9rem;transition:transform .18s ease,filter .18s ease;border:0;animation:guru-pcb-glow 2.4s ease-in-out infinite;will-change:box-shadow} 1604.guru-pcb__cta:hover,.guru-pcb__cta:focus{transform:translateY(-1px);filter:brightness(1.04);color:var(--pcb-btn-text)} 1605.guru-pcb__compliance{flex:0 0 100%;width:100%;order:1;margin:-.35rem 0 0;text-align:center;color:#fff;opacity:.8;font-size:.62rem;line-height:1.3;font-weight:400;letter-spacing:.01em;text-shadow:0 1px 2px rgba(0,0,0,.5)} 1606.guru-pcb__toggle{display:none;position:absolute;left:50%;bottom:-12px;transform:translateX(-50%);z-index:5;align-items:center;justify-content:center;width:52px;height:24px;padding:0;border:1px solid rgba(0,0,0,.08);border-radius:12px;background:#fff;color:#4b5563;cursor:pointer;-webkit-tap-highlight-color:transparent;box-shadow:0 3px 9px rgba(0,0,0,.28);transition:background .15s ease,color .15s ease} 1607.guru-pcb__toggle:hover,.guru-pcb__toggle:focus-visible{background:#f1f2f4;color:#111} 1608.guru-pcb__toggle svg{width:18px;height:18px;transition:transform .25s ease} 1609.guru-pcb.is-collapsed .guru-pcb__toggle svg{transform:rotate(180deg)} 1610.guru-pcb__collapsed-label{display:none;margin:0;padding:0 2rem;color:#fff;font-weight:800;font-size:.85rem;letter-spacing:.02em;text-shadow:0 1px 3px rgba(0,0,0,.55);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%} 1611@media (max-width:720px){.guru-pcb{gap:.55rem .8rem;padding:.85rem .7rem 1rem;margin-bottom:1rem}.guru-pcb__logo{height:30px;max-width:96px}.guru-pcb__text{font-size:.85rem;flex-basis:100%;text-align:center;order:-1}.guru-pcb__code-value{font-size:.95rem;letter-spacing:.1em}.guru-pcb__cta{font-size:.8rem;padding:.5rem 1.05rem}.guru-pcb__compliance{font-size:.56rem;margin-top:.3rem}.guru-pcb__toggle{display:inline-flex}.guru-pcb.is-collapsed{gap:0;min-height:2.3rem;padding-top:.55rem;padding-bottom:.55rem}.guru-pcb.is-collapsed>*:not(.guru-pcb__fx):not(.guru-pcb__toggle):not(.guru-pcb__collapsed-label){display:none!important}.guru-pcb.is-collapsed .guru-pcb__collapsed-label{display:block;line-height:1.1}} 1612@media (prefers-reduced-motion:reduce){.guru-pcb,.guru-pcb__shape--1,.guru-pcb__shape--2,.guru-pcb__shape--3,.guru-pcb__fx::after,.guru-pcb__cta,.guru-pcb__logo{animation:none}.guru-pcb__cta,.guru-pcb__code,.guru-pcb__toggle svg{transition:none}}</style> 1613<aside class="guru-pcb guru-pcb--sticky" style="--pcb-btn-bg:#ffffff;--pcb-btn-text:#111111;" aria-label="Reclama 200 Giros Gratis con el código especial"> 1614 <span class="guru-pcb__fx" aria-hidden="true"> 1615 <span class="guru-pcb__shape guru-pcb__shape--1"></span> 1616 <span class="guru-pcb__shape guru-pcb__shape--2"></span> 1617 <span class="guru-pcb__shape guru-pcb__shape--3"></span> 1618 </span> 1619 <button type="button" class="guru-pcb__toggle" aria-expanded="true" aria-label="Ocultar promoción" data-label-collapse="Ocultar promoción" data-label-expand="Mostrar promoción"> 1620 <svg aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M18 15l-6-6-6 6"/></svg> 1621 </button> 1622 <span class="guru-pcb__collapsed-label" aria-hidden="true">BetWinner · AEC100</span> 1623 <img class="guru-pcb__logo" src="https://apostar.com.ec/wp-content/uploads/2026/08/Betwinner.svg" alt="BetWinner" loading="eager" decoding="async" width="130" height="38"> 1624 <p class="guru-pcb__text">Reclama <strong class="guru-pcb__hl-xl">200 Giros Gratis</strong> con el código especial</p> 1625 <button type="button" class="guru-pcb__code" data-code="AEC100" aria-label="Copiar código AEC100"> 1626 <span class="guru-pcb__code-value">AEC100</span> 1627 <svg class="guru-pcb__code-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg> 1628 <span class="guru-pcb__code-toast" aria-hidden="true">¡Copiado!</span> 1629 </button> 1630 <a class="guru-pcb__cta" href="https://apostar.com.ec/ir/betwinnerpromo" target="_blank" rel="noopener noreferrer nofollow">ACTIVAR CÃDIGO</a> 1631 </aside>
1632<script> 1633(function(){ 1634 var b = document.querySelector('.guru-pcb__code'); 1635 if (!b) return; 1636 function fallback(t){ var ta=document.createElement('textarea'); ta.value=t; ta.style.position='fixed'; ta.style.opacity='0'; document.body.appendChild(ta); ta.focus(); ta.select(); try{document.execCommand('copy');}catch(e){} document.body.removeChild(ta); } 1637 b.addEventListener('click', function(){ 1638 var code = b.getAttribute('data-code') || ''; 1639 var done = function(){ 1640 b.classList.add('is-copied'); 1641 setTimeout(function(){ b.classList.remove('is-copied'); }, 1800); 1642 }; 1643 if (navigator.clipboard && navigator.clipboard.writeText) { 1644 navigator.clipboard.writeText(code).then(done).catch(function(){ fallback(code); done(); }); 1645 } else { fallback(code); done(); } 1646 }); 1647})(); 1648</script>
vendor: 1 bytes, line 1648
1648
1649<script> 1650(function(){ 1651 var banner = document.querySelector('.guru-pcb--sticky'); 1652 var header = document.getElementById('site-header'); 1653 if (!banner || !header) return; 1654 // El banner queda siempre visible y pegado al borde inferior del header: si 1655 // el header está arriba, va debajo; si el header se oculta al scrollear, sube 1656 // a top:0. Leemos la posición real del header (sirva como sea que se oculte). 1657 var ticking = false; 1658 function sync(){ var b = header.getBoundingClientRect().bottom; banner.style.top = (b > 0 ? b : 0) + 'px'; ticking = false; } 1659 function onScroll(){ if (!ticking) { requestAnimationFrame(sync); ticking = true; } } 1660 sync(); 1661 window.addEventListener('scroll', onScroll, { passive: true }); 1662 window.addEventListener('resize', sync, { passive: true }); 1663 header.addEventListener('transitionend', sync); 1664})(); 1665</script>
vendor: 1 bytes, line 1665
1665
1666<script> 1667(function(){ 1668 var banner = document.querySelector('.guru-pcb'); 1669 if (!banner) return; 1670 var toggle = banner.querySelector('.guru-pcb__toggle'); 1671 if (!toggle) return; 1672 var KEY = 'guruPcbCollapsed'; 1673 function apply(collapsed){ 1674 banner.classList.toggle('is-collapsed', collapsed); 1675 toggle.setAttribute('aria-expanded', collapsed ? 'false' : 'true'); 1676 toggle.setAttribute('aria-label', collapsed ? (toggle.getAttribute('data-label-expand') || '') : (toggle.getAttribute('data-label-collapse') || '')); 1677 } 1678 var stored = false; 1679 try { stored = localStorage.getItem(KEY) === '1'; } catch(e) {} 1680 apply(stored); 1681 toggle.addEventListener('click', function(){ 1682 var collapsed = !banner.classList.contains('is-collapsed'); 1683 apply(collapsed); 1684 try { localStorage.setItem(KEY, collapsed ? '1' : '0'); } catch(e) {} 1685 // El alto del banner cambió: resincronizamos el sticky (usa el listener de resize). 1686 window.dispatchEvent(new Event('resize')); 1687 }); 1688})(); 1689</script>
1689 1690 1691 1692 1693<main id="main-content" class="site-main" role="main"> 1694 1695<section class="page-hero page-hero--page"> 1696 <div class="container"> 1697 <nav class="breadcrumbs" aria-label="Breadcrumb"><a href="https://apostar.com.ec">Inicio</a> <span class="sep">/</span> <span aria-current="page">Blackjack online: GuÃa completa para jugar en Ecuador</span></nav> <h1 class="page-hero__title">Blackjack online: GuÃa completa para jugar en Ecuador</h1> 1698 </div> 1699</section> 1700 1701<div class="container"> 1702 <div class="single-layout"> 1703 1704 <div class="entry-content page-content" id="entry-content"> 1705 <p>El Blackjack se ha consolidado como el juego de mesa más estratégico de los casinos online. A diferencia de las tragamonedas, donde todo depende del azar, en el Blackjack tus decisiones impactan directamente en el resultado, esto lo que lo convierte en uno de los juegos más rentables del casino.</p> 1706<p>En esta guÃa te enseñamos desde las reglas básicas hasta las estrategias avanzadas y dónde encontrar los mejores casinos para jugar con dinero real en Ecuador.</p> 1707<h2>¿Qué es el Blackjack?</h2> 1708<p><picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2025/12/que-es-blackjack.webp 672w, https://apostar.com.ec/wp-content/uploads/2025/12/que-es-blackjack-300x194.webp 300w" sizes="(max-width: 672px) 100vw, 672px"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-14240" src="https://apostar.com.ec/wp-content/uploads/2025/12/que-es-blackjack.jpg" alt="Que es Blackjack" width="672" height="435" srcset="https://apostar.com.ec/wp-content/uploads/2025/12/que-es-blackjack.jpg 672w, https://apostar.com.ec/wp-content/uploads/2025/12/que-es-blackjack-300x194.jpg 300w" sizes="(max-width: 672px) 100vw, 672px" /></picture></p> 1709<p>El Blackjack, también conocido como 21, es un juego de cartas que enfrenta al jugador contra el crupier. Nació en Francia en el siglo XVII como âVingt et Unâ (veintiuno) y evolucionó hasta convertirse en el juego de mesa más popular de los casinos modernos.</p> 1710<p>En Ecuador, el Blackjack online está disponible tanto en versión RNG (generador aleatorio) como con crupieres en vivo.</p> 1711<p>El objetivo del juego es simple: sumar 21 puntos o acercarse lo más posible sin pasarse, superando la mano del crupier. Si te pasas de 21, pierdes automáticamente sin importar qué tenga el crupier. Esta regla le da a la casa su ventaja principal.</p> 1712<h2>¿Cómo ganar en el Blackjack en un casino online?</h2> 1713<p>En esencia, ganas en este juego si:</p> 1714<ol> 1715<li>Tu mano suma más puntos que la del crupier, sin pasarte de 21.</li> 1716<li>El crupier se pasa de 21 y tu mano no.</li> 1717<li>Obtienes un âBlackjackâ natural (una mano inicial de 21 con un As y una carta de valor 10).</li> 1718</ol> 1719<p>Ahora bien, ganar en Blackjack pasa por combinar tres elementos básicos: Conocer los valores de las cartas, dominar la estrategia básica y hacer una buena gestión de bankroll.</p> 1720<p>Cada mano tiene una decisión óptima según tu total y la carta visible del crupier. La ventaja de la casa en Blackjack varÃa drásticamente según tu forma de jugar:</p> 1721<ul> 1722<li>Sin estrategia, el casino tiene entre 2% y 3% de ventaja.</li> 1723<li>Jugando con estrategia básica, reduces esta ventaja hasta 0.44-0.5%. Esto significa que por cada $100 apostados, en lugar de perder $2-3 solo pierdes $0.50 a largo plazo, lo que marca una diferencia enorme en sesiones extendidas.</li> 1724</ul> 1725<p>Para ganar consistentemente debes evitar decisiones emocionales, además, seguir una estrategia básica no garantiza ganar cada mano, pero maximiza tus probabilidades a largo plazo.</p> 1726<h2>Valores de las cartas en el blackjack</h2> 1727<p>El sistema de puntuación del Blackjack es directo:</p> 1728<ul> 1729<li>Las cartas numéricas del <strong>2 al 10</strong> conservan su valor nominal.</li> 1730<li>Las figuras <strong>(J, Q, K)</strong> valen 10 puntos cada una.</li> 1731<li>El <strong>As</strong> es la carta más versátil: puede valer 1 u 11 puntos según te convenga.</li> 1732</ul> 1733<p>Esta flexibilidad del As crea dos tipos de manos:</p> 1734<ul> 1735<li>Una <em>âmano duraâ</em> no tiene As o el As solo puede valer 1 (porque valer 11 te pasarÃa de 21). Por ejemplo, Rey-7 es una mano dura de 17.</li> 1736<li>O una <em>âmano blandaâ</em> que incluye un As que vale 11. Por ejemplo, As-6 es un 17 blando porque puedes contar el As como 11. Si pides carta y te sale un 10, el As automáticamente pasa a valer 1 (17 â 27 â 17 duro) sin que te pases.</li> 1737</ul> 1738<p>Las manos blandas son valiosas porque te dan flexibilidad. Puedes arriesgar pidiendo carta sin miedo a pasarte en la primera petición. Esta caracterÃstica estratég
1738ica cambia completamente cómo debes jugar estas manos.</p> 1739<h2>Aprende a jugar una mano de Blackjack: GuÃa de movimientos</h2> 1740<p><picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2025/12/como-jugar-blackjack.webp 672w, https://apostar.com.ec/wp-content/uploads/2025/12/como-jugar-blackjack-300x194.webp 300w" sizes="(max-width: 672px) 100vw, 672px"><img decoding="async" class="aligncenter size-full wp-image-14241" src="https://apostar.com.ec/wp-content/uploads/2025/12/como-jugar-blackjack.jpg" alt="Cómo jugar blackjack" width="672" height="435" srcset="https://apostar.com.ec/wp-content/uploads/2025/12/como-jugar-blackjack.jpg 672w, https://apostar.com.ec/wp-content/uploads/2025/12/como-jugar-blackjack-300x194.jpg 300w" sizes="(max-width: 672px) 100vw, 672px" /></picture></p> 1741<p>Una mano de Blackjack sigue una secuencia clara:</p> 1742<ol> 1743<li>Primero realizas tu apuesta dentro de los lÃmites de la mesa. En casinos online ecuatorianos, las apuestas mÃnimas suelen arrancar desde $1 en mesas regulares y $5-10 en mesas en vivo.</li> 1744<li>El crupier reparte dos cartas a cada jugador y dos para sà mismo. Las cartas de los jugadores se muestran boca arriba. El dealer revela solo una carta (la âcarta descubiertaâ), manteniendo la otra boca abajo. Esta información asimétrica es clave para tus decisiones estratégicas.</li> 1745<li>Si recibes un As y una carta de valor 10 (10, J, Q o K), tienes Blackjack natural. Ganas automáticamente con pago de 3:2 (apuestas $10, ganas $15) a menos que el crupier también tenga Blackjack, resultando en empate. Si tu carta de
1745scubierta del dealer es un As o 10, puede revisar su carta oculta. Si tiene Blackjack, la mano termina inmediatamente.</li> 1746</ol> 1747<p>Ahora tomas decisiones basadas en tus cartas y la del crupier. Las opciones principales son:</p> 1748<ul> 1749<li>Pedir carta (Hit)</li> 1750<li>Plantarte (Stand)</li> 1751<li>Doblar apuesta (Double)</li> 1752<li>Dividir pares (Split)</li> 1753<li>Rendirse (Surrender, si está permitido)</li> 1754</ul> 1755<p>Después de que todos los jugadores completan sus manos, el crupier revela su carta oculta y juega según reglas fijas: debe pedir con 16 o menos y plantarse con 17 o más. Finalmente, se comparan las manos y se pagan las ganancias.</p> 1756<h3>Pedir (<em>Hit</em>) o Plantarse (<em>Stand</em>): La decisión clave en el Blackjack</h3> 1757<p>Decidir entre pedir o plantarse es el fundamento del Blackjack estratégico. Las reglas varÃan según tengas una mano dura o blanda y qué carta muestre el crupier.</p> 1758<p><strong>Para <em>manos duras</em>, la estrategia básica establece patrones claros:</strong></p> 1759<ul> 1760<li>Con 11 o menos siempre pides carta porque es imposible pasarte.</li> 1761<li>Con 12 a 16 tienes la âzona de peligroâ: pides si el crupier muestra 7 o más (cartas fuertes), te plantas si muestra 2-6 (cartas débiles que probablemente lo harán pasarse).</li> 1762<li>Con 17 o más siempre te plantas, incluso si el crupier muestra As. El riesgo de pasarte supera el beneficio de mejorar.</li> 1763</ul> 1764<p><strong>Las <em>manos blandas</em> siguen reglas diferentes por su flexibilidad:</strong></p> 1765<ul> 1766<li>Siempre pides con 17 blando o menos porque no puedes pasarte en la primera carta. Con As-6 (17 blando) contra 7 del crupier, por ejemplo, debes pedir.</li> 1767<li>Con As-8 (19 blando) o As-9 (20 blando) te plantas siempre porque son manos muy fuertes.</li> 1768</ul> 1769<p><strong>La <em>carta del crupier</em> influye mucho en tus decisiones:</strong></p> 1770<ul> 1771<li>Las cartas 2-6 son débiles porque tienen alta probabilidad de que el dealer se pase.</li> 1772<li>Las cartas 7-As son fuertes porque es probable que el dealer llegue a 17-21.</li> 1773</ul> 1774<p>Esta diferencia explica por qué juegas más agresivo contra cartas débiles y más conservador contra cartas fuertes.</p> 1775<h3>Cómo funciona la opción de âRendiciónâ (<i>Surrender</i>)</h3> 1776<p>La rendición (<em>Surrender</em>) es una opción que no todos los <a href="https://apostar.com.ec/casino/" target="_blank" rel="noopener">casinos online</a> ofrecen. Te permite abandonar tu mano antes de jugarla, perdiendo solo la mitad de tu apuesta original. Parece una decisión negativa, pero es correcta en situaciones especÃficas donde tus probabilidades de ganar son extremadamente bajas.</p> 1777<p>Debes rendirte en dos escenarios principales:</p> 1778<ul> 1779<li>Primero, cuando tienes 16 duro contra As, 10 o 9 del crupier. Tu mano es débil y la del dealer probablemente será fuerte.</li> 1780<li>Segundo, cuando tienes 15 duro contra 10 del crupier. En estos casos, perder 50% de tu apuesta es mejor que arriesgarte a perder el 100% jugando la mano.</li> 1781</ul> 1782<p>La rendición puede ser âtempranaâ (antes de que el crupier revise su Blackjack, muy rara) o âtardÃaâ (después de revisar, la más común). Verificar si tu casino online la ofrece antes de jugar te permite aprovechar esta herramienta estratégica que reduce aún más la ventaja de la casa.</p> 1783<h2>Mejores estrategias para ganar dinero real jugando Blackjack</h2> 1784<p><picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2025/12/ganar-dinero-real-jugando-blackjack.webp 672w, https://apostar.com.ec/wp-content/uploads/2025/12/ganar-dinero-real-jugando-blackjack-300x194.webp 300w" sizes="(max-width: 672px) 100vw, 672px"><img decoding="async" class="aligncenter size-full wp-image-14242" src="https://apostar.com.ec/wp-content/uploads/2025/12/ganar-dinero-real-jugando-blackjack.jpg" alt="Ganar dinero real jugando blackjack" width="672" height="435" srcset="https://apostar.com.ec/wp-content/uploads/2025/12/ganar-dinero-real-jugando-blackjack.jpg 672w, https://apostar.com.ec/wp-content/uploads/2025/12/ganar-dinero-real-jugando-blackjack-300x194.jpg 300w" sizes="(max-width: 672px) 100vw, 672px" /></picture></p> 1785<p>Ganar dinero real en Blackjack va más allá de conocer las reglas. Requiere disciplina estratég
1785ica, gestión de bankroll y entender las matemáticas del juego. La estrategia básica es tu fundamento obligatorio.</p> 1786<p>La gestión de bankroll determina cuánto tiempo sobrevives en el juego. <em>Una regla prudente es nunca apostar más del 5% de tu capital total en una sola mano</em>. Si tu bankroll es de $100, tus apuestas deberÃan ser máximo $5. Esto te protege de las rachas de pérdidas inevitables y te mantiene jugando lo suficiente para que las probabilidades trabajen a tu favor.</p> 1787<p>Evita las apuestas secundarias como âInsuranceâ (seguro). Cuando el crupier muestra un As, el casino ofrece seguro contra su posible Blackjack. Matemáticamente, es una apuesta perdedora a largo plazo porque solo paga 2:1 cuando las probabilidades reales son menores. Los profesionales nunca toman seguro a menos que estén contando cartas.</p> 1788<p>Aprovecha los bonos de casino con inteligencia. Muchos casinos ecuatorianos ofrecen bonos de bienvenida, pero revisa siempre los requisitos de apuesta. El Blackjack suele contribuir menos que las tragamonedas al rollover (10-20% vs. 100%), lo que significa que necesitas apostar más para liberar el bono.</p> 1789<h2>Herramienta esencial: ¿Qué es la tabla de Blackjack y cómo te ayuda a ganar?</h2> 1790<p>La tabla de estrategia básica de Blackjack es un gráfico que muestra la decisión óptima para cada combinación de tu mano y la carta del crupier. Esta tabla reduce la ventaja de la casa a su mÃnimo posible sin técnicas avanzadas como el conteo de cartas.</p> 1791<p>La tabla se organiza en tres secciones:</p> 1792<ul> 1793<li>La primera cubre manos duras (sin As o con As que solo vale 1).</li> 1794<li>La segunda trata manos blandas (con As valiendo 11).</li> 1795<li>La tercera sección maneja pares que puedes dividir.</li> 1796</ul> 1797<p>Las filas representan tu mano, las columnas muestran la carta descubierta del crupier, y cada celda indica la mejor acción: P (Pedir), Q (Quedarse/Plantarse), D (Doblar), S (Separar/Dividir) o R (Rendirse).</p> 1798<p>Usar la tabla en casinos online es completamente legal. Puedes tenerla abierta en otra ventana o en tu celular mientras juegas. A diferencia de los casinos fÃsicos donde los crupieres pueden apresurarte, jugar online te da tiempo ilimitado para consultarla. Los jugadores experimentados memorizan los patrones principales mediante práctica repetida.</p> 1799<p>Las decisiones más contraintuitivas de la tabla suelen ser las más valiosas. Por ejemplo, doblar con 11 contra cualquier carta del crupier excepto As, o dividir 8-8 incluso contra un 10 del dealer. Estas jugadas maximizan tu valor esperado a largo plazo aunque parezcan arriesgadas a corto plazo.</p> 1800<h3>¿Cómo leer la tabla de Blackjack online?</h3> 1801<p>Leer la tabla de Blackjack requiere identificar tres elementos: tu mano total, la carta visible del crupier y el tipo de mano que tienes. Este proceso se vuelve automático con práctica:</p> 1802<ul> 1803<li><em>Primero determina si tu mano es dura, blanda o un par</em>. Si tienes 8-5, es una mano dura de 13. Si tienes As-6, es una mano blanda de 17. Si tienes 8-8, es un par que puedes dividir. Cada tipo de mano tiene su propia sección en la tabla.</li> 1804<li><em>Luego localiza tu mano en la columna izquierda de la sección correspondiente</em>. Busca la carta del crupier en la fila superior. La intersección te indica la acción recomendada. Por ejemplo, con 12 duro contra 3 del crupier, la tabla dice «Pedir». Con As-7 (18 blando) contra 9 del crupier, también dice «Pedir», aunque parezca contraintuitivo.</li> 1805</ul> 1806<p>Las abreviaturas en las tablas estándar son:</p> 1807<ul> 1808<li>H (Hit/Pedir)</li> 1809<li>S (Stand/Plantarse)</li> 1810<li>D (Double/Doblar)</li> 1811<li>Ds (Doblar si es posible, sino plantarse)</li> 1812<li>Dh (Doblar si es posible, sino pedir)</li> 1813<li>P (sPlit/Dividir), Rh (Rendirse si es posible, sino pedir)</li> 1814<li>Rs (Rendirse si es posible, sino plantarse).</li> 1815</ul> 1816<p>Familiarizarte con estas abreviaturas acelera tu lectura de la tabla.</p> 1817<h3>Cómo anticipar las jugadas del crupier en Blackjack</h3> 1818<p>Prever los movimientos del crupier es más simple que anticipar las acciones de otros jugadores porque el dealer sigue reglas fijas. En la mayorÃa de las variantes de Blackjack, el crupier debe pedir carta con 16 o menos y plantarse con 17 o más. Esta rigidez es tu ventaja estratég
1818ica.</p> 1819<p>La carta visible del crupier te da información valiosa sobre su probabilidad de pasarse:</p> 1820<ul> 1821<li>Las cartas 2-6 son «cartas débiles» porque obligan al dealer a pedir múltiples cartas, aumentando su riesgo de exceder 21. Un crupier mostrando 6 tiene aproximadamente 42% de probabilidad de pasarse. Por eso la estrategia básica te indica jugar más conservador contra estas cartas, dejando que el dealer se autodestruya.</li> 1822<li>Las cartas 7-As son «cartas fuertes» porque es probable que el crupier llegue a totales competitivos de 17-21. Un dealer mostrando 10 solo tiene 23% de probabilidad de pasarse. Contra cartas fuertes debes jugar agresivo, arriesgando más para alcanzar totales ganadores de 19-21.</li> 1823</ul> 1824<p>Un detalle crucial: algunos casinos online usan la regla «dealer must hit soft 17» (el crupier debe pedir con 17 blando). Esto aumenta ligeramente la ventaja de la casa porque le da al dealer más oportunidades de mejorar. Verificar esta regla antes de jugar afecta decisiones especÃficas de la estrategia básica, particularmente al doblar con 11.</p> 1825<h2>Contar cartas en el Blackjack online: ¿Es viable en el casino online?</h2> 1826<p><em>Contar cartas en Blackjack online es prácticamente imposible en la mayorÃa de los formatos.</em> Esta técnica avanzada, popularizada por pelÃculas como «21», funciona porque rastrea qué cartas ya salieron del mazo para predecir qué cartas quedan. Si quedan muchas cartas altas (10, J, Q, K, As), el jugador tiene ventaja. Si quedan muchas cartas bajas (2-6), la casa tiene ventaja.</p> 1827<p>En el Blackjack RNG (generador aleatorio de números) de casinos online, el mazo virtual se «baraja» después de cada mano. No importa qué cartas salieron en la mano anterior porque el software reinicia completamente el mazo. El conteo de cartas requiere que las cartas jugadas no vuelvan al mazo inmediatamente, condición que no existe en estos juegos.</p> 1828<p>En el Blackjack en vivo con crupieres reales la situación es diferente pero igualmente limitada. Los crupieres en estudios profesionales usan «continuous shuffle machines» (máquinas de barajado continuo) o barajan después de penetrar solo 50-60% del zapato (el conjunto de mazos). Esta penetración baja hace ineficaz el conteo porque nunca alcanzas situaciones de alta ventaja.</p> 1829<p>La conclusión práctica es clara: enfócate en dominar la estrategia básica perfectamente en lugar de intentar contar cartas online. La estrategia básica reduce la ventaja de la casa a 0.5% sin necesidad de técnicas avanzadas. Jugar con estrategia básica impecable es más rentable que contar cartas mal.</p> 1830<h2>Tipos de Blackjack online para jugar en Ecuador</h2> 1831<p><picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2025/12/tipos-de-blackjack.webp 672w, https://apostar.com.ec/wp-content/uploads/2025/12/tipos-de-blackjack-300x194.webp 300w" sizes="auto, (max-width: 672px) 100vw, 672px"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-14243" src="https://apostar.com.ec/wp-content/uploads/2025/12/tipos-de-blackjack.jpg" alt="Tipos de blackjack" width="672" height="435" srcset="https://apostar.com.ec/wp-content/uploads/2025/12/tipos-de-blackjack.jpg 672w, https://apostar.com.ec/wp-content/uploads/2025/12/tipos-de-blackjack-300x194.jpg 300w" sizes="auto, (max-width: 672px) 100vw, 672px" /></picture></p> 1832<p>Los casinos online en Ecuador ofrecen múltiples variantes de Blackjack, cada una con reglas especÃficas que afectan la estrategia y la ventaja de la casa. Conocer estas diferencias te permite elegir la variante más favorable:</p> 1833<ul> 1834<li><strong>Blackjack Europeo</strong> es la variante más común. El crupier recibe solo una carta inicial y no revisa por Blackjack hasta que los jugadores completan sus manos. Esto significa que si doblas o divides contra un As o 10 del dealer y él termina teniendo Blackjack, pierdes todas tus apuestas adicionales. Esta regla aumenta ligeramente la ventaja de la casa comparada con el Blackjack Americano.</li> 1835<li><strong>Blackjack Americano</strong> (también llamado Hole Card) entrega dos cartas al crupier desde el inicio. Si su carta visible es As o 10, revisa inmediatamente por Blackjack. Si lo tiene, la mano termina sin que los jugadores puedan doblar o dividir. Esta regla protege al jugador de perder apuestas adicionales contra Blackjack del dealer.</li> 1836<li><strong>Lightning Blackjack</strong> es una variante moderna con multiplicadores aleatorios de hasta 25x en ciertas manos ganad
1836oras. Agrega emoción pero viene con un costo: paga solo 1:1 en lugar de 3:2 por Blackjack natural, aumentando significativamente la ventaja de la casa. Apropiado para entretenimiento ocasional, no para juego estratégico a largo plazo.</li> 1837<li><strong>Blackjack Surrender</strong> permite la opción de rendición, reduciendo la ventaja de la casa en 0.1% si usas esta opción correctamente.</li> 1838<li><strong>Atlantic City Blackjack</strong> usa 8 mazos y permite doblar después de dividir.</li> 1839<li><strong>Spanish 21</strong> remueve todos los 10s del mazo pero ofrece reglas compensatorias favorables.</li> 1840</ul> 1841<p>Cada variante requiere ajustes menores en la estrategia básica.</p> 1842<h2>Blackjack online vs Blackjack en vivo: ¿Cuál es mejor?</h2> 1843<p>El Blackjack online (RNG) y el Blackjack en vivo son experiencias distintas con ventajas y desventajas especÃficas. Tu elección depende de tus prioridades: velocidad, interacción social, confianza en el sistema o presupuesto.</p> 1844<p>El <em>Blackjack RNG</em> usa generadores aleatorios de números para distribuir cartas instantáneamente. Es ideal para practicar estrategia básica porque juegas a tu ritmo, sin presión. Las apuestas mÃnimas son muy bajas (desde $1) y no hay tiempos de espera entre manos. Puedes jugar cientos de manos por hora, acumulando experiencia rápidamente. La desventaja es la ausencia de elemento humano y algunos jugadores desconfÃan de los algoritmos.</p> 1845<p>El <em>Blackjack en vivo</em> transmite desde estudios profesionales con crupieres reales repartiendo cartas fÃsicas. Ofrece la autenticidad del casino fÃsico desde tu celular. Ves cada carta saliendo del zapato, eliminando dudas sobre manipulación. Puedes interactuar con el crupier mediante chat. Los lÃmites de mesa son más altos ($5-10 mÃnimo) y el ritmo es más lento porque esperan a todos los jugadores.</p> 1846<p>Para jugadores nuevos recomendamos empezar con RNG para aprender sin presión. Una vez domines la estrategia básica, migra al Blackjack en vivo para la experiencia completa. Si tu prioridad es maximizar volumen de manos y práctica, el RNG es superior. Si valoras la experiencia social y la transparencia visual, el en vivo es mejor.</p> 1847<h2>Apuesta al Blackjack en vivo</h2> 1848<p>El Blackjack en vivo ha revolucionado el juego online en Ecuador. Combina la comodidad de jugar desde casa con la autenticidad de un casino real. Los principales casinos online en Ecuador ofrecen múltiples mesas en vivo con crupieres profesionales transmitiendo 24/7 en alta definición.</p> 1849<h3>Transparencia total del juego</h3> 1850<p>La principal ventaja del Blackjack en vivo es la transparencia visual completa. Ves al crupier barajar, cortar el mazo y repartir cada carta desde un zapato fÃsico. Las cámaras múltiples capturan cada ángulo, permitiéndote verificar que no hay manipulación. Esta transparencia genera confianza que los algoritmos RNG no pueden igualar.</p> 1851<p>Los estudios de transmisión usan tecnologÃa OCR (reconocimiento óptico de caracteres) para escanear las cartas automáticamente. La tecnologÃa detecta qué carta se repartió y actualiza la interfaz instantáneamente. Este sistema elimina errores humanos y acelera el juego sin sacrificar transparencia. Puedes pausar y revisar la historia de cada mano en detalle.</p> 1852<h3>Interacción social con crupieres profesionales</h3> 1853<p>El Blackjack en vivo recrea la atmósfera social del casino fÃsico. Los crupieres profesionales, entrenados en Europa o Asia, conducen el juego con personalidad. Puedes chatear con ellos en español, felicitarlos por una buena mano o simplemente disfrutar del ambiente. Esta interacción humana reduce la sensación de aislamiento del juego online.</p> 1854<p>Muchas mesas en vivo ofrecen asientos limitados (7 jugadores), creando sensación de exclusividad. Las mesas VIP con lÃmites altos ($100-5000 por mano) incluyen crupieres dedicados y ambiente premium. Para jugadores sociales que extrañan la experiencia del casino terrestre, el en vivo es insuperable.</p> 1855<h3>Múltiples opciones de mesas y lÃmites</h3> 1856<p>Los casinos en vivo ofrecen decenas de mesas simultáneas con diferentes lÃmites de apuesta. Encuentras mesas desde $5 hasta $10.000 por mano. Esta variedad te permite escalar tus apuestas según crece tu bankroll o bajar a lÃmites cómodos después de una mala racha.</p> 1857<p>Las variantes especiales agregan entretenimiento. El Infinite Blackjack permite jugadores ilimitados en una sola mesa, todos recibiendo las mismas cartas iniciales pero tomando decisiones individuales. El Blackjack Party tiene dos crupieres animando el juego con música y energÃa festiva. El Speed Blackjack acelera el juego con tiempos de decisión reducidos (10 segundos vs 30 segundos).</p> 1858<h2>Mejores casinos online para jugar blackjack en Ecuador</h2> 1859<p>Seleccionar el casino online correcto para Blackjack en Ecuador requiere evaluar múltiples factores: métodos de pago accesibles, variedad de mesas, licencias internacionales y experiencia móvil.</p> 1860<p>Los siguientes operadores son conocidos por su buena reputación, licencias internacionales y ofertas robustas de juegos de Blackjack (RNG y en Vivo) para el mercado ecuatoriano:</p> 1861<h3>Bet365</h3> 1862<p><a href="https://apostar.com.ec/casas-de-apuestas/bet365/" target="_blank" rel="noopener">Bet365 </a>es el gigante global de las apuestas online, manteniendo una fuerte presencia en Ecuador gracias a su oferta de Blackjack de primer nivel. Ofrece a sus usuarios más de 50 variantes de Blackjack, abarcando juegos RNG y mesas en vivo con crupieres reales. Entre las modalidades más populares se encuentran el Blackjack Europeo, Americano y Atlantic City. Su plataforma móvil es uno de sus puntos fuertes, destacando por su impecable rendimiento y transmisiones en HD sin <i>lag</i>, lo que garantiza una experiencia de juego fluida y de alta calidad. Además, como ventaja adicional, permite a los jugadores disfrutar de <i>streaming</i> deportivo gratuito mientras están en las mesas.</p> 1863<h3>1xBet</h3> 1864<p data-path-to-node="1"><a href="https://apostar.com.ec/casas-de-apuestas/1xbet/" target="_blank" rel="noopener">1xBet</a>
1864 se destaca en el mercado ecuatoriano por ser el casino más versátil en lo que respecta a métodos de pago, ofreciendo más de 100 opciones, incluidas numerosas criptomonedas. Esta amplia gama de opciones resulta ideal para los jugadores en Ecuador, ya que les permite evadir los habituales bloqueos bancarios. En su sección de Blackjack, el operador ofrece una sólida selección de más de 40 mesas en vivo, respaldadas por proveedores lÃderes del sector como Evolution Gaming y Pragmatic Live. Esto asegura calidad y variedad en el juego en tiempo real. En cuanto a sus credenciales, 1xBet opera bajo la licencia de Curazao.</p> 1865<h3>Betano</h3> 1866<p data-path-to-node="1"><a href="https://apostar.com.ec/casas-de-apuestas/betano/" target="_blank" rel="noopener">Betano</a>, que ingresó al mercado ecuatoriano en 2021, se ha establecido rápidamente como una alternativa equilibrada que combina la calidad global con una fuerte adaptación local. El operador, propiedad de Kaizen Gaming y respaldado por una licencia de Malta, se distingue por su asociación con Pragmatic Play en su casino en vivo, ofreciendo más de 25 mesas de Blackjack que a menudo cuentan con la comodidad de crupieres hispanohablantes. Su plataforma es reconocida por ser intuitiva y moderna, proporcionando una experiencia de juego de alta calidad tanto en escritorio como en dispositivos móviles.</p> 1867 </div> 1868 1869 <aside class="toc-sidebar page-sidebar" role="complementary" aria-label="Barra lateral"> 1870 1871 <!-- Ãltimos artÃculos --> 1872 <div class="sidebar-recent-posts"> 1873 <h3 class="sidebar-recent-posts__title">Ãltimos artÃculos</h3> 1874 <ul class="sidebar-recent-posts__list"> 1875 <li class="sidebar-recent-posts__item"> 1876 <a href="https://apostar.com.ec/como-apostar-a-tarjetas/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1877 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/05/apostar-a-tarjetas-en-ecuador-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/05/apostar-a-tarjetas-en-ecuador-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1878 <div class="sidebar-recent-posts__body"> 1879 <a href="https://apostar.com.ec/como-apostar-a-tarjetas/" class="sidebar-recent-posts__link">¿Cómo apostar en tarjetas amarillas y rojas en futbol?</a> 1880 <span class="sidebar-recent-posts__date">27/07/2026</span> 1881 </div> 1882 </li> 1883 <li class="sidebar-recent-posts__item"> 1884 <a href="https://apostar.com.ec/polymarket-pronosticos-deportivos/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1885 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/07/polimarket-ecuador-1-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/07/polimarket-ecuador-1-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1886 <div class="sidebar-recent-posts__body"> 1887 <a href="https://apostar.com.ec/polymarket-pronosticos-deportivos/" class="sidebar-recent-posts__link">Polymarket pronosticos deportivos</a> 1888 <span class="sidebar-recent-posts__date">13/07/2026</span> 1889 </div> 1890 </li> 1891 <li class="sidebar-recent-posts__item"> 1892 <a href="https://apostar.com.ec/apuestas-de-goles/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1893 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/05/apuestas-de-goles-en-futbol-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/05/apuestas-de-goles-en-futbol-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1894 <div class="sidebar-recent-posts__body"> 1895 <a href="https://apostar.com.ec/apuestas-de-goles/" class="sidebar-recent-posts__link">Apuestas de goles en fútbol</a> 1896 <span class="sidebar-recent-posts__date">13/07/2026</span> 1897 </div> 1898 </li> 1899 <li class="sidebar-recent-posts__item"> 1900 <a href="https://apostar.com.ec/que-es-adi-predictstreet/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1901 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/07/Que-es-ADI-Predictstreet-Ecuador-1-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/07/Que-es-ADI-Predictstreet-Ecuador-1-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1902 <div class="sidebar-recent-posts__body"> 1903 <a href="https://apostar.com.ec/que-es-adi-predictstreet/" class="sidebar-recent-posts__link">¿Que es ADI Predictstreet?</a> 1904 <span class="sidebar-recent-posts__date">02/07/2026</span> 1905 </div> 1906 </li> 1907 <li class="sidebar-recent-posts__item"> 1908 <a href="https://apostar.com.ec/apuestas-porteria-invicta-liga-
1908pro/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1909 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-68-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-68-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1910 <div class="sidebar-recent-posts__body"> 1911 <a href="https://apostar.com.ec/apuestas-porteria-invicta-liga-pro/" class="sidebar-recent-posts__link">PorterÃa invicta en Liga Pro: mejores cuotas y estrategias en Ecuador</a> 1912 <span class="sidebar-recent-posts__date">30/06/2026</span> 1913 </div> 1914 </li> 1915 <li class="sidebar-recent-posts__item"> 1916 <a href="https://apostar.com.ec/apuestas-medio-tiempo-liga-pro/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1917 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-69-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-69-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1918 <div class="sidebar-recent-posts__body"> 1919 <a href="https://apostar.com.ec/apuestas-medio-tiempo-liga-pro/" class="sidebar-recent-posts__link">¿Cómo apostar a medio tiempo / final? Cuotas Liga Pro en Ecuador</a> 1920 <span class="sidebar-recent-posts__date">30/06/2026</span> 1921 </div> 1922 </li> 1923 <li class="sidebar-recent-posts__item"> 1924 <a href="https://apostar.com.ec/apuestas-resultado-exacto-liga-pro/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1925 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-70-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-70-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1926 <div class="sidebar-recent-posts__body"> 1927 <a href="https://apostar.com.ec/apuestas-resultado-exacto-liga-pro/" class="sidebar-recent-posts__link">GuÃa de apuestas de resultado exacto en Liga Pro â Ecuador</a> 1928 <span class="sidebar-recent-posts__date">30/06/2026</span> 1929 </div> 1930 </li> 1931 <li class="sidebar-recent-posts__item"> 1932 <a href="https://apostar.com.ec/apuestas-doble-oportunidad-liga-pro/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1933 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-71-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-71-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1934 <div class="sidebar-recent-posts__body"> 1935 <a href="https://apostar.com.ec/apuestas-doble-oportunidad-liga-pro/" class="sidebar-recent-posts__link">Cómo apostar a doble oportunidad en Liga Pro: guÃa y cuotas en Ecuador</a> 1936 <span class="sidebar-recent-posts__date">30/06/2026</span> 1937 </div> 1938 </li> 1939 <li class="sidebar-recent-posts__item"> 1940 <a href="https://apostar.com.ec/apuestas-ambos-marcan-liga-pro/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1941 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-72-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-72-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1942 <div class="sidebar-recent-posts__body"> 1943 <a href="https://apostar.com.ec/apuestas-ambos-marcan-liga-pro/" class="sidebar-recent-posts__link">GuÃa de apuestas de ambos marcan en Liga Pro â Ecuador</a> 1944 <span class="sidebar-recent-posts__date">30/06/2026</span> 1945 </div> 1946 </li> 1947 <li class="sidebar-recent-posts__item"> 1948 <a href="https://apostar.com.ec/apuestas-over-under-liga-pro/" class="sidebar-recent-posts__thumb" tabindex="-1" aria-hidden="true"> 1949 <picture><source type="image/webp" srcset="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-73-150x150.webp"><img width="60" height="60" src="https://apostar.com.ec/wp-content/uploads/2026/06/mundial-2026-73-150x150.jpg" class="attachment-60x60 size-60x60 wp-post-image" alt="" loading="lazy" decoding="async" /></picture> </a> 1950 <div class="sidebar-recent-posts__body"> 1951 <a href="https://apostar.com.ec/apuestas-over-under-liga-pro/" class="sidebar-recent-posts__link">
1951Apuestas a over/under goles en Liga Pro desde Ecuador</a> 1952 <span class="sidebar-recent-posts__date">30/06/2026</span> 1953 </div> 1954 </li> 1955 </ul> 1956 </div> 1957 1958 <!-- Ranking --> 1959 <div class="ranking-widget"> 1960 <h3 class="ranking-widget__title">Mejores Casas de Apuestas</h3> 1961 <div class="ranking-widget__list"> 1962 <div class="ranking-widget-item ranking-widget-item--rank-1"> 1963 <div class="ranking-widget-item__body"> 1964 <a href="https://apostar.com.ec/casas-de-apuestas/betano/" class="ranking-widget-item__logo"> 1965 <img width="400" height="86" src="https://apostar.com.ec/wp-content/uploads/2022/12/Betano2.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Betano" loading="lazy" /> </a> 1966 <div class="ranking-widget-item__actions"> 1967 <a href="https://apostar.com.ec/ir/betanoranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 1968 REGÃSTRATE </a> 1969 </div> 1970 </div> 1971 </div> 1972 <div class="ranking-widget-item ranking-widget-item--rank-2"> 1973 <div class="ranking-widget-item__body"> 1974 <a href="https://apostar.com.ec/casas-de-apuestas/bet365/" class="ranking-widget-item__logo"> 1975 <img width="140" height="40" src="https://apostar.com.ec/wp-content/uploads/2022/06/bet365.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Bet365" loading="lazy" /> </a> 1976 <div class="ranking-widget-item__actions"> 1977 <a href="https://apostar.com.ec/ir/bet365ranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 1978 REGÃSTRATE </a> 1979 </div> 1980 </div> 1981 <div class="ranking-row__disclaimer">+18. Juega con responsabilidad. Aplican términos y condiciones.</div> 1982 </div> 1983 <div class="ranking-widget-item ranking-widget-item--rank-3"> 1984 <div class="ranking-widget-item__body"> 1985 <a href="https://apostar.com.ec/casas-de-apuestas/latribet/" class="ranking-widget-item__logo"> 1986 <img width="400" height="104" src="https://apostar.com.ec/wp-content/uploads/2022/08/latribet-2.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="LaTriBet" loading="lazy" /> </a> 1987 <div class="ranking-widget-item__actions"> 1988 <a href="https://apostar.com.ec/ir/latriranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 1989 REGÃSTRATE </a> 1990 </div> 1991 </div> 1992 </div> 1993 <div class="ranking-widget-item"> 1994 <div class="ranking-widget-item__body"> 1995 <a href="https://apostar.com.ec/casas-de-apuestas/1xbet/" class="ranking-widget-item__logo"> 1996 <img width="250" height="71" src="https://apostar.com.ec/wp-content/uploads/2022/06/1xbet.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="1xBET" loading="lazy" /> </a> 1997 <div class="ranking-widget-item__actions"> 1998 <a href="https://apostar.com.ec/ir/1xbetranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 1999 REGÃSTRATE </a> 2000 </div> 2001 </div> 2002 <div class="ranking-row__disclaimer">Apuesta con responsabilidad. Apto unicamente para mayores de 18 años. Se aplican Términos & Condiciones.</div> 2003 </div> 2004 <div class="ranking-widget-item"> 2005 <div class="ranking-widget-item__body"> 2006 <a href="https://apostar.com.ec/casas-de-apuestas/betwinner-ecuador-resena/" class="ranking-widget-item__logo"> 2007 <img width="110" height="11" src="https://apostar.com.ec/wp-content/uploads/2026/08/Betwinner.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="BetWinner" loading="lazy" /> </a> 2008 <div class="ranking-widget-item__actions"> 2009 <a href="https://apostar.com.ec/ir/betwinneranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 2010 REGÃSTRATE </a> 2011 </div> 2012 </div> 2013 <div class="ranking-row__disclaimer">+18 Juega con responsabilidad. Aplican términos y condiciones.</
2013div> 2014 </div> 2015 <div class="ranking-widget-item"> 2016 <div class="ranking-widget-item__body"> 2017 <a href="https://apostar.com.ec/casas-de-apuestas/betsson/" class="ranking-widget-item__logo"> 2018 <img width="120" height="32" src="https://apostar.com.ec/wp-content/uploads/2025/06/Betsson.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Betsson" loading="lazy" /> </a> 2019 <div class="ranking-widget-item__actions"> 2020 <a href="https://apostar.com.ec/ir/betssonranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 2021 REGÃSTRATE </a> 2022 </div> 2023 </div> 2024 <div class="ranking-row__disclaimer">+18 Juega con responsabilidad. Aplican términos y condiciones.</div> 2025 </div> 2026 <div class="ranking-widget-item"> 2027 <div class="ranking-widget-item__body"> 2028 <a href="https://apostar.com.ec/casas-de-apuestas/megapari/" class="ranking-widget-item__logo"> 2029 <img width="340" height="38" src="https://apostar.com.ec/wp-content/uploads/2025/05/Megapari.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Megapari" loading="lazy" /> </a> 2030 <div class="ranking-widget-item__actions"> 2031 <a href="https://apostar.com.ec/ir/megapariranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 2032 REGÃSTRATE </a> 2033 </div> 2034 </div> 2035 </div> 2036 <div class="ranking-widget-item"> 2037 <div class="ranking-widget-item__body"> 2038 <a href="https://apostar.com.ec/casas-de-apuestas/spinbookie/" class="ranking-widget-item__logo"> 2039 <img width="400" height="250" src="https://apostar.com.ec/wp-content/uploads/2023/05/SpinBookie.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Spinbookie" loading="lazy" /> </a> 2040 <div class="ranking-widget-item__actions"> 2041 <a href="https://apostar.com.ec/ir/spinbookieranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 2042 REGÃSTRATE </a> 2043 </div> 2044 </div> 2045 </div> 2046 <div class="ranking-widget-item"> 2047 <div class="ranking-widget-item__body"> 2048 <a href="https://apostar.com.ec/casas-de-apuestas/xlbet/" class="ranking-widget-item__logo"> 2049 <img width="400" height="114" src="https://apostar.com.ec/wp-content/uploads/2023/04/XLBet.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="XLBet" loading="lazy" /> </a> 2050 <div class="ranking-widget-item__actions"> 2051 <a href="https://apostar.com.ec/ir/xlbetranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 2052 REGÃSTRATE </a> 2053 </div> 2054 </div> 2055 </div> 2056 <div class="ranking-widget-item"> 2057 <div class="ranking-widget-item__body"> 2058 <a href="https://apostar.com.ec/casas-de-apuestas/1xslots/" class="ranking-widget-item__logo"> 2059 <img width="400" height="63" src="https://apostar.com.ec/wp-content/uploads/2023/08/1XSlots-1.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="1xslots" loading="lazy" /> </a> 2060 <div class="ranking-widget-item__actions"> 2061 <a href="https://apostar.com.ec/ir/1xslotsranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 2062 REGÃSTRATE </a> 2063 </div> 2064 </div> 2065 </div> 2066 <div class="ranking-widget-item"> 2067 <div class="ranking-widget-item__body"> 2068 <a href="https://apostar.com.ec/casas-de-apuestas/betcris/" class="ranking-widget-item__logo"> 2069 <img width="148" height="33" src="https://apostar.com.ec/wp-content/uploads/2022/09/Betcris-1-azul.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Betcris" loading="lazy" /> </a> 2070 <div class="ranking-widget-item__actions"> 2071 <a href="https://apostar.com.ec/ir/betcrisranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 2072 REGÃSTRATE </a> 2073 </div> 2074 </div> 2075 </div> 2076 <div class="ranking-widget-item"> 2077 <div class="ranking-widget-item__body"> 2078 <a href="https://apostar.com.ec/casas-de-apuestas/betway/" class="ranking-widget-item__logo"> 2079 <img width="140" height="40" src="https://apostar.com.ec/wp-content/uploads/2022/09/betway.svg" class="attachment-guru-card size-guru-card
2079wp-post-image" alt="Betway" loading="lazy" /> </a> 2080 <div class="ranking-widget-item__actions"> 2081 <a href="https://apostar.com.ec/ir/betwayranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 2082 REGÃSTRATE </a> 2083 </div> 2084 </div> 2085 </div> 2086 <div class="ranking-widget-item"> 2087 <div class="ranking-widget-item__body"> 2088 <a href="https://apostar.com.ec/casas-de-apuestas/ecuabet/" class="ranking-widget-item__logo"> 2089 <img width="400" height="97" src="https://apostar.com.ec/wp-content/uploads/2023/05/Ecuabet.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Ecuabet" loading="lazy" /> </a> 2090 <div class="ranking-widget-item__actions"> 2091 <a href="#" role="button" data-guru-nolink="1" class="btn btn--dark btn--sm"> 2092 REGÃSTRATE </a> 2093 </div> 2094 </div> 2095 <div class="ranking-row__disclaimer">+18 Juega con responsabilidad. Aplican términos y condiciones.</div> 2096 </div> 2097 <div class="ranking-widget-item"> 2098 <div class="ranking-widget-item__body"> 2099 <a href="https://apostar.com.ec/casas-de-apuestas/coolbet/" class="ranking-widget-item__logo"> 2100 <img width="400" height="48" src="https://apostar.com.ec/wp-content/uploads/2023/01/Coolbet.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Coolbet" loading="lazy" /> </a> 2101 <div class="ranking-widget-item__actions"> 2102 <a href="#" role="button" data-guru-nolink="1" class="btn btn--dark btn--sm"> 2103 REGÃSTRATE </a> 2104 </div> 2105 </div> 2106 </div> 2107 <div class="ranking-widget-item"> 2108 <div class="ranking-widget-item__body"> 2109 <a href="https://apostar.com.ec/casas-de-apuestas/starda/" class="ranking-widget-item__logo"> 2110 <img width="140" height="44" src="https://apostar.com.ec/wp-content/uploads/2024/10/Starda.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Starda" loading="lazy" /> </a> 2111 <div class="ranking-widget-item__actions"> 2112 <a href="https://apostar.com.ec/ir/stardaranksportbono" target="_blank" rel="noopener noreferrer nofollow" class="btn btn--dark btn--sm"> 2113 REGÃSTRATE </a> 2114 </div> 2115 </div> 2116 <div class="ranking-row__disclaimer">+18 Juega con responsabilidad. Aplican términos y condiciones.</div> 2117 </div> 2118 </div> 2119 </div> 2120 2121 <aside class="guru-sidebar-banner" aria-label="Casa destacada"> 2122 <div class="guru-sidebar-banner__header"> 2123 CASA DESTACADA </div> 2124 <div class="guru-sidebar-banner__logo"> 2125 <a href="https://apostar.com.ec/casas-de-apuestas/betano/"><img width="400" height="86" src="https://apostar.com.ec/wp-content/uploads/2022/12/Betano2.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Betano" loading="lazy" /></a> 2126 </div> 2127 <ul class="guru-sidebar-banner__pros"> 2128 <li>Código promocional EXCLUSIVO: APUESTASECUADOR</li> 2129 <li>Bono de bienvenida de $300</li> 2130 <li>Depósito mÃnimo $5 | Retiro mÃnimo $10</li> 2131 </ul> 2132 <div class="guru-sidebar-banner__bono"> 2133 <span class="guru-sidebar-banner__bono-label">Bono hasta</span> 2134 <span class="guru-sidebar-banner__bono-value"><span class="bono-currency guru-sidebar-banner__bono-currency">$</span><span class="bono-amount guru-sidebar-banner__bono-amount">300</span></span> 2135 </div> 2136 <a href="https://apostar.com.ec/ir/betanoranksportbono" class="guru-sidebar-banner__cta" target="_blank" rel="noopener noreferrer nofollow"> 2137 REGISTRARSE </a> 2138 <a href="https://apostar.com.ec/casas-de-apuestas/betano/" class="guru-sidebar-banner__review"> 2139 Leer reseña </a> 2140 </aside> 2141 2142</aside> 2143 2144 </div> 2145</div> 2146 2147</main><!-- #main-content --> 2148 2149<footer id="site-footer" class="site-footer no-badges" role="contentinfo"> 2150 <div class="container"> 2151 <div class="footer-top"> 2152 <div class="footer-brand"> 2153 <a href="https://apostar.com.ec/" class="custom-logo-link" rel="home"><img width="287" height="56" src="https://apostar.com.ec/wp-content/uploads/2022/06/logo_apostar-com-ec.svg" class="custom-logo" alt="Apuestas Ecuador" decoding="async" loading="lazy" /></a> </div> 2154 <ul id="menu-apostar-com-ec-1" class="footer-menu"><li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-14100"><a href="https://apostar.com.ec/casas-de-apuestas/">Casas de apuestas</a></li> 2155<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-13885"><a href="https://apostar.com.ec/slots/">Jugar slots</a></li> 2156<li class="menu-item menu-item-type-taxonomy menu-item-object-category current-menu-ancestor current-menu-parent menu-item-14759"><a href="https://apostar.com.ec/casinos/">Casinos</a></li> 2157<li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4200"><a href="https://apostar.com.ec/bonos/">Bonos</a></li> 2158<li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4199"><a href="https://apostar.com.ec/apuestas-deportivas/">Apuestas deportivas</a></li> 2159<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-341"><a href="https://apostar.com.ec/pronosticos/">Pronósticos</a></li> 2160<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5083"><a href="https://apostar.com.ec/contacto/">Contacto</a></li> 2161</ul> </div> 2162 2163 2164 <div class="footer-bottom"> 2165 <div class="disclaimer"> 2166 <span class="age-badge">18+</span> 2167 <p>Juega con responsabilidad. Solo para mayores de 18 años.</p> 2168 </div> 2169 <p class="copyright"> 2170 © 2026 apostar.com.ec. Todos los derechos reservados. </p> 2171 <p class="footer-sitemap"> 2172 <a href="https://apostar.com.ec/sitemap/" class="sitemap-link">Mapa del sitio</a> 2173 </p> 2174 </div> 2175 </div> 2176</footer> 2177 2178<!-- BEGIN: TAG CODE -->
2179<script src="https://tools.betforce.io/scripts/js/affbc/v.1.1/apostar.com.ec/b-base.min.js"></script>
vendor: 1 bytes, line 2179
2179
2180<script type="text/javascript"> 2181 document.addEventListener('DOMContentLoaded', () => 2182 { 2183 onComplete('banner-id-54545836',document.getElementById('banner-id-54545836').getAttribute('data-id')); 2184 }); 2185</script>
2185 2186<div data-active="N" data-id="528" id="banner-id-54545836"></div> 2187<!-- END: TAG CODE -->
2187<script type="speculationrules"> 2188{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/repo-igl-main/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 2189</script>
2189 2190
2190<script> 2191 (function(){ 2192 var ajax = 'https://apostar.com.ec/wp-admin/admin-ajax.php'; 2193 var nonce = 'fdfc2f0822'; 2194 var ua = navigator.userAgent; 2195 var device = /iPhone|iPad|iPod/i.test(ua) ? 'ios' 2196 : /Android/i.test(ua) ? 'android' 2197 : 'desktop'; 2198 function logEvent(type) { 2199 var fd = new FormData(); 2200 fd.append('action', 'igl_connector_pwa_event'); 2201 fd.append('security', nonce); 2202 fd.append('event_type', type); 2203 fd.append('device', device); 2204 fetch(ajax, { method: 'POST', body: fd, credentials: 'same-origin' }).catch(function(){}); 2205 } 2206 window.addEventListener('appinstalled', function() { logEvent('install'); }); 2207 if (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches) { 2208 logEvent('standalone_session'); 2209 } 2210 })(); 2211 </script>
2211 2212 <div class="guru-nolink-modal" id="guru-nolink-modal" hidden> 2213 <div class="guru-nolink-modal__overlay" data-guru-nolink-close></div> 2214 <div class="guru-nolink-modal__dialog" role="dialog" aria-modal="true" aria-labelledby="guru-nolink-modal-title"> 2215 <button type="button" class="guru-nolink-modal__close" data-guru-nolink-close aria-label="Cerrar">×</button> 2216 <p class="guru-nolink-modal__title" id="guru-nolink-modal-title">Esta Casa actualmente no está disponible en <strong class="guru-nolink-modal__domain">apostar.com.ec</strong>. Te recomendamos estas opciones:</p> 2217 <div class="guru-nolink-modal__redirect" data-guru-redirect-url="https://apostar.com.ec/ir/betanoranksportbono" data-guru-redirect-seconds="5"> 2218 <p class="guru-nolink-modal__redirect-text">En <span class="guru-nolink-modal__count">5</span> segundos te redirigiremos a la mejor Casa de Apuestas...</p> 2219 <div class="guru-nolink-modal__bar"><span class="guru-nolink-modal__bar-fill"></span></div> 2220 </div> 2221 <ul class="guru-nolink-modal__list"> 2222 <li class="guru-nolink-modal__item"> 2223 <span class="guru-nolink-modal__rank">#1</span> 2224 <a class="guru-nolink-modal__logo" href="https://apostar.com.ec/casas-de-apuestas/betano/" aria-label="Betano"> 2225 <img width="400" height="86" src="https://apostar.com.ec/wp-content/uploads/2022/12/Betano2.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Betano" loading="lazy" /> </a> 2226 <a class="guru-nolink-modal__cta" href="https://apostar.com.ec/ir/betanoranksportbono" target="_blank" rel="noopener noreferrer nofollow"> 2227 REGISTRARSE </a> 2228 </li> 2229 <li class="guru-nolink-modal__item"> 2230 <span class="guru-nolink-modal__rank">#2</span> 2231 <a class="guru-nolink-modal__logo" href="https://apostar.com.ec/casas-de-apuestas/bet365/" aria-label="Bet365"> 2232 <img width="140" height="40" src="https://apostar.com.ec/wp-content/uploads/2022/06/bet365.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="Bet365" loading="lazy" /> </a> 2233 <a class="guru-nolink-modal__cta" href="https://apostar.com.ec/ir/bet365ranksportbono" target="_blank" rel="noopener noreferrer nofollow"> 2234 REGISTRARSE </a> 2235 </li> 2236 <li class="guru-nolink-modal__item"> 2237 <span class="guru-nolink-modal__rank">#3</span> 2238 <a class="guru-nolink-modal__logo" href="https://apostar.com.ec/casas-de-apuestas/latribet/" aria-label="LaTriBet"> 2239 <img width="400" height="104" src="https://apostar.com.ec/wp-content/uploads/2022/08/latribet-2.svg" class="attachment-guru-card size-guru-card wp-post-image" alt="LaTriBet" loading="lazy" /> </a> 2240 <a class="guru-nolink-modal__cta" href="https://apostar.com.ec/ir/latriranksportbono" target="_blank" rel="noopener noreferrer nofollow"> 2241 REGISTRARSE </a> 2242 </li> 2243 </ul> 2244 </div> 2245 </div> 2246
2246<script> 2247 (function(){ 2248 var modal = document.getElementById('guru-nolink-modal'); 2249 if (!modal) { return; } 2250 var dialog = modal.querySelector('.guru-nolink-modal__dialog'); 2251 var lastFocus = null; 2252 function focusables(){ 2253 if (!dialog) { return []; } 2254 return Array.prototype.slice.call( 2255 dialog.querySelectorAll('a[href], button:not([disabled])') 2256 ).filter(function(el){ return el.offsetParent !== null; }); 2257 } 2258 var redirect = modal.querySelector('[data-guru-redirect-url]'); 2259 var timer = null; 2260 var redirectTimer = null; 2261 var didRedirect = false; 2262 function startCountdown(){ 2263 if (!redirect) { return; } 2264 var url = redirect.getAttribute('data-guru-redirect-url'); 2265 var secs = parseInt(redirect.getAttribute('data-guru-redirect-seconds'), 10) || 0; 2266 if (!url || secs <= 0) { return; } 2267 var countEl = redirect.querySelector('.guru-nolink-modal__count'); 2268 var fill = redirect.querySelector('.guru-nolink-modal__bar-fill'); 2269 didRedirect = false; 2270 // La navegación se dispara por un deadline absoluto, no por la suma de 2271 // ticks: asà sigue funcionando aunque el navegador/optimizador limite 2272 // (throttle) los timers o la pestaña pierda foco un instante. 2273 var deadline = Date.now() + secs * 1000; 2274 function go(){ 2275 if (didRedirect) { return; } 2276 didRedirect = true; 2277 if (timer) { clearInterval(timer); timer = null; } 2278 if (redirectTimer) { clearTimeout(redirectTimer); redirectTimer = null; } 2279 window.location.href = url; 2280 } 2281 if (countEl) { countEl.textContent = secs; } 2282 if (fill) { 2283 fill.style.transition = 'none'; 2284 fill.style.width = '0%'; 2285 void fill.offsetWidth; // reflow para reiniciar la animación 2286 fill.style.transition = 'width ' + secs + 's linear'; 2287 fill.style.width = '100%'; 2288 } 2289 // Camino principal: timeout único garantizado. 2290 redirectTimer = setTimeout(go, secs * 1000); 2291 // Solo refresca el número visible; no decide la redirección. 2292 timer = setInterval(function(){ 2293 var remaining = Math.ceil((deadline - Date.now()) / 1000); 2294 if (remaining < 0) { remaining = 0; } 2295 if (countEl) { countEl.textContent = remaining; } 2296 if (remaining <= 0) { go(); } 2297 }, 250); 2298 } 2299 function stopCountdown(){ 2300 didRedirect = true; // evita que un timeout pendiente navegue tras cerrar 2301 if (timer) { clearInterval(timer); timer = null; } 2302 if (redirectTimer) { clearTimeout(redirectTimer); redirectTimer = null; } 2303 if (redirect) { 2304 var fill = redirect.querySelector('.guru-nolink-modal__bar-fill'); 2305 if (fill) { fill.style.transition = 'none'; fill.style.width = '0%'; } 2306 } 2307 } 2308 // Enfoca sin mover la página; mismo helper que en los popups. 2309 function focusNoScroll(el){ 2310 if (!el || typeof el.focus !== 'function' || !document.contains(el)) { return; } 2311 var y = window.pageYOffset; 2312 try { el.focus({ preventScroll: true }); } 2313 catch (e) { el.focus(); } 2314 if (window.pageYOffset !== y) { jumpTo(y); } 2315 } 2316 // Salta sin animar: critical.css pone html{scroll-behavior:smooth}. 2317 function jumpTo(y){ 2318 var html = document.documentElement; 2319 var prev = html.style.scrollBehavior; 2320 html.style.scrollBehavior = 'auto'; 2321 window.scrollTo(window.pageXOffset, y); 2322 html.style.scrollBehavior = prev; 2323 } 2324 var lockY = 0; 2325 var scrollGuard = null; 2326 // overflow:hidden no detiene el scroll programático: un scroll suave en 2327 // vuelo (TOC, anclas) seguÃa deslizando la página por detrás del modal. 2328 // Mismo lock que en los popups; ver la nota larga en popup-modals.php. 2329 function lockScroll(){ 2330 lockY = window.pageYOffset; 2331 // La clase va en <html> y en <body>: el viewport toma su overflow del 2332 // html (critical.css le pone overflow-x:clip), asà que con el lock solo 2333 // en body la página seguÃa scrolleando detrás del modal. 2334 document.documentElement.classList.add('guru-nolink-open'); 2335 document.body.classList.add('guru-nolink-open'); 2336 jumpTo(lockY); 2337 scrollGuard = function(e){ 2338 if (e && e.target && e.target !== document && e.target !== document.documentElement) { return; } 2339 if (window.pageYOffset !== lockY) { jumpTo(lockY); } 2340 }; 2341 window.addEventListener('scroll', scrollGuard, { passive: true }); 2342 } 2343 function unlockScroll(){ 2344 if (scrollGuard) { window.removeEventListener('scroll', scrollGuard); scrollGuard = null; } 2345 document.documentElement.classList.remove('guru-nolink-open'); 2346 document.body.classList.remove('guru-nolink-open'); 2347 } 2348 function openModal(trigger){ 2349 lastFocus = trigger || null; 2350 modal.hidden = false;
2351 lockScroll(); 2352 focusNoScroll(modal.querySelector('.guru-nolink-modal__close')); 2353 startCountdown(); 2354 } 2355 function closeModal(){ 2356 stopCountdown(); 2357 modal.hidden = true; 2358 unlockScroll(); 2359 focusNoScroll(lastFocus); 2360 } 2361 document.addEventListener('click', function(e){ 2362 var trigger = e.target.closest('[data-guru-nolink]'); 2363 if (trigger) { e.preventDefault(); openModal(trigger); return; } 2364 if (e.target.closest('[data-guru-nolink-close]')) { e.preventDefault(); closeModal(); } 2365 }); 2366 document.addEventListener('keydown', function(e){ 2367 if (modal.hidden) { return; } 2368 if (e.key === 'Escape') { closeModal(); return; } 2369 // Focus trap: Tab/Shift+Tab ciclan dentro del diálogo (aria-modal ya 2370 // aÃsla a los lectores de pantalla; esto aÃsla al teclado). 2371 if (e.key === 'Tab') { 2372 var f = focusables(); 2373 if (!f.length) { return; } 2374 var first = f[0], last = f[f.length - 1]; 2375 if (!dialog || !dialog.contains(document.activeElement)) { 2376 e.preventDefault(); first.focus(); 2377 } else if (e.shiftKey && document.activeElement === first) { 2378 e.preventDefault(); last.focus(); 2379 } else if (!e.shiftKey && document.activeElement === last) { 2380 e.preventDefault(); first.focus(); 2381 } 2382 } 2383 }); 2384 })(); 2385 </script>
2385 2386
2386<script> 2387 // Helper de analytics de los popups: manda a GA4 (gtag) y al dataLayer. 2388 // Guarda por si GA4 está apagado. Se define antes de los popups para que los 2389 // scripts de la ruleta/raspadita lo puedan usar. 2390 window.guruPopupTrack = window.guruPopupTrack || function(name, params){ 2391 params = params || {}; 2392 try { if (typeof window.gtag === 'function') { window.gtag('event', name, params); } } catch (e) {} 2393 try { (window.dataLayer = window.dataLayer || []).push(Object.assign({ event: name }, params)); } catch (e) {} 2394 }; 2395 2396 // Confeti compartido. La ruleta y la raspadita todavÃa llevan su propia copia 2397 // (código previo); migrarlas a este helper es un cambio aparte. 2398 window.guruPopupConfetti = window.guruPopupConfetti || function(root){ 2399 try { if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) { return; } } catch (e) {} 2400 var box = (root && root.closest('.guru-popup')) || root; 2401 if (!box) { return; } 2402 var W = box.clientWidth, H = box.clientHeight; 2403 if (!W || !H) { return; } 2404 var canvas = document.createElement('canvas'); 2405 canvas.className = 'guru-roulette__confetti'; 2406 canvas.width = W; canvas.height = H; 2407 box.appendChild(canvas); 2408 var ctx = canvas.getContext('2d'); 2409 if (!ctx) { canvas.remove(); return; } 2410 var colors = ['#ffd34e','#5eb1ff','#7ee0a1','#ff9e7a','#c7a3ff','#ef5da8','#4ade80']; 2411 var parts = [], originX = W / 2, originY = H * 0.34; 2412 for (var i = 0; i < 140; i++) { 2413 var ang = Math.PI * (0.15 + 0.7 * (i / 140)) * -1 - 0.15; 2414 var sp = 6 + Math.random() * 7; 2415 parts.push({ 2416 x: originX + (Math.random() - 0.5) * 40, y: originY, 2417 vx: Math.cos(ang) * sp * (Math.random() < 0.5 ? -1 : 1), 2418 vy: Math.sin(ang) * sp - Math.random() * 3, 2419 g: 0.18 + Math.random() * 0.12, size: 5 + Math.random() * 6, 2420 color: colors[i % colors.length], rot: Math.random() * 6.28, 2421 vr: (Math.random() - 0.5) * 0.4 2422 }); 2423 } 2424 var start = null, DUR = 1800; 2425 function frame(t){ 2426 if (start === null) { start = t; } 2427 var el = t - start; 2428 ctx.clearRect(0, 0, W, H); 2429 for (var i = 0; i < parts.length; i++) { 2430 var pp = parts[i]; 2431 pp.x += pp.vx; pp.y += pp.vy; pp.vy += pp.g; pp.vx *= 0.995; pp.rot += pp.vr; 2432 ctx.save(); 2433 ctx.translate(pp.x, pp.y); 2434 ctx.rotate(pp.rot); 2435 ctx.globalAlpha = Math.max(0, 1 - el / DUR); 2436 ctx.fillStyle = pp.color; 2437 ctx.fillRect(-pp.size / 2, -pp.size / 2, pp.size, pp.size * 0.6); 2438 ctx.restore(); 2439 } 2440 if (el < DUR) { requestAnimationFrame(frame); } else { canvas.remove(); } 2441 } 2442 requestAnimationFrame(frame); 2443 }; 2444 </script>
2444 2445 <div class="guru-popup" id="guru-popup-1" data-guru-popup="1" data-kind="roulette" data-max="1" data-delay="3000" hidden> 2446 <div class="guru-popup__overlay" data-guru-popup-close></div> 2447 <div class="guru-popup__dialog guru-popup__dialog--roulette" role="dialog" aria-modal="true" aria-labelledby="guru-popup-1-title"> 2448 <button type="button" class="guru-popup__close" data-guru-popup-close aria-label="Cerrar">×</button> 2449 2450 2451 <h2 class="guru-popup__title" id="guru-popup-1-title">¡Pilas pana! Gira la ruleta y llévate tu bono de una vez</h2> 2452 2453 <p class="guru-popup__subtitle">Prueba tu suerte al toque y arranca con el pie derecho en la jugada</p> 2454 2455 2456 2457 <div class="guru-roulette" id="guru-roulette" data-winner="LaTriBet"> 2458 <div class="guru-roulette__stage" style="width:264px;height:264px"> 2459 <span class="guru-roulette__pointer" aria-hidden="true"></span> 2460 <div class="guru-roulette__wheel" style="background:conic-gradient(from -30.000deg, #ffffff 0.000deg 60.000deg,#dfe3e9 60.000deg 120.000deg,#ffffff 120.000deg 180.000deg,#dfe3e9 180.000deg 240.000deg,#ffffff 240.000deg 300.000deg,#dfe3e9 300.000deg 360.000deg);transform:rotate(-30deg)"> 2461 <span class="guru-roulette__sep" style="background:repeating-conic-gradient(from -30.000deg, rgba(15,23,42,.18) 0 1.3deg, transparent 1.3deg 60.000deg)" aria-hidden="true"></span> 2462 <span class="guru-roulette__logo" style="left:103px;top:17px;width:58px;height:58px;transform:rotate(90deg)"> 2463 <img src="https://apostar.com.ec/wp-content/uploads/2022/08/latribet-2.svg" alt="LaTriBet" loading="lazy" decoding="async"> 2464 </span> 2465 <span class="guru-roulette__logo" style="left:177.5px;top:60px;width:58px;height:58px;transform:rotate(330deg)"> 2466 <img src="https://apostar.com.ec/wp-content/uploads/2023/05/SpinBookie.svg" alt="Spinbookie" loading="lazy" decoding="async"> 2467 </span> 2468 <span class="guru-roulette__logo" style="left:177.5px;top:146px;width:58px;height:58px;transform:rotate(390deg)"> 2469 <img src="https://apostar.com.ec/wp-content/uploads/2023/08/1XSlots-1.svg" alt="1xslots" loading="lazy" decoding="async"> 2470 </span> 2471 <span class="guru-roulette__logo" style="left:103px;top:189px;width:58px;height:58px;transform:rotate(270deg)"> 2472 <img src="https://apostar.com.ec/wp-content/uploads/2025/05/Megapari.svg" alt="Megapari" loading="lazy" decoding="async"> 2473 </span> 2474 <span class="guru-roulette__logo" style="left:28.5px;top:146px;width:58px;height:58px;transform:rotate(330deg)"> 2475 <img src="https://apostar.com.ec/wp-content/uploads/2024/11/logo2-1.svg" alt="Paripesa" loading="lazy" decoding="async"> 2476 </span> 2477 <span class="guru-roulette__logo" style="left:28.5px;top:60px;width:58px;height:58px;transform:rotate(390deg)"> 2478 <img src="https://apostar.com.ec/wp-content/uploads/2023/04/XLBet.svg" alt="XLBet" loading="lazy" decoding="async"> 2479 </span> 2480 </div> 2481 <span class="guru-roulette__hub" aria-hidden="true"> 2482 <img class="guru-roulette__hub-icon" src="https://apostar.com.ec/wp-content/uploads/2022/09/ecuador-apuestas.svg" alt="" loading="lazy" decoding="async"> 2483 </span> 2484 </div> 2485 2486 <button type="button" class="guru-roulette__spin">GIRAR</button> 2487 2488 <div class="guru-roulette__result" hidden> 2489 <p class="guru-roulette__win">Te ganaste un bono de casino para <strong class="guru-roulette__winname">LaTriBet</strong></p> 2490 <a class="guru-roulette__cta guru-popup__cta" href="https://apostar.com.ec/ir/latribetroulette" target="_blank" rel="noopener noreferrer nofollow">OBTENER</a> 2491 </div> 2492 </div> 2493
2493<script> 2494 (function(){ 2495 var root = document.getElementById('guru-roulette'); 2496 if (!root) { return; } 2497 var wheel = root.querySelector('.guru-roulette__wheel'); 2498 var spin = root.querySelector('.guru-roulette__spin'); 2499 var result = root.querySelector('.guru-roulette__result'); 2500 var logos = Array.prototype.slice.call(root.querySelectorAll('.guru-roulette__logo')); 2501 var REST = -30; 2502 var N = logos.length || 1; 2503 var SEG = 360 / N; 2504 var done = false; 2505 var rafId = null; 2506 2507 function reduced(){ 2508 return window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; 2509 } 2510 2511 // Ãngulo actual de la rueda (mod 360) leÃdo del transform computado, asà 2512 // funciona con Web Animations API o transición CSS. 2513 function wheelAngle(){ 2514 var st = getComputedStyle(wheel).transform; 2515 if (!st || st === 'none') { return 0; } 2516 var m = st.match(/matrix\(([^)]+)\)/); 2517 if (!m) { return 0; } 2518 var v = m[1].split(','); 2519 return Math.atan2(parseFloat(v[1]), parseFloat(v[0])) * 180 / Math.PI; 2520 } 2521 function norm180(x){ x = ((x % 360) + 360) % 360; return x > 180 ? x - 360 : x; } 2522 2523 // Marca como activo (agrandado + color pleno) el logo que está pasando 2524 // bajo la flechita (arriba). El gajo i está centrado en i*SEG en el 2525 // espacio de la rueda; en pantalla aparece en i*SEG + R. 2526 function setActive(idx){ 2527 for (var i = 0; i < logos.length; i++) { logos[i].classList.toggle('is-active', i === idx); } 2528 } 2529 function updateActive(){ 2530 var R = wheelAngle(); 2531 var best = -1, bestd = 1e9; 2532 for (var i = 0; i < N; i++) { 2533 var d = Math.abs(norm180(i * SEG + R)); 2534 if (d < bestd) { bestd = d; best = i; } 2535 } 2536 setActive(best); 2537 } 2538 function track(){ updateActive(); rafId = requestAnimationFrame(track); } 2539 function stopTrack(){ if (rafId) { cancelAnimationFrame(rafId); rafId = null; } } 2540 2541 // Confeti vanilla sobre el popup (sin librerÃas). Se dibuja en un canvas 2542 // a pantalla del popup y se autodestruye al terminar. 2543 function confetti(){ 2544 if (reduced()) { return; } 2545 var box = root.closest('.guru-popup') || root; 2546 var W = box.clientWidth, H = box.clientHeight; 2547 if (!W || !H) { return; } 2548 var canvas = document.createElement('canvas'); 2549 canvas.className = 'guru-roulette__confetti'; 2550 canvas.width = W; canvas.height = H; 2551 box.appendChild(canvas); 2552 var ctx = canvas.getContext('2d'); 2553 if (!ctx) { canvas.remove(); return; } 2554 var colors = ['#ffd34e','#5eb1ff','#7ee0a1','#ff9e7a','#c7a3ff','#ef5da8','#4ade80']; 2555 var parts = []; 2556 var originX = W / 2, originY = H * 0.34; 2557 for (var i = 0; i < 140; i++) { 2558 var ang = Math.PI * (0.15 + 0.7 * (i / 140)) * -1 - 0.15; // hacia arriba, en abanico 2559 var sp = 6 + Math.random() * 7; 2560 parts.push({ 2561 x: originX + (Math.random() - 0.5) * 40, 2562 y: originY, 2563 vx: Math.cos(ang) * sp * (Math.random() < 0.5 ? -1 : 1), 2564 vy: Math.sin(ang) * sp - Math.random() * 3, 2565 g: 0.18 + Math.random() * 0.12, 2566 size: 5 + Math.random() * 6, 2567 color: colors[i % colors.length], 2568 rot: Math.random() * 6.28, 2569 vr: (Math.random() - 0.5) * 0.4 2570 }); 2571 } 2572 var start = null, DUR = 1800; 2573 function frame(t){ 2574 if (start === null) { start = t; } 2575 var el = t - start; 2576 ctx.clearRect(0, 0, W, H); 2577 for (var i = 0; i < parts.length; i++) { 2578 var p = parts[i]; 2579 p.vy += p.g; p.x += p.vx; p.y += p.vy; p.rot += p.vr; 2580 ctx.save(); 2581 ctx.globalAlpha = Math.max(0, 1 - el / DUR); 2582 ctx.translate(p.x, p.y); 2583 ctx.rotate(p.rot); 2584 ctx.fillStyle = p.color; 2585 ctx.fillRect(-p.size / 2, -p.size / 2, p.size, p.size * 0.55); 2586 ctx.restore(); 2587 } 2588 if (el < DUR) { requestAnimationFrame(frame); } 2589 else { canvas.remove(); } 2590 } 2591 requestAnimationFrame(frame); 2592 } 2593 2594 var WINNER = root.getAttribute('data-winner') || ''; 2595 2596 function reveal(){ 2597 if (done) { return; } 2598 done = true; 2599 stopTrack(); 2600 setActive(0); // el ganador (#1) queda arriba y destacado 2601 if (result) { result.hidden = false; } 2602 if (spin) { spin.disabled = true; spin.setAttribute('hidden', ''); } 2603 window.guruPopupTrack && window.guruPopupTrack('popup_roulette_result', { popup_slot: 1, casa: WINNER }); 2604 confetti(); 2605 } 2606 2607 function go(){ 2608 if (!wheel || spin.disabled) { return; } 2609 spin.disabled = true; 2610 window.guruPopupTrack && window.guruPopupTrack('popup_roulette_spin', { popup_slot: 1 }); 2611 track(); // resalta el logo que pasa por la flechita durante el giro 2612 // Objetivo múltiplo de 360° â el gajo 0 (centrado arriba) queda bajo 2613 // el puntero: siempre gana la #1. Sumamos varias vueltas desde el reposo. 2614 var turns = reduced() ? 2 : 6; 2615 var target = 360 * turns; // 2160/720: múltiplo de 360 = gajo 0 arriba 2616 var dur = reduced() ? 700 : 4200; 2617 2618 // Camino principal: Web Animations API (no depende de transition CSS). 2619 if (typeof wheel.animate === 'function') { 2620 var anim = wheel.animate( 2621 [ { transform: 'rotate(' + REST + 'deg)' }, { transform: 'rotate(' + target + 'deg)' } ], 2622 { duration: dur, easing: 'cubic-bezier(.16,1,.3,1)', fill: 'forwards' } 2623 ); 2624 var settled = false;
2625 var finish = function(){ if (settled) { return; } settled = true; wheel.style.transform = 'rotate(' + target + 'deg)'; reveal(); }; 2626 anim.onfinish = finish; 2627 setTimeout(finish, dur + 250); // respaldo por si onfinish no dispara 2628 return; 2629 } 2630 2631 // Fallback: transición CSS. 2632 wheel.style.transition = 'transform ' + dur + 'ms cubic-bezier(.16,1,.3,1)'; 2633 // Forzamos reflow para que el cambio de transform anime desde el reposo. 2634 void wheel.offsetWidth; 2635 wheel.style.transform = 'rotate(' + target + 'deg)'; 2636 var fired = false; 2637 wheel.addEventListener('transitionend', function(){ fired = true; reveal(); }, { once: true }); 2638 setTimeout(function(){ if (!fired) { reveal(); } }, dur + 400); 2639 } 2640 2641 spin.addEventListener('click', go); 2642 2643 // Click en el CTA de la ruleta (OBTENER). 2644 var rouletteCta = root.querySelector('.guru-roulette__cta'); 2645 if (rouletteCta) { 2646 rouletteCta.addEventListener('click', function(){ 2647 window.guruPopupTrack && window.guruPopupTrack('popup_roulette_cta', { popup_slot: 1, casa: WINNER, link_url: rouletteCta.getAttribute('href') || '' }); 2648 }); 2649 } 2650 })(); 2651 </script>
2651 2652 2653 2654 2655 2656 2657 2658 </div> 2659 </div> 2660
2660<script> 2661 (function(){ 2662 var popups = Array.prototype.slice.call(document.querySelectorAll('[data-guru-popup]')); 2663 if (!popups.length) { return; } 2664 2665 // Modo prueba: en la URL de prueba el popup salta siempre (ignora el tope 2666 // diario y no persiste el contador), para poder probarlo cuantas veces sea. 2667 // Además, si el usuario está logueado, también salta siempre (para testear 2668 // refrescando la página sin gastar el cupo del dÃa). 2669 var TEST = false; 2670 2671 function todayKey(){ 2672 var d = new Date(); 2673 return '' + d.getFullYear() + (d.getMonth() + 1) + d.getDate(); 2674 } 2675 function storeKey(id){ return 'guru_popup_' + id + '_' + todayKey(); } 2676 function shownToday(id){ 2677 try { return parseInt(localStorage.getItem(storeKey(id)), 10) || 0; } 2678 catch (e) { return 0; } 2679 } 2680 function bump(id){ 2681 try { localStorage.setItem(storeKey(id), shownToday(id) + 1); } 2682 catch (e) {} 2683 } 2684 2685 var current = null; 2686 var lastFocus = null; 2687 2688 function focusables(dialog){ 2689 if (!dialog) { return []; } 2690 return Array.prototype.slice.call( 2691 dialog.querySelectorAll('a[href], button:not([disabled])') 2692 ).filter(function(el){ return el.offsetParent !== null; }); 2693 } 2694 function modalMeta(modal){ 2695 return { popup_slot: parseInt(modal.getAttribute('data-guru-popup'), 10) || 0, popup_kind: modal.getAttribute('data-kind') || 'plain' }; 2696 } 2697 // Enfoca sin mover la página. Sin esto, al cerrar el popup el navegador 2698 // scrollea hasta donde esté el elemento que tenÃa el foco antes de abrirlo 2699 // (un link que el visitante tocó, el botón de aceptar cookies del final): 2700 // si ese elemento está abajo, la página salta al fondo. 2701 function focusNoScroll(el){ 2702 if (!el || typeof el.focus !== 'function' || !document.contains(el)) { return; } 2703 var y = window.pageYOffset; 2704 try { el.focus({ preventScroll: true }); } 2705 catch (e) { el.focus(); } 2706 // Safari < 15.4 ignora preventScroll: si igual saltó, volvemos. 2707 if (window.pageYOffset !== y) { jumpTo(y); } 2708 } 2709 // Salta sin animar: critical.css pone html{scroll-behavior:smooth}, asà que 2710 // un window.scrollTo pelado también se animarÃa. 2711 function jumpTo(y){ 2712 var html = document.documentElement; 2713 var prev = html.style.scrollBehavior; 2714 html.style.scrollBehavior = 'auto'; 2715 window.scrollTo(window.pageXOffset, y); 2716 html.style.scrollBehavior = prev; 2717 } 2718 var lockY = 0; 2719 var scrollGuard = null; 2720 // overflow:hidden corta la rueda y el touch, pero NO el scroll programático: 2721 // un scroll suave ya en vuelo cuando abre el popup seguÃa deslizando la 2722 // página hasta su destino por detrás. El TOC y las anclas usan 2723 // scrollIntoView smooth y con miles de pÃxeles Chrome tarda segundos: el 2724 // popup abre en medio de la animación y la página termina en el pie. El 2725 // salto instantáneo a la posición actual cancela esa animación; el guardia 2726 // la devuelve si algo más la mueve mientras el popup está abierto. 2727 function lockScroll(){ 2728 lockY = window.pageYOffset; 2729 // La clase va en <html> y en <body>: el viewport toma su overflow del 2730 // html (critical.css le pone overflow-x:clip), asà que con el lock solo 2731 // en body la página seguÃa scrolleando detrás del popup hasta el fondo. 2732 document.documentElement.classList.add('guru-popup-open'); 2733 document.body.classList.add('guru-popup-open'); 2734 jumpTo(lockY); 2735 scrollGuard = function(e){ 2736 // El diálogo scrollea por dentro; acá solo miramos el documento. 2737 if (e && e.target && e.target !== document && e.target !== document.documentElement) { return; } 2738 if (window.pageYOffset !== lockY) { jumpTo(lockY); } 2739 }; 2740 window.addEventListener('scroll', scrollGuard, { passive: true }); 2741 } 2742 function unlockScroll(){ 2743 if (scrollGuard) { window.removeEventListener('scroll', scrollGuard); scrollGuard = null; } 2744 document.documentElement.classList.remove('guru-popup-open'); 2745 document.body.classList.remove('guru-popup-open'); 2746 } 2747 // Creatividad de iframe: el `src` se pone recién acá. Un iframe con src 2748 // se descarga aunque esté oculto, y el popup vive en el footer desde la 2749 // carga: el banner externo pesarÃa en todas las páginas aunque nadie 2750 // llegue a verlo. Además se le da al iframe el tamaño real del creativo 2751 // y se lo escala para que entre en el diálogo â un iframe no achica lo 2752 // que trae adentro, asà que en una caja más angosta se verÃa un recorte. 2753 function setupFrame(modal){ 2754 var box = modal.querySelector('.guru-popup__frame'); 2755 if (!box || box.dataset.guruFrameReady) { return; } 2756 var frame = box.querySelector('iframe'); 2757 var pick = window.matchMedia('(max-width: 599.98px)').matches ? 'mobile' : 'desktop'; 2758 var src = box.getAttribute('data-src-' + pick); 2759 // Sin src para este ancho la caja está oculta por CSS: no hay nada 2760 // que pedir ni que medir. 2761 if (!frame || !src) { return; } 2762 box.dataset.guruFrameReady = '1'; 2763 var w = parseInt(box.getAttribute('data-w-' + pick), 10) || 0; 2764 var h = parseInt(box.getAttribute('data-h-' + pick), 10) || 0; 2765 function fit(){ 2766 var avail = box.clientWidth; 2767 if (!avail || !w || !h) { return; } 2768 var s = Math.min(1, avail / w); 2769 frame.style.width = w + 'px'; 2770 frame.style.height = h + 'px'; 2771 frame.style.transform = s < 1 ? 'scale(' + s + ')' : ''; 2772 box.style.height = Math.round(h * s) + 'px'; 2773 } 2774 fit(); 2775 window.addEventListener('resize', fit); 2776 frame.setAttribute('src', src); 2777 } 2778 function openModal(modal){ 2779 current = modal; 2780 lastFocus = document.activeElement; 2781 modal.hidden = false;
2782 setupFrame(modal); 2783 lockScroll(); 2784 var closeBtn = modal.querySelector('.guru-popup__close'); 2785 focusNoScroll(closeBtn); 2786 window.guruPopupTrack && window.guruPopupTrack('popup_view', modalMeta(modal)); 2787 // Aviso para widgets que necesitan (re)inicializarse ya visibles 2788 // (canvas, ruletas, raspaditas que miden ancho/alto al arrancar). 2789 try { 2790 modal.dispatchEvent(new CustomEvent('guru:popup:open', { bubbles: true, detail: { id: modal.getAttribute('data-guru-popup') } })); 2791 } catch (e) {} 2792 } 2793 function closeModal(){ 2794 if (!current) { return; } 2795 window.guruPopupTrack && window.guruPopupTrack('popup_close', modalMeta(current)); 2796 current.hidden = true; 2797 unlockScroll(); 2798 focusNoScroll(lastFocus); 2799 current = null; 2800 } 2801 2802 document.addEventListener('click', function(e){ 2803 if (!current) { return; } 2804 if (e.target.closest('[data-guru-popup-close]')) { e.preventDefault(); closeModal(); return; } 2805 // CTA de popups de texto: los juegos mandan su propio evento, asà que 2806 // acá se saltean para no contar la misma conversión dos veces. 2807 // Creatividad clickeable del popup de imagen. 2808 var creative = e.target.closest('a.guru-popup__image'); 2809 if (creative) { 2810 var mi = modalMeta(current); 2811 mi.link_url = creative.getAttribute('href') || ''; 2812 window.guruPopupTrack && window.guruPopupTrack('popup_image_click', mi); 2813 return; 2814 } 2815 var cta = e.target.closest('.guru-popup__cta'); 2816 if (cta && !cta.closest('.guru-roulette') && !cta.closest('.guru-scratch') && !cta.closest('.guru-slotmachine') && !cta.closest('.guru-fruits')) { 2817 var m = modalMeta(current); 2818 m.link_url = cta.getAttribute('href') || ''; 2819 window.guruPopupTrack && window.guruPopupTrack('popup_cta', m); 2820 } 2821 }); 2822 document.addEventListener('keydown', function(e){ 2823 if (!current) { return; } 2824 if (e.key === 'Escape') { closeModal(); return; } 2825 if (e.key === 'Tab') { 2826 var dialog = current.querySelector('.guru-popup__dialog'); 2827 var f = focusables(dialog); 2828 if (!f.length) { return; } 2829 var first = f[0], last = f[f.length - 1]; 2830 if (!dialog || !dialog.contains(document.activeElement)) { 2831 e.preventDefault(); first.focus(); 2832 } else if (e.shiftKey && document.activeElement === first) { 2833 e.preventDefault(); last.focus(); 2834 } else if (!e.shiftKey && document.activeElement === last) { 2835 e.preventDefault(); first.focus(); 2836 } 2837 } 2838 }); 2839 2840 // Solo un popup por carga: el primero (en orden de slot) que todavÃa no 2841 // haya llegado a su tope de apariciones del dÃa. 2842 var pick = null; 2843 for (var i = 0; i < popups.length; i++) { 2844 var id = popups[i].getAttribute('data-guru-popup'); 2845 var max = parseInt(popups[i].getAttribute('data-max'), 10) || 1; 2846 if (TEST || shownToday(id) < max) { pick = popups[i]; break; } 2847 } 2848 if (!pick) { return; } 2849 2850 var delay = parseInt(pick.getAttribute('data-delay'), 10) || 0; 2851 window.setTimeout(function(){ 2852 if (!TEST) { bump(pick.getAttribute('data-guru-popup')); } 2853 openModal(pick); 2854 }, delay); 2855 })(); 2856 </script>
2856 2857 <nav class="guru-appnav" aria-label="Navegación de la app"> 2858 <button type="button" class="guru-appnav__btn" data-guru-appnav="back" aria-label="Atrás"> 2859 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M15 18l-6-6 6-6"/></svg> 2860 </button> 2861 <a class="guru-appnav__btn" href="https://apostar.com.ec/" data-guru-appnav="home" aria-label="Inicio"> 2862 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M3 10.5L12 3l9 7.5"/><path d="M5 9.8V20h14V9.8"/></svg> 2863 </a> 2864 <button type="button" class="guru-appnav__btn" data-guru-appnav="reload" aria-label="Recargar"> 2865 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M21 12a9 9 0 1 1-2.64-6.36"/><path d="M21 3v6h-6"/></svg> 2866 </button> 2867 <button type="button" class="guru-appnav__btn guru-appnav__menu" data-guru-appnav="menu" aria-controls="primary-nav" aria-expanded="false" aria-label="Abrir menú"> 2868 <span class="hamburger"></span> 2869 </button> 2870 </nav> 2871
2871<script> 2872 (function(){ 2873 var nav = document.querySelector('.guru-appnav'); 2874 if (!nav) { return; } 2875 var HOME = "https:\/\/apostar.com.ec\/"; 2876 var back = nav.querySelector('[data-guru-appnav="back"]'); 2877 2878 // history.length cuenta entradas, no la posición: en la página en la que 2879 // abrió la app vale 1 y atrás no tiene a dónde ir, asà que el botón sale 2880 // apagado. Después de navegar y volver sigue valiendo 2 aunque estemos de 2881 // nuevo en el principio, y ahà history.back() no hace nada: de eso se 2882 // encarga el respaldo de abajo. 2883 function syncBack(){ 2884 if (!back) { return; } 2885 if (window.history.length > 1) { back.removeAttribute('aria-disabled'); } 2886 else { back.setAttribute('aria-disabled', 'true'); } 2887 } 2888 syncBack(); 2889 // Al volver desde el caché de atrás/adelante la página no se re-ejecuta. 2890 window.addEventListener('pageshow', syncBack); 2891 2892 // El menú lo sigue manejando el toggle del header (initMobileMenu en 2893 // main.js engancha un solo .menu-toggle): este botón le pasa el click y 2894 // espeja su aria-expanded, asà la animación a X y el cierre por el botón 2895 // del panel quedan sincronizados sin duplicar la lógica. 2896 var headerToggle = document.querySelector('.header-top__left .menu-toggle') || document.querySelector('.menu-toggle'); 2897 var menuBtn = nav.querySelector('[data-guru-appnav="menu"]'); 2898 if (menuBtn) { 2899 if (!headerToggle) { 2900 menuBtn.remove(); 2901 menuBtn = null; 2902 } else if (window.MutationObserver) { 2903 new MutationObserver(function(){ 2904 var open = 'true' === headerToggle.getAttribute('aria-expanded'); 2905 menuBtn.setAttribute('aria-expanded', String(open)); 2906 }).observe(headerToggle, { attributes: true, attributeFilter: ['aria-expanded'] }); 2907 } 2908 } 2909 2910 function goBack(){ 2911 var from = window.location.href; 2912 // Si history.back() no llevó a ninguna parte, caemos al inicio en vez 2913 // de dejar un botón que no hace nada. 2914 var t = window.setTimeout(function(){ 2915 if (window.location.href === from) { window.location.href = HOME; } 2916 }, 450); 2917 window.addEventListener('pagehide', function(){ window.clearTimeout(t); }, { once: true }); 2918 window.history.back(); 2919 } 2920 2921 nav.addEventListener('click', function(e){ 2922 var el = e.target.closest('[data-guru-appnav]'); 2923 if (!el || 'true' === el.getAttribute('aria-disabled')) { return; } 2924 var action = el.getAttribute('data-guru-appnav'); 2925 if ('back' === action) { e.preventDefault(); goBack(); return; } 2926 if ('reload' === action) { e.preventDefault(); window.location.reload(); return; } 2927 if ('menu' === action) { 2928 e.preventDefault(); 2929 // main.js cierra el menú con un handler de "click afuera" en 2930 // document, y este botón queda afuera del panel y del toggle: sin 2931 // cortar la propagación, el click abre el menú por el toggle y 2932 // después el mismo click lo vuelve a cerrar. 2933 e.stopPropagation(); 2934 if (headerToggle) { headerToggle.click(); } 2935 return; 2936 } 2937 // "inicio" es un <a> de verdad: lo resuelve el navegador. 2938 }); 2939 })(); 2940 </script>
2940 2941
2941<script id="guru-main-js-extra"> 2942var GURU_AJAX = {"url":"https://apostar.com.ec/wp-admin/admin-ajax.php","nonce":"1b2c0a4cfc","i18n":{"toggleSubmenu":"Mostrar submen\u00fa"}}; 2943//# sourceURL=guru-main-js-extra 2944</script>
vendor: 1 bytes, line 2944
2944
2945<script data-wp-strategy="defer" defer id="guru-main-js" defer src="https://apostar.com.ec/wp-content/themes/repo-igl-main/assets/js/main.js"></script>
2945 2946
2946<script id="guru-sn-inline"> 2947 (function () { 2948 var CFG = {"url":"https:\/\/apostar.com.ec\/wp-admin\/admin-ajax.php","action":"guru_sn_subscribe","i18n":{"success":"\u00a1Listo! Revisa tu correo para confirmar.","invalid":"Ingres\u00e1 un email v\u00e1lido.","error":"No pudimos suscribirte ahora. Prob\u00e1 m\u00e1s tarde.","sending":"Enviando\u2026"}}; 2949 function bind(form) { 2950 if (form.getAttribute('data-guru-sn-bound')) { return; } 2951 form.setAttribute('data-guru-sn-bound', '1'); 2952 var banner = form.closest ? form.closest('.guru-sn') : null; 2953 var input = form.querySelector('input[type="email"]'); 2954 var button = form.querySelector('button[type="submit"]'); 2955 var msg = banner ? banner.querySelector('[data-guru-sn-msg]') : null; 2956 var hp = form.querySelector('input[name="guru_sn_website"]'); 2957 function showMsg(text, ok) { 2958 if (!msg) { return; } 2959 msg.textContent = text; 2960 msg.className = 'guru-sn__message ' + (ok ? 'is-success' : 'is-error'); 2961 msg.hidden = false; 2962 } 2963 form.addEventListener('submit', function (e) { 2964 e.preventDefault(); 2965 var email = input ? input.value.trim() : ''; 2966 if (!email || email.indexOf('@') < 1 || email.indexOf('.') < 0) { 2967 showMsg(CFG.i18n.invalid, false); 2968 if (input) { input.focus(); } 2969 return; 2970 } 2971 var btnText = button ? button.textContent : ''; 2972 if (button) { button.disabled = true; button.textContent = CFG.i18n.sending; } 2973 var data = new URLSearchParams(); 2974 data.append('action', CFG.action); 2975 data.append('email', email); 2976 data.append('guru_sn_website', hp ? hp.value : ''); 2977 fetch(CFG.url, { 2978 method: 'POST', 2979 headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, 2980 body: data.toString(), 2981 credentials: 'same-origin' 2982 }).then(function (r) { 2983 return r.json().catch(function () { return { success: r.ok }; }); 2984 }).then(function (j) { 2985 if (j && j.success) { 2986 // Ãxito: ocultar el botón, dejar el email visible pero 2987 // deshabilitado, y mostrar el mensaje en su lugar. 2988 if (button) { button.hidden = true; } 2989 if (input) { input.disabled = true; input.readOnly = true; } 2990 showMsg(CFG.i18n.success, true); 2991 } else { 2992 showMsg(CFG.i18n.error, false); 2993 if (button) { button.disabled = false; button.textContent = btnText; } 2994 } 2995 }).catch(function () { 2996 showMsg(CFG.i18n.error, false); 2997 if (button) { button.disabled = false; button.textContent = btnText; } 2998 }); 2999 }); 3000 } 3001 function init() { 3002 var forms = document.querySelectorAll('form[data-guru-sn]'); 3003 for (var i = 0; i < forms.length; i++) { bind(forms[i]); } 3004 } 3005 if (document.readyState === 'loading') { 3006 document.addEventListener('DOMContentLoaded', init); 3007 } else { 3008 init(); 3009 } 3010 })(); 3011 </script>
3011 3012 </body> 3013</html> 3014 3015<!-- Cache served by breeze CACHE - Last modified: Tue, 29 Sep 2026 21:42:00 GMT --> 3016 3017<!-- plugin=object-cache-pro client=phpredis metric#hits=20355 metric#misses=1541 metric#hit-ratio=93.0 metric#bytes=3794048 metric#prefetches=0 metric#store-reads=1654 metric#store-writes=12 metric#store-hits=551 metric#store-misses=1536 metric#sql-queries=21 metric#ms-total=2503.09 metric#ms-cache=223.26 metric#ms-cache-avg=0.1341 metric#ms-cache-ratio=8.9 -->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.