/*
Theme Name: Project Lab
Description: 静岡大学 ピアノとウェルビーイング研究所のためのオリジナルテーマ。NEWS・EVENT（公演日を過ぎると自動でアーカイブ）・BLOG（筆者とメンバー情報が連動）・INTERVIEW・ABOUT（メンバー・研究実績）。色・フォントは「外観 > カスタマイズ」で変更可能。jQuery・CSSアニメーション不使用。
Version: 2.2.0
Requires at least: 6.3
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: plab
*/

/* ==========================================================================
   Tokens — 色やフォントはここを変えるだけで全体に反映されます
   ========================================================================== */
:root {
	--brand: #19549e;        /* ロゴ色：見出し・リンク・フッター */
	--brand-dark: #123d73;
	--bg: #e3e8ec;           /* ベース（背景） */
	--surface: #ffffff;      /* パネル */
	--surface-2: #eef2f5;    /* 日付ブロックなど */
	--ink: #2e3129;          /* 本文 */
	--muted: #4f554d;        /* 補足文字 */
	--line: #dce2e7;         /* 区切り線 */
	--accent: #883b3a;       /* アクセント：ラベル・曜日 */
	--placeholder: #c5d0da;
	--font: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic Medium", "Yu Gothic", Meiryo, sans-serif;
	--font-en: "Playfair Display", "Times New Roman", serif;
	--wrap: 1200px;
	--gutter: 16px;
	--section: 64px;
	--panel-pad: 24px 20px 12px;
}
@media (min-width: 900px) {
	:root { --gutter: 32px; --section: 88px; --panel-pad: 40px 40px 24px; }
}

/* ==========================================================================
   Base
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	background: var(--bg);
	color: var(--ink);
	font-family: var(--font);
	font-size: 15px;
	line-height: 1.85;
	letter-spacing: .03em;
	overflow-wrap: anywhere;
}
@media (min-width: 900px) { body { font-size: 16px; } }
img, video, iframe { max-width: 100%; }
img { height: auto; vertical-align: middle; }
a { color: var(--brand); text-decoration: none; }
a:hover { color: var(--brand-dark); text-decoration: underline; text-underline-offset: .25em; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; }
h1, h2, h3, h4 { line-height: 1.5; font-weight: 700; }
ul { margin: 0; padding: 0; list-style: none; }
address { font-style: normal; }
.entry-content ul { list-style: disc; padding-left: 1.4em; }
.entry-content ol { padding-left: 1.6em; }

.wrap { width: 100%; max-width: calc(var(--wrap) + var(--gutter) * 2); margin: 0 auto; padding: 0 var(--gutter); }
.wrap--narrow { max-width: calc(920px + var(--gutter) * 2); }

.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link:focus {
	clip: auto; width: auto; height: auto; margin: 0; z-index: 1000;
	top: 8px; left: 8px; padding: 8px 16px; background: var(--brand); color: #fff;
}
.icon-arrow { flex: none; }

/* ==========================================================================
   Header / Navigation
   ========================================================================== */
.site-header { background: var(--surface); border-bottom: 1px solid #cdd5dc; }
.site-header__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 40px; padding-top: 12px; padding-bottom: 12px; }
@media (min-width: 900px) { .site-header__inner { padding-top: 22px; padding-bottom: 22px; } }
.site-title { margin: 0; line-height: 0; }
.site-title a { display: block; }
.site-title .custom-logo { width: auto; height: 40px; }
@media (min-width: 900px) { .site-title .custom-logo { height: 60px; } }

.global-nav .menu { display: flex; flex-wrap: wrap; gap: 6px 30px; }
.global-nav .menu a { display: inline-block; padding: 4px 0; color: var(--ink); font-family: var(--font-en); font-size: 16px; letter-spacing: .08em; border-bottom: 2px solid transparent; }
.global-nav .menu a:hover { color: var(--brand); text-decoration: none; border-bottom-color: currentColor; }
.global-nav .current-menu-item > a,
.global-nav .current_page_item > a { color: var(--brand); border-bottom-color: var(--brand); }
.global-nav__sns { display: none; }

.menu-toggle {
	display: none; position: relative; z-index: 110; flex: none;
	flex-direction: column; align-items: center; justify-content: center; gap: 5px;
	width: 52px; height: 52px; padding: 0; border: 0; cursor: pointer;
	background: var(--brand); color: #fff; font: 10px/1 var(--font-en); letter-spacing: .1em;
}
.menu-toggle__close, .menu-toggle__x { display: none; }

@media (max-width: 1079px) {
	.js .menu-toggle { display: flex; }
	.js .global-nav { display: none; }
	.js body.is-menu-open { overflow: hidden; }
	.js .is-menu-open .global-nav {
		display: block; position: fixed; inset: 0; z-index: 100; overflow-y: auto;
		background: var(--surface); padding: 96px var(--gutter) 48px;
	}
	.js .is-menu-open .global-nav .menu { flex-direction: column; gap: 4px; }
	.js .is-menu-open .global-nav .menu a { font-size: 22px; padding: 8px 0; }
	.js .is-menu-open .global-nav__sns { display: block; margin-top: 40px; }
	.is-menu-open .menu-toggle__open, .is-menu-open .menu-toggle__bars { display: none; }
	.is-menu-open .menu-toggle__close, .is-menu-open .menu-toggle__x { display: inline; }
}

/* ==========================================================================
   Top page
   ========================================================================== */
.hero__visual img { display: block; width: 100%; height: auto; max-height: 72vh; object-fit: cover; }
.hero__band { background: var(--surface); }
.hero__inner { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 20px 48px; padding-top: 28px; padding-bottom: 32px; }
@media (min-width: 900px) { .hero__inner { padding-top: 44px; padding-bottom: 48px; } }
.hero__text { flex: 1 1 520px; min-width: 0; }
.hero__catch { margin: 0 0 10px; font-size: clamp(21px, 2.4vw, 28px); font-weight: 500; line-height: 1.6; letter-spacing: .07em; color: var(--brand); }
.hero__lead { margin: 0; color: var(--muted); }

.top-columns { display: grid; grid-template-columns: 1fr; gap: 24px; padding-top: 40px; align-items: start; }
@media (min-width: 900px) {
	.top-columns { grid-template-columns: 1fr 1fr; gap: 32px; padding-top: 72px; }
}

.panel { background: var(--surface); padding: var(--panel-pad); }

.section { padding-top: var(--section); }
.site-main > .section:last-child, .site-main > .wrap:last-child { padding-bottom: var(--section); }

.section-head {
	display: flex; align-items: flex-end; justify-content: space-between; gap: 16px;
	padding-bottom: 14px; border-bottom: 2px solid var(--brand);
}
.section-head__title { margin: 0; line-height: 1.1; }
.section-head__en { display: block; font-family: var(--font-en); font-size: 30px; font-weight: 500; letter-spacing: .05em; color: var(--brand); }
.section-head__sub { display: block; margin-top: 8px; font-size: 12px; font-weight: 500; letter-spacing: .12em; color: var(--muted); }
@media (min-width: 900px) {
	.section-head { padding-bottom: 18px; }
	.section-head__en { font-size: 38px; }
	.section-head__sub { font-size: 13px; }
}
.more-link { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-family: var(--font-en); font-size: 14px; letter-spacing: .1em; white-space: nowrap; }

.section .card-grid { margin-top: 32px; }
.empty { margin: 24px 0; color: var(--muted); }

/* ==========================================================================
   Labels / buttons
   ========================================================================== */
.label {
	display: inline-block; border: 1px solid var(--accent); color: var(--accent);
	font-size: 11px; line-height: 1; letter-spacing: .08em; padding: 5px 9px; vertical-align: middle;
}
.label--fill { background: var(--accent); color: #fff; }

.button,
.wpcf7-submit,
.wp-block-button__link {
	display: inline-flex; align-items: center; justify-content: center; gap: 12px;
	min-height: 48px; padding: 0 32px; cursor: pointer;
	border: 1px solid var(--brand); border-radius: 0; background: var(--surface); color: var(--brand);
	font-family: var(--font-en); font-size: 15px; letter-spacing: .1em; text-decoration: none;
}
.button:hover, .wpcf7-submit:hover, .wp-block-button__link:hover { background: var(--brand); color: #fff; text-decoration: none; }
.button--fill, .wpcf7-submit { background: var(--brand); color: #fff; font-family: var(--font); letter-spacing: .12em; }
.button--fill:hover, .wpcf7-submit:hover { background: var(--brand-dark); border-color: var(--brand-dark); }

/* ==========================================================================
   NEWS list
   ========================================================================== */
.news-item { border-bottom: 1px solid var(--line); }
.news-item a { display: block; padding: 16px 0; color: var(--ink); }
.news-item a:hover { text-decoration: none; }
.news-item a:hover .news-item__title { color: var(--brand); text-decoration: underline; text-underline-offset: .25em; }
.news-item__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.news-item__meta time { font-family: var(--font-en); font-size: 15px; color: var(--muted); letter-spacing: .06em; font-variant-numeric: lining-nums; }
.news-item__title { display: block; margin-top: 4px; }

.news-list--page { background: var(--surface); padding: 4px 20px; }
@media (min-width: 700px) {
	.news-list--page { padding: 8px 40px; }
	.news-list--page .news-item a { display: grid; grid-template-columns: 15em 1fr; gap: 16px; padding: 22px 0; }
	.news-list--page .news-item__title { margin-top: 0; }
}

/* ==========================================================================
   SCHEDULE list
   ========================================================================== */
.concert-item { border-bottom: 1px solid var(--line); }
.concert-item a { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 14px; padding: 16px 0; color: var(--ink); }
.concert-item a:hover { text-decoration: none; }
.concert-item a:hover .concert-item__title { color: var(--brand); text-decoration: underline; text-underline-offset: .25em; }
.concert-item__body { display: block; min-width: 0; }
.concert-item__title { display: block; margin-top: 6px; font-size: 15px; font-weight: 700; line-height: 1.6; }
.concert-item__body > .concert-item__title:first-child { margin-top: 0; }
.concert-item__venue { display: flex; align-items: center; gap: 6px; margin-top: 2px; font-size: 13px; color: var(--muted); }
.concert-item__venue svg { flex: none; }

.date-block {
	display: block; align-self: start; text-align: center; padding: 8px 0 6px; background: var(--surface-2);
	font-family: var(--font-en); font-variant-numeric: lining-nums; line-height: 1.15;
}
.date-block__y { display: block; font-size: 11px; color: var(--muted); letter-spacing: .08em; }
.date-block__md { display: block; font-size: 23px; font-weight: 500; color: var(--brand); }
.date-block__wd { display: block; margin-top: 3px; font-size: 11px; color: var(--accent); letter-spacing: .14em; }
.date-block.is-empty .date-block__md { font-family: var(--font); font-size: 13px; color: var(--muted); padding: 10px 0; }
.concert-item.is-past .date-block__md { color: var(--muted); }

@media (min-width: 900px) {
	.concert-item a { grid-template-columns: 96px minmax(0, 1fr); gap: 20px; padding: 20px 0; }
	.concert-item__title { font-size: 16px; }
	.date-block { padding: 10px 0 8px; }
	.date-block__y, .date-block__wd { font-size: 12px; }
	.date-block__md { font-size: 28px; }
}

.concert-list--page { background: var(--surface); padding: 4px 20px; }
@media (min-width: 700px) { .concert-list--page { padding: 8px 40px; } }

/* ==========================================================================
   Filters (ALL / ARCHIVE dropdowns) — <details> なのでJSなしでも動作
   ========================================================================== */
.filters, .list-tools { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 12px 16px; margin-bottom: 32px; }
.dropdown { position: relative; }
.dropdown summary {
	position: relative; list-style: none; cursor: pointer; user-select: none;
	display: flex; align-items: center; min-width: 220px; min-height: 48px; padding: 0 44px 0 18px;
	border: 1px solid var(--brand); background: var(--surface); color: var(--brand);
	font-family: var(--font-en); font-size: 14px; letter-spacing: .1em;
}
.dropdown summary::-webkit-details-marker { display: none; }
.dropdown summary::after {
	content: ""; position: absolute; right: 18px; top: 50%;
	width: 7px; height: 7px; margin-top: -6px;
	border-right: 1.5px solid; border-bottom: 1.5px solid; transform: rotate(45deg);
}
.dropdown[open] summary::after { margin-top: -2px; transform: rotate(-135deg); }
.dropdown ul {
	position: absolute; left: 0; top: 100%; z-index: 20; min-width: 100%;
	background: var(--surface); border: 1px solid var(--brand); border-top: 0; padding: 6px 0;
}
.dropdown li a { display: block; padding: 10px 18px; white-space: nowrap; font-size: 14px; color: var(--ink); }
.dropdown li a:hover { background: var(--surface-2); color: var(--brand); text-decoration: none; }
.dropdown li a[aria-current] { font-weight: 700; color: var(--brand); }

.list-heading { margin: 0; padding: 0 0 12px; border-bottom: 2px solid var(--brand); font-size: 16px; letter-spacing: .08em; color: var(--brand); }

/* ==========================================================================
   Cards (INTERVIEW / ACTIVITY)
   ========================================================================== */
.card-grid { display: grid; grid-template-columns: 1fr; gap: 20px; }
@media (min-width: 600px) { .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; } }
@media (min-width: 960px) { .card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; } }

.card { background: var(--surface); }
.card a { display: block; height: 100%; color: var(--ink); }
.card a:hover { text-decoration: none; }
.card a:hover .card__title { color: var(--brand); text-decoration: underline; text-underline-offset: .25em; }
.card__thumb { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--placeholder); }
.card__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.card__noimage { display: flex; align-items: center; justify-content: center; height: 100%; background: var(--surface-2); }
.card__noimage img { width: 96px; height: 96px; opacity: .35; object-fit: contain; }
.card__body { display: block; padding: 16px 18px 20px; }
@media (min-width: 900px) { .card__body { padding: 20px 22px 24px; } }
.card__person { display: block; font-size: 13px; font-weight: 500; color: var(--brand); }
.card__profile { margin-left: 10px; font-weight: 400; color: var(--muted); }
.card__title { display: block; margin-top: 4px; font-size: 15px; font-weight: 700; line-height: 1.65; }
@media (min-width: 900px) { .card__title { font-size: 16px; } }
.card__date { display: block; margin-top: 8px; font-family: var(--font-en); font-size: 13px; color: var(--muted); font-variant-numeric: lining-nums; }

/* ==========================================================================
   Page head
   ========================================================================== */
.page-head { padding: 40px 0 28px; }
@media (min-width: 900px) { .page-head { padding: 72px 0 44px; } }
.page-head__title { margin: 0; line-height: 1.1; font-weight: 400; }
.page-head__en { display: block; font-family: var(--font-en); font-size: clamp(34px, 5vw, 52px); font-weight: 500; letter-spacing: .04em; color: var(--brand); }
.page-head__sub { display: block; margin-top: 12px; font-size: 13px; font-weight: 500; letter-spacing: .12em; color: var(--muted); }

/* ==========================================================================
   Single: article panel (NEWS / INTERVIEW / ACTIVITY / 資料 / 公演 / 固定ページ)
   ========================================================================== */
.article { max-width: calc(960px + var(--gutter) * 2); }
.site-main > .article, .site-main > .event, .site-main > .page-body { padding-bottom: var(--section); }
.article__panel { background: var(--surface); padding: 28px 20px 36px; }
@media (min-width: 900px) { .article__panel { padding: 56px 64px 64px; } }

.article__head, .event__head { padding-bottom: 24px; margin-bottom: 32px; border-bottom: 2px solid var(--brand); }
.article__meta, .event__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin: 0; }
.article__date { font-family: var(--font-en); font-size: 15px; color: var(--muted); letter-spacing: .06em; font-variant-numeric: lining-nums; }
.article__title, .event__title { margin: 10px 0 0; font-size: clamp(20px, 2.6vw, 27px); letter-spacing: .04em; line-height: 1.55; }
.article__person { margin: 14px 0 0; color: var(--brand); font-weight: 700; }
.article__person span { margin-left: .8em; color: var(--muted); font-size: 14px; font-weight: 400; }
.article__eyecatch { margin: 0 0 40px; }
.article__eyecatch img { width: 100%; }

.event-date { font-family: var(--font-en); letter-spacing: .04em; color: var(--brand); font-variant-numeric: lining-nums; }
.event-date__day { font-size: clamp(24px, 3.4vw, 32px); font-weight: 500; }
.event-date__week { font-size: 14px; color: var(--accent); letter-spacing: .12em; }
.event-date.is-empty { font-family: var(--font); font-size: 14px; color: var(--muted); }
.status { display: inline-block; padding: 4px 10px; font-size: 12px; line-height: 1.2; letter-spacing: .08em; }
.status--past { background: var(--muted); color: #fff; }

.event__body { display: grid; gap: 32px; margin-bottom: 48px; }
@media (min-width: 900px) {
	.event__body.has-thumb { grid-template-columns: minmax(0, 360px) 1fr; gap: 48px; align-items: start; }
}
.event__flyer { margin: 0; }
.event__flyer img { width: 100%; border: 1px solid var(--line); }
.info-table { display: grid; grid-template-columns: 6.5em 1fr; margin: 0; border-top: 1px solid var(--line); }
.info-table dt, .info-table dd { margin: 0; padding: 14px 0; border-bottom: 1px solid var(--line); }
.info-table dt { font-size: 13px; font-weight: 500; color: var(--brand); padding-right: 12px; }
.event__ticket { margin: 28px 0 0; }

/* ==========================================================================
   ABOUT: member / archive
   ========================================================================== */
.about-intro { max-width: 960px; margin: 0 auto; }
.anchor-nav { display: flex; flex-wrap: wrap; gap: 8px 10px; margin: 24px 0 0; }
.anchor-nav a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 16px; border: 1px solid var(--brand); background: var(--surface); font-size: 13px; }
.anchor-nav a:hover { background: var(--brand); color: #fff; text-decoration: none; }

.member-group { padding-top: 40px; scroll-margin-top: 16px; }
.member-group__title { margin: 0 0 16px; padding-left: 12px; border-left: 4px solid var(--accent); font-size: 18px; letter-spacing: .08em; line-height: 1.4; }
.member-list { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 900px) { .member-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; } }
.member { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 16px; align-items: start; background: var(--surface); padding: 20px; }
@media (min-width: 900px) { .member { grid-template-columns: 120px minmax(0, 1fr); gap: 24px; padding: 28px; } }
.member__photo { aspect-ratio: 1; overflow: hidden; background: var(--surface-2); }
.member__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.member__photo img.is-placeholder { object-fit: contain; padding: 16%; opacity: .35; }
.member__name { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 0; font-size: 18px; font-weight: 700; letter-spacing: .08em; line-height: 1.5; }
.member__aff { margin: 4px 0 0; font-size: 13px; color: var(--muted); line-height: 1.7; }
.member__dl { margin: 12px 0 0; font-size: 14px; line-height: 1.75; }
.member__dl dt { margin-top: 8px; font-size: 12px; font-weight: 700; color: var(--brand); letter-spacing: .08em; }
.member__dl dt:first-child { margin-top: 0; }
.member__dl dd { margin: 0; }
.member__links { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin-top: 14px; font-size: 13px; }
.member__ext::after { content: " \2197"; }
.member__blog { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px; background: var(--brand); color: #fff; }
.member__blog:hover { background: var(--brand-dark); color: #fff; text-decoration: none; }
@media (max-width: 599px) {
	.member { grid-template-columns: 72px minmax(0, 1fr); }
	.member__dl, .member__links { grid-column: 1 / -1; }
}
#member, #archive { scroll-margin-top: 16px; }

/* ==========================================================================
   Forms (Contact Form 7)
   ========================================================================== */
input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="search"], textarea, select {
	width: 100%; max-width: 100%; min-height: 48px; padding: 12px 14px;
	border: 1px solid #b9c4ce; border-radius: 0; background: var(--surface); color: var(--ink);
	font: inherit;
}
input:focus, textarea:focus, select:focus { outline: 2px solid var(--brand); outline-offset: 0; border-color: var(--brand); }
textarea { min-height: 200px; resize: vertical; }
.wpcf7 form p { margin: 0 0 28px; }
.wpcf7 label { display: block; font-size: 15px; font-weight: 500; }
.wpcf7 .req { color: var(--accent); margin-left: 4px; font-size: 12px; }
.wpcf7-acceptance .wpcf7-list-item { margin: 0; }
.wpcf7-not-valid-tip { font-size: 13px; color: var(--accent); }
.wpcf7 form .wpcf7-response-output { margin: 24px 0 0; padding: 12px 16px; }

/* ==========================================================================
   Entry content (本文)
   ========================================================================== */
.entry-content > * { margin-top: 0; margin-bottom: 1.6em; }
.entry-content > *:last-child { margin-bottom: 0; }
.entry-content h2 { margin-top: 2.4em; font-size: 21px; color: var(--brand); padding-bottom: .5em; border-bottom: 1px solid var(--line); }
.entry-content h3 { margin-top: 2em; font-size: 18px; padding-left: 12px; border-left: 4px solid var(--brand); line-height: 1.5; }
.entry-content h4 { margin-top: 1.8em; font-size: 16px; }
.entry-content > h2:first-child, .entry-content > h3:first-child { margin-top: 0; }
.entry-content a { text-decoration: underline; text-underline-offset: .25em; }
.entry-content a.wp-block-button__link { text-decoration: none; }
.entry-content blockquote { margin-left: 0; margin-right: 0; padding: 4px 0 4px 20px; border-left: 3px solid var(--line); color: var(--muted); }
.entry-content figure { margin-left: 0; margin-right: 0; }
.entry-content figcaption { font-size: 13px; color: var(--muted); margin-top: 8px; }
.entry-content table { width: 100%; border-collapse: collapse; font-size: 14px; }
.entry-content th, .entry-content td { padding: 12px; border: 1px solid var(--line); text-align: left; vertical-align: top; }
.entry-content th { background: var(--surface-2); }
.entry-content hr { border: 0; border-top: 1px solid var(--line); margin: 3em 0; }
.entry-content .wp-block-table { overflow-x: auto; }

/* インタビュー：段落スタイル「聞き手（Q）」 */
.entry-content .is-style-interviewer { color: var(--brand); font-weight: 700; }
.entry-content .is-style-interviewer::before { content: "\2014\2014 "; }

/* LINKページ：リストをリンク一覧として表示 */
.page-link .entry-content ul { list-style: none; padding: 0; border-top: 1px solid var(--line); }
.page-link .entry-content li { padding: 14px 0; border-bottom: 1px solid var(--line); }
.page-link .entry-content li a::after { content: " \2197"; text-decoration: none; display: inline-block; }

.entry-content .alignwide { max-width: 1120px; }
.alignleft { float: left; margin: 0 1.6em 1em 0; }
.alignright { float: right; margin: 0 0 1em 1.6em; }
.aligncenter { margin-left: auto; margin-right: auto; text-align: center; }

/* ==========================================================================
   Navigation helpers
   ========================================================================== */
.pagination { margin-top: 40px; }
.pagination .nav-links { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; }
.page-numbers {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 44px; height: 44px; padding: 0 8px; border: 1px solid #b9c4ce; background: var(--surface);
	font-family: var(--font-en); font-size: 14px; color: var(--ink);
}
.page-numbers.current { background: var(--brand); border-color: var(--brand); color: #fff; }
.page-numbers.dots { border: 0; background: none; }
a.page-numbers:hover { border-color: var(--brand); color: var(--brand); text-decoration: none; }

.post-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 24px; font-size: 14px; }
.post-nav a { display: block; padding: 16px 20px; background: var(--surface); color: var(--ink); }
.post-nav a:hover { color: var(--brand); }
.post-nav span { display: block; font-family: var(--font-en); font-size: 12px; letter-spacing: .14em; color: var(--brand); }
.post-nav__next { text-align: right; grid-column: 2; }

.back-link { margin: 40px 0 0; text-align: center; }
.back-link a { display: inline-flex; align-items: center; min-height: 48px; padding: 0 40px; border: 1px solid var(--brand); background: var(--surface); font-size: 14px; letter-spacing: .1em; }
.back-link a:hover { background: var(--brand); color: #fff; text-decoration: none; }

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer { background: var(--brand); color: #fff; }
.site-footer a { color: #fff; }
.site-footer__inner { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 32px 48px; padding-top: 48px; padding-bottom: 36px; }
.site-footer__info { flex: 1 1 360px; min-width: 0; }
.site-footer__name { margin: 0; font-size: 18px; font-weight: 500; letter-spacing: .06em; line-height: 1.6; }
.site-footer__name, .site-footer__name * { font-size: 18px; }
.site-footer__name span { display: inline-block; }
.site-footer__contact { display: flex; flex-direction: column; margin-top: 14px; font-size: 13px; line-height: 1.8; }
.footer-nav { flex: 1 1 360px; min-width: 0; }
.footer-nav .menu { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; font-family: var(--font-en); font-size: 15px; letter-spacing: .08em; }
.footer-nav .menu a { display: block; padding: 8px 0; }
@media (min-width: 900px) { .footer-nav .menu { display: flex; flex-wrap: wrap; gap: 8px 28px; } .footer-nav .menu a { padding: 0; } }
.sns { display: flex; flex-wrap: wrap; gap: 8px 20px; margin-top: 16px; font-family: var(--font-en); font-size: 13px; letter-spacing: .08em; }
.global-nav .sns a { color: var(--brand); }
.site-footer__bottom { border-top: 1px solid rgba(255, 255, 255, .3); }
.site-footer__bottom .wrap { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 14px; padding-bottom: 14px; }
.copyright { margin: 0; font-family: var(--font-en); font-size: 12px; letter-spacing: .06em; }
.pagetop { display: inline-flex; align-items: center; min-height: 44px; font-family: var(--font-en); font-size: 12px; letter-spacing: .14em; white-space: nowrap; }
.pagetop::before { content: "\2191\00a0"; }

/* ==========================================================================
   v2: 一覧の絞り込み（タブ・プルダウン）
   ========================================================================== */
.list-tools .tabs + .dropdown { margin-left: auto; }
.dropdown__prefix { margin-right: 10px; font-family: var(--font); font-size: 11px; letter-spacing: .06em; color: var(--muted); }
.tabs { flex: 1 1 auto; min-width: 0; }
.tabs ul { display: flex; flex-wrap: wrap; gap: 8px; }
.tabs a {
	display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px;
	border: 1px solid var(--brand); background: var(--surface); color: var(--brand); font-size: 14px; letter-spacing: .06em;
}
.tabs a:hover { background: var(--surface-2); text-decoration: none; }
.tabs a[aria-current] { background: var(--brand); color: #fff; }
.list-heading { margin-bottom: 0; }
.list-heading__count { margin-left: 4px; font-size: 13px; font-weight: 400; color: var(--muted); }
.empty--panel { margin: 0; padding: 32px 24px; background: var(--surface); }
.empty--panel a { text-decoration: underline; }

.news-list--excerpt .news-item__excerpt { display: block; margin-top: 6px; font-size: 14px; color: var(--muted); line-height: 1.75; }
.news-item__text { display: block; min-width: 0; }

/* ==========================================================================
   v2: BLOG
   ========================================================================== */
.blog-list { background: var(--surface); padding: 4px 20px; }
.blog-item { border-bottom: 1px solid var(--line); }
.blog-item:last-child { border-bottom: 0; }
.blog-item a { display: grid; grid-template-columns: 1fr; gap: 14px; padding: 20px 0; color: var(--ink); }
.blog-item a:hover { text-decoration: none; }
.blog-item a:hover .blog-item__title { color: var(--brand); text-decoration: underline; text-underline-offset: .25em; }
.blog-item__thumb { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--placeholder); }
.blog-item__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.blog-item__body { display: block; min-width: 0; }
.blog-item__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.blog-item__meta time { font-family: var(--font-en); font-size: 15px; color: var(--muted); font-variant-numeric: lining-nums; }
.blog-item__title { display: block; margin-top: 8px; font-size: 17px; font-weight: 700; line-height: 1.6; }
.blog-item__excerpt { display: block; margin-top: 6px; font-size: 14px; color: var(--muted); line-height: 1.8; }
@media (min-width: 700px) {
	.blog-list { padding: 8px 40px; }
	.blog-item a { grid-template-columns: 240px minmax(0, 1fr); gap: 32px; padding: 28px 0; }
	.blog-item__title { font-size: 19px; }
}

.writer-chip { display: flex; align-items: center; gap: 10px; margin-top: 12px; font-size: 13px; font-weight: 500; color: var(--brand); }
.writer-chip--head { margin: 14px 0 0; font-size: 14px; }
.avatar-img { display: inline-block; flex: none; border-radius: 50%; object-fit: cover; background: var(--placeholder); }
.card__label { margin-bottom: 8px; }

.ref-event {
	display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 16px; align-items: center;
	margin-bottom: 32px; padding: 14px 16px; background: var(--surface-2); color: var(--ink);
}
.ref-event:hover { text-decoration: none; }
.ref-event:hover .ref-event__title { color: var(--brand); text-decoration: underline; }
.ref-event .date-block { background: var(--surface); }
.ref-event__body { display: block; min-width: 0; }
.ref-event__label { display: block; font-size: 12px; font-weight: 700; color: var(--brand); letter-spacing: .08em; }
.ref-event__title { display: block; font-weight: 700; line-height: 1.5; }
.ref-event__venue { display: block; font-size: 13px; color: var(--muted); }
.ref-event__more { display: none; align-items: center; gap: 8px; font-size: 13px; color: var(--brand); white-space: nowrap; }
@media (min-width: 700px) {
	.ref-event { grid-template-columns: 96px minmax(0, 1fr) auto; gap: 20px; padding: 16px 20px; }
	.ref-event__more { display: inline-flex; }
}

.writer-card { margin-top: 24px; background: var(--surface); border-top: 4px solid var(--brand); padding: 24px 20px; }
@media (min-width: 900px) { .writer-card { padding: 36px 64px 40px; } }
.writer-card__head { display: flex; align-items: baseline; gap: 12px; margin: 0 0 20px; font-size: 13px; font-weight: 500; color: var(--muted); letter-spacing: .08em; }
.writer-card__en { font-family: var(--font-en); font-size: 15px; font-weight: 500; letter-spacing: .16em; color: var(--brand); text-transform: uppercase; }
.writer-card__inner { display: grid; grid-template-columns: 80px minmax(0, 1fr); gap: 16px; align-items: start; }
@media (min-width: 700px) { .writer-card__inner { grid-template-columns: 140px minmax(0, 1fr); gap: 32px; } }
.writer-card__photo { aspect-ratio: 1; overflow: hidden; background: var(--surface-2); }
.writer-card__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.writer-card__photo img.is-placeholder { object-fit: contain; padding: 16%; opacity: .35; }
.writer-card__name { margin: 0; font-size: 19px; font-weight: 700; letter-spacing: .08em; line-height: 1.5; }
.writer-card__aff { margin: 2px 0 0; font-size: 13px; color: var(--muted); }
.writer-card__links { display: flex; flex-wrap: wrap; gap: 10px; margin: 18px 0 0; }
.writer-card__links .button { min-height: 46px; padding: 0 22px; font-family: var(--font); font-size: 14px; letter-spacing: .04em; }
@media (max-width: 599px) {
	.writer-card .member__dl, .writer-card__links { grid-column: 1 / -1; }
	.writer-card__links .button { flex: 1 1 100%; }
}

.reviews { margin-top: 48px; padding-top: 24px; border-top: 2px solid var(--brand); }
.reviews__head { margin: 0 0 12px; font-size: 16px; color: var(--brand); letter-spacing: .08em; }
.reviews li { border-bottom: 1px solid var(--line); }
.reviews a { display: flex; align-items: center; gap: 14px; padding: 14px 0; color: var(--ink); }
.reviews__title { display: block; font-weight: 700; line-height: 1.6; }
.reviews__by { display: block; font-size: 13px; color: var(--brand); }

/* ==========================================================================
   v2: ABOUT / トップ
   ========================================================================== */
.anchor-nav--top { margin: 0 0 24px; }
.anchor-nav--top a { font-family: var(--font-en); font-size: 14px; letter-spacing: .1em; gap: 10px; }
.anchor-nav--top a span { font-family: var(--font); font-size: 12px; letter-spacing: .04em; color: var(--muted); }
.anchor-nav--top a:hover span { color: #fff; }
#research { scroll-margin-top: 16px; }
.member { scroll-margin-top: 16px; }
.about-section .news-list--page { margin-top: 0; }
.top-columns--single { grid-template-columns: 1fr; }

/* ==========================================================================
   v2.1: 楽譜モチーフ（細線＋太線＝終止線、五線）／仮メインビジュアル
   線の色はキーカラー（--brand）に連動します.
   ========================================================================== */
:root { --bar-thin: 1px; --bar-gap: 3px; --bar-thick: 4px; }

/* 細線＋太線（楽譜の終止線のように、細い線の下に太い線） */
.section-head, .list-heading, .article__head, .event__head {
	border-bottom: 0;
	padding-bottom: calc(14px + var(--bar-thin) + var(--bar-gap) + var(--bar-thick));
	background-image:
		linear-gradient(var(--brand), var(--brand)),
		linear-gradient(var(--brand), var(--brand));
	background-repeat: no-repeat;
	background-size: 100% var(--bar-thin), 100% var(--bar-thick);
	background-position: left bottom calc(var(--bar-gap) + var(--bar-thick)), left bottom;
}
.list-heading { padding-bottom: calc(12px + var(--bar-thin) + var(--bar-gap) + var(--bar-thick)); }
.article__head, .event__head { padding-bottom: calc(24px + var(--bar-thin) + var(--bar-gap) + var(--bar-thick)); }
@media (min-width: 900px) { .section-head { padding-bottom: calc(18px + var(--bar-thin) + var(--bar-gap) + var(--bar-thick)); } }

/* 上側を太線＋細線に（演奏会評など区切りの頭） */
.reviews {
	border-top: 0;
	padding-top: calc(24px + var(--bar-thin) + var(--bar-gap) + var(--bar-thick));
	background-image: linear-gradient(var(--brand), var(--brand)), linear-gradient(var(--brand), var(--brand));
	background-repeat: no-repeat;
	background-size: 100% var(--bar-thick), 100% var(--bar-thin);
	background-position: left top, left top calc(var(--bar-thick) + var(--bar-gap));
}
.writer-card {
	border-top: 0; padding-top: calc(24px + var(--bar-thin) + var(--bar-gap) + var(--bar-thick));
	background-color: var(--surface);
	background-image: linear-gradient(var(--brand), var(--brand)), linear-gradient(var(--brand), var(--brand));
	background-repeat: no-repeat;
	background-size: 100% var(--bar-thick), 100% var(--bar-thin);
	background-position: left top, left top calc(var(--bar-thick) + var(--bar-gap));
}
@media (min-width: 900px) { .writer-card { padding-top: calc(36px + var(--bar-thin) + var(--bar-gap) + var(--bar-thick)); } }

/* 五線（ページ見出しの下）。右端は複縦線（細線＋太線） */
.staff { position: relative; display: block; height: 33px; margin-top: 22px; }
.staff::before {
	content: ""; position: absolute; inset: 0 10px 0 0;
	background: repeating-linear-gradient(to bottom, var(--brand) 0 1px, transparent 1px 8px);
	opacity: .32;
}
.staff::after {
	content: ""; position: absolute; top: 0; right: 0; width: 10px; height: 33px;
	border-left: 1.5px solid var(--brand); border-right: 4px solid var(--brand);
}
.page-head { padding-bottom: 32px; }
@media (min-width: 900px) { .staff { margin-top: 30px; } .page-head { padding-bottom: 48px; } }

/* 仮メインビジュアル（ヘッダー画像を設定すると置き換わります） */
.hero__visual--placeholder {
	display: flex; align-items: center; justify-content: center;
	aspect-ratio: 4 / 3; max-height: 72vh; width: 100%;
	background: #c3cbd2; color: rgba(255, 255, 255, .85);
	font-family: var(--font-en); font-size: clamp(16px, 2vw, 22px); letter-spacing: .3em;
}
@media (min-width: 900px) { .hero__visual--placeholder { aspect-ratio: 16 / 7; } }

/* BLOG：キーワード検索 */
.search-box { display: flex; flex: 1 1 220px; max-width: 320px; }
.search-box input { flex: 1; min-width: 0; height: 48px; padding: 0 12px; font-size: 14px; }
.search-box button {
	display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; padding: 0;
	border: 1px solid var(--brand); background: var(--brand); color: #fff; cursor: pointer;
}
.search-box button:hover { background: var(--brand-dark); }
@media (max-width: 599px) { .search-box { max-width: none; flex-basis: 100%; } }

/* 本文の左右寄せ画像（インタビューの縦長写真など）：幅を抑えて本文を回り込ませる */
.entry-content .alignright, .entry-content .alignleft { max-width: 40%; }
.entry-content .alignright img, .entry-content .alignleft img { width: 100%; height: auto; }
.entry-content .alignright { margin-top: .4em; }
@media (max-width: 599px) {
	.entry-content .alignright, .entry-content .alignleft { float: none; max-width: 75%; margin: 1.5em auto; }
}
.entry-content::after { content: ""; display: table; clear: both; }
.entry-content h2 { clear: both; }
.entry-content .wp-block-media-text { gap: 0; margin: 1.5em 0; }
.entry-content .wp-block-media-text > .wp-block-media-text__content { padding: 0 0 0 1.6em; }
.entry-content .wp-block-media-text__content p { margin: 0; }
@media (max-width: 600px) { .entry-content .wp-block-media-text.is-stacked-on-mobile > .wp-block-media-text__content { padding: 1em 0 0; } .entry-content .wp-block-media-text__media { max-width: 60%; } }

/* トップ BLOG / INTERVIEW：スマホでは横スクロールで3件＋「VIEW ALL」 */
.card--more { display: none; }
@media (max-width: 599px) {
	.card-grid--scroll {
		display: flex; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory;
		margin-left: calc(var(--gutter) * -1); margin-right: calc(var(--gutter) * -1);
		padding: 0 var(--gutter) 12px; scroll-padding-left: var(--gutter);
		-webkit-overflow-scrolling: touch; overscroll-behavior-x: contain;
	}
	.card-grid--scroll > .card { flex: 0 0 76%; scroll-snap-align: start; }
	.card-grid--scroll > .card:not(.card--more):nth-child(n+4) { display: none; }
	.card-grid--scroll > .card--more { display: block; flex-basis: 44%; background: var(--brand); }
	.card--more a {
		display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
		min-height: 100%; padding: 24px 12px; color: #fff; text-align: center;
	}
	.card--more__en { font-family: var(--font-en); font-size: 18px; letter-spacing: .1em; }
	.card--more__ja { font-size: 12px; letter-spacing: .08em; }
	.card--more a:hover .card--more__en { text-decoration: underline; text-underline-offset: .25em; }
}
