*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#000;font-family:Arial,Helvetica,sans-serif}
body{color:#fff}
button,input,textarea{font:inherit}

#app,#videoStage{position:fixed;inset:0;width:100%;height:100%;overflow:hidden}
#app{background:#000}

#videoStage{z-index:1;background:#000}

/* IMPORTANT: these are the actual players. No loading overlay exists. */
#videoView,#youtubeView,#webView{
  position:absolute;inset:0;width:100%;height:100%;border:0;margin:0;padding:0;
  background:transparent!important;display:none;z-index:2
}
#videoView{object-fit:cover}
#youtubeView,#webView{background:transparent!important}

.pm-logo{position:absolute;top:16px;right:16px;width:48px;height:48px;object-fit:contain;z-index:30;filter:drop-shadow(0 2px 5px #000)}
.app-logo{display:none}

.video-info{position:absolute;left:16px;right:90px;bottom:62px;z-index:25;text-shadow:0 2px 5px rgba(0,0,0,.9)}
.channel-name{font-size:18px;font-weight:700}
.description{font-size:14px;margin-top:6px;max-width:900px;line-height:1.35}

.right-actions{position:absolute;top:80px;right:16px;z-index:40;display:flex;flex-direction:column;gap:12px}
.circle-btn{width:52px;height:52px;border:0;border-radius:50%;background:#010648;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.35);font-weight:700}
.circle-btn.contact{margin-top:6px}
.circle-btn.comments{position:absolute;right:16px;bottom:70px;z-index:40}

.video-controls{position:absolute;left:16px;top:16px;width:330px;z-index:50;background:rgba(20,20,20,.72);border-radius:14px;padding:8px 12px;display:flex;align-items:center;justify-content:center;gap:7px;backdrop-filter:blur(12px)}
.video-controls.hidden{display:none}
.control-btn{width:48px;height:48px;border:0;background:transparent;color:#fff;border-radius:50%;cursor:pointer;font-weight:700}
.control-btn:hover{background:rgba(255,255,255,.14)}
.control-btn.play{width:60px;height:60px;background:#010648}

.ticker{position:absolute;left:0;right:0;bottom:0;height:40px;display:flex;z-index:60}
.promotion{width:110px;background:#D80A17;color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700}
.ticker-track{flex:1;background:#010648;overflow:hidden;position:relative}
.ticker-text{position:absolute;white-space:nowrap;left:0;height:100%;display:flex;align-items:center;padding:0 20px;font-size:16px;font-weight:700;transform:translateX(100%);will-change:transform}

.side-panel{position:absolute;top:0;right:0;height:100%;z-index:100;transform:translateX(105%);transition:transform .3s ease;box-shadow:-10px 0 35px rgba(0,0,0,.35);display:flex;flex-direction:column}
.side-panel.open{transform:translateX(0)}
.dark-panel{width:340px;background:#151515;color:#fff;padding:12px}
.light-panel{width:340px;background:#F8F9FA;color:#111;padding:12px}
.comments-panel{width:360px;padding:0;background:#fff}
.contact-panel{width:320px;background:#FDFDFD;color:#111;padding:20px}
.panel-header{height:60px;display:flex;align-items:center;border-bottom:1px solid rgba(128,128,128,.25);flex-shrink:0}
.panel-header strong{font-size:21px;flex:1}
.comments-header{background:#010648;color:#fff;padding:0 8px 0 16px}
.close-btn{width:45px;height:45px;border:0;background:transparent;color:#fff;font-size:30px;cursor:pointer}
.close-btn.dark{color:#111}
.list{flex:1;overflow:auto;padding:10px 0}
.search{height:50px;margin:5px 0 10px;width:100%;border:1px solid #ddd;border-radius:10px;padding:0 15px;outline:0;background:#fff;color:#111}
.channel-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:10px;margin-bottom:7px;cursor:pointer}
.channel-item:hover{background:rgba(255,255,255,.08)}
.channel-item.active{background:#010648}
.channel-image{width:48px;height:48px;border-radius:8px;object-fit:contain;background:#292929}
.channel-name-list{font-weight:700}
.channel-id{font-size:11px;opacity:.6;margin-top:3px}
.video-item{display:flex;gap:10px;padding:10px;margin-bottom:8px;background:#fff;border-radius:9px;cursor:pointer;box-shadow:0 1px 5px rgba(0,0,0,.08)}
.video-item:hover{background:#eef1f5}
.video-thumb{width:88px;height:58px;border-radius:7px;background:#ddd;object-fit:cover;flex-shrink:0}
.video-title{font-size:13px;font-weight:700;line-height:1.25}
.video-desc{font-size:11px;color:#777;margin-top:4px}
.comment-video-title{padding:12px;font-weight:700;border-bottom:1px solid #eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.comment-list{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:10px;background:#fff}
.comment{background:#f5f5f5;border-radius:10px;padding:10px;margin-bottom:8px;color:#111}
.comment-user{font-size:12px;font-weight:700;margin-bottom:4px}
.comment-message{font-size:13px;line-height:1.4}
.comment-date{font-size:10px;color:#888;margin-top:5px}
.comment-input{display:flex;gap:6px;padding:8px;background:#f5f5f5}
.comment-input textarea{flex:1;height:50px;border:1px solid #ddd;border-radius:8px;padding:9px;resize:none;outline:0;color:#111}
.send-btn{width:52px;height:52px;border:0;border-radius:50%;background:#010648;color:#fff;cursor:pointer}
.contact-content{padding-top:25px;color:#222}
.contact-content h3{font-size:18px;margin:0 0 20px}
.contact-content>div{padding:14px 0;border-bottom:1px solid #ddd;font-size:16px;word-break:break-word}

#toast{position:fixed;left:50%;bottom:65px;transform:translateX(-50%) translateY(20px);z-index:500;background:rgba(0,0,0,.86);color:#fff;padding:10px 15px;border-radius:8px;opacity:0;pointer-events:none;transition:.25s;font-size:13px}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media(max-width:650px){
  .side-panel{width:100%}
  .video-controls{width:auto;left:10px;right:10px;top:10px}
  .right-actions{right:10px;top:70px;gap:8px}
  .circle-btn{width:46px;height:46px}
  .video-info{left:10px;right:65px;bottom:55px}
  .channel-name{font-size:16px}
  .description{font-size:12px}
  .promotion{width:95px;font-size:12px}
  .ticker{height:38px}
  .ticker-text{font-size:12px}
}

/* Temporary music/video clips never change the active TV channel. */
.video-item{position:relative}
.video-item::after{content:"PLAY";position:absolute;right:8px;bottom:8px;font-size:9px;font-weight:800;color:#010648;opacity:.55}


/* =========================================================
   STARTUP CHANNEL SELECTOR
   ========================================================= */

#startupChannelOverlay{
  position:fixed;
  inset:0;
  z-index:10000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:rgba(0,0,0,.96);
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transition:opacity .35s ease,visibility .35s ease;
}

#startupChannelOverlay.hidden{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}

.startup-channel-box{
  width:min(950px,100%);
  max-height:90vh;
  overflow-y:auto;
  background:linear-gradient(145deg,#151515,#080808);
  color:#fff;
  border:1px solid rgba(255,255,255,.12);
  border-radius:22px;
  padding:30px;
  text-align:center;
  box-shadow:0 25px 100px rgba(0,0,0,.85);
}

.startup-brand{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:12px;
  margin-bottom:15px;
}

.startup-brand-mark{
  width:62px;
  height:62px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#010648;
  font-weight:900;
  box-shadow:0 8px 30px rgba(1,6,72,.65);
}

.startup-brand-title{font-size:22px;font-weight:900;text-align:left}
.startup-brand-subtitle{color:#999;font-size:11px;text-align:left}
.startup-channel-box h1{margin:8px 0 6px;font-size:29px}
.startup-description{color:#999;margin:0 0 22px}

#startupChannelLoading{
  color:#aaa;
  min-height:35px;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:9px;
}

.startup-spinner{
  width:17px;
  height:17px;
  border:2px solid rgba(255,255,255,.25);
  border-top-color:#fff;
  border-radius:50%;
  animation:pstvcmSpin .8s linear infinite;
}

@keyframes pstvcmSpin{to{transform:rotate(360deg)}}

#startupChannelList{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:14px;
  margin-top:18px;
}

.startup-channel-item{
  min-height:155px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:15px;
  background:#1a1a1a;
  padding:15px 10px;
  cursor:pointer;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  transition:transform .18s ease,background .18s ease,border-color .18s ease;
}

.startup-channel-item:hover{
  transform:translateY(-3px);
  background:#010648;
  border-color:rgba(255,255,255,.3);
}

.startup-channel-image{
  width:72px;
  height:72px;
  object-fit:contain;
  border-radius:12px;
  background:#292929;
  margin-bottom:10px;
}

.startup-channel-name{font-weight:800;font-size:15px}
.startup-channel-number{margin-top:4px;font-size:11px;color:#888}
.startup-error{color:#ff6666;min-height:20px;margin-top:15px}

.startup-retry{
  border:0;
  background:#010648;
  color:#fff;
  border-radius:9px;
  padding:10px 18px;
  margin-top:10px;
  cursor:pointer;
}

/* =========================================================
   LOGIN
   ========================================================= */

.login-overlay{
  position:fixed;
  inset:0;
  z-index:11000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:rgba(0,0,0,.78);
  backdrop-filter:blur(8px);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:.25s ease;
}

.login-overlay.open{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}

.login-box{
  position:relative;
  width:min(420px,100%);
  background:#fff;
  color:#111;
  border-radius:18px;
  padding:28px;
  box-shadow:0 25px 90px rgba(0,0,0,.65);
}

.login-close{
  position:absolute;
  right:10px;
  top:8px;
  width:40px;
  height:40px;
  border:0;
  background:transparent;
  color:#222;
  font-size:29px;
  cursor:pointer;
}

.login-icon{
  width:58px;
  height:58px;
  border-radius:50%;
  background:#010648;
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  margin:0 auto 12px;
}

.login-box h2{text-align:center;margin:0;font-size:25px}
.login-subtitle{text-align:center;color:#777;font-size:13px;margin:7px 0 22px}
.login-box label{display:block;font-size:13px;font-weight:700;margin:12px 0 6px}

.login-box input{
  width:100%;
  height:46px;
  border:1px solid #ddd;
  border-radius:9px;
  padding:0 13px;
  outline:0;
  color:#111;
  background:#fff;
}

.login-error{min-height:20px;color:#d22;font-size:12px;margin-top:9px}

.login-submit,.login-page-button{
  width:100%;
  height:46px;
  border:0;
  border-radius:9px;
  cursor:pointer;
  font-weight:800;
}

.login-submit{background:#010648;color:#fff}
.login-submit:disabled{opacity:.6;cursor:wait}
.login-page-button{margin-top:9px;background:#eee;color:#111}
.login-button{background:#010648!important}

@media(max-width:650px){
  .startup-channel-box{padding:20px 14px;border-radius:16px}
  .startup-channel-box h1{font-size:22px}
  #startupChannelList{grid-template-columns:repeat(2,1fr);gap:9px}
  .startup-channel-item{min-height:130px;padding:10px 5px}
  .startup-channel-image{width:58px;height:58px}
  .login-box{padding:24px 18px}
}
