1<!DOCTYPE html> 2<html lang="pt-PT"> 3<head> 4<meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1.0"> 6<meta http-equiv="origin-trial" content="AkwGkXx9E8XCZYJdPXXYVPtEA/TPkUIbM6tMzd9jW38MvoAKxHbBXOiaNyGKVDP5PcQnRS4zwDN3iP3QCRQuIwAAAABbeyJvcmlnaW4iOiJodHRwczovLzRnZWVrLnB0OjQ0MyIsImZlYXR1cmUiOiJXZWJNQ1AiLCJleHBpcnkiOjE3OTQ4NzM2MDAsImlzU3ViZG9tYWluIjp0cnVlfQ==">
7<script> 8(function(){ 9 if (!document.modelContext || typeof document.modelContext.registerTool !== 'function') return; 10 var O = "https:\/\/4geek.pt", N = "Portal 4Geek"; 11 var fmt = function(l){ return (l && l.length) ? l.map(function(x){ return '- ' + x.titulo + ': ' + x.url; }).join('\n') : ''; }; 12 try { 13 document.modelContext.registerTool({ 14 name: 'buscar_noticias', 15 description: 'Busca notÃcias no ' + N + ' por um termo (assunto, pessoa, programa, jogo, novela).', 16 inputSchema: { type: 'object', properties: { termo: { type: 'string', description: 'Termo de busca' } }, required: ['termo'] }, 17 annotations: { readOnlyHint: true }, 18 execute: async function(a){ 19 var q = (a && a.termo) || ''; 20 try { 21 var r = await fetch(O + '/api/webmcp.php?action=buscar&q=' + encodeURIComponent(q)); 22 var d = await r.json(); 23 return (d.results && d.results.length) ? fmt(d.results) : ('Nenhuma notÃcia encontrada para "' + q + '".'); 24 } catch (e) { return 'Não foi possÃvel buscar agora.'; } 25 } 26 }); 27 document.modelContext.registerTool({ 28 name: 'ultimas_noticias', 29 description: 'Lista as últimas notÃcias publicadas no ' + N + ' (opcionalmente por categoria).', 30 inputSchema: { type: 'object', properties: { categoria: { type: 'string', description: 'Slug da categoria, ex.: futebol, novelas, realities (opcional)' } } }, 31 annotations: { readOnlyHint: true }, 32 execute: async function(a){ 33 var c = (a && a.categoria) || ''; 34 try { 35 var r = await fetch(O + '/api/webmcp.php?action=ultimas&cat=' + encodeURIComponent(c)); 36 var d = await r.json(); 37 return fmt(d.results) || 'Sem notÃcias no momento.'; 38 } catch (e) { return 'Não foi possÃvel carregar as notÃcias agora.'; } 39 } 40 }); 41 } catch (e) {} 42})(); 43</script>
43 44<title>Series e Filmes - Portal 4Geek</title> 45<meta name="description" content="Noticias e cultura geek: games, anime, cinema, series e tecnologia."> 46<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"> 47<link rel="canonical" href="https://4geek.pt/categoria/series-e-filmes"> 48<meta property="og:title" content="Series e Filmes - Portal 4Geek"> 49<meta property="og:locale" content="pt_PT"> 50<meta property="og:description" content="Noticias e cultura geek: games, anime, cinema, series e tecnologia."> 51<meta property="og:image" content="https://4geek.pt/assets/img/og-default.jpg"> 52<meta property="og:image:alt" content="Series e Filmes - Portal 4Geek"> 53<meta property="og:image:width" content="1200"> 54<meta property="og:image:height" content="630"> 55<meta property="og:url" content="https://4geek.pt/categoria/series-e-filmes"> 56<meta property="og:type" content="website"> 57<meta property="og:site_name" content="Portal 4Geek"> 58<meta name="twitter:card" content="summary_large_image"> 59<meta name="twitter:title" content="Series e Filmes - Portal 4Geek"> 60<meta name="twitter:description" content="Noticias e cultura geek: games, anime, cinema, series e tecnologia."> 61<meta name="twitter:image" content="https://4geek.pt/assets/img/og-default.jpg"> 62<meta name="twitter:image:alt" content="Series e Filmes - Portal 4Geek">
63<script type="application/ld+json">{"@context":"https://schema.org","@type":"CollectionPage","name":"Series e Filmes","url":"https://4geek.pt/categoria/series-e-filmes","mainEntity":{"@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"name":"Unabomber domina Netflix com 16,4 milhões de visualizações","url":"https://4geek.pt/unabomber-domina-netflix-com-164-milhoes-de-visualizacoes"},{"@type":"ListItem","position":2,"name":"Deezer personaliza playlists em destaque no Dia Internacional da Música","url":"https://4geek.pt/deezer-personaliza-playlists-em-destaque-no-dia-internacional-da-musica"},{"@type":"ListItem","position":3,"name":"Verity: estreia mira $35 milhões e deve liderar bilheteiras","url":"https://4geek.pt/verity-estreia-mira-35-milhoes-e-deve-liderar-bilheteiras"},{"@type":"ListItem","position":4,"name":"Desaparecida (Last Seen): episódio revela origem do sequestro","url":"https://4geek.pt/desaparecida-last-seen-episodio-revela-origem-do-sequestro"},{"@type":"ListItem","position":5,"name":"A Leste do Ãden: Cathy de Florence Pugh domina a nova adaptação","url":"https://4geek.pt/a-leste-do-eden-cathy-de-florence-pugh-domina-a-nova-adaptacao"},{"@type":"ListItem","position":6,"name":"Oasis: Don't Look Back In Anger chega ao Disney+ com bastidores da reunião","url":"https://4geek.pt/oasis-dont-look-back-in-anger-chega-ao-disney-com-bastidores-da-reuniao"},{"@type":"ListItem","position":7,"name":"David Ellison escolhe Ynon Kreiz como coâCEO da ParamountâWarner","url":"https://4geek.pt/david-ellison-escolhe-ynon-kreiz-como-coceo-da-paramountwarner"},{"@type":"ListItem","position":8,"name":"Slow Horses: atentado em Westacres e desaparecimento forjado de River","url":"https://4geek.pt/slow-horses-atentado-em-westacres-e-desaparecimento-forjado-de-river"},{"@type":"ListItem","position":9,"name":"American Horror Story: 3 episódios chegam seguidos ao Disney+","url":"https://4geek.pt/american-horror-story-3-episodios-chegam-seguidos-ao-disney"},{"@type":"ListItem","position":10,"name":"Daniel Zolghadri assume papel de Charles Melton em My Darling California","url":"https://4geek.pt/daniel-zolghadri-assume-papel-de-charles-melton-em-my-darling-california"},{"@type":"ListItem","position":11,"name":"Se a Vida te Der Tangerinasâ¦: tragédia familiar altera destinos","url":"https://4geek.pt/se-a-vida-te-der-tangerinas-tragedia-familiar-altera-destinos"},{"@type":"ListItem","position":12,"name":"Medusa: Bárbara dissolve o império e põe fim à série","url":"https://4geek.pt/medusa-barbara-dissolve-o-imperio-e-poe-fim-a-serie"}]}}</script>
vendor: 1 bytes, line 63
63
64<script type="application/ld+json">{"@type":"NewsMediaOrganization","@id":"https://4geek.pt/#organization","name":"Portal 4Geek","url":"https://4geek.pt","description":"Noticias e cultura geek: games, anime, cinema, series e tecnologia.","foundingDate":"2026","email":"[email protected]","logo":{"@type":"ImageObject","@id":"https://4geek.pt/#logo","url":"https://4geek.pt/assets/img/logo.webp","width":1731,"height":909},"contactPoint":{"@type":"ContactPoint","email":"[email protected]","contactType":"customer service","url":"https://4geek.pt/contato"},"@context":"https://schema.org"}</script>
vendor: 1 bytes, line 64
64
65<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://4geek.pt"},{"@type":"ListItem","position":2,"name":"Series e Filmes","item":"https://4geek.pt/categoria/series-e-filmes"}]}</script>
65 66<link rel="preconnect" href="https://fonts.googleapis.com"> 67<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 68<link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" onload="this.onload=null;this.rel='stylesheet'"> 69<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap"></noscript> 70<style>.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0} 71 72/* =========================== 73 VARIÃVEIS & RESET 74=========================== */ 75:root { 76 --primary: #006494; 77 --primary-dk: #13293D; 78 --primary-md: #247BA0; 79 --primary-lt: #1B98E0; 80 --light-bg: #E8F1F2; 81 --dark: #13293D; 82 --gray: #4A6278; 83 --light-gray: #E8F1F2; 84 --border: #C8DCE4; 85 --white: #FFFFFF; 86 --font: 'Inter', system-ui, -apple-system, sans-serif; 87 --radius: 6px; 88 --shadow: 0 2px 8px rgba(19,41,61,.10); 89 --max: 1200px; 90} 91*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } 92html { font-size: 16px; scroll-behavior: smooth; } 93body { font-family: var(--font); color: var(--dark); background: var(--white); line-height: 1.6; overflow-x: hidden; } 94img { max-width: 100%; height: auto; display: block; } 95a { color: inherit; text-decoration: none; } 96ul { list-style: none; } 97 98/* Breadcrumb */ 99.breadcrumb { 100 display: flex; align-items: center; flex-wrap: wrap; gap: 4px; 101 font-size: .78rem; color: #9CA3AF; 102 padding: 10px 0 4px; margin-bottom: 12px; 103} 104.breadcrumb a { color: #6B7280; transition: color .15s; } 105.breadcrumb a:hover { color: var(--primary); } 106.bc-sep { color: #9CA3AF; font-size: .9rem; } 107.bc-current { color: #374151; font-weight: 500; 108 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 260px; } 109 110.container { max-width: var(--max); margin: 0 auto; padding: 0 16px; } 111 112/* =========================== 113 HEADER 114=========================== */ 115.site-header { background: var(--white); color: var(--dark); position: sticky; top: 0; z-index: 100; box-shadow: 0 1px 6px rgba(19,41,61,.12); } 116 117.header-inner { 118 display: flex; 119 align-items: center; 120 justify-content: space-between; 121 height: 64px; 122} 123.logo img { height: 44px; width: auto; } 124 125/* Logo texto */ 126.logo-text { 127 font-size: 1.3rem; font-weight: 800; color: var(--primary-dk); 128 letter-spacing: -.02em; text-decoration: none; line-height: 1; 129} 130.logo-text span { color: var(--primary-lt); } 131 132.burger { 133 background: none; border: none; cursor: pointer; 134 display: flex; flex-direction: column; gap: 5px; padding: 4px; 135} 136.burger span { display: block; width: 22px; height: 2px; background: var(--dark); border-radius: 2px; } 137 138.search-icon { color: var(--dark); opacity: .7; } 139.search-icon:hover { opacity: 1; color: var(--primary); } 140 141/* =========================== 142 SIDEBAR DRAWER 143=========================== */ 144.sidebar-drawer { 145 position: fixed; top: 0; left: 0; height: 100vh; width: 272px; 146 background: var(--white); z-index: 200; 147 transform: translateX(-100%); transition: transform .28s cubic-bezier(.4,0,.2,1); 148 display: flex; flex-direction: column; overflow-y: auto; 149 box-shadow: 4px 0 24px rgba(19,41,61,.14); 150} 151.sidebar-drawer.open { transform: translateX(0); } 152 153.sidebar-head { 154 display: flex; align-items: center; justify-content: space-between; 155 padding: 18px 20px 16px; border-bottom: 1px solid var(--border); 156 flex-shrink: 0; 157} 158.sidebar-logo-text { 159 font-size: 1.15rem; font-weight: 800; color: var(--primary-dk); letter-spacing: -.02em; 160} 161.sidebar-logo-text strong { color: var(--primary-lt); font-weight: 800; } 162.sidebar-close { 163 background: none; border: none; cursor: pointer; color: var(--gray); 164 display: flex; align-items: center; justify-content: center; 165 width: 32px; height: 32px; border-radius: 6px; transition: background .15s; 166} 167.sidebar-close:hover { background: var(--light-gray); } 168 169.sidebar-section-label { 170 font-size: .65rem; font-weight: 700; letter-spacing: .12em; 171 color: var(--gray); padding: 18px 20px 6px; text-transform: uppercase; 172} 173 174.sidebar-link { 175 display: flex; align-items: center; gap: 10px; 176 padding: 11px 20px; font-size: .82rem; font-weight: 600; 177 color: var(--dark); text-transform: uppercase; letter-spacing: .04em; 178 border-left: 3px solid transparent; transition: background .15s, border-color .15s, color .15s; 179} 180.sidebar-link:hover { background: var(--light-gray); color: var(--primary); } 181.sidebar-link.active { border-color: var(--primary); color: var(--primary); background: #f0f8fc; } 182 183.sidebar-link-home svg:first-child { flex-shrink: 0; color: var(--primary); } 184.s-dot { 185 width: 8px; height: 8px; border-radius: 50%; background: var(--primary-md); 186 flex-shrink: 0; 187} 188.s-arrow { margin-left: auto; flex-shrink: 0; color: var(--gray); opacity: .5; } 189 190.sidebar-sub { 191 display: none; flex-direction: column; padding-left: 20px; border-left: 3px solid transparent; 192 background: #f8fafb; 193} 194.sidebar-sub.open { display: flex; } 195.sidebar-sublink { 196 display: block; padding: 8px 20px 8px 14px; 197 font-size: .78rem; font-weight: 500; color: var(--gray); 198 border-left: 2px solid transparent; 199 transition: color .15s, border-color .15s; 200} 201.sidebar-sublink:hover { color: var(--primary); } 202.sidebar-sublink.active { color: var(--primary); border-color: var(--primary); } 203 204.sidebar-trending { 205 display: flex; flex-wrap: wrap; gap: 8px; padding: 8px 20px 4px; 206} 207.sidebar-pill { 208 display: inline-block; padding: 5px 12px; border-radius: 20px; 209 border: 1px solid var(--border); background: var(--white); 210 font-size: .72rem; font-weight: 600; color: var(--dark); 211 transition: background .15s, border-color .15s, color .15s; 212 line-height: 1.3; max-width: 100%; 213} 214.sidebar-pill:hover { border-color: var(--primary); color: var(--primary); background: #f0f8fc; } 215 216.sidebar-socials { display: flex; gap: 8px; padding: 10px 20px 24px; } 217.sidebar-social-btn { 218 width: 36px; height: 36px; border-radius: 50%; 219 display: flex; align-items: center; justify-content: center; 220 background: var(--light-bg); color: var(--primary); 221 transition: background .2s, color .2s; 222} 223.sidebar-social-btn:hover { background: var(--primary); color: var(--white); } 224 225/* Nav horizontal */ 226.main-nav { background: var(--primary-dk); border-top: 1px solid rgba(255,255,255,.08); } 227/* âââ Barra horizontal de categorias OCULTA a pedido (desktop + mobile) âââââââ 228 Navegação passa a ser só pelo hambúrguer â° â menu lateral, estilo g1/portais. 229 O código do menu foi PRESERVADO no HTML; "Em Alta" (no menu lateral) e a barra 230 AO VIVO NÃO são afetados. Pra REATIVAR a barra roxa, apague/comente a regra abaixo. */ 231.main-nav { display: none; } 232/* âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 233.nav-inner { 234 display: flex; align-items: center; justify-content: center; gap: 4px; 235 overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; 236} 237@media (max-width: 900px) { 238 .nav-inner { justify-content: flex-start; } 239} 240/* No desktop, deixa o dropdown do submenu escapar (overflow-x:auto forçava 241 overflow-y:auto e cortava o menu que desce). No mobile mantém o scroll. */ 242@media (min-width: 901px) { 243 /* overflow visible p/ o dropdown escapar; wrap evita cortar quando há muitas 244 categorias (ex: Concursos Públicos) â quebra pra 2ª linha em vez de clipar. */ 245 .nav-inner { overflow: visible; flex-wrap: wrap; } 246} 247.nav-inner::-webkit-scrollbar { display: none; } 248.nav-link { 249 white-space: nowrap; padding: 12px 10px; 250 font-size: .8rem; font-weight: 600; letter-spacing: .04em; 251 text-transform: uppercase; color: rgba(255,255,255,.75); 252 border-bottom: 2px solid transparent; transition: color .2s, border-color .2s; 253} 254.nav-link:hover, .nav-link.active { color: var(--white); border-color: var(--primary-lt); } 255 256/* Nav dropdown */ 257.nav-item { 258 position: relative; display: flex; align-items: center; 259} 260.nav-item > .nav-link { display: flex; align-items: center; gap: 4px; } 261.nav-caret { transition: transform .2s; flex-shrink: 0; opacity: .7; } 262.nav-item:hover .nav-caret { transform: rotate(180deg); } 263.nav-item.active > .nav-link { color: var(--white); border-color: var(--primary-lt); } 264.nav-dropdown { 265 display: none; position: absolute; top: 100%; left: 0; 266 min-width: 180px; background: var(--primary-dk); 267 border-top: 2px solid var(--primary-lt); border-radius: 0 0 6px 6px; 268 box-shadow: 0 8px 20px rgba(0,0,0,.25); z-index: 200; 269} 270.nav-item:hover .nav-dropdown { display: block; } 271.nav-dropdown-link { 272 display: block; padding: 10px 16px; 273 font-size: .78rem; font-weight: 600; letter-spacing: .04em; 274 text-transform: uppercase; color: rgba(255,255,255,.7); 275 border-left: 2px solid transparent; 276 transition: color .15s, background .15s, border-color .15s; 277 white-space: nowrap; 278} 279.nav-dropdown-link:hover { color: var(--white); background: rgba(255,255,255,.08); } 280.nav-dropdown-link.active { color: var(--white); border-color: var(--primary-lt); } 281 282/* DM Play â destaque no nav desktop */ 283.nav-dmplay { 284 color: #1B98E0 !important; 285 background: rgba(27,152,224,.12); 286 border-radius: 5px; 287 border-bottom-color: transparent !important; 288 margin: 6px 4px; 289 padding: 6px 14px !important; 290 transition: background .2s, color .2s; 291} 292.nav-dmplay:hover { background: rgba(27,152,224,.25) !important; color: #fff !important; } 293 294/* DM Play â destaque na sidebar */ 295.sidebar-dmplay { 296 color: #006494 !important; 297 border-left-color: #1B98E0 !important; 298 background: #f0f8fc; 299 font-weight: 700; 300} 301.sidebar-dmplay:hover { background: #daeef8 !important; color: #006494 !important; } 302.sidebar-dmplay .s-dmplay-icon { color: #1B98E0; flex-shrink: 0; font-style: normal; font-size: 1rem; } 303 304/* Bolinha "AO VIVO" piscando (menu) */ 305@keyframes dm-live-blink { 0%, 100% { opacity: 1; } 50% { opacity: .15; } } 306.dm-live-dot { 307 display: inline-block; width: 9px; height: 9px; border-radius: 50%; 308 background: #e02424; margin-right: 7px; vertical-align: middle; flex-shrink: 0; 309 animation: dm-live-blink 1s ease-in-out infinite; 310} 311@media (prefers-reduced-motion: reduce) { .dm-live-dot { animation: none; } } 312 313/* Mobile nav overlay */ 314.mobile-overlay { 315 display: none; position: fixed; inset: 0; 316 background: rgba(0,0,0,.45); z-index: 199; 317} 318 319/* Ticker */ 320/* Faixa do topo (ticker AO VIVO + Em Alta): fundo na cor da marca â igual ao botão 321 "Seguir no Google" (.gf-btn) e aos selos de categoria (.badge), todos var(--primary). 322 Antes era var(--light-gray) (o "roxo claro"). Texto em branco p/ legibilidade. */ 323.ticker-bar { background: var(--primary); border-top: 1px solid var(--primary); border-bottom: 1px solid var(--primary); } 324.ticker-inner { 325 display: flex; align-items: center; justify-content: center; gap: 12px; 326 height: 36px; overflow: hidden; 327} 328.ticker-label { 329 display: flex; align-items: center; gap: 5px; 330 font-size: .72rem; font-weight: 700; letter-spacing: .08em; 331 text-transform: uppercase; color: #fff; white-space: nowrap; 332} 333.ticker-label-live { color: #fff; } /* "AO VIVO" branco; o ponto vermelho (.dm-live-dot) mantém o sinal de live */ 334.ticker-text { 335 font-size: .8rem; color: rgba(255,255,255,.92); 336 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 337} 338.ticker-text:hover { color: #fff; text-decoration: underline; } 339 340/* Mobile nav overlay */ 341.mobile-overlay { 342 display: none; position: fixed; inset: 0; 343 background: rgba(0,0,0,.5); z-index: 99; 344} 345
346/* =========================== 347 BADGES 348=========================== */ 349.badge { 350 display: inline-block; background: var(--primary); color: var(--white); 351 font-size: .7rem; font-weight: 700; letter-spacing: .05em; 352 text-transform: uppercase; padding: 3px 8px; border-radius: 3px; 353} 354.badge-sm { 355 display: inline-block; color: var(--primary); 356 font-size: .7rem; font-weight: 700; letter-spacing: .04em; 357 text-transform: uppercase; margin-bottom: 4px; 358} 359 360/* =========================== 361 HERO 362=========================== */ 363.hero { display: grid; grid-template-columns: 1fr 380px; gap: 14px; padding-top: 20px; padding-bottom: 8px; } 364 365.hero-card { position: relative; border-radius: var(--radius); overflow: hidden; } 366.hero-card > a { display: block; } 367.hero-img { width: 100%; height: 480px; object-fit: cover; display: block; } 368 369.hero-overlay { 370 position: absolute; bottom: 0; left: 0; right: 0; 371 padding: 32px 24px 24px; 372 background: linear-gradient(transparent, rgba(0,0,0,.82)); 373 display: flex; flex-direction: column; align-items: flex-start; gap: 10px; 374} 375.hero-title { 376 font-size: 1.6rem; font-weight: 800; color: var(--white); 377 line-height: 1.25; display: -webkit-box; 378 -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; 379} 380.hero-meta { font-size: .78rem; color: rgba(255,255,255,.75); } 381 382.hero-aside { display: flex; flex-direction: column; gap: 14px; height: 480px; } 383 384/* Card lateral do mosaico hero */ 385.card-side { position: relative; border-radius: var(--radius); overflow: hidden; flex: 1; min-height: 0; } 386.card-side > a { display: block; height: 100%; position: relative; } 387.card-side img { width: 100%; height: 100%; object-fit: cover; display: block; } 388.card-side-overlay { 389 position: absolute; inset: 0; 390 display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start; 391 padding: 20px 16px 16px; 392 background: linear-gradient(transparent 20%, rgba(0,0,0,.78)); 393 gap: 6px; 394} 395.card-side-overlay h3 { 396 color: #fff; font-size: .92rem; font-weight: 700; line-height: 1.3; 397 display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; 398 margin: 0; 399} 400.card-side-meta { font-size: .72rem; color: rgba(255,255,255,.7); } 401 402/* Legado â mantido para mobile grid */ 403.card-small > a { display: flex; gap: 10px; align-items: flex-start; } 404.card-small img { width: 90px; height: 68px; object-fit: cover; border-radius: 4px; flex-shrink: 0; } 405.card-small-body { flex: 1; display: flex; flex-direction: column; gap: 4px; } 406.card-small-body h3 { font-size: .85rem; font-weight: 600; line-height: 1.3; 407 display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } 408 409/* =========================== 410 CARDS GRID 411=========================== */ 412.card { border-radius: var(--radius); overflow: hidden; background: var(--white); box-shadow: var(--shadow); } 413.card > a { display: block; } 414.card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.12); } 415.card-img-wrap { aspect-ratio: 16/9; overflow: hidden; } 416.card-img-wrap img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; } 417.card:hover .card-img-wrap img { transform: scale(1.03); } 418.card-body { padding: 12px; display: flex; flex-direction: column; gap: 6px; } 419.card-body h3 { font-size: .9rem; font-weight: 700; line-height: 1.35; 420 display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } 421.card-excerpt { font-size: .8rem; color: var(--gray); display: -webkit-box; 422 -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } 423.meta-time { font-size: .72rem; color: var(--gray); } 424 425.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } 426.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; } 427 428/* =========================== 429 SECTIONS 430=========================== */ 431.section-cat, .section-authors, .section-more { padding: 28px 0; } 432.section-head { 433 display: flex; align-items: center; justify-content: space-between; 434 margin-bottom: 16px; padding-bottom: 10px; 435 border-bottom: 2px solid var(--primary); 436} 437.section-head h2 { font-size: 1.15rem; font-weight: 800; } 438.see-more { font-size: .78rem; font-weight: 600; color: var(--primary); } 439.see-more:hover { text-decoration: underline; } 440 441/* =========================== 442 AUTHORS 443=========================== */ 444.authors-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; } 445.author-card { 446 display: flex; flex-direction: column; align-items: center; gap: 14px; 447 text-align: center; background: var(--white); border: 1px solid var(--border); 448 border-radius: 12px; padding: 28px 20px; transition: box-shadow .2s; 449} 450.author-card:hover { box-shadow: 0 4px 16px rgba(19,41,61,.1); } 451.author-avatar { width: 90px; height: 90px; border-radius: 50%; overflow: hidden; 452 border: 3px solid var(--light-bg); flex-shrink: 0; } 453.author-avatar img { width: 100%; height: 100%; object-fit: cover; } 454.author-initials { 455 width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; 456 background: var(--primary); color: var(--white); font-size: 1.8rem; font-weight: 700; 457} 458.author-name { font-size: 1rem; font-weight: 700; color: var(--dark); } 459.author-bio-excerpt { font-size: .82rem; color: var(--gray); line-height: 1.6; flex: 1; } 460.author-card-link { 461 font-size: .72rem; font-weight: 700; color: var(--primary); 462 letter-spacing: .06em; text-transform: uppercase; 463} 464.author-card-link:hover { text-decoration: underline; } 465 466/* =========================== 467 ARTICLE PAGE 468=========================== */ 469.article-wrap { padding: 24px 0 40px; } 470.article-main { max-width: 760px; margin: 0 auto; } 471.article-wrap .breadcrumb { max-width: 760px; margin-left: auto; margin-right: auto; } 472.article-cat { margin-bottom: 12px; } 473.article-title { font-size: 2rem; font-weight: 800; line-height: 1.2; margin-bottom: 12px; } 474.article-excerpt { font-size: 1.05rem; color: var(--gray); margin-bottom: 16px; line-height: 1.5; } 475.article-meta { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; } 476.article-author { display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: .88rem; } 477.author-thumb { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; } 478.article-meta time { font-size: .82rem; color: var(--gray); } 479.article-figure { margin-bottom: 24px; border-radius: var(--radius); overflow: hidden; aspect-ratio: 16/9; background: var(--light-gray); } 480.article-img { width: 100%; height: 100%; object-fit: cover; } 481 482.article-content { font-size: 1.05rem; line-height: 1.8; color: #2d2d2d; } 483.article-content p { margin-bottom: 1.2em; } 484.article-content h2 { font-size: 1.4rem; font-weight: 700; margin: 1.6em 0 .6em; } 485.article-content h3 { font-size: 1.2rem; font-weight: 700; margin: 1.4em 0 .5em; } 486.article-content img { border-radius: var(--radius); margin: 1em 0; } 487.article-content iframe { max-width: 100%; } 488.article-content iframe.ql-video { width: 100%; aspect-ratio: 16/9; height: auto; border: 0; border-radius: var(--radius); margin: 1.2em 0; display: block; } 489.article-content a { color: var(--primary); text-decoration: underline; } 490.article-content blockquote { 491 border-left: 4px solid var(--primary); padding: 12px 20px; 492 background: var(--light-gray); margin: 1.2em 0; border-radius: 0 var(--radius) var(--radius) 0; 493 font-style: italic; color: var(--gray); 494} 495.article-content ul, .article-content ol { padding-left: 24px; margin-bottom: 1.2em; } 496.article-content li { margin-bottom: .4em; } 497 498/* Share */ 499.article-share { display: flex; align-items: center; gap: 10px; margin: 28px 0; flex-wrap: wrap; } 500.article-share span { font-weight: 600; font-size: .88rem; } 501.share-btn { 502 padding: 6px 16px; border-radius: 4px; font-size: .8rem; font-weight: 600; color: var(--white); 503} 504.share-fb { background: #1256b0; } 505.share-wa { background: #075E54; } 506.share-tw { background: #000; } 507 508/* Author box */ 509.author-box { 510 border: 1px solid var(--border); border-radius: 10px; 511 background: var(--white); margin-top: 32px; overflow: hidden; 512} 513.author-box-header { 514 display: flex; align-items: center; gap: 8px; 515 padding: 12px 20px; border-bottom: 1px solid var(--border); 516} 517.author-by { font-size: .72rem; font-weight: 700; color: var(--gray); letter-spacing: .08em; } 518.author-box-name { font-size: 1rem; font-weight: 700; color: var(--dark); } 519.author-box-body { display: flex; gap: 20px; align-items: flex-start; padding: 20px; } 520.author-box-img { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; flex-shrink: 0; } 521.author-box-initials { 522 width: 72px; height: 72px; border-radius: 50%; flex-shrink: 0; 523 background: var(--primary); color: var(--white); 524 display: flex; align-items: center; justify-content: center; 525 font-size: 1.6rem; font-weight: 700; 526} 527.author-box-info { flex: 1; display: flex; flex-direction: column; gap: 12px; } 528.author-box-info p { font-size: .88rem; color: var(--gray); line-height: 1.6; } 529.author-box-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; } 530.author-box-socials { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; } 531.author-social-email { display: flex; align-items: center; gap: 5px; font-size: .78rem; color: var(--gray); } 532.author-social-link { 533 display: inline-flex; align-items: center; gap: 4px; 534 font-size: .78rem; font-weight: 600; color: var(--primary); 535} 536.author-social-link:hover { text-decoration: underline; } 537.author-box-more { font-size: .82rem; font-weight: 700; color: var(--primary); white-space: nowrap; } 538.author-box-more:hover { text-decoration: underline; } 539 540/* =========================== 541 PAGE HEAD (category/author) 542=========================== */ 543.page-head { padding: 24px 0 20px; border-bottom: 2px solid var(--primary); margin-bottom: 24px; } 544.page-head h1 { font-size: 1.6rem; font-weight: 800; } 545.page-head p { color: var(--gray); margin-top: 6px; font-size: .9rem; } 546.cat-filter { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; } 547.cat-filter-btn { 548 padding: 5px 14px; border-radius: 20px; font-size: .78rem; font-weight: 600; 549 border: 1px solid var(--border); color: var(--dark); background: var(--white); 550 transition: background .15s, border-color .15s, color .15s; 551} 552.cat-filter-btn:hover, .cat-filter-btn.active { 553 background: var(--primary); border-color: var(--primary); color: var(--white); 554} 555 556/* Author profile */ 557.author-profile { display: flex; gap: 20px; align-items: flex-start; padding: 28px 0 20px; } 558.author-profile-img { width: 90px; height: 90px; border-radius: 50%; object-fit: cover; border: 3px solid var(--border); flex-shrink: 0; } 559.author-profile h1 { font-size: 1.5rem; font-weight: 800; margin-bottom: 8px; } 560.author-profile p { font-size: .9rem; color: var(--gray); } 561 562/* =========================== 563 404 564=========================== */ 565.not-found { text-align: center; padding: 60px 16px; } 566.not-found-code { font-size: 7rem; font-weight: 800; color: var(--primary); line-height: 1; } 567.not-found h1 { font-size: 1.8rem; margin: 12px 0 8px; } 568.not-found p { color: var(--gray); margin-bottom: 24px; } 569.btn-primary { 570 display: inline-block; background: var(--dark); color: var(--white); 571 padding: 12px 28px; border-radius: var(--radius); font-weight: 600; margin-top: 16px; 572} 573.btn-primary:hover { background: var(--primary); } 574 575/* =========================== 576 SEARCH FORM 577=========================== */ 578.search-form { display: flex; gap: 8px; margin: 20px 0; max-width: 520px; } 579.search-form input { 580 flex: 1; padding: 10px 14px; border: 1px solid var(--border); 581 border-radius: var(--radius); font-size: .95rem; font-family: var(--font); 582} 583.search-form input:focus { outline: none; border-color: var(--primary); } 584.search-form button { 585 padding: 10px 20px; background: var(--primary); color: var(--white); 586 border: none; border-radius: var(--radius); font-weight: 600; cursor: pointer; font-size: .9rem; 587} 588 589/* =========================== 590 PAGINATION 591=========================== */ 592.pagination { 593 display: flex; align-items: center; justify-content: center; 594 gap: 16px; padding: 32px 0; 595} 596.page-btn { 597 padding: 8px 20px; border: 1px solid var(--border); 598 border-radius: var(--radius); font-weight: 600; font-size: .88rem; 599} 600.page-btn:hover { background: var(--primary); color: var(--white); border-color: var(--primary); } 601.pagination span { font-size: .88rem; color: var(--gray); } 602 603.empty-msg { text-align: center; padding: 48px 0; color: var(--gray); font-size: 1rem; } 604 605/* =========================== 606 FOOTER 607=========================== */ 608.site-footer { background: var(--white); border-top: 1px solid var(--border); margin-top: 40px; } 609.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px; padding: 48px 16px 36px; } 610 611.footer-brand-name { 612 font-size: 1.3rem; font-weight: 800; color: var(--primary-dk); 613 letter-spacing: -.02em; margin-bottom: 12px; display: block; 614} 615.footer-brand-name span { color: var(--primary-lt); } 616.footer-brand p { font-size: .83rem; line-height: 1.7; color: var(--gray); max-width: 240px; } 617.footer-social { display: flex; gap: 8px; margin-top: 20px; } 618.footer-social a { 619 width: 36px; height: 36px; border-radius: 50%; 620 display: flex; align-items: center; justify-content: center; 621 background: var(--light-bg); color: var(--primary); transition: background .2s, color .2s; 622} 623.footer-social a:hover { background: var(--primary); color: var(--white); } 624 625.footer-col-title { 626 font-size: .75rem; font-weight: 700; letter-spacing: .08em; 627 text-transform: uppercase; color: var(--dark); margin-bottom: 16px; 628} 629.footer-col ul li { margin-bottom: 10px; } 630.footer-col ul a { font-size: .84rem; color: var(--gray); transition: color .2s; } 631.footer-col ul a:hover { color: var(--primary); } 632 633.footer-bottom { border-top: 1px solid var(--border); background: var(--primary-dk); } 634.footer-bottom .container { padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; } 635.footer-bottom p { font-size: .75rem; color: rgba(255,255,255,.5); } 636.footer-bottom a { font-size: .75rem; color: rgba(255,255,255,.5); } 637.footer-bottom a:hover { color: rgba(255,255,255,.9); } 638 639/* =========================== 640 RESPONSIVE 641=========================== */ 642@media (max-width: 1024px) { 643 .hero { grid-template-columns: 1fr 300px; } 644 .grid-4 { grid-template-columns: repeat(2, 1fr); } 645 .footer-grid { grid-template-columns: 1fr 1fr; } 646} 647 648@media (max-width: 768px) { 649 .hero { grid-template-columns: 1fr; } 650 .hero-aside { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; height: 200px; } 651 .card-side img { height: 100%; } 652 .card-side-overlay { padding: 12px 10px 10px; } 653 .card-side-overlay h3 { font-size: .78rem; -webkit-line-clamp: 2; } 654 .hero-img { height: 280px; } 655 .hero-title { font-size: 1.2rem; } 656 .grid-3 { grid-template-columns: repeat(2, 1fr); } 657 .grid-4 { grid-template-columns: repeat(2, 1fr); } 658 .article-title { font-size: 1.5rem; } 659 .footer-grid { grid-template-columns: 1fr 1fr; } 660 .authors-grid { grid-template-columns: repeat(2, 1fr); } 661} 662 663@media (max-width: 500px) { 664 .grid-3, .grid-4 { grid-template-columns: 1fr; } 665 .hero-aside { flex-direction: column; } 666 .footer-grid { grid-template-columns: 1fr; } 667 .article-title { font-size: 1.3rem; } 668 .not-found-code { font-size: 5rem; } 669 .author-profile { flex-direction: column; align-items: center; text-align: center; } 670 .container { padding: 0 10px; } 671 .article-content { font-size: 1rem; } 672 673 /* Nossa Equipe â 1 coluna no mobile */ 674 .authors-grid { grid-template-columns: 1fr; } 675 .author-social-email { word-break: break-all; max-width: 100%; justify-content: center; } 676 677 /* Busca â form empilhado */ 678 .search-form { flex-direction: column; } 679 .search-form input, .search-form button { width: 100%; } 680 681 /* Footer â colunas empilhadas */ 682 .footer-grid { gap: 24px; } 683 684 /* Página estática â tÃtulo menor */ 685 .page-head h1 { font-size: 1.3rem; } 686} 687 688/* âââââââââââââââââââââââââââââââââââââââââââââââ 689 LIVEBLOG 690âââââââââââââââââââââââââââââââââââââââââââââââ */ 691
692/* Widget container */ 693.lb-widget { 694 background: var(--white); 695 border-radius: 12px; 696 box-shadow: 0 2px 12px rgba(19,41,61,.10); 697 overflow: hidden; 698 margin-bottom: 28px; 699} 700 701/* Cabeçalho competição */ 702.lb-header { 703 padding: 10px 16px 8px; 704 background: var(--white); 705 border-bottom: 1px solid var(--border); 706} 707.lb-competition { 708 font-size: .78rem; 709 color: var(--gray); 710 font-weight: 500; 711 margin: 0; 712 display: flex; 713 align-items: center; 714 gap: 4px; 715 flex-wrap: wrap; 716} 717.lb-sep { opacity: .5; } 718 719/* Placar */ 720.lb-score-area { padding: 0 16px 12px; } 721.lb-score-row { 722 display: flex; 723 align-items: center; 724 justify-content: space-between; 725 padding: 16px 0 8px; 726} 727 728/* Times */ 729.lb-team { 730 display: flex; 731 flex-direction: column; 732 align-items: center; 733 gap: 8px; 734 flex: 1; 735} 736.lb-team-left { align-items: center; } 737.lb-team-right { align-items: center; } 738.lb-team-name { 739 font-size: .82rem; 740 font-weight: 700; 741 color: var(--dark); 742 text-align: center; 743 max-width: 100px; 744 word-break: break-word; 745} 746 747/* Escudos */ 748.lb-escudo { 749 width: 64px; 750 height: 64px; 751 object-fit: contain; 752} 753.lb-escudo-badge { 754 display: flex; 755 align-items: center; 756 justify-content: center; 757 background: linear-gradient(135deg, var(--primary), var(--primary-dk)); 758 color: var(--white); 759 border-radius: 50%; 760 font-size: .85rem; 761 font-weight: 800; 762 letter-spacing: -.02em; 763} 764 765/* Placar central */ 766.lb-score-center { 767 display: flex; 768 flex-direction: column; 769 align-items: center; 770 gap: 6px; 771 padding: 0 12px; 772 min-width: 100px; 773} 774.lb-score { 775 font-size: 2.5rem; 776 font-weight: 900; 777 letter-spacing: -2px; 778 color: var(--dark); 779 line-height: 1; 780} 781.lb-score-scheduled { 782 font-size: 1.5rem; 783 font-weight: 700; 784 color: var(--gray); 785 letter-spacing: 0; 786} 787 788/* Status badges */ 789.lb-status { 790 display: inline-flex; 791 align-items: center; 792 gap: 5px; 793 font-size: .72rem; 794 font-weight: 700; 795 letter-spacing: .06em; 796 text-transform: uppercase; 797 padding: 3px 10px; 798 border-radius: 20px; 799 white-space: nowrap; 800} 801.lb-status-live { 802 background: #dcfce7; 803 color: #15803d; 804} 805.lb-status-end { 806 background: #f3f4f6; 807 color: var(--gray); 808} 809.lb-status-interval { 810 background: #fef9c3; 811 color: #854d0e; 812} 813.lb-status-scheduled { 814 background: #dbeafe; 815 color: #1d4ed8; 816} 817 818/* Ponto pulsante ao vivo */ 819.lb-live-dot { 820 width: 8px; 821 height: 8px; 822 border-radius: 50%; 823 background: #22c55e; 824 flex-shrink: 0; 825 animation: lb-pulse 1.5s ease-in-out infinite; 826} 827@keyframes lb-pulse { 828 0%, 100% { opacity: 1; transform: scale(1); } 829 50% { opacity: .5; transform: scale(.75); } 830} 831 832/* Artilheiros */ 833.lb-artilheiros { 834 display: flex; 835 gap: 10px; 836 flex-wrap: wrap; 837 padding-bottom: 8px; 838 font-size: .8rem; 839} 840.lb-artilheiro-item { display: flex; align-items: center; gap: 4px; } 841.lb-artilheiro-casa { 842 color: var(--primary-dk); 843 font-weight: 600; 844} 845.lb-artilheiro-vis { 846 color: var(--gray); 847 font-weight: 600; 848} 849.lb-assist { 850 font-weight: 400; 851 color: var(--gray); 852 font-size: .75rem; 853} 854 855/* Abas */ 856.lb-tabs { 857 display: flex; 858 background: #1a2535; 859 padding: 6px; 860 gap: 4px; 861} 862.lb-tab { 863 flex: 1; 864 padding: 9px 8px; 865 cursor: pointer; 866 font-size: .73rem; 867 font-weight: 700; 868 font-family: var(--font); 869 letter-spacing: .05em; 870 text-transform: uppercase; 871 color: rgba(255,255,255,.45); 872 background: none; 873 border: none; 874 border-radius: 6px; 875 transition: background .15s, color .15s; 876 white-space: nowrap; 877 text-align: center; 878} 879.lb-tab:hover { color: rgba(255,255,255,.8); background: rgba(255,255,255,.07); } 880.lb-tab-active { 881 background: var(--primary); 882 color: var(--white); 883} 884 885/* Conteúdo das abas */ 886.lb-tab-content { 887 display: none; 888 padding: 16px; 889} 890.lb-tab-content-active { display: block; } 891 892/* ââ Liveblog EMPILHADO (sem abas): FICHA â Escalações â EstatÃsticas â Cobertura ao vivo ââ 893 As "abas" viram seções empilhadas via flex + order; sem mover HTML. */ 894.lb-widget { display: flex; flex-direction: column; } 895.lb-tabs { display: none; } /* esconde os botões de aba */ 896.lb-tab-content { display: block !important; } /* mostra todas as seções */ 897.lb-tab-content::before { /* rótulo (barra na cor da marca) */ 898 display: block; font-weight: 800; font-size: .78rem; letter-spacing: .05em; text-transform: uppercase; 899 color: #fff; background: var(--primary); padding: 9px 16px; margin-bottom: 14px; 900} 901#lb-tab-escalacoes { order: 3; } #lb-tab-escalacoes::before { content: "Escalações"; } 902#lb-tab-stats { order: 4; } #lb-tab-stats::before { content: "EstatÃsticas"; } 903#lb-tab-lance { order: 5; } #lb-tab-lance::before { content: "ð´ Cobertura ao vivo"; } 904.lb-ficha-info { /* ficha estruturada (data/horário/compet
904ição/rodada/local/árbitro) */ 905 order: 2; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 22px; 906 padding: 14px 18px; font-size: .84rem; color: var(--text); border-top: 1px solid var(--border); 907} 908.lb-ficha-info span { display: block; } 909.lb-ficha-info strong { color: var(--gray); font-weight: 700; margin-right: 4px; } 910@media (max-width: 480px) { .lb-ficha-info { grid-template-columns: 1fr; } } 911/* "Onde assistir" reposicionado no final (sem emojis) */ 912.lb-onde-assistir { margin: 22px 0 8px; } 913.lb-onde-assistir h2 { font-size: 1.15rem; margin: 0 0 8px; } 914.lb-onde-assistir p { margin: 0 0 10px; line-height: 1.6; } 915/* FAQ no final do liveblog */ 916.lb-faq { margin: 26px 0 8px; } 917.lb-faq-title { font-size: 1.15rem; margin: 0 0 12px; color: var(--dark); } 918.lb-faq-item { border: 1px solid var(--border); border-radius: 8px; padding: 11px 14px; margin-bottom: 8px; background: var(--white); } 919.lb-faq-item summary { font-weight: 700; cursor: pointer; font-size: .9rem; color: var(--dark); list-style: revert; } 920.lb-faq-item p { margin: 9px 0 0; color: var(--gray); font-size: .88rem; line-height: 1.5; } 921 922.lb-empty { 923 color: var(--gray); 924 font-size: .9rem; 925 text-align: center; 926 padding: 20px 0; 927} 928 929/* Timeline de eventos */ 930.lb-timeline { 931 list-style: none; 932 display: flex; 933 flex-direction: column; 934 gap: 6px; 935 padding: 0; 936 margin: 0; 937} 938 939.lb-event { 940 display: flex; 941 align-items: flex-start; 942 gap: 10px; 943 padding: 8px 4px; 944 border-radius: 8px; 945 transition: background .15s; 946} 947.lb-event:hover { background: #f9fafb; } 948 949.lb-event-min { 950 min-width: 36px; 951 background: #111827; 952 color: var(--white); 953 border-radius: 20px; 954 text-align: center; 955 font-size: .72rem; 956 font-weight: 700; 957 padding: 2px 6px; 958 flex-shrink: 0;
959 margin-top: 1px; 960 white-space: nowrap; 961} 962 963.lb-event-icon { 964 width: 20px; 965 height: 20px; 966 flex-shrink: 0; 967 margin-top: 1px; 968} 969 970.lb-event-body { 971 flex: 1; 972 min-width: 0; 973 display: flex; 974 flex-direction: column; 975 gap: 3px; 976} 977.lb-event-desc { 978 font-size: .85rem; 979 color: #374151; 980 margin: 0; 981 line-height: 1.5; 982} 983.lb-event-player-sm { 984 font-size: .82rem; 985 font-weight: 600; 986 color: var(--dark); 987} 988 989/* Gol: card destacado */ 990.lb-event-gol { 991 background: #f0fdf4; 992 border-radius: 10px; 993 padding: 12px 14px; 994 border-left: 4px solid #16a34a; 995} 996.lb-event-gol:hover { background: #dcfce7; } 997.lb-event-gol .lb-event-player { 998 font-size: 1.05rem; 999 font-weight: 800; 1000 color: #15803d; 1001 line-height: 1.3; 1002} 1003/* Gol contra â fundo laranja */ 1004.lb-event-gc { 1005 background: #fff7ed !important; 1006 border-left-color: #ea580c !important; 1007} 1008.lb-event-gc:hover { background: #ffedd5 !important; } 1009.lb-event-gc .lb-event-player { color: #c2410c !important; } 1010/* Expulsão (vermelho/2º amarelo) */ 1011.lb-event-expulso { 1012 background: #fff1f2; 1013 border-radius: 10px; 1014 padding: 12px 14px; 1015 border-left: 4px solid #dc2626; 1016} 1017.lb-event-expulso:hover { background: #ffe4e6; } 1018/* VAR */ 1019.lb-event-var { 1020 background: #f5f3ff; 1021 border-radius: 10px; 1022 padding: 12px 14px; 1023 border-left: 4px solid #7c3aed; 1024} 1025.lb-event-var:hover { background: #ede9fe; } 1026/* Badges pênalti / gol contra */ 1027.lb-event-badge { 1028 display: inline-block; 1029 font-size: .68rem; 1030 font-weight: 700; 1031 border-radius: 4px; 1032 padding: 1px 5px; 1033 margin-left: 4px; 1034 vertical-align: middle; 1035 text-transform: uppercase; 1036} 1037.lb-badge-pen { background: #dbeafe; color: #1d4ed8; } 1038.lb-badge-gc { background: #ffedd5; color: #c2410c; } 1039.lb-event-assist { 1040 font-size: .82rem; 1041 font-weight: 400; 1042 color: #166534; 1043} 1044.lb-sub-out { font-size: .82rem; font-weight: 600; color: #dc2626; } 1045.lb-sub-in { font-size: .82rem; font-weight: 600; color: #16a34a; } 1046 1047/* Antes do Apito â card rico */ 1048.lb-event-preview { 1049 background: #f8fafc; 1050 border-radius: 10px; 1051 border: 1px solid #cbd5e1; 1052 padding: 0; 1053 overflow: hidden; 1054 align-items: flex-start; 1055} 1056.lb-event-preview:hover { background: #f1f5f9; } 1057.lb-event-preview > .lb-event-min { 1058 background: #0369a1; 1059 color: #fff; 1060 border-radius: 6px; 1061 padding: 3px 8px; 1062 font-size: .68rem; 1063 font-weight: 800; 1064 letter-spacing: .04em; 1065 margin: 12px 0 0 12px; 1066 align-self: flex-start; 1067 flex-shrink: 0; 1068} 1069.lb-event-preview > .lb-event-icon { display: none; } 1070.lb-event-preview > .lb-event-body { padding: 10px 14px 14px; flex: 1; min-width: 0; } 1071/* Internos */ 1072.lb-apito { width: 100%; } 1073.lb-apito-sec { 1074 font-size: .72rem; 1075 font-weight: 800; 1076 text-transform: uppercase; 1077 letter-spacing: .06em; 1078 color: #0369a1; 1079 margin: 0 0 8px; 1080} 1081.lb-apito-art { 1082 font-size: .88rem; 1083 line-height: 1.7; 1084 color: #374151; 1085 margin-bottom: 4px; 1086} 1087.lb-apito-art h2 { font-size: 1.05rem; font-weight: 700; margin: 14px 0 6px; color: #1e293b; } 1088.lb-apito-art h3 { font-size: .95rem; font-weight: 700; margin: 12px 0 5px; color: #1e293b; } 1089.lb-apito-art p { margin: 0 0 8px; } 1090.lb-apito-art strong { color: #1e293b; } 1091.lb-apito-art ul, .lb-apito-art ol { padding-left: 18px; margin: 0 0 8px; } 1092.lb-apito-art li { margin-bottom: 3px; } 1093.lb-apito-ficha { 1094 border-top: 1px solid #e2e8f0; 1095 padding-top: 12px; 1096 margin-top: 8px; 1097} 1098.lb-apito-ficha-grid { display: flex; flex-direction: column; gap: 0; } 1099.lb-apito-ficha-row { 1100 display: flex; 1101 justify-content: space-between; 1102 align-items: baseline; 1103 gap: 8px; 1104 padding: 5px 0; 1105 border-bottom: 1px solid #f1f5f9; 1106 font-size: .82rem; 1107 line-height: 1.4; 1108} 1109.lb-apito-ficha-row:last-child { border-bottom: none; } 1110.lb-apito-ficha-row > span:first-child { 1111 color: #64748b; 1112 font-weight: 600; 1113 white-space: nowrap; 1114 flex-shrink: 0; 1115} 1116.lb-apito-ficha-row > span:last-child { color: #1e293b; text-align: right; } 1117 1118/* FAQ do pré-jogo */ 1119.lb-faq { 1120 border-top: 1px solid #e2e8f0; 1121 padding-top: 12px; 1122 margin-top: 8px; 1123} 1124.lb-faq-list { display: flex; flex-direction: column; gap: 0; } 1125.lb-faq-item { 1126 border-bottom: 1px solid #f1f5f9; 1127 font-size: .82rem; 1128} 1129.lb-faq-item:last-child { border-bottom: none; } 1130.lb-faq-q { 1131 display: flex; 1132 justify-content: space-between; 1133 align-items: center; 1134 gap: 8px; 1135 padding: 8px 0; 1136 font-weight: 600; 1137 color: #1e293b; 1138 cursor: pointer; 1139 list-style: none; 1140 line-height: 1.4; 1141} 1142.lb-faq-q::-webkit-details-marker { display: none; } 1143.lb-faq-q::after {
1144 content: '+'; 1145 font-size: .9rem; 1146 color: #0369a1; 1147 flex-shrink: 0; 1148 font-weight: 700; 1149} 1150details[open] .lb-faq-q::after { content: 'â'; } 1151.lb-faq-a { 1152 padding: 0 0 8px; 1153 color: #374151; 1154 line-height: 1.6; 1155} 1156.lb-faq-a p { margin: 0; } 1157 1158/* Badges de time */ 1159.lb-team-badge { 1160 display: inline-block; 1161 font-size: .65rem; 1162 font-weight: 700; 1163 letter-spacing: .04em; 1164 padding: 1px 7px; 1165 border-radius: 20px; 1166 text-transform: uppercase; 1167 margin-top: 2px; 1168 align-self: flex-start; 1169} 1170.lb-team-badge-casa { 1171 background: var(--primary); 1172 color: var(--white); 1173} 1174.lb-team-badge-vis { 1175 background: #e5e7eb; 1176 color: #374151; 1177} 1178 1179/* Escalações */ 1180.lb-lineup { 1181 display: grid; 1182 grid-template-columns: 1fr 1fr; 1183 gap: 16px; 1184} 1185.lb-lineup-col { 1186 display: flex; 1187 flex-direction: column; 1188 gap: 2px; 1189} 1190.lb-lineup-header { 1191 font-weight: 700; 1192 font-size: .88rem; 1193 margin-bottom: 4px; 1194 color: var(--dark); 1195 display: flex; 1196 flex-direction: column; 1197 gap: 2px; 1198} 1199.lb-lineup-formacao { 1200 font-size: .72rem; 1201 font-weight: 600; 1202 color: var(--primary); 1203 background: #dbeafe; 1204 padding: 1px 6px; 1205 border-radius: 4px; 1206 align-self: flex-start; 1207} 1208.lb-lineup-tecnico { 1209 font-size: .75rem; 1210 color: var(--gray); 1211 margin-bottom: 6px; 1212} 1213.lb-lineup-group-label { 1214 font-size: .65rem; 1215 font-weight: 700; 1216 letter-spacing: .08em; 1217 text-transform: uppercase; 1218 color: var(--gray); 1219 padding: 6px 0 2px; 1220 border-bottom: 1px solid var(--border); 1221 margin-bottom: 2px; 1222} 1223.lb-lineup-group-label-res { margin-top: 8px; } 1224.lb-lineup-player { 1225 display: flex; 1226 align-items: center; 1227 gap: 5px; 1228 font-size: .82rem; 1229 padding: 3px 0; 1230 border-bottom: 1px solid #f3f4f6; 1231} 1232.lb-lineup-player-res { opacity: .75; } 1233.lb-lineup-num { 1234 width: 20px; 1235 font-size: .72rem; 1236 font-weight: 700; 1237 color: var(--gray); 1238 text-align: right; 1239 flex-shrink: 0; 1240} 1241.lb-lineup-pos { 1242 width: 30px; 1243 font-size: .68rem; 1244 font-weight: 700; 1245 color: var(--gray); 1246 text-transform: uppercase; 1247 flex-shrink: 0; 1248} 1249.lb-lineup-name { 1250 flex: 1; 1251 color: var(--dark); 1252 font-weight: 500; 1253} 1254 1255/* EstatÃsticas */ 1256.lb-stats-header { 1257 display: grid; 1258 grid-template-columns: 1fr auto 1fr; 1259 gap: 8px; 1260 margin-bottom: 12px; 1261} 1262.lb-stats-team-name { 1263 font-size: .78rem; 1264 font-weight: 700; 1265 color: var(--dark); 1266} 1267.lb-stats-team-right { text-align: right; } 1268.lb-stats-row { 1269 display: flex; 1270 align-items: center; 1271 gap: 8px; 1272 margin-bottom: 12px; 1273} 1274.lb-stats-val { 1275 width: 32px; 1276 font-size: .82rem; 1277 font-weight: 700; 1278 color: var(--dark); 1279 text-align: center; 1280 flex-shrink: 0; 1281} 1282.lb-stats-val-left { text-align: left; } 1283.lb-stats-val-right { text-align: right; } 1284.lb-stats-bar-wrap { 1285 flex: 1; 1286 display: flex; 1287 flex-direction: column; 1288 gap: 4px; 1289 min-width: 0; 1290} 1291.lb-stats-label { 1292 font-size: .72rem; 1293 color: var(--gray); 1294 text-align: center; 1295 font-weight: 500; 1296} 1297.lb-stats-bars { 1298 display: flex; 1299 gap: 2px; 1300} 1301.lb-stats-bar { 1302 flex: 1; 1303 height: 6px; 1304 border-radius: 3px; 1305 overflow: hidden; 1306 background: #e5e7eb; 1307} 1308.lb-stats-fill { 1309 height: 100%; 1310 border-radius: 3px; 1311 transition: width .5s ease; 1312} 1313.lb-stats-fill-casa { background: var(--primary); } 1314.lb-stats-fill-vis { background: #9ca3af; } 1315.lb-stats-bar-casa { border-radius: 3px 0 0 3px; } 1316.lb-stats-bar-vis { border-radius: 0 3px 3px 0; } 1317 1318/* Widget de Enquete/Palpite */ 1319.lb-poll { 1320 padding: 14px 16px 12px; 1321 border-bottom: 1px solid #e5e7eb; 1322} 1323.lb-poll-header { 1324 display: flex; 1325 align-items: center; 1326 justify-content: center; 1327 gap: 6px; 1328 margin-bottom: 6px; 1329} 1330.lb-poll-badge { 1331 display: inline-flex; 1332 align-items: center; 1333 gap: 5px; 1334 font-size: .65rem; 1335 font-weight: 800; 1336 letter-spacing: .1em; 1337 text-transform: uppercase; 1338 color: var(--primary); 1339 background: #dbeafe; 1340 padding: 3px 9px; 1341 border-radius: 20px; 1342} 1343.lb-poll-badge svg { width: 10px; height: 10px; flex-shrink: 0; } 1344.lb-poll-question { 1345 font-size: .82rem; 1346 font-weight: 700; 1347 color: var(--dark); 1348 margin: 0 0 10px; 1349 text-align: center; 1350} 1351.lb-poll-options { 1352 display: grid; 1353 grid-template-columns: 1fr auto 1fr; 1354 gap: 6px; 1355} 1356.lb-poll-btn { 1357 display: flex; 1358 flex-direction: column; 1359 align-items: center; 1360 gap: 4px; 1361 padding: 10px 8px; 1362 border: 2px solid #e5e7eb; 1363 border-radius: 10px; 1364 background: var(--white); 1365 cursor: pointer; 1366 font-family: var(--font); 1367 transition: border-color .15s, background .15s; 1368 text-align: center; 1369} 1370.lb-poll-btn:hover { border-color: var(--primary); background: #f0f5ff; } 1371.lb-poll-btn-draw { border-style: dashed; } 1372.lb-poll-sigla { 1373 display: block; 1374 width: 38px; 1375 height: 38px; 1376 line-height: 38px; 1377 background: linear-gradient(135deg, var(--primary), var(--primary-dk)); 1378 color: var(--white); 1379 border-radius: 50%; 1380 font-size: .72rem; 1381 font-weight: 800; 1382 letter-spacing: -.01em; 1383 text-align: center; 1384} 1385.lb-poll-btn-draw .lb-poll-sigla { 1386 background: linear-gradient(135deg, #64748b, #334155); 1387} 1388.lb-poll-team { 1389 font-size: .72rem; 1390 font-weight: 600; 1391 color: var(--dark); 1392 word-break: break-word; 1393 line-height: 1.2; 1394} 1395 1396/* Resultados da enquete â cards por opção */ 1397.lb-poll-result { display: flex; flex-direction: column; gap: 8px; } 1398 1399.lb-poll-res-row { 1400 display: flex; 1401 align-items: center; 1402 gap: 12px; 1403 padding: 10px 12px; 1404 border: 2px solid #e5e7eb; 1405 border-radius: 10px; 1406 background: var(--white); 1407} 1408.lb-poll-res-row-voted { 1409 border-color: var(--primary); 1410 background: #f0f5ff; 1411} 1412.lb-poll-sigla-emp { background: linear-gradient(135deg, #64748b, #334155); } 1413.lb-poll-sigla-vis { background: linear-gradient(135deg, #475569, #1e293b); } 1414 1415.lb-poll-res-body { 1416 flex: 1; 1417 min-width: 0; 1418 display: flex; 1419 flex-direction: column; 1420 gap: 4px; 1421} 1422.lb-poll-res-top { 1423 display: flex; 1424 align-items: center; 1425 justify-content: space-between; 1426 gap: 8px; 1427} 1428.lb-poll-res-name { 1429 font-size: .83rem; 1430 font-weight: 700; 1431 color: var(--dark); 1432 white-space: nowrap; 1433 overflow: hidden; 1434 text-overflow: ellipsis; 1435} 1436.lb-poll-res-pct { 1437 font-size: .92rem; 1438 font-weight: 800; 1439 color: var(--primary); 1440 flex-shrink: 0; 1441} 1442.lb-poll-bar-track { 1443 height: 7px; 1444 background: #e5e7eb; 1445 border-radius: 4px; 1446 overflow: hidden; 1447} 1448.lb-poll-bar-fill { 1449 height: 100%; 1450 border-radius: 4px; 1451 transition: width .6s ease; 1452} 1453.lb-poll-bar-fill-casa { background: var(--primary); } 1454.lb-poll-bar-fill-vis { background: #475569; } 1455.lb-poll-bar-fill-emp { background: #94a3b8; } 1456.lb-poll-res-votes { 1457 font-size: .7rem; 1458 color: var(--gray); 1459 font-weight: 500; 1460} 1461.lb-poll-voted-tag { 1462 display: flex; 1463 align-items: center; 1464 justify-content: center; 1465 gap: 6px; 1466 font-size: .78rem; 1467 font-weight: 600; 1468 color: #15803d; 1469 background: #dcfce7; 1470 border-radius: 8px; 1471 padding: 8px 12px; 1472 margin-top: 2px; 1473} 1474 1475/* Responsive liveblog */ 1476@media (max-width: 500px) { 1477 .lb-score { font-size: 2rem; } 1478 .lb-escudo, .lb-escudo-badge { width: 48px; height: 48px; } 1479 .lb-team-name { font-size: .75rem; max-width: 72px; } 1480 .lb-lineup { grid-template-columns: 1fr; } 1481 .lb-tab { padding: 9px 10px; font-size: .78rem; } 1482} 1483 1484/* ââ Shorts do YouTube na home ââ */ 1485.section-shorts{margin:32px auto} 1486.shorts-row{display:flex;gap:14px;overflow-x:auto;padding:4px 0 10px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch} 1487.shorts-row::-webkit-scrollbar{height:6px} 1488.shorts-row::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px} 1489.short-card{flex:0 0 auto;width:170px;text-decoration:none;color:inherit;scroll-snap-align:start}
1490.short-thumb{position:relative;width:170px;aspect-ratio:9/16;border-radius:12px;overflow:hidden;background:#000} 1491.short-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .25s} 1492.short-card:hover .short-thumb img{transform:scale(1.05)} 1493.short-play{position:absolute;inset:0;margin:auto;width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.55);border-radius:50%;pointer-events:none} 1494.short-title{font-size:.84rem;font-weight:600;line-height:1.3;margin-top:8px;color:#1e293b;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} 1495@media(max-width:768px){.short-card,.short-thumb{width:140px}} 1496 1497/* ââ Player de Shorts internos na home ââ */ 1498.short-card{appearance:none;border:none;background:none;padding:0;text-align:left;font:inherit;cursor:pointer} 1499.short-modal{position:fixed;inset:0;background:rgba(10,15,25,.9);display:none;align-items:center;justify-content:center;z-index:9999;padding:20px} 1500.short-modal.show{display:flex} 1501.short-modal-inner{display:flex;flex-direction:column;align-items:center;gap:12px} 1502.short-modal video{max-height:82vh;max-width:92vw;aspect-ratio:9/16;border-radius:14px;background:#000;box-shadow:0 20px 60px rgba(0,0,0,.5)} 1503.short-modal-link{display:inline-flex;align-items:center;gap:6px;background:#1B98E0;color:#fff;text-decoration:none;font-weight:700;font-size:.9rem;padding:10px 22px;border-radius:999px} 1504.short-modal-link:hover{background:#1580c0} 1505.short-modal-close{position:absolute;top:18px;right:22px;background:rgba(255,255,255,.15);color:#fff;border:none;width:44px;height:44px;border-radius:50%;font-size:1.7rem;line-height:1;cursor:pointer} 1506.short-modal-close:hover{background:rgba(255,255,255,.28)} 1507 1508/* ââ Grid da página /shorts ââ */ 1509.shorts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;margin:18px 0} 1510.shorts-grid .short-card{width:100%} 1511.shorts-grid .short-thumb{width:100%} 1512@media(max-width:560px){.shorts-grid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px}} 1513 1514/* ââ Página individual de Short (/short/{id}) ââ */ 1515.short-single{max-width:420px;margin:24px auto;text-align:center}
1516.short-single-video{width:100%;aspect-ratio:9/16;border-radius:14px;background:#000;max-height:80vh} 1517.short-single-title{font-size:1.1rem;font-weight:700;margin:14px 0 10px;color:#1e293b;line-height:1.3} 1518.short-single-link{display:inline-flex;align-items:center;gap:6px;background:#1B98E0;color:#fff;text-decoration:none;font-weight:700;padding:10px 22px;border-radius:999px} 1519.short-single-link:hover{background:#1580c0} 1520 1521/* ââ Ações 50/50 nos Shorts (Ler matéria + Compartilhar) ââ */ 1522.short-modal-actions,.short-single-actions{display:flex;gap:10px;width:min(420px,92vw);max-width:420px;margin:0 auto} 1523.short-modal-actions>*,.short-single-actions>*{flex:1;justify-content:center} 1524.short-share-btn{display:inline-flex;align-items:center;gap:6px;background:#25D366;color:#fff;border:none;cursor:pointer;font-weight:700;font-size:.9rem;padding:10px 22px;border-radius:999px;font-family:inherit} 1525.short-share-btn:hover{background:#1eb558} 1526 1527/* Carrossel de Shorts injetado dentro do artigo */ 1528.dm-shorts-incontent{margin:30px 0;clear:both} 1529.dm-shorts-incontent .section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px} 1530.dm-shorts-incontent .section-head h2{font-size:1.15rem;margin:0} 1531 1532/* Card "Siga no Google" (Google Follow) â topo do artigo */ 1533.google-follow{display:flex;align-items:center;gap:14px;margin:6px 0 20px;padding:13px 16px;border:1px solid var(--border);border-radius:14px;background:var(--white);text-decoration:none;box-shadow:0 1px 3px rgba(0,0,0,.04);transition:box-shadow .15s,border-color .15s} 1534.google-follow:hover{box-shadow:0 6px 18px rgba(0,0,0,.09);border-color:var(--primary-lt)} 1535.google-follow .gf-logo{flex-shrink:0;display:flex;align-items:center} 1536.google-follow .gf-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1} 1537.google-follow .gf-text strong{color:var(--dark);font-size:15px;font-weight:700;line-height:1.2} 1538.google-follow .gf-text span{color:var(--gray);font-size:12.5px;line-height:1.3} 1539.google-follow .gf-btn{flex-shrink:0;padding:9px 22px;border-radius:999px;background:var(--primary);color:var(--white);font-weight:700;font-size:14px;white-space:nowrap;transition:background .15s} 1540.google-follow:hover .gf-btn{background:var(--primary-dk)} 1541@media(max-width:520px){.google-follow{gap:11px;padding:11px 13px;border-radius:12px}.google-follow .gf-text strong{font-size:13.5px}.google-follow .gf-text span{font-size:11.5px}.google-follow .gf-btn{padding:8px 16px;font-size:13px}} 1542/* Resumir com IA â botões que abrem a IA com o pedido de resumo */ 1543.ai-resumir{margin:10px 0 22px} 1544.ai-resumir-label{display:block;text-align:center;color:var(--dark);font-size:15px;font-weight:700;line-height:1.2;margin-bottom:10px} 1545.ai-btns{display:grid;grid-template-columns:repeat(5,1fr);gap:8px} 1546.ai-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:9px 12px;border:1px solid var(--border);border-radius:999px;background:var(--white);color:var(--primary-dk);font-size:14px;font-weight:700;text-decoration:none;box-shadow:0 1px 2px rgba(19,41,61,.04);transition:border-color .15s,box-shadow .15s,transform .1s} 1547.ai-btn:hover{border-color:var(--primary-lt);box-shadow:0 5px 14px rgba(19,41,61,.10);transform:translateY(-1px)} 1548.ai-btn .ai-ico{display:inline-flex;flex-shrink:0;line-height:0} 1549@media(max-width:640px){.ai-btns{grid-template-columns:repeat(2,1fr)}.ai-btns .ai-btn:nth-child(5){grid-column:1 / -1}.ai-btn{font-size:13px;padding:9px 10px}} 1550 1551/* Bloco recomendado â 3 mais acessados do dia (recirculação), destacado */ 1552.dm-recomendado{position:relative;overflow:hidden;margin:26px 0;padding:8px 18px;border:1px solid var(--border);border-radius:16px;background:var(--light-bg)} 1553/* Laser one-shot na borda: gira via transform (compositor = leve), dispara ao entrar na tela e some */ 1554.dm-recomendado::before{content:"";position:absolute;z-index:0;left:50%;top:50%;width:140%;aspect-ratio:1;transform:translate(-50%,-50%) rotate(0);background:conic-gradient(from 0deg,transparent 0 72%,var(--primary-lt) 84%,#fff 90%,var(--primary-lt) 96%,transparent 100%);opacity:0;pointer-events:none} 1555.dm-recomendado::after{content:"";position:absolute;z-index:1;inset:2px;border-radius:14px;background:var(--light-bg);pointer-events:none} 1556.dm-recomendado>*{position:relative;z-index:2}
1557.dm-recomendado.dmrec-sweep::before{animation:dmrec-sweep 4.8s linear 1} 1558@keyframes dmrec-sweep{0%{opacity:0;transform:translate(-50%,-50%) rotate(0deg)}6%{opacity:1}94%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) rotate(720deg)}} 1559@media(prefers-reduced-motion:reduce){.dm-recomendado.dmrec-sweep::before{animation:none}} 1560.dm-recomendado .dmrec-item{display:flex;align-items:center;gap:14px;padding:12px 0;text-decoration:none;border-top:1px solid rgba(19,41,61,.09)} 1561.dm-recomendado .dmrec-item:first-of-type{border-top:0} 1562.dm-recomendado .dmrec-img{flex-shrink:0;width:108px;height:76px;object-fit:cover;border-radius:12px;background:var(--white)} 1563.dm-recomendado .dmrec-title{color:var(--dark);font-size:16px;font-weight:700;line-height:1.3;text-decoration:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} 1564.dm-recomendado .dmrec-item:hover .dmrec-title{color:var(--primary)} 1565@media(max-width:520px){.dm-recomendado{padding:6px 14px}.dm-recomendado .dmrec-img{width:92px;height:66px}.dm-recomendado .dmrec-title{font-size:14.5px}} 1566 1567/* Respiro vertical dos anuncios in-content (reduz cliques acidentais) */ 1568.ad-block{margin:22px 0} 1569/* Rotulo "Publicidade" centralizado no rodape de cada bloco de anuncio */ 1570.ad-lbl-pub{display:block;text-align:center;margin-top:8px;font:600 10px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#9ca3af} 1571</style> 1572<style id="dm-theme">:root{--primary:#00693E;--primary-dk:#06331F;--primary-md:#0B7D48;--primary-lt:#DA020E;--light-bg:#E6F2EA;--dark:#06331F;--gray:#45685A;--light-gray:#E6F2EA;--border:#C3E0CE;}</style> 1573<link rel="icon" href="https://4geek.pt/uploads/branding/favicon.png?v=1787960789"> 1574<link rel="apple-touch-icon" href="https://4geek.pt/uploads/branding/favicon.png?v=1787960789"> 1575<link rel="hub" href="https://pubsubhubbub.appspot.com/"> 1576<link rel="self" href="https://4geek.pt/feed"> 1577<link rel="alternate" type="application/rss+xml" title="4geek â Series e Filmes (RSS)" href="https://4geek.pt/categoria/series-e-filmes/feed"> 1578<link rel="alternate" type="text/plain" title="LLMs Index" href="https://4geek.pt/llms.txt"> 1579<link rel="alternate" type="text/plain" title="LLMs Full Content" href="https://4geek.pt/llms-full.txt"> 1580<link rel="alternate" type="text/plain" title="LLMs Context" href="https://4geek.pt/llms-ctx.txt"> 1581<link rel="alternate" type="text/plain" title="LLMs Q&A" href="https://4geek.pt/llms-qa.txt">
vendor: 64 bytes, lines 1581-1582
1581 1582<script async src="https://www.googletagmanager.com/gtag/js?id=
1582G-S8EFPZETQ3
vendor: 12 bytes, line 1582
1582"></script>
1583<script>
vendor: 119 bytes, lines 1584-1585
1584window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);} 1585gtag('js',new Date());gtag('config','
1585G-S8EFPZETQ3
vendor: 4 bytes, line 1585
1585');
1586</script>
vendor: 1 bytes, line 1586
1586
1587<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3111331939829889" 1588 crossorigin="anonymous"></script>
vendor: 2 bytes, line 1588
1588
1589<script src="https://jsc.mgid.com/site/1109970.js" async></script>
1589<!-- Meta Pixel Code -->
1590<script>
vendor: 399 bytes, lines 1590-1599
1590 1591!function(f,b,e,v,n,t,s) 1592{if(f.fbq)return;n=f.fbq=function(){n.callMethod? 1593n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 1594if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 1595n.queue=[];t=b.createElement(e);t.async=!0; 1596t.src=v;s=b.getElementsByTagName(e)[0]; 1597s.parentNode.insertBefore(t,s)}(window, document,'script', 1598'https://connect.facebook.net/en_US/fbevents.js'); 1599fbq('init', '
15991097176233012241
vendor: 31 bytes, lines 1599-1601
1599'); 1600fbq('track', 'PageView'); 1601
1602// ââ Eventos custom: Scroll (profundidade) + Click (elementos-chave) ââ 1603(function(){ 1604 // Scroll: dispara "Scroll" em 25/50/75/90% (uma vez cada) = leitor engajado 1605 var marks=[25,50,75,90], fired={}; 1606 function onScroll(){ 1607 var d=document.documentElement,b=document.body; 1608 var st=d.scrollTop||b.scrollTop; 1609 var sh=(d.scrollHeight||b.scrollHeight)-d.clientHeight; 1610 var pct=sh>0?Math.round(st/sh*100):0; 1611 for(var i=0;i<marks.length;i++){var m=marks[i]; 1612 if(pct>=m&&!fired[m]){fired[m]=1;if(window.fbq)fbq('trackCustom','Scroll',{percent:m});}} 1613 } 1614 window.addEventListener('scroll',onScroll,{passive:true}); 1615 1616 // Click: só o que interessa (botão IA, bloco recomendado, anúncio, link externo) 1617 document.addEventListener('click',function(e){ 1618 var a=e.target&&e.target.closest?e.target.closest('a'):null; 1619 if(!a||!window.fbq)return; 1620 var href=a.getAttribute('href')||'',label=''; 1621 if(a.classList.contains('vpn-banner'))label='vpn'; 1622 else if(a.classList.contains('ai-btn'))label='ia'; 1623 else if(a.closest('.dm-recomendado'))label='recomendado'; 1624 else if(a.closest('.ad-block'))label='anuncio'; 1625 else if(/^https?:\/\//.test(href)&&href.indexOf(location.host)===-1)label='externo'; 1626 else return; 1627 fbq('trackCustom','Click',{label:label,href:href.slice(0,120)}); 1628 },true); 1629})(); 1630</script>
1630 1631<noscript><img height="1" width="1" style="display:none" 1632src="https://www.facebook.com/tr?id=1097176233012241&ev=PageView&noscript=1" 1633/></noscript> 1634<!-- End Meta Pixel Code --> 1635</head> 1636<body> 1637 1638 1639<div class="mobile-overlay" id="mobile-overlay" onclick="toggleMenu()"></div> 1640 1641<nav class="sidebar-drawer" id="main-nav"> 1642 <div class="sidebar-head"> 1643 <a href="https://4geek.pt" class="sidebar-logo-text">Portal <strong>4Geek</strong></a> 1644 <button class="sidebar-close" onclick="toggleMenu()" aria-label="Fechar"> 1645 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 1646 </button> 1647 </div> 1648 1649 <a href="https://4geek.pt" class="sidebar-link sidebar-link-home"> 1650 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg> 1651 INÃCIO 1652 <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1653 </a> 1654 <a href="https://4geek.pt/dmplay" class="sidebar-link"> 1655 <span class="dm-live-dot"></span> 1656 4GEEK PLAY <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1657 </a> 1658 1659 <div class="sidebar-section-label">EDITORIAS</div> 1660 <a href="https://4geek.pt/categoria/novelas" class="sidebar-link"> 1661 <span class="s-dot"></span> 1662 NOVELAS <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1663 </a> 1664 <a href="https://4geek.pt/categoria/series-e-filmes" class="sidebar-link active"> 1665 <span class="s-dot"></span> 1666 SERIES E FILMES <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1667 </a> 1668 <a href="https://4geek.pt/categoria/futebol" class="sidebar-link"> 1669 <span class="s-dot"></span> 1670 FUTEBOL <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1671 </a> 1672 <a href="https://4geek.pt/categoria/famosos" class="sidebar-link"> 1673 <span class="s-dot"></span> 1674 FAMOSOS <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1675 </a> 1676 <a href="https://4geek.pt/categoria/games" class="sidebar-link"> 1677 <span class="s-dot"></span> 1678 GAMES <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1679 </a> 1680 <a href="https://4geek.pt/categoria/anime" class="sidebar-link"> 1681 <span class="s-dot"></span> 1682 ANIME <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1683 </a> 1684 <a href="https://4geek.pt/categoria/tecnologia" class="sidebar-link"> 1685 <span class="s-dot"></span> 1686 TECNOLOGIA <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1687 </a> 1688 <a href="https://4geek.pt/categoria/dorama" class="sidebar-link"> 1689 <span class="s-dot"></span> 1690 DORAMA <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1691 </a> 1692 1693 <a href="https://4geek.pt/shorts" class="sidebar-link"> 1694 SHORTS 1695 <svg class="s-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg> 1696 </a> 1697 1698 </nav> 1699 1700<header class="site-header"> 1701 <div class="header-inner container"> 1702 <button class="burger" aria-label="Menu" onclick="toggleMenu()">
1703 <span></span><span></span><span></span> 1704 </button> 1705 <a href="https://4geek.pt" class="logo logo-text"> 1706 Portal <span>4Geek</span> </a> 1707 <a href="https://4geek.pt/busca" class="search-icon" aria-label="Buscar"> 1708 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg> 1709 </a> 1710 </div> 1711 1712 <nav class="main-nav" id="main-nav-bar"> 1713 <div class="container nav-inner"> 1714 <a href="https://4geek.pt" class="nav-link">Home</a> 1715 <a href="https://4geek.pt/dmplay" class="nav-link"><span class="dm-live-dot"></span>4Geek Play</a> 1716 <a href="https://4geek.pt/categoria/novelas" class="nav-link"> 1717 Novelas </a> 1718 <a href="https://4geek.pt/categoria/series-e-filmes" class="nav-link active"> 1719 Series e Filmes </a> 1720 <a href="https://4geek.pt/categoria/futebol" class="nav-link"> 1721 Futebol </a> 1722 <a href="https://4geek.pt/categoria/famosos" class="nav-link"> 1723 Famosos </a> 1724 <a href="https://4geek.pt/categoria/games" class="nav-link"> 1725 Games </a> 1726 <a href="https://4geek.pt/categoria/anime" class="nav-link"> 1727 Anime </a> 1728 <a href="https://4geek.pt/categoria/tecnologia" class="nav-link"> 1729 Tecnologia </a> 1730 <a href="https://4geek.pt/categoria/dorama" class="nav-link"> 1731 Dorama </a> 1732 <a href="https://4geek.pt/shorts" class="nav-link">Shorts</a> 1733 </div> 1734 </nav> 1735 1736 <div class="ticker-bar"> 1737 <div class="container ticker-inner"> 1738 <span class="ticker-label"> 1739 <svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><path d="M3 17l6-6 4 4 8-10"/></svg> 1740 Em Alta 1741 </span> 1742 <a href="https://4geek.pt/monster-hunter-wilds-chega-a-nintendo-switch-2-com-crossplay" class="ticker-text"> 1743 Monster Hunter Wilds chega à Nintendo Switch 2 com crossâplay </a> 1744 </div> 1745 </div> 1746 </header> 1747 1748<main> 1749 1750<div class="container"> 1751 <nav class="breadcrumb" aria-label="Caminho"><a href="https://4geek.pt">Home</a><span class="bc-sep" aria-hidden="true">âº</span><span class="bc-current">Series e Filmes</span></nav> <div class="page-head"> 1752 <h1>Series e Filmes</h1> 1753 </div> 1754 1755 <div class="grid-3"> 1756 <article class="card"> 1757 <a href="https://4geek.pt/unabomber-domina-netflix-com-164-milhoes-de-visualizacoes"> 1758 <div class="card-img-wrap"> 1759 <img src="https://4geek.pt/uploads/artigos/unabomber-domina-netflix-com-164-milhoes-de-visualizacoes.webp" 1760 alt="Unabomber domina Netflix com 16,4 milhões de visualizações" loading="lazy"> 1761 </div> 1762 <div class="card-body"> 1763 <h3>Unabomber domina Netflix com 16,4 milhões de visualizações</h3> 1764 <p class="card-excerpt">Unabomber estreou na Netflix a 25 de setembro e, apesar de crÃticas negativas, tornou-se oâ¦</p> <span class="meta-time">30/09/2026</span> 1765 </div> 1766 </a> 1767 </article> 1768 <article class="card"> 1769 <a href="https://4geek.pt/deezer-personaliza-playlists-em-destaque-no-dia-internacional-da-musica"> 1770 <div class="card-img-wrap"> 1771 <img src="https://4geek.pt/uploads/artigos/deezer-personaliza-playlists-em-destaque-no-dia-internacional-da-musica.webp" 1772 alt="Deezer personaliza playlists em destaque no Dia Internacional da Música" loading="lazy"> 1773 </div> 1774 <div class="card-body"> 1775 <h3>Deezer personaliza playlists em destaque no Dia Internacional da Música</h3> 1776 <p class="card-excerpt">A Deezer está a preparar uma ação especial para o Dia Internacional da Música, comâ¦</p> <span class="meta-time">30/09/2026</span> 1777 </div> 1778 </a> 1779 </article> 1780 <article class="card"> 1781 <a href="https://4geek.pt/verity-estreia-mira-35-milhoes-e-deve-liderar-bilheteiras"> 1782 <div class="card-img-wrap"> 1783 <img src="https://4geek.pt/uploads/artigos/verity-estreia-mira-35-milhoes-e-deve-liderar-bilheteiras.webp" 1784 alt="Verity: estreia mira $35 milhões e deve liderar bilheteiras" loading="lazy"> 1785 </div> 1786 <div class="card-body"> 1787 <h3>Verity: estreia mira $35 milhões e deve liderar bilheteiras</h3> 1788 <p class="card-excerpt">Verity estreia em salas comerciais com uma projeção de $30â35 milhões em cerca de 3.510â¦</p>
1788 <span class="meta-time">30/09/2026</span> 1789 </div> 1790 </a> 1791 </article> 1792 <article class="card"> 1793 <a href="https://4geek.pt/desaparecida-last-seen-episodio-revela-origem-do-sequestro"> 1794 <div class="card-img-wrap"> 1795 <img src="https://4geek.pt/uploads/artigos/desaparecida-last-seen-episodio-revela-origem-do-sequestro.webp" 1796 alt="Desaparecida (Last Seen): episódio revela origem do sequestro" loading="lazy"> 1797 </div> 1798 <div class="card-body"> 1799 <h3>Desaparecida (Last Seen): episódio revela origem do sequestro</h3> 1800 <p class="card-excerpt">O episódio 5 de Desaparecida (Last Seen), intitulado "O Profeta" e disponÃvel na Apple TV,â¦</p> <span class="meta-time">30/09/2026</span> 1801 </div> 1802 </a> 1803 </article> 1804 <article class="card"> 1805 <a href="https://4geek.pt/a-leste-do-eden-cathy-de-florence-pugh-domina-a-nova-adaptacao"> 1806 <div class="card-img-wrap"> 1807 <img src="https://4geek.pt/uploads/artigos/a-leste-do-eden-cathy-de-florence-pugh-domina-a-nova-adaptacao.webp" 1808 alt="A Leste do Ãden: Cathy de Florence Pugh domina a nova adaptação" loading="lazy"> 1809 </div> 1810 <div class="card-body"> 1811 <h3>A Leste do Ãden: Cathy de Florence Pugh domina a nova adaptação</h3> 1812 <p class="card-excerpt">A Leste do Ãden estreia a 1 de outubro na Netflix e coloca Cathy Ames,â¦</p> <span class="meta-time">30/09/2026</span> 1813 </div> 1814 </a> 1815 </article> 1816 <article class="card"> 1817 <a href="https://4geek.pt/oasis-dont-look-back-in-anger-chega-ao-disney-com-bastidores-da-reuniao"> 1818 <div class="card-img-wrap"> 1819 <img src="https://4geek.pt/uploads/artigos/oasis-dont-look-back-in-anger-chega-ao-disney-com-bastidores-da-reuniao.webp" 1820 alt="Oasis: Don't Look Back In Anger chega ao Disney+ com bastidores da reunião" loading="lazy"> 1821 </div> 1822 <div class="card-body"> 1823 <h3>Oasis: Don't Look Back In Anger chega ao Disney+ com bastidores da reunião</h3> 1824 <p class="card-excerpt">O documentário Oasis: Don't Look Back In Anger, dedicado à reunião de Liam Gallagher eâ¦</p> <span class="meta-time">30/09/2026</span> 1825 </div> 1826 </a> 1827 </article> 1828 <article class="card"> 1829 <a href="https://4geek.pt/david-ellison-escolhe-ynon-kreiz-como-coceo-da-paramountwarner"> 1830 <div class="card-img-wrap"> 1831 <img src="https://4geek.pt/uploads/artigos/david-ellison-escolhe-ynon-kreiz-como-coceo-da-paramountwarner.webp" 1832 alt="David Ellison escolhe Ynon Kreiz como coâCEO da ParamountâWarner" loading="lazy"> 1833 </div> 1834 <div class="card-body"> 1835 <h3>David Ellison escolhe Ynon Kreiz como coâCEO da ParamountâWarner</h3> 1836 <p class="card-excerpt">Ynon Kreiz vai assumir o cargo de coâCEO da empresa resultante da fusão entre Paramountâ¦</p> <span class="meta-time">30/09/2026</span> 1837 </div> 1838 </a> 1839 </article> 1840 <article class="card"> 1841 <a href="https://4geek.pt/slow-horses-atentado-em-westacres-e-desaparecimento-forjado-de-river"> 1842 <div class="card-img-wrap"> 1843 <img src="https://4geek.pt/uploads/artigos/slow-horses-atentado-em-westacres-e-desaparecimento-forjado-de-river.webp" 1844 alt="Slow Horses: atentado em Westacres e desaparecimento forjado de River" loading="lazy"> 1845 </div> 1846 <div class="card-body"> 1847 <h3>Slow Horses: atentado em Westacres e desaparecimento forjado de River</h3> 1848 <p class="card-excerpt">A 4ª temporada de Slow Horses começa em Londres com um explosão no centro comercialâ¦</p> <span class="meta-time">30/09/2026</span> 1849 </div> 1850 </a> 1851 </article> 1852 <article class="card"> 1853 <a href="https://4geek.pt/american-horror-story-3-episodios-chegam-seguidos-ao-disney"> 1854 <div class="card-img-wrap"> 1855 <img src="https://4geek.pt/uploads/artigos/american-horror-story-3-episodios-chegam-seguidos-ao-disney.webp" 1856 alt="American Horror Story: 3 episódios chegam seguidos ao Disney+" loading="lazy"> 1857 </div> 1858 <div class="card-body"> 1859 <h3>American Horror Story: 3 episódios chegam seguidos ao Disney+</h3> 1860 <p class="card-excerpt">A 13ª temporada de American Horror Story continua com os episódios 4, 5 e 6â¦</p>
1860 <span class="meta-time">30/09/2026</span> 1861 </div> 1862 </a> 1863 </article> 1864 <article class="card"> 1865 <a href="https://4geek.pt/daniel-zolghadri-assume-papel-de-charles-melton-em-my-darling-california"> 1866 <div class="card-img-wrap"> 1867 <img src="https://4geek.pt/uploads/artigos/daniel-zolghadri-assume-papel-de-charles-melton-em-my-darling-california.webp" 1868 alt="Daniel Zolghadri assume papel de Charles Melton em My Darling California" loading="lazy"> 1869 </div> 1870 <div class="card-body"> 1871 <h3>Daniel Zolghadri assume papel de Charles Melton em My Darling California</h3> 1872 <p class="card-excerpt">Daniel Zolghadri substituiu Charles Melton no thriller criminal My Darling California, com filmagens anunciadas paraâ¦</p> <span class="meta-time">30/09/2026</span> 1873 </div> 1874 </a> 1875 </article> 1876 <article class="card"> 1877 <a href="https://4geek.pt/se-a-vida-te-der-tangerinas-tragedia-familiar-altera-destinos"> 1878 <div class="card-img-wrap"> 1879 <img src="https://4geek.pt/uploads/artigos/se-a-vida-te-der-tangerinas-tragedia-familiar-altera-destinos.webp" 1880 alt="Se a Vida te Der Tangerinasâ¦: tragédia familiar altera destinos" loading="lazy"> 1881 </div> 1882 <div class="card-body"> 1883 <h3>Se a Vida te Der Tangerinasâ¦: tragédia familiar altera destinos</h3> 1884 <p class="card-excerpt">O episódio 6 de Se a Vida te Der Tangerinas⦠coloca Ae-soon e Gwan-sik peranteâ¦</p> <span class="meta-time">30/09/2026</span> 1885 </div> 1886 </a> 1887 </article> 1888 <article class="card"> 1889 <a href="https://4geek.pt/medusa-barbara-dissolve-o-imperio-e-poe-fim-a-serie"> 1890 <div class="card-img-wrap"> 1891 <img src="https://4geek.pt/uploads/artigos/medusa-barbara-dissolve-o-imperio-e-poe-fim-a-serie.webp" 1892 alt="Medusa: Bárbara dissolve o império e põe fim à série" loading="lazy"> 1893 </div> 1894 <div class="card-body"> 1895 <h3>Medusa: Bárbara dissolve o império e põe fim à série</h3> 1896 <p class="card-excerpt">A 2ª temporada de Medusa encerra a saga da famÃlia Hidalgo com Bárbara Hidalgo aâ¦</p> <span class="meta-time">30/09/2026</span> 1897 </div> 1898 </a> 1899 </article> 1900 </div> 1901 1902 <nav class="pagination"> 1903 <span>Página 1 de 111</span> 1904 <a href="https://4geek.pt/categoria/series-e-filmes/2" class="page-btn">Próxima →</a> 1905 </nav> 1906 1907 </div> 1908 1909</main> 1910 1911<footer class="site-footer"> 1912 <div class="container footer-grid"> 1913 1914 <div class="footer-brand"> 1915 <span class="footer-brand-name">Portal <span>4Geek</span></span> 1916 <p>Cultura geek, games, anime, cinema, séries e tecnologia.</p> 1917 <div class="footer-social"> 1918 </div> 1919 </div> 1920 1921 1922 <div class="footer-col"> 1923 <p class="footer-col-title">Categorias</p> 1924 <ul> 1925 <li><a href="https://4geek.pt">Home</a></li> 1926 <li><a href="https://4geek.pt/categoria/novelas">Novelas</a></li> 1927 <li><a href="https://4geek.pt/categoria/series-e-filmes">Series e Filmes</a></li> 1928 <li><a href="https://4geek.pt/categoria/futebol">Futebol</a></li> 1929 <li><a href="https://4geek.pt/categoria/famosos">Famosos</a></li> 1930 <li><a href="https://4geek.pt/categoria/games">Games</a></li> 1931 <li><a href="https://4geek.pt/categoria/anime">Anime</a></li> 1932 <li><a href="https://4geek.pt/categoria/tecnologia">Tecnologia</a></li> 1933 <li><a href="https://4geek.pt/categoria/dorama">Dorama</a></li> 1934 </ul> 1935 </div> 1936 1937 <div class="footer-col"> 1938 <p class="footer-col-title">Páginas</p> 1939 <ul> 1940 <li><a href="https://4geek.pt/nossa-equipe">A Nossa Equipa</a></li> 1941 <li><a href="https://4geek.pt/dmplay">4Geek Play â·</a></li> 1942 <li><a href="https://4geek.pt/todos-os-posts">Todos os posts</a></li> 1943 <li><a href="https://4geek.pt/fale-conosco">Contactos</a></li> 1944 <li><a href="https://4geek.pt/pagina-llm">Página LLM</a></li> 1945 <li><a href="https://4geek.pt/anuncie-conosco">Publicidade</a></li> 1946 <li><a href="https://4geek.pt/sobre-nos">Sobre Nós</a></li> 1947 </ul> 1948 </div> 1949 1950 <div class="footer-col"> 1951 <p class="footer-col-title">Legal</p> 1952 <ul> 1953 <li><a href="https://4geek.pt/disclaimer">Aviso Legal</a></li> 1954 <li>
1954<a href="https://4geek.pt/politica-de-cookies">PolÃtica de Cookies</a></li> 1955 <li><a href="https://4geek.pt/politica-de-correcoes">PolÃtica de Correções</a></li> 1956 <li><a href="https://4geek.pt/politica-de-privacidade">PolÃtica de Privacidade</a></li> 1957 <li><a href="https://4geek.pt/politica-editorial">PolÃtica Editorial</a></li> 1958 <li><a href="https://4geek.pt/termos-de-uso">Termos de Utilização</a></li> 1959 <li><a href="https://4geek.pt/transparencia">Transparência</a></li> 1960 </ul> 1961 </div> 1962 1963 </div> 1964 1965 <div class="footer-bottom"> 1966 <div class="container"> 1967 <p>© 2026 Portal 4Geek. Todos os direitos reservados.</p> 1968 </div> 1969 </div> 1970</footer> 1971 1972<!-- Banner de cookies â card lateral que entra pela ESQUERDA, no mesmo estilo do 1973 prompt de push. Saiu do rodapé para liberar a faixa inferior ao anúncio âncora. --> 1974<style> 1975#cookie-bar{position:fixed;left:16px;top:50%;max-width:360px;width:calc(100% - 32px);z-index:9999; 1976display:none;align-items:center;gap:12px;background:#fff;color:#0f1222;border:1px solid #e7e9f1; 1977box-shadow:0 14px 38px -12px rgba(20,24,58,.45);border-radius:14px;padding:13px 14px; 1978transform:translate(-120%,-50%);opacity:0; 1979transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .4s;font-family:inherit} 1980#cookie-bar.dmc-in{transform:translate(0,-50%);opacity:1} 1981#cookie-bar .dmc-ico{font-size:24px;line-height:1} 1982#cookie-bar p{margin:0;flex:1;font-size:.85rem;line-height:1.35} 1983#cookie-bar a{color:#3b82ff;text-decoration:underline} 1984#cookie-bar button{white-space:nowrap;border:none;cursor:pointer;color:#fff;font-weight:700; 1985padding:10px 16px;border-radius:10px;font-size:.88rem;background:linear-gradient(135deg,#8a3dff,#3b82ff)} 1986/* mobile: vai para o topo â o push ocupa o centro e a âncora o rodapé */ 1987@media(max-width:640px){#cookie-bar{top:16px;transform:translate(-120%,0)} 1988#cookie-bar.dmc-in{transform:translate(0,0)}} 1989@media(prefers-color-scheme:dark){#cookie-bar{background:#171b39;color:#e7e9f1;border-color:#2a2f52}} 1990</style> 1991<div id="cookie-bar"> 1992 <span class="dmc-ico">ðª</span> 1993 <p>Utilizamos cookies para melhorar a sua experiência. Ao continuar, concorda com a <a href="https://4geek.pt/politica-de-privacidade">PolÃtica de Privacidade</a>.</p> 1994 <button onclick="dmAcceptCookies()">Aceitar</button> 1995</div>
1996<script> 1997(function(){ 1998 if(localStorage.getItem('dm_consent')) return; 1999 var el = document.getElementById('cookie-bar'); 2000 el.style.display = 'flex'; 2001 // dois frames: garante que o browser pinte o estado inicial antes de animar 2002 requestAnimationFrame(function(){ requestAnimationFrame(function(){ el.classList.add('dmc-in'); }); }); 2003})(); 2004function dmAcceptCookies(){ 2005 localStorage.setItem('dm_consent','1'); 2006 var el = document.getElementById('cookie-bar'); 2007 el.classList.remove('dmc-in'); // sai deslizando para a esquerda 2008 setTimeout(function(){ el.style.display = 'none'; }, 400); 2009} 2010</script>
2010 2011
2012<script src="https://4geek.pt/assets/js/main.js?v=1791487599" defer></script>
2012 2013 2014<!-- ââ MGID sob demanda ââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2015 O loader do MGID tem ~561 KB. Carregado no <head> ele custava esse peso em 2016 TODA navegação, inclusive em páginas sem nenhum widget (home, categorias). 2017 Aqui ele só entra quando faz diferença: página que tem widget E o leitor 2018 chegando perto dele. à o mesmo princÃpio do lazy-load de imagem. 2019 O AdSense continua carregando normalmente â receita principal, não atrasa. 2020 Site ID vem do painel MGID (era o valor que estava em head_scripts). -->
2021<script> 2022(function () { 2023 var SITE_ID = '1108294'; 2024 var alvos = document.querySelectorAll('[data-type="_mgwidget"]'); 2025 if (!alvos.length) return; // sem widget na página: nem baixa o script 2026 2027 var carregado = false; 2028 function carregar() { 2029 if (carregado) return; 2030 carregado = true; 2031 var s = document.createElement('script'); 2032 s.src = 'https://jsc.mgid.com/site/' + SITE_ID + '.js'; 2033 s.async = true; 2034 document.head.appendChild(s); 2035 } 2036 2037 // 1) Gatilho principal: o widget entrou na zona de aproximação (600px antes 2038 // de aparecer), então dá tempo de renderizar sem o leitor ver buraco. 2039 if ('IntersectionObserver' in window) { 2040 var io = new IntersectionObserver(function (entradas) { 2041 for (var i = 0; i < entradas.length; i++) { 2042 if (entradas[i].isIntersecting) { carregar(); io.disconnect(); return; } 2043 } 2044 }, { rootMargin: '600px 0px' }); 2045 for (var i = 0; i < alvos.length; i++) io.observe(alvos[i]); 2046 } else { 2047 carregar(); // navegador antigo: comportamento de antes 2048 } 2049 2050 // 2) Rede de segurança: o widget de saÃda precisa estar pronto ANTES de o 2051 // leitor tentar sair, e ele pode sair sem nunca rolar até o de rodapé. 2052 // 3s após o load (já fora do caminho crÃtico) garante isso. 2053 window.addEventListener('load', function () { setTimeout(carregar, 3000); }); 2054})(); 2055</script>
2055 2056
2057<script> 2058window.maTracker = { 2059 ajaxUrl: 'https://4geek.pt/api/track.php', 2060 nonce: '7312e2baa0a00e2a1f9d322e0d22044e', 2061 postId: 0, 2062 postType: '', 2063}; 2064</script>
vendor: 1 bytes, line 2064
2064
2065<script src="https://4geek.pt/assets/js/ma-tracker.js?v=1791487599" defer></script>
2065 2066
2067<script> 2068/* a11y: o MGID injeta links sem texto discernÃvel (a.mglogo-link / a.mgline-link). 2069 Não dá para corrigir na origem â o HTML é gerado pelo script deles em runtime. 2070 Versão anterior fazia polling de 1,2s: sobrava uma janela de até 1.200ms com o 2071 link já no DOM e ainda sem rótulo, e a auditoria fotografava justamente aÃ. 2072 MutationObserver rotula no primeiro frame após a injeção (~16ms) e não expira. */ 2073(function () { 2074 var pendente = false; 2075 function rotular() { 2076 pendente = false; 2077 var links = document.querySelectorAll('a.mglogo-link:not([aria-label]),a.mgline-link:not([aria-label])'); 2078 for (var i = 0; i < links.length; i++) links[i].setAttribute('aria-label', 'Publicidade'); 2079 } 2080 function agendar() { if (!pendente) { pendente = true; requestAnimationFrame(rotular); } } 2081 rotular(); 2082 if ('MutationObserver' in window) { 2083 new MutationObserver(agendar).observe(document.documentElement, { childList: true, subtree: true }); 2084 } 2085})(); 2086</script>
vendor: 1 bytes, line 2086
2086
2087<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"90d94d1b515343d1a7ad036e701b5ccc","r":1,"spa":2}' crossorigin="anonymous"></script>
2087 2088</body> 2089</html>
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.