/* ==========================================================
   東北アイドル初期衝動 — 表示用
   色はサイト側の変数があればそれを使い、無ければ実測値を使います
   ========================================================== */
:root{
  /* Elementorのサイト設定 → グローバルカラー を参照します。
     Elementorが無い場合や色名が変わった場合に備えて、順に控えを持たせています。 */
  --tif-w:    var(--e-global-color-text,      var(--e-gv-201292d, #FFFFFF));
  --tif-head: var(--e-global-color-primary,   var(--e-gv-201292d, #FFFFFF));
  --tif-muted:var(--e-global-color-secondary, var(--e-gv-d3b4e76, #B4A8BE));
  --tif-acc:  var(--e-global-color-accent,    var(--e-gv-201292d, #FFFFFF));
  --tif-blk:  var(--e-global-color-tifblack,  var(--e-gv-5c35890, #000000));
  --tif-wall: var(--e-global-color-tifwall,   var(--e-gv-86e9fb5, #34253A));
  --tif-light:var(--e-global-color-tiflight,  var(--e-gv-4719c79, #4B3158));
  --tif-dark: var(--e-global-color-tifdark,   var(--e-gv-9496340, #271C2A));
  --tif-vig:  var(--e-global-color-tifvig,    var(--e-gv-d84de28, #1D1424));
  --tif-line: var(--e-global-color-tifline,   var(--e-gv-a850947, #514159));
}
.tif-tt,.tif-lineup,.tif-rolls,.tif-namelist,.tif-count-lead,.tif-modal{
  font-size:var(--tif-fs,16pt);
  line-height:1.6;
  --w:var(--tif-w);
  --head:var(--tif-head);
  --muted:var(--tif-muted);
  --acc:var(--tif-acc);
  --blk:var(--tif-blk);
  --line:var(--tif-line);
  --panel:rgba(0,0,0,.38);
  color:var(--w);
}
.tif-hint{background:#fff3cd;color:#664d03;border:1px solid #ffe69c;padding:10px 14px;margin:10px 0;font-size:13px}

/* ---------- タブ ---------- */
.tif-tabs{display:flex;gap:2px;margin-bottom:2px;flex-wrap:wrap}
.tif-tab{flex:0 0 auto;background:rgba(255,255,255,.08);color:var(--w);border:0;font:inherit;
  font-size:.72em;letter-spacing:.08em;padding:.7em 1.3em;cursor:pointer;display:flex;gap:8px;align-items:baseline}
.tif-tab.is-active{background:var(--acc);color:var(--blk);font-weight:700}
.tif-tab-date{font-size:.55em;opacity:.7}

/* ---------- タイムテーブル ---------- */
.tif-tt-panel{display:none;padding-top:18px}
.tif-tt-panel.is-active{display:block}
.tif-tt-empty{padding:40px 0;text-align:center;color:var(--muted);font-size:.8em}
.tif-vtabs{display:none;gap:2px;overflow-x:auto;margin-bottom:10px;padding-bottom:4px}
.tif-vtab{flex:0 0 auto;background:rgba(255,255,255,.08);color:var(--w);border:0;font:inherit;
  font-size:.6em;padding:.65em 1em;cursor:pointer;white-space:nowrap}
.tif-vtab.is-active{background:var(--acc);color:var(--blk);font-weight:700}

/* 会場が少ないときは列を伸ばして幅いっぱいに収め、
   多いとき（特典会など）は列の最小幅を保ったまま横スクロールにします。
   時間軸は列の外側にあるので、横スクロールしても左に残ります。 */
.tif-tt-grid{display:flex;gap:0;overflow:visible;max-width:100%;
  --tif-ppm:var(--tif-ppm-pc,2.8);
  --tif-tt-h:calc(var(--tif-ppm) * var(--tif-span,600) * 1px);
  --tif-tt-hour-h:calc(var(--tif-ppm) * 60px)}
.tif-tt-axis{flex:0 0 52px;min-width:52px}
.tif-tt-ghost{background:transparent;visibility:hidden}
.tif-tt-axis-track{position:relative;height:var(--tif-tt-h)}
.tif-tt-hour{position:absolute;left:0;font-size:.55em;color:var(--muted);transform:translateY(-50%)}
.tif-tt-cols{display:flex;gap:2px;flex:1 1 auto;min-width:0;
  overflow-x:auto;overflow-y:hidden;padding-bottom:10px;
  scrollbar-width:thin;overscroll-behavior-x:contain}
.tif-tt-col{flex:1 0 136px;min-width:0}
.tif-tt-col.is-hidden{display:none}
.tif-tt-cols::-webkit-scrollbar{height:10px}
.tif-tt-cols::-webkit-scrollbar-thumb{background:rgba(255,255,255,.28);border-radius:5px}
.tif-tt-cols::-webkit-scrollbar-track{background:rgba(255,255,255,.06);border-radius:5px}

/* 施設で絞り込むタブ（会場の列が多いときだけ出ます） */
.tif-ftabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.tif-ftab{background:transparent;color:var(--w);border:1px solid var(--line);font:inherit;
  font-size:.62em;padding:.6em 1em;cursor:pointer;border-radius:999px;white-space:nowrap;
  display:inline-flex;align-items:center;gap:.5em}
.tif-ftab:hover{border-color:var(--acc)}
.tif-ftab.is-active{background:var(--acc);color:var(--blk);border-color:var(--acc);font-weight:700}
.tif-ftab-n{font-size:.85em;opacity:.65;font-variant-numeric:tabular-nums}
.tif-ftab.is-active .tif-ftab-n{opacity:.75}
/* 横に流れることを伝える目印 */
.tif-tt-grid.is-wide .tif-tt-cols{
  -webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);
  mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}
.tif-tt-grid.is-wide .tif-tt-cols.is-end{-webkit-mask-image:none;mask-image:none}
.tif-tt-scrollnote{margin:0 0 10px;font-size:.58em;color:var(--muted)}
/* 会場名は省略せず折り返します。列の高さがそろうよう、すべての見出しを同じ高さにします。
   既定は2行ぶん。会場名が長くて入りきらないときは、JSが一番高いものに合わせて
   --tif-vname-h を立てます（時間軸側の空見出しも同じ高さになります）。 */
.tif-tt-vname{background:var(--blk);color:var(--head);font-size:.62em;font-weight:700;text-align:center;
  box-sizing:border-box;height:var(--tif-vname-h, calc(2 * 1.3em + 1.2em));padding:.5em .3em;line-height:1.25;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15em;
  white-space:normal;overflow-wrap:anywhere;word-break:break-word}
/* 場所の補足（2Fロビー など）。会場名の下に小さく出します */
.tif-tt-vspot{font-size:.78em;font-weight:400;color:var(--muted);letter-spacing:.02em}
.tif-tt-track{position:relative;height:var(--tif-tt-h);background:rgba(0,0,0,.22);
  background-image:repeating-linear-gradient(to bottom,rgba(255,255,255,.07) 0 1px,transparent 1px var(--tif-tt-hour-h,90px))}
.tif-slot{position:absolute;left:2px;right:2px;background:var(--panel);border:1px solid var(--line);
  padding:5px 22px 4px 7px;overflow:hidden;display:flex;flex-direction:column;gap:1px;justify-content:center}
/* グループ名は省略しません。長い名前は文字を少し小さくして枠に収めます */
.tif-slot-name{color:var(--head);font-size:.7em;font-weight:700;line-height:1.2;overflow-wrap:anywhere;word-break:break-word}
.tif-slot.is-long .tif-slot-name{font-size:.58em;line-height:1.15}
.tif-slot-time{font-size:.55em;color:var(--muted);white-space:nowrap;letter-spacing:.02em}
.tif-slot.is-short{padding:3px 20px 3px 6px}
.tif-slot.is-short .tif-slot-name{font-size:.62em;line-height:1.2}
.tif-slot.is-short .tif-slot-time{font-size:.5em}
/* 名前が枠に入りきらないときは、JSが段階的に小さくします（切れるよりは小さく） */
.tif-slot.is-tight .tif-slot-name{font-size:.52em;line-height:1.14}
.tif-slot.is-tight .tif-slot-time{font-size:.46em}
.tif-slot.is-tight{padding:2px 18px 2px 5px}
.tif-slot.is-tighter .tif-slot-name{font-size:.45em;line-height:1.1}
.tif-slot.is-tighter .tif-slot-time{font-size:.42em}
.tif-slot.is-tighter{padding:1px 16px 1px 4px}
/* テーマ側に [type="button"] への指定があり、クラスだけでは同じ強さで負けます。
   type="button" を付けているボタンは、要素名も足して確実に当てます。 */
button.tif-fav{position:absolute;right:2px;top:2px;background:none;border:0;color:rgba(255,255,255,.28);
  cursor:pointer;font-size:.7em;line-height:1;padding:3px}
button.tif-fav:hover{color:var(--acc)}
.tif-slot.is-fav{border-color:var(--acc)}
.tif-slot.is-fav .tif-fav{color:var(--acc)}
.tif-tt-note{margin-top:14px;font-size:.6em;color:var(--muted)}

@media(max-width:820px){
  .tif-vtabs{display:flex}
  .tif-vtab.is-hidden{display:none}
  /* スマホは会場タブで1列ずつ見るので、横スクロールは使いません */
  .tif-tt-cols{display:block;overflow:visible;padding-bottom:0}
  .tif-tt-col{display:none;min-width:0}
  .tif-tt-col.is-active{display:block}
  .tif-tt-col.is-hidden{display:none}
  .tif-tt-grid.is-wide .tif-tt-cols{-webkit-mask-image:none;mask-image:none}
  .tif-tt-scrollnote{display:none}
  /* 施設タブは折り返すと縦に伸びるので、横に流します */
  .tif-ftabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;
    scrollbar-width:none;-ms-overflow-style:none}
  .tif-ftabs::-webkit-scrollbar{display:none}
  .tif-ftab{flex:0 0 auto}
}
/* 会場が多くて列が細くなりすぎる場合だけ、文字を詰めます */
@media(min-width:821px){
  .tif-tt-col{container-type:inline-size}
}

/* ---------- 出演者一覧 ---------- */
.tif-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:22px}
.tif-chip{background:transparent;color:var(--w);border:1px solid var(--line);font:inherit;font-size:.68em;
  padding:.65em 1.3em;cursor:pointer}
.tif-chip.is-active{background:var(--acc);color:var(--blk);border-color:var(--acc);font-weight:700}
.tif-vselect{background:transparent;color:var(--w);border:1px solid var(--line);font:inherit;font-size:.68em;padding:.6em .8em}
.tif-vselect option{color:#111}

.tif-grid{display:grid;grid-template-columns:repeat(var(--tif-grid-cols,4),minmax(0,1fr));gap:14px}
.tif-card{background:var(--panel);border:1px solid var(--line);cursor:pointer;transition:border-color .15s,transform .15s}
.tif-card:hover{border-color:var(--w);transform:translateY(-3px)}
.tif-card-ph{aspect-ratio:3/2;background:linear-gradient(135deg,var(--tif-light),var(--tif-dark));overflow:hidden}
.tif-card-ph img{width:100%;height:100%;object-fit:cover;display:block}
.tif-card-name{color:var(--head);font-size:.8em;font-weight:700;text-align:center;padding:.8em .7em .2em;margin:0;line-height:1.4}
.tif-card-slot{font-size:.6em;color:var(--muted);text-align:center;padding:0 .8em 1em;margin:0}
/* 出演枠の行。開催日＝黒いラベル／会場＝白／時間＝薄い色の等幅 */
.tif-sl-list{list-style:none;margin:0;padding:0}
.tif-sl{display:flex;flex-direction:column;align-items:flex-start;gap:.35em;line-height:1.4}
.tif-sl-body{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25em .55em}
.tif-sl-day{background:var(--tif-blk,#000);color:var(--tif-w,#fff);font-size:.78em;letter-spacing:.06em;
  padding:.3em .7em;white-space:nowrap;line-height:1;display:inline-flex;align-items:baseline;gap:.6em}
.tif-sl-date{color:var(--tif-muted);font-weight:400;letter-spacing:.08em;font-variant-numeric:tabular-nums;text-transform:uppercase}
.tif-sl-kind{border:1px solid var(--tif-muted);color:var(--tif-muted);font-size:.72em;letter-spacing:.06em;
  padding:.25em .6em;white-space:nowrap;line-height:1}
.tif-sl-venue{color:var(--tif-w);font-weight:700}
.tif-sl-time{color:var(--tif-muted);font-variant-numeric:tabular-nums;letter-spacing:.04em;white-space:nowrap}
.tif-sl.is-bonus .tif-sl-venue{font-weight:400;color:var(--tif-muted)}
/* カード内 */
.tif-card-slots{padding:0 .8em .9em;font-size:.6em;display:flex;flex-direction:column;gap:.6em;align-items:center}
.tif-card-slots .tif-sl{align-items:center;text-align:center}
.tif-card-slots .tif-sl-body{justify-content:center}
.tif-empty-msg{text-align:center;color:var(--muted);padding:40px 0;font-size:.8em}
@media(max-width:1024px){.tif-grid{grid-template-columns:repeat(min(var(--tif-grid-cols,4),3),minmax(0,1fr))}}
@media(max-width:767px){.tif-grid{grid-template-columns:repeat(var(--tif-grid-cols-sp,2),minmax(0,1fr))}}

/* ---------- モーダル ---------- */
.tif-modal[hidden],.tif-card[hidden],.tif-empty-msg[hidden],.tif-detail[hidden],
.tif-my-tools[hidden],.tif-my-empty[hidden]{display:none !important}
.tif-modal{position:fixed;inset:0;z-index:9999;background:rgba(10,6,14,.88);
  background:color-mix(in srgb, var(--tif-vig) 88%, transparent);display:flex;
  align-items:center;justify-content:center;padding:24px;
  opacity:0;transition:opacity .28s ease}
.tif-modal.is-open{opacity:1}
.tif-modal-inner{background:var(--tif-vig);border:1px solid var(--tif-line);max-width:460px;width:100%;
  padding:28px;position:relative;color:var(--tif-w);
  opacity:0;transform:translateY(16px) scale(.98);
  transition:transform .34s cubic-bezier(.22,.61,.36,1), opacity .26s ease}
.tif-modal.is-open .tif-modal-inner{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .tif-modal,.tif-modal-inner{transition:none}
  .tif-modal-inner{transform:none}
}
.tif-modal-close{position:absolute;top:8px;right:12px;background:none;border:0;color:var(--tif-w);font-size:24px;cursor:pointer;line-height:1}
.tif-modal-inner{max-height:88vh;overflow-y:auto}
.tif-detail-ph{margin:-28px -28px 16px;background:linear-gradient(135deg,var(--tif-light),var(--tif-dark))}
.tif-detail-ph img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover}
.tif-modal-body h3{margin:0 0 10px;font-size:1.05em;line-height:1.4}
.tif-detail-h{margin:0 0 .3em;font-size:.6em;letter-spacing:.2em;color:var(--tif-muted);font-weight:700}

/* 出演予定。開催日ごとの見出し＋時間順の行 */
.tif-sch{margin:0 0 16px}
.tif-sch-day{display:flex;align-items:baseline;gap:.6em;margin:0 0 .5em;
  background:var(--tif-blk,#000);padding:.4em .7em;line-height:1}
.tif-sch + .tif-sch{margin-top:14px}
.tif-sch-day:not(:first-child){margin-top:14px}
.tif-sch-dayname{font-size:.66em;font-weight:700;color:var(--tif-w);letter-spacing:.06em}
.tif-sch-date{font-size:.56em;color:var(--tif-muted);letter-spacing:.08em;text-transform:uppercase;
  font-variant-numeric:tabular-nums}
.tif-sch-list{list-style:none;margin:0 0 2px;padding:0}
.tif-sch-item{display:flex;align-items:baseline;gap:.55em;padding:.5em .2em;
  border-bottom:1px solid rgba(255,255,255,.12);line-height:1.5}
.tif-sch-item:last-child{border-bottom:0}
.tif-sch-time{flex:0 0 auto;font-size:.62em;font-weight:700;color:var(--tif-w);
  font-variant-numeric:tabular-nums;letter-spacing:.02em;white-space:nowrap}
.tif-sch-kind{flex:0 0 auto;font-size:.5em;letter-spacing:.06em;padding:.25em .55em;line-height:1;
  border:1px solid var(--tif-line);color:var(--tif-muted);white-space:nowrap}
.tif-sch-item.is-bonus .tif-sch-kind{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w);font-weight:700}
.tif-sch-venue{flex:1 1 auto;min-width:0;font-size:.6em;color:var(--tif-w);opacity:.85;overflow-wrap:anywhere}
.tif-detail-slots{list-style:none;margin:0 0 16px;padding:0}
.tif-detail-slots .tif-sl-kind{display:none}   /* 見出しで分けているので行ごとの印は不要 */
.tif-detail-slots .tif-sl{padding:.55em 0;border-bottom:1px solid rgba(255,255,255,.14);font-size:.66em}
.tif-tt-details{display:none}
.tif-slot[data-performer]{cursor:pointer;transition:border-color .2s,background-color .2s}
.tif-slot[data-performer]:hover,.tif-slot[data-performer]:focus-visible{border-color:var(--tif-w);background:rgba(255,255,255,.08);outline:none}
.tif-detail-tbd{color:var(--tif-muted);font-size:.78em;margin-bottom:16px}
.tif-detail-links{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.tif-detail-links a{border:1px solid var(--tif-line);color:var(--tif-w);text-decoration:none;
  font-size:.7em;display:inline-flex;align-items:center;justify-content:center;transition:background .15s,color .15s}
.tif-detail-links a:hover{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w)}
.tif-sns{width:2em;height:2em;border-radius:50%}
.tif-sns .tif-i{width:.8em;height:.8em;display:block}
.tif-web{height:2em;padding:0 1.2em}

/* ---------- ロール ---------- */
/* 親（Elementorのコンテンツ幅）より広くできるように、中央合わせで外へはみ出させます。
   画面より広くならないように上限を付けているので、横スクロールは出ません。 */
.tif-rolls{
  width:min(var(--tif-roll-w,1360px), calc(100vw - 20px));
  /* スマホ用の幅は下のまとめて指定する箇所で切り替えます */
  margin-left:50%;
  transform:translateX(-50%);
}
.tif-roll{position:relative;overflow:hidden;padding:2px 0;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.tif-roll + .tif-roll{margin-top:12px}
.tif-roll-track{display:flex;gap:.6em;width:max-content;animation:tifRollL 64s linear infinite}
.tif-roll-track.is-rev{animation:tifRollR 72s linear infinite}
@keyframes tifRollL{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes tifRollR{from{transform:translateX(-50%)}to{transform:translateX(0)}}
.tif-roll:hover .tif-roll-track{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.tif-roll-track{animation:none}.tif-roll{overflow-x:auto}}
.tif-rcard{flex:0 0 auto;width:8.8em;background:var(--panel);border:1px solid var(--line)}
.tif-rcard-ph{aspect-ratio:3/2;background:linear-gradient(135deg,var(--tif-light),var(--tif-dark));overflow:hidden}
.tif-rcard-ph img{width:100%;height:100%;object-fit:cover;display:block}
/* グループ名の枠。高さを固定して、名前は天地中央に置きます。
   1行でも2行でも枠の高さが同じなので、カードの下端がそろいます。 */
.tif-rcard-name{display:flex;align-items:center;justify-content:center;
  box-sizing:border-box;height:3.8em;padding:0 .95em;
  font-size:.62em;font-weight:700;text-align:center;line-height:1.4}

/* ---------- 名前一覧 ---------- */
/* 親の幅に関係なく、指定した幅で中央にそろえます */
.tif-nl{
  font-size:var(--tif-fs,16pt);color:var(--tif-w);
  width:min(var(--tif-nl-w,1200px), calc(100vw - 20px));
  margin-left:50%;
  transform:translateX(-50%);
}
.tif-count-lead{display:flex;gap:.7em;align-items:baseline;margin:0 0 .7em;
  font-size:var(--tif-lead-fs,1.3em);color:var(--tif-head);font-weight:700}
.tif-count-lead span{font-size:.42em;letter-spacing:.2em;color:var(--tif-muted);font-weight:400}
.tif-namelist{list-style:none;display:grid;
  grid-template-columns:repeat(var(--tif-nl-cols,4),minmax(0,1fr));gap:2px;margin:0;padding:0}
.tif-nl-name{line-height:1.4}
/* 出演日ラベルは名前の上に、中央そろえで置きます */
.tif-namelist li{background:rgba(0,0,0,.62);border:1px solid var(--tif-line);padding:.9em 1em;
  font-size:.72em;display:flex;flex-direction:column;justify-content:center;
  gap:.5em;align-items:center;text-align:center}
.tif-nl-days{justify-content:center}
.tif-nl-days .tif-daychip{font-size:var(--tif-nl-chip-fs,.7em)}
.tif-only{font-size:.72em;color:var(--muted);white-space:nowrap}
@media(max-width:1024px){.tif-namelist{grid-template-columns:repeat(min(var(--tif-nl-cols,4),2),minmax(0,1fr))}}

/* ---------- 会場 ---------- */
.tif-venues{
  font-size:var(--tif-fs,16pt);line-height:1.6;color:var(--tif-w);
  display:grid;grid-template-columns:repeat(var(--tif-venue-cols,3),minmax(0,1fr));gap:14px}
.tif-venue{background:rgba(0,0,0,.38);border:1px solid var(--tif-line);padding:1.1em 1.2em 1.2em;
  display:flex;flex-direction:column}
.tif-venue-head{border-bottom:1px solid var(--tif-line);padding-bottom:.6em;margin-bottom:.8em}
.tif-venue-name{color:var(--tif-head);font-size:.92em;font-weight:700;margin:0;line-height:1.4}
.tif-venue-name .tif-vname-mark{margin-right:.5em;vertical-align:middle}
.tif-venue.is-bonus{border-style:dashed}
.tif-venue-days{display:flex;gap:5px;flex-wrap:wrap;margin-top:.5em}
.tif-daychip{background:var(--tif-blk);color:var(--tif-head);font-size:.5em;letter-spacing:.08em;padding:.45em .9em}
.tif-venue-info{display:grid;grid-template-columns:auto 1fr;gap:.3em .9em;margin:0 0 .9em;font-size:.66em}
.tif-venue-info dt{color:var(--tif-muted);white-space:nowrap}
.tif-venue-info dd{margin:0}
.tif-venue-near{border-top:1px dashed var(--tif-line);padding-top:.8em;margin-top:auto;font-size:.62em}
.tif-near-label{display:block;color:var(--tif-muted);letter-spacing:.1em;margin-bottom:.5em}
.tif-venue-near ul{list-style:none;margin:0;padding:0}
.tif-venue-near li{display:flex;justify-content:space-between;gap:10px;padding:.35em 0;align-items:baseline}
.tif-near-time{white-space:nowrap;font-weight:700}
.tif-near-time small{font-weight:400;color:var(--tif-muted);margin-left:.3em}
.tif-venue-map{display:inline-flex;align-items:center;justify-content:center;margin-top:1em;
  border:1px solid var(--tif-line);color:var(--tif-w);text-decoration:none;font-size:.66em;
  padding:.75em 1em;transition:background .15s,color .15s}
.tif-venue-map:hover{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w)}
@media(max-width:1024px){.tif-venues{grid-template-columns:repeat(min(var(--tif-venue-cols,3),2),minmax(0,1fr))}}

/* ---------- アーカイブ [tif_archive] ---------- */
.tif-archive{font-size:var(--tif-fs,16pt);color:var(--tif-w);line-height:1.6}
.tif-arc{background:rgba(0,0,0,.38);border:1px solid var(--tif-line);padding:1.4em 1.5em 1.5em}
.tif-arc + .tif-arc{margin-top:1.6em}
.tif-arc-head{display:flex;gap:1.4em;align-items:flex-start}
.tif-arc-kv{flex:0 0 38%;max-width:420px;aspect-ratio:3/2;overflow:hidden;
  background:linear-gradient(135deg,var(--tif-light),var(--tif-dark))}
.tif-arc-kv img{width:100%;height:100%;object-fit:cover;display:block}
.tif-arc-title{flex:1 1 auto;min-width:0}
.tif-arc-date{display:block;font-size:.6em;font-weight:700;letter-spacing:.12em;color:var(--tif-muted)}
.tif-arc-name{margin:.15em 0 0;font-size:1.25em;font-weight:700;line-height:1.3;color:var(--tif-head)}
/* 数字の欄。開催日数・会場・出演・動員 */
.tif-arc-stats{display:flex;flex-wrap:wrap;gap:.6em 2em;margin:1em 0 0}
.tif-arc-stats div{display:flex;flex-direction:column}
.tif-arc-stats dt{font-size:.52em;letter-spacing:.2em;color:var(--tif-muted)}
.tif-arc-stats dd{margin:0;font-size:1.3em;font-weight:700;line-height:1.2;color:var(--tif-head)}
.tif-arc-body{margin-top:1.2em;font-size:.72em;line-height:1.9;color:var(--tif-w)}
.tif-arc-body p{margin:0 0 1em}
.tif-arc-body p:last-child{margin-bottom:0}
.tif-arc-lead{display:flex;gap:.7em;align-items:baseline;margin:1.4em 0 .6em;
  font-size:.92em;font-weight:700;color:var(--tif-head);border-top:1px solid var(--tif-line);padding-top:1.1em}
.tif-arc-lead span{font-size:.55em;letter-spacing:.2em;color:var(--tif-muted);font-weight:400}
/* 名前だけ */
.tif-arc-names{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.3em .4em}
.tif-arc-names li{font-size:.62em;padding:.35em .8em;background:rgba(0,0,0,.5);border:1px solid var(--tif-line)}
/* 写真つき */
.tif-arc-grid{display:grid;grid-template-columns:repeat(var(--tif-arc-cols,6),minmax(0,1fr));gap:6px}
.tif-arc-card{background:rgba(0,0,0,.5);border:1px solid var(--tif-line)}
.tif-arc-ph{aspect-ratio:3/2;overflow:hidden;background:linear-gradient(135deg,var(--tif-light),var(--tif-dark))}
.tif-arc-ph img{width:100%;height:100%;object-fit:cover;display:block}
.tif-arc-cname{display:flex;align-items:center;justify-content:center;box-sizing:border-box;
  min-height:3em;padding:.4em .5em;font-size:.55em;font-weight:700;text-align:center;line-height:1.35}
.tif-arc-more{margin:1.2em 0 0;font-size:.66em}
.tif-arc-more a{display:inline-block;color:var(--tif-w);border:1px solid var(--tif-line);padding:.5em 1.1em;
  text-decoration:none;transition:background .2s,color .2s}
.tif-arc-more a:hover{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w)}
@media(max-width:1024px){.tif-arc-grid{grid-template-columns:repeat(min(var(--tif-arc-cols,6),4),minmax(0,1fr))}}
/* 当日の写真 */
.tif-arc-gallery{display:grid;grid-template-columns:repeat(var(--tif-arc-gcols,4),minmax(0,1fr));gap:6px}
.tif-arc-photo{display:block;aspect-ratio:3/2;overflow:hidden;background:rgba(0,0,0,.5);border:1px solid var(--tif-line)}
.tif-arc-photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s cubic-bezier(.22,.61,.36,1)}
.tif-arc-photo:hover img{transform:scale(1.04)}
@media(max-width:1024px){.tif-arc-gallery{grid-template-columns:repeat(min(var(--tif-arc-gcols,4),3),minmax(0,1fr))}}
/* 写真を大きく見る */
.tif-lightbox[hidden]{display:none !important}
.tif-lightbox{position:fixed;inset:0;z-index:9999;background:rgba(10,6,14,.94);display:flex;align-items:center;justify-content:center;
  opacity:0;transition:opacity .28s ease}
.tif-lightbox.is-open{opacity:1}
.tif-lightbox-fig{margin:0;max-width:min(92vw,1400px);max-height:90vh;display:flex;flex-direction:column;align-items:center;gap:10px}
.tif-lightbox-fig img{max-width:100%;max-height:82vh;width:auto;height:auto;display:block;object-fit:contain;
  opacity:0;transform:scale(.98);transition:opacity .26s ease,transform .34s cubic-bezier(.22,.61,.36,1)}
.tif-lightbox.is-open .tif-lightbox-fig img{opacity:1;transform:none}
.tif-lightbox-count{color:#b4a8be;font-size:12px;letter-spacing:.15em}
.tif-lightbox button{position:absolute;background:none;border:0;color:#fff;cursor:pointer;line-height:1;padding:12px;opacity:.8;transition:opacity .2s}
.tif-lightbox button:hover{opacity:1}
button.tif-lightbox-close{top:10px;right:14px;font-size:32px}
button.tif-lightbox-prev,button.tif-lightbox-next{top:50%;transform:translateY(-50%);font-size:48px}
button.tif-lightbox-prev{left:6px}
button.tif-lightbox-next{right:6px}
@media(prefers-reduced-motion:reduce){.tif-lightbox,.tif-lightbox-fig img{transition:none}.tif-lightbox-fig img{transform:none}}

/* ---------- 会場マップ [tif_venue_map] ---------- */
.tif-vmap{font-size:var(--tif-fs,16pt);color:var(--tif-w);line-height:1.6}
.tif-vmap-canvas{width:100%;height:var(--tif-vmap-h,480px);background:rgba(0,0,0,.38);
  border:1px solid var(--tif-line)}
/* Googleマップの吹き出しの中身 */
.tif-vmap-info{color:#222;font-size:13px;line-height:1.5;max-width:240px}
.tif-vmap-info strong{display:block;font-size:14px;margin-bottom:2px}
.tif-vmap-info a{display:inline-block;margin-top:6px;color:#1a5cff}
.tif-vmap-info-mark{display:inline-block;background:#000;color:#fff;font-size:10px;padding:2px 6px;margin-bottom:4px}
/* 番号つきの会場リスト */
.tif-vmap-legend{list-style:none;margin:10px 0 0;padding:0;display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));gap:2px}
.tif-vmap-legend li{display:flex;align-items:center;gap:.6em;padding:.55em .8em;
  background:rgba(0,0,0,.38);border:1px solid var(--tif-line);cursor:pointer;font-size:.72em;
  transition:background .2s}
.tif-vmap-legend li:hover,.tif-vmap-legend li.is-active{background:rgba(0,0,0,.62)}
.tif-vmap-legend li small{color:var(--tif-muted);font-size:.85em;margin-left:auto;text-align:right}
.tif-vmap-num{flex:0 0 auto;width:1.8em;height:1.8em;border-radius:50%;background:#e53935;color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.9em}
.tif-vmap-name .tif-vname-mark{margin-left:.5em}
/* 徒歩時間 */
.tif-route{margin-top:1.4em;padding:1.1em 1.2em 1.2em;background:rgba(0,0,0,.38);border:1px solid var(--tif-line)}
.tif-route-title{margin:0 0 .7em;font-size:.92em;font-weight:700;color:var(--tif-head)}
.tif-route-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.8em 1em}
.tif-route-field{display:flex;flex-direction:column;gap:.25em;font-size:.62em;color:var(--tif-muted);flex:1 1 160px}
.tif-route-field select{font:inherit;font-size:1.1em;color:var(--tif-w);background:rgba(0,0,0,.5);
  border:1px solid var(--tif-line);padding:.5em .7em;width:100%}
.tif-route-arrow{font-size:.9em;color:var(--tif-muted);padding-bottom:.35em}
.tif-route-result{margin-top:1em;min-height:2em}
.tif-route-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3em 1em}
.tif-route-time{font-size:1.1em;color:var(--tif-head)}
.tif-route-dist{font-size:.62em;color:var(--tif-muted)}
.tif-route-note{margin:.4em 0 0;font-size:.58em;color:var(--tif-muted)}
.tif-route-open{display:inline-block;margin-top:.7em;font-size:.62em;color:var(--tif-w);
  border:1px solid var(--tif-line);padding:.5em 1em;text-decoration:none;transition:background .2s,color .2s}
.tif-route-open:hover{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w)}
@media(max-width:1024px){.tif-vmap-legend{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- 協賛社 ---------- */
.tif-sponsors-wrap{font-size:var(--tif-fs,16pt);color:var(--tif-w)}
.tif-sponsor-group + .tif-sponsor-group{margin-top:1.8em}
.tif-sponsor-head{margin:0 0 .7em;text-align:center;font-size:.6em;font-weight:700;letter-spacing:.25em;color:var(--tif-muted)}
.tif-sponsor-head::after{content:"";display:block;width:2.4em;height:1px;background:var(--tif-line);margin:.7em auto 0}
.tif-sponsors{font-size:var(--tif-fs,16pt);display:flex;flex-wrap:wrap;gap:12px;justify-content:center;align-items:center}
.tif-sponsor{background:rgba(255,255,255,.06);border:1px solid var(--tif-line);
  box-sizing:border-box;min-width:150px;min-height:76px;padding:.8em 1.2em;
  display:flex;align-items:center;justify-content:center;text-decoration:none;
  color:var(--tif-w);font-size:.66em;text-align:center;transition:border-color .15s}
a.tif-sponsor:hover{border-color:var(--tif-w)}
.tif-sponsor img{max-width:180px;max-height:60px;width:auto;height:auto;display:block}
/* ランクで大きさを変えます。1=大 2=中（既定） 3=小 */
.tif-sponsors.is-1{gap:16px}
.tif-sponsors.is-1 .tif-sponsor{min-width:260px;min-height:120px;padding:1.2em 1.8em;font-size:.85em}
.tif-sponsors.is-1 .tif-sponsor img{max-width:300px;max-height:100px}
.tif-sponsors.is-3{gap:8px}
.tif-sponsors.is-3 .tif-sponsor{min-width:110px;min-height:52px;padding:.5em .9em;font-size:.55em}
.tif-sponsors.is-3 .tif-sponsor img{max-width:120px;max-height:36px}

/* ---------- 発表前の案内 ---------- */
.tif-coming{font-size:var(--tif-fs,16pt);color:var(--tif-w);text-align:center;
  border:1px solid var(--tif-line);background:rgba(0,0,0,.28);padding:2.4em 1.4em}
.tif-coming-main{margin:0;font-size:.9em;font-weight:700;letter-spacing:.06em;line-height:1.6}
.tif-coming-sub{margin:.7em 0 0;font-size:.66em;color:var(--tif-muted)}
.tif-past-label{font-size:.58em;letter-spacing:.2em;color:var(--tif-muted);
  margin:0 0 1em;text-align:center}
.tif-rolls .tif-past-label,.tif-lineup .tif-past-label{font-size:11px}

/* ---------- マイタイムテーブル ---------- */
.tif-my{font-size:var(--tif-fs,16pt);line-height:1.6;color:var(--tif-w)}
.tif-my-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  border-bottom:1px solid var(--tif-line);padding-bottom:.8em;margin-bottom:1.2em}
.tif-my-count{margin:0;font-size:.7em;color:var(--tif-muted);letter-spacing:.08em}
.tif-my-tools{margin:0;display:flex;gap:6px;flex-wrap:wrap}
button.tif-my-btn{background:transparent;color:var(--tif-w);border:1px solid var(--tif-line);
  font:inherit;font-size:.6em;padding:.7em 1.2em;cursor:pointer;transition:background .15s,color .15s}
button.tif-my-btn:hover{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w)}
.tif-my-day{display:flex;gap:12px;align-items:baseline;margin:1.6em 0 .7em;
  color:var(--tif-head);font-size:.85em;font-weight:700}
.tif-my-day:first-child{margin-top:0}
.tif-my-daydate{font-size:.65em;color:var(--tif-muted);font-weight:400}
.tif-my-list{list-style:none;margin:0;padding:0}
.tif-my-item{display:flex;gap:14px;align-items:center;background:rgba(0,0,0,.34);
  border:1px solid var(--tif-line);padding:.8em 1em;margin-bottom:2px}
.tif-my-time{flex:0 0 auto;font-size:.66em;font-weight:700;white-space:nowrap;letter-spacing:.02em}
.tif-my-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.15em}
.tif-my-name{font-size:.76em;line-height:1.35}
.tif-my-venue{font-size:.58em;color:var(--tif-muted)}
button.tif-my-off{flex:0 0 auto;background:none;border:0;color:var(--tif-acc);cursor:pointer;font-size:.8em;padding:.2em}
button.tif-my-off:hover{opacity:.6}
.tif-my-gap{font-size:.56em;color:var(--tif-muted);padding:.5em 1em .5em 2.2em;position:relative}
.tif-my-gap::before{content:"↓";position:absolute;left:1em;top:.45em}
.tif-my-gap.is-ng{color:#ffb4b4}
.tif-my-empty{border:1px solid var(--tif-line);background:rgba(0,0,0,.28);padding:2.4em 1.4em;text-align:center}
.tif-my-note{margin-top:1.6em;font-size:.58em;color:var(--tif-muted);line-height:1.8}
@media print{
  .tif-my-tools,.tif-my-note{display:none}
  .tif-my{color:#000;font-size:11pt}
  .tif-my-item{background:none;border:1px solid #999}
  .tif-my-day,.tif-my-name{color:#000}
  .tif-my-venue,.tif-my-gap,.tif-my-count{color:#444}
}
.tif-tt-mylink{color:var(--tif-w);text-decoration:underline;margin-left:.6em}

/* ---------- 丸に矢印のボタン ----------
   図形はSVGで描いています。CSSの箱で組むと、テーマ側の設定しだいで
   線が円の中心から1px前後ずれることがあるためです。 */
.tif-btn{
  display:inline-flex;align-items:center;gap:1.1em;
  color:var(--tif-w);text-decoration:none;
  /* 円も矢印も、この文字サイズを基準に組み立てています */
  font-size:var(--tif-btn-fs, var(--tif-fs,16pt));
  line-height:1;letter-spacing:.06em;
  padding:.2em 0;
}
@media(max-width:767px){
  .tif-btn{font-size:var(--tif-btn-fs-sp, 17px)}
}
.tif-btn:hover,.tif-btn:focus-visible{color:var(--tif-w)}
.tif-btn-arrow{flex:0 0 auto;display:block}
.tif-btn-arrow svg{display:block;width:4.8em;height:2.6em;overflow:visible;
  fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}
.tif-btn-arrow svg *{vector-effect:non-scaling-stroke}

.tif-btn-c,.tif-btn-l,.tif-btn-h{
  transform-box:view-box;
  transition:transform .35s cubic-bezier(.22,.61,.36,1)}
.tif-btn-c{transform-origin:13px 13px}
.tif-btn-l{transform-origin:6px 13px}

.tif-btn-text{position:relative}
.tif-btn-text::after{content:"";position:absolute;left:0;right:0;bottom:-.35em;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:right center;
  transition:transform .35s cubic-bezier(.22,.61,.36,1)}

.tif-btn:hover .tif-btn-l,.tif-btn:focus-visible .tif-btn-l{transform:scaleX(1.3)}
.tif-btn:hover .tif-btn-h,.tif-btn:focus-visible .tif-btn-h{transform:translateX(8.4px)}
.tif-btn:hover .tif-btn-c,.tif-btn:focus-visible .tif-btn-c{transform:scale(1.06)}
.tif-btn:hover .tif-btn-text::after,
.tif-btn:focus-visible .tif-btn-text::after{transform:scaleX(1);transform-origin:left center}

@media(prefers-reduced-motion:reduce){
  .tif-btn-c,.tif-btn-l,.tif-btn-h,.tif-btn-text::after{transition:none}
}
@media(max-width:600px){
  .tif-btn{gap:.8em}
}

/* ---------- 開催回の見出し・出演日のバッジ ---------- */
/* size は日付そのものの大きさです（18 と書けば日付が18px）。
   「出演アーティスト」はその0.8倍で連動します。
   余白は既定で0。ショートコードの gap か、一覧に埋め込む is-block で付けます。 */
.tif-edition-cap{font-size:var(--tif-fs,16pt);
  margin:0;color:var(--tif-muted);line-height:var(--tif-cap-lh,1.5)}
.tif-edition-date,.tif-edition-sub{line-height:inherit}
.tif-edition-cap.is-block{margin-bottom:1.4em}
.tif-edition-cap.has-gap{margin-bottom:var(--tif-cap-gap,0)}
/* 色は既定で 日付=白 / 小見出し=薄い色。ショートコードの color / sub_color で変えられます */
.tif-edition-date{font-size:var(--tif-cap-fs,.6em);font-weight:700;letter-spacing:.12em;
  color:var(--tif-cap-color, var(--tif-w))}
.tif-edition-sub{font-size:calc(var(--tif-cap-fs,.6em) * .8);letter-spacing:.2em;margin-left:1.2em;
  color:var(--tif-cap-sub-color, var(--tif-cap-color, var(--tif-muted)));
  padding-left:1.2em;border-left:1px solid var(--tif-line);white-space:nowrap}
@media(max-width:767px){
  .tif-edition-cap{line-height:var(--tif-cap-lh-sp, var(--tif-cap-lh,1.5))}
  .tif-edition-date{font-size:var(--tif-cap-fs-sp, var(--tif-cap-fs,.6em))}
  .tif-edition-sub{font-size:calc(var(--tif-cap-fs-sp, var(--tif-cap-fs,.6em)) * .8)}
}
@media(max-width:600px){
  .tif-edition-sub{display:block;margin:.5em 0 0;padding:0;border:0}
}
.tif-daychips{display:inline-flex;gap:4px;flex-wrap:wrap;vertical-align:middle}
.tif-daychip{background:var(--tif-blk,#000);color:var(--tif-w,#fff);
  font-size:.52em;letter-spacing:.06em;padding:.45em .9em;white-space:nowrap;line-height:1}
.tif-daychips-card{display:flex;justify-content:center;padding:0 .6em 1em}
/* ロールの出演日は写真の下。空でも高さを確保して、カードの下端をそろえます。
   上の余白（写真とラベルの間）は、下の余白と同じになるようにしています。 */
.tif-rcard-days{display:flex;justify-content:center;align-items:flex-start;
  box-sizing:border-box;height:1.32em;padding:.32em .4em 0}
.tif-modal-body .tif-daychips{margin:0 0 .9em}

/* ---------- Xの埋め込み ---------- */
.tif-x{display:grid;grid-template-columns:repeat(var(--tif-x-cols,2),minmax(0,1fr));
  gap:16px;align-items:start}
.tif-x-item{min-width:0}
.tif-x-item .twitter-tweet{margin:0 auto !important}
@media(max-width:767px){.tif-x{grid-template-columns:1fr}}

/* ---------- Xへの導線 ---------- */
.tif-xfollow{font-size:var(--tif-fs,16pt);display:flex;align-items:center;gap:1em;
  background:rgba(0,0,0,.34);border:1px solid var(--tif-line);padding:1em 1.2em;
  color:var(--tif-w);text-decoration:none;transition:border-color .15s}
.tif-xfollow:hover{border-color:var(--tif-w);color:var(--tif-w)}
.tif-xfollow-icon{flex:0 0 auto;width:2.2em;height:2.2em;border:1px solid var(--tif-line);border-radius:50%;
  display:flex;align-items:center;justify-content:center}
.tif-xfollow-icon .tif-i{width:.85em;height:.85em;display:block}
.tif-xfollow-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.2em}
.tif-xfollow-label{font-size:.66em;line-height:1.4}
.tif-xfollow-acc{font-size:.55em;color:var(--tif-muted);letter-spacing:.04em}
.tif-xfollow-btn{flex:0 0 auto;border:1px solid var(--tif-line);font-size:.6em;padding:.7em 1.2em;white-space:nowrap}
.tif-xfollow:hover .tif-xfollow-btn{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w)}
@media(max-width:600px){
  .tif-xfollow{flex-wrap:wrap}
  .tif-xfollow-btn{width:100%;text-align:center}
}

/* ---------- 特典会 ----------
   ステージと同じ表に混ぜたとき（bonus="yes"）は、破線と薄い色で区別します。
   特典会だけの表（[tif_bonus_timetable]）では、ステージと同じはっきりした見た目にします。 */
.tif-tt-col.is-bonus .tif-tt-vname{background:var(--tif-vig);color:var(--tif-muted);
  border-bottom:1px solid var(--tif-line)}
.tif-vname-mark{display:inline-block;background:var(--tif-w);color:var(--tif-blk);
  font-size:.85em;padding:.15em .6em;margin-right:.5em;letter-spacing:.04em;vertical-align:middle}
.tif-tt-col.is-bonus .tif-tt-track{background:rgba(0,0,0,.12)}
.tif-slot.is-bonus{background:rgba(0,0,0,.45);border-style:dashed}
.tif-slot.is-bonus .tif-slot-name{color:var(--tif-muted)}
.tif-vtab.is-bonus{opacity:.85}
/* 特典会だけの表 */
.tif-tt.is-bonus-only .tif-tt-col.is-bonus .tif-tt-vname{background:var(--blk);color:var(--head);border-bottom:0}
.tif-tt.is-bonus-only .tif-tt-col.is-bonus .tif-tt-track{background:rgba(0,0,0,.22)}
.tif-tt.is-bonus-only .tif-slot.is-bonus{background:var(--panel);border-style:solid;
  border-left:3px solid var(--tif-muted)}
.tif-tt.is-bonus-only .tif-slot.is-bonus .tif-slot-name{color:var(--head)}
.tif-tt.is-bonus-only .tif-vtab.is-bonus{opacity:1}
.tif-tt.is-bonus-only .tif-vname-mark{display:none}
.tif-vtab-mark{display:inline-block;margin-left:.5em;font-size:.85em;opacity:.7}
.tif-my-item.is-bonus{border-style:dashed}
.tif-my-item.is-bonus .tif-my-name{color:var(--tif-muted)}

/* ============================================================
   PC・スマホの出し分け（767px以下をスマホとして扱います）
   ============================================================ */
@media(max-width:767px){
  .tif-pc-only{display:none !important}

  /* タイムテーブルの縦の縮尺 */
  .tif-tt-grid{--tif-ppm:var(--tif-ppm-sp, var(--tif-ppm-pc,2.8))}

  /* ロールと名前一覧の幅 */
  .tif-rolls{width:min(var(--tif-roll-w-sp, var(--tif-roll-w,1360px)), calc(100vw - 20px))}
  .tif-nl{width:min(var(--tif-nl-w-sp, var(--tif-nl-w,1200px)), calc(100vw - 20px))}

  /* 名前一覧の列数と見出しの大きさ */
  .tif-namelist{grid-template-columns:repeat(var(--tif-nl-cols-sp,1),minmax(0,1fr))}
  .tif-count-lead{font-size:var(--tif-lead-fs-sp, var(--tif-lead-fs,1.3em))}
  /* スマホでは出演日ラベルが小さくなりすぎないようにします */
  .tif-nl-days .tif-daychip{font-size:var(--tif-nl-chip-fs-sp, var(--tif-nl-chip-fs, max(.8em, 12px)))}

  /* Xの埋め込み */
  .tif-x{grid-template-columns:repeat(var(--tif-x-cols-sp,1),minmax(0,1fr))}

  /* 会場一覧 */
  .tif-venues{grid-template-columns:repeat(var(--tif-venue-cols-sp,1),minmax(0,1fr))}

  /* 協賛社 */
  .tif-sponsors.is-1 .tif-sponsor{min-width:0;width:100%;min-height:96px}
  .tif-sponsors.is-1 .tif-sponsor img{max-width:240px;max-height:80px}

  /* アーカイブ */
  .tif-arc{padding:1.1em 1em 1.2em}
  .tif-arc-head{flex-direction:column;gap:.9em}
  .tif-arc-kv{flex:none;width:100%;max-width:none}
  .tif-arc-stats{gap:.5em 1.4em}
  .tif-arc-grid{grid-template-columns:repeat(var(--tif-arc-cols-sp,3),minmax(0,1fr))}
  .tif-arc-gallery{grid-template-columns:repeat(var(--tif-arc-gcols-sp,2),minmax(0,1fr))}
  .tif-lightbox-prev,.tif-lightbox-next{font-size:36px;padding:8px}

  /* 会場マップ */
  .tif-vmap-canvas{height:var(--tif-vmap-h-sp, var(--tif-vmap-h,360px))}
  .tif-vmap-legend{grid-template-columns:1fr}
  .tif-route-arrow{display:none}
  .tif-route-field{flex:1 1 100%}

  /* 開催日ラベルの余白 */
  .tif-edition-cap.has-gap{margin-bottom:var(--tif-cap-gap-sp, var(--tif-cap-gap,0))}
}
@media(min-width:768px){
  .tif-sp-only{display:none !important}
}

/* ============================================================
   端末ごとの表示切り替え
   Elementorの標準と同じ区切りです。
   デスクトップ 1025px以上／タブレット 768〜1024px／モバイル 767px以下
   ページの好きな要素のCSSクラス欄に入れても使えます。
   ============================================================ */
@media(min-width:1025px){ .tif-hide-pc{display:none !important} }
@media(min-width:768px) and (max-width:1024px){ .tif-hide-tablet{display:none !important} }
@media(max-width:767px){ .tif-hide-sp{display:none !important} }

/* ============================================================
   ホバーの動きをなめらかにする補助クラス
   ElementorのCSSクラス欄に tif-smooth を足すと、
   その要素のホバー時の変化がすべてアニメーションします。
   （変化を「通常の状態」側に書く必要があるため、ここでまとめて指定します）
   ============================================================ */
.tif-smooth,
.tif-smooth > *{
  transition:
    transform .35s cubic-bezier(.22,.61,.36,1),
    background-color .3s ease,
    color .3s ease,
    border-color .3s ease,
    box-shadow .3s ease,
    opacity .3s ease,
    filter .3s ease;
}
.tif-smooth{will-change:transform}
@media(prefers-reduced-motion:reduce){
  .tif-smooth,.tif-smooth > *{transition:none}
}

/* ---------- ★で選んだ枠（タイムテーブル下の帯と一覧） ---------- */
.tif-favbar[hidden]{display:none !important}
.tif-favbar{position:sticky;bottom:12px;z-index:50;margin-top:14px;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:var(--tif-vig,#1d1424);border:1px solid var(--tif-line);padding:.6em 1em;
  box-shadow:0 8px 24px rgba(0,0,0,.35)}
.tif-favbar-count{font-size:.66em;color:var(--tif-muted);letter-spacing:.06em}
.tif-favbar-count b{color:var(--tif-acc);font-size:1.3em;margin-right:.15em}
button.tif-favbar-open{font:inherit;font-size:.62em;font-weight:700;background:var(--tif-w);color:var(--tif-blk);
  border:1px solid var(--tif-w);padding:.6em 1.2em;cursor:pointer;transition:opacity .2s}
button.tif-favbar-open:hover{opacity:.85}
.tif-favbar-link{font-size:.58em;color:var(--tif-muted);text-decoration:underline;margin-left:auto}
.tif-favbar-link:hover{color:var(--tif-w)}
.tif-favlist-n{font-size:.6em;color:var(--tif-muted);font-weight:400;margin-left:.5em;letter-spacing:.1em}
.tif-favlist-modes{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 6px;align-items:center}
.tif-favlist-note{margin:0 0 14px;font-size:.55em;color:var(--tif-muted)}
.tif-favlist-modes button{flex:0 0 auto;white-space:nowrap;font:inherit;font-size:.6em;background:transparent;
  color:var(--tif-w);border:1px solid var(--tif-line);padding:.45em .9em;cursor:pointer}
.tif-favlist-modes button.is-active{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w)}
.tif-modal-body .tif-my-day{margin:1.1em 0 .4em;font-size:.72em}
.tif-modal-body .tif-my-day:first-of-type{margin-top:0}
.tif-modal-body .tif-my-item{padding:.5em .7em;gap:10px}
.tif-modal-body .tif-my-time{font-size:.6em;display:flex;flex-direction:column;line-height:1.3}
.tif-modal-body .tif-my-time small{font-size:.8em;color:var(--tif-muted);font-weight:400}
.tif-modal-body .tif-my-name{font-size:.68em}
/* 一覧の中のステージ／特典会の印 */
.tif-my-kind{display:inline-block;font-size:.85em;line-height:1;padding:.25em .55em;margin-right:.55em;
  border:1px solid var(--tif-line);color:var(--tif-muted);letter-spacing:.06em;vertical-align:middle}
.tif-my-kind.is-bonus{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w);font-weight:700}
.tif-modal-body .tif-my-item.is-bonus{border-style:solid;border-left:3px solid var(--tif-w)}
.tif-modal-body .tif-my-item.is-bonus .tif-my-name{color:var(--tif-w)}

/* ---------- タイムテーブルの使い方 ---------- */
.tif-tt-top{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px;margin-bottom:2px}
.tif-tt-top .tif-tabs{margin-bottom:0;flex:1 1 auto}
button.tif-tt-help-btn{flex:0 0 auto;margin-left:auto;display:inline-flex;align-items:center;gap:.4em;
  background:transparent;color:var(--tif-w);border:1px solid var(--tif-line);font:inherit;font-size:.62em;
  padding:.6em 1em;cursor:pointer;transition:background .2s,color .2s}
button.tif-tt-help-btn:hover{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w)}
.tif-tt-howto[hidden]{display:none !important}
.tif-howto{list-style:none;margin:0;padding:0;counter-reset:howto}
.tif-howto li{counter-increment:howto;display:flex;gap:16px;align-items:center;padding:14px 0;
  border-bottom:1px solid rgba(255,255,255,.14)}
.tif-howto li:last-child{border-bottom:0}
.tif-howto-text{flex:1 1 auto;min-width:0;position:relative;padding-left:2em}
.tif-howto-text::before{content:counter(howto);position:absolute;left:0;top:.05em;width:1.5em;height:1.5em;
  border-radius:50%;background:var(--tif-w);color:var(--tif-blk);font-size:.7em;font-weight:700;
  display:flex;align-items:center;justify-content:center}
.tif-howto-text b{display:block;font-size:.72em;line-height:1.5}
.tif-howto-text p{margin:.3em 0 0;font-size:.6em;color:var(--tif-muted);line-height:1.7}
.tif-howto-fig{flex:0 0 150px;width:150px;height:auto;display:block}
.tif-howto-fig-wide{flex:0 0 200px;width:200px}
.tif-howto-note{margin:14px 0 0;font-size:.56em;color:var(--tif-muted);line-height:1.7}
@media(max-width:600px){
  .tif-howto li{flex-direction:column;align-items:stretch;gap:10px}
  .tif-howto-fig,.tif-howto-fig-wide{width:100%;max-width:280px;margin:0 auto}
}

/* ---------- マイタイムテーブルの画像保存 ---------- */
.tif-myimg-note{margin:0 0 12px;font-size:.52em;color:var(--tif-muted);line-height:1.75}
.tif-myimg-note b{color:var(--tif-w)}
.tif-myimg-tools{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.tif-myimg-tools .tif-my-btn{font-size:.6em;text-decoration:none;display:inline-block;line-height:normal}
button.tif-my-btn.is-primary{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w);font-weight:700}
.tif-myimg{display:block;width:100%;height:auto;border:1px solid var(--tif-line)}
.tif-my-image{margin:0 0 20px;padding:16px;background:rgba(0,0,0,.28);border:1px solid var(--tif-line)}
.tif-my-image h3{margin:0 0 8px;font-size:.9em}

/* ---------- 撮影の可否（アイコン） ---------- */
.screen-reader-text{position:absolute !important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}
.tif-slot-cam{display:inline-flex;align-items:center;margin-left:.5em;color:var(--muted);vertical-align:-.18em}
.tif-slot-cam svg{width:auto;height:1.45em;display:block}
.tif-slot.is-camera .tif-slot-cam{color:var(--w)}
.tif-cam-legend{display:flex;flex-wrap:wrap;align-items:center;gap:.5em 1.2em;margin:14px 0 2px;
  padding:.8em .9em;background:rgba(0,0,0,.38);border:1px solid var(--tif-line);font-size:.58em;color:var(--tif-muted)}
.tif-cam-legend-lead{width:100%;font-weight:700;color:var(--tif-w);letter-spacing:.1em}
.tif-cam-legend-item{display:inline-flex;align-items:center;gap:.45em}
.tif-cam-note{width:100%;margin-top:.2em;line-height:1.6}
/* アイコンの印。枠線は付けず、色だけで区別します */
.tif-cam-chip{display:inline-flex;align-items:center;color:var(--tif-muted);vertical-align:-.2em}
.tif-cam-chip svg{width:auto;height:1.5em;display:block}
.tif-cam-chip.is-camera{color:var(--tif-w)}
.tif-cam-legend-item .tif-cam-chip.is-camera{color:var(--tif-w)}
.tif-detail-cam{display:flex;align-items:center;flex-wrap:wrap;gap:.5em;margin:0 0 12px;padding:.6em .7em;
  background:rgba(255,255,255,.06);border:1px solid var(--tif-line);font-size:.62em;color:var(--tif-muted)}
.tif-detail-cam .tif-cam-chip svg{height:1.8em}
.tif-detail-cam b{color:var(--tif-w);font-size:1.05em}
.tif-detail-cam small{width:100%;font-size:.85em;line-height:1.55;margin-top:-.1em}
.tif-my-kind + .tif-cam-chip{margin-left:.4em}
.tif-card-cam{margin:0;padding:0 .6em 1em;font-size:.55em;color:var(--tif-muted);
  display:flex;align-items:center;justify-content:center;gap:.4em}

/* ---------- マイタイムテーブルの開催日タブ ---------- */
.tif-favlist-days{display:flex;gap:4px;margin:0 0 8px;flex-wrap:wrap}
.tif-favlist-days button{flex:1 1 0;display:flex;align-items:baseline;justify-content:center;gap:.4em;
  font:inherit;font-size:.62em;background:transparent;color:var(--tif-w);border:1px solid var(--tif-line);
  padding:.55em .6em;cursor:pointer;white-space:nowrap}
.tif-favlist-days button.is-active{background:var(--tif-w);color:var(--tif-blk);border-color:var(--tif-w);font-weight:700}
.tif-favlist-days small{font-size:.8em;opacity:.7}
.tif-favlist-days em{font-style:normal;font-size:.85em;opacity:.8}
.tif-favlist-days button.is-active em{opacity:1}
@media(max-width:767px){
  .tif-tt-top{flex-wrap:wrap}
  .tif-tt-top .tif-tabs{flex:1 1 100%}
}

/* ---------- Xでシェア（マイタイムテーブル） ---------- */
/* 一覧の右上のボタン。Xのマークを入れて、ここだけ白く目立たせます */
button.tif-favlist-img{margin-left:auto;display:inline-flex;align-items:center;gap:.45em;
  font:inherit;font-size:.6em;font-weight:700;background:var(--tif-w);color:var(--tif-blk);
  border:1px solid var(--tif-w);padding:.5em 1em;cursor:pointer;transition:opacity .2s}
button.tif-favlist-img:hover{opacity:.85}
.tif-favlist-img svg{width:1em;height:1em;flex:0 0 auto}
.tif-favlist-img i{font-style:normal;opacity:.45;margin:0 .1em}
.tif-myimg-tools .tif-my-btn svg{width:1em;height:1em;margin-right:.4em;vertical-align:-.12em}
.tif-favlist-share{display:block;margin-top:.25em;color:var(--tif-w);opacity:.8}
.tif-share-title{display:flex;align-items:center;gap:.45em;margin-bottom:12px !important}
.tif-share-title svg{width:.85em;height:.85em;flex:0 0 auto}
@media(max-width:767px){
    .tif-favlist-img{width:100%;justify-content:center;margin-left:0}
}

/* ---------- 会場の「場所の補足」 ---------- */
.tif-venue-spot{display:inline-block;margin-left:.5em;font-size:.78em;font-weight:400;color:var(--tif-muted)}
.tif-vtab-spot{display:inline-block;margin-left:.4em;font-size:.85em;opacity:.65}
.tif-vmap-name .tif-venue-spot{margin-left:.4em}
.tif-sch-venue small{display:block;font-size:.85em;opacity:.75;margin-top:.1em}

/* ---------- 確認用表示の目印 ---------- */
.tif-preview-bar{position:fixed;left:0;right:0;bottom:0;z-index:99999;
 background:#1f2933;color:#fff;font-size:13px;line-height:1.5;padding:10px 16px;
 text-align:center;box-shadow:0 -2px 8px rgba(0,0,0,.2)}
.tif-preview-bar strong{color:#ffd43b;margin-right:.3em}
.tif-preview-bar a{color:#fff;text-decoration:underline;margin-left:.6em}
@media (max-width:600px){.tif-preview-bar{font-size:12px;padding:8px 12px;text-align:left}}

/* ---------- グループ名で探す ----------
   テーマが input[type="search"] に白背景・黒文字・角丸を当てていて、
   クラス1つでは詳細度が足りません。入力欄は要素名まで足して確実に当てます。 */
.tif-search{position:relative;max-width:420px;margin:0 0 16px}
.tif-search-box{display:flex;align-items:center;gap:.5em;
  background:rgba(0,0,0,.55);border:1px solid var(--tif-line);padding:.5em .75em}
.tif-search-box:focus-within{border-color:var(--tif-w);background:rgba(0,0,0,.72)}
.tif-search-icon{width:1.05em;height:1.05em;flex:0 0 auto;color:var(--tif-muted)}
button.tif-search-clear{flex:0 0 auto;background:none;border:0;color:var(--tif-muted);
  font:inherit;font-size:.9em;line-height:1;cursor:pointer;padding:.2em .3em}
button.tif-search-clear:hover{color:var(--tif-w)}
.tif-search .tif-search-box input.tif-search-input{
  flex:1 1 auto;min-width:0;background:transparent;border:0;border-radius:0;outline:0;box-shadow:none;
  -webkit-appearance:none;appearance:none;
  color:var(--tif-w);font:inherit;font-size:.68em;line-height:1.4;padding:.25em 0;height:auto}
.tif-search .tif-search-box input.tif-search-input:focus{background:transparent;border:0;box-shadow:none;outline:0}
.tif-search .tif-search-box input.tif-search-input::placeholder{color:var(--tif-muted);opacity:.9}
.tif-search .tif-search-box input.tif-search-input::-webkit-search-cancel-button{display:none}
.tif-search .tif-search-box input.tif-search-input::-webkit-search-decoration{display:none}

/* 日付タブと同じ行に置いたとき（search="tabs"・既定） */
.tif-tt-top .tif-search{margin:0 0 0 auto;flex:0 1 272px;min-width:190px}
.tif-tt-top .tif-search + button.tif-tt-help-btn{margin-left:0}
.tif-tt-top .tif-search-list{left:auto;right:0;min-width:300px}
@media(max-width:767px){
  .tif-tt-top .tif-search{flex:1 1 100%;margin:4px 0 0;min-width:0}
  .tif-tt-top .tif-search-list{left:0;right:0;min-width:0}
}
.tif-search-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;
  list-style:none;margin:0;padding:4px;max-height:52vh;overflow-y:auto;
  background:var(--tif-blk);border:1px solid var(--tif-line);box-shadow:0 10px 30px rgba(0,0,0,.45)}
.tif-search-item{display:flex;align-items:baseline;gap:.6em;padding:.6em .7em;cursor:pointer}
.tif-search-item:hover,.tif-search-item:focus{background:rgba(255,255,255,.1);outline:0}
.tif-search-name{flex:1 1 auto;min-width:0;font-size:.66em;font-weight:700;color:var(--tif-w);overflow-wrap:anywhere}
.tif-search-meta{flex:0 0 auto;font-size:.54em;color:var(--tif-muted);letter-spacing:.04em;white-space:nowrap}
.tif-search-none{margin:6px 0 0;font-size:.58em;color:var(--tif-muted)}

/* モーダルの出演予定から★を押せるようにしたぶんの調整 */
.tif-sch-item{position:relative;padding-right:2.2em}
button.tif-sch-item-fav,.tif-sch-item>button.tif-fav{position:absolute;right:0;top:50%;transform:translateY(-50%);
  background:none;border:0;color:rgba(255,255,255,.3);cursor:pointer;font-size:.75em;line-height:1;padding:.3em}
.tif-sch-item>button.tif-fav:hover{color:var(--tif-acc)}
.tif-sch-item.is-fav>button.tif-fav{color:var(--tif-acc)}
.tif-sch-item.is-fav{background:rgba(255,255,255,.05)}

/* ---------- 段落の余白を効かせ直す ----------
   テーマが p に 2em の下余白を当てていて、クラス1つ（.tif-sch-day など）では
   詳細度が足りず負けます。front.css はテーマより先に読まれるので、同じ強さでも
   負けます。p[class] を足して確実に当てます（値は上の指定と同じです）。 */
p[class].tif-sch-day{margin:0 0 .5em}
p[class].tif-sch-day:not(:first-child){margin-top:14px}
p[class].tif-detail-tbd{margin-bottom:16px}
p[class].tif-tt-note{margin-top:14px}
p[class].tif-tt-scrollnote{margin:0 0 10px}
p[class].tif-howto-note{margin:14px 0 0}
p[class].tif-search-none{margin:6px 0 0}
p[class].tif-favlist-note{margin:0 0 14px}
p[class].tif-my-count{margin:0}
p[class].tif-my-tools{margin:0}
p[class].tif-my-note{margin-top:1.6em}
p[class].tif-count-lead{margin:0 0 .7em}
p[class].tif-coming-main{margin:0}
p[class].tif-coming-sub{margin:.7em 0 0}
p[class].tif-arc-lead{margin:1.4em 0 .6em}
p[class].tif-arc-more{margin:1.2em 0 0}

/* ---------- 2人で1つの枠（DJのb2bなど）のモーダル ---------- */
.tif-pair{display:flex;flex-direction:column;gap:14px;margin:0 0 14px}
.tif-pair-who{display:flex;align-items:center;gap:14px}
.tif-pair-ph{flex:0 0 84px;width:84px;height:84px;overflow:hidden;
  background:linear-gradient(135deg,var(--tif-light),var(--tif-dark))}
.tif-pair-ph img{display:block;width:100%;height:100%;object-fit:cover}
.tif-pair-body{flex:1 1 auto;min-width:0}
.tif-modal-body .tif-pair-body h3{margin:0 0 .35em;font-size:.86em;line-height:1.35;overflow-wrap:anywhere}
.tif-pair-body .tif-detail-links{margin:0}
@media(max-width:600px){
  .tif-pair-ph{flex:0 0 66px;width:66px;height:66px}
  .tif-pair{gap:12px}
}

/* ---------- 撮影可否：静止画と動画を並べたアイコン ---------- */
.tif-cam-pair{display:inline-flex;align-items:center;gap:.35em}
.tif-cam-pair svg{display:block;height:1em;width:auto}
.tif-cam-legend-row{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.5em .9em}
.tif-cam-legend-what{font-weight:700;color:var(--tif-w);letter-spacing:.06em}
.tif-cam-legend-row + .tif-cam-legend-row{margin-left:.4em}
@media(max-width:600px){
  .tif-cam-legend-row{width:100%}
  .tif-cam-legend-row + .tif-cam-legend-row{margin-left:0}
}
