/* v15.15.3 Registered Customers: UID + clean controls */
.user-table .uid-col{min-width:205px}
.user-table .controls-col{min-width:285px;width:285px;vertical-align:middle}
.customer-uid-wrap{display:flex;align-items:center;gap:7px;min-width:0}
.customer-uid-text{
  display:block;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;color:var(--muted)
}
.customer-copy-uid{
  flex:0 0 auto;border:1px solid var(--border);border-radius:8px;background:var(--panel2);
  color:var(--text);min-height:30px;padding:4px 8px;font-size:11px;font-weight:800;cursor:pointer
}
.customer-controls-inner{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-height:38px}
.customer-controls-inner .btn{min-height:34px;padding:6px 10px;white-space:nowrap}
.customer-delete-profile{background:#ef5b68!important;color:#fff!important;border-color:#ef5b68!important}
.customer-current-account{
  display:inline-flex;align-items:center;min-height:34px;padding:6px 10px;border:1px solid var(--border);
  border-radius:9px;color:var(--muted);background:var(--panel2);font-size:12px;font-weight:800;white-space:nowrap
}
@media(max-width:1100px){
  .user-table .uid-col{min-width:180px}
  .user-table .controls-col{min-width:240px;width:auto}
  .customer-uid-text{max-width:125px}
}
@media(max-width:760px){
  .user-table .controls-col{min-width:210px}
  .customer-controls-inner{align-items:stretch}
  .customer-controls-inner .btn{min-height:40px}
}

/* v15.16 Discord Support Feed */
.discord-support-card{margin-bottom:14px}
.discord-support-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.discord-support-head h3{margin:4px 0 6px}
.discord-status-pill{display:inline-flex;align-items:center;min-height:31px;padding:5px 10px;border:1px solid var(--line);border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}
.discord-support-grid{display:grid;grid-template-columns:2fr 1fr;gap:12px;margin-top:14px;align-items:end}
.discord-support-grid label{display:block;font-size:12px;color:var(--muted);font-weight:700}
.discord-support-grid input[type="text"],
.discord-support-grid input[type="password"]{width:100%;margin-top:5px}
.discord-toggle-label{display:flex!important;align-items:center;gap:9px;min-height:42px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.discord-toggle-label input{width:auto!important;min-height:auto!important;margin:0!important}
.discord-support-actions{display:flex;gap:8px;flex-wrap:wrap}
.discord-event-preview{margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.discord-event-preview strong,.discord-event-preview span{display:block}
.discord-event-preview span{margin-top:3px;color:var(--muted);font-size:12px}
.discord-security-note{margin-top:9px}
@media(max-width:760px){
  .discord-support-grid{grid-template-columns:1fr}
  .discord-support-actions .btn{min-height:44px;flex:1}
}

:root{
  --bg:#05070b;--panel:#0d1219;--panel2:#131a24;--text:#f7f9fc;--muted:#9aa7b7;
  --accent:#31e981;--blue:#14b8ff;--danger:#ff5f70;--warning:#ffbd45;--line:#26313e;
  --header:72px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)}
body{min-height:100vh;overflow-x:hidden}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
.hidden{display:none!important}
.shell{width:100%;max-width:1600px;margin:auto;padding:0 34px}
header{position:fixed;inset:0 0 auto 0;height:var(--header);z-index:50;display:flex;align-items:center;background:rgba(5,7,11,.88);backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,255,255,.07)}
.nav{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{display:flex;align-items:center;gap:12px;font-weight:950;letter-spacing:.4px}
.logo{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),var(--blue));color:#03110a;font-size:21px;font-weight:950}
.nav-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.btn{min-height:44px;border:0;border-radius:12px;padding:0 16px;font-weight:850;background:var(--accent);color:#03110a}
.btn.alt{background:#161e28;color:var(--text);border:1px solid var(--line)}
.btn.blue{background:var(--blue);color:#04121a}
.btn.danger{background:var(--danger);color:white}
.btn.warn{background:var(--warning);color:#1c1200}
.btn:disabled{opacity:.48;cursor:not-allowed}
.muted{color:var(--muted)}

#publicView{padding-top:var(--header);min-height:100vh;background:
radial-gradient(circle at 12% 5%,rgba(20,184,255,.14),transparent 29%),
radial-gradient(circle at 86% 7%,rgba(49,233,129,.11),transparent 27%),
linear-gradient(180deg,#070a0f,#05070b 65%)}
.hero{min-height:calc(100vh - var(--header));display:grid;grid-template-columns:minmax(0,1.2fr) minmax(420px,.8fr);gap:64px;align-items:center;padding:64px 0}
.badge{display:inline-flex;padding:8px 12px;border-radius:999px;color:#a9ffcc;background:rgba(49,233,129,.08);border:1px solid rgba(49,233,129,.22);font-size:13px;font-weight:850}
h1{font-size:clamp(54px,7vw,104px);line-height:.92;letter-spacing:-5px;margin:22px 0;max-width:900px}
.grad{background:linear-gradient(90deg,#fff 0%,var(--accent) 52%,var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{max-width:760px;font-size:clamp(17px,1.5vw,21px);line-height:1.7;color:var(--muted)}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:30px}
.hero-card,.card{background:linear-gradient(180deg,#111821,#0b1017);border:1px solid var(--line);border-radius:22px}
.hero-card{padding:28px;box-shadow:0 30px 80px rgba(0,0,0,.32)}
.hero-card h3,.card h3{margin:0 0 16px}
.steps{display:grid;gap:12px}
.step{display:grid;grid-template-columns:46px 1fr;gap:13px;padding:15px;background:#0a0f15;border:1px solid #202a36;border-radius:16px}
.step-num{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:#17212c;color:var(--accent);font-weight:950}
.step b{display:block;margin:3px 0 5px}.step span{color:var(--muted);line-height:1.5}
.code{font-size:31px;font-weight:950;letter-spacing:4px;color:var(--accent)}
.home-section{padding:72px 0}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:22px}
.section-head h2,.top-title h2{font-size:36px;margin:0}.section-head p,.top-title p{margin:6px 0 0;color:var(--muted)}
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.card{padding:22px}.card p{color:var(--muted);line-height:1.6;margin:0}
.notice{padding:17px 18px;border-radius:14px;background:rgba(20,184,255,.07);border:1px solid rgba(20,184,255,.2);color:#cdefff}
footer{padding:34px 0 42px;border-top:1px solid var(--line);color:var(--muted);line-height:1.6}

#portalView{padding-top:var(--header);min-height:100vh}
.app-layout{display:grid;grid-template-columns:285px minmax(0,1fr);min-height:calc(100vh - var(--header))}
.sidebar{position:sticky;top:var(--header);height:calc(100vh - var(--header));overflow:auto;background:#080c11;border-right:1px solid var(--line);padding:22px 18px;display:flex;flex-direction:column}
.profile-card{padding:16px;border-radius:16px;background:#0f151d;border:1px solid var(--line);margin-bottom:18px}
.profile-card b{display:block;font-size:18px}.profile-card span{display:block;color:var(--muted);font-size:13px;margin-top:4px;overflow-wrap:anywhere}
.status-pill{display:inline-flex!important;width:auto!important;padding:5px 8px!important;margin-top:10px!important;border-radius:999px;border:1px solid rgba(49,233,129,.2);background:rgba(49,233,129,.07);color:#95ffbe!important}
.side-menu{display:grid;gap:8px}
.side-footer{margin-top:auto;padding-top:22px;border-top:1px solid var(--line);display:grid;gap:8px}
.side-footer .btn{text-align:left;width:100%}.side-menu button{text-align:left;width:100%}
.main-panel{min-width:0;padding:30px 34px 60px;background:radial-gradient(circle at 100% 0,rgba(20,184,255,.06),transparent 28%),#070a0f}
.top-title{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:22px}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.stat{padding:18px;background:#0f151d;border:1px solid var(--line);border-radius:16px}
.stat small{display:block;color:var(--muted)}.stat strong{display:block;font-size:27px;margin-top:5px}
.announcement-list,.admin-list{display:grid;gap:11px}
.announcement{padding:18px;border:1px solid var(--line);border-radius:16px;background:#0d141c}
.announcement .meta{font-size:12px;color:var(--muted);margin-bottom:7px}
.announcement h4{margin:0 0 7px;font-size:18px}.announcement p{margin:0;white-space:pre-wrap;line-height:1.6;color:#d0d7e1}
.admin-columns{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
  align-items:start;
}
.admin-column{
  display:flex;
  flex-direction:column;
  gap:12px;
  min-width:0;
}
.admin-wide-stack{
  display:flex;
  flex-direction:column;
  gap:12px;
  margin-top:12px;
}
.admin-columns>.admin-column>.card,
.admin-wide-stack>.card{
  width:100%;
  height:auto;
  min-height:0;
}
.server-status-admin-card{
  padding:14px 16px;
}
.server-status-admin-card>h3{
  margin:0 0 2px;
  font-size:17px;
}
.server-status-admin-card>p{
  margin:0 0 8px;
  font-size:11px;
  line-height:1.3;
}
.server-status-admin-card .server-status-admin-preview{
  margin:0 0 8px;
  padding:6px 10px;
}
.server-status-admin-card label{
  margin:8px 0 5px;
  font-size:11px;
}
.server-status-admin-card input,
.server-status-admin-card select{
  min-height:38px;
  padding:8px 11px;
  font-size:14px;
}
.server-status-admin-actions{
  margin-top:8px;
}
.server-status-admin-actions .btn{
  min-height:34px;
  padding:7px 12px;
  font-size:11px;
}
.server-status-admin-card .msg{
  min-height:12px;
  margin-top:5px;
}
.admin-feature-card{
  padding:20px;
}
.admin-bottom-card{
  align-self:start;
  min-width:0;
}
.admin-bottom-card .table-wrap{
  max-height:440px;
  overflow:auto;
}
.admin-bottom-card .outage-list{
  max-height:440px;
  overflow:auto;
}
.admin-outage-slot{
  min-height:0;
  display:flex;
  flex-direction:column;
}
.admin-outage-slot .outage-list{
  max-height:440px;
  overflow:auto;
}
label{display:block;font-size:13px;font-weight:750;color:#c4ceda;margin:14px 0 7px}
input,textarea,select{width:100%;border:1px solid var(--line);background:#080c12;color:white;border-radius:12px;padding:13px 14px;outline:none;font-size:16px}
input:focus,textarea:focus,select:focus{border-color:var(--blue)}
textarea{min-height:145px;resize:vertical}
.msg{min-height:20px;margin-top:10px;font-size:13px;color:var(--muted)}.msg.good{color:#75ffab}.msg.error{color:#ff8f9b}
.admin-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px;background:#090e14;border:1px solid var(--line);border-radius:13px}
.admin-item small{display:block;color:var(--muted);margin-top:4px}
.table-wrap{overflow:auto}
.user-table{width:100%;border-collapse:collapse;min-width:760px}
.user-table th,.user-table td{padding:11px 9px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.customer-date-cell{
  white-space:nowrap;
  color:var(--muted);
  font-size:11px;
}
.customer-activity-cell{
  min-width:120px;
}
.customer-activity-cell strong,
.customer-activity-cell small{
  display:block;
}
.customer-activity-cell strong{
  color:var(--text);
  font-size:11px;
  white-space:nowrap;
}
.customer-activity-cell small{
  margin-top:3px;
  color:var(--muted);
  font-size:9px;
  white-space:nowrap;
}
.user-table th{font-size:12px;color:var(--muted)}
.tag{display:inline-flex;padding:5px 8px;border-radius:999px;border:1px solid var(--line);font-size:12px}
.tag.admin{color:#a8ddff;background:rgba(20,184,255,.06);border-color:rgba(20,184,255,.24)}
.tag.customer{color:#a5ffca;background:rgba(49,233,129,.05);border-color:rgba(49,233,129,.2)}
.user-actions{display:flex;gap:6px;flex-wrap:wrap}
.mini{min-height:34px;padding:0 9px;border-radius:9px;font-size:12px}
.modal{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.76);display:grid;place-items:center;padding:20px}
.modal-card{width:min(480px,100%);padding:24px;background:#0f151d;border:1px solid var(--line);border-radius:22px;box-shadow:0 30px 90px rgba(0,0,0,.6)}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:15px}.modal-head h2{margin:0}
.x{border:0;background:transparent;color:var(--muted);font-size:28px}
.tabs{display:grid;grid-template-columns:1fr 1fr;gap:5px;background:#080c11;border:1px solid var(--line);padding:5px;border-radius:12px;margin:18px 0}
.tab{min-height:42px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-weight:850}.tab.active{background:#19222d;color:white}
.empty{color:var(--muted)}
@media(max-width:1100px){
 .admin-columns{grid-template-columns:1fr}
 .admin-outage-slot{min-height:0;height:auto}
 .hero{grid-template-columns:1fr;gap:34px;min-height:auto}
 .feature-grid{grid-template-columns:1fr}
 .admin-columns{grid-template-columns:1fr}
 .stat-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:820px){
  .app-layout{grid-template-columns:1fr}
  .sidebar{
    position:static;
    height:auto;
    border-right:0;
    border-bottom:1px solid var(--line);
  }
  .side-menu{grid-template-columns:repeat(2,minmax(0,1fr))}
  .side-footer{margin-top:10px;padding-top:10px}
  .section-head,.top-title{
    align-items:flex-start;
    flex-direction:column;
  }
}
@media(max-width:520px){
  .hero-actions .btn{width:100%}
  .side-menu{grid-template-columns:1fr}
}

/* Realtime ticker bars */
.ticker-bar{
  width:100%;
  height:42px;
  display:flex;
  align-items:center;
  overflow:hidden;
  background:#0a1118;
  border-bottom:1px solid var(--line);
  color:#eef6ff;
  position:relative;
}
.ticker-bar.public{background:#08140f;border-bottom-color:rgba(49,233,129,.24)}
.ticker-label{
  flex:0 0 auto;
  height:100%;
  display:flex;
  align-items:center;
  padding:0 14px;
  font-size:12px;
  font-weight:950;
  letter-spacing:.7px;
  color:#03110a;
  background:var(--accent);
  z-index:2;
}
.ticker-bar.customer .ticker-label{background:var(--blue);color:#04121a}
.ticker-window{min-width:0;overflow:hidden;flex:1;white-space:nowrap}
.ticker-track{
  display:inline-flex;
  align-items:center;
  min-width:200%;
  padding-left:100%;
  animation:tickerMove 32s linear infinite;
  will-change:transform;
}
.ticker-track span{
  display:inline-block;
  min-width:100vw;
  box-sizing:border-box;
  padding-right:90px;
  font-weight:750;
  font-size:14px;
}
.ticker-bar:hover .ticker-track{animation-play-state:paused}
@keyframes tickerMove{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}
.broadcast-controls{
  margin-top:22px;
  padding-top:20px;
  border-top:1px solid var(--line);
}
.broadcast-preview{
  margin-top:12px;
  border:1px solid var(--line);
  border-radius:12px;
  overflow:hidden;
}
.switch-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
  margin-top:12px;
}
.switch-state{
  font-size:13px;
  color:var(--muted);
}
.switch-state.on{color:#75ffab}
@media (prefers-reduced-motion: reduce){
  .ticker-track{animation:none;padding-left:18px;white-space:normal;min-width:0}
  .ticker-window{white-space:normal}
}


.public-messages-section{padding:0 0 64px}
.public-messages-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.public-message-card{
  padding:20px;
  border:1px solid var(--line);
  border-radius:18px;
  background:linear-gradient(180deg,#101821,#0b1118);
}
.public-message-card .pm-meta{font-size:12px;color:var(--muted);margin-bottom:8px}
.public-message-card h3{margin:0 0 8px;font-size:20px}
.public-message-card p{margin:0;color:#cdd7e3;line-height:1.6;white-space:pre-wrap}
.public-message-admin{margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.public-message-admin-list{display:grid;gap:10px;margin-top:15px}
.public-message-admin-row{
  display:flex;justify-content:space-between;gap:12px;align-items:flex-start;
  padding:13px;border:1px solid var(--line);border-radius:12px;background:#090e14
}
.public-message-admin-row small{display:block;color:var(--muted);margin-top:4px}
@media(max-width:900px){.public-messages-grid{grid-template-columns:1fr}}


.outage-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(420px,1.2fr);gap:18px}
.outage-list{display:grid;gap:10px}
.outage-card{
  padding:16px;border:1px solid var(--line);border-radius:14px;background:#0a1017
}
.outage-card.open{border-color:rgba(255,189,69,.35)}
.outage-card.resolved{opacity:.72}
.outage-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.outage-card h4{margin:0 0 5px;font-size:17px}
.outage-meta{font-size:12px;color:var(--muted);line-height:1.5}
.outage-body{margin-top:10px;color:#d4dce6;white-space:pre-wrap;line-height:1.55}
.outage-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}
.outage-badge{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:12px;border:1px solid var(--line)}
.outage-badge.open{color:#ffd27a;border-color:rgba(255,189,69,.32);background:rgba(255,189,69,.06)}
.outage-badge.resolved{color:#82ffb4;border-color:rgba(49,233,129,.25);background:rgba(49,233,129,.05)}
@media(max-width:1000px){.outage-grid{grid-template-columns:1fr}}

.customer-support-section{
  margin-top:16px;
  padding:18px;
  border:1px solid color-mix(in srgb,var(--blue) 24%,var(--line));
  border-radius:16px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--blue) 5%,var(--panel2)),var(--panel2));
}
.customer-support-heading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  margin-bottom:12px;
}
.customer-support-heading small{
  display:block;
  color:var(--blue);
  font-size:9px;
  font-weight:950;
  letter-spacing:.55px;
}
.customer-support-heading h3{
  margin:3px 0 5px;
  font-size:19px;
}
.customer-support-heading p{
  margin:0;
  color:var(--muted);
  font-size:12px;
}
.customer-support-heading-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex:0 0 auto;
}
.customer-support-heading-actions>span{
  min-width:32px;
  height:28px;
  display:grid;
  place-items:center;
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--muted);
  font-size:10px;
  font-weight:900;
}
.customer-support-list,
.support-thread-list{
  display:grid;
  gap:12px;
}
.support-thread{
  border:1px solid var(--line);
  border-radius:14px;
  background:var(--panel);
  overflow:hidden;
}
.support-thread.open{border-color:rgba(255,189,69,.28)}
.support-thread.resolved{border-color:rgba(49,233,129,.18)}
.support-thread-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:14px;
  border-bottom:1px solid var(--line);
}
.support-thread-title{min-width:0}
.support-thread-title h4{
  margin:0 0 4px;
  font-size:15px;
}
.support-thread-title small{
  display:block;
  color:var(--muted);
  font-size:10px;
  line-height:1.45;
}
.support-thread-messages{
  display:grid;
  gap:8px;
  padding:12px 14px;
  max-height:320px;
  overflow:auto;
  -webkit-overflow-scrolling:touch;
}
.support-message{
  max-width:86%;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--panel2);
}
.support-message.customer{justify-self:start}
.support-message.admin{
  justify-self:end;
  border-color:color-mix(in srgb,var(--blue) 28%,var(--line));
  background:color-mix(in srgb,var(--blue) 7%,var(--panel2));
}
.support-message-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:5px;
}
.support-message-head b{font-size:10px}
.support-message-head small{font-size:8px;color:var(--muted)}
.support-message-body{
  color:var(--text);
  font-size:11px;
  line-height:1.5;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}
.support-reply-box{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  padding:12px 14px 14px;
  border-top:1px solid var(--line);
  align-items:end;
}
.support-reply-box textarea{
  min-height:70px;
  max-height:160px;
  margin:0;
  resize:vertical;
}
.support-reply-box .btn{
  min-height:44px;
  white-space:nowrap;
}
.support-ticket-actions{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  padding:0 14px 14px;
}
.support-request-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:12px;
}
.admin-outage-slot .outage-list{
  max-height:720px;
}
.admin-outage-slot .support-thread-messages{
  max-height:260px;
}
.support-last-from{
  display:inline-flex;
  margin-top:5px;
  color:var(--muted);
  font-size:9px;
  font-weight:850;
}
.support-thread.resolved .support-last-from{
  color:var(--accent);
}
@media(max-width:640px){
  .customer-support-heading{
    flex-direction:column;
  }
  .customer-support-heading-actions{
    width:100%;
  }
  .customer-support-heading-actions .btn{
    flex:1;
  }
  .support-message{
    max-width:94%;
  }
  .support-reply-box{
    grid-template-columns:1fr;
  }
  .support-reply-box .btn{
    width:100%;
  }
  .support-request-actions .btn{
    width:100%;
  }
}




/* Header live broadcast + responsive header */
.header-broadcast{
  flex:1 1 260px;
  min-width:0;
  max-width:900px;
  overflow:hidden;
  margin:0 20px;
  height:38px;
  display:flex;
  align-items:center;
}

.header-broadcast-window{
  width:100%;
  min-width:0;
  overflow:hidden;
  white-space:nowrap;
}

.header-broadcast-track{
  display:inline-flex;
  align-items:center;
  min-width:200%;
  padding-left:100%;
  animation:headerBroadcastMove 28s linear infinite;
  will-change:transform;
}

.header-broadcast-track span{
  display:inline-block;
  min-width:100%;
  box-sizing:border-box;
  padding-right:120px;
  font-size:17px;
  line-height:1.2;
  font-weight:850;
  color:#c9fbe0;
  letter-spacing:.1px;
}

@keyframes headerBroadcastMove{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}

@media (hover:hover) and (pointer:fine){
  .header-broadcast:hover .header-broadcast-track{
    animation-play-state:paused;
  }
}

/* Large desktop */
@media(min-width:1400px){
  .header-broadcast-track span{font-size:18px}
  .header-broadcast{max-width:1050px}
}

/* Small desktop / landscape tablet */
@media(max-width:1180px){
  .shell{padding-left:24px;padding-right:24px}
  .header-broadcast{margin:0 12px;max-width:560px}
  .header-broadcast-track span{font-size:15px}
  .nav-actions{gap:6px}
  .nav-actions .btn{padding:0 12px}
}

/* Tablet: give the broadcast its own clean second row */
@media(max-width:900px){
  :root{--header:104px}

  header{
    height:var(--header);
    padding:7px 0;
  }

  .nav{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-rows:44px 38px;
    gap:5px 10px;
    align-items:center;
  }

  .brand{
    min-width:0;
    grid-column:1;
    grid-row:1;
  }

  .nav-actions{
    grid-column:2;
    grid-row:1;
    flex-wrap:nowrap;
    justify-content:flex-end;
    min-width:0;
  }

  .header-broadcast{
    grid-column:1 / -1;
    grid-row:2;
    width:100%;
    max-width:none;
    height:34px;
    margin:0;
    border-top:1px solid rgba(255,255,255,.06);
  }

  .header-broadcast-track span{
    font-size:14px;
    padding-right:90px;
  }

  /* "Hi, username" is useful on desktop but costs too much room on tablets. */
  #welcome{display:none!important}

  .hero{
    grid-template-columns:1fr;
    gap:30px;
    min-height:auto;
    padding:46px 0;
  }

  .feature-grid{grid-template-columns:1fr}
  .admin-columns{grid-template-columns:1fr}
  .outage-grid{grid-template-columns:1fr}
  .public-messages-grid{grid-template-columns:1fr}
}

/* Phones */
@media(max-width:640px){
  :root{--header:98px}

  .shell{padding-left:14px;padding-right:14px}

  header{padding:5px 0}

  .nav{
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-rows:42px 34px;
    gap:5px 8px;
  }

  .brand{
    gap:8px;
    font-size:14px;
    white-space:nowrap;
  }

  .tv-logo-home{
    width:38px;
    height:38px;
    flex-basis:38px;
    transform:scale(.9);
    transform-origin:left center;
  }

  .nav-actions .btn{
    min-height:38px;
    padding:0 9px;
    border-radius:10px;
    font-size:12px;
  }

  .header-broadcast{
    height:31px;
  }

  .header-broadcast-track span{
    font-size:13px;
    padding-right:70px;
  }

  .main-panel{padding:20px 14px 42px}
  .sidebar{padding:16px 14px}
  .stat-grid{grid-template-columns:1fr 1fr}
  .card{padding:18px}
  .hero-card{padding:20px}
  .code{font-size:27px}
}

/* Very narrow phones */
@media(max-width:430px){
  :root{--header:94px}

  .brand span{
    display:inline!important;
    max-width:112px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:12px;
  }

  /* Keep the most useful signed-in action visible without crowding. */
  #portalBtn{font-size:0;padding:0 11px}
  #portalBtn:after{content:"Portal";font-size:12px}

  #logoutBtn{font-size:0;padding:0 10px}
  #logoutBtn:after{content:"Exit";font-size:12px}

  #loginBtn,#signupBtn{
    padding:0 9px;
    font-size:11px;
  }

  .header-broadcast-track span{
    font-size:12.5px;
    padding-right:60px;
  }

  .stat-grid{grid-template-columns:1fr}
  .side-menu{grid-template-columns:1fr}
  h1{font-size:clamp(44px,14vw,64px);letter-spacing:-2.5px}
  .hero-actions .btn{width:100%}
}

/* Reduce animation for users/devices that request it */
@media(prefers-reduced-motion:reduce){
  .header-broadcast-track{
    animation:none;
    padding-left:0;
    min-width:100%;
  }

  .header-broadcast-track span{
    min-width:auto;
    padding-right:0;
    white-space:normal;
  }
}

/* One-time TV header animation */
.cut-brand{position:relative;z-index:8}
.cut-brand .logo{display:none!important}

.tv-logo-home{
  width:43px;
  height:43px;
  position:relative;
  flex:0 0 43px;
  opacity:0;
}

.tv-shell{
  position:absolute;
  z-index:2;
  left:2px;
  top:8px;
  width:39px;
  height:29px;
  border:2px solid #64717d;
  border-radius:7px;
  background:#171d23;
  box-shadow:inset 0 0 0 2px #080b0e,0 4px 10px rgba(0,0,0,.35);

  overflow:visible;
}

.tv-screen{
  position:absolute;
  left:5px;
  top:5px;
  width:23px;
  height:16px;
  border-radius:3px;
  background:#07130e;
  border:1px solid #2a5b43;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#31e981;
  font-size:10px;
  line-height:1;
}

.tv-shell i,.tv-shell b{
  position:absolute;
  right:3px;
  width:3px;
  height:3px;
  border-radius:50%;
  background:#89939b;
}

.tv-shell i{top:7px}
.tv-shell b{top:14px}

.tv-antenna:before,.tv-antenna:after{
  content:"";
  position:absolute;
  width:2px;
  height:12px;
  background:#77838c;
  top:0;
  left:20px;
  transform-origin:bottom;
}

.tv-antenna:before{transform:rotate(-38deg)}
.tv-antenna:after{transform:rotate(38deg)}

.cut-intro{
  position:absolute;
  inset:0;
  z-index:30;
  pointer-events:none;
  overflow:hidden;
}

.runner-tv{
  position:absolute;
  width:43px;
  height:43px;
  top:9px;
  left:-90px;
  z-index:34;
  opacity:0;
}

/* Traveling TV enters with a trailing cord; the cord snaps just before the TV parks. */

/* Traveling TV power cord
   IMPORTANT: the attached cord is drawn from .tv-shell itself so the
   connection point is physically part of the moving TV cabinet. */
.tv-cord-wrap{
  position:absolute;
  left:4px;
  top:34px;
  width:1px;
  height:1px;
  z-index:1;
  pointer-events:none;
  overflow:visible;
}

/* The cord is literally part of the TV shell.
   Its right edge overlaps 5px INTO the cabinet so a gap is impossible. */
.runner-tv .tv-shell::before{
  content:"";
  position:absolute;
  right:34px;              /* shell width 39px -> 5px overlap into TV */
  top:21px;
  width:126px;
  height:18px;
  border-top:2px solid #66727c;
  border-radius:60% 0 0 0;
  transform-origin:right center;
  transform:rotate(3deg) scaleX(.96);
  filter:drop-shadow(0 2px 2px rgba(0,0,0,.45));
  z-index:-1;
  opacity:0;
}

/* Falling snapped piece starts from the exact same TV-side connection. */
.tv-cord-loose{
  position:absolute;
  right:0;
  top:0;
  width:118px;
  height:2px;
  border-radius:999px;
  background:#66727c;
  transform-origin:right center;
  opacity:0;
  filter:drop-shadow(0 2px 2px rgba(0,0,0,.4));
}



/* Brief spark at the exact TV/cord disconnect point. */
.tv-cord-spark{
  position:absolute;
  left:-2px;
  top:-2px;
  width:5px;
  height:5px;
  border-radius:50%;
  background:#fff7b0;
  opacity:0;
  transform:scale(.2);
  pointer-events:none;
  z-index:8;
}

.tv-cord-spark::before,
.tv-cord-spark::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:22px;
  height:2px;
  border-radius:999px;
  background:linear-gradient(90deg,transparent,#ffd54a 28%,#fff 50%,#ffd54a 72%,transparent);
  transform-origin:center;
}

.tv-cord-spark::before{
  transform:translate(-50%,-50%) rotate(35deg);
}

.tv-cord-spark::after{
  transform:translate(-50%,-50%) rotate(-35deg);
}

.cut-intro.play .tv-cord-spark{
  animation:tvCordSpark 4.2s linear forwards;
}

@keyframes tvCordSpark{
  0%,81.4%{
    opacity:0;
    transform:scale(.2);
    box-shadow:none;
  }
  81.8%{
    opacity:1;
    transform:scale(1.35);
    box-shadow:0 0 6px #fff,0 0 13px #ffd54a,0 0 22px rgba(255,189,69,.95);
  }
  82.4%{
    opacity:1;
    transform:scale(2.35);
    box-shadow:0 0 8px #fff,0 0 18px #ffd54a,0 0 30px rgba(255,189,69,.9);
  }
  83.2%{
    opacity:.65;
    transform:scale(1.25);
  }
  84%,100%{
    opacity:0;
    transform:scale(.2);
    box-shadow:none;
  }
}

.cut-intro.play .runner-tv .tv-shell::before{
  animation:tvCordAttached 4.2s linear forwards;
}

.cut-intro.play .tv-cord-loose{
  animation:tvCordLooseFall 4.2s linear forwards;
}

@keyframes tvCordAttached{
  0%,5%{
    opacity:0;
    transform:rotate(3deg) scaleX(.94);
  }
  7%{
    opacity:1;
    transform:rotate(3deg) scaleX(.96);
  }
  24%{
    transform:rotate(1deg) scaleX(1);
  }
  43%{
    transform:rotate(5deg) scaleX(1.04);
  }
  61%{
    transform:rotate(-2deg) scaleX(1.08);
  }
  75%{
    opacity:1;
    transform:rotate(1deg) scaleX(1.13);
  }
  81.8%{
    opacity:1;
    transform:rotate(-1deg) scaleX(1.20);
  }
  82%{
    opacity:1;
    transform:rotate(-2deg) scaleX(1.23);
  }
  82.1%,100%{
    opacity:0;
    transform:rotate(-2deg) scaleX(1.23);
  }
}

@keyframes tvCordLooseFall{
  0%,81.9%{
    opacity:0;
    transform:translate(0,0) rotate(0deg);
  }
  82%{
    opacity:1;
    transform:translate(0,0) rotate(-2deg);
  }
  86%{
    opacity:.95;
    transform:translate(-6px,9px) rotate(-12deg);
  }
  93%{
    opacity:.7;
    transform:translate(-14px,30px) rotate(-28deg);
  }
  100%{
    opacity:0;
    transform:translate(-20px,54px) rotate(-44deg);
  }
}


.cut-intro.play .runner-tv{
  animation:tvTravel 4.2s cubic-bezier(.2,.75,.25,1) forwards;
}

@keyframes tvTravel{
  0%{
    left:-90px;
    opacity:0;
    transform:translateX(-20px) rotate(0);
  }
  6%{
    opacity:1;
  }
  24%{
    transform:rotate(-4deg);
  }
  42%{
    transform:rotate(4deg);
  }
  60%{
    transform:rotate(-3deg);
  }
  78%{
    transform:rotate(2deg);
  }
  82%{
    transform:translateX(-2px) rotate(-4deg);
  }
  85%{
    transform:translateX(4px) rotate(4deg);
  }
  89%{
    transform:translateX(-1px) rotate(-2deg);
  }
  94%{
    opacity:1;
    transform:translateX(1px) rotate(1deg);
  }
  100%{
    left:var(--tv-final-left,20px);
    opacity:1;
    transform:translateX(0) rotate(0);
  }
}

@media(max-width:800px){
  .runner-tv{
    left:-80px;
  }

  @keyframes tvTravel{
    0%{
      left:-80px;
      opacity:0;
      transform:translateX(-16px) rotate(0);
    }
    6%{opacity:1}
    24%{transform:rotate(-4deg)}
    42%{transform:rotate(4deg)}
    60%{transform:rotate(-3deg)}
    78%{transform:rotate(2deg)}
    82%{transform:translateX(-2px) rotate(-4deg)}
    85%{transform:translateX(4px) rotate(4deg)}
    89%{transform:translateX(-1px) rotate(-2deg)}
    94%{opacity:1;transform:translateX(1px) rotate(1deg)}
    100%{
      left:var(--tv-final-left,18px);
      opacity:1;
      transform:translateX(0) rotate(0);
    }
  }
}
}

@media(prefers-reduced-motion:reduce){
  .cut-intro{display:none!important}
  .cut-brand .tv-logo-home{opacity:1!important}
}


/* Cross-device layout safety */
.nav,.brand,.nav-actions,.header-broadcast,.main-panel,.card,.hero-card{
  min-width:0;
}

img,svg,video,canvas{
  max-width:100%;
  height:auto;
}

button,.btn{
  max-width:100%;
}

input,textarea,select{
  max-width:100%;
}

@media(max-width:1000px){
  .outage-grid{grid-template-columns:1fr}
}

@media(max-width:760px){
  .user-table{min-width:680px}
  .table-wrap{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }

  .admin-item,
  .public-message-admin-row,
  .outage-head{
    flex-wrap:wrap;
  }

  .user-actions,
  .outage-actions{
    gap:8px;
  }
}


/* =========================
   INTERACTIVE TV + SPORTS GUIDE
   ========================= */
.sports-guide-section{
  padding:42px 0 76px;
  border-top:1px solid rgba(255,255,255,.05);
  background:
    radial-gradient(circle at 18% 0,rgba(20,184,255,.07),transparent 30%),
    radial-gradient(circle at 82% 0,rgba(49,233,129,.055),transparent 26%);
}
.sports-guide-shell{display:grid;gap:18px}
.guide-head{
  display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap
}
.guide-head h2{margin:0;font-size:clamp(30px,3.2vw,46px);letter-spacing:-1.5px}
.guide-head p{margin:7px 0 0;color:var(--muted);max-width:760px;line-height:1.6}
.guide-live-dot{
  display:inline-flex;align-items:center;gap:8px;
  padding:7px 10px;border-radius:999px;
  color:#b9ffd2;background:rgba(49,233,129,.07);
  border:1px solid rgba(49,233,129,.18);
  font-size:12px;font-weight:900
}
.guide-live-dot:before{
  content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 0 4px rgba(49,233,129,.12)
}

.guide-toolbar{
  display:grid;
  grid-template-columns:minmax(180px,1fr) auto auto;
  gap:10px;
  align-items:center;
  padding:13px;
  border:1px solid var(--line);
  border-radius:17px;
  background:#0b1017;
}
.guide-search{
  position:relative;min-width:0
}
.guide-search input{
  min-height:44px;padding-left:42px;background:#070b10
}
.guide-search:before{
  content:"⌕";position:absolute;left:14px;top:50%;transform:translateY(-50%);
  color:var(--muted);font-size:21px;z-index:2
}
.guide-date-controls,.guide-view-controls{
  display:flex;gap:7px;align-items:center;flex-wrap:wrap
}
.guide-date-label{
  min-width:130px;text-align:center;font-weight:900;font-size:13px;
  padding:0 6px
}
.guide-chip-row{
  display:flex;gap:8px;overflow-x:auto;padding:2px 0 4px;
  scrollbar-width:thin
}
.guide-chip{
  flex:0 0 auto;min-height:38px;border:1px solid var(--line);
  background:#0d141d;color:#dbe5ef;border-radius:999px;
  padding:0 13px;font-weight:850;font-size:13px
}
.guide-chip.active{
  color:#04120b;background:var(--accent);border-color:var(--accent)
}

.guide-summary-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px
}
.guide-summary{
  padding:14px 15px;border-radius:15px;background:#0d141c;border:1px solid var(--line)
}
.guide-summary small{display:block;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}
.guide-summary strong{display:block;margin-top:5px;font-size:23px}
.guide-summary strong.live{color:#79ffab}

.guide-layout{
  display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start
}
.guide-board{
  border:1px solid var(--line);border-radius:19px;overflow:hidden;background:#080d13;min-width:0
}
.guide-board-head{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 16px;background:#0d141c;border-bottom:1px solid var(--line)
}
.guide-board-head h3{margin:0;font-size:17px}
.guide-refresh{font-size:12px;color:var(--muted)}
.guide-list{display:grid}
.guide-game{
  display:grid;
  grid-template-columns:80px minmax(0,1.25fr) minmax(120px,.7fr) 110px;
  gap:13px;
  align-items:center;
  padding:15px 16px;
  border-bottom:1px solid rgba(255,255,255,.06);
  cursor:pointer;
  transition:background .16s ease,border-color .16s ease
}
.guide-game:last-child{border-bottom:0}
@media (hover:hover) and (pointer:fine){
  .guide-game:hover{background:#0e151e}
}
.guide-game.selected{background:rgba(20,184,255,.07);box-shadow:inset 3px 0 0 var(--blue)}
.guide-time{
  font-weight:950;font-size:13px;line-height:1.35
}
.guide-time .live-label{color:#77ffab}
.guide-time .final-label{color:#aab5c2}
.guide-teams{display:grid;gap:8px;min-width:0}
.guide-team-row{
  display:flex;align-items:center;gap:9px;min-width:0
}
.guide-team-logo{
  width:28px;height:28px;object-fit:contain;flex:0 0 28px;
  border-radius:50%;background:#121a23;padding:2px
}
.guide-team-name{
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:850
}
.guide-score{margin-left:auto;font-size:18px;font-weight:950}
.guide-network{
  min-width:0
}
.guide-network b{
  display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px
}
.guide-network small{
  display:block;margin-top:4px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.guide-fav{
  justify-self:end;
  width:42px;height:42px;border-radius:12px;border:1px solid var(--line);
  background:#101821;color:#8f9dad;font-size:20px
}
.guide-fav.active{color:#ffd166;border-color:rgba(255,209,102,.35);background:rgba(255,209,102,.06)}

.guide-side{
  display:grid;gap:12px;position:sticky;top:calc(var(--header) + 14px)
}
.guide-detail-card,.guide-now-card{
  padding:18px;border-radius:18px;background:#0d141c;border:1px solid var(--line)
}
.guide-detail-card h3,.guide-now-card h3{margin:0 0 12px}
.guide-detail-empty{color:var(--muted);line-height:1.6}
.guide-detail-match{
  display:grid;gap:12px
}
.guide-detail-top{
  display:flex;justify-content:space-between;gap:10px;align-items:flex-start
}
.guide-status-pill{
  display:inline-flex;padding:6px 8px;border-radius:999px;border:1px solid var(--line);
  font-size:11px;font-weight:900
}
.guide-status-pill.live{color:#8dffb7;border-color:rgba(49,233,129,.24);background:rgba(49,233,129,.06)}
.guide-detail-team{
  display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center
}
.guide-detail-team img{
  width:42px;height:42px;object-fit:contain;background:#121a23;border-radius:50%;padding:3px
}
.guide-detail-team strong{font-size:14px}
.guide-detail-team span{font-size:22px;font-weight:950}
.guide-meta{
  display:grid;gap:8px;padding-top:11px;border-top:1px solid var(--line)
}
.guide-meta-row{
  display:flex;justify-content:space-between;gap:12px;font-size:12px
}
.guide-meta-row span:first-child{color:var(--muted)}
.guide-meta-row span:last-child{text-align:right;font-weight:800}
.guide-now-list{display:grid;gap:8px}
.guide-now-item{
  padding:10px;border-radius:12px;background:#091017;border:1px solid rgba(255,255,255,.06);
  font-size:12px
}
.guide-now-item b{display:block;margin-bottom:4px}
.guide-now-item span{color:var(--muted)}

.guide-empty{
  padding:34px;text-align:center;color:var(--muted);line-height:1.65
}
.guide-loading{
  padding:34px;text-align:center;color:#b8c5d2
}
.guide-loading:before{
  content:"";display:inline-block;width:16px;height:16px;border-radius:50%;
  border:2px solid #34404d;border-top-color:var(--blue);margin-right:9px;vertical-align:-3px;
  animation:guideSpin .8s linear infinite
}
@keyframes guideSpin{to{transform:rotate(360deg)}}

.guide-view-list .guide-game{grid-template-columns:80px minmax(0,1fr) 110px}
.guide-view-list .guide-network{display:none}

@media(max-width:1100px){
  .guide-layout{grid-template-columns:1fr}
  .guide-side{position:static;grid-template-columns:1fr 1fr}
}
@media(max-width:900px){
  .guide-toolbar{grid-template-columns:1fr}
  .guide-date-controls,.guide-view-controls{justify-content:space-between}
  .guide-summary-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:700px){
  .sports-guide-section{padding:30px 0 56px}
  .guide-game{
    grid-template-columns:62px minmax(0,1fr) 46px;
    gap:9px;padding:13px 12px
  }
  .guide-network{display:none}
  .guide-side{grid-template-columns:1fr}
  .guide-summary-grid{grid-template-columns:1fr 1fr}
  .guide-head h2{font-size:31px}
}
@media(max-width:430px){
  .guide-summary-grid{grid-template-columns:1fr 1fr}
  .guide-summary strong{font-size:19px}
  .guide-time{font-size:12px}
  .guide-team-name{font-size:13px}
  .guide-score{font-size:16px}
}


/* Clean public homepage */
.clean-home-hero{
  min-height:calc(100vh - var(--header));
  display:flex;
  align-items:center;
  justify-content:center;
  padding:72px 0;
}

.clean-home-inner{
  width:100%;
  max-width:1000px;
  text-align:center;
  margin:0 auto;
}

.clean-home-inner h1{
  max-width:none;
  margin:0 auto 32px;
}

.clean-home-inner .hero-actions{
  justify-content:center;
  margin-top:0;
}

/* Customer portal setup guide */

/* v14.34 — clearer step-by-step setup guide */
.setup-guide-layout{
  display:grid;
  grid-template-columns:minmax(0,1.75fr) minmax(280px,.85fr);
  gap:18px;
  align-items:start;
}
.setup-walkthrough-card{padding:22px}
.setup-guide-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  margin-bottom:16px;
}
.setup-guide-head small,
.setup-code-side-card>small{
  display:block;
  color:var(--accent);
  font-size:9px;
  font-weight:950;
  letter-spacing:.65px;
}
.setup-guide-head h3{margin:4px 0 5px;font-size:21px}
.setup-guide-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.55}
.setup-time-pill{
  flex:0 0 auto;
  padding:7px 10px;
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--muted);
  font-size:9px;
  font-weight:900;
}
.setup-device-note{
  display:flex;
  gap:7px;
  flex-wrap:wrap;
  padding:11px 13px;
  margin-bottom:14px;
  border:1px solid color-mix(in srgb,var(--blue) 22%,var(--line));
  border-radius:12px;
  background:color-mix(in srgb,var(--blue) 5%,var(--panel2));
  font-size:11px;
  line-height:1.5;
}
.setup-device-note span{color:var(--muted)}
.setup-detailed-steps{display:grid;gap:10px}
.setup-detail-step{
  display:grid;
  grid-template-columns:48px minmax(0,1fr);
  gap:13px;
  padding:15px;
  border:1px solid var(--line);
  border-radius:14px;
  background:var(--panel2);
}
.setup-detail-num{
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  border-radius:12px;
  background:color-mix(in srgb,var(--accent) 10%,#132131);
  color:var(--accent);
  font-size:15px;
  font-weight:950;
}
.setup-detail-copy h4{margin:3px 0 6px;font-size:14px}
.setup-detail-copy p{margin:0;color:var(--muted);font-size:11px;line-height:1.6}
.setup-tip{
  margin-top:9px;
  padding:9px 11px;
  border-left:3px solid var(--blue);
  border-radius:7px;
  background:color-mix(in srgb,var(--blue) 5%,var(--panel));
  color:var(--muted);
  font-size:10px;
  line-height:1.55;
}
.setup-code-box{
  margin-top:11px;
  padding:15px;
  border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));
  border-radius:13px;
  background:color-mix(in srgb,var(--accent) 6%,var(--panel));
  text-align:center;
}
.setup-code-box small{display:block;color:var(--muted);font-size:8px;font-weight:950;letter-spacing:.7px}
.setup-code-box strong{
  display:block;
  margin:5px 0 3px;
  color:var(--accent);
  font-size:31px;
  line-height:1;
  letter-spacing:5px;
  font-variant-numeric:tabular-nums;
}
.setup-code-box span{color:var(--muted);font-size:9px}
.setup-guide-side{display:grid;gap:14px}
.setup-code-side-card{text-align:center;padding:20px}
.setup-code-side-card strong{
  display:block;
  margin:9px 0;
  color:var(--accent);
  font-size:30px;
  letter-spacing:4px;
}
.setup-code-side-card p{margin:0;color:var(--muted);font-size:11px;line-height:1.55}
.setup-help-improved h3{margin-bottom:12px}
.setup-help-items{display:grid;gap:11px}
.setup-help-items>div{
  padding-bottom:10px;
  border-bottom:1px solid var(--line);
}
.setup-help-items>div:last-child{border-bottom:0;padding-bottom:0}
.setup-help-items b{display:block;margin-bottom:3px;font-size:11px}
.setup-help-items span{display:block;color:var(--muted);font-size:10px;line-height:1.55}
.setup-support-btn{width:100%;margin-top:14px;min-height:44px}
.setup-safety-note{
  display:flex;
  gap:9px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:12px;
  color:var(--muted);
  font-size:9px;
  line-height:1.5;
}
.setup-safety-note b{color:var(--text)}
@media(max-width:980px){
  .setup-guide-layout{grid-template-columns:1fr}
  .setup-guide-side{grid-template-columns:1fr 1fr}
  .setup-safety-note{grid-column:1/-1}
}
@media(max-width:640px){
  .setup-walkthrough-card{padding:15px}
  .setup-guide-head{flex-direction:column}
  .setup-guide-side{grid-template-columns:1fr}
  .setup-safety-note{grid-column:auto}
  .setup-detail-step{grid-template-columns:40px minmax(0,1fr);padding:12px;gap:10px}
  .setup-detail-num{width:40px;height:40px}
  .setup-code-box strong,.setup-code-side-card strong{font-size:27px;letter-spacing:3px}
}

.setup-portal-grid{
  display:grid;
  grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);
  gap:18px;
  align-items:start;
}

.setup-main-card .steps{
  margin-top:8px;
}

.setup-help-card p{
  margin:0;
  color:var(--muted);
  line-height:1.7;
}

@media(max-width:900px){
  .clean-home-hero{
    min-height:auto;
    padding:74px 0 62px;
  }

  .clean-home-inner{
    text-align:left;
  }

  .clean-home-inner .hero-actions{
    justify-content:flex-start;
  }

  .setup-portal-grid{
    grid-template-columns:1fr;
  }
}

@media(max-width:640px){
  .clean-home-hero{
    padding:54px 0 46px;
  }

  .clean-home-inner h1{
    font-size:clamp(46px,15vw,72px);
    letter-spacing:-3px;
  }

  .clean-home-inner .hero-actions{
    display:grid;
    grid-template-columns:1fr;
    width:100%;
  }

  .clean-home-inner .hero-actions .btn{
    width:100%;
  }
}


/* =========================
   COMPACT HOME / GUIDE ABOVE THE FOLD
   ========================= */

/* The public hero should introduce the site, not consume the whole screen. */
.clean-home-hero{
  min-height:0;
  padding:34px 0 30px;
}

.clean-home-inner{
  max-width:1120px;
}

.clean-home-inner h1{
  font-size:clamp(48px,5.2vw,78px);
  line-height:.94;
  letter-spacing:-3.5px;
  margin:0 auto 20px;
}

.clean-home-inner .hero-actions{
  gap:9px;
}

/* Pull the sports guide directly up under the compact hero. */
.sports-guide-section{
  padding:20px 0 58px;
}

.sports-guide-shell{
  gap:13px;
}

.guide-head{
  align-items:center;
}

.guide-head h2{
  font-size:clamp(28px,2.7vw,40px);
  margin-top:3px;
}

.guide-head p{
  margin-top:4px;
  line-height:1.45;
  font-size:14px;
}

.guide-toolbar{
  padding:10px;
  gap:8px;
}

.guide-chip-row{
  padding-bottom:1px;
}

.guide-summary-grid{
  gap:8px;
}

.guide-summary{
  padding:10px 13px;
}

.guide-summary strong{
  font-size:20px;
  margin-top:3px;
}

.guide-board-head{
  padding:11px 14px;
}

.guide-game{
  padding:11px 14px;
}

/* On taller desktop screens, show even more guide content immediately. */
@media(min-width:1000px) and (min-height:760px){
  .clean-home-hero{
    padding-top:28px;
    padding-bottom:24px;
  }

  .sports-guide-section{
    padding-top:14px;
  }
}

/* Laptop / tablet landscape */
@media(max-width:1180px){
  .clean-home-hero{
    padding:30px 0 26px;
  }

  .clean-home-inner h1{
    font-size:clamp(46px,5.8vw,70px);
  }

  .sports-guide-section{
    padding-top:16px;
  }
}

/* Tablets */
@media(max-width:900px){
  .clean-home-hero{
    padding:26px 0 22px;
  }

  .clean-home-inner{
    text-align:center;
  }

  .clean-home-inner h1{
    font-size:clamp(44px,8vw,66px);
    margin-bottom:18px;
  }

  .clean-home-inner .hero-actions{
    justify-content:center;
  }

  .sports-guide-section{
    padding-top:14px;
  }

  .guide-head{
    gap:10px;
  }

  .guide-head p{
    max-width:100%;
  }
}

/* Phones */
@media(max-width:640px){
  .clean-home-hero{
    padding:20px 0 18px;
  }

  .clean-home-inner{
    text-align:left;
  }

  .clean-home-inner h1{
    font-size:clamp(40px,12vw,58px);
    letter-spacing:-2.5px;
    margin-bottom:16px;
  }

  .clean-home-inner .hero-actions{
    justify-content:flex-start;
    gap:8px;
  }

  .sports-guide-section{
    padding-top:10px;
  }

  .guide-head h2{
    font-size:28px;
  }

  .guide-live-dot{
    padding:6px 9px;
  }
}

@media(max-width:430px){
  .clean-home-hero{
    padding-top:16px;
  }

  .clean-home-inner h1{
    font-size:clamp(38px,12vw,52px);
  }

  .sports-guide-section{
    padding-top:8px;
  }
}



/* Sports-only guide polish */
.sports-guide-section{padding-top:14px}
.guide-head{margin-bottom:2px}
.guide-summary-grid{margin-top:2px}
@media(min-width:1000px){
  .guide-layout{grid-template-columns:minmax(0,1fr) 350px}
}


/* Combat sports additions */
.guide-game[data-game-id^="ufc:"]{
  background-image:linear-gradient(90deg,rgba(255,95,112,.035),transparent 34%);
}
.guide-game[data-game-id^="ufc:"] .guide-team-logo{
  border:1px solid rgba(255,255,255,.08);
}


/* =========================
   SPORTS HUB v10.6
   ========================= */
.sports-hub-tabs{
  display:flex;gap:8px;overflow-x:auto;padding:2px 0 4px;scrollbar-width:thin
}
.sports-hub-tab{
  flex:0 0 auto;min-height:42px;padding:0 15px;border-radius:12px;
  border:1px solid var(--line);background:#0c131b;color:#dbe5ef;
  font-size:13px;font-weight:900
}
.sports-hub-tab.active{
  background:linear-gradient(135deg,var(--accent),var(--blue));
  color:#03100a;border-color:transparent
}
.guide-featured-strip{
  display:grid;grid-template-columns:repeat(4,minmax(230px,1fr));gap:10px;
  overflow-x:auto;padding:2px 0 4px;scrollbar-width:thin
}
.guide-featured-card{
  min-width:230px;border:1px solid var(--line);border-radius:16px;
  background:linear-gradient(145deg,#0d151d,#080d13);padding:13px;
  cursor:pointer
}
.guide-featured-card{
  position:relative;
  overflow:hidden;
  min-height:190px;
}
.guide-featured-card:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:radial-gradient(circle at 82% 4%,rgba(20,184,255,.07),transparent 35%);
}
.guide-featured-card>*{position:relative;z-index:1}
.guide-featured-visual{
  min-height:64px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  margin:9px 0 5px;
}
.guide-featured-team{
  width:56px;
  height:56px;
  display:grid;
  place-items:center;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.075);
  background:rgba(255,255,255,.025);
  overflow:hidden;
}
.guide-featured-team img{
  width:46px;
  height:46px;
  object-fit:contain;
}
.guide-featured-vs{
  color:var(--muted);
  font-size:9px;
  font-weight:950;
  letter-spacing:.7px;
}
.guide-featured-visual .fighter-avatar{
  width:62px;
  height:62px;
  flex-basis:62px;
}
.guide-featured-sport-mark{
  min-width:74px;
  height:58px;
  display:grid;
  place-items:center;
  padding:0 12px;
  border:1px solid color-mix(in srgb,var(--blue) 25%,var(--line));
  border-radius:15px;
  background:linear-gradient(145deg,color-mix(in srgb,var(--blue) 8%,var(--panel2)),var(--panel2));
  color:var(--text);
  font-size:11px;
  font-weight:950;
  letter-spacing:.7px;
  text-align:center;
}
.guide-featured-card h4{
  margin-top:7px;
}
.guide-search-wrap{
  min-width:0;
}
.guide-search-wrap>small{
  display:block;
  margin:0 0 5px 2px;
  color:var(--muted);
  font-size:8px;
  font-weight:950;
  letter-spacing:.7px;
}
.guide-toolbar{
  margin:2px 0 0;
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel2) 96%,var(--blue) 4%),var(--panel2));
}
.guide-search input{
  min-height:48px;
  font-weight:750;
}
.guide-featured-card.live{box-shadow:inset 0 2px 0 var(--accent)}
.guide-featured-kicker{
  display:flex;justify-content:space-between;gap:8px;color:var(--muted);
  font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.5px
}
.guide-featured-card h4{
  margin:10px 0 8px;font-size:14px;line-height:1.35
}
.guide-featured-card p{margin:0;color:var(--muted);font-size:11px;line-height:1.45}
.guide-featured-card .featured-network{
  display:block;margin-top:9px;color:#dce9f6;font-size:11px;font-weight:850
}
.guide-week-wrap{
  display:grid;grid-template-columns:38px minmax(0,1fr) 38px;gap:8px;align-items:center
}
.guide-week-arrow{
  height:48px;border-radius:12px;border:1px solid var(--line);
  background:#0c131b;color:#dce6f0;font-size:24px
}
.guide-week-strip{
  display:grid;grid-template-columns:repeat(7,minmax(80px,1fr));gap:7px;min-width:0
}
.guide-day{
  border:1px solid var(--line);border-radius:12px;background:#0c131b;
  color:#dce6f0;padding:8px 6px;text-align:center;min-width:0
}
.guide-day small{display:block;color:var(--muted);font-size:10px;font-weight:850;text-transform:uppercase}
.guide-day b{display:block;font-size:14px;margin-top:3px}
.guide-day.active{background:rgba(20,184,255,.1);border-color:rgba(20,184,255,.45);color:#fff}
.guide-day.today small{color:var(--accent)}
.guide-network-select{
  min-height:38px;max-width:180px;border-radius:10px;border:1px solid var(--line);
  background:#0d141d;color:#e4edf5;padding:0 10px;font-size:12px;font-weight:800
}
.guide-summary-five{grid-template-columns:repeat(5,minmax(0,1fr))}
.guide-team-fav{
  flex:0 0 auto;width:23px;height:23px;border-radius:7px;border:1px solid rgba(255,255,255,.08);
  background:#101821;color:#687686;font-size:12px;line-height:1
}
.guide-team-fav.active{color:#ffd166;background:rgba(255,209,102,.07);border-color:rgba(255,209,102,.28)}
.guide-event-divider{
  padding:10px 16px;background:#0b1219;border-bottom:1px solid rgba(255,255,255,.06);
  font-size:12px;font-weight:950;color:#e6edf4
}
.guide-event-divider span{color:var(--muted);font-weight:750;margin-left:6px}
.guide-single-event .guide-teams{gap:4px}
.guide-single-title{font-weight:900;font-size:14px}
.guide-single-sub{color:var(--muted);font-size:11px}
.guide-spoiler .guide-score{filter:blur(7px);user-select:none}
.guide-spoiler .guide-detail-team>span{filter:blur(7px);user-select:none}
.guide-now-item.starting b{color:#87d9ff}
.guide-now-item.live b{color:#8affb5}
@media(max-width:1050px){
  .guide-featured-strip{grid-template-columns:repeat(4,250px)}
  .guide-summary-five{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:760px){
  .guide-toolbar{grid-template-columns:1fr}
  .guide-search-wrap{grid-column:1/-1}
  .guide-featured-card{min-height:184px}
  .guide-featured-team{width:52px;height:52px}
  .guide-featured-team img{width:42px;height:42px}
  .guide-featured-visual .fighter-avatar{width:56px;height:56px;flex-basis:56px}
  .guide-week-wrap{grid-template-columns:30px minmax(0,1fr) 30px}
  .guide-week-strip{display:flex;overflow-x:auto}
  .guide-day{min-width:76px}
  .guide-summary-five{grid-template-columns:1fr 1fr}
  .guide-featured-strip{grid-template-columns:repeat(4,220px)}
}


/* =========================
   SPORTS HUB PRO GAME CENTER
   ========================= */
.guide-head-right{display:grid;gap:8px;justify-items:end}
.guide-health{
  display:inline-flex;align-items:center;gap:7px;
  padding:7px 10px;border:1px solid var(--line);border-radius:999px;
  background:#0b1219;color:var(--muted);font-size:11px;font-weight:850
}
.guide-health i{width:7px;height:7px;border-radius:50%;background:#647180}
.guide-health.good i{background:var(--accent);box-shadow:0 0 12px rgba(49,233,129,.55)}
.guide-health.partial i{background:#ffd166}
.sports-pulse{
  display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;
  min-height:42px;border:1px solid var(--line);border-radius:14px;
  background:#080d13;overflow:hidden
}
.sports-pulse-label{
  align-self:stretch;display:flex;align-items:center;padding:0 13px;
  background:linear-gradient(135deg,rgba(49,233,129,.14),rgba(20,184,255,.08));
  border-right:1px solid var(--line);font-size:11px;font-weight:950;letter-spacing:.55px
}
.sports-pulse-window{overflow:hidden;min-width:0}
.sports-pulse-track{
  display:flex;align-items:center;gap:28px;width:max-content;
  padding-left:20px;animation:sportsPulseMove 34s linear infinite
}
.sports-pulse:hover .sports-pulse-track{animation-play-state:paused}
.sports-pulse-item{
  display:inline-flex;gap:8px;align-items:center;white-space:nowrap;
  font-size:12px;color:#dbe5ef;cursor:pointer
}
.sports-pulse-item b{font-size:10px;color:#7effad;letter-spacing:.45px}
.sports-pulse-item.soon b{color:#ffd166}
@keyframes sportsPulseMove{to{transform:translateX(-50%)}}
.guide-countdown{
  display:inline-flex;margin-top:5px;padding:3px 7px;border-radius:999px;
  background:rgba(20,184,255,.08);border:1px solid rgba(20,184,255,.16);
  color:#80dcff;font-size:9px;font-weight:900;letter-spacing:.3px
}
.guide-network-badge{
  display:inline-flex;max-width:100%;padding:4px 7px;border-radius:7px;
  background:rgba(49,233,129,.07);border:1px solid rgba(49,233,129,.13);
  color:#b8f7d4;font-size:10px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.guide-game-center-btn{width:100%;margin-top:13px}
.guide-density-compact .guide-game{padding-top:9px;padding-bottom:9px}
.guide-density-compact .guide-team-logo{width:23px;height:23px;flex-basis:23px}
.guide-density-compact .guide-team-row{gap:7px}
.guide-density-compact .guide-score{font-size:16px}
.game-center-modal{
  position:fixed;inset:0;z-index:5000;display:grid;place-items:center;
  padding:20px;background:rgba(0,0,0,.78);backdrop-filter:blur(8px)
}
.game-center-modal.hidden{display:none}
.game-center-card{
  width:min(820px,100%);max-height:min(86vh,860px);overflow:auto;
  border:1px solid #263442;border-radius:24px;background:#090f16;
  box-shadow:0 30px 100px rgba(0,0,0,.55)
}
.game-center-head{
  position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;
  gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);
  background:rgba(9,15,22,.94);backdrop-filter:blur(10px)
}
.game-center-head b{font-size:13px;letter-spacing:.4px}
.game-center-close{
  width:38px;height:38px;border-radius:11px;border:1px solid var(--line);
  background:#111a24;color:white;font-size:20px
}
.game-center-body{padding:22px}
.gc-kicker{display:flex;justify-content:space-between;gap:12px;align-items:center;color:var(--muted);font-size:11px;font-weight:850}
.gc-title{font-size:clamp(25px,4vw,42px);line-height:1.04;letter-spacing:-1.5px;margin:9px 0 18px}
.gc-matchup{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:center;margin:18px 0}
.gc-side{display:grid;justify-items:center;text-align:center;gap:8px}
.gc-side img{width:70px;height:70px;object-fit:contain;background:#111a23;border-radius:50%;padding:6px}
.gc-side strong{font-size:16px}
.gc-side small{color:var(--muted)}
.gc-score{font-size:clamp(28px,5vw,48px);font-weight:950;text-align:center}
.gc-score small{display:block;font-size:10px;color:var(--muted);font-weight:850;letter-spacing:.4px;margin-top:5px}
.gc-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:18px}
.gc-meta{padding:12px;border-radius:13px;border:1px solid var(--line);background:#0d151d}
.gc-meta small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:850}
.gc-meta b{display:block;margin-top:5px;font-size:13px}
.gc-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.gc-participants{display:flex;flex-wrap:wrap;gap:7px;margin:15px 0}
.gc-participant{padding:7px 9px;border-radius:999px;background:#111a23;border:1px solid var(--line);font-size:11px}
.sports-hub-tab[data-hub-mode="tonight"]{border-color:rgba(255,209,102,.22)}
@media(max-width:900px){
  .guide-head-right{justify-items:start}
  .sports-pulse{grid-template-columns:1fr}
  .sports-pulse-label{min-height:34px;border-right:0;border-bottom:1px solid var(--line)}
  .gc-meta-grid{grid-template-columns:1fr}
}
@media(max-width:620px){
  .game-center-modal{padding:8px}
  .game-center-card{max-height:94vh;border-radius:18px}
  .game-center-body{padding:16px}
  .gc-matchup{grid-template-columns:1fr;gap:10px}
  .gc-score{order:-1}
  .gc-side{grid-template-columns:44px 1fr;justify-items:start;text-align:left}
  .gc-side img{width:44px;height:44px}
}
@media(prefers-reduced-motion:reduce){
  .sports-pulse-track{animation:none}
}


/* =========================
   v10.8 ULTIMATE SPORTS HUB
   ========================= */
.ultimate-snapshot{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin:12px 0 14px;
}
.ultimate-snap{
  border:1px solid var(--line);
  background:linear-gradient(180deg,#0d151e,#080d13);
  border-radius:16px;
  padding:13px 14px;
  min-width:0;
  cursor:pointer;
}
.ultimate-snap:hover{border-color:#28435a}
.ultimate-snap small{
  display:flex;align-items:center;gap:7px;
  color:var(--muted);font-size:10px;font-weight:900;
  text-transform:uppercase;letter-spacing:.7px
}
.ultimate-snap small:before{
  content:"";width:7px;height:7px;border-radius:50%;background:#506070
}
.ultimate-snap.live small:before{background:var(--accent);box-shadow:0 0 12px rgba(49,233,129,.65)}
.ultimate-snap h4{
  margin:7px 0 3px;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.ultimate-snap p{margin:0;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.big-game-badge,.rank-badge,.series-badge{
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:999px;font-size:9px;font-weight:950;letter-spacing:.35px;
  text-transform:uppercase;white-space:nowrap
}
.big-game-badge{padding:4px 7px;background:rgba(20,184,255,.12);border:1px solid rgba(20,184,255,.25);color:#71d7ff}
.rank-badge{min-width:24px;padding:3px 6px;background:rgba(255,209,102,.12);border:1px solid rgba(255,209,102,.22);color:#ffd166;margin-right:5px}
.series-badge{padding:4px 7px;background:rgba(166,110,255,.12);border:1px solid rgba(166,110,255,.22);color:#c5a5ff}

.guide-game.is-big{
  border-left:3px solid var(--blue);
  background-image:linear-gradient(90deg,rgba(20,184,255,.055),transparent 32%)
}
.guide-card-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}

.gc-insight-grid{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px
}
.gc-insight{
  border:1px solid rgba(255,255,255,.07);background:#0b1219;border-radius:12px;padding:11px 12px
}
.gc-insight small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:900}
.gc-insight b{display:block;margin-top:5px;font-size:13px;line-height:1.35}

.team-hub-overlay{
  position:fixed;inset:0;z-index:999999;
  background:rgba(0,0,0,.74);backdrop-filter:blur(8px);
  display:none;align-items:center;justify-content:center;padding:20px
}
.team-hub-overlay.open{display:flex}
.team-hub{
  width:min(760px,100%);max-height:min(820px,92vh);overflow:auto;
  background:#080d13;border:1px solid #213141;border-radius:22px;
  box-shadow:0 24px 80px rgba(0,0,0,.55)
}
.team-hub-head{
  display:flex;justify-content:space-between;gap:12px;align-items:center;
  padding:16px 17px;border-bottom:1px solid rgba(255,255,255,.07)
}
.team-hub-head h3{margin:0}
.team-hub-body{padding:16px}
.team-hub-identity{display:flex;gap:13px;align-items:center;margin-bottom:14px}
.team-hub-identity img{width:64px;height:64px;object-fit:contain}
.team-hub-identity strong{display:block;font-size:20px}
.team-hub-identity small{display:block;color:var(--muted);margin-top:4px}
.team-hub-games{display:grid;gap:8px;margin-top:14px}
.team-hub-game{
  display:grid;grid-template-columns:90px minmax(0,1fr) auto;gap:10px;align-items:center;
  border:1px solid rgba(255,255,255,.065);border-radius:12px;padding:10px 11px;background:#0b1219
}
.team-hub-game small{color:var(--muted)}
.team-hub-game b{font-size:12px}
.team-hub-empty{padding:18px;text-align:center;color:var(--muted)}
.team-link{
  appearance:none;border:0;background:none;padding:0;color:inherit;font:inherit;font-weight:850;
  text-align:left;cursor:pointer
}
.team-link:hover{text-decoration:underline;color:#aee9ff}

@media(max-width:700px){
  .ultimate-snapshot{grid-template-columns:1fr}
  .gc-insight-grid{grid-template-columns:1fr}
  .team-hub-game{grid-template-columns:76px minmax(0,1fr)}
  .team-hub-game .guide-network-badge{grid-column:2}
}


body.team-hub-open{overflow:hidden}
#teamHubClose{position:relative;z-index:3;cursor:pointer}


/* =========================
   v10.9 LIVE SPORTS INTELLIGENCE
   ========================= */
.gc-live-intel{
  margin-top:14px;
  border-top:1px solid rgba(255,255,255,.07);
  padding-top:14px;
}
.gc-live-intel-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  margin-bottom:10px;
}
.gc-live-intel-head h3{margin:0;font-size:16px}
.gc-live-intel-head span{font-size:10px;color:var(--muted);font-weight:800}
.gc-intel-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
}
.gc-intel-card{
  border:1px solid rgba(255,255,255,.07);
  border-radius:12px;
  background:#0a1118;
  padding:11px 12px;
  min-width:0;
}
.gc-intel-card.full{grid-column:1/-1}
.gc-intel-card h4{
  margin:0 0 8px;
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.55px;
  color:#a9b7c5;
}
.gc-leader-row,.gc-play-row,.gc-stat-row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:6px 0;
  border-bottom:1px solid rgba(255,255,255,.045);
  font-size:11px;
}
.gc-leader-row:last-child,.gc-play-row:last-child,.gc-stat-row:last-child{border-bottom:0}
.gc-leader-row b,.gc-stat-row b{font-size:11px}
.gc-leader-row span,.gc-play-row span,.gc-stat-row span{color:var(--muted)}
.gc-play-row{display:block;line-height:1.4}
.gc-play-row b{display:block;margin-bottom:2px}
.gc-linescore{
  display:grid;
  grid-template-columns:minmax(90px,1.2fr) repeat(6,minmax(28px,.5fr));
  gap:5px;
  align-items:center;
  font-size:10px;
}
.gc-linescore > span,.gc-linescore > b{
  padding:5px 3px;
  text-align:center;
}
.gc-linescore .team{text-align:left;font-weight:900}
.watch-panel{
  margin-top:12px;
  padding:12px;
  border-radius:14px;
  border:1px solid rgba(49,233,129,.16);
  background:linear-gradient(180deg,rgba(49,233,129,.05),rgba(20,184,255,.025));
}
.watch-panel small{
  display:block;
  font-size:9px;
  color:#8ca1b2;
  text-transform:uppercase;
  letter-spacing:.7px;
  font-weight:950;
}
.watch-panel strong{
  display:block;
  margin-top:5px;
  font-size:14px;
  color:#b9ffd4;
  line-height:1.4;
}
.live-situation-strip{
  display:flex;
  gap:7px;
  align-items:center;
  flex-wrap:wrap;
  margin-top:7px;
}
.live-situation-strip span{
  display:inline-flex;
  align-items:center;
  border:1px solid rgba(255,255,255,.08);
  background:#0b131b;
  border-radius:999px;
  padding:4px 8px;
  font-size:9px;
  font-weight:900;
  color:#dce8f2;
}
.live-situation-strip .possession{
  border-color:rgba(49,233,129,.25);
  color:#8cffb5;
}
.team-standings{
  margin-top:14px;
  border-top:1px solid rgba(255,255,255,.07);
  padding-top:13px;
}
.team-standings h4{margin:0 0 8px;font-size:13px}
.team-standing-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) repeat(3,42px);
  gap:6px;
  padding:7px 8px;
  border-radius:8px;
  font-size:10px;
  align-items:center;
}
.team-standing-row:nth-child(even){background:rgba(255,255,255,.025)}
.team-standing-row.current{
  background:rgba(20,184,255,.08);
  border:1px solid rgba(20,184,255,.15);
}
.team-standing-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-standing-row span{text-align:center;color:var(--muted)}
.team-standing-head{
  color:var(--muted);
  text-transform:uppercase;
  font-size:9px;
  font-weight:900;
}
.guide-degraded{
  margin:8px 0 0;
  padding:8px 10px;
  border-radius:10px;
  border:1px solid rgba(255,209,102,.2);
  background:rgba(255,209,102,.05);
  color:#e9cf85;
  font-size:10px;
  line-height:1.4;
}
.guide-game .guide-live-context{
  display:flex;
  gap:5px;
  flex-wrap:wrap;
  margin-top:5px;
}
.guide-live-context span{
  font-size:8px;
  font-weight:900;
  border-radius:999px;
  padding:3px 6px;
  background:rgba(255,255,255,.055);
  color:#aab8c5;
}
.guide-live-context .live-possession{color:#83ffaf;background:rgba(49,233,129,.07)}
@media(max-width:700px){
  .gc-intel-grid{grid-template-columns:1fr}
  .gc-linescore{grid-template-columns:minmax(80px,1fr) repeat(4,28px)}
  .gc-linescore .extra-period{display:none}
}


/* =========================
   v11.0 PERSONALIZED + RESILIENT SPORTS HUB
   ========================= */
.my-sports-manage{
  flex:0 0 auto;
  min-height:42px;
  padding:0 14px;
  border-radius:12px;
  border:1px solid rgba(20,184,255,.26);
  background:rgba(20,184,255,.07);
  color:#aeeaff;
  font-size:12px;
  font-weight:900;
}
.my-sports-manage:hover{background:rgba(20,184,255,.12)}
.sport-preferred{
  box-shadow:inset 0 -2px 0 rgba(49,233,129,.55);
}
.sport-preferred:after{
  content:"★";
  font-size:9px;
  margin-left:5px;
  color:#ffd166;
}
.freshness-chip{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-left:7px;
  padding:4px 8px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.07);
  background:#0a1118;
  color:#94a5b5;
  font-size:9px;
  font-weight:900;
  white-space:nowrap;
}
.freshness-chip:before{
  content:"";
  width:6px;height:6px;border-radius:50%;
  background:#607080;
}
.freshness-chip.fresh:before{background:var(--accent)}
.freshness-chip.cached:before{background:#ffd166}
.freshness-chip.stale:before{background:#ff7676}

.sports-settings-overlay{
  position:fixed;
  inset:0;
  z-index:1000001;
  display:none;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:rgba(0,0,0,.76);
  backdrop-filter:blur(8px);
}
.sports-settings-overlay.open{display:flex}
.sports-settings-card{
  width:min(680px,100%);
  max-height:90vh;
  overflow:auto;
  border:1px solid #203344;
  border-radius:22px;
  background:#080e14;
  box-shadow:0 28px 90px rgba(0,0,0,.6);
}
.sports-settings-head{
  position:sticky;
  top:0;
  z-index:2;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:16px 17px;
  background:#0b1219;
  border-bottom:1px solid rgba(255,255,255,.07);
}
.sports-settings-head h3{margin:0;font-size:18px}
.sports-settings-body{padding:16px}
.sports-settings-body > p{
  margin:0 0 14px;
  color:var(--muted);
  font-size:12px;
  line-height:1.55;
}
.sports-choice-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
}
.sports-choice{
  position:relative;
  display:flex;
  gap:9px;
  align-items:center;
  min-height:48px;
  padding:10px 11px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:12px;
  background:#0b1219;
  cursor:pointer;
  font-size:12px;
  font-weight:850;
}
.sports-choice:has(input:checked){
  border-color:rgba(49,233,129,.32);
  background:rgba(49,233,129,.07);
}
.sports-choice input{accent-color:#31e981}
.sports-settings-actions{
  display:flex;
  gap:8px;
  justify-content:flex-end;
  flex-wrap:wrap;
  margin-top:16px;
}
.cache-notice{
  display:none;
  margin:0 0 10px;
  padding:9px 11px;
  border:1px solid rgba(255,209,102,.18);
  border-radius:11px;
  background:rgba(255,209,102,.05);
  color:#ead186;
  font-size:10px;
  line-height:1.45;
}
.cache-notice.show{display:block}
.favorite-sport-badge{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:3px 6px;
  border-radius:999px;
  border:1px solid rgba(255,209,102,.2);
  background:rgba(255,209,102,.06);
  color:#ffd166;
  font-size:8px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.4px;
}
.guide-board-head-right{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:5px;
  flex-wrap:wrap;
}
@media(max-width:720px){
  .admin-db-strip{
    align-items:flex-start;
    flex-direction:column;
  }
  .admin-db-strip-actions{
    width:100%;
    justify-content:flex-start;
  }

  .sports-choice-grid{grid-template-columns:1fr 1fr}
  .guide-board-head{align-items:flex-start}
  .guide-board-head-right{justify-content:flex-start}
}
@media(max-width:440px){
  .sports-choice-grid{grid-template-columns:1fr}
}


/* =========================
   v11.1 THEME SYSTEM
   Explicit themes prevent browser/Yola auto-color surprises.
   ========================= */
html{color-scheme:dark}
html[data-cut-theme="light"]{color-scheme:light}
html[data-cut-theme="midnight"],html:not([data-cut-theme]){
  --bg:#05070b;--panel:#0d1219;--panel2:#131a24;--text:#f7f9fc;--muted:#9aa7b7;
  --accent:#31e981;--blue:#14b8ff;--danger:#ff5f70;--warning:#ffbd45;--line:#26313e;
  --theme-surface:#080d13;--theme-surface2:#0d141c;--theme-surface3:#111821;--theme-input:#070b10;
  --theme-header:rgba(5,7,11,.94);--theme-soft:rgba(255,255,255,.045);--theme-soft2:rgba(255,255,255,.075);--theme-shadow:rgba(0,0,0,.42)
}
html[data-cut-theme="light"]{
  --bg:#f4f7fa;--panel:#ffffff;--panel2:#edf2f6;--text:#10202d;--muted:#5c6f7d;
  --accent:#087f4b;--blue:#0675aa;--danger:#c9374a;--warning:#a76500;--line:#cbd6de;
  --theme-surface:#ffffff;--theme-surface2:#f5f8fa;--theme-surface3:#eaf0f4;--theme-input:#ffffff;
  --theme-header:rgba(248,251,253,.97);--theme-soft:rgba(8,32,48,.045);--theme-soft2:rgba(8,32,48,.085);--theme-shadow:rgba(27,46,60,.15)
}
html[data-cut-theme="ocean"]{
  --bg:#03121c;--panel:#082331;--panel2:#0d3040;--text:#f3fbff;--muted:#91b8ca;
  --accent:#35e8d2;--blue:#45a8ff;--danger:#ff6b7a;--warning:#ffd166;--line:#1b4b60;
  --theme-surface:#061b27;--theme-surface2:#0a2635;--theme-surface3:#0d3040;--theme-input:#051923;
  --theme-header:rgba(3,18,28,.96);--theme-soft:rgba(69,168,255,.055);--theme-soft2:rgba(53,232,210,.09);--theme-shadow:rgba(0,0,0,.42)
}
html[data-cut-theme="emerald"]{
  --bg:#04100b;--panel:#0a1c14;--panel2:#10291e;--text:#f1fff7;--muted:#96b9a6;
  --accent:#42f58d;--blue:#42d9c7;--danger:#ff6878;--warning:#f6cb65;--line:#22543b;
  --theme-surface:#07170f;--theme-surface2:#0c2017;--theme-surface3:#112d20;--theme-input:#06130d;
  --theme-header:rgba(4,16,11,.96);--theme-soft:rgba(66,245,141,.05);--theme-soft2:rgba(66,217,199,.08);--theme-shadow:rgba(0,0,0,.45)
}
html[data-cut-theme="sunset"]{
  --bg:#120b0c;--panel:#211317;--panel2:#2d1a20;--text:#fff7f2;--muted:#c3a5a3;
  --accent:#ffad5c;--blue:#ff718f;--danger:#ff526a;--warning:#ffd166;--line:#57303a;
  --theme-surface:#190e11;--theme-surface2:#241418;--theme-surface3:#321c22;--theme-input:#160c0f;
  --theme-header:rgba(18,11,12,.96);--theme-soft:rgba(255,173,92,.055);--theme-soft2:rgba(255,113,143,.085);--theme-shadow:rgba(0,0,0,.46)
}
html[data-cut-theme="nebula"]{
  --bg:#0b0815;--panel:#171126;--panel2:#211936;--text:#faf7ff;--muted:#aaa0c4;
  --accent:#ba8cff;--blue:#5fdcff;--danger:#ff6e9a;--warning:#ffd166;--line:#443667;
  --theme-surface:#110d1e;--theme-surface2:#181229;--theme-surface3:#241a3b;--theme-input:#0e0a19;
  --theme-header:rgba(11,8,21,.96);--theme-soft:rgba(186,140,255,.055);--theme-soft2:rgba(95,220,255,.075);--theme-shadow:rgba(0,0,0,.48)
}

html[data-cut-theme] body{background:var(--bg)!important;color:var(--text)!important}
html[data-cut-theme] header{background:var(--theme-header)!important;border-bottom-color:var(--line)!important}
html[data-cut-theme] #publicView,html[data-cut-theme] #portalView{
  color:var(--text)!important;
  background:
    radial-gradient(circle at 12% 5%,color-mix(in srgb,var(--blue) 12%,transparent),transparent 29%),
    radial-gradient(circle at 86% 7%,color-mix(in srgb,var(--accent) 10%,transparent),transparent 27%),
    var(--bg)!important
}
html[data-cut-theme] .card,
html[data-cut-theme] .feed-diagnostics-panel,
html[data-cut-theme] .feed-diagnostic-row,
html[data-cut-theme] .hero-card,
html[data-cut-theme] .guide-board,
html[data-cut-theme] .guide-detail-card,
html[data-cut-theme] .guide-now-card,
html[data-cut-theme] .guide-featured-card,
html[data-cut-theme] .ultimate-snap,
html[data-cut-theme] .sports-pulse,
html[data-cut-theme] .guide-summary,
html[data-cut-theme] .guide-toolbar,
html[data-cut-theme] .guide-week-wrap,
html[data-cut-theme] .game-center-card,
html[data-cut-theme] .team-hub,
html[data-cut-theme] .sports-settings-card,
html[data-cut-theme] .modal-card,
html[data-cut-theme] .outage-card,
html[data-cut-theme] .public-message-card,
html[data-cut-theme] .announcement,
html[data-cut-theme] .admin-item,
html[data-cut-theme] .profile-card,
html[data-cut-theme] .gc-intel-card,
html[data-cut-theme] .gc-insight,
html[data-cut-theme] .team-hub-game,
html[data-cut-theme] .team-standing-row,
html[data-cut-theme] .watch-panel{
  background:var(--theme-surface)!important;color:var(--text)!important;border-color:var(--line)!important
}
html[data-cut-theme] .guide-board-head,
html[data-cut-theme] .feed-diagnostics-head,
html[data-cut-theme] .game-center-head,
html[data-cut-theme] .team-hub-head,
html[data-cut-theme] .sports-settings-head,
html[data-cut-theme] .modal-head{
  background:var(--theme-surface2)!important;color:var(--text)!important;border-color:var(--line)!important
}
html[data-cut-theme] .guide-game,
html[data-cut-theme] .guide-now-item,
html[data-cut-theme] .step,
html[data-cut-theme] .broadcast-preview,
html[data-cut-theme] .outage-body,
html[data-cut-theme] .public-message-admin-row{
  background:var(--theme-surface)!important;color:var(--text)!important;border-color:var(--line)!important
}
html[data-cut-theme] .guide-game:hover,html[data-cut-theme] .guide-game.selected{background:var(--theme-surface2)!important}
html[data-cut-theme] input,html[data-cut-theme] textarea,html[data-cut-theme] select{
  background:var(--theme-input)!important;color:var(--text)!important;border-color:var(--line)!important;
  -webkit-text-fill-color:var(--text)
}
html[data-cut-theme] input::placeholder,html[data-cut-theme] textarea::placeholder{color:var(--muted)!important;opacity:1}
html[data-cut-theme] select option{background:var(--theme-surface)!important;color:var(--text)!important}
html[data-cut-theme] .btn.alt,
html[data-cut-theme] .guide-chip,
html[data-cut-theme] .sports-hub-tab,
html[data-cut-theme] .guide-week-arrow,
html[data-cut-theme] .guide-day,
html[data-cut-theme] .guide-team-fav,
html[data-cut-theme] .guide-fav,
html[data-cut-theme] .my-sports-manage,
html[data-cut-theme] .theme-launcher{
  background:var(--theme-surface2)!important;color:var(--text)!important;border-color:var(--line)!important
}
html[data-cut-theme] .guide-chip.active,
html[data-cut-theme] .sports-hub-tab.active,
html[data-cut-theme] .guide-day.active{
  background:var(--accent)!important;border-color:var(--accent)!important;color:var(--bg)!important
}
html[data-cut-theme="light"] .guide-chip.active,
html[data-cut-theme="light"] .sports-hub-tab.active,
html[data-cut-theme="light"] .guide-day.active,
html[data-cut-theme="light"] .btn{color:#fff!important}
html[data-cut-theme] .muted,
html[data-cut-theme] .guide-refresh,
html[data-cut-theme] .guide-meta,
html[data-cut-theme] .guide-detail-empty,
html[data-cut-theme] .guide-single-sub,
html[data-cut-theme] .featured-network,
html[data-cut-theme] .pm-meta{color:var(--muted)!important}
html[data-cut-theme] .guide-network-badge,
html[data-cut-theme] .guide-status-pill,
html[data-cut-theme] .big-game-badge,
html[data-cut-theme] .series-badge,
html[data-cut-theme] .favorite-sport-badge,
html[data-cut-theme] .freshness-chip{background:var(--theme-surface2)!important;border-color:var(--line)!important}
html[data-cut-theme] .guide-team-name,
html[data-cut-theme] .guide-score,
html[data-cut-theme] .guide-board-head h3,
html[data-cut-theme] .guide-head h2,
html[data-cut-theme] .gc-title,
html[data-cut-theme] .team-hub h3{color:var(--text)!important}
html[data-cut-theme="light"] .grad{
  background:linear-gradient(90deg,#10202d 0%,var(--accent) 52%,var(--blue));
  -webkit-background-clip:text;background-clip:text;color:transparent!important
}
html[data-cut-theme="light"] .guide-live-dot{color:#075b37!important}
html[data-cut-theme="light"] .header-broadcast-track span{color:#0b5d39!important}
html[data-cut-theme="light"] .team-link{color:#163449!important}
html[data-cut-theme="light"] .guide-game.is-big{background-image:linear-gradient(90deg,rgba(8,126,184,.08),transparent 34%)!important}

.theme-launcher{min-height:40px!important;padding:0 11px!important;white-space:nowrap}
.theme-overlay{
  position:fixed;inset:0;z-index:1000005;display:none;align-items:center;justify-content:center;padding:20px;
  background:rgba(0,0,0,.74);backdrop-filter:blur(9px)
}
.theme-overlay.open{display:flex}
.theme-panel{
  width:min(720px,100%);max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:22px;
  background:var(--theme-surface);color:var(--text);box-shadow:0 26px 90px var(--theme-shadow)
}
.theme-head{
  position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:16px 17px;border-bottom:1px solid var(--line);background:var(--theme-surface2)
}
.theme-head h3{margin:0}
.theme-body{padding:16px}
.theme-body>p{margin:0 0 14px;color:var(--muted);font-size:12px;line-height:1.55}
.theme-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.theme-choice{
  min-height:88px;text-align:left;padding:12px;border:2px solid var(--line);border-radius:15px;
  background:var(--theme-surface2);color:var(--text)
}
.theme-choice.active{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent)}
.theme-choice b{display:block;font-size:13px}
.theme-choice small{display:block;margin-top:5px;color:var(--muted);line-height:1.35}
.theme-swatches{display:flex;gap:5px;margin-bottom:9px}
.theme-swatches i{width:19px;height:19px;border-radius:6px;border:1px solid rgba(128,128,128,.28)}
.theme-status{
  margin-top:13px;padding:9px 11px;border-radius:11px;background:var(--theme-surface2);
  border:1px solid var(--line);color:var(--muted);font-size:10px
}
.guide-date-picker{
  width:142px;min-height:40px;border-radius:10px;border:1px solid var(--line);
  padding:0 9px;background:var(--theme-input);color:var(--text)
}
#sportsGuideSection,#publicView,#portalView,header,.game-center-modal,.team-hub-overlay,.sports-settings-overlay,.theme-overlay{forced-color-adjust:auto}
#sportsGuideSection button,#sportsGuideSection input,#sportsGuideSection select,#sportsGuideSection textarea,.theme-overlay button,header button{color-scheme:inherit}
@media(max-width:720px){
  .theme-grid{grid-template-columns:1fr 1fr}
  .theme-launcher .theme-label{display:none}
  .theme-launcher{width:42px;padding:0!important}
}
@media(max-width:430px){.theme-grid{grid-template-columns:1fr}}


/* =========================
   v11.2 RELEASE-CANDIDATE POLISH
   iPhone / iPad / Android / Desktop
   ========================= */
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
body{
  width:100%;
  max-width:100%;
}
button,a,input,select,textarea{
  -webkit-tap-highlight-color:transparent;
}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:3px solid color-mix(in srgb,var(--blue) 70%,white);
  outline-offset:2px;
}
.guide-chip-row,
.sports-hub-tabs,
.guide-week-strip,
.guide-featured-strip{
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-inline:contain;
  scroll-snap-type:x proximity;
}
.guide-chip,.sports-hub-tab,.guide-day,.guide-featured-card{
  scroll-snap-align:start;
}
.game-center-card,.team-hub,.sports-settings-card,.theme-panel,.feed-diagnostics-panel{
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
}
.game-center-card{
  max-height:min(860px,calc(100dvh - 30px));
}
.team-hub{
  max-height:min(820px,calc(100dvh - 30px));
}
.sports-settings-card,.theme-panel,.feed-diagnostics-panel{
  max-height:calc(100dvh - 30px);
}
.game-center-modal,.team-hub-overlay,.sports-settings-overlay,.theme-overlay,.feed-diagnostics-overlay{
  padding:
    max(10px,env(safe-area-inset-top))
    max(10px,env(safe-area-inset-right))
    max(10px,env(safe-area-inset-bottom))
    max(10px,env(safe-area-inset-left));
}

/* Feed diagnostics */
.guide-health{
  cursor:pointer;
  user-select:none;
}
.feed-diagnostics-overlay{
  position:fixed;
  inset:0;
  z-index:1000006;
  display:none;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.76);
  backdrop-filter:blur(9px);
}
.feed-diagnostics-overlay.open{display:flex}
.feed-diagnostics-panel{
  width:min(780px,100%);
  overflow:auto;
  border:1px solid var(--line);
  border-radius:22px;
  background:var(--theme-surface,#080d13);
  color:var(--text);
  box-shadow:0 28px 90px rgba(0,0,0,.55);
}
.feed-diagnostics-head{
  position:sticky;
  top:0;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:15px 17px;
  background:var(--theme-surface2,#0d141c);
  border-bottom:1px solid var(--line);
}
.feed-diagnostics-head h3{margin:0;font-size:18px}
.feed-diagnostics-body{padding:15px}
.feed-diagnostics-note{
  margin:0 0 12px;
  color:var(--muted);
  font-size:11px;
  line-height:1.55;
}
.feed-diagnostics-list{display:grid;gap:7px}
.feed-diagnostic-row{
  display:grid;
  grid-template-columns:minmax(150px,1fr) auto auto;
  gap:10px;
  align-items:center;
  min-width:0;
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--theme-surface2,#0d141c);
}
.feed-diagnostic-row b{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:11px;
}
.feed-diagnostic-row small{color:var(--muted);font-size:9px}
.feed-state{
  display:inline-flex;
  justify-content:center;
  min-width:70px;
  padding:5px 7px;
  border-radius:999px;
  border:1px solid var(--line);
  font-size:9px;
  font-weight:950;
  letter-spacing:.35px;
}
.feed-state.online{color:#86ffb1;border-color:rgba(49,233,129,.25);background:rgba(49,233,129,.06)}
.feed-state.empty{color:#9edfff;border-color:rgba(20,184,255,.25);background:rgba(20,184,255,.06)}
.feed-state.failed{color:#ff9aa5;border-color:rgba(255,95,112,.28);background:rgba(255,95,112,.06)}
.feed-state.cached{color:#ffd982;border-color:rgba(255,209,102,.25);background:rgba(255,209,102,.06)}
.feed-diagnostics-summary{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin:0 0 12px;
}
.feed-diagnostics-summary span{
  padding:6px 8px;
  border-radius:999px;
  background:var(--theme-surface2,#0d141c);
  border:1px solid var(--line);
  font-size:10px;
  font-weight:850;
}

/* Keep very long data strings from forcing horizontal page overflow. */
.guide-board,.guide-layout,.guide-side,.guide-game,.guide-teams,.guide-meta-row,
.gc-meta,.gc-insight,.gc-intel-card,.team-hub-game,.feed-diagnostic-row{
  min-width:0;
}
.guide-meta-row span:last-child,
.gc-meta b,.gc-insight b,.watch-panel strong,
.team-hub-game b,.feed-diagnostic-row b{
  overflow-wrap:anywhere;
}

/* Tablet */
@media(max-width:900px){
  .guide-chip,.sports-hub-tab,.my-sports-manage{
    min-height:44px;
  }
  .guide-day,.guide-week-arrow{
    min-height:48px;
  }
  .guide-network-select,.guide-date-picker{
    min-height:44px;
    font-size:16px; /* prevents iOS form zoom */
  }
  .game-center-close,#teamHubClose,#sportsSettingsClose,#themeClose,#feedDiagnosticsClose{
    min-width:44px;
    min-height:44px;
  }
}

/* Phones */
@media(max-width:700px){
  .guide-toolbar{
    gap:9px;
    padding:11px;
  }
  .guide-date-controls{
    display:grid;
    grid-template-columns:44px minmax(90px,1fr) auto 44px;
    width:100%;
    gap:7px;
  }
  .guide-date-controls .guide-date-label{
    min-width:0;
    padding:0 3px;
  }
  .guide-date-controls .guide-date-picker{
    grid-column:1/-1;
    width:100%;
    max-width:none;
  }
  .guide-view-controls{
    display:grid;
    grid-template-columns:1fr 1fr;
    width:100%;
    gap:7px;
  }
  .guide-view-controls .guide-network-select{
    grid-column:1/-1;
    width:100%;
    max-width:none;
  }
  .guide-view-controls .btn{width:100%}
  .guide-chip-row,.sports-hub-tabs{
    margin-left:-2px;
    margin-right:-2px;
    padding-bottom:7px;
  }
  .guide-chip,.sports-hub-tab{
    font-size:12px;
    padding-inline:12px;
  }
  .guide-board-head{
    flex-direction:column;
    align-items:flex-start;
  }
  .guide-board-head-right{
    width:100%;
    justify-content:space-between;
  }
  .guide-game{
    grid-template-columns:58px minmax(0,1fr) 44px;
  }
  .guide-team-name{
    white-space:normal;
    line-height:1.25;
    overflow-wrap:anywhere;
  }
  .guide-detail-top,.gc-kicker{
    flex-wrap:wrap;
  }
  .guide-meta-row{
    display:grid;
    grid-template-columns:minmax(90px,.45fr) minmax(0,1fr);
  }
  .guide-meta-row span:last-child{text-align:left}
  .gc-actions .btn{flex:1 1 100%}
  .sports-pulse-track{gap:20px}
  .feed-diagnostic-row{
    grid-template-columns:minmax(0,1fr) auto;
  }
  .feed-diagnostic-row small{
    grid-column:1/-1;
  }
}

/* Small phones: keep fixed header from becoming wider than the viewport. */
@media(max-width:430px){
  #signupBtn{
    font-size:0;
    padding-inline:10px;
  }
  #signupBtn:after{
    content:"Join";
    font-size:11px;
  }
  .nav-actions{gap:4px}
  .nav-actions .btn{padding-inline:8px}
  .brand{gap:5px}
  .brand span{max-width:96px}
  .theme-launcher{width:38px!important;min-width:38px}
  .guide-featured-card{min-width:205px}
  .guide-featured-strip{grid-template-columns:repeat(4,205px)}
  .guide-summary{padding:12px}
  .guide-summary small{font-size:9px}
  .guide-board-head h3{font-size:15px}
  .freshness-chip{margin-left:0}
  .game-center-body,.team-hub-body,.sports-settings-body,.theme-body,.feed-diagnostics-body{
    padding:13px;
  }
  .gc-title{font-size:26px;letter-spacing:-1px}
}

/* Extra-narrow iPhones / Android devices */
@media(max-width:370px){
  .shell{padding-left:10px;padding-right:10px}
  .brand span{max-width:75px;font-size:11px}
  #loginBtn{font-size:0;padding-inline:9px}
  #loginBtn:after{content:"Login";font-size:11px}
  .guide-date-controls{
    grid-template-columns:42px minmax(80px,1fr) 58px 42px;
  }
  .guide-summary-grid,.guide-summary-five{grid-template-columns:1fr 1fr}
}



/* =========================
   v14.26 RESPONSIVE + SPORTS INPUT PERFORMANCE
   ========================= */
#sportsGuideSection,
.sports-guide-shell,
.guide-toolbar,
.ultimate-snapshot,
.guide-week-wrap,
.guide-chip-row,
.guide-summary-grid,
.guide-layout,
.guide-board,
.guide-side{
  min-width:0;
  max-width:100%;
}

#sportsGuideSection button,
#sportsGuideSection input,
#sportsGuideSection select{
  touch-action:manipulation;
}

.guide-chip-row,
.sports-hub-tabs,
.guide-week-strip,
.guide-featured-strip{
  scrollbar-width:none;
  -ms-overflow-style:none;
}
.guide-chip-row::-webkit-scrollbar,
.sports-hub-tabs::-webkit-scrollbar,
.guide-week-strip::-webkit-scrollbar,
.guide-featured-strip::-webkit-scrollbar{
  width:0;
  height:0;
  display:none;
}

.guide-week-strip,
.guide-chip-row,
.sports-hub-tabs,
.guide-featured-strip{
  scroll-behavior:auto;
  touch-action:pan-x;
}

.guide-day,
.guide-week-arrow,
#guidePrevDay,
#guideNextDay,
#guideToday{
  user-select:none;
  -webkit-user-select:none;
}

.guide-day{
  transition:background .1s ease,border-color .1s ease,color .1s ease,transform .08s ease;
}
.guide-day:active,
.guide-week-arrow:active,
#guidePrevDay:active,
#guideNextDay:active,
#guideToday:active{
  transform:scale(.97);
}

.guide-date-controls,
.guide-view-controls{
  min-width:0;
}

.guide-date-picker{
  max-width:100%;
}

@media(max-width:1024px){
  .sports-guide-section{
    padding-top:32px;
    padding-bottom:56px;
  }
  .sports-guide-shell{
    gap:15px;
  }
  .guide-toolbar{
    grid-template-columns:1fr;
  }
  .guide-date-controls,
  .guide-view-controls{
    justify-content:flex-start;
  }
  .guide-summary-grid,
  .guide-summary-five{
    gap:8px;
  }
  .guide-layout{
    grid-template-columns:1fr;
  }
  .guide-side{
    position:static;
    top:auto;
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:820px){
  .guide-head{
    align-items:flex-start;
  }
  .guide-head-right{
    width:100%;
    justify-items:start;
  }
  .guide-toolbar{
    padding:11px;
    border-radius:15px;
  }
  .guide-search input{
    min-height:46px;
    font-size:16px;
  }
  .guide-week-wrap{
    gap:6px;
  }
  .guide-week-strip{
    min-width:0;
  }
  .guide-summary-five{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .guide-side{
    grid-template-columns:1fr;
  }
}

@media(max-width:640px){
  .sports-guide-section{
    padding-top:24px;
    padding-bottom:44px;
  }
  .sports-guide-shell{
    gap:12px;
  }
  .guide-head h2{
    font-size:clamp(28px,9vw,38px);
    letter-spacing:-1px;
  }
  .guide-head p{
    font-size:13px;
    line-height:1.5;
  }
  .guide-toolbar{
    padding:9px;
    gap:8px;
  }
  .guide-search-wrap>small{
    margin-left:1px;
  }
  .guide-date-controls{
    grid-template-columns:42px minmax(74px,.8fr) minmax(78px,1fr) 42px;
    gap:6px;
  }
  .guide-date-controls .btn{
    min-width:0;
    padding-inline:7px;
  }
  .guide-date-label{
    font-size:12px;
  }
  .guide-week-wrap{
    grid-template-columns:34px minmax(0,1fr) 34px;
  }
  .guide-week-arrow{
    width:34px;
    min-width:34px;
    padding:0;
  }
  .guide-day{
    min-width:70px;
    min-height:52px;
    padding:7px 5px;
  }
  .guide-chip-row,
  .sports-hub-tabs{
    gap:6px;
  }
  .guide-chip,
  .sports-hub-tab{
    min-height:42px;
  }
  .guide-summary,
  .guide-featured-card,
  .guide-detail-card,
  .guide-now-card{
    border-radius:14px;
  }
  .guide-game{
    padding-left:11px;
    padding-right:11px;
    column-gap:9px;
  }
}

@media(max-width:390px){
  .guide-date-controls{
    grid-template-columns:40px minmax(66px,.8fr) minmax(68px,1fr) 40px;
    gap:5px;
  }
  .guide-date-controls .btn{
    font-size:11px;
  }
  .guide-day{
    min-width:66px;
  }
  .guide-summary-grid,
  .guide-summary-five{
    grid-template-columns:1fr 1fr;
  }
  .guide-summary strong{
    font-size:19px;
  }
  .guide-featured-card{
    min-width:196px;
  }
  .guide-featured-strip{
    grid-template-columns:repeat(4,196px);
  }
}


/* =========================
   IPTV PLAYER
   ========================= */
.iptv-shell{
  margin-top:18px;
  border:1px solid var(--line);
  border-radius:20px;
  background:var(--panel);
  overflow:hidden;
  min-height:560px;
}
.iptv-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding:18px 20px;
  border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel2) 80%,transparent),var(--panel));
}
.iptv-head h2,.iptv-head h3,.iptv-now-card h3,.iptv-guide-card h3,.iptv-modal h3{margin:2px 0 4px}
.iptv-head p,.iptv-modal p{margin:0;color:var(--muted);font-size:12px}
.iptv-kicker{
  font-size:10px;
  letter-spacing:.14em;
  font-weight:900;
  color:var(--accent);
}
.iptv-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.iptv-connect-view{padding:24px}
.iptv-connect-card{
  max-width:920px;
  margin:0 auto;
  padding:22px;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--panel2);
}
.iptv-connect-copy h3{margin:0 0 4px}
.iptv-connect-copy p{margin:0 0 16px;color:var(--muted)}
.iptv-connect-grid{
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr;
  gap:12px;
}
.iptv-connect-grid label,.iptv-connect-options label{
  display:flex;
  flex-direction:column;
  gap:6px;
  font-size:11px;
  color:var(--muted);
  font-weight:700;
}
.iptv-connect-grid input,.iptv-connect-options select,
.iptv-search-wrap input,.iptv-category-wrap select{
  width:100%;
  min-height:44px;
  box-sizing:border-box;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--input-bg,var(--bg));
  color:var(--text);
  padding:10px 12px;
  outline:none;
}
.iptv-connect-grid input:focus,.iptv-connect-options select:focus,
.iptv-search-wrap input:focus,.iptv-category-wrap select:focus{
  border-color:var(--blue);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--blue) 18%,transparent);
}
.iptv-connect-options{
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:14px;
  margin-top:14px;
}
.iptv-check{
  flex-direction:row!important;
  align-items:center;
  gap:8px!important;
  min-height:44px;
}
.iptv-check input{width:18px;height:18px}
.iptv-connect-actions{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  margin-top:16px;
}
.iptv-inline-status{font-size:11px;color:var(--muted)}
.iptv-browser-note{
  margin-top:13px;
  padding:10px 12px;
  border-radius:10px;
  background:color-mix(in srgb,var(--blue) 8%,transparent);
  border:1px solid color-mix(in srgb,var(--blue) 20%,var(--line));
  color:var(--muted);
  font-size:10px;
  line-height:1.5;
}
.iptv-player-view{
  display:grid;
  grid-template-columns:330px minmax(0,1fr);
  min-height:610px;
}
.iptv-sidebar{
  min-width:0;
  border-right:1px solid var(--line);
  display:flex;
  flex-direction:column;
  background:color-mix(in srgb,var(--panel2) 72%,var(--panel));
}
.iptv-sidebar-top{padding:14px;border-bottom:1px solid var(--line)}
.iptv-provider-line{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
  margin-bottom:11px;
  font-size:12px;
}
.iptv-status-pill{
  border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));
  color:var(--accent);
  border-radius:999px;
  padding:4px 8px;
  font-size:9px;
  font-weight:900;
}
.iptv-filter-tabs{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:7px;
  margin-top:9px;
}
.iptv-local-news-panel{
  margin-top:10px;
  padding:10px;
  border:1px solid color-mix(in srgb,var(--blue) 22%,var(--line));
  border-radius:11px;
  background:color-mix(in srgb,var(--blue) 5%,var(--panel));
}
.iptv-local-news-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:8px;
  margin-bottom:8px;
}
.iptv-local-news-head strong{display:block;font-size:11px}
.iptv-local-news-head small{
  display:block;
  margin-top:2px;
  color:var(--muted);
  font-size:8px;
  line-height:1.35;
}
.iptv-local-news-status{
  flex:0 0 auto;
  padding:4px 7px;
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--muted);
  font-size:8px;
  font-weight:900;
  white-space:nowrap;
}
.iptv-local-news-status.ready{
  color:var(--accent);
  border-color:color-mix(in srgb,var(--accent) 30%,var(--line));
}
.iptv-local-news-status.loading{color:#ffd166}
.iptv-local-news-panel .iptv-empty{padding:10px 0}
.iptv-local-news-controls{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;
  gap:7px;
  align-items:end;
}
.iptv-local-news-controls label{
  display:grid;
  gap:4px;
  min-width:0;
  margin:0;
}
.iptv-local-news-controls label>span{
  color:var(--muted);
  font-size:8px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.35px;
}
.iptv-local-news-controls select{
  width:100%;
  min-width:0;
  height:36px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel2);
  color:var(--text);
  padding:0 7px;
  font-size:10px;
  font-weight:800;
}
.iptv-local-news-controls .btn{
  min-height:36px;
  white-space:nowrap;
}
.iptv-channel-local{
  color:var(--blue);
  margin-left:5px;
  font-size:7px;
  font-weight:950;
}
.iptv-filter{
  flex:1;
  min-height:38px;
  border-radius:9px;
  border:1px solid var(--line);
  background:var(--panel);
  color:var(--muted);
  cursor:pointer;
  font-weight:800;
  font-size:10px;
}
.iptv-filter.active{
  color:var(--text);
  border-color:var(--blue);
  background:color-mix(in srgb,var(--blue) 10%,var(--panel));
}
.iptv-search-wrap{position:relative}
.iptv-search-wrap input{padding-right:42px!important}
.iptv-search-clear{
  position:absolute;
  right:7px;
  top:50%;
  transform:translateY(-50%);
  width:32px;
  height:32px;
  border:0;
  border-radius:8px;
  background:transparent;
  color:var(--muted);
  font-size:20px;
  font-weight:800;
  cursor:pointer;
}
.iptv-search-clear:hover{background:var(--panel);color:var(--text)}
.iptv-reset-filters{
  grid-column:1/-1;
  min-height:36px;
  border:1px solid var(--line);
  border-radius:9px;
  background:transparent;
  color:var(--muted);
  font-size:10px;
  font-weight:900;
  cursor:pointer;
}
.iptv-reset-filters:hover{
  color:var(--text);
  border-color:color-mix(in srgb,var(--blue) 30%,var(--line));
}
.iptv-browser-controls select:disabled{
  opacity:.5;
  cursor:not-allowed;
}
.iptv-player-actions{
  display:grid;
  grid-template-columns:1fr 1.25fr 1fr;
  gap:8px;
}
.iptv-player-actions .btn{
  min-height:44px;
}
.iptv-player-actions .btn:disabled{
  opacity:.45;
  cursor:not-allowed;
}
.iptv-empty-action{
  margin-top:10px;
  min-height:38px;
  padding:0 12px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--panel);
  color:var(--text);
  font-weight:850;
  cursor:pointer;
}
.iptv-category-wrap{padding:10px 14px;border-bottom:1px solid var(--line)}
.iptv-channel-list{
  flex:1;
  min-height:0;
  overflow:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  padding:7px;
}
.iptv-channel{
  width:100%;
  display:grid;
  grid-template-columns:38px minmax(0,1fr) 34px;
  gap:9px;
  align-items:center;
  padding:9px;
  min-height:54px;
  border:1px solid transparent;
  border-radius:10px;
  background:transparent;
  color:var(--text);
  text-align:left;
  cursor:pointer;
}
.iptv-channel:hover,.iptv-channel.active{
  background:color-mix(in srgb,var(--blue) 8%,var(--panel));
  border-color:color-mix(in srgb,var(--blue) 26%,var(--line));
}
.iptv-channel-logo{
  width:36px;height:36px;object-fit:contain;border-radius:7px;
  background:color-mix(in srgb,var(--panel) 80%,transparent);
}
.iptv-channel-copy{min-width:0}
.iptv-channel-name{
  display:block;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  font-size:11px;
  font-weight:850;
}
.iptv-channel-program{
  display:block;
  margin-top:2px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  color:var(--muted);
  font-size:9px;
}
.iptv-star{
  min-width:34px;min-height:34px;
  border:none;background:transparent;color:var(--muted);
  cursor:pointer;font-size:20px;border-radius:8px
}
.iptv-star.active{color:#ffd95a}
.iptv-main{
  min-width:0;
  padding:16px;
  display:flex;
  flex-direction:column;
  gap:14px;
}
.iptv-video-wrap{
  position:relative;
  width:100%;
  aspect-ratio:16/9;
  background:#000;
  border-radius:15px;
  overflow:hidden;
  border:1px solid var(--line);
}
.iptv-video{width:100%}
#iptvVideo{
  width:100%;
  height:100%;
  display:block;
  background:#000;
  object-fit:contain;
}
#iptvVideo{
  touch-action:manipulation;
}
@media(max-width:640px){
  .iptv-video-wrap{
    border-radius:12px;
  }
  .iptv-now-main{
    align-items:center;
  }
  .iptv-favorite-current{
    min-width:44px;
    min-height:44px;
  }
  .iptv-browser-controls select,
  .iptv-local-news-controls select,
  #iptvChannelSearch{
    font-size:16px!important;
  }
}
.iptv-video-placeholder{
  position:absolute;
  inset:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  color:#fff;
  text-align:center;
  z-index:1;
  background:radial-gradient(circle at center,#14202d,#030507 70%);
}
.iptv-video-placeholder[hidden]{display:none}
.iptv-video-placeholder span{color:#9ca8b7;font-size:11px}
.iptv-tv-icon{font-size:32px}
.iptv-video-status{
  position:absolute;
  left:10px;
  bottom:10px;
  z-index:2;
  border-radius:999px;
  padding:5px 8px;
  background:rgba(0,0,0,.72);
  color:#fff;
  font-size:9px;
  display:none;
}
.iptv-video-status.show{display:block}
.iptv-now-card,.iptv-guide-card{
  border:1px solid var(--line);
  border-radius:14px;
  background:var(--panel2);
  padding:14px;
}
.iptv-now-main{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:12px;
  align-items:center;
}
.iptv-now-logo{
  width:52px;height:52px;object-fit:contain;border-radius:10px;
  background:var(--panel);
}
.iptv-now-program{color:var(--muted);font-size:11px}
.iptv-favorite-current{
  min-width:44px;min-height:44px;border-radius:11px;
  border:1px solid var(--line);
  background:var(--panel);
  color:var(--muted);
  cursor:pointer;
  font-size:24px;
}
.iptv-favorite-current.active{color:#ffd95a}
.iptv-epg-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-top:13px;
}
.iptv-epg-row>div{
  padding:10px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel);
  min-width:0;
}
.iptv-epg-label{
  display:block;color:var(--muted);font-size:9px;font-weight:900;text-transform:uppercase;
}
.iptv-epg-row strong{display:block;margin-top:3px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.iptv-epg-row small{display:block;margin-top:2px;color:var(--muted);font-size:9px}
.iptv-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.iptv-epg-list{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.iptv-epg-item{
  display:grid;
  grid-template-columns:105px minmax(0,1fr);
  gap:10px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel);
}
.iptv-epg-time{font-size:9px;color:var(--muted);font-weight:850}
.iptv-epg-title{font-size:10px;font-weight:850;min-width:0}
.iptv-epg-desc{margin-top:2px;color:var(--muted);font-size:9px;line-height:1.35}
.iptv-empty{padding:18px;text-align:center;color:var(--muted);font-size:10px}
.iptv-modal-overlay{
  position:fixed;inset:0;z-index:100020;
  display:none;
  place-items:center;
  padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right))
          max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));
  background:rgba(0,0,0,.72);
}
.iptv-modal-overlay.open{display:grid}
.iptv-modal{
  position:relative;
  width:min(520px,100%);
  max-height:calc(100dvh - 32px);
  overflow:auto;
  -webkit-overflow-scrolling:touch;
  border:1px solid var(--line);
  border-radius:16px;
  padding:18px;
  background:var(--panel);
  color:var(--text);
  box-shadow:0 20px 70px rgba(0,0,0,.38);
}
.iptv-diagnostics-modal{width:min(700px,100%)}
.iptv-modal-close{
  position:absolute;right:10px;top:10px;
  width:38px;height:38px;border-radius:10px;
  border:1px solid var(--line);background:var(--panel2);
  color:var(--text);font-size:22px;cursor:pointer
}
.iptv-modal-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.iptv-diagnostics-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.iptv-diagnostic{
  display:grid;
  grid-template-columns:120px minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  padding:10px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel2);
}
.iptv-diagnostic strong{font-size:10px}
.iptv-diagnostic span{font-size:9px;color:var(--muted);min-width:0;overflow-wrap:anywhere}
.iptv-diagnostic-state{
  font-size:9px!important;
  font-weight:900;
  border-radius:999px;
  padding:4px 7px;
  border:1px solid var(--line);
}
.iptv-diagnostic-state.ok{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}
.iptv-diagnostic-state.warn{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 40%,var(--line))}
.iptv-diagnostic-state.fail{color:#ff7272;border-color:color-mix(in srgb,#ff7272 40%,var(--line))}

@media(max-width:1100px){
  .iptv-player-view{grid-template-columns:290px minmax(0,1fr)}
}
@media(max-width:900px){
  .iptv-connect-grid{grid-template-columns:1fr 1fr}
  .iptv-connect-grid label:first-child{grid-column:1/-1}
  .iptv-player-view{display:block}
  .iptv-sidebar{border-right:none;border-bottom:1px solid var(--line)}
  .iptv-channel-list{max-height:320px}
}
@media(max-width:700px){
  .iptv-head{padding:14px}
  .iptv-connect-view{padding:14px}
  .iptv-connect-card{padding:14px}
  .iptv-connect-grid{grid-template-columns:1fr}
  .iptv-connect-grid label:first-child{grid-column:auto}
  .iptv-connect-options{display:block}
  .iptv-connect-options label+label{margin-top:10px}
  .iptv-main{padding:10px}
  .iptv-epg-row{grid-template-columns:1fr}
  .iptv-epg-item{grid-template-columns:88px minmax(0,1fr)}
  .iptv-diagnostic{grid-template-columns:1fr auto}
  .iptv-diagnostic span{grid-column:1/-1}
  .iptv-connect-grid input,.iptv-connect-options select,.iptv-search-wrap input,.iptv-category-wrap select{
    font-size:16px;
  }
}
@media(max-width:430px){
  .iptv-head{display:block}
  .iptv-head-actions{margin-top:10px}
  .iptv-head-actions .btn{flex:1}
  .iptv-connect-actions .btn{width:100%}
  .iptv-now-main{grid-template-columns:auto minmax(0,1fr)}
  .iptv-favorite-current{grid-column:1/-1;width:100%}
  .iptv-channel-list{max-height:280px}
}


html[data-cut-theme] .iptv-shell,
html[data-cut-theme] .iptv-connect-card,
html[data-cut-theme] .iptv-sidebar,
html[data-cut-theme] .iptv-now-card,
html[data-cut-theme] .iptv-guide-card,
html[data-cut-theme] .iptv-modal,
html[data-cut-theme] .iptv-diagnostic{
  color:var(--text);
}
body.iptv-modal-open{overflow:hidden}


/* =========================
   FREE LIVE TV v12.2
   ========================= */
.free-tv-summary{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  padding:12px 16px;
  border-bottom:1px solid var(--line);
  background:color-mix(in srgb,var(--panel2) 60%,var(--panel));
}
.free-tv-summary>div{
  min-width:0;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--panel);
}
.free-tv-summary strong{
  display:block;
  font-size:17px;
  line-height:1.1;
  color:var(--text);
}
.free-tv-summary span{
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-size:9px;
  font-weight:800;
}
.iptv-player-view{display:grid!important}
.iptv-load-more{
  margin:8px;
  min-height:42px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel);
  color:var(--text);
  font-weight:800;
  cursor:pointer;
}
.iptv-load-more:hover{border-color:var(--blue)}
.iptv-channel.failed{
  opacity:.62;
  border-color:color-mix(in srgb,#ff7272 20%,var(--line));
}
.iptv-channel-bad{
  color:#ff8a8a;
  font-size:9px;
  font-weight:900;
}
.iptv-channel-meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:10px;
}
.iptv-channel-meta span{
  padding:5px 8px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--panel);
  color:var(--muted);
  font-size:9px;
  font-weight:800;
}
.free-tv-note{
  padding:11px 12px;
  border:1px solid var(--line);
  border-radius:12px;
  color:var(--muted);
  background:color-mix(in srgb,var(--blue) 6%,var(--panel));
  font-size:9px;
  line-height:1.5;
}
@media(max-width:900px){
  .free-tv-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:430px){
  .free-tv-summary{grid-template-columns:1fr 1fr;padding:10px}
}


.iptv-retry-stream{
  position:absolute;
  right:10px;
  bottom:10px;
  z-index:3;
  min-height:38px;
  padding:7px 11px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.25);
  background:rgba(0,0,0,.78);
  color:#fff;
  font-size:10px;
  font-weight:900;
  cursor:pointer;
  backdrop-filter:blur(6px);
}
.iptv-retry-stream:hover{border-color:rgba(255,255,255,.6)}
.iptv-channel-retrying{
  color:var(--warning);
  font-size:9px;
  font-weight:900;
}


/* =========================
   SPORTS HUB v12.4 — Combat Visuals + Live Alerts
   ========================= */
.fighter-avatar{
  position:relative;
  width:48px;
  height:48px;
  border-radius:50%;
  overflow:hidden;
  flex:0 0 48px;
  display:grid;
  place-items:center;
  background:color-mix(in srgb,var(--panel2) 78%,#000);
  border:2px solid var(--line);
}
.fighter-avatar.red{
  border-color:#f85149;
  box-shadow:0 0 0 2px color-mix(in srgb,#f85149 14%,transparent);
}
.fighter-avatar.blue{
  border-color:#388bfd;
  box-shadow:0 0 0 2px color-mix(in srgb,#388bfd 14%,transparent);
}
.fighter-avatar img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:top center;
  display:block;
}
.fighter-initials{
  font-size:12px;
  font-weight:950;
  letter-spacing:.4px;
  color:var(--text);
}
.guide-fighter-row{
  display:grid;
  grid-template-columns:48px minmax(0,1fr) auto auto;
  align-items:center;
  gap:10px;
  min-width:0;
}
.guide-fighter-copy{
  min-width:0;
}
.guide-fighter-copy strong{
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:12px;
}
.guide-fighter-copy small{
  display:block;
  margin-top:2px;
  color:var(--muted);
  font-size:10px;
  font-weight:700;
}
.fighter-corner{
  font-size:8px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.6px;
  color:var(--muted);
}
.fighter-win{
  padding:3px 7px;
  border-radius:999px;
  background:color-mix(in srgb,var(--green) 18%,transparent);
  border:1px solid color-mix(in srgb,var(--green) 40%,var(--line));
  color:var(--green);
  font-size:8px;
  font-weight:950;
}
.sports-alert-badge{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:3px 7px;
  border-radius:999px;
  font-size:8px;
  line-height:1;
  font-weight:950;
  letter-spacing:.25px;
  white-space:nowrap;
}
.sports-alert-badge.nail{
  color:#ffa657;
  background:rgba(240,136,62,.12);
  border:1px solid rgba(240,136,62,.38);
}
.sports-alert-badge.upset{
  color:#e3b341;
  background:rgba(210,153,34,.12);
  border:1px solid rgba(210,153,34,.38);
}
.guide-game.is-thriller{
  border-color:color-mix(in srgb,#f0883e 58%,var(--line));
}
.gc-combat-matchup{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;
  gap:16px;
  padding:18px;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--panel2);
}
.gc-fighter{
  min-width:0;
  text-align:center;
}
.gc-fighter .fighter-avatar{
  width:88px;
  height:88px;
  margin:0 auto 10px;
}
.gc-fighter strong{
  display:block;
  font-size:14px;
}
.gc-fighter small{
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-size:10px;
}
.gc-vs{
  font-size:12px;
  font-weight:950;
  color:var(--muted);
}
.gc-combat-result{
  margin-top:8px;
  font-size:9px;
  font-weight:900;
}
@media(max-width:620px){
  .guide-fighter-row{grid-template-columns:44px minmax(0,1fr) auto}
  .guide-fighter-row .fighter-corner{display:none}
  .fighter-avatar{width:44px;height:44px;flex-basis:44px}
  .gc-combat-matchup{grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);gap:8px;padding:12px}
  .gc-fighter .fighter-avatar{width:68px;height:68px}
}


/* v12.5 fighter portrait visibility */
.fighter-avatar{
  width:58px;
  height:58px;
  flex-basis:58px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel2) 88%,#fff 2%),color-mix(in srgb,var(--panel2) 92%,#000));
}
.fighter-avatar img.fighter-photo{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 12%;
  transform:scale(1.06);
}
.fighter-avatar.fighter-photo-loaded{
  background:color-mix(in srgb,var(--panel2) 88%,#000);
}
.fighter-avatar.fighter-photo-missing{
  opacity:.92;
}
.guide-fighter-row{
  grid-template-columns:58px minmax(0,1fr) auto auto;
}
.gc-fighter .fighter-avatar{
  width:104px;
  height:104px;
}
@media(max-width:620px){
  .fighter-avatar{width:52px;height:52px;flex-basis:52px}
  .guide-fighter-row{grid-template-columns:52px minmax(0,1fr) auto}
  .gc-fighter .fighter-avatar{width:82px;height:82px}
}


/* =========================
   v12.6 — Fighter Hub portrait separation
   ========================= */
.team-hub-identity.fighter-hub-identity{
  align-items:center;
  gap:18px;
}
.team-hub-identity .fighter-avatar.hub-portrait{
  width:112px;
  height:112px;
  flex:0 0 112px;
  border-width:2px;
  border-color:color-mix(in srgb,var(--blue) 55%,var(--line));
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel2) 84%,#fff 3%),color-mix(in srgb,var(--panel2) 92%,#000));
}
.team-hub-identity .fighter-avatar.hub-portrait img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 10%;
  transform:scale(1.03);
}
.team-hub-team-logo{
  width:64px;
  height:64px;
  object-fit:contain;
}
.team-hub-identity-copy{min-width:0}
.fighter-name-line{
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
}
.fighter-country-flag{
  width:28px !important;
  height:20px !important;
  object-fit:cover !important;
  border-radius:3px;
  border:1px solid var(--line);
  flex:0 0 auto;
}
.fighter-id-note{
  display:block;
  margin-top:5px;
  color:var(--muted);
  font-size:9px;
  font-weight:750;
}
.fighter-hub-badge{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:5px 9px;
  border:1px solid color-mix(in srgb,var(--blue) 35%,var(--line));
  border-radius:8px;
  color:var(--text);
  background:color-mix(in srgb,var(--blue) 8%,var(--panel));
  font-size:9px;
  font-weight:900;
}
.fighter-hub-summary{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-top:12px;
}
.fighter-hub-summary>div{
  border:1px solid var(--line);
  border-radius:10px;
  padding:10px;
  background:var(--panel2);
}
.fighter-hub-summary small{
  display:block;
  color:var(--muted);
  font-size:9px;
  font-weight:800;
  margin-bottom:4px;
}
.fighter-hub-summary strong{
  display:block;
  font-size:11px;
}
@media(max-width:620px){
  .team-hub-identity .fighter-avatar.hub-portrait{
    width:92px;
    height:92px;
    flex-basis:92px;
  }
  .fighter-hub-summary{grid-template-columns:1fr}
}


/* ==========================================================
   SPORTS HUB v12.7 — SIMPLE / CLEAR LAYOUT
   ========================================================== */

/* Let the actual schedule use the page width. Supporting information moves below. */
.guide-layout{
  grid-template-columns:minmax(0,1fr) !important;
  gap:14px !important;
}
.guide-side{
  position:static !important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  gap:12px !important;
}

/* Schedule becomes a stack of individually recognizable event cards. */
.guide-board{
  overflow:visible !important;
  background:transparent !important;
  border:0 !important;
}
.guide-board-head{
  border:1px solid var(--line) !important;
  border-radius:16px !important;
  margin-bottom:10px !important;
  background:#0d141c !important;
}
.guide-board-title-wrap{
  min-width:0;
}
.guide-board-title-wrap h3{
  margin:0;
}
.guide-board-title-wrap small{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:10px;
  font-weight:700;
}
.guide-list{
  display:grid !important;
  gap:10px !important;
}
.guide-game{
  grid-template-columns:88px minmax(0,1fr) minmax(190px,260px) !important;
  gap:16px !important;
  align-items:center !important;
  padding:16px !important;
  border:1px solid var(--line) !important;
  border-radius:16px !important;
  background:#080d13 !important;
  overflow:hidden;
}
.guide-game:last-child{
  border-bottom:1px solid var(--line) !important;
}
@media (hover:hover) and (pointer:fine){
  .guide-game:hover{
    background:#0d141c !important;
    border-color:color-mix(in srgb,var(--blue) 32%,var(--line)) !important;
  }
}
.guide-game.selected{
  background:color-mix(in srgb,var(--blue) 5%,#080d13) !important;
  border-color:color-mix(in srgb,var(--blue) 45%,var(--line)) !important;
  box-shadow:inset 3px 0 0 var(--blue) !important;
}

/* Time/status is a compact, consistent left column. */
.guide-time{
  align-self:start;
  padding-top:3px;
}
.guide-time>small{
  margin-top:5px !important;
}
.guide-countdown{
  margin-top:7px !important;
}

/* Team / fighter area is the visual focus. */
.guide-teams{
  gap:8px !important;
}
.combat-matchup{
  gap:9px !important;
}
.combat-division{
  display:inline-flex;
  width:max-content;
  max-width:100%;
  padding:4px 8px;
  margin-bottom:1px;
  border-radius:999px;
  color:#f2cf6b;
  background:rgba(216,184,106,.08);
  border:1px solid rgba(216,184,106,.22);
  font-size:10px;
  font-weight:950;
  letter-spacing:.15px;
}

/* Keep each fighter's photo, name, record, and corner together. */
.guide-fighter-row{
  grid-template-columns:58px minmax(0,1fr) auto !important;
  gap:11px !important;
  padding:8px 10px !important;
  border:1px solid rgba(255,255,255,.065);
  border-radius:13px;
  background:rgba(255,255,255,.018);
}
.guide-fighter-name-line{
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
  min-width:0;
}
.guide-fighter-name-line .team-link{
  font-size:13px;
  font-weight:950;
}
.guide-fighter-copy small{
  margin-top:3px !important;
  font-size:10px !important;
}
.fighter-corner{
  display:inline-flex !important;
  align-items:center;
  padding:3px 6px;
  border-radius:999px;
  font-size:7px !important;
  line-height:1;
  letter-spacing:.45px;
  border:1px solid var(--line);
}
.fighter-corner.red{
  color:#ff8c86;
  border-color:rgba(248,81,73,.30);
  background:rgba(248,81,73,.07);
}
.fighter-corner.blue{
  color:#7bb6ff;
  border-color:rgba(56,139,253,.30);
  background:rgba(56,139,253,.07);
}

/* Right-side event facts are contained, rather than visually floating. */
.guide-network{
  align-self:stretch;
  display:flex !important;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  min-width:0;
  padding:10px 12px;
  border:1px solid rgba(255,255,255,.055);
  border-radius:12px;
  background:rgba(255,255,255,.018);
}
.guide-network small{
  margin-top:1px !important;
  white-space:normal !important;
  line-height:1.35;
}
.guide-card-badges{
  margin-top:5px !important;
}

/* UFC event headings now clearly separate fight cards. */
.guide-event-divider{
  margin-top:8px;
  padding:11px 14px !important;
  border:1px solid var(--line) !important;
  border-radius:13px !important;
  background:#0d141c !important;
  color:var(--text) !important;
}
.guide-event-divider:first-child{
  margin-top:0;
}
.guide-event-divider span{
  display:inline-flex;
  margin-left:8px !important;
  padding:3px 7px;
  border-radius:999px;
  background:rgba(20,184,255,.06);
  border:1px solid rgba(20,184,255,.16);
  font-size:8px;
}

/* Quick-detail cards below the schedule are calmer and less dominant. */
.guide-detail-card,.guide-now-card{
  padding:16px !important;
  border-radius:16px !important;
}
.guide-detail-card h3,.guide-now-card h3{
  font-size:14px;
}
.guide-detail-match{
  gap:10px !important;
}

/* Summary row is informative without competing with the events. */
.guide-summary{
  padding:11px 13px !important;
  border-radius:13px !important;
}
.guide-summary small{
  font-size:9px !important;
}
.guide-summary strong{
  font-size:19px !important;
}

/* Compact density remains compact but never collapses visual grouping. */
.guide-density-compact .guide-game{
  padding:11px 13px !important;
}
.guide-density-compact .guide-fighter-row{
  padding:6px 8px !important;
}

/* List view still hides TV info, but retains clear card grouping. */
.guide-view-list .guide-game{
  grid-template-columns:88px minmax(0,1fr) !important;
}

/* Tablet */
@media(max-width:900px){
  .guide-game{
    grid-template-columns:78px minmax(0,1fr) !important;
  }
  .guide-network{
    grid-column:2;
    padding:8px 10px;
  }
  .guide-side{
    grid-template-columns:1fr !important;
  }
}

/* Phones: vertical cards, no squeezed or drifting content. */
@media(max-width:620px){
  .guide-board-head{
    align-items:flex-start !important;
    flex-direction:column !important;
  }
  .guide-board-head-right{
    justify-content:flex-start !important;
    width:100%;
  }
  .guide-game,
  .guide-view-list .guide-game{
    grid-template-columns:1fr !important;
    gap:10px !important;
    padding:13px !important;
  }
  .guide-time{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
    padding:0;
  }
  .guide-time>small{
    display:inline !important;
    margin:0 !important;
  }
  .guide-countdown{
    margin:0 !important;
  }
  .guide-network{
    grid-column:auto;
    width:100%;
  }
  .guide-fighter-row{
    grid-template-columns:52px minmax(0,1fr) auto !important;
    padding:8px !important;
  }
  .fighter-avatar{
    width:52px !important;
    height:52px !important;
    flex-basis:52px !important;
  }
  .guide-event-divider{
    line-height:1.4;
  }
  .guide-event-divider span{
    margin-left:0 !important;
    margin-top:5px;
  }
}

/* Very narrow phones */
@media(max-width:380px){
  .guide-fighter-row{
    grid-template-columns:48px minmax(0,1fr) !important;
  }
  .guide-fighter-row>.fighter-win{
    grid-column:2;
    justify-self:start;
  }
  .fighter-avatar{
    width:48px !important;
    height:48px !important;
    flex-basis:48px !important;
  }
}


/* ==========================================================
   SPORTS HUB v12.8 — COMPACT APP HEADER
   Removes the oversized intro without removing any features.
   ========================================================== */

.sports-guide-section{
  padding-top:12px !important;
}

.sports-guide-shell{
  gap:10px !important;
}

/* Small utility header instead of the large hero-style Sports Hub intro. */
.sports-appbar{
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#0a1017;
}

.sports-appbar-title{
  min-width:0;
  display:flex;
  align-items:center;
  gap:10px;
}

.sports-appbar-icon{
  width:34px;
  height:34px;
  flex:0 0 34px;
  display:grid;
  place-items:center;
  border-radius:10px;
  background:color-mix(in srgb,var(--accent) 12%,var(--panel2));
  border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));
  color:var(--accent);
  font-size:14px;
  font-weight:950;
}

.sports-appbar-title strong{
  display:block;
  font-size:15px;
  line-height:1.15;
}

.sports-appbar-title small{
  display:block;
  margin-top:2px;
  color:var(--muted);
  font-size:10px;
  font-weight:700;
  line-height:1.25;
}

.sports-appbar-health{
  flex:0 0 auto;
  min-height:36px;
  padding:0 10px !important;
  border-radius:10px !important;
}

/* Make the main mode switcher feel like primary app navigation. */
.sports-hub-tabs{
  gap:6px !important;
  padding:6px !important;
  border:1px solid var(--line);
  border-radius:14px;
  background:#080d13;
}

.sports-hub-tab,
.my-sports-manage{
  min-height:38px !important;
  border-radius:9px !important;
  padding-inline:12px !important;
}

.sports-hub-tab.active{
  background:var(--accent) !important;
  color:#03110a !important;
  box-shadow:none !important;
}

/* Reduce visual noise between navigation and games. */
.sports-pulse{
  min-height:38px !important;
  border-radius:12px !important;
}

.sports-pulse-label{
  padding-inline:11px !important;
  font-size:10px !important;
}

/* Keep snapshots available, but make them secondary rather than headline content. */
.ultimate-snapshot{
  gap:8px !important;
}

.ultimate-snap{
  padding:10px 12px !important;
  min-height:0 !important;
  border-radius:12px !important;
}

.ultimate-snap small{
  font-size:9px !important;
}

.ultimate-snap h4{
  margin:4px 0 2px !important;
  font-size:12px !important;
}

.ultimate-snap p{
  font-size:9px !important;
  line-height:1.3 !important;
}

/* Featured events are still present but visually lighter. */
.guide-featured-strip{
  gap:8px !important;
}

.guide-featured-card{
  padding:10px !important;
  border-radius:13px !important;
}

/* On smaller screens, the header remains one clean row until it truly cannot fit. */
@media(max-width:640px){
  .sports-appbar{
    padding:9px 10px;
  }

  .sports-appbar-title small{
    display:none;
  }

  .sports-appbar-health span{
    font-size:0;
  }

  .sports-appbar-health span:after{
    content:"Feeds";
    font-size:10px;
  }

  .sports-hub-tabs{
    margin-inline:0 !important;
  }
}

@media(max-width:380px){
  .sports-appbar{
    align-items:flex-start;
  }

  .sports-appbar-title strong{
    font-size:14px;
  }
}


/* ==========================================================
   v13.0 VISUAL STABILITY
   Prevents refresh/theme flicker without removing live updates.
   ========================================================== */

/* The sports guide updates in place; avoid color tweening when DOM is refreshed. */
#sportsGuideSection .guide-game,
#sportsGuideSection .guide-featured-card,
#sportsGuideSection .ultimate-snap,
#sportsGuideSection .guide-summary,
#sportsGuideSection .guide-detail-card,
#sportsGuideSection .guide-now-card{
  transition:none !important;
}

/* Feed health should not repaint the whole control when one source briefly changes state. */
#guideHealth,
#guideHealth.good,
#guideHealth.partial{
  background:var(--theme-surface2) !important;
  border-color:var(--line) !important;
  color:var(--muted) !important;
  box-shadow:none !important;
}
#guideHealth i{
  background:#647180 !important;
  box-shadow:none !important;
}
#guideHealth.good i{
  background:var(--accent) !important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 13%,transparent) !important;
}
#guideHealth.partial i{
  background:var(--warning) !important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--warning) 12%,transparent) !important;
}

/* Prevent temporary data-state classes from subtly tinting large areas. */
#sportsGuideSection .guide-game.is-thriller{
  background:#080d13 !important;
}
#sportsGuideSection .guide-game.is-big:not(.selected){
  background:#080d13 !important;
}
#sportsGuideSection .guide-game.selected{
  background:color-mix(in srgb,var(--blue) 5%,#080d13) !important;
}

/* Keep the section itself visually fixed while data updates. */
#sportsGuideSection{
  contain:layout paint;
}

/* Users who prefer reduced motion also get fully static refresh presentation. */
@media(prefers-reduced-motion:reduce){
  #sportsGuideSection *,
  #sportsGuideSection *::before,
  #sportsGuideSection *::after{
    transition:none !important;
  }
}


/* ==========================================================
   v13.8 — SAFE FLYING SCISSORS OVERLAY
   The known-good v13.5 cord + spark CSS above is unchanged.
   ========================================================== */
.tv-cut-scissors{
  position:absolute;
  left:0;
  top:0;
  width:44px;
  height:30px;
  opacity:0;
  pointer-events:none;
  z-index:50;
  transform-origin:14px 15px;
  transform:translate(78px,42px) rotate(-28deg) scale(.86);
}

.tv-scissor-blade{
  position:absolute;
  left:13px;
  top:14px;
  width:31px;
  height:2px;
  border-radius:1px 10px 10px 1px;
  background:linear-gradient(90deg,#98a4ad,#edf3f7 58%,#8d99a2);
  transform-origin:1px 1px;
  box-shadow:0 1px 1px rgba(0,0,0,.35);
}

.tv-scissor-upper{transform:rotate(-19deg)}
.tv-scissor-lower{transform:rotate(19deg)}

.tv-scissor-handle{
  position:absolute;
  left:0;
  width:12px;
  height:10px;
  border:3px solid #d84b57;
  border-radius:50%;
  box-sizing:border-box;
}

.tv-scissor-handle-a{top:3px}
.tv-scissor-handle-b{top:17px}

.tv-scissor-pivot{
  position:absolute;
  left:11px;
  top:12px;
  width:6px;
  height:6px;
  border-radius:50%;
  background:#d8e0e6;
  border:1px solid #76818a;
  box-sizing:border-box;
  z-index:3;
}

/*
  tv-cut-scissors lives INSIDE tv-cord-wrap.
  Therefore (0,0) is the exact same moving connection point used by
  tv-cord-spark. The blades cross roughly 31px right / 15px down inside
  the scissors. At cut time translate(-33px,-17px) puts that crossing
  directly over the spark, including the spark's -2/-2 offset.
*/
.cut-intro.play .tv-cut-scissors{
  animation:tvSafeScissorsFly 4.2s cubic-bezier(.22,.70,.20,1) forwards;
}
.cut-intro.play .tv-scissor-upper{
  animation:tvSafeScissorUpper 4.2s linear forwards;
}
.cut-intro.play .tv-scissor-lower{
  animation:tvSafeScissorLower 4.2s linear forwards;
}

@keyframes tvSafeScissorsFly{
  0%,52%{
    opacity:0;
    transform:translate(78px,42px) rotate(-28deg) scale(.86);
  }
  58%{
    opacity:1;
    transform:translate(68px,37px) rotate(-24deg) scale(.88);
  }
  68%{
    opacity:1;
    transform:translate(45px,25px) rotate(-17deg) scale(.92);
  }
  75%{
    opacity:1;
    transform:translate(21px,13px) rotate(-10deg) scale(.96);
  }
  79%{
    opacity:1;
    transform:translate(-4px,1px) rotate(-4deg) scale(.99);
  }
  81.2%{
    opacity:1;
    transform:translate(-25px,-11px) rotate(-1deg) scale(1);
  }
  81.8%,82.4%{
    opacity:1;
    transform:translate(-33px,-17px) rotate(0deg) scale(1);
  }
  84%{
    opacity:1;
    transform:translate(-27px,-24px) rotate(8deg) scale(.98);
  }
  89%{
    opacity:.78;
    transform:translate(-7px,-37px) rotate(22deg) scale(.92);
  }
  96%,100%{
    opacity:0;
    transform:translate(22px,-52px) rotate(39deg) scale(.84);
  }
}

@keyframes tvSafeScissorUpper{
  0%,79.7%{transform:rotate(-19deg)}
  81.2%{transform:rotate(-8deg)}
  81.8%,82.4%{transform:rotate(0deg)}
  84%{transform:rotate(-9deg)}
  100%{transform:rotate(-16deg)}
}

@keyframes tvSafeScissorLower{
  0%,79.7%{transform:rotate(19deg)}
  81.2%{transform:rotate(8deg)}
  81.8%,82.4%{transform:rotate(0deg)}
  84%{transform:rotate(9deg)}
  100%{transform:rotate(16deg)}
}

@media(prefers-reduced-motion:reduce){
  .tv-cut-scissors{display:none!important}
}


/* v14.0: prevent background sports-guide refreshes from moving the page. */
#sportsGuideSection,
#guideWeekStrip,
#guideList,
#guideFeaturedStrip{
  overflow-anchor:none;
}


/* FREE TV v14.1 — easier channel browsing */
.iptv-player-view{grid-template-columns:390px minmax(0,1fr)!important;align-items:start}
.iptv-sidebar{
  position:sticky;top:calc(var(--header) + 12px);
  height:calc(100vh - var(--header) - 28px);max-height:780px;min-height:560px;
  border:1px solid var(--line);border-radius:15px 0 0 15px;overflow:hidden
}
.iptv-sidebar-top{flex:0 0 auto;padding:12px 13px!important}
.iptv-search-wrap input{min-height:44px;font-size:14px}
.iptv-filter-tabs{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px!important}
.iptv-filter{min-height:42px!important;padding:0 6px!important;white-space:nowrap}
.iptv-browser-controls{
  flex:0 0 auto;display:grid;grid-template-columns:1fr 1fr;gap:8px;
  padding:10px 12px;border-bottom:1px solid var(--line);background:var(--panel2)
}
.iptv-browser-controls label{display:grid;gap:4px;min-width:0}
.iptv-browser-controls label>span{color:var(--muted);font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.4px}
.iptv-browser-controls select{
  width:100%;min-width:0;height:40px;border:1px solid var(--line);border-radius:9px;
  background:var(--panel);color:var(--text);padding:0 9px;font-size:11px;font-weight:800
}
.iptv-sort-control{grid-column:1/-1}
.iptv-list-tools{
  flex:0 0 auto;min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:6px 10px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel2) 86%,var(--panel));
  color:var(--muted);font-size:9px;font-weight:800
}
.iptv-list-tools>div{display:flex;gap:5px}
.iptv-list-tools button{
  min-height:30px;border:1px solid var(--line);border-radius:8px;background:var(--panel);
  color:var(--text);padding:0 8px;font-size:9px;font-weight:850;cursor:pointer
}
.iptv-channel-list{
  flex:1 1 auto!important;height:auto!important;min-height:0!important;max-height:none!important;
  overflow-y:scroll!important;overflow-x:hidden!important;scrollbar-width:auto;scrollbar-color:var(--blue) var(--panel);
  scroll-behavior:auto;overscroll-behavior:contain;overflow-anchor:none;padding:6px!important
}
.iptv-channel-list::-webkit-scrollbar{width:12px}
.iptv-channel-list::-webkit-scrollbar-track{background:var(--panel)}
.iptv-channel-list::-webkit-scrollbar-thumb{
  background:color-mix(in srgb,var(--blue) 62%,var(--line));border:3px solid var(--panel);border-radius:999px
}
.iptv-channel{min-height:58px!important;padding:8px 9px!important}
.iptv-channel-country{
  display:inline-flex;margin-left:5px;padding:2px 5px;border:1px solid var(--line);border-radius:999px;
  color:var(--muted);font-size:7px;font-weight:900;vertical-align:middle
}
.iptv-channel-working{display:inline-flex;margin-left:5px;color:var(--accent);font-size:8px;font-weight:950}
.iptv-load-more{flex:0 0 auto}
@media(max-width:760px){
  .iptv-filter-tabs{
    display:flex;
    overflow-x:auto;
    gap:6px;
    scrollbar-width:none;
  }
  .iptv-filter-tabs::-webkit-scrollbar{display:none}
  .iptv-filter{
    flex:0 0 auto;
    min-width:94px;
    min-height:42px;
  }
  .iptv-local-news-controls{
    grid-template-columns:1fr 1fr;
  }
  .iptv-local-news-controls .btn{
    grid-column:1/-1;
    width:100%;
  }
}
@media(max-width:520px){
  .iptv-player-actions{
    grid-template-columns:1fr 1fr;
  }
  #iptvRetryCurrentBtn{
    grid-column:1/-1;
    grid-row:1;
  }
  #iptvPrevChannelBtn{grid-column:1;grid-row:2}
  #iptvNextChannelBtn{grid-column:2;grid-row:2}
  .iptv-player-actions .btn{
    min-height:46px;
  }
}
@media(max-width:430px){
  .iptv-local-news-controls{
    grid-template-columns:1fr;
  }
  .iptv-local-news-controls .btn{
    grid-column:auto;
  }
  .iptv-local-news-head{
    flex-direction:column;
  }
}
@media(max-width:1050px){.iptv-player-view{grid-template-columns:350px minmax(0,1fr)!important}}
@media(max-width:820px){
  .iptv-player-view{grid-template-columns:1fr!important}
  .iptv-sidebar{position:static;top:auto;width:100%;height:620px;min-height:0;max-height:620px;border-radius:14px;border-right:1px solid var(--line);margin-bottom:12px}
  .iptv-main{padding:12px!important}
}
@media(max-width:520px){
  .iptv-sidebar{height:600px;max-height:600px}
  .iptv-browser-controls{grid-template-columns:1fr}
  .iptv-sort-control{grid-column:auto}
  .iptv-filter-tabs{grid-template-columns:1fr 1fr!important}
  .iptv-list-tools{align-items:flex-start;flex-direction:column}
  .iptv-list-tools>div{width:100%}
  .iptv-list-tools button{flex:1;min-height:38px}
}


/* ==========================================================
   v14.2 — FULLSCREEN FREE TV PORTAL
   ========================================================== */
.free-tv-launch-card{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:16px;
  margin-top:18px;
  padding:18px;
  border:1px solid color-mix(in srgb,var(--blue) 30%,var(--line));
  border-radius:16px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--blue) 7%,var(--panel2)),var(--panel2));
}
.free-tv-launch-icon{
  width:58px;height:58px;display:grid;place-items:center;
  border-radius:14px;border:1px solid var(--line);background:var(--panel);font-size:28px
}
.free-tv-launch-copy{min-width:0}
.free-tv-launch-copy small{color:var(--blue);font-size:9px;font-weight:950;letter-spacing:.55px}
.free-tv-launch-copy h3{margin:3px 0 4px;font-size:20px}
.free-tv-launch-copy p{margin:0;color:var(--muted);font-size:11px;line-height:1.45}
.free-tv-launch-btn{min-width:130px}

.free-tv-panel-bar{
  display:flex;align-items:center;gap:12px;margin-bottom:10px;
  padding:10px 12px;border:1px solid var(--line);border-radius:13px;background:var(--panel2)
}
.free-tv-panel-bar>div{min-width:0}
.free-tv-panel-bar strong{display:block;font-size:15px}
.free-tv-panel-bar small{display:block;margin-top:2px;color:var(--muted);font-size:9px}

#portalView.free-tv-mode .app-layout{
  display:block!important;
  grid-template-columns:none!important;
  width:100%!important;
  max-width:none!important;
  min-height:calc(100vh - var(--header));
}
#portalView.free-tv-mode .sidebar{
  display:none!important;
}
#portalView.free-tv-mode .main-panel{
  width:100%!important;
  max-width:none!important;
  padding:12px 16px 28px!important;
}
#portalView.free-tv-mode .free-tv-portal-panel{
  width:100%;
  max-width:none;
}
#portalView.free-tv-mode #iptvHub{
  width:100%;
  max-width:none;
  margin:0;
}
#portalView.free-tv-mode .iptv-player-view{
  grid-template-columns:minmax(330px,420px) minmax(0,1fr)!important;
}
#portalView.free-tv-mode .iptv-sidebar{
  top:calc(var(--header) + 10px);
  height:calc(100vh - var(--header) - 34px);
  max-height:none;
}
#portalView.free-tv-mode .iptv-video-wrap{
  max-height:calc(100vh - var(--header) - 130px);
}
@media(max-width:820px){
  .free-tv-launch-card{grid-template-columns:auto minmax(0,1fr)}
  .free-tv-launch-btn{grid-column:1/-1;width:100%}
  #portalView.free-tv-mode .main-panel{padding:10px!important}
  #portalView.free-tv-mode .iptv-player-view{grid-template-columns:1fr!important}
  #portalView.free-tv-mode .iptv-sidebar{
    position:static;height:560px;max-height:560px
  }
}
@media(max-width:520px){
  .free-tv-launch-card{grid-template-columns:1fr;text-align:center}
  .free-tv-launch-icon{margin:auto}
  .free-tv-panel-bar{align-items:flex-start;flex-direction:column}
  .free-tv-panel-bar .btn{width:100%}
}


#portalView.free-tv-mode{
  width:100%!important;
  max-width:none!important;
}
#portalView.free-tv-mode .main-panel{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  margin:0!important;
  padding:12px 18px 28px!important;
}
#portalView.free-tv-mode .free-tv-portal-panel,
#portalView.free-tv-mode #iptvHub,
#portalView.free-tv-mode .iptv-player-view{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
}
#portalView.free-tv-mode .iptv-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  flex-wrap:wrap;
}
#portalView.free-tv-mode .iptv-player-view{
  grid-template-columns:minmax(360px,430px) minmax(0,1fr)!important;
  min-height:0!important;
}
#portalView.free-tv-mode .iptv-sidebar{
  position:sticky!important;
  top:calc(var(--header) + 10px)!important;
  height:calc(100vh - var(--header) - 34px)!important;
  max-height:none!important;
  min-height:620px!important;
  border-radius:15px 0 0 15px!important;
}
#portalView.free-tv-mode .iptv-main{
  min-width:0!important;
  padding:16px 18px!important;
}
#portalView.free-tv-mode .iptv-video-wrap{
  width:100%!important;
  max-height:none!important;
  aspect-ratio:16/9!important;
}
@media(max-width:980px){
  #portalView.free-tv-mode .iptv-player-view{
    grid-template-columns:330px minmax(0,1fr)!important;
  }
}
@media(max-width:820px){
  #portalView.free-tv-mode .main-panel{padding:10px!important}
  #portalView.free-tv-mode .iptv-player-view{grid-template-columns:1fr!important}
  #portalView.free-tv-mode .iptv-sidebar{
    position:static!important;
    height:580px!important;
    min-height:0!important;
    max-height:580px!important;
    border-radius:14px!important;
    margin-bottom:12px;
  }
}


/* Latest customer dashboard announcement shown directly under the Free TV launcher. */
.dashboard-public-notice{
  margin-top:14px;
  padding:18px 20px;
  border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));
  border-radius:16px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 4%,#101821),#0b1118);
}
.dashboard-public-notice-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:8px;
}
.dashboard-public-notice-head span{
  color:var(--accent);
  font-size:9px;
  font-weight:950;
  letter-spacing:.55px;
}
.dashboard-public-notice-head small{
  color:var(--muted);
  font-size:10px;
}
.dashboard-public-notice h3{
  margin:0 0 7px;
  font-size:19px;
}
.dashboard-public-notice p{
  margin:0;
  color:#cdd7e3;
  line-height:1.55;
  white-space:pre-wrap;
  font-size:12px;
}
@media(max-width:620px){
  .dashboard-public-notice-head{
    align-items:flex-start;
    flex-direction:column;
    gap:4px;
  }
}


/* ==========================================================
   v14.4 — DASHBOARD ANNOUNCEMENT ACTIONS + BROADCAST STYLE
   ========================================================== */
.dashboard-announcement-action-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}
.dashboard-announcement-upload{
  margin-top:8px;
  padding:12px;
  border:1px dashed var(--line);
  border-radius:12px;
  background:color-mix(in srgb,var(--panel2) 80%,transparent);
}
.dashboard-announcement-upload label{margin-top:0}
.dashboard-announcement-upload input[type="file"]{
  min-height:46px;
  padding:9px;
}
.dashboard-announcement-upload small{
  display:block;
  margin-top:6px;
  color:var(--muted);
  line-height:1.4;
}
.announcement-upload-progress{
  margin-top:10px;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel2);
}
.announcement-upload-progress>div{
  height:6px;
  overflow:hidden;
  border-radius:999px;
  background:var(--panel);
}
.announcement-upload-progress>div>span{
  display:block;
  width:0%;
  height:100%;
  border-radius:inherit;
  background:var(--blue);
  transition:width .15s linear;
}
.announcement-upload-progress small{
  display:block;
  margin-top:6px;
  color:var(--muted);
  font-size:10px;
}
.dashboard-public-notice-action{
  margin-top:14px;
}
.dashboard-public-notice-action .btn{
  display:inline-flex;
  width:auto;
  min-width:126px;
  text-decoration:none;
}
.public-message-admin-row .announcement-admin-details{
  min-width:0;
}
.public-message-admin-row .announcement-admin-action{
  display:block;
  margin-top:4px;
  color:var(--blue);
  font-size:10px;
  overflow-wrap:anywhere;
}
.broadcast-style-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  margin-top:6px;
}
.broadcast-color-row{
  display:flex;
  align-items:center;
  gap:9px;
}
.broadcast-color-row input[type="color"]{
  width:58px;
  min-width:58px;
  height:44px;
  padding:4px;
  cursor:pointer;
}
.broadcast-color-row span{
  color:var(--muted);
  font-size:11px;
  font-weight:800;
}
/* Broadcast typography is controlled by Firebase values through these variables. */
.header-broadcast-track span{
  color:var(--broadcast-font-color,#c9fbe0)!important;
  font-size:var(--broadcast-font-size,17px)!important;
}
.broadcast-preview .ticker-track span{
  color:var(--broadcast-font-color,#c9fbe0)!important;
  font-size:var(--broadcast-font-size,17px)!important;
}
@media(max-width:700px){
  .dashboard-announcement-action-grid,.broadcast-style-grid{grid-template-columns:1fr}
}


/* ==========================================================
   v14.6 — CUSTOMER DASHBOARD ANNOUNCEMENTS
   ========================================================== */
.dashboard-announcements-section{
  margin-top:14px;
}
.dashboard-announcements-heading{
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:12px;
  margin-bottom:10px;
}
.dashboard-announcements-heading small{
  display:block;
  color:var(--accent);
  font-size:9px;
  font-weight:950;
  letter-spacing:.55px;
}
.dashboard-announcements-heading h3{
  margin:3px 0 0;
  font-size:18px;
}
.dashboard-announcements-heading>span{
  min-width:34px;
  height:28px;
  display:grid;
  place-items:center;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--panel2);
  color:var(--muted);
  font-size:10px;
  font-weight:900;
}
.dashboard-announcements-list{
  display:grid;
  gap:12px;
}
.dashboard-announcement-card{
  padding:18px 20px;
  border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));
  border-radius:16px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 4%,var(--panel2)),var(--panel2));
}
.dashboard-announcement-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:8px;
}
.dashboard-announcement-head span{
  color:var(--accent);
  font-size:9px;
  font-weight:950;
  letter-spacing:.55px;
}
.dashboard-announcement-head small{
  color:var(--muted);
  font-size:10px;
}
.dashboard-announcement-card h3{
  margin:0 0 7px;
  font-size:19px;
}
.dashboard-announcement-card p{
  margin:0;
  color:#cdd7e3;
  line-height:1.55;
  white-space:pre-wrap;
  font-size:12px;
}
.dashboard-announcement-action{
  margin-top:14px;
}
.dashboard-announcement-action .btn{
  display:inline-flex;
  width:auto;
  min-width:126px;
  text-decoration:none;
}
@media(max-width:620px){
  .dashboard-announcement-head{
    align-items:flex-start;
    flex-direction:column;
    gap:4px;
  }
}


/* v14.7 — announcement action aligned like Free TV */
.dashboard-announcement-card{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:
    "head head"
    "title action"
    "body action";
  column-gap:22px;
  align-items:center;
}
.dashboard-announcement-head{grid-area:head}
.dashboard-announcement-card h3{grid-area:title}
.dashboard-announcement-card p{grid-area:body}
.dashboard-announcement-action{
  grid-area:action;
  margin-top:0!important;
  align-self:center;
  justify-self:end;
}
.dashboard-announcement-action .btn{
  min-width:136px;
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  white-space:nowrap;
}
@media(max-width:620px){
  .dashboard-announcement-card{
    grid-template-columns:1fr;
    grid-template-areas:"head" "title" "body" "action";
  }
  .dashboard-announcement-action{
    justify-self:stretch;
    width:100%;
    margin-top:14px!important;
  }
  .dashboard-announcement-action .btn{width:100%}
}


/* ==========================================================
   v14.8 — OUTAGE / SERVER STATUS / DATABASE USAGE
   ========================================================== */
.outage-menu-btn{
  background:#d93645!important;
  border-color:#ef5b67!important;
  color:#fff!important;
  box-shadow:0 0 0 1px rgba(239,91,103,.08);
}
.outage-menu-btn:hover{
  background:#e84755!important;
  border-color:#ff7781!important;
}

.server-status-badge{
  --status-color:#31e981;
  display:inline-flex;
  align-items:center;
  gap:7px;
  min-height:42px;
  padding:0 12px;
  border:1px solid color-mix(in srgb,var(--status-color) 40%,var(--line));
  border-radius:11px;
  background:color-mix(in srgb,var(--status-color) 8%,var(--panel2));
  color:var(--text);
  font-size:11px;
  font-weight:850;
  white-space:nowrap;
}
.server-status-dot{
  width:9px;
  height:9px;
  flex:0 0 9px;
  border-radius:50%;
  background:var(--status-color);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--status-color) 14%,transparent),0 0 10px color-mix(in srgb,var(--status-color) 55%,transparent);
}
.status-operational{--status-color:#31e981}
.status-maintenance{--status-color:#f2c94c}
.status-degraded{--status-color:#ff9f43}
.status-partial{--status-color:#ff6b4a}
.status-offline{--status-color:#ef4655}
.status-unknown{--status-color:#7c8996}

.server-status-admin-preview{
  --status-color:#31e981;
  display:inline-flex;
  align-items:center;
  gap:9px;
  margin:10px 0 2px;
  padding:10px 12px;
  border:1px solid color-mix(in srgb,var(--status-color) 35%,var(--line));
  border-radius:11px;
  background:color-mix(in srgb,var(--status-color) 7%,var(--panel2));
}
.server-status-admin-preview strong{font-size:13px}


.admin-db-strip{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin:-6px 0 18px;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:13px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--blue) 5%,var(--panel2)),var(--panel2));
}
.admin-db-strip-main{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}
.admin-db-icon{
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  flex:0 0 34px;
  border:1px solid color-mix(in srgb,var(--blue) 34%,var(--line));
  border-radius:9px;
  background:color-mix(in srgb,var(--blue) 8%,var(--panel));
  color:var(--blue);
  font-size:9px;
  font-weight:950;
  letter-spacing:.3px;
}
.admin-db-strip-main small{
  display:block;
  color:var(--muted);
  font-size:8px;
  font-weight:900;
  letter-spacing:.5px;
}
.admin-db-strip-main strong{
  display:block;
  margin-top:2px;
  font-size:16px;
  line-height:1.1;
}
.admin-db-strip-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  flex-wrap:wrap;
}
.admin-db-strip-actions>span{
  color:var(--muted);
  font-size:9px;
  white-space:nowrap;
}
.admin-db-details{
  margin:-8px 0 18px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--panel2);
}
.database-usage-breakdown{
  display:grid;
  gap:6px;
}
.database-usage-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:7px 9px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  font-size:10px;
}
.database-usage-row span{color:var(--muted)}
.database-usage-row strong{font-size:10px}
.database-usage-note{
  display:block;
  margin-top:9px;
  color:var(--muted);
  line-height:1.4;
  font-size:9px;
}
@media(max-width:720px){
  .server-status-badge{
    min-height:38px;
    padding:0 9px;
  }
  #serverStatusText{display:none}
  .database-usage-head{align-items:stretch;flex-direction:column}
  .database-usage-head .btn{width:100%}
}


/* ==========================================================
   v14.9 — CLICKABLE SERVER STATUS DETAILS
   ========================================================== */
#serverStatusBadge{
  margin-left:18px;
  min-width:128px;
  min-height:46px;
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  gap:10px;
  padding:6px 13px 6px 12px;
  cursor:pointer;
  appearance:none;
  font-family:inherit;
  text-align:left;
  border:1px solid color-mix(in srgb,var(--status-color) 42%,var(--line));
  border-radius:12px;
  background:
    linear-gradient(180deg,
      color-mix(in srgb,var(--status-color) 9%,var(--panel2)),
      color-mix(in srgb,var(--status-color) 4%,var(--panel2)));
  color:var(--text);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
  transition:
    border-color .16s ease,
    background .16s ease,
    transform .16s ease,
    box-shadow .16s ease;
}
#serverStatusBadge .server-status-dot{
  width:10px;
  height:10px;
  flex:0 0 10px;
}
.server-status-copy{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:2px;
  min-width:0;
}
.server-status-copy small{
  display:block;
  color:var(--muted);
  font-size:7px;
  line-height:1;
  font-weight:950;
  letter-spacing:.55px;
  white-space:nowrap;
}
.server-status-copy strong{
  display:block;
  color:var(--text);
  font-size:10px;
  line-height:1.15;
  font-weight:900;
  white-space:nowrap;
}
#serverStatusBadge:hover{
  border-color:var(--status-color);
  background:
    linear-gradient(180deg,
      color-mix(in srgb,var(--status-color) 15%,var(--panel2)),
      color-mix(in srgb,var(--status-color) 7%,var(--panel2)));
  box-shadow:0 0 0 2px color-mix(in srgb,var(--status-color) 8%,transparent);
}
#serverStatusBadge:active{transform:translateY(1px)}
#serverStatusBadge:focus-visible{
  outline:2px solid var(--status-color);
  outline-offset:2px;
}

.server-status-overlay{
  position:fixed;
  inset:0;
  z-index:10080;
  display:none;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:rgba(1,4,8,.76);
  backdrop-filter:blur(7px);
}
.server-status-overlay.open{display:flex}
.server-status-modal{
  width:min(480px,100%);
  border:1px solid var(--line);
  border-radius:18px;
  background:var(--panel);
  box-shadow:0 24px 70px rgba(0,0,0,.5);
  padding:20px;
}
.server-status-modal-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:16px;
}
.server-status-modal-head small{
  display:block;
  color:var(--muted);
  font-size:9px;
  font-weight:900;
  letter-spacing:.55px;
}
.server-status-modal-head h3{
  margin:3px 0 0;
  font-size:22px;
}
.server-status-modal-state{
  --status-color:#31e981;
  display:flex;
  align-items:center;
  gap:14px;
  padding:16px;
  border:1px solid color-mix(in srgb,var(--status-color) 38%,var(--line));
  border-radius:14px;
  background:color-mix(in srgb,var(--status-color) 8%,var(--panel2));
}
.server-status-modal-state .server-status-dot{
  width:13px;
  height:13px;
  flex-basis:13px;
}
.server-status-modal-state strong{
  display:block;
  font-size:18px;
}
.server-status-modal-state span:not(.server-status-dot){
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:11px;
  line-height:1.45;
}
.server-status-modal-note{
  margin-top:12px;
  padding:14px 15px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--panel2);
}
.server-status-modal-note small{
  color:var(--blue);
  font-size:9px;
  font-weight:950;
  letter-spacing:.5px;
}
.server-status-modal-note p{
  margin:6px 0 0;
  color:var(--text);
  line-height:1.55;
  white-space:pre-wrap;
}
.server-status-modal-footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-top:14px;
  padding-top:12px;
  border-top:1px solid var(--line);
  color:var(--muted);
  font-size:10px;
}
.server-status-modal-footer strong{
  color:var(--text);
  font-size:10px;
}
@media(max-width:600px){
  #serverStatusBadge{
    margin-left:8px;
    min-width:auto;
    min-height:42px;
    padding:5px 9px;
    gap:7px;
  }
  .server-status-copy small{display:none}
  .server-status-copy strong{font-size:9px}
  #serverStatusBadge .server-status-dot{
    width:9px;
    height:9px;
    flex-basis:9px;
  }
  .server-status-modal{padding:16px}
}


/* ==========================================================
   v14.35 — GLOBAL THEME CONTRAST / READABILITY HARDENING
   Keeps text, controls, cards and the Setup Guide readable
   across Midnight, Light, Ocean, Emerald, Sunset and Nebula.
   ========================================================== */

html[data-cut-theme]{
  --theme-text:var(--text);
  --theme-muted:var(--muted);
  --theme-card:var(--theme-surface);
  --theme-card-alt:var(--theme-surface2);
  --theme-card-soft:var(--theme-surface3);
}

/* Main application surfaces */
html[data-cut-theme] .main-panel{
  color:var(--text)!important;
  background:
    radial-gradient(circle at 100% 0,color-mix(in srgb,var(--blue) 6%,transparent),transparent 28%),
    var(--bg)!important;
}
html[data-cut-theme] .sidebar{
  color:var(--text)!important;
  background:var(--theme-surface)!important;
  border-color:var(--line)!important;
}
html[data-cut-theme] .profile-card,
html[data-cut-theme] .stat,
html[data-cut-theme] .announcement,
html[data-cut-theme] .admin-item,
html[data-cut-theme] .public-message-admin-row,
html[data-cut-theme] .outage-card,
html[data-cut-theme] .support-thread,
html[data-cut-theme] .support-message,
html[data-cut-theme] .dashboard-announcement-card{
  color:var(--text)!important;
  border-color:var(--line)!important;
}
html[data-cut-theme] .profile-card,
html[data-cut-theme] .stat,
html[data-cut-theme] .announcement,
html[data-cut-theme] .admin-item,
html[data-cut-theme] .public-message-admin-row,
html[data-cut-theme] .outage-card,
html[data-cut-theme] .support-thread{
  background:var(--theme-surface)!important;
}
html[data-cut-theme] .support-message,
html[data-cut-theme] .dashboard-announcement-card{
  background:var(--theme-surface2)!important;
}

/* Primary text */
html[data-cut-theme] .main-panel h1,
html[data-cut-theme] .main-panel h2,
html[data-cut-theme] .main-panel h3,
html[data-cut-theme] .main-panel h4,
html[data-cut-theme] .main-panel b,
html[data-cut-theme] .main-panel strong,
html[data-cut-theme] .card h1,
html[data-cut-theme] .card h2,
html[data-cut-theme] .card h3,
html[data-cut-theme] .card h4,
html[data-cut-theme] .card b,
html[data-cut-theme] .card strong,
html[data-cut-theme] .support-message-body,
html[data-cut-theme] .outage-body{
  color:var(--text)!important;
}

/* Secondary/help text */
html[data-cut-theme] .card p,
html[data-cut-theme] .top-title p,
html[data-cut-theme] .section-head p,
html[data-cut-theme] .profile-card span:not(.status-pill),
html[data-cut-theme] .announcement .meta,
html[data-cut-theme] .announcement p,
html[data-cut-theme] .public-message-card p,
html[data-cut-theme] .public-message-admin-row small,
html[data-cut-theme] .dashboard-announcement-card p,
html[data-cut-theme] .dashboard-announcement-head small,
html[data-cut-theme] .customer-support-heading p,
html[data-cut-theme] .support-thread-title small,
html[data-cut-theme] .support-message-head small,
html[data-cut-theme] .outage-meta{
  color:var(--muted)!important;
}

/* Form controls and labels */
html[data-cut-theme] label{
  color:var(--text)!important;
}
html[data-cut-theme] input,
html[data-cut-theme] textarea,
html[data-cut-theme] select{
  background:var(--theme-input)!important;
  color:var(--text)!important;
  border-color:var(--line)!important;
  -webkit-text-fill-color:var(--text)!important;
  caret-color:var(--text);
}
html[data-cut-theme] input::placeholder,
html[data-cut-theme] textarea::placeholder{
  color:var(--muted)!important;
  -webkit-text-fill-color:var(--muted)!important;
  opacity:1!important;
}
html[data-cut-theme] select option{
  background:var(--theme-surface)!important;
  color:var(--text)!important;
}

/* Neutral buttons must remain readable in Light mode too. */
html[data-cut-theme] .btn.alt{
  background:var(--theme-surface2)!important;
  color:var(--text)!important;
  border-color:var(--line)!important;
}
html[data-cut-theme="light"] .btn.alt{
  color:var(--text)!important;
  background:var(--theme-surface3)!important;
}
html[data-cut-theme="light"] .btn:not(.alt){
  color:#fff!important;
}
html[data-cut-theme] .btn:disabled{
  opacity:.55;
}

/* Semantic messages/statuses */
html[data-cut-theme] .msg{color:var(--muted)!important}
html[data-cut-theme] .msg.good{color:var(--accent)!important}
html[data-cut-theme] .msg.error{color:var(--danger)!important}
html[data-cut-theme] .status-pill{
  color:var(--accent)!important;
  background:color-mix(in srgb,var(--accent) 9%,var(--theme-surface))!important;
  border-color:color-mix(in srgb,var(--accent) 30%,var(--line))!important;
}
html[data-cut-theme] .outage-badge.open{
  color:var(--warning)!important;
  background:color-mix(in srgb,var(--warning) 8%,var(--theme-surface))!important;
  border-color:color-mix(in srgb,var(--warning) 34%,var(--line))!important;
}
html[data-cut-theme] .outage-badge.resolved{
  color:var(--accent)!important;
  background:color-mix(in srgb,var(--accent) 8%,var(--theme-surface))!important;
  border-color:color-mix(in srgb,var(--accent) 30%,var(--line))!important;
}

/* Dashboard announcement + support cards */
html[data-cut-theme] .dashboard-announcement-card{
  border-color:color-mix(in srgb,var(--accent) 24%,var(--line))!important;
  background:linear-gradient(
    135deg,
    color-mix(in srgb,var(--accent) 5%,var(--theme-surface2)),
    var(--theme-surface2)
  )!important;
}
html[data-cut-theme] .customer-support-section{
  color:var(--text)!important;
  border-color:color-mix(in srgb,var(--blue) 24%,var(--line))!important;
  background:linear-gradient(
    135deg,
    color-mix(in srgb,var(--blue) 5%,var(--theme-surface2)),
    var(--theme-surface2)
  )!important;
}
html[data-cut-theme] .support-message.admin{
  background:color-mix(in srgb,var(--blue) 8%,var(--theme-surface2))!important;
  border-color:color-mix(in srgb,var(--blue) 28%,var(--line))!important;
}
html[data-cut-theme] .support-thread-head,
html[data-cut-theme] .support-reply-box{
  border-color:var(--line)!important;
}

/* Setup Guide — every visible piece follows the selected theme */
html[data-cut-theme] .setup-walkthrough-card,
html[data-cut-theme] .setup-code-side-card,
html[data-cut-theme] .setup-help-card{
  color:var(--text)!important;
  background:var(--theme-surface)!important;
  border-color:var(--line)!important;
}
html[data-cut-theme] .setup-guide-head h3,
html[data-cut-theme] .setup-detail-copy h4,
html[data-cut-theme] .setup-detail-copy b,
html[data-cut-theme] .setup-device-note b,
html[data-cut-theme] .setup-tip b,
html[data-cut-theme] .setup-help-items b,
html[data-cut-theme] .setup-safety-note b{
  color:var(--text)!important;
}
html[data-cut-theme] .setup-guide-head p,
html[data-cut-theme] .setup-detail-copy p,
html[data-cut-theme] .setup-device-note span,
html[data-cut-theme] .setup-tip,
html[data-cut-theme] .setup-code-box small,
html[data-cut-theme] .setup-code-box span,
html[data-cut-theme] .setup-code-side-card p,
html[data-cut-theme] .setup-help-items span,
html[data-cut-theme] .setup-safety-note,
html[data-cut-theme] .setup-time-pill{
  color:var(--muted)!important;
}
html[data-cut-theme] .setup-detail-step{
  color:var(--text)!important;
  background:var(--theme-surface2)!important;
  border-color:var(--line)!important;
}
html[data-cut-theme] .setup-detail-num{
  color:var(--accent)!important;
  background:color-mix(in srgb,var(--accent) 11%,var(--theme-surface3))!important;
  border:1px solid color-mix(in srgb,var(--accent) 20%,var(--line));
}
html[data-cut-theme] .setup-device-note{
  color:var(--text)!important;
  background:color-mix(in srgb,var(--blue) 6%,var(--theme-surface2))!important;
  border-color:color-mix(in srgb,var(--blue) 24%,var(--line))!important;
}
html[data-cut-theme] .setup-tip{
  background:color-mix(in srgb,var(--blue) 6%,var(--theme-surface))!important;
  border-left-color:var(--blue)!important;
}
html[data-cut-theme] .setup-code-box{
  background:color-mix(in srgb,var(--accent) 7%,var(--theme-surface))!important;
  border-color:color-mix(in srgb,var(--accent) 38%,var(--line))!important;
}
html[data-cut-theme] .setup-code-box strong,
html[data-cut-theme] .setup-code-side-card strong,
html[data-cut-theme] .setup-guide-head small,
html[data-cut-theme] .setup-code-side-card>small{
  color:var(--accent)!important;
}
html[data-cut-theme] .setup-help-items>div,
html[data-cut-theme] .setup-safety-note{
  border-color:var(--line)!important;
}

/* Free TV readability */
html[data-cut-theme] .iptv-shell,
html[data-cut-theme] .iptv-sidebar,
html[data-cut-theme] .iptv-main,
html[data-cut-theme] .iptv-now-card,
html[data-cut-theme] .iptv-guide-card,
html[data-cut-theme] .free-tv-summary{
  color:var(--text)!important;
}
html[data-cut-theme] .free-tv-summary>div,
html[data-cut-theme] .iptv-load-more,
html[data-cut-theme] .iptv-channel-meta span{
  background:var(--theme-surface)!important;
  color:var(--text)!important;
  border-color:var(--line)!important;
}
html[data-cut-theme] .free-tv-summary span,
html[data-cut-theme] .iptv-channel-meta span{
  color:var(--muted)!important;
}

/* Sports/admin table readability */
html[data-cut-theme] .user-table,
html[data-cut-theme] .user-table th,
html[data-cut-theme] .user-table td{
  color:var(--text)!important;
  border-color:var(--line)!important;
}
html[data-cut-theme] .user-table th,
html[data-cut-theme] .customer-date-cell,
html[data-cut-theme] .customer-activity-cell small{
  color:var(--muted)!important;
}
html[data-cut-theme] .customer-activity-cell strong{
  color:var(--text)!important;
}

/* Light-theme-specific cleanup for old dark-only surfaces */
html[data-cut-theme="light"] .main-panel{
  background:
    radial-gradient(circle at 100% 0,rgba(6,117,170,.055),transparent 28%),
    var(--bg)!important;
}
html[data-cut-theme="light"] .sidebar,
html[data-cut-theme="light"] .profile-card,
html[data-cut-theme="light"] .stat,
html[data-cut-theme="light"] .setup-detail-step,
html[data-cut-theme="light"] .support-thread,
html[data-cut-theme="light"] .support-message{
  box-shadow:none!important;
}
html[data-cut-theme="light"] .notice{
  color:#17445b!important;
  background:rgba(6,117,170,.07)!important;
  border-color:rgba(6,117,170,.22)!important;
}

/* Do not let Yola/browser forced colors override the selected palette. */
html[data-cut-theme] #setupPanel,
html[data-cut-theme] #dashboardPanel,
html[data-cut-theme] #outagePanel,
html[data-cut-theme] #adminPanel,
html[data-cut-theme] #freeTvPanel{
  color-scheme:inherit;
  forced-color-adjust:auto;
}


/* v14.36 — new-customer signup notices in Admin Support */
.signup-admin-section{
  display:grid;
  gap:9px;
  margin:12px 0 14px;
  padding:12px;
  border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));
  border-radius:13px;
  background:color-mix(in srgb,var(--accent) 5%,var(--theme-surface2,var(--panel2)));
}
.signup-admin-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.signup-admin-title>strong{
  font-size:12px;
  color:var(--text);
}
.signup-admin-title>span{
  min-width:27px;
  height:24px;
  display:grid;
  place-items:center;
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--muted);
  font-size:9px;
  font-weight:900;
}
.signup-admin-list{display:grid;gap:8px}
.signup-notice-card{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  grid-template-areas:
    "badge title action"
    "badge details action";
  gap:4px 10px;
  align-items:center;
  padding:11px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--theme-surface,var(--panel));
  color:var(--text);
}
.signup-notice-badge{
  grid-area:badge;
  align-self:start;
  display:inline-flex;
  padding:5px 7px;
  border-radius:999px;
  background:color-mix(in srgb,var(--accent) 9%,var(--theme-surface,var(--panel)));
  border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));
  color:var(--accent);
  font-size:8px;
  font-weight:950;
  white-space:nowrap;
}
.signup-notice-card>strong{grid-area:title;font-size:12px}
.signup-notice-details{
  grid-area:details;
  display:flex;
  flex-wrap:wrap;
  gap:4px 12px;
  min-width:0;
}
.signup-notice-details span{
  color:var(--muted);
  font-size:9px;
  overflow-wrap:anywhere;
}
.signup-notice-details b{color:var(--text)}
.signup-notice-card>.btn{grid-area:action}
html[data-cut-theme] .signup-admin-section{
  background:color-mix(in srgb,var(--accent) 5%,var(--theme-surface2))!important;
  border-color:color-mix(in srgb,var(--accent) 28%,var(--line))!important;
}
html[data-cut-theme] .signup-notice-card{
  background:var(--theme-surface)!important;
  color:var(--text)!important;
  border-color:var(--line)!important;
}
html[data-cut-theme] .signup-notice-details span{color:var(--muted)!important}
html[data-cut-theme] .signup-notice-details b,
html[data-cut-theme] .signup-notice-card>strong{color:var(--text)!important}
@media(max-width:720px){
  .signup-notice-card{
    grid-template-columns:1fr auto;
    grid-template-areas:
      "badge action"
      "title title"
      "details details";
  }
}


/* v14.37 — clear Dashboard vs Service App password guidance */
.credential-help-notice{
  margin:0 0 15px;
  padding:13px 14px;
  border:1px solid color-mix(in srgb,var(--blue) 28%,var(--line));
  border-radius:12px;
  background:color-mix(in srgb,var(--blue) 6%,var(--theme-surface2,var(--panel2)));
}
.credential-help-notice>strong{
  display:block;
  margin-bottom:7px;
  color:var(--text);
  font-size:12px;
}
.credential-help-notice p{
  margin:4px 0!important;
  color:var(--muted)!important;
  font-size:10px!important;
  line-height:1.55;
}
.credential-help-notice p b{color:var(--text)!important}
.service-password-help{
  padding:10px!important;
  border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line))!important;
  border-radius:9px;
  background:color-mix(in srgb,var(--accent) 5%,var(--theme-surface2,var(--panel2)));
}
.support-password-safety{
  margin-top:7px;
  color:var(--muted);
  font-size:9px;
  line-height:1.5;
}
html[data-cut-theme] .credential-help-notice{
  background:color-mix(in srgb,var(--blue) 6%,var(--theme-surface2))!important;
  border-color:color-mix(in srgb,var(--blue) 28%,var(--line))!important;
}
html[data-cut-theme] .credential-help-notice>strong,
html[data-cut-theme] .credential-help-notice p b,
html[data-cut-theme] .service-password-help b{
  color:var(--text)!important;
}
html[data-cut-theme] .credential-help-notice p,
html[data-cut-theme] .service-password-help span,
html[data-cut-theme] .support-password-safety{
  color:var(--muted)!important;
}


/* v14.39 — password reveal control */
.auth-password-wrap{
  position:relative;
}
.auth-password-wrap>input{
  width:100%;
  padding-right:52px!important;
}
.password-reveal-btn{
  position:absolute;
  top:50%;
  right:7px;
  transform:translateY(-50%);
  width:40px;
  height:40px;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  border-radius:9px;
  background:transparent;
  color:var(--muted);
  cursor:pointer;
  touch-action:manipulation;
}
.password-reveal-btn:hover,
.password-reveal-btn:focus-visible{
  background:color-mix(in srgb,var(--blue) 9%,transparent);
  color:var(--text);
  outline:none;
}
.password-reveal-btn:focus-visible{
  box-shadow:0 0 0 2px var(--blue);
}
.password-eye{
  position:relative;
  width:21px;
  height:14px;
  display:block;
  border:2px solid currentColor;
  border-radius:50% / 60%;
  font-size:0;
}
.password-eye::after{
  content:"";
  position:absolute;
  width:5px;
  height:5px;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:currentColor;
}
.password-reveal-btn[aria-pressed="true"] .password-eye::before{
  content:"";
  position:absolute;
  z-index:2;
  width:25px;
  height:2px;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%) rotate(-42deg);
  border-radius:2px;
  background:currentColor;
  box-shadow:0 0 0 2px var(--theme-input,var(--panel));
}
html[data-cut-theme] .password-reveal-btn{
  color:var(--muted)!important;
}
html[data-cut-theme] .password-reveal-btn:hover,
html[data-cut-theme] .password-reveal-btn:focus-visible{
  color:var(--text)!important;
}


/* ==========================================================
   v14.40 — FREE TV SCREEN-FIT WORKSPACE
   Desktop / iPad-landscape uses the available app viewport.
   The page itself does not need to scroll just to reach the
   player controls; channel and guide lists scroll internally.
   ========================================================== */

@media(min-width:821px){
  #portalView.free-tv-mode{
    height:100dvh!important;
    min-height:100dvh!important;
    overflow:hidden!important;
  }

  #portalView.free-tv-mode .app-layout{
    height:calc(100dvh - var(--header))!important;
    min-height:0!important;
    overflow:hidden!important;
  }

  #portalView.free-tv-mode .main-panel{
    height:100%!important;
    min-height:0!important;
    overflow:hidden!important;
    padding:8px 12px 10px!important;
  }

  #portalView.free-tv-mode .free-tv-portal-panel{
    height:100%!important;
    min-height:0!important;
    display:grid!important;
    grid-template-rows:auto minmax(0,1fr)!important;
    gap:7px!important;
    overflow:hidden!important;
  }

  #portalView.free-tv-mode .free-tv-panel-bar{
    min-height:46px!important;
    margin:0!important;
    padding:6px 10px!important;
    border-radius:11px!important;
  }

  #portalView.free-tv-mode .free-tv-panel-bar .btn{
    min-height:36px!important;
    padding:0 12px!important;
    font-size:11px!important;
  }

  #portalView.free-tv-mode .free-tv-panel-bar strong{
    font-size:13px!important;
  }

  #portalView.free-tv-mode .free-tv-panel-bar small{
    font-size:8px!important;
  }

  #portalView.free-tv-mode #iptvHub{
    height:100%!important;
    min-height:0!important;
    overflow:hidden!important;
    display:grid!important;
    grid-template-rows:auto auto auto minmax(0,1fr)!important;
    border-radius:14px!important;
  }

  #portalView.free-tv-mode .iptv-head{
    min-height:52px!important;
    padding:7px 12px!important;
    gap:10px!important;
    flex-wrap:nowrap!important;
  }

  #portalView.free-tv-mode .iptv-head .iptv-kicker{
    font-size:8px!important;
  }

  #portalView.free-tv-mode .iptv-head h2{
    margin:1px 0 0!important;
    font-size:18px!important;
    line-height:1.05!important;
  }

  #portalView.free-tv-mode .iptv-head p{
    margin:2px 0 0!important;
    font-size:8px!important;
    line-height:1.25!important;
  }

  #portalView.free-tv-mode .iptv-head-actions{
    display:flex!important;
    flex-wrap:nowrap!important;
    gap:6px!important;
    margin:0!important;
  }

  #portalView.free-tv-mode .iptv-head-actions .btn{
    min-height:32px!important;
    padding:0 9px!important;
    font-size:9px!important;
    border-radius:8px!important;
  }

  #portalView.free-tv-mode .free-tv-summary{
    min-height:46px!important;
    padding:5px 8px!important;
    gap:7px!important;
  }

  #portalView.free-tv-mode .free-tv-summary>div{
    padding:6px 9px!important;
    border-radius:9px!important;
  }

  #portalView.free-tv-mode .free-tv-summary strong{
    font-size:14px!important;
  }

  #portalView.free-tv-mode .free-tv-summary span{
    margin-top:2px!important;
    font-size:7px!important;
  }

  #portalView.free-tv-mode .iptv-player-view{
    height:100%!important;
    min-height:0!important;
    overflow:hidden!important;
    grid-template-columns:minmax(310px,360px) minmax(0,1fr)!important;
    align-items:stretch!important;
  }

  #portalView.free-tv-mode .iptv-sidebar{
    position:static!important;
    top:auto!important;
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    overflow:hidden!important;
    border-radius:0!important;
    border-top:0!important;
    border-bottom:0!important;
  }

  #portalView.free-tv-mode .iptv-sidebar-top{
    padding:8px 10px!important;
  }

  #portalView.free-tv-mode .iptv-provider-line{
    margin-bottom:6px!important;
    font-size:10px!important;
  }

  #portalView.free-tv-mode .iptv-search-wrap input{
    min-height:36px!important;
    height:36px!important;
    padding-top:6px!important;
    padding-bottom:6px!important;
    font-size:12px!important;
  }

  #portalView.free-tv-mode .iptv-filter-tabs{
    margin-top:6px!important;
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    gap:4px!important;
  }

  #portalView.free-tv-mode .iptv-filter{
    min-height:32px!important;
    padding:0 4px!important;
    font-size:7px!important;
    border-radius:8px!important;
  }

  #portalView.free-tv-mode .iptv-local-news-panel{
    margin-top:6px!important;
    padding:7px!important;
  }

  #portalView.free-tv-mode .iptv-browser-controls{
    grid-template-columns:1fr 1fr 1fr!important;
    gap:5px!important;
    padding:6px 8px!important;
  }

  #portalView.free-tv-mode .iptv-browser-controls label{
    margin:0!important;
    gap:2px!important;
  }

  #portalView.free-tv-mode .iptv-browser-controls label>span{
    font-size:7px!important;
  }

  #portalView.free-tv-mode .iptv-browser-controls select{
    height:32px!important;
    min-height:32px!important;
    padding:0 6px!important;
    font-size:9px!important;
  }

  #portalView.free-tv-mode .iptv-sort-control{
    grid-column:auto!important;
  }

  #portalView.free-tv-mode .iptv-reset-filters{
    grid-column:1/-1!important;
    min-height:28px!important;
    padding:0 8px!important;
    font-size:8px!important;
  }

  #portalView.free-tv-mode .iptv-list-tools{
    min-height:31px!important;
    padding:4px 7px!important;
  }

  #portalView.free-tv-mode .iptv-list-tools button{
    min-height:25px!important;
    padding:0 6px!important;
    font-size:8px!important;
  }

  #portalView.free-tv-mode .iptv-channel-list{
    min-height:0!important;
    max-height:none!important;
    height:auto!important;
    overflow-y:auto!important;
  }

  #portalView.free-tv-mode .iptv-channel{
    min-height:46px!important;
    grid-template-columns:32px minmax(0,1fr) 30px!important;
    gap:7px!important;
    padding:6px!important;
  }

  #portalView.free-tv-mode .iptv-channel-logo{
    width:30px!important;
    height:30px!important;
  }

  #portalView.free-tv-mode .iptv-channel-name{
    font-size:10px!important;
  }

  #portalView.free-tv-mode .iptv-channel-program{
    font-size:8px!important;
  }

  #portalView.free-tv-mode .iptv-load-more{
    min-height:32px!important;
    margin:5px!important;
    font-size:9px!important;
  }

  #portalView.free-tv-mode .iptv-main{
    height:100%!important;
    min-height:0!important;
    overflow:hidden!important;
    padding:8px 10px!important;
    gap:7px!important;
    display:grid!important;
    grid-template-rows:minmax(220px,1fr) auto auto minmax(82px,118px) auto!important;
  }

  #portalView.free-tv-mode .iptv-video-wrap{
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    aspect-ratio:auto!important;
    border-radius:11px!important;
  }

  #portalView.free-tv-mode .iptv-player-actions{
    grid-template-columns:1fr 1.15fr 1fr!important;
    gap:6px!important;
  }

  #portalView.free-tv-mode .iptv-player-actions .btn{
    min-height:34px!important;
    padding:0 9px!important;
    font-size:9px!important;
    border-radius:8px!important;
  }

  #portalView.free-tv-mode .iptv-now-card{
    padding:7px 9px!important;
    border-radius:10px!important;
  }

  #portalView.free-tv-mode .iptv-now-main{
    grid-template-columns:auto minmax(0,1fr) auto!important;
    gap:8px!important;
  }

  #portalView.free-tv-mode .iptv-now-logo{
    width:38px!important;
    height:38px!important;
  }

  #portalView.free-tv-mode .iptv-now-copy .iptv-kicker{
    font-size:7px!important;
  }

  #portalView.free-tv-mode .iptv-now-copy h3{
    margin:1px 0!important;
    font-size:12px!important;
  }

  #portalView.free-tv-mode .iptv-now-program{
    font-size:8px!important;
  }

  #portalView.free-tv-mode .iptv-favorite-current{
    min-width:34px!important;
    min-height:34px!important;
    font-size:18px!important;
  }

  #portalView.free-tv-mode .iptv-channel-meta{
    margin-top:5px!important;
    gap:4px!important;
  }

  #portalView.free-tv-mode .iptv-channel-meta span{
    padding:3px 6px!important;
    font-size:7px!important;
  }

  #portalView.free-tv-mode .iptv-epg-row{
    margin-top:5px!important;
    gap:5px!important;
  }

  #portalView.free-tv-mode .iptv-epg-row>div{
    padding:5px 7px!important;
  }

  #portalView.free-tv-mode .iptv-epg-label{
    font-size:7px!important;
  }

  #portalView.free-tv-mode .iptv-epg-row strong{
    margin-top:1px!important;
    font-size:9px!important;
  }

  #portalView.free-tv-mode .iptv-epg-row small{
    font-size:7px!important;
  }

  #portalView.free-tv-mode .iptv-guide-card{
    min-height:0!important;
    height:100%!important;
    overflow:hidden!important;
    padding:7px 9px!important;
    border-radius:10px!important;
    display:grid!important;
    grid-template-rows:auto minmax(0,1fr)!important;
  }

  #portalView.free-tv-mode .iptv-guide-card .iptv-section-head h3{
    margin:1px 0!important;
    font-size:11px!important;
  }

  #portalView.free-tv-mode .iptv-guide-card .iptv-kicker{
    font-size:7px!important;
  }

  #portalView.free-tv-mode #iptvRefreshEpgBtn{
    min-height:28px!important;
    padding:0 7px!important;
    font-size:8px!important;
  }

  #portalView.free-tv-mode .iptv-epg-list{
    min-height:0!important;
    overflow-y:auto!important;
    margin-top:5px!important;
    gap:4px!important;
  }

  #portalView.free-tv-mode .iptv-epg-item{
    grid-template-columns:76px minmax(0,1fr)!important;
    gap:6px!important;
    padding:5px 7px!important;
  }

  #portalView.free-tv-mode .iptv-epg-time,
  #portalView.free-tv-mode .iptv-epg-title,
  #portalView.free-tv-mode .iptv-epg-desc{
    font-size:7px!important;
  }

  #portalView.free-tv-mode .free-tv-note{
    padding:5px 8px!important;
    border-radius:8px!important;
    font-size:7px!important;
    line-height:1.25!important;
  }
}

/* Shorter laptop/iPad-landscape screens get an even tighter chrome,
   preserving the actual video area and all primary controls. */
@media(min-width:821px) and (max-height:760px){
  #portalView.free-tv-mode .free-tv-panel-bar{
    min-height:40px!important;
    padding:4px 8px!important;
  }

  #portalView.free-tv-mode .iptv-head{
    min-height:44px!important;
    padding:5px 10px!important;
  }

  #portalView.free-tv-mode .iptv-head p{
    display:none!important;
  }

  #portalView.free-tv-mode .free-tv-summary{
    min-height:40px!important;
    padding:4px 7px!important;
  }

  #portalView.free-tv-mode .iptv-main{
    grid-template-rows:minmax(190px,1fr) auto auto minmax(68px,92px) auto!important;
  }

  #portalView.free-tv-mode .iptv-now-card{
    padding:5px 7px!important;
  }

  #portalView.free-tv-mode .iptv-channel-meta{
    display:none!important;
  }

  #portalView.free-tv-mode .iptv-epg-row>div{
    padding:4px 6px!important;
  }

  #portalView.free-tv-mode .free-tv-note{
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
}

/* Phones / portrait tablets keep normal document flow so controls remain
   large enough to tap and nothing becomes cramped. */
@media(max-width:820px){
  #portalView.free-tv-mode{
    height:auto!important;
    min-height:100vh!important;
    overflow:visible!important;
  }

  #portalView.free-tv-mode .app-layout,
  #portalView.free-tv-mode .main-panel,
  #portalView.free-tv-mode .free-tv-portal-panel,
  #portalView.free-tv-mode #iptvHub,
  #portalView.free-tv-mode .iptv-player-view,
  #portalView.free-tv-mode .iptv-main{
    height:auto!important;
    overflow:visible!important;
  }
}


/* ==========================================================
   v14.43 — FREE STREAMING HUB / OFFICIAL FAST PROVIDERS
   ========================================================== */
.fast-provider-strip{
  padding:8px 10px 10px;
  border-bottom:1px solid var(--line);
  background:color-mix(in srgb,var(--panel2) 78%,var(--panel));
}
.fast-provider-intro{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  margin-bottom:7px;
}
.fast-provider-intro>div{min-width:0}
.fast-provider-intro span{
  display:block;
  color:var(--blue);
  font-size:7px;
  font-weight:950;
  letter-spacing:.55px;
}
.fast-provider-intro strong{
  display:block;
  margin-top:1px;
  color:var(--text);
  font-size:11px;
}
.fast-provider-intro small{
  max-width:520px;
  color:var(--muted);
  font-size:7px;
  line-height:1.35;
  text-align:right;
}
.fast-provider-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:6px;
}
.fast-provider-card{
  min-width:0;
  min-height:66px;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:
    "badge action"
    "title action"
    "desc action";
  align-items:center;
  gap:1px 7px;
  padding:7px 8px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel);
  color:var(--text);
  text-decoration:none;
  touch-action:manipulation;
}
.fast-provider-card:hover,
.fast-provider-card:focus-visible{
  border-color:color-mix(in srgb,var(--blue) 50%,var(--line));
  background:color-mix(in srgb,var(--blue) 6%,var(--panel));
  outline:none;
}
.fast-provider-badge{
  grid-area:badge;
  width:max-content;
  max-width:100%;
  color:var(--accent);
  font-size:7px;
  font-weight:950;
  letter-spacing:.45px;
}
.fast-provider-card strong{
  grid-area:title;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:9px;
}
.fast-provider-card small{
  grid-area:desc;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:var(--muted);
  font-size:7px;
}
.fast-provider-card b{
  grid-area:action;
  color:var(--blue);
  font-size:7px;
  white-space:nowrap;
}
.iptv-channel-source{
  display:inline-block;
  margin-left:5px;
  padding:1px 4px;
  border:1px solid color-mix(in srgb,var(--blue) 30%,var(--line));
  border-radius:999px;
  color:var(--blue);
  font-size:6px;
  font-weight:950;
  vertical-align:1px;
}
#portalView.free-tv-mode .iptv-filter-tabs{
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
}
@media(max-width:1180px) and (min-width:821px){
  .fast-provider-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:820px){
  .fast-provider-strip{padding:10px}
  .fast-provider-intro{align-items:flex-start;flex-direction:column}
  .fast-provider-intro small{text-align:left}
  .fast-provider-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .fast-provider-card{
    min-height:78px;
    padding:9px;
  }
  #portalView.free-tv-mode .iptv-filter-tabs{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
}
@media(max-width:430px){
  .fast-provider-grid{grid-template-columns:1fr}
  #portalView.free-tv-mode .iptv-filter-tabs{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
html[data-cut-theme] .fast-provider-strip,
html[data-cut-theme] .fast-provider-card{
  color:var(--text)!important;
  border-color:var(--line)!important;
}
html[data-cut-theme] .fast-provider-intro strong,
html[data-cut-theme] .fast-provider-card strong{
  color:var(--text)!important;
}
html[data-cut-theme] .fast-provider-intro small,
html[data-cut-theme] .fast-provider-card small{
  color:var(--muted)!important;
}


@media(min-width:821px) and (max-height:760px){
  #portalView.free-tv-mode .fast-provider-strip{
    padding:5px 7px!important;
  }
  #portalView.free-tv-mode .fast-provider-intro{
    display:none!important;
  }
  #portalView.free-tv-mode .fast-provider-grid{
    display:flex!important;
    overflow-x:auto!important;
    gap:5px!important;
    scrollbar-width:none;
  }
  #portalView.free-tv-mode .fast-provider-grid::-webkit-scrollbar{display:none}
  #portalView.free-tv-mode .fast-provider-card{
    flex:0 0 150px;
    min-height:38px!important;
    grid-template-areas:"badge action" "title action"!important;
    padding:5px 7px!important;
  }
  #portalView.free-tv-mode .fast-provider-card small{display:none!important}
}


/* ==========================================================
   v14.44 — COMPACT FREE TV HEADER + TALLER CHANNEL DIRECTORY
   ========================================================== */

/* The old large provider launcher strip is intentionally removed in markup. */
.fast-provider-strip{display:none!important}

/* No separate page bar above the player. */
.free-tv-panel-bar{display:none!important}

/* Compact single-row player header. */
.iptv-head-compact{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
}
.iptv-head-left{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}
.iptv-head-title{
  min-width:0;
}
.iptv-head-title h2{
  margin:1px 0 0!important;
}
.iptv-back-btn{
  flex:0 0 auto;
  white-space:nowrap;
}

/* Clear third-party notice without stealing much player height. */
.iptv-third-party-notice{
  display:flex;
  align-items:flex-start;
  gap:7px;
  padding:6px 10px;
  border-bottom:1px solid var(--line);
  background:color-mix(in srgb,var(--warning,#f2c94c) 5%,var(--panel));
  color:var(--muted);
  font-size:7px;
  line-height:1.35;
}
.iptv-third-party-notice strong{
  flex:0 0 auto;
  color:var(--text);
  font-size:7px;
  font-weight:950;
  white-space:nowrap;
}
.iptv-third-party-notice span{
  min-width:0;
}

/* Reclaim vertical space for the actual player and channel directory. */
@media(min-width:821px){
  #portalView.free-tv-mode .free-tv-portal-panel{
    grid-template-rows:minmax(0,1fr)!important;
    gap:0!important;
  }

  #portalView.free-tv-mode #iptvHub{
    grid-template-rows:auto auto auto minmax(0,1fr)!important;
    height:100%!important;
  }

  #portalView.free-tv-mode .iptv-head{
    min-height:42px!important;
    padding:5px 8px!important;
  }

  #portalView.free-tv-mode .iptv-head-left{
    gap:8px!important;
  }

  #portalView.free-tv-mode .iptv-back-btn{
    min-height:30px!important;
    padding:0 9px!important;
    font-size:8px!important;
  }

  #portalView.free-tv-mode .iptv-head h2{
    font-size:15px!important;
  }

  #portalView.free-tv-mode .iptv-head .iptv-kicker{
    font-size:7px!important;
  }

  #portalView.free-tv-mode .iptv-head-actions .btn{
    min-height:30px!important;
  }

  #portalView.free-tv-mode .free-tv-summary{
    min-height:40px!important;
    padding:4px 7px!important;
  }

  #portalView.free-tv-mode .free-tv-summary>div{
    padding:5px 8px!important;
  }

  #portalView.free-tv-mode .iptv-third-party-notice{
    min-height:30px!important;
    padding:5px 8px!important;
  }

  #portalView.free-tv-mode .iptv-player-view{
    height:100%!important;
    min-height:0!important;
  }

  #portalView.free-tv-mode .iptv-sidebar{
    height:100%!important;
    min-height:0!important;
  }

  #portalView.free-tv-mode .iptv-channel-list{
    flex:1 1 auto!important;
    min-height:150px!important;
    max-height:none!important;
  }
}

/* On shorter displays the disclaimer becomes a compact two-line strip. */
@media(min-width:821px) and (max-height:760px){
  #portalView.free-tv-mode .iptv-third-party-notice{
    max-height:34px!important;
    overflow:hidden!important;
    line-height:1.2!important;
  }
}

/* Portrait tablets and phones keep comfortable touch sizes. */
@media(max-width:820px){
  .iptv-head-compact{
    align-items:flex-start!important;
    flex-wrap:wrap!important;
  }
  .iptv-head-left{
    width:100%;
  }
  .iptv-head-actions{
    width:100%;
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .iptv-head-actions .btn{
    width:100%;
  }
  .iptv-back-btn{
    min-height:44px!important;
  }
  .iptv-third-party-notice{
    display:block;
    padding:9px 10px;
    font-size:9px;
    line-height:1.45;
  }
  .iptv-third-party-notice strong{
    display:block;
    margin-bottom:3px;
    font-size:9px;
    white-space:normal;
  }
}


/* ==========================================================
   v14.45 — AUTO TUNE + PROMINENT THIRD-PARTY NOTICE
   ========================================================== */
.iptv-third-party-notice{
  min-height:54px!important;
  padding:9px 12px!important;
  display:grid!important;
  grid-template-columns:26px minmax(0,1fr)!important;
  gap:9px!important;
  align-items:start!important;
  border-top:1px solid color-mix(in srgb,var(--warning,#f2c94c) 25%,var(--line))!important;
  border-bottom:1px solid color-mix(in srgb,var(--warning,#f2c94c) 25%,var(--line))!important;
  background:color-mix(in srgb,var(--warning,#f2c94c) 8%,var(--panel))!important;
}
.iptv-notice-icon{
  width:24px;height:24px;display:grid;place-items:center;
  border:1px solid color-mix(in srgb,var(--warning,#f2c94c) 48%,var(--line));
  border-radius:50%;color:var(--warning,#f2c94c);font-size:12px;font-weight:950;
}
.iptv-notice-copy{min-width:0}
.iptv-notice-copy>strong{
  display:block!important;margin:0 0 3px!important;color:var(--text)!important;
  font-size:10px!important;line-height:1.15!important;white-space:normal!important;
}
.iptv-notice-copy>span{
  display:block;color:var(--muted)!important;font-size:9px!important;line-height:1.35!important;
}
.iptv-notice-copy>small{
  display:block;margin-top:4px;color:var(--text)!important;font-size:8px!important;line-height:1.3!important;
}
.iptv-notice-copy>small b{color:var(--accent)!important}

.iptv-list-tool-buttons{display:flex!important;align-items:center;gap:5px}
.iptv-auto-tune-btn{
  color:var(--accent)!important;
  border-color:color-mix(in srgb,var(--accent) 38%,var(--line))!important;
}
.iptv-auto-tune-btn.active{
  color:var(--warning,#f2c94c)!important;
  border-color:color-mix(in srgb,var(--warning,#f2c94c) 48%,var(--line))!important;
}
.iptv-auto-tune-panel{
  flex:0 0 auto;padding:8px 9px;border-bottom:1px solid var(--line);
  background:color-mix(in srgb,var(--accent) 6%,var(--panel2));
}
.iptv-auto-tune-panel[hidden]{display:none!important}
.iptv-auto-tune-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.iptv-auto-tune-top>div{min-width:0}
.iptv-auto-tune-top strong{display:block;color:var(--text);font-size:9px}
.iptv-auto-tune-top span{
  display:block;margin-top:1px;max-width:240px;color:var(--muted);font-size:8px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.iptv-auto-tune-top button{
  flex:0 0 auto;min-height:30px;padding:0 8px;border:1px solid color-mix(in srgb,#ff7272 40%,var(--line));
  border-radius:8px;background:var(--panel);color:#ff8a8a;font-size:8px;font-weight:900;cursor:pointer;
}
.iptv-auto-tune-progress{
  height:5px;margin-top:6px;overflow:hidden;border-radius:999px;background:var(--panel);
}
.iptv-auto-tune-progress>span{
  display:block;width:0%;height:100%;border-radius:inherit;background:var(--accent);transition:width .2s linear;
}
.iptv-auto-tune-stats{
  display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:5px;
  color:var(--muted);font-size:7px;font-weight:850;
}
#iptvAutoTuneWorking{color:var(--accent)}
#iptvAutoTuneFailed{color:#ff8a8a}

@media(min-width:821px){
  #portalView.free-tv-mode #iptvHub{
    grid-template-rows:auto auto auto minmax(0,1fr)!important;
  }
  #portalView.free-tv-mode .iptv-third-party-notice{
    min-height:54px!important;max-height:none!important;
  }
  #portalView.free-tv-mode .iptv-channel-list{min-height:180px!important}
}
@media(min-width:821px) and (max-height:760px){
  #portalView.free-tv-mode .iptv-third-party-notice{
    min-height:48px!important;max-height:48px!important;overflow:hidden!important;padding:7px 9px!important;
  }
  #portalView.free-tv-mode .iptv-notice-copy>span{
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
}
@media(max-width:820px){
  .iptv-third-party-notice{
    grid-template-columns:24px minmax(0,1fr)!important;padding:10px!important;
  }
  .iptv-notice-copy>strong{font-size:11px!important}
  .iptv-notice-copy>span{font-size:10px!important;line-height:1.45!important}
  .iptv-notice-copy>small{font-size:9px!important;line-height:1.4!important}
  .iptv-list-tool-buttons{width:100%}
  .iptv-list-tool-buttons button{flex:1;min-height:38px!important}
}


/* ==========================================================
   v14.46 — WORKING LIST MAINTENANCE + EXPANDED AUTO TUNE
   ========================================================== */
.iptv-auto-tune-scope{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  align-items:center;
  gap:7px;
  margin-top:7px!important;
}
.iptv-auto-tune-scope>span{
  color:var(--muted);
  font-size:7px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.4px;
}
.iptv-auto-tune-scope select{
  width:100%;
  min-width:0;
  height:30px;
  padding:0 7px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  color:var(--text);
  font-size:8px;
  font-weight:850;
}
@media(min-width:821px){
  #portalView.free-tv-mode .iptv-head-actions{
    gap:5px!important;
  }
  #portalView.free-tv-mode .iptv-head-actions .btn{
    padding:0 7px!important;
    font-size:8px!important;
  }
}
@media(max-width:820px){
  .iptv-head-actions{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .iptv-auto-tune-scope{
    grid-template-columns:1fr;
  }
  .iptv-auto-tune-scope select{
    height:44px;
    font-size:16px!important;
  }
}


/* ==========================================================
   v14.47 — CLEAR WORKING CONTROL INSIDE WORKING TAB
   ========================================================== */
.iptv-working-tools{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:8px;
  margin-top:7px;
  padding:8px 9px;
  border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));
  border-radius:10px;
  background:color-mix(in srgb,var(--accent) 6%,var(--panel));
}
.iptv-working-tools[hidden]{display:none!important}
.iptv-working-tools-copy{min-width:0}
.iptv-working-tools-copy strong{
  display:block;
  color:var(--accent);
  font-size:9px;
  font-weight:950;
}
.iptv-working-tools-copy span{
  display:block;
  margin-top:2px;
  color:var(--muted);
  font-size:7px;
  line-height:1.35;
}
.iptv-clear-working-tab-btn{
  min-height:34px;
  padding:0 9px;
  border:1px solid color-mix(in srgb,#ff7272 45%,var(--line));
  border-radius:8px;
  background:var(--panel2);
  color:#ff8a8a;
  font-size:8px;
  font-weight:950;
  white-space:nowrap;
  cursor:pointer;
}
.iptv-clear-working-tab-btn:hover,
.iptv-clear-working-tab-btn:focus-visible{
  border-color:#ff7272;
  outline:none;
}
@media(max-width:820px){
  .iptv-working-tools{
    grid-template-columns:1fr;
    padding:10px;
  }
  .iptv-working-tools-copy strong{font-size:11px}
  .iptv-working-tools-copy span{font-size:9px}
  .iptv-clear-working-tab-btn{
    width:100%;
    min-height:44px;
    font-size:10px;
  }
}


/* ==========================================================
   v14.48 — FILTER-AWARE PREVIOUS / NEXT NAVIGATION
   ========================================================== */
.iptv-player-actions-wrap{
  min-width:0;
  display:grid;
  gap:4px;
}
.iptv-nav-context{
  color:var(--muted);
  font-size:7px;
  font-weight:850;
  text-align:center;
  line-height:1.2;
}
#portalView.free-tv-mode .iptv-player-actions-wrap{
  min-height:0;
}
@media(max-width:820px){
  .iptv-nav-context{
    font-size:9px;
    padding:0 3px;
  }
}


/* ==========================================================
   v14.49 — STABLE WORKING CHANNEL NAVIGATION
   ========================================================== */
.iptv-nav-context{
  white-space:normal;
  overflow-wrap:anywhere;
}


/* ==========================================================
   v14.50 — SCAN MANAGER + CHANNEL HEALTH + LAST CHANNEL
   ========================================================== */
.iptv-scan-manager-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:7px;
  margin-top:7px;
}
.iptv-scan-manager-grid .iptv-auto-tune-scope{
  margin-top:0!important;
  grid-template-columns:1fr;
  gap:4px;
}
.iptv-scan-manager-actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px;
  margin-top:7px;
}
.iptv-scan-manager-actions button{
  min-height:34px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel2);
  color:var(--text);
  font-size:8px;
  font-weight:950;
  cursor:pointer;
}
#iptvStartScanBtn{
  border-color:color-mix(in srgb,var(--accent) 45%,var(--line));
  color:var(--accent);
}
#iptvResumeScanBtn{
  border-color:color-mix(in srgb,var(--blue) 45%,var(--line));
  color:var(--blue);
}
.iptv-nav-status-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:8px;
}
.iptv-channel-position{
  color:var(--text);
  font-size:8px;
  font-weight:950;
  white-space:nowrap;
}
.iptv-player-actions-four{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
}
.iptv-channel-health{
  margin-top:5px;
  color:var(--muted);
  font-size:8px;
  font-weight:800;
  line-height:1.35;
}
@media(max-width:820px){
  .iptv-scan-manager-grid{
    grid-template-columns:1fr;
  }
  .iptv-scan-manager-actions{
    grid-template-columns:1fr;
  }
  .iptv-scan-manager-actions button{
    min-height:44px;
    font-size:10px;
  }
  .iptv-nav-status-row{
    grid-template-columns:1fr;
    gap:2px;
  }
  .iptv-channel-position{
    text-align:center;
    font-size:10px;
  }
  .iptv-player-actions-four{
    grid-template-columns:1fr 1fr!important;
  }
  .iptv-channel-health{
    font-size:9px;
  }
}


/* ==========================================================
   v14.51 — WORLD COUNTRY POWERHOUSE
   ========================================================== */
.iptv-world-coverage{
  display:flex;
  align-items:center;
  gap:7px;
  margin-top:6px;
  padding:6px 8px;
  border:1px solid color-mix(in srgb,var(--blue) 26%,var(--line));
  border-radius:9px;
  background:color-mix(in srgb,var(--blue) 5%,var(--panel));
  min-width:0;
}
.iptv-world-coverage strong{
  flex:0 0 auto;
  color:var(--blue);
  font-size:8px;
  font-weight:950;
  white-space:nowrap;
}
.iptv-world-coverage span{
  min-width:0;
  color:var(--muted);
  font-size:7px;
  font-weight:750;
  line-height:1.25;
}
@media(max-width:820px){
  .iptv-world-coverage{
    align-items:flex-start;
    padding:8px;
  }
  .iptv-world-coverage strong{font-size:10px}
  .iptv-world-coverage span{font-size:9px}
}


/* ==========================================================
   v14.52 — PROMINENT LIVE WORKING CHANNEL COUNT
   ========================================================== */
.iptv-working-filter{
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  gap:4px;
  white-space:nowrap;
}
.iptv-working-count-badge{
  display:inline!important;
  min-width:0;
  height:auto;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent!important;
  color:var(--accent)!important;
  font-size:inherit;
  font-weight:1000;
  line-height:inherit;
  box-shadow:none!important;
}
.iptv-working-count-badge::before{content:"("}
.iptv-working-count-badge::after{content:")"}
.iptv-working-filter.active .iptv-working-count-badge{
  color:currentColor!important;
}
.iptv-working-total-line{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:3px;
}
.iptv-working-count-large{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:40px;
  height:28px;
  padding:0 9px;
  border-radius:999px;
  background:var(--accent);
  color:#07120c;
  font-size:14px;
  font-weight:1000;
  line-height:1;
}
@media(max-width:820px){
  .iptv-working-count-badge{font-size:inherit}
  .iptv-working-count-large{min-width:46px;height:32px;font-size:16px}
}


/* ==========================================================
   v14.53 — AUTO TUNE HOW-TO GUIDE
   ========================================================== */
.iptv-scan-help-btn{
  border:1px solid color-mix(in srgb,var(--blue) 45%,var(--line))!important;
  background:color-mix(in srgb,var(--blue) 8%,var(--panel))!important;
  color:var(--blue)!important;
}
.iptv-scan-help-btn.active{
  border-color:var(--blue)!important;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--blue) 30%,transparent);
}
.iptv-scan-help-panel{
  margin-top:7px;
  padding:10px;
  border:1px solid color-mix(in srgb,var(--blue) 32%,var(--line));
  border-radius:11px;
  background:var(--panel2);
  color:var(--text);
}
.iptv-scan-help-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.iptv-scan-help-head>div{
  display:grid;
  gap:2px;
}
.iptv-scan-help-head strong{
  color:var(--blue);
  font-size:10px;
  font-weight:1000;
}
.iptv-scan-help-head span{
  color:var(--muted);
  font-size:8px;
  font-weight:750;
  line-height:1.35;
}
#iptvScanHelpCloseBtn{
  flex:0 0 auto;
  width:28px;
  height:28px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  color:var(--text);
  font-size:18px;
  font-weight:900;
  line-height:1;
  cursor:pointer;
}
.iptv-scan-help-steps{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:6px;
  margin-top:9px;
}
.iptv-scan-help-steps>div{
  display:grid;
  grid-template-columns:23px minmax(0,1fr);
  align-content:start;
  gap:6px;
  padding:8px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--panel);
}
.iptv-scan-help-steps>div>b{
  display:flex;
  align-items:center;
  justify-content:center;
  width:23px;
  height:23px;
  border-radius:50%;
  background:var(--accent);
  color:#07120c;
  font-size:9px;
  font-weight:1000;
}
.iptv-scan-help-steps span{
  color:var(--muted);
  font-size:7px;
  font-weight:750;
  line-height:1.4;
}
.iptv-scan-help-steps span strong{color:var(--text)}
.iptv-scan-help-tips{
  display:grid;
  gap:4px;
  margin-top:8px;
  padding:8px;
  border:1px solid color-mix(in srgb,var(--accent) 25%,var(--line));
  border-radius:9px;
  background:color-mix(in srgb,var(--accent) 4%,var(--panel));
}
.iptv-scan-help-tips>strong{
  color:var(--accent);
  font-size:8px;
  font-weight:1000;
}
.iptv-scan-help-tips>span{
  color:var(--muted);
  font-size:7px;
  font-weight:750;
  line-height:1.35;
}
.iptv-scan-help-tips b{color:var(--text)}
.iptv-scan-help-note{
  margin-top:7px;
  color:var(--muted);
  font-size:7px;
  font-weight:750;
  line-height:1.35;
}
@media(max-width:1100px){
  .iptv-scan-help-steps{grid-template-columns:1fr 1fr}
}
@media(max-width:820px){
  .iptv-scan-help-btn{min-height:44px!important}
  .iptv-scan-help-panel{padding:10px}
  .iptv-scan-help-head strong{font-size:12px}
  .iptv-scan-help-head span{font-size:10px}
  #iptvScanHelpCloseBtn{width:44px;height:44px;font-size:22px}
  .iptv-scan-help-steps{grid-template-columns:1fr}
  .iptv-scan-help-steps>div{padding:10px;grid-template-columns:30px minmax(0,1fr)}
  .iptv-scan-help-steps>div>b{width:30px;height:30px;font-size:11px}
  .iptv-scan-help-steps span,.iptv-scan-help-tips>span,.iptv-scan-help-note{font-size:10px}
  .iptv-scan-help-tips>strong{font-size:11px}
}


/* v14.54 — cleaner Working count in compact filter row */
.iptv-working-filter{
  padding-left:8px!important;
  padding-right:8px!important;
}


/* ==========================================================
   v14.55 — DEDICATED MY SCANNED WORKING CHANNELS CARD
   ========================================================== */
.iptv-working-hero{
  width:100%;
  display:grid;
  grid-template-columns:36px minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  margin:0 0 9px;
  padding:10px 11px;
  border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line));
  border-radius:12px;
  background:linear-gradient(
    135deg,
    color-mix(in srgb,var(--accent) 10%,var(--panel)),
    var(--panel2)
  );
  color:var(--text);
  text-align:left;
  cursor:pointer;
  box-shadow:0 8px 24px rgba(0,0,0,.10);
  transition:border-color .16s ease,transform .16s ease,box-shadow .16s ease;
}
.iptv-working-hero:hover{
  border-color:var(--accent);
  transform:translateY(-1px);
  box-shadow:0 10px 26px rgba(0,0,0,.14);
}
.iptv-working-hero.active{
  border-color:var(--accent);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 28%,transparent),0 10px 28px rgba(0,0,0,.14);
}
.iptv-working-hero-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  width:36px;
  height:36px;
  border-radius:10px;
  background:var(--accent);
  color:#07120c;
  font-size:19px;
  font-weight:1000;
}
.iptv-working-hero-copy{
  display:grid;
  gap:1px;
  min-width:0;
}
.iptv-working-hero-kicker{
  color:var(--accent);
  font-size:7px;
  font-weight:1000;
  letter-spacing:.10em;
}
.iptv-working-hero-copy>strong{
  color:var(--text);
  font-size:12px;
  font-weight:1000;
  line-height:1.15;
}
.iptv-working-hero-copy>small{
  color:var(--muted);
  font-size:7px;
  font-weight:750;
  line-height:1.35;
}
.iptv-working-hero-count-wrap{
  display:grid;
  justify-items:center;
  gap:1px;
  min-width:58px;
  padding:7px 8px;
  border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));
  border-radius:10px;
  background:color-mix(in srgb,var(--accent) 7%,var(--panel));
}
.iptv-working-hero-count{
  color:var(--accent);
  font-size:19px;
  font-weight:1000;
  line-height:1;
}
.iptv-working-hero-count-wrap small{
  color:var(--muted);
  font-size:6px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.07em;
}
.iptv-working-total-line{
  flex-wrap:wrap;
}
@media(max-width:820px){
  .iptv-working-hero{
    grid-template-columns:42px minmax(0,1fr) auto;
    gap:9px;
    padding:11px;
  }
  .iptv-working-hero-icon{
    width:42px;
    height:42px;
    font-size:21px;
  }
  .iptv-working-hero-kicker{font-size:8px}
  .iptv-working-hero-copy>strong{font-size:13px}
  .iptv-working-hero-copy>small{font-size:9px}
  .iptv-working-hero-count-wrap{min-width:64px;padding:8px}
  .iptv-working-hero-count{font-size:21px}
  .iptv-working-hero-count-wrap small{font-size:7px}
}
@media(max-width:480px){
  .iptv-working-hero{
    grid-template-columns:38px minmax(0,1fr) 52px;
    padding:9px;
    gap:7px;
  }
  .iptv-working-hero-icon{width:38px;height:38px}
  .iptv-working-hero-copy>small{
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
  }
  .iptv-working-hero-count-wrap{min-width:52px;padding:6px}
  .iptv-working-hero-count{font-size:18px}
}


/* ==========================================================
   v14.56 — SAFE VERIFY ALL WORKING CHANNELS
   ========================================================== */
.iptv-working-verify-bar{
  margin:-3px 0 9px;
}
.iptv-verify-working-btn{
  width:100%;
  display:grid;
  grid-template-columns:1fr;
  gap:2px;
  padding:9px 11px;
  border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line));
  border-radius:10px;
  background:color-mix(in srgb,var(--accent) 6%,var(--panel));
  color:var(--text);
  text-align:left;
  cursor:pointer;
  transition:border-color .16s ease,background .16s ease,transform .16s ease;
}
.iptv-verify-working-btn:hover:not(:disabled){
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 10%,var(--panel));
  transform:translateY(-1px);
}
.iptv-verify-working-btn>span{
  color:var(--accent);
  font-size:9px;
  font-weight:1000;
}
.iptv-verify-working-btn>small{
  color:var(--muted);
  font-size:7px;
  font-weight:750;
  line-height:1.35;
}
.iptv-verify-working-btn:disabled{
  opacity:.55;
  cursor:not-allowed;
}
@media(max-width:820px){
  .iptv-verify-working-btn{
    min-height:52px;
    padding:10px 11px;
  }
  .iptv-verify-working-btn>span{font-size:11px}
  .iptv-verify-working-btn>small{font-size:9px}
}


/* ==========================================================
   v14.57 — CLEAR WORKING RESCAN PROGRESS
   ========================================================== */
.iptv-working-verify-progress{
  margin-top:7px;
  padding:9px;
  border:1px solid color-mix(in srgb,var(--accent) 34%,var(--line));
  border-radius:10px;
  background:var(--panel2);
}
.iptv-working-verify-progress-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
.iptv-working-verify-progress-head strong{
  color:var(--text);
  font-size:9px;
  font-weight:1000;
}
.iptv-working-verify-progress-head span{
  color:var(--accent);
  font-size:10px;
  font-weight:1000;
}
.iptv-working-verify-progress-bar{
  height:6px;
  margin-top:7px;
  overflow:hidden;
  border-radius:999px;
  background:var(--panel);
}
.iptv-working-verify-progress-bar>span{
  display:block;
  width:0%;
  height:100%;
  border-radius:inherit;
  background:var(--accent);
  transition:width .2s linear;
}
.iptv-working-verify-stats{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:5px;
  margin-top:7px;
}
.iptv-working-verify-stats>div{
  display:grid;
  justify-items:center;
  gap:1px;
  padding:6px 4px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
}
.iptv-working-verify-stats strong{
  color:var(--text);
  font-size:12px;
  font-weight:1000;
  line-height:1;
}
.iptv-working-verify-stats span{
  color:var(--muted);
  font-size:6px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.05em;
}
#iptvWorkingVerifyConfirmed{color:var(--accent)}
#iptvWorkingVerifyRemoved{color:#ff8a8a}
#iptvWorkingVerifyCurrent{
  display:block;
  margin-top:7px;
  color:var(--muted);
  font-size:7px;
  font-weight:750;
  line-height:1.35;
}
@media(max-width:820px){
  .iptv-working-verify-progress{padding:10px}
  .iptv-working-verify-progress-head strong{font-size:11px}
  .iptv-working-verify-progress-head span{font-size:12px}
  .iptv-working-verify-stats{
    grid-template-columns:1fr 1fr;
  }
  .iptv-working-verify-stats>div{
    min-height:48px;
    align-content:center;
  }
  .iptv-working-verify-stats strong{font-size:16px}
  .iptv-working-verify-stats span{font-size:8px}
  #iptvWorkingVerifyCurrent{font-size:9px}
}


/* ==========================================================
   v14.58 — FAST-FIRST BACKGROUND WORKING VERIFIER
   ========================================================== */
.iptv-working-verify-background-note{
  display:block;
  margin-top:4px;
  padding-top:5px;
  border-top:1px solid var(--line);
  color:var(--accent);
  font-size:7px;
  font-weight:800;
  line-height:1.35;
}
@media(max-width:820px){
  .iptv-working-verify-background-note{font-size:9px}
}


/* ==========================================================
   v14.59 — WORKING LIST POPULATION / FILTER ISOLATION FIX
   ========================================================== */
#iptvWorkingTools:not([hidden]){
  box-shadow:inset 3px 0 0 color-mix(in srgb,var(--accent) 72%,transparent);
}


/* ==========================================================
   v14.60 — SIMPLE FREE TV SIDEBAR + VISIBLE WORKING LIST
   The channel list owns the scroll area. Controls stay compact.
   ========================================================== */
#portalView.free-tv-mode .iptv-player-view{
  grid-template-columns:minmax(300px,350px) minmax(0,1fr)!important;
  min-height:0!important;
}
#portalView.free-tv-mode .iptv-sidebar{
  display:flex!important;
  flex-direction:column!important;
  min-height:0!important;
  overflow:hidden!important;
}
#portalView.free-tv-mode .iptv-sidebar-top{
  flex:0 0 auto!important;
  padding:8px!important;
}
#portalView.free-tv-mode .iptv-working-hero{
  padding:9px!important;
  min-height:70px!important;
}
#portalView.free-tv-mode .iptv-working-hero-copy small{
  display:-webkit-box!important;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden!important;
}
#portalView.free-tv-mode .iptv-working-verify-bar{
  margin:5px 0 0!important;
}
#portalView.free-tv-mode .iptv-verify-working-btn{
  padding:7px 8px!important;
}
#portalView.free-tv-mode .iptv-search-wrap{
  margin-top:6px!important;
}
#portalView.free-tv-mode .iptv-search-wrap input{
  min-height:34px!important;
  height:34px!important;
}
#portalView.free-tv-mode .iptv-filter-tabs{
  margin-top:5px!important;
  gap:4px!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
}
#portalView.free-tv-mode .iptv-filter{
  min-height:30px!important;
  padding:0 3px!important;
  font-size:7px!important;
}
#portalView.free-tv-mode .iptv-working-tools{
  margin-top:5px!important;
  padding:7px!important;
}
#portalView.free-tv-mode .iptv-working-tools-copy>span{
  display:none!important;
}
#portalView.free-tv-mode .iptv-working-tools .iptv-clear-working-tab-btn{
  min-height:30px!important;
}
#portalView.free-tv-mode .iptv-browser-controls{
  flex:0 0 auto!important;
  grid-template-columns:1fr 1fr 1fr!important;
  gap:4px!important;
  padding:6px 8px!important;
}
#portalView.free-tv-mode .iptv-browser-controls label{
  gap:2px!important;
}
#portalView.free-tv-mode .iptv-browser-controls label>span{
  font-size:6px!important;
}
#portalView.free-tv-mode .iptv-browser-controls select{
  height:32px!important;
  padding:0 6px!important;
  font-size:8px!important;
}
#portalView.free-tv-mode .iptv-reset-filters{
  min-height:27px!important;
  height:27px!important;
  font-size:7px!important;
}
#portalView.free-tv-mode .iptv-world-status{
  flex:0 0 auto!important;
  margin:0!important;
  padding:5px 8px!important;
  min-height:28px!important;
}
#portalView.free-tv-mode .iptv-list-tools{
  flex:0 0 auto!important;
  min-height:30px!important;
  padding:4px 7px!important;
}
.iptv-working-list-heading{
  flex:0 0 auto;
  padding:7px 9px;
  border-bottom:1px solid var(--line);
  background:color-mix(in srgb,var(--accent) 6%,var(--panel2));
}
.iptv-working-list-heading strong{
  display:block;
  color:var(--accent);
  font-size:9px;
  font-weight:1000;
}
.iptv-working-list-heading span{
  display:block;
  margin-top:1px;
  color:var(--muted);
  font-size:7px;
  font-weight:750;
}
#portalView.free-tv-mode .iptv-channel-list{
  flex:1 1 180px!important;
  min-height:180px!important;
  height:auto!important;
  max-height:none!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  padding:5px!important;
}
#portalView.free-tv-mode .iptv-channel{
  min-height:48px!important;
  padding:6px 7px!important;
}
#portalView.free-tv-mode .iptv-channel-logo{
  width:32px!important;
  height:32px!important;
}
#portalView.free-tv-mode .iptv-channel-name{
  font-size:9px!important;
}
#portalView.free-tv-mode .iptv-channel-program{
  font-size:7px!important;
}

/* Working view is intentionally simpler: hide controls that are irrelevant
   because My Scanned Working already represents its own complete channel list. */
#portalView.free-tv-mode .iptv-sidebar.working-view .iptv-filter-tabs,
#portalView.free-tv-mode .iptv-sidebar.working-view .iptv-browser-controls,
#portalView.free-tv-mode .iptv-sidebar.working-view .iptv-world-status{
  display:none!important;
}
#portalView.free-tv-mode .iptv-sidebar.working-view .iptv-working-tools{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:6px!important;
}
#portalView.free-tv-mode .iptv-sidebar.working-view .iptv-working-total-line{
  margin:0!important;
}
#portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
  flex:1 1 260px!important;
  min-height:260px!important;
}

/* Desktop/landscape: never force a 620px sidebar into a shorter viewport. */
@media(min-width:821px){
  #portalView.free-tv-mode .iptv-sidebar{
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    position:static!important;
    top:auto!important;
  }
}

/* Tablet/phone: let the whole Free TV page flow naturally, while the
   channel list gets a large independent touch-scroll area. */
@media(max-width:820px){
  #portalView.free-tv-mode .iptv-player-view{
    display:block!important;
  }
  #portalView.free-tv-mode .iptv-sidebar{
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:visible!important;
    margin-bottom:10px!important;
  }
  #portalView.free-tv-mode .iptv-channel-list{
    height:55vh!important;
    min-height:320px!important;
    max-height:620px!important;
    overflow-y:auto!important;
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
  }
  #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:62vh!important;
    min-height:360px!important;
  }
  .iptv-working-list-heading strong{font-size:11px}
  .iptv-working-list-heading span{font-size:9px}
}


/* ==========================================================
   v14.61 — CHANNEL-FIRST FREE TV LAYOUT
   ========================================================== */

/* EPG only exists visually when real guide data successfully loads. */
#iptvEpgNowNext[hidden],
#iptvGuideCard[hidden]{display:none!important}

/* Make the channel browser the visual priority. */
#portalView.free-tv-mode .iptv-player-view{
  grid-template-columns:minmax(330px,390px) minmax(0,1fr)!important;
  gap:8px!important;
}
#portalView.free-tv-mode .iptv-sidebar{
  display:flex!important;
  flex-direction:column!important;
  height:100%!important;
  min-height:0!important;
  max-height:none!important;
  overflow:hidden!important;
  position:static!important;
  border-radius:10px!important;
}

/* Very compact directory header. */
#portalView.free-tv-mode .iptv-sidebar-top{
  flex:0 0 auto!important;
  padding:6px!important;
}
#portalView.free-tv-mode .iptv-provider-line{
  margin-bottom:4px!important;
  min-height:24px!important;
}
#portalView.free-tv-mode .iptv-provider-line strong{font-size:9px!important}
#portalView.free-tv-mode .iptv-status-pill{
  padding:3px 6px!important;
  font-size:7px!important;
}

/* Working becomes a simple, obvious button instead of a tall information card. */
#portalView.free-tv-mode .iptv-working-hero{
  min-height:46px!important;
  display:grid!important;
  grid-template-columns:32px minmax(0,1fr) 50px!important;
  gap:7px!important;
  padding:6px 7px!important;
  border-radius:9px!important;
}
#portalView.free-tv-mode .iptv-working-hero-icon{
  width:30px!important;height:30px!important;
  border-radius:8px!important;
  font-size:18px!important;
}
#portalView.free-tv-mode .iptv-working-hero-copy{
  align-self:center!important;
}
#portalView.free-tv-mode .iptv-working-hero-kicker,
#portalView.free-tv-mode .iptv-working-hero-copy small{
  display:none!important;
}
#portalView.free-tv-mode .iptv-working-hero-copy strong{
  font-size:10px!important;
  line-height:1.1!important;
}
#portalView.free-tv-mode .iptv-working-hero-count-wrap{
  min-height:34px!important;
  padding:3px!important;
}
#portalView.free-tv-mode .iptv-working-hero-count{
  font-size:15px!important;
}
#portalView.free-tv-mode .iptv-working-hero-count-wrap small{
  font-size:5px!important;
}

/* Verify is one small line. Details/progress appear only while used. */
#portalView.free-tv-mode .iptv-working-verify-bar{margin:4px 0 0!important}
#portalView.free-tv-mode .iptv-verify-working-btn{
  min-height:29px!important;
  padding:5px 7px!important;
}
#portalView.free-tv-mode .iptv-verify-working-btn>span{font-size:7px!important}
#portalView.free-tv-mode .iptv-verify-working-btn>small{display:none!important}

/* Search + browse modes stay simple. */
#portalView.free-tv-mode .iptv-search-wrap{margin-top:4px!important}
#portalView.free-tv-mode .iptv-search-wrap input{
  height:32px!important;
  min-height:32px!important;
  font-size:10px!important;
}
#portalView.free-tv-mode .iptv-filter-tabs{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:3px!important;
  margin-top:4px!important;
}
#portalView.free-tv-mode .iptv-filter{
  min-height:27px!important;
  padding:0 2px!important;
  font-size:6px!important;
  border-radius:7px!important;
}

/* Country + Category are the only browse selectors customers really need.
   Category is intentionally prominent. Sort/reset are hidden to reduce clutter. */
#portalView.free-tv-mode .iptv-browser-controls{
  flex:0 0 auto!important;
  display:grid!important;
  grid-template-columns:1fr 1.35fr!important;
  gap:5px!important;
  padding:5px 6px!important;
  border-bottom:1px solid var(--line)!important;
}
#portalView.free-tv-mode .iptv-browser-controls label{
  display:grid!important;
  gap:2px!important;
}
#portalView.free-tv-mode .iptv-browser-controls label>span{
  font-size:6px!important;
}
#portalView.free-tv-mode .iptv-browser-controls select{
  height:32px!important;
  font-size:9px!important;
  padding:0 6px!important;
}
#portalView.free-tv-mode .iptv-sort-control,
#portalView.free-tv-mode .iptv-reset-filters{
  display:none!important;
}

/* The old World line is useful in Diagnostics, but not worth channel-list space. */
#portalView.free-tv-mode .iptv-world-status{display:none!important}

/* Working info is reduced to one compact management row. */
#portalView.free-tv-mode .iptv-working-tools{
  flex:0 0 auto!important;
  margin:4px 0 0!important;
  padding:5px 6px!important;
  min-height:32px!important;
}
#portalView.free-tv-mode .iptv-working-tools-copy>span{display:none!important}
#portalView.free-tv-mode .iptv-working-total-line strong{font-size:7px!important}
#portalView.free-tv-mode .iptv-working-count-large{font-size:9px!important}
#portalView.free-tv-mode .iptv-clear-working-tab-btn{
  min-height:26px!important;
  padding:0 7px!important;
  font-size:6px!important;
}

/* Small utility row, then immediately the selectable channels. */
#portalView.free-tv-mode .iptv-list-tools{
  flex:0 0 auto!important;
  min-height:30px!important;
  padding:3px 5px!important;
  font-size:7px!important;
}
#portalView.free-tv-mode .iptv-list-tools button{
  min-height:25px!important;
  padding:0 6px!important;
  font-size:6px!important;
}
.iptv-working-list-heading{
  flex:0 0 auto!important;
  padding:6px 8px!important;
}
.iptv-working-list-heading strong{font-size:8px!important}
.iptv-working-list-heading span{font-size:7px!important}

/* THIS is the main sidebar content now. */
#portalView.free-tv-mode .iptv-channel-list{
  flex:1 1 0!important;
  height:auto!important;
  min-height:260px!important;
  max-height:none!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding:4px!important;
  scrollbar-gutter:stable!important;
}
#portalView.free-tv-mode .iptv-channel{
  min-height:46px!important;
  grid-template-columns:30px minmax(0,1fr) 28px!important;
  gap:6px!important;
  padding:5px 6px!important;
  border-bottom:1px solid color-mix(in srgb,var(--line) 75%,transparent)!important;
}
#portalView.free-tv-mode .iptv-channel-logo{
  width:28px!important;height:28px!important;
}
#portalView.free-tv-mode .iptv-channel-name{
  font-size:9px!important;
  white-space:normal!important;
  line-height:1.2!important;
}
#portalView.free-tv-mode .iptv-channel-program{
  font-size:7px!important;
  margin-top:2px!important;
}
#portalView.free-tv-mode .iptv-channel-source,
#portalView.free-tv-mode .iptv-channel-country,
#portalView.free-tv-mode .iptv-channel-working{
  font-size:5px!important;
}
#portalView.free-tv-mode .iptv-star{
  min-width:28px!important;
  min-height:28px!important;
  font-size:16px!important;
}

/* Working view: keep Search + Working management + utilities + the full list.
   Hide only unrelated mode/category selectors. */
#portalView.free-tv-mode .iptv-sidebar.working-view .iptv-filter-tabs,
#portalView.free-tv-mode .iptv-sidebar.working-view .iptv-browser-controls{
  display:none!important;
}
#portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
  flex:1 1 0!important;
  min-height:320px!important;
}

/* Main player also gets simpler when no EPG exists. */
#portalView.free-tv-mode .iptv-main{
  gap:7px!important;
  padding:8px!important;
}
#portalView.free-tv-mode .iptv-now-card{
  padding:8px!important;
}
#portalView.free-tv-mode .iptv-guide-card{
  padding:8px!important;
}
#portalView.free-tv-mode .free-tv-note{
  font-size:7px!important;
  padding:5px 7px!important;
}

/* On phones/tablets, normal page scrolling plus a generous channel list. */
@media(max-width:820px){
  #portalView.free-tv-mode .iptv-player-view{
    display:block!important;
  }
  #portalView.free-tv-mode .iptv-sidebar{
    height:auto!important;
    overflow:visible!important;
    margin-bottom:8px!important;
  }
  #portalView.free-tv-mode .iptv-channel-list{
    height:58vh!important;
    min-height:360px!important;
    max-height:680px!important;
    overflow-y:auto!important;
  }
  #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:65vh!important;
    min-height:400px!important;
  }
  #portalView.free-tv-mode .iptv-search-wrap input{
    font-size:16px!important;
    height:42px!important;
  }
  #portalView.free-tv-mode .iptv-filter{
    min-height:38px!important;
    font-size:9px!important;
  }
  #portalView.free-tv-mode .iptv-browser-controls select{
    height:42px!important;
    font-size:16px!important;
  }
  #portalView.free-tv-mode .iptv-channel{
    min-height:56px!important;
  }
  #portalView.free-tv-mode .iptv-channel-name{font-size:11px!important}
  #portalView.free-tv-mode .iptv-channel-program{font-size:9px!important}
}


/* ==========================================================
   v14.62 — ALWAYS-VISIBLE NEXT + CHANNEL-LIST AUTO FOLLOW
   ========================================================== */
#portalView.free-tv-mode .iptv-player-actions-wrap{
  width:100%!important;
  min-width:0!important;
}
#portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four{
  display:grid!important;
  width:100%!important;
  min-width:0!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:6px!important;
  overflow:visible!important;
}
#portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four .btn{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  min-height:38px!important;
  padding:0 8px!important;
  margin:0!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  font-size:9px!important;
}
#portalView.free-tv-mode #iptvPrevChannelBtn,
#portalView.free-tv-mode #iptvLastChannelBtn,
#portalView.free-tv-mode #iptvRetryCurrentBtn,
#portalView.free-tv-mode #iptvNextChannelBtn{
  grid-column:auto!important;
  grid-row:auto!important;
}
#portalView.free-tv-mode #iptvNextChannelBtn{
  display:flex!important;
  visibility:visible!important;
}
#portalView.free-tv-mode .iptv-channel.active{
  position:relative;
  border-color:var(--accent)!important;
  background:color-mix(in srgb,var(--accent) 10%,var(--panel))!important;
}
#portalView.free-tv-mode .iptv-channel.active::before{
  content:"";
  position:absolute;
  left:0;
  top:6px;
  bottom:6px;
  width:3px;
  border-radius:999px;
  background:var(--accent);
}
#portalView.free-tv-mode .iptv-channel-list{
  scroll-behavior:smooth!important;
  overflow-anchor:none!important;
  overscroll-behavior:contain!important;
}
@media(max-width:820px){
  #portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four{
    grid-template-columns:1fr 1fr!important;
    gap:7px!important;
  }
  #portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four .btn{
    min-height:44px!important;
    font-size:11px!important;
  }
}
@media(max-width:390px){
  #portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four .btn{
    padding:0 5px!important;
    font-size:10px!important;
  }
}


/* ==========================================================
   v14.63 — WHOLE-SITE RESPONSIVE HARDENING
   Desktop monitors • laptops • tablets • phones
   ========================================================== */

/* Universal layout safety. */
*,*::before,*::after{box-sizing:border-box}
html,body{max-width:100%;overflow-x:hidden}
img,svg,video,canvas{max-width:100%}
button,input,select,textarea{max-width:100%}
.shell,.nav,.app-layout,.main-panel,.card,.admin-columns,.admin-column,
.stat-grid,.free-tv-launch-card,.customer-support-section,.setup-guide-layout,
.sports-guide-shell,#sportsGuideSection,#iptvHub,.iptv-player-view,.iptv-main{
  min-width:0;
}
.main-panel,
.main-panel *{
  overflow-wrap:anywhere;
}
table{
  max-width:100%;
}

/* Large monitors: prevent ordinary site content from becoming excessively wide. */
@media(min-width:1800px){
  .shell{max-width:1720px!important}
  #portalView:not(.free-tv-mode) .main-panel{
    padding-left:clamp(34px,3vw,58px)!important;
    padding-right:clamp(34px,3vw,58px)!important;
  }
  #portalView.free-tv-mode .iptv-player-view{
    grid-template-columns:minmax(360px,420px) minmax(0,1fr)!important;
  }
}

/* Mid-size desktops / laptops: reduce padding before content gets cramped. */
@media(max-width:1366px){
  .shell{padding-left:22px!important;padding-right:22px!important}
  #portalView:not(.free-tv-mode) .main-panel{
    padding:24px 24px 48px!important;
  }
  .stat-grid{gap:10px!important}
  .admin-columns{gap:12px!important}
  #portalView.free-tv-mode .main-panel{
    padding-left:8px!important;
    padding-right:8px!important;
  }
  #portalView.free-tv-mode .iptv-player-view{
    grid-template-columns:minmax(320px,360px) minmax(0,1fr)!important;
  }
}

/* Header enters two-row mode earlier so no monitor width clips account controls. */
@media(min-width:901px) and (max-width:1180px){
  :root{--header:104px}
  header{height:var(--header)!important;padding:7px 0!important}
  .nav{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    grid-template-rows:44px 38px!important;
    gap:5px 10px!important;
    align-items:center!important;
  }
  .brand{grid-column:1!important;grid-row:1!important;min-width:0!important}
  .nav-actions{
    grid-column:2!important;
    grid-row:1!important;
    flex-wrap:nowrap!important;
    gap:6px!important;
    min-width:0!important;
  }
  #welcome{display:none!important}
  .header-broadcast{
    grid-column:1/-1!important;
    grid-row:2!important;
    width:100%!important;
    max-width:none!important;
    height:34px!important;
    margin:0!important;
  }
  .nav-actions .btn{
    min-height:38px!important;
    padding:0 10px!important;
    font-size:11px!important;
  }
  .server-status-badge{
    min-height:38px!important;
    padding:4px 8px!important;
  }
}

/* Portal becomes a top navigation layout on tablets/smaller laptops. */
@media(max-width:980px){
  #portalView:not(.free-tv-mode) .app-layout{
    display:block!important;
    min-height:0!important;
  }
  #portalView:not(.free-tv-mode) .sidebar{
    position:static!important;
    width:100%!important;
    height:auto!important;
    overflow:visible!important;
    padding:12px!important;
    border-right:0!important;
    border-bottom:1px solid var(--line)!important;
  }
  #portalView:not(.free-tv-mode) .profile-card{
    margin-bottom:10px!important;
    padding:12px!important;
  }
  #portalView:not(.free-tv-mode) .side-menu{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:7px!important;
  }
  #portalView:not(.free-tv-mode) .side-menu .btn{
    min-width:0!important;
    padding:0 8px!important;
    text-align:center!important;
    font-size:11px!important;
  }
  #portalView:not(.free-tv-mode) .side-footer{
    margin-top:8px!important;
    padding-top:8px!important;
  }
  #portalView:not(.free-tv-mode) .side-footer .btn{
    text-align:center!important;
  }
  #portalView:not(.free-tv-mode) .main-panel{
    padding:20px 18px 40px!important;
  }
  .stat-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .admin-columns{
    grid-template-columns:1fr!important;
  }
  .top-title,.section-head{
    align-items:flex-start!important;
    flex-wrap:wrap!important;
  }
}

/* Free TV: desktop/laptop fit without horizontal clipping. */
@media(min-width:821px){
  #portalView.free-tv-mode .app-layout{
    min-height:calc(100dvh - var(--header))!important;
  }
  #portalView.free-tv-mode .iptv-player-view{
    width:100%!important;
    min-width:0!important;
  }
  #portalView.free-tv-mode .iptv-main{
    min-width:0!important;
  }
  #portalView.free-tv-mode .iptv-video-wrap{
    width:100%!important;
    max-width:100%!important;
  }
}

/* Tablets and phones: natural vertical page flow, no fixed-height traps. */
@media(max-width:820px){
  .shell{padding-left:12px!important;padding-right:12px!important}
  #publicView,#portalView{max-width:100%!important}
  #portalView:not(.free-tv-mode) .side-menu{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  #portalView:not(.free-tv-mode) .main-panel{
    padding:16px 12px 34px!important;
  }

  /* Free TV */
  #portalView.free-tv-mode .app-layout,
  #portalView.free-tv-mode .main-panel,
  #portalView.free-tv-mode .free-tv-portal-panel,
  #portalView.free-tv-mode #iptvHub{
    height:auto!important;
    min-height:0!important;
    overflow:visible!important;
  }
  #portalView.free-tv-mode .main-panel{
    padding:7px!important;
  }
  #portalView.free-tv-mode .iptv-player-view{
    display:block!important;
  }
  #portalView.free-tv-mode .iptv-sidebar{
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:visible!important;
  }
  #portalView.free-tv-mode .iptv-main{
    width:100%!important;
    padding:7px 0 0!important;
  }
  #portalView.free-tv-mode .iptv-video-wrap{
    width:100%!important;
    aspect-ratio:16/9!important;
  }
  #portalView.free-tv-mode .iptv-channel-list{
    height:min(60vh,620px)!important;
    min-height:340px!important;
    max-height:620px!important;
    overflow-y:auto!important;
  }
  #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:min(68vh,680px)!important;
    min-height:390px!important;
    max-height:680px!important;
  }

  /* Forms and touch controls. */
  input,select,textarea{font-size:16px!important}
  .btn{min-height:44px}
  .admin-form-row,
  .outage-grid,
  .public-messages-grid,
  .setup-guide-layout{
    grid-template-columns:1fr!important;
  }

  /* Sports */
  #sportsGuideSection{
    overflow-x:hidden!important;
  }
  .guide-layout,.guide-side{
    grid-template-columns:1fr!important;
  }
  .guide-chip-row,.sports-hub-tabs,.guide-week-strip,.guide-featured-strip{
    overflow-x:auto!important;
    overscroll-behavior-inline:contain!important;
  }
}

/* Phones. */
@media(max-width:640px){
  :root{--header:98px}
  .shell{padding-left:10px!important;padding-right:10px!important}

  /* Header account controls must always fit. */
  .nav-actions{gap:4px!important}
  .nav-actions .btn{
    min-height:36px!important;
    padding:0 8px!important;
    font-size:11px!important;
  }
  .theme-label{display:none!important}
  #themeLauncher{width:38px!important;padding:0!important}
  .server-status-badge{
    min-height:36px!important;
    padding:3px 7px!important;
  }
  .server-status-copy small{font-size:6px!important}
  .server-status-copy strong{font-size:8px!important}

  #portalView:not(.free-tv-mode) .side-menu{
    grid-template-columns:1fr 1fr!important;
  }
  #portalView:not(.free-tv-mode) .side-menu .btn{
    min-height:44px!important;
    font-size:11px!important;
  }
  .stat-grid{grid-template-columns:1fr 1fr!important}
  .stat{padding:13px!important}
  .stat strong{font-size:21px!important}
  .top-title h2{font-size:clamp(24px,8vw,34px)!important}

  /* Free TV mobile readability */
  #portalView.free-tv-mode .iptv-head{
    flex-wrap:wrap!important;
    align-items:flex-start!important;
  }
  #portalView.free-tv-mode .iptv-head-actions{
    width:100%!important;
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
  #portalView.free-tv-mode .iptv-head-actions .btn{
    width:100%!important;
    min-width:0!important;
  }
  #portalView.free-tv-mode .iptv-filter-tabs{
    display:flex!important;
    overflow-x:auto!important;
    gap:5px!important;
  }
  #portalView.free-tv-mode .iptv-filter{
    flex:0 0 auto!important;
    min-width:72px!important;
    min-height:40px!important;
    font-size:9px!important;
  }
  #portalView.free-tv-mode .iptv-browser-controls{
    grid-template-columns:1fr!important;
  }
  #portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four{
    grid-template-columns:1fr 1fr!important;
  }
  #portalView.free-tv-mode .iptv-now-main{
    grid-template-columns:42px minmax(0,1fr) 42px!important;
    gap:8px!important;
  }
  #portalView.free-tv-mode .iptv-now-logo{
    width:42px!important;height:42px!important;
  }
  #portalView.free-tv-mode .iptv-now-card h3{
    font-size:14px!important;
  }

  /* Tables become locally scrollable rather than forcing page width. */
  .admin-table-wrap,
  .customer-table-wrap,
  .table-wrap{
    width:100%!important;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch;
  }
}

/* Very narrow phones (320–430px). */
@media(max-width:430px){
  .brand span{
    max-width:88px!important;
    font-size:11px!important;
  }
  .tv-logo-home{
    width:34px!important;
    height:34px!important;
    flex-basis:34px!important;
  }
  #portalBtn{padding-inline:8px!important}
  #logoutBtn{padding-inline:8px!important}
  #serverStatusBadge{max-width:86px!important}

  #portalView:not(.free-tv-mode) .side-menu{
    grid-template-columns:1fr!important;
  }
  .stat-grid{grid-template-columns:1fr!important}
  .card{padding:14px!important}

  #portalView.free-tv-mode .iptv-head-actions{
    grid-template-columns:1fr 1fr 1fr!important;
  }
  #portalView.free-tv-mode .iptv-working-hero{
    grid-template-columns:30px minmax(0,1fr) 46px!important;
  }
  #portalView.free-tv-mode .iptv-channel-list{
    min-height:330px!important;
  }
  #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    min-height:380px!important;
  }
  #portalView.free-tv-mode .iptv-channel-name{
    font-size:10px!important;
  }
  #portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four .btn{
    font-size:10px!important;
    padding:0 5px!important;
  }
}

/* Tiny legacy widths: keep controls usable rather than squeezed. */
@media(max-width:350px){
  .shell{padding-left:7px!important;padding-right:7px!important}
  .brand span{max-width:62px!important}
  .nav-actions .btn{padding:0 6px!important}
  #portalView.free-tv-mode .iptv-head-actions{
    grid-template-columns:1fr!important;
  }
  #portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four{
    grid-template-columns:1fr!important;
  }
}

/* Landscape phones / short laptop windows: prioritize usable content height. */
@media(max-height:650px) and (min-width:821px){
  #portalView.free-tv-mode .iptv-third-party-notice{
    max-height:30px!important;
    overflow:hidden!important;
  }
  #portalView.free-tv-mode .iptv-head{
    min-height:44px!important;
    padding-top:5px!important;
    padding-bottom:5px!important;
  }
  #portalView.free-tv-mode .iptv-video-wrap{
    max-height:46vh!important;
  }
  #portalView.free-tv-mode .iptv-channel-list{
    min-height:170px!important;
  }
}

/* Respect safe-area devices without creating gaps elsewhere. */
@supports(padding:max(0px)){
  @media(max-width:820px){
    body{
      padding-left:max(0px,env(safe-area-inset-left));
      padding-right:max(0px,env(safe-area-inset-right));
    }
  }
}

/* Motion accessibility and less jank on low-power devices. */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    scroll-behavior:auto!important;
  }
}


/* ==========================================================
   v14.64 — SCROLL-SAFE FREE TV ON EVERY SCREEN
   Final authoritative override: never trap channel content
   inside a viewport-height container.
   ========================================================== */

/* The document itself must always be allowed to scroll vertically. */
html,
body{
  height:auto!important;
  min-height:100%!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
}

/* Free TV must never become a sealed 100dvh workspace. */
#portalView.free-tv-mode{
  height:auto!important;
  min-height:calc(100vh - var(--header))!important;
  max-height:none!important;
  overflow:visible!important;
}

#portalView.free-tv-mode .app-layout,
#portalView.free-tv-mode .main-panel,
#portalView.free-tv-mode .free-tv-portal-panel,
#portalView.free-tv-mode #iptvHub,
#portalView.free-tv-mode .iptv-player-view,
#portalView.free-tv-mode .iptv-main{
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
}

/* Remove the old grid row that could collapse the player area to the viewport. */
#portalView.free-tv-mode .free-tv-portal-panel{
  display:block!important;
}

#portalView.free-tv-mode #iptvHub{
  display:block!important;
}

/* Desktop/laptop keeps the useful two-column layout, but content determines height. */
@media(min-width:821px){
  #portalView.free-tv-mode .main-panel{
    padding:8px!important;
  }

  #portalView.free-tv-mode .iptv-player-view{
    display:grid!important;
    grid-template-columns:minmax(320px,380px) minmax(0,1fr)!important;
    align-items:start!important;
    gap:8px!important;
    width:100%!important;
  }

  #portalView.free-tv-mode .iptv-sidebar{
    position:static!important;
    top:auto!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:visible!important;
    align-self:start!important;
  }

  /* The actual channels always receive a large, obvious scroll area. */
  #portalView.free-tv-mode .iptv-channel-list{
    display:block!important;
    height:clamp(320px,52vh,620px)!important;
    min-height:320px!important;
    max-height:620px!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch;
    scrollbar-gutter:stable!important;
  }

  #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:clamp(360px,58vh,680px)!important;
    min-height:360px!important;
    max-height:680px!important;
  }

  /* Keep the player side naturally sized so lower controls remain reachable
     through ordinary page scrolling. */
  #portalView.free-tv-mode .iptv-main{
    display:flex!important;
    flex-direction:column!important;
    gap:7px!important;
    min-height:0!important;
  }

  #portalView.free-tv-mode .iptv-video-wrap{
    width:100%!important;
    height:auto!important;
    max-height:none!important;
    aspect-ratio:16/9!important;
  }
}

/* Short desktop/laptop windows: shrink chrome, NEVER the channel list away. */
@media(min-width:821px) and (max-height:900px){
  #portalView.free-tv-mode .iptv-head{
    min-height:38px!important;
    padding:4px 7px!important;
  }

  #portalView.free-tv-mode .free-tv-summary{
    min-height:36px!important;
    padding:3px 6px!important;
  }

  #portalView.free-tv-mode .free-tv-summary>div{
    padding:4px 7px!important;
  }

  #portalView.free-tv-mode .iptv-third-party-notice{
    min-height:36px!important;
    max-height:44px!important;
    overflow:hidden!important;
    padding:5px 8px!important;
  }

  #portalView.free-tv-mode .iptv-channel-list{
    height:390px!important;
    min-height:390px!important;
    max-height:390px!important;
  }

  #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:430px!important;
    min-height:430px!important;
    max-height:430px!important;
  }
}

/* Very short desktop windows still get a usable list and normal page scroll. */
@media(min-width:821px) and (max-height:700px){
  #portalView.free-tv-mode .iptv-channel-list{
    height:320px!important;
    min-height:320px!important;
    max-height:320px!important;
  }

  #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:350px!important;
    min-height:350px!important;
    max-height:350px!important;
  }

  #portalView.free-tv-mode .iptv-video-wrap{
    max-height:none!important;
  }
}

/* Tablet/phone: ordinary page scrolling plus a dedicated touch-scroll channel list. */
@media(max-width:820px){
  #portalView.free-tv-mode,
  #portalView.free-tv-mode .app-layout,
  #portalView.free-tv-mode .main-panel,
  #portalView.free-tv-mode .free-tv-portal-panel,
  #portalView.free-tv-mode #iptvHub,
  #portalView.free-tv-mode .iptv-player-view,
  #portalView.free-tv-mode .iptv-sidebar,
  #portalView.free-tv-mode .iptv-main{
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    overflow:visible!important;
  }

  #portalView.free-tv-mode .iptv-player-view{
    display:block!important;
  }

  #portalView.free-tv-mode .iptv-channel-list{
    height:58vh!important;
    min-height:360px!important;
    max-height:650px!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
  }

  #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:64vh!important;
    min-height:400px!important;
    max-height:700px!important;
  }
}

/* If a browser has a very small usable viewport after toolbars, still never
   hide the content behind an overflow lock. */
@supports(height:100dvh){
  #portalView.free-tv-mode,
  #portalView.free-tv-mode .app-layout,
  #portalView.free-tv-mode .main-panel{
    max-height:none!important;
    overflow-y:visible!important;
  }
}


/* ==========================================================
   v14.65 — ALWAYS-VISIBLE PLAYER BOX
   The page may scroll, but the full video/player controls stay
   inside the visible viewport on every screen size.
   ========================================================== */

/* Desktop / laptop: keep the player stage visible at the top-right. */
@media(min-width:821px){
  #portalView.free-tv-mode .iptv-main{
    position:sticky!important;
    top:calc(var(--header) + 8px)!important;
    align-self:start!important;
    z-index:4!important;
    max-height:calc(100vh - var(--header) - 16px)!important;
    overflow:visible!important;
    padding:6px!important;
    gap:5px!important;
  }

  /* The video box scales down before it can run below the viewport. */
  #portalView.free-tv-mode .iptv-video-wrap{
    width:100%!important;
    height:auto!important;
    aspect-ratio:16/9!important;
    max-height:calc(100vh - var(--header) - 185px)!important;
    min-height:0!important;
    margin:0!important;
  }

  #portalView.free-tv-mode #iptvVideo{
    width:100%!important;
    height:100%!important;
    max-height:100%!important;
    object-fit:contain!important;
  }

  /* Keep all four player buttons directly below the visible video. */
  #portalView.free-tv-mode .iptv-player-actions-wrap{
    flex:0 0 auto!important;
    margin:0!important;
  }

  #portalView.free-tv-mode .iptv-nav-status-row{
    min-height:18px!important;
    margin:0 0 3px!important;
  }

  #portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four .btn{
    min-height:34px!important;
  }

  /* Compact now-playing information so it does not push the player stage
     beyond the visible screen. */
  #portalView.free-tv-mode .iptv-now-card{
    flex:0 0 auto!important;
    padding:6px 8px!important;
    margin:0!important;
  }

  #portalView.free-tv-mode .iptv-now-main{
    gap:7px!important;
  }

  #portalView.free-tv-mode .iptv-now-logo{
    width:38px!important;
    height:38px!important;
  }

  #portalView.free-tv-mode .iptv-now-card h3{
    margin:0!important;
    font-size:12px!important;
    line-height:1.2!important;
  }

  #portalView.free-tv-mode .iptv-now-program{
    font-size:8px!important;
  }

  #portalView.free-tv-mode .iptv-channel-meta{
    margin-top:4px!important;
    gap:3px!important;
  }

  #portalView.free-tv-mode .iptv-channel-meta span{
    font-size:6px!important;
    padding:2px 5px!important;
  }

  #portalView.free-tv-mode .iptv-channel-health{
    margin-top:3px!important;
    font-size:6px!important;
  }

  /* Guide content remains available when real EPG exists, but it belongs
     below the always-visible player stage and may be reached by page scroll. */
  #portalView.free-tv-mode #iptvGuideCard{
    position:static!important;
  }
}

/* Short desktop/laptop windows: deliberately make the player smaller so the
   complete video + controls remain visible rather than being clipped. */
@media(min-width:821px) and (max-height:850px){
  #portalView.free-tv-mode .iptv-video-wrap{
    max-height:calc(100vh - var(--header) - 205px)!important;
  }
  #portalView.free-tv-mode .iptv-now-card{
    padding:5px 7px!important;
  }
  #portalView.free-tv-mode .iptv-channel-meta{
    display:none!important;
  }
}

@media(min-width:821px) and (max-height:700px){
  #portalView.free-tv-mode .iptv-main{
    top:calc(var(--header) + 4px)!important;
    max-height:calc(100vh - var(--header) - 8px)!important;
  }
  #portalView.free-tv-mode .iptv-video-wrap{
    max-height:calc(100vh - var(--header) - 175px)!important;
  }
  #portalView.free-tv-mode .iptv-now-card{
    padding:4px 6px!important;
  }
  #portalView.free-tv-mode .iptv-channel-health{
    display:none!important;
  }
}

/* Tablets / phones: video box always fits the screen width and stays near
   the top of the Free TV content. The rest of the page can scroll normally. */
@media(max-width:820px){
  #portalView.free-tv-mode .iptv-main{
    position:relative!important;
    top:auto!important;
    width:100%!important;
    max-height:none!important;
    overflow:visible!important;
  }

  #portalView.free-tv-mode .iptv-video-wrap{
    width:100%!important;
    height:auto!important;
    aspect-ratio:16/9!important;
    max-height:min(44vh,360px)!important;
    min-height:0!important;
  }

  #portalView.free-tv-mode #iptvVideo{
    width:100%!important;
    height:100%!important;
    object-fit:contain!important;
  }

  #portalView.free-tv-mode .iptv-player-actions-wrap{
    width:100%!important;
  }
}

/* Narrow phones: keep the player compact enough that the entire box and
   the controls immediately below it are visible without needing to scroll. */
@media(max-width:480px){
  #portalView.free-tv-mode .iptv-video-wrap{
    max-height:34vh!important;
  }

  #portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four{
    grid-template-columns:1fr 1fr!important;
  }

  #portalView.free-tv-mode .iptv-player-actions.iptv-player-actions-four .btn{
    min-height:40px!important;
  }

  #portalView.free-tv-mode .iptv-now-card{
    padding:6px!important;
  }
}

/* Landscape phones/tablets: keep the video small and fully visible on the
   right/top while still allowing the document to scroll. */
@media(max-width:820px) and (orientation:landscape){
  #portalView.free-tv-mode .iptv-video-wrap{
    max-height:48vh!important;
  }
}


/* ==========================================================
   v14.66 — COMPACT STATUS + TV-GUIDE STYLE LAYOUT
   Inspired by a traditional live-TV guide: channels beside TV,
   compact status, current-program info adjacent when space allows.
   ========================================================== */

/* Turn the oversized four-card summary into tiny header status chips. */
#portalView.free-tv-mode .iptv-head{
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:10px!important;
  padding:6px 10px!important;
}
#portalView.free-tv-mode .free-tv-summary-compact{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:5px!important;
  min-width:0!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  background:transparent!important;
}
#portalView.free-tv-mode .free-tv-summary-compact>div{
  display:flex!important;
  align-items:baseline!important;
  gap:4px!important;
  min-width:0!important;
  min-height:26px!important;
  padding:4px 7px!important;
  border:1px solid var(--line)!important;
  border-radius:8px!important;
  background:var(--panel2)!important;
}
#portalView.free-tv-mode .free-tv-summary-compact strong{
  font-size:10px!important;
  line-height:1!important;
  white-space:nowrap!important;
}
#portalView.free-tv-mode .free-tv-summary-compact span{
  margin:0!important;
  font-size:6px!important;
  white-space:nowrap!important;
  color:var(--muted)!important;
}
#portalView.free-tv-mode .iptv-head-actions{
  display:flex!important;
  flex-wrap:nowrap!important;
  gap:5px!important;
}
#portalView.free-tv-mode .iptv-head-actions .btn{
  min-height:32px!important;
  padding:0 9px!important;
  font-size:8px!important;
}

/* Disclaimer remains available but becomes a slim single information band. */
#portalView.free-tv-mode .iptv-third-party-notice{
  min-height:34px!important;
  max-height:42px!important;
  padding:5px 8px!important;
  overflow:hidden!important;
}
#portalView.free-tv-mode .iptv-notice-copy>span{
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
#portalView.free-tv-mode .iptv-notice-copy>small{
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

/* Main composition: channel directory immediately beside the TV. */
@media(min-width:821px){
  #portalView.free-tv-mode .iptv-player-view{
    display:grid!important;
    grid-template-columns:minmax(330px,370px) minmax(0,1fr)!important;
    align-items:start!important;
    gap:8px!important;
  }

  /* Keep channel browser and player visually aligned at the top. */
  #portalView.free-tv-mode .iptv-sidebar{
    margin:0!important;
    border-radius:10px!important;
  }

  /* TV area resembles a conventional live-TV screen:
     video left/top and current info to its right on roomy monitors. */
  #portalView.free-tv-mode .iptv-main-tv-layout{
    position:sticky!important;
    top:calc(var(--header) + 6px)!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(220px,300px)!important;
    grid-template-areas:
      "video now"
      "controls now"
      "guide guide"
      "note note"!important;
    align-items:start!important;
    column-gap:8px!important;
    row-gap:6px!important;
    width:100%!important;
    max-height:none!important;
    overflow:visible!important;
    padding:0!important;
  }

  #portalView.free-tv-mode .iptv-main-tv-layout .iptv-video-wrap{
    grid-area:video!important;
    width:100%!important;
    max-height:calc(100vh - var(--header) - 150px)!important;
    aspect-ratio:16/9!important;
    margin:0!important;
  }
  #portalView.free-tv-mode .iptv-main-tv-layout .iptv-player-actions-wrap{
    grid-area:controls!important;
    margin:0!important;
  }
  #portalView.free-tv-mode .iptv-main-tv-layout .iptv-now-card{
    grid-area:now!important;
    height:100%!important;
    min-height:0!important;
    padding:10px!important;
    border-radius:10px!important;
  }
  #portalView.free-tv-mode .iptv-main-tv-layout #iptvGuideCard{
    grid-area:guide!important;
  }
  #portalView.free-tv-mode .iptv-main-tv-layout .free-tv-note{
    grid-area:note!important;
  }

  /* Current-channel card becomes the right-side program panel. */
  #portalView.free-tv-mode .iptv-now-main{
    grid-template-columns:42px minmax(0,1fr) 38px!important;
    gap:7px!important;
    align-items:start!important;
  }
  #portalView.free-tv-mode .iptv-now-logo{
    width:42px!important;
    height:42px!important;
  }
  #portalView.free-tv-mode .iptv-now-card h3{
    font-size:13px!important;
    line-height:1.25!important;
  }
  #portalView.free-tv-mode .iptv-now-program{
    margin-top:4px!important;
    font-size:10px!important;
  }
  #portalView.free-tv-mode .iptv-channel-meta{
    display:flex!important;
    flex-wrap:wrap!important;
    margin-top:8px!important;
  }
  #portalView.free-tv-mode .iptv-channel-health{
    display:block!important;
    margin-top:7px!important;
    font-size:7px!important;
  }

  /* If EPG exists, Now/Next fits naturally in the side information panel. */
  #portalView.free-tv-mode #iptvEpgNowNext{
    grid-template-columns:1fr!important;
    gap:5px!important;
    margin-top:8px!important;
  }
  #portalView.free-tv-mode #iptvEpgNowNext>div{
    padding:7px!important;
  }

  /* Channel list is always tall enough to feel like the primary browser. */
  #portalView.free-tv-mode .iptv-channel-list{
    height:clamp(390px,58vh,700px)!important;
    min-height:390px!important;
    max-height:700px!important;
  }
  #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:clamp(430px,63vh,760px)!important;
    min-height:430px!important;
    max-height:760px!important;
  }
}

/* Smaller laptops: keep the channel list beside TV but move current info below
   so the video never becomes too narrow. */
@media(min-width:821px) and (max-width:1250px){
  #portalView.free-tv-mode .iptv-player-view{
    grid-template-columns:minmax(300px,340px) minmax(0,1fr)!important;
  }
  #portalView.free-tv-mode .iptv-main-tv-layout{
    grid-template-columns:1fr!important;
    grid-template-areas:
      "video"
      "controls"
      "now"
      "guide"
      "note"!important;
  }
  #portalView.free-tv-mode .iptv-main-tv-layout .iptv-now-card{
    height:auto!important;
  }
  #portalView.free-tv-mode #iptvEpgNowNext{
    grid-template-columns:1fr 1fr!important;
  }
}

/* Tablets / phones: compact stats wrap under title; browser then player. */
@media(max-width:820px){
  #portalView.free-tv-mode .iptv-head{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    grid-template-areas:
      "title actions"
      "stats stats"!important;
    gap:6px!important;
  }
  #portalView.free-tv-mode .iptv-head-left{grid-area:title!important}
  #portalView.free-tv-mode .iptv-head-actions{grid-area:actions!important}
  #portalView.free-tv-mode .free-tv-summary-compact{
    grid-area:stats!important;
    justify-content:flex-start!important;
    overflow-x:auto!important;
    padding-bottom:2px!important;
  }
  #portalView.free-tv-mode .free-tv-summary-compact>div{
    flex:0 0 auto!important;
  }

  #portalView.free-tv-mode .iptv-main-tv-layout{
    display:flex!important;
    flex-direction:column!important;
    position:relative!important;
    top:auto!important;
  }
  #portalView.free-tv-mode .iptv-main-tv-layout .iptv-video-wrap{order:1}
  #portalView.free-tv-mode .iptv-main-tv-layout .iptv-player-actions-wrap{order:2}
  #portalView.free-tv-mode .iptv-main-tv-layout .iptv-now-card{order:3}
  #portalView.free-tv-mode .iptv-main-tv-layout #iptvGuideCard{order:4}
  #portalView.free-tv-mode .iptv-main-tv-layout .free-tv-note{order:5}
}

/* Very narrow phones: tiny status strip, never giant summary cards. */
@media(max-width:480px){
  #portalView.free-tv-mode .iptv-head{
    grid-template-columns:1fr!important;
    grid-template-areas:
      "title"
      "stats"
      "actions"!important;
  }
  #portalView.free-tv-mode .iptv-head-actions{
    width:100%!important;
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
  #portalView.free-tv-mode .free-tv-summary-compact{
    width:100%!important;
  }
  #portalView.free-tv-mode .free-tv-summary-compact>div{
    padding:4px 6px!important;
  }
}


/* ==========================================================
   v14.67 — TRUE DEDICATED FREE TV PAGE
   No global site header/broadcast while the player is open.
   The player's own Dashboard button is the only return control.
   ========================================================== */
body.free-tv-dedicated>header{
  display:none!important;
}

body.free-tv-dedicated #portalView{
  padding-top:0!important;
  min-height:100vh!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .app-layout{
  min-height:100vh!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .main-panel{
  padding:6px!important;
  min-height:100vh!important;
}

/* With the global header gone, use the entire viewport for Free TV. */
@media(min-width:821px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-main-tv-layout{
    top:6px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-video-wrap{
    max-height:calc(100vh - 112px)!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    height:clamp(430px,68vh,780px)!important;
    min-height:430px!important;
    max-height:780px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:clamp(470px,72vh,840px)!important;
    min-height:470px!important;
    max-height:840px!important;
  }
}

/* The player page's own header becomes the only top bar. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-head{
  position:sticky!important;
  top:0!important;
  z-index:20!important;
  border-radius:10px 10px 0 0!important;
  background:color-mix(in srgb,var(--panel2) 96%,transparent)!important;
  backdrop-filter:blur(10px);
}

/* Dashboard is visually dominant; utility actions stay secondary. */
body.free-tv-dedicated #freeTvBackBtn{
  min-height:36px!important;
  padding:0 11px!important;
  font-weight:950!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-head-actions .btn{
  min-height:32px!important;
}

/* Phone/tablet dedicated player gets natural document flow without the
   removed site's header leaving a phantom top gap. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView{
    padding-top:0!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .main-panel{
    padding:4px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-head{
    top:0!important;
  }
}


/* ==========================================================
   v14.68 — CLEAN TV-GUIDE LEFT RAIL
   Same functionality, much less visual clutter.
   ========================================================== */

/* Left rail base */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar{
  border:1px solid var(--line)!important;
  border-radius:12px!important;
  background:var(--panel2)!important;
  overflow:hidden!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar-top{
  padding:7px!important;
  background:var(--panel2)!important;
  border-bottom:1px solid var(--line)!important;
}

/* Simple heading */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-provider-line{
  min-height:28px!important;
  margin:0 0 6px!important;
  padding:0 2px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-provider-line strong{
  font-size:10px!important;
  font-weight:950!important;
  letter-spacing:.02em!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-status-pill{
  padding:3px 7px!important;
  font-size:7px!important;
}

/* Working = one slim primary mode button */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero{
  display:grid!important;
  grid-template-columns:30px minmax(0,1fr) 42px!important;
  align-items:center!important;
  gap:7px!important;
  min-height:45px!important;
  margin:0!important;
  padding:6px 7px!important;
  border:1px solid color-mix(in srgb,var(--accent) 38%,var(--line))!important;
  border-radius:9px!important;
  background:color-mix(in srgb,var(--accent) 5%,var(--panel))!important;
  box-shadow:none!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero:hover{
  background:color-mix(in srgb,var(--accent) 9%,var(--panel))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero.active{
  border-color:var(--accent)!important;
  background:color-mix(in srgb,var(--accent) 11%,var(--panel))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-icon{
  width:28px!important;
  height:28px!important;
  border-radius:7px!important;
  font-size:17px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-copy strong{
  font-size:10px!important;
  font-weight:950!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-kicker,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-copy small{
  display:none!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-count-wrap{
  min-height:31px!important;
  padding:3px!important;
  border-radius:7px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-count{
  font-size:14px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-count-wrap small{
  font-size:5px!important;
}

/* Verify action becomes a compact secondary button */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-verify-bar{
  margin:5px 0 0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-btn{
  min-height:30px!important;
  padding:0 8px!important;
  border-radius:8px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-btn>span{
  font-size:7px!important;
  font-weight:950!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-btn>small{
  display:none!important;
}

/* Search */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-search-wrap{
  margin-top:6px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-search-wrap input{
  height:34px!important;
  min-height:34px!important;
  border-radius:8px!important;
  padding-left:10px!important;
  font-size:10px!important;
}

/* Segmented view tabs */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter-tabs{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:3px!important;
  margin-top:5px!important;
  padding:3px!important;
  border:1px solid var(--line)!important;
  border-radius:9px!important;
  background:var(--panel)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter{
  min-height:29px!important;
  padding:0 3px!important;
  border:0!important;
  border-radius:6px!important;
  background:transparent!important;
  color:var(--muted)!important;
  font-size:6px!important;
  font-weight:900!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter:hover{
  color:var(--text)!important;
  background:var(--panel2)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter.active{
  color:var(--text)!important;
  background:color-mix(in srgb,var(--blue) 12%,var(--panel2))!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--blue) 30%,var(--line))!important;
}

/* Country / Category row */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls{
  display:grid!important;
  grid-template-columns:1fr 1.25fr!important;
  gap:5px!important;
  padding:6px 7px!important;
  border-bottom:1px solid var(--line)!important;
  background:var(--panel2)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls label{
  gap:2px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls label>span{
  font-size:6px!important;
  font-weight:900!important;
  letter-spacing:.04em!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls select{
  height:32px!important;
  border-radius:7px!important;
  font-size:8px!important;
  padding:0 6px!important;
}

/* Working-only management row */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-tools{
  margin:5px 0 0!important;
  padding:5px 6px!important;
  min-height:32px!important;
  border-radius:8px!important;
  gap:5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-tools-copy{
  min-width:0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-total-line{
  gap:5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-total-line strong{
  font-size:7px!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-count-large{
  font-size:8px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-clear-working-tab-btn{
  min-height:26px!important;
  padding:0 7px!important;
  border-radius:7px!important;
  font-size:6px!important;
}

/* One clean utility toolbar above the list */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tools{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:5px!important;
  min-height:36px!important;
  padding:4px 6px!important;
  border-bottom:1px solid var(--line)!important;
  background:color-mix(in srgb,var(--panel2) 90%,var(--panel))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvResultCount{
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  font-size:7px!important;
  color:var(--muted)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tool-buttons{
  display:grid!important;
  grid-template-columns:repeat(4,auto)!important;
  gap:3px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tool-buttons button{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:3px!important;
  min-width:0!important;
  min-height:27px!important;
  padding:0 6px!important;
  border:1px solid var(--line)!important;
  border-radius:7px!important;
  background:var(--panel)!important;
  color:var(--muted)!important;
  font-size:6px!important;
  font-weight:900!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tool-buttons button:hover{
  color:var(--text)!important;
  border-color:color-mix(in srgb,var(--blue) 35%,var(--line))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvAutoTuneBtn{
  color:var(--accent)!important;
}

/* Working heading immediately before actual channels */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-list-heading{
  padding:5px 7px!important;
  background:color-mix(in srgb,var(--accent) 5%,var(--panel2))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-list-heading strong{
  font-size:8px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-list-heading span{
  font-size:6px!important;
}

/* Channel rows: simpler guide appearance */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
  padding:2px!important;
  background:var(--panel)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel{
  min-height:46px!important;
  padding:5px 6px!important;
  border:0!important;
  border-bottom:1px solid color-mix(in srgb,var(--line) 78%,transparent)!important;
  border-radius:0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel:hover{
  background:color-mix(in srgb,var(--blue) 7%,var(--panel2))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel.active{
  background:color-mix(in srgb,var(--accent) 8%,var(--panel2))!important;
  border-bottom-color:color-mix(in srgb,var(--accent) 28%,var(--line))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-logo{
  width:29px!important;
  height:29px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-name{
  font-size:9px!important;
  font-weight:900!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-program{
  font-size:7px!important;
}

/* Working mode removes unrelated controls and leaves more list space. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-browser-controls{
  display:grid!important;
}

/* Mobile/touch: preserve clean hierarchy but enlarge tap targets. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter{
    min-height:40px!important;
    min-width:70px!important;
    font-size:9px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-search-wrap input{
    height:44px!important;
    min-height:44px!important;
    font-size:16px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls select{
    height:44px!important;
    font-size:16px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tools{
    grid-template-columns:1fr!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tool-buttons{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tool-buttons button{
    min-height:40px!important;
    font-size:8px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel{
    min-height:56px!important;
  }
}

/* Very narrow phones: tools become icons + short labels without crowding. */
@media(max-width:430px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tool-buttons button{
    padding:0 4px!important;
    font-size:7px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero{
    grid-template-columns:28px minmax(0,1fr) 40px!important;
  }
}


/* ==========================================================
   v14.69 — LOGO-ONLY TOP BAR + LIVE TV TITLE ROW
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-dedicated-logo-bar{
  position:sticky!important;
  top:0!important;
  z-index:31!important;
  display:flex!important;
  align-items:center!important;
  min-height:48px!important;
  padding:7px 10px!important;
  border:1px solid var(--line)!important;
  border-bottom:0!important;
  border-radius:10px 10px 0 0!important;
  background:color-mix(in srgb,var(--panel2) 97%,transparent)!important;
  backdrop-filter:blur(10px)!important;
}
body.free-tv-dedicated .iptv-dedicated-brand{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
}
body.free-tv-dedicated .iptv-dedicated-brand strong{
  color:var(--text)!important;
  font-size:12px!important;
  font-weight:1000!important;
  letter-spacing:.03em!important;
}
body.free-tv-dedicated .iptv-dedicated-tv-icon{
  width:31px!important;
  height:26px!important;
  display:grid!important;
  place-items:center!important;
  border:2px solid color-mix(in srgb,var(--text) 45%,var(--line))!important;
  border-radius:6px!important;
  background:var(--panel)!important;
  color:var(--blue)!important;
  font-size:11px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-dedicated-title-bar{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  min-height:42px!important;
  padding:5px 10px!important;
  border:1px solid var(--line)!important;
  background:var(--panel2)!important;
}
body.free-tv-dedicated .iptv-dedicated-title-bar>strong{
  color:var(--text)!important;
  font-size:13px!important;
  font-weight:1000!important;
  letter-spacing:.04em!important;
}
body.free-tv-dedicated #freeTvBackBtn.iptv-dedicated-back{
  min-height:32px!important;
  padding:0 10px!important;
  border-radius:8px!important;
  font-size:9px!important;
}

/* Readable notice, no tiny ticker-style text. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-third-party-notice-readable{
  display:grid!important;
  grid-template-columns:30px minmax(0,1fr)!important;
  align-items:start!important;
  gap:10px!important;
  min-height:0!important;
  max-height:none!important;
  padding:10px 12px!important;
  overflow:visible!important;
  border-left:1px solid var(--line)!important;
  border-right:1px solid var(--line)!important;
  border-bottom:1px solid color-mix(in srgb,var(--warning,#f2c94c) 30%,var(--line))!important;
  background:color-mix(in srgb,var(--warning,#f2c94c) 7%,var(--panel))!important;
}
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-icon{
  width:28px!important;
  height:28px!important;
  display:grid!important;
  place-items:center!important;
  border:1px solid color-mix(in srgb,var(--warning,#f2c94c) 55%,var(--line))!important;
  border-radius:999px!important;
  color:var(--warning,#f2c94c)!important;
  font-size:14px!important;
  font-weight:1000!important;
}
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy{
  min-width:0!important;
}
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>strong{
  display:block!important;
  margin-bottom:3px!important;
  color:var(--text)!important;
  font-size:12px!important;
  font-weight:1000!important;
}
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>span{
  display:block!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  color:var(--muted)!important;
  font-size:10px!important;
  line-height:1.45!important;
}
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>small{
  display:block!important;
  margin-top:5px!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  color:var(--text)!important;
  font-size:9px!important;
  line-height:1.4!important;
}

/* More room for the TV/list after simplifying the top. */
@media(min-width:821px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-main-tv-layout{
    top:6px!important;
  }
}
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-dedicated-logo-bar{
    min-height:46px!important;
    padding:7px 9px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-dedicated-title-bar{
    min-height:44px!important;
    padding:6px 9px!important;
  }
  body.free-tv-dedicated .iptv-third-party-notice-readable{
    grid-template-columns:26px minmax(0,1fr)!important;
    padding:9px!important;
  }
  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>strong{
    font-size:13px!important;
  }
  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>span{
    font-size:11px!important;
  }
  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>small{
    font-size:10px!important;
  }
}


/* ==========================================================
   v14.71 — FIXED CHANNEL LOAD + CLEAN DEDICATED IPTV HEADER
   ========================================================== */

/* Yola may wrap the HTML widget, so do not require header to be a direct
   child of BODY. Hide the normal website header anywhere on the IPTV page. */
body.free-tv-dedicated header{
  display:none!important;
}

/* One simple dedicated IPTV top bar:
   logo/name | LIVE TV PLAYER | Dashboard */
body.free-tv-dedicated .iptv-dedicated-topbar{
  position:sticky!important;
  top:0!important;
  z-index:40!important;
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:12px!important;
  min-height:52px!important;
  padding:7px 10px!important;
  border:1px solid var(--line)!important;
  border-radius:10px 10px 0 0!important;
  background:color-mix(in srgb,var(--panel2) 97%,transparent)!important;
  backdrop-filter:blur(10px)!important;
}
body.free-tv-dedicated .iptv-dedicated-brand{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  min-width:0!important;
}
body.free-tv-dedicated .iptv-dedicated-brand strong{
  white-space:nowrap!important;
  color:var(--text)!important;
  font-size:12px!important;
  font-weight:1000!important;
}
body.free-tv-dedicated .iptv-dedicated-tv-icon{
  width:32px!important;
  height:27px!important;
  display:grid!important;
  place-items:center!important;
  border:2px solid color-mix(in srgb,var(--text) 45%,var(--line))!important;
  border-radius:6px!important;
  background:var(--panel)!important;
  color:var(--blue)!important;
  font-size:11px!important;
}
body.free-tv-dedicated .iptv-dedicated-title{
  min-width:0!important;
  text-align:center!important;
  color:var(--text)!important;
  font-size:14px!important;
  font-weight:1000!important;
  letter-spacing:.08em!important;
}
body.free-tv-dedicated #freeTvBackBtn.iptv-dedicated-back{
  min-height:34px!important;
  padding:0 11px!important;
  font-size:9px!important;
  border-radius:8px!important;
}

/* Never display the old summary cards. Hidden runtime nodes remain solely
   so existing JavaScript can safely update counts. */
body.free-tv-dedicated .iptv-runtime-metrics{
  display:none!important;
}

/* Compact player utilities live in the left channel rail, not the top bar. */
body.free-tv-dedicated .iptv-compact-tools{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:4px!important;
  margin-bottom:6px!important;
}
body.free-tv-dedicated .iptv-compact-tools .btn{
  min-width:0!important;
  min-height:28px!important;
  padding:0 4px!important;
  border-radius:7px!important;
  font-size:6px!important;
}

/* Third-party notice must be clearly readable, not ticker-sized. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-third-party-notice-readable{
  display:grid!important;
  grid-template-columns:34px minmax(0,1fr)!important;
  align-items:start!important;
  gap:11px!important;
  min-height:0!important;
  max-height:none!important;
  padding:12px 14px!important;
  overflow:visible!important;
  background:color-mix(in srgb,var(--warning,#f2c94c) 8%,var(--panel))!important;
}
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-icon{
  width:32px!important;
  height:32px!important;
  font-size:16px!important;
}
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>strong{
  display:block!important;
  margin-bottom:4px!important;
  color:var(--text)!important;
  font-size:14px!important;
  line-height:1.2!important;
  font-weight:1000!important;
}
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>span{
  display:block!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  color:var(--muted)!important;
  font-size:12px!important;
  line-height:1.5!important;
}
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>small{
  display:block!important;
  margin-top:6px!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  color:var(--text)!important;
  font-size:11px!important;
  line-height:1.45!important;
}

/* The dedicated page starts at the very top with no phantom website-header gap. */
body.free-tv-dedicated #portalView{
  padding-top:0!important;
}

@media(max-width:820px){
  body.free-tv-dedicated .iptv-dedicated-topbar{
    grid-template-columns:auto minmax(0,1fr) auto!important;
    min-height:50px!important;
    gap:7px!important;
    padding:6px 8px!important;
  }
  body.free-tv-dedicated .iptv-dedicated-brand strong{
    font-size:10px!important;
  }
  body.free-tv-dedicated .iptv-dedicated-title{
    font-size:11px!important;
    letter-spacing:.04em!important;
  }
  body.free-tv-dedicated #freeTvBackBtn.iptv-dedicated-back{
    min-height:38px!important;
    padding:0 8px!important;
    font-size:9px!important;
  }
  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>strong{
    font-size:15px!important;
  }
  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>span{
    font-size:13px!important;
  }
  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>small{
    font-size:12px!important;
  }
  body.free-tv-dedicated .iptv-compact-tools .btn{
    min-height:38px!important;
    font-size:8px!important;
  }
}

@media(max-width:430px){
  body.free-tv-dedicated .iptv-dedicated-brand strong{
    display:none!important;
  }
  body.free-tv-dedicated .iptv-dedicated-title{
    font-size:10px!important;
  }
  body.free-tv-dedicated #freeTvBackBtn.iptv-dedicated-back{
    font-size:0!important;
    width:42px!important;
    padding:0!important;
  }
  body.free-tv-dedicated #freeTvBackBtn.iptv-dedicated-back::after{
    content:"←"!important;
    font-size:18px!important;
  }
}


/* ==========================================================
   v14.74 — EXACT SITE HEADER LOGO + ANIMATION ON IPTV
   Uses the same .shell .nav .brand .cut-brand .tv-logo-home
   .cut-intro and .runner-tv structure as the normal site.
   ========================================================== */

/* The dedicated IPTV header behaves like the normal website header,
   but contains only brand, LIVE TV PLAYER, and Dashboard. */
body.free-tv-dedicated .iptv-site-header{
  position:relative!important;
  z-index:20!important;
  width:100%!important;
  height:var(--header)!important;
  padding:8px 0!important;
  border-bottom:1px solid var(--line)!important;
  background:rgba(5,8,12,.94)!important;
  backdrop-filter:blur(14px)!important;
  overflow:hidden!important;
}

/* Reuse the site's normal .shell + .nav geometry. */
body.free-tv-dedicated .iptv-site-nav{
  height:100%!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;
  align-items:center!important;
  gap:16px!important;
}

body.free-tv-dedicated .iptv-site-nav .brand{
  justify-self:start!important;
  grid-column:1!important;
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  font-weight:950!important;
  letter-spacing:.4px!important;
  min-width:0!important;
}

/* IMPORTANT: do not resize IPTV TV logo. Let the site's original
   .tv-logo-home rules control it exactly. */
body.free-tv-dedicated #iptvTvLogoHome.tv-logo-home{
  width:43px!important;
  height:43px!important;
  flex:0 0 43px!important;
  transform:none!important;
  transform-origin:center!important;
}

body.free-tv-dedicated .iptv-site-nav .brand>span{
  color:var(--text)!important;
  font-size:inherit!important;
  font-weight:950!important;
  letter-spacing:.4px!important;
  white-space:nowrap!important;
}

body.free-tv-dedicated .iptv-site-title{
  grid-column:2!important;
  justify-self:center!important;
  color:var(--text)!important;
  font-size:14px!important;
  font-weight:950!important;
  letter-spacing:.08em!important;
  white-space:nowrap!important;
}

body.free-tv-dedicated .iptv-site-actions{
  grid-column:3!important;
  justify-self:end!important;
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
}

body.free-tv-dedicated #freeTvBackBtn{
  min-height:44px!important;
  border-radius:12px!important;
  padding:0 16px!important;
  font-size:inherit!important;
  font-weight:850!important;
}

/* Exact same animation overlay geometry as normal header:
   spans the WHOLE header, not the small brand box. */
body.free-tv-dedicated #iptvCutIntro.cut-intro{
  position:absolute!important;
  inset:0!important;
  z-index:30!important;
  pointer-events:none!important;
  overflow:hidden!important;
}

body.free-tv-dedicated #iptvRunnerTv.runner-tv{
  position:absolute!important;
  width:43px!important;
  height:43px!important;
  top:9px!important;
  left:-90px!important;
  z-index:34!important;
  opacity:0;
}

/* Ensure existing exact animation rules target this copy too. */
body.free-tv-dedicated #iptvCutIntro.play .runner-tv{
  animation:tvTravel 4.2s cubic-bezier(.2,.75,.25,1) forwards!important;
}
body.free-tv-dedicated #iptvCutIntro.play .runner-tv .tv-shell::before{
  animation:tvCordAttached 4.2s linear forwards!important;
}
body.free-tv-dedicated #iptvCutIntro.play .tv-cord-loose{
  animation:tvCordLooseFall 4.2s linear forwards!important;
}
body.free-tv-dedicated #iptvCutIntro.play .tv-cord-spark{
  animation:tvCordSpark 4.2s linear forwards!important;
}
body.free-tv-dedicated #iptvCutIntro.play .tv-cut-scissors{
  animation:tvSafeScissorsFly 4.2s cubic-bezier(.2,.72,.25,1) forwards!important;
}

/* The player begins directly below the dedicated header. */
body.free-tv-dedicated #portalView{
  padding-top:0!important;
}

/* Tablet/phone matches the site's own responsive logo sizing. */
@media(max-width:640px){
  body.free-tv-dedicated .iptv-site-header{
    height:var(--header)!important;
    padding:5px 0!important;
  }

  body.free-tv-dedicated .iptv-site-nav{
    grid-template-columns:minmax(0,1fr) auto!important;
    grid-template-rows:42px 34px!important;
    gap:5px 8px!important;
  }

  body.free-tv-dedicated .iptv-site-nav .brand{
    grid-column:1!important;
    grid-row:1!important;
    gap:8px!important;
    font-size:14px!important;
    white-space:nowrap!important;
  }

  body.free-tv-dedicated #iptvTvLogoHome.tv-logo-home{
    width:38px!important;
    height:38px!important;
    flex-basis:38px!important;
    transform:scale(.9)!important;
    transform-origin:left center!important;
  }

  body.free-tv-dedicated .iptv-site-actions{
    grid-column:2!important;
    grid-row:1!important;
  }

  body.free-tv-dedicated #freeTvBackBtn{
    min-height:38px!important;
    padding:0 9px!important;
    border-radius:10px!important;
    font-size:12px!important;
  }

  body.free-tv-dedicated .iptv-site-title{
    grid-column:1/-1!important;
    grid-row:2!important;
    justify-self:center!important;
    font-size:12px!important;
  }
}

@media(max-width:430px){
  body.free-tv-dedicated .iptv-site-nav .brand>span{
    display:inline!important;
    max-width:112px!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
    font-size:12px!important;
  }
}


/* ==========================================================
   v14.75 — STILL IPTV LOGO
   Dedicated IPTV page uses a fixed logo only.
   ========================================================== */
body.free-tv-dedicated #iptvTvLogoHome.tv-logo-home{
  opacity:1!important;
  width:43px!important;
  height:43px!important;
  flex:0 0 43px!important;
  transform:none!important;
}

body.free-tv-dedicated #iptvCutIntro,
body.free-tv-dedicated #iptvRunnerTv{
  display:none!important;
}

body.free-tv-dedicated .iptv-site-header{
  overflow:hidden!important;
}

@media(max-width:640px){
  body.free-tv-dedicated #iptvTvLogoHome.tv-logo-home{
    width:38px!important;
    height:38px!important;
    flex-basis:38px!important;
    transform:scale(.9)!important;
    transform-origin:left center!important;
  }
}


/* ==========================================================
   v14.76 — FREE TV ALWAYS STARTS AT TOP
   ========================================================== */
body.free-tv-dedicated,
body.free-tv-dedicated #portalView,
body.free-tv-dedicated #freeTvPanel,
body.free-tv-dedicated #iptvHub{
  scroll-margin-top:0!important;
  overflow-anchor:none!important;
}


/* ==========================================================
   v14.77 — THEME BUTTON ON DEDICATED IPTV HEADER
   ========================================================== */
body.free-tv-dedicated .iptv-site-actions{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:8px!important;
}

body.free-tv-dedicated #iptvThemeLauncher{
  min-height:44px!important;
  border-radius:12px!important;
  padding:0 14px!important;
  white-space:nowrap!important;
}

@media(max-width:640px){
  body.free-tv-dedicated .iptv-site-actions{
    gap:5px!important;
  }

  body.free-tv-dedicated #iptvThemeLauncher{
    min-height:38px!important;
    padding:0 9px!important;
    font-size:12px!important;
  }
}

@media(max-width:430px){
  body.free-tv-dedicated #iptvThemeLauncher .theme-label{
    display:none!important;
  }

  body.free-tv-dedicated #iptvThemeLauncher{
    width:40px!important;
    padding:0!important;
  }
}


/* ==========================================================
   v14.78 — COMPACT / LARGER-TEXT THIRD-PARTY NOTICE
   Less vertical space while making the important copy easier
   to read.
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-third-party-notice-readable{
  grid-template-columns:30px minmax(0,1fr)!important;
  gap:9px!important;
  padding:7px 12px!important;
  min-height:0!important;
  max-height:none!important;
  align-items:center!important;
}

body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-icon{
  width:28px!important;
  height:28px!important;
  font-size:15px!important;
  align-self:start!important;
  margin-top:1px!important;
}

body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy{
  min-width:0!important;
}

body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>strong{
  margin:0 0 2px!important;
  font-size:15px!important;
  line-height:1.12!important;
}

body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>span{
  margin:0!important;
  font-size:13px!important;
  line-height:1.28!important;
}

body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>small{
  margin:3px 0 0!important;
  font-size:12px!important;
  line-height:1.25!important;
}

/* On phones, keep the text readable instead of shrinking it. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-third-party-notice-readable{
    grid-template-columns:28px minmax(0,1fr)!important;
    padding:7px 9px!important;
    gap:8px!important;
  }

  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>strong{
    font-size:15px!important;
  }

  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>span{
    font-size:13px!important;
    line-height:1.3!important;
  }

  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>small{
    font-size:12px!important;
    line-height:1.28!important;
  }
}


/* ==========================================================
   v14.80 — CENTERED / LARGER NOTICE TEXT, SAME BOX HEIGHT
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-third-party-notice-readable{
  position:relative!important;
  grid-template-columns:30px minmax(0,1fr)!important;
  padding:5px 12px!important;
  gap:8px!important;
  min-height:0!important;
  align-items:center!important;
}

/* Keep the warning icon at the left while centering the copy. */
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-icon{
  width:28px!important;
  height:28px!important;
  margin:0!important;
  align-self:center!important;
}

body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy{
  width:100%!important;
  min-width:0!important;
  text-align:center!important;
  padding-right:30px!important;
}

/* Larger text, but tighter line-height/margins prevent the notice from growing. */
body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>strong{
  display:block!important;
  margin:0 0 1px!important;
  font-size:17px!important;
  line-height:1.05!important;
  text-align:center!important;
}

body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>span{
  display:block!important;
  margin:0!important;
  font-size:14px!important;
  line-height:1.12!important;
  text-align:center!important;
}

body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>small{
  display:block!important;
  margin:2px 0 0!important;
  font-size:13px!important;
  line-height:1.08!important;
  text-align:center!important;
}

@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-third-party-notice-readable{
    padding:5px 8px!important;
    gap:6px!important;
  }

  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy{
    padding-right:28px!important;
  }

  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>strong{
    font-size:16px!important;
  }

  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>span{
    font-size:13px!important;
    line-height:1.12!important;
  }

  body.free-tv-dedicated .iptv-third-party-notice-readable .iptv-notice-copy>small{
    font-size:12px!important;
    line-height:1.08!important;
  }
}


/* ==========================================================
   v14.81 — CLEARER ACTION BUTTONS + MORE CHANNEL LIST SPACE
   ========================================================== */

/* Tighten the overall left rail without sacrificing readability. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar-top{
  padding:6px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-provider-line{
  min-height:24px!important;
  margin-bottom:4px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-provider-line strong{
  font-size:9px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-status-pill{
  min-width:46px!important;
  padding:3px 6px!important;
  font-size:6px!important;
}

/* Utility row: compact, equal buttons. */
body.free-tv-dedicated .iptv-compact-tools{
  margin-bottom:5px!important;
  gap:3px!important;
}
body.free-tv-dedicated .iptv-compact-tools .btn{
  min-height:28px!important;
  font-size:6px!important;
  padding:0 4px!important;
}

/* WORKING becomes a true primary action button. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero{
  display:grid!important;
  grid-template-columns:34px minmax(0,1fr) 48px!important;
  align-items:center!important;
  gap:8px!important;
  min-height:52px!important;
  margin:0!important;
  padding:7px 8px!important;
  border:2px solid color-mix(in srgb,var(--accent) 75%,var(--line))!important;
  border-radius:10px!important;
  background:linear-gradient(
    180deg,
    color-mix(in srgb,var(--accent) 14%,var(--panel2)),
    color-mix(in srgb,var(--accent) 7%,var(--panel))
  )!important;
  box-shadow:0 2px 0 color-mix(in srgb,var(--accent) 22%,transparent)!important;
  cursor:pointer!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero:hover{
  border-color:var(--accent)!important;
  background:color-mix(in srgb,var(--accent) 16%,var(--panel2))!important;
  transform:translateY(-1px)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero:active{
  transform:translateY(0)!important;
  box-shadow:none!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-icon{
  width:32px!important;
  height:32px!important;
  border-radius:8px!important;
  font-size:19px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-copy strong{
  font-size:11px!important;
  font-weight:1000!important;
  line-height:1.1!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-count-wrap{
  min-height:36px!important;
  padding:4px!important;
  border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line))!important;
  background:color-mix(in srgb,var(--accent) 5%,var(--panel))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-count{
  font-size:15px!important;
}

/* VERIFY becomes a distinct secondary action button. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-verify-bar{
  margin:5px 0 0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-btn{
  width:100%!important;
  min-height:34px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0 10px!important;
  border:1px solid color-mix(in srgb,var(--accent) 58%,var(--line))!important;
  border-radius:9px!important;
  background:color-mix(in srgb,var(--accent) 8%,var(--panel))!important;
  color:var(--accent)!important;
  font-weight:1000!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 8%,transparent)!important;
  cursor:pointer!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-btn>span{
  font-size:8px!important;
  line-height:1!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-btn:hover:not(:disabled){
  background:color-mix(in srgb,var(--accent) 13%,var(--panel))!important;
  border-color:var(--accent)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-btn:disabled{
  opacity:.5!important;
  cursor:not-allowed!important;
}

/* Search stays clear but shorter. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-search-wrap{
  margin-top:5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-search-wrap input{
  height:32px!important;
  min-height:32px!important;
  font-size:9px!important;
  padding-left:9px!important;
}

/* Compact segmented filter row. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter-tabs{
  margin-top:4px!important;
  padding:2px!important;
  gap:2px!important;
  border-radius:8px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter{
  min-height:27px!important;
  font-size:6px!important;
  padding:0 2px!important;
}

/* Compact country/category controls; hide Sort completely to recover vertical space. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls{
  grid-template-columns:1fr 1fr!important;
  gap:4px!important;
  padding:5px 6px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls label>span{
  font-size:5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls select{
  height:30px!important;
  font-size:8px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sort-control{
  display:none!important;
}

/* Hide World TV status from normal sidebar; it's still available in Diagnostics.
   This directly gives more vertical room to the channel list. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-status{
  display:none!important;
}

/* Tight utility strip. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tools{
  min-height:32px!important;
  padding:3px 5px!important;
  gap:4px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvResultCount{
  font-size:6px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tool-buttons{
  gap:2px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tool-buttons button{
  min-height:25px!important;
  padding:0 5px!important;
  font-size:6px!important;
}

/* Compact Working-only management row. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-tools{
  min-height:30px!important;
  margin-top:4px!important;
  padding:4px 5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-clear-working-tab-btn{
  min-height:24px!important;
  font-size:6px!important;
}

/* Make the actual channel list clearly larger. */
@media(min-width:821px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    height:clamp(500px,72vh,860px)!important;
    min-height:500px!important;
    max-height:860px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:clamp(540px,76vh,900px)!important;
    min-height:540px!important;
    max-height:900px!important;
  }
}

/* Keep channel rows readable but tighter. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel{
  min-height:43px!important;
  padding:4px 5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-logo{
  width:27px!important;
  height:27px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-name{
  font-size:8px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-program{
  font-size:6px!important;
}

/* Mobile: preserve button feel and reclaim space without tiny tap targets. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero{
    min-height:58px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-copy strong{
    font-size:12px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-btn{
    min-height:42px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-btn>span{
    font-size:10px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-search-wrap input{
    height:42px!important;
    min-height:42px!important;
    font-size:16px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter{
    min-height:38px!important;
    font-size:9px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls select{
    height:42px!important;
    font-size:16px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    height:62vh!important;
    min-height:420px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:68vh!important;
    min-height:460px!important;
  }
}


/* ==========================================================
   v14.82 — WORKING BUTTONS MATCH PLAYER CONTROLS
   ========================================================== */

/* Two compact rectangular action buttons, matching Previous/Last/Reload/Next. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-row{
  display:grid!important;
  grid-template-columns:minmax(0,1.25fr) minmax(0,.9fr)!important;
  gap:5px!important;
  margin:0 0 5px!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-btn,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-action-btn{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  width:100%!important;
  min-width:0!important;
  min-height:36px!important;
  padding:0 9px!important;
  margin:0!important;
  border-radius:9px!important;
  border:1px solid var(--line)!important;
  background:#161e28!important;
  color:var(--text)!important;
  box-shadow:none!important;
  transform:none!important;
  font-size:8px!important;
  font-weight:900!important;
  white-space:nowrap!important;
  cursor:pointer!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-btn:hover,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-action-btn:hover:not(:disabled){
  border-color:color-mix(in srgb,var(--blue) 50%,var(--line))!important;
  background:color-mix(in srgb,var(--blue) 7%,#161e28)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-btn.active{
  border-color:var(--blue)!important;
  background:color-mix(in srgb,var(--blue) 12%,#161e28)!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--blue) 18%,transparent)!important;
}

/* Live Working count stays directly on the Working button. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-count{
  display:inline-grid!important;
  place-items:center!important;
  min-width:28px!important;
  height:22px!important;
  padding:0 6px!important;
  border-radius:6px!important;
  border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line))!important;
  background:color-mix(in srgb,var(--accent) 10%,var(--panel))!important;
  color:var(--accent)!important;
  font-size:10px!important;
  font-weight:1000!important;
  line-height:1!important;
}

/* Verification progress remains below only while a scan is running. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-verify-bar{
  margin:0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-verify-progress{
  margin:0 0 5px!important;
}

/* Hide old hero-specific decoration if any legacy rules still match. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-icon,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-copy,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-hero-count-wrap{
  display:none!important;
}

/* Reclaim a little more vertical space for channels. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-search-wrap{
  margin-top:0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar-top{
  padding-bottom:5px!important;
}

/* Mobile keeps the same button look with larger tap targets. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-row{
    grid-template-columns:1fr 1fr!important;
    gap:6px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-btn,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-action-btn{
    min-height:42px!important;
    font-size:10px!important;
    padding:0 8px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-count{
    min-width:30px!important;
    height:24px!important;
    font-size:11px!important;
  }
}

@media(max-width:430px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-row{
    grid-template-columns:1fr!important;
  }
}


/* ==========================================================
   v14.83 — FIX WORKING BUTTON LAYOUT
   Full-width stacked controls matching player navigation buttons.
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-stack{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:5px!important;
  margin:0 0 5px!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-btn{
  width:100%!important;
  min-width:0!important;
  min-height:34px!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:8px!important;
  padding:0 10px!important;
  margin:0!important;
  border:1px solid var(--line)!important;
  border-radius:9px!important;
  background:#161e28!important;
  color:var(--text)!important;
  box-shadow:none!important;
  transform:none!important;
  cursor:pointer!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-btn:hover:not(:disabled){
  border-color:color-mix(in srgb,var(--blue) 50%,var(--line))!important;
  background:color-mix(in srgb,var(--blue) 7%,#161e28)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-btn.active{
  border-color:var(--blue)!important;
  background:color-mix(in srgb,var(--blue) 10%,#161e28)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-label{
  display:block!important;
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  text-align:center!important;
  font-size:8px!important;
  font-weight:900!important;
  line-height:1!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-count{
  display:grid!important;
  place-items:center!important;
  min-width:30px!important;
  height:22px!important;
  padding:0 6px!important;
  border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line))!important;
  border-radius:6px!important;
  background:color-mix(in srgb,var(--accent) 10%,var(--panel))!important;
  color:var(--accent)!important;
  font-size:10px!important;
  font-weight:1000!important;
  line-height:1!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-control-btn{
  grid-template-columns:1fr!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-verify-help{
  display:none!important;
}

/* Kill any legacy working-action rules from v14.82 that could interfere. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-row,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-btn,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-action-btn{
  all:unset;
}

/* Keep the verification progress separate and clean below the buttons. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-verify-bar{
  margin:0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-verify-progress{
  margin:0 0 5px!important;
}

/* Mobile keeps the same exact stacked style with larger tap targets. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-btn{
    min-height:42px!important;
    padding:0 10px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-label{
    font-size:10px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-count{
    min-width:32px!important;
    height:24px!important;
    font-size:11px!important;
  }
}


/* ==========================================================
   v14.84 — COLORED PLAYER-STYLE SIDEBAR BUTTONS
   Keeps the compact v14.83 layout, adds clear functional color.
   ========================================================== */

/* Top utility buttons */
body.free-tv-dedicated #portalView.free-tv-mode #iptvReloadBtn{
  border-color:#168bd2!important;
  background:linear-gradient(180deg,#10334b,#0b2233)!important;
  color:#67cfff!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvClearFailedBtn{
  border-color:#b83b46!important;
  background:linear-gradient(180deg,#3b171c,#271015)!important;
  color:#ff8991!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvDiagnosticsBtn{
  border-color:#7950c8!important;
  background:linear-gradient(180deg,#281b43,#1b142d)!important;
  color:#c6a4ff!important;
}

/* Working Channels — blue, like a primary player control. */
body.free-tv-dedicated #portalView.free-tv-mode #iptvWorkingHeroBtn.iptv-working-control-btn{
  border-color:#168cff!important;
  background:linear-gradient(180deg,#0876ef,#0754b9)!important;
  color:#fff!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 1px 3px rgba(0,0,0,.28)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvWorkingHeroBtn.iptv-working-control-btn:hover{
  border-color:#56b4ff!important;
  background:linear-gradient(180deg,#168cff,#0862ce)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvWorkingHeroBtn.iptv-working-control-btn.active{
  border-color:#74c4ff!important;
  background:linear-gradient(180deg,#168cff,#0756bb)!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16),0 0 0 1px rgba(22,140,255,.16)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvWorkingHeroBtn .iptv-working-control-count{
  border-color:rgba(255,255,255,.34)!important;
  background:rgba(0,0,0,.18)!important;
  color:#fff!important;
}

/* Verify Working — green, clearly a verification action. */
body.free-tv-dedicated #portalView.free-tv-mode #iptvVerifyWorkingBtn.iptv-working-control-btn{
  border-color:#13a85f!important;
  background:linear-gradient(180deg,#07994f,#056b39)!important;
  color:#fff!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 1px 3px rgba(0,0,0,.25)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvVerifyWorkingBtn.iptv-working-control-btn:hover:not(:disabled){
  border-color:#43dc8c!important;
  background:linear-gradient(180deg,#0db661,#087d43)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvVerifyWorkingBtn.iptv-working-control-btn:disabled{
  opacity:.55!important;
  filter:saturate(.55)!important;
}

/* Selected All filter gets the same blue family. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter.active{
  border-color:#168cff!important;
  background:linear-gradient(180deg,#0876ef,#0754b9)!important;
  color:#fff!important;
}

/* Compact tool buttons above channel list */
body.free-tv-dedicated #portalView.free-tv-mode #iptvAutoTuneBtn{
  border-color:#c69b19!important;
  color:#ffd84d!important;
  background:color-mix(in srgb,#c69b19 9%,var(--panel))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvScanHelpBtn{
  border-color:#16a7ae!important;
  color:#4ee7ec!important;
  background:color-mix(in srgb,#16a7ae 9%,var(--panel))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvTopBtn{
  border-color:#8658c9!important;
  color:#c7a3ff!important;
  background:color-mix(in srgb,#8658c9 9%,var(--panel))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvCurrentBtn{
  border-color:#c66d25!important;
  color:#ffae68!important;
  background:color-mix(in srgb,#c66d25 9%,var(--panel))!important;
}

/* Preserve readable text in every site theme. */
body.free-tv-dedicated #iptvWorkingHeroBtn .iptv-working-control-label,
body.free-tv-dedicated #iptvVerifyWorkingBtn .iptv-working-control-label{
  color:#fff!important;
}


/* ==========================================================
   v14.85 — EPG IN RIGHT-HAND NOW PLAYING PANEL
   ========================================================== */

/* Right column becomes a vertical Now Playing + Guide panel. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-main-tv-layout .iptv-now-card{
  display:flex!important;
  flex-direction:column!important;
  min-height:0!important;
  height:100%!important;
  overflow:hidden!important;
}

/* Keep channel identity/status compact at the top. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-main{
  flex:0 0 auto!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-meta,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-health,
body.free-tv-dedicated #portalView.free-tv-mode #iptvEpgNowNext{
  flex:0 0 auto!important;
}

/* The moved EPG fills the exact unused lower-right area. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvGuideCard{
  flex:1 1 auto!important;
  min-height:220px!important;
  margin:10px -10px -10px!important;
  padding:10px!important;
  border:0!important;
  border-top:1px solid var(--line)!important;
  border-radius:0!important;
  background:color-mix(in srgb,var(--panel) 70%,var(--panel2))!important;
  overflow:hidden!important;
  grid-area:auto!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvGuideCard .iptv-section-head{
  flex:0 0 auto!important;
  align-items:center!important;
  gap:6px!important;
  margin-bottom:7px!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvGuideCard .iptv-kicker{
  font-size:7px!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvGuideCard h3{
  margin:1px 0 0!important;
  font-size:12px!important;
  line-height:1.15!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvRefreshEpgBtn{
  min-height:28px!important;
  padding:0 8px!important;
  border-radius:7px!important;
  font-size:7px!important;
}

/* Scroll only the program schedule, not the whole right panel. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvEpgList{
  height:100%!important;
  min-height:180px!important;
  max-height:calc(100vh - 360px)!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  padding-right:3px!important;
}

/* Make EPG rows clear and TV-guide-like in the narrow column. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvEpgList>div{
  padding:8px 5px!important;
  border-bottom:1px solid color-mix(in srgb,var(--line) 80%,transparent)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvEpgList strong{
  font-size:9px!important;
  line-height:1.25!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvEpgList small,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvEpgList span{
  font-size:7px!important;
  line-height:1.25!important;
}

/* Now/Next summary remains above the full schedule. */
body.free-tv-dedicated #portalView.free-tv-mode #iptvEpgNowNext{
  margin-top:8px!important;
  grid-template-columns:1fr!important;
  gap:4px!important;
}

body.free-tv-dedicated #portalView.free-tv-mode #iptvEpgNowNext>div{
  padding:6px!important;
}

/* There is no longer a bottom full-width guide row. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-main-tv-layout{
  grid-template-areas:
    "video now"
    "controls now"
    "note note"!important;
}

/* Smaller laptops: EPG remains with Now Playing, but below it inside the same card. */
@media(min-width:821px) and (max-width:1250px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-main-tv-layout{
    grid-template-areas:
      "video"
      "controls"
      "now"
      "note"!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvGuideCard{
    min-height:260px!important;
    margin:10px -8px -8px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvEpgList{
    max-height:360px!important;
  }
}

/* Tablet/mobile: guide stays inside Now Playing and becomes a comfortable list. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card{
    overflow:visible!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvGuideCard{
    min-height:260px!important;
    margin:10px -6px -6px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvEpgList{
    max-height:420px!important;
    min-height:220px!important;
  }
}


/* ==========================================================
   v14.86 — ALWAYS-VISIBLE LOAD MORE + EPG FOOTER NOTE
   ========================================================== */

/* Desktop/laptop: the left rail itself fits the viewport.
   The channel list owns the scrolling area and Load More remains visible. */
@media(min-width:821px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar{
    display:flex!important;
    flex-direction:column!important;
    height:calc(100vh - 130px)!important;
    min-height:520px!important;
    max-height:calc(100vh - 130px)!important;
    overflow:hidden!important;
    position:sticky!important;
    top:6px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar-top,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-list-heading,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-list-tools{
    flex:0 0 auto!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    flex:1 1 auto!important;
    height:auto!important;
    min-height:180px!important;
    max-height:none!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    flex:1 1 auto!important;
    height:auto!important;
    min-height:220px!important;
    max-height:none!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode #iptvLoadMoreBtn{
    position:relative!important;
    flex:0 0 auto!important;
    width:100%!important;
    min-height:34px!important;
    margin:0!important;
    padding:0 10px!important;
    border:1px solid color-mix(in srgb,var(--blue) 55%,var(--line))!important;
    border-radius:0 0 10px 10px!important;
    background:linear-gradient(180deg,#10334b,#0b2233)!important;
    color:#79d4ff!important;
    font-size:8px!important;
    font-weight:950!important;
    z-index:5!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode #iptvLoadMoreBtn:hover{
    border-color:var(--blue)!important;
    background:linear-gradient(180deg,#174762,#0d2c40)!important;
    color:#fff!important;
  }
}

/* Shorter monitors: preserve the visible Load More button by shrinking only
   the list viewport, never by pushing the button below the screen. */
@media(min-width:821px) and (max-height:800px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar{
    height:calc(100vh - 125px)!important;
    min-height:430px!important;
    max-height:calc(100vh - 125px)!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    min-height:140px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    min-height:165px!important;
  }
}

/* Tablet/mobile: Load More stays directly under the independently scrolling list. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode #iptvLoadMoreBtn{
    display:block;
    width:100%!important;
    min-height:44px!important;
    margin:0!important;
    border-radius:0 0 10px 10px!important;
    font-size:11px!important;
    font-weight:950!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode #iptvLoadMoreBtn[hidden]{
    display:none!important;
  }
}

/* Channel EPG becomes a true flex column:
   heading on top, scrollable schedule in the middle, readable note at bottom. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvGuideCard{
  display:flex!important;
  flex-direction:column!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvGuideCard[hidden]{
  display:none!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-card #iptvEpgList{
  flex:1 1 auto!important;
  height:auto!important;
  min-height:150px!important;
  overflow-y:auto!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-epg-footer-note{
  flex:0 0 auto!important;
  margin:7px -4px -4px!important;
  padding:8px 7px!important;
  border-top:1px solid var(--line)!important;
  border-radius:0 0 7px 7px!important;
  background:color-mix(in srgb,var(--blue) 5%,var(--panel2))!important;
  color:var(--muted)!important;
  font-size:9px!important;
  font-weight:700!important;
  line-height:1.35!important;
  text-align:left!important;
}

@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-epg-footer-note{
    font-size:11px!important;
    line-height:1.4!important;
    padding:9px!important;
  }
}


/* ==========================================================
   v14.87 — CURRENT-VIEW AVAILABLE-TO-SCAN COUNTER
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-coverage{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:8px!important;
  min-height:34px!important;
  padding:5px 8px!important;
  overflow:hidden!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-coverage>strong{
  flex:0 0 auto!important;
  color:var(--text)!important;
  font-size:7px!important;
  font-weight:950!important;
  white-space:nowrap!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-coverage>span{
  min-width:0!important;
  color:var(--muted)!important;
  font-size:7px!important;
  font-weight:750!important;
  line-height:1.2!important;
  text-align:right!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-coverage>span b{
  color:var(--accent)!important;
  font-size:9px!important;
  font-weight:1000!important;
}

@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-coverage{
    min-height:40px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-coverage>strong,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-coverage>span{
    font-size:9px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-coverage>span b{
    font-size:11px!important;
  }
}


/* ==========================================================
   v14.88 — EXPANDED PUBLIC SOURCE COVERAGE
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-world-coverage>span{
  white-space:nowrap!important;
}


/* ==========================================================
   v14.89 — CLEAR WORKING COUNT + VERIFY / CLEAR BUTTON PAIR
   ========================================================== */

/* The two maintenance actions sit together directly under Working Channels. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-maintenance-row{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:5px!important;
  width:100%!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-maintenance-btn{
  width:100%!important;
  min-width:0!important;
  min-height:34px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0 7px!important;
  margin:0!important;
  border-radius:9px!important;
  color:#fff!important;
  font-size:7px!important;
  font-weight:950!important;
  line-height:1!important;
  white-space:nowrap!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 1px 3px rgba(0,0,0,.24)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-action{
  border:1px solid #16bd70!important;
  background:linear-gradient(180deg,#10a85f,#087542)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-verify-working-action:hover:not(:disabled){
  border-color:#4de49c!important;
  background:linear-gradient(180deg,#19c874,#0a8b4d)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-clear-working-action{
  border:1px solid #e04b55!important;
  background:linear-gradient(180deg,#b93640,#7d2028)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-clear-working-action:hover:not(:disabled){
  border-color:#ff7580!important;
  background:linear-gradient(180deg,#d74752,#922630)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-maintenance-btn:disabled{
  opacity:.48!important;
  filter:saturate(.55)!important;
  cursor:not-allowed!important;
}

/* Make the count in "My Scanned Working Channels" impossible to miss. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-total-line{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:8px!important;
  width:100%!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-total-line>strong{
  min-width:0!important;
  font-size:8px!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

body.free-tv-dedicated #portalView.free-tv-mode #iptvWorkingCountLarge.iptv-working-count-large{
  display:inline-grid!important;
  place-items:center!important;
  flex:0 0 auto!important;
  min-width:42px!important;
  height:28px!important;
  padding:0 9px!important;
  border:1px solid #36e58d!important;
  border-radius:999px!important;
  background:#24df7d!important;
  color:#042314!important;
  font-size:13px!important;
  font-weight:1000!important;
  line-height:1!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25)!important;
}

/* Working-mode info panel no longer needs a separate Clear button. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-tools{
  grid-template-columns:1fr!important;
}

/* Keep this compact so the channel list still gets maximum height. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-action-stack{
  gap:5px!important;
}

@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-maintenance-btn{
    min-height:42px!important;
    font-size:10px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode #iptvWorkingCountLarge.iptv-working-count-large{
    min-width:46px!important;
    height:30px!important;
    font-size:14px!important;
  }
}

@media(max-width:380px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-maintenance-row{
    grid-template-columns:1fr!important;
  }
}


/* ==========================================================
   v14.90 — PLAYER FINISHING PACKAGE
   Scan queue • health • EPG confidence • Working breakdown
   • verification freshness • exact browse-state restore
   ========================================================== */

/* Working freshness + summary */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-freshness{
  display:flex!important;
  flex-wrap:wrap!important;
  gap:4px 8px!important;
  margin-top:5px!important;
  padding-top:5px!important;
  border-top:1px solid var(--line)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-freshness span{
  color:var(--muted)!important;
  font-size:6px!important;
  line-height:1.25!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvWorkingLastVerified{
  color:var(--accent)!important;
  font-weight:900!important;
}

/* Top country/category counts within Working */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown{
  display:flex!important;
  flex-wrap:wrap!important;
  align-items:center!important;
  gap:3px!important;
  margin-top:5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown small{
  color:var(--muted)!important;
  font-size:6px!important;
  margin-right:2px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown>span:not(.iptv-working-breakdown-empty){
  display:inline-flex!important;
  align-items:center!important;
  gap:3px!important;
  min-height:20px!important;
  padding:0 6px!important;
  border:1px solid var(--line)!important;
  border-radius:999px!important;
  background:var(--panel)!important;
  color:var(--text)!important;
  font-size:6px!important;
  font-weight:800!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown span.country{
  border-color:color-mix(in srgb,var(--blue) 40%,var(--line))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown span.category{
  border-color:color-mix(in srgb,var(--accent) 35%,var(--line))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown b{
  color:var(--accent)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown-empty{
  color:var(--muted)!important;
  font-size:6px!important;
}

/* Tiny health light in every channel row */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-health-dot{
  display:inline-block!important;
  width:7px!important;
  height:7px!important;
  margin-left:3px!important;
  border-radius:999px!important;
  background:#77808c!important;
  box-shadow:0 0 0 1px rgba(255,255,255,.08)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-health-dot.working,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-health-dot.reliable{
  background:#31e981!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-health-dot.unstable{
  background:#f2c94c!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-health-dot.unavailable{
  background:#ef4655!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-health-dot.untested{
  background:#77808c!important;
}

/* EPG confidence/status */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-now-status-row{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  flex-wrap:wrap!important;
  gap:5px!important;
  margin-top:5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-epg-status{
  display:inline-flex!important;
  align-items:center!important;
  min-height:22px!important;
  padding:0 7px!important;
  border:1px solid var(--line)!important;
  border-radius:999px!important;
  font-size:6px!important;
  font-weight:900!important;
  white-space:nowrap!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-epg-status.available{
  color:#31e981!important;
  border-color:color-mix(in srgb,#31e981 45%,var(--line))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-epg-status.checking{
  color:#14b8ff!important;
  border-color:color-mix(in srgb,#14b8ff 45%,var(--line))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-epg-status.no-guide{
  color:var(--muted)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-epg-status.error{
  color:#f2c94c!important;
}

/* Smart queue numbers stay compact */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-auto-tune-stats{
  display:flex!important;
  flex-wrap:wrap!important;
  gap:4px 8px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvAutoTuneQueued{
  color:#14b8ff!important;
}
body.free-tv-dedicated #portalView.free-tv-mode #iptvAutoTuneRemaining{
  color:#f2c94c!important;
}

/* Phone readability */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-freshness span,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown small,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown>span:not(.iptv-working-breakdown-empty),
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-breakdown-empty,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-epg-status{
    font-size:9px!important;
  }
}



/* ==========================================================
   v14.91 — FRIENDLIER CHANNEL BROWSER / LEFT RAIL
   Always-visible Country + Category browsing, quick category
   chips, compact Browse/Working modes, responsive touch UI.
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar-top{
  padding-bottom:0!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-mode-switch{
  display:grid!important;
  grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)!important;
  gap:5px!important;
  padding:5px 6px!important;
  background:var(--panel2)!important;
  border-bottom:1px solid var(--line)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-mode-switch button{
  min-height:36px!important;
  border-radius:8px!important;
  font-size:8px!important;
  font-weight:950!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:6px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-control-btn{
  color:var(--blue)!important;
  border-color:color-mix(in srgb,var(--blue) 45%,var(--line))!important;
  background:color-mix(in srgb,var(--blue) 8%,var(--panel))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-control-btn.active{
  color:#fff!important;
  background:linear-gradient(180deg,#20baff,#0877d8)!important;
  border-color:#27c1ff!important;
  box-shadow:0 0 0 1px rgba(20,184,255,.18) inset!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-btn{
  min-width:0!important;
  width:auto!important;
  margin:0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-control-btn.active{
  box-shadow:0 0 0 1px rgba(49,233,129,.25) inset!important;
}

/* Browser is now a first-class, always-visible section. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel{
  display:block!important;
  margin:5px 6px!important;
  border:1px solid color-mix(in srgb,var(--blue) 28%,var(--line))!important;
  border-radius:9px!important;
  overflow:hidden!important;
  background:color-mix(in srgb,var(--panel2) 94%,var(--panel))!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:6px!important;
  padding:5px 7px!important;
  border-bottom:1px solid var(--line)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head strong{
  font-size:8px!important;
  color:var(--text)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head small{
  min-width:0!important;
  max-width:62%!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  text-align:right!important;
  color:var(--muted)!important;
  font-size:6px!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-browser-controls{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:5px!important;
  padding:6px!important;
  border:0!important;
  background:transparent!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls label{
  display:flex!important;
  flex-direction:column!important;
  min-width:0!important;
  gap:3px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls label>span{
  font-size:7px!important;
  font-weight:950!important;
  color:var(--muted)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls select{
  width:100%!important;
  min-width:0!important;
  height:36px!important;
  border-radius:7px!important;
  font-size:9px!important;
  font-weight:800!important;
  padding:0 24px 0 7px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls .iptv-sort-control{
  grid-column:1/2!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-reset-filters{
  grid-column:2/3!important;
  align-self:end!important;
  min-height:36px!important;
  border-radius:7px!important;
  font-size:8px!important;
  font-weight:900!important;
}

/* Quick category strip: easy on mouse, touch, iPhone and iPad. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-quick-categories-wrap{
  padding:0 6px 6px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-quick-categories-label{
  margin:0 0 4px!important;
  color:var(--muted)!important;
  font-size:6px!important;
  font-weight:900!important;
  letter-spacing:.03em!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-category-chips{
  display:flex!important;
  gap:4px!important;
  width:100%!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  padding:0 0 2px!important;
  scrollbar-width:thin!important;
  -webkit-overflow-scrolling:touch!important;
  scroll-snap-type:x proximity!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-category-chips button{
  flex:0 0 auto!important;
  min-height:27px!important;
  padding:0 8px!important;
  border:1px solid var(--line)!important;
  border-radius:999px!important;
  background:var(--panel)!important;
  color:var(--muted)!important;
  font-size:7px!important;
  font-weight:900!important;
  white-space:nowrap!important;
  scroll-snap-align:start!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-category-chips button:hover,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-category-chips button.active{
  color:#06111a!important;
  background:var(--accent)!important;
  border-color:var(--accent)!important;
}

/* The old view tabs stay available, but don't overpower Browse. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter-tabs,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-filter-tabs{
  display:flex!important;
  gap:4px!important;
  overflow-x:auto!important;
  padding:0 6px 5px!important;
  scrollbar-width:none!important;
  background:var(--panel2)!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter-tabs::-webkit-scrollbar{display:none!important}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter{
  flex:0 0 auto!important;
  min-width:52px!important;
  min-height:28px!important;
  padding:0 7px!important;
  font-size:7px!important;
}

/* Working information appears only when needed; maintenance no longer
   consumes permanent top-of-sidebar space. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-tools{
  margin:0 6px 5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-tools .iptv-working-maintenance-row{
  margin-top:6px!important;
  padding-top:6px!important;
  border-top:1px solid var(--line)!important;
}

/* Local mode still cannot use country/category selectors. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.local-view .iptv-browse-panel{
  opacity:.72!important;
}

@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-mode-switch{
    gap:6px!important;
    padding:6px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-mode-switch button{
    min-height:44px!important;
    font-size:11px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel{
    margin:6px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head{
    padding:7px 8px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head strong{
    font-size:11px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head small,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-quick-categories-label{
    font-size:9px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls{
    gap:6px!important;
    padding:7px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls label>span{
    font-size:10px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls select,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-reset-filters{
    height:44px!important;
    min-height:44px!important;
    font-size:16px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-category-chips button{
    min-height:40px!important;
    padding:0 12px!important;
    font-size:11px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-filter{
    min-height:40px!important;
    min-width:70px!important;
    font-size:10px!important;
  }
}

@media(max-width:430px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls{
    grid-template-columns:1fr!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls .iptv-sort-control,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-reset-filters{
    grid-column:auto!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head{
    align-items:flex-start!important;
    flex-direction:column!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head small{
    max-width:100%!important;
    text-align:left!important;
  }
}


/* ==========================================================
   v14.92 — MORE CHANNELS / CLEANER LEFT RAIL
   Removes Quick Categories and gives the channel directory
   substantially more usable vertical space on every device.
   ========================================================== */

/* Quick Categories are intentionally retired in this build. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-quick-categories-wrap,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-category-chips{
  display:none!important;
}

/* Reclaim vertical space from Browse without making the useful selectors tiny. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel{
  margin-top:4px!important;
  margin-bottom:4px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head{
  min-height:25px!important;
  padding:4px 7px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls,
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-browser-controls{
  gap:4px!important;
  padding:5px 6px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls label{
  gap:2px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls select{
  height:32px!important;
  min-height:32px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-reset-filters{
  min-height:32px!important;
}

/* Working mode: remove repeated explanatory copy and keep the useful count,
   freshness, breakdown, and maintenance actions. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-working-tools-copy>span:not(#iptvWorkingCountLarge):not(#iptvWorkingLastVerified):not(#iptvWorkingLastSummary){
  display:none!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-working-tools{
  padding-top:5px!important;
  padding-bottom:5px!important;
  margin-bottom:4px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-working-freshness{
  margin-top:3px!important;
  padding-top:3px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-working-breakdown{
  margin-top:3px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-working-maintenance-row{
  margin-top:4px!important;
  padding-top:4px!important;
}

/* The Working heading was repeating the count/status directly above the list.
   Keep a compact title only. */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-working-list-heading{
  min-height:27px!important;
  padding:5px 7px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-working-list-heading span{
  display:none!important;
}

/* Desktop/laptop: channel list receives every remaining pixel in the rail. */
@media(min-width:821px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar{
    display:flex!important;
    flex-direction:column!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    flex:1 1 0!important;
    height:auto!important;
    min-height:270px!important;
    max-height:none!important;
    overflow-y:auto!important;
  }

  /* More rows visible at one time while remaining easy to click. */
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel{
    min-height:38px!important;
    padding:3px 5px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-logo{
    width:25px!important;
    height:25px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-name{
    font-size:8px!important;
    line-height:1.12!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-program{
    margin-top:1px!important;
    font-size:6px!important;
    line-height:1.1!important;
  }
}

/* Short screens need the list most, so compact non-list pieces slightly more. */
@media(min-width:821px) and (max-height:800px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browse-panel-head{
    min-height:22px!important;
    padding:3px 6px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls{
    padding:4px 5px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls select,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-reset-filters{
    height:29px!important;
    min-height:29px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel{
    min-height:36px!important;
  }
}

/* Tablets/phones: selectors stay finger-friendly, but the channel box itself
   becomes much taller so the user sees far more channels in one viewport. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-browser-controls select,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-reset-filters{
    height:44px!important;
    min-height:44px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    height:min(72dvh,760px)!important;
    min-height:460px!important;
    max-height:760px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:min(78dvh,820px)!important;
    min-height:500px!important;
    max-height:820px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel{
    min-height:48px!important;
    padding:5px 7px!important;
  }
}

@media(max-width:430px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    height:68dvh!important;
    min-height:420px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-sidebar.working-view .iptv-channel-list{
    height:74dvh!important;
    min-height:450px!important;
  }
}


/* ==========================================================
   v14.93 — COMPACT WORKING SUMMARY
   Only affects the My Scanned Working Channels summary card.
   Frees vertical room for the channel list without changing
   the other browse/filter tabs.
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info{
  padding:6px 8px!important;
  gap:2px!important;
  min-height:0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-heading{
  margin:0!important;
  min-height:28px!important;
  padding-bottom:3px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-heading h4{
  font-size:7px!important;
  line-height:1.05!important;
  margin:0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info #iptvWorkingCountLarge{
  min-width:36px!important;
  height:24px!important;
  padding:0 7px!important;
  font-size:11px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-mode-text{
  display:none!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-freshness{
  margin-top:1px!important;
  padding-top:2px!important;
  gap:2px 6px!important;
  border-top:0!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-freshness span{
  font-size:5.5px!important;
  line-height:1.1!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-breakdown{
  margin-top:2px!important;
  gap:2px!important;
  max-height:22px!important;
  overflow:hidden!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-breakdown small{
  font-size:5.5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-breakdown>span:not(.iptv-working-breakdown-empty){
  min-height:17px!important;
  padding:0 5px!important;
  font-size:5.5px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-maintenance-row{
  margin-top:3px!important;
  gap:4px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-maintenance-btn{
  min-height:28px!important;
  height:28px!important;
  padding:0 7px!important;
  font-size:6px!important;
}

/* Give the recovered height directly to the channel list on desktop. */
@media(min-width:821px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    min-height:clamp(360px,52vh,720px)!important;
  }
}

/* Keep touch targets comfortable on phones/tablets while still compacting the card. */
@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info{
    padding:7px 8px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-heading h4{
    font-size:10px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-freshness span,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-breakdown small,
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-breakdown>span:not(.iptv-working-breakdown-empty){
    font-size:8px!important;
  }
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-maintenance-btn{
    min-height:40px!important;
    height:40px!important;
    font-size:9px!important;
  }
}


/* ==========================================================
   v14.95 — SIMPLE WORKING SUMMARY
   Keep only count, verification freshness, Verify and Clear.
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info{
  padding:5px 8px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-heading{
  min-height:26px!important;
  padding-bottom:2px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-freshness{
  margin-top:0!important;
  padding-top:1px!important;
  gap:2px 6px!important;
}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-maintenance-row{
  margin-top:3px!important;
}
@media(min-width:821px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    min-height:clamp(400px,56vh,760px)!important;
  }
}


/* ==========================================================
   v14.96 — ULTRA-COMPACT WORKING SUMMARY
   ========================================================== */
body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info{
  padding:4px 6px!important;
  border-radius:9px!important;
  min-height:0!important;
  gap:0!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-heading{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:6px!important;
  min-height:20px!important;
  margin:0!important;
  padding:0 0 2px 0!important;
  border-bottom:1px solid var(--line)!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-heading h4{
  margin:0!important;
  font-size:6.5px!important;
  line-height:1!important;
  white-space:nowrap!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info #iptvWorkingCountLarge{
  min-width:34px!important;
  height:20px!important;
  padding:0 6px!important;
  font-size:10px!important;
  line-height:20px!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-freshness{
  display:flex!important;
  align-items:center!important;
  flex-wrap:nowrap!important;
  gap:6px!important;
  margin:2px 0 0 0!important;
  padding:0!important;
  border:0!important;
  min-height:13px!important;
  overflow:hidden!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-freshness span{
  font-size:5px!important;
  line-height:1!important;
  white-space:nowrap!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info #iptvWorkingLastSummary{
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-maintenance-row{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:4px!important;
  margin-top:3px!important;
}

body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-maintenance-btn{
  min-height:24px!important;
  height:24px!important;
  padding:0 5px!important;
  font-size:5.5px!important;
  border-radius:7px!important;
}

@media(min-width:821px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-channel-list{
    min-height:clamp(440px,60vh,820px)!important;
  }
}

@media(max-width:820px){
  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info{
    padding:5px 6px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-heading h4{
    font-size:9px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-freshness span{
    font-size:7px!important;
  }

  body.free-tv-dedicated #portalView.free-tv-mode .iptv-working-mode-info .iptv-working-maintenance-btn{
    min-height:34px!important;
    height:34px!important;
    font-size:8px!important;
  }
}


/* ==========================================================
   v15.00 — ADMIN MEDIA TRACKER
   ========================================================== */

.cable-safety-admin-card{margin:16px 0}
.cable-safety-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.cable-safety-head h3{margin:3px 0 5px}
.cable-safety-status{display:inline-flex;align-items:center;min-height:32px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}
.cable-safety-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}
.cable-safety-stats>div{border:1px solid var(--border);border-radius:12px;padding:11px;background:var(--panel2)}
.cable-safety-stats small{display:block;color:var(--muted);font-weight:700}
.cable-safety-stats strong{display:block;font-size:22px;margin-top:2px}
.cable-safety-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cable-safety-grid section,.cable-safety-channel-block{border:1px solid var(--border);border-radius:14px;padding:13px;background:var(--panel2)}
.cable-safety-grid h4,.cable-safety-channel-block h4{margin:0 0 4px}
.cable-safety-add-row{display:flex;gap:8px;margin:10px 0}
.cable-safety-add-row input{min-width:0;flex:1}
.cable-safety-list{display:flex;flex-wrap:wrap;gap:7px;min-height:28px}
.cable-safety-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);border-radius:999px;padding:5px 7px 5px 10px;background:var(--panel);font-size:12px}
.cable-safety-chip button{border:0;background:transparent;color:var(--muted);font-size:17px;line-height:1;cursor:pointer;padding:0 2px}
.cable-safety-channel-block{margin-top:12px}
.cable-safety-foot{margin-top:12px;padding:11px 12px;border-left:3px solid var(--accent);background:var(--panel2);border-radius:8px}
.cable-safety-foot strong,.cable-safety-foot span{display:block}
.cable-safety-foot span{margin-top:3px;color:var(--muted);font-size:13px}
@media(max-width:760px){
  .cable-safety-head{display:block}.cable-safety-status{margin-top:8px}
  .cable-safety-stats,.cable-safety-grid{grid-template-columns:1fr}
  .cable-safety-add-row{flex-direction:column}
  .cable-safety-add-row .btn{min-height:44px}
}

.admin-media-tracker-card{
  margin:14px 0 18px;
  padding:16px;
  border-color:color-mix(in srgb,var(--blue) 42%,var(--line));
  background:
    linear-gradient(180deg,color-mix(in srgb,var(--blue) 5%,var(--panel)),var(--panel));
}
.media-tracker-head,
.media-subcard-head,
.media-inbox-toolbar,
.media-sources-intro{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.media-tracker-head h3,
.media-subcard h4,
.media-inbox-toolbar h4,
.media-sources-intro h4{
  margin:0;
}
.media-tracker-head>div:first-child>small{
  display:block;
  margin-bottom:3px;
  color:var(--accent);
  font-size:10px;
  font-weight:900;
  letter-spacing:.12em;
}
.media-tracker-head p{margin:4px 0 0}
.media-tracker-head-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex:0 0 auto;
}
.media-inbox-badge,
.media-count-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:28px;
  padding:0 10px;
  border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line));
  border-radius:999px;
  color:var(--accent);
  background:color-mix(in srgb,var(--accent) 8%,var(--panel));
  font-size:12px;
  font-weight:900;
  white-space:nowrap;
}
.media-inbox-badge.has-unread{
  color:#09120d;
  background:var(--accent);
  border-color:var(--accent);
}
.media-tracker-note{
  display:flex;
  gap:8px;
  margin-top:12px;
  padding:9px 11px;
  border:1px solid var(--line);
  border-radius:10px;
  background:color-mix(in srgb,var(--blue) 4%,var(--panel2));
  font-size:12px;
  line-height:1.4;
}
.media-tracker-note strong{color:var(--blue);white-space:nowrap}
.media-tracker-tabs{
  display:flex;
  gap:6px;
  margin-top:12px;
  padding:4px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel2);
}
.media-tracker-tab{
  flex:1 1 0;
  min-height:38px;
  border:1px solid transparent;
  border-radius:8px;
  color:var(--muted);
  background:transparent;
  font:inherit;
  font-weight:800;
  cursor:pointer;
}
.media-tracker-tab:hover{color:var(--text);border-color:var(--line)}
.media-tracker-tab.active{
  color:#071019;
  background:var(--blue);
  border-color:var(--blue);
}
.media-tracker-tab span{
  display:inline-flex;
  min-width:20px;
  justify-content:center;
  margin-left:4px;
  padding:1px 5px;
  border-radius:999px;
  background:rgba(0,0,0,.18);
}
.media-tracker-pane{margin-top:12px}
.media-two-column{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:12px;
}
.media-subcard{
  min-width:0;
  padding:12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--panel2);
}
.media-subcard-head small,
.media-inbox-toolbar small{
  display:block;
  margin-top:3px;
  color:var(--muted);
  line-height:1.35;
}
.media-search-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  margin-top:10px;
}
.media-search-row input{min-width:0}
.media-result-list{
  display:grid;
  gap:8px;
  max-height:430px;
  margin-top:10px;
  overflow:auto;
}
.media-show-result,
.media-tracked-card,
.media-inbox-item,
.media-source-card,
.media-source-result{
  padding:10px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--panel);
}
.media-show-result-main,
.media-tracked-main,
.media-inbox-item-head,
.media-source-card-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.media-show-result h5,
.media-tracked-card h5,
.media-inbox-item h5,
.media-source-card h5,
.media-source-result h5{
  margin:0;
  font-size:14px;
}
.media-show-meta,
.media-tracked-meta,
.media-source-meta,
.media-inbox-meta{
  display:flex;
  flex-wrap:wrap;
  gap:4px 8px;
  margin-top:4px;
  color:var(--muted);
  font-size:11px;
}
.media-show-summary{
  margin:7px 0 0;
  color:var(--muted);
  font-size:12px;
  line-height:1.42;
}
.media-credit{
  margin-top:8px;
  color:var(--muted);
  font-size:10px;
}
.media-credit a{color:var(--blue)}
.media-card-actions,
.media-inbox-actions,
.media-source-card-actions{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:8px;
}
.media-source-search-card{margin-top:12px}
.media-quality-row{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:10px;
  margin-top:8px;
}
.media-quality-row label{
  display:flex;
  align-items:center;
  gap:7px;
  margin:0;
  font-size:11px;
}
.media-quality-row select{
  width:auto;
  min-width:135px;
}
.media-source-results,
.media-inbox-list,
.media-sources-list{
  display:grid;
  gap:8px;
  margin-top:10px;
}
.media-source-results{
  max-height:480px;
  overflow:auto;
}
.media-source-result.strong{
  border-color:color-mix(in srgb,var(--accent) 40%,var(--line));
}
.media-source-result-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
}
.media-source-result .media-source-name{
  color:var(--blue);
  font-size:10px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.media-source-result .media-source-seeders{
  color:var(--accent);
  font-weight:900;
}
.media-source-error{
  border-color:color-mix(in srgb,#f2c94c 42%,var(--line));
  color:var(--muted);
}
.media-inbox-toolbar{align-items:center}
.media-inbox-item.unread{
  border-color:color-mix(in srgb,var(--accent) 50%,var(--line));
  box-shadow:inset 3px 0 0 var(--accent);
}
.media-inbox-unread{
  color:var(--accent);
  font-size:10px;
  font-weight:900;
  text-transform:uppercase;
}
.media-inbox-message{
  margin:7px 0 0;
  line-height:1.4;
}
.media-sources-intro p{margin:4px 0 0}
.media-source-form{
  margin-top:10px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--panel2);
}
.media-source-form-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(180px,.45fr);
  gap:10px;
}
.media-source-form label>span{
  display:block;
  margin-bottom:5px;
  color:var(--muted);
  font-size:10px;
  font-weight:800;
  text-transform:uppercase;
}
.media-source-form label{margin-top:9px}
.media-source-form-grid label{margin-top:0}
.media-source-help,
.media-source-safety-note{
  margin-top:7px;
  color:var(--muted);
  font-size:11px;
  line-height:1.4;
}
.media-source-enabled{
  display:flex!important;
  align-items:center;
  gap:8px;
}
.media-source-enabled input{width:auto}
.media-source-enabled span{
  margin:0!important;
  color:var(--text)!important;
  text-transform:none!important;
}
.media-source-form-actions{
  display:flex;
  gap:7px;
  margin-top:10px;
}
.media-source-safety-note{
  padding:9px 11px;
  border:1px solid color-mix(in srgb,#f2c94c 36%,var(--line));
  border-radius:10px;
  background:color-mix(in srgb,#f2c94c 5%,var(--panel));
}
.media-source-card.disabled{opacity:.62}
.media-source-url{
  margin-top:5px;
  color:var(--muted);
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
  font-size:10px;
  overflow-wrap:anywhere;
}
.media-check-status{
  color:var(--muted);
  font-size:11px;
}
@media(max-width:900px){
  .media-two-column{grid-template-columns:1fr}
}
@media(max-width:650px){
  .media-tracker-head,
  .media-subcard-head,
  .media-inbox-toolbar,
  .media-sources-intro{
    flex-direction:column;
    align-items:stretch;
  }
  .media-tracker-head-actions{justify-content:space-between}
  .media-tracker-tabs{overflow:auto}
  .media-tracker-tab{
    flex:0 0 auto;
    min-width:135px;
    min-height:44px;
  }
  .media-search-row{grid-template-columns:1fr}
  .media-search-row .btn{min-height:44px}
  .media-source-form-grid{grid-template-columns:1fr}
  .media-quality-row{align-items:stretch;flex-direction:column}
  .media-quality-row label{justify-content:space-between}
  .media-quality-row select{min-height:44px}
  .media-source-result-row{grid-template-columns:1fr}
}


/* ==========================================================
   v15.01 — MULTI-TRACK RELIABILITY + COVER ART
   ========================================================== */
.media-show-result-content,
.media-tracked-body{
  display:flex;
  align-items:flex-start;
  gap:10px;
  min-width:0;
}
.media-show-result-copy,
.media-tracked-copy{
  flex:1 1 auto;
  min-width:0;
}
.media-poster-wrap{
  flex:0 0 64px;
  width:64px;
  height:94px;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel2);
}
.media-poster-wrap.media-poster-small{
  flex-basis:54px;
  width:54px;
  height:80px;
}
.media-poster{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.media-poster-missing{
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--muted);
  font-size:11px;
  font-weight:900;
  letter-spacing:.08em;
}
.media-tracked-card{
  overflow:hidden;
}
.media-tracked-main{
  display:block;
}
.media-tracked-card .media-card-actions{
  margin-left:64px;
}
.media-result-list#mediaTrackedShows{
  max-height:560px;
}
@media(max-width:650px){
  .media-poster-wrap{
    flex-basis:56px;
    width:56px;
    height:82px;
  }
  .media-poster-wrap.media-poster-small{
    flex-basis:48px;
    width:48px;
    height:70px;
  }
  .media-tracked-card .media-card-actions{
    margin-left:0;
  }
  .media-show-result-main{
    gap:8px;
  }
}


/* ==========================================================
   v15.02 — EASY SEARCH URL TEMPLATE BUILDER
   ========================================================== */
.media-template-builder{
  margin-top:10px;
  border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));
  border-radius:10px;
  background:color-mix(in srgb,var(--accent) 4%,var(--panel2));
  overflow:hidden;
}
.media-template-builder>summary{
  cursor:pointer;
  padding:10px 11px;
  color:var(--text);
  font-size:12px;
  font-weight:900;
  user-select:none;
}
.media-template-builder[open]>summary{
  border-bottom:1px solid var(--line);
}
.media-template-builder-body{
  padding:10px 11px 11px;
}
.media-template-builder-body p{
  margin:0 0 8px;
  line-height:1.45;
}
@media(max-width:650px){
  .media-template-builder>summary{
    min-height:44px;
    display:flex;
    align-items:center;
  }
}


/* v15.03 — verified tracked-list refresh */
.media-tracked-head-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
@media(max-width:650px){.media-tracked-head-actions{width:100%;justify-content:flex-end;flex-wrap:wrap;}}


/* ==========================================================
   v15.04 — EXACT-CHILD TRACK VERIFICATION
   ========================================================== */


/* ==========================================================
   v15.05 — FREE TV PAGE-LEAVE AUDIO + STARTUP CONSOLE FIX
   ========================================================== */

/* ==========================================================
   v15.06 — PERSISTENT V2 TRACKED SHOW + SOURCE COLLECTIONS
   ========================================================== */
.media-sources-head-actions{
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
}
.media-sources-list{
  max-height:520px;
  overflow:auto;
  padding-right:2px;
}
@media(max-width:650px){
  .media-sources-head-actions{
    justify-content:space-between;
  }
}


/* ==========================================================
   v15.07 — CHILD-EVENT COLLECTION SYNC
   One Firebase child event can only affect one list item.
   ========================================================== */


/* ==========================================================
   v15.08 — THEMED MEDIA TRACKER MODALS
   ========================================================== */
body.media-modal-open{overflow:hidden}
.media-action-modal{
  position:fixed;
  inset:0;
  z-index:999999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
}
.media-action-modal.hidden{display:none!important}
.media-action-backdrop{
  position:absolute;
  inset:0;
  background:rgba(2,5,12,.72);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
}
.media-action-dialog{
  position:relative;
  z-index:1;
  width:min(440px,calc(100vw - 28px));
  padding:20px;
  border:1px solid color-mix(in srgb,var(--blue) 30%,var(--line));
  border-radius:16px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 96%,var(--blue) 4%),var(--panel));
  box-shadow:0 24px 80px rgba(0,0,0,.48);
  color:var(--text);
  animation:mediaModalIn .16s ease-out;
}
@keyframes mediaModalIn{
  from{opacity:0;transform:translateY(8px) scale(.98)}
  to{opacity:1;transform:none}
}
.media-action-x{
  position:absolute;
  top:9px;
  right:10px;
  width:34px;
  height:34px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--panel2);
  color:var(--muted);
  font-size:22px;
  line-height:1;
  cursor:pointer;
}
.media-action-x:hover{color:var(--text)}
.media-action-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  width:44px;
  height:44px;
  margin-bottom:12px;
  border:1px solid var(--line);
  border-radius:13px;
  background:var(--panel2);
  font-weight:1000;
  font-size:20px;
}
.media-action-icon.info{color:var(--blue)}
.media-action-icon.success{color:var(--accent)}
.media-action-icon.warning{color:#f2c94c}
.media-action-icon.danger{color:#ff6b8a}
.media-action-copy h3{
  margin:0 42px 7px 0;
  font-size:18px;
}
.media-action-copy p{
  margin:0;
  color:var(--muted);
  font-size:13px;
  line-height:1.55;
  white-space:pre-wrap;
}
.media-action-buttons{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  margin-top:18px;
}
.media-action-buttons .btn{
  min-width:104px;
}
@media(max-width:520px){
  .media-action-dialog{padding:18px}
  .media-action-buttons{
    flex-direction:column-reverse;
  }
  .media-action-buttons .btn{
    width:100%;
    min-height:44px;
  }
}


/* ==========================================================
   v15.09 — COMPACT TRACK / TRACKED BUTTONS
   ========================================================== */
.media-track-toggle{
  flex:0 0 auto;
  min-width:72px;
  width:auto;
  max-width:none;
  height:34px;
  min-height:34px;
  padding:0 12px;
  border-radius:9px;
  white-space:nowrap;
  line-height:1;
  font-size:11px;
  font-weight:900;
  writing-mode:horizontal-tb!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
}
.media-track-toggle.is-untracked{
  background:#e5485d;
  border-color:#e5485d;
  color:#fff;
}
.media-track-toggle.is-tracked{
  background:#28b86f;
  border-color:#28b86f;
  color:#08150f;
  opacity:1!important;
  cursor:default;
}
.media-track-toggle.is-working{
  background:var(--blue);
  border-color:var(--blue);
  color:#06131a;
  min-width:78px;
}
.media-show-result-main{
  align-items:flex-start;
}
@media(max-width:650px){
  .media-track-toggle{
    min-width:68px;
    height:38px;
    min-height:38px;
    padding:0 10px;
  }
}


/* ==========================================================
   v15.10 — STATUS BADGES + NEW EPISODE + YOU MAY HAVE MISSED
   ========================================================== */
.media-tracked-title-row{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.media-show-status-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:22px;
  padding:3px 8px;
  border-radius:999px;
  font-size:10px;
  font-weight:1000;
  letter-spacing:.055em;
  border:1px solid var(--line);
  white-space:nowrap;
}
.media-show-status-badge.active{
  color:#082d1b;
  background:#38d982;
  border-color:#38d982;
}
.media-show-status-badge.ended{
  color:#fff;
  background:#e5485d;
  border-color:#e5485d;
}
.media-show-status-badge.development,
.media-show-status-badge.tbd{
  color:#231a00;
  background:#f2c94c;
  border-color:#f2c94c;
}
.media-show-status-badge.neutral{
  color:var(--text);
  background:var(--panel2);
}
.media-next-episode{
  color:var(--blue);
  font-weight:900;
}
.media-new-episode-callout{
  margin-top:10px;
  padding:11px 12px;
  border:2px solid #38d982;
  border-radius:11px;
  background:color-mix(in srgb,#38d982 12%,var(--panel));
}
.media-new-episode-callout>strong{
  display:block;
  color:#38d982;
  font-size:15px;
  line-height:1.15;
  letter-spacing:.04em;
}
.media-new-episode-callout>div{
  margin-top:4px;
  color:var(--text);
  font-size:14px;
  font-weight:900;
}
.media-new-episode-callout>small{
  display:block;
  margin-top:3px;
  color:var(--muted);
}
.media-new-episode-more{
  display:block;
  margin-top:7px;
  color:#38d982;
  font-size:11px;
  font-weight:900;
}
.media-missed-card{
  margin-top:12px;
}
.media-missed-list{
  display:grid;
  gap:9px;
  margin-top:10px;
}
.media-missed-group{
  padding:11px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--panel);
}
.media-missed-group-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.media-missed-group-head h5{
  margin:0;
  font-size:14px;
}
.media-missed-group-head small{
  display:block;
  margin-top:3px;
  color:var(--muted);
}
.media-missed-episode-list{
  display:grid;
  gap:6px;
  margin-top:9px;
}
.media-missed-episode{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  padding:8px 9px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--panel2);
}
.media-missed-episode.unread{
  border-color:color-mix(in srgb,#38d982 55%,var(--line));
  box-shadow:inset 3px 0 0 #38d982;
}
.media-missed-episode strong{
  color:var(--text);
}
.media-missed-episode span{
  color:var(--text);
}
.media-missed-episode small{
  display:block;
  margin-top:3px;
  color:var(--muted);
}
.media-missed-actions{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
@media(max-width:650px){
  .media-missed-group-head,
  .media-missed-episode{
    grid-template-columns:1fr;
  }
  .media-missed-group-head{
    flex-direction:column;
  }
  .media-missed-actions{
    justify-content:flex-start;
  }
  .media-new-episode-callout>strong{
    font-size:14px;
  }
}


/* ==========================================================
   v15.11 — CABLE CUTTER BRANDING
   Customer-facing name: Cable Cutter
   Channel discovery/scanning sidebar: Cable Cutter Engine
   Internal freeTv*/iptv* IDs intentionally remain unchanged.
   ========================================================== */
.cable-cutter-launch-card{
  position:relative;
  overflow:hidden;
  border-color:color-mix(in srgb,var(--blue) 48%,var(--line));
  background:
    radial-gradient(circle at 88% 18%,color-mix(in srgb,var(--blue) 15%,transparent),transparent 31%),
    linear-gradient(135deg,color-mix(in srgb,var(--blue) 9%,var(--panel2)),var(--panel2));
}
.cable-cutter-launch-card:after{
  content:"";
  position:absolute;
  left:0;top:0;bottom:0;
  width:3px;
  background:var(--blue);
}
.cable-cutter-launch-icon{
  position:relative;
  overflow:visible;
  color:var(--blue);
  font-size:18px;
  font-weight:1000;
}
.cable-cutter-tv{
  display:grid;
  place-items:center;
  width:34px;height:25px;
  border:2px solid currentColor;
  border-radius:6px;
  font-size:11px;
}
.cable-cutter-cut{
  position:absolute;
  right:-7px;
  bottom:-6px;
  display:grid;
  place-items:center;
  width:23px;height:23px;
  border:2px solid var(--panel2);
  border-radius:999px;
  background:var(--blue);
  color:#06131a;
  font-size:12px;
  transform:rotate(-16deg);
}
.cable-cutter-title-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.cable-cutter-title-row h3{margin:3px 0 4px}
.cable-cutter-live-badge{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:3px 7px;
  border:1px solid color-mix(in srgb,var(--accent) 48%,var(--line));
  border-radius:999px;
  color:var(--accent);
  background:color-mix(in srgb,var(--accent) 8%,var(--panel));
  font-size:9px;
  font-weight:1000;
  letter-spacing:.06em;
}
.cable-cutter-live-badge i{
  width:6px;height:6px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 10px color-mix(in srgb,var(--accent) 80%,transparent);
}
.cable-cutter-launch-btn{
  min-width:174px;
  min-height:46px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border-radius:12px;
  font-weight:950;
  box-shadow:0 8px 24px color-mix(in srgb,var(--blue) 16%,transparent);
}
.cable-cutter-play{font-size:12px}
body.free-tv-dedicated #portalView.free-tv-mode .iptv-provider-line strong{
  font-size:11px!important;
  letter-spacing:.035em;
  text-transform:uppercase;
  color:var(--blue);
}
body.free-tv-dedicated .iptv-site-title{
  letter-spacing:.11em;
  font-weight:1000;
}
@media(max-width:650px){
  .cable-cutter-launch-btn{width:100%;min-width:0}
  .cable-cutter-title-row{justify-content:center}
}


/* ==========================================================
   v15.12 — STABILITY + PERFORMANCE HARDENING
   Lazy Cable Cutter boot, scoped admin listeners, safer list refresh
   ========================================================== */
