/* =========================================================
   Honda 技術コンクール（/auto-tech-contest/）スタイル
   - 既存サイトの style.css と衝突しないよう、すべて .tc 配下にスコープ。
   - body / html はフックにしない。
   - 画像参照はこのCSSファイル基準の相対パス（../../images/...）。
   - まずPC(1440基準)を実装。TB(768)/SP(376)は後続で追加。
   ========================================================= */

/* ---------- Webフォント（LIVE配信 日時のみ・字数限定サブセット / OFL） ----------
   先方サーバが .woff2 アップロードを弾く(500)ため、2.9KBのサブセットを data URI で埋め込み
   （別ファイルのアップロード不要）。差し替え時は scripts で再生成→base64化して src を更新。 */
@font-face {
  font-family: "Zen Kaku Gothic New";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("data:font/woff2;base64,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") format("woff2");
  /* 収録字: 数字・半角コロン / 曜日・年月日時分 / （）：〜～ のみ（.tc-live__date 用） */
  unicode-range: U+20, U+30-3a, U+301c, U+5206, U+571f, U+5e74, U+65e5, U+6642, U+6708, U+6728, U+6c34, U+706b, U+91d1, U+ff08-ff09, U+ff1a, U+ff5e;
}

/* ---------- デザイントークン ---------- */
.tc {
  --tc-bk: #0d0e0f;
  --tc-gry: #35363b;
  --tc-wh: #ffffff;
  --tc-ink: #191a1d; /* achromatic #191A1D_GRY（ovnav hover 時の文字色） */
  --tc-red: #ff0000;
  --tc-red-neon: #fa0000;
  --tc-red-lt: #ff4242; /* TB/SP のナビボタン */

  /* Honda Global Font：ウェイト別に別ファミリー名（全て font-weight:normal）。
     未読込環境では和文ゴシックにフォールバック（font-weight で太さ再現）。 */
  --tc-ff-fallback: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
  --tc-ff-r: "HondaGlobalFontJP-Regular", var(--tc-ff-fallback);
  --tc-ff-l: "HondaGlobalFontJP-Light", var(--tc-ff-fallback);
  --tc-ff-sb: "HondaGlobalFontJP-SBold", var(--tc-ff-fallback);
  --tc-ff-b: "HondaGlobalFontJP-Bold", var(--tc-ff-fallback);
  --tc-ff-eb: "HondaGlobalFontENJP-ExBold", var(--tc-ff-fallback);
  --tc-ff-ui: "HondaGlobalFontJPUI-Regular", var(--tc-ff-fallback);

  /* エイリアス（既存参照を維持） */
  --tc-font: var(--tc-ff-r); /* 本文 Regular */
  --tc-font-nav: var(--tc-ff-b); /* ナビ = Honda Bold（Zen Kaku から変更） */
  --tc-font-num: var(--tc-ff-ui); /* ヒーロー日付 = UI Regular */

  --tc-pc-width: 1440px;
}

/* ---------- リセット ---------- */
.tc,
.tc *,
.tc *::before,
.tc *::after {
  box-sizing: border-box;
}
.tc {
  width: 100%;
  margin: 0;
  color: var(--tc-wh);
  background-color: var(--tc-bk);
  background-image: url("../../images/common/texture_noise_300.png");
  background-repeat: repeat;
  background-size: 300px 300px;
  font-family: var(--tc-font);
  font-size: 16px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: clip; /* hidden だと sticky が効かないため clip */
}
.tc img,
.tc svg,
.tc video {
  display: block;
  max-width: 100%;
}
.tc a {
  color: inherit;
  text-decoration: none;
}
.tc ul,
.tc ol {
  margin: 0;
  padding: 0;
  list-style: none;
}
.tc p,
.tc h1,
.tc h2,
.tc h3,
.tc h4,
.tc figure,
.tc dl,
.tc dd {
  margin: 0;
}
.tc button {
  padding: 0;
  font: inherit;
  color: inherit;
  background: none;
  border: none;
  cursor: pointer;
}

/* ---------- section_header-CONTEST（サイトナビ・黒帯） ---------- */
.tc-gnav {
  position: sticky;
  top: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  padding: 20px 60px;
  background: var(--tc-bk);
}
.tc-gnav__logo img {
  width: auto;
  height: 30px;
}
.tc-gnav__right {
  display: flex;
  align-items: center;
  gap: 30px;
}
.tc-gnav__menu {
  display: flex;
  align-items: center;
  gap: 40px;
  font-family: var(--tc-font-nav);
  font-family: var(--tc-ff-b);
  font-weight: 700;
  font-size: 15px;
  white-space: nowrap;
}
.tc-gnav__actions {
  display: flex;
  align-items: center;
  gap: 16px;
}
/* .tc プレフィックスで `.tc a`（color:inherit）より詳細度を高くする */
.tc .tc-btn-nav {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 10px;
  font-family: var(--tc-font-nav);
  font-family: var(--tc-ff-b);
  font-weight: 700;
  font-size: 15px;
  border-radius: 4px;
  white-space: nowrap;
}
.tc .tc-btn-nav--fill {
  color: var(--tc-wh);
  background: var(--tc-red);
  border: 1px solid var(--tc-red);
}
.tc .tc-btn-nav--outline {
  color: var(--tc-red);
  background: var(--tc-wh);
  border: 1px solid var(--tc-red);
}

/* ---------- section_1st-view（ヒーロー） ---------- */
.tc-hero {
  max-width: var(--tc-pc-width);
  margin: 14px auto 0; /* CONTESTナビとの間隔（デザイン: 212 - 198） */
  padding: 0 20px;
}
.tc-hero__inner {
  position: relative;
  width: 100%;
  aspect-ratio: 1400 / 760;
  background-color: #000;
  background-image: url("../../images/top/hero_bg.jpg"); /* fallback */
  background-image: -webkit-image-set(
    url("../../images/top/hero_bg.webp") type("image/webp"),
    url("../../images/top/hero_bg.jpg") type("image/jpeg")
  );
  background-image: image-set(
    url("../../images/top/hero_bg.webp") type("image/webp"),
    url("../../images/top/hero_bg.jpg") type("image/jpeg")
  );
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  overflow: hidden;
}
.tc-hero__title {
  position: absolute;
  top: 37.2%; /* デザイン: 283/760 */
  left: 50%;
  transform: translateX(-50%);
  width: 45.5%; /* デザイン: 637/1400（新ロゴ logo_technician-contest_white_noback） */
  height: auto;
}
.tc-hero__event {
  position: absolute;
  bottom: 40px; /* ヒーロー下端から固定（サイズ非依存） */
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 20px 30px; /* デザイン: px-30 py-20 */
  background: rgba(0, 0, 0, 0.3);
  white-space: nowrap;
}
.tc-corner {
  position: absolute;
  width: 9px;
  height: 9px;
  border: 1px solid var(--tc-corner-color, rgba(255, 255, 255, 0.85));
  pointer-events: none;
}
.tc-corner--tl { top: 0; left: 0; border-right: 0; border-bottom: 0; }
.tc-corner--tr { top: 0; right: 0; border-left: 0; border-bottom: 0; }
.tc-corner--bl { bottom: 0; left: 0; border-right: 0; border-top: 0; }
.tc-corner--br { bottom: 0; right: 0; border-left: 0; border-top: 0; }
.tc-hero__date {
  display: flex;
  align-items: baseline;
  gap: 14px; /* デザイン: 日付テキスト ↔ 補足note の間 gap-14 */
  color: var(--tc-wh);
}
/* 「2026 | 11.25 WED 8:30〜」は1つの連続テキスト（WEDのみinlineで縮小） */
.tc-hero__datemain {
  font-family: var(--tc-font-num);
  font-size: 28px;
  line-height: 1.5;
}
.tc-hero__wed {
  font-family: var(--tc-font-num);
  font-size: 18px;
}
.tc-hero__note {
  font-size: 16px;
}
.tc-hero__venue {
  max-width: 340px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-family: var(--tc-ff-b);
  font-weight: 700;
  font-size: 18px;
  color: var(--tc-wh);
}
.tc-hero__venue-row {
  display: flex;
}
.tc-hero__venue-row dt {
  width: 134px; /* デザイン: ラベル最大幅「表彰式・懇親会」7×18=126 + 列間gap8 */
}

/* ---------- section_footer-CNTEST（サイトフッターナビ・黒帯） ---------- */
.tc-fnav {
  margin-top: 140px; /* デザイン: 本文最終セクション→フッターの gap-140 */
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding: 40px 100px;
  background: var(--tc-bk);
}
.tc-fnav__logo img {
  width: auto;
  height: 30px;
}
.tc-fnav__menu {
  display: flex;
  justify-content: flex-end;
  gap: 40px;
  font-family: var(--tc-font-nav);
  font-family: var(--tc-ff-b);
  font-weight: 700;
  font-size: 15px;
  white-space: nowrap;
}

/* ナビ/フッターのテキストリンク hover（デザイン未定義。opacity のみ・underlineなし。ロゴも同様） */
.tc-gnav__logo,
.tc-fnav__logo,
.tc-gnav__menu a,
.tc-fnav__menu a {
  transition: opacity 0.2s ease;
}
.tc-gnav__logo:hover,
.tc-gnav__logo:focus-visible,
.tc-fnav__logo:hover,
.tc-fnav__logo:focus-visible,
.tc-gnav__menu a:hover,
.tc-gnav__menu a:focus-visible,
.tc-fnav__menu a:hover,
.tc-fnav__menu a:focus-visible {
  opacity: 0.6;
}

/* =========================================================
   本文セクション共通
   ========================================================= */
.tc-main {
  position: relative;
  max-width: var(--tc-pc-width);
  margin: 0 auto;
}

/* 背景装飾（技/墨）。コンテンツより背面。位置は近似（要目視調整）。 */
.tc-decor {
  position: absolute;
  inset: 0;
  /* overflow: hidden; */
  pointer-events: none;
  /* z-index は付けない：付けると重ね合わせコンテキストが分離し
     mix-blend-mode:multiply が背景(.tc)と合成されなくなるため。
     前面化はコンテンツ側(.tc-concept/.tc-lower/.tc-topics)の z-index:1 で担保。 */
}
.tc-decor img {
  position: absolute;
  display: block;
  max-width: none;
}
/* 技（fill #000000・素材色のまま）。デザイン: opacity 36%（存在感を抑える） */
.tc-decor__gi {
  left: -7%; /* -100 / 1440 */
  top: -75px; /* デザイン: gi上端1082 − concept上端1157 */
  width: 800px; /* 約 798 / 1440 */
  opacity: 0.36; /* Figma: 技 36% */
}
/* 墨（グレー墨 × 暗背景の multiply → 暗いにじみ） */
.tc-decor__sumi {
  mix-blend-mode: multiply;
}
/* 回転中心=要素中心。デザイン回転中心(539.95, 3908.85)へ合わせて top/left を逆算 */
.tc-decor__sumi1 {
  left: -10.9%; /* 中心X539.95 − w697 = -157 / 1440 */
  top: 2485px; /* 中心Y(3908.85−1157) − 高さ533/2 */
  width: 97%; /* 約 1394 / 1440 */
  opacity: 0.4;
  transform: rotate(25.76deg);
}
.tc-decor__sumi2 {
  left: -32%;
  top: 3649px; /* デザイン: 墨2上端4806 − concept上端1157 */
  width: 78%;
  opacity: 0.36;
}
/* コンテンツを装飾より前面に */
.tc-concept,
.tc-lower,
.tc-topics {
  position: relative;
  z-index: 1;
}

/* ---------- 見出し H2-v1（赤ハッチバー + 白グロー線 + ラベル） ---------- */
.tc-h2v1 {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.tc-h2v1__line {
  display: flex;
  align-items: center;
  gap: 20px;
}
.tc-h2v1__bar {
  flex: none;
  width: 230px;
  height: 12px;
  background: url("../../images/common/h2bar_v1.svg") left center / 100% 100% no-repeat;
  filter: drop-shadow(0 0 4px rgba(255, 0, 0, 0.85))
    drop-shadow(0 0 8px rgba(255, 0, 0, 0.5));
}
.tc-h2v1__meter {
  flex: 1;
  height: 0;
  border-top: 1px solid var(--tc-wh);
  box-shadow: 0 0 10px var(--tc-wh), 0 0 20px var(--tc-wh);
}
.tc-h2v1__label {
  font-size: 24px;
  font-family: var(--tc-ff-b);
  font-weight: 700;
}

/* ---------- 見出し H2-v2（赤ハッチバー + 60px 特大タイトル） ---------- */
.tc-h2v2 {
  display: flex;
  align-items: center;
  gap: 28px;
}
.tc-h2v2__bar {
  flex: none;
  width: 64px;
  height: 6px;
  background: url("../../images/common/h2bar_v2.svg") left center / 100% 100% no-repeat;
  filter: drop-shadow(0 0 4px rgba(255, 0, 0, 0.85))
    drop-shadow(0 0 8px rgba(255, 0, 0, 0.5));
}
.tc-h2v2__title {
  font-size: 60px;
  font-family: var(--tc-ff-eb);
  font-weight: 800;
  line-height: 1.5; /* デザイン: J-60-700-150 */
}

/* ---------- ネオンボタン（Btn.astro）----------
   デザイン: 外側4隅に白Lコーナーマーク ＋ inset された赤枠(outline)/赤ベタ(fill) ＋ 赤グロー。
   矢印は outline=赤・fill=白。
   inset はマスター(228×92, node 11467:1908)実測で 上下4.00px / 左右3.677px。
   Figmaは % 保持(4.35%/1.61%)だが、CSSで%だと小数pxになり1px枠がサブピクセルでにじむため
   四捨五入した 4px 固定で持たせる（上下は元4px、左右も3.677→4）。 */
.tc-btn {
  --tc-corner-color: rgba(255, 255, 255, 0.85); /* コーナーは白 */
  position: relative;
  isolation: isolate; /* ::before(枠/背景)を独自スタッキングで背面に落とす基点 */
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  justify-content: space-between; /* デザイン: ラベル左／アイコン右 */
  gap: 10px;
  min-width: 228px; /* 基本228（topicsはPCでも228）。featureのPCのみ203に上書き */
  min-height: 92px;
  padding: 0 35px; /* デザイン: 赤枠内側から30px。枠は::before inset:4px+線1px描画のため 4+1+30=35px（figma-verifier実測） */
  font-family: var(--tc-ff-sb);
  font-weight: 600;
  font-size: 16px;
  color: var(--tc-wh);
}
/* inset された枠＋グロー本体（外周ではなく内側に描く） */
.tc-btn::before {
  content: "";
  position: absolute;
  z-index: -1; /* ラベル/アイコンより背面へ（hoverで背景が不透明でも文字が隠れない） */
  inset: 4px; /* デザイン実測(master 228×92): 上下4.00px / 左右3.677px。%だと小数pxで枠がにじむため四捨五入した4px固定 */
  border: 1px solid var(--tc-red-neon);
  /* Figmaの glow(赤100%) は硬すぎるので不透明度を落として柔らかいヘイズに（topicsの流儀に合わせ） */
  box-shadow: 0 0 8px rgba(255, 0, 0, 0.45), 0 0 20px rgba(255, 0, 0, 0.25);
  pointer-events: none;
}
.tc-btn--fill::before {
  background: var(--tc-red);
}
.tc-btn .tc-corner {
  width: 7px; /* デザイン: 3.23%×203 ≈ 6.6 */
  height: 8px; /* デザイン: 8.7%×92 ≈ 8 */
  border-width: 1px;
}
/* 矢印色：outline=赤 / fill=白 */
.tc-btn--outline .tc-btn__arrow {
  color: var(--tc-red-neon);
}
.tc-btn--fill .tc-btn__arrow {
  color: var(--tc-wh);
}
.tc-btn__arrow {
  flex: none;
  width: 14px;
  height: 14px;
}
/* coming soon 等：非アクティブ（クリック/ホバー無効・見た目は通常のまま。専用デザイン無し） */
.tc-btn--disabled {
  pointer-events: none;
  cursor: default;
}

/* ---------- hover / focus-visible ----------
   デザイン: btn コンポーネントの hover バリアント（11467:1916）
   ＝ outline ボタンが「赤ベタ塗り＋矢印白」に反転。文字/コーナー/枠は白のまま。
   ※ fillbtn・ナビbtn は hover 定義が無いため標準挙動（要方向確認）。 */
.tc-btn {
  transition: color 0.2s ease;
}
.tc-btn::before {
  transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
.tc-btn__arrow {
  transition: color 0.2s ease;
}
/* outline: hover/focus で赤ベタ塗り＋矢印白（hover=hover 準拠） */
.tc-btn--outline:hover::before,
.tc-btn--outline:focus-visible::before {
  background: var(--tc-red);
}
.tc-btn--outline:hover .tc-btn__arrow,
.tc-btn--outline:focus-visible .tc-btn__arrow {
  color: var(--tc-wh);
}
/* fill(btn_cv): hover で白ベタ＋赤枠＋赤文字/矢印に反転（11895:3776 準拠） */
.tc-btn--fill:hover::before,
.tc-btn--fill:focus-visible::before {
  background: var(--tc-wh);
}
.tc-btn--fill:hover,
.tc-btn--fill:focus-visible {
  color: var(--tc-red);
}
.tc-btn--fill:hover .tc-btn__arrow,
.tc-btn--fill:focus-visible .tc-btn__arrow {
  color: var(--tc-red);
}
/* ヘッダーのナビボタン */
.tc-btn-nav {
  transition: background-color 0.2s ease, color 0.2s ease;
}
/* 来場者受付(赤ピル): btn_red hover ＝ 透明＋赤枠（白字のまま）（11467:1894 準拠） */
.tc .tc-btn-nav--fill:hover,
.tc .tc-btn-nav--fill:focus-visible {
  background: transparent;
}
/* LIVE配信(白ピル): hover 定義が未取得のため反転(赤塗り＋白字)の暫定 */
.tc .tc-btn-nav--outline:hover,
.tc .tc-btn-nav--outline:focus-visible {
  color: var(--tc-wh);
  background: var(--tc-red);
}

/* ---------- line_contest-name（ロゴマーキー） ---------- */
.tc-marquee {
  margin-top: 20px;
  height: 52px;
  background-image: url("../../images/top/bg_TECHNICIAN_CONTEST.svg");
  background-repeat: repeat-x;
  background-position: left center;
  /* タイル幅 = ワードマーク実幅802 + gap25。SVG(viewBox 802×52・meet)は802幅で中央描画され
     左右12.5pxずつの余白＝繰り返し間25pxになる（デザイン: line_contest-name gap-25） */
  background-size: 827px 52px;
  opacity: 0.8;
}

/* ---------- section_concept（大会コンセプト） ---------- */
.tc-concept {
  width: 77.2%; /* 1112 / 1440 */
  margin: 113px 0 0 auto; /* デザイン: marquee下端1044 → concept上端1157 */
  display: flex;
  flex-direction: column;
  gap: 80px; /* デザイン: section_concept gap-80 */
}
.tc-concept__text {
  display: flex;
  flex-direction: column;
  gap: 50px;
  padding-right: 100px; /* 本文は1012幅（section1112 − 100）。H2/画像は全幅 */
}
.tc-concept__lead {
  font-size: 40px;
  font-family: var(--tc-ff-b);
  font-weight: 700;
  line-height: 1.5;
}
.tc-concept__body {
  display: flex;
  flex-direction: column;
  gap: 1.5em;
  font-size: 20px;
  font-family: var(--tc-ff-sb);
  font-weight: 600;
  line-height: 1.5;
}
.tc-concept__img {
  height: 440px; /* デザイン: 画像 h440 固定・cover */
}
.tc-concept__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ---------- section_選手 / section_reception（H2-v2 の特集） ---------- */
.tc-lower {
  margin-top: 140px;
  display: flex;
  flex-direction: column;
  gap: 140px;
}
.tc-feature {
  /* デザイン: フルブリード（H2バー左端≈0 / body は左80インセットで右端1440まで） */
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 40px; /* デザイン: H2(h90)下端→body上端 = 130-90 */
}
.tc-feature__body {
  margin-left: 80px;
  display: flex;
  flex-direction: column;
  gap: 60px;
}
.tc-feature__lead {
  font-size: 18px;
  font-family: var(--tc-ff-sb);
  font-weight: 600;
  line-height: 1.5;
}
.tc-feature__row {
  display: flex;
  align-items: flex-start;
  gap: 44px; /* デザイン: btn(203)→photo(x247.27) = 44.27 */
}
.tc-feature__btn {
  flex: none;
}
/* feature の btn は PC のみ 203px（TB/SP は基本の228へ戻す：後述メディア） */
.tc-feature .tc-btn {
  min-width: 203px;
}
.tc-feature__photo {
  flex: 1;
  min-width: 0;
}
.tc-feature__photo img {
  width: 100%;
  height: auto;
  aspect-ratio: 1115 / 492; /* デザイン: PC写真ボックス（TB/SPで上書き） */
  object-fit: cover; /* デザイン: 固定ボックスにcover */
}

/* ---------- section_topics（トピックス） ---------- */
.tc-topics {
  width: 86.1%; /* 1240 / 1440 */
  max-width: 1240px;
  margin: 140px auto 0;
  display: flex;
  flex-direction: column;
  gap: 35px;
}
.tc-topics__blocks {
  display: flex;
  flex-direction: column;
  gap: 35px; /* デザイン: blck_live下端583→history上端618 = 35 */
}
.tc-topics__block {
  display: flex;
  align-items: stretch;
  gap: 40px;
  padding: 40px 60px;
  background: rgba(0, 0, 0, 0.2);
  border: 1px solid var(--tc-gry);
  box-shadow: 0 0 20px rgba(255, 255, 255, 0.15);
}
.tc-topics__info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 20px;
  padding: 40px 0; /* デザイン: blck_live info py-40 */
}
.tc-topics__ttl {
  font-size: 40px;
  font-family: var(--tc-ff-b);
  font-weight: 700;
  line-height: 1.5;
}
.tc-topics__desc {
  font-size: 18px;
  line-height: 1.5;
}
/* title↔desc gap 20（リセット `.tc p{margin:0}` に勝つため .tc 前置で詳細度を上げる） */
.tc .tc-topics__desc {
  margin-top: 20px;
}
.tc-topics__media {
  flex: none;
  width: 63.5%; /* デザイン: movie711 / 内容幅1120 */
}
.tc-topics__thumb {
  position: relative;
  aspect-ratio: 711 / 400;
  border-radius: 16px;
  overflow: hidden;
}
.tc-topics__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* ---------- ハンバーガー（PCでは非表示） ---------- */
.tc-gnav__toggle {
  display: none; /* ≤1023 で表示（支給画像 menu_open.svg） */
  flex: none;
  width: 46px;
  height: 46px;
}
.tc-gnav__toggle img {
  display: block;
  width: 46px;
  height: 46px;
}

/* ---------- MENU展開（TB/SP・全面オーバーレイ） ---------- */
.tc-menu {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 1000;
  flex-direction: column;
  align-items: center;
  gap: 60px;
  padding: 20px 20px 80px;
  background: var(--tc-bk);
  overflow-y: auto;
}
.tc-menu.is-open {
  display: flex;
}
/* 先方(deliver)ビルドのみ tc-menu--deliver クラスが付く（社内STGには付かない）。
   既存サイトの共通ヘッダー(SP約65px・非固定でスクロール追従なし)との重なり回避のため、
   開いた時点のスクロール量に応じた top オフセットを JS で動的に設定する（下記 <script>）。 */
.tc-menu__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
}
.tc-menu__logo img {
  width: auto;
  height: 20px;
}
.tc-menu__close {
  flex: none;
  width: 46px;
  height: 46px;
}
.tc-menu__close img {
  display: block;
  width: 46px;
  height: 46px;
}
.tc-menu__body {
  display: inline-flex;
  flex-direction: column;
  align-items: stretch;
  gap: 60px;
}
.tc-menu__nav {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.tc-menu__nav a {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 48px;
  font-family: var(--tc-ff-b);
  font-weight: 700;
  font-size: 15px;
  color: var(--tc-wh);
  border-bottom: 1px dashed var(--tc-gry);
}
.tc-menu__actions {
  display: flex;
  justify-content: center;
  gap: 36px;
}

/* =========================================================
   レスポンシブ：TB（768–1023）以下に適用
   ========================================================= */
@media (max-width: 1023px) {
  .tc-main {
    max-width: none;
  }

  /* --- CONTESTナビ：リンクはハンバーガーに格納（sticky は基底のまま維持） --- */
  .tc-gnav {
    padding: 20px 30px;
    gap: 16px;
  }
  .tc-gnav__logo img {
    height: 30px;
  }
  .tc-gnav__right {
    gap: 16px;
  }
  .tc-gnav__menu {
    display: none; /* インラインナビはTB/SPで非表示。MENUは .tc-menu オーバーレイ */
  }
  .tc-gnav__toggle {
    display: inline-flex;
  }
  /* ナビボタンは #ff4242 */
  .tc-btn-nav--fill {
    background: var(--tc-red-lt);
    border-color: var(--tc-red-lt);
  }
  .tc-btn-nav--outline {
    color: var(--tc-red-lt);
    border-color: var(--tc-red-lt);
  }

  /* --- ヒーロー：1000×760 stage を固定サイズで中央上寄せ配置しクリップ（coverではない） --- */
  .tc-hero__inner {
    height: 760px; /* デザイン: stage/container 高 760 固定 */
    background-size: 1000px 760px; /* デザイン: stage 1000×760 固定（縮小しない） */
    background-position: center top; /* stageは水平中央・上寄せ */
    /* TB/SP 用ヒーロー画像へ差し替え（SPは本指定を継承） */
    background-image: url("../../images/top/hero_bg_tb.jpg"); /* fallback */
    background-image: -webkit-image-set(
      url("../../images/top/hero_bg_tb.webp") type("image/webp"),
      url("../../images/top/hero_bg_tb.jpg") type("image/jpeg")
    );
    background-image: image-set(
      url("../../images/top/hero_bg_tb.webp") type("image/webp"),
      url("../../images/top/hero_bg_tb.jpg") type("image/jpeg")
    );
  }
  .tc-hero__title {
    width: 58%; /* TB: デザイン無し。PC45.5%/SP77.4%の中間で調整 */
    top: 34%;
  }

  /* --- コンセプト --- */
  .tc-concept {
    width: 83.3%;
    margin-top: 88px; /* デザイン: marquee下端1003 → concept上端1091 */
  }
  .tc-concept__text {
    padding-right: 40px; /* TB: 本文右インセット */
  }

  /* --- 背景装飾（技・墨）：TB(768)デザイン --- */
  .tc-decor__gi {
    left: -100px; /* デザイン: gi left -100 */
    top: -48px; /* デザイン: gi上端1043 − concept上端1091 */
    width: 602px; /* デザイン: gi w602（h689はSVG比で自動） */
  }
  .tc-decor__sumi1 {
    left: -38.4%; /* 中心X200.2 − w494.9（989.752/768） */
    top: 1912px; /* 中心Y(3191.7−1091) − 高さ378/2 */
    width: 128.9%; /* 989.752 / 768 */
  }
  .tc-decor__sumi2 {
    left: -26.3%; /* (768−138−832) / 768 */
    top: 4180px; /* デザイン: 墨2上端5271 − concept上端1091 */
    width: 108.3%; /* 832 / 768 */
  }

  /* --- 特集（出場選手・来場受付）：縦積み --- */
  .tc-feature {
    margin: 0; /* デザイン: フルブリード（H2左端0 / body 98→右端768） */
    gap: 42px; /* デザイン: H2(h75)下端→body上端 = 117-75 */
  }
  .tc-feature__body {
    margin-left: 98px;
  }
  .tc-h2v2__title {
    font-size: 50px;
    font-family: var(--tc-ff-b); /* デザイン: TBは Bold（J-50-600-150） */
    font-weight: 700;
  }
  .tc-feature__row {
    flex-direction: column;
    align-items: stretch;
    gap: 60px;
  }
  .tc-feature__photo {
    width: 100%;
  }
  .tc-feature__photo img {
    aspect-ratio: 670 / 400; /* デザイン: TB写真ボックス */
  }
  /* デザイン: 出場選手btnはTB/SPで228（PCの203から戻す） */
  .tc-feature .tc-btn {
    min-width: 228px;
  }

  /* --- トピックス：縦積み --- */
  .tc-topics {
    width: auto;
    max-width: none;
    margin: 140px 60px 0; /* デザイン: TB section 60インセット（x60 w648） */
  }
  .tc-topics__block {
    flex-direction: column;
    gap: 40px;
    padding: 60px;
  }
  .tc-topics__info {
    padding: 0;
    gap: 30px; /* デザイン: 縦積み時 title群↔btn = 30 */
  }
  .tc-topics__media {
    width: 100%;
  }
  /* サムネ比は全BP共通(711/400≒16:9)。TB/SPの独自aspectは誤りだったので基底を継承 */

  /* --- フッターナビ：中央寄せ --- */
  .tc-fnav {
    align-items: center;
    padding: 40px 30px;
  }
  .tc-fnav__menu {
    justify-content: center;
    flex-wrap: wrap;
  }
}

/* =========================================================
   レスポンシブ：SP（〜767）
   ========================================================= */
@media (max-width: 767px) {
  /* --- CONTESTナビ：ロゴ上・操作群下 --- */
  .tc-gnav {
    flex-direction: column;
    align-items: stretch;
    gap: 14px;
    padding: 20px;
  }
  .tc-gnav__right {
    justify-content: flex-end;
  }
  .tc-btn-nav {
    padding: 6px 10px;
  }

  /* --- ヒーロー --- */
  .tc-hero {
    padding: 0 20px;
  }
  .tc-hero__inner {
    height: 460px; /* デザイン: SP container 高 460（bg 1000×760/center topはTB継承） */
  }
  .tc-hero__title {
    width: 77.4%; /* デザイン: 260/336（新ロゴ・SP） */
    top: 28.04%; /* デザイン: 129/460 */
  }
  .tc-hero__event {
    width: 82%;
    padding: 20px 15px;
    align-items: center;
    gap: 8px;
  }
  .tc-hero__date {
    flex-wrap: wrap;
        justify-content: center;
    align-items: center;
    gap: 6px;
  }
  .tc-hero__datemain {
    font-size: 20px;
  }
  .tc-hero__wed {
    font-size: 10px;
  }
  .tc-hero__note {
    text-align: center;
    font-size: 12px;
  }
  .tc-hero__venue {
    font-size: 12px;
  }
  .tc-hero__venue-row dt {
    width: auto;
  }

  /* --- 背景装飾（技・墨）：SP(376)デザイン --- */
  .tc-decor__gi {
    left: -60px; /* デザイン: gi left -15.96%×376 ≈ -60 */
    top: -116px; /* デザイン: gi上端733 − concept上端849 */
    width: 376px; /* デザイン: gi w376（h398はSVG比で自動） */
  }
  .tc-decor__sumi1 {
    left: -54.6%; /* 中心X117.7 − w323.2（646.362/376） */
    top: 1839px; /* 中心Y(2811.8−849) − 高さ247/2 */
    width: 171.9%; /* 646.362 / 376 */
  }
  .tc-decor__sumi2 {
    left: -44.2%; /* (376−13−529) / 376 */
    top: 3996px; /* デザイン: 墨2上端4845 − concept上端849 */
    width: 140.7%; /* 529 / 376 */
  }

  /* --- コンセプト --- */
  .tc-concept {
    width: 89.4%;
    margin-top: 100px; /* デザイン: marquee下端749 → concept上端849 */
  }
  .tc-concept__text {
    padding-right: 20px; /* SP: 本文右インセット */
  }
  .tc-concept__lead {
    font-size: 26px;
  }
  .tc-concept__body {
    font-size: 16px;
  }
  .tc-concept__img {
    height: 260px; /* SP: 画像 h260 */
  }

  /* --- 特集 --- */
  .tc-feature {
    margin: 0 20px 0 0; /* デザイン: H2左端0 / body 80→356（右20インセット） */
    gap: 37px; /* デザイン: H2(h54)下端→body上端 = 91-54 */
  }
  .tc-feature__body {
    margin-left: 80px;
  }
  .tc-h2v2 {
    gap: 20px;
  }
  .tc-h2v2__bar {
    width: 54px;
  }
  .tc-h2v2__title {
    font-size: 36px;
    font-family: var(--tc-ff-b); /* デザイン: SPは Bold（J-36-600-150） */
    font-weight: 700;
  }
  .tc-feature__lead {
    font-size: 16px; /* デザイン: SP lead J-16-500-150 */
  }
  .tc-feature__photo img {
    aspect-ratio: 276 / 504; /* デザイン: SP写真ボックス */
  }

  /* --- トピックス --- */
  .tc-topics {
    margin: 140px 20px 0;
  }
  .tc-topics__block {
    padding: 40px 26px;
  }
  .tc-topics__ttl {
    font-size: 26px;
  }
  .tc-topics__desc {
    font-size: 16px;
  }
  /* サムネ比は基底(711/400≒16:9)を継承（旧 324/160 は誤りのため削除） */

  /* --- フッターナビ：縦並び中央 --- */
  .tc-fnav {
    padding: 60px 20px;
    gap: 30px;
  }
  .tc-fnav__menu {
    flex-direction: column;
    align-items: center;
    gap: 16px;
  }
}

/* =========================================================
   下層ページ共通（PC基準・TB/SPは後続で追加）
   ※余白/色の一部は目視微調整前提（デザインのパネルは半透明box近似・地図はプレースホルダ）
   ========================================================= */

/* ---------- ページタイトル帯（PageTitle / sectioon_page-title） ---------- */
.tc-ptitle {
  position: relative;
  width: 100%;
  height: 192px;
  margin-top: 88px; /* デザイン: CONTESTナビ→タイトル ≈88（要目視） */
  overflow: hidden;
}
.tc-ptitle__head {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  text-align: center;
}
.tc-ptitle__en {
  font-family: var(--tc-ff-ui);
  font-weight: 600;
  font-size: 18px;
  line-height: 1.5;
  letter-spacing: 0.9px; /* デザイン: 5% */
  color: var(--tc-red);
}
.tc-ptitle__ja {
  font-family: var(--tc-ff-b);
  font-weight: 700;
  font-size: 44px;
  line-height: 1.5;
  color: var(--tc-wh);
}
.tc-ptitle__line {
  position: absolute;
  bottom: 0;
  left: 100px;
  right: 0;
  display: flex;
  align-items: center;
  gap: 20px;
}
.tc-ptitle__bar {
  flex: none;
  width: 230px;
  height: 12px;
  background: url("../../images/common/h2bar_v1.svg") left center / 100% 100% no-repeat;
  filter: drop-shadow(0 0 4px rgba(255, 0, 0, 0.85)) drop-shadow(0 0 8px rgba(255, 0, 0, 0.5));
}
.tc-ptitle__meter {
  flex: 1;
  height: 0;
  border-top: 1px solid var(--tc-wh);
  box-shadow: 0 0 10px var(--tc-wh), 0 0 20px var(--tc-wh);
}

/* ---------- セクション見出し H2-v4（SectionHeading） ---------- */
.tc-h2v4 {
  display: flex;
  align-items: center;
  gap: 18px;
}
.tc-h2v4__mark {
  flex: none;
  width: 20px;
  height: 20px;
  border: 1px solid var(--tc-red); /* 赤リング（imgEllipse5 実測: 外径20px・線1px） */
  border-radius: 50%;
  /* デザイン: リングに赤グロー（要目視で強度調整） */
  box-shadow: 0 0 6px rgba(255, 0, 0, 0.9), 0 0 14px rgba(255, 0, 0, 0.5);
}
.tc-h2v4__text {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  white-space: nowrap; /* デザイン: H2-v4 は英字/和字とも whitespace-nowrap（"LIVE SCHEDULE"等を1行維持） */
}
.tc-h2v4__en {
  font-family: var(--tc-ff-ui);
  font-weight: 600;
  font-size: 52px;
  line-height: 1.5;
  color: var(--tc-wh);
}
.tc-h2v4__ja {
  padding-bottom: 10px;
  font-family: var(--tc-ff-sb);
  font-weight: 600;
  font-size: 16px;
  line-height: 1.5;
  color: var(--tc-wh);
}

/* ---------- 小見出し H3-v1（SubHeading） ---------- */
.tc-h3v1 {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.tc-h3v1__title {
  font-family: var(--tc-ff-b);
  font-weight: 700;
  font-size: 24px;
  line-height: 1.5;
  color: var(--tc-wh);
}
.tc-h3v1__bar {
  width: 40px;
  height: 2px;
  background: var(--tc-red); /* imgLine1（要目視: 色） */
}

/* ---------- ページ内ジャンプナビ（btn_white-translucent × 4 / node 11895:3971） ----------
   観察: PCフレーム(11895:2345)ではこのナビは x=-616 に退避（ページ未配置）→ PC非表示。
   TB(768)/SP(376)フレームでは本文上部に配置 → レスポンシブで表示（下部@media参照）。
   デザイン: 白枠＋白グロー(drop-shadow 0 0 5px white)＋半透明白ベタ(rgba(255,255,255,.1))、
   4隅に白Lコーナー、赤↳矢印(imgIconArrow 実測 #ff0000 = --tc-red)。文字16px SBold 白。 */
.tc-ovnav {
  display: none; /* PC: デザイン上ページに未配置のため非表示（要確認） */
}
.tc-ovnav__btn {
  --tc-corner-color: var(--tc-wh);
  position: relative;
  isolation: isolate;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: space-between; /* デザイン: ラベル左／アイコン右 */
  gap: 6px; /* 最小間隔（space-betweenで通常は両端寄せ） */
  padding: 0 24px; /* デザイン: 枠内側から20px。枠は::before inset:3px+線1pxのため 3+1+20=24px */
  width: 286px;
  max-width: 100%;
  height: 66px;
  font-family: var(--tc-ff-sb);
  font-weight: 600;
  font-size: 16px;
  color: var(--tc-wh);
}
/* inset された白枠＋白グロー＋半透明ベタ（btn_white-shadow / btn_text） */
.tc-ovnav__btn::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 3px 3px 4px; /* デザイン: inset 4.55%/6.06%/1.05% ≈ 3/4/3px */
  border: 1px solid var(--tc-wh);
  background: rgba(255, 255, 255, 0.1);
  box-shadow: 0 0 5px var(--tc-wh); /* デザイン: drop-shadow 0 0 5px white */
  pointer-events: none;
  transition: background-color 0.2s ease;
}
.tc-ovnav__btn .tc-corner {
  width: 10px;
  height: 10px;
  border-width: 1px;
}
.tc-ovnav__arrow {
  flex: none;
  width: 14px;
  height: 14px;
  color: var(--tc-wh); /* デフォルト: 白矢印（icon_arrow-2 stroke #fff）。hoverで赤に反転 */
}
.tc-ovnav__label {
  white-space: nowrap;
}
/* hover は Figma 定義（node 11895:3843）: 白ベタ＋文字 #191a1d＋矢印 赤(#ff0000)。 */
.tc .tc-ovnav__btn:hover,
.tc .tc-ovnav__btn:focus-visible {
  color: var(--tc-ink);
}
.tc .tc-ovnav__btn:hover::before,
.tc .tc-ovnav__btn:focus-visible::before {
  background: var(--tc-wh);
}
.tc .tc-ovnav__btn:hover .tc-ovnav__arrow,
.tc .tc-ovnav__btn:focus-visible .tc-ovnav__arrow {
  color: var(--tc-red); /* デフォルト白 → hoverで赤（白背景で視認） */
}

/* ---------- 大会概要ページ本文 ---------- */
.tc-ov {
  width: min(1280px, 100% - 40px);
  margin: 100px auto 0; /* タイトル帯→本文（要目視・デザイン実測で調整） */
  display: flex;
  flex-direction: column;
  gap: 100px; /* デザイン: セクション間 gap-100 */
}
.tc-ov__sec {
  display: flex;
  flex-direction: column;
  gap: 10px; /* デザイン: 見出し→本文 gap-10 */
  /* ページ内リンク着地時、追従ヘッダー(.tc-gnav sticky)分＋10px 上に余白を取る。
     --tc-header-h は SiteHeader の script がヘッダー実高を計測して設定（フォールバック74px）。 */
  scroll-margin-top: calc(var(--tc-header-h, 74px) + 10px);
}
.tc-ov__intro {
  font-family: var(--tc-font);
  font-size: 18px;
  line-height: 1.5;
  color: var(--tc-wh);
}
.tc-ov__panel {
  background: rgba(0, 0, 0, 0.3); /* imgRectangle46 実測 rgba(0,0,0,.298) */
  padding: 60px;
  /* デザイン(imgRectangle46/47/50/51 実測): 左上+右下を各29px斜めカット。右上・左下は直角 */
  clip-path: polygon(29px 0, 100% 0, 100% calc(100% - 29px), calc(100% - 29px) 100%, 0 100%, 0 29px);
}
.tc-ov__panel--slim {
  padding: 40px 60px;
}
.tc-ov__note {
  font-family: var(--tc-font);
  font-size: 18px;
  line-height: 1.5;
  color: var(--tc-wh);
}

/* 情報テーブル（dl） */
.tc-ov__table {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
/* OVERVIEW: 表は900px中央（パネルpad60 + 余白130 = デザインml190） */
.tc-ov__panel > .tc-ov__table {
  max-width: 900px;
  margin: 0 auto;
}
.tc-ov__table--pad {
  gap: 18px;
  padding: 0 40px; /* ACCESS 住所表 */
}
.tc-ov__row {
  display: flex;
  align-items: center;
}
.tc-ov__th {
  flex: none;
  width: 90px;
  align-self: stretch;
  display: flex;
  align-items: center;
  padding: 4px 16px 4px 0;
  border-right: 1px solid var(--tc-wh);
  font-family: var(--tc-font);
  font-size: 18px;
  line-height: 1.5;
  color: var(--tc-wh);
}
.tc-ov__td {
  flex: 1;
  min-width: 0;
  padding: 4px 0 4px 16px;
  font-family: var(--tc-font);
  font-size: 18px;
  line-height: 1.5;
  color: var(--tc-wh);
}
.tc .tc-ov__link {
  text-decoration: underline;
  text-underline-offset: 2px;
}
/* SP限定の改行（PC/TBでは無効）。ACCESS表のリンク前で使用 */
.tc-br-sp { display: none; }
.tc .tc-ov__link:hover {
  opacity: 0.6;
}

/* CATEGORIES: コースブロック */
.tc-ov__courses,
.tc-ov__maps {
  display: flex;
  flex-direction: column;
  gap: 60px;
}
.tc-course {
  display: flex;
  flex-direction: column;
  gap: 36px;
}
.tc-course__row {
  display: flex;
  align-items: flex-start;
  gap: 49px; /* デザイン: info630 + photo481 の間 */
}
.tc-course__info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 28px;
}
.tc-course__body {
  font-family: var(--tc-font);
  font-size: 18px;
  line-height: 1.5;
  color: var(--tc-wh);
}
.tc-course__photo {
  flex: none;
  width: 481px;
  max-width: 41.5%;
}
.tc-course__photo img {
  display: block;
  width: 100%;
  aspect-ratio: 481 / 320;
  object-fit: cover;
}

/* 統計サブボックス */
/* .tc プレフィックスでリセット `.tc ul`(0,0,1,1) より詳細度を高くし padding を効かせる */
.tc .tc-stats {
  background: rgba(0, 0, 0, 0.2);
  padding: 24px 30px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.tc-stats__item {
  position: relative;
  padding-left: 18px;
  font-family: var(--tc-font);
  font-size: 16px;
  line-height: 1.5;
  color: var(--tc-wh);
}
.tc-stats__item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.62em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--tc-wh); /* imgEllipse6（要目視: 色） */
}

/* ACCESS: 地図ブロック */
.tc-map {
  display: flex;
  flex-direction: column;
  gap: 24px;
  /* 入場証QR等からの直接ジャンプ時、追従ヘッダー分＋10px 上に余白（.tc-ov__sec と同方式） */
  scroll-margin-top: calc(var(--tc-header-h, 74px) + 10px);
}
/* 地図: 高さ固定・幅可変（デザイン PC 実測 1159×362 の高さ 362px を採用）。 */
.tc-map__img,
.tc-map__frame {
  display: block;
  width: 100%;
  height: 362px;
  border: 1px solid var(--tc-gry);
}
/* 実埋め込み（iframe）は枠線なし・グレー塗り不要 */
.tc-map__frame {
  border: 0;
}
/* プレースホルダ（未支給の地図）の見た目 */
.tc-map__img {
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, 0.05);
  color: rgba(255, 255, 255, 0.5);
  font-size: 16px;
}

/* ============================================================
   大会概要ページ レスポンシブ（BP: 1024px 標準 / max-width 系）
   TB = デザイン768(B_大会概要_w768=12036:4496)
   SP = デザイン376(B_大会概要_w376=12036:5712)
   値はFigma実測。PC値の無根拠な流用はしない。
   ============================================================ */

/* ---------- TB（〜1023px）: デザイン768 ---------- */
@media (max-width: 1023px) {
  /* ジャンプナビ表示: 286×66 を 2列×2行（行間20 / 列は space-between≈37） */
  .tc-ovnav {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    column-gap: 0;
    row-gap: 20px;
    width: 609px; /* デザイン: nav幅609 */
    max-width: calc(100% - 80px);
    margin: 100px auto 0; /* タイトル帯→ナビ ≈100 */
  }
  /* ページタイトル: 装飾線の左オフセット 100→60（デザイン768: line left 60） */
  .tc-ptitle__line { left: 60px; }
  /* 見出し: H2英字 52→40 / H3タイトル 24→20 */
  .tc-h2v4__en { font-size: 40px; }
  .tc-h3v1__title { font-size: 20px; }
  /* 本文コンテナ: 両側マージン40（デザイン768: content 688 / left40） */
  .tc-ov { width: calc(100% - 80px); }
  /* OVERVIEW表: PCの中央寄せ(max900)を解除しパネル内フル幅 */
  .tc-ov__panel > .tc-ov__table {
    max-width: none;
    margin: 0;
  }
  /* CATEGORIES: 本文＋写真を縦積み（デザイン: flex-col gap-50） */
  .tc-course__row {
    flex-direction: column;
    gap: 50px;
  }
  .tc-course__photo {
    width: 481px;
    max-width: 100%;
  }
}

/* ---------- SP（〜767px）: デザイン376 ---------- */
@media (max-width: 767px) {
  /* ジャンプナビ: 縦1列（286幅・行間20・中央） */
  .tc-ovnav {
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: center;
    row-gap: 20px;
    width: 286px;
    max-width: calc(100% - 40px);
  }
  .tc-ovnav__btn { width: 100%; }
  /* ページタイトル: 英字18→15 / 和44→36 / 装飾線左20 */
  /* eyebrow SP はデザイン(token E-15-400-150-0, node 12036:10790)で UI Regular・字間無。
     PCは SBold/0.9px のままで意図的なBP差。overview / LIVE配信 共通で両ページに適用。 */
  .tc-ptitle__en { font-size: 15px; font-weight: 400; letter-spacing: 0; }
  .tc-ptitle__ja { font-size: 36px; }
  .tc-ptitle__line { left: 20px; }
  /* 赤ハッチバー: SP は幅 230→121（デザイン node 実測 SP=120.94px。PC/TB は230のまま） */
  .tc-ptitle__bar { width: 121px; }
  /* 見出し: H2英字 40→32 */
  .tc-h2v4__en { font-size: 32px; }
  /* SP: en+ja が幅に入り切らない場合はカラム落ち（ja を下段へ）。縦gap 2px（横は10px維持）・ja 14px */
  .tc-h2v4__text { flex-wrap: wrap; gap: 2px 10px; }
  .tc-h2v4__ja { font-size: 14px; }
  /* 本文コンテナ: 両側マージン20（デザイン376: content 336 / left20） */
  .tc-ov { width: calc(100% - 40px); }
  /* パネル: 横パディング 60→20（縦は据え置き。デザイン376: ml20/mt60・slimはmt40） */
  .tc-ov__panel { padding: 60px 20px; }
  .tc-ov__panel--slim { padding: 40px 20px; }
  /* スペック一覧ボックス: SPのみ左右 30→20（デザイン376 実測 24/20）。.tc プレフィックスでリセット `.tc ul` に勝たせる */
  .tc .tc-stats { padding: 24px 20px; }
  /* 表(OVERVIEW/ACCESS): SP はデザイン376(node 12036:6748)で th/td を縦積み。
     th=ラベル full幅・下線(border-b) / td=値 その下 full幅・罫線なし。行間18・各セルpad4・書体18据置 */
  .tc-ov__table { gap: 18px; }
  .tc-ov__row { flex-direction: column; align-items: stretch; }
  .tc-ov__th {
    width: 100%;
    padding: 4px;
    border-right: none;
    border-bottom: 1px solid var(--tc-wh);
  }
  .tc-ov__td { padding: 4px; }
  /* ACCESS住所表: 横パディング 40→0 */
  .tc-ov__table--pad { padding: 0; }
  /* SP限定改行を有効化（ACCESS リンク前） */
  .tc-br-sp { display: inline; }
  /* 写真フル幅化（デザイン376: IMG w-full） */
  .tc-course__photo { width: 100%; }
}

/* ============================================================
   LIVE配信ページ（/auto-tech-contest/live/）
   デザイン: PC 11913:3055 / TB 12036:9862 / SP 12036:10785
   ============================================================ */
.tc-live {
  width: min(1280px, 100% - 40px);
  margin: 100px auto 0; /* タイトル帯→本文 ≈100 */
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 100px; /* デザイン: ブロック間 gap-100 */
}
.tc-live__intro {
  font-family: var(--tc-font);
  font-size: 18px;
  line-height: 1.5;
  color: var(--tc-wh);
  text-align: center;
}

/* ---- LIVE SCHEDULE ---- */
.tc-live__sched {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 10px; /* 見出し→パネル */
}
.tc-live__panel {
  background: rgba(0, 0, 0, 0.3); /* imgRectangle46 */
  /* overview パネルと同型: 左上・右下を29pxカット */
  clip-path: polygon(29px 0, 100% 0, 100% calc(100% - 29px), calc(100% - 29px) 100%, 0 100%, 0 29px);
  padding: 65px 20px; /* デザイン: 内容 mt65 */
  min-height: 461px; /* デザイン: パネル固定高 PC/TB 461 */
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 40px; /* デザイン: 内容ブロック間 gap-40 */
}
.tc-live__date-block {
  width: 100%; /* 赤バーが日時幅に縛られず自然幅(グロー込み)を取れるように */
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px; /* 日時→赤バー */
}
.tc-live__date {
  /* デザイン: Zen Kaku Gothic New Medium。未読込時は Honda SBold にフォールバック */
  font-family: "Zen Kaku Gothic New", var(--tc-ff-sb);
  font-weight: 500;
  line-height: 1.5;
  color: var(--tc-wh);
  text-align: center;
  white-space: nowrap;
}
.tc-live__num { font-size: 50px; }
.tc-live__unit { font-size: 34px; }
.tc-live__bar {
  display: block;
  width: 438px; /* PNG自然幅（グロー込み）＝バー領域396.6px */
  max-width: 100%;
  aspect-ratio: 438 / 53;
  background: url("../../images/live/schedule-bar.png") center / contain no-repeat;
}
/* ボタン: デザインは中央・幅300（tc-btn 既定の左寄せ/228をパネル内で上書き） */
.tc-live__panel .tc-btn {
  align-self: center;
  min-width: 300px;
}
.tc-live__notes {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  font-family: var(--tc-font);
  color: var(--tc-wh);
  text-align: center;
}
.tc-live__note-lg { font-size: 18px; }
.tc-live__note-sm { font-size: 16px; }

/* ---- 大会アーカイブ ---- */
.tc-live__archive {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 40px; /* 見出し→intro→movies */
}
.tc-live__arch-title {
  font-family: var(--tc-ff-b);
  font-weight: 700;
  font-size: 36px;
  line-height: 1.5;
  color: var(--tc-wh);
  text-align: center;
}
.tc-live__movies {
  display: flex;
  justify-content: center; /* デザイン: アーカイブ行1240を1280内で中央 */
  gap: 40px;
  width: 100%;
}
.tc-live__movie-item {
  flex: 1 1 600px; /* デザイン: 各サムネ600px（伸びすぎない） */
  max-width: 600px;
  min-width: 0;
}
.tc-live__movie {
  display: block;
  color: var(--tc-wh);
  transition: opacity 0.2s ease;
}
.tc-live__movie:hover,
.tc-live__movie:focus-visible {
  opacity: 0.6;
}
.tc-live__thumb {
  position: relative;
  margin: 0;
  aspect-ratio: 600 / 337.553; /* ≈16:9 */
  border-radius: 16px;
  overflow: hidden;
  isolation: isolate;
}
.tc-live__thumb img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* 4隅の白Lコーナー（内側インセット）。暗幕/再生ボタン/キャプションは thumb 画像に焼き込み済み */
.tc-live__thumb .tc-corner {
  --tc-corner-color: rgba(255, 255, 255, 0.9);
  width: 10px; /* デザイン実測: 腕長≈10px */
  height: 10px;
  border-width: 3px; /* デザイン実測: 線≈3px */
}
.tc-live__thumb .tc-corner--tl { top: 19px; left: 17px; } /* デザイン実測: 上≈19.4 / 左≈16.9 */
.tc-live__thumb .tc-corner--tr { top: 19px; right: 17px; }
.tc-live__thumb .tc-corner--bl { bottom: 19px; left: 17px; }
.tc-live__thumb .tc-corner--br { bottom: 19px; right: 17px; }
/* 再生ボタン（design: Group14 円リング白/内側 fill白6% ＋ 白三角）。画像非依存の要素として中央に重ねる */
.tc-live__play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 50.633px;
  height: 50.633px;
  color: var(--tc-wh);
  pointer-events: none;
}
.tc-live__play svg { display: block; width: 100%; height: 100%; }

/* ---- LIVE配信 レスポンシブ ---- */
@media (max-width: 1023px) {
  .tc-live { width: calc(100% - 80px); }
  /* 動画は縦積み・各600px中央（デザイン768/376: movie 縦並び・600固定） */
  .tc-live__movies { flex-direction: column; align-items: center; }
  .tc-live__movie-item { flex: none; width: 100%; max-width: 600px; }
  /* リード文はTB/SPで左揃え（デザイン: 本文左寄せ） */
  .tc-live > .tc-live__intro { text-align: left; padding: 0 20px; }
}
@media (max-width: 767px) {
  .tc-live { width: calc(100% - 40px); }
  /* 日時: SP デザイン実測 数字37 / 単位21 */
  .tc-live__num { font-size: 37px; }
  .tc-live__unit { font-size: 21px; }
  /* 見出し和サブ(配信予定日) SP: 16→14 / lh1.2 */
  .tc-live .tc-h2v4__ja { font-size: 14px; line-height: 1.2; }
  /* 注記 SP: デザインは意図的に固定幅264（node 12036:11598/11599/11600）。
     panel幅(〜767pxまで可変)に追従させず常に264で中央寄せ・本文左揃え。
     max-width:100%は幅344px未満での溢れ保険。大16(Regular) / 小12(SBold・lh1.2) */
  .tc-live__notes { width: 264px; max-width: 100%; align-items: stretch; text-align: left; }
  .tc-live__note-lg { font-size: 16px; }
  .tc-live__note-sm { font-size: 12px; line-height: 1.2; font-family: var(--tc-ff-sb); font-weight: 600; }
  /* 赤バー SP: 専用アセット（バー領域254.1px＝PNG295px幅・グロー込み） */
  .tc-live__bar {
    width: 295px;
    aspect-ratio: 295 / 53;
    background-image: url("../../images/live/schedule-bar-sp.png");
  }
  /* アーカイブ見出し 36→28（J-28 トークン） */
  .tc-live__arch-title { font-size: 28px; }
  /* アーカイブ intro も SP は左揃え＋内側inset20（デザイン幅296） */
  .tc-live__archive .tc-live__intro { text-align: left; padding: 0 20px; }
  /* 動画間 gap 40→30 */
  .tc-live__movies { gap: 30px; }
  /* サムネ4隅コーナー: SP インセット縮小 ≈10/11 */
  .tc-live__thumb .tc-corner--tl { top: 11px; left: 10px; }
  .tc-live__thumb .tc-corner--tr { top: 11px; right: 10px; }
  .tc-live__thumb .tc-corner--bl { bottom: 11px; left: 10px; }
  .tc-live__thumb .tc-corner--br { bottom: 11px; right: 10px; }
  /* ボタン SP 幅 300→260 */
  .tc-live__panel .tc-btn { min-width: 260px; }
  /* パネル固定高 SP 473 */
  .tc-live__panel { min-height: 473px; }
}
