/*
Theme Name: マサオ整体
Theme URI: https://masao-seitai.jp/
Author: HARO
Description: 大阪・新大阪の整体院「マサオ整体」のオリジナルテーマ。藍と真鍮の配色に、指先（指紋）のモチーフ。院長の実績と、掲載同意付きの「お客様の声」を中心に構成しています。
Version: 2.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
Text Domain: masao-seitai
*/

/* ==========================================================================
   トークン：藍（夜の深い青）と真鍮。指先の線を全体のモチーフに。
   ========================================================================== */
:root {
	--ai: #15242f;          /* 藍・最も深い */
	--ai-2: #1d3342;        /* 藍・面 */
	--ai-3: #2b4a5e;        /* 藍・線 */
	--brass: #c29b5f;       /* 真鍮（暗い地の上で使う） */
	--brass-light: #e2c99c;
	--brass-ink: #86652f;   /* 真鍮（明るい地の上の文字用・コントラスト確保） */
	--paper: #f3f4f2;
	--mist: #e7ebe8;
	--white: #fff;
	--ink: #1a232a;
	--ink-soft: #4f5d66;
	--line: #d3d9d5;

	--mincho: "Shippori Mincho B1", "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif CJK JP", serif;
	--sans: "Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Noto Sans CJK JP", Meiryo, sans-serif;

	--gutter: 20px;
	--section-y: clamp(72px, 10vw, 136px);
}

/* ==========================================================================
   ベース
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	background: var(--paper);
	color: var(--ink);
	font-family: var(--sans);
	font-size: 16px;
	line-height: 1.95;
	letter-spacing: .03em;
	font-feature-settings: "palt";
}
img, iframe { max-width: 100%; }
img { height: auto; display: block; }
a { color: var(--ai-3); text-underline-offset: .25em; }
a:hover { color: var(--brass-ink); }
:focus-visible { outline: 3px solid var(--brass); outline-offset: 3px; }
p { margin: 0 0 1.2em; }
h1, h2, h3, h4 { font-family: var(--mincho); font-weight: 700; line-height: 1.5; margin: 0; }

.wrap { width: min(1160px, 100% - (var(--gutter) * 2)); margin-inline: auto; }
.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}
.skip-link { position: absolute; left: 12px; top: -80px; z-index: 100; background: var(--brass); color: var(--ai); padding: 10px 16px; border-radius: 4px; font-weight: 700; }
.skip-link:focus { top: 12px; }

/* 指紋の線（SVG をマスクにして色を自由に） */
.hero__print, .callout__print {
	position: absolute; pointer-events: none;
	-webkit-mask: url("assets/img/graphics/fingertip.svg") center / contain no-repeat;
	mask: url("assets/img/graphics/fingertip.svg") center / contain no-repeat;
}

/* ==========================================================================
   ボタン
   ========================================================================== */
.btn {
	display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
	min-height: 60px; padding: 10px 32px;
	border: 1.5px solid transparent; border-radius: 4px;
	font-family: var(--sans); font-weight: 700; font-size: 1rem; letter-spacing: .08em; line-height: 1.4;
	text-decoration: none; text-align: center;
	transition: background-color .2s, color .2s, border-color .2s;
}
.btn__sub { font-size: .72rem; font-weight: 500; letter-spacing: .06em; opacity: .85; }
.btn__main { font-family: var(--mincho); font-size: 1.5rem; font-weight: 800; letter-spacing: .06em; }
.btn--brass { background: var(--brass); color: var(--ai); }
.btn--brass:hover { background: var(--brass-light); color: var(--ai); }
.btn--line { border-color: rgba(255, 255, 255, .5); color: var(--white); }
.btn--line:hover { border-color: var(--white); background: rgba(255, 255, 255, .08); color: var(--white); }
.btn--ink { background: var(--ai); color: var(--white); }
.btn--ink:hover { background: var(--ai-3); color: var(--white); }
.btn--outline { border-color: var(--ai); color: var(--ai); background: transparent; }
.btn--outline:hover { background: var(--ai); color: var(--white); }

.textlink { font-weight: 700; text-decoration: underline; text-decoration-color: var(--brass); text-decoration-thickness: 2px; }

/* 見出し：明朝の太字に、真鍮の短い線 */
.heading {
	position: relative;
	font-size: clamp(1.6rem, 3.2vw, 2.4rem); font-weight: 800; letter-spacing: .1em;
	color: var(--ai); margin-bottom: 1em; padding-top: 22px;
}
.heading::before { content: ""; position: absolute; left: 0; top: 0; width: 40px; height: 3px; background: var(--brass); }
.heading--center { text-align: center; }
.heading--center::before { left: 50%; margin-left: -20px; }
.heading--light { color: var(--white); }

.pc-only { display: inline; }

/* ==========================================================================
   ヘッダー（藍）
   ========================================================================== */
.site-header {
	position: sticky; top: 0; z-index: 50;
	background: var(--ai); color: var(--white);
	border-bottom: 1px solid rgba(194, 155, 95, .35);
}
.site-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 76px; }
.brand { display: flex; flex-direction: column; text-decoration: none; color: var(--white); line-height: 1.3; }
.brand:hover { color: var(--white); }
.brand__name { font-family: var(--mincho); font-weight: 800; font-size: 1.6rem; letter-spacing: .16em; }
.brand__sub { font-size: .72rem; color: var(--brass); letter-spacing: .14em; }

.gnav { display: flex; align-items: center; gap: 28px; }
.gnav__list { display: flex; flex-wrap: wrap; gap: 4px 24px; margin: 0; padding: 0; list-style: none; }
.gnav__link, .gnav .menu-item a {
	display: block; padding: 6px 0;
	color: rgba(255, 255, 255, .88); text-decoration: none; font-size: .92rem; font-weight: 500;
	border-bottom: 1px solid transparent;
}
.gnav__link:hover, .gnav .menu-item a:hover, .gnav .current-menu-item a { color: var(--white); border-bottom-color: var(--brass); }
.gnav__tel {
	display: flex; flex-direction: column; align-items: flex-end;
	padding-left: 24px; border-left: 1px solid rgba(255, 255, 255, .18);
	text-decoration: none; color: var(--brass); line-height: 1.3;
}
.gnav__tel:hover { color: var(--brass-light); }
.gnav__tel-label { font-size: .7rem; color: rgba(255, 255, 255, .7); }
.gnav__tel-num { font-family: var(--mincho); font-weight: 800; font-size: 1.45rem; letter-spacing: .04em; }
.menu-toggle { display: none; }

/* ==========================================================================
   ヒーロー
   ========================================================================== */
.hero {
	position: relative; overflow: hidden;
	background: radial-gradient(120% 90% at 85% 40%, var(--ai-2) 0%, var(--ai) 62%);
	color: var(--white);
	padding: clamp(48px, 6vw, 84px) 0 clamp(40px, 5vw, 64px);
}
.hero__print {
	right: -8%; top: 50%; width: min(78vw, 980px); aspect-ratio: 1;
	transform: translateY(-52%) rotate(-8deg);
	background: var(--brass); opacity: .32;
	animation: print-in 2.4s cubic-bezier(.2, .7, .2, 1) both;
}
@keyframes print-in {
	from { opacity: 0; transform: translateY(-50%) rotate(-14deg) scale(.94); }
	to   { opacity: .32; transform: translateY(-52%) rotate(-8deg) scale(1); }
}
.hero__inner { position: relative; z-index: 1; }
.hero__place {
	display: inline-flex; align-items: center; gap: 10px; margin-bottom: 28px;
	font-size: .9rem; letter-spacing: .12em; color: var(--brass-light);
}
.hero__place::before { content: ""; width: 28px; height: 1px; background: var(--brass); }
.hero__title {
	font-size: clamp(2.6rem, 7vw, 6rem); font-weight: 800; line-height: 1.32; letter-spacing: .06em;
	margin-bottom: 32px;
}
.hero__line { display: block; }
.hero__lead { max-width: 34em; font-size: clamp(1rem, 1.4vw, 1.1rem); line-height: 2.15; color: rgba(255, 255, 255, .86); margin-bottom: 40px; }
.hero__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: clamp(48px, 6vw, 72px); }

.creds {
	display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 0; padding: 0; list-style: none;
	border-top: 1px solid rgba(194, 155, 95, .5);
}
.creds__item { display: flex; flex-direction: column; gap: 4px; padding: 24px 24px 0 0; }
.creds__item + .creds__item { padding-left: 24px; border-left: 1px solid rgba(255, 255, 255, .12); }
.creds__num { font-family: var(--mincho); font-weight: 800; font-size: clamp(2.2rem, 4vw, 3.2rem); line-height: 1.1; color: var(--brass); letter-spacing: .04em; }
.creds__num small { font-size: .45em; margin-left: .15em; }
.creds__num--text { font-size: clamp(1.6rem, 2.8vw, 2.2rem); }
.creds__label { font-size: .88rem; color: rgba(255, 255, 255, .78); line-height: 1.7; }

/* ==========================================================================
   セクション共通
   ========================================================================== */
.section { padding-block: var(--section-y); }

/* ---- お客様の声 ---- */
.voices { background: var(--paper); }
.voices__head { display: grid; grid-template-columns: auto 1fr; align-items: end; gap: 16px 64px; margin-bottom: 48px; }
.voices__head .heading { margin-bottom: 0; }
.voices__lead { margin: 0; color: var(--ink-soft); }
.voices__grid { columns: 3 300px; column-gap: 24px; }

.voice {
	position: relative; break-inside: avoid;
	background: var(--white); border: 1px solid var(--line); border-top: 3px solid var(--ai);
	padding: 40px 28px 24px; margin: 0 0 24px;
}
.voice::before {
	content: "「"; position: absolute; left: 14px; top: -4px;
	font-family: var(--mincho); font-size: 4.2rem; line-height: 1; color: var(--brass);
}
.voice__concern {
	display: inline-block; margin: 0 0 12px; padding: 2px 10px;
	background: var(--mist); border-radius: 2px;
	font-size: .78rem; color: var(--ink-soft);
}
.voice__title { font-size: 1.22rem; font-weight: 800; line-height: 1.6; color: var(--ai); margin-bottom: 14px; }
.voice__body { font-size: .95rem; line-height: 2; margin-bottom: 12px; }
.voice__body--full p { margin-bottom: 1em; }
.voice__more { font-size: .85rem; font-weight: 700; color: var(--brass-ink); }
.voice__who { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; margin-top: 18px; padding-top: 14px; border-top: 1px dashed var(--line); }
.voice__name { font-weight: 700; }
.voice__profile { font-size: .82rem; color: var(--ink-soft); }
.voices__note { font-size: .8rem; color: var(--ink-soft); margin: 8px 0 32px; }
.voices__empty { padding: 40px; text-align: center; background: var(--white); border: 1px dashed var(--line); color: var(--ink-soft); }
.voices__actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }
.voice-single { max-width: 44em; }
.voice-single .voice { padding: 52px 40px 32px; }

/* ---- 院長 ---- */
.doctor { background: var(--mist); }
.doctor__grid { display: grid; grid-template-columns: minmax(240px, 440px) 1fr; gap: clamp(36px, 7vw, 104px); align-items: center; }
.doctor__photo {
	position: relative; margin: 0; aspect-ratio: 4 / 5;
	background: var(--ai-2);
}
.doctor__photo::after { content: ""; position: absolute; inset: 18px -18px -18px 18px; border: 1px solid var(--brass); z-index: 0; pointer-events: none; }
.doctor__photo img { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: cover; }
.doctor__role { margin: 0 0 6px; font-size: .9rem; letter-spacing: .2em; color: var(--brass-ink); font-weight: 700; }
.doctor__name { font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; letter-spacing: .14em; color: var(--ai); margin-bottom: 28px; line-height: 1.3; }
.doctor__kana { display: block; font-family: var(--sans); font-size: .85rem; font-weight: 500; letter-spacing: .2em; color: var(--ink-soft); margin-top: 6px; }
.doctor__quote { font-family: var(--mincho); font-weight: 700; font-size: clamp(1.15rem, 2vw, 1.45rem); line-height: 2; color: var(--ai); padding-left: 20px; border-left: 3px solid var(--brass); margin-bottom: 28px; }
.doctor__body { max-width: 38em; }
.doctor__facts { margin: 0 0 24px; }
.doctor__facts div { display: grid; grid-template-columns: 4em 1fr; gap: 12px; padding: 12px 0; border-top: 1px solid var(--line); font-size: .93rem; }
.doctor__facts div:last-child { border-bottom: 1px solid var(--line); }
.doctor__facts dt { font-weight: 700; color: var(--brass-ink); }
.doctor__facts dd { margin: 0; }

/* ---- 施術の特徴 ---- */
.features__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(28px, 4vw, 56px); margin: 56px 0 0; padding: 0; list-style: none; }
.feature { text-align: center; }
.feature__mark {
	display: inline-grid; place-items: center;
	width: 112px; height: 112px; margin-bottom: 24px;
	border: 1px solid var(--brass); border-radius: 50%;
	box-shadow: inset 0 0 0 6px var(--paper), inset 0 0 0 7px rgba(194, 155, 95, .45);
	font-family: var(--mincho); font-weight: 800; font-size: 3.2rem; line-height: 1; color: var(--ai);
}
.feature__title { font-size: 1.2rem; font-weight: 800; color: var(--ai); margin-bottom: 12px; }
.feature p { color: var(--ink-soft); margin: 0; text-align: left; }

/* ---- はじめての方へ（流れ） ---- */
.flow { background: var(--white); border-block: 1px solid var(--line); }
.flow__grid { display: grid; grid-template-columns: 4fr 8fr; gap: clamp(32px, 6vw, 96px); }
.flow__head p { color: var(--ink-soft); }
.steps { margin: 0; padding: 0; list-style: none; counter-reset: step; }
.step { position: relative; counter-increment: step; padding: 0 0 32px 84px; }
.step::before {
	content: counter(step); position: absolute; left: 0; top: -6px;
	width: 56px; height: 56px; display: grid; place-items: center;
	background: var(--ai); color: var(--brass); border-radius: 50%;
	font-family: var(--mincho); font-weight: 800; font-size: 1.5rem;
}
.step:not(:last-child)::after { content: ""; position: absolute; left: 27px; top: 56px; bottom: 4px; width: 1px; background: var(--line); }
.step__title { font-size: 1.15rem; font-weight: 800; color: var(--ai); margin-bottom: 4px; }
.step p { margin: 0; color: var(--ink-soft); }

/* ---- 料金・営業時間 ---- */
.price__grid { display: grid; grid-template-columns: 5fr 7fr; gap: 24px; align-items: stretch; }
.price__card { background: var(--ai); color: var(--white); padding: clamp(32px, 4vw, 48px); }
.price__hours { background: var(--white); border: 1px solid var(--line); padding: clamp(32px, 4vw, 48px); }
.price__label { font-size: 1rem; font-weight: 700; letter-spacing: .2em; margin-bottom: 12px; color: inherit; }
.price__card .price__label { color: var(--brass-light); }
.price__hours .price__label { color: var(--brass-ink); }
.price__amount { font-family: var(--mincho); font-weight: 800; font-size: clamp(2.8rem, 5vw, 3.8rem); line-height: 1.2; color: var(--white); margin-bottom: 20px; }
.price__amount small { display: block; font-family: var(--sans); font-size: .9rem; font-weight: 500; color: rgba(255, 255, 255, .78); margin-top: 6px; }
.price__note { font-size: .88rem; color: rgba(255, 255, 255, .78); margin: 0; }

.week { width: 100%; border-collapse: collapse; text-align: center; }
.week th, .week td { padding: 14px 4px; border-bottom: 1px solid var(--line); font-size: .95rem; }
.week thead th { font-weight: 700; color: var(--ink-soft); font-size: .85rem; }
.week tbody th { text-align: left; font-family: var(--mincho); font-weight: 700; white-space: nowrap; padding-right: 12px; }
.week__open { color: var(--brass-ink); font-size: 1.1rem; }
.week__off { color: var(--ink-soft); }

/* ---- よくある質問 ---- */
.faq { background: var(--mist); }
.faq__grid { display: grid; grid-template-columns: 4fr 8fr; gap: clamp(32px, 6vw, 96px); }
.qa { background: var(--white); border: 1px solid var(--line); margin-bottom: 10px; }
.qa__q {
	position: relative; list-style: none; cursor: pointer;
	padding: 20px 56px 20px 56px; font-weight: 700; color: var(--ai);
}
.qa__q::-webkit-details-marker { display: none; }
.qa__q::before { content: "Q"; position: absolute; left: 20px; top: 16px; font-family: var(--mincho); font-weight: 800; font-size: 1.4rem; color: var(--brass-ink); }
.qa__q::after { content: ""; position: absolute; right: 22px; top: 50%; width: 14px; height: 14px; margin-top: -7px;
	background: linear-gradient(var(--ai), var(--ai)) center / 14px 2px no-repeat, linear-gradient(var(--ai), var(--ai)) center / 2px 14px no-repeat;
	transition: transform .2s; }
.qa[open] .qa__q::after { transform: rotate(45deg); }
.qa__a { padding: 0 24px 8px 56px; color: var(--ink-soft); }

/* ---- 学ぶ ---- */
.learn { background: var(--ai); color: var(--white); }
.learn__list { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; margin: 56px 0 0; padding: 0; list-style: none; border-top: 1px solid rgba(194, 155, 95, .45); }
.learn__item { display: flex; flex-direction: column; padding: 28px 24px 8px; border-right: 1px solid rgba(255, 255, 255, .1); }
.learn__item:last-child { border-right: 0; }
.learn__kind { margin: 0 0 8px; font-size: .8rem; letter-spacing: .2em; color: var(--brass); }
.learn__title { font-size: 1.15rem; font-weight: 800; margin-bottom: 12px; line-height: 1.6; }
.learn__item p { color: rgba(255, 255, 255, .78); font-size: .92rem; }
.learn__link { margin-top: auto; color: var(--brass-light); font-weight: 700; font-size: .9rem; }
.learn__link:hover { color: var(--white); }

/* ---- お知らせ ---- */
.news__grid { display: grid; grid-template-columns: 4fr 8fr; gap: clamp(32px, 6vw, 96px); }
.newslist { margin: 0; padding: 0; list-style: none; }
.newslist__item { display: grid; grid-template-columns: 7.5em 1fr; gap: 4px 16px; padding: 18px 0; border-bottom: 1px solid var(--line); }
.newslist__item:first-child { border-top: 1px solid var(--line); }
.newslist__date { color: var(--ink-soft); font-size: .9rem; font-variant-numeric: tabular-nums; }
.newslist__link { color: var(--ink); text-decoration: none; font-weight: 500; }
.newslist__link:hover { color: var(--brass-ink); text-decoration: underline; }
.news__more { margin-top: 20px; }

/* ---- アクセス ---- */
.access { background: var(--white); border-top: 1px solid var(--line); }
.access__grid { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(28px, 5vw, 72px); align-items: stretch; }
.access__map { min-height: 380px; background: var(--mist); }
.access__map iframe { width: 100%; height: 100%; min-height: 380px; border: 0; display: block; filter: grayscale(.35); }
.spec { margin: 0 0 1.4em; }
.spec__row { display: grid; grid-template-columns: 6.5em 1fr; gap: 12px; padding: 12px 0; border-top: 1px solid var(--line); }
.spec__row:last-child { border-bottom: 1px solid var(--line); }
.spec dt { font-weight: 700; color: var(--brass-ink); }
.spec dd { margin: 0; }

/* ==========================================================================
   電話の呼びかけ帯
   ========================================================================== */
.callout { position: relative; overflow: hidden; background: var(--ai-2); color: var(--white); }
.callout__print { left: -12%; top: 50%; width: 640px; aspect-ratio: 1; transform: translateY(-50%) rotate(12deg); background: var(--brass); opacity: .16; }
.callout__inner { position: relative; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 28px 48px; padding-block: clamp(48px, 6vw, 80px); }
.callout__title { font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 800; letter-spacing: .1em; margin-bottom: .5em; }
.callout__lead { margin: 0; font-size: .95rem; color: rgba(255, 255, 255, .82); }
.callout__tel { display: flex; flex-direction: column; align-items: center; background: var(--brass); color: var(--ai); padding: 18px 44px; border-radius: 4px; text-decoration: none; line-height: 1.3; }
.callout__tel:hover { background: var(--brass-light); color: var(--ai); }
.callout__tel-label { font-size: .8rem; font-weight: 700; }
.callout__tel-num { font-family: var(--mincho); font-weight: 800; font-size: clamp(1.9rem, 3.6vw, 2.5rem); letter-spacing: .06em; }

/* ==========================================================================
   フッター
   ========================================================================== */
.site-footer { background: var(--ai); color: #c9d2d6; padding-top: 64px; }
.site-footer a { color: #c9d2d6; text-decoration: none; }
.site-footer a:hover { color: var(--brass-light); text-decoration: underline; }
.site-footer__inner { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 36px 64px; }
.site-footer__name { font-family: var(--mincho); font-weight: 800; font-size: 1.5rem; letter-spacing: .16em; color: var(--white); margin-bottom: .6em; }
.site-footer__addr { font-style: normal; font-size: .9rem; line-height: 1.9; margin-bottom: .6em; }
.site-footer__hours { font-size: .9rem; margin: 0; }
.fnav__list { display: grid; grid-template-columns: repeat(2, minmax(10em, auto)); gap: 6px 48px; margin: 0; padding: 0; list-style: none; font-size: .92rem; }
.site-footer__copy { margin: 56px 0 0; padding: 20px var(--gutter); text-align: center; font-size: .76rem; letter-spacing: .1em; border-top: 1px solid rgba(255, 255, 255, .1); }

/* ==========================================================================
   下層ページ
   ========================================================================== */
.page__head { position: relative; overflow: hidden; background: var(--ai); color: var(--white); padding: clamp(48px, 7vw, 88px) 0 clamp(36px, 5vw, 56px); }
.page__head::after {
	content: ""; position: absolute; right: -6%; top: 50%; width: 520px; aspect-ratio: 1;
	transform: translateY(-50%) rotate(-8deg);
	background: var(--brass); opacity: .2;
	-webkit-mask: url("assets/img/graphics/fingertip.svg") center / contain no-repeat; mask: url("assets/img/graphics/fingertip.svg") center / contain no-repeat;
	pointer-events: none;
}
.page__head .wrap { position: relative; z-index: 1; }
.crumbs { font-size: .85rem; color: rgba(255, 255, 255, .7); margin-bottom: 1em; }
.crumbs a { color: rgba(255, 255, 255, .8); }
.page__title { font-family: var(--mincho); font-size: clamp(1.9rem, 4vw, 2.9rem); font-weight: 800; letter-spacing: .12em; line-height: 1.4; margin: 0; }
.page__lead { max-width: 38em; margin: 1em 0 0; color: rgba(255, 255, 255, .82); }
.page__date { margin: .8em 0 0; color: var(--brass-light); font-size: .92rem; }
.page__body { padding-block: clamp(48px, 7vw, 88px) clamp(64px, 9vw, 112px); }
.page__back { margin-top: 3em; }

.entry { max-width: 46em; }
.entry > *:first-child { margin-top: 0; }
.entry h2 { position: relative; font-size: clamp(1.4rem, 2.6vw, 1.85rem); font-weight: 800; letter-spacing: .08em; color: var(--ai); margin: 2.6em 0 .9em; padding-top: 18px; }
.entry h2::before { content: ""; position: absolute; left: 0; top: 0; width: 36px; height: 3px; background: var(--brass); }
.entry > h2:first-child { margin-top: 0; }
.entry h3 { font-size: 1.18rem; font-weight: 800; margin: 2em 0 .6em; color: var(--ai); }
.entry ul, .entry ol { padding-left: 1.4em; margin: 0 0 1.4em; }
.entry li { margin-bottom: .35em; }
.entry li::marker { color: var(--brass-ink); }
.entry img { margin: 1.6em 0; }
.entry table { width: 100%; border-collapse: collapse; margin: 0 0 1.8em; font-size: .98rem; background: var(--white); }
.entry th, .entry td { text-align: left; vertical-align: top; padding: 16px 18px; border-bottom: 1px solid var(--line); }
.entry thead th { background: var(--ai); color: var(--white); font-weight: 700; border-bottom: 0; }
.entry tbody th { width: 9em; font-weight: 700; color: var(--brass-ink); background: var(--paper); }
.entry .notice { background: var(--white); border-left: 3px solid var(--brass); padding: 16px 20px; margin: 0 0 1.8em; }
.entry .price { font-family: var(--mincho); font-weight: 800; font-size: 2.2rem; color: var(--ai); margin: 0 0 .3em; }
.entry .video { position: relative; aspect-ratio: 16 / 9; margin: 1.6em 0; background: var(--ai); }
.entry .video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.entry .profile { display: grid; grid-template-columns: minmax(160px, 260px) 1fr; gap: 32px; align-items: start; margin-bottom: 2em; }
.entry .profile img { margin: 0; width: 100%; background: var(--mist); }
.entry .map { aspect-ratio: 4 / 3; margin: 1.6em 0; }
.entry .map iframe { width: 100%; height: 100%; border: 0; }
.entry .btn { margin: .4em 0; }

.pager { margin-top: 2em; }
.pager .nav-links { display: flex; gap: 12px; flex-wrap: wrap; }
.pager a, .pager span { padding: 6px 14px; border: 1px solid var(--line); text-decoration: none; }
.pager .current { background: var(--ai); color: var(--white); border-color: var(--ai); }

.tapbar { display: none; }

/* ==========================================================================
   タブレット・スマホ
   ========================================================================== */
@media (max-width: 1080px) {
	.menu-toggle {
		display: inline-flex; align-items: center; gap: 10px;
		min-height: 44px; padding: 0 16px;
		background: transparent; color: var(--white);
		border: 1px solid rgba(255, 255, 255, .5); border-radius: 4px;
		font: 700 .85rem var(--sans); cursor: pointer;
	}
	.menu-toggle__bars, .menu-toggle__bars::before { display: block; width: 18px; height: 2px; background: currentColor; position: relative; }
	.menu-toggle__bars::before { content: ""; position: absolute; top: 6px; left: 0; }
	.gnav {
		position: fixed; inset: 76px 0 0 0; z-index: 40;
		flex-direction: column; align-items: stretch; gap: 24px;
		padding: 16px var(--gutter) 120px;
		background: var(--ai); overflow-y: auto;
		transform: translateX(100%); visibility: hidden;
		transition: transform .25s ease, visibility 0s linear .25s;
	}
	.gnav.is-open { transform: none; visibility: visible; transition: transform .25s ease; }
	.gnav__list { flex-direction: column; gap: 0; }
	.gnav__link, .gnav .menu-item a { padding: 16px 0; border-bottom: 1px solid rgba(255, 255, 255, .12); font-size: 1.05rem; }
	.gnav__tel { align-items: flex-start; padding: 18px 20px; border: 0; border-radius: 4px; background: var(--brass); color: var(--ai); }
	.gnav__tel-label { color: var(--ai); }
	body.nav-open { overflow: hidden; }
	.learn__list { grid-template-columns: repeat(2, 1fr); }
	.learn__item:nth-child(2) { border-right: 0; }
	.learn__item:nth-child(n+3) { border-top: 1px solid rgba(255, 255, 255, .1); }
}

@media (max-width: 860px) {
	body { padding-bottom: 64px; }
	.pc-only { display: none; }

	.hero { padding-top: 48px; }
	.hero__print { right: -45%; top: 34%; width: 130vw; }
	.hero__title { font-size: clamp(2.1rem, 9.6vw, 3.2rem); }
	.hero__actions .btn { flex: 1 1 100%; }
	.creds { grid-template-columns: 1fr; }
	.creds__item, .creds__item + .creds__item { flex-direction: row; align-items: baseline; gap: 16px; padding: 16px 0; border-left: 0; border-bottom: 1px solid rgba(255, 255, 255, .12); }
	.creds__num { width: 3.4em; flex: none; }
	.creds__label { flex: 1; min-width: 0; }
	.voices .voices__grid .voice:nth-child(n+4) { display: none; }

	.voices__head { grid-template-columns: 1fr; margin-bottom: 32px; }
	.voices__actions .btn { flex: 1 1 100%; }

	.doctor__grid, .flow__grid, .price__grid, .faq__grid, .news__grid, .access__grid { grid-template-columns: 1fr; }
	.doctor__photo { max-width: 360px; width: calc(100% - 18px); }
	.features__list { grid-template-columns: 1fr; gap: 48px; }
	.learn__list { grid-template-columns: 1fr; }
	.learn__item { border-right: 0; border-top: 1px solid rgba(255, 255, 255, .1); padding-inline: 0; }
	.learn__item:first-child { border-top: 0; }
	.newslist__item { grid-template-columns: 1fr; }
	.entry .profile { grid-template-columns: 1fr; }
	.entry tbody th { width: 6.5em; }
	.week th, .week td { padding: 10px 2px; font-size: .85rem; }
	.week tbody th { font-size: .8rem; }

	.callout__inner { flex-direction: column; align-items: stretch; }
	.callout__tel { align-items: center; }
	.fnav__list { grid-template-columns: 1fr 1fr; gap: 6px 20px; }

	.tapbar {
		display: grid; grid-template-columns: 1.4fr 1fr 1fr;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
		background: var(--ai); border-top: 1px solid rgba(194, 155, 95, .5);
	}
	.tapbar__btn { display: flex; align-items: center; justify-content: center; min-height: 64px; font-size: .9rem; font-weight: 700; letter-spacing: .06em; color: var(--white); text-decoration: none; }
	.tapbar__btn + .tapbar__btn { border-left: 1px solid rgba(255, 255, 255, .12); }
	.tapbar__btn--tel { background: var(--brass); color: var(--ai); }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.hero__print { animation: none; }
	.gnav, .gnav.is-open, .qa__q::after { transition: none; }
}
