/**
 * JBBC 補完CSS(theme.jsonで表現しきれないスタイル)
 * デザインガイドラインv1.4+承認済みカンプ(TOP Design v1)準拠。BEM命名。
 * マークアップはすべてブロックネイティブ(core/group・image・heading・paragraph・buttons・separator・list)。
 *
 * 設計原則:
 * - 角丸は2px固定、影は使わない
 * - Goldは数字・英字ラベル・罫線・受賞表示のみ(14px未満では使用禁止。※カンプ準拠の例外あり)
 * - 数字: Inter Medium Italic(14px未満は SemiBold Italic)
 * - 和文混じりの数字はNoto Sansのまま(.u-numを付けない)
 */

/* ---------------------------------------------------------------------------
 * 【エディタ互換】セクション内の縦マージンに :root を前置している理由
 *
 * WordPress は blockGap:0 の設定から
 *   :root :where(.is-layout-flow) > * { margin-block: 0 }
 * をグローバルスタイルとして出力する。詳細度は (0,1,0) で、テーマの
 * 単一クラス指定 (.honor__photos 等) と同値になる。
 * フロントでは app.css が後に読まれるためテーマが勝つが、
 * エディタでは順序が逆転してリセットが勝ち、セクション内の縦間隔が全て 0 に潰れる
 * (=「エディタだと余白が狭い」の原因)。
 * :root を前置して (0,2,0) にすることで、順序に依存せず常にテーマ側を優先させる。
 * ------------------------------------------------------------------------- */

:root {
	--jbbc-radius: 2px;
	--jbbc-navy-900: #0d1b3e;
	--jbbc-navy-700: #163588;
	--jbbc-navy-fv-btm: #0b1632;
	--jbbc-navy-card: #17254a;
	--jbbc-navy-border: #405278;
	--jbbc-navy-divider: #4d5c80;
	--jbbc-footer-bg: #081026;
	--jbbc-footer-border: #263352;
	--jbbc-gold: #b49a5a;
	--jbbc-ink: #16181d;
	--jbbc-gray: #6b7280;
	--jbbc-gray-on-navy: #b8c0d4;
	--jbbc-gray-muted: #8c99b2;
	--jbbc-gray-copyright: #808ca6;
	--jbbc-border-light: #ced4da;
	--jbbc-surface: #f2f4f8;
	--jbbc-cream: #f3f2f1;
	--jbbc-font-body: 'Noto Sans JP', sans-serif;
	--jbbc-font-heading: 'Shippori Mincho', serif;
	--jbbc-font-num: 'Inter', sans-serif;
	--jbbc-font-latin: 'Libre Bodoni', serif;
	--jbbc-header-h: 84px;
	/* 左右ガター(流体)。767pxで20px→1440pxで120px/240pxへ連続変化。
	 * 幅メディアクエリの「崖」を無くし、エディタiframe(キャンバス実幅でMQ評価)でも本番と一致させる */
	--jbbc-gutter: clamp(20px, -94px + 14.9vw, 120px);
	--jbbc-gutter-wide: clamp(20px, -231px + 32.7vw, 240px);
}

/* 固定ヘッダーぶんだけアンカー(/#sponsor 等)の着地点を下げる */
html {
	scroll-padding-top: calc(var(--jbbc-header-h) + 16px);
}

body {
	font-family: var(--jbbc-font-body);
	color: var(--jbbc-ink);
}

img {
	max-width: 100%;
	height: auto;
}

/* セクション内の段落・見出しのデフォルト余白をリセット(:whereで詳細度ゼロ) */
:where(.fv, .about, .judges, .honor, .overview, .cta-band, .movie, .gallery, .news, .sponsor, .site-footer) :where(p, h2, h3, figure) {
	margin: 0;
}

/* ---------------------------------------------------------------------------
 * 書体・汎用ユーティリティ
 * ------------------------------------------------------------------------- */

.u-num {
	font-family: var(--jbbc-font-num);
	font-style: italic;
	font-weight: 500;
}

.u-num--s {
	font-family: var(--jbbc-font-num);
	font-style: italic;
	font-weight: 600;
}

.u-latin {
	font-family: var(--jbbc-font-latin);
}

.is-hidden {
	display: none !important;
}

/* 動きを減らす設定のユーザーにはアニメーションを与えない */
@media (prefers-reduced-motion: reduce) {
	.site-header .site-header__nav.wp-block-navigation a::after,
	.site-footer .site-footer__nav.wp-block-navigation a::after {
		transition: none;
	}
}

/* セクション英字ラベル(ABOUT / MOVIE / GALLERY / SPONSOR) */
.sec-label {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 2.64px;
	line-height: 1;
}

.sec-label--gold {
	color: var(--jbbc-gold);
}

/* ---------------------------------------------------------------------------
 * ボタン(core/buttonのラッパークラスでバリエーション指定)
 * ------------------------------------------------------------------------- */

.wp-block-button__link {
	border-radius: var(--jbbc-radius);
	box-shadow: none;
	font-size: 14px;
	font-weight: 700;
	line-height: 1;
	padding: 16px 32px;
	transition: opacity 0.25s ease;
}

.wp-block-button__link:hover {
	opacity: 0.85;
}

.btn--white .wp-block-button__link {
	background: #fff;
	color: var(--jbbc-navy-900);
}

.btn--navy .wp-block-button__link {
	background: var(--jbbc-navy-900);
	color: #fff;
}

.btn--outline-white .wp-block-button__link {
	background: transparent;
	border: 1px solid #fff;
	color: #fff;
}

.btn--outline-navy .wp-block-button__link {
	background: transparent;
	border: 1px solid var(--jbbc-navy-900);
	color: var(--jbbc-navy-900);
	font-size: 13px;
	padding: 13px 26px;
}

.btn--wide .wp-block-button__link {
	font-size: 15px;
	padding: 18px 48px;
}

.btn--s .wp-block-button__link {
	font-size: 13px;
	padding: 13px 28px;
}

.text-link {
	color: var(--jbbc-navy-700);
	font-size: 13px;
	font-weight: 700;
	text-decoration: none;
}

.text-link:hover {
	text-decoration: underline;
}

/* ---------------------------------------------------------------------------
 * 罫線(core/separator)
 * ------------------------------------------------------------------------- */

hr.rule-gold,
hr.fv__rule,
hr.fv__divider {
	border: 0;
	opacity: 1;
	margin: 0;
}

hr.rule-gold {
	width: 40px;
	height: 1px;
	background: var(--jbbc-gold);
}

hr.fv__rule {
	width: 56px;
	height: 1px;
	background: var(--jbbc-gold);
}

hr.fv__divider {
	width: 1px;
	height: 28px;
	background: var(--jbbc-navy-divider);
}

/* ---------------------------------------------------------------------------
 * 数値スタッツ(受賞の栄誉・スポンサー)
 * ------------------------------------------------------------------------- */

.stats {
	display: flex;
	gap: 64px;
	justify-content: center;
	border-top: 1px solid var(--jbbc-navy-border);
	border-bottom: 1px solid var(--jbbc-navy-border);
	padding: 32px 48px;
}

.stats__item {
	display: flex;
	flex-direction: column;
	gap: 6px;
	align-items: center;
}

.stats__num {
	font-size: 40px;
	letter-spacing: 0.02em;
	color: var(--jbbc-gold);
	line-height: 1;
}

.stats__num--m {
	font-size: 34px;
}

.stats__label {
	font-size: 12px;
	color: var(--jbbc-gray-on-navy);
}

.stats__label--s {
	font-size: 11px;
}

/* ---------------------------------------------------------------------------
 * ヘッダー
 * ------------------------------------------------------------------------- */

/* ヘッダー固定。stickyはテンプレートパーツのラッパー(高さがヘッダー分しかない)ではなく、
 * ページ全体を親に持つ .wp-site-blocks 直下の <header> に効かせる必要がある */
.wp-site-blocks > header.wp-block-template-part {
	position: sticky;
	top: 0;
	z-index: 100;
}

/* ログイン中は管理バー(PCは固定・高さ32px)の下に潜り込ませる */
body.admin-bar .wp-site-blocks > header.wp-block-template-part {
	top: 32px;
}

/* 782px以下では管理バーが absolute になり一緒にスクロールするため、オフセット不要 */
@media (max-width: 782px) {
	body.admin-bar .wp-site-blocks > header.wp-block-template-part {
		top: 0;
	}
}

.site-header {
	background: var(--jbbc-navy-900);
	padding: 16px 48px;
}

.site-header__inner {
	gap: 28px;
	align-items: center;
}

.site-header__logo img {
	object-fit: contain;
}

/* theme.jsonでblockGapを0にしているため、ナビのgapはここで明示する */
.site-header .site-header__nav.wp-block-navigation {
	gap: 26px;
}

/* カンプ準拠: ナビが残り幅を占有し、エントリーボタンの直前まで右寄せになる */
.site-header .site-header__nav.wp-block-navigation {
	flex: 1 0 0;
	justify-content: flex-end;
}

/*
 * ナビのリンク色はコアの
 * `.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content { color: inherit }`
 * (詳細度0,3,0)に負けるため、クラス3つ+要素(0,3,1)で指定する。
 */
.site-header .site-header__nav.wp-block-navigation a {
	position: relative;
	color: #fff;
	font-size: 13px;
	text-decoration: none;
}

/* ホバー時: 下線が左から伸びる */
.site-header .site-header__nav.wp-block-navigation a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -6px;
	width: 100%;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

.site-header .site-header__nav.wp-block-navigation a:hover::after,
.site-header .site-header__nav.wp-block-navigation a:focus-visible::after {
	transform: scaleX(1);
}

.site-header__cta .wp-block-button__link {
	background: #fff;
	color: var(--jbbc-navy-900);
	font-size: 14px;
	padding: 12px 22px;
}

/* ---------------------------------------------------------------------------
 * モバイルナビ(オーバーレイ)
 * 背景色・文字色はparts/header.htmlのブロック属性(overlayBackgroundColor/overlayTextColor)で指定。
 * CSSで上書きするとコアの白背景と詳細度勝負になるため、属性側で解決している。
 * ------------------------------------------------------------------------- */

/* PCではSP専用項目(エントリー/X)を出さない */
.site-header__nav .nav-sp-only {
	display: none;
}

/*
 * 開閉アニメーション。
 * コアは display:none ⇄ flex で切り替えるため瞬間的に出入りする。displayはtransitionできず、
 * visibilityを併用すると閉じる側でtransitionが打ち切られるため、app.jsが付ける
 * body.jbbc-nav-open(開いた次フレーム) / body.jbbc-nav-closing(閉じアニメ中) を起点にする。
 */
@media (max-width: 1023px) {
	/* タップ時点でGPUレイヤを用意しておく(app.js の warm() が付ける) */
	body.jbbc-nav-warm .site-header .wp-block-navigation__responsive-container {
		will-change: opacity;
	}

	.site-header .wp-block-navigation__responsive-container.is-menu-open,
	body.jbbc-nav-closing .site-header .wp-block-navigation__responsive-container {
		display: flex;
		opacity: 0;
		/* コアの overlay-menu__fade-in-animation(0.1s)が競合するため無効化して自前で制御 */
		animation: none;
		transition: opacity 0.26s ease;
		/*
		 * 全画面レイヤは transform で動かすと再ラスタライズが重く実機でカクつくため、
		 * 面そのものはフェードのみ。動きは中の項目のスタガーで見せる。
		 * will-change でGPUレイヤに昇格させ、背面(FV動画)との合成コストを切り離す。
		 */
		will-change: opacity;
		backface-visibility: hidden;
	}

	/* 閉じるときは中身も一緒に引き上げて、閉じたことが分かるようにする */
	body.jbbc-nav-closing .site-header .wp-block-navigation__responsive-container .wp-block-navigation__responsive-container-content {
		transform: translate3d(0, -8px, 0);
		opacity: 0;
		transition: opacity 0.2s ease, transform 0.24s cubic-bezier(0.4, 0, 1, 1);
		will-change: opacity, transform;
	}

	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open {
		opacity: 1;
	}

	/* ロゴ・閉じるボタン・各項目を少しずつ遅らせて立ち上げる(開くときだけ) */
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open::before,
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close,
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
		animation: jbbc-nav-in 0.34s cubic-bezier(0.22, 1, 0.36, 1) both;
	}

	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open::before { animation-delay: 0.04s; }
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close { animation-delay: 0.04s; }
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(1) { animation-delay: 0.07s; }
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(2) { animation-delay: 0.11s; }
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(3) { animation-delay: 0.15s; }
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(4) { animation-delay: 0.19s; }
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(5) { animation-delay: 0.23s; }
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:nth-child(6) { animation-delay: 0.27s; }
}

@keyframes jbbc-nav-in {
	from { opacity: 0; transform: translate3d(0, 14px, 0); }
	to { opacity: 1; transform: translate3d(0, 0, 0); }
}

/* ハンバーガー/閉じるアイコンはタップ時に軽く沈ませる */
.site-header .wp-block-navigation__responsive-container-open,
.site-header .wp-block-navigation__responsive-container-close {
	transition: opacity 0.2s ease;
}

.site-header .wp-block-navigation__responsive-container-open:active,
.site-header .wp-block-navigation__responsive-container-close:active {
	opacity: 0.6;
}

@media (prefers-reduced-motion: reduce) {
	.site-header .wp-block-navigation__responsive-container.is-menu-open,
	body.jbbc-nav-closing .site-header .wp-block-navigation__responsive-container {
		transition: none;
	}

	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open::before,
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close,
	body.jbbc-nav-open .site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
		animation: none;
	}
}

/* 全画面オーバーレイ。iOSのアドレスバー伸縮に追従する dvh を使い、
 * 未対応ブラウザには vh をフォールバックとして残す */
.site-header .wp-block-navigation__responsive-container.is-menu-open {
	--navigation-layout-justification-setting: flex-start;
	--navigation-layout-align: flex-start;
	--navigation-layout-justify: flex-start;
	--navigation-layout-direction: column;
	height: 100vh;
	height: 100dvh;
	max-height: 100dvh;
	overscroll-behavior: contain;
}

/*
 * 縦積みの自衛。オーバーレイ内の縦並びはWPコアCSS(:where・低詳細度)に依存しており、
 * コアCSSの読み込み欠落・バージョン差・詳細度負けが起きると項目が横一列に並んで
 * 画面外へはみ出す(2026-08-24 本番実機で発生)。テーマ側で明示して構造を保証する。
 */
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	display: flex;
	flex-direction: column;
	flex-wrap: nowrap;
	align-items: stretch;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	display: block;
}

/* 上部にロゴ帯を出し、その下にメニューを流す(参考: 鎌田醤油のSPメニュー) */
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	width: 100%;
	padding: 0 20px calc(32px + env(safe-area-inset-bottom));
	margin-top: calc(92px + env(safe-area-inset-top));
	overflow-y: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open::before {
	content: "";
	position: absolute;
	top: calc(18px + env(safe-area-inset-top));
	left: 20px;
	width: 118px;
	height: 42px;
	background: url("../img/logo-white-nav.png") no-repeat left center / contain;
	pointer-events: none;
}

/* 閉じるボタン: セーフエリアを避け、下に「閉じる」ラベルを添える。
 * コアはダイアログ内の通常フローに置くためメニュー項目と重なる。画面基準の固定配置に変える */
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
	position: fixed;
	top: calc(19px + env(safe-area-inset-top));
	right: 20px;
	width: 40px;
	height: 40px;
	z-index: 2;
	color: #fff;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close::after {
	content: "閉じる";
	position: absolute;
	left: 50%;
	bottom: -15px;
	transform: translateX(-50%);
	white-space: nowrap;
	font-family: var(--jbbc-font-body);
	font-size: 10px;
	line-height: 1;
	letter-spacing: 0.08em;
	color: var(--jbbc-gray-on-navy);
}

.site-header .wp-block-navigation__responsive-container-open {
	color: #fff;
}

/* メニュー項目: 明朝で大きめ・1行ずつ罫線で区切る */
.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	width: 100%;
	gap: 0;
	border-top: 1px solid var(--jbbc-navy-border);
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	width: 100%;
	border-bottom: 1px solid var(--jbbc-navy-border);
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item a {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: flex-start;
	text-align: left;
	min-height: 60px;
	padding: 4px 2px;
	font-family: var(--jbbc-font-heading);
	font-size: 19px;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: #fff;
}

/* オーバーレイ内は下線アニメーションを出さない(タッチ操作のため) */
.site-header .wp-block-navigation__responsive-container.is-menu-open a::after {
	content: none;
}

/* タップ時に枠が出ないよう、フォーカスリングはキーボード操作時だけ */
.site-header .wp-block-navigation__responsive-container.is-menu-open a:focus:not(:focus-visible) {
	outline: none;
}

/* 末尾2項目はボタン/SNS導線として見せる */
.site-header .wp-block-navigation__responsive-container.is-menu-open .nav-sp-only {
	display: block;
	border-bottom: 0;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .nav-sp-entry {
	margin-top: 28px;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .nav-sp-entry a {
	justify-content: center;
	min-height: 54px;
	border: 1px solid #fff;
	font-family: var(--jbbc-font-body);
	font-size: 15px;
	font-weight: 700;
	letter-spacing: 0.02em;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .nav-sp-x {
	margin-top: 20px;
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .nav-sp-x a {
	justify-content: flex-start;
	gap: 8px;
	min-height: 32px;
	font-family: var(--jbbc-font-body);
	font-size: 13px;
	font-weight: 400;
	color: var(--jbbc-gray-on-navy);
}

.site-header .wp-block-navigation__responsive-container.is-menu-open .nav-sp-x a::before {
	content: "";
	width: 15px;
	height: 15px;
	background: url("../img/icon-x.svg") no-repeat center / contain;
	flex-shrink: 0;
}

/*
 * ハンバーガー切替を1023px以下に統一する。
 * コアのoverlayMenu:"mobile"は600pxで切り替わり、601〜1023pxの帯では
 * インラインナビが露出して2行に折り返していた(iPad縦=768pxを含む)。
 * この帯でもオーバーレイ運用にする。
 */
@media (min-width: 600px) and (max-width: 1023px) {
	.site-header .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}

	.site-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}
}

/* メニュー展開中は背面をスクロールさせない(iOS Safari対策・app.jsが付与) */
body.jbbc-nav-locked {
	position: fixed;
	width: 100%;
	overflow: hidden;
}

/*
 * 開閉アニメーション中の暫定ロック。position を変えないのでページ全体の
 * 再レイアウトが起きず、1フレーム目を重くしない。アニメーション後に
 * body.jbbc-nav-locked(iOS対策の position:fixed)へ引き継ぐ。
 */
html.jbbc-nav-lock-soft,
html.jbbc-nav-lock-soft body {
	overflow: hidden;
	overscroll-behavior: none;
}

/* ---------------------------------------------------------------------------
 * FV
 * ------------------------------------------------------------------------- */

.fv {
	background: linear-gradient(to bottom, var(--jbbc-navy-900), var(--jbbc-navy-fv-btm));
	padding: var(--wp--preset--spacing--60) var(--jbbc-gutter) var(--wp--preset--spacing--50);
	position: relative;
	overflow: hidden;
}

/* FV背景動画。ネイビーのマスク(::after)越しに常時ループ再生 */
.fv__bg {
	position: absolute;
	inset: 0;
	margin: 0;
	z-index: 0;
}

.fv__bg video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* マスク(暗幕)。濃さはエディタでグラデーションのプリセットを選んで変更する。
 * 見た目の指定はブロック側(theme.jsonのfv-mask-*)にあるため、ここでは位置だけ持たせる */
.fv__mask {
	position: absolute;
	inset: 0;
	z-index: 0;
}

@media (prefers-reduced-motion: reduce) {
	.fv__bg {
		display: none;
	}
}

.fv__inner {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 18px;
	text-align: center;
}

.fv__logo img {
	width: 560px;
	height: auto;
}

.fv__copy {
	font-family: var(--jbbc-font-heading);
	font-weight: 700;
	font-size: 17px;
	letter-spacing: 0.02em;
	color: #fff;
}

.fv__meta {
	display: flex;
	align-items: center;
	gap: 20px;
	padding-top: 12px;
}

.fv__date {
	font-size: 34px;
	letter-spacing: 0.02em;
	color: var(--jbbc-gold);
	line-height: 1;
}

.fv__day {
	font-size: 16px;
	letter-spacing: 0.1em;
	color: var(--jbbc-gold);
	line-height: 1;
}

.fv__venue {
	text-align: left;
}

:root .fv__venue-main {
	font-size: 14px;
	font-weight: 700;
	color: #fff;
	margin-bottom: 3px;
}

.fv__venue-sub {
	font-size: 12px;
	color: var(--jbbc-gray-on-navy);
}

.fv__deadline {
	display: flex;
	align-items: center;
	gap: 14px;
	border: 1px solid var(--jbbc-gold);
	padding: 12px 26px;
}

.fv__deadline-tag {
	background: var(--jbbc-gold);
	color: var(--jbbc-navy-900);
	font-size: 11px;
	font-weight: 700;
	line-height: 1;
	padding: 4px 10px;
}

.fv__deadline-text {
	font-size: 15px;
	font-weight: 700;
	color: #fff;
}

.fv__cta {
	display: flex;
	justify-content: center;
	gap: 16px;
	padding-top: 6px;
}

/* ---------------------------------------------------------------------------
 * JBBCとは
 * ------------------------------------------------------------------------- */

.about {
	background: #fff;
	padding: var(--wp--preset--spacing--60) var(--jbbc-gutter);
}

.about__inner {
	display: flex;
	align-items: center;
	gap: 64px;
	max-width: 1200px;
	margin: 0 auto;
}

.about__photo {
	flex-shrink: 0;
}

.about__photo img {
	width: 520px;
	height: 360px;
	object-fit: cover;
	display: block;
}

.about__text {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
}

.about__title {
	font-family: var(--jbbc-font-heading);
	font-size: 34px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--jbbc-ink);
	line-height: 1.4;
}

.about__lead {
	font-size: 15px;
	line-height: 1.95;
	color: var(--jbbc-ink);
}

.about__body {
	font-size: 15px;
	line-height: 1.95;
	color: var(--jbbc-gray);
}

.about__links {
	display: flex;
	align-items: center;
	gap: 24px;
	padding-top: 8px;
}

/* ---------------------------------------------------------------------------
 * 審査体制
 * ------------------------------------------------------------------------- */

/*
 * セクションの区切り罫線。背景が白で続くページ(審査基準など)で、
 * 隣り合うセクションの境目を示すために使う。
 * .judges--divided は先に導入した審査員セクション用の別名(互換のため残す)。
 */
.is-divided,
.judges--divided {
	border-top: 1px solid var(--jbbc-border-light);
	margin-top: var(--wp--preset--spacing--60);
	padding-top: var(--wp--preset--spacing--60);
}

/* .lower は自前で上下paddingを持つので、罫線分の余白は margin だけに寄せる */
:root .lower.is-divided {
	padding-top: 0;
	margin-top: var(--wp--preset--spacing--60);
}

.judges {
	background: #fff;
	padding: var(--wp--preset--spacing--60) var(--jbbc-gutter);
}

.judges__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 1200px;
	margin: 0 auto;
}

:root .judges__title {
	font-family: var(--jbbc-font-heading);
	font-size: 32px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--jbbc-ink);
	margin-bottom: 10px;
	text-align: center;
	line-height: 1.4;
}

:root .judges__sub {
	font-size: 15px;
	color: var(--jbbc-gray);
	margin-bottom: 40px;
	text-align: center;
}

/* ラベル両脇の罫線は疑似要素で表現 */
:root .judges__label {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 2.4px;
	margin-bottom: 20px;
}

.judges__label::before,
.judges__label::after {
	content: "";
	display: block;
	width: 28px;
	height: 1px;
}

.judges__label--guest {
	color: var(--jbbc-gold);
}

.judges__label--guest::before,
.judges__label--guest::after {
	background: var(--jbbc-gold);
}

:root .judges__label--jp {
	color: var(--jbbc-gray);
	margin-top: 48px;
}

.judges__label--jp::before,
.judges__label--jp::after {
	background: var(--jbbc-border-light);
}

.judges__guests {
	display: flex;
	gap: 32px;
}

.judges__guest-card,
.judges__card {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 5px;
}

:root .judges__photo {
	background: var(--jbbc-surface);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 150px;
	height: 150px;
	overflow: hidden;
	margin-bottom: 9px;
}

.judges__photo--guest {
	width: 220px;
	height: 220px;
	border: 2px solid var(--jbbc-gold);
}

.judges__photo--empty p {
	color: var(--jbbc-border-light);
	font-size: 11px;
	letter-spacing: 1.1px;
}

.judges__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.judges__name {
	font-size: 19px;
	font-weight: 500;
	color: var(--jbbc-ink);
	line-height: 1;
}

.judges__org {
	font-size: 13px;
	font-weight: 700;
	color: var(--jbbc-gray);
	line-height: 1;
}

.judges__country {
	font-size: 10px;
	letter-spacing: 2px;
	color: var(--jbbc-gold);
	line-height: 1;
}

.judges__list {
	display: flex;
	gap: 24px;
}

.judges__card {
	gap: 4px;
}

.judges__card .judges__photo {
	margin-bottom: 8px;
}

.judges__name-ja {
	font-family: var(--jbbc-font-heading);
	font-size: 15px;
	font-weight: 700;
	color: var(--jbbc-ink);
	line-height: 1;
}

:root .judges__keisho {
	font-size: 11px;
	color: var(--jbbc-gray);
	margin-top: 16px;
	align-self: center;
}

.judges__org-ja {
	font-size: 11px;
	color: var(--jbbc-gray);
	line-height: 1;
}

/* ---------------------------------------------------------------------------
 * 受賞の栄誉
 * ------------------------------------------------------------------------- */

.honor {
	background: var(--jbbc-navy-900);
	padding: var(--wp--preset--spacing--60) var(--jbbc-gutter);
}

.honor__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 1200px;
	margin: 0 auto;
}

:root .honor__title {
	font-family: var(--jbbc-font-heading);
	font-size: 32px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	margin-bottom: 10px;
	text-align: center;
	line-height: 1.4;
}

:root .honor__sub {
	font-size: 15px;
	color: var(--jbbc-gray-on-navy);
	margin-bottom: 40px;
	text-align: center;
}

:root .honor__photos {
	display: flex;
	gap: 20px;
	width: 100%;
	margin-bottom: 44px;
}

.honor__card {
	flex: 1;
}

.honor__card img {
	width: 100%;
	height: 240px;
	object-fit: cover;
	display: block;
}

/* 集合写真: 左端の人物が切れないよう表示位置を左寄せ */
.honor__card--group img {
	object-position: 40% 50%;
}

.honor__card figcaption {
	font-size: 12px;
	color: var(--jbbc-gray-on-navy);
	margin-top: 10px;
	text-align: left;
}

/* ---------------------------------------------------------------------------
 * 大会概要
 * ------------------------------------------------------------------------- */

.overview {
	background: var(--jbbc-surface);
	padding: var(--wp--preset--spacing--60) var(--jbbc-gutter-wide);
}

.overview__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 960px;
	margin: 0 auto;
}

:root .overview__title {
	font-family: var(--jbbc-font-heading);
	font-size: 32px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--jbbc-ink);
	margin-bottom: 36px;
	line-height: 1.4;
}

:root .overview__table {
	width: 100%;
	margin-bottom: 44px;
}

/* タイムテーブル非掲載時は表が最後の要素になるため、下の余白を殺す */
.overview__table:last-child {
	margin-bottom: 0;
}

.overview__row {
	display: flex;
	align-items: center;
	gap: 32px;
	padding: 18px 0;
	border-bottom: 1px solid var(--jbbc-border-light);
}

.overview__label {
	font-size: 13px;
	font-weight: 700;
	color: var(--jbbc-gray);
	width: 140px;
	flex-shrink: 0;
}

.overview__value {
	font-size: 15px;
	color: var(--jbbc-ink);
}

.overview__value--bold {
	font-weight: 700;
}

.overview__value--deadline {
	font-weight: 700;
	font-size: 16px;
	color: var(--jbbc-navy-700);
}

/* タイムテーブル(TOP)。2026-08-24のユーザー指示でパターン/本文から削除済み。
 * 内容が確定して復活させる場合に備えてスタイルのみ残置。 */
.overview__tt-title {
	font-family: var(--jbbc-font-heading);
	font-size: 20px;
	font-weight: 700;
	color: var(--jbbc-ink);
	margin-bottom: 20px;
	line-height: 1.4;
}

.overview__timetable {
	display: flex;
	gap: 16px;
	width: 100%;
}

.overview__tt-card {
	flex: 1;
	background: #fff;
	border: 1px solid var(--jbbc-border-light);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	padding: 22px 8px;
}

.overview__tt-time {
	font-size: 24px;
	letter-spacing: 0.02em;
	color: var(--jbbc-gold);
	line-height: 1;
}

.overview__tt-label {
	font-size: 12px;
	color: var(--jbbc-gray);
	line-height: 1;
}

/* ---------------------------------------------------------------------------
 * エントリーCTA帯
 * ------------------------------------------------------------------------- */

.cta-band {
	background: var(--jbbc-gray);
	padding: var(--wp--preset--spacing--50) var(--jbbc-gutter);
}

.cta-band__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	text-align: center;
}

.cta-band__title {
	font-family: var(--jbbc-font-heading);
	font-size: 42px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	line-height: 1.3;
}

.cta-band__deadline {
	font-size: 18px;
	font-weight: 700;
	color: var(--jbbc-gold);
}

.cta-band__note {
	font-size: 11px;
	color: #fff;
}

/* ---------------------------------------------------------------------------
 * ムービー
 * ------------------------------------------------------------------------- */

.movie {
	background: var(--jbbc-navy-900);
	padding: var(--wp--preset--spacing--60) var(--jbbc-gutter);
}

.movie__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.movie__title {
	font-family: var(--jbbc-font-heading);
	font-size: 30px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	margin: 12px 0;
	line-height: 1.4;
}

:root .movie__sub {
	font-size: 14px;
	color: var(--jbbc-gray-on-navy);
	margin-bottom: 36px;
}

.movie__player {
	position: relative;
	width: 960px;
	max-width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
}

.movie__thumb-wrap {
	position: absolute;
	inset: 0;
}

.movie__thumb {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ベール(暗幕)。pointer-events:noneでエディタでのブロック選択も妨げない */
.movie__player::before {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(5, 10, 23, 0.35);
	z-index: 1;
	pointer-events: none;
}

.movie__play {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 88px;
	height: 88px;
	z-index: 2;
}

.movie__player.has-video .movie__play {
	cursor: pointer;
}

.movie__duration {
	position: absolute;
	right: 18px;
	bottom: 18px;
	background: rgba(0, 0, 0, 0.65);
	border-radius: var(--jbbc-radius);
	color: #fff;
	font-size: 12px;
	padding: 5px 10px;
	line-height: 1;
	z-index: 2;
}

.movie__player iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	z-index: 3;
}

/* YouTube埋め込み(core/embed)。プレイヤー枠いっぱいに表示し、暗幕は不要 */
.movie__player:has(.wp-block-embed)::before {
	content: none;
}

.movie__player .wp-block-embed,
.movie__player .wp-block-embed__wrapper {
	position: absolute;
	inset: 0;
	margin: 0;
	width: 100%;
	height: 100%;
}

.movie__player .wp-block-embed__wrapper::before {
	content: none;
}

:root .movie__links {
	margin-top: 28px;
}

/* ---------------------------------------------------------------------------
 * ギャラリー
 * ------------------------------------------------------------------------- */

.gallery {
	background: var(--jbbc-surface);
	padding: var(--wp--preset--spacing--60) var(--jbbc-gutter);
}

.gallery__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 1200px;
	margin: 0 auto;
}

.gallery__title {
	font-family: var(--jbbc-font-heading);
	font-size: 30px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--jbbc-ink);
	margin: 10px 0;
	line-height: 1.4;
}

:root .gallery__sub {
	font-size: 14px;
	color: var(--jbbc-gray);
	margin-bottom: 36px;
}

.gallery__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	grid-auto-flow: dense;
	gap: 16px;
	width: 100%;
}

/* 横写真は16:9、縦写真(2行ぶち抜き)は 1 : (2×9/16 + gap) ≒ 0.85 で事前トリミング済み。
 * object-fit: cover でも顔が切れないよう、タイル比率と画像比率を一致させている */
.gallery__item img {
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	display: block;
}

.gallery__item--tall {
	grid-row: span 2;
}

.gallery__item--tall img {
	height: 100%;
	aspect-ratio: auto;
}

:root .gallery__note {
	font-size: 12px;
	color: var(--jbbc-gray);
	margin-top: 28px;
}

/* ---------------------------------------------------------------------------
 * 入賞個体グリッド + ライトボックス
 * ------------------------------------------------------------------------- */

.award-grid {
	display: grid;
	gap: 20px;
	width: 100%;
}

/* 1〜3位は大きく3列、4〜8位は小さく5列 */
.award-grid--top {
	grid-template-columns: repeat(3, 1fr);
}

:root .award-grid--rest {
	grid-template-columns: repeat(5, 1fr);
	gap: 16px;
	margin-top: 20px;
}

.award-item {
	position: relative;
	display: flex;
	flex-direction: column;
}

.award-item__photo {
	position: relative;
	margin: 0;
	overflow: hidden;
	background: var(--jbbc-surface);
}

.award-item__photo img {
	cursor: zoom-in;
}

.award-item__photo img {
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	display: block;
	transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.award-item__photo:hover img,
.award-item__photo img:focus-visible {
	transform: scale(1.04);
}

/* サムネイルには順位だけを出す(詳細は拡大時) */
:root .award-item__rank {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 1;
	margin: 0;
	padding: 6px 12px;
	background: var(--jbbc-navy-900);
	color: #fff;
	font-family: var(--jbbc-font-heading);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.04em;
	line-height: 1.2;
	pointer-events: none;
}

.award-item--top .award-item__rank {
	font-size: 16px;
	padding: 8px 16px;
	border-bottom: 2px solid var(--jbbc-gold);
}

/* 優勝(1枚目)はゴールド反転バッジ+写真に金縁で別格に見せる */
:root .award-grid--top .award-item:first-child .award-item__rank {
	background: var(--jbbc-gold);
	color: var(--jbbc-navy-900);
	font-size: 19px;
	padding: 10px 22px;
	letter-spacing: 0.1em;
	border-bottom: none;
	box-shadow: 0 2px 10px rgba(6, 12, 28, 0.35);
}

.award-grid--top .award-item:first-child .award-item__photo {
	outline: 2px solid var(--jbbc-gold);
	outline-offset: -2px;
}

/*
 * 詳細テキストはDOMに残したまま視覚的に隠す(ライトボックスが読み取る)。
 * display:none にすると支援技術からも消えるため、クリップで隠している。
 */
.award-item__morph,
.award-item__entry,
.award-item__breeder {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/*
 * エディタでは詳細テキストを表示して編集できるようにする。
 * (フロントでは隠し、ライトボックスが読み取って拡大表示に転記する)
 */
.editor-styles-wrapper .award-item__morph,
.editor-styles-wrapper .award-item__entry,
.editor-styles-wrapper .award-item__breeder {
	position: static;
	width: auto;
	height: auto;
	margin: 4px 0 0;
	overflow: visible;
	clip: auto;
	clip-path: none;
	white-space: normal;
	font-size: 12px;
	line-height: 1.6;
	color: var(--jbbc-gray);
}

.editor-styles-wrapper .award-item__morph {
	font-weight: 700;
	color: var(--jbbc-ink);
	margin-top: 8px;
}

:root .gallery__h3 {
	font-family: var(--jbbc-font-heading);
	font-size: 20px;
	font-weight: 700;
	color: var(--jbbc-ink);
	letter-spacing: 0.02em;
	margin-top: 56px;
	margin-bottom: 20px;
}

/* --- ライトボックス --- */

.jbbc-lb {
	width: 100%;
	max-width: 100%;
	max-height: 100%;
	height: 100%;
	padding: 0;
	border: 0;
	background: transparent;
	overflow: hidden;
}

.jbbc-lb::backdrop {
	background: rgba(6, 12, 28, 0.92);
}

.jbbc-lb__inner {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	padding: calc(56px + env(safe-area-inset-top)) 72px calc(40px + env(safe-area-inset-bottom));
	box-sizing: border-box;
}

.jbbc-lb__figure {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 18px;
	margin: 0;
	max-height: 100%;
}

.jbbc-lb__img {
	max-width: min(560px, 100%);
	max-height: 68vh;
	width: auto;
	height: auto;
	object-fit: contain;
	display: block;
}

.jbbc-lb__cap {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	text-align: center;
	color: #fff;
	max-width: 560px;
}

.jbbc-lb__rank {
	font-family: var(--jbbc-font-heading);
	font-size: 20px;
	font-weight: 700;
	letter-spacing: 0.06em;
	color: var(--jbbc-gold);
}

.jbbc-lb__morph {
	font-size: 15px;
	font-weight: 700;
	line-height: 1.6;
}

.jbbc-lb__entry,
.jbbc-lb__breeder {
	font-size: 13px;
	color: var(--jbbc-gray-on-navy);
	line-height: 1.6;
}

.jbbc-lb__close,
.jbbc-lb__nav {
	position: absolute;
	display: flex;
	align-items: center;
	justify-content: center;
	background: transparent;
	border: 0;
	color: #fff;
	cursor: pointer;
	padding: 12px;
	transition: opacity 0.2s ease;
}

.jbbc-lb__close:hover,
.jbbc-lb__nav:hover {
	opacity: 0.6;
}

.jbbc-lb__close {
	top: calc(12px + env(safe-area-inset-top));
	right: 12px;
}

.jbbc-lb__nav--prev {
	left: 4px;
}

.jbbc-lb__nav--next {
	right: 4px;
}

/* ---------------------------------------------------------------------------
 * お知らせ(TOP)
 * ------------------------------------------------------------------------- */

.news {
	background: #fff;
	padding: var(--wp--preset--spacing--60) var(--jbbc-gutter-wide);
}

.news__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 960px;
	margin: 0 auto;
}

:root .news__title {
	font-family: var(--jbbc-font-heading);
	font-size: 28px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--jbbc-ink);
	margin-bottom: 28px;
	line-height: 1.4;
}

.news__list {
	width: 100%;
}

.news__row {
	gap: 20px;
	padding: 18px 0;
	border-bottom: 1px solid var(--jbbc-border-light);
}

.news__date {
	font-size: 13px;
	color: var(--jbbc-gray);
	flex-shrink: 0;
}

.news__tag {
	flex-shrink: 0;
	font-size: 11px;
	color: var(--jbbc-gray);
	border: 1px solid var(--jbbc-border-light);
	padding: 3px 10px;
	line-height: 1.4;
}

.news__tag a {
	color: inherit;
	text-decoration: none;
}

.news__item-title {
	font-family: var(--jbbc-font-body);
	font-size: 14px;
	font-weight: 400;
	color: var(--jbbc-ink);
	margin: 0;
	line-height: 1.6;
}

.news__item-title a {
	color: inherit;
	text-decoration: none;
}

.news__item-title a:hover {
	color: var(--jbbc-navy-700);
}

.news__empty {
	color: var(--jbbc-gray);
	font-size: 14px;
	padding: 18px 0;
}

:root .news__follow-wrap {
	margin-top: 28px;
}

.news__follow .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	background: var(--jbbc-navy-900);
	color: #fff;
	font-size: 13px;
	font-weight: 400;
	padding: 13px 22px;
}

.news__follow .wp-block-button__link::before {
	content: "";
	display: inline-block;
	width: 16px;
	height: 16px;
	background: currentColor;
	-webkit-mask: url('../img/icon-x.svg') no-repeat center / contain;
	mask: url('../img/icon-x.svg') no-repeat center / contain;
}

.news__follow strong {
	font-weight: 700;
}

/* ---------------------------------------------------------------------------
 * スポンサー
 * ------------------------------------------------------------------------- */

.sponsor {
	background: var(--jbbc-navy-900);
	padding: var(--wp--preset--spacing--60) var(--jbbc-gutter);
}

.sponsor__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 1200px;
	margin: 0 auto;
	text-align: center;
}

.sponsor__title {
	font-family: var(--jbbc-font-heading);
	font-size: 32px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	margin: 14px 0 18px;
	line-height: 1.4;
}

.sponsor__lead {
	max-width: 760px;
}

.sponsor__lead p {
	font-size: 15px;
	line-height: 2;
	color: var(--jbbc-gray-on-navy);
}

:root .sponsor__stats {
	gap: 56px;
	padding: 28px 40px;
	margin-top: 40px;
}

:root .sponsor__h3 {
	font-family: var(--jbbc-font-heading);
	font-size: 20px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	margin-top: 48px;
	line-height: 1.4;
}

.sponsor__note-gold {
	font-size: 11px;
	color: var(--jbbc-gold);
	margin: 6px 0 22px;
}

/* ScrollHintのsuggestiveShadowが生成するラッパーもflex子になるため同じ幅制約が必要 */
.sponsor__inner .scroll-hint-shadow-wrap {
	width: 100%;
	min-width: 0;
	max-width: 100%;
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix {
	width: 100%;
	/* 親(.sponsor__inner)がflexのため min-width:auto だと表の最小幅まで膨らみ、
	 * ページ全体の横スクロールになってしまう。0にしてfigure内スクロールへ */
	min-width: 0;
	max-width: 100%;
	margin: 0;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

/* フライヤー準拠の配色: ネイビー見出し(白文字・クリーム罫線)+クリームセル(濃紺文字・ネイビー罫線) */
.sponsor-matrix.sponsor-matrix.sponsor-matrix table {
	width: 100%;
	min-width: 760px;
	border-collapse: collapse;
	table-layout: fixed;
	border: 1px solid var(--jbbc-cream);
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix th,
.sponsor-matrix.sponsor-matrix.sponsor-matrix td {
	padding: 14px 12px;
	text-align: center;
	vertical-align: middle;
	font-size: 12px;
	line-height: 1.6;
	word-break: auto-phrase;
}

/* 行見出し(媒体名) */
.sponsor-matrix.sponsor-matrix.sponsor-matrix tbody th {
	background: var(--jbbc-navy-900);
	border: 1px solid var(--jbbc-cream);
	color: #fff;
	font-size: 13px;
	font-weight: 700;
	width: 132px;
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix thead th:first-child {
	background: var(--jbbc-navy-900);
	border: 1px solid var(--jbbc-cream);
	width: 132px;
}

/* 列見出し(プラン名) */
.sponsor-matrix.sponsor-matrix.sponsor-matrix thead th {
	background: var(--jbbc-navy-900);
	border: 1px solid var(--jbbc-cream);
	color: #fff;
	padding: 16px 12px;
}

.sponsor-matrix__plan {
	display: block;
	font-family: var(--jbbc-font-heading);
	font-size: 15px;
	font-weight: 700;
	line-height: 1.4;
}

.sponsor-matrix__en {
	display: block;
	font-size: 9px;
	font-weight: 600;
	letter-spacing: 1.62px;
	color: #fff;
	margin-top: 5px;
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix td {
	background: var(--jbbc-cream);
	border: 1px solid var(--jbbc-navy-900);
	color: var(--jbbc-navy-900);
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix tbody tr:first-child td {
	padding: 16px 12px;
}

.sponsor-matrix__price {
	font-size: 20px;
	color: var(--jbbc-navy-900);
	line-height: 1;
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix tbody td:last-child .sponsor-matrix__price {
	font-weight: 500;
	letter-spacing: 0.06em;
	font-style: normal;
}

.sponsor-matrix__none {
	color: var(--jbbc-navy-900);
}

/* .sponsor-matrix の3連クラスは詳細度ブースト。
 * FlexibleTableBlockのグローバル既定スタイル(インラインCSS・0,2,3)より確実に優先させるため。
 * core/tableとFTBのどちらにも同じクラスが付くので両対応。
 */

/* セルの装飾は構造セレクタ(位置)ベースで指定する。
 * core/tableはセルのclass/data属性を保持せず、エディタ保存で独自クラスが剥がれるため
 * (2026-08-24に本番編集で実際に発生)、クラス注入に依存しない。
 */

/* ヘッダー行(1行目)の下罫線もクリーム(白)に。
 * WPコアが .wp-block-table thead に border-bottom: 3px solid(色=文字色の墨)を当てており、
 * border-collapse は「幅の広い罫線が勝つ」ため黒い太線が出ていた。1pxクリームで上書きし、
 * tbody 1行目セルの border-top(ネイビー)にも負けないよう両側から指定する */
.sponsor-matrix.sponsor-matrix.sponsor-matrix table thead {
	border-bottom: 1px solid var(--jbbc-cream);
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix tbody tr:first-child th,
.sponsor-matrix.sponsor-matrix.sponsor-matrix tbody tr:first-child td {
	border-top-color: var(--jbbc-cream);
}

/* 冠スポンサー列のアクセント(ゴールド枠+見出し金文字。セル内文字はクリーム上の可読性優先で濃紺のまま) */
.sponsor-matrix.sponsor-matrix.sponsor-matrix thead th:last-child {
	border: 2px solid var(--jbbc-gold);
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix thead th:last-child .sponsor-matrix__plan,
.sponsor-matrix.sponsor-matrix.sponsor-matrix thead th:last-child .sponsor-matrix__en {
	color: var(--jbbc-gold);
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix tbody td:last-child {
	border-left: 2px solid var(--jbbc-gold);
	border-right: 2px solid var(--jbbc-gold);
}

.sponsor-matrix.sponsor-matrix.sponsor-matrix tbody tr:last-child td:last-child {
	border-bottom: 2px solid var(--jbbc-gold);
}

:root .sponsor__contact-note {
	font-size: 12px;
	color: var(--jbbc-gray-on-navy);
	margin-top: 12px;
}

.sponsor__label {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 2px;
	margin: 26px 0 16px;
}

.sponsor__label::before,
.sponsor__label::after {
	content: "";
	display: block;
	width: 24px;
	height: 1px;
}

.sponsor__label--big {
	color: var(--jbbc-gold);
}

.sponsor__label--big::before,
.sponsor__label--big::after {
	background: var(--jbbc-gold);
}

.sponsor__label--small {
	color: var(--jbbc-gray-on-navy);
	margin-top: 36px;
}

.sponsor__label--small::before,
.sponsor__label--small::after {
	background: var(--jbbc-navy-border);
}

.sponsor__logos {
	display: grid;
	gap: 12px 20px;
	width: 100%;
}

.sponsor__logos--big {
	grid-template-columns: repeat(3, 1fr);
}

.sponsor__logos--small {
	grid-template-columns: repeat(6, 1fr);
	gap: 12px;
}

.sponsor__logo {
	background: var(--jbbc-navy-card);
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}

.sponsor__logo--big {
	border: 1px solid var(--jbbc-gold);
	height: 104px;
}

.sponsor__logo--small {
	border: 1px solid var(--jbbc-navy-border);
	height: 58px;
}

.sponsor__logo--empty p {
	color: var(--jbbc-gray-on-navy);
	font-size: 12px;
	letter-spacing: 0.06em;
}

.sponsor__logo--small.sponsor__logo--empty p {
	font-size: 10px;
}

.sponsor__logo img {
	max-width: 80%;
	max-height: 70%;
	object-fit: contain;
}

/* 昨年協賛企業さま(支給画像をそのまま掲載) */
.sponsor__lastyear {
	width: 100%;
	max-width: 560px;
	margin: 24px auto 48px;
}

.sponsor__lastyear img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--jbbc-radius);
}

:root .sponsor__cta {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	border-top: 1px solid var(--jbbc-navy-border);
	padding-top: 48px;
	margin-top: 52px;
	width: 100%;
}

.sponsor__cta-title {
	font-family: var(--jbbc-font-heading);
	/* 他セクションのh2と同じ級数に揃える(PC32px / SP22px) */
	font-size: 32px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	line-height: 1.4;
}

.sponsor__cta-sub {
	font-size: 13px;
	color: var(--jbbc-gray-on-navy);
}

/* 協賛募集の締切。TOPの出場エントリーCTAの締切表記と同じ扱い(ゴールド・太字) */
:root .sponsor__cta-deadline {
	font-size: 16px;
	font-weight: 700;
	color: var(--jbbc-gold);
	margin-top: 6px;
}

.sponsor__cta-note {
	font-size: 11px;
	color: var(--jbbc-gray-muted);
}

/* ---------------------------------------------------------------------------
 * フッター
 * ------------------------------------------------------------------------- */

.site-footer {
	background: var(--jbbc-footer-bg);
	padding: clamp(40px, 22px + 2.4vw, 56px) var(--jbbc-gutter) clamp(24px, 15px + 1.2vw, 32px);
}

.site-footer__top {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 40px;
	flex-wrap: wrap;
}

.site-footer .site-footer__nav.wp-block-navigation {
	flex: 1;
	gap: 24px;
}

/*
 * WPはナビゲーションブロックのclassNameを内側のULにも複製するため、
 * このクラスに padding を持たせると nav と ul で二重に効き、
 * 隣のXリンクより項目が8px下がっていた。要素名で絞って一度だけ効かせる。
 * (gapはULが実際のflexコンテナなので上のルールのまま両方に効かせる)
 */
.site-footer nav.site-footer__nav {
	padding-top: 8px;
}

.site-footer .site-footer__nav.wp-block-navigation a {
	position: relative;
	color: var(--jbbc-gray-on-navy);
	font-size: 12px;
	text-decoration: none;
	transition: color 0.28s ease;
}

.site-footer .site-footer__nav.wp-block-navigation a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -5px;
	width: 100%;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

.site-footer .site-footer__nav.wp-block-navigation a:hover,
.site-footer .site-footer__nav.wp-block-navigation a:focus-visible {
	color: #fff;
}

.site-footer .site-footer__nav.wp-block-navigation a:hover::after,
.site-footer .site-footer__nav.wp-block-navigation a:focus-visible::after {
	transform: scaleX(1);
}

.site-footer__sns {
	padding-top: 8px;
	/* インラインの行送りによる1〜2pxのズレを消し、ナビと同じ高さから始める */
	display: flex;
	align-items: flex-start;
}

.site-footer__sns a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: var(--jbbc-gray-on-navy);
	font-size: 12px;
	text-decoration: none;
}

.site-footer__sns a:hover {
	color: #fff;
}

.site-footer__sns a::before {
	content: "";
	display: inline-block;
	width: 17px;
	height: 17px;
	background: currentColor;
	-webkit-mask: url('../img/icon-x.svg') no-repeat center / contain;
	mask: url('../img/icon-x.svg') no-repeat center / contain;
}

/*
 * JRSバナー。位置はフッター上段とコピーライトの間で、PCは右下・SPは中央。
 * 幅はブロックエディタ(画像ブロックの幅)で変えられるようCSS側では固定しない。
 */
:root .site-footer__banner {
	margin: 28px 0 0;
	max-width: 100%;
	/* リンク(a)を画像の大きさに収めるため、figure自体をflexにして寄せる。
	   text-align + display:block だと a が親の全幅に広がり、
	   画像の外側までクリック範囲になってしまう。 */
	display: flex;
	justify-content: flex-end;
}

.site-footer__banner a {
	display: inline-block;
	line-height: 0;
	transition: opacity 0.2s ease;
}

.site-footer__banner a:hover,
.site-footer__banner a:focus-visible {
	opacity: 0.75;
}

.site-footer__banner img {
	display: block;
	height: auto;
	border-radius: var(--jbbc-radius);
}

.site-footer__copyright {
	border-top: 1px solid var(--jbbc-footer-border);
	color: var(--jbbc-gray-copyright);
	font-size: 11px;
	margin-top: 36px;
	padding-top: 24px;
}

/* ---------------------------------------------------------------------------
 * 下層共通
 * ------------------------------------------------------------------------- */

:where(.page-hero, .lower, .page-404) :where(p, h1, h2, h3, figure) {
	margin: 0;
}

.page-hero {
	background: var(--jbbc-navy-900);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	padding: clamp(48px, 21px + 3.6vw, 72px) var(--jbbc-gutter) clamp(40px, 17px + 3vw, 60px);
	text-align: center;
}

.page-hero__label {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 2.64px;
	color: var(--jbbc-gold);
	line-height: 1;
}

.page-hero__title {
	font-family: var(--jbbc-font-heading);
	font-size: 38px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	line-height: 1.4;
}

.page-hero__title--article {
	font-size: 28px;
}

.page-hero__sub {
	font-size: 13px;
	color: var(--jbbc-gray-on-navy);
}

.page-hero__meta {
	gap: 14px;
	align-items: center;
}

.page-hero__date {
	font-size: 13px;
	color: var(--jbbc-gray-on-navy);
}

.page-hero__terms {
	font-size: 11px;
	color: var(--jbbc-gray-on-navy);
	border: 1px solid var(--jbbc-navy-border);
	padding: 3px 10px;
	line-height: 1.4;
}

.page-hero__terms a {
	color: inherit;
	text-decoration: none;
}

.lower {
	background: #fff;
	padding: clamp(48px, 16px + 4.2vw, 76px) var(--jbbc-gutter);
}

.lower__inner {
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}

.lower__inner--m {
	max-width: 960px;
}

.lower__inner--s {
	max-width: 720px;
}

.lower-h2 {
	font-family: var(--jbbc-font-heading);
	font-size: 26px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--jbbc-ink);
	margin-bottom: 24px;
	line-height: 1.4;
}

.lower-h2--gap {
	margin-top: 56px;
}

.lower-lead {
	font-size: 15px;
	line-height: 1.95;
	color: var(--jbbc-ink);
}

.lower-sub {
	font-size: 13px;
	line-height: 1.8;
	color: var(--jbbc-gray);
	margin-top: 12px;
}

/* 開催概要テーブル */
.spec-table {
	width: 100%;
}

.spec-table__row {
	display: flex;
	align-items: center;
	gap: 32px;
	padding: 16px 0;
	border-bottom: 1px solid var(--jbbc-border-light);
}

.spec-table__label {
	font-size: 13px;
	font-weight: 700;
	color: var(--jbbc-gray);
	width: 150px;
	flex-shrink: 0;
}

.spec-table__value {
	font-size: 15px;
	color: var(--jbbc-ink);
}

.spec-table__value a {
	color: var(--jbbc-navy-700);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.spec-table__value--bold {
	font-weight: 700;
}

.spec-table__value--deadline {
	font-weight: 700;
	font-size: 16px;
	color: var(--jbbc-navy-700);
}

/* タイムテーブル(下層)。2026-08-24のユーザー指示で大会情報ページから削除済み。
 * 復活時に備えてスタイルのみ残置。 */
.tt-list {
	width: 100%;
}

.tt-list__row {
	display: flex;
	align-items: flex-start;
	gap: 28px;
	padding: 20px 0;
	border-bottom: 1px solid var(--jbbc-border-light);
}

.tt-list__time {
	font-size: 22px;
	letter-spacing: 0.02em;
	color: var(--jbbc-gold);
	width: 110px;
	flex-shrink: 0;
	line-height: 1.4;
}

.tt-list__title {
	font-size: 16px;
	font-weight: 700;
	color: var(--jbbc-ink);
	margin-bottom: 5px;
}

.tt-list__desc {
	font-size: 12px;
	color: var(--jbbc-gray);
}

/* エントリーボックス */
.entry-box {
	/* 配色はTOPの出場エントリーCTA(.cta-band)に合わせる */
	background: var(--jbbc-gray);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	padding: 40px;
	width: 100%;
	margin-top: 56px;
	text-align: center;
}

.entry-box__title {
	font-family: var(--jbbc-font-heading);
	font-size: 24px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	line-height: 1.4;
}

.entry-box__deadline {
	font-size: 14px;
	color: var(--jbbc-gold);
}

/* 会場アクセス */
.map-embed {
	width: 100%;
	height: 280px;
	border: 1px solid var(--jbbc-border-light);
	background: var(--jbbc-surface);
}

.map-embed iframe {
	display: block;
	width: 100%;
	height: 100%;
}

.map-note {
	font-size: 13px;
	color: var(--jbbc-gray);
	margin-top: 14px;
}

/* FAQ */
.faq {
	width: 100%;
}

.faq__item {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 18px 0;
	border-bottom: 1px solid var(--jbbc-border-light);
}

.faq__q,
.faq__a {
	display: flex;
	gap: 12px;
	align-items: flex-start;
}

.faq__qmark {
	font-size: 15px;
	font-weight: 500;
	color: var(--jbbc-gold);
	line-height: 1.5;
}

.faq__qtext {
	font-size: 15px;
	font-weight: 700;
	color: var(--jbbc-ink);
	line-height: 1.5;
}

.faq__amark {
	font-size: 15px;
	font-weight: 500;
	color: var(--jbbc-border-light);
	line-height: 1.5;
}

.faq__atext {
	font-size: 13px;
	line-height: 1.8;
	color: var(--jbbc-gray);
}

.faq__atext a {
	color: var(--jbbc-navy-700);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* 過去の大会 */
.arch {
	display: flex;
	gap: 20px;
	width: 100%;
}

.arch__card {
	flex: 1;
	border: 1px solid var(--jbbc-border-light);
	border-radius: var(--jbbc-radius);
	display: flex;
	flex-direction: column;
	gap: 8px;
	align-items: flex-start;
	padding: 22px 24px;
}

.arch__card--next {
	border: 0;
	background: var(--jbbc-surface);
}

.arch__title {
	font-family: var(--jbbc-font-heading);
	font-size: 17px;
	font-weight: 700;
	color: var(--jbbc-ink);
	line-height: 1.4;
}

.arch__title--muted {
	color: var(--jbbc-border-light);
}

.arch__desc {
	font-size: 12px;
	color: var(--jbbc-gray);
}

/* 審査の観点 */
.points {
	width: 100%;
}

.points__row {
	display: flex;
	align-items: flex-start;
	gap: 28px;
	padding: 22px 0;
	border-bottom: 1px solid var(--jbbc-border-light);
}

.points__num {
	font-size: 26px;
	letter-spacing: 0.02em;
	color: var(--jbbc-gold);
	width: 60px;
	flex-shrink: 0;
	line-height: 1.4;
}

.points__title {
	font-size: 16px;
	font-weight: 700;
	color: var(--jbbc-ink);
	margin-bottom: 6px;
}

.points__desc {
	font-size: 13px;
	line-height: 1.8;
	color: var(--jbbc-gray);
}

.points__title small {
	font-size: 12px;
	font-weight: 400;
	color: var(--jbbc-gray);
	margin-left: 8px;
}

.points__sub {
	font-size: 13px;
	font-weight: 700;
	color: var(--jbbc-navy-700);
	margin-bottom: 6px;
}

.points__score {
	font-size: 13px;
	line-height: 1.8;
	color: var(--jbbc-ink);
	margin-top: 10px;
	padding-left: 12px;
	border-left: 2px solid var(--jbbc-gold);
}

/* 審査の流れ(英字ステップラベル) */
.points__step {
	font-family: var(--jbbc-font-latin);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.2em;
	color: var(--jbbc-gold);
	width: 104px;
	flex-shrink: 0;
	line-height: 1.4;
	padding-top: 5px;
}

/* 下層の箇条書き(core/list) */
.lower-list {
	list-style: none;
	padding: 0;
	margin: 0;
	width: 100%;
	font-size: 14px;
	line-height: 1.9;
	color: var(--jbbc-ink);
}

.lower-list li {
	position: relative;
	padding-left: 18px;
}

.lower-list li + li {
	margin-top: 6px;
}

.lower-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.95em;
	width: 8px;
	height: 1px;
	background: var(--jbbc-gold);
}

.lower-list--gap {
	margin-top: 24px;
}

.lower-em {
	font-family: var(--jbbc-font-heading);
	font-size: 18px;
	font-weight: 700;
	color: var(--jbbc-ink);
	margin-top: 20px;
	line-height: 1.6;
}

.lower-sub a {
	color: var(--jbbc-navy-700);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* 表彰区分 */
.awards {
	display: flex;
	gap: 20px;
	width: 100%;
}

.awards__card {
	flex: 1;
	background: var(--jbbc-surface);
	display: flex;
	flex-direction: column;
	gap: 8px;
	align-items: center;
	padding: 28px 8px;
}

.awards__label {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 2.2px;
	color: var(--jbbc-gold);
	line-height: 1;
}

.awards__name {
	font-family: var(--jbbc-font-heading);
	font-size: 20px;
	font-weight: 700;
	color: var(--jbbc-ink);
	line-height: 1.4;
}

.awards__prize {
	font-size: 22px;
	color: var(--jbbc-gold);
	line-height: 1.3;
	letter-spacing: 0.02em;
}

.awards__prize:not(.u-num) {
	font-size: 16px;
	font-weight: 700;
	color: var(--jbbc-ink);
	padding-top: 4px;
}

.awards__note {
	font-size: 12px;
	color: var(--jbbc-gray);
	margin-top: 16px;
}

/* お問い合わせ(Snow Monkey Forms) */
.contact-body__intro {
	font-size: 13px;
	line-height: 1.8;
	color: var(--jbbc-gray);
	margin-bottom: 24px;
}

.contact-body .snow-monkey-form {
	width: 100%;
}

.contact-body .smf-item {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 0 0 24px;
	border: 0;
}

.contact-body .smf-item__col--label {
	width: 100%;
	padding: 0;
}

.contact-body .smf-item__label__text {
	font-size: 13px;
	font-weight: 700;
	color: var(--jbbc-ink);
}

.contact-body .jbbc-req {
	display: inline-block;
	background: var(--jbbc-navy-900);
	border-radius: var(--jbbc-radius);
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	line-height: 1;
	padding: 3px 7px;
	margin-left: 8px;
	vertical-align: 1px;
}

.contact-body .smf-item__col--controls,
.contact-body .smf-item__controls {
	width: 100%;
	padding: 0;
}

.contact-body .smf-text-control__control,
.contact-body .smf-textarea-control__control,
.contact-body .smf-select-control__control {
	background: var(--jbbc-surface);
	border: 1px solid var(--jbbc-border-light);
	border-radius: var(--jbbc-radius);
	box-shadow: none;
	font-size: 13px;
	padding: 14px 16px;
	width: 100%;
}

.contact-body .smf-textarea-control__control {
	min-height: 150px;
}

.contact-body .smf-checkboxes-control__control .smf-checkbox-control__label {
	font-size: 13px;
	color: var(--jbbc-ink);
}

.contact-body .smf-button-control__control {
	background: var(--jbbc-navy-900);
	border: 0;
	border-radius: var(--jbbc-radius);
	box-shadow: none;
	color: #fff;
	font-size: 14px;
	font-weight: 700;
	padding: 17px 56px;
	cursor: pointer;
	transition: opacity 0.25s ease;
}

.contact-body .smf-button-control__control:hover {
	opacity: 0.85;
}

.contact-body .smf-form__buttons {
	justify-content: flex-start;
	margin-top: 8px;
}

.contact-body .smf-error-messages {
	font-size: 12px;
}

/* プライバシーポリシー */
.policy__preamble {
	font-size: 14px;
	line-height: 1.95;
	color: var(--jbbc-ink);
	margin-bottom: 44px;
}

.policy__art {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding-bottom: 32px;
	width: 100%;
}

.policy__head {
	display: flex;
	align-items: center;
	gap: 12px;
}

.policy__num {
	font-size: 18px;
	color: var(--jbbc-gold);
	line-height: 1.4;
}

.policy__title {
	font-family: var(--jbbc-font-heading);
	font-size: 18px;
	font-weight: 700;
	color: var(--jbbc-ink);
	line-height: 1.4;
}

.policy__body {
	font-size: 14px;
	line-height: 1.95;
	color: var(--jbbc-gray);
}

.policy__company {
	background: var(--jbbc-surface);
	display: flex;
	flex-direction: column;
	gap: 8px;
	align-items: flex-start;
	padding: 24px 28px;
	width: 100%;
}

.policy__company-name {
	font-size: 15px;
	font-weight: 700;
	color: var(--jbbc-ink);
}

.policy__company-line {
	font-size: 13px;
	color: var(--jbbc-gray);
}

.policy__dated {
	font-size: 12px;
	color: var(--jbbc-gray);
	margin-top: 36px;
	align-self: flex-end;
}

/* 404 */
.page-404 {
	background: var(--jbbc-navy-900);
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: 150px 120px;
	text-align: center;
}

.page-404__code {
	font-size: 84px;
	letter-spacing: 0.04em;
	color: var(--jbbc-gold);
	line-height: 1;
	margin-bottom: 16px;
}

.page-404__title {
	font-family: var(--jbbc-font-heading);
	font-size: 24px;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	margin-bottom: 14px;
	line-height: 1.4;
}

.page-404__sub {
	font-size: 13px;
	color: var(--jbbc-gray-on-navy);
	margin-bottom: 32px;
}

.page-404__btns {
	gap: 14px;
}

.btn--404 .wp-block-button__link {
	font-size: 13px;
	padding: 15px 32px;
}

/* お知らせ詳細 */
.news-detail {
	gap: 0;
}

.news-detail .wp-block-post-content {
	width: 100%;
	font-size: 15px;
	line-height: 1.95;
	color: var(--jbbc-ink);
}

/* ブロック間はWordPress標準の24px(エディタ側は inc/editor.php で同値を注入) */
.news-detail .wp-block-post-content > * + * {
	margin-top: 24px;
}

.news-detail .wp-block-post-content > :is(h1, h2, h3, h4, h5, h6) + * {
	margin-top: 12px;
}

.news-detail__foot {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 20px;
	border-top: 1px solid var(--jbbc-border-light);
	margin-top: 48px;
	padding-top: 32px;
	width: 100%;
}

.news-detail__sns a {
	color: var(--jbbc-navy-700);
	font-size: 13px;
	text-decoration: none;
}

.news-detail__sns a:hover {
	text-decoration: underline;
}

.news__pagination {
	margin-top: 28px;
	font-size: 13px;
}

.news__pagination a,
.news__pagination .page-numbers {
	color: var(--jbbc-navy-700);
	text-decoration: none;
}

/* 下層レスポンシブ */
@media (max-width: 767px) {
	:root {
		--jbbc-header-h: 63px;
	}

	.page-hero__title {
		font-size: 26px;
	}

	.page-hero__title--article {
		font-size: 20px;
	}

	.lower-h2 {
		font-size: 21px;
	}

	.lower-h2--gap {
		margin-top: 40px;
	}

	.spec-table__row {
		flex-direction: column;
		align-items: flex-start;
		gap: 4px;
		padding: 12px 0;
	}

	.spec-table__label {
		width: auto;
	}

	.tt-list__row {
		gap: 14px;
	}

	.tt-list__time {
		width: 76px;
		font-size: 19px;
	}

	.entry-box {
		padding: 28px 20px;
	}

	.entry-box__title {
		font-size: 20px;
	}

	.arch,
	.awards {
		flex-direction: column;
	}

	.points__row {
		gap: 14px;
	}

	.points__num {
		width: 44px;
		font-size: 22px;
	}

	.points__step {
		width: 84px;
		font-size: 10px;
	}

	.page-404 {
		padding: 90px 20px;
	}

	.page-404__code {
		font-size: 64px;
	}

	.page-404__title {
		font-size: 19px;
	}

	.page-404__btns {
		flex-direction: column;
		width: 100%;
	}

	.btn--404 {
		width: 100%;
	}

	.btn--404 .wp-block-button__link {
		width: 100%;
	}
}

/* ---------------------------------------------------------------------------
 * レスポンシブ(SPはガイドライン準拠で設計展開)
 * ------------------------------------------------------------------------- */

@media (max-width: 1180px) {
	.about__inner {
		gap: 40px;
	}

	.about__photo img {
		width: 100%;
		height: auto;
		aspect-ratio: 13 / 9;
	}

	.about__photo {
		width: 44%;
	}

}

@media (max-width: 767px) {
	/*
	 * SPは1行の枠数が減るため、3件/5件をそのまま並べると
	 * 3位と8位が単独で残り歯抜けに見える。
	 * 優勝を全幅にして上段を埋め、下段はflexの折返し中央寄せで端数を散らす。
	 */
	.award-grid--top {
		grid-template-columns: repeat(2, 1fr);
		gap: 10px;
	}

	.award-grid--top .award-item:first-child {
		grid-column: 1 / -1;
	}

	:root .award-grid--rest {
		display: flex;
		flex-wrap: wrap;
		justify-content: center;
		gap: 8px;
		margin-top: 10px;
	}

	.award-grid--rest .award-item {
		flex: 0 0 calc((100% - 16px) / 3);
	}

	:root .award-item__rank {
		font-size: 12px;
		padding: 4px 8px;
	}

	.award-item--top .award-item__rank {
		font-size: 13px;
		padding: 5px 10px;
	}

	:root .award-grid--top .award-item:first-child .award-item__rank {
		font-size: 15px;
		padding: 7px 14px;
	}

	.jbbc-lb__inner {
		padding: calc(52px + env(safe-area-inset-top)) 12px calc(44px + env(safe-area-inset-bottom));
	}

	.jbbc-lb__img {
		max-height: 58vh;
	}

	.jbbc-lb__nav {
		bottom: calc(4px + env(safe-area-inset-bottom));
		top: auto;
	}

	.jbbc-lb__nav--prev {
		left: 18%;
	}

	.jbbc-lb__nav--next {
		right: 18%;
	}

	.site-header {
		padding: 12px 20px;
	}

	.site-header__inner {
		gap: 16px;
	}

	.site-header__logo img {
		width: 110px !important;
	}

	.site-header__cta .wp-block-button__link {
		font-size: 12px;
		padding: 10px 14px;
	}

	.fv__logo img {
		width: min(320px, 80vw);
	}

	.fv__copy {
		font-size: 15px;
	}

	.fv__meta {
		flex-direction: column;
		gap: 10px;
	}

	hr.fv__divider {
		display: none;
	}

	.fv__venue {
		text-align: center;
	}

	.fv__date {
		font-size: 30px;
	}

	.fv__deadline {
		flex-direction: column;
		gap: 8px;
		padding: 12px 16px;
	}

	.fv__deadline-text {
		font-size: 13px;
	}

	.fv__cta {
		flex-direction: column;
		width: 100%;
	}

	.fv__cta .wp-block-button {
		width: 100%;
	}

	.fv__cta .wp-block-button__link {
		width: 100%;
	}

	.about__inner {
		flex-direction: column;
		gap: 28px;
	}

	.about__photo {
		width: 100%;
	}

	.about__title {
		font-size: 26px;
	}

	:root .judges__title,
	:root .honor__title,
	:root .overview__title,
	:root .news__title,
	.sponsor__title,
	.sponsor__cta-title {
		font-size: 22px;
	}

	.movie__title,
	.gallery__title {
		font-size: 22px;
	}

	:root .judges__sub,
	:root .honor__sub {
		font-size: 13px;
	}

	/* ゲストジャッジはSPでも横並び(2名なので2列に収まる) */
	.judges__guests {
		flex-direction: row;
		justify-content: center;
		gap: 16px;
	}

	.judges__guests .judges__guest-card {
		flex: 1 1 0;
		min-width: 0;
		max-width: 180px;
	}

	.judges__guests .judges__photo {
		width: 100%;
		height: auto;
		aspect-ratio: 1 / 1;
	}

	.judges__list {
		flex-wrap: wrap;
		gap: 20px;
		justify-content: center;
	}

	:root .judges__photo {
		width: 130px;
		height: 130px;
	}

	:root .honor__photos {
		flex-direction: column;
		gap: 24px;
	}

	/* SPは16:9で全体を表示(集合写真の顔切れ防止) */
	.honor__card img {
		height: auto;
		aspect-ratio: 16 / 9;
	}

	.stats {
		gap: 24px;
		padding: 24px 8px;
		flex-wrap: wrap;
		justify-content: space-around;
	}

	.stats__num {
		font-size: 30px;
	}

	.stats__num--m {
		font-size: 26px;
	}

	.stats__label,
	.stats__label--s {
		font-size: 10px;
	}

	.overview__row {
		flex-direction: column;
		align-items: flex-start;
		gap: 6px;
		padding: 14px 0;
	}

	.overview__label {
		width: auto;
	}

	.overview__timetable {
		flex-direction: column;
	}

	.cta-band__title {
		font-size: 28px;
	}

	.cta-band__deadline {
		font-size: 15px;
	}

	.gallery__grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 10px;
	}

	.news__row {
		flex-wrap: wrap;
		gap: 8px 12px;
	}

	.news__item-title {
		width: 100%;
	}

	.sponsor__lead {
		text-align: left;
	}

	.sponsor__lead p {
		font-size: 13px;
	}

	/* 表は横スクロール。媒体名列は固定して読み進められるようにする */
	.sponsor-matrix.sponsor-matrix.sponsor-matrix table {
		min-width: 680px;
	}

	.sponsor-matrix.sponsor-matrix.sponsor-matrix th,
	.sponsor-matrix.sponsor-matrix.sponsor-matrix td {
		padding: 10px 8px;
		font-size: 11px;
	}

	.sponsor-matrix.sponsor-matrix.sponsor-matrix tbody th,
	.sponsor-matrix.sponsor-matrix.sponsor-matrix thead th:first-child {
		width: 96px;
		font-size: 11px;
	}

	.sponsor-matrix__plan {
		font-size: 13px;
	}

	.sponsor-matrix__price {
		font-size: 16px;
	}

	.sponsor__logos--big {
		grid-template-columns: repeat(2, 1fr);
	}

	.sponsor__logos--small {
		grid-template-columns: repeat(3, 1fr);
	}

	.sponsor__logo--big {
		height: 80px;
	}

	.site-footer__top {
		flex-direction: column;
		gap: 20px;
	}

	/* SPは中央配置 */
	:root .site-footer__banner {
		margin-top: 24px;
		justify-content: center;
	}

	.site-footer .site-footer__nav.wp-block-navigation {
		padding-top: 0;
		gap: 12px 20px;
		justify-content: flex-start;
	}

	.site-header .site-header__nav.wp-block-navigation {
		gap: 16px;
	}
}

/* ---------------------------------------------------------------------------
 * 改行のブレークポイント出し分け
 *
 * Shift+Enter で入れた <br> を、幅に応じて無効化する。
 * ブロックスタイル(サイドバーの「スタイル」)から選ぶと is-style-* が付く。
 * inc/editor.php の register_block_style と対。
 * br { display:none } は改行そのものを打ち消すので、文はそのまま繋がる。
 * ------------------------------------------------------------------------- */

/*
 * ショートコード [br sp] / [br pc] 用。
 * 同じ文章の中で改行を混在させたいとき(ブロックスタイルはブロック単位のため)。
 * inc/shortcodes.php と対。
 */
@media (min-width: 768px) {
	:root .jbbc-br--sp {
		display: none;
	}
}

@media (max-width: 767px) {
	:root .jbbc-br--pc {
		display: none;
	}
}

/* スマホのみ改行 = 768px以上では改行しない */
@media (min-width: 768px) {
	:root .is-style-br-sp-only br {
		display: none;
	}
}

/* PCのみ改行 = 767px以下では改行しない */
@media (max-width: 767px) {
	:root .is-style-br-pc-only br {
		display: none;
	}
}

/*
 * ロゴ+キャッチコピーをまとめてH1として出すためのラッパー。
 * 縦積み・間隔・行間はブロック属性(layout / style)側で指定しているため、
 * ここでは見出しの既定スタイルの打ち消しだけを担当する。
 */
:root .fv__h1 {
	padding: 0;
	font-weight: inherit;
	width: 100%;
}

/* ---------------------------------------------------------------------------
 * 大会結果(年ごと)
 * ------------------------------------------------------------------------- */

/* 2回目以降は年ごとにセクションが積まれるため、境目に区切りを入れる */
:root .result-year + .result-year {
	border-top: 1px solid var(--jbbc-border-light);
}

:root .result-year__meta {
	color: var(--jbbc-gray);
	font-size: 14px;
	margin-top: -6px;
	margin-bottom: 28px;
}

/* TOPから結果ページへの導線。2回目以降のみ出る */
:root .gallery__archive-link {
	margin-top: 28px;
	text-align: center;
}

.gallery__archive-link a {
	color: var(--jbbc-gold);
	font-weight: 700;
	font-size: 14px;
	text-decoration: none;
	border-bottom: 1px solid currentColor;
	padding-bottom: 2px;
}

.gallery__archive-link a:hover,
.gallery__archive-link a:focus-visible {
	color: var(--jbbc-ink);
}
