/*
Theme Name: AO LAB GUIDE
Theme URI: https://aolab-guide.com
Author: AO LAB GUIDE
Author URI: https://aolab-guide.com
Description: 愛知県の総合型選抜・学校推薦型選抜専門サイト用WordPressテーマ。大学＝親、募集情報＝子（複数登録可）のデータ設計。メタボックス不使用、ブロックエディタ標準Sidebarから編集。
Version: 2.7.0
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: aolab-guide
*/

/* ==========================================================================
   Design Tokens（ブランドカラー・タイポグラフィ・余白は変更しない）
   ========================================================================== */
:root {
	--color-navy: #14213D;
	--color-navy-soft: #26375C;
	--color-white: #FFFFFF;
	--color-gold: #B8923D;
	--color-link: #1E4B8C;
	--color-link-hover: #14335F;
	--color-bg: #FFFFFF;
	--color-bg-soft: #F5F6F8;
	--color-line: #E4E6EA;
	--color-text: #1C222E;
	--color-text-soft: #545C6B;
	--shadow-card: 0 2px 14px rgba(20, 33, 61, 0.08);
	--shadow-card-hover: 0 6px 24px rgba(20, 33, 61, 0.14);
	--radius-sm: 4px;
	--radius-md: 10px;
	--max-content: 1200px;
	--font-serif: "Noto Serif JP", serif;
	--font-sans: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
}

/* ==========================================================================
   Reset / Base
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
	margin: 0;
	font-family: var(--font-sans);
	color: var(--color-text);
	background: var(--color-bg);
	line-height: 1.8;
	font-size: 16px;
	-webkit-font-smoothing: antialiased;
	padding-bottom: 58px; /* モバイル固定CTAの高さ分 */
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--color-link); text-decoration: none; }
a:hover { color: var(--color-link-hover); text-decoration: underline; }
h1, h2, h3, h4 { font-family: var(--font-serif); color: var(--color-navy); line-height: 1.5; margin: 0 0 .6em; }
p { margin: 0 0 1.2em; }
ul, ol { padding-left: 1.4em; }
button { font-family: inherit; }

a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, summary:focus-visible {
	outline: 2px solid var(--color-gold);
	outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	* { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

@media (min-width: 960px) {
	body { padding-bottom: 0; }
}

.skip-link {
	position: absolute; left: -999px; top: 0; z-index: 1000;
	background: var(--color-white); color: var(--color-navy);
	padding: .8em 1.2em; border: 1px solid var(--color-navy);
}
.skip-link:focus { left: 1em; top: 1em; }

/* ==========================================================================
   Layout / Utility
   ========================================================================== */
.container { max-width: var(--max-content); margin: 0 auto; padding: 0 1.25rem; }

.section { padding: 4rem 0; }
.section--soft { background: var(--color-bg-soft); }

.section__title { text-align: center; margin-bottom: 2.5rem; }
.section__title--left { text-align: left; }
.section__title-eyebrow { display: block; font-size: .85rem; letter-spacing: .08em; color: var(--color-gold); font-weight: 700; margin-bottom: .5em; }
.section__title-heading { font-size: clamp(1.5rem, 3vw, 2rem); }
.section__title-lead { color: var(--color-text-soft); max-width: 42em; margin: .8em auto 0; }
.section__title--left .section__title-lead { margin: .8em 0 0; }

.text-center { text-align: center; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
/* CSS Gridの子要素はデフォルトで min-width: auto となり、長いURL等でカラム幅を超えて
   はみ出すことがある。.article-layout 内の本文カラムに付与し、正しく折り返させる。 */
.min-w-0 { min-width: 0; }

/* ==========================================================================
   Button
   ========================================================================== */
.button {
	display: inline-flex; align-items: center; justify-content: center;
	padding: .85em 1.8em; border-radius: var(--radius-sm); font-weight: 700;
	transition: background .2s ease, color .2s ease, transform .15s ease;
	border: 1px solid transparent; cursor: pointer; font-size: 1rem;
}
.button:hover { text-decoration: none; transform: translateY(-1px); }
.button--primary { background: var(--color-navy); color: var(--color-white); }
.button--primary:hover { background: var(--color-navy-soft); color: var(--color-white); }
.button--gold { background: var(--color-gold); color: var(--color-white); }
.button--gold:hover { background: #9d7c32; color: var(--color-white); }
.button--outline { background: transparent; border-color: var(--color-white); color: var(--color-white); }
.button--outline:hover { background: rgba(255,255,255,.12); color: var(--color-white); }
.button--outline-navy { background: transparent; border-color: var(--color-navy); color: var(--color-navy); }
.button--outline-navy:hover { background: var(--color-bg-soft); color: var(--color-navy); }
.button--disabled { background: var(--color-line); color: var(--color-text-soft); cursor: not-allowed; }
.button--small { padding: .5em 1.1em; font-size: .85rem; }
.button--block { width: 100%; }

/* ==========================================================================
   Site Header
   ========================================================================== */
.site-header {
	position: sticky; top: 0; z-index: 500;
	background: rgba(255,255,255,.96); backdrop-filter: blur(6px);
	border-bottom: 1px solid var(--color-line);
}
.site-header__inner { display: flex; align-items: center; justify-content: space-between; height: 68px; }
.site-header__logo { display: flex; align-items: center; gap: .6em; color: var(--color-navy); font-family: var(--font-serif); font-weight: 700; font-size: 1.05rem; }
.site-header__logo img { max-height: 40px; width: auto; }
.site-header__toggle {
	display: inline-flex; align-items: center; justify-content: center;
	width: 42px; height: 42px; border: 1px solid var(--color-line); border-radius: var(--radius-sm);
	background: var(--color-white); color: var(--color-navy);
}

.nav-menu { display: none; list-style: none; margin: 0; padding: 0; gap: 1.6rem; }
.nav-menu__item { position: relative; }
.nav-menu__link { color: var(--color-text); font-size: .92rem; font-weight: 500; }
.nav-menu__link:hover { color: var(--color-link); text-decoration: none; }

.mobile-menu { max-height: 0; overflow: hidden; transition: max-height .25s ease; border-top: 1px solid var(--color-line); background: var(--color-white); }
.mobile-menu--open { max-height: 32rem; }
.mobile-menu__list { list-style: none; margin: 0; padding: 1rem 1.25rem; }
.mobile-menu__item { }
.mobile-menu__link { display: block; padding: .7em 0; border-bottom: 1px solid var(--color-line); color: var(--color-text); font-size: .95rem; }

@media (min-width: 960px) {
	.nav-menu { display: flex; }
	.site-header__toggle { display: none; }
	.mobile-menu { display: none; }
}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero {
	position: relative;
	min-height: 78vh;
	display: flex; align-items: flex-end;
	color: var(--color-white);
	background-color: var(--color-navy);
	background-size: cover; background-position: center;
	overflow: hidden;
}
.hero::before {
	content: ""; position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(20,33,61,.35) 0%, rgba(20,33,61,.75) 85%);
}
.hero__inner { position: relative; z-index: 1; padding: 3.5rem 0 4rem; width: 100%; }
.hero__eyebrow { font-size: .85rem; letter-spacing: .1em; color: var(--color-gold); font-weight: 700; margin-bottom: .8em; }
.hero__title { color: var(--color-white); font-size: clamp(1.8rem, 4.4vw, 3rem); max-width: 18em; }
.hero__text { color: rgba(255,255,255,.88); max-width: 34em; font-size: 1.05rem; }
.hero__ctas { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.6rem; }
.hero--visible .hero__title, .hero--visible .hero__text, .hero--visible .hero__ctas { animation: heroFade .8s ease both; }
@keyframes heroFade { from { opacity: 0; transform: translateY(14px);} to { opacity: 1; transform: translateY(0);} }

/* ==========================================================================
   Card
   ========================================================================== */
.card-grid { display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
/* 大学一覧の検索用ラッパー（data-name属性の付与のみが目的）。
   グリッドのレイアウトに影響しないよう、ボックスとしては存在しないものとして扱う。 */
.university-result-item { display: contents; }
.card {
	background: var(--color-white); border-radius: var(--radius-md);
	box-shadow: var(--shadow-card); overflow: hidden; display: flex; flex-direction: column;
	transition: box-shadow .2s ease, transform .2s ease;
	border: 1px solid var(--color-line);
}
.card:hover { box-shadow: var(--shadow-card-hover); transform: translateY(-3px); }
.card__media { aspect-ratio: 16/10; background: var(--color-bg-soft); display: block; overflow: hidden; }
.card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.card__body { padding: 1.25rem 1.4rem 1.5rem; display: flex; flex-direction: column; flex: 1; }
.card__eyebrow { font-size: .78rem; font-weight: 700; color: var(--color-link); margin-bottom: .5em; }
.card__title { font-size: 1.05rem; margin-bottom: .5em; }
.card__title a { color: var(--color-navy); }
.card__desc { color: var(--color-text-soft); font-size: .92rem; flex: 1; margin-bottom: .3em; }
.card__desc--meta { flex: 0; }
.card__meta { display: flex; gap: .8em; font-size: .78rem; color: var(--color-text-soft); margin-top: .6em; }
.card__link { margin-top: .8em; font-weight: 700; font-size: .88rem; color: var(--color-link); }
.card__tags { display: flex; flex-wrap: wrap; gap: .4em; margin-top: .6em; }
.card__tag { font-size: .72rem; background: var(--color-bg-soft); color: var(--color-navy); padding: .25em .7em; border-radius: 999px; border: 1px solid var(--color-line); }

/* ==========================================================================
   Roadmap（受験準備タイムライン）
   ========================================================================== */
.roadmap { display: grid; gap: 0; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); position: relative; list-style: none; padding: 0; }
.roadmap::before { content: ""; position: absolute; top: 22px; left: 0; right: 0; height: 2px; background: var(--color-line); display: none; }
@media (min-width: 720px) { .roadmap::before { display: block; } }
.roadmap__step { position: relative; text-align: center; padding: 0 .6rem 1.5rem; }
.roadmap__badge {
	width: 46px; height: 46px; border-radius: 50%; background: var(--color-navy); color: var(--color-white);
	display: flex; align-items: center; justify-content: center; margin: 0 auto .8em; font-family: var(--font-serif);
	position: relative; z-index: 1;
}
.roadmap__step--goal .roadmap__badge { background: var(--color-gold); }
.roadmap__title { font-size: .95rem; margin-bottom: .3em; }
.roadmap__desc { font-size: .82rem; color: var(--color-text-soft); margin: 0; }

/* ==========================================================================
   Chip（フィルターボタン）
   ========================================================================== */
.chip-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.chip {
	font-size: .85rem; padding: .5em 1em; border: 1px solid var(--color-line); border-radius: 999px;
	background: var(--color-white); color: var(--color-text-soft);
}
.chip:hover, .chip--active { border-color: var(--color-navy); color: var(--color-navy); background: var(--color-bg-soft); }
.chip--active { background: var(--color-navy); color: var(--color-white); border-color: var(--color-navy); }

/* ==========================================================================
   FAQ（native details/summary — JS不要）
   ========================================================================== */
.faq { border-top: 1px solid var(--color-line); }
.faq__item { border-bottom: 1px solid var(--color-line); padding: 1rem 0; }
.faq__question { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 1rem; font-weight: 700; color: var(--color-navy); }
.faq__question::-webkit-details-marker { display: none; }
.faq__q-mark { color: var(--color-link); margin-right: .5em; }
.faq__icon { color: var(--color-gold); transition: transform .2s ease; }
.faq__item[open] .faq__icon { transform: rotate(45deg); }
.faq__answer { margin-top: .8em; padding-left: 1.7em; color: var(--color-text-soft); }

/* ==========================================================================
   CTA Band / Disclaimer
   ========================================================================== */
.cta-band { background: var(--color-navy); color: var(--color-white); border-radius: var(--radius-md); padding: 2.5rem; }
.cta-band__title { color: var(--color-white); }
.cta-band__text { color: rgba(255,255,255,.82); max-width: 40em; }

.disclaimer-box { border: 1px solid var(--color-line); background: var(--color-bg-soft); border-radius: var(--radius-sm); padding: 1rem 1.25rem; font-size: .85rem; color: var(--color-text-soft); }

/* ==========================================================================
   Breadcrumb
   ========================================================================== */
.breadcrumb { font-size: .82rem; color: var(--color-text-soft); }
.breadcrumb__list { display: flex; flex-wrap: wrap; align-items: center; margin: 0; padding: 0; list-style: none; }
.breadcrumb__item { display: flex; align-items: center; }
.breadcrumb__link { color: var(--color-text-soft); }
.breadcrumb__link:hover { color: var(--color-link); }
.breadcrumb__current { color: var(--color-text); }
.breadcrumb__sep { margin: 0 .4em; color: var(--color-line); }

/* ==========================================================================
   Article（記事詳細）
   ========================================================================== */
.article-header { max-width: 46em; margin: 0 auto; }
.article-header__cat { color: var(--color-link); font-weight: 700; font-size: .85rem; }
.article-header__title { font-size: clamp(1.6rem, 3.4vw, 2.4rem); }
.article-meta { display: flex; gap: 1em; font-size: .85rem; color: var(--color-text-soft); }
.article-thumb { border-radius: var(--radius-md); overflow: hidden; margin: 1.5rem auto; max-width: 46em; }
.article-layout { display: grid; grid-template-columns: 1fr; gap: 2.5rem; margin-top: 2rem; }
@media (min-width: 960px) { .article-layout { grid-template-columns: 1fr 280px; } }
.article-body { max-width: 46em; }
.article-body h2 { margin-top: 1.6em; font-size: 1.35rem; }
.article-body h3 { margin-top: 1.3em; font-size: 1.1rem; }
.article-body img { border-radius: var(--radius-sm); }
.article-body a { text-decoration: underline; }

.toc { background: var(--color-bg-soft); border: 1px solid var(--color-line); border-radius: var(--radius-sm); padding: 1.2rem 1.4rem; margin-bottom: 1.5rem; max-width: 46em; }
.toc__title { font-weight: 700; color: var(--color-navy); margin-bottom: .6em; }
.toc__list { margin: 0; padding-left: 1.2em; font-size: .9rem; }

.author-box { display: flex; gap: 1em; align-items: center; border: 1px solid var(--color-line); border-radius: var(--radius-sm); padding: 1rem; margin-top: 2rem; max-width: 46em; }
.author-box img { width: 56px; height: 56px; border-radius: 50%; }
.author-box__name { margin: 0; font-weight: 700; color: var(--color-navy); }
.author-box__bio { margin: 0; font-size: .85rem; color: var(--color-text-soft); }

.share-links { display: flex; gap: .6em; margin-top: 1.5rem; max-width: 46em; }
.share-links__link { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border: 1px solid var(--color-line); border-radius: 50%; color: var(--color-navy); }

.post-nav { display: flex; justify-content: space-between; gap: 1rem; margin-top: 2.5rem; border-top: 1px solid var(--color-line); padding-top: 1.5rem; font-size: .88rem; max-width: 46em; }

.sidebar-box { border: 1px solid var(--color-line); border-radius: var(--radius-sm); padding: 1.2rem; margin-bottom: 1.2rem; }
.sidebar-box__title { font-size: 1rem; margin-bottom: .5em; }
.sidebar-box__text { font-size: .88rem; color: var(--color-text-soft); }

/* ==========================================================================
   University Detail
   ========================================================================== */
.university-hero {
	background: var(--color-bg-soft);
	border-radius: var(--radius-md);
	margin-bottom: 1.5rem;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
}
.university-hero img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 620px;
	object-fit: contain;
	object-position: center center;
}
@media (max-width: 599px) {
	.university-hero img { max-height: none; }
}
.university-tags { display: flex; flex-wrap: wrap; gap: .4em; margin: 1em 0; }

/* ==========================================================================
   Info Card（大学情報カード：single-university.php）
   ========================================================================== */
.info-card-grid__heading { font-size: 1.2rem; margin-top: 2rem; margin-bottom: 1rem; }
.info-card-grid {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}
.info-card {
	background: var(--color-white);
	border: 1px solid var(--color-line);
	border-radius: var(--radius-sm);
	padding: 1.1rem 1.3rem;
}
.info-card--wide { grid-column: 1 / -1; }
.info-card__label {
	font-size: .78rem; font-weight: 700; color: var(--color-gold);
	letter-spacing: .03em; margin-bottom: .5em;
}
.info-card__value {
	font-size: .95rem; color: var(--color-text); line-height: 1.7;
	margin: 0; word-break: break-word;
}
.info-card__value--empty { color: var(--color-text-soft); }
.info-card__link {
	font-size: .92rem; word-break: break-all; text-decoration: underline;
}

@media (max-width: 480px) {
	.info-card-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Admission Card（募集情報アコーディオン：single-university.php）
   ========================================================================== */
.admission-list { display: flex; flex-direction: column; gap: 1rem; margin-bottom: 1.5rem; }
.admission-card {
	border: 1px solid var(--color-line);
	border-radius: var(--radius-md);
	background: var(--color-white);
	overflow: hidden;
}
.admission-card__summary {
	cursor: pointer;
	list-style: none;
	padding: 1rem 1.3rem;
	font-family: var(--font-serif);
	font-weight: 700;
	color: var(--color-navy);
	display: flex;
	align-items: center;
	gap: .6em;
}
.admission-card__summary::-webkit-details-marker { display: none; }
.admission-card__summary::before {
	content: "▸";
	color: var(--color-gold);
	transition: transform .15s ease;
	flex-shrink: 0;
}
.admission-card[open] > .admission-card__summary::before { transform: rotate(90deg); }
.admission-card__body { padding: 0 1.3rem 1.3rem; border-top: 1px solid var(--color-line); }
.admission-card__body .info-card-grid { margin-top: 1rem; }

.admission-card__chips { display: flex; flex-wrap: wrap; gap: .4em; margin-top: 1rem; }
.admission-card__links { display: flex; flex-wrap: wrap; gap: .6em; margin-top: 1rem; }

.admission-card__comment {
	margin-top: 1rem;
	background: var(--color-bg-soft);
	border-left: 3px solid var(--color-gold);
	border-radius: var(--radius-sm);
	padding: .9rem 1.1rem;
}
.admission-card__comment-label { font-size: .78rem; font-weight: 700; color: var(--color-gold); margin: 0 0 .4em; }
.admission-card__comment-text { font-size: .9rem; color: var(--color-text); margin: 0; line-height: 1.7; }

.admission-card__meta { font-size: .78rem; color: var(--color-text-soft); margin: 1rem 0 0; }

/* ==========================================================================
   Site Footer
   ========================================================================== */
.site-footer { background: var(--color-navy); color: rgba(255,255,255,.85); margin-top: 4rem; }
.site-footer .container { padding-top: 3.5rem; padding-bottom: 2rem; }
.footer-grid { display: grid; gap: 2.5rem; grid-template-columns: 1fr; }
@media (min-width: 780px) { .footer-grid { grid-template-columns: 2fr 1fr 1fr 1fr; } }
.footer-grid__heading { color: var(--color-white); font-size: .85rem; letter-spacing: .05em; margin-bottom: 1em; }
.footer-grid__list { list-style: none; margin: 0; padding: 0; }
.footer-grid__item { margin-bottom: .6em; }
.footer-grid__link { color: rgba(255,255,255,.75); font-size: .88rem; }
.footer-grid__link:hover { color: var(--color-white); }
.footer-grid__desc { color: rgba(255,255,255,.85); font-size: .9rem; max-width: 26em; }

.footer-sns { display: flex; gap: .7em; margin-top: 1em; list-style: none; padding: 0; }
.footer-sns__link { width: 34px; height: 34px; border-radius: 50%; border: 1px solid rgba(255,255,255,.3); display: flex; align-items: center; justify-content: center; color: var(--color-white); font-size: .75rem; }

.footer-bottom { border-top: 1px solid rgba(255,255,255,.15); margin-top: 2.5rem; padding-top: 1.5rem; font-size: .78rem; color: rgba(255,255,255,.55); }
.footer-bottom__disclaimer { font-size: .78rem; color: rgba(255,255,255,.6); max-width: 60em; margin-bottom: 1em; }

.widget { margin-bottom: 1.5rem; }
.widget__title { color: var(--color-white); font-size: .85rem; letter-spacing: .05em; margin-bottom: .8em; }

/* ==========================================================================
   Mobile fixed CTA / Scroll-top
   ========================================================================== */
.mobile-fixed-cta {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 400;
	display: flex; background: var(--color-white); border-top: 1px solid var(--color-line);
	box-shadow: 0 -4px 16px rgba(20,33,61,.1);
}
.mobile-fixed-cta__link { flex: 1; text-align: center; padding: .9em 0; font-weight: 700; font-size: .85rem; }
.mobile-fixed-cta__link:first-child { color: var(--color-navy); border-right: 1px solid var(--color-line); }
.mobile-fixed-cta__link:last-child { background: var(--color-navy); color: var(--color-white); }
@media (min-width: 960px) { .mobile-fixed-cta { display: none; } }

.scroll-top-btn {
	position: fixed; right: 1.2rem; bottom: 4.5rem; z-index: 400;
	width: 44px; height: 44px; border-radius: 50%; background: var(--color-navy); color: var(--color-white);
	display: flex; align-items: center; justify-content: center; opacity: 0; pointer-events: none;
	transition: opacity .2s ease; border: none; cursor: pointer;
}
.scroll-top-btn--visible { opacity: 1; pointer-events: auto; }
@media (min-width: 960px) { .scroll-top-btn { bottom: 1.5rem; } }

/* ==========================================================================
   Scroll fade-in
   ========================================================================== */
.fade-in-up { opacity: 0; transform: translateY(16px); transition: opacity .5s ease, transform .5s ease; }
.fade-in-up--visible { opacity: 1; transform: translateY(0); }

/* ==========================================================================
   Filter bar / Search / Pagination
   ========================================================================== */
.filter-bar { display: flex; flex-wrap: wrap; gap: .8rem; align-items: center; justify-content: space-between; margin-bottom: 2rem; }
.filter-bar__search { border: 1px solid var(--color-line); border-radius: var(--radius-sm); padding: .6em .9em; font-size: .9rem; }
.result-count { font-size: .85rem; color: var(--color-text-soft); margin-bottom: 1rem; }

.university-search { background: var(--color-bg-soft); border: 1px solid var(--color-line); border-radius: var(--radius-md); padding: 1.2rem 1.4rem; margin-bottom: 1.5rem; }
.university-search__row { display: grid; gap: .9rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); align-items: end; }
.university-search__field { display: flex; flex-direction: column; gap: .4em; }
.university-search__label { font-size: .78rem; font-weight: 700; color: var(--color-navy); }
.university-search input[type="text"] { width: 100%; }

.search-form { display: flex; gap: .5em; }
.search-form__input { flex: 1; border: 1px solid var(--color-line); border-radius: var(--radius-sm); padding: .7em 1em; font-size: .95rem; }

.pagination { display: flex; gap: .4em; justify-content: center; margin-top: 2.5rem; list-style: none; padding: 0; flex-wrap: wrap; }
.pagination .page-numbers {
	display: inline-flex; align-items: center; justify-content: center; min-width: 2.4em; height: 2.4em;
	border: 1px solid var(--color-line); border-radius: var(--radius-sm); font-size: .88rem; color: var(--color-text);
	padding: 0 .6em;
}
.pagination .page-numbers.current { background: var(--color-navy); color: var(--color-white); border-color: var(--color-navy); }
.pagination .page-numbers.dots { border: none; }

/* ==========================================================================
   Block editor: 大学情報パネル
   ========================================================================== */
.aolab-university-panel .components-base-control { margin-bottom: 1em; }

/* 出願区分（専願・併願可） */
.admission-card__policy {
	margin-top: 1rem;
}
.admission-policy {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 7.5rem;
	padding: .55rem 1rem;
	border-radius: 999px;
	font-size: .9rem;
	font-weight: 700;
	letter-spacing: .04em;
	border: 2px solid currentColor;
}
.admission-policy--exclusive {
	color: #8b2e2e;
	background: #fff4f2;
}
.admission-policy--concurrent {
	color: var(--color-navy);
	background: var(--color-bg-soft);
}

/* ==========================================================================
   Mobile article overflow fix (v2.4.1)
   iPhone Safariを含む狭い画面で、記事タイトル・本文が右端からはみ出す問題を防止。
   ========================================================================== */
html,
body {
	max-width: 100%;
	overflow-x: clip;
}

@supports not (overflow: clip) {
	html,
	body {
		overflow-x: hidden;
	}
}

@media (max-width: 767px) {
	html {
		-webkit-text-size-adjust: 100%;
		text-size-adjust: 100%;
	}

	.container {
		width: 100%;
		max-width: 100%;
		min-width: 0;
		padding-right: 1.25rem;
		padding-left: 1.25rem;
	}

	.article-header,
	.article-thumb,
	.article-layout,
	.article-layout > *,
	.article-body,
	.article-body > *,
	.toc,
	.author-box,
	.share-links,
	.post-nav {
		width: 100%;
		max-width: 100%;
		min-width: 0;
	}

	.article-header__title {
		font-size: clamp(1.55rem, 7vw, 1.9rem);
		line-height: 1.45;
		letter-spacing: 0;
		white-space: normal;
		word-break: normal;
		overflow-wrap: anywhere;
	}

	.article-body,
	.article-body p,
	.article-body li,
	.article-body h2,
	.article-body h3,
	.article-body h4,
	.article-body a,
	.article-body td,
	.article-body th {
		white-space: normal;
		word-break: normal;
		overflow-wrap: anywhere;
	}

	.article-body img,
	.article-body video,
	.article-body iframe,
	.article-body table,
	.article-body pre,
	.article-body code {
		max-width: 100%;
	}

	.article-body table {
		display: block;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}

	.article-body pre {
		overflow-x: auto;
	}

	.article-meta {
		flex-wrap: wrap;
	}
}

/* トップページのカード列数（カスタマイザー連動） */
.card-grid--columns-2,
.card-grid--columns-3,
.card-grid--columns-4 {
	display: grid;
	gap: 1.5rem;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (min-width: 768px) {
	.card-grid--columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.card-grid--columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
	.card-grid--columns-2,
	.card-grid--columns-3,
	.card-grid--columns-4 {
		grid-template-columns: 1fr;
	}
}
