/*!
Theme Name: Kiss Empire
Theme URI: https://kissempire.net
Author: Kiss Empire
Author URI: https://kissempire.net
Description: Proprietary Netflix-style OTT theme for the Kiss Empire streaming platform. Built to pair with the Kiss Empire engine plugin (Movies, Series, Videos, Studios, subscriptions). No page builder, no external framework.
Version: 0.6.205
Requires at least: 6.5
Requires PHP: 8.1
Text Domain: kissempire
Tags: entertainment, video, custom-colors, custom-menu, full-width-template, theme-options
License: Proprietary
*/

/* ---------------------------------------------------------------------------
   Design tokens
--------------------------------------------------------------------------- */
:root {
	--ke-bg: #0b0713;
	--ke-bg-2: #17121e;
	--ke-surface: #201a29;
	--ke-surface-2: #2c2440;
	--ke-text: #f4f4f6;
	--ke-muted: #a0a0b0;
	--ke-accent: #e50914;
	--ke-accent-2: #ff2d3d;
	--ke-border: rgba(255,255,255,.08);
	--ke-radius: 10px;
	--ke-maxw: none;
	--ke-gap: 20px;
	font-synthesis: none;
}

/* ---------------------------------------------------------------------------
   Base
--------------------------------------------------------------------------- */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; font-size: var(--ke-font-size, 16px); }
body {
	margin: 0;
	background: var(--ke-bg);
	color: var(--ke-text);
	font-family: var(--ke-font-body, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
	line-height: 1.5;
	-webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, h4 { line-height: 1.2; margin: 0 0 .5em; }

.ke-container { max-width: var(--ke-maxw); margin: 0 auto; padding: 0 clamp(16px, 4vw, 56px); }
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.ke-skip-link { position: absolute; left: -999px; }
.ke-skip-link:focus { left: 16px; top: 12px; background: #fff; color: #000; padding: 8px 14px; z-index: 1000; border-radius: 6px; }

/* ---------------------------------------------------------------------------
   Header
--------------------------------------------------------------------------- */
.ke-site-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: linear-gradient(180deg, rgba(0,0,0,.9), rgba(0,0,0,.5) 70%, transparent);
	backdrop-filter: blur(6px);
	transition: background .2s;
}
.ke-site-header.is-scrolled { background: var(--ke-bg); border-bottom: 1px solid var(--ke-border); }
.ke-header-inner { display: flex; align-items: center; gap: 28px; height: 78px; }
/* The logo fills the row (flex-grow), leaving the menu on the right with padding. */
.ke-logo { flex: 1 1 auto; display: flex; align-items: center; font-weight: 800; font-size: 1.875rem; letter-spacing: -.5px; color: var(--ke-accent); white-space: nowrap; line-height: 1; padding-right: 24px; }
.ke-logo span { color: var(--ke-text); }
/* Uploaded logo grows to fill the header width (capped so it never overflows). */
.ke-logo img, .ke-logo .custom-logo { display: block; height: auto; max-height: 58px; width: auto; max-width: min(560px, 48vw); object-fit: contain; }
.ke-nav { display: flex; gap: 20px; }
.ke-nav ul, .ke-nav-list { display: flex; gap: 20px; list-style: none; margin: 0; padding: 0; }
/* Alcune pagine (es. articoli con blocchi lista) caricano CSS che ripristina il
   marker sui <li>: azzero il marker del menu a prescindere dal list-style. */
.ke-nav-list, .ke-nav-list li { list-style: none; }
.ke-nav-list > li::marker { content: ""; }
.ke-nav a { color: var(--ke-muted); font-size: 0.9375rem; font-weight: 700; transition: color .15s ease; }
.ke-nav a:hover, .ke-nav a:focus-visible { color: var(--ke-accent); }
.ke-nav .current-menu-item > a, .ke-nav .current-menu-parent > a { color: var(--ke-text); }
.ke-nav--role { position: relative; padding-left: 18px; border-left: 1px solid rgba(255,255,255,.14); }
.ke-nav-role-toggle { background: none; border: 0; cursor: pointer; color: var(--ke-accent, #e50914); font-weight: 700; font-size: 0.9375rem; padding: 6px 2px; font-family: inherit; }
.ke-nav-role-toggle:hover { color: #ff2d3d; }
.ke-nav-role-dd { display: none; position: absolute; top: 100%; left: 8px; z-index: 60; min-width: 220px; background: #1b1526; border: 1px solid #3a2f4a; border-radius: 10px; padding: 8px; box-shadow: 0 14px 34px rgba(0,0,0,.55); }
.ke-nav--role:hover .ke-nav-role-dd, .ke-nav--role:focus-within .ke-nav-role-dd { display: block; }
.ke-nav--role .ke-nav-list { display: flex; flex-direction: column; gap: 2px; }
.ke-nav--role .ke-nav-list a { display: block; padding: 8px 10px; border-radius: 7px; color: var(--ke-text, #e8e2f2); font-weight: 500; }
.ke-nav--role .ke-nav-list a:hover { background: rgba(229, 9, 20, .14); color: #fff; }
.ke-header-right { margin-left: auto; display: flex; align-items: center; gap: 16px; }
.ke-search-form { display: flex; align-items: center; background: var(--ke-surface); border: 1px solid var(--ke-border); border-radius: 999px; padding: 4px 6px 4px 14px; }
.ke-search-form input { background: transparent; border: 0; color: var(--ke-text); outline: none; width: 150px; }
.ke-search-form button { background: var(--ke-accent); border: 0; color: #fff; border-radius: 999px; width: 30px; height: 30px; cursor: pointer; }

/* ---------------------------------------------------------------------------
   Buttons
--------------------------------------------------------------------------- */
.ke-btn {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 10px 22px; border-radius: 8px;
	background: var(--ke-surface-2); color: var(--ke-text);
	border: 1px solid var(--ke-border); cursor: pointer; font-size: 0.9375rem; font-weight: 600;
}
.ke-btn:hover { background: #33333f; }
.ke-btn--primary { background: var(--ke-accent); border-color: transparent; }
.ke-btn--primary:hover { background: var(--ke-accent-2); }
.ke-btn--ghost { background: rgba(255,255,255,.12); }
.ke-btn--logout { background: transparent; border-color: var(--ke-border); color: var(--ke-muted); }
.ke-btn--logout:hover { background: rgba(229,9,20,.12); color: var(--ke-text); border-color: var(--ke-accent); }

/* ---------------------------------------------------------------------------
   Hero
--------------------------------------------------------------------------- */
.ke-hero { position: relative; min-height: 66vh; display: flex; align-items: flex-end; margin-bottom: 48px; }
.ke-hero-bg { position: absolute; inset: 0; background-size: cover; background-position: center; }
.ke-hero-bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,7,19,.2), rgba(11,7,19,.95) 92%), linear-gradient(90deg, rgba(11,7,19,.85), transparent 60%); }
.ke-hero-content { position: relative; padding: 0 clamp(16px,4vw,56px) 6vh; max-width: 640px; }
.ke-hero-title { font-size: clamp(28px, 4vw, 52px); font-weight: 800; }

/* Image-filled titles (Streamit-style) */
.ke-title-fill {
	/* L'immagine è un tassello 1:1: ripetuta (tile) alla sua dimensione naturale, non
	   stirata, così riempie il titolo come una texture. */
	background-repeat: repeat;
	background-size: auto;
	background-position: top left;
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
	color: transparent;
}
@supports not ((-webkit-background-clip: text) or (background-clip: text)) {
	.ke-title-fill { -webkit-text-fill-color: currentColor; color: var(--ke-text); background-image: none !important; }
}
/* Ultima parola del titolo negli hero single: rossa. Se è attivo il riempimento
   tipografico, usa la STESSA texture delle altre parole ma MOLTIPLICATA per il
   rosso (grana tinta), coerente col billboard. Senza immagine → rosso pieno. */
.ke-film-title .ke-title-accent,
.ke-vtitle .ke-title-accent,
.ke-hero-title .ke-title-accent {
	background-color: var(--ke-accent, #e50914);
	background-image: linear-gradient(var(--ke-accent, #e50914), var(--ke-accent, #e50914)), var(--ke-titlefill-src, none);
	background-repeat: repeat; background-position: top left; background-size: auto;
	background-blend-mode: multiply;
	-webkit-background-clip: text; background-clip: text;
	-webkit-text-fill-color: transparent; color: transparent;
}
@supports not ((-webkit-background-clip: text) or (background-clip: text)) {
	.ke-film-title .ke-title-accent,
	.ke-vtitle .ke-title-accent,
	.ke-hero-title .ke-title-accent { -webkit-text-fill-color: var(--ke-accent, #e50914); color: var(--ke-accent, #e50914); background-image: none !important; }
}
.ke-hero-meta { color: var(--ke-muted); display: flex; gap: 14px; margin-bottom: 12px; font-size: 0.875rem; }
.ke-hero-excerpt { color: #d6d6de; margin-bottom: 20px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ke-hero-actions { display: flex; gap: 12px; }

/* ---------------------------------------------------------------------------
   Rows / carousels
--------------------------------------------------------------------------- */
.ke-row { margin: 58px 0; }
.ke-row-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 22px; }
.ke-row-title { font-size: clamp(22px, 2.4vw, 30px); font-weight: 800; letter-spacing: .01em; }
.ke-row-more { color: var(--ke-muted); font-size: 0.8125rem; }
.ke-row-track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 250px;
	gap: var(--ke-gap);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	padding-bottom: 8px;
	scrollbar-width: thin;
}
.ke-row-track::-webkit-scrollbar { height: 8px; }
.ke-row-track::-webkit-scrollbar-thumb { background: var(--ke-surface-2); border-radius: 8px; }
@media (min-width: 700px) { .ke-row-track { grid-auto-columns: 300px; } }
.ke-row-track:has(.ke-card--land) { grid-auto-columns: 360px; }
@media (min-width: 700px) { .ke-row-track:has(.ke-card--land) { grid-auto-columns: 480px; } }
/* carosello con card in formato "extra" (poster + testo a fianco) */
.ke-row-track--part { grid-auto-columns: clamp(300px, 40vw, 448px); }
/* "Continua a guardare"/carosello misto: card landscape (Film) + card
   editoriali 404 (Video/Parti). La larghezza colonna è impostata INLINE (vedi
   Render::carousel). Qui le card editoriali si ADATTANO IN ALTEZZA a quelle
   landscape (niente più 16:9 fisso che le rendeva più basse). */
.ke-row-track--cw .ke-part-card { aspect-ratio: auto; scroll-snap-align: start; }

/* ---------------------------------------------------------------------------
   Cards + grid
--------------------------------------------------------------------------- */
.ke-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(clamp(160px, 24vw, 300px), 1fr)); gap: var(--ke-gap); margin: 22px 0 60px; }
/* Landscape archives (videos, Collections): fewer, wider columns so 16:9 art
   isn't cramped, and single-column on the narrowest screens. */
.ke-grid--land { grid-template-columns: 1fr; }
@media (min-width: 560px)  { .ke-grid--land { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .ke-grid--land { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1500px) { .ke-grid--land { grid-template-columns: repeat(4, 1fr); } }
/* Collezioni: one column fewer at every breakpoint than the generic landscape
   grid, so the horizontal posters render larger. */
.post-type-archive-ke_collection .ke-grid--land { grid-template-columns: 1fr; }
@media (min-width: 1024px) { .post-type-archive-ke_collection .ke-grid--land { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1500px) { .post-type-archive-ke_collection .ke-grid--land { grid-template-columns: repeat(3, 1fr); } }
/* Blog: griglia con numero di colonne scelto per responsive (var --cols-*) */
.ke-blog-grid { display: grid; gap: var(--ke-gap); grid-template-columns: repeat(var(--cols-m, 1), 1fr); margin: 22px 0 44px; }
@media (min-width: 680px)  { .ke-blog-grid { grid-template-columns: repeat(var(--cols-t, 2), 1fr); } }
@media (min-width: 1080px) { .ke-blog-grid { grid-template-columns: repeat(var(--cols-d, 3), 1fr); } }
/* Card del blog: titolo più grande + estratto (le altre righe non cambiano). */
.ke-blog-card .ke-card-title { font-size: 1.2rem; font-weight: 700; line-height: 1.25; -webkit-line-clamp: 2; margin-bottom: 6px; }
.ke-blog-card .ke-card-excerpt { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin: 0 0 9px; font-size: .875rem; line-height: 1.5; color: #cfcfda; }

.ke-card { scroll-snap-align: start; position: relative; border-radius: var(--ke-radius); overflow: hidden; background: var(--ke-surface); transition: transform .18s ease, box-shadow .18s ease; }
.ke-card:hover { transform: translateY(-4px) scale(1.03); box-shadow: 0 16px 40px rgba(0,0,0,.55); z-index: 2; }
.ke-card-thumb { display: block; aspect-ratio: 522/760; background: var(--ke-surface-2) center/cover no-repeat; }
.ke-card--land .ke-card-thumb { aspect-ratio: 16/9; }
.ke-card-body { display: block; padding: 12px 14px 15px; }
.ke-card-title { font-size: 0.875rem; font-weight: 600; margin: 0 0 4px; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.ke-card-meta { font-size: 0.75rem; color: var(--ke-muted); display: flex; gap: 8px; }
.ke-badge { position: absolute; top: 8px; left: 8px; background: var(--ke-accent); color: #fff; font-size: 0.6875rem; font-weight: 700; padding: 2px 8px; border-radius: 5px; }
.ke-badge--free { background: #1f9d55; left: auto; right: 8px; }
.ke-card-play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .18s; }
.ke-card:hover .ke-card-play { opacity: 1; }
/* Generic play glyph: a pure-CSS triangle (never an emoji/▶, which renders as an
   ugly blue play emoji on some OSes). Inherits currentColor. */
.ke-play-ico { display: inline-block; width: 0; height: 0; border-style: solid; border-width: 6px 0 6px 10px; border-color: transparent transparent transparent currentColor; }
/* Overlay play sull'hover della card: il glifo .ke-play-ico DIVENTA un bottone
   rettangolare arrotondato, col triangolo disegnato dal suo ::before.
   (Markup: .ke-card-play > .ke-play-ico — un solo span.) */
.ke-card-play .ke-play-ico {
	width: clamp(58px, 32%, 84px); height: auto; aspect-ratio: 7/5;
	border: 2.5px solid rgba(255,255,255,.92); border-radius: 13px;
	background: rgba(16,12,22,.32); color: #fff;
	display: grid; place-items: center;
	box-shadow: 0 8px 24px rgba(0,0,0,.4);
	-webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
}
.ke-card-play .ke-play-ico::before {
	content: ""; width: 0; height: 0; border-style: solid;
	border-width: 9px 0 9px 15px;
	border-color: transparent transparent transparent currentColor;
	margin-left: 3px;
}

/* ---------------------------------------------------------------------------
   Single
--------------------------------------------------------------------------- */
.ke-single { padding-top: 24px; }
.ke-single-player { max-width: 1000px; margin: 0 auto 28px; }
.ke-single-head { display: flex; gap: 28px; margin-bottom: 28px; }
.ke-single-poster { flex: 0 0 220px; border-radius: var(--ke-radius); overflow: hidden; background: var(--ke-surface-2); aspect-ratio: 522/760; }
.ke-single-info { flex: 1; min-width: 0; }

/* Trailer as the header backdrop (cinematic) */
.ke-single--trailer .ke-single-head {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: 56vh;
	border-radius: var(--ke-radius);
	overflow: hidden;
	gap: 0;
}
.ke-trailer-bg { position: absolute; inset: 0; z-index: 0; }
.ke-trailer-bg video { width: 100%; height: 100%; object-fit: cover; display: block; }
.ke-trailer-bg-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,7,19,.15) 0%, rgba(11,7,19,.55) 55%, var(--ke-bg) 100%); }
.ke-single--trailer .ke-single-info { position: relative; z-index: 1; padding: clamp(20px, 4vw, 44px); max-width: 780px; }
.ke-single-title { font-size: clamp(24px, 3vw, 38px); font-weight: 800; }
.ke-meta-list { display: flex; flex-wrap: wrap; gap: 10px 18px; color: var(--ke-muted); font-size: 0.875rem; margin: 8px 0 18px; }
.ke-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0; }
.ke-chip { background: var(--ke-surface); border: 1px solid var(--ke-border); border-radius: 999px; padding: 4px 12px; font-size: 0.8125rem; color: var(--ke-muted); }
.ke-chip:hover { color: var(--ke-text); }
.ke-section-title { font-size: clamp(22px, 2.4vw, 30px); font-weight: 800; letter-spacing: .01em; margin: 58px 0 22px; }

/* Season tabs */
.ke-season-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 16px; }
.ke-season-tab { padding: 8px 16px; border-radius: 8px; border: 1px solid var(--ke-border); background: var(--ke-surface); color: var(--ke-muted); cursor: pointer; font-weight: 600; }
.ke-season-tab.is-active, .ke-season-tab:hover { background: var(--ke-accent); border-color: transparent; color: #fff; }

/* Episodes */
.ke-episodes { display: flex; flex-direction: column; gap: 10px; }
.ke-episode { display: flex; gap: 14px; background: var(--ke-surface); border: 1px solid var(--ke-border); border-radius: var(--ke-radius); padding: 10px; }
.ke-episode-thumb { flex: 0 0 150px; aspect-ratio: 16/9; border-radius: 6px; background: var(--ke-surface-2) center/cover; }
.ke-episode-body { flex: 1; min-width: 0; }
.ke-episode-no { color: var(--ke-accent); font-weight: 700; font-size: 0.8125rem; }

/* Parts grid (Streamit-style: numbered 16:9 cards under each Episode tab) */
.ke-parts-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--ke-gap); margin: 0 0 44px; }
/* The panel's display:grid would otherwise override the [hidden] attribute that
   the season-tab switcher toggles — keep inactive Episode panels hidden. */
.ke-parts-grid[hidden] { display: none; }
/* Card Parte ORIZZONTALE: poster verticale a sinistra, titolo + info (durata,
   sorgenti) a destra, pulsante play centrato sull'intera card (overlay su hover). */
.ke-part-card { position: relative; display: flex; align-items: stretch; aspect-ratio: 16 / 9; text-decoration: none; background: var(--ke-surface-2); border: 1px solid var(--ke-border); border-radius: var(--ke-radius); overflow: hidden; box-shadow: 0 2px 10px rgba(0,0,0,.35); transition: transform .2s ease, box-shadow .2s ease; }
.ke-part-card:hover { transform: translateY(-3px); box-shadow: 0 14px 34px rgba(0,0,0,.55); }
.ke-part-poster { position: relative; flex: 0 0 auto; height: 100%; aspect-ratio: 2 / 3; background: var(--ke-surface) center/cover no-repeat; }
.ke-part-num { position: absolute; top: 8px; right: 8px; z-index: 3; min-width: 22px; height: 22px; padding: 0 6px; display: inline-flex; align-items: center; justify-content: center; background: rgba(11,7,19,.82); color: #fff; font-size: 0.75rem; font-weight: 700; border-radius: 6px; }
.ke-part-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; padding: 15px 17px; }
.ke-part-title { display: block; margin: 0; font-size: 1.15rem; font-weight: 800; line-height: 1.22; color: var(--ke-text); }
.ke-part-card:hover .ke-part-title { color: var(--ke-accent-2); }
.ke-part-sources { display: flex; flex-direction: column; gap: 2px; margin-top: 2em; font-size: 0.82rem; }
.ke-part-sources-h { font-weight: 600; color: var(--ke-text); opacity: .85; }
.ke-part-src { color: var(--ke-muted); word-break: break-word; }
.ke-part-dur { margin-top: auto; align-self: flex-end; font-size: 0.82rem; color: var(--ke-muted); }
/* Card suggerimento (404): genere + info compatte sotto il titolo. */
.ke-part-genre { margin-top: 6px; font-size: 0.7rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--ke-accent-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ke-part-card--sug .ke-part-title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* Riassunto al centro (2 righe) che riempie il corpo e spinge la metrica in basso. */
.ke-part-excerpt { flex: 1 1 auto; min-height: 0; margin: 8px 0 0; font-size: 0.8rem; line-height: 1.45; color: #cfcfda; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* Riga secondaria (Risoluzione / età · luogo) su una sola riga, troncata. */
.ke-part-card--sug .ke-part-sources { flex-direction: row; flex-wrap: nowrap; gap: 5px; margin-top: 8px; min-width: 0; white-space: nowrap; overflow: hidden; }
.ke-part-card--sug .ke-part-src { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Metrica in basso a destra (Durata / Parti / Episodi / Titoli). */
.ke-part-card--sug .ke-part-dur { margin-top: 6px; }
/* Persona: la foto 340×400 nel poster 2:3 va ancorata in alto (volto). */
.ke-part-card--person .ke-part-poster { background-position: top center; }
/* Card ORIZZONTALE (collezioni / episodi): poster landscape sopra, corpo sotto. */
.ke-part-card--land { flex-direction: column; aspect-ratio: auto; }
.ke-part-card--land .ke-part-poster { width: 100%; height: auto; aspect-ratio: 16 / 9; flex: 0 0 auto; background-position: center; }
.ke-part-card--land .ke-part-body { padding: 13px 16px 15px; }
.ke-part-card--land .ke-part-play { inset: 0 0 auto 0; aspect-ratio: 16 / 9; }
.ke-part-play { position: absolute; inset: 0; display: grid; place-items: center; opacity: 0; background: rgba(11,7,19,.42); transition: opacity .2s ease; }
.ke-part-card:hover .ke-part-play { opacity: 1; }
/* riquadro arrotondato dietro il triangolo (stesso stile del play delle card) */
.ke-part-play::before { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: clamp(62px, 26%, 92px); aspect-ratio: 7/5; border-radius: 14px; background: rgba(16,12,22,.32); border: 2.5px solid rgba(255,255,255,.92); box-shadow: 0 8px 24px rgba(0,0,0,.4); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.ke-part-play .ke-play-ico { position: relative; z-index: 1; width: 0; height: 0; border-style: solid; border-width: 10px 0 10px 16px; border-color: transparent transparent transparent #fff; margin-left: 3px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.5)); }
.ke-extra-card.is-locked .ke-part-play::before { display: none; } /* stato bloccato: solo il lucchetto */

/* Comments — theme-native, dark, token-driven (replaces the legacy block). */
.ke-comments { margin-top: 40px; color: var(--ke-text); }
.ke-comments-title { font-size: 1.25rem; font-weight: 700; margin: 0 0 20px; color: var(--ke-text); }

/* List + threading */
.ke-comments-list { list-style: none; margin: 0 0 28px; padding: 0; }
.ke-comments-list .children { list-style: none; margin: 16px 0 0 28px; padding: 0; }
.ke-comment { margin-bottom: 16px; }
.ke-comment-body { background: var(--ke-surface); border: 1px solid var(--ke-border); border-radius: var(--ke-radius); padding: 14px 16px; }
.ke-comments-list .children .ke-comment-body { background: var(--ke-bg-2); }

/* Head: avatar + author + date */
.ke-comment-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.ke-comment-avatar { flex: 0 0 auto; line-height: 0; }
.ke-comment-avatar img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; background: var(--ke-bg); display: block; }
.ke-comment-meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; min-width: 0; }
.ke-comment-author { font-weight: 600; color: var(--ke-text); }
.ke-comment-author a { color: var(--ke-text); text-decoration: none; }
.ke-comment-author a:hover { color: var(--ke-accent-2); }
.ke-comment-date { font-size: 0.75rem; color: var(--ke-muted); text-decoration: none; }
.ke-comment-date:hover { color: var(--ke-text); }
.bypostauthor > .ke-comment-body .ke-comment-author::after { content: ""; display: inline-block; width: 6px; height: 6px; margin-left: 6px; border-radius: 50%; background: var(--ke-accent); vertical-align: middle; }

/* Moderation notice */
.ke-comment-moderation { display: block; font-size: 0.8125rem; color: var(--ke-accent-2); font-style: italic; margin: 0 0 8px; }

/* Body text */
.ke-comment-content { color: var(--ke-text); line-height: 1.55; }
.ke-comment-content p { margin: 0 0 10px; }
.ke-comment-content :last-child { margin-bottom: 0; }
.ke-comment-content a { color: var(--ke-accent-2); }

/* Actions: reply + edit */
.ke-comment-actions { margin-top: 10px; }
.ke-comment-actions a,
.ke-comment-edit a { font-size: 0.8125rem; font-weight: 600; color: var(--ke-accent); text-decoration: none; }
.ke-comment-actions a:hover,
.ke-comment-edit a:hover { color: var(--ke-accent-2); }
.ke-comment-edit { margin-left: 4px; }
.ke-comment-edit a { color: var(--ke-muted); font-weight: 400; }

/* Pagination */
.ke-comments-nav { margin: 0 0 24px; }
.ke-comments-nav .nav-links { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ke-comments-nav a,
.ke-comments-nav .page-numbers { display: inline-flex; align-items: center; padding: 7px 12px; border: 1px solid var(--ke-border); border-radius: 8px; background: var(--ke-surface); color: var(--ke-text); text-decoration: none; font-size: 0.875rem; }
.ke-comments-nav a:hover { background: var(--ke-surface-2); }
.ke-comments-nav .page-numbers.current { background: var(--ke-accent); border-color: transparent; color: #fff; }

/* Closed notice */
.ke-comments-closed { color: var(--ke-muted); font-style: italic; margin: 0 0 24px; }

/* Respond / form */
.ke-comments-respond { background: var(--ke-surface); border: 1px solid var(--ke-border); border-radius: 12px; padding: 18px 20px; margin-top: 24px; }
.ke-comments-reply-title { font-size: 1.0625rem; font-weight: 700; margin: 0 0 14px; color: var(--ke-text); }
.ke-comments-reply-title small { margin-left: 8px; font-weight: 400; }
.ke-comments-reply-title small a { color: var(--ke-accent); text-decoration: none; }
.ke-comments-form p { margin: 0 0 14px; }
.ke-comments-form label { display: block; margin-bottom: 6px; font-size: 0.875rem; color: var(--ke-muted); }
.ke-comments-form .comment-form-cookies-consent label { display: inline; }
.ke-comments textarea,
.ke-comments input[type=text],
.ke-comments input[type=email],
.ke-comments input[type=url] { width: 100%; background: var(--ke-bg); color: var(--ke-text); border: 1px solid var(--ke-border); border-radius: 8px; padding: 10px; box-sizing: border-box; }
.ke-comments textarea:focus,
.ke-comments input[type=text]:focus,
.ke-comments input[type=email]:focus,
.ke-comments input[type=url]:focus { outline: none; border-color: var(--ke-accent); }
.ke-comments textarea::placeholder,
.ke-comments input::placeholder { color: var(--ke-muted); }
.ke-comments-textarea { resize: vertical; min-height: 110px; }
.ke-comments-form .comment-notes,
.ke-comments-form .comment-form-cookies-consent,
.ke-comments-form .logged-in-as { font-size: 0.8125rem; color: var(--ke-muted); }
.ke-comments-form .comment-notes a,
.ke-comments-form .logged-in-as a,
.ke-comments-form .must-log-in a { color: var(--ke-accent); }
.ke-comments .must-log-in { color: var(--ke-muted); }
.ke-comments-form .comment-form-cookies-consent input[type=checkbox] { width: auto; margin-right: 6px; }
.ke-comments-form .form-submit { margin-bottom: 0; }
/* Submit uses the theme primary button, restated here so no white default shows. */
.ke-comments-submit { display: inline-flex; align-items: center; gap: 8px; padding: 10px 22px; border-radius: 8px; border: 1px solid transparent; background: var(--ke-accent); color: #fff; cursor: pointer; font-size: 0.9375rem; font-weight: 600; -webkit-appearance: none; appearance: none; }
.ke-comments-submit:hover { background: var(--ke-accent-2); }

/* Cast grid */
.ke-cast-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 16px; margin: 8px 0 30px; }
.ke-cast-member { text-align: center; color: inherit; text-decoration: none; }
.ke-cast-photo { display: block; width: 90px; height: 90px; border-radius: 50%; margin: 0 auto 8px; background: var(--ke-surface-2) center/cover; }

/* ---- Rail: sezioni-riga che scorrono in orizzontale (con frecce) invece di
   andare a capo. Auto-applicato via JS a .ke-season-tabs / .ke-parts-grid /
   .ke-cast-grid / .ke-extra-grid e a qualsiasi elemento [data-ke-rail] (anche
   futuro). NON tocca gli archivi (.ke-grid), che restano griglie multi-riga. ---- */
.ke-rail-wrap { position: relative; }
.ke-rail {
	display: flex; flex-wrap: nowrap; gap: var(--ke-gap);
	overflow-x: auto; overflow-y: hidden; scroll-behavior: smooth;
	scrollbar-width: none; -ms-overflow-style: none;
	grid-template-columns: none; padding-bottom: 6px;
}
.ke-rail::-webkit-scrollbar { display: none; }
.ke-rail > * { flex: 0 0 auto; }
/* Card Parte + Contenuti Extra: orizzontali 16:9, più larghe delle tessere.
   .ke-extra-grid è display:grid (regola definita più in basso, quindi vincerebbe
   su .ke-rail): forziamo flex qui in modalità rail, altrimenti le card vanno a
   capo invece di scorrere. */
.ke-rail.ke-parts-grid,
.ke-rail.ke-extra-grid { display: flex; }
.ke-rail.ke-parts-grid > *,
.ke-rail.ke-extra-grid > * { width: clamp(320px, 36vw, 470px); }
.ke-rail.ke-cast-grid > * { width: 118px; }
.ke-rail.ke-season-tabs { gap: 8px; }
.ke-rail-arrow {
	position: absolute; top: 50%; transform: translateY(-50%); z-index: 6;
	width: 42px; height: 42px; padding: 0; border-radius: 50%;
	border: 1px solid rgba(255,255,255,.16); background: rgba(10,7,19,.85); color: #fff;
	cursor: pointer; display: none; align-items: center; justify-content: center;
	box-shadow: 0 6px 20px rgba(0,0,0,.5); transition: opacity .15s ease, background .15s ease;
}
.ke-rail-wrap.is-scrollable > .ke-rail-arrow { display: flex; }
.ke-rail-arrow:hover { background: var(--ke-accent); border-color: transparent; }
.ke-rail-arrow[disabled] { opacity: 0; pointer-events: none; }
.ke-rail-prev { left: -6px; }
.ke-rail-next { right: -6px; }
.ke-rail-arrow svg { width: 20px; height: 20px; display: block; }
/* i pannelli-episodio non attivi restano nascosti anche in modalità rail */
.ke-rail[hidden] { display: none; }
.ke-cast-name { display: block; font-size: 0.875rem; font-weight: 600; }
.ke-cast-role { display: block; font-size: 0.75rem; color: var(--ke-muted); }

/* ---------------------------------------------------------------------------
   Footer
--------------------------------------------------------------------------- */
.ke-footer-widgets { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 30px; padding-top: 40px; }
.ke-widget-title { font-size: 0.9375rem; margin: 0 0 12px; color: var(--ke-text); }
.ke-widget { color: var(--ke-muted); font-size: 0.875rem; }
.ke-widget ul { list-style: none; margin: 0; padding: 0; }
.ke-widget li { margin-bottom: 6px; }
.ke-widget a:hover { color: var(--ke-text); }
.ke-social { display: flex; flex-wrap: wrap; gap: 10px; }
.ke-social a { padding: 5px 12px; border: 1px solid var(--ke-border); border-radius: 999px; }

/* ---------------------------------------------------------------------------
   Advertising slots
--------------------------------------------------------------------------- */
.ke-ad-header, .ke-ad-footer { margin: 18px auto; }
.ke-ad-slot { margin: 24px 0; text-align: center; }
.ke-ad-slot--header, .ke-ad-slot--footer { margin: 0; }
.ke-ad { display: inline-block; max-width: 100%; line-height: 0; }
.ke-ad img, .ke-ad-img { max-width: 100%; height: auto; border-radius: 8px; }
.ke-ad-video { max-width: 100%; height: auto; border-radius: 8px; }
.ke-ad-slot--sidebar { margin: 0 0 20px; }
.ke-ad--code { line-height: normal; }

.ke-sort-bar { display: flex; gap: 8px; margin: 4px 0 20px; }
.ke-sort-link { padding: 6px 14px; border-radius: 999px; border: 1px solid var(--ke-border); font-size: 0.8125rem; color: var(--ke-muted); }
.ke-sort-link.is-active, .ke-sort-link:hover { background: var(--ke-accent); border-color: transparent; color: #fff; }

.ke-site-footer { border-top: 1px solid var(--ke-border); margin-top: 60px; padding: 40px 0; color: var(--ke-muted); font-size: 0.875rem; }
.ke-footer-inner { display: flex; flex-wrap: wrap; gap: 30px; justify-content: space-between; }
.ke-footer-nav { display: flex; flex-wrap: wrap; gap: 18px; }
.ke-footer-nav a:hover { color: var(--ke-text); }
.ke-footer-social { display: flex; flex-wrap: wrap; gap: 14px; margin: 10px 0; }
.ke-footer-social-link { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.02em; color: var(--ke-muted); }
.ke-footer-social-link:hover { color: var(--ke-accent); }
.ke-footer-2257 { font-size: 0.7rem; color: var(--ke-muted); opacity: 0.8; margin-top: 8px; }

/* ---------------------------------------------------------------------------
   Misc / helpers
--------------------------------------------------------------------------- */
.ke-empty { color: var(--ke-muted); padding: 40px 0; text-align: center; }
.ke-age-note { font-size: 0.75rem; color: var(--ke-muted); }
.ke-nav-toggle { display: none; background: none; border: 1px solid var(--ke-border); border-radius: 10px; color: var(--ke-text); font-size: 1.875rem; line-height: 1; padding: 10px 18px; cursor: pointer; }

@media (max-width: 780px) {
	.ke-nav { display: none; }
	.ke-nav-toggle { display: inline-flex; margin-left: auto; }
	.ke-header-inner { flex-wrap: wrap; }
	/* Search + Account/Esci overflow the narrow bar: tuck them into the hamburger. */
	.ke-header-right { display: none; }
	.ke-site-header.ke-menu-open .ke-header-right { display: flex; order: 20; width: 100%; flex-direction: column; align-items: stretch; gap: 10px; margin-left: 0; padding: 10px 0 4px; border-top: 1px solid var(--ke-border); margin-top: 8px; }
	.ke-site-header.ke-menu-open .ke-search-form { width: 100%; }
	.ke-site-header.ke-menu-open .ke-search-form input { width: 100%; }
	.ke-site-header.ke-menu-open .ke-header-right .ke-btn { width: 100%; justify-content: center; }
	/* Il pannello del menu può superare l'altezza dello schermo (molte voci +
	   ricerca + account): lo rendiamo scrollabile e capato al viewport, con spazio
	   in fondo per non finire sotto la bottom-nav fissa. */
	.ke-site-header.ke-menu-open .ke-header-inner { height: auto; min-height: 66px; max-height: calc(100vh - 8px); max-height: calc(100dvh - 8px); overflow-y: auto; -webkit-overflow-scrolling: touch; padding-bottom: calc(74px + env(safe-area-inset-bottom)); }
	/* Hamburger open: the menus become a full-width stacked panel under the bar. */
	.ke-site-header.ke-menu-open { background: var(--ke-bg, #0d0a14); box-shadow: 0 18px 40px rgba(0, 0, 0, .55); }
	.ke-site-header.ke-menu-open .ke-nav { display: flex; order: 10; width: 100%; flex-direction: column; gap: 4px; padding: 14px 0 6px; border-top: 1px solid var(--ke-border); margin-top: 10px; background: inherit; }
	.ke-site-header.ke-menu-open .ke-nav .ke-nav-list { flex-direction: column; gap: 2px; }
	.ke-site-header.ke-menu-open .ke-nav a { font-size: 1rem; padding: 7px 0; display: block; }
	.ke-site-header.ke-menu-open .ke-nav--role { border-left: 0; padding-left: 0; }
	.ke-site-header.ke-menu-open .ke-nav-role-toggle { padding: 6px 0; font-size: 1rem; }
	.ke-site-header.ke-menu-open .ke-nav-role-dd { display: block; position: static; min-width: 0; background: transparent; border: 0; box-shadow: none; padding: 2px 0 6px 14px; }
	.ke-single-head { flex-direction: column; }
	.ke-single-poster { flex-basis: auto; max-width: 180px; }
	.ke-episode-thumb { flex-basis: 110px; }
}

/* Immersive webcam room on mobile: hide the site chrome (header/footer/ads) so the
   video + chat get the whole screen; the room stacks vertically on its own. */
@media (max-width: 899px) {
	body.ke-cam-immersive .ke-site-header,
	body.ke-cam-immersive .ke-site-footer,
	body.ke-cam-immersive .ke-ad-header,
	body.ke-cam-immersive .ke-ad-footer { display: none; }
	body.ke-cam-immersive #ke-main { padding: 0; }
	body.ke-cam-immersive .ke-container { padding-left: 8px; padding-right: 8px; }
}

/* Performer studio renders its own title row (with the earnings pills), so drop the
   theme's duplicate page title on that page. */
body.ke-cam-studio-page .ke-single-title { display: none; }
body.ke-cam-studio-page .ke-single-content { padding-top: 0; }

/* ---------------------------------------------------------------------------
   Archive card (Streamit-style hover-flip) — used by archive.php grid
--------------------------------------------------------------------------- */
.ke-acard { position: relative; border-radius: var(--ke-radius); overflow: hidden; background: var(--ke-surface); aspect-ratio: 522 / 760; box-shadow: 0 2px 10px rgba(0,0,0,.35); transition: transform .2s ease, box-shadow .2s ease; }
.ke-acard--land { aspect-ratio: 16 / 9; }
.ke-acard:hover { transform: translateY(-4px); box-shadow: 0 18px 44px rgba(0,0,0,.6); z-index: 2; }
.ke-acard-link { position: absolute; inset: 0; z-index: 1; }
.ke-acard-thumb { position: absolute; inset: 0; background: var(--ke-surface-2) center/cover no-repeat; transition: transform .45s ease; }
.ke-acard:hover .ke-acard-thumb { transform: scale(1.06); }
.ke-acard-badge { position: absolute; top: 8px; left: 8px; z-index: 3; background: var(--ke-accent); color: #fff; font-size: 0.6562rem; font-weight: 700; letter-spacing: .3px; text-transform: uppercase; padding: 3px 8px; border-radius: 999px; }

.ke-acard-desc { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 12px 12px 14px; display: flex; flex-direction: column; gap: 5px; transform: translateY(101%); transition: transform .34s cubic-bezier(.2,.7,.2,1); background: linear-gradient(to top, var(--ke-bg) 60%, rgba(11,7,19,.82) 82%, rgba(11,7,19,0)); }
@media (hover: hover) { .ke-acard:hover .ke-acard-desc { transform: translateY(0); } }

.ke-acard-genres { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 5px; }
.ke-acard-genres li a { position: relative; z-index: 3; font-size: 0.6562rem; color: var(--ke-muted); background: rgba(255,255,255,.09); padding: 2px 8px; border-radius: 999px; }
.ke-acard-genres li a:hover { color: #fff; background: var(--ke-accent); }
.ke-acard-title { font-size: 0.9375rem; font-weight: 700; line-height: 1.25; margin: 2px 0 0; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.ke-acard-title a { position: relative; z-index: 3; color: var(--ke-text); }
.ke-acard-meta { font-size: 0.75rem; color: var(--ke-muted); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ke-acard-excerpt { font-size: 0.7812rem; line-height: 1.35; color: #cfcfda; margin: 2px 0 2px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ke-acard-actions { display: flex; align-items: center; gap: 8px; margin-top: 5px; position: relative; z-index: 3; }
.ke-acard-btn { display: inline-flex; align-items: center; gap: 6px; font-size: 0.8125rem; font-weight: 600; padding: 7px 15px; border-radius: 8px; }
.ke-acard-btn--play { background: var(--ke-accent); color: #fff; }
.ke-acard-btn--play .ke-play-ico { display:inline-block; width:0; height:0; border-style:solid; border-width:5px 0 5px 9px; border-color:transparent transparent transparent currentColor; }

.ke-acard-btn--play:hover { background: var(--ke-accent-2); }
.ke-acard-fav { width: 34px; height: 34px; flex: 0 0 34px; border-radius: 8px; border: 1px solid var(--ke-border); background: rgba(255,255,255,.06); color: var(--ke-text); font-size: 1.125rem; line-height: 1; cursor: pointer; display: grid; place-items: center; transition: background .15s, color .15s; }
.ke-acard-fav:hover { background: rgba(255,255,255,.14); }
.ke-acard-fav.is-active { background: var(--ke-accent); border-color: transparent; color: #fff; }

/* Touch devices (no hover): keep a compact title bar always visible */
@media (hover: none) {
	.ke-acard-desc { transform: translateY(0); gap: 3px; padding-top: 30px; background: linear-gradient(to top, var(--ke-bg) 42%, rgba(11,7,19,0)); }
	.ke-acard-genres, .ke-acard-excerpt, .ke-acard-actions { display: none; }
	.ke-acard-title { font-size: 0.8125rem; }
}

/* ---------------------------------------------------------------------------
   Archive: filter sidebar + toolbar (Streamit-style)
--------------------------------------------------------------------------- */
.ke-archive-layout { display: grid; grid-template-columns: 1fr; gap: 26px; }
@media (min-width: 992px) { .ke-archive-layout { grid-template-columns: 248px minmax(0, 1fr); gap: 30px; } }
.ke-archive-main { min-width: 0; }
.ke-archive-toolbar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 2px; }
.ke-archive-toolbar .ke-sort-bar { margin: 0; }

/* Filter sidebar */
.ke-filters { background: var(--ke-bg-2); border: 1px solid var(--ke-border); border-radius: 14px; padding: 18px; }
@media (min-width: 992px) {
	/* Colonna filtri: altezza MINIMA = viewport meno lo spazio sopra il filtro
	   (header + riga titolo). Su viewport alti riempie la colonna (Tag popolari a
	   riempire lo spazio residuo e a scorrere fino in fondo, con Applica/Azzera
	   sotto); su viewport bassi, dove il contenuto fisso non ci starebbe, il box
	   CRESCE invece di sforare/tagliare. Non cresce col caricamento lazy: dipende
	   solo dal proprio contenuto (la griglia è in un'altra colonna, align-self:start).
	   Sticky sotto l'header. --ke-fabove è misurata dal vivo dal JS (theme.js:
	   setFilterOffset) così è corretta a ogni breakpoint e con/senza admin bar; i
	   valori qui sotto sono solo il fallback per il primo paint. */
	.ke-filters { --ke-fabove: 184px; position: sticky; top: 94px; align-self: start; min-height: calc(100vh - var(--ke-fabove)); display: flex; flex-direction: column; }
	body.admin-bar .ke-filters { --ke-fabove: 216px; }
	.ke-filters .ke-filters-form { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
	.ke-filters .ke-fwidget--tags { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; margin-bottom: 12px; }
	.ke-filters .ke-fwidget--tags .ke-chips--wrap { flex: 1 1 auto; min-height: 80px; max-height: none; align-content: flex-start; }
	.ke-filters .ke-filters-actions { flex: 0 0 auto; }
	.ke-filters-close { display: none; }
}
.ke-filters-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.ke-filters-title { font-size: 1.125rem; font-weight: 800; margin: 0; display: flex; align-items: center; gap: 8px; }
.ke-filters-count { background: var(--ke-accent); color: #fff; font-size: 0.75rem; font-weight: 700; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; display: inline-grid; place-items: center; }
.ke-filters-close { background: none; border: 0; color: var(--ke-muted); font-size: 1.25rem; cursor: pointer; line-height: 1; }
.ke-filter-widget { margin-bottom: 18px; }
.ke-filter-wtitle { font-size: 0.75rem; text-transform: uppercase; letter-spacing: .6px; color: var(--ke-muted); margin: 0 0 8px; }
.ke-filter-scroll { max-height: 230px; overflow-y: auto; display: flex; flex-direction: column; gap: 1px; padding-right: 4px; }
.ke-filter-scroll::-webkit-scrollbar { width: 8px; }
.ke-filter-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,.12); border-radius: 8px; }
.ke-check { display: flex; align-items: center; gap: 9px; padding: 6px 8px; border-radius: 7px; cursor: pointer; font-size: 0.875rem; }
.ke-check:hover { background: rgba(255,255,255,.05); }
.ke-check input { width: 16px; height: 16px; accent-color: var(--ke-accent); flex: 0 0 16px; }
.ke-check span { flex: 1; }
.ke-check small { color: var(--ke-muted); font-size: 0.75rem; }
.ke-filters-actions { display: flex; align-items: center; gap: 14px; margin-top: 6px; }
.ke-filters-actions .ke-btn { padding: 9px 20px; }
.ke-filters-reset { color: var(--ke-muted); font-size: 0.8125rem; }
.ke-filters-reset:hover { color: var(--ke-text); }

/* Mobile toggle button — nascosto di default (la colonna filtri è sempre visibile
   su desktop); mostrato solo sotto 992px. Scopato a `button.*` così la regola NON
   colpisce il <body>, che porta la stessa classe mentre il drawer è aperto. */
button.ke-filters-open { display: none; align-items: center; gap: 8px; padding: 8px 16px; border-radius: 8px; border: 1px solid var(--ke-border); background: var(--ke-surface); color: var(--ke-text); cursor: pointer; font-size: 0.875rem; font-weight: 600; }
button.ke-filters-open:hover { background: var(--ke-surface-2); }

/* Off-canvas drawer under 992px */
@media (max-width: 991.98px) {
	button.ke-filters-open { display: inline-flex; }
	.ke-filters { position: fixed; top: 0; left: 0; bottom: 0; width: min(330px, 88vw); z-index: 210; border-radius: 0; overflow-y: auto; transform: translateX(-100%); transition: transform .3s ease; box-shadow: 0 0 50px rgba(0,0,0,.6); }
	.ke-filters.is-open { transform: translateX(0); }
	.ke-filters-backdrop { position: fixed; inset: 0; z-index: 205; background: rgba(0,0,0,.55); opacity: 0; visibility: hidden; transition: opacity .3s; }
	.ke-filters-backdrop.is-open { opacity: 1; visibility: visible; }
	body.ke-filters-open { overflow: hidden; }
}

/* ---------------------------------------------------------------------------
   Full-width grids for large screens / TV
--------------------------------------------------------------------------- */

/* ---------------------------------------------------------------------------
   Header search: icon → cascading overlay panel
--------------------------------------------------------------------------- */
.ke-search { position: relative; display: flex; align-items: center; }
.ke-search-toggle { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--ke-border); background: var(--ke-surface); color: var(--ke-text); display: grid; place-items: center; cursor: pointer; transition: background .15s, color .15s; }
.ke-search-toggle:hover { background: var(--ke-surface-2); }
.ke-search.is-open .ke-search-toggle { background: var(--ke-accent); border-color: transparent; color: #fff; }
.ke-search-panel { position: absolute; top: calc(100% + 12px); right: 0; width: min(380px, 92vw); z-index: 120; opacity: 0; transform: translateY(-8px) scale(.98); transform-origin: top right; pointer-events: none; transition: opacity .2s ease, transform .2s ease; }
.ke-search.is-open .ke-search-panel { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; }
.ke-search-panel .ke-search-form { display: flex; align-items: center; gap: 6px; background: var(--ke-bg-2); border: 1px solid var(--ke-border); border-radius: 12px; padding: 6px 6px 6px 16px; box-shadow: 0 20px 48px rgba(0,0,0,.6); }
.ke-search-panel input[type="search"] { flex: 1; min-width: 0; background: transparent; border: 0; color: var(--ke-text); outline: none; font-size: 0.9375rem; padding: 9px 0; }
.ke-search-panel .ke-search-form button { flex: 0 0 auto; background: var(--ke-accent); border: 0; color: #fff; width: 38px; height: 38px; border-radius: 9px; cursor: pointer; display: grid; place-items: center; }
.ke-search-panel .ke-search-form button:hover { background: var(--ke-accent-2); }

/* ---------------------------------------------------------------------------
   Filter sidebar — chip groups
--------------------------------------------------------------------------- */
.ke-filters-title .ke-filters-ico { display: inline-grid; place-items: center; color: var(--ke-accent); margin-right: 4px; vertical-align: -3px; }
.ke-fwidget { margin-bottom: 22px; }
.ke-fwidget:last-of-type { margin-bottom: 12px; }
.ke-fwidget-title { font-size: 0.75rem; text-transform: uppercase; letter-spacing: .6px; color: var(--ke-muted); margin: 0 0 11px; font-weight: 700; }
.ke-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.ke-chips--wrap { max-height: 176px; overflow-y: auto; padding-right: 4px; }
.ke-chips--wrap::-webkit-scrollbar { width: 8px; }
.ke-chips--wrap::-webkit-scrollbar-thumb { background: rgba(255,255,255,.12); border-radius: 8px; }
.ke-chip { position: relative; display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px; border-radius: 999px; border: 1px solid var(--ke-border); background: rgba(255,255,255,.045); color: var(--ke-muted); font-size: 0.8125rem; line-height: 1; cursor: pointer; user-select: none; transition: background .15s, color .15s, border-color .15s, box-shadow .15s; }
.ke-chip:hover { border-color: rgba(255,255,255,.28); color: var(--ke-text); }
.ke-chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.ke-chip.is-checked, .ke-chip:has(input:checked) { background: var(--ke-accent); border-color: transparent; color: #fff; box-shadow: 0 3px 12px rgba(229,9,20,.35); }
.ke-chip--sm { padding: 5px 11px; font-size: 0.75rem; }
.ke-chip:focus-within { outline: 2px solid var(--ke-accent-2); outline-offset: 2px; }

/* ---------------------------------------------------------------------------
   Header: primary menu left-aligned (role menus + icons stay right)
--------------------------------------------------------------------------- */
.ke-logo { flex: 0 0 auto; }
.ke-logo img, .ke-logo .custom-logo { max-width: min(220px, 40vw); }
.ke-nav:not(.ke-nav--role) { margin-right: auto; }

/* ---------------------------------------------------------------------------
   Filter sidebar: a touch wider + larger content (Streamit-like)
--------------------------------------------------------------------------- */
@media (min-width: 992px) { .ke-archive-layout { grid-template-columns: 312px minmax(0, 1fr); gap: 34px; } }
.ke-filters { padding: 22px; }
.ke-filters-title { font-size: 1.3125rem; }
.ke-fwidget { margin-bottom: 24px; }
.ke-fwidget-title { font-size: 0.8125rem; }
.ke-chip { font-size: 0.9375rem; padding: 9px 16px; }
.ke-chip--sm { font-size: 0.8125rem; padding: 6px 13px; }
.ke-chips { gap: 9px; }
/* Prova: testo delle pillole DENTRO i filtri come "small". */
.ke-filters .ke-chip { font-size: small; }

/* ---------------------------------------------------------------------------
   Mobile fixed bottom navigation bar (menu location 'mobile')
--------------------------------------------------------------------------- */
.ke-mobile-nav { display: none; }
@media (max-width: 991.98px) {
	.ke-mobile-nav { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 300; background: var(--ke-bg-2); border-top: 1px solid var(--ke-border); padding: 6px 2px calc(6px + env(safe-area-inset-bottom)); justify-content: space-around; box-shadow: 0 -6px 24px rgba(0,0,0,.45); }
	.ke-mobile-nav-item { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 3px; color: var(--ke-muted); font-size: 0.6875rem; padding: 4px 2px; min-width: 0; }
	.ke-mobile-nav-item.is-active { color: var(--ke-accent); }
	.ke-mobile-nav-item:active { transform: scale(.94); }
	.ke-mobile-nav-ico { display: grid; place-items: center; height: 24px; }
	.ke-mobile-nav-label { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
	body { padding-bottom: 66px; }
	body.ke-cam-immersive .ke-mobile-nav { display: none; }
	body.ke-cam-immersive { padding-bottom: 0; }
}

/* ---------------------------------------------------------------------------
   Archive: lazy poster <img> + infinite-scroll sentinel
--------------------------------------------------------------------------- */
img.ke-acard-thumb { width: 100%; height: 100%; object-fit: cover; display: block; }
.ke-load-more { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 30px 0 50px; color: var(--ke-muted); min-height: 60px; }
.ke-load-more-text { font-size: 0.875rem; }
.ke-spinner { width: 22px; height: 22px; border: 3px solid rgba(255,255,255,.15); border-top-color: var(--ke-accent); border-radius: 50%; animation: ke-spin .7s linear infinite; }
@keyframes ke-spin { to { transform: rotate(360deg); } }

/* Paginazione archivi/blog (the_posts_pagination): pill a tema, centrate, con
   la pagina corrente in accento e prev/next in evidenza. */
.pagination { margin: 8px 0 54px; }
.pagination .nav-links { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px; }
.pagination .page-numbers {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 44px; height: 44px; padding: 0 15px;
	border: 1px solid var(--ke-border); border-radius: 999px;
	background: var(--ke-surface); color: var(--ke-text);
	font-size: .95rem; font-weight: 600; line-height: 1; text-decoration: none;
	transition: background .15s ease, border-color .15s ease, color .15s ease, transform .15s ease, box-shadow .15s ease;
}
.pagination a.page-numbers:hover,
.pagination a.page-numbers:focus-visible { background: var(--ke-surface-2); border-color: var(--ke-accent); color: #fff; transform: translateY(-2px); outline: none; }
.pagination .page-numbers.current { background: var(--ke-accent); border-color: transparent; color: #fff; box-shadow: 0 5px 16px rgba(229,9,20,.38); }
.pagination .page-numbers.dots { min-width: auto; padding: 0 4px; border-color: transparent; background: transparent; color: var(--ke-muted); }
.pagination .page-numbers.prev,
.pagination .page-numbers.next { gap: 6px; padding: 0 20px; font-weight: 700; }
.pagination a.page-numbers.prev:hover,
.pagination a.page-numbers.next:hover { background: var(--ke-accent); border-color: transparent; }

/* Role menus align right (with the icon cluster), not centered */
.ke-header-right { margin-left: 0; }

/* ===================== Film singolo — hero stile Streamit ===================== */
.ke-film { width: 100%; }
/* Hero immersivo: copre TUTTA la verticale (100vh), tirato su sotto l'header sticky
   (che resta sopra col suo gradiente); il contenuto è ancorato in basso. */
.ke-film-hero { position: relative; width: 100%; height: 100vh; margin-top: calc(-1 * var(--ke-hh, 78px)); overflow: hidden; display: flex; background: var(--ke-bg); }
body.admin-bar .ke-film-hero { height: calc(100vh - 32px); }
.ke-film-hero-media { position: absolute; inset: 0; z-index: 0; }
/* Poster copre il video (nero finché non parte) e si dissolve su .is-playing. */
.ke-film-hero-img { position: absolute; inset: 0; z-index: 1; background-position: center; background-size: cover; opacity: 1; transition: opacity .5s ease; }
/* Velo scuro sul poster (era troppo luminoso) + sfumatura al nero in alto e in
   basso, così si fonde con lo sfondo senza stacco netto (come il video). */
.ke-film-hero-img::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient( 180deg,
		var(--ke-bg) 0%,
		rgba(11, 7, 19, 0.55) 14%,
		rgba(11, 7, 19, 0.48) 50%,
		rgba(11, 7, 19, 0.55) 86%,
		var(--ke-bg) 100% );
}
.ke-film-hero-media.is-playing .ke-film-hero-img { opacity: 0; pointer-events: none; }
.ke-film-hero-media .ke-trailer-bg { position: absolute; inset: 0; z-index: 0; }
/* Il trailer riempie l'hero (fill/cover), edge-to-edge, senza riquadri neri. */
.ke-film-hero .ke-trailer-bg video { object-fit: cover; }
.ke-film-hero-scrim { position: absolute; inset: 0; z-index: 2; pointer-events: none;
	background:
		linear-gradient(0deg, var(--ke-bg) 2%, rgba(11,7,19,.55) 26%, rgba(11,7,19,0) 58%),
		linear-gradient(90deg, rgba(11,7,19,.85) 0%, rgba(11,7,19,.35) 34%, rgba(11,7,19,0) 62%); }
.ke-film--trailer .ke-film-hero-scrim { background: linear-gradient(90deg, rgba(11,7,19,.8) 0%, rgba(11,7,19,.25) 34%, rgba(11,7,19,0) 60%); }

.ke-film-hero-inner { position: relative; z-index: 2; align-self: flex-end; width: 100%;
	max-width: min(1400px, 50%); padding: 0 clamp(16px, 4vw, 56px) clamp(18px, 3vh, 40px); }

.ke-film-genres { list-style: none; margin: 0 0 .5rem; padding: 0; display: flex; flex-wrap: wrap; gap: .35rem .95rem; }
.ke-film-genres li { position: relative; }
.ke-film-genres li + li::before { content: "•"; position: absolute; left: -.66rem; color: var(--ke-accent); }
.ke-film-genres a { color: var(--ke-text); font-weight: 600; font-size: .95rem; text-decoration: none; opacity: .92; }
.ke-film-genres a:hover { color: var(--ke-accent); }

.ke-film-title { font-family: var(--ke-font-heading, inherit); text-transform: uppercase; font-weight: 800;
	line-height: 1.02; letter-spacing: .01em; font-size: clamp(2rem, 4.4vw, 3.6rem); margin: 0 0 .55rem; }

.ke-film-desc { max-width: 62ch; margin: 0 0 1rem; color: var(--ke-text); }
.ke-film-desc-text { margin: 0; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ke-film-desc.is-open .ke-film-desc-text { -webkit-line-clamp: unset; overflow: visible; }
.ke-film-readmore { margin-top: .45rem; background: rgba(255,255,255,.14); color: var(--ke-text); border: 0; border-radius: 4px;
	padding: .3rem .72rem; font-size: .85rem; font-weight: 600; cursor: pointer; }
.ke-film-readmore:hover { background: rgba(255,255,255,.24); }

.ke-film-meta { list-style: none; margin: 0 0 .7rem; padding: 0; display: flex; align-items: center; flex-wrap: wrap; gap: .55rem 1.15rem; color: #d1d0cf; font-size: 1.02rem; }
.ke-film-meta li { display: inline-flex; align-items: center; gap: .35rem; }
.ke-film-meta-year { font-weight: 700; color: var(--ke-text); }
.ke-film-meta-res { font-weight: 700; font-size: .82em; letter-spacing: .02em; padding: 1px 8px; border: 1px solid rgba(255,255,255,.28); border-radius: 5px; color: var(--ke-text); }
.ke-ico { width: 1.15em; height: 1.15em; flex: 0 0 auto; }
.ke-lips { display: inline-flex; gap: .1rem; font-size: 1.05em; line-height: 1; }
/* Bacio a riempimento parziale (mezze stelle stile Amazon): il bacio colorato
   sta ESATTAMENTE sopra quello grigio (stessa dimensione/posizione) e viene solo
   RITAGLIATO a --fill% con clip-path — nessun ridimensionamento, allineamento
   perfetto col grigio sotto. */
.ke-lip { position: relative; display: inline-block; vertical-align: middle; line-height: 1; }
.ke-lip-bg { display: block; line-height: 1; filter: grayscale(1); opacity: .35; }
.ke-lip-fg { position: absolute; left: 0; top: 0; right: 0; bottom: 0; line-height: 1; clip-path: inset(0 calc(100% - var(--fill, 0%)) 0 0); }
.ke-lip.is-on { filter: none; opacity: 1; } /* retro-compat markup vecchio */
/* Numero esatto della media accanto ai baci (es. 2,8/5). */
.ke-lips-num { margin-left: 8px; font-weight: 700; color: var(--ke-text); font-size: .95em; white-space: nowrap; }
.ke-lips-num .ke-lips-num-max { font-weight: 500; color: var(--ke-muted); font-size: .85em; }

.ke-film-lang { display: inline-flex; align-items: center; gap: .4rem; color: #b9b7bd; margin: 0 0 1.4rem; }
.ke-film-lang small { font-size: .92rem; }

.ke-film-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .8rem 1rem; }
.ke-btn--play { display: inline-flex; align-items: center; gap: .55rem; background: var(--ke-accent); color: #fff;
	border: 0; border-radius: 6px; padding: .8rem 1.5rem; font-weight: 700; font-size: 1.02rem; cursor: pointer; }
.ke-btn--play:hover { background: var(--ke-accent-2); color: #fff; }
.ke-btn--play .ke-play-ico { display: inline-block; width: 0; height: 0; border-style: solid; border-width: 6px 0 6px 11px; border-color: transparent transparent transparent currentColor; }
.ke-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%;
	background: var(--ke-surface); color: var(--ke-text); border: 1.5px solid rgba(255,255,255,.14); cursor: pointer; transition: background .15s, border-color .15s; }
.ke-icon-btn:hover { background: var(--ke-surface-2, #2a2333); border-color: var(--ke-accent); }
.ke-icon-btn .ke-ico { width: 20px; height: 20px; }
.ke-icon-btn.is-copied { border-color: var(--ke-accent); background: var(--ke-accent); }

/* Player: overlay a DIMENSIONE NORMALE (modale centrata su sfondo scuro), aperto da
   "Inizia a guardare". L'espansione a tutto schermo si aggiungerà dopo. */
.ke-film-player { position: fixed; inset: 0; z-index: 2147482000; margin: 0; padding: clamp(16px, 4vw, 48px);
	background: rgba(0,0,0,.86); display: none; align-items: center; justify-content: center; }
.ke-film-player.is-open { display: flex; }
.ke-film-player-inner { width: min(1000px, 100%); aspect-ratio: 16 / 9; max-height: 84vh; background: #000;
	border-radius: 8px; overflow: hidden; box-shadow: 0 24px 70px rgba(0,0,0,.6); display: flex; }
.ke-film-player-inner > * { width: 100%; height: 100%; }
.ke-film-player-inner video, .ke-film-player-inner iframe { width: 100%; height: 100%; object-fit: contain; background: #000; }
.ke-film-player-close { position: fixed; top: 16px; right: 20px; z-index: 5; width: 46px; height: 46px; border-radius: 50%;
	background: rgba(0,0,0,.55); border: 1.5px solid rgba(255,255,255,.3); color: #fff; font-size: 24px; line-height: 1; cursor: pointer; }
.ke-film-player-close:hover { background: var(--ke-accent); border-color: var(--ke-accent); }
body.ke-player-open { overflow: hidden; }

/* Contenuti Extra (film single) --------------------------------------------- */
.ke-film-extras { margin: 34px 0 8px; }
.ke-extra-group { margin-top: 18px; }
.ke-extra-group + .ke-extra-group { margin-top: 26px; }
.ke-extra-group-title { display: flex; align-items: center; gap: 9px; margin: 0 0 12px; font-size: 15px; font-weight: 700; color: #fff; }
.ke-extra-count { font-size: 12px; font-weight: 600; color: var(--ke-muted, #9d92b3); background: rgba(255,255,255,.08); border-radius: 999px; padding: 1px 8px; }
.ke-extra-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--ke-gap); }
/* Contenuti Extra: riusano la card delle Parti (.ke-part-card). Qui solo il reset
   del <button> e lo stato bloccato (lucchetto centrato, sempre visibile). */
.ke-extra-card { -webkit-appearance: none; appearance: none; padding: 0; font: inherit; text-align: left; color: inherit; cursor: pointer; }
.ke-extra-card.is-locked { cursor: default; }
.ke-extra-card.is-locked .ke-part-play { opacity: 1; background: rgba(11,7,19,.62); color: rgba(255,255,255,.85); }
.ke-extra-card.is-locked .ke-part-play svg { width: 26px; height: 26px; }
.ke-extra-locked-note { margin: 16px 0 0; font-size: 13px; color: var(--ke-muted, #9d92b3); }

/* Extra lightbox reuses the film-player modal look (built in theme.js). */
.ke-extra-player .ke-film-player-inner { background: #000; }

/* Paywall dentro il player: card centrata */
.ke-player--locked { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; text-align: center;
	padding: clamp(20px, 4vw, 48px); box-sizing: border-box; background: radial-gradient(120% 90% at 50% 42%, #241b2e 0%, #0b0713 72%); }
.ke-player--locked .ke-locked { max-width: 480px; display: flex; flex-direction: column; align-items: center; }
.ke-locked-ico { font-size: 2.4rem; line-height: 1; margin-bottom: 16px; }
.ke-locked-text { margin: 0; font-size: clamp(1.05rem, 2.4vw, 1.3rem); font-weight: 600; color: var(--ke-text); }
.ke-locked-cta { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; margin-top: 18px; }

/* Pulsanti auth (Accedi/Registrati) + CTA paywall: stessa scala del play */
.ke-film-actions .ke-btn--play, .ke-film-actions .ke-btn--ghost,
.ke-locked-cta .ke-btn--primary, .ke-locked-cta .ke-btn--ghost {
	display: inline-flex; align-items: center; justify-content: center; border-radius: 6px;
	padding: .8rem 1.5rem; font-weight: 700; font-size: 1.02rem; text-decoration: none; }
.ke-film-actions .ke-btn--ghost, .ke-locked-cta .ke-btn--ghost {
	background: var(--ke-surface); color: var(--ke-text); border: 1.5px solid rgba(255,255,255,.16); }
.ke-film-actions .ke-btn--ghost:hover, .ke-locked-cta .ke-btn--ghost:hover { border-color: var(--ke-accent); color: var(--ke-text); }
.ke-locked-cta .ke-btn--primary { background: var(--ke-accent); color: #fff; border: 0; }
.ke-locked-cta .ke-btn--primary:hover { background: var(--ke-accent-2); color: #fff; }

/* Blocco pay-per-view nel paywall: staccato dalla CTA abbonamento, selettore gateway + pulsante impilati con respiro */
.ke-ppv-cta { margin-top: 26px; width: 100%; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.ke-ppv-lead { margin: 0; color: var(--ke-muted); font-size: .98rem; }
.ke-ppv-form { display: flex; flex-direction: column; align-items: center; gap: 14px; margin: 0; }
.ke-gw-select {
	appearance: none; -webkit-appearance: none; -moz-appearance: none;
	background-color: var(--ke-surface); color: var(--ke-text);
	border: 1.5px solid rgba(255,255,255,.16); border-radius: 6px;
	padding: .7rem 2.6rem .7rem 1.1rem; font: inherit; font-weight: 600; font-size: .98rem; line-height: 1.3; cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23b9b7bd' stroke-width='1.6' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 1rem center;
}
.ke-gw-select:hover { border-color: rgba(255,255,255,.32); }
.ke-gw-select:focus { outline: none; border-color: var(--ke-accent); }
.ke-gw-select option { background: #1a1420; color: var(--ke-text); }
.ke-ppv-cta .ke-btn--primary {
	display: inline-flex; align-items: center; justify-content: center; border-radius: 6px;
	padding: .8rem 1.6rem; font-weight: 700; font-size: 1.02rem; cursor: pointer;
	background: var(--ke-accent); color: #fff; border: 0; }
.ke-ppv-cta .ke-btn--primary:hover { background: var(--ke-accent-2); color: #fff; }
.ke-film-below { padding-top: 20px; padding-bottom: 46px; }
.ke-film-studio { color: #b9b7bd; margin: 0 0 8px; }
.ke-film-studio a { color: var(--ke-accent); }

@media (max-width: 782px) {
	.ke-film-hero { height: 100svh; }
	.ke-film-hero-inner { max-width: 100%; }
	.ke-film-title { font-size: clamp(1.8rem, 8vw, 2.6rem); }
	.ke-film-hero-scrim, .ke-film--trailer .ke-film-hero-scrim { background: linear-gradient(0deg, var(--ke-bg) 4%, rgba(11,7,19,.6) 30%, rgba(11,7,19,0) 66%); }
}

/* Recensioni (side panel + voto a baci) ---------------------------------- */
.ke-reviews { margin: 34px 0 8px; }
.ke-reviews-head { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 18px; }
.ke-reviews-head .ke-section-title { margin: 0; }
.ke-reviews-summary { display: inline-flex; align-items: center; gap: 8px; }
.ke-reviews-summary .ke-lip { font-size: 1rem; }
.ke-reviews-avg { font-weight: 700; color: #fff; }
.ke-reviews-count { color: var(--ke-muted); font-size: .9rem; }
.ke-reviews-head .ke-reviews-open { margin-left: auto; }

.ke-reviews-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 2147482500; opacity: 0; transition: opacity .3s ease; }
.ke-reviews-backdrop.is-open { opacity: 1; }
.ke-reviews-panel { position: fixed; top: 0; right: 0; height: 100vh; height: 100dvh; width: min(460px, 94vw);
	background: var(--ke-surface, #191420); border-left: 1px solid var(--ke-border, #332a42); z-index: 2147482501;
	display: flex; flex-direction: column; transform: translateX(100%); transition: transform .3s cubic-bezier(.4,0,.2,1);
	box-shadow: -20px 0 60px rgba(0,0,0,.5); }
.ke-reviews-panel.is-open { transform: translateX(0); }
.ke-reviews-panel-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px;
	border-bottom: 1px solid var(--ke-border, #332a42); flex: 0 0 auto; }
.ke-reviews-panel-head h3 { margin: 0; font-size: 1.1rem; color: #fff; }
.ke-reviews-close { background: none; border: 0; color: var(--ke-muted); font-size: 28px; line-height: 1; cursor: pointer; padding: 0 4px; }
.ke-reviews-close:hover { color: #fff; }
.ke-reviews-panel-body { flex: 1 1 auto; overflow-y: auto; padding: 18px 20px; }
body.ke-panel-open { overflow: hidden; }

.ke-rev-form { padding-bottom: 18px; margin-bottom: 18px; border-bottom: 1px solid var(--ke-border, #332a42); }
.ke-rev-form-title { margin: 0 0 12px; font-size: 1rem; color: #fff; }
.ke-rev-label { display: block; font-size: .82rem; color: var(--ke-muted); margin-bottom: 6px; }
.ke-rev-text { width: 100%; box-sizing: border-box; margin-top: 12px; background: var(--ke-bg); color: var(--ke-text);
	border: 1px solid var(--ke-border); border-radius: 10px; padding: 12px; font: inherit; resize: vertical; min-height: 90px; }
.ke-rev-submit { margin-top: 12px; }
.ke-rev-msg { margin: 10px 0 0; font-size: .85rem; color: var(--ke-muted); min-height: 1.2em; }
.ke-rev-msg.is-err { color: #ff5964; }

.ke-rev-lips { display: inline-flex; gap: 4px; align-items: center; }
.ke-rev-lips .ke-rev-lip { font-size: 1rem; line-height: 1; filter: grayscale(1); opacity: .38; transition: opacity .12s, filter .12s, transform .12s; }
.ke-rev-lips .ke-rev-lip.is-on { filter: none; opacity: 1; }
.ke-rev-lips.is-input { gap: 6px; }
.ke-rev-lips.is-input .ke-rev-lip { font-size: 1.9rem; background: none; border: 0; padding: 2px; cursor: pointer; }
.ke-rev-lips.is-input .ke-rev-lip:hover { transform: scale(1.15); }

.ke-rev-list { display: flex; flex-direction: column; gap: 16px; }
.ke-rev-item { display: flex; gap: 12px; }
.ke-rev-item.is-mine { background: rgba(255,255,255,.03); border: 1px solid var(--ke-border); border-radius: 12px; padding: 12px; }
.ke-rev-avatar { width: 40px; height: 40px; border-radius: 50%; flex: 0 0 40px; object-fit: cover; background: var(--ke-bg); }
.ke-rev-main { flex: 1 1 auto; min-width: 0; }
.ke-rev-item-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.ke-rev-author { font-weight: 600; color: #fff; font-size: .92rem; }
.ke-rev-date { font-size: .75rem; color: var(--ke-muted); }
.ke-rev-body { margin: 6px 0 0; color: var(--ke-text); font-size: .9rem; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
.ke-rev-pending { display: inline-block; margin-top: 6px; font-size: .72rem; color: var(--ke-muted); background: rgba(255,255,255,.06); padding: 2px 8px; border-radius: 999px; }
.ke-rev-empty { color: var(--ke-muted); font-size: .9rem; }
.ke-rev-login { text-align: center; padding: 10px 0 4px; }
.ke-rev-login p { color: var(--ke-muted); margin: 0 0 12px; }
.ke-reviews-loading { color: var(--ke-muted); }

/* ---------------------------------------------------------------------------
   Single VIDEO (ke_video) — stili condivisi della testata info (eyebrow, titolo,
   dati, azioni, descrizione, studio); il layout è nelle classi ke-vo2- e ke-vo4-.
--------------------------------------------------------------------------- */
.ke-veyebrow { display: flex; flex-wrap: wrap; gap: 8px 14px; margin-bottom: 10px; }
.ke-vcat { font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--ke-accent-2); }
.ke-vcat:hover { color: #fff; }
.ke-vtitle { font-size: clamp(1.8rem, 3.6vw, 2.9rem); line-height: 1.06; margin: 0 0 14px; color: #fff; }
.ke-vfacts { list-style: none; display: flex; align-items: center; flex-wrap: wrap; gap: 8px 18px; margin: 0 0 20px; padding: 0; color: var(--ke-muted); font-size: .95rem; }
.ke-vfacts > li { display: inline-flex; align-items: center; gap: 6px; }
.ke-vfact-dur .ke-ico { width: 17px; height: 17px; }
.ke-vfacts .ke-lip { font-size: 1.05rem; }
.ke-vactions { margin: 0 0 26px; }
.ke-vdesc { color: var(--ke-text); max-width: 760px; line-height: 1.65; margin: 0 0 22px; }
.ke-vdesc p { margin: 0 0 1em; }
.ke-vdesc p:last-child { margin-bottom: 0; }
.ke-vstudio { color: var(--ke-muted); margin: 0 0 24px; }
.ke-vstudio a { color: var(--ke-text); }
.ke-vstudio a:hover { color: var(--ke-accent-2); }

@media (max-width: 680px) {
	.ke-vtitle { font-size: clamp(1.5rem, 7vw, 2rem); }
}

/* ---------------------------------------------------------------------------
   Single VIDEO — OPZIONE 2: "theater + prossimi" (player+info a sinistra, lista
   Prossimi sticky a destra). Recensioni a baci sotto, full width.
--------------------------------------------------------------------------- */
.ke-vo2 { padding-top: clamp(16px, 3vh, 28px); }
.ke-vo2-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 30px; align-items: start; max-width: 1560px; margin: 0 auto; }
.ke-vo2-player { border-radius: 14px; overflow: hidden; background: #000; box-shadow: 0 24px 56px -26px rgba(0,0,0,.85), 0 0 0 1px rgba(255,255,255,.06); }
.ke-vo2-player-static { aspect-ratio: 16 / 9; background-position: center; background-size: cover; }
.ke-vo2-head { padding-top: 20px; }
.ke-vo2-head .ke-vtitle { font-size: clamp(1.5rem, 2.4vw, 2.1rem); }
.ke-vo2-metarow { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; margin-top: 4px; }
.ke-vo2-metarow .ke-vstudio { margin: 0; }
.ke-vo2-tags { gap: 8px; }

.ke-vo2-side { position: sticky; top: 92px; }
.ke-vo2-side-title { font-size: 1rem; margin: 0 0 14px; color: #fff; }
.ke-vo2-uplist { display: flex; flex-direction: column; gap: 8px; max-height: calc(100vh - 130px); overflow-y: auto; padding-right: 4px; }
.ke-vo2-uplist::-webkit-scrollbar { width: 8px; }
.ke-vo2-uplist::-webkit-scrollbar-thumb { background: rgba(255,255,255,.12); border-radius: 8px; }
.ke-vo2-up { display: flex; gap: 12px; align-items: center; padding: 6px; border-radius: 10px; transition: background .15s; }
.ke-vo2-up:hover { background: var(--ke-surface); }
.ke-vo2-up-thumb { position: relative; flex: 0 0 84px; aspect-ratio: 2 / 3; border-radius: 7px; background: var(--ke-surface-2) center/cover; overflow: hidden; display: grid; place-items: center; }
.ke-vo2-up-thumb .ke-play-ico { border-color: transparent transparent transparent #fff; filter: drop-shadow(0 1px 3px rgba(0,0,0,.6)); opacity: 0; transition: opacity .15s; }
.ke-vo2-up:hover .ke-play-ico { opacity: 1; }
.ke-vo2-up-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ke-vo2-up-title { color: var(--ke-text); font-weight: 600; font-size: .9rem; line-height: 1.25; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ke-vo2-up:hover .ke-vo2-up-title { color: #fff; }
.ke-vo2-up-meta { color: var(--ke-muted); font-size: .78rem; }
.ke-vo2-below { max-width: 1560px; margin: 8px auto 0; }

@media (max-width: 1000px) {
	.ke-vo2-grid { grid-template-columns: 1fr; }
	.ke-vo2-side { position: static; }
	.ke-vo2-uplist { max-height: none; }
}

/* ---------------------------------------------------------------------------
   Single VIDEO — struttura theater (player + Prossimi) su SFONDO
   colorato sfocato ricavato dal poster (come opt1, attenuato come opt3), a TUTTA
   LARGHEZZA. Riusa le classi .ke-vo2-* per il contenuto.
--------------------------------------------------------------------------- */
.ke-vo4 { position: relative; overflow: hidden; margin-top: calc(-1 * var(--ke-hh, 78px)); padding-top: 0; }
.ke-vo4-amb { position: absolute; top: 0; left: 0; right: 0; height: 720px; z-index: 0; background-position: center top; background-size: cover; filter: blur(80px) saturate(1.35); opacity: .42; transform: scale(1.2); }
.ke-vo4-scrim { position: absolute; top: 0; left: 0; right: 0; height: 780px; z-index: 1; pointer-events: none;
	background:
		radial-gradient(120% 80% at 50% -10%, transparent 40%, rgba(11,7,19,.5) 100%),
		linear-gradient(180deg, rgba(11,7,19,.55) 0%, rgba(11,7,19,.1) 24%, var(--ke-bg) 96%); }
/* Full-width: annulla il cap di larghezza della griglia opt2; il padding in alto
   serve a scavalcare l'header trasparente sotto cui passa l'ambient. */
.ke-vo4-grid { position: relative; z-index: 2; max-width: none; margin: 0; grid-template-columns: minmax(0, 1fr) 400px; padding-top: calc(var(--ke-hh, 78px) + clamp(20px, 4vh, 44px)); }
/* La colonna principale (player + info) resta GRANDE (riempie la colonna), ma non
   supera mai l'altezza della viewport: l'unico limite di larghezza è la larghezza
   16:9 derivata dall'altezza utile. Quindi il player si accorcia SOLO quel filo che
   serve a non sforare in verticale; se avanza spazio a destra lo riempie l'ambient,
   e player+info restano allineati. */
.ke-vo4 .ke-vo2-main { max-width: min(100%, calc((100dvh - 140px) * 16 / 9)); }
body.admin-bar .ke-vo4 .ke-vo2-main { max-width: min(100%, calc((100dvh - 172px) * 16 / 9)); }
/* Colonna categoria: allineata in alto al player (non sticky), alta quanto il
   player. Lo scroller interno (.ke-vo4-uplist) prende h = player − titolo, misura
   impostata da theme.js (keVo4Sidebar); qui solo i fallback. */
.ke-vo4 .ke-vo2-side { position: static; align-self: start; display: flex; flex-direction: column; min-height: 0; }
/* Testata colonna: titolo categoria + switch "Riproduci in sequenza" a fianco. */
.ke-vo4-side-head { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 8px 14px; flex-wrap: wrap; margin-bottom: 14px; }
.ke-vo4-side-title { flex: 0 1 auto; margin: 0; min-width: 0; }
.ke-vo4-seq { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 8px; cursor: pointer; user-select: none; font-size: .78rem; color: var(--ke-muted); }
.ke-vo4-seq:hover { color: var(--ke-text); }
.ke-vo4-seq input { position: absolute; opacity: 0; width: 0; height: 0; }
.ke-vo4-seq-sw { position: relative; flex: 0 0 auto; width: 34px; height: 20px; border-radius: 999px; background: var(--ke-surface-2); border: 1px solid var(--ke-border); transition: background .18s ease; }
.ke-vo4-seq-sw::after { content: ""; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; transition: transform .18s ease; }
.ke-vo4-seq input:checked + .ke-vo4-seq-sw { background: var(--ke-accent); border-color: transparent; }
.ke-vo4-seq input:checked + .ke-vo4-seq-sw::after { transform: translateX(14px); }
.ke-vo4-seq input:focus-visible + .ke-vo4-seq-sw { outline: 2px solid var(--ke-accent-2); outline-offset: 2px; }
.ke-vo4-uplist { flex: 1 1 auto; max-height: none; gap: 12px; }
.ke-vo4-uplist .ke-part-card { width: 100%; flex: 0 0 auto; }
/* Video corrente: evidenziato ("in riproduzione"), non cliccabile. */
.ke-vo4-up.is-current { border-color: var(--ke-accent); box-shadow: 0 0 0 1px var(--ke-accent), 0 12px 30px rgba(0,0,0,.5); cursor: default; }
.ke-vo4-up.is-current .ke-part-title { color: #fff; }
.ke-vo4-nowplay { opacity: 1; background: linear-gradient(90deg, rgba(229,9,20,.28), rgba(11,7,19,.15)); }
.ke-vo4-eq { display: inline-flex; align-items: flex-end; gap: 3px; height: 24px; }
.ke-vo4-eq i { width: 4px; background: var(--ke-accent-2); border-radius: 2px; transform-origin: bottom; animation: ke-eq 1s ease-in-out infinite; }
.ke-vo4-eq i:nth-child(1) { height: 100%; animation-delay: 0s; }
.ke-vo4-eq i:nth-child(2) { height: 100%; animation-delay: .18s; }
.ke-vo4-eq i:nth-child(3) { height: 100%; animation-delay: .36s; }
@keyframes ke-eq { 0%, 100% { transform: scaleY(.35); } 50% { transform: scaleY(1); } }
@media (prefers-reduced-motion: reduce) { .ke-vo4-eq i { animation: none; transform: scaleY(.7); } }
.ke-vo4-below { position: relative; z-index: 2; max-width: none; margin: 8px 0 0; }

/* In fondo: rail delle altre categorie video. Card 16:9 (immagine di copertina
   intera, non tagliata in verticale) con titolo + conteggio sovrimpressi. */
.ke-vo4-cats { margin-top: 30px; padding-bottom: 40px; }
.ke-vo4-cats .ke-section-title { margin-bottom: 16px; }
.ke-catcard { position: relative; display: block; aspect-ratio: 16 / 9; border-radius: var(--ke-radius); overflow: hidden; background: var(--ke-surface-2); border: 1px solid var(--ke-border); box-shadow: 0 2px 10px rgba(0,0,0,.35); transition: transform .2s ease, box-shadow .2s ease; }
.ke-catcard:hover { transform: translateY(-3px); box-shadow: 0 14px 34px rgba(0,0,0,.55); }
.ke-catcard-img { position: absolute; inset: 0; background: var(--ke-surface) center/cover no-repeat; }
.ke-catcard-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 32px 16px 13px; display: flex; flex-direction: column; gap: 2px; background: linear-gradient(transparent, rgba(11,7,19,.92)); }
.ke-catcard-title { font-size: 1.1rem; font-weight: 800; color: #fff; line-height: 1.15; overflow-wrap: anywhere; }
.ke-catcard:hover .ke-catcard-title { color: var(--ke-accent-2); }
.ke-catcard-count { font-size: .8rem; color: rgba(255,255,255,.75); }
.ke-catcard-play { position: absolute; inset: 0; z-index: 1; display: grid; place-items: center; opacity: 0; background: rgba(11,7,19,.42); transition: opacity .2s ease; }
.ke-catcard:hover .ke-catcard-play { opacity: 1; }
.ke-catcard-play .ke-play-ico { width: 0; height: 0; border-style: solid; border-width: 12px 0 12px 20px; border-color: transparent transparent transparent #fff; filter: drop-shadow(0 2px 6px rgba(0,0,0,.5)); }

/* ============================================================================
   Persone — archivio (rubrica cast/crew) + scheda + pagina 404
   ============================================================================ */

/* Eyebrow / occhiello (breadcrumb leggero sopra i titoli). */
.ke-eyebrow { font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--ke-muted); margin: 0 0 6px; }
.ke-eyebrow a { color: var(--ke-muted); }
.ke-eyebrow a:hover { color: var(--ke-accent); }

/* --- Archivio Persone -------------------------------------------------------- */
.ke-people-count { color: var(--ke-muted); font-size: .9rem; margin: 8px 0 0; }
.ke-archive-toolbar--bare { margin: 6px 0 18px; }

/* Indice alfabetico. */
.ke-alpha { display: flex; flex-wrap: wrap; gap: 6px; margin: 18px 0 24px; padding-bottom: 4px; }
.ke-alpha-link { display: inline-grid; place-items: center; min-width: 34px; height: 34px; padding: 0 8px; border-radius: 8px; font-weight: 700; font-size: .9rem; color: var(--ke-muted); background: var(--ke-surface); border: 1px solid var(--ke-border); transition: background .15s, color .15s, transform .1s; }
.ke-alpha-link:hover { color: var(--ke-text); background: var(--ke-surface-2); }
.ke-alpha-link.is-active { background: var(--ke-accent); border-color: transparent; color: #fff; }
.ke-alpha-link.is-empty { opacity: .32; pointer-events: none; }
@media (max-width: 640px) { .ke-alpha { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; } .ke-alpha-link { flex: 0 0 auto; } }

/* Griglia persone: ritratti 340×400, più densa dei poster contenuto. */
.ke-grid--people { grid-template-columns: repeat(2, 1fr); }
@media (min-width: 560px)  { .ke-grid--people { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 900px)  { .ke-grid--people { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 1200px) { .ke-grid--people { grid-template-columns: repeat(5, 1fr); } }
@media (min-width: 1500px) { .ke-grid--people { grid-template-columns: repeat(6, 1fr); } }

/* Card persona. */
.ke-pcard { position: relative; border-radius: var(--ke-radius); overflow: hidden; background: var(--ke-surface); aspect-ratio: 340 / 400; box-shadow: 0 2px 10px rgba(0,0,0,.35); transition: transform .2s ease, box-shadow .2s ease; }
.ke-pcard:hover { transform: translateY(-4px); box-shadow: 0 18px 44px rgba(0,0,0,.6); z-index: 2; }
.ke-pcard-link { position: absolute; inset: 0; z-index: 3; }
.ke-pcard-photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top center; background: var(--ke-surface-2); transition: transform .45s ease; }
.ke-pcard:hover .ke-pcard-photo { transform: scale(1.05); }
.ke-pcard-photo--empty { display: block; background: var(--ke-surface-2); }
.ke-pcard-role { position: absolute; top: 8px; left: 8px; z-index: 2; background: rgba(11,7,19,.66); backdrop-filter: blur(4px); color: #fff; font-size: .66rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; }
.ke-pcard-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 30px 12px 12px; display: flex; flex-direction: column; gap: 2px; background: linear-gradient(transparent, rgba(11,7,19,.55) 40%, rgba(11,7,19,.94)); }
.ke-pcard-name { font-size: .95rem; font-weight: 700; line-height: 1.2; color: #fff; }
.ke-pcard-sub, .ke-pcard-count { font-size: .74rem; color: #cfcfda; max-height: 0; opacity: 0; overflow: hidden; transition: max-height .28s ease, opacity .28s ease, margin .28s ease; }
.ke-pcard-sub { font-style: italic; }
.ke-pcard-count { color: var(--ke-accent-2); font-weight: 600; }
@media (hover: hover) { .ke-pcard:hover .ke-pcard-sub, .ke-pcard:hover .ke-pcard-count { max-height: 2.4em; opacity: 1; margin-top: 2px; } }
@media (hover: none) { .ke-pcard-sub, .ke-pcard-count { max-height: 2.4em; opacity: 1; } }

/* --- Scheda Persona (single) ------------------------------------------------- */
.ke-person-top { position: relative; overflow: hidden; margin-bottom: 8px; }
.ke-person-ambient { position: absolute; inset: -10% -10% 0; background-size: cover; background-position: top center; filter: blur(48px) saturate(1.25) brightness(.5); transform: scale(1.2); z-index: 0; }
.ke-person-top::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(11,7,19,.55), rgba(11,7,19,.82) 65%, var(--ke-bg)); }
.ke-person-hero { position: relative; z-index: 2; display: grid; grid-template-columns: 1fr; gap: 22px; padding-top: 30px; padding-bottom: 34px; }
@media (min-width: 760px) { .ke-person-hero { grid-template-columns: 300px minmax(0, 1fr); gap: 34px; align-items: start; } }
.ke-person-portrait { width: 220px; max-width: 60vw; aspect-ratio: 340 / 400; border-radius: 14px; overflow: hidden; border: 1px solid var(--ke-border); box-shadow: 0 20px 50px rgba(0,0,0,.6); background: var(--ke-surface-2); }
@media (min-width: 760px) { .ke-person-portrait { width: 300px; max-width: none; } }
.ke-person-portrait img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top center; }
.ke-person-portrait--empty { display: block; width: 100%; height: 100%; }
.ke-person-info .ke-single-title { margin: 0 0 4px; }
.ke-person-aka { color: var(--ke-muted); font-size: .95rem; margin: 0 0 12px; }
.ke-person-aka span { text-transform: uppercase; font-size: .66rem; letter-spacing: .1em; font-weight: 700; color: var(--ke-accent-2); margin-right: 6px; }
.ke-person-tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 18px; }
.ke-ptag { font-size: .8rem; font-weight: 600; padding: 5px 13px; border-radius: 999px; background: var(--ke-accent); color: #fff; }
.ke-ptag:hover { background: var(--ke-accent-2); }
.ke-ptag--crew { background: var(--ke-surface-2); color: var(--ke-text); border: 1px solid var(--ke-border); }
.ke-ptag--crew:hover { border-color: var(--ke-accent); color: #fff; }
.ke-person-stats { list-style: none; margin: 0 0 18px; padding: 0; display: grid; grid-template-columns: 1fr; gap: 1px; background: var(--ke-border); border: 1px solid var(--ke-border); border-radius: 12px; overflow: hidden; max-width: 560px; }
@media (min-width: 520px) { .ke-person-stats { grid-template-columns: repeat(2, 1fr); } }
.ke-person-stats li { display: flex; flex-direction: column; gap: 2px; padding: 10px 14px; background: rgba(23,18,30,.72); }
.ke-ps-label { font-size: .66rem; text-transform: uppercase; letter-spacing: .1em; font-weight: 700; color: var(--ke-muted); }
.ke-ps-value { font-size: .92rem; color: var(--ke-text); }
.ke-person-subtitle { font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ke-muted); margin: 0 0 6px; }
.ke-person-awards { margin: 0 0 18px; }
.ke-person-awards ul { margin: 0; padding-left: 18px; color: var(--ke-text); font-size: .9rem; }
.ke-person-awards li { margin: 2px 0; }
.ke-person-links { display: flex; flex-wrap: wrap; gap: 10px; }
.ke-person-body { padding-top: 6px; }
/* Bio in una sola colonna, centrata nella pagina (larghezza leggibile). */
.ke-person-bio { max-width: 820px; margin: 0 auto 36px; color: #d7d7e0; line-height: 1.75; }
.ke-person-bio p { margin: 0 0 1em; }

/* Premi e riconoscimenti — card evidenziate con trofeo dorato. */
.ke-awards-block { margin: 0 0 42px; }
.ke-awards { list-style: none; margin: 18px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 14px; }
.ke-award { display: flex; align-items: flex-start; gap: 15px; padding: 16px 18px; background: linear-gradient(135deg, rgba(245,196,81,.09), var(--ke-surface) 60%); border: 1px solid var(--ke-border); border-left: 3px solid #f5c451; border-radius: 13px; box-shadow: 0 2px 12px rgba(0,0,0,.28); }
.ke-award-ico { flex: 0 0 auto; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 50%; background: rgba(245,196,81,.15); color: #f5c451; }
.ke-award-ico svg { width: 23px; height: 23px; }
.ke-award-txt { color: var(--ke-text); font-size: .95rem; line-height: 1.55; align-self: center; }

/* Filmografia (scheda persona): tutte le card in una griglia che va a capo,
   NON il rail orizzontale della 404. Le card sono le stesse .ke-part-card--sug. */
.ke-filmo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(440px, 1fr)); gap: var(--ke-gap); margin: 16px 0 40px; }
@media (max-width: 640px) { .ke-filmo-grid { grid-template-columns: 1fr; } }
/* Filmografia raggruppata per ruolo: "Come interprete" e i ruoli di produzione. */
.ke-filmo-role { position: relative; padding-left: 16px; margin-bottom: 4px; }
.ke-filmo-role::before { content: ""; position: absolute; left: 0; top: .18em; bottom: .18em; width: 4px; border-radius: 3px; background: var(--ke-accent, #e0245e); }
.ke-filmo-subtitle { font-size: 13px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #a9a9ba; margin: 26px 0 0; }
.ke-filmo-subtitle + .ke-filmo-grid { margin-top: 12px; }

/* --- Pagina 404 -------------------------------------------------------------- */
.ke-404 { padding: 0; }
/* Blocco del ciak a tutta viewport, su backdrop sfocato "ambient" (full-bleed).
   Lo stage è centrato e arioso; "Già che sei qui…" resta sotto la piega. */
.ke-404-top { position: relative; overflow: hidden; }
.ke-404-bg { position: absolute; inset: 0; background-size: cover; background-position: center; filter: blur(64px) saturate(1.45) brightness(.6); transform: scale(1.14); z-index: 0; }
/* Vignette per la leggibilità + sfumatura in basso: il fondo del blocco arriva
   pieno a --ke-bg per un passaggio morbido verso "Già che sei qui…" in scrolling. */
.ke-404-top::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(to bottom, transparent 52%, var(--ke-bg) 100%), radial-gradient(120% 82% at 50% 34%, rgba(11,7,19,.5), rgba(11,7,19,.86) 78%, var(--ke-bg)); }
.ke-404-stage { position: relative; z-index: 2; min-height: calc(100vh - 78px); box-sizing: border-box; max-width: 780px; margin: 0 auto; padding: 48px clamp(16px, 4vw, 56px); display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; gap: 30px; }
body.admin-bar .ke-404-stage { min-height: calc(100vh - 78px - 32px); }
@media (max-width: 782px) { body.admin-bar .ke-404-stage { min-height: calc(100vh - 78px - 46px); } }
.ke-404-clap { display: inline-block; filter: drop-shadow(0 22px 60px rgba(229,9,20,.5)); animation: ke-404-float 4.5s ease-in-out infinite; }
.ke-404-clap svg { display: block; width: clamp(260px, 40vw, 540px); height: auto; }
@keyframes ke-404-float { 0%,100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-10px) rotate(-1.5deg); } }
@media (prefers-reduced-motion: reduce) { .ke-404-clap { animation: none; } }
.ke-404-code { font-size: clamp(30px, 5.5vw, 58px); font-weight: 800; margin: 0; letter-spacing: -.5px; line-height: 1.1; }
.ke-404-lead { color: var(--ke-muted); font-size: 1.08rem; line-height: 1.65; margin: 0; max-width: 540px; }
.ke-404-search { display: flex; align-items: center; gap: 6px; background: var(--ke-surface); border: 1px solid var(--ke-border); border-radius: 999px; padding: 6px 6px 6px 20px; width: 100%; max-width: 460px; margin: 0; }
.ke-404-search input { flex: 1 1 auto; background: transparent; border: 0; color: var(--ke-text); outline: none; font-size: 1rem; min-width: 0; }
.ke-404-search button { flex: 0 0 auto; background: var(--ke-accent); border: 0; color: #fff; border-radius: 999px; padding: 11px 22px; font-weight: 700; cursor: pointer; }
.ke-404-search button:hover { background: var(--ke-accent-2); }
.ke-404-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 0; }
.ke-404-reel { margin-top: 6px; padding-bottom: 72px; }
/* Righe molto ariose fra Film / Episodi / Video / Persone. */
.ke-404-reel .ke-extra-group { margin-top: 54px; }

/* ============================================================================
   Archivio Studios — card "brand": logo tondo + nome + n° contenuti
   ============================================================================ */
/* La colonna filtri degli studios ha poche voci (Paese + Generi): si adatta al
   contenuto invece di riempire l'intera viewport come negli archivi ricchi di
   filtri (dove i Tag popolari crescono a riempire lo spazio). */
@media (min-width: 992px) {
	.post-type-archive-ke_studio .ke-filters { min-height: 0; }
	.post-type-archive-ke_studio .ke-filters .ke-filters-form { flex: 0 0 auto; }
}
/* Masonry (CSS columns): mattonelle di altezza variabile in base al logo, che è
   mostrato INTERO ad aspetto naturale (loghi trasparenti quadrati/orizzontali). */
.ke-studio-grid { column-width: 340px; column-gap: var(--ke-gap); margin: 22px 0 60px; }
.ke-studio-card { display: block; break-inside: avoid; margin: 0 0 var(--ke-gap); padding: 16px; background: var(--ke-surface); border: 1px solid var(--ke-border); border-radius: 14px; box-shadow: 0 2px 10px rgba(0,0,0,.35); transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.ke-studio-card:hover { transform: translateY(-4px); box-shadow: 0 16px 40px rgba(0,0,0,.55); border-color: var(--ke-accent); }
.ke-studio-logo { display: flex; align-items: center; justify-content: center; min-height: 120px; padding: 22px; background: var(--ke-surface-2); border: 1px solid var(--ke-border); border-radius: 10px; }
.ke-studio-logo img { display: block; width: 100%; height: auto; }
.ke-studio-logo--empty { font-size: 1.9rem; font-weight: 800; letter-spacing: 1px; line-height: 1; white-space: nowrap; color: var(--ke-muted); }
.ke-studio-body { display: flex; flex-direction: column; padding: 14px 2px 2px; }
.ke-studio-name { font-size: 1.05rem; font-weight: 700; color: var(--ke-text); line-height: 1.25; overflow-wrap: anywhere; }
.ke-studio-card:hover .ke-studio-name { color: var(--ke-accent-2); }
.ke-studio-excerpt { margin: 7px 0 0; font-size: .85rem; line-height: 1.5; color: #c9c9d4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ke-studio-count { align-self: flex-end; margin-top: 12px; font-size: .82rem; color: var(--ke-muted); }

/* ============================================================================
   Single Studio — pagina "brand": hero ambient (logo + dati + CTA abbonamento),
   pannello abbonamento, biografia, generi prodotti e catalogo a rail.
   ============================================================================ */
.ke-studio-top { position: relative; overflow: hidden; margin-bottom: 12px; }
.ke-studio-ambient { position: absolute; inset: -20% -12% 0; background-size: cover; background-position: center; background-repeat: no-repeat; filter: blur(58px) saturate(1.55) brightness(.6); transform: scale(1.6); z-index: 0; }
.ke-studio-top::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(11,7,19,.55), rgba(11,7,19,.86) 66%, var(--ke-bg)); }
.ke-studio-hero { position: relative; z-index: 2; display: grid; grid-template-columns: 1fr; gap: 24px; padding-top: 44px; padding-bottom: 44px; }
@media (min-width: 760px) { .ke-studio-hero { grid-template-columns: 280px minmax(0, 1fr); gap: 40px; align-items: center; } }

.ke-studio-hero-logo { display: flex; align-items: center; justify-content: center; min-height: 160px; padding: 30px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.14); border-radius: 18px; box-shadow: 0 18px 48px rgba(0,0,0,.55); }
.ke-studio-hero-logo img { display: block; max-width: 100%; max-height: 260px; height: auto; }
.ke-studio-hero-logo--empty { font-size: 2.6rem; font-weight: 800; letter-spacing: 2px; line-height: 1; white-space: nowrap; color: var(--ke-muted); }

.ke-studio-hero-info { min-width: 0; }
.ke-studio-badge { display: inline-block; margin-bottom: 14px; }
.ke-studio-hero-name { font-size: clamp(30px, 4.4vw, 56px); font-weight: 800; line-height: 1.06; margin: 0 0 14px; }
.ke-studio-hero-meta { display: flex; flex-wrap: wrap; gap: 6px 20px; color: #dcdce4; font-size: .95rem; margin-bottom: 16px; }
.ke-studio-hero-meta span { position: relative; }
.ke-studio-hero-meta span + span::before { content: "\00B7"; position: absolute; left: -12px; color: var(--ke-muted); }
.ke-studio-hero-tag { color: #cfcfda; max-width: 640px; line-height: 1.6; margin: 0; }

/* Pannello abbonamento — testo a sinistra, livelli AFFIANCATI a destra (in riga,
   vanno a capo se sono molti). Su mobile: testo sopra, piani sotto. */
.ke-studio-subscribe { margin: 6px 0 46px; padding: 28px; background: linear-gradient(135deg, rgba(229,9,20,.16), rgba(255,45,61,.04)); border: 1px solid rgba(229,9,20,.4); border-radius: 18px; }
.ke-studio-subscribe .ke-section-title { margin: 0 0 8px; }
.ke-studio-subscribe-copy { margin-bottom: 22px; }
.ke-studio-subscribe-copy p { color: #dcdce4; line-height: 1.6; margin: 0; max-width: 480px; }
.ke-studio-subscribe-plans .ke-studio-dash { padding: 0; margin: 0; background: none; border: 0; max-width: none; }
.ke-studio-subscribe-plans .ke-cards.ke-plans { margin: 0; display: flex; flex-wrap: wrap; gap: 16px; }
.ke-studio-subscribe-plans .ke-plan { flex: 0 0 auto; width: 232px; min-width: 0; margin: 0; }
@media (min-width: 880px) {
	.ke-studio-subscribe { display: flex; align-items: center; gap: 40px; }
	.ke-studio-subscribe-copy { flex: 1 1 260px; min-width: 0; margin-bottom: 0; }
	.ke-studio-subscribe-plans { flex: 0 1 auto; max-width: 64%; }
}

/* Sezioni */
.ke-studio-about { max-width: 820px; margin: 0 auto 44px; }
.ke-studio-about-body { color: #d6d6de; line-height: 1.7; }
.ke-studio-genres { margin-bottom: 44px; }
.ke-studio-genres .ke-chips { display: flex; flex-wrap: wrap; gap: 10px; }
.ke-studio-genres .ke-chip { cursor: pointer; transition: border-color .15s ease, color .15s ease, background .15s ease; }
.ke-studio-genres .ke-chip:hover { border-color: var(--ke-accent); color: #fff; }

/* ============================================================================
   Archivio Webcam — directory delle stanze (griglia di card con stato live).
   ============================================================================ */
.ke-camarch-gate { text-align: center; padding: 48px 20px; background: var(--ke-bg-2); border: 1px solid var(--ke-border); border-radius: 16px; margin: 20px 0; }
.ke-camarch-gate p { color: var(--ke-muted); margin: 0 0 16px; }
.ke-camarch-section { margin: 8px 0 34px; }
.ke-camarch-section .ke-section-title { display: flex; align-items: center; gap: 10px; }
.ke-camarch-count { font-size: .8rem; font-weight: 700; min-width: 24px; height: 22px; padding: 0 8px; border-radius: 999px; display: inline-grid; place-items: center; background: var(--ke-accent); color: #fff; }
.ke-camarch-section--offline .ke-camarch-count { background: rgba(255,255,255,.12); color: var(--ke-muted); }
.ke-camarch-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 18px; margin-top: 16px; }
.ke-camarch-card { display: block; border-radius: 14px; overflow: hidden; background: var(--ke-surface); border: 1px solid var(--ke-border); box-shadow: 0 2px 10px rgba(0,0,0,.3); transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.ke-camarch-card:hover { transform: translateY(-4px); box-shadow: 0 16px 38px rgba(0,0,0,.5); border-color: var(--ke-accent); }
.ke-camarch-card--offline { opacity: .6; }
.ke-camarch-card--offline:hover { opacity: 1; }
.ke-camarch-thumb { position: relative; aspect-ratio: 16 / 9; background: var(--ke-surface-2); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.ke-camarch-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ke-camarch-thumb--empty { font-size: 2rem; font-weight: 800; letter-spacing: 2px; color: var(--ke-muted); }
.ke-camarch-status { position: absolute; top: 10px; left: 10px; display: inline-flex; align-items: center; gap: 5px; padding: 3px 8px; border-radius: 999px; font-size: .6rem; font-weight: 800; text-transform: uppercase; letter-spacing: .3px; color: #fff; backdrop-filter: blur(2px); }
.ke-camarch-status--live { background: #1eb955; }
.ke-camarch-status--privato { background: var(--ke-accent); }
.ke-camarch-status--gruppo { background: #6741d9; }
.ke-camarch-status--offline { background: rgba(0,0,0,.6); color: #cfcfda; }
.ke-camarch-dot { width: 6px; height: 6px; border-radius: 50%; background: #fff; animation: ke-camarch-pulse 1.4s ease-in-out infinite; }
@keyframes ke-camarch-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .3; transform: scale(.7); } }
.ke-camarch-body { display: block; padding: 18px 20px 20px; }
.ke-camarch-flag { font-size: 1.05em; line-height: 1; margin-right: 2px; }
.ke-camarch-name { font-size: 1rem; font-weight: 700; color: var(--ke-text); line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ke-camarch-card:hover .ke-camarch-name { color: var(--ke-accent-2); }
.ke-camarch-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.ke-camarch-tag { font-size: .68rem; padding: 3px 8px; border-radius: 6px; background: rgba(255,255,255,.06); color: var(--ke-muted); border: 1px solid var(--ke-border); }
.ke-camarch-viewers { position: absolute; top: 10px; right: 10px; display: inline-flex; align-items: center; gap: 5px; padding: 4px 9px; border-radius: 999px; font-size: .7rem; font-weight: 700; color: #fff; background: rgba(0,0,0,.62); backdrop-filter: blur(2px); }
.ke-camarch-viewers svg { display: block; opacity: .9; }
.ke-camarch-note { color: var(--ke-muted); font-size: .9rem; margin: 4px 0 18px; }
.ke-camarch-note a { color: var(--ke-accent-2); text-decoration: underline; }
/* Segnale chat con traduzione automatica (dismissibile) */
.ke-camarch-transl { display: flex; align-items: center; gap: 10px; margin: 6px 0 20px; padding: 11px 16px; border-radius: 12px; background: linear-gradient(135deg, rgba(103,65,217,.16), rgba(181,23,158,.08)); border: 1px solid rgba(103,65,217,.4); color: #e6e2f2; font-size: .9rem; }
.ke-camarch-transl svg { flex: 0 0 auto; color: #b98cff; }
.ke-camarch-transl-txt { flex: 1 1 auto; }
.ke-camarch-transl-never { background: none; border: 0; padding: 0; margin-left: 6px; color: #c4a6ff; font: inherit; font-weight: 600; text-decoration: underline; cursor: pointer; }
.ke-camarch-transl-never:hover { color: #fff; }
.ke-camarch-transl-x { flex: 0 0 auto; background: none; border: 0; color: inherit; font-size: 1.5rem; line-height: 1; opacity: .55; cursor: pointer; padding: 0 2px; }
.ke-camarch-transl-x:hover { opacity: 1; }
/* Filtri (colonna laterale): chip per stato / paese / livello */
.ke-camarch-fgroup { display: flex; flex-wrap: wrap; gap: 8px; }
.ke-camarch-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--ke-border); background: var(--ke-surface); color: var(--ke-muted); font-size: .8125rem; font-weight: 600; cursor: pointer; text-align: left; transition: background .15s ease, color .15s ease, border-color .15s ease; }
.ke-camarch-chip:hover { color: var(--ke-text); border-color: var(--ke-muted); }
.ke-camarch-chip.is-active { background: var(--ke-accent); border-color: transparent; color: #fff; }
.ke-camarch-chip .ke-camarch-flag { margin: 0; }
/* Pochi filtri → la colonna si adatta al contenuto invece di riempire la viewport. */
@media (min-width: 992px) {
	.post-type-archive-ke_camroom .ke-filters { min-height: 0; }
}

/* Watermark: logo dello studio sovrimpresso SUL PLAYER durante la riproduzione.
   Classe dedicata (.ke-studio-wm) per non collidere con il box .ke-studio-logo della
   pagina studio. Il contenitore .ke-player-stage è già position:relative + overflow:hidden;
   la larghezza è data inline (max-width). Non compare sulle card d'archivio. */
.ke-studio-wm { position: absolute; z-index: 4; width: auto; height: auto; margin: 0; padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; pointer-events: none; user-select: none; filter: drop-shadow(0 2px 6px rgba(0,0,0,.6)); }
.ke-studio-wm--tl { top: 8px; left: 8px; }
.ke-studio-wm--tr { top: 8px; right: 8px; }
.ke-studio-wm--bl { bottom: 8px; left: 8px; }
.ke-studio-wm--br { bottom: 8px; right: 8px; }
.ke-studio-wm--player.ke-studio-wm--tl { top: 14px; left: 14px; }
.ke-studio-wm--player.ke-studio-wm--tr { top: 14px; right: 14px; }
.ke-studio-wm--player.ke-studio-wm--bl { bottom: 14px; left: 14px; }
.ke-studio-wm--player.ke-studio-wm--br { bottom: 14px; right: 14px; }

/* --- Campanella notifiche nell'header --- */
.ke-bell { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 10px; color: var(--ke-text, #f4f4f6); text-decoration: none; }
.ke-bell:hover { background: rgba(255,255,255,.08); }
.ke-bell-badge { position: absolute; top: 3px; right: 2px; min-width: 16px; height: 16px; padding: 0 4px; display: inline-flex; align-items: center; justify-content: center; background: var(--ke-accent, #e50914); color: #fff; font-size: 10px; font-weight: 700; line-height: 1; border-radius: 999px; box-shadow: 0 0 0 2px var(--ke-bg, #0b0713); }

/* --- Pulsante Account tondo con icona utente (header) --- */
.ke-user-btn { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 50%; background: var(--ke-surface-2, #241c33); color: var(--ke-text, #f4f4f6); text-decoration: none; border: 1px solid rgba(255,255,255,.10); transition: background .15s ease, border-color .15s ease, transform .12s ease; }
.ke-user-btn:hover { background: #2e2440; border-color: rgba(255,255,255,.22); transform: translateY(-1px); }

/* --- Tendina utente (icona Account) --- */
.ke-user-menu { position: relative; display: inline-flex; }
.ke-user-dd { display: none; position: absolute; top: 100%; right: 0; z-index: 60; min-width: 200px; margin-top: 8px; background: #1b1526; border: 1px solid #3a2f4a; border-radius: 10px; padding: 8px; box-shadow: 0 14px 34px rgba(0,0,0,.55); }
/* ponte invisibile sul gap, così spostando il mouse dall'icona alla tendina non si chiude */
.ke-user-dd::before { content: ""; position: absolute; top: -8px; left: 0; right: 0; height: 8px; }
.ke-user-menu:hover .ke-user-dd, .ke-user-menu:focus-within .ke-user-dd { display: block; }
.ke-user-dd ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.ke-user-dd a { display: block; padding: 9px 12px; border-radius: 7px; color: var(--ke-text, #e8e2f2); font-weight: 500; text-decoration: none; white-space: nowrap; }
.ke-user-dd a:hover { background: rgba(229, 9, 20, .14); color: #fff; }
.ke-user-dd-sep { margin-top: 6px; padding-top: 6px; border-top: 1px solid #2c2438; }

/* ---------------------------------------------------------------------------
   Articolo blog (single.php) — layout leggibile, centrato
--------------------------------------------------------------------------- */
.ke-article { max-width: none; margin: 0; }
.ke-article-head { margin-bottom: 22px; }
.ke-article-cats { margin-bottom: 10px; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.ke-article-cats a { color: var(--ke-accent-2, #ff5a5f); text-decoration: none; }
.ke-article-cats a:hover { text-decoration: underline; }
.ke-article-title { font-size: clamp(1.9rem, 4vw, 2.7rem); line-height: 1.15; margin: 0 0 14px; font-weight: 800; }
.ke-article-meta { display: flex; flex-wrap: wrap; gap: 8px 16px; color: var(--ke-muted); font-size: .9rem; }
.ke-article-hero { margin: 0 0 26px; border-radius: 14px; overflow: hidden; }
.ke-article-hero img { display: block; width: 100%; max-height: 460px; object-fit: cover; }
.ke-article-content { font-size: 1.06rem; line-height: 1.7; color: #d8d3de; }
.ke-article-content > *:first-child { margin-top: 0; }
.ke-article-content p { margin: 0 0 1.1em; }
.ke-article-content h2 { font-size: 1.5rem; margin: 1.6em 0 .5em; line-height: 1.25; color: #fff; }
.ke-article-content h3 { font-size: 1.25rem; margin: 1.4em 0 .4em; line-height: 1.3; color: #fff; }
.ke-article-content a { color: var(--ke-accent-2, #ff5a5f); }
.ke-article-content ul, .ke-article-content ol { margin: 0 0 1.1em; padding-left: 1.4em; }
.ke-article-content li { margin: 0 0 .4em; }
.ke-article-content img { max-width: 100%; height: auto; border-radius: 10px; margin: .6em 0; }
.ke-article-content blockquote { margin: 1.4em 0; padding: 6px 0 6px 18px; border-left: 3px solid var(--ke-accent, #e50914); color: #cfc8db; font-style: italic; }
.ke-article-content figure { margin: 1.2em 0; }
.ke-article-tags { margin-top: 30px; padding-top: 18px; border-top: 1px solid var(--ke-border); font-size: .85rem; color: var(--ke-muted); }
.ke-article-tags-h { font-weight: 700; }
.ke-article-tags a { color: var(--ke-text); text-decoration: none; margin-right: 4px; }
.ke-article-tags a:hover { color: var(--ke-accent-2, #ff5a5f); }
.ke-article-comments { max-width: none; margin: 40px 0 0; }

/* Web TV single (single-ke_live.php): il player si stira, il testo sotto è leggibile */
.ke-live-content { max-width: 1100px; margin: 0 auto; }
