/*
Theme Name: 関内鍼療所 Child (ystandard child)
Theme URI: https://kannai-shinryosho.example.com/
Template: ystandard
Author: 関内鍼療所
Description: ystandard child theme implementing the Claude Design hi-fi mockup for the 関内鍼療所 top page.
Version: 3.6.0
*/

/* ==========================================================================
   Design tokens
   ========================================================================== */
:root {
	--kn-color-bg: #f7f0e6;
	--kn-color-surface: #fff;
	--kn-color-surface-alt: #f7efe4;
	--kn-color-surface-pink: #f9efe6;
	--kn-color-dark: #2a1d14;
	--kn-color-dark-soft: #4a3a2c;
	--kn-color-border: #e3d8c8;
	--kn-color-border-soft: #ece2d3;
	--kn-color-text: #2a1d14;
	--kn-color-text-soft: #4d4033;
	--kn-color-text-muted: #7a6c5c;
	--kn-color-text-faint: #a89a89;
	--kn-color-accent: #00907c;
	--kn-color-accent-hover: #006a5b;
	--kn-hero-from: #211609;
	--kn-hero-to: #a5824f;
	--kn-font: "Zen Kaku Gothic New", "Noto Sans JP", system-ui, sans-serif;
	--kn-font-serif: "Shippori Mincho", "Noto Serif JP", var(--kn-font);
	--kn-content-width: 1000px;
	--kn-side-pad: max(60px, calc((100% - var(--kn-content-width)) / 2));
}

body {
	background: var(--kn-color-bg);
	font-family: var(--kn-font);
	color: var(--kn-color-text);
}

.kn-page a {
	color: var(--kn-color-accent);
	text-decoration: none;
}
.kn-page a:hover {
	color: var(--kn-color-accent-hover);
}

.kn-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	padding: 15px 28px;
	border-radius: 2px;
	line-height: 1;
	text-align: center;
	transition: opacity 0.15s ease;
}
.kn-btn:hover {
	opacity: 0.85;
}
.kn-btn--primary {
	background: var(--kn-color-accent);
	color: #fff !important;
}
.kn-btn--outline {
	border: 1px solid var(--kn-color-text-muted);
	color: var(--kn-color-text) !important;
}
.kn-btn--on-dark {
	border-color: #8a7c6c;
	color: #fff !important;
}

.kn-placeholder {
	background: repeating-linear-gradient(45deg, #e9dcc6, #e9dcc6 8px, #ddccae 8px, #ddccae 16px);
	display: flex;
	align-items: center;
	justify-content: center;
	color: #8a7757;
	font: 16px ui-monospace, Menlo, monospace;
	text-align: center;
	line-height: 1.7;
	border: 1px solid #d5c19a;
}

.kn-section-num {
	display: inline-block;
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-accent);
	margin-right: 10px;
	vertical-align: middle;
}
.kn-section-title2 {
	margin-bottom: 48px;
}
.kn-section-title2 h2 {
	font: 400 30px/1.5 var(--kn-font-serif), var(--kn-font);
	color: var(--kn-color-text);
	margin: 0 0 20px;
}
.kn-section-title2__rule {
	height: 1px;
	background: var(--kn-color-border);
}

/* ==========================================================================
   Top utility bar
   ========================================================================== */
.kn-topbar {
	background: var(--kn-color-dark);
}
.kn-topbar__inner {
	max-width: 1200px;
	margin: 0 auto;
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 4px 24px;
	padding: 10px 28px;
	font-size: 16px;
	line-height: 1.6;
	color: #cbb9a0;
}

/* ==========================================================================
   Header
   ========================================================================== */
.kn-header {
	background: var(--kn-color-surface-alt);
	border-bottom: 1px solid var(--kn-color-border);
	position: sticky;
	top: 0;
	z-index: 200;
	box-shadow: 0 1px 0 rgba(0, 0, 0, 0.02);
}
.kn-header__inner {
	max-width: 1200px;
	margin: 0 auto;
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: 20px;
	padding: 14px 28px;
}
.kn-logo {
	flex: none;
}
.kn-logo__link {
	display: flex;
	align-items: center;
	gap: 12px;
	text-decoration: none;
	color: inherit !important;
}
.kn-logo__mark {
	flex: none;
	width: 36px;
	height: 36px;
	border: 1px solid var(--kn-color-accent);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--kn-color-accent);
	font: 16px/1 var(--kn-font);
}
.kn-logo__mark--footer {
	border-color: #8a7c6c;
	color: #d8cdbd;
}
.kn-logo__name {
	display: flex;
	flex-direction: column;
	gap: 3px;
}
.kn-logo__main {
	font: 700 20px/1.1 var(--kn-font);
	color: var(--kn-color-text);
	letter-spacing: 0.04em;
	white-space: nowrap;
}
.kn-logo__suffix {
	font: 400 16px/1.5 var(--kn-font);
	color: var(--kn-color-text-muted);
	letter-spacing: 0.01em;
	white-space: nowrap;
}

.kn-nav-panel {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	align-items: center;
	gap: 16px;
}
.kn-nav {
	min-width: 0;
}
.kn-nav ul {
	display: flex;
	flex-wrap: nowrap;
	gap: 20px;
	margin: 0;
	padding: 0;
	list-style: none;
	white-space: nowrap;
}
.kn-nav a {
	font-size: 16px;
	color: var(--kn-color-text-soft) !important;
}
.kn-header__right {
	flex: none;
	margin-left: auto;
	display: flex;
	align-items: center;
	gap: 14px;
}
.kn-header__tel {
	font-size: 17px;
	white-space: nowrap;
}
.kn-header__tel-label {
	display: block;
	font-size: 16px;
	letter-spacing: 0.1em;
	color: var(--kn-color-text-faint);
}
.kn-header__tel a {
	color: var(--kn-color-text) !important;
}

/* Hamburger toggle (mobile/tablet only) */
.kn-nav-toggle {
	display: none;
	flex: none;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 4px;
	background: none;
	border: 0;
	padding: 6px 4px;
	cursor: pointer;
	margin-left: auto;
}
.kn-nav-toggle__bar {
	width: 22px;
	height: 2px;
	background: var(--kn-color-text);
	transition: transform 0.2s ease, opacity 0.2s ease;
}
.kn-nav-toggle__label {
	font-size: 16px;
	color: var(--kn-color-text-muted);
	margin-top: 1px;
}
.kn-nav-toggle[aria-expanded="true"] .kn-nav-toggle__bar:nth-child(1) {
	transform: translateY(6px) rotate(45deg);
}
.kn-nav-toggle[aria-expanded="true"] .kn-nav-toggle__bar:nth-child(2) {
	opacity: 0;
}
.kn-nav-toggle[aria-expanded="true"] .kn-nav-toggle__bar:nth-child(3) {
	transform: translateY(-6px) rotate(-45deg);
}

/* PC: always a plain horizontal bar-style menu, no hamburger. */
@media (min-width: 1025px) {
	.kn-nav-panel {
		display: flex !important;
	}
}

/* SP / tablet only: collapse the nav+actions behind a hamburger toggle. */
@media (max-width: 1024px) {
	.kn-topbar__inner {
		font-size: 16px;
		padding: 8px 20px;
	}
	.kn-nav-toggle {
		display: flex;
	}
	.kn-nav-panel {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		background: var(--kn-color-surface-alt);
		border-top: 1px solid var(--kn-color-border);
		box-shadow: 0 8px 16px rgba(0, 0, 0, 0.08);
		max-height: calc(100vh - 100%);
		overflow-y: auto;
	}
	.kn-nav-panel.is-open {
		display: flex;
	}
	.kn-header__inner {
		align-items: flex-start;
		padding: 14px 20px;
		gap: 10px;
	}
	.kn-logo__link {
		gap: 8px;
	}
	.kn-logo__mark {
		width: 30px;
		height: 30px;
		font-size: 16px;
	}
	.kn-logo {
		flex: 1 1 auto;
		min-width: 0;
	}
	.kn-logo__main {
		font-size: 18px;
	}
	.kn-logo__suffix {
		white-space: normal;
		overflow-wrap: break-word;
		font-size: 16px;
	}
	.kn-nav-toggle {
		flex: none;
		align-self: flex-start;
		margin-left: 8px;
	}
	.kn-nav {
		width: 100%;
		padding: 8px 0;
	}
	.kn-nav ul {
		flex-direction: column;
		gap: 0;
		white-space: normal;
	}
	.kn-nav a {
		display: block;
		padding: 16px 28px;
		font-size: 16px;
		border-bottom: 1px solid var(--kn-color-border-soft);
	}
	.kn-header__right {
		width: 100%;
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
		padding: 16px 28px 20px;
	}
	.kn-header__tel {
		text-align: left;
	}
	.kn-header__right .kn-btn {
		width: 100%;
	}
}

@media (max-width: 400px) {
	.kn-header__inner {
		padding: 12px 14px;
		gap: 8px;
	}
	.kn-logo__main {
		font-size: 16px;
	}
	.kn-logo__suffix {
		font-size: 16px;
	}
	.kn-nav-toggle {
		padding: 4px 2px;
	}
	.kn-nav-toggle__bar {
		width: 20px;
	}
}

/* ==========================================================================
   Hero (FV)
   ========================================================================== */
.kn-hero {
	position: relative;
	overflow: hidden;
	padding: 80px var(--kn-side-pad) 100px;
	background:
		linear-gradient(rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.18)),
		url('assets/img/about-treatment.jpg') center 30% / cover no-repeat;
}
.kn-hero__inner {
	max-width: var(--kn-content-width);
	margin: 0 auto;
}
.kn-hero__eyebrow {
	display: flex;
	align-items: center;
	gap: 12px;
	font: 16px/1 ui-monospace, Menlo, monospace;
	letter-spacing: 0.08em;
	color: #d8c6a0;
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.95), 0 2px 18px rgba(0, 0, 0, 0.9);
	margin-bottom: 32px;
}
.kn-hero__eyebrow-rule {
	width: 32px;
	height: 1px;
	background: #d8c6a0;
}
.kn-hero__title {
	font: 400 38px/1.7 var(--kn-font-serif), var(--kn-font);
	color: #fff;
	margin: 0 0 28px;
	max-width: 720px;
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.95), 0 4px 24px rgba(0, 0, 0, 0.9);
}
.kn-hero__lead {
	font-size: 16px;
	line-height: 2.1;
	color: #e7dcc8;
	max-width: 600px;
	margin: 0 0 36px;
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.95), 0 2px 18px rgba(0, 0, 0, 0.9);
}
.kn-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
}
.kn-hero__actions .kn-btn--outline {
	border-color: #cbb693;
	color: #fff !important;
}
.kn-hero__badge {
	position: absolute;
	right: 60px;
	bottom: 40px;
	width: 110px;
	height: 110px;
	border-radius: 50%;
	background: #fff;
	color: var(--kn-color-accent);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	line-height: 1.2;
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.2);
}
.kn-hero__badge-label {
	font-size: 16px;
	color: var(--kn-color-text-muted);
}
.kn-hero__badge-num {
	font-size: 32px;
	font-weight: 700;
}
.kn-hero__badge-unit {
	font-size: 16px;
	color: var(--kn-color-text-muted);
}

/* ==========================================================================
   Feature strip (below hero)
   ========================================================================== */
.kn-feature-strip {
	background: var(--kn-color-surface-alt);
	padding: 0 var(--kn-side-pad);
}
.kn-feature-strip__inner {
	max-width: none;
	margin: 0;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
}
.kn-feature-strip__item {
	padding: 36px 32px;
	border-left: 1px solid var(--kn-color-border);
}
.kn-feature-strip__item:first-child {
	border-left: 0;
	padding-left: 0;
}
.kn-feature-strip__item:last-child {
	padding-right: 0;
}
.kn-feature-strip__item h3 {
	font-size: 17px;
	color: var(--kn-color-accent);
	margin: 0 0 10px;
	font-weight: 500;
}
.kn-feature-strip__item p {
	font-size: 16px;
	color: var(--kn-color-text-muted);
	margin: 0;
	line-height: 1.9;
}

/* ==========================================================================
   News
   ========================================================================== */
.kn-news {
	background: var(--kn-color-surface-pink);
	padding: 60px var(--kn-side-pad);
}
.kn-news__inner {
	max-width: none;
	margin: 0;
	display: grid;
	grid-template-columns: 280px 1fr;
	gap: 40px;
}
.kn-news__label {
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-accent);
	letter-spacing: 0.06em;
}
.kn-news__heading h2 {
	font: 400 26px/1.5 var(--kn-font-serif), var(--kn-font);
	color: var(--kn-color-text);
	margin: 12px 0 16px;
}
.kn-news__heading p {
	font-size: 16px;
	color: var(--kn-color-text-muted);
	line-height: 1.9;
	margin: 0 0 18px;
}
.kn-news__list {
	display: flex;
	flex-direction: column;
}
.kn-news__row {
	display: flex;
	align-items: baseline;
	gap: 20px;
	padding: 18px 0;
	border-bottom: 1px solid var(--kn-color-border);
}
.kn-news__date {
	flex: none;
	font-size: 16px;
	color: var(--kn-color-text-faint);
	font-family: ui-monospace, Menlo, monospace;
}
.kn-news__tag {
	flex: none;
	display: inline-block;
	font-size: 16px;
	color: var(--kn-color-accent);
	border: 1px solid var(--kn-color-accent);
	border-radius: 999px;
	padding: 4px 12px;
}
.kn-news__title {
	font-size: 16px;
	color: var(--kn-color-text-soft) !important;
}
.kn-news__empty {
	font-size: 16px;
	color: var(--kn-color-text-muted);
	padding: 16px 0;
}

/* ==========================================================================
   Generic section wrapper
   ========================================================================== */
.kn-section {
	max-width: none;
	padding: 72px var(--kn-side-pad);
}
.kn-section--alt {
	background: var(--kn-color-surface-alt);
}
.kn-section--pink {
	background: var(--kn-color-surface-pink);
}
.kn-section--alt > .kn-section__inner,
.kn-section--pink > .kn-section__inner {
	max-width: none;
	margin: 0;
}

/* ==========================================================================
   01 こだわり
   ========================================================================== */
.kn-about {
	display: flex;
	gap: 48px;
	align-items: center;
	flex-wrap: wrap;
}
.kn-about__photo {
	flex: 1 1 360px;
}
.kn-about__photo .kn-placeholder {
	height: 320px;
}
.kn-about__photo img {
	width: 100%;
	height: 320px;
	object-fit: cover;
	display: block;
}
.kn-about__body {
	flex: 1 1 400px;
	min-width: 280px;
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.kn-about__body h3 {
	font: 400 26px/1.7 var(--kn-font-serif), var(--kn-font);
	color: var(--kn-color-text);
	margin: 0;
}
.kn-about__body p {
	font-size: 16px;
	line-height: 2.1;
	color: var(--kn-color-text-soft);
	margin: 0;
}
.kn-about__more {
	font-size: 16px;
	color: var(--kn-color-accent);
	margin-top: 8px;
}

/* ==========================================================================
   02 経絡治療について / cards
   ========================================================================== */
.kn-cards {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
}
.kn-card {
	background: #fff;
	display: flex;
	flex-direction: column;
}
.kn-card .kn-placeholder {
	height: 130px;
}
.kn-card img {
	width: 100%;
	height: 130px;
	object-fit: cover;
	display: block;
}
.kn-card__body {
	padding: 26px 4px;
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.kn-card__body h3 {
	font-size: 20px;
	color: var(--kn-color-text);
	margin: 0;
	font-weight: 500;
}
.kn-card__body p {
	font-size: 16px;
	line-height: 2;
	color: var(--kn-color-text-soft);
	margin: 0;
}
.kn-card__more {
	font-size: 16px;
	color: var(--kn-color-accent);
	margin-top: 8px;
}

/* ==========================================================================
   03 料金・診療時間
   ========================================================================== */
.kn-price-grid {
	display: grid;
	grid-template-columns: 1.1fr 1fr;
	gap: 40px;
	align-items: start;
}
.kn-price-grid__label {
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-text-faint);
	letter-spacing: 0.06em;
	display: block;
	margin-bottom: 18px;
}
.kn-table {
	border-top: 1px solid var(--kn-color-border);
}
.kn-table__row {
	display: flex;
	justify-content: space-between;
	padding: 18px 4px;
	border-bottom: 1px solid var(--kn-color-border);
	font-size: 16px;
	color: var(--kn-color-text-soft);
}
.kn-table__note {
	font-size: 16px;
	color: var(--kn-color-text-faint);
	margin-top: 14px;
	line-height: 1.9;
}
.kn-hours-actions {
	display: flex;
	gap: 12px;
	margin-top: 22px;
}
.kn-hours-actions .kn-btn {
	flex: 1;
}

/* ==========================================================================
   04 FAQ
   ========================================================================== */
.kn-faq-list {
	display: flex;
	flex-direction: column;
}
.kn-faq {
	border-bottom: 1px solid var(--kn-color-border);
}
.kn-faq summary {
	cursor: pointer;
	list-style: none;
	display: flex;
	gap: 14px;
	align-items: center;
	padding: 24px 4px;
	font-size: 17px;
	line-height: 1.6;
	color: var(--kn-color-text);
}
.kn-faq summary::-webkit-details-marker {
	display: none;
}
.kn-faq summary::marker {
	content: "";
}
.kn-faq summary .kn-faq__q {
	color: var(--kn-color-accent);
	font-weight: 700;
}
.kn-faq summary .kn-faq__glyph {
	margin-left: auto;
	color: var(--kn-color-text-faint);
	font-size: 18px;
	line-height: 1;
}
.kn-faq[open] summary .kn-faq__glyph::before {
	content: "\2212";
}
.kn-faq:not([open]) summary .kn-faq__glyph::before {
	content: "\002B";
}
.kn-faq__a {
	padding: 0 4px 26px 36px;
	font-size: 16px;
	line-height: 2;
	color: var(--kn-color-text-soft);
}
.kn-faq-more {
	font-size: 16px;
	color: var(--kn-color-accent);
	margin-top: 28px;
	display: inline-block;
}

/* FAQ category filter chips (よくある質問ページ) */
.kn-faq-filter {
	display: flex;
	gap: 10px;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	padding-bottom: 4px;
	margin-bottom: 28px;
}
.kn-faq-filter::-webkit-scrollbar {
	display: none;
}
.kn-faq-filter__chip {
	flex: none;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	white-space: nowrap;
	border: 1px solid var(--kn-color-border);
	background: #fff;
	color: var(--kn-color-text-soft);
	border-radius: 999px;
	padding: 0 20px;
	font: 16px var(--kn-font);
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.kn-faq-filter__chip.is-active {
	background: var(--kn-color-accent);
	border-color: var(--kn-color-accent);
	color: #fff;
}
.kn-faq-empty {
	font-size: 16px;
	color: var(--kn-color-text-muted);
	padding: 24px 4px;
}

/* ==========================================================================
   05 アクセス
   ========================================================================== */
.kn-access-grid {
	display: grid;
	grid-template-columns: 1fr 1.25fr;
	gap: 40px;
	align-items: stretch;
}
.kn-access-info {
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.kn-access-info__label {
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-text-faint);
	letter-spacing: 0.06em;
}
.kn-access-info__addr {
	font-size: 20px;
	color: var(--kn-color-text);
	line-height: 1.8;
}
.kn-access-info__tel {
	font-size: 16px;
	color: var(--kn-color-text-soft);
}
.kn-route-label {
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-text-faint);
	letter-spacing: 0.06em;
	margin-top: 8px;
}
.kn-route-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.kn-route-list li {
	font-size: 16px;
	line-height: 1.7;
	color: var(--kn-color-text-soft);
	padding-left: 16px;
	position: relative;
}
.kn-route-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 8px;
	width: 6px;
	height: 1px;
	background: var(--kn-color-text-faint);
}
.kn-access-info .kn-btn {
	margin-top: auto;
	align-self: flex-start;
}
.kn-map {
	min-height: 280px;
	border: 1px solid var(--kn-color-border);
	overflow: hidden;
}
.kn-map iframe {
	width: 100%;
	height: 100%;
	min-height: 280px;
	border: 0;
	display: block;
}
.kn-access-media {
	display: flex;
	flex-direction: column;
	gap: 16px;
	height: 100%;
}
.kn-access-media .kn-map {
	flex: 1;
}
.kn-access-photo {
	border: 1px solid var(--kn-color-border);
	overflow: hidden;
}
.kn-access-photo img {
	width: 100%;
	height: 200px;
	object-fit: cover;
	display: block;
}

/* ==========================================================================
   Footer
   ========================================================================== */
.kn-footer {
	background: var(--kn-color-dark);
	color: #c9bda9;
}
.kn-footer__inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 72px 60px 28px;
	display: flex;
	flex-direction: column;
	gap: 48px;
}
.kn-footer__row {
	display: grid;
	grid-template-columns: 1.3fr 1fr 1fr auto;
	gap: 40px;
	align-items: start;
}
.kn-footer__brand {
	display: flex;
	flex-direction: column;
	gap: 18px;
}
.kn-footer__brand-name {
	display: flex;
	align-items: center;
	gap: 12px;
	font: 700 19px/1 var(--kn-font);
	color: #fff;
	letter-spacing: 0.05em;
}
.kn-footer__brand-info {
	font-size: 16px;
	color: #a8987e;
	line-height: 1.9;
}
.kn-footer__brand-info a {
	color: #d8cdbd !important;
}
.kn-footer__brand-hours {
	font-size: 16px;
	color: #8f8271;
	line-height: 1.8;
	padding-top: 4px;
	border-top: 1px solid var(--kn-color-dark-soft);
}
.kn-footer-nav {
	display: contents;
}
.kn-footer-col {
	display: flex;
	flex-direction: column;
	padding-top: 4px;
}
.kn-footer-col__label {
	display: block;
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: #8f8271;
	letter-spacing: 0.08em;
	margin-bottom: 20px;
}
.kn-footer-nav ul {
	display: flex;
	flex-direction: column;
	gap: 16px;
	font-size: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.kn-footer-nav a {
	color: #d8cdbd !important;
}
.kn-footer__cta-group {
	display: flex;
	flex-direction: column;
	gap: 12px;
	width: 180px;
	padding-top: 4px;
}
.kn-footer__cta-group .kn-btn {
	width: 100%;
}
.kn-footer__bottom {
	border-top: 1px solid var(--kn-color-dark-soft);
	padding-top: 24px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px;
	font-size: 16px;
	color: #8f8271;
}
.kn-footer__bottom-links {
	display: flex;
	gap: 20px;
}
.kn-footer__bottom-links a {
	color: #8f8271 !important;
}

@media (max-width: 900px) {
	.kn-news__inner {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 782px) {
	.kn-hero {
		padding: 48px 24px 100px;
	}
	.kn-hero__title {
		font-size: 28px;
	}
	.kn-hero__badge {
		right: 24px;
		bottom: 24px;
		width: 84px;
		height: 84px;
	}
	.kn-hero__badge-num {
		font-size: 24px;
	}
	.kn-feature-strip {
		padding-left: 0;
		padding-right: 0;
	}
	.kn-feature-strip__inner {
		grid-template-columns: 1fr;
	}
	.kn-feature-strip__item {
		border-left: 0 !important;
		border-top: 1px solid var(--kn-color-border);
		padding-left: 24px !important;
		padding-right: 24px !important;
	}
	.kn-feature-strip__item:first-child {
		border-top: 0;
	}
	.kn-news,
	.kn-section,
	.kn-footer__inner {
		padding-left: 24px;
		padding-right: 24px;
	}
	.kn-about,
	.kn-cards,
	.kn-price-grid,
	.kn-access-grid {
		grid-template-columns: 1fr;
		display: flex;
		flex-direction: column;
	}
	.kn-access-media {
		height: auto;
	}
	.kn-footer__row {
		grid-template-columns: 1fr;
		gap: 36px;
	}
	.kn-footer__cta-group {
		width: 100%;
		padding-top: 4px;
	}
}

/* ==========================================================================
   Subpages (shared components)
   ========================================================================== */
.kn-breadcrumb {
	font-size: 16px;
	color: var(--kn-color-text-muted);
	margin-bottom: 20px;
}
.kn-breadcrumb a {
	color: var(--kn-color-text-muted) !important;
}
.kn-breadcrumb span {
	margin: 0 8px;
	color: var(--kn-color-text-faint);
}

.kn-page-hero {
	background: linear-gradient(115deg, var(--kn-color-surface-alt), var(--kn-color-surface-pink));
	padding: 48px var(--kn-side-pad) 56px;
}
.kn-page-hero__inner {
	max-width: var(--kn-content-width);
	margin: 0 auto;
}
.kn-eyebrow {
	display: block;
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-accent);
	letter-spacing: 0.1em;
	margin-bottom: 14px;
}
.kn-page-hero h1 {
	font: 400 36px/1.5 var(--kn-font-serif), var(--kn-font);
	color: var(--kn-color-text);
	margin: 0 0 20px;
}
.kn-page-hero h1 + .kn-section-title2__rule {
	max-width: 40px;
	margin: 0 0 20px;
}
.kn-page-hero__lead {
	font-size: 16px;
	line-height: 1.9;
	color: var(--kn-color-text-soft);
	max-width: 760px;
	margin: 0;
}

.kn-page-section {
	max-width: none;
	padding: 64px var(--kn-side-pad);
}
.kn-page-section--alt {
	background: var(--kn-color-surface-alt);
}
.kn-page-section--pink {
	background: var(--kn-color-surface-pink);
}
.kn-page-section__inner {
	max-width: var(--kn-content-width);
	margin: 0 auto;
}

/* Point cards (3-up, with POINT 0x tag) */
.kn-point-cards {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
	margin-top: 32px;
}
.kn-point-card {
	background: var(--kn-color-surface-alt);
	padding: 24px;
}
.kn-point-card__tag {
	display: block;
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-text-faint);
	letter-spacing: 0.08em;
	margin-bottom: 10px;
}
.kn-point-card h3 {
	font-size: 17px;
	color: var(--kn-color-accent);
	margin: 0 0 10px;
	font-weight: 500;
}
.kn-point-card p {
	font-size: 16px;
	line-height: 1.8;
	color: var(--kn-color-text-soft);
	margin: 0;
}

/* Generic N-up info card grid (concerns, symptoms, etc.) */
.kn-info-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 20px;
	margin-top: 32px;
}
.kn-info-grid__item {
	background: #fff;
	border: 1px solid var(--kn-color-border);
	padding: 22px;
}
.kn-info-grid__item h3 {
	font-size: 16px;
	color: var(--kn-color-text);
	margin: 0 0 8px;
	font-weight: 500;
}
.kn-info-grid__item p {
	font-size: 16px;
	line-height: 1.8;
	color: var(--kn-color-text-muted);
	margin: 0;
}

/* Label / value info table (before-your-visit guidance, etc.) */
.kn-info-table {
	border-top: 1px solid var(--kn-color-border);
	margin-top: 32px;
}
.kn-info-table__row {
	display: grid;
	grid-template-columns: 160px 1fr;
	gap: 24px;
	padding: 20px 4px;
	border-bottom: 1px solid var(--kn-color-border);
}
.kn-info-table__label {
	font-size: 16px;
	color: var(--kn-color-accent);
	font-weight: 500;
}
.kn-info-table__value {
	font-size: 16px;
	line-height: 1.8;
	color: var(--kn-color-text-soft);
}

/* Fee table (区分 / 料金 / 備考) */
.kn-fee-table {
	margin-top: 32px;
	border: 1px solid var(--kn-color-border);
}
.kn-fee-table__row {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1.4fr;
	gap: 16px;
	padding: 18px 20px;
	border-bottom: 1px solid var(--kn-color-border);
	font-size: 16px;
	color: var(--kn-color-text-soft);
}
.kn-fee-table__row:last-child {
	border-bottom: 0;
}
.kn-fee-table__row--head {
	background: var(--kn-color-surface-alt);
	font-size: 16px;
	color: var(--kn-color-text-faint);
	letter-spacing: 0.06em;
}
.kn-fee-table__price {
	font-weight: 500;
	color: var(--kn-color-text);
}

/* CTA banner (ご予約・お問い合わせ) reused across subpages */
.kn-cta-banner {
	background: var(--kn-color-surface-pink);
	padding: 48px var(--kn-side-pad);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}
.kn-cta-banner__inner {
	max-width: var(--kn-content-width);
	margin: 0 auto;
	width: 100%;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}
.kn-cta-banner h2 {
	font-size: 24px;
	font-weight: 400;
	color: var(--kn-color-text);
	margin: 10px 0 8px;
	font-family: var(--kn-font-serif), var(--kn-font);
}
.kn-cta-banner p {
	font-size: 16px;
	color: var(--kn-color-text-muted);
	margin: 0;
}
.kn-cta-banner__actions {
	display: flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
}
.kn-cta-banner__tel {
	background: #fff;
	border: 1px solid var(--kn-color-border);
	padding: 12px 24px;
	text-align: center;
}
.kn-cta-banner__tel-label {
	display: block;
	font-size: 16px;
	color: var(--kn-color-text-faint);
	letter-spacing: 0.1em;
}
.kn-cta-banner__tel a {
	font-size: 18px;
	font-weight: 500;
	color: var(--kn-color-text) !important;
}

/* Mobile-only fixed bottom CTA bar (subpages only) */
.kn-mobile-cta-bar {
	display: none;
}

/* Timeline (施術の流れ) */
.kn-timeline {
	margin-top: 32px;
	display: flex;
	flex-direction: column;
}
.kn-timeline__step {
	display: grid;
	grid-template-columns: 48px 1fr 280px;
	gap: 32px;
	padding: 32px 0;
	border-bottom: 1px solid var(--kn-color-border);
	position: relative;
}
.kn-timeline__step:last-child {
	border-bottom: 0;
}
.kn-timeline__num {
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: var(--kn-color-accent);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	font-weight: 500;
}
.kn-timeline__step:not(:last-child)::before {
	content: "";
	position: absolute;
	left: 23px;
	top: 80px;
	bottom: 0;
	width: 1px;
	background: var(--kn-color-border);
}
.kn-timeline__body h3 {
	font-size: 19px;
	color: var(--kn-color-text);
	margin: 8px 0 10px;
	font-weight: 500;
}
.kn-timeline__body p {
	font-size: 16px;
	line-height: 1.8;
	color: var(--kn-color-text-soft);
	margin: 0;
}
.kn-timeline__photo .kn-placeholder {
	height: 140px;
}
.kn-timeline__photo img {
	width: 100%;
	height: 140px;
	object-fit: cover;
	display: block;
}

/* Director profile */
.kn-director-card {
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 32px;
	align-items: start;
}
.kn-director-card .kn-placeholder {
	height: 260px;
}
.kn-director-card img {
	width: 100%;
	height: 260px;
	object-fit: cover;
	display: block;
}
.kn-director-card__name {
	font-size: 22px;
	color: var(--kn-color-text);
	margin: 0 0 6px;
	font-weight: 500;
}
.kn-director-card__kana {
	font-size: 16px;
	color: var(--kn-color-text-muted);
	padding-bottom: 20px;
	border-bottom: 1px solid var(--kn-color-border);
	margin-bottom: 20px;
}
.kn-director-card__body h3 {
	font: 400 24px/1.6 var(--kn-font-serif), var(--kn-font);
	color: var(--kn-color-text);
	margin: 0 0 16px;
}
.kn-director-card__body p {
	font-size: 16px;
	line-height: 1.9;
	color: var(--kn-color-text-soft);
	margin: 0 0 12px;
}
.kn-license-box {
	margin-top: 20px;
	background: var(--kn-color-surface-alt);
	padding: 20px 24px;
}
.kn-license-box__label {
	display: block;
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-text-faint);
	letter-spacing: 0.08em;
	margin-bottom: 12px;
}
.kn-license-box li {
	font-size: 16px;
	color: var(--kn-color-text-soft);
	line-height: 1.9;
}

.kn-career-list {
	margin-top: 32px;
	border-top: 1px solid var(--kn-color-border);
}
.kn-career-list__row {
	display: grid;
	grid-template-columns: 120px 1fr;
	gap: 24px;
	padding: 18px 4px;
	border-bottom: 1px solid var(--kn-color-border);
}
.kn-career-list__year {
	font-size: 16px;
	color: var(--kn-color-accent);
	font-family: ui-monospace, Menlo, monospace;
}
.kn-career-list__desc {
	font-size: 16px;
	color: var(--kn-color-text-soft);
}

.kn-philosophy-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 24px;
	margin-top: 32px;
}
.kn-philosophy-card {
	border-left: 3px solid var(--kn-color-accent);
	padding: 4px 0 4px 24px;
}
.kn-philosophy-card h3 {
	font-size: 17px;
	color: var(--kn-color-text);
	margin: 0 0 10px;
	font-weight: 500;
}
.kn-philosophy-card p {
	font-size: 16px;
	line-height: 1.8;
	color: var(--kn-color-text-soft);
	margin: 0;
}

/* Table-of-contents pill chips */
.kn-toc {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 24px;
}
.kn-toc a {
	display: inline-block;
	border: 1px solid var(--kn-color-accent);
	color: var(--kn-color-accent) !important;
	border-radius: 999px;
	padding: 10px 22px;
	font-size: 16px;
}

/* Alternating numbered blocks (経絡治療について 等) */
.kn-alt-block {
	display: flex;
	align-items: center;
	gap: 40px;
	padding: 48px var(--kn-side-pad);
	border-bottom: 1px solid var(--kn-color-border);
}
.kn-alt-block__inner {
	max-width: var(--kn-content-width);
	margin: 0 auto;
	display: flex;
	align-items: center;
	gap: 40px;
	width: 100%;
}
.kn-alt-block--reverse .kn-alt-block__inner {
	flex-direction: row-reverse;
}
.kn-alt-block__text {
	flex: 1 1 400px;
}
.kn-alt-block__photo {
	flex: 1 1 320px;
}
.kn-alt-block__photo .kn-placeholder {
	height: 220px;
}
.kn-alt-block__photo img {
	width: 100%;
	height: 220px;
	object-fit: cover;
	display: block;
}
.kn-alt-block__num {
	display: block;
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-accent);
	margin-bottom: 10px;
}
.kn-alt-block__text h3 {
	font-size: 22px;
	color: var(--kn-color-text);
	margin: 0 0 16px;
	font-weight: 500;
}
.kn-alt-block__text p {
	font-size: 16px;
	line-height: 1.9;
	color: var(--kn-color-text-soft);
	margin: 0 0 10px;
}
.kn-cross-link {
	margin: 40px auto 0;
	max-width: var(--kn-content-width);
	background: #fff;
	border: 1px solid var(--kn-color-border);
	padding: 28px 32px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}
.kn-cross-link h3 {
	font-size: 17px;
	color: var(--kn-color-text-faint);
	margin: 0 0 6px;
	font-weight: 500;
}
.kn-cross-link p {
	font-size: 16px;
	color: var(--kn-color-text-muted);
	margin: 0;
}

/* ==========================================================================
   News article (single.php)
   ========================================================================== */
.kn-article-hero__meta {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 18px;
}
.kn-article-hero h1 {
	font-size: 32px;
	margin: 0;
}

.kn-article-layout {
	display: grid;
	grid-template-columns: 1fr 320px;
	gap: 56px;
	align-items: start;
}

.kn-article__thumb {
	margin-bottom: 32px;
}
.kn-article__thumb img {
	width: 100%;
	height: auto;
	display: block;
}

/* the_content() typography */
.kn-article-body {
	font-size: 16px;
	line-height: 2;
	color: var(--kn-color-text-soft);
}
.kn-article-body p {
	margin: 0 0 28px;
}
.kn-article-body h2 {
	font-size: 22px;
	font-weight: 500;
	color: var(--kn-color-text);
	border-left: 3px solid var(--kn-color-accent);
	padding-left: 20px;
	margin: 48px 0 24px;
}
.kn-article-body h3 {
	font-size: 18px;
	font-weight: 500;
	color: var(--kn-color-text);
	margin: 36px 0 18px;
}
.kn-article-body blockquote {
	background: var(--kn-color-surface-alt);
	border: 1px solid var(--kn-color-border);
	padding: 24px 28px;
	margin: 32px 0;
}
.kn-article-body blockquote p:last-child {
	margin-bottom: 0;
}
.kn-article-body ol {
	list-style: none;
	margin: 0 0 28px;
	padding: 0;
	counter-reset: kn-ol;
}
.kn-article-body ol li {
	counter-increment: kn-ol;
	display: flex;
	gap: 16px;
	padding: 10px 0;
}
.kn-article-body ol li::before {
	content: counter(kn-ol, decimal-leading-zero);
	flex: none;
	font: 600 16px ui-monospace, Menlo, monospace;
	color: var(--kn-color-accent);
}
.kn-article-body ul {
	margin: 0 0 28px;
	padding-left: 22px;
}
.kn-article-body figure {
	margin: 32px 0;
}
.kn-article-body img {
	width: 100%;
	height: auto;
	display: block;
}
.kn-article-body figcaption {
	font-size: 16px;
	color: var(--kn-color-text-faint);
	margin-top: 10px;
	text-align: center;
}

/* Prev / next post navigation */
.kn-post-nav {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
	margin: 48px 0;
	padding: 24px 0;
	border-top: 1px solid var(--kn-color-border);
	border-bottom: 1px solid var(--kn-color-border);
}
.kn-post-nav__next {
	text-align: right;
}
.kn-post-nav a {
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.kn-post-nav__label {
	font-size: 16px;
	color: var(--kn-color-text-faint);
}
.kn-post-nav__title {
	font-size: 16px;
	color: var(--kn-color-text-soft) !important;
}

/* Related posts */
.kn-related {
	margin-bottom: 40px;
}
.kn-related__label {
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-accent);
	letter-spacing: 0.06em;
	padding-bottom: 16px;
	border-bottom: 1px solid var(--kn-color-border);
	margin-bottom: 24px;
}
.kn-related__label span {
	font-family: var(--kn-font);
	color: var(--kn-color-text);
	font-size: 17px;
	letter-spacing: normal;
	margin-left: 12px;
}
.kn-related__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
}
.kn-related__card {
	display: block;
	color: inherit !important;
}
.kn-related__thumb {
	margin-bottom: 12px;
}
.kn-related__thumb img,
.kn-related__thumb.kn-placeholder {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	display: block;
}
.kn-related__meta {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 8px;
}
.kn-related__title {
	font-size: 16px;
	line-height: 1.7;
	color: var(--kn-color-text-soft);
}

/* Sidebar */
.kn-sidebar {
	display: flex;
	flex-direction: column;
	gap: 40px;
}
.kn-widget__label {
	display: block;
	font: 600 16px/1 ui-monospace, Menlo, monospace;
	color: var(--kn-color-text-faint);
	letter-spacing: 0.08em;
	margin-bottom: 10px;
}
.kn-widget__title {
	font-size: 18px;
	font-weight: 500;
	color: var(--kn-color-text);
	margin: 0 0 16px;
	padding-bottom: 16px;
	border-bottom: 1px solid var(--kn-color-border);
}
.kn-category-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.kn-category-list li {
	border-bottom: 1px solid var(--kn-color-border-soft);
}
.kn-category-list a {
	display: flex;
	justify-content: space-between;
	padding: 14px 2px;
	font-size: 16px;
	color: var(--kn-color-text-soft) !important;
}
.kn-recent-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 18px;
}
.kn-recent-list a {
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.kn-recent-list__date {
	font-size: 16px;
	color: var(--kn-color-text-faint);
	font-family: ui-monospace, Menlo, monospace;
}
.kn-recent-list__title {
	font-size: 16px;
	line-height: 1.6;
	color: var(--kn-color-text-soft) !important;
}
.kn-sidebar-cta {
	background: var(--kn-color-accent);
	color: #fff;
	padding: 28px 24px;
	text-align: center;
}
.kn-sidebar-cta h2 {
	font-size: 18px;
	font-weight: 500;
	margin: 0 0 10px;
}
.kn-sidebar-cta p {
	font-size: 16px;
	color: #d6ece8;
	margin: 0 0 18px;
	line-height: 1.8;
}
.kn-sidebar-cta__btn {
	display: block;
	width: 100%;
	background: #fff;
	color: var(--kn-color-accent) !important;
	margin-bottom: 14px;
}
.kn-sidebar-cta__tel {
	display: block;
	font-size: 18px;
	font-weight: 500;
	color: #fff !important;
}

/* ==========================================================================
   News archive (home.php / お知らせ一覧)
   ========================================================================== */
.kn-news-list {
	display: flex;
	flex-direction: column;
}
.kn-news-item {
	display: flex;
	gap: 28px;
	padding: 28px 0;
	border-bottom: 1px solid var(--kn-color-border);
	color: inherit !important;
}
.kn-news-item__thumb {
	flex: none;
	width: 180px;
	aspect-ratio: 4 / 3;
}
.kn-news-item__thumb img {
	width: 100%;
	height: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	display: block;
}
.kn-news-item__body {
	flex: 1 1 auto;
	min-width: 0;
}
.kn-news-item__meta {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 10px;
}
.kn-news-item__title {
	font-size: 18px;
	font-weight: 500;
	color: var(--kn-color-text);
	margin: 0 0 10px;
}
.kn-news-item__excerpt {
	font-size: 16px;
	line-height: 1.8;
	color: var(--kn-color-text-muted);
	margin: 0;
}

.kn-news-pagination {
	margin-top: 40px;
}
.kn-news-pagination .nav-links {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	flex-wrap: wrap;
}
.kn-news-pagination a,
.kn-news-pagination span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 12px;
	font-size: 16px;
	color: var(--kn-color-text-soft);
	border: 1px solid var(--kn-color-border);
}
.kn-news-pagination a {
	color: var(--kn-color-text-soft) !important;
}
.kn-news-pagination .current {
	background: var(--kn-color-accent);
	border-color: var(--kn-color-accent);
	color: #fff !important;
}

/* ==========================================================================
   Contact form (Contact Form 7)
   ========================================================================== */
.kn-form-wrap {
	max-width: 640px;
	margin: 32px auto 0;
}
.kn-form-wrap form p {
	margin: 0 0 26px;
}
.kn-form-wrap label {
	display: block;
	font-size: 16px;
	font-weight: 500;
	color: var(--kn-color-text);
	margin-bottom: 10px;
}
.kn-form-wrap input[type="text"],
.kn-form-wrap input[type="email"],
.kn-form-wrap input[type="tel"],
.kn-form-wrap textarea {
	width: 100%;
	font: 16px/1.6 var(--kn-font);
	color: var(--kn-color-text);
	background: #fff;
	border: 1px solid var(--kn-color-border);
	border-radius: 2px;
	padding: 14px 16px;
}
.kn-form-wrap textarea {
	min-height: 160px;
	resize: vertical;
}
.kn-form-wrap input:focus,
.kn-form-wrap textarea:focus {
	outline: none;
	border-color: var(--kn-color-accent);
}
.kn-form-wrap .wpcf7-list-item {
	display: block;
	margin: 0 0 12px;
}
.kn-form-wrap .wpcf7-list-item label {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	font-size: 16px;
	font-weight: 400;
	color: var(--kn-color-text-soft);
	margin-bottom: 0;
	cursor: pointer;
}
.kn-form-wrap .wpcf7-list-item input[type="checkbox"] {
	margin-top: 4px;
	width: 18px;
	height: 18px;
	accent-color: var(--kn-color-accent);
	flex-shrink: 0;
}
.kn-form-wrap .wpcf7-submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	font: 500 16px/1 var(--kn-font);
	padding: 18px 28px;
	border: 0;
	border-radius: 2px;
	background: var(--kn-color-accent);
	color: #fff;
	cursor: pointer;
	transition: opacity 0.15s ease;
}
.kn-form-wrap .wpcf7-submit:hover {
	opacity: 0.85;
}
.kn-form-wrap .wpcf7-spinner {
	margin-left: 12px;
}
.kn-form-wrap .wpcf7-not-valid-tip {
	display: block;
	font-size: 16px;
	color: #c0392b;
	margin-top: 8px;
}
.kn-form-wrap .wpcf7-response-output {
	margin: 24px 0 0;
	padding: 16px 18px;
	border: 1px solid var(--kn-color-border);
	border-radius: 2px;
	font-size: 16px;
	line-height: 1.8;
}
.kn-form-wrap form.sent .wpcf7-response-output {
	border-color: var(--kn-color-accent);
	color: var(--kn-color-accent);
}
.kn-form-wrap form.failed .wpcf7-response-output,
.kn-form-wrap form.aborted .wpcf7-response-output,
.kn-form-wrap form.invalid .wpcf7-response-output {
	border-color: #c0392b;
	color: #c0392b;
}
.kn-form-note {
	margin-top: 24px;
	font-size: 16px;
	color: var(--kn-color-text-muted);
	text-align: center;
}
.kn-form-note a {
	text-decoration: underline;
}

/* ==========================================================================
   Privacy policy page (plain article typography)
   ========================================================================== */
.kn-privacy {
	max-width: 760px;
}
.kn-privacy p {
	font-size: 16px;
	line-height: 1.9;
	color: var(--kn-color-text-soft);
	margin: 0 0 20px;
}
.kn-privacy h2 {
	font: 500 20px/1.6 var(--kn-font);
	color: var(--kn-color-text);
	margin: 44px 0 16px;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--kn-color-border);
}
.kn-privacy h2:first-child {
	margin-top: 0;
}
.kn-privacy ul {
	margin: 0 0 20px;
	padding-left: 22px;
}
.kn-privacy li {
	font-size: 16px;
	line-height: 1.9;
	color: var(--kn-color-text-soft);
	margin-bottom: 8px;
}

@media (max-width: 782px) {
	.kn-page-hero,
	.kn-page-section,
	.kn-alt-block,
	.kn-cta-banner {
		padding-left: 24px;
		padding-right: 24px;
	}
	.kn-point-cards,
	.kn-philosophy-grid {
		grid-template-columns: 1fr;
	}
	.kn-director-card,
	.kn-alt-block__inner,
	.kn-alt-block--reverse .kn-alt-block__inner {
		flex-direction: column;
		display: flex;
	}
	.kn-director-card {
		display: flex;
	}
	.kn-timeline__step {
		grid-template-columns: 40px 1fr;
	}
	.kn-timeline__photo {
		grid-column: 2;
	}
	.kn-timeline__step::before {
		left: 19px !important;
	}
	.kn-fee-table__row {
		display: grid;
		grid-template-columns: 1fr auto;
		grid-template-areas: "label price" "note note";
		column-gap: 12px;
		row-gap: 6px;
		padding: 18px 16px;
	}
	.kn-fee-table__row > *:nth-child(1) {
		grid-area: label;
	}
	.kn-fee-table__row > *:nth-child(2) {
		grid-area: price;
	}
	.kn-fee-table__row > *:nth-child(3) {
		grid-area: note;
		font-size: 16px;
		color: var(--kn-color-text-faint);
	}
	.kn-fee-table__row--head {
		display: none;
	}
	.kn-info-table__row {
		display: flex;
		justify-content: space-between;
		align-items: baseline;
		gap: 16px;
		flex-wrap: wrap;
	}
	.kn-cta-banner__inner {
		flex-direction: column;
		align-items: flex-start;
	}

	/* Bottom fixed CTA bar: visible on subpages, mobile/tablet only */
	.kn-mobile-cta-bar {
		display: flex;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 250;
		box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.12);
	}
	.kn-mobile-cta-bar__tel,
	.kn-mobile-cta-bar__reserve {
		flex: 1 1 50%;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		min-height: 56px;
		font-size: 16px;
		font-weight: 500;
		text-decoration: none;
	}
	.kn-mobile-cta-bar__tel {
		background: #fff;
		color: var(--kn-color-text) !important;
		border-top: 1px solid var(--kn-color-border);
	}
	.kn-mobile-cta-bar__label {
		font-size: 16px;
		color: var(--kn-color-text-faint);
		letter-spacing: 0.08em;
	}
	.kn-mobile-cta-bar__reserve {
		background: var(--kn-color-accent);
		color: #fff !important;
	}
	body:not(.home) {
		padding-bottom: 56px;
	}

	/* Larger touch targets */
	.kn-nav-toggle {
		min-width: 44px;
		min-height: 44px;
		padding: 10px;
	}
	.kn-form-wrap .wpcf7-list-item label {
		padding: 6px 0;
	}
	.kn-footer-nav a {
		display: inline-block;
		padding: 4px 0;
	}

	/* News article */
	.kn-article-layout {
		grid-template-columns: 1fr;
		gap: 48px;
	}
	.kn-article-hero h1 {
		font-size: 24px;
	}
	.kn-post-nav {
		grid-template-columns: 1fr;
		gap: 20px;
	}
	.kn-post-nav__next {
		text-align: left;
	}
	.kn-related__grid {
		grid-template-columns: 1fr;
	}

	/* News archive */
	.kn-news-item {
		gap: 16px;
	}
	.kn-news-item__thumb {
		width: 96px;
	}
	.kn-news-item__title {
		font-size: 16px;
	}
	.kn-news-item__excerpt {
		display: none;
	}
}
