@charset "UTF-8";
      /* --- filter panel (base: inline card) --- */
      .prog-side { margin:0 0 1.2rem; padding:0.85rem; border:1px solid #e3e6ea; border-radius:8px; background:#fbfcfd; }
      .prog-side-toggle { display:none; }
      .filter-mode { display:flex; gap:0.4rem; margin:0 0 0.6rem; }
      .filter-mode button { flex:1 1 0; font-size:0.82rem; font-weight:700; border:1px solid #d9dde2; background:#fff;
        color:#5b636b; padding:0.5em 0.6em; border-radius:6px; cursor:pointer; line-height:1.3; }
      .filter-mode button.active { background:#12707c; color:#fff; border-color:#12707c; }
      .day-filter, .cat-filter { display:flex; flex-wrap:wrap; gap:0.4rem; }
      .day-filter button, .cat-filter button { font-size:0.82rem; font-weight:600; border:1px solid #d9dde2;
        background:#fff; color:#5b636b; padding:0.34em 0.9em; border-radius:999px; cursor:pointer; transition:all .15s; line-height:1.4; }
      .day-filter button:hover, .cat-filter button:hover { border-color:#adb5bd; }
      .day-filter button.active { font-weight:700; }
      .day-filter button[data-day="all"].active { background:#eceef0; color:#343a40; border-color:#b7bcc2; }
      .day-filter button[data-day="d1"].active { background:#eaf2fb; color:#1b6ec2; border-color:#a9cbec; }
      .day-filter button[data-day="d2"].active { background:#fdefe0; color:#bf6f0a; border-color:#eec592; }
      .day-filter button[data-day="d3"].active { background:#e9f5ec; color:#2f8340; border-color:#a9d7b5; }
      .day-filter button[data-day="od"].active { background:#efeafc; color:#6642c8; border-color:#c9b8f0; }
      .cat-filter button.active { background:#e6f4f5; color:#12707c; border-color:#8fd0d6; font-weight:700; }
      /* --- category heading (案2: 淡ティール帯＋ティール左アクセント) --- */
      .prog-cat-block { margin:0; scroll-margin-top:56px; }
      .prog-cat { background:#e6f4f5; color:#12707c; font-size:1.08rem; font-weight:700; padding:0.5em 0.9em;
        letter-spacing:0.06em; border-left:5px solid #1c9aa8; border-radius:4px; margin:2rem 0 1rem !important;
        scroll-margin-top:56px; }
      .prog-cat .cat-sub { font-size:0.8rem; font-weight:400; color:#5f8c92; margin-left:0.4em; }
      /* --- session card (header strip + body) --- */
      .sess-card { border:1px solid #e3e6ea; border-radius:5px; background:#fff; margin-bottom:0.8rem; overflow:hidden; }
      .sess-head { display:flex; align-items:flex-start; justify-content:space-between; gap:0.6rem;
        background:#f6f7f9; padding:0.5rem 0.9rem; border-bottom:1px solid #e6e9ed; }
      .sess-head--dateonly { justify-content:flex-start; }
      .sess-card--d1 .sess-head { border-bottom:2px solid #cadcf0; }
      .sess-card--d2 .sess-head { border-bottom:2px solid #f0d9b8; }
      .sess-card--d3 .sess-head { border-bottom:2px solid #c6e2cd; }
      .sess-title { flex:1 1 auto; min-width:0; font-weight:700; color:#343a40; font-size:0.97rem; letter-spacing:0.02em; }
      .topic-chip { display:inline-block; font-size:0.78rem; background:#eef1f4; color:#5b636b;
        padding:0.1em 0.6em; border-radius:4px; margin-left:0.4em; font-weight:600; }
      .date-badge { flex-shrink:0; margin-top:0.1em; font-size:0.75rem; font-weight:700; padding:0.2em 0.7em; border-radius:4px; white-space:nowrap; }
      .date-badge--d1 { background:#eaf2fb; color:#1b6ec2; }
      .date-badge--d2 { background:#fdefe0; color:#bf6f0a; }
      .date-badge--d3 { background:#e9f5ec; color:#2f8340; }
      .date-badge--other { background:#eef0f2; color:#6c757d; }
      .sess-body { padding:0.72rem 0.9rem 0.82rem; }
      .sess-theme { background:#f5f7fa; border:1px solid #e8ebef; border-radius:5px; padding:0.5rem 0.75rem;
        margin:0 0 0.5rem; font-weight:600; color:#343a40; line-height:1.55; font-size:0.95rem; }
      .role-row { display:flex; gap:0.55rem; margin:0.45rem 0; align-items:flex-start; }
      .role-row:last-child { margin-bottom:0; }
      .role-pill { flex-shrink:0; font-size:0.72rem; font-weight:700; padding:0.24em 0; width:3.5em; text-align:center;
        border-radius:4px; letter-spacing:0.08em; margin-top:0.15em; }
      .role-pill--chair { background:#eef0f2; color:#495057; }
      .role-pill--speaker { background:#e9f0f5; color:#1c6a91; }
      .role-pill--cohost { background:#f0f1f3; color:#6c757d; }
      .people { flex:1 1 auto; min-width:0; }
      /* 名前＋所属：1行に収まれば1行、収まらなければ所属が丸ごと次行（名前／所属の2段） */
      .person { display:flex; flex-wrap:wrap; align-items:baseline; padding:0.12rem 0; line-height:1.5; }
      .person .p-name { font-weight:500; color:#212529; }
      .person .p-affil { font-size:0.83rem; color:#868e96; margin-left:0.15em; }
      .talk { flex:0 0 100%; font-size:0.88rem; color:#3b4a66; padding:0.15rem 0 0.15rem 0.8rem; border-left:2px solid #d5dbe6;
        margin:0.25rem 0 0.3rem; line-height:1.55; }
      .yb-grid { display:grid; grid-template-columns:1fr 1fr; gap:0.7rem; }
      .yb-grid .sess-card { margin-bottom:0; }
      /* Year Book は常に 名前／所属 の2段 */
      .sess-card--yb .person .p-affil { flex:0 0 100%; margin-left:0; }
      @media (max-width: 767px) {
        .yb-grid { grid-template-columns:1fr; }
        .day-filter button, .cat-filter button { font-size:0.78rem; padding:0.3em 0.7em; }
        /* Year Book が1列になる幅では通常挙動（収まれば1行）に戻す */
        .sess-card--yb .person .p-affil { flex:0 1 auto; margin-left:0.15em; }
      }
      /* PC: フィルタをブラウザ右端のドロワーパネルに（開閉＝右に隠す/出す） */
      @media (min-width: 992px) {
        .prog-side { position:fixed; top:90px; right:0; z-index:1000; display:flex; align-items:flex-start;
          margin:0; padding:0; border:none; background:none; transition:transform 0.28s ease; }
        .prog-side.closed { transform:translateX(180px); }
        .prog-side-toggle { display:flex; flex-direction:column; align-items:center; gap:0.5em; align-self:flex-start;
          margin-top:4px; background:#12707c; color:#fff; border:none; cursor:pointer; padding:0.85em 0.45em;
          border-radius:6px 0 0 6px; font-size:0.74rem; font-weight:700; box-shadow:-2px 2px 8px rgba(0,0,0,0.12); }
        .prog-side-toggle span { writing-mode:vertical-rl; letter-spacing:0.12em; }
        .prog-side-toggle .toggle-ico { transition:transform 0.28s; }
        .prog-side.closed .toggle-ico { transform:rotate(180deg); }
        .prog-side-inner { width:180px; box-sizing:border-box; background:#fff; border:1px solid #e3e6ea; border-right:none;
          border-radius:6px 0 0 6px; box-shadow:0 4px 14px rgba(0,0,0,0.12); padding:0.8rem;
          max-height:calc(100vh - 110px); overflow-y:auto; }
        .filter-mode { flex-direction:column; gap:0.35rem; margin-bottom:0.55rem; padding-bottom:0.55rem;
          border-bottom:1px solid #eceef1; }
        .filter-mode button { flex:none; }
        .day-filter, .cat-filter { flex-direction:column; gap:0.3rem; }
        .day-filter button, .cat-filter button { width:100%; border-radius:6px; text-align:center; }
      }
