PageSourceSearch

https://4geek.pt/categoria/series-e-filmes

html 4geek.pt collected 2026-10-10 01:34:55 UTC 89,984 bytes, 2,089 lines download raw bytes

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&amp;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 &quot;O Profeta&quot; 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&apos;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&apos;t Look Back In Anger chega ao Disney+ com bastidores da reunião</h3>
1824          <p class="card-excerpt">O documentário Oasis: Don&apos;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 &rarr;</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>&copy; 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.