/* ===== Host room page ===== */
.host-wrap{ display:flex; flex-direction:column; gap:16px; }

/* ✅ grid: 높이 맞추기 위해 stretch */
.host-top{
  display:grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 16px;
  align-items: stretch; /* ✅ */
}

/* ✅ 카드 공통 */
.cardx{
  border:1px solid rgba(255,255,255,.06);
  background: rgba(255,255,255,.02);
  border-radius: 16px;
}

/* ✅ video-card는 column flex + 남은 높이 분배 */
.video-card{
  display:flex;
  flex-direction:column;
  min-height:0; /* overflow 필수 */
}

/* header */
.video-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 12px;
  padding: 12px 12px 10px;
  border-bottom: 1px solid rgba(255,255,255,.06);
  flex: 0 0 auto;
}
.vh-left{ display:flex; align-items:center; gap:10px; min-width:0; }
.avatar{
  width:34px; height:34px; border-radius: 12px;
  background: linear-gradient(135deg, rgba(0,210,255,.25), rgba(127,92,255,.25)), #2a2f55;
  border: 1px solid rgba(255,255,255,.08);
}
.vh-meta{ min-width:0; }
.vh-title{ display:flex; align-items:center; gap:8px; font-weight:900; }
.pill-live{
  font-size:11px; padding:2px 8px; border-radius:999px;
  background:#ff3b3b; color:#fff; font-weight:900;
}
.vh-sub{
  margin-top:2px;
  font-size:12px;
  color: rgba(230,232,240,.65);
  display:flex; gap:8px; align-items:center; flex-wrap:wrap;
}
.dot-sep{ opacity:.6; }
.vh-right{ display:flex; align-items:center; gap:10px; }
.ico{ font-size:14px; line-height:1; }

/* ✅ stage는 남은 영역을 먹음 */
.video-stage{
  position:relative;
  padding: 12px;
  flex: 1 1 auto;   /* ✅ */
  min-height: 0;    /* ✅ */
  display:flex;     /* ✅ placeholder 100% 채움 */
}

/* ✅ placeholder: 고정 height 제거, 부모(stage) 높이 채우기 */
.video-placeholder{
  flex: 1;
  height: 100%;
  min-height: 420px; /* 필요하면 최소 높이만 */
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.06);
  background:
    radial-gradient(circle at 70% 30%, rgba(127,92,255,.18), transparent 55%),
    radial-gradient(circle at 20% 40%, rgba(0,210,255,.16), transparent 55%),
    linear-gradient(135deg, rgba(26,31,54,.6), rgba(14,17,36,.8));
  display:flex; align-items:center; justify-content:center;
  color: rgba(230,232,240,.75);
  font-weight: 900;
}

/* goal overlay */
.goal-bar{
  position:absolute;
  left: 22px;
  right: 22px;
  bottom: 18px;
  display:flex;
  align-items:center;
  gap: 12px;
  pointer-events:none;
}
.goal-label{ font-size:12px; color: rgba(230,232,240,.8); }
.goal-track{
  flex:1;
  height: 6px;
  border-radius: 999px;
  background: rgba(255,255,255,.12);
  overflow:hidden;
}
.goal-fill{
  height:100%;
  background: linear-gradient(90deg, #00d2ff, #7f5cff);
  border-radius:999px;
}
.goal-pct{ font-size:12px; color: rgba(230,232,240,.9); min-width:44px; text-align:right; }

/* ===== Side panel (Chat / Users / Events) ===== */
/* ✅ column flex + 전체 높이 채움 */
.side-card{
  overflow:hidden;
  height: 100%;
  display:flex;
  flex-direction:column;
  min-height: 0; /* ✅ */
}

.side-tabs{
  position:relative;
  display:flex; align-items:center; gap: 8px;
  padding: 10px 10px;
  border-bottom: 1px solid rgba(255,255,255,.06);
  flex: 0 0 auto;
}

.tab-btn{
  background: transparent;
  border: 0;
  color: rgba(230,232,240,.72);
  padding: 8px 10px;
  border-radius: 12px;
  cursor: pointer;
  font-weight: 800;
  font-size: 13px;
}
.tab-btn:hover{ background: rgba(255,255,255,.05); color: rgba(230,232,240,.92); }

/* ✅ active는 underline만 */
.tab-btn.active{
  color: var(--text);
  position: relative;
  background: transparent; /* ✅ */
}
.tab-btn.active::after{
  content:"";
  position:absolute;
  left: 10px;
  right: 10px;
  bottom: 4px;
  height: 3px;
  border-radius: 999px;
  background: linear-gradient(90deg, #00d2ff, #7f5cff);
}

.badge{
  margin-left:6px;
  font-size:11px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(255,255,255,.08);
  color: rgba(230,232,240,.9);
}

.side-close{
  margin-left:auto;
  width: 34px; height: 34px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  color: var(--text);
  cursor:pointer;
  display:none; /* mobile only */
}

/* ✅ tab-panel은 flex:1로 높이 먹고 내부만 스크롤 */
.tab-panel{
  display:none;
  flex: 1 1 auto;
  min-height: 0;     /* ✅ */
  overflow: hidden;  /* ✅ (리스트만 scroll) */
}
.tab-panel.show{
  display:flex;
  flex-direction:column;
}

/* ===== Chat ===== */
.chat-list{
  flex: 1 1 auto;   /* ✅ */
  min-height: 0;    /* ✅ */
  overflow-y:auto;  /* ✅ 리스트만 스크롤 */
  padding: 10px;

  display:flex;
  flex-direction:column;
  gap: 10px;
}

/* 메시지 */
.chat-item{ display:flex; gap: 8px; align-items:flex-start; flex-wrap:wrap; }
.c-name{ font-weight: 900; }
.c-msg{ color: rgba(230,232,240,.86); }

/* system */
.chat-item.system{
  padding: 10px;
  border-radius: 14px;
  background: rgba(255,185,74,.10);
  border: 1px solid rgba(255,185,74,.18);
}

/* host badge */
.chat-item.host .c-badge{
  font-size: 10px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(0,210,255,.12);
  border: 1px solid rgba(0,210,255,.22);
  color: rgba(230,232,240,.92);
  font-weight: 900;
}
.c-badge{
  font-size: 10px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(255,255,255,.08);
  color: rgba(230,232,240,.9);
  font-weight: 900;
}

/* ✅ tools + input은 아래 고정(sticky) */
.chat-tools{
  flex: 0 0 auto;
  display:flex; gap: 8px;
  padding: 10px;
  border-top: 1px solid rgba(255,255,255,.06);

  position: sticky;  /* ✅ */
  bottom: 62px;      /* input 높이만큼 */
  z-index: 2;

  background: rgba(15,18,32,.88);
  backdrop-filter: blur(10px);
}
.chip{
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  color: rgba(230,232,240,.88);
  padding: 6px 10px;
  border-radius: 999px;
  cursor:pointer;
  font-weight: 800;
  font-size: 12px;
}
.chip:hover{ background: rgba(255,255,255,.07); }

.chat-input{
  flex: 0 0 auto;
  display:flex;
  gap: 10px;
  padding: 10px;
  border-top: 1px solid rgba(255,255,255,.06);

  position: sticky; /* ✅ */
  bottom: 0;
  z-index: 3;

  background: rgba(15,18,32,.92);
  backdrop-filter: blur(10px);
}

/* ===== Users ===== */
.users-head{
  flex: 0 0 auto;
  display:flex; gap: 10px;
  padding: 10px;
  border-bottom: 1px solid rgba(255,255,255,.06);
}
.users-list{
  flex: 1 1 auto;
  min-height:0;
  overflow-y:auto;
  padding: 10px;

  display:flex;
  flex-direction:column;
  gap: 10px;
}
.user-row{
  display:flex; align-items:center; gap: 10px;
  padding: 10px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.06);
  background: rgba(255,255,255,.03);
}
.u-dot{
  width: 10px; height: 10px; border-radius: 999px;
  background: #34d399;
  box-shadow: 0 0 0 4px rgba(52,211,153,.12);
}
.u-name{ font-weight: 900; flex:1; }
.u-tag{
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(127,92,255,.14);
  border: 1px solid rgba(127,92,255,.22);
  color: rgba(230,232,240,.9);
}
.u-btn{
  width: 34px; height: 34px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  color: rgba(230,232,240,.9);
  cursor:pointer;
}
.u-btn:hover{ background: rgba(255,255,255,.07); }

/* ===== Events ===== */
.events-list{
  flex:1;
  min-height:0;
  overflow-y:auto;
  padding: 10px;
  display:flex; flex-direction:column; gap: 10px;
}
.event-row{
  display:flex; align-items:center; gap: 10px;
  padding: 10px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.06);
  background: rgba(255,255,255,.03);
}
.ev-pill{
  font-size: 10px;
  padding: 3px 8px;
  border-radius: 999px;
  font-weight: 900;
}
.ev-pill.tip{ background: rgba(255,185,74,.14); border:1px solid rgba(255,185,74,.22); }
.ev-pill.goal{ background: rgba(0,210,255,.12); border:1px solid rgba(0,210,255,.22); }
.ev-pill.join{ background: rgba(52,211,153,.12); border:1px solid rgba(52,211,153,.22); }
.ev-text{ flex:1; color: rgba(230,232,240,.9); }
.ev-time{ color: rgba(230,232,240,.55); font-size: 12px; }

/* ===== Bottom controls ===== */
.host-bottom{ padding: 12px; }
.hb-grid{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.hb-card{
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.06);
  background: rgba(255,255,255,.03);
  padding: 12px;
}

.hb-card .hb-form{ gap: 12px; }
.hb-card .input{
  border-radius: 14px;
  border-color: rgba(255,255,255,.10);
}

.hb-title{ font-weight: 900; margin-bottom: 10px; }
.hb-row{ display:flex; align-items:center; justify-content:space-between; gap: 10px; margin-top: 10px; }
.hb-actions{
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 10px;
}
.hb-btn{
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  color: rgba(230,232,240,.9);
  cursor:pointer;
  font-weight: 900;
}
.hb-btn:hover{ background: rgba(255,255,255,.07); }
.hb-btn.danger{ border-color: rgba(251,113,133,.25); background: rgba(251,113,133,.10); }

.hb-form{
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.status-pill{
  display:inline-flex; align-items:center; gap:8px;
  padding: 8px 10px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  font-weight: 900;
  font-size: 12px;
}
.status-pill .s-dot{
  width: 10px; height: 10px; border-radius: 999px;
  background: #34d399;
  box-shadow: 0 0 0 4px rgba(52,211,153,.12);
}
.status-pill.on{ border-color: rgba(52,211,153,.20); }

.textarea{
  width:100%;
  height: 120px;
  resize: vertical;
  padding: 10px 12px;
  border-radius: 14px;
  background: rgba(26,31,54,.75);
  border: 1px solid rgba(255,255,255,.06);
  color: var(--text);
  outline:none;
}
.textarea:focus{ border-color: rgba(0,210,255,.25); }

.goal-mini{ border:1px solid rgba(255,255,255,.06); background: rgba(0,0,0,.12); border-radius: 14px; padding: 10px; }
.gm-top{ display:flex; justify-content:space-between; gap:10px; }
.gm-track{ height: 8px; border-radius: 999px; background: rgba(255,255,255,.12); overflow:hidden; margin-top: 8px; }
.gm-fill{ height:100%; background: linear-gradient(90deg, #00d2ff, #7f5cff); }
.gm-bottom{ margin-top: 8px; font-size: 12px; }

.device-row{ display:flex; align-items:center; justify-content:space-between; gap: 10px; }
.device-status{ display:flex; align-items:center; gap: 10px; }
.dev-dot{ width: 10px; height: 10px; border-radius: 999px; background:#fb7185; box-shadow:0 0 0 4px rgba(251,113,133,.12); }
.dev-dot.off{ background:#fb7185; }
.dev-dot.on{ background:#34d399; box-shadow:0 0 0 4px rgba(52,211,153,.12); }
.dev-name{ font-weight: 900; }
.toy-grid{
  margin-top: 10px;
  display:grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.toy-btn{
  padding: 10px 10px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  color: rgba(230,232,240,.9);
  cursor:pointer;
  font-weight: 900;
}
.toy-btn:hover{ background: rgba(255,255,255,.07); }

.hb-note{ margin-top: 10px; font-size: 12px; line-height: 1.35; }

.hide-desktop{ display:none; }

/* ===== Form controls (force) ===== */
.input{
  width:100%;
  height: 42px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(26,31,54,.75);
  color: var(--text);
  border: 1px solid rgba(255,255,255,.08);
  outline: none;
  font-size: 14px;
  font-weight: 700;
  transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
.input::placeholder{
  color: rgba(230,232,240,.45);
  font-weight: 600;
}
.input:focus{
  border-color: rgba(0,210,255,.35);
  box-shadow: 0 0 0 4px rgba(0,210,255,.12);
  background: rgba(26,31,54,.90);
}
select.input{
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  padding-right: 42px;
  cursor: pointer;
  background-image:
    linear-gradient(45deg, transparent 50%, rgba(230,232,240,.7) 50%),
    linear-gradient(135deg, rgba(230,232,240,.7) 50%, transparent 50%),
    linear-gradient(to right, transparent, transparent);
  background-position:
    calc(100% - 18px) 18px,
    calc(100% - 12px) 18px,
    100% 0;
  background-size:
    6px 6px,
    6px 6px,
    2.6em 2.6em;
  background-repeat: no-repeat;
}
select.input:hover{ border-color: rgba(255,255,255,.14); }
select.input option{ background: #0f1220; color: var(--text); }
.field label{
  display:block;
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 900;
  color: rgba(230,232,240,.70);
  letter-spacing: .2px;
}
.hb-form .field{ min-width: 0; }

/* ===== Viewer page ===== */
.viewer-wrap{ display:flex; flex-direction:column; gap:16px; }

.viewer-top{
  display:grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 16px;
  align-items: stretch; /* ✅ */
}

/* viewer-actions는 video-card 내부 하단에 붙여도 되고 그대로 둬도 됨 */
.viewer-actions{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 12px;
  padding: 10px 12px;
  border-top: 1px solid rgba(255,255,255,.06);
}

.va-left, .va-right{ display:flex; align-items:center; gap:10px; }
.va-btn{
  display:inline-flex;
  align-items:center;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  color: rgba(230,232,240,.92);
  cursor:pointer;
  font-weight: 900;
}
.va-btn:hover{ background: rgba(255,255,255,.07); }
.va-btn.ghosty{ background: transparent; border-color: rgba(255,255,255,.10); }
.va-ico{ font-weight: 900; }
.va-count{ font-size: 13px; display:flex; gap:6px; align-items:baseline; }

.viewer-bottom{ }
.vb-grid{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.vb-card{ padding: 12px; }
.vb-title{ font-weight: 900; margin-bottom: 10px; }
.vb-actions{
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.vb-btn{
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  color: rgba(230,232,240,.9);
  cursor:pointer;
  font-weight: 900;
}
.vb-btn:hover{ background: rgba(255,255,255,.07); }
.vb-btn.primaryish{
  border-color: rgba(0,210,255,.25);
  background: rgba(0,210,255,.10);
}
.vb-note{ margin-top: 10px; font-size: 12px; line-height:1.35; }

.creator-row{ display:flex; align-items:center; gap: 10px; margin-bottom: 10px; }
.avatar.big{ width:44px; height:44px; border-radius: 16px; }
.creator-name{ font-weight: 900; }

.chat-foot{
  padding: 10px;
  border-top: 1px solid rgba(255,255,255,.06);
  font-size: 12px;
}

/* Modal */
.v-modal{ position: fixed; inset:0; display:none; z-index: 9000; }
.v-modal.show{ display:block; }
.v-modal-backdrop{ position:absolute; inset:0; background: rgba(0,0,0,.55); }
.v-modal-box{
  position:absolute;
  left:50%; top:50%;
  transform: translate(-50%,-50%);
  width: min(520px, calc(100% - 24px));
  overflow:hidden;
}
.v-modal-head{
  display:flex; align-items:center; justify-content:space-between;
  padding: 12px;
  border-bottom: 1px solid rgba(255,255,255,.06);
}
.v-modal-title{ font-weight: 900; }
.v-close{
  width: 34px; height: 34px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  color: var(--text);
  cursor:pointer;
}
.v-close:hover{ background: rgba(255,255,255,.07); }
.v-modal-body{ padding: 12px; }
.v-modal-foot{
  display:flex; justify-content:flex-end; gap:10px;
  padding: 12px;
  border-top: 1px solid rgba(255,255,255,.06);
}
.tip-grid{ display:grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.tip-chip{
  padding: 10px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.04);
  color: rgba(230,232,240,.92);
  cursor:pointer;
  font-weight: 900;
}
.tip-chip:hover{ background: rgba(255,255,255,.07); }

/* ===== Responsive ===== */
@media (max-width: 1200px){
  .host-top{ grid-template-columns: minmax(0, 1fr) 340px; }
  .viewer-top{ grid-template-columns: minmax(0, 1fr) 340px; }
  .hb-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .video-placeholder{ min-height: 380px; } /* ✅ height 대신 min-height */
}

@media (max-width: 900px){
  .host-top{ grid-template-columns: 1fr; }
  .viewer-top{ grid-template-columns: 1fr; }

  .side-card{
    position: fixed;
    top: 110px;
    right: 12px;
    left: 12px;
    bottom: calc(var(--footer-h) + 12px);
    z-index: 8000;
    transform: translateY(120%);
    transition: transform .18s ease;
    height: auto;       /* ✅ fixed일 때는 auto */
  }
  .side-card.open{ transform: translateY(0); }
  .side-close{ display:inline-flex; align-items:center; justify-content:center; }
  .hide-desktop{ display:inline-flex; }

  .video-placeholder{ min-height: 320px; }
}

@media (max-width: 640px){
  .hb-grid{ grid-template-columns: 1fr; }
  .hb-form{ grid-template-columns: 1fr; }
  .toy-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .goal-bar{ left: 14px; right: 14px; bottom: 14px; }

  .video-placeholder{ min-height: 260px; }
}


/* ===== FIX: chat should scroll, not grow ===== */

/* side panel 자체가 늘어나지 않게 */
.side-card{
  min-height: 0 !important;
  overflow: hidden !important;
}

/* 탭 패널도 내부만 커지고 밖으로 늘어나지 않게 */
.side-card .tab-panel{
  min-height: 0 !important;
  overflow: hidden !important; /* ✅ 스크롤은 list만 */
}

/* 채팅 탭은 column flex로 */
.side-card .tab-panel[data-panel="chat"].show{
  display:flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
}

/* 메시지 리스트만 스크롤 */
.side-card .chat-list{
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

/* 입력/툴바는 고정 */
.side-card .chat-tools,
.side-card .chat-input{
  flex: 0 0 auto !important;
}

.host-top,
.viewer-top{
  align-items: stretch !important;
}

.video-card{
  min-height: 0 !important;
}

.side-card{
  height: 100% !important;
}

/* ===== FIX: viewer/host top area must have a fixed height so chat can scroll ===== */

/* main.content가 스크롤 컨테이너라서, 내부에서 flex로 높이 체인을 만들어 줌 */
.content{
  display: flex;
  flex-direction: column;
  min-height: 0; /* ✅ 중요 */
}

/* viewer-wrap이 content의 남는 높이를 차지하게 */
.viewer-wrap,
.host-wrap{
  flex: 1 1 auto;
  min-height: 0; /* ✅ 중요 */
  display: flex;
  flex-direction: column;
}

/* top(비디오+채팅) 섹션이 남는 높이를 먹고 줄어들 수 있게 */
.viewer-top,
.host-top{
  flex: 1 1 auto;
  min-height: 0; /* ✅ 중요 */
}

/* grid의 자식들이 100% 높이를 가질 수 있도록 */
.viewer-top > .video-card,
.viewer-top > .side-card,
.host-top > .video-card,
.host-top > .side-card{
  height: 100%;
  min-height: 0; /* ✅ 중요 */
}

/* side-card / panel / list 스크롤 확정 */
.side-card{
  min-height: 0 !important;
  overflow: hidden !important;
}

.tab-panel{
  flex: 1 1 auto;
  min-height: 0 !important;
  overflow: hidden !important; /* 스크롤은 list만 */
}

.chat-list{
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow-y: auto !important;
}

/* footer & input은 아래 고정 */
.chat-foot,
.chat-input{
  flex: 0 0 auto !important;
}


/* ===== custom scrollbar (dark UI) ===== */
/* 적용 대상: 스크롤 생기는 리스트들 */
.chat-list,
.users-list,
.events-list{
  scrollbar-gutter: stable; /* 스크롤 생길 때 레이아웃 튐 방지(지원 브라우저에서) */
}

/* Firefox */
.chat-list,
.users-list,
.events-list{
  scrollbar-width: thin;
  scrollbar-color: rgba(230,232,240,.22) rgba(0,0,0,.12);
}

/* Chrome / Edge / Safari */
.chat-list::-webkit-scrollbar,
.users-list::-webkit-scrollbar,
.events-list::-webkit-scrollbar{
  width: 10px;
}

.chat-list::-webkit-scrollbar-track,
.users-list::-webkit-scrollbar-track,
.events-list::-webkit-scrollbar-track{
  background: rgba(0,0,0,.12);
  border-left: 1px solid rgba(255,255,255,.05);
}

.chat-list::-webkit-scrollbar-thumb,
.users-list::-webkit-scrollbar-thumb,
.events-list::-webkit-scrollbar-thumb{
  background: rgba(230,232,240,.22);
  border-radius: 999px;
  border: 2px solid rgba(0,0,0,.12); /* track 배경과 자연스럽게 */
}

.chat-list::-webkit-scrollbar-thumb:hover,
.users-list::-webkit-scrollbar-thumb:hover,
.events-list::-webkit-scrollbar-thumb:hover{
  background: rgba(230,232,240,.35);
}
