/* Editorial sections; live player styles are isolated in iptv-player.css. */
.iptv-page [id] { scroll-margin-top: 220px; }
.iptv-page .anchor-nav__inner a[aria-current="location"] {
  color: var(--link);
  box-shadow: inset 0 -3px 0 var(--orange);
}
.iptv-page .anchor-nav__inner a:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: -4px; }
.iptv-hero h1 span { color: var(--orange); }
.iptv-hero__note { margin: 18px 0 0; color: var(--muted); font-size: 14px; }
.iptv-page .iptv-features { padding-block: 32px; background: var(--surface-2); border-block: 1px solid var(--line); }
.iptv-feature-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.iptv-feature { padding: 30px; border: 1px solid var(--line); border-radius: 24px; background: var(--paper); }
.iptv-feature__value { display: block; margin-bottom: 28px; color: var(--link); font: 700 clamp(1.75rem, 2.8vw, 2.5rem)/1.15 var(--font-display); letter-spacing: -.03em; }
.iptv-page :is(.iptv-feature, .iptv-device) h3 { margin: 0 0 12px; font-size: var(--card-title); line-height: 1.3; font-weight: 700; }
.iptv-feature p, .iptv-device__text { margin: 0; font-size: 15px; line-height: 1.65; color: var(--ink-soft); }
.iptv-source-note { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px 40px; margin-top: 24px; }
.iptv-source-note p { max-width: 780px; margin: 0; font-size: 13px; line-height: 1.65; color: var(--muted); }
.iptv-source-note > div { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.iptv-link { display: inline-flex; align-items: baseline; justify-content: space-between; gap: 10px; color: var(--link); font: 500 14px/1.5 var(--font-body); text-decoration: underline; text-underline-offset: 4px; }
.iptv-link span { flex: 0 0 auto; text-decoration: none; }
.iptv-link:hover { color: var(--link-hover); }
.iptv-link:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 5px; border-radius: 3px; }
.iptv-device-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.iptv-device { display: flex; flex-direction: column; align-items: flex-start; padding: 28px; border: 1px solid var(--line); border-radius: 24px; background: var(--paper); }
.tv-device-preview { display: block; position: relative; width: 100%; padding: 0; margin: 0 0 24px; border: 0; border-radius: 12px; background: transparent; color: var(--ink-soft); cursor: pointer; text-align: center; }
.tv-device-preview:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 6px; }
.tv-device-preview__caption { display: grid; align-items: center; min-height: 42px; padding: 6px 0 0; font: 500 12px/1.4 var(--font-body); }
.tv-device-preview:is(:hover, :focus-visible) .tv-device-preview__caption { color: var(--link); }
.tv-preview-touch { display: none; }
.tv-device-preview[data-preview-state="playing"] .tv-device-preview__caption { color: var(--green); }
.tv-device-preview[data-preview-state="error"] .tv-device-preview__caption { color: var(--field-error); }
.tv-device-art { position: relative; display: block; width: 100%; aspect-ratio: 1.4; }
.tv-device-frame { position: absolute; left: 3%; top: 13%; width: 94%; height: 68%; border: 2px solid var(--ink-soft); border-radius: 8px; background: var(--ink); }
.tv-device-screen { position: absolute; inset: 5% 2.5% 9%; display: block; overflow: hidden; background: var(--orange-soft); }
.tv-screen-scene { position: absolute; inset: 0; display: grid; place-items: center; overflow: hidden; background: linear-gradient(135deg, #fff2e5, #ffc58a 50%, #f58415); }
.tv-screen-scene::before { content: ''; position: absolute; width: 100%; height: 140%; left: -30%; top: -50%; border: 18px solid #ffffff66; border-radius: 50%; }
.tv-screen-scene::after { content: ''; position: absolute; width: 100%; height: 140%; right: -40%; bottom: -110%; border: 24px solid #ffffff66; border-radius: 50%; }
.tv-screen-play { position: relative; z-index: 1; width: 0; height: 0; border-top: 12px solid transparent; border-bottom: 12px solid transparent; border-left: 19px solid var(--paper); }
.tv-device-brand { position: absolute; bottom: 1%; left: 0; width: 100%; color: var(--action-ink); font: 600 7px/1 var(--font-body); letter-spacing: .08em; text-align: center; }
.tv-device-base { position: absolute; left: 39%; bottom: 8%; width: 22%; height: 11%; background: linear-gradient(90deg, #b9b9b9, #f1f1f1, #b9b9b9); border-bottom: 3px solid #b9b9b9; }
.tv-device-base::after { content: ''; position: absolute; width: 190%; height: 4px; left: -45%; bottom: -4px; border-radius: 4px; background: #b9b9b9; }
.tv-device-extra { display: none; }
.tv-device-art--monitor .tv-device-frame { height: 67%; border-bottom: 12px solid #d8d8d8; }
.tv-device-art--monitor .tv-device-screen { inset: 4% 2.5%; }
.tv-device-art--monitor .tv-device-brand { bottom: -10px; color: var(--ink-soft); font-size: 6px; }
.tv-device-art--mobile .tv-device-frame { left: 18%; top: 3%; width: 53%; height: 88%; border-radius: 10px; }
.tv-device-art--mobile .tv-device-screen { inset: 5% 4% 7%; border-radius: 3px; }
.tv-device-art--mobile .tv-device-base { display: none; }
.tv-device-art--mobile .tv-device-extra { display: block; position: absolute; width: 24%; height: 56%; right: 8%; bottom: 9%; padding: 7px 3px; border: 2px solid var(--ink-soft); border-radius: 7px; background: var(--ink); }
.tv-device-art--mobile .tv-device-extra span { display: block; height: 100%; border-radius: 2px; background: linear-gradient(135deg, #ffc58a 45%, #f58415 46%); }
.tv-device-art--box .tv-device-frame { top: 6%; height: 65%; }
.tv-device-art--box .tv-device-base { bottom: 19%; height: 10%; }
.tv-device-art--box .tv-device-extra { display: block; position: absolute; left: 33%; bottom: 1%; width: 35%; height: 11%; border: 1px solid var(--ink-soft); border-radius: 6px; background: var(--ink); }
.tv-device-art--box .tv-device-extra::after { content: ''; position: absolute; right: 12%; top: 40%; width: 4px; height: 4px; border-radius: 50%; background: var(--orange); }
.tv-device-art--laptop .tv-device-frame { left: 7%; width: 86%; }
.tv-device-art--laptop .tv-device-base { width: 100%; left: 0; bottom: 14%; height: 5%; border-radius: 0 0 50% 50%; }
.tv-device-art--laptop .tv-device-base::after { display: none; }
.tv-device-screen video { position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; object-fit: contain; background: var(--ink); visibility: hidden; pointer-events: none; }
.tv-device-preview[data-preview-state="playing"] video { visibility: visible; }
.tv-device-preview .tv-device-frame { isolation: isolate; }
.tv-device-preview .tv-device-extra { isolation: isolate; z-index: 1; }
.tv-device-preview .tv-device-extra > span { position: relative; overflow: hidden; }
.tv-device-preview .tv-device-extra [data-preview-mirror-screen] { position: absolute; inset: 0; overflow: hidden; }
.tv-preview-mirror { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: contain; background: #222; visibility: hidden; pointer-events: none; }
.tv-device-preview[data-preview-state="playing"] .tv-preview-mirror[data-ready="true"] { visibility: visible; }
.iptv-hero__devices { display: grid; align-items: center; min-width: 0; }
.tv-device-collage { width: 100%; min-width: 0; }
.tv-device-collage__stage { position: relative; width: 100%; aspect-ratio: 600 / 269; isolation: isolate; }
.tv-collage-layer { position: absolute; inset: 0; isolation: isolate; pointer-events: none; }
.tv-collage-layer > img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; pointer-events: none; }
.tv-collage-layer--tv { z-index: 1; }
.tv-collage-layer--laptop { z-index: 2; }
.tv-collage-layer--tablet { z-index: 3; }
.tv-collage-layer--phone { z-index: 4; }
.tv-device-collage__label { display: block; margin-top: 24px; text-align: center; color: var(--muted); font: 500 13px/1.5 var(--font-body); }
.tv-collage-screen { position: absolute; display: block; padding: 0; margin: 0; border: 0; border-radius: 0; overflow: hidden; background: transparent; cursor: pointer; pointer-events: auto; }
.tv-collage-screen:focus-visible { outline: 2px solid var(--orange); outline-offset: 3px; }
/* Screen apertures measured on the unmodified 600×269 provider layers. */
.tv-collage-layer--tv .tv-collage-screen { left: 35.3333%; top: 4.8327%; width: 52.3333%; height: 66.171%; }
.tv-collage-layer--laptop .tv-collage-screen { left: 5.8333%; top: 39.0335%; width: 37.3333%; height: 53.1599%; }
.tv-collage-layer--tablet .tv-collage-screen { left: 76.3333%; top: 46.0967%; width: 15.5%; height: 47.5836%; }
.tv-collage-layer--phone .tv-collage-screen { left: 91.8333%; top: 63.5688%; width: 7.1667%; height: 31.2268%; }
.tv-device-collage .tv-collage-video { position: absolute; inset: 0; width: 100%; height: 100%; visibility: hidden; object-fit: contain; background: #111; pointer-events: none; }
.tv-device-collage .tv-collage-screen[data-playing="true"] video { visibility: visible; }
.iptv-device__platform { margin: 0 0 8px; font-size: 13px; line-height: 1.5; color: var(--muted); }
.iptv-device__links { display: flex; flex-direction: column; align-items: stretch; gap: 16px; width: 100%; padding-top: 28px; margin-top: auto; }

/* Local subscription catalogue and device guides. No remote page embeds. */
.iptv-package-note { max-width: 1020px; margin: 0 0 28px; font-size: 14px; line-height: 1.65; color: var(--muted); }
.iptv-package-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); align-items: start; gap: 20px; }
.iptv-package { min-width: 0; padding: 24px; border: 1px solid var(--line); border-radius: 24px; background: var(--paper); }
.iptv-package h3 { min-height: 2.6em; margin: 0 0 12px; font-size: 20px; line-height: 1.3; }
.iptv-package__count { margin: 0 0 18px; color: var(--muted); font-size: 14px; }
.iptv-package__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin: 0 0 20px; }
.iptv-package__price strong { font: 700 30px/1.2 var(--font-display); color: var(--ink); }
.iptv-package__price span { color: var(--muted); font-size: 13px; }
.iptv-package > .button { width: 100%; }
.iptv-package__details { margin-top: 20px; border-top: 1px solid var(--line); }
.iptv-package__details summary, .iptv-guide summary { display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 48px; cursor: pointer; list-style: none; color: var(--ink); font: 600 15px/1.4 var(--font-body); }
.iptv-package__details summary::-webkit-details-marker, .iptv-guide summary::-webkit-details-marker { display: none; }
.iptv-package__details summary > span, .iptv-guide summary > span { flex: none; color: var(--link); font-size: 22px; }
.iptv-page details[open] > summary > span { display: none; }
.iptv-page details[open] > summary::after { content: '−'; color: var(--link); font-size: 22px; }
.iptv-page details > summary:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 4px; border-radius: 4px; }
.iptv-package__catalogue { padding-top: 8px; }
.iptv-package__catalogue label { display: block; margin: 12px 0 6px; font-size: 13px; color: var(--ink-soft); }
.iptv-package__catalogue :is(input, select) { width: 100%; min-width: 0; min-height: 44px; padding: 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); color: var(--ink); font: 400 14px var(--font-body); }
.iptv-package__catalogue :is(input, select):focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
.iptv-package__results, .iptv-package__empty { margin: 12px 0; font-size: 13px; color: var(--muted); }
.iptv-package__channels { max-height: 260px; overflow-y: auto; overscroll-behavior: contain; padding: 0; margin: 0; list-style: none; }
.iptv-package__channels li { display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 8px 4px; border-bottom: 1px solid var(--line); font-size: 13px; line-height: 1.4; overflow-wrap: anywhere; }
.iptv-package__channels li[hidden], .iptv-package__empty[hidden] { display: none; }
.iptv-package__channels img { flex: none; object-fit: contain; background: #fff; border-radius: 5px; }
.iptv-package__fallback { display: grid; place-items: center; flex: none; width: 28px; height: 28px; border-radius: 5px; background: var(--orange-soft); color: var(--link); font-size: 10px; }
.iptv-guides { display: grid; gap: 12px; margin-bottom: 24px; }
.iptv-guide { border: 1px solid var(--line); border-radius: 18px; background: var(--paper); }
.iptv-guide summary { padding: 18px 24px; font-size: 17px; }
.iptv-guide__body { padding: 0 24px 24px; max-width: 980px; }
.iptv-guide__body ol { padding-left: 24px; margin: 0 0 20px; }
.iptv-guide__body li { padding: 8px 0 8px 8px; font-size: 15px; line-height: 1.65; color: var(--ink-soft); }
.iptv-guide__body li::marker { color: var(--link); font-weight: 600; }
.iptv-guide__body > p { color: var(--muted); font-size: 13px; line-height: 1.6; }
@media (max-width: 1100px) { .iptv-package-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) {
  .iptv-package-grid { grid-template-columns: 1fr; }
  .iptv-package h3 { min-height: 0; }
  .iptv-guide summary { padding: 16px; font-size: 16px; }
  .iptv-guide__body { padding: 0 16px 20px; }
}

@media (max-width: 1100px) {
  .iptv-device-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .iptv-source-note { flex-direction: column; gap: 16px; }
  .iptv-feature { padding: 24px; }
}
@media (max-width: 700px) {
  .iptv-page .iptv-features { padding-block: 24px; }
  .iptv-page [id] { scroll-margin-top: 130px; }
  .iptv-feature-grid { grid-template-columns: minmax(0, 1fr); }
  .iptv-feature__value { margin-bottom: 16px; }
}
@media (max-width: 480px) {
  .iptv-device-grid { grid-template-columns: minmax(0, 1fr); }
  .iptv-device { padding: 24px; }
  .iptv-hero .inline-actions { align-items: stretch; flex-direction: column; }
  .iptv-hero .button { width: 100%; }
}
@media (hover: none) {
  .tv-preview-hover { display: none; }
  .tv-preview-touch { display: inline; }
}
