/* ============================================================
   STREAM SCHEDULE  schedule.css
   ============================================================ */
:root {
  --sb:     180px;
  --tw:      60px;
  --hdr-h:   72px;
  --hour-h:  80px;
  --ff-wide: 'Arial Black', Arial, sans-serif;
  --ff-body: Arial, 'Helvetica Neue', sans-serif;
  --ff-num:  Arial, 'Helvetica Neue', sans-serif;
  --c0:  #07070b; --c1: #0c0c13; --c2: #13131d; --c3: #191926;
  --bd:  rgba(255,255,255,0.07);
  --bd2: rgba(255,255,255,0.16);
  --bd3: rgba(255,255,255,0.30);
  --tx:  #f4f0e8;
  --tx2: rgba(244,240,232,0.58);
  --tx3: rgba(244,240,232,0.28);
  --cy:  #00f2ff; --cy-bg: rgba(0,242,255,0.10); --cy-bd: rgba(0,242,255,0.45);
  --rd:  #ff4757;
  --gd:  #d4b47a;
  --yt:  #ff4040; --yt-bg: rgba(255,64,64,0.10); --yt-bd: rgba(255,64,64,0.40); --yt-lane: rgba(255,64,64,0.028);
  --tw-col: #9147ff; --tw-bg: rgba(145,71,255,0.10); --tw-bd: rgba(145,71,255,0.40); --tw-lane: rgba(145,71,255,0.036);
}
*, *::before, *::after { box-sizing: border-box; }

/* flag-icons */
.fi { line-height: 1; border-radius: 2px; flex-shrink: 0; vertical-align: middle; }

body.schedule-page {
  padding-top: var(--header-height, 78px);
  height: 100dvh; overflow: hidden; margin: 0; background: var(--c0);
}
body.schedule-page main,
body.schedule-page #main-content { flex:none!important; overflow:visible!important; }
body.schedule-page #live-floating-btn { display:none!important; }

/* ============================================================
   ROOT GRID
   col1 = --sb（サイドバー）
   col2 = 1fr（タイムテーブル）
   row1 = --hdr-h、row2 = 1fr
   ============================================================ */
#st-root {
  display: grid;
  grid-template-columns: var(--sb) 1fr;
  grid-template-rows: var(--hdr-h) 1fr;
  width: 100%;
  height: calc(100dvh - var(--header-height, 78px));
  overflow: hidden;
  color: var(--tx); font-family: var(--ff-body); font-size: 14px;
  padding-bottom: 62px;
}

/* A: STREAM SCHEDULE（col1, row1）
   幅は --sb のみ。タイムテーブル内の時間軸(--tw)と合わせて
   配信者ヘッダーの padding-left: --tw で視覚的に揃える */
#st-brand-cell {
  grid-column: 1; grid-row: 1;
  background: var(--c0);
  border-right: 2px solid var(--bd3);
  border-bottom: 2px solid var(--bd3);
  display: flex; align-items: center;
  padding: 0 10px;
}
.st-brand-text {
  font-family: var(--ff-wide); font-size: 1.12rem; letter-spacing: .08em;
  color: var(--cy); text-transform: uppercase; line-height: 1.0;
  border-left: 4px solid var(--cy); padding-left: 9px;
}
.st-brand-sm { font-size: .78rem; letter-spacing: .05em; }

/* B: 配信者ヘッダー */
#st-lane-header-row {
  grid-column: 2; grid-row: 1;
  display: flex; background: var(--c1);
  border-bottom: 2px solid var(--bd3);
  overflow-x: hidden; overflow-y: hidden;
  position: sticky; top: 0; z-index: 25;
  padding-left: var(--tw); /* 時間軸幅分オフセット */
}

/* C: サイドバー */
#st-sidebar-scroll {
  grid-column: 1; grid-row: 2;
  background: var(--c1); border-right: 2px solid var(--bd3);
  overflow-y: auto; overflow-x: hidden;
  display: flex; flex-direction: column; padding-bottom: 40px;
  z-index: 50;
}
#st-sidebar-scroll::-webkit-scrollbar { width: 3px; }
#st-sidebar-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,.15); }

/* SP用タブ */
#st-sidebar-tab {
  display: none;
  position: fixed; top: 50%; left: 0; transform: translateY(-50%);
  z-index: 60;
  width: 22px; height: 56px;
  background: var(--c1); border: 1px solid var(--bd3); border-left: none;
  border-radius: 0 6px 6px 0;
  color: var(--cy); font-size: 1.1rem; font-weight: 700;
  cursor: pointer; transition: all .2s;
  align-items: center; justify-content: center;
}
#st-sidebar-tab:hover { background: var(--cy-bg); }
#st-sidebar-overlay {
  display: none; position: fixed; inset: 0;
  background: rgba(0,0,0,.6); z-index: 49;
}
#st-sidebar-overlay.active { display: block; }

/* ストライプ＋横線はタイムテーブル全体に描画（データなし時も表示） */
#st-timetable {
  grid-column: 2; grid-row: 2;
  overflow: auto; position: relative; background: var(--c0);
  background-image:
    repeating-linear-gradient(
      to bottom,
      rgba(255,255,255,0.000) 0px,
      rgba(255,255,255,0.000) var(--hour-h),
      rgba(255,255,255,0.022) var(--hour-h),
      rgba(255,255,255,0.022) calc(var(--hour-h)*2)
    ),
    repeating-linear-gradient(
      to bottom,
      transparent 0px,
      transparent calc(var(--hour-h) - 1px),
      rgba(160,210,255,0.055) calc(var(--hour-h) - 1px),
      rgba(160,210,255,0.055) var(--hour-h)
    );
}
#st-timetable::-webkit-scrollbar { width: 5px; height: 5px; }
#st-timetable::-webkit-scrollbar-thumb { background: rgba(255,255,255,.12); }

/* ============================================================
   配信者ヘッダーセル
   ============================================================ */
.st-lane-hdr {
  flex: 1; min-width: 160px; height: var(--hdr-h);
  background: var(--c1); border-right: 1px solid var(--bd2);
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px; overflow: hidden; flex-shrink: 0;
}
.st-lane-hdr.yt { background: color-mix(in srgb, var(--c1) 88%, #ff4040); border-top: 3px solid var(--yt); }
.st-lane-hdr.tw { background: color-mix(in srgb, var(--c1) 88%, #9147ff); border-top: 3px solid var(--tw-col); }
.st-hdr-avatar { width:40px;height:40px;border-radius:50%;object-fit:cover;border:2px solid var(--bd2);flex-shrink:0; }
.st-hdr-avatar-fb { width:40px;height:40px;border-radius:50%;background:var(--c2);border:2px solid var(--bd2);display:flex;align-items:center;justify-content:center;font-family:var(--ff-wide);font-size:.88rem;color:var(--cy);flex-shrink:0; }
.st-hdr-info { min-width:0; }
.st-hdr-name { font-family:var(--ff-wide);font-size:1.05rem;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;display:flex;align-items:center;gap:4px; }
.st-hdr-plat { display:flex;align-items:center;gap:4px;margin-top:2px;font-family:var(--ff-body);font-size:.64rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase; }
.st-hdr-plat.yt { color:var(--yt); }
.st-hdr-plat.tw { color:var(--tw-col); }

/* ============================================================
   日次: 時間軸統合
   ============================================================ */
#st-daily-inner { display:flex; min-height:calc(var(--hour-h)*27); min-width:100%; position:relative; }
#st-time-axis-inner { flex:0 0 var(--tw); width:var(--tw); position:sticky; left:0; z-index:10; background:var(--c1); border-right:2px solid var(--bd3); overflow:hidden; }

.st-time-lbl {
  height: var(--hour-h);
  display: flex; align-items: flex-start; justify-content: flex-end;
  padding: 5px 7px 0 0;
  font-family: var(--ff-num); font-size: .92rem; font-weight: 900;
  color: rgba(255,255,255,0.72);
  border-bottom: 1px solid rgba(255,255,255,0.05);
}
.st-time-lbl.is-now { color: #fff; }
.st-time-lbl.is-cur-hour { background: rgba(0,242,255,0.08); }

/* ③ バンドは非表示・現在時刻ラインはタイムテーブル列のみ表示 */
.st-now-line {
  position: absolute; left: 0; right: 0; height: 2px;
  z-index: 22; pointer-events: none;
  background: var(--cy);
  box-shadow: 0 0 0 1px rgba(0,0,0,0.8), 0 0 8px rgba(0,242,255,0.5);
}
/* 時間軸内のラインは非表示 */
#st-time-axis-inner .st-now-line,
#st-weekly-time-axis .st-now-line { display: none; }

#st-daily-lanes { flex:1; display:flex; min-height:calc(var(--hour-h)*27); }
/* ④ PC・SP共通 min-width: 200px */
.st-lane-col { flex:1; position:relative; border-right:1px solid var(--bd2); min-width:200px; min-height:calc(var(--hour-h)*27); }
.st-lane-col.yt { background:var(--yt-lane); }
.st-lane-col.tw { background:var(--tw-lane); }
/* レーン列の横線グリッドのみ（ストライプはtimetable側） */
.st-lane-col::before { content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
  background:repeating-linear-gradient(
    to bottom,
    transparent 0px,
    transparent calc(var(--hour-h) - 1px),
    rgba(160,210,255,0.055) calc(var(--hour-h) - 1px),
    rgba(160,210,255,0.055) var(--hour-h)
  );
}
.st-lane-col::after { content:''; display:none; }
/* バンドは非表示 */
.st-cur-hour-band { display: none; }

/* ============================================================
   配信ブロック
   ============================================================ */
.st-block { position:absolute;left:4px;right:4px;border-radius:2px;cursor:pointer;overflow:hidden;transition:filter .15s,transform .1s;z-index:5;display:flex;flex-direction:column; }
.st-block.yt { background:linear-gradient(160deg,#1e0f0f 55%,rgba(255,64,64,0.12));border:1px solid rgba(255,64,64,0.24);border-left:4px solid var(--yt); }
.st-block.tw { background:linear-gradient(160deg,#130f20 55%,rgba(145,71,255,0.12));border:1px solid rgba(145,71,255,0.24);border-left:4px solid var(--tw-col); }
.st-block:hover { filter:brightness(1.18);transform:translateX(2px);z-index:6; }
.st-block.is-live.yt { background:linear-gradient(160deg,#3a1010 50%,rgba(255,64,64,0.22));border-color:var(--rd);border-left:4px solid var(--rd);filter:brightness(1.15);animation:st-live-glow 2.5s ease infinite; }
.st-block.is-live.tw { background:linear-gradient(160deg,#1e0f35 50%,rgba(145,71,255,0.26));border-color:var(--rd);border-left:4px solid var(--rd);filter:brightness(1.15);animation:st-live-glow 2.5s ease infinite; }
@keyframes st-live-glow{0%,100%{box-shadow:0 0 0 1px rgba(255,71,87,0.25),0 0 12px rgba(255,71,87,0.10);}50%{box-shadow:0 0 0 1px rgba(255,71,87,0.60),0 0 24px rgba(255,71,87,0.22);}}
.st-block.is-live:hover { filter:brightness(1.28); }

.st-block-inner { flex:1;display:flex;flex-direction:column;padding:6px 8px;overflow:hidden;gap:3px; }
.st-block-row1 { display:flex;align-items:stretch;justify-content:space-between;flex-shrink:0;gap:4px;min-height:40px; }
.st-block-tags { display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:3px;flex-shrink:0;width:64px; }
.st-block-live-badge { font-family:var(--ff-body);font-size:.60rem;font-weight:700;letter-spacing:.12em;color:var(--rd);border:1px solid rgba(255,71,87,0.55);display:block;width:100%;text-align:center;padding:2px 4px;line-height:1.4;animation:st-blink 1.5s ease infinite; }
@keyframes st-blink{0%,100%{opacity:1;}50%{opacity:.38;}}
.st-block-game { font-family:var(--ff-body);font-size:.60rem;font-weight:700;letter-spacing:.1em;display:block;width:100%;text-align:center;padding:2px 4px;line-height:1.4;text-transform:uppercase; }
.st-block-game.doa6lr{color:var(--cy);border:1px solid var(--cy-bd);background:var(--cy-bg);}
.st-block-game.doaxvv{color:#ff9ecc;border:1px solid rgba(255,158,204,.32);background:rgba(255,158,204,.07);}
.st-block-game.vvp{color:var(--gd);border:1px solid rgba(200,169,110,.32);background:rgba(200,169,110,.07);}
.st-block-chara { display:flex;align-items:center;gap:4px;justify-content:flex-end;flex-shrink:0;align-self:stretch;overflow:hidden; }
.st-block-chara-icon { width:44px;height:44px;object-fit:cover;object-position:top center;border-radius:2px;border:2px solid rgba(255,255,255,.18);box-shadow:0 2px 8px rgba(0,0,0,.6);flex-shrink:0;align-self:center; }
.st-block-chara-name { font-family:var(--ff-wide);font-size:.62rem;color:var(--gd);text-transform:uppercase;text-shadow:0 1px 4px rgba(0,0,0,.9);white-space:nowrap;text-align:right;overflow:hidden; }
.st-block-chara-name.hidden { display:none; }
.st-block-body { flex:1;display:flex;flex-direction:column;justify-content:center;min-height:0;overflow:hidden;gap:2px; }
.st-block-streamer { font-family:var(--ff-wide);font-size:.88rem;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;flex-shrink:0;display:flex;align-items:center;gap:4px; }
.st-block-title { font-family:var(--ff-body);font-size:.88rem;font-weight:600;color:var(--tx);line-height:1.38;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;min-height:0; }
.st-block-time { font-family:var(--ff-num);font-size:.82rem;font-weight:900;color:rgba(255,255,255,0.80);letter-spacing:.03em;text-align:right;flex-shrink:0;margin-top:2px; }

/* コンパクト（1時間未満） */
.st-block.compact .st-block-inner{flex-direction:row;align-items:center;padding:4px 7px;gap:5px;}
.st-block.compact .st-block-row1{flex-shrink:0;min-height:auto;}
.st-block.compact .st-block-tags{flex-direction:row;width:auto;gap:3px;}
.st-block.compact .st-block-live-badge,.st-block.compact .st-block-game{width:auto;display:inline;}
.st-block.compact .st-block-chara{display:none;}
.st-block.compact .st-block-body{display:none;}
.st-block.compact .st-block-time{margin-top:0;flex-shrink:0;}

/* ============================================================
   週次ビュー
   ============================================================ */
#st-weekly-view { min-height: calc(var(--hour-h)*27); }

/* 週次時: 3行グリッドにしてrow1=brand-cell、col2のrow1/3=timetable */
#st-root.is-weekly {
  grid-template-rows: var(--hdr-h) auto 1fr;
}
#st-root.is-weekly #st-brand-cell {
  grid-column: 1; grid-row: 1;
  display: flex; /* 明示的に表示 */
}
#st-root.is-weekly #st-lane-header-row { display: none; }
#st-root.is-weekly #st-sidebar-scroll {
  grid-column: 1; grid-row: 2 / 4;
}
#st-root.is-weekly #st-timetable {
  grid-column: 2; grid-row: 1 / 4;
}

/* 週次ヘッダー: コーナー(--tw幅)＋曜日セル */
#st-weekly-header-wrap {
  position: sticky; top: 0; z-index: 20;
  display: flex; background: var(--c1);
  border-bottom: 2px solid var(--bd3);
  height: var(--hdr-h);
  align-items: center;
}
/* コーナー: 時間軸と同幅(--tw)のスペーサー */
#st-weekly-corner {
  display: flex;
  flex: 0 0 var(--tw); width: var(--tw); height: 100%;
  background: var(--c1);
  border-right: 1px solid var(--bd2);
  flex-shrink: 0;
}
#st-weekly-hdr-inner { flex: 1; display: flex; }

.st-wk-hdr { flex:1; min-width:200px; height:var(--hdr-h); padding:9px 7px;text-align:center;font-family:var(--ff-wide);font-size:.9rem;color:var(--tx2);border-right:1px solid var(--bd2);line-height:1.35;display:flex;flex-direction:column;align-items:center;justify-content:center; }
.st-wk-hdr span { font-family:var(--ff-num);font-size:.68rem;font-weight:700;opacity:.65;display:block; }
.st-wk-hdr.is-today { color:var(--cy);background:var(--cy-bg); }

#st-weekly-body { display:flex; min-height:calc(var(--hour-h)*27); }
#st-weekly-time-axis { flex:0 0 var(--tw);width:var(--tw);position:sticky;left:0;background:var(--c1);border-right:2px solid var(--bd3);z-index:10; }
#st-weekly-lanes { flex:1;display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));min-height:calc(var(--hour-h)*27); }
/* ④ 週次列にもストライプ */
.st-wk-col {
  position:relative; border-right:1px solid var(--bd2);
  overflow: visible;
}
/* 週次列の横線グリッド */
.st-wk-col::before { content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
  background:repeating-linear-gradient(
    to bottom,
    transparent 0px,
    transparent calc(var(--hour-h) - 1px),
    rgba(160,210,255,0.055) calc(var(--hour-h) - 1px),
    rgba(160,210,255,0.055) var(--hour-h)
  );
}
.st-wk-col.is-today { /* backgroundは上書きしない：ストライプを維持 */ }
.st-wk-col.is-today::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: rgba(0,242,255,0.028); z-index: 0;
}

/* 週次ブロックグループ */
.st-wk-block-group {
  position: absolute; left: 2px; right: 2px;
  display: flex; gap: 2px; z-index: 3;
  overflow: visible;
}
/* グループ内の各スロット */
.st-wk-block-group .st-block {
  position: absolute !important; /* ④ 個別topPxで配置 */
  left: 0; right: 0;
  flex: none; min-width: 0;
  transition: filter .15s, box-shadow .15s;
  overflow: hidden;
}
/* ⑦ ホバーした列を拡大 */
.st-wk-block-group .st-block:hover {
  flex: 2.5 !important;
  filter: brightness(1.2);
  z-index: 10;
  transform: none;
}

/* 週次ブロック内レイアウト */
.st-wk-block-group .st-block .st-block-inner { padding: 5px 6px; gap: 2px; }
/* ⑤ タグ+キャラを縦に並べるラッパー */
.st-block-tags-wrap {
  display: flex; flex-direction: column; gap: 2px;
  flex-shrink: 0;
}
.st-wk-block-group .st-block .st-block-tags { width: 56px; min-height: auto; }
.st-wk-block-group .st-block .st-block-row1 { min-height: auto; }
.st-wk-block-group .st-block .st-block-chara { display: none; }
/* ⑤ キャラはゲームタグ直下 */
.st-wk-block-group .st-block .st-block-chara-below {
  display: flex; align-items: center; gap: 3px;
  overflow: hidden; margin-top: 1px;
}
.st-wk-block-group .st-block .st-block-chara-below img {
  width: 22px; height: 22px; object-fit: cover; object-position: top center;
  border-radius: 2px; border: 1px solid rgba(255,255,255,.18); flex-shrink: 0;
}
.st-wk-block-group .st-block .st-block-chara-below span {
  font-family: var(--ff-wide); font-size: .52rem; color: var(--gd);
  text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* 週次フォント縮小 */
.st-wk-block-group .st-block .st-block-live-badge { font-size: .54rem; padding: 1px 3px; }
.st-wk-block-group .st-block .st-block-game { font-size: .54rem; padding: 1px 3px; }
.st-wk-block-group .st-block .st-block-streamer { font-size: .74rem; }
.st-wk-block-group .st-block .st-block-title { font-size: .74rem; -webkit-line-clamp: 3; }
.st-wk-block-group .st-block .st-block-time { font-size: .68rem; }

/* ⑥ 隠しスロット（デフォルト非表示） */
.st-block.st-wk-slot-hidden { display: none; flex: 1; }
/* ⑥ expandedクラスで展開 */
.st-wk-block-group.expanded .st-block.st-wk-slot-hidden { display: flex; }
.st-wk-block-group.expanded .st-wk-more-btn { background: var(--cy-bg); border-color: var(--cy-bd); color: var(--cy); }

/* ⑥ +Nボタン */
.st-wk-more-btn {
  flex: 0 0 auto; width: 24px;
  background: var(--c2); border: 1px solid var(--bd2);
  border-radius: 2px; color: var(--tx2);
  font-family: var(--ff-wide); font-size: .62rem; font-weight: 700;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  writing-mode: horizontal-tb; transition: all .2s;
}
.st-wk-more-btn:hover { background: var(--cy-bg); border-color: var(--cy-bd); color: var(--cy); }

/* ============================================================
   サイドバー内パーツ
   ============================================================ */
#st-live-banner{display:flex;align-items:center;gap:8px;padding:9px 10px;background:rgba(255,71,87,0.10);border-bottom:2px solid rgba(255,71,87,0.35);cursor:pointer;transition:background .2s;flex-shrink:0;}
#st-live-banner:hover{background:rgba(255,71,87,0.18);}
#st-live-dot{width:9px;height:9px;border-radius:50%;background:var(--rd);flex-shrink:0;animation:st-pulse 1.4s ease infinite;}
#st-live-banner.is-zero #st-live-dot{background:var(--tx3);animation:none;}
#st-live-count{font-family:var(--ff-wide);font-size:1.15rem;color:var(--rd);flex-shrink:0;}
#st-live-banner.is-zero #st-live-count{color:var(--tx3);}
#st-live-label{font-family:var(--ff-body);font-size:.60rem;font-weight:700;letter-spacing:.14em;color:rgba(255,71,87,0.72);text-transform:uppercase;}
#st-live-banner.is-zero #st-live-label{color:var(--tx3);}
@keyframes st-pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.35;transform:scale(.65);}}

.st-sec{padding:10px;border-bottom:1px solid var(--bd2);}
.st-sec:last-of-type{border-bottom:none;}
.st-sec-head{display:flex;align-items:center;justify-content:space-between;width:100%;background:transparent;border:none;cursor:pointer;padding:0;margin-bottom:8px;}
.st-label{font-family:var(--ff-wide);font-size:.86rem;letter-spacing:.16em;color:var(--tx);text-transform:uppercase;}
.st-arrow{color:var(--tx3);transition:transform .25s;flex-shrink:0;}
.st-sec-head[aria-expanded="false"] .st-arrow{transform:rotate(-90deg);}
.st-sec-streamer{padding:9px 10px;}
.st-primary-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:7px;padding:9px 10px;background:var(--cy-bg);border:2px solid var(--cy-bd);color:var(--cy);font-family:var(--ff-wide);font-size:.84rem;letter-spacing:.1em;cursor:pointer;border-radius:0;transition:all .2s;text-transform:uppercase;}
.st-primary-btn:hover{background:rgba(0,242,255,0.20);border-color:var(--cy);}

/* キャラグリッド（3行デフォルト表示、折り畳み状態） */
#st-chara-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;max-height:calc(62px * 3 + 3px * 2);overflow:hidden;transition:max-height .35s ease;}
#st-chara-grid.expanded{max-height:1000px;}
.st-chara-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px 2px 4px;background:var(--c2);border:1px solid var(--bd);cursor:pointer;color:var(--tx3);font-family:var(--ff-body);font-size:.46rem;font-weight:700;text-transform:uppercase;text-align:center;line-height:1.2;border-radius:0;transition:all .15s;}
.st-chara-btn img{width:40px;height:40px;object-fit:cover;object-position:top center;opacity:.48;filter:grayscale(55%);transition:all .15s;display:block;}
.st-chara-btn.is-on{background:var(--cy-bg);border-color:var(--cy-bd);color:var(--cy);}
.st-chara-btn.is-on img{opacity:1;filter:none;}
.st-chara-btn:hover img{opacity:.85;filter:grayscale(0);}
.st-chara-btn:hover{border-color:var(--cy-bd);color:var(--tx2);}
#st-chara-more{width:100%;padding:5px 0;margin-top:4px;background:transparent;border:1px solid var(--bd2);color:var(--tx3);font-family:var(--ff-body);font-size:.68rem;font-weight:700;cursor:pointer;border-radius:0;transition:all .15s;}
#st-chara-more:hover{border-color:var(--cy-bd);color:var(--cy);}

.st-checks{display:flex;flex-wrap:wrap;gap:3px;}
.st-chk{padding:5px 9px;font-family:var(--ff-wide);font-size:.78rem;background:var(--c2);border:1px solid var(--bd2);color:var(--tx2);cursor:pointer;text-transform:uppercase;border-radius:0;transition:all .15s;line-height:1;}
.st-chk.is-active{background:var(--cy-bg);border-color:var(--cy-bd);color:var(--cy);}
.st-chk:hover:not(.is-active){border-color:var(--bd3);color:var(--tx);background:var(--c3);}
#st-reset-btn{width:100%;padding:8px;background:transparent;border:1px solid var(--bd2);color:var(--tx3);font-family:var(--ff-wide);font-size:.78rem;letter-spacing:.14em;cursor:pointer;border-radius:0;transition:all .15s;text-transform:uppercase;}
#st-reset-btn:hover{border-color:var(--rd);color:var(--rd);background:rgba(255,71,87,0.07);}

#st-loading{display:flex;align-items:center;justify-content:center;gap:8px;height:240px;}
.st-dot{width:9px;height:9px;border-radius:50%;background:var(--cy);animation:st-dot 1.2s ease infinite;}
.st-dot:nth-child(2){animation-delay:.2s;}.st-dot:nth-child(3){animation-delay:.4s;}
@keyframes st-dot{0%,80%,100%{opacity:.2;transform:scale(.6);}40%{opacity:1;transform:scale(1);}}
#st-empty{
  display:none;
  position:fixed; top:50%; left:50%; transform:translate(-50%,-50%);
  flex-direction:column;align-items:center;justify-content:center;
  gap:12px;color:var(--tx3);z-index:100;pointer-events:none;
}
#st-empty span{font-size:3rem;}
#st-empty p{font-family:var(--ff-wide);font-size:1.3rem;margin:0;color:var(--tx2);}

/* ============================================================
   フローティングフィルターピル
   ============================================================ */
#st-float-bar{position:fixed;bottom:12px;left:0;right:0;display:flex;justify-content:center;align-items:flex-end;z-index:500;pointer-events:none;gap:10px;}
#st-filter-fab{display:none;width:44px;height:44px;background:rgba(10,10,18,0.97);border:1.5px solid var(--cy-bd);border-radius:50%;color:var(--cy);cursor:pointer;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(0,0,0,0.7);pointer-events:all;position:fixed;bottom:16px;right:16px;z-index:501;}
#st-float-pill{display:flex;align-items:stretch;background:rgba(9,9,18,0.97);border:1.5px solid var(--bd3);border-radius:40px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 8px 40px rgba(0,0,0,0.8),0 0 0 1px rgba(0,242,255,0.07);pointer-events:all;overflow:hidden;transition:opacity .25s,transform .25s;}
#st-float-pill.pill-hidden{opacity:0;transform:translateY(10px);pointer-events:none;}
.st-fp-section{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5px 12px;gap:5px;}
.st-fp-lbl{font-family:var(--ff-wide);font-size:.72rem;letter-spacing:.26em;color:#fff;text-transform:uppercase;white-space:nowrap;line-height:1;text-shadow:0 0 10px rgba(255,255,255,0.35);}
.st-fp-date-row{display:flex;align-items:center;gap:5px;}
.st-fp-btns{display:flex;align-items:center;gap:3px;}
.st-fp-div{width:1.5px;background:rgba(255,255,255,0.35);flex-shrink:0;margin:8px 0;}
.st-toggle-btn,.st-lang-btn,.st-plat-btn{display:flex;align-items:center;gap:4px;padding:4px 11px;height:26px;background:transparent;border:1.5px solid transparent;color:var(--tx3);font-family:var(--ff-wide);font-size:.78rem;letter-spacing:.08em;cursor:pointer;border-radius:18px;transition:all .15s;white-space:nowrap;text-transform:uppercase;}
.st-toggle-btn{font-size:.84rem;}
.st-toggle-btn.is-active,.st-lang-btn.is-active,.st-plat-btn.is-active{background:var(--cy-bg);border-color:var(--cy-bd);color:var(--cy);}
.st-plat-btn[data-plat="youtube"].is-active{background:var(--yt-bg);border-color:var(--yt-bd);color:var(--yt);}
.st-plat-btn[data-plat="twitch"].is-active{background:var(--tw-bg);border-color:var(--tw-bd);color:var(--tw-col);}
.st-toggle-btn:hover:not(.is-active),.st-lang-btn:hover:not(.is-active),.st-plat-btn:hover:not(.is-active){color:var(--tx);border-color:var(--bd2);}
#st-date-prev,#st-date-next{width:24px;height:24px;padding:0;border-radius:50%;background:var(--c2);border:1.5px solid var(--bd2);color:var(--tx2);font-size:1.0rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;}
#st-date-prev:hover,#st-date-next:hover{border-color:var(--cy-bd);color:var(--cy);}
#st-date-label{font-family:var(--ff-num);font-size:.80rem;font-weight:700;color:var(--tx);min-width:80px;text-align:center;white-space:nowrap;}

/* ============================================================
   モーダル（4列・スライドオプション・LIVE色変え）
   ============================================================ */
.st-modal{position:fixed;inset:0;z-index:2000;display:none;}
.st-modal.is-open{display:block;}
.st-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.82);backdrop-filter:blur(6px);}
.st-modal-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(860px,96vw);max-height:82vh;background:var(--c1);border:2px solid var(--bd3);display:flex;flex-direction:column;box-shadow:0 24px 90px rgba(0,0,0,.9);animation:st-mi .2s ease;}
@keyframes st-mi{from{opacity:0;transform:translate(-50%,-53%);}to{opacity:1;transform:translate(-50%,-50%);}}
.st-modal-header{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:2px solid var(--bd3);flex-shrink:0;}
.st-modal-title{font-family:var(--ff-wide);font-size:1.0rem;letter-spacing:.28em;color:var(--cy);white-space:nowrap;flex-shrink:0;text-transform:uppercase;}
#st-modal-search{flex:1;height:34px;background:var(--c2);border:1.5px solid var(--bd2);color:var(--tx);padding:0 12px;font-size:.86rem;font-family:var(--ff-body);outline:none;border-radius:0;transition:border-color .2s;}
#st-modal-search:focus{border-color:var(--cy-bd);}
#st-modal-search::placeholder{color:var(--tx3);}
#st-modal-close{width:34px;height:34px;background:var(--c2);border:1.5px solid var(--bd2);color:var(--tx2);font-size:.88rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:0;transition:all .15s;}
#st-modal-close:hover{border-color:var(--rd);color:var(--rd);}
#st-modal-list{overflow-y:auto;padding:12px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;align-content:start;}
#st-modal-list::-webkit-scrollbar{width:3px;}
#st-modal-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);}

/* モーダルカード */
.st-sc-card{background:var(--c2);border:1.5px solid var(--bd2);cursor:pointer;transition:all .15s;display:flex;flex-direction:column;overflow:hidden;}
.st-sc-card:hover{border-color:var(--cy-bd);}
/* LIVEはカード全体色変え */
.st-sc-card.is-live{background:rgba(255,71,87,0.08);border-color:rgba(255,71,87,0.45);}
.st-sc-card.is-live:hover{border-color:var(--rd);}

/* カード上部（クリックでオプション展開） */
.st-sc-top{display:flex;align-items:center;gap:8px;padding:10px;cursor:pointer;}
.st-sc-avatar{width:38px;height:38px;border-radius:50%;object-fit:cover;border:2px solid var(--bd2);flex-shrink:0;}
.st-sc-avatar-fb{width:38px;height:38px;border-radius:50%;background:var(--c0);border:2px solid var(--bd2);display:flex;align-items:center;justify-content:center;font-size:.88rem;color:var(--cy);font-family:var(--ff-wide);flex-shrink:0;}
.st-sc-info{min-width:0;flex:1;}
.st-sc-name{font-family:var(--ff-wide);font-size:.88rem;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;display:flex;align-items:center;gap:4px;}
.st-sc-meta{display:flex;align-items:center;gap:5px;margin-top:2px;}
.st-sc-plat{display:flex;align-items:center;gap:3px;font-family:var(--ff-body);font-size:.62rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;}
.st-sc-plat.yt{color:var(--yt);}.st-sc-plat.tw{color:var(--tw-col);}
.st-sc-live-badge{font-family:var(--ff-body);font-size:.58rem;font-weight:700;color:var(--rd);animation:st-blink 1.5s ease infinite;}

/* スライドオプション */
.st-sc-options{
  max-height:0;overflow:hidden;
  transition:max-height .25s ease;
  border-top:0px solid transparent;
}
.st-sc-options.open{
  max-height:80px;
  border-top:1px solid var(--bd2);
}
.st-sc-actions{display:flex;gap:1px;padding:1px;}
.st-sc-btn{flex:1;padding:8px 4px;background:var(--c3);border:none;color:var(--tx2);font-family:var(--ff-body);font-size:.70rem;font-weight:700;letter-spacing:.06em;cursor:pointer;transition:all .15s;text-align:center;text-transform:uppercase;}
.st-sc-btn:hover{background:var(--cy-bg);color:var(--cy);}
.st-sc-btn.arch:hover{background:var(--c2);color:var(--tx);}

.st-modal-empty{grid-column:1/-1;text-align:center;padding:40px;color:var(--tx3);font-family:var(--ff-body);font-size:.86rem;}

body.schedule-page .breadcrumb-container{margin-top:0!important;}

/* ============================================================
   SP対応（768px以下）
   ============================================================ */
@media (max-width: 768px) {
  /* ① グリッドを1列・2行に */
  #st-root { grid-template-columns:1fr; grid-template-rows:var(--hdr-h) 1fr; }

  /* ② STREAM SCHEDULEを非表示 */
  #st-brand-cell { display:none; }

  /* ③ 配信者ヘッダーをcol1全幅・時間軸幅分オフセット（時間軸と揃える） */
  #st-lane-header-row { grid-column:1; grid-row:1; padding-left:var(--tw); }

  /* ④ タイムテーブルをcol1全幅 */
  #st-timetable { grid-column:1; grid-row:2; }

  /* WEEKLY時はtimetableがrow1から */
  #st-root.is-weekly #st-timetable { grid-column:1; grid-row:1 / 3; }
  #st-root.is-weekly #st-sidebar-scroll { grid-column:1; grid-row:1 / 3; }

  /* サイドバーをスライドイン式に */
  #st-sidebar-scroll {
    grid-column:1;
    position:fixed;top:var(--header-height,78px);left:0;bottom:0;
    width:82vw;max-width:300px;
    transform:translateX(-110%);
    transition:transform .28s cubic-bezier(.4,0,.2,1);
    border-right:2px solid var(--cy-bd);
    box-shadow:6px 0 28px rgba(0,0,0,.7);z-index:50;
  }
  #st-sidebar-scroll.sp-open { transform:translateX(0); }
  #st-sidebar-tab { display:flex; }
  #st-sidebar-tab.sp-open { left:min(calc(82vw - 2px),298px); }
  #st-filter-fab { display:flex; }
  #st-float-pill { display:none; }
  #st-float-pill.sp-pill-open { display:flex; }
  #st-float-bar { flex-direction:column;align-items:flex-end;bottom:70px;right:16px;left:auto;width:auto;justify-content:flex-end; }
  #st-float-pill { flex-direction:column;border-radius:16px;width:auto;min-width:220px; }
  .st-fp-div { width:100%;height:1.5px;margin:0 8px; }
  .st-fp-section { padding:8px 14px;width:100%; }
  .st-fp-date-row { flex-wrap:wrap; }
  .st-modal-content { width:96vw;max-height:90vh; }
  #st-modal-list { grid-template-columns:repeat(2,1fr); }
  .st-lane-col { min-width:130px; }
  .st-lane-hdr { min-width:130px; }
  /* SP: テキスト縮小 */
  .st-block-title { font-size:.80rem; }
  .st-block-streamer { font-size:.80rem; }
  .st-block-time { font-size:.74rem; }
  .st-block-inner { padding:5px 6px; }
}
@media (max-width:480px) {
  #st-modal-list { grid-template-columns:1fr; }
}

/* ============================================================
   追加対応（元ファイルに手を加えず末尾に追記）
   ============================================================ */

/* DAILY: ヘッダーとタイムテーブル本体を同じラッパーで包み列幅を一致させる */
.st-daily-wrap { display:flex; flex-direction:column; flex:1; min-width:max-content; }
.st-daily-hdr-row {
  display:flex; position:sticky; top:0; z-index:25;
  background:var(--c1); border-bottom:2px solid var(--bd3);
  flex-shrink:0; width:100%;
}
.st-daily-hdr-corner {
  flex:0 0 var(--tw); width:var(--tw);
  background:var(--c0); border-right:2px solid var(--bd3); flex-shrink:0;
}

/* ② narrow: 列幅280px未満でキャラをゲームタグ下に縦積み・フォント縮小 */
.st-block.narrow .st-block-row1 { flex-direction:column;align-items:flex-start;min-height:auto;gap:2px; }
.st-block.narrow .st-block-tags { width:auto;flex-direction:row;gap:3px;flex-wrap:wrap; }
.st-block.narrow .st-block-chara { justify-content:flex-start;align-self:auto;flex-direction:row;gap:4px; }
.st-block.narrow .st-block-chara-icon { width:28px;height:28px; }
.st-block.narrow .st-block-chara-name { font-size:.54rem;text-align:left; }
.st-block.narrow .st-block-inner { padding:4px 6px;gap:2px; }
.st-block.narrow .st-block-streamer { font-size:.72rem; }
.st-block.narrow .st-block-title { font-size:.72rem;-webkit-line-clamp:3; }
.st-block.narrow .st-block-time { font-size:.68rem; }

/* 配信者登録フローティングボタン */
#st-register-btn {
  position:fixed; bottom:20px; left:20px; z-index:499;
  display:flex; align-items:center; gap:8px;
  padding:10px 16px; background:#5865F2;
  border:1.5px solid rgba(255,255,255,0.18); border-radius:6px;
  color:#fff; font-family:var(--ff-wide); font-size:.80rem;
  font-weight:700; letter-spacing:.08em;
  text-decoration:none; white-space:nowrap;
  box-shadow:0 4px 20px rgba(88,101,242,0.45);
  transition:background .18s,box-shadow .18s,transform .12s;
}
#st-register-btn:hover {
  background:#4752c4;
  box-shadow:0 6px 28px rgba(88,101,242,0.65);
  transform:translateY(-2px);
}
#st-register-btn svg { flex-shrink:0; }

/* #st-weekly-corner内のテキストを非表示（スペーサーとしてのみ使用） */
#st-weekly-corner span { display: none; }