/* =====================================================================
   トレキャスト — 武道会レイヤー v2（arena.css）
   読み込み順: style.css → theme.css → arena.css（最後に読む）

   v1 の反省: 白いカードを青地に並べたまま飾りだけ足したので「表」に見えた。
   v2 は theme.css で地を砂と紙に変えたうえで、部品そのものを作り替える。

   合言葉「予定を、カードにする」
     - 1予定 = 1枚のカード（二重枠・角飾り・コスト宝玉・箔）
     - 会場一覧 = 表ではなくステージ選択の盤面
     - 進出経路 = 3つの門
     - 数字は大きく、余白は広く、線は太く

   IP意匠はなぞらない。闘技場・幟・提灯・門・番付・銅鑼という
   一般的な武道大会の記号だけで雰囲気を作る。
   演出は装飾要素（::before/::after・aria-hidden）に閉じ込め、
   文字情報は演出なしでも読める状態を保つ。
   ===================================================================== */
:root {
  --ar-red:    #d1382b;
  --ar-red-d:  #a3251a;
  --ar-red-x:  #6d1a11;
  --ar-gold:   #d99a1f;
  --ar-gold-l: #ffd66b;
  --ar-gold-d: #9a6b12;
  --ar-sand:   #f7ecd6;
  --ar-sand-d: #ddcaa6;
  --ar-ink:    #2c1e14;
  --ar-indigo: #1e4b8f;
  --ar-purple: #6b3fa0;
}

/* ---------------------------------------------------------------
   0. 共通の質感
   --------------------------------------------------------------- */

/* 集中線（装飾専用。文字の下には敷かない） */
.speedlines {
  position: absolute; inset: -20% -10%; pointer-events: none; z-index: 0;
  background: repeating-conic-gradient(from 0deg at 50% 44%,
    rgba(255, 255, 255, 0.24) 0deg 0.7deg, rgba(255, 255, 255, 0) 0.7deg 3.6deg);
  mask-image: radial-gradient(ellipse 52% 46% at 50% 44%, transparent 42%, #000 78%);
  -webkit-mask-image: radial-gradient(ellipse 52% 46% at 50% 44%, transparent 42%, #000 78%);
  opacity: 0.85;
}

/* ---------------------------------------------------------------
   0.5 アイコン（_inc/icons.php のスプライトを参照）
   絵文字は使わない。大きさ・線の太さ・色を1か所で揃える。
   --------------------------------------------------------------- */
.ic {
  width: 1.15em; height: 1.15em; flex: 0 0 auto;
  vertical-align: -0.2em; color: inherit;
}
.ic--lg { width: 1.5em; height: 1.5em; vertical-align: -0.32em; }
.ic--xl { width: 2.1em; height: 2.1em; vertical-align: -0.5em; }

/* 斜めの帯（見出し・バッジで多用） */
.slab {
  display: inline-block; position: relative;
  background: var(--ar-ink); color: #fff6e4;
  font-family: var(--head); font-weight: 800; letter-spacing: 0.1em;
  padding: 7px 20px; font-size: 0.8rem;
  transform: skewX(-10deg);
}
.slab > span { display: inline-block; transform: skewX(10deg); }
.slab--red  { background: var(--ar-red); }
.slab--gold { background: var(--gold-grad); color: #3d2704; }

/* ---------------------------------------------------------------
   1. 大会告知ポスター（.arena-hero）
   --------------------------------------------------------------- */
.arena-hero {
  position: relative; overflow: hidden;
  background:
    radial-gradient(ellipse 80% 58% at 50% 108%, rgba(247, 236, 214, 0.95), rgba(247, 236, 214, 0) 62%),
    repeating-linear-gradient(90deg, rgba(0,0,0,0.05) 0 66px, rgba(255,255,255,0.05) 66px 68px),
    var(--sky-grad);
  color: #fff8ea;
  border-bottom: 6px solid var(--ar-ink);
}
.arena-hero::before {   /* 上辺の金 */
  content: ""; position: absolute; inset: 0 0 auto 0; height: 6px; z-index: 3;
  background: linear-gradient(90deg, var(--ar-red-x), var(--ar-gold) 26%, var(--ar-gold-l) 50%, var(--ar-gold) 74%, var(--ar-red-x));
}
.arena-hero__inner { position: relative; z-index: 2; padding: clamp(44px, 8vw, 86px) 0 clamp(56px, 9vw, 96px); }

/* 提灯（装飾） */
.lanterns {
  position: absolute; z-index: 1; top: 10px; left: 0; right: 0;
  display: flex; justify-content: space-around; align-items: flex-start; pointer-events: none;
}
.lanterns i {
  display: block; width: 21px; height: 28px; border-radius: 46% 46% 40% 40%;
  background: linear-gradient(180deg, #ff6a53, #c1281a);
  box-shadow: 0 0 20px rgba(255, 160, 96, 0.75), inset 0 -5px 0 rgba(0,0,0,0.2);
  position: relative; animation: lantern-sway 5.5s ease-in-out infinite;
}
.lanterns i::before { content: ""; position: absolute; left: 50%; top: -12px; width: 1px; height: 12px; background: rgba(255,228,180,0.6); }
.lanterns i:nth-child(2n) { animation-delay: -1.4s; height: 24px; }
.lanterns i:nth-child(3n) { animation-delay: -2.9s; opacity: 0.78; }
.lanterns i:nth-child(4n) { animation-delay: -0.7s; }
@keyframes lantern-sway { 0%,100% { transform: rotate(-4deg); } 50% { transform: rotate(4deg); } }
@media (max-width: 640px) { .lanterns i:nth-child(n+7) { display: none; } }

/* 幟（縦書き） */
.nobori {
  writing-mode: vertical-rl; text-orientation: upright;
  display: inline-block; padding: 18px 10px 26px;
  background: linear-gradient(180deg, #bf2f1e, #8c1e14);
  color: #fff4e2; font-family: var(--head); font-weight: 800;
  font-size: 0.92rem; letter-spacing: 0.24em; line-height: 1;
  border: 2px solid var(--ar-gold); border-radius: 3px;
  box-shadow: 0 12px 26px -14px rgba(0,0,0,0.7);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 75% 95%, 50% 100%, 25% 95%, 0 100%);
}

/* ヒーロー本体 */
.arena-hero .lv-badge { position: relative; z-index: 2; }
.arena-hero h1 {
  font-family: var(--head); font-weight: 800; position: relative; z-index: 2;
  font-size: clamp(1.8rem, 5.6vw, 3.3rem); line-height: 1.24; margin: 16px 0 14px;
  text-shadow: 0 3px 0 rgba(61, 23, 16, 0.45);
}
.arena-hero h1 em { font-style: normal; color: var(--ar-gold-l); }
.arena-hero p { position: relative; z-index: 2; color: rgba(255, 246, 232, 0.92); }

/* 対戦告知の並び */
.vs { display: flex; flex-wrap: wrap; align-items: center; gap: clamp(20px, 4vw, 46px); position: relative; z-index: 2; }
.vs__body { flex: 1 1 320px; min-width: 0; }
.vs__meta {
  display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px;
  background: rgba(61, 23, 16, 0.45); border: 1px solid rgba(255, 214, 107, 0.5);
  border-radius: 4px; padding: 8px 16px; margin: 0 0 16px;
  font-family: var(--head); font-weight: 800; font-size: 0.95rem; color: var(--ar-gold-l);
}
.vs__meta small { font-weight: 700; font-size: 0.78rem; color: rgba(255,246,232,0.8); }

/* 何のサイトかを最初の1秒で伝える（ゲーム名 → 種別） */
.gametitle { margin: 0 0 14px; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 14px; }
.gametitle__game {
  font-family: var(--head); font-weight: 800; line-height: 1.22;
  font-size: clamp(1.02rem, 2.5vw, 1.3rem); color: var(--ar-gold-l);
  text-shadow: 0 2px 0 rgba(61, 23, 16, 0.5);
}
.gametitle__kind {
  font-family: var(--head); font-weight: 800; font-size: 0.72rem; letter-spacing: 0.12em;
  color: #3d2704; background: var(--gold-grad);
  border-radius: 3px; padding: 5px 12px; white-space: nowrap;
}

/* ---------------------------------------------------------------
   1.5 カードの扇（.cardfan）— 「トレカのサイト」だと一目で伝える
   ※ 実在カードの意匠は使わない。無地のカード“形状”だけで表す。
      比率はTCGカードの 63:88。角丸・二重枠・ホロ箔でそれらしく見せる。
   --------------------------------------------------------------- */
.cardstack {
  position: relative; flex: 0 0 auto;
  width: clamp(230px, 34vw, 320px); aspect-ratio: 1.12;
  display: grid; place-items: center;
}
.cardfan {
  position: absolute; inset: 0; pointer-events: none;
  display: grid; place-items: center;
}
.cardfan__c {
  position: absolute; top: 4%;
  width: 31%; aspect-ratio: 63 / 88;
  border-radius: 9px; border: 3px solid var(--ar-ink);
  box-shadow: 0 18px 30px -16px rgba(0, 0, 0, 0.8);
  transform-origin: 50% 118%;
  overflow: hidden;
  background:
    linear-gradient(160deg, rgba(255,255,255,0.30), rgba(255,255,255,0) 46%),
    linear-gradient(200deg, #f6dfa8, #d99a1f 44%, #a3251a);
}
.cardfan__c::before {          /* 内枠＋無地の絵柄枠 */
  content: ""; position: absolute; inset: 6px;
  border: 2px solid rgba(255, 246, 225, 0.72); border-radius: 4px;
  background:
    radial-gradient(circle at 50% 34%, rgba(255,255,255,0.55), rgba(255,255,255,0) 46%),
    linear-gradient(180deg, rgba(61,23,16,0.18) 0 22%, rgba(61,23,16,0) 22% 66%, rgba(61,23,16,0.22) 66% 78%, rgba(61,23,16,0) 78%);
}
.cardfan__c::after {           /* ホロ箔 */
  content: ""; position: absolute; inset: -30%;
  background: linear-gradient(74deg,
    transparent 34%, rgba(255,255,255,0.72) 44%, rgba(196,232,255,0.6) 50%,
    rgba(255,214,140,0.62) 56%, transparent 66%);
  animation: fan-foil 5.5s ease-in-out infinite;
}
.cardfan__c--1 { transform: rotate(-26deg) translateY(6%);  }
.cardfan__c--2 { transform: rotate(-13deg) translateY(1%);  background: linear-gradient(200deg,#f7ead0,#c9782a 44%,#8c1e14); }
.cardfan__c--3 { transform: rotate(0deg)   translateY(-2%); background: linear-gradient(200deg,#fff3d4,#e0b34a 42%,#a9791f); }
.cardfan__c--4 { transform: rotate(13deg)  translateY(1%);  background: linear-gradient(200deg,#f2e3bd,#b8801a 44%,#7d1a12); }
.cardfan__c--5 { transform: rotate(26deg)  translateY(6%);  }
.cardfan__c--2::after { animation-delay: -1.1s; }
.cardfan__c--3::after { animation-delay: -2.2s; }
.cardfan__c--4::after { animation-delay: -3.3s; }
.cardfan__c--5::after { animation-delay: -4.4s; }
@keyframes fan-foil {
  0%, 62%, 100% { transform: translateX(-120%); }
  84%           { transform: translateX(120%); }
}
/* 扇の手前に銅鑼を重ねる */
.cardstack .gong { position: relative; z-index: 2; width: clamp(148px, 21vw, 196px); align-self: end; margin-bottom: -4%; }

@media (max-width: 560px) {
  .cardstack { width: 250px; }
  .cardstack .gong { width: 150px; }
}

/* ---------------------------------------------------------------
   2. 銅鑼カウントダウン（.gong）
   --------------------------------------------------------------- */
.gong {
  position: relative; flex: 0 0 auto;
  width: clamp(156px, 27vw, 216px); aspect-ratio: 1; border-radius: 50%;
  display: grid; place-items: center;
  background: radial-gradient(circle at 36% 30%, #fdf0c8, #e0b34a 44%, #a9791f 76%, #7a5410);
  box-shadow:
    0 0 0 7px var(--ar-red), 0 0 0 11px var(--ar-gold),
    0 0 46px rgba(255, 190, 90, 0.45),
    0 26px 56px -22px rgba(0,0,0,0.75);
}
.gong::before {
  content: ""; position: absolute; inset: 12%; border-radius: 50%;
  border: 2px solid rgba(122, 84, 16, 0.4);
  box-shadow: inset 0 0 0 10px rgba(255, 246, 214, 0.34), inset 0 0 34px rgba(122, 84, 16, 0.35);
}
.gong::after {
  content: ""; position: absolute; inset: 34%; border-radius: 50%;
  background: radial-gradient(circle at 40% 34%, rgba(255,252,236,0.95), rgba(224,179,74,0) 72%);
}
.gong__inner { position: relative; z-index: 1; text-align: center; line-height: 1; }
.gong__lead { display: block; font-family: var(--head); font-weight: 800; font-size: 0.7rem; letter-spacing: 0.18em; color: #6b4708; }
.gong__num {
  display: block; font-family: var(--head); font-weight: 800;
  font-size: clamp(3rem, 8.6vw, 4.6rem); color: #3d2704;
  font-variant-numeric: tabular-nums; text-shadow: 0 3px 0 rgba(255, 250, 230, 0.7);
}
.gong__unit { display: block; font-family: var(--head); font-weight: 800; font-size: 0.95rem; color: #6b4708; }
.gong__txt  { display: block; font-family: var(--head); font-weight: 800; font-size: clamp(1.05rem, 3vw, 1.5rem); color: #3d2704; }

/* ---------------------------------------------------------------
   3. 予定カード（.fc）— TCGカードの体裁にする
   --------------------------------------------------------------- */
.fc {
  position: relative; background: var(--white);
  border: 2px solid var(--ar-ink); border-radius: 8px;
  box-shadow: 5px 5px 0 rgba(44, 30, 20, 0.15);
  transition: transform 0.22s var(--ease), box-shadow 0.22s var(--ease);
  overflow: hidden;
}
.fc:hover { transform: translateY(-3px); box-shadow: 8px 10px 0 rgba(44, 30, 20, 0.18); }

/* 種別バンド（斜め切り） */
.fc__band {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  background: var(--ki-grad); color: #4a2503;
  padding: 7px 16px 7px 14px;
  font-family: var(--head); font-weight: 800; font-size: 0.78rem; letter-spacing: 0.1em;
  border-bottom: 2px solid var(--ar-ink);
}
.fc--event    .fc__band { background: linear-gradient(100deg, #bf2f1e, #8c1e14); color: #fff4e2; }
.fc--media    .fc__band { background: linear-gradient(100deg, #8055c4, #4c2a80); color: #f6efff; }
.fc--campaign .fc__band { background: linear-gradient(100deg, #23b077, #0d7b4d); color: #effbf5; }
.fc__type  { display: inline-flex; align-items: center; gap: 7px; }
.fc__state {
  background: rgba(255, 255, 255, 0.85); color: var(--ar-ink);
  border-radius: 2px; padding: 2px 10px; font-size: 0.74rem; white-space: nowrap;
}

/* 内枠（金の細枠＝カードらしさの要） */
.fc__inner {
  position: relative; margin: 5px; padding: 16px 16px 14px;
  border: 1px solid var(--ar-gold); border-radius: 4px;
  display: flex; gap: 16px; align-items: flex-start;
  background:
    radial-gradient(circle at 100% 0, rgba(217,154,31,0.10), rgba(217,154,31,0) 42%),
    radial-gradient(circle at 0 100%, rgba(209,56,43,0.07), rgba(209,56,43,0) 42%);
}
/* 四隅の飾り */
.fc__inner::before {
  content: ""; position: absolute; inset: 4px; pointer-events: none; border-radius: 2px;
  background:
    linear-gradient(var(--ar-gold), var(--ar-gold)) left  top    / 12px 2px no-repeat,
    linear-gradient(var(--ar-gold), var(--ar-gold)) left  top    / 2px 12px no-repeat,
    linear-gradient(var(--ar-gold), var(--ar-gold)) right top    / 12px 2px no-repeat,
    linear-gradient(var(--ar-gold), var(--ar-gold)) right top    / 2px 12px no-repeat,
    linear-gradient(var(--ar-gold), var(--ar-gold)) left  bottom / 12px 2px no-repeat,
    linear-gradient(var(--ar-gold), var(--ar-gold)) left  bottom / 2px 12px no-repeat,
    linear-gradient(var(--ar-gold), var(--ar-gold)) right bottom / 12px 2px no-repeat,
    linear-gradient(var(--ar-gold), var(--ar-gold)) right bottom / 2px 12px no-repeat;
  opacity: 0.75;
}
/* 箔（ホロ）— さわったときだけ流す */
.fc__inner::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(104deg,
    transparent 32%, rgba(255,255,255,0.62) 44%, rgba(255, 226, 150, 0.55) 51%,
    rgba(196, 226, 255, 0.45) 57%, transparent 68%);
  transform: translateX(-130%);
  transition: transform 0.85s var(--ease);
}
.fc:hover .fc__inner::after { transform: translateX(130%); }

/* コスト宝玉（残り日数） */
.fc__gem {
  --gem-pct: 0%;
  position: relative; flex: 0 0 auto;
  width: 78px; height: 78px; border-radius: 50%;
  display: grid; place-items: center;
  background: conic-gradient(var(--ar-gold) var(--gem-pct), rgba(44,30,20,0.12) var(--gem-pct));
  box-shadow: 0 6px 16px -8px rgba(44,30,20,0.6);
}
.fc__gem::before {
  content: ""; position: absolute; inset: 6px; border-radius: 50%;
  background: radial-gradient(circle at 36% 28%, #fffdf3, #f3e3c2 58%, #e2cfa6);
  border: 1.5px solid var(--ar-ink);
}
.fc__gem-inner { position: relative; z-index: 1; text-align: center; line-height: 1; }
.fc__gem-num {
  display: block; font-family: var(--head); font-weight: 800; font-size: 1.72rem;
  color: var(--ar-ink); font-variant-numeric: tabular-nums;
}
.fc__gem-unit { display: block; font-family: var(--head); font-weight: 700; font-size: 0.68rem; color: var(--muted); margin-top: 2px; }
.fc__gem-txt  { position: relative; z-index: 1; font-family: var(--head); font-weight: 800; font-size: 0.8rem; color: var(--ar-ink); }

.fc--event .fc__gem { background: conic-gradient(var(--ar-red) var(--gem-pct), rgba(44,30,20,0.12) var(--gem-pct)); }
.fc--media .fc__gem { background: conic-gradient(var(--ar-purple) var(--gem-pct), rgba(44,30,20,0.12) var(--gem-pct)); }
.fc.is-open  .fc__gem { background: conic-gradient(var(--good) 100%, var(--good)); }
.fc.is-today .fc__gem { background: var(--ki-grad); }
.fc.is-past  .fc__gem { background: rgba(44,30,20,0.16); }
/* 30日以内は脈打たせる */
.fc.is-soon .fc__gem { animation: gem-pulse 3.2s ease-in-out infinite; }
@keyframes gem-pulse {
  0%,100% { box-shadow: 0 6px 16px -8px rgba(44,30,20,0.6), 0 0 0 0 rgba(209,56,43,0); }
  50%     { box-shadow: 0 6px 16px -8px rgba(44,30,20,0.6), 0 0 0 8px rgba(209,56,43,0.12); }
}

/* 本文 */
.fc__body { min-width: 0; flex: 1; }
.fc__date {
  margin: 0 0 5px; font-family: var(--head); font-weight: 800; font-size: 0.9rem;
  color: var(--ar-red-d); font-variant-numeric: tabular-nums; letter-spacing: 0.02em;
}
.fc--media .fc__date { color: #4c2a80; }
.fc__range { color: var(--muted); font-weight: 700; }
.fc__title { margin: 0 0 6px; font-family: var(--head); font-size: 1.16rem; line-height: 1.42; color: var(--ar-ink); }
.fc__title a {
  color: var(--ar-ink); text-decoration: none;
  background-image: linear-gradient(var(--ar-gold), var(--ar-gold));
  background-size: 100% 2px; background-position: 0 100%; background-repeat: no-repeat;
}
.fc__title a:hover { color: var(--ar-red-d); background-image: linear-gradient(var(--ar-red-d), var(--ar-red-d)); }
.fc__title a:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 3px; }
/* 「くわしく見る」は他のアクションより前に出す */
.chip-act--go { background: var(--ar-ink); color: var(--ar-gold-l); border-color: var(--ar-ink); }
.chip-act--go:hover { background: var(--ar-red-d); color: #fff4e2; border-color: var(--ar-red-d); }
.fc__sub { margin: 0 0 12px; font-size: 0.92rem; color: var(--muted); }

/* 締切（いちばん強い警告） */
.fc__deadline {
  margin: 0 0 12px; font-size: 0.88rem;
  background: var(--ar-ink); color: #fff4dd;
  border-radius: 4px; padding: 10px 14px;
  display: flex; flex-wrap: wrap; gap: 5px 12px; align-items: baseline;
  box-shadow: inset 3px 0 0 var(--ar-gold);
}
.fc__deadline strong { font-family: var(--head); color: var(--ar-gold-l); }
.fc__deadline-days {
  font-family: var(--head); font-weight: 800; color: #3d2704;
  background: var(--gold-grad); border-radius: 999px; padding: 2px 13px; font-size: 0.82rem;
}
.fc__deadline--past { background: var(--paper); color: var(--muted); box-shadow: inset 3px 0 0 var(--line); }
.fc__deadline--past strong { color: var(--muted); }

.fc__points { margin: 0 0 12px; padding: 0; list-style: none; }
.fc__points li { position: relative; padding-left: 18px; margin: 5px 0; font-size: 0.91rem; }
.fc__points li::before {
  content: ""; position: absolute; left: 0; top: 0.62em;
  width: 7px; height: 7px; background: var(--ar-gold); transform: rotate(45deg);
}
.fc__price {
  margin: 0 0 12px; display: inline-block;
  font-family: var(--head); font-weight: 800; font-size: 0.95rem; color: var(--ar-ink);
  background: var(--brand-soft); border: 1px solid var(--ar-sand-d);
  border-radius: 3px; padding: 4px 12px;
}
.fc__src { margin: 8px 0 0; padding-top: 9px; border-top: 1px dashed var(--line); font-size: 0.76rem; color: var(--muted); }
.fc__src a { color: var(--muted); }

.fc.is-past { opacity: 0.62; }
.fc.is-past .fc__band { background: var(--muted); color: var(--paper); }

@media (max-width: 560px) {
  .fc__inner { gap: 12px; padding: 14px 12px 12px; }
  .fc__gem { width: 62px; height: 62px; }
  .fc__gem-num { font-size: 1.3rem; }
  .fc__title { font-size: 1.05rem; }
}

/* 直近3件は横並びではなく、縦にカードを立てる */
.next3 { display: grid; gap: 20px; }
@media (min-width: 940px) { .next3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 940px) {
  .next3 .fc__inner { flex-direction: column; }
  .next3 .fc__gem { width: 92px; height: 92px; }
  .next3 .fc__gem-num { font-size: 2.05rem; }
}

/* ---------------------------------------------------------------
   4. 進行ルート（.tl）
   --------------------------------------------------------------- */
.tl { position: relative; margin: 0; padding: 0; list-style: none; }
.tl::before {
  content: ""; position: absolute; left: 88px; top: 8px; bottom: 8px; width: 6px;
  border-radius: 3px;
  background: repeating-linear-gradient(180deg, var(--ar-gold) 0 12px, var(--ar-sand-d) 12px 20px);
  box-shadow: 0 0 0 1px rgba(44,30,20,0.18);
}
/* 1fr ではなく minmax(0,1fr)。1fr だと中身の最小幅で押し広げられ、
   狭い画面でカードが枠からはみ出して切れる。 */
.tl__item { position: relative; display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 0 34px; padding-bottom: 26px; }
/* padding-right はレールと菱形マーカー（left:80px〜102px）を避けるため。
   0 にすると曜日の文字がマーカーの下に潜って読めなくなる。 */
.tl__when {
  text-align: right; padding: 24px 26px 0 0;
  font-family: var(--head); font-weight: 800; font-size: 1.05rem;
  color: var(--ar-ink); font-variant-numeric: tabular-nums; line-height: 1.25;
}
.tl__when small { display: block; font-weight: 700; font-size: 0.7rem; color: var(--muted); letter-spacing: 0.02em; }
.tl__item::after {
  content: ""; position: absolute; left: 80px; top: 28px;
  width: 22px; height: 22px; transform: rotate(45deg);
  background: var(--accent); border: 3px solid var(--ar-ink);
  box-shadow: 0 0 0 4px rgba(217, 154, 31, 0.22);
}
.tl__item--event::after { background: var(--ar-red); box-shadow: 0 0 0 4px rgba(209, 56, 43, 0.2); }
.tl__item--media::after { background: var(--ar-purple); box-shadow: 0 0 0 4px rgba(107, 63, 160, 0.2); }

.tl__month {
  position: relative; grid-column: 1 / -1; margin: 6px 0 18px;
  padding-left: 132px;
}
.tl__month span {
  display: inline-block; background: var(--ar-ink); color: var(--ar-gold-l);
  font-family: var(--head); font-weight: 800; font-size: 0.82rem; letter-spacing: 0.16em;
  padding: 5px 18px; transform: skewX(-10deg);
}
.tl__month span > i { display: inline-block; transform: skewX(10deg); font-style: normal; }

@media (max-width: 700px) {
  .tl::before { left: 10px; }
  .tl__item { grid-template-columns: minmax(0, 1fr); gap: 0; padding-left: 44px; }
  .tl__item::after { left: 2px; top: 10px; width: 18px; height: 18px; }
  .tl__when { text-align: left; padding: 0 0 8px; }
  .tl__when small { display: inline; margin-left: 8px; }
  .tl__month { padding-left: 44px; }
}

/* ---------------------------------------------------------------
   5. 三つの門（.gates）— 出場までの道のり
   --------------------------------------------------------------- */
.gates { display: grid; gap: 20px; margin: 0; padding: 0; list-style: none; }
@media (min-width: 860px) { .gates { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 34px; } }

.gate { position: relative; padding-top: 26px; }
.gate::before {   /* 門の笠木 */
  content: ""; position: absolute; top: 0; left: -10px; right: -10px; height: 11px;
  background: linear-gradient(180deg, #bf2f1e, #8c1e14);
  border: 2px solid var(--ar-ink); border-radius: 3px;
}
.gate::after {    /* 貫（ぬき） */
  content: ""; position: absolute; top: 17px; left: 4px; right: 4px; height: 5px;
  background: var(--ar-red-d); border-radius: 2px;
}
/* 門と門をつなぐ矢印 */
@media (min-width: 860px) {
  .gate:not(:last-child) .gate__inner::after {
    content: "▶"; position: absolute; right: -27px; top: 50%; transform: translateY(-50%);
    color: var(--ar-gold); font-size: 1.1rem; text-shadow: 0 1px 0 var(--ar-ink);
  }
}
.gate__inner {
  position: relative;
  background: var(--white); border: 2px solid var(--ar-ink); border-radius: 6px;
  box-shadow: 5px 5px 0 rgba(44,30,20,0.15);
  padding: 20px 20px 18px; height: 100%;
}
.gate.is-now .gate__inner { box-shadow: 5px 5px 0 var(--ar-red); }
.gate__seal {
  display: inline-grid; place-items: center; width: 58px; height: 58px;
  border: 3px solid var(--ar-red); border-radius: 6px; color: var(--ar-red);
  font-family: var(--head); font-weight: 800; font-size: 0.72rem; line-height: 1.2;
  text-align: center; transform: rotate(-6deg); margin-bottom: 12px;
  background: rgba(255, 253, 245, 0.9);
}
.gate.is-now .gate__seal { background: var(--ar-red-d); color: #fff6ec; box-shadow: 0 0 0 4px rgba(209,56,43,0.16); }
.gate.is-done .gate__seal { border-color: var(--muted); color: var(--muted); }
.gate h3 { margin: 0 0 4px; font-family: var(--head); font-size: 1.08rem; color: var(--ar-ink); }
.gate__when { margin: 0 0 10px; font-family: var(--head); font-weight: 800; font-size: 0.88rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.gate p { margin: 0 0 10px; font-size: 0.9rem; }
.gate__state {
  display: inline-block; font-family: var(--head); font-weight: 800; font-size: 0.78rem;
  border-radius: 3px; padding: 4px 13px; background: var(--ar-ink); color: #fdf6e8;
}
.gate__state.is-open { background: var(--good); }
.gate__state.is-soon { background: var(--ar-red); }

/* ---------------------------------------------------------------
   6. 会場＝ステージ選択（.stages）
   --------------------------------------------------------------- */
.stages { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none;
  grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); }
.stage {
  position: relative; overflow: hidden;
  background: var(--white); border: 2px solid var(--ar-ink); border-radius: 6px;
  box-shadow: 4px 4px 0 rgba(44,30,20,0.14);
  padding: 32px 14px 14px;
  transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.stage:hover { transform: translateY(-3px); box-shadow: 6px 8px 0 rgba(44,30,20,0.18); }
.stage::before {   /* 上部の朱帯 */
  content: ""; position: absolute; inset: 0 0 auto 0; height: 24px;
  background: linear-gradient(100deg, #bf2f1e, #8c1e14);
  border-bottom: 2px solid var(--ar-ink);
}
.stage__no {
  position: absolute; top: 3px; left: 12px; z-index: 1;
  font-family: var(--head); font-weight: 800; font-size: 0.76rem; letter-spacing: 0.12em;
  color: #fff4e2;   /* #ffdcc9 だと朱帯の上で 4.49:1 になり AA を割る */
}
.stage__days {
  position: absolute; top: 2px; right: 10px; z-index: 1;
  font-family: var(--head); font-weight: 800; font-size: 0.74rem; color: #fff4e2;
  font-variant-numeric: tabular-nums;
}
.stage__pref {
  margin: 4px 0 2px; font-family: var(--head); font-weight: 800;
  font-size: clamp(1.25rem, 3.4vw, 1.55rem); line-height: 1.15; color: var(--ar-ink);
}
.stage__pref a {
  color: var(--ar-ink); text-decoration: none;
  background-image: linear-gradient(var(--ar-gold), var(--ar-gold));
  background-size: 100% 3px; background-position: 0 100%; background-repeat: no-repeat;
}
.stage__pref a:hover { color: var(--ar-red-d); background-image: linear-gradient(var(--ar-red-d), var(--ar-red-d)); }
.stage__pref a:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 3px; }
.stage__map--go { background: var(--ar-ink); color: var(--ar-gold-l); border-color: var(--ar-ink); }
.stage__map--go .ic { color: var(--ar-gold-l); }
.stage__map--go:hover { background: var(--ar-red-d); color: #fff4e2; border-color: var(--ar-red-d); }
.stage__map--go:hover .ic { color: #fff4e2; }
.stage__date {
  margin: 0 0 10px; font-family: var(--head); font-weight: 800; font-size: 1.02rem;
  color: var(--ar-red-d); font-variant-numeric: tabular-nums;
}
.stage__date small { font-size: 0.74rem; color: var(--muted); margin-left: 4px; }
.stage__shop { margin: 0 0 2px; font-size: 0.82rem; line-height: 1.5; font-weight: 700; color: var(--ar-ink); }
.stage__area { margin: 0 0 10px; font-size: 0.75rem; color: var(--muted); }
.stage__links { display: flex; flex-wrap: wrap; gap: 7px; margin: 0; }
.stage__map {
  display: inline-flex; align-items: center; gap: 5px;
  font-family: var(--head); font-weight: 800; font-size: 0.74rem; text-decoration: none;
  border: 2px solid var(--ar-ink); border-radius: 3px; padding: 6px 12px;
  background: var(--white); color: var(--ar-ink); box-shadow: 2px 2px 0 rgba(44,30,20,0.16);
  transition: 0.15s var(--ease);
}
.stage__map:hover { transform: translate(1px,1px); box-shadow: 1px 1px 0 rgba(44,30,20,0.16); color: var(--ar-ink); }
.stage__map:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 2px; }
.stage.is-past { opacity: 0.45; }
.stage.is-past::before { background: var(--muted); }

/* ---------------------------------------------------------------
   3.5 大会の主旨（.purpose）／必要な装備（.gear）／編集部から（.tipbox）
   主旨のラベルは事実ベース。必ず根拠（公式の記載）を下に併記する。
   --------------------------------------------------------------- */
.purpose {
  margin: 0 0 12px; padding: 11px 14px;
  border: 2px solid var(--ar-ink); border-radius: 5px;
  background: var(--indigo-soft);
}
.purpose--first   { background: #e6f7ee; }
.purpose--casual  { background: #e6eefb; }
.purpose--theme   { background: #f3ebfc; }
.purpose--compete { background: #fdeadf; }
.purpose--summit  { background: var(--ar-ink); }
.purpose__head { margin: 0 0 5px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.purpose__tag {
  display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--head); font-weight: 800; font-size: 0.92rem; color: var(--ar-ink);
}
.purpose__tag .ic { color: var(--ar-red-d); }
.purpose--summit .purpose__tag .ic { color: var(--ar-gold); }
.purpose__fmt { display: inline-flex; align-items: center; gap: 6px; }
.purpose--summit .purpose__tag { color: var(--ar-gold-l); }
.purpose__fmt {
  font-family: var(--head); font-weight: 800; font-size: 0.7rem; letter-spacing: 0.06em;
  border: 1.5px solid var(--ar-ink); border-radius: 999px; padding: 2px 10px; color: var(--ar-ink);
  background: rgba(255,255,255,0.7);
}
.purpose--summit .purpose__fmt { border-color: var(--ar-gold); color: var(--ar-gold-l); background: transparent; }
.purpose__note { margin: 0; font-size: 0.82rem; line-height: 1.7; color: #4a3a2a; }
.purpose--summit .purpose__note { color: #f0e2c8; }

.gear {
  margin: 0 0 12px; padding: 13px 15px;
  border: 2px dashed var(--ar-sand-d); border-radius: 5px; background: #fffaf0;
}
.gear__head {
  margin: 0 0 10px; display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center;
  font-family: var(--head); font-weight: 800; font-size: 0.86rem; color: var(--ar-ink);
}
.gear__head > .ic { color: var(--ar-gold-d); }
.gear__fee {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 0.76rem; background: var(--ar-ink); color: var(--ar-gold-l);
  border-radius: 999px; padding: 4px 13px;
}
.gear__list { margin: 0; padding: 0; list-style: none; }
.gear__list li {
  display: flex; align-items: flex-start; gap: 10px;
  margin: 7px 0; font-size: 0.88rem; line-height: 1.6;
}
.gear__list li > .ic {
  color: var(--ar-red-d); margin-top: 0.1em;
  background: #fff; border: 1.5px solid var(--ar-sand-d); border-radius: 5px;
  padding: 3px; box-sizing: content-box;
}
.gear__prize { margin: 9px 0 0; padding-top: 9px; border-top: 1px dashed var(--ar-sand-d); font-size: 0.8rem; color: var(--muted); }
.gear__prize span {
  display: inline-block; font-family: var(--head); font-weight: 800; font-size: 0.72rem;
  color: var(--ar-ink); background: var(--accent-2); border-radius: 3px; padding: 2px 9px; margin-right: 8px;
}

.tipbox {
  margin: 0 0 12px; padding: 12px 15px; font-size: 0.88rem; line-height: 1.75;
  background: #fff8e6; border-left: 5px solid var(--accent); border-radius: 0 5px 5px 0; color: #4a3a2a;
}
.tipbox__label {
  display: inline-block; font-family: var(--head); font-weight: 800; font-size: 0.72rem;
  color: #6b4708; background: var(--accent-2); border-radius: 3px; padding: 2px 9px; margin-right: 9px;
}

/* ---------------------------------------------------------------
   6.5 エリア絞り込み（.areafilter）
   JSが動かないときはボタンを出さず、会場は全件そのまま並ぶ。
   --------------------------------------------------------------- */
.areafilter { display: flex; flex-wrap: wrap; gap: 9px; margin: 0 0 22px; }
.areafilter button {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
  font-family: var(--head); font-weight: 800; font-size: 0.86rem;
  border: 2px solid var(--ar-ink); border-radius: 4px; padding: 9px 16px;
  background: var(--white); color: var(--ar-ink);
  box-shadow: 3px 3px 0 rgba(44,30,20,0.16); transition: 0.15s var(--ease);
}
.areafilter button span {
  font-size: 0.72rem; line-height: 1; padding: 3px 7px; border-radius: 999px;
  background: var(--brand-soft); color: var(--ar-red-d);
}
/* 白文字を乗せる朱は --ar-red（#d1382b）では 4.5:1 を割るため、必ず濃いほう（--ar-red-d）を使う */
.areafilter button[aria-pressed="true"] {
  background: var(--ar-red-d); color: #fff4e2; border-color: var(--ar-ink);
  box-shadow: 3px 3px 0 var(--ar-ink);
}
.areafilter button[aria-pressed="true"] span { background: rgba(255,255,255,0.9); color: var(--ar-red-d); }
.areafilter button:hover { transform: translate(1px,1px); box-shadow: 2px 2px 0 rgba(44,30,20,0.16); }
.areafilter button:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 2px; }
.areafilter__empty { margin: 0; padding: 22px; text-align: center; color: var(--muted); }

/* ---------------------------------------------------------------
   6.55 大会をさがす（.facets）— 条件を選んで絞り込む盤
   --------------------------------------------------------------- */
.facets {
  background: var(--white); border: 3px solid var(--ar-ink); border-radius: 8px;
  box-shadow: 5px 5px 0 rgba(44,30,20,0.15);
  padding: 20px 22px 16px; margin: 0 0 26px;
}
.facet { display: grid; grid-template-columns: 62px minmax(0, 1fr); gap: 10px 16px; align-items: start; margin-bottom: 14px; }
.facet__label {
  margin: 8px 0 0; font-family: var(--head); font-weight: 800; font-size: 0.86rem;
  color: #fdf6e8; background: var(--ar-ink); border-radius: 3px; padding: 5px 0; text-align: center;
}
.facet__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.facet__chips button {
  display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
  font-family: var(--head); font-weight: 800; font-size: 0.85rem;
  border: 2px solid var(--ar-ink); border-radius: 4px; padding: 8px 14px;
  background: var(--white); color: var(--ar-ink);
  box-shadow: 2px 2px 0 rgba(44,30,20,0.16); transition: 0.15s var(--ease);
}
.facet__chips button span {
  font-size: 0.7rem; line-height: 1; padding: 3px 7px; border-radius: 999px;
  background: var(--brand-soft); color: var(--ar-red-d);
}
.facet__chips button .ic { width: 1.3em; height: 1.3em; vertical-align: 0; color: var(--ar-red-d); }
.facet__chips button[aria-pressed="true"] .ic { color: var(--ar-gold-l); }
.areafilter button .ic { width: 1.3em; height: 1.3em; vertical-align: 0; }
.facet__chips button[aria-pressed="true"] {
  background: var(--ar-red-d); color: #fff4e2; box-shadow: 2px 2px 0 var(--ar-ink);
}
.facet__chips button[aria-pressed="true"] span { background: rgba(255,255,255,0.92); color: var(--ar-red-d); }
.facet__chips button[disabled] { opacity: 0.34; cursor: default; box-shadow: none; }
.facet__chips button:not([disabled]):hover { transform: translate(1px,1px); box-shadow: 1px 1px 0 rgba(44,30,20,0.16); }
.facet__chips button:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 2px; }

.facet__result {
  margin: 4px 0 0; padding-top: 13px; border-top: 2px dashed var(--ar-sand-d);
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px;
  font-family: var(--head); font-weight: 800; font-size: 0.92rem; color: var(--ar-ink);
}
.facet__result b { font-size: 1.5rem; color: var(--ar-red-d); font-variant-numeric: tabular-nums; }
.facet__result button {
  cursor: pointer; font-family: var(--head); font-weight: 800; font-size: 0.78rem;
  border: 2px solid var(--ar-ink); border-radius: 4px; padding: 7px 14px;
  background: var(--white); color: var(--ar-ink); margin-left: auto;
}
.facet__result button:hover { background: var(--ar-ink); color: #fdf6e8; }
.facet__result button:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 2px; }

@media (max-width: 560px) {
  .facets { padding: 16px 14px 12px; }
  .facet { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .facet__label { padding: 4px 12px; text-align: left; justify-self: start; }
  .facet__result button { margin-left: 0; }
}

/* ---------------------------------------------------------------
   6.65 パンくず（.crumbs）／事実の表（.factgrid）／リンク一覧（.linklist）
   --------------------------------------------------------------- */
.crumbs {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px;
  font-size: 0.8rem; position: relative; z-index: 2;
}
.crumbs a, .crumbs span {
  color: rgba(255, 246, 232, 0.86); text-decoration: none;
  background: rgba(61, 23, 16, 0.42); border: 1px solid rgba(255, 214, 107, 0.42);
  border-radius: 3px; padding: 4px 11px; max-width: 46ch;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.crumbs a:hover { background: rgba(61, 23, 16, 0.7); color: #fff; }
.crumbs span[aria-current] { background: var(--ar-gold); color: #3d2704; border-color: var(--ar-gold); font-weight: 700; }
.crumbs > *:not(:last-child)::after { content: ""; }

.factgrid {
  display: grid; gap: 2px; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  background: var(--ar-ink); border: 3px solid var(--ar-ink); border-radius: 6px; overflow: hidden;
  box-shadow: 5px 5px 0 rgba(44,30,20,0.15);
}
.fact { background: var(--white); padding: 13px 16px; }
.fact--wide { grid-column: 1 / -1; }
.fact__k {
  margin: 0 0 4px; font-family: var(--head); font-weight: 800; font-size: 0.74rem;
  letter-spacing: 0.08em; color: var(--ar-red-d);
}
.fact__v { margin: 0; font-size: 0.95rem; line-height: 1.65; color: var(--ar-ink); font-weight: 700; }
.fact__v small { display: block; font-weight: 400; font-size: 0.78rem; color: var(--muted); margin-top: 3px; }

.linklist { list-style: none; margin: 0; padding: 0; }
.linklist li { margin: 0 0 10px; }
.linklist a {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; text-decoration: none;
  background: var(--white); border: 2px solid var(--ar-ink); border-radius: 5px;
  padding: 13px 18px; box-shadow: 3px 3px 0 rgba(44,30,20,0.14);
  transition: 0.15s var(--ease); color: var(--ar-ink);
}
.linklist a::after { content: "→"; margin-left: auto; color: var(--ar-red-d); font-weight: 800; }
.linklist a:hover { transform: translate(1px,1px); box-shadow: 2px 2px 0 rgba(44,30,20,0.14); color: var(--ar-ink); }
.linklist a:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 2px; }
.linklist__date {
  font-family: var(--head); font-weight: 800; font-size: 0.88rem; color: var(--ar-red-d);
  font-variant-numeric: tabular-nums; min-width: 6.5em;
}
.linklist__title { font-family: var(--head); font-weight: 800; font-size: 1rem; }
.linklist__meta { font-size: 0.8rem; color: var(--muted); }

.actionrow { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }

/* ---------------------------------------------------------------
   6.66 一覧の情報密度を上げる（.digest）
   カード1枚ぶんの場所を使わずに、日付・主旨・締切・必要なものまで見せる。
   --------------------------------------------------------------- */
.digest { list-style: none; margin: 0; padding: 0; }
.digest__row {
  position: relative; display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 0 20px;
  background: var(--white); border: 2px solid var(--ar-ink); border-radius: 6px;
  box-shadow: 4px 4px 0 rgba(44,30,20,0.14);
  padding: 16px 18px; margin-bottom: 12px; overflow: hidden;
}
.digest__row::before {
  content: ""; position: absolute; inset: 0 auto 0 0; width: 5px; background: var(--ki-grad);
}
.digest__row--event::before { background: linear-gradient(180deg, #bf2f1e, #8c1e14); }
.digest__row--media::before { background: linear-gradient(180deg, #8055c4, #4c2a80); }

.digest__when { text-align: center; border-right: 2px dashed var(--ar-sand-d); padding-right: 14px; }
.digest__when b {
  display: block; font-family: var(--head); font-weight: 800; font-size: 1.5rem;
  color: var(--ar-ink); line-height: 1.1; font-variant-numeric: tabular-nums;
}
.digest__when small { display: block; font-size: 0.72rem; color: var(--muted); margin-top: 2px; }
.digest__days {
  display: inline-block; margin-top: 7px; font-family: var(--head); font-weight: 800;
  font-size: 0.72rem; color: #fff4e2; background: var(--ar-red-d);
  border-radius: 999px; padding: 3px 10px; white-space: nowrap;
}

.digest__body { min-width: 0; }
.digest__title { margin: 0 0 7px; font-family: var(--head); font-weight: 800; font-size: 1.06rem; line-height: 1.45; }
.digest__title a {
  color: var(--ar-ink); text-decoration: none;
  background-image: linear-gradient(var(--ar-gold), var(--ar-gold));
  background-size: 100% 2px; background-position: 0 100%; background-repeat: no-repeat;
}
.digest__title a:hover { color: var(--ar-red-d); background-image: linear-gradient(var(--ar-red-d), var(--ar-red-d)); }
.digest__title a:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 3px; }

.digest__tags { margin: 0 0 8px; display: flex; flex-wrap: wrap; gap: 6px; }
.digest__tags > span {
  display: inline-flex; align-items: center; gap: 5px;
  font-family: var(--head); font-weight: 800; font-size: 0.71rem; line-height: 1;
  border-radius: 3px; padding: 5px 10px; border: 1.5px solid var(--ar-ink); color: var(--ar-ink);
}
.digest__tags .ic { width: 1.25em; height: 1.25em; vertical-align: 0; }
.digest__type    { background: var(--ar-ink); color: #fdf6e8 !important; }
.digest__purpose { background: var(--accent-2); }
.digest__fmt     { background: var(--white); }
.digest__fee     { background: var(--brand-soft); }

.digest__sub { margin: 0 0 8px; font-size: 0.87rem; color: var(--muted); line-height: 1.65; }
.digest__deadline {
  margin: 0 0 8px; font-size: 0.82rem; background: var(--ar-ink); color: #fff4dd;
  border-radius: 4px; padding: 7px 12px; display: inline-flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline;
}
.digest__deadline strong { color: var(--ar-gold-l); font-family: var(--head); }
.digest__deadline span {
  font-family: var(--head); font-weight: 800; color: #3d2704;
  background: var(--gold-grad); border-radius: 999px; padding: 2px 11px; font-size: 0.76rem;
}
.digest__gear { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 0.8rem; color: #4a3a2a; }
.digest__gear > span {
  font-family: var(--head); font-weight: 800; font-size: 0.7rem;
  color: #6b4708; background: #fff3d6; border: 1px solid var(--ar-sand-d);
  border-radius: 3px; padding: 3px 9px;
}
.digest__gear > b {
  display: inline-flex; align-items: center; gap: 6px; font-weight: 400;
  background: var(--white); border: 1px solid var(--line); border-radius: 3px; padding: 3px 9px;
}
.digest__gear > b .ic { color: var(--ar-red-d); width: 1.2em; height: 1.2em; vertical-align: 0; }
.digest__gear > i { font-style: normal; color: var(--muted); font-size: 0.76rem; }

@media (max-width: 560px) {
  .digest__row { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .digest__when {
    display: flex; align-items: baseline; gap: 10px; text-align: left;
    border-right: 0; border-bottom: 2px dashed var(--ar-sand-d); padding: 0 0 8px;
  }
  .digest__when b { font-size: 1.25rem; }
  .digest__when small { margin-top: 0; }
  .digest__days { margin-top: 0; margin-left: auto; }
}

/* ---------------------------------------------------------------
   6.7 別ページへの導線（.promo）
   --------------------------------------------------------------- */
.promo {
  display: flex; flex-wrap: wrap; align-items: center; gap: 18px 26px;
  background: var(--white); border: 2px solid var(--ar-ink); border-radius: 8px;
  box-shadow: 5px 5px 0 rgba(44,30,20,0.15);
  padding: 24px 26px; position: relative; overflow: hidden;
}
.promo::before {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 5px;
  background: linear-gradient(90deg, var(--ar-red), var(--ar-gold));
}
.promo__body { flex: 1 1 300px; min-width: 0; }
.promo__lead { margin: 0 0 6px; font-family: var(--head); font-weight: 800; font-size: 1.1rem; color: var(--ar-ink); }
.promo__stat { margin: 0 0 10px; font-family: var(--head); font-weight: 800; color: var(--ar-red-d); font-size: 1rem; }
.promo__stat b { font-size: 1.6rem; margin-right: 2px; font-variant-numeric: tabular-nums; }
.promo__stat span { color: var(--muted); font-weight: 700; font-size: 0.88rem; }
.promo__deadline {
  margin: 0 0 8px; display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px;
  background: var(--ar-ink); color: #fff4dd; border-radius: 4px; padding: 8px 14px; font-size: 0.86rem;
}
.promo__deadline span {
  font-family: var(--head); font-weight: 800; color: #3d2704;
  background: var(--gold-grad); border-radius: 999px; padding: 2px 12px; font-size: 0.8rem;
}
.promo__note { margin: 0; font-size: 0.85rem; color: var(--muted); }

/* ---------------------------------------------------------------
   6.6 受付中バー（.alertbar）— 締切はページで最も強い情報
   --------------------------------------------------------------- */
.alertbar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px;
  background: var(--ar-ink); color: #fff4dd;
  border: 3px solid var(--ar-gold); border-radius: 6px;
  padding: 16px 22px; box-shadow: 6px 6px 0 rgba(44,30,20,0.22);
}
.alertbar__label {
  flex: 0 0 auto; font-family: var(--head); font-weight: 800; font-size: 0.78rem; letter-spacing: 0.1em;
  background: var(--ar-red-d); color: #fff4e2; border-radius: 3px; padding: 6px 14px;
}
.alertbar__body { margin: 0; flex: 1 1 260px; font-size: 0.94rem; line-height: 1.7; }
.alertbar__body b { color: var(--ar-gold-l); font-family: var(--head); }
.alertbar__days {
  display: inline-block; font-family: var(--head); font-weight: 800; font-size: 0.84rem;
  background: var(--gold-grad); color: #3d2704; border-radius: 999px; padding: 3px 14px; margin-left: 4px;
}
.alertbar__cta {
  flex: 0 0 auto; font-family: var(--head); font-weight: 800; font-size: 0.82rem; text-decoration: none;
  border: 2px solid var(--ar-gold); border-radius: 4px; padding: 9px 18px; color: #fdf6e8;
}
.alertbar__cta:hover { background: var(--ar-gold); color: var(--ar-ink); }
.alertbar__cta:focus-visible { outline: 3px solid var(--ar-gold-l); outline-offset: 2px; }

/* ---------------------------------------------------------------
   7. 月カレンダー（.mcal）— 盤面
   --------------------------------------------------------------- */
.mcal { margin-bottom: 26px; }
.mcal__bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.mcal__title {
  margin: 0; font-family: var(--head); font-weight: 800; font-size: 1.2rem; color: var(--ar-ink);
}
.mcal__nav { display: flex; gap: 8px; }
.mcal__nav button {
  width: 42px; height: 42px; cursor: pointer; border-radius: 4px;
  border: 2px solid var(--ar-ink); background: var(--white); color: var(--ar-ink);
  font-size: 0.9rem; font-weight: 800; line-height: 1; box-shadow: 3px 3px 0 rgba(44,30,20,0.16);
}
.mcal__nav button:not([disabled]):hover { transform: translate(1px, 1px); box-shadow: 2px 2px 0 rgba(44,30,20,0.16); }
.mcal__nav button[disabled] { opacity: 0.3; cursor: default; box-shadow: none; }
.mcal__nav button:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 2px; }

.mcal__grid {
  display: grid; grid-template-columns: repeat(7, minmax(0, 1fr));
  border: 3px solid var(--ar-ink); border-radius: 6px; overflow: hidden;
  background: var(--ar-ink); gap: 2px;
  box-shadow: 5px 5px 0 rgba(44,30,20,0.15);
}
.mcal__wd {
  background: var(--ar-ink); color: var(--ar-gold-l);
  font-family: var(--head); font-weight: 800; font-size: 0.78rem; text-align: center; padding: 8px 2px;
}
.mcal__wd:first-child { color: #ffb3a6; }
.mcal__wd:last-child  { color: #a9c9f5; }

.mcal__cell {
  background: var(--white); min-height: 104px; padding: 6px 6px 8px;
  display: flex; flex-direction: column; gap: 4px;
}
.mcal__cell.is-out   { background: #efe4cc; }
.mcal__cell.is-today { background: #fff3d4; box-shadow: inset 0 0 0 3px var(--ar-gold); }
.mcal__num { font-family: var(--head); font-weight: 800; font-size: 0.86rem; color: var(--ar-ink); font-variant-numeric: tabular-nums; }
.mcal__cell.is-out .mcal__num { color: #a2947c; }
.mcal__cell.is-sun .mcal__num { color: var(--ar-red-d); }
.mcal__cell.is-sat .mcal__num { color: var(--ar-indigo); }

.mcal__chip {
  display: block; font-size: 0.68rem; line-height: 1.35; text-decoration: none;
  border-radius: 3px; padding: 3px 6px; font-weight: 700;
  background: #fde8cf; color: #7a4408; border-left: 4px solid var(--accent);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.mcal__chip--event    { background: #fbdcd6; color: #7d1a12; border-left-color: var(--ar-red); }
.mcal__chip--media    { background: #ece4fa; color: #3f2470; border-left-color: var(--ar-purple); }
.mcal__chip--deadline { background: var(--ar-ink); color: var(--ar-gold-l); border-left-color: var(--ar-gold); }
.mcal__chip--cont     { opacity: 0.5; }
.mcal__chip:hover { filter: brightness(0.95); }

@media (max-width: 700px) {
  .mcal__cell { min-height: 62px; padding: 4px 3px 5px; }
  .mcal__chip { font-size: 0; padding: 0; height: 7px; border-left-width: 0; border-radius: 2px; background: var(--accent); }
  .mcal__chip--event    { background: var(--ar-red); }
  .mcal__chip--media    { background: var(--ar-purple); }
  .mcal__chip--deadline { background: var(--ar-gold); }
}

/* ---------------------------------------------------------------
   8. 見出し・切り替え・★
   --------------------------------------------------------------- */
.kanban {
  display: inline-flex; align-items: center; gap: 12px;
  background: linear-gradient(180deg, #fffdf5, #f0e2c4);
  border: 3px solid var(--ar-ink); border-radius: 5px;
  padding: 10px 26px; margin: 0 0 18px;
  font-family: var(--head); font-weight: 800; font-size: clamp(1.1rem, 2.8vw, 1.42rem);
  color: var(--ar-ink); letter-spacing: 0.05em;
  box-shadow: 5px 5px 0 rgba(44, 30, 20, 0.18);
}
.kanban::before { content: "◆"; color: var(--ar-red); font-size: 0.72em; }

.viewtabs { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 22px; }
.viewtabs button {
  font-family: var(--head); font-weight: 800; font-size: 0.9rem; cursor: pointer;
  border: 2px solid var(--ar-ink); background: var(--white); color: var(--ar-ink);
  border-radius: 4px; padding: 10px 24px; box-shadow: 3px 3px 0 rgba(44,30,20,0.16);
  transition: 0.16s var(--ease);
}
.viewtabs button[aria-selected="true"] { background: var(--ar-ink); color: var(--ar-gold-l); box-shadow: 3px 3px 0 var(--ar-red); }
.viewtabs button:hover { transform: translate(1px, 1px); box-shadow: 2px 2px 0 rgba(44,30,20,0.16); }
.viewtabs button:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 2px; }

.legend { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 0.84rem; color: var(--muted); margin: 0 0 22px; }
.legend span { display: inline-flex; align-items: center; gap: 7px; }
.legend i { width: 12px; height: 12px; background: var(--accent); border: 2px solid var(--ar-ink); transform: rotate(45deg); display: inline-block; }
.legend i.is-event { background: var(--ar-red); }
.legend i.is-media { background: var(--ar-purple); }
.legend i.is-campaign { background: var(--good); }

.fc__actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 4px; }
.star, .chip-act {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--head); font-weight: 800; font-size: 0.78rem; line-height: 1;
  border-radius: 3px; padding: 8px 14px; cursor: pointer; text-decoration: none;
  border: 2px solid var(--ar-ink); background: var(--white); color: var(--ar-ink);
  box-shadow: 2px 2px 0 rgba(44,30,20,0.16); transition: 0.15s var(--ease);
}
.star:hover, .chip-act:hover { transform: translate(1px,1px); box-shadow: 1px 1px 0 rgba(44,30,20,0.16); color: var(--ar-ink); }
.star__mark { display: inline-flex; line-height: 1; }
.star__mark .ic { width: 1.15rem; height: 1.15rem; vertical-align: 0; }
.star[aria-pressed="true"] { background: var(--gold-grad); color: #3d2704; box-shadow: 2px 2px 0 var(--ar-red-d); }
.chip-act .ic, .stage__map .ic { color: var(--ar-red-d); }
.chip-act--go .ic { color: var(--ar-gold-l); }
.chip-act--go:hover .ic { color: #fff4e2; }
.star:focus-visible, .chip-act:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 2px; }

.fc.is-picked { box-shadow: 5px 5px 0 var(--accent), 0 0 0 3px var(--ar-gold-l); }

.pickbar {
  position: sticky; bottom: 14px; z-index: 40;
  display: none; align-items: center; flex-wrap: wrap; gap: 10px 14px;
  background: var(--ar-ink); color: #fdf6e8;
  border: 3px solid var(--ar-gold); border-radius: 6px;
  padding: 12px 20px; margin-top: 24px;
  box-shadow: 6px 6px 0 rgba(44,30,20,0.3);
  font-size: 0.86rem;
}
.pickbar.is-on { display: flex; }
.pickbar b { font-family: var(--head); color: var(--ar-gold-l); }
.pickbar a, .pickbar button {
  font-family: var(--head); font-weight: 800; font-size: 0.8rem; cursor: pointer;
  border-radius: 3px; padding: 8px 16px; text-decoration: none;
  border: 2px solid var(--ar-gold); background: transparent; color: #fdf6e8;
}
.pickbar a:hover, .pickbar button:hover { background: var(--ar-gold); color: var(--ar-ink); }
.pickbar a:focus-visible, .pickbar button:focus-visible { outline: 3px solid var(--ar-gold-l); outline-offset: 2px; }

/* セクションの地の交互 */
.section--alt { background: linear-gradient(180deg, rgba(221,202,166,0.30), rgba(221,202,166,0.14)); }

/* ---------------------------------------------------------------
   10. 発売のリズム（/sets 詳細。台帳から計算した数字を図で見せる）
   --------------------------------------------------------------- */
.rhythm { list-style: none; margin: 0; padding: 0; }
.rhythm__row {
  display: grid; align-items: center; gap: 4px 14px;
  grid-template-columns: 84px minmax(0, 1fr) auto auto;
  padding: 11px 14px; border: 2px solid var(--ar-sand-d); border-radius: 5px;
  background: var(--white); margin-bottom: 8px;
}
.rhythm__row.is-past { opacity: 0.78; }
.rhythm__row.is-self {
  border-color: var(--ar-ink); background: linear-gradient(180deg, #fffdf5, #fdeadf);
  box-shadow: 4px 4px 0 rgba(44, 30, 20, 0.18); opacity: 1;
}
.rhythm__code {
  font-family: var(--head); font-weight: 800; font-size: 0.98rem;
  color: var(--ar-ink); letter-spacing: 0.04em; line-height: 1.25;
}
.rhythm__code small {
  display: block; font-family: inherit; font-weight: 700; font-size: 0.66rem;
  letter-spacing: 0.06em; color: var(--ar-red-d);
}
/* 帯の長さは「前の弾からの日数」に比例する。
   日数のラベルぶんの幅を必ず残すため、flex ではなく grid で桁を分ける
   （flex だと帯が 100% のとき、ラベルが枠からはみ出す） */
.rhythm__bar {
  display: grid; align-items: center; gap: 9px; min-width: 0;
  grid-template-columns: minmax(0, 1fr) auto;
}
.rhythm__bar i {
  display: block; height: 12px; border-radius: 2px; max-width: 100%;
  background: linear-gradient(90deg, #b8801a, #f0cf70 55%, #d99a1f);
  border: 1px solid var(--ar-gold-d); box-sizing: border-box;
}
.rhythm__row.is-self .rhythm__bar i {
  background: linear-gradient(90deg, #a3251a, #d1382b);
  border-color: var(--ar-red-x);
}
.rhythm__bar b {
  font-family: var(--head); font-weight: 800; font-size: 0.82rem;
  color: var(--ar-ink); white-space: nowrap;
}
.rhythm__bar em {
  font-style: normal; font-size: 0.78rem; color: var(--muted); white-space: nowrap;
}
.rhythm__date { font-size: 0.86rem; color: var(--ar-ink); white-space: nowrap; }
.rhythm__price {
  font-family: var(--head); font-weight: 800; font-size: 0.86rem;
  color: var(--ar-ink); white-space: nowrap;
}
.rhythm__sum {
  margin: 16px 0 0; padding: 13px 17px; border-left: 5px solid var(--ar-red);
  background: var(--white); border-radius: 0 5px 5px 0;
  font-size: 0.95rem; line-height: 1.75; color: var(--ar-ink); font-weight: 700;
}

.afterlist { list-style: none; margin: 0; padding: 0; }
.afterlist li { margin: 0 0 9px; }
.afterlist a {
  display: grid; align-items: center; gap: 4px 16px;
  grid-template-columns: auto minmax(0, 1fr) auto;
  padding: 13px 16px; border: 2px solid var(--ar-sand-d); border-radius: 5px;
  background: var(--white); text-decoration: none; color: var(--ar-ink);
}
.afterlist a:hover { border-color: var(--ar-ink); box-shadow: 4px 4px 0 rgba(44, 30, 20, 0.16); }
.afterlist a:focus-visible { outline: 3px solid var(--ar-gold); outline-offset: 2px; }
.afterlist__gap {
  font-family: var(--head); font-weight: 800; font-size: 0.78rem;
  color: var(--ar-red-d); white-space: nowrap;
}
.afterlist__gap b { font-size: 1.25rem; margin: 0 2px; }
.afterlist__title { font-weight: 700; font-size: 0.94rem; line-height: 1.5; min-width: 0; }
.afterlist__meta { font-size: 0.82rem; color: var(--muted); white-space: nowrap; }

/* 会期の途中で使える弾が増えるとき、その切れ目を帯で見せる（/events 詳細）。
   .rhythm__bar と同じ理由で grid。右のラベルぶんの幅を必ず残す */
.poolsplit { list-style: none; margin: 0; padding: 0; }
.poolsplit li {
  display: grid; align-items: center; gap: 4px 14px;
  grid-template-columns: minmax(0, 1fr) auto;
  padding: 11px 15px; border: 2px solid var(--ar-sand-d); border-radius: 5px;
  background: var(--white); margin-bottom: 8px;
}
.poolsplit li.is-new {
  border-color: var(--ar-ink); background: linear-gradient(180deg, #fffdf5, #fdeadf);
  box-shadow: 4px 4px 0 rgba(44, 30, 20, 0.18);
}
.poolsplit__span {
  font-family: var(--head); font-weight: 800; font-size: 0.9rem;
  color: var(--ar-ink); letter-spacing: 0.03em; min-width: 0;
}
.poolsplit__pool {
  font-family: var(--head); font-weight: 800; font-size: 0.84rem;
  color: var(--ar-red-d); white-space: nowrap;
}

@media (max-width: 620px) {
  .rhythm__row { grid-template-columns: 68px minmax(0, 1fr); }
  .rhythm__date, .rhythm__price { grid-column: 2; font-size: 0.8rem; }
  .rhythm__price { grid-column: 1; text-align: left; }
  .afterlist a { grid-template-columns: minmax(0, 1fr); }
  .afterlist__meta { text-align: left; }
  .poolsplit li { grid-template-columns: minmax(0, 1fr); }
  .poolsplit__pool { text-align: left; }
}

/* ---------------------------------------------------------------
   9. 動きを抑える設定への配慮
   --------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .lanterns i { animation: none; }
  .fc.is-soon .fc__gem { animation: none; }
  .fc:hover, .stage:hover, .viewtabs button:hover, .star:hover, .chip-act:hover,
  .mcal__nav button:not([disabled]):hover { transform: none; }
  .fc__inner::after { display: none; }
}
