{"id":23,"date":"2026-08-24T19:47:24","date_gmt":"2026-08-24T19:47:24","guid":{"rendered":"https:\/\/iptv-italia.it\/?page_id=23"},"modified":"2026-09-12T14:55:31","modified_gmt":"2026-09-12T14:55:31","slug":"guide-iptv","status":"publish","type":"page","link":"https:\/\/iptv-italia.it\/en\/guide-iptv\/","title":{"rendered":"Guide IPTV"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"23\" class=\"elementor elementor-23\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7efd2dc e-con-full e-flex e-con e-parent\" data-id=\"7efd2dc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-37291a7 elementor-widget elementor-widget-html\" data-id=\"37291a7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\r\n  IPTV Italia \u00b7 Guide IPTV \u00b7 Hero \u00e9ditorial \u00b7 v1\r\n  Elementor : conteneur pleine largeur, marges et padding \u00e0 0.\r\n  Importer hero-guide-iptv-italia.webp dans WordPress, puis remplacer src=\"\".\r\n  Ne pas modifier l'alt pour y accumuler des mots-cl\u00e9s.\r\n  Le bouton principal attend la future grille avec l'ID CSS : articoli-iptv.\r\n  Seul ce fragment est \u00e0 coller dans Elementor, pas le fichier d'aper\u00e7u.\r\n  Th\u00e8me : data-iptvit-theme prioritaire, puis data-theme, puis pr\u00e9f\u00e9rence syst\u00e8me.\r\n  Aucun JavaScript ni d\u00e9pendance externe pour le widget.\r\n-->\r\n<style>\r\n.iptvit-guide-hero,\r\n.iptvit-guide-hero * { box-sizing: border-box; }\r\n\r\n.iptvit-guide-hero {\r\n  --igh-bg: #edf3f0;\r\n  --igh-ink: #10251e;\r\n  --igh-copy: #344b43;\r\n  --igh-muted: #4f665d;\r\n  --igh-green: #1b7051;\r\n  --igh-middle: #526a60;\r\n  --igh-red: #a73243;\r\n  --igh-line: rgba(20, 56, 41, .18);\r\n  --igh-glass: rgba(250, 253, 251, .83);\r\n  --igh-glass-hover: #fff;\r\n  --igh-overlay: linear-gradient(90deg, #edf3f0 0%, rgba(237, 243, 240, .98) 30%, rgba(237, 243, 240, .9) 43%, rgba(237, 243, 240, .3) 65%, rgba(237, 243, 240, .02) 100%);\r\n  --igh-depth: linear-gradient(180deg, rgba(237, 243, 240, .14), transparent 55%, rgba(237, 243, 240, .94));\r\n  --igh-mobile: linear-gradient(90deg, rgba(237, 243, 240, .97), rgba(237, 243, 240, .83));\r\n  --igh-filter: saturate(.86) brightness(1.02);\r\n  background: var(--igh-bg);\r\n  color: var(--igh-copy);\r\n  color-scheme: light;\r\n  font-family: inherit;\r\n  isolation: isolate;\r\n  overflow: hidden;\r\n  position: relative;\r\n  width: 100%;\r\n}\r\n\r\n:root[data-iptvit-theme=\"dark\"] .iptvit-guide-hero,\r\n:root:not([data-iptvit-theme])[data-theme=\"dark\"] .iptvit-guide-hero {\r\n  --igh-bg: #07121a;\r\n  --igh-ink: #f5f6ee;\r\n  --igh-copy: #d5e0da;\r\n  --igh-muted: #b6c9be;\r\n  --igh-green: #80dcb2;\r\n  --igh-middle: #f5f6ee;\r\n  --igh-red: #f18c97;\r\n  --igh-line: rgba(207, 232, 218, .22);\r\n  --igh-glass: rgba(15, 33, 38, .83);\r\n  --igh-glass-hover: #193333;\r\n  --igh-overlay: linear-gradient(90deg, #07121a 0%, rgba(7, 18, 26, .98) 30%, rgba(7, 18, 26, .89) 43%, rgba(7, 18, 26, .3) 65%, rgba(7, 18, 26, .08) 100%);\r\n  --igh-depth: linear-gradient(180deg, rgba(7, 18, 26, .32), transparent 50%, rgba(7, 18, 26, .98));\r\n  --igh-mobile: linear-gradient(90deg, rgba(7, 18, 26, .97), rgba(7, 18, 26, .83));\r\n  --igh-filter: saturate(.72) brightness(.77);\r\n  color-scheme: dark;\r\n}\r\n\r\n@media (prefers-color-scheme: dark) {\r\n  :root:not([data-iptvit-theme]):not([data-theme]) .iptvit-guide-hero {\r\n    --igh-bg: #07121a;\r\n    --igh-ink: #f5f6ee;\r\n    --igh-copy: #d5e0da;\r\n    --igh-muted: #b6c9be;\r\n    --igh-green: #80dcb2;\r\n    --igh-middle: #f5f6ee;\r\n    --igh-red: #f18c97;\r\n    --igh-line: rgba(207, 232, 218, .22);\r\n    --igh-glass: rgba(15, 33, 38, .83);\r\n    --igh-glass-hover: #193333;\r\n    --igh-overlay: linear-gradient(90deg, #07121a 0%, rgba(7, 18, 26, .98) 30%, rgba(7, 18, 26, .89) 43%, rgba(7, 18, 26, .3) 65%, rgba(7, 18, 26, .08) 100%);\r\n    --igh-depth: linear-gradient(180deg, rgba(7, 18, 26, .32), transparent 50%, rgba(7, 18, 26, .98));\r\n    --igh-mobile: linear-gradient(90deg, rgba(7, 18, 26, .97), rgba(7, 18, 26, .83));\r\n    --igh-filter: saturate(.72) brightness(.77);\r\n    color-scheme: dark;\r\n  }\r\n}\r\n\r\n.iptvit-guide-hero::before {\r\n  background: linear-gradient(90deg, #16805d 0 33.33%, #f8f5ec 33.33% 66.66%, #c43e4b 66.66%);\r\n  content: \"\";\r\n  height: 3px;\r\n  inset: 0 0 auto;\r\n  position: absolute;\r\n  z-index: 3;\r\n}\r\n\r\n.iptvit-guide-hero__scene {\r\n  background: radial-gradient(ellipse at 82% 46%, rgba(102, 149, 110, .3), transparent 70%);\r\n  inset: 0;\r\n  margin: 0;\r\n  pointer-events: none;\r\n  position: absolute;\r\n  z-index: -2;\r\n}\r\n\r\n.iptvit-guide-hero__image {\r\n  display: block;\r\n  filter: var(--igh-filter);\r\n  height: 100%;\r\n  max-width: none;\r\n  object-fit: cover;\r\n  object-position: 68% 54%;\r\n  width: 100%;\r\n}\r\n\r\n.iptvit-guide-hero__image:not([src]),\r\n.iptvit-guide-hero__image[src=\"\"] { visibility: hidden; }\r\n\r\n.iptvit-guide-hero__scene::after {\r\n  background: var(--igh-overlay), var(--igh-depth);\r\n  content: \"\";\r\n  inset: 0;\r\n  position: absolute;\r\n}\r\n\r\n.iptvit-guide-hero__inner {\r\n  margin-inline: auto;\r\n  max-width: 82rem;\r\n  padding: 2rem clamp(1.2rem, 4vw, 2.5rem) 2.5rem;\r\n  position: relative;\r\n}\r\n\r\n.iptvit-guide-hero__breadcrumb { margin: 0 0 2.5rem; }\r\n.iptvit-guide-hero__breadcrumb ol {\r\n  align-items: center;\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  gap: .65rem;\r\n  list-style: none;\r\n  margin: 0;\r\n  padding: 0;\r\n}\r\n.iptvit-guide-hero__breadcrumb li {\r\n  align-items: center;\r\n  color: var(--igh-muted);\r\n  display: inline-flex;\r\n  font-size: .78rem;\r\n  gap: .65rem;\r\n  line-height: 1.5;\r\n}\r\n.iptvit-guide-hero__breadcrumb li:first-child::after { content: \"\/\"; opacity: .6; }\r\n.iptvit-guide-hero__breadcrumb a { color: var(--igh-copy); text-decoration: none; }\r\n.iptvit-guide-hero__breadcrumb a:hover { text-decoration: underline; text-underline-offset: .2em; }\r\n\r\n.iptvit-guide-hero__content { max-width: 38rem; }\r\n.iptvit-guide-hero__eyebrow {\r\n  align-items: center;\r\n  color: var(--igh-green);\r\n  display: flex;\r\n  font-size: .71rem;\r\n  font-weight: 800;\r\n  gap: .7rem;\r\n  letter-spacing: .14em;\r\n  line-height: 1.6;\r\n  margin: 0 0 1rem;\r\n  text-transform: uppercase;\r\n}\r\n.iptvit-guide-hero__mark {\r\n  background: linear-gradient(90deg, #16805d 0 33.33%, #f8f5ec 33.33% 66.66%, #c43e4b 66.66%);\r\n  border: 1px solid var(--igh-line);\r\n  border-radius: 3px;\r\n  flex: 0 0 1.65rem;\r\n  height: 1.05rem;\r\n}\r\n.iptvit-guide-hero .iptvit-guide-hero__title {\r\n  color: var(--igh-ink);\r\n  font-family: inherit;\r\n  font-size: clamp(3rem, 5.35vw, 4.8rem);\r\n  font-weight: 850;\r\n  letter-spacing: -.052em;\r\n  line-height: 1.035;\r\n  margin: 0;\r\n  max-width: 14ch;\r\n  text-wrap: balance;\r\n}\r\n.iptvit-guide-hero__title span {\r\n  background: linear-gradient(105deg, var(--igh-green) 0%, var(--igh-middle) 53%, var(--igh-red) 100%);\r\n  background-clip: text;\r\n  color: var(--igh-green);\r\n  display: block;\r\n  -webkit-background-clip: text;\r\n  -webkit-text-fill-color: transparent;\r\n}\r\n.iptvit-guide-hero__text {\r\n  color: var(--igh-copy);\r\n  font-size: clamp(1rem, 1.3vw, 1.08rem);\r\n  line-height: 1.75;\r\n  margin: 1.35rem 0 0;\r\n  max-width: 34rem;\r\n}\r\n.iptvit-guide-hero__actions {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  gap: .75rem;\r\n  margin: 1.6rem 0 0;\r\n}\r\n.iptvit-guide-hero .iptvit-guide-hero__button {\r\n  align-items: center;\r\n  border: 1px solid var(--igh-line);\r\n  border-radius: .85rem;\r\n  display: inline-flex;\r\n  font-size: .9rem;\r\n  font-weight: 750;\r\n  gap: .7rem;\r\n  justify-content: center;\r\n  line-height: 1.4;\r\n  min-height: 3.35rem;\r\n  padding: .85rem 1.15rem;\r\n  text-decoration: none;\r\n  transition: transform 180ms ease, background-color 180ms ease, box-shadow 180ms ease;\r\n}\r\n.iptvit-guide-hero .iptvit-guide-hero__button--primary {\r\n  background: linear-gradient(135deg, #157452, #09593f);\r\n  border-color: #1c805b;\r\n  box-shadow: 0 .6rem 1.5rem rgba(12, 86, 59, .17);\r\n  color: #fff;\r\n}\r\n.iptvit-guide-hero .iptvit-guide-hero__button--secondary {\r\n  background: var(--igh-glass);\r\n  color: var(--igh-ink);\r\n  backdrop-filter: blur(8px);\r\n}\r\n.iptvit-guide-hero__button svg {\r\n  fill: none;\r\n  flex: 0 0 1.15rem;\r\n  height: 1.15rem;\r\n  stroke: currentColor;\r\n  stroke-linecap: round;\r\n  stroke-linejoin: round;\r\n  stroke-width: 1.8;\r\n  transition: transform 180ms ease;\r\n  width: 1.15rem;\r\n}\r\n.iptvit-guide-hero .iptvit-guide-hero__button:hover { transform: translateY(-2px); }\r\n.iptvit-guide-hero .iptvit-guide-hero__button--primary:hover { background: #09583e; color: #fff; }\r\n.iptvit-guide-hero .iptvit-guide-hero__button--secondary:hover { background: var(--igh-glass-hover); color: var(--igh-ink); }\r\n.iptvit-guide-hero__button--primary:hover svg { transform: translateY(3px); }\r\n.iptvit-guide-hero__button--secondary:hover svg { transform: translateX(3px); }\r\n.iptvit-guide-hero a:focus-visible { outline: 3px solid var(--igh-red); outline-offset: 5px; }\r\n\r\n.iptvit-guide-hero__topics {\r\n  align-items: center;\r\n  border-top: 1px solid var(--igh-line);\r\n  color: var(--igh-muted);\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  font-size: .78rem;\r\n  gap: .5rem 1.3rem;\r\n  line-height: 1.6;\r\n  list-style: none;\r\n  margin: 2rem 0 0;\r\n  max-width: 33rem;\r\n  padding: .9rem 0 0;\r\n}\r\n.iptvit-guide-hero__topics li { align-items: center; display: inline-flex; gap: .5rem; }\r\n.iptvit-guide-hero__topics li::before {\r\n  background: var(--igh-green);\r\n  border-radius: 50%;\r\n  content: \"\";\r\n  height: 4px;\r\n  width: 4px;\r\n}\r\n\r\n@media (prefers-reduced-motion: no-preference) {\r\n  .iptvit-guide-hero__eyebrow,\r\n  .iptvit-guide-hero__title,\r\n  .iptvit-guide-hero__text,\r\n  .iptvit-guide-hero__actions,\r\n  .iptvit-guide-hero__topics {\r\n    animation: igh-reveal .65s var(--igh-delay, 0s) cubic-bezier(.22, 1, .36, 1) backwards;\r\n  }\r\n  .iptvit-guide-hero__title { --igh-delay: .07s; }\r\n  .iptvit-guide-hero__text { --igh-delay: .14s; }\r\n  .iptvit-guide-hero__actions { --igh-delay: .21s; }\r\n  .iptvit-guide-hero__topics { --igh-delay: .28s; }\r\n  .iptvit-guide-hero__image { animation: igh-settle 4s cubic-bezier(.2, .7, .3, 1) both; }\r\n}\r\n@keyframes igh-reveal {\r\n  from { opacity: 0; transform: translateY(12px); }\r\n  to { opacity: 1; transform: translateY(0); }\r\n}\r\n@keyframes igh-settle {\r\n  from { transform: scale(1.035); }\r\n  to { transform: scale(1); }\r\n}\r\n\r\n@media (max-width: 62rem) {\r\n  .iptvit-guide-hero__content { max-width: 34rem; }\r\n  .iptvit-guide-hero__scene::after { background: var(--igh-mobile), var(--igh-depth); }\r\n}\r\n@media (max-width: 40rem) {\r\n  .iptvit-guide-hero__inner { padding-block: 1.5rem 2rem; }\r\n  .iptvit-guide-hero__breadcrumb { margin-bottom: 2rem; }\r\n  .iptvit-guide-hero .iptvit-guide-hero__title { font-size: clamp(2.65rem, 10.5vw, 3.75rem); }\r\n  .iptvit-guide-hero__eyebrow { font-size: .64rem; letter-spacing: .1em; }\r\n  .iptvit-guide-hero__text { max-width: 31rem; }\r\n  .iptvit-guide-hero__image { object-position: 78% center; }\r\n  .iptvit-guide-hero__actions { display: grid; grid-template-columns: 1fr; }\r\n  .iptvit-guide-hero .iptvit-guide-hero__button { min-height: 3.25rem; }\r\n  .iptvit-guide-hero__topics { gap: .45rem 1rem; margin-top: 1.7rem; }\r\n}\r\n@media (prefers-reduced-motion: reduce) {\r\n  .iptvit-guide-hero, .iptvit-guide-hero::before, .iptvit-guide-hero::after,\r\n  .iptvit-guide-hero *, .iptvit-guide-hero *::before, .iptvit-guide-hero *::after {\r\n    animation: none !important;\r\n    transition: none !important;\r\n    scroll-behavior: auto !important;\r\n  }\r\n}\r\n@media (forced-colors: active) {\r\n  .iptvit-guide-hero { background: Canvas; color: CanvasText; }\r\n  .iptvit-guide-hero__scene { display: none; }\r\n  .iptvit-guide-hero__title span { background: none; color: CanvasText; -webkit-text-fill-color: currentColor; }\r\n  .iptvit-guide-hero .iptvit-guide-hero__button { border-color: ButtonText; }\r\n}\r\n<\/style>\r\n\r\n<section id=\"guide-iptv-hero\" class=\"iptvit-guide-hero\" aria-labelledby=\"guide-iptv-title\">\r\n  <figure class=\"iptvit-guide-hero__scene\">\r\n    <!-- IMAGE : ins\u00e9rer l'URL WordPress du WebP dans src ci-dessous. -->\r\n    <img fetchpriority=\"high\" class=\"iptvit-guide-hero__image\" src=\"https:\/\/iptv-italia.it\/wp-content\/uploads\/2026\/09\/hero-guide-iptv-italia.webp\" width=\"1672\" height=\"941\"\r\n      alt=\"Guide IPTV: illustrazione di un articolo su tablet accanto a una Smart TV in un salotto italiano\"\r\n      loading=\"eager\" fetchpriority=\"high\" decoding=\"async\">\r\n  <\/figure>\r\n\r\n  <div class=\"iptvit-guide-hero__inner\">\r\n    <nav class=\"iptvit-guide-hero__breadcrumb\" aria-label=\"Percorso di navigazione\">\r\n      <ol><li><a href=\"\/\">Home<\/a><\/li><li aria-current=\"page\">Guide IPTV<\/li><\/ol>\r\n    <\/nav>\r\n\r\n    <div class=\"iptvit-guide-hero__content\">\r\n      <p class=\"iptvit-guide-hero__eyebrow\"><span class=\"iptvit-guide-hero__mark\" aria-hidden=\"true\"><\/span>Il tuo punto di partenza<\/p>\r\n      <h1 class=\"iptvit-guide-hero__title\" id=\"guide-iptv-title\">Guide IPTV:\r\n        <span>pi\u00f9 chiarezza,<br>meno dubbi.<\/span>\r\n      <\/h1>\r\n      <p class=\"iptvit-guide-hero__text\">Esplora le guide IPTV: articoli, tutorial e consigli per orientarti tra applicazioni, dispositivi e configurazione. Parti da ci\u00f2 che vuoi capire e trova l\u2019approfondimento che fa per te.<\/p>\r\n      <div class=\"iptvit-guide-hero__actions\">\r\n        <a class=\"iptvit-guide-hero__button iptvit-guide-hero__button--primary\" href=\"#articoli-iptv\">\r\n          Esplora gli articoli\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 4v15m-6-6 6 6 6-6\"\/><\/svg>\r\n        <\/a>\r\n        <a class=\"iptvit-guide-hero__button iptvit-guide-hero__button--secondary\" href=\"\/abbonamento-iptv\/\">\r\n          Confronta i piani\r\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 12h15m-6-6 6 6-6 6\"\/><\/svg>\r\n        <\/a>\r\n      <\/div>\r\n      <ul class=\"iptvit-guide-hero__topics\" aria-label=\"Argomenti delle guide\">\r\n        <li>Applicazioni<\/li><li>Dispositivi<\/li><li>Consigli e soluzioni<\/li>\r\n      <\/ul>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cf19693 e-con-full e-flex e-con e-parent\" data-id=\"cf19693\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9faff71 elementor-widget elementor-widget-html\" data-id=\"9faff71\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- IPTV Italia \u00b7 Vetrina autonoma Elementor HTML \u00b7 v1.0.0 -->\r\n<style>\r\n\/* IPTV Italia \u00b7 Vetrina Guide. All selectors scoped; no global theme resets. *\/\r\n.iptvgh [hidden] { display: none !important; }\r\n.iptvgh .iptvgh__status { min-height: 1.6em; color: var(--ig-muted); font-size: .8rem; margin: 0 0 1rem; }\r\n.iptvgh .iptvgh__results { min-height: 18rem; outline-offset: 6px; }\r\n.iptvgh .iptvgh__fallback { color: var(--ig-muted); font-size: .8rem; line-height: 1.8; text-align: center; margin: 2rem 0 0; }\r\n.iptvgh .iptvgh__fallback a { color: var(--ig-accent); text-decoration: underline; text-underline-offset: .2em; }\r\n.iptvgh .iptvgh__placeholder { color: var(--ig-accent); font-size: 4rem; }\r\n.iptvgh .iptvgh__retry { font-family: inherit; font-size: .9rem; font-weight: 700; line-height: 1.5; color: var(--ig-card); background: var(--ig-accent); border: 1px solid var(--ig-accent); border-radius: .65rem; min-height: 44px; padding: .65rem 1.1rem; margin-top: 1rem; cursor: pointer; }\r\n.iptvgh .iptvgh__card { animation: iptvgh-card-in 420ms ease-out backwards; }\r\n.iptvgh .iptvgh__card:nth-child(2) { animation-delay: 40ms; }\r\n.iptvgh .iptvgh__card:nth-child(3) { animation-delay: 80ms; }\r\n.iptvgh .iptvgh__card:nth-child(4) { animation-delay: 120ms; }\r\n.iptvgh .iptvgh__card:nth-child(5) { animation-delay: 160ms; }\r\n.iptvgh .iptvgh__card:nth-child(6) { animation-delay: 200ms; }\r\n@keyframes iptvgh-card-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }\r\n.iptvgh, .iptvgh * { box-sizing: border-box; }\r\n.iptvgh {\r\n  --ig-bg: #edf3f0;\r\n  --ig-ink: #10251e;\r\n  --ig-copy: #40594e;\r\n  --ig-muted: #566b60;\r\n  --ig-accent: #176c4b;\r\n  --ig-line: #c9d8ce;\r\n  --ig-card: #fbfcf9;\r\n  --ig-soft: #e1eae3;\r\n  --ig-focus: #a72f42;\r\n  background: var(--ig-bg);\r\n  color: var(--ig-copy);\r\n  color-scheme: light;\r\n  font-family: inherit;\r\n  overflow-wrap: anywhere;\r\n  padding: clamp(2.5rem, 5vw, 4.5rem) 0 clamp(3.5rem, 7vw, 6rem);\r\n  scroll-margin-top: 2rem;\r\n  width: 100%;\r\n}\r\n:root[data-iptvit-theme=\"dark\"] .iptvgh,\r\n:root:not([data-iptvit-theme])[data-theme=\"dark\"] .iptvgh {\r\n  --ig-bg: #07121a;\r\n  --ig-ink: #f4f6ee;\r\n  --ig-copy: #c4d5cb;\r\n  --ig-muted: #a9bfb1;\r\n  --ig-accent: #82ddb3;\r\n  --ig-line: #30463e;\r\n  --ig-card: #102127;\r\n  --ig-soft: #19322e;\r\n  --ig-focus: #ef8b96;\r\n  color-scheme: dark;\r\n}\r\n@media (prefers-color-scheme: dark) {\r\n  :root:not([data-iptvit-theme]):not([data-theme]) .iptvgh {\r\n    --ig-bg: #07121a;\r\n    --ig-ink: #f4f6ee;\r\n    --ig-copy: #c4d5cb;\r\n    --ig-muted: #a9bfb1;\r\n    --ig-accent: #82ddb3;\r\n    --ig-line: #30463e;\r\n    --ig-card: #102127;\r\n    --ig-soft: #19322e;\r\n    --ig-focus: #ef8b96;\r\n    color-scheme: dark;\r\n  }\r\n}\r\n.iptvgh .iptvgh__inner { width: 100%; max-width: 82rem; margin-inline: auto; padding-inline: clamp(1.2rem, 4vw, 2.5rem); }\r\n.iptvgh .iptvgh__header { display: flex; gap: 1.5rem; align-items: flex-end; justify-content: space-between; margin: 0 0 2rem; }\r\n.iptvgh .iptvgh__eyebrow { color: var(--ig-accent); font-size: .68rem; font-weight: 800; letter-spacing: .14em; line-height: 1.6; text-transform: uppercase; margin: 0 0 .8rem; }\r\n.iptvgh .iptvgh__title { color: var(--ig-ink); font-family: inherit; font-size: clamp(2rem, 3.5vw, 3rem); font-weight: 800; line-height: 1.12; letter-spacing: -.045em; margin: 0; }\r\n.iptvgh .iptvgh__intro { color: var(--ig-copy); font-size: 1rem; line-height: 1.75; max-width: 41rem; margin: 1rem 0 0; }\r\n.iptvgh .iptvgh__count { border: 1px solid var(--ig-line); color: var(--ig-muted); border-radius: 99px; font-size: .78rem; line-height: 1.5; padding: .55rem .95rem; white-space: nowrap; flex: none; }\r\n.iptvgh .iptvgh__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem; }\r\n.iptvgh .iptvgh__card { background: var(--ig-card); border: 1px solid var(--ig-line); border-radius: 1.2rem; margin: 0; min-width: 0; position: relative; transition: border-color 200ms ease, box-shadow 200ms ease, transform 200ms ease; }\r\n.iptvgh .iptvgh__card-link { color: var(--ig-ink); border-radius: inherit; display: flex; flex-direction: column; height: 100%; min-width: 0; text-decoration: none; }\r\n.iptvgh .iptvgh__visual { aspect-ratio: 16\/10; border-radius: 1.15rem 1.15rem 0 0; overflow: hidden; position: relative; background: var(--ig-soft); }\r\n.iptvgh .iptvgh__image { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; transition: transform 650ms cubic-bezier(.22, 1, .36, 1); }\r\n.iptvgh .iptvgh__visual--empty { display: grid; place-items: center; background: radial-gradient(circle at 24% 22%, rgba(84, 150, 112, .22), transparent 60%), var(--ig-soft); }\r\n.iptvgh .iptvgh__book { color: var(--ig-accent); fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linejoin: round; stroke-linecap: round; width: 4.6rem; height: 4.6rem; }\r\n.iptvgh .iptvgh__card-body { display: flex; flex: 1; flex-direction: column; align-items: flex-start; padding: 1.45rem; min-width: 0; }\r\n.iptvgh .iptvgh__category { color: var(--ig-accent); font-size: .68rem; font-weight: 750; letter-spacing: .09em; text-transform: uppercase; line-height: 1.5; margin-bottom: .75rem; }\r\n.iptvgh .iptvgh__card-title { font-family: inherit; font-size: 1.25rem; line-height: 1.3; letter-spacing: -.025em; font-weight: 750; color: var(--ig-ink); margin: 0; text-wrap: pretty; }\r\n.iptvgh .iptvgh__excerpt { color: var(--ig-copy); font-size: .88rem; line-height: 1.75; margin: .8rem 0 1.3rem; }\r\n.iptvgh .iptvgh__card-footer { align-items: center; border-top: 1px solid var(--ig-line); display: flex; flex-wrap: wrap; gap: .7rem; justify-content: space-between; margin-top: auto; padding-top: 1rem; width: 100%; }\r\n.iptvgh .iptvgh__card-footer time { color: var(--ig-muted); font-size: .7rem; line-height: 1.6; }\r\n.iptvgh .iptvgh__read { align-items: center; display: inline-flex; gap: .45rem; color: var(--ig-accent); font-size: .75rem; font-weight: 750; line-height: 1.6; }\r\n.iptvgh .iptvgh__read svg, .iptvgh .iptvgh__empty-link svg, .iptvgh .iptvgh__search svg { fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; width: 1.1rem; height: 1.1rem; flex: none; }\r\n.iptvgh .iptvgh__read svg { transition: transform 200ms ease; }\r\n.iptvgh .iptvgh__card--featured { margin: 0 0 2.25rem; }\r\n.iptvgh .iptvgh__card--featured .iptvgh__card-link { display: grid; grid-template-columns: 1.05fr 1fr; }\r\n.iptvgh .iptvgh__card--featured .iptvgh__visual { border-radius: 1.15rem 0 0 1.15rem; aspect-ratio: auto; min-height: 21rem; height: 100%; }\r\n.iptvgh .iptvgh__card--featured .iptvgh__card-body { justify-content: center; padding: clamp(1.5rem, 3vw, 2.75rem); }\r\n.iptvgh .iptvgh__card--featured .iptvgh__card-title { font-size: clamp(1.65rem, 2.7vw, 2.45rem); line-height: 1.17; letter-spacing: -.04em; }\r\n.iptvgh .iptvgh__card--featured .iptvgh__excerpt { font-size: .96rem; margin-bottom: 1.8rem; }\r\n.iptvgh .iptvgh__card--featured .iptvgh__card-footer { margin-top: 0; }\r\n.iptvgh .iptvgh__feature-label { position: absolute; left: 1.25rem; top: 1.25rem; background: #f5f7ee; color: #16573d; border: 1px solid #d7e2d5; border-radius: 99px; padding: .45rem .85rem; font-size: .68rem; font-weight: 800; letter-spacing: .04em; line-height: 1.5; }\r\n.iptvgh .iptvgh__toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.25rem; margin: 0 0 1.75rem; }\r\n.iptvgh .iptvgh__filters { display: flex; flex-wrap: wrap; gap: .45rem; min-width: 0; flex: 1 1 32rem; }\r\n.iptvgh .iptvgh__filters a { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: .6rem .95rem; border: 1px solid var(--ig-line); border-radius: 99px; background: transparent; color: var(--ig-copy); font-size: .78rem; line-height: 1.5; font-weight: 650; text-decoration: none; transition: color 180ms ease, background-color 180ms ease; }\r\n.iptvgh .iptvgh__filters a[aria-current] { color: var(--ig-card); background: var(--ig-accent); border-color: var(--ig-accent); }\r\n.iptvgh .iptvgh__filters a:not([aria-current]):hover { background: var(--ig-soft); color: var(--ig-ink); }\r\n.iptvgh .iptvgh__search { display: flex; gap: 0; margin: 0; background: var(--ig-card); border: 1px solid var(--ig-line); border-radius: .8rem; flex: 0 1 17rem; min-width: 0; }\r\n.iptvgh .iptvgh__search input[type=\"search\"] { appearance: none; background: transparent; border: 0; box-shadow: none; border-radius: .8rem 0 0 .8rem; color: var(--ig-ink); font-family: inherit; font-size: .82rem; line-height: 1.5; min-width: 0; padding: .7rem .9rem; flex: 1; width: 100%; min-height: 46px; }\r\n.iptvgh .iptvgh__search input::placeholder { color: var(--ig-muted); opacity: 1; }\r\n.iptvgh .iptvgh__search button { background: transparent; border: 0; box-shadow: none; border-radius: 0 .8rem .8rem 0; color: var(--ig-accent); cursor: pointer; padding: .75rem; min-width: 46px; min-height: 46px; display: grid; place-items: center; }\r\n.iptvgh .iptvgh__search button:hover { background: var(--ig-soft); }\r\n.iptvgh .iptvgh__result-summary { display: flex; justify-content: space-between; gap: .75rem 1.5rem; flex-wrap: wrap; align-items: center; font-size: .85rem; line-height: 1.7; color: var(--ig-copy); margin: -.25rem 0 1.5rem; }\r\n.iptvgh .iptvgh__result-summary p { margin: 0; }\r\n.iptvgh .iptvgh__result-summary a { color: var(--ig-accent); text-underline-offset: .2em; min-height: 44px; display: inline-flex; align-items: center; }\r\n.iptvgh .iptvgh__pagination { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; justify-content: center; margin-top: 2.5rem; }\r\n.iptvgh .iptvgh__pagination a, .iptvgh .iptvgh__pagination span { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; border: 1px solid var(--ig-line); border-radius: .65rem; color: var(--ig-copy); font-size: .85rem; line-height: 1.4; font-weight: 700; text-decoration: none; padding: .45rem; }\r\n.iptvgh .iptvgh__pagination a:hover { background: var(--ig-soft); }\r\n.iptvgh .iptvgh__pagination [aria-current] { color: var(--ig-card); background: var(--ig-accent); border-color: var(--ig-accent); }\r\n.iptvgh .iptvgh__pagination .iptvgh__ellipsis { border: 0; min-width: 1rem; }\r\n.iptvgh .iptvgh__empty { border: 1px dashed var(--ig-line); border-radius: 1.2rem; padding: clamp(2rem, 5vw, 4rem) 1.5rem; text-align: center; background: var(--ig-card); }\r\n.iptvgh .iptvgh__empty-mark { display: inline-grid; place-items: center; background: var(--ig-soft); color: var(--ig-accent); width: 3rem; height: 3rem; border-radius: 50%; font-size: 1.5rem; margin-bottom: 1rem; }\r\n.iptvgh .iptvgh__empty h3 { font-family: inherit; color: var(--ig-ink); font-size: 1.45rem; font-weight: 750; letter-spacing: -.025em; line-height: 1.3; margin: 0 0 .75rem; }\r\n.iptvgh .iptvgh__empty p { color: var(--ig-copy); font-size: .95rem; line-height: 1.8; margin: 0 auto; max-width: 36rem; }\r\n.iptvgh .iptvgh__empty-link { align-items: center; display: inline-flex; gap: .65rem; color: var(--ig-accent); font-size: .9rem; font-weight: 700; min-height: 44px; margin-top: 1rem; text-decoration: underline; text-underline-offset: .2em; }\r\n.iptvgh .iptvgh__sr { border: 0; clip-path: inset(50%); height: 1px; width: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; white-space: nowrap; }\r\n.iptvgh :is(a,button,input):focus-visible { outline: 3px solid var(--ig-focus); outline-offset: 4px; }\r\n@media (hover: hover) and (pointer: fine) {\r\n  .iptvgh .iptvgh__card:hover { transform: translateY(-4px); border-color: var(--ig-accent); box-shadow: 0 1rem 2.5rem rgba(0, 35, 24, .1); }\r\n  .iptvgh .iptvgh__card-link:hover .iptvgh__image { transform: scale(1.04); }\r\n  .iptvgh .iptvgh__card-link:hover .iptvgh__read svg { transform: translateX(3px); }\r\n}\r\n@media (max-width: 63.99rem) {\r\n  .iptvgh .iptvgh__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }\r\n  .iptvgh .iptvgh__filters { flex-basis: 100%; }\r\n  .iptvgh .iptvgh__search { flex-basis: 100%; max-width: 28rem; }\r\n}\r\n@media (max-width: 47.99rem) {\r\n  .iptvgh .iptvgh__card--featured .iptvgh__card-link { grid-template-columns: 1fr; }\r\n  .iptvgh .iptvgh__card--featured .iptvgh__visual { aspect-ratio: 16\/9; min-height: 0; border-radius: 1.15rem 1.15rem 0 0; }\r\n  .iptvgh .iptvgh__card--featured .iptvgh__card-body { padding: 1.5rem; }\r\n}\r\n@media (max-width: 39.99rem) {\r\n  .iptvgh .iptvgh__grid { grid-template-columns: 1fr; }\r\n  .iptvgh .iptvgh__header { display: block; }\r\n  .iptvgh .iptvgh__count { display: inline-flex; margin-top: 1rem; }\r\n  .iptvgh .iptvgh__search { max-width: none; }\r\n  .iptvgh .iptvgh__filters a { font-size: .75rem; padding-inline: .8rem; }\r\n  .iptvgh .iptvgh__eyebrow { font-size: .61rem; letter-spacing: .1em; }\r\n}\r\n@media (prefers-reduced-motion: reduce) {\r\n  .iptvgh, .iptvgh *, .iptvgh *::before, .iptvgh *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }\r\n}\r\n@media (forced-colors: active) {\r\n  .iptvgh { background: Canvas; color: CanvasText; }\r\n  .iptvgh .iptvgh__card, .iptvgh .iptvgh__filters a, .iptvgh .iptvgh__search { border-color: CanvasText; }\r\n  .iptvgh .iptvgh__filters [aria-current], .iptvgh .iptvgh__pagination [aria-current] { outline: 2px solid Highlight; }\r\n}\r\n\r\n<\/style>\r\n<!-- Une seule instance par page. API d\u00e9tect\u00e9e automatiquement sur le m\u00eame site WordPress.\r\n     data-api-root : laisser vide, ou URL de la racine REST du site (pas \/wp\/v2\/posts).\r\n     Ne pas coller aussi le shortcode [iptvit_guide] sur cette page. -->\r\n<section class=\"iptvgh\" id=\"articoli-iptv\" data-iptv-guide-html data-api-root=\"\" aria-labelledby=\"iptvgh-title\">\r\n  <div class=\"iptvgh__inner\">\r\n    <header class=\"iptvgh__header\">\r\n      <div>\r\n        <p class=\"iptvgh__eyebrow\">Il piacere di capire, una guida alla volta<\/p>\r\n        <h2 class=\"iptvgh__title\" id=\"iptvgh-title\">Tutti gli articoli<\/h2>\r\n        <p class=\"iptvgh__intro\">Esplora le guide IPTV: applicazioni, dispositivi e consigli pratici. Scegli un argomento e trova la tua prossima lettura.<\/p>\r\n      <\/div>\r\n      <span class=\"iptvgh__count\">Guide e approfondimenti<\/span>\r\n    <\/header>\r\n    <div class=\"iptvgh__toolbar\" data-controls hidden>\r\n      <nav class=\"iptvgh__filters\" aria-label=\"Filtra gli articoli per categoria\"><\/nav>\r\n      <form class=\"iptvgh__search\" role=\"search\" aria-label=\"Cerca nelle guide\">\r\n        <label class=\"iptvgh__sr\" for=\"iptvgh-search\">Cerca negli articoli<\/label>\r\n        <input id=\"iptvgh-search\" type=\"search\" placeholder=\"Cerca una guida\u2026\" maxlength=\"120\">\r\n        <button type=\"submit\" aria-label=\"Cerca\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"10.5\" cy=\"10.5\" r=\"6.5\"\/><path d=\"m16 16 5 5\"\/><\/svg><\/button>\r\n      <\/form>\r\n    <\/div>\r\n    <p class=\"iptvgh__status\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p>\r\n    <div class=\"iptvgh__results\" tabindex=\"-1\" aria-label=\"Risultati degli articoli\">\r\n      <div class=\"iptvgh__grid\"><\/div>\r\n      <div class=\"iptvgh__empty\" data-message>\r\n        <span class=\"iptvgh__empty-mark\" aria-hidden=\"true\">\u2197<\/span>\r\n        <h3>Le tue prossime letture, qui.<\/h3>\r\n        <p>La vetrina mostra gli articoli pubblicati su IPTV Italia. Attiva JavaScript per caricare le guide e utilizzare la ricerca.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n    <nav class=\"iptvgh__pagination\" aria-label=\"Pagine degli articoli\"><\/nav>\r\n    <p class=\"iptvgh__fallback\">Preferisci la ricerca del sito? <a href=\"\/?s=&amp;post_type=post\" data-native-search>Cerca tra gli articoli<\/a>.<\/p>\r\n  <\/div>\r\n<\/section>\r\n<script>\r\n(function () {\r\n  'use strict';\r\n  \/\/ Public read-only REST requests: no credentials, token, plugin or jQuery.\r\n  const script = document.currentScript;\r\n  const root = script && script.previousElementSibling;\r\n  if (!root || !root.matches('[data-iptv-guide-html]') || root.dataset.ready) return;\r\n  root.dataset.ready = 'true';\r\n  const q = s => root.querySelector(s);\r\n  const grid = q('.iptvgh__grid'), pager = q('.iptvgh__pagination');\r\n  const filters = q('.iptvgh__filters'), status = q('[role=\"status\"]');\r\n  const results = q('.iptvgh__results'), message = q('[data-message]');\r\n  const input = q('input[type=\"search\"]');\r\n  let category = 0, search = '', page = 1, generation = 0, requestController;\r\n  let categories = [];\r\n  const make = (tag, cls, value) => {\r\n    const n = document.createElement(tag);\r\n    if (cls) n.className = cls;\r\n    if (value !== undefined) n.textContent = value;\r\n    return n;\r\n  };\r\n  \/\/ Never insert REST HTML into the live DOM. A template is inert, including images.\r\n  const plain = value => {\r\n    const t = document.createElement('template');\r\n    t.innerHTML = String(value || '');\r\n    t.content.querySelectorAll('script,style,iframe,object').forEach(n => n.remove());\r\n    return t.content.textContent.replace(\/\\s+\/g, ' ').trim();\r\n  };\r\n  const safeURL = value => {\r\n    if (!value) return '';\r\n    try { const u = new URL(value, location.href); return ['https:', 'http:'].includes(u.protocol) ? u.href : ''; }\r\n    catch (_) { return ''; }\r\n  };\r\n  const stateURL = (cat, term, number) => {\r\n    const u = new URL(location.href);\r\n    ['ig_cat','ig_search','ig_page'].forEach(k => u.searchParams.delete(k));\r\n    if (cat) u.searchParams.set('ig_cat', cat);\r\n    if (term) u.searchParams.set('ig_search', term);\r\n    if (number > 1) u.searchParams.set('ig_page', number);\r\n    u.hash = 'articoli-iptv';\r\n    return u.href;\r\n  };\r\n  const readState = () => {\r\n    const p = new URL(location.href).searchParams;\r\n    category = \/^\\d{1,9}$\/.test(p.get('ig_cat') || '') ? Number(p.get('ig_cat')) : 0;\r\n    search = (p.get('ig_search') || '').trim().slice(0, 120);\r\n    page = \/^\\d{1,5}$\/.test(p.get('ig_page') || '') ? Math.max(1, Math.min(10000, Number(p.get('ig_page')))) : 1;\r\n    input.value = search;\r\n  };\r\n  const navigate = (cat, term, number) => {\r\n    history.pushState(null, '', stateURL(cat, term, number));\r\n    readState(); drawFilters(); load(true);\r\n  };\r\n  const stateLink = (label, cat, term, number, current) => {\r\n    const a = make('a', '', label);\r\n    a.href = stateURL(cat, term, number);\r\n    if (current) a.setAttribute('aria-current', 'true');\r\n    a.addEventListener('click', e => {\r\n      if (e.button || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;\r\n      e.preventDefault(); navigate(cat, term, number);\r\n    });\r\n    return a;\r\n  };\r\n  const drawFilters = () => {\r\n    filters.replaceChildren(stateLink('Tutti', 0, search, 1, !category));\r\n    categories.forEach(c => filters.append(stateLink(plain(c.name), c.id, search, 1, category === c.id)));\r\n    if (category || search) filters.append(stateLink('Rimuovi i filtri \u00d7', 0, '', 1, false));\r\n  };\r\n  const showMessage = (title, copy, retry) => {\r\n    message.hidden = false;\r\n    message.replaceChildren(make('span', 'iptvgh__empty-mark', '\u2197'), make('h3', '', title), make('p', '', copy));\r\n    if (retry) {\r\n      const b = make('button', 'iptvgh__retry', 'Riprova');\r\n      b.type = 'button'; b.addEventListener('click', () => load(true)); message.append(b);\r\n    }\r\n  };\r\n  let api;\r\n  try {\r\n    const advertised = document.querySelector('link[rel=\"https:\/\/api.w.org\/\"]');\r\n    api = new URL(root.dataset.apiRoot || (advertised && advertised.href) || '\/wp-json\/', location.href);\r\n    if (!\/^https?:$\/.test(api.protocol) || api.origin !== location.origin) throw new Error('same-origin required');\r\n    if (!api.searchParams.has('rest_route') && !api.pathname.endsWith('\/')) api.pathname += '\/';\r\n    const home = new URL(api.href);\r\n    home.search = ''; home.hash = '';\r\n    home.pathname = api.searchParams.has('rest_route') ? api.pathname.replace(\/index\\.php$\/, '') : api.pathname.replace(\/wp-json\\\/$\/, '');\r\n    home.searchParams.set('s', ''); home.searchParams.set('post_type', 'post');\r\n    q('[data-native-search]').href = home.href;\r\n  } catch (_) {\r\n    showMessage('La vetrina si collega al tuo sito WordPress', 'Apri questa sezione sul sito WordPress per caricare gli articoli. In un file HTML locale non \u00e8 disponibile il catalogo del sito.', false);\r\n    return;\r\n  }\r\n  const endpoint = (path, params) => {\r\n    const u = new URL(api.href);\r\n    if (u.searchParams.has('rest_route')) u.searchParams.set('rest_route', '\/wp\/v2\/' + path);\r\n    else u.pathname += 'wp\/v2\/' + path;\r\n    Object.entries(params).forEach(([k, v]) => u.searchParams.set(k, String(v)));\r\n    return u;\r\n  };\r\n  const get = async (path, params, signal) => {\r\n    const response = await fetch(endpoint(path, params), { signal, credentials: 'omit', headers: { Accept: 'application\/json' } });\r\n    if (!response.ok) {\r\n      let code = ''; try { code = (await response.json()).code; } catch (_) {}\r\n      const e = new Error('HTTP ' + response.status); e.code = code; throw e;\r\n    }\r\n    const data = await response.json();\r\n    if (!Array.isArray(data)) throw new Error('Invalid REST response');\r\n    const pages = Number(response.headers.get('X-WP-TotalPages'));\r\n    return { data, pages: Number.isFinite(pages) ? pages : 0 };\r\n  };\r\n  const card = post => {\r\n    const url = safeURL(post.link);\r\n    if (!url || post.status !== 'publish' || post.excerpt?.protected) return null;\r\n    const article = make('article', 'iptvgh__card'); article.dataset.postId = post.id;\r\n    const a = make('a', 'iptvgh__card-link'); a.href = url;\r\n    const title = plain(post.title?.rendered) || 'Leggi la guida';\r\n    a.setAttribute('aria-label', title);\r\n    const visual = make('div', 'iptvgh__visual iptvgh__visual--empty');\r\n    const placeholder = make('span', 'iptvgh__placeholder', '\u2197'); placeholder.setAttribute('aria-hidden', 'true'); visual.append(placeholder);\r\n    const media = post._embedded?.['wp:featuredmedia']?.[0];\r\n    const sizes = media?.media_details?.sizes || {};\r\n    const chosen = sizes.medium_large || sizes.large;\r\n    const src = safeURL(chosen?.source_url || media?.source_url || '');\r\n    if (media && src) {\r\n      const img = make('img', 'iptvgh__image');\r\n      img.alt = plain(media.alt_text); img.loading = 'lazy'; img.decoding = 'async';\r\n      img.width = chosen?.width || media.media_details?.width || 800;\r\n      img.height = chosen?.height || media.media_details?.height || 500;\r\n      img.addEventListener('error', () => { img.remove(); placeholder.hidden = false; }, { once: true });\r\n      img.src = src; placeholder.hidden = true; visual.append(img);\r\n    }\r\n    const body = make('div', 'iptvgh__card-body');\r\n    const terms = (post._embedded?.['wp:term'] || []).flat().filter(t => t.taxonomy === 'category');\r\n    if (terms.length) body.append(make('span', 'iptvgh__category', plain(terms[0].name)));\r\n    body.append(make('h3', 'iptvgh__card-title', title));\r\n    const excerpt = plain(post.excerpt?.rendered);\r\n    if (excerpt) body.append(make('p', 'iptvgh__excerpt', excerpt.length > 190 ? excerpt.slice(0, 187).trimEnd() + '\u2026' : excerpt));\r\n    const footer = make('div', 'iptvgh__card-footer');\r\n    \/\/ Keep WordPress' calendar date: do not shift it to the visitor's time zone.\r\n    const date = \/^\\d{4}-\\d{2}-\\d{2}\/.exec(post.date || '')?.[0];\r\n    if (date && !Number.isNaN(Date.parse(date))) {\r\n      const t = make('time', '', new Intl.DateTimeFormat('it-IT', {day:'numeric',month:'short',year:'numeric',timeZone:'UTC'}).format(new Date(date)));\r\n      t.dateTime = date; footer.append(t);\r\n    }\r\n    const read = make('span', 'iptvgh__read', 'Leggi la guida \u2197'); read.setAttribute('aria-hidden', 'true'); footer.append(read);\r\n    body.append(footer); a.append(visual, body); article.append(a); return article;\r\n  };\r\n  async function load(moveFocus, recovered) {\r\n    const token = ++generation;\r\n    requestController?.abort(); requestController = new AbortController();\r\n    const timer = setTimeout(() => requestController && token === generation && requestController.abort(), 15000);\r\n    results.setAttribute('aria-busy', 'true'); status.textContent = 'Caricamento delle guide\u2026';\r\n    grid.replaceChildren(); pager.replaceChildren(); message.hidden = true;\r\n    try {\r\n      const params = { per_page: 6, page, status:'publish', orderby:'date', order:'desc', _embed:'wp:featuredmedia,wp:term', _fields:'id,link,status,title,excerpt,date,categories,_links,_embedded' };\r\n      if (category) params.categories = category;\r\n      if (search) params.search = search;\r\n      const response = await get('posts', params, requestController.signal);\r\n      if (token !== generation) return;\r\n      response.data.map(card).filter(Boolean).forEach(c => grid.append(c));\r\n      if (!grid.children.length) showMessage(category || search ? 'Nessun articolo trovato' : response.pages ? 'Nessun articolo pubblico in questa pagina' : 'Le prime guide stanno per arrivare', category || search ? 'Prova un\u2019altra parola o rimuovi i filtri.' : 'Questo spazio raccoglier\u00e0 le guide pubblicate. Torna a trovarci per le prossime letture.', false);\r\n      if (response.pages > 1) {\r\n        if (page > 1) pager.append(stateLink('\u2190 Precedente', category, search, page - 1, false));\r\n        const label = make('span', '', 'Pagina ' + page + ' di ' + response.pages); label.setAttribute('aria-current', 'page'); pager.append(label);\r\n        if (page < response.pages) pager.append(stateLink('Successiva \u2192', category, search, page + 1, false));\r\n      }\r\n      status.textContent = grid.children.length + (grid.children.length === 1 ? ' guida in questa pagina.' : ' guide in questa pagina.');\r\n    } catch (error) {\r\n      if (token !== generation) return;\r\n      if (error.code === 'rest_post_invalid_page_number' && page > 1 && !recovered) {\r\n        page = 1; history.replaceState(null, '', stateURL(category, search, page));\r\n        clearTimeout(timer); return load(moveFocus, true);\r\n      }\r\n      status.textContent = 'Caricamento non riuscito.';\r\n      showMessage('Le guide non sono disponibili al momento', 'Riprova tra poco oppure utilizza la ricerca del sito qui sotto.', true);\r\n    } finally {\r\n      clearTimeout(timer);\r\n      if (token === generation) {\r\n        results.setAttribute('aria-busy', 'false');\r\n        if (moveFocus) results.focus({ preventScroll: true });\r\n      }\r\n    }\r\n  }\r\n  async function loadCategories() {\r\n    const c = new AbortController(), timer = setTimeout(() => c.abort(), 15000);\r\n    try {\r\n      let n = 1, total = 1, collected = [];\r\n      do {\r\n        const r = await get('categories', {per_page:100,page:n,hide_empty:true,orderby:'name',order:'asc',_fields:'id,name'}, c.signal);\r\n        collected.push(...r.data); total = r.pages; n++;\r\n      } while (n <= total);\r\n      categories = collected; drawFilters();\r\n    } catch (_) { \/* Search and article pagination still work if categories are unavailable. *\/ }\r\n    finally { clearTimeout(timer); }\r\n  }\r\n  readState(); drawFilters(); q('[data-controls]').hidden = false;\r\n  q('form').addEventListener('submit', e => { e.preventDefault(); navigate(category, input.value.trim().slice(0, 120), 1); });\r\n  window.addEventListener('popstate', () => { if (root.isConnected) { readState(); drawFilters(); load(false); } });\r\n  load(false); loadCategories();\r\n})();\r\n\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Home Guide IPTV Il tuo punto di partenza Guide IPTV: pi\u00f9 chiarezza,meno dubbi. Esplora le guide IPTV: articoli, tutorial e consigli per orientarti tra applicazioni, dispositivi e configurazione. Parti da ci\u00f2 che vuoi capire e trova l\u2019approfondimento che fa per te. Esplora gli articoli Confronta i piani Applicazioni Dispositivi Consigli e soluzioni Il piacere di [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/elementor-full-width.php","meta":{"footnotes":""},"class_list":["post-23","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/iptv-italia.it\/en\/wp-json\/wp\/v2\/pages\/23","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iptv-italia.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/iptv-italia.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/iptv-italia.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iptv-italia.it\/en\/wp-json\/wp\/v2\/comments?post=23"}],"version-history":[{"count":10,"href":"https:\/\/iptv-italia.it\/en\/wp-json\/wp\/v2\/pages\/23\/revisions"}],"predecessor-version":[{"id":372,"href":"https:\/\/iptv-italia.it\/en\/wp-json\/wp\/v2\/pages\/23\/revisions\/372"}],"wp:attachment":[{"href":"https:\/\/iptv-italia.it\/en\/wp-json\/wp\/v2\/media?parent=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}