/* ── Reset & Base ─────────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;-webkit-tap-highlight-color:transparent}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  background:#0f0f23;color:#e0e0ff;font-size:14px;overflow-x:hidden}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea{font-family:inherit;color:#e0e0ff}
ul{list-style:none}

/* ── Room Layout ─────────────────────────────────────────────────────────── */
.room-body{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}

/* Header */
.room-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:0 12px;height:52px;min-height:52px;
  background:#1a1a2e;border-bottom:1px solid #2a2a4a;
  position:relative;z-index:100;flex-shrink:0
}
.rh-left{display:flex;align-items:center;gap:10px}
.rh-home{font-size:1.2rem;color:#7c3aed;padding:6px}
.rh-info{display:flex;flex-direction:column}
.rh-name{font-weight:700;font-size:.9rem;color:#fff;line-height:1.2;
  max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rh-code{font-size:.7rem;color:#888;font-family:monospace;letter-spacing:1px}
.rh-right{display:flex;align-items:center;gap:6px}
.rh-online{font-size:.8rem;color:#aaa;padding:0 6px;display:flex;align-items:center;gap:4px}
.rh-btn{width:36px;height:36px;border-radius:50%;background:#2a2a4a;
  display:flex;align-items:center;justify-content:center;font-size:.9rem;
  transition:.2s;color:#ccc}
.rh-btn:active{background:#3a3a6a}
.rh-btn.active{background:#7c3aed;color:#fff}

/* ── Main layout: 80/20 side-by-side ──────────────────────────────────────── */
.room-layout{
  display:flex;flex:1;overflow:hidden;
}
.room-left{
  display:flex;flex-direction:column;
  flex:4;min-width:0;overflow:hidden; /* 80% */
}
.room-right{
  flex:1;min-width:200px;max-width:260px;
  display:flex;flex-direction:column;
  background:#13132a;border-left:1px solid #2a2a4a;
  overflow:hidden;flex-shrink:0; /* 20% */
}

/* Portrait mobile: stack video on top, tabs below */
@media(max-width:600px) and (orientation:portrait){
  .room-layout{flex-direction:column}
  .room-right{
    width:100%;max-width:none;min-width:unset;
    flex:1;border-left:none;border-top:1px solid #2a2a4a;
  }
  .room-left{flex:none}
}

/* ── Video Player ─────────────────────────────────────────────────────────── */

/* On landscape + desktop: video-wrap fills all remaining height */
.video-wrap{
  position:relative;flex:1;background:#000;overflow:hidden;display:flex;
}
.player-container{
  position:relative;flex:1;width:100%;background:#000;overflow:hidden;
}
/* Portrait: use 16:9 aspect ratio instead */
@media(max-width:600px) and (orientation:portrait){
  .video-wrap{flex:none}
  .player-container{width:100%;height:0;padding-bottom:56.25%;} /* 16:9 ratio trick */
}

/* All player children fill the container */
.player-container > div,
.player-container > video,
.player-container > iframe{
  position:absolute;top:0;left:0;width:100%;height:100%;border:none;
}
.no-video{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  text-align:center;color:#555;pointer-events:none;
}
.no-video i{font-size:3rem;display:block;margin-bottom:12px;color:#333}
.no-video p{font-size:.9rem}
.nv-hint{font-size:.8rem;color:#444;margin-top:6px}

/* YouTube: stable wrapper + dynamic iframe both fill container */
#ytPlayerWrap{position:absolute!important;inset:0!important;width:100%!important;height:100%!important}
#ytPlayerWrap iframe{position:absolute!important;inset:0!important;
  width:100%!important;height:100%!important;border:none!important}

/* Video info bar */
.video-info-bar{
  display:flex;align-items:center;justify-content:space-between;
  padding:8px 12px;background:#1a1a2e;border-bottom:1px solid #2a2a4a;
  flex-shrink:0;
}
.vib-title{font-weight:600;font-size:.85rem;color:#ccc;
  flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-controls{display:flex;align-items:center;gap:6px;flex-shrink:0;margin-left:10px}
.ac-btn{width:32px;height:32px;border-radius:8px;background:#2a2a4a;
  display:flex;align-items:center;justify-content:center;font-size:.85rem;
  transition:.15s;color:#ccc}
.ac-btn:active{transform:scale(.9)}
.ac-play{background:#7c3aed;color:#fff}
.sync-badge{background:#16a34a;color:#fff;font-size:.65rem;font-weight:700;
  padding:2px 7px;border-radius:20px;letter-spacing:.5px;margin-left:4px}

/* Quick reactions */
.quick-rx-bar{
  display:flex;align-items:center;gap:4px;padding:6px 10px;
  background:#0f0f23;border-bottom:1px solid #1e1e3a;
  overflow-x:auto;scrollbar-width:none;flex-shrink:0;
}
.quick-rx-bar::-webkit-scrollbar{display:none}
.rx-btn{font-size:1.3rem;padding:4px 6px;border-radius:8px;transition:.15s;
  background:none;flex-shrink:0}
.rx-btn:active{background:#2a2a4a;transform:scale(1.3)}

/* ── Tabs (right panel) ──────────────────────────────────────────────────── */
.tabs-nav{
  display:flex;border-bottom:1px solid #2a2a4a;background:#1a1a2e;flex-shrink:0
}
.tab-btn{
  flex:1;padding:8px 2px;font-size:.72rem;color:#888;border-bottom:2px solid transparent;
  display:flex;align-items:center;justify-content:center;gap:3px;transition:.15s;
  position:relative;
}
/* Always hide text labels in narrow 20% panel; show only icons */
.tab-btn span{display:none}
/* Show labels only on portrait mobile where the panel is full-width */
@media(max-width:600px) and (orientation:portrait){
  .tab-btn span{display:inline}
  .tab-btn{padding:10px 4px;font-size:.78rem}
}
.tab-btn.active{color:#a78bfa;border-bottom-color:#7c3aed}
.tab-badge{
  background:#e74c3c;color:#fff;font-size:.6rem;font-weight:700;
  padding:1px 5px;border-radius:10px;margin-left:2px;
}
.tab-panel{display:none;flex:1;overflow:hidden;flex-direction:column}
.tab-panel.active{display:flex}

/* ── Playlist ─────────────────────────────────────────────────────────────── */
.add-video-form{padding:8px;border-bottom:1px solid #2a2a4a;flex-shrink:0}
.avf-row{display:flex;gap:4px}
.avf-input{
  flex:1;background:#0d0d1f;border:1px solid #2a2a4a;color:#fff;
  padding:6px 8px;border-radius:8px;font-size:.78rem;outline:none;min-width:0;
}
.avf-input:focus{border-color:#7c3aed}
.avf-input::placeholder{font-size:.72rem}
.avf-title{width:100%;margin-top:5px}
.avf-btn{
  width:32px;height:32px;border-radius:8px;background:#7c3aed;color:#fff;
  font-size:.85rem;display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.avf-btn:active{background:#6d28d9}

.playlist-list{flex:1;overflow-y:auto;padding:6px;scrollbar-width:thin;scrollbar-color:#333 transparent}
.pl-item{
  display:flex;align-items:center;gap:8px;padding:8px;border-radius:10px;
  border:1px solid transparent;margin-bottom:4px;cursor:default;transition:.15s;
}
.pl-item:hover{background:#1e1e3a}
.pl-item.pl-active{border-color:#7c3aed;background:#1e1e3a}
.pl-thumb{
  width:52px;height:36px;border-radius:6px;background:#2a2a4a;
  flex-shrink:0;overflow:hidden;display:flex;align-items:center;justify-content:center;
  font-size:1.1rem;color:#555;
}
.pl-thumb img{width:100%;height:100%;object-fit:cover}
.pl-info{flex:1;min-width:0}
.pl-name{font-size:.82rem;font-weight:600;color:#ddd;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-type{font-size:.7rem;color:#666;text-transform:uppercase;letter-spacing:.3px}
.pl-actions{display:flex;gap:3px;flex-shrink:0}
.pla-btn{width:26px;height:26px;border-radius:6px;background:#2a2a4a;
  font-size:.7rem;display:flex;align-items:center;justify-content:center;
  transition:.15s;color:#aaa;flex-shrink:0;
}
.pla-btn:active{background:#3a3a6a;transform:scale(.9)}
.pla-del{color:#e74c3c}
.pl-empty{text-align:center;padding:30px 20px;color:#444}
.pl-empty i{font-size:2rem;display:block;margin-bottom:10px}
.pl-empty p{font-size:.85rem}

/* ── Chat ────────────────────────────────────────────────────────────────── */
.chat-messages{
  flex:1;overflow-y:auto;padding:10px;
  display:flex;flex-direction:column;gap:2px;
  scrollbar-width:thin;scrollbar-color:#333 transparent;
}
.msg-row{padding:5px 8px;border-radius:10px}
.msg-row:hover{background:#1e1e3a30}
.msg-name{font-size:.7rem;color:#888;margin-bottom:2px}
.msg-name small{color:#555}
.msg-text{font-size:.88rem;color:#ddd;word-break:break-word;line-height:1.4}
.msg-system{text-align:center;padding:4px}
.msg-system span{font-size:.75rem;color:#555;font-style:italic}
.msg-emoji .msg-text{font-size:1.4rem}
.msg-sticker .sticker-big{font-size:2.8rem;display:block;line-height:1.2}

.emoji-picker{
  background:#1a1a2e;border-top:1px solid #2a2a4a;
  max-height:200px;overflow:hidden;flex-shrink:0;
}
.ep-tabs{display:flex;border-bottom:1px solid #2a2a4a}
.ep-tab{flex:1;padding:7px;font-size:.78rem;color:#888;border-bottom:2px solid transparent;transition:.15s}
.ep-tab.active{color:#a78bfa;border-bottom-color:#7c3aed}
.ep-grid{
  display:grid;grid-template-columns:repeat(8,1fr);
  overflow-y:auto;padding:6px;max-height:148px;gap:2px;
  scrollbar-width:thin;scrollbar-color:#333 transparent;
}
.ep-btn{
  font-size:1.3rem;padding:5px;border-radius:6px;text-align:center;
  transition:.15s;cursor:pointer;background:none;border:none;
}
.ep-btn:active{background:#2a2a4a;transform:scale(1.2)}
.sticker-btn{font-size:2rem;padding:4px;border-radius:8px;
  cursor:pointer;background:none;border:none;transition:.15s}
.sticker-btn:active{background:#2a2a4a;transform:scale(1.1)}

.chat-input-wrap{
  display:flex;align-items:center;gap:6px;padding:8px 10px;
  border-top:1px solid #2a2a4a;background:#1a1a2e;flex-shrink:0;
}
.ci-emoji-btn{width:34px;height:34px;border-radius:50%;background:#2a2a4a;
  font-size:.9rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ci-emoji-btn:active{background:#3a3a6a}
.ci-input{
  flex:1;background:#0d0d1f;border:1px solid #2a2a4a;color:#fff;
  padding:8px 12px;border-radius:20px;font-size:.88rem;outline:none;
}
.ci-input:focus{border-color:#7c3aed}
.ci-send-btn{width:34px;height:34px;border-radius:50%;background:#7c3aed;
  color:#fff;font-size:.85rem;display:flex;align-items:center;justify-content:center;
  flex-shrink:0}
.ci-send-btn:active{background:#6d28d9;transform:scale(.9)}

/* ── People ───────────────────────────────────────────────────────────────── */
.people-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 12px;border-bottom:1px solid #2a2a4a;flex-shrink:0;
  font-size:.8rem;color:#888;
}
.copy-link-btn{
  background:#2a2a4a;color:#a78bfa;padding:5px 10px;border-radius:8px;
  font-size:.75rem;transition:.15s;
}
.copy-link-btn:active{background:#3a3a6a}
.people-list{flex:1;overflow-y:auto;padding:8px;scrollbar-width:thin;scrollbar-color:#333 transparent}
.person-item{
  display:flex;align-items:center;gap:10px;padding:8px 10px;
  border-radius:10px;margin-bottom:4px;
}
.person-item:hover{background:#1e1e3a}
.pi-avatar{
  width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#7c3aed,#5b21b6);
  display:flex;align-items:center;justify-content:center;font-weight:700;
  font-size:.9rem;color:#fff;flex-shrink:0;text-transform:uppercase;
}
.pi-avatar.online{box-shadow:0 0 0 2px #2ecc71}
.pi-info{flex:1}
.pi-name{font-size:.88rem;font-weight:600;color:#ddd}
.pi-role{font-size:.7rem;color:#888}
.pi-cam{color:#2ecc71;font-size:.8rem}

/* ── Video Call Overlay ──────────────────────────────────────────────────── */
.vcall-overlay{
  position:fixed;
  /* Slide up from bottom on mobile; side panel on desktop */
  bottom:0;left:0;right:0;
  z-index:400;
  background:#0a0a1e;
  border-top:2px solid #7c3aed;
  border-radius:16px 16px 0 0;
  display:flex;flex-direction:column;
  max-height:55vh;
  box-shadow:0 -4px 30px #7c3aed40;
}
@media(min-width:701px){
  .vcall-overlay{
    bottom:auto;top:52px;right:0;left:auto;
    width:320px;max-height:420px;
    border-radius:0 0 0 16px;
    border-top:none;border-left:2px solid #7c3aed;
  }
}
.vcall-topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 14px 6px;flex-shrink:0;
}
.vcall-title{font-size:.82rem;color:#a78bfa;font-weight:700;
  display:flex;align-items:center;gap:6px;
}
.vcall-title i{animation:pulse 1.5s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.vcall-controls{display:flex;gap:8px;align-items:center}
.vcall-ctrl-btn{
  width:36px;height:36px;border-radius:50%;background:#2a2a4a;
  display:flex;align-items:center;justify-content:center;
  font-size:.9rem;color:#fff;transition:.2s;flex-shrink:0;
}
.vcall-ctrl-btn:active{transform:scale(.9)}
.vcall-ctrl-btn.mic-off{background:#c0392b}
.vcall-ctrl-end{background:#e74c3c}
.vcall-ctrl-end:active{background:#c0392b}
/* Horizontal scroll grid on mobile */
.vcall-grid{
  display:flex;flex-direction:row;gap:8px;
  overflow-x:auto;overflow-y:hidden;
  padding:6px 12px 12px;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;
  flex-shrink:1;
}
.vcall-grid::-webkit-scrollbar{display:none}
.vcall-self,.vcall-peer{
  position:relative;flex-shrink:0;
  width:110px;height:140px;
  border-radius:12px;overflow:hidden;
  background:#1a1a2e;border:1px solid #2a2a4a;
}
.vcall-self{border-color:#7c3aed}
.vcall-self video,.vcall-peer video{
  width:100%;height:100%;object-fit:cover;display:block;
  background:#000;
}
/* Android: tap-to-play overlay */
video[data-tap-play]{cursor:pointer}
video[data-tap-play]::after{content:'▶';position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;font-size:2rem;color:#fff}
.vcall-label{
  position:absolute;bottom:6px;left:0;right:0;text-align:center;
  font-size:.65rem;color:#fff;
  background:linear-gradient(transparent,#000a);
  padding:10px 4px 4px;
}

/* ── Reactions Stage ─────────────────────────────────────────────────────── */
.reactions-stage{
  position:fixed;bottom:80px;left:0;right:0;height:250px;
  pointer-events:none;z-index:300;overflow:hidden;
}
.reaction-float{
  position:absolute;bottom:0;font-size:1.8rem;animation:floatUp 2.5s ease-out forwards;
  pointer-events:none;
}
@keyframes floatUp{
  0%{opacity:1;transform:translateY(0) scale(1)}
  80%{opacity:.8;transform:translateY(-220px) scale(1.1)}
  100%{opacity:0;transform:translateY(-250px) scale(.8)}
}

/* ── Share Modal ─────────────────────────────────────────────────────────── */
.modal-overlay{
  position:fixed;inset:0;background:#00000088;z-index:500;
  display:flex;align-items:center;justify-content:center;padding:16px;
}
.modal-box{
  background:#1a1a2e;border:1px solid #2a2a4a;border-radius:16px;
  width:100%;max-width:420px;overflow:hidden;
}
.modal-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px;border-bottom:1px solid #2a2a4a;
}
.modal-header h3{font-size:1rem;color:#fff}
.modal-header button{width:28px;height:28px;border-radius:50%;background:#2a2a4a;
  font-size:.8rem;display:flex;align-items:center;justify-content:center}
.modal-body{padding:18px}
.share-code{text-align:center;margin-bottom:16px}
.sc-label{font-size:.75rem;color:#888;margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}
.sc-code{font-size:2rem;font-weight:800;color:#a78bfa;letter-spacing:6px;font-family:monospace}
.share-link-wrap{display:flex;gap:8px}
.share-link{
  flex:1;background:#0d0d1f;border:1px solid #2a2a4a;color:#aaa;
  padding:8px 12px;border-radius:8px;font-size:.8rem;outline:none;
}
.share-link-wrap button{
  background:#7c3aed;color:#fff;padding:8px 14px;border-radius:8px;font-size:.85rem;
}
.share-note{font-size:.78rem;color:#666;margin-top:10px;text-align:center}

/* ── Toast ────────────────────────────────────────────────────────────────── */
.toast{
  position:fixed;bottom:80px;left:50%;transform:translateX(-50%);
  background:#7c3aed;color:#fff;padding:8px 18px;border-radius:20px;
  font-size:.85rem;z-index:1000;opacity:0;transition:.3s;pointer-events:none;
  white-space:nowrap;
}
.toast.show{opacity:1;bottom:90px}

/* ── Scrollbar ────────────────────────────────────────────────────────────── */
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#2a2a4a;border-radius:2px}

/* ── PWA Floating Banner (room page) ─────────────────────────────────────── */
#pwaBanner{
  position:fixed;bottom:-90px;left:12px;right:12px;z-index:9999;
  background:#13112e;border:1px solid #4c2aaa;border-radius:14px;
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;
  box-shadow:0 6px 28px #7c3aed50;
  transition:bottom .38s cubic-bezier(.175,.885,.32,1.275);
}
#pwaBanner.pwa-visible{bottom:12px}
.pwa-b-icon{width:36px;height:36px;border-radius:9px;flex-shrink:0}
.pwa-b-body{flex:1;min-width:0;line-height:1.3}
.pwa-b-body strong{display:block;font-size:.82rem;color:#e0e0ff;font-weight:700}
.pwa-b-body span{font-size:.72rem;color:#7060a0}
.pwa-b-install{
  background:#7c3aed;color:#fff;border:none;
  padding:7px 13px;border-radius:18px;
  font-size:.78rem;font-weight:700;cursor:pointer;
  flex-shrink:0;white-space:nowrap;transition:.15s;
  display:flex;align-items:center;gap:5px;
}
.pwa-b-install:active{transform:scale(.94);background:#6d28d9}
.pwa-b-close{
  background:none;border:none;color:#5a4a80;
  font-size:.9rem;padding:4px 5px;cursor:pointer;flex-shrink:0;
  line-height:1;
}
.pwa-b-close:active{color:#a090d0}
