/* ==========================================================================
   NOIR GOLD - タレント一覧・詳細
   ========================================================================== */

/* --- 絞り込み ------------------------------------------------------------ */
.c-filter {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px clamp(20px, 3vw, 44px);
	padding-bottom: 22px;
	margin-bottom: var(--sp-block);
	border-bottom: 1px solid var(--c-line-soft);
}

.c-filter__group {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px clamp(8px, 1.2vw, 18px);
}

.c-filter__group--end {
	margin-left: auto;
}

.c-filter__label {
	margin-right: 8px;
	color: var(--c-ink-faint);
	font-family: var(--ff-display);
	font-size: 0.6875rem;
	letter-spacing: 0.3em;
	text-transform: uppercase;
}

/* 五十音の行ボタンは正方形に近い箱にして、カテゴリ名と見分ける */
.c-filter__btn--kana {
	min-width: 34px;
	padding: 7px 0;
	font-family: var(--ff-mincho);
	font-size: 0.9375rem;
	letter-spacing: 0;
	text-align: center;
}

.c-filter__sort {
	padding: 7px 30px 7px 10px;
	background: transparent;
	border: 0;
	border-bottom: 1px solid var(--c-line-soft);
	border-radius: 0;
	color: var(--c-ink-dim);
	font-family: var(--ff-mincho);
	font-size: 0.8125rem;
	letter-spacing: 0.16em;
	appearance: none;
	background-image: linear-gradient(45deg, transparent 50%, var(--c-gold) 50%),
		linear-gradient(135deg, var(--c-gold) 50%, transparent 50%);
	background-position: calc(100% - 12px) calc(50% + 1px), calc(100% - 7px) calc(50% + 1px);
	background-size: 5px 5px, 5px 5px;
	background-repeat: no-repeat;
	transition: color 0.4s var(--ease), border-color 0.4s var(--ease);
	cursor: pointer;
}

.c-filter__sort:hover {
	color: var(--c-ink);
	border-bottom-color: var(--c-line);
}

.c-filter__sort option {
	background: var(--c-bg-2);
	color: var(--c-ink);
}

.c-filter__btn {
	position: relative;
	padding: 8px 4px;
	color: var(--c-ink-dim);
	font-family: var(--ff-mincho);
	font-size: 0.875rem;
	letter-spacing: 0.2em;
	transition: color 0.4s var(--ease);
}

.c-filter__btn::after {
	content: "";
	position: absolute;
	inset: auto 0 2px;
	height: 1px;
	background: var(--c-gold);
	transform: scaleX(0);
	transform-origin: right;
	transition: transform 0.5s var(--ease);
}

.c-filter__btn:hover {
	color: var(--c-ink);
}

.c-filter__btn[aria-pressed="true"] {
	color: var(--c-gold);
}

.c-filter__btn[aria-pressed="true"]::after,
.c-filter__btn:hover::after {
	transform: scaleX(1);
	transform-origin: left;
}

.c-filter__count {
	margin-left: auto;
	color: var(--c-ink-faint);
	font-family: var(--ff-display);
	font-size: 0.75rem;
	letter-spacing: 0.2em;
	font-variant-numeric: tabular-nums;
}

/* フィルタで隠れたカード */
.c-card.is-filtered {
	display: none;
}

/* --- ホバー中の大写しプレビュー ------------------------------------------ */
.c-preview {
	position: fixed;
	top: 0;
	left: 0;
	z-index: calc(var(--z-cursor) - 1);
	width: clamp(240px, 22vw, 340px);
	margin: 0 0 0 clamp(24px, 3vw, 48px);
	pointer-events: none;
	opacity: 0;
	transform: translate3d(-100vw, 0, 0);
	transition: opacity 0.45s var(--ease);
	will-change: transform;
}

.c-preview.is-visible {
	opacity: 1;
}

.c-preview img {
	width: 100%;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	border: 1px solid var(--c-line);
	box-shadow: 0 30px 80px rgba(0, 0, 0, 0.75);
}

.c-preview__name {
	display: block;
	margin-top: 12px;
	color: var(--c-gold);
	font-family: var(--ff-display);
	font-size: 0.75rem;
	letter-spacing: 0.28em;
	text-transform: uppercase;
}

/* プレビュー中はグリッド全体を沈め、ホバー中の 1 枚だけ残す */
.l-grid-talent.is-hovering .c-card {
	opacity: 0.32;
	transition: opacity 0.5s var(--ease);
}

.l-grid-talent.is-hovering .c-card.is-hovered {
	opacity: 1;
}

@media (max-width: 1023px), (hover: none), (pointer: coarse) {
	.c-preview {
		display: none;
	}

	.l-grid-talent.is-hovering .c-card {
		opacity: 1;
	}
}

.c-filter-empty {
	padding: clamp(48px, 8vw, 96px) 0;
	text-align: center;
	color: var(--c-ink-dim);
	font-family: var(--ff-mincho);
	letter-spacing: 0.2em;
}

/* --- 詳細ページ ---------------------------------------------------------- */
.p-talent {
	padding-top: var(--header-h);
}

.p-talent__hero {
	position: relative;
	padding-block: clamp(48px, 7vw, 110px) clamp(40px, 6vw, 90px);
	overflow: hidden;
}

/* 背景に流す巨大な英字。読ませるものではないので極端に淡くする */
.p-talent__ghost {
	position: absolute;
	/* パンくずと重ならない高さまで下げる */
	top: clamp(96px, 13vw, 210px);
	left: 50%;
	z-index: -1;
	white-space: nowrap;
	font-family: var(--ff-display);
	font-size: clamp(6rem, 19vw, 20rem);
	font-weight: 600;
	line-height: 0.8;
	letter-spacing: -0.02em;
	text-transform: uppercase;
	color: transparent;
	-webkit-text-stroke: 1px rgba(201, 162, 39, 0.13);
	transform: translateX(-50%);
	pointer-events: none;
	user-select: none;
}

/* -webkit-text-stroke 非対応時は淡い塗りで代用する */
@supports not (-webkit-text-stroke: 1px red) {
	.p-talent__ghost {
		color: rgba(201, 162, 39, 0.07);
	}
}

.p-talent__layout {
	display: grid;
	grid-template-columns: minmax(0, 0.92fr) minmax(0, 1fr);
	gap: clamp(32px, 5vw, 90px);
	align-items: start;
}

/* 大判ポートレートはスクロール中も残す */
.p-talent__portrait {
	position: sticky;
	top: calc(var(--header-h) + 32px);
}

.p-talent__portrait-inner {
	position: relative;
	aspect-ratio: 3 / 4;
	overflow: hidden;
	background: var(--c-bg-3);
}

.p-talent__portrait-inner img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: contrast(1.04);
}

.p-talent__portrait-inner::after {
	content: "";
	position: absolute;
	inset: 14px;
	border: 1px solid var(--c-line);
	pointer-events: none;
}

/* カテゴリだけ緞帳の赤を差す。ページ内で赤はここと CTA の 2 か所だけ */
.p-talent__cat {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 7px 16px 7px 14px;
	border: 1px solid var(--c-line-crimson);
	background: rgba(139, 30, 45, 0.16);
	color: #e2a3ac;
	font-family: var(--ff-display);
	font-size: 0.75rem;
	letter-spacing: var(--ls-label);
	text-transform: uppercase;
}

.p-talent__cat::before {
	content: "";
	width: 22px;
	height: 1px;
	background: var(--c-crimson-lt);
}

.p-talent__en {
	/* p の既定マージン（1.6em）が巨大な文字サイズに掛かると空白が破綻するため打ち消す */
	margin: clamp(20px, 3vw, 34px) 0 0;
	font-family: var(--ff-display);
	font-size: clamp(2.25rem, 5.4vw, 4.75rem);
	font-weight: 300;
	line-height: 1.02;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	color: var(--c-ink);
}

.p-talent__name {
	margin-top: 14px;
	font-family: var(--ff-mincho);
	font-size: clamp(1.125rem, 1.8vw, 1.625rem);
	letter-spacing: 0.34em;
	color: var(--c-gold-lt);
}

.p-talent__catch {
	max-width: 28em;
	margin-top: clamp(24px, 3vw, 40px);
	padding-left: 20px;
	border-left: 1px solid var(--c-line);
	font-family: var(--ff-mincho);
	font-size: clamp(1rem, 1.3vw, 1.25rem);
	line-height: 2;
	letter-spacing: 0.16em;
	color: var(--c-ink);
}

.p-talent__body {
	margin-top: clamp(32px, 4vw, 56px);
	color: var(--c-ink-dim);
}

.p-talent__block {
	margin-top: clamp(40px, 5vw, 72px);
}

.p-talent__blocktitle {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-bottom: 22px;
	color: var(--c-gold);
	font-family: var(--ff-display);
	font-size: 0.75rem;
	letter-spacing: var(--ls-label);
	text-transform: uppercase;
}

.p-talent__blocktitle::after {
	content: "";
	flex: 1;
	height: 1px;
	background: var(--c-line-soft);
}

/* 出演歴 */
.c-works {
	border-top: 1px solid var(--c-line-soft);
}

.c-works li {
	display: grid;
	grid-template-columns: 5.5em minmax(0, 1fr);
	gap: 16px;
	padding: 14px 4px;
	border-bottom: 1px solid var(--c-line-soft);
	font-size: 0.9375rem;
	line-height: 1.9;
}

.c-works__year {
	color: var(--c-gold);
	font-family: var(--ff-display);
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.1em;
}

/* 前後のタレント */
.p-talent__nav {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	border-top: 1px solid var(--c-line-soft);
	border-bottom: 1px solid var(--c-line-soft);
}

.p-talent__nav a {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: clamp(24px, 3vw, 40px) clamp(16px, 2vw, 32px);
	font-family: var(--ff-mincho);
	letter-spacing: 0.16em;
	transition: background-color 0.5s var(--ease);
}

.p-talent__nav a:hover {
	background: var(--c-bg-3);
}

.p-talent__nav a:last-child {
	justify-content: flex-end;
	text-align: right;
	border-left: 1px solid var(--c-line-soft);
}

.p-talent__nav small {
	display: block;
	color: var(--c-ink-faint);
	font-family: var(--ff-display);
	font-size: 0.6875rem;
	letter-spacing: 0.3em;
	text-transform: uppercase;
}

@media (max-width: 1024px) {
	.p-talent__layout {
		grid-template-columns: 1fr;
	}

	.p-talent__portrait {
		position: static;
		max-width: 480px;
	}
}

@media (max-width: 480px) {
	.c-works li {
		grid-template-columns: 1fr;
		gap: 2px;
	}
}
