@charset "utf-8";

/* =========================================================
   variables
========================================================= */
:root {
	--brown: #8c5233;
	--red: #b53f3c;
	--pink: #f6eef0;
	--pink2: #f1e4e7;
	--gray: #f7f6f4;
	--taupe: #8e7979;
	--wide: 1446px;
	--inner: 1100px;
}

/* =========================================================
   common
========================================================= */
#wrapper {
	overflow: hidden;
}
.sp {
	display: none;
}
img {
	max-width: 100%;
}

.josefin-sans {
	font-family: "Josefin Sans", sans-serif;
}

.inner {
	width: 100%;
	max-width: var(--inner);
	margin: 0 auto;
	padding: 0 24px;
}

/* section common heading */
.lead-block {
	text-align: center;
}
.lead-block .ttl {
	font-size: 3.4rem;
	font-weight: 700;
	line-height: 1.6;
	letter-spacing: .04em;
	color: var(--brown);
}
.lead-block .lead {
	margin-top: 28px;
	font-size: 1.8rem;
	font-weight: 500;
	line-height: 2;
	letter-spacing: .04em;
	color: var(--brown);
}

/* common button */
.btn {
	text-align: center;
}
.btn a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 14px;
	width: 340px;
	max-width: 100%;
	height: 66px;
	border: 1px solid var(--brown);
	font-size: 1.8rem;
	font-weight: 500;
	letter-spacing: .28em;
	color: var(--brown);
	text-indent: .28em;
}
.btn a span {
	padding-top: 3px;
}
.btn a .arrow {
	display: inline-block;
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 6px 0 6px 10px;
	border-color: transparent transparent transparent var(--brown);
}
.btn a:hover {
	background: var(--brown);
	color: #fff;
	opacity: 1;
}
.btn a:hover .arrow {
	border-left-color: #fff;
}

/* =========================================================
   header
========================================================= */
.header {
	position: relative;
	background: #fff;
	padding-bottom: 30px;
	z-index: 10;
}
.header .inner {
	max-width: 1720px;
	padding: 0 40px 0 44px;
	height: 100px;
	display: flex;
	align-items: center;
}
.header .logo {
	width: 174px;
	flex-shrink: 0;
}
.header .logo a:hover {
	opacity: .7;
}
.header-menu {
	display: contents;
}
.header-btn-sp {
	display: none;
}
.hamburger {
	display: none;
}
.header .gnav {
	margin-left: auto;
	margin-right: 48px;
}
.header .gnav ul {
	display: flex;
	align-items: center;
	gap: 30px;
}
.header .gnav a {
	position: relative;
	font-size: 1.8rem;
	font-weight: 500;
	letter-spacing: .02em;
	color: var(--brown);
	white-space: nowrap;
}
.header .gnav a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -6px;
	width: 100%;
	height: 2px;
	background: #b53f3c;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform .3s ease;
}
.header .gnav a:hover {
	opacity: 1;
}
.header .gnav a:hover::after {
	transform: scaleX(1);
}
.header .header-btn {
	width: 248px;
	flex-shrink: 0;
	align-self: stretch;
}
.header .header-btn a {
	display: block;
	height: 100%;
}
.header .header-btn img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: left center;
	vertical-align: bottom;
}

/* =========================================================
   visual (hero)
========================================================= */
.visual {
	background: url(../img/index/fv_bg@2x.png) no-repeat center center;
	background-size: cover;
	padding: 50px 0;
	min-height: 820px;
	display: flex;
	align-items: center;
	justify-content: center;
}
.visual .inner {
	max-width: 652px;
	padding: 0 22px;
}
.visual .txt {
	text-align: center;
}
.visual .txt img {
	width: 100%;
	max-width: var(--wide);
}

/* =========================================================
   concept
========================================================= */
.concept {
	background: #fff;
	padding: 96px 0 120px;
}
.concept .inner {
	max-width: 1180px;
	position: relative;
}
.concept-img {
	width: 100%;
}
.concept-img img {
	width: 100%;
	vertical-align: bottom;
}
.concept-body {
	position: absolute;
	top: 10%;
	left: 40%;
	width: 55%;
}
.concept-body .en-ttl {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	font-size: 5.6rem;
	font-weight: 500;
	letter-spacing: .14em;
	line-height: 1.35;
	color: var(--brown);
}
.concept-body .en-ttl span {
	display: inline-block;
	padding-bottom: 5px;
	border-bottom: 1px solid #cbb8ab;
}
.concept-body .en-ttl span + span {
	margin-top: 22px;
}
.concept-body .lead {
	margin-top: 34px;
	font-size: 2.2rem;
	font-weight: 500;
	line-height: 2;
	letter-spacing: .04em;
	color: var(--brown);
}
.concept .btn {
	margin-top: 40px;
}

/* =========================================================
   features
========================================================= */
.features {
	background: #fff;
}
.features-head {
	background: var(--pink2);
	padding: 84px 0 330px;
	text-align: center;
}
.features-head .ttl {
	font-size: 3.2rem;
	font-weight: 700;
	letter-spacing: .04em;
	color: var(--red);
}
.features-head .lead {
	margin-top: 24px;
	font-size: 1.8rem;
	font-weight: 500;
	line-height: 2;
	color: var(--red);
}
.features-body {
	margin-top: -290px;
	padding-bottom: 110px;
}
.features-body .inner {
	max-width: 1000px;
}
.features-img {
	width: 100%;
}
.features-img img {
	width: 100%;
	vertical-align: bottom;
}
.features-body .btn {
	margin-top: 60px;
}

/* =========================================================
   program
========================================================= */
.program {
	background: var(--gray);
	padding: 100px 0 120px;
}
.program .inner {
	max-width: 1180px;
}
.program .lead-block .ttl {
	font-size: 3.4rem;
}

/* slider */
.slider {
	position: relative;
	max-width: 880px;
	margin: 70px auto 0;
}

.slide-viewport {
	overflow: hidden;
	padding: 30px 5px 10px 5px;
	margin: -30px 0 -5px;
}

.slide-track {
	display: flex;
	transition: transform .5s ease;
	gap: 0;
}

.slide {
	flex: 0 0 100%;
	width: 100%;
	padding: 0 15px;
	box-sizing: border-box;
	position: relative;
}

.slide-inner {
	background: #fff;
	padding: 20px;
	box-shadow: 0px 5px 15px 0px rgba(0, 0, 0, 0.1);
	position: relative;
}

.slide-num {
	text-align: center;
	position: absolute;
	left: 50%;
	top: -15px;
	transform: translateX(-50%);
	z-index: 2;
}

.slide-num img {
	width: 200px;
	height: auto;
}

.slide-photo img {
	width: 100%;
	vertical-align: bottom;
}

.slide-caption {
	display: flex;
	align-items: center;
	gap: 40px;
	background: var(--taupe);
	color: #fff;
	padding: 34px 46px;
}

.slide-ttl {
	flex-shrink: 0;
	width: 190px;
	font-size: 2rem;
	font-weight: 700;
	letter-spacing: .08em;
}

.slide-txt {
	font-size: 1.8rem;
	font-weight: 400;
	line-height: 1.9;
	letter-spacing: .02em;
	border-left: 1px solid rgba(255, 255, 255, .5);
	padding-left: 30px;
}

.slide-arrow {
	position: absolute;
	top: 50%;
	width: 22px;
	height: 22px;
	border: 0;
	background: transparent;
	cursor: pointer;
	padding: 0;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
}

.slide-arrow::before {
	content: "";
	display: block;
	width: 0;
	height: 0;
}

/* 左矢印 */
.slide-arrow.prev {
	left: -30px;
}

.slide-arrow.prev::before {
	border-style: solid;
	border-width: 12px 20px 12px 0;
	border-color: transparent var(--brown) transparent transparent;
}

/* 右矢印 */
.slide-arrow.next {
	right: -30px;
}

.slide-arrow.next::before {
	border-style: solid;
	border-width: 12px 0 12px 20px;
	border-color: transparent transparent transparent var(--brown);
}
.slide-arrow:hover {
	opacity: .6;
}
.program > .inner > .btn {
	margin-top: 70px;
}

/* =========================================================
   lounge
========================================================= */
.lounge {
	position: relative;
	background: var(--gray) url("../img/index/bg01@2x.png") no-repeat center top / cover;
	padding: 100px 0 110px;
}
.lounge .lead-block .ttl {
	color: var(--brown);
}
.lounge .lead-block .lead {
	color: var(--brown);
}
.lounge-gallery {
	position: relative;
	max-width: 1000px;
	margin: 56px auto 0;
	display: flex;
	justify-content: center;
	gap: 22px;
}
.lounge-gallery .ph {
	display: block;
}
.lounge-gallery .gallery-label {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	background: rgba(120, 120, 120, .75);
	color: #fff;
	font-size: 1.6rem;
	letter-spacing: .1em;
	padding: 6px 16px;
}
.lounge .btn {
	margin-top: 60px;
}
.lounge .btn a {
	background: rgba(255, 255, 255, .4);
}
.lounge .btn a:hover {
	background: var(--brown);
}

/* =========================================================
   news
========================================================= */
.news {
	background: #fff;
	padding: 100px 0 110px;
}
.news .inner {
	max-width: 900px;
}
.sec-head {
	text-align: center;
	margin-bottom: 60px;
}
.sec-head .en-ttl {
	font-size: 6rem;
	font-weight: 400;
	letter-spacing: .2em;
	color: var(--brown);
	text-indent: .2em;
}
.sec-head .ja-ttl {
	font-size: 1.8rem;
	font-weight: 700;
	letter-spacing: .1em;
}
.news-list li + li {
	margin-top: 8px;
}
.news-list a {
	display: flex;
	align-items: baseline;
	gap: 34px;
	padding: 18px 6px;
}
.news-list a:hover {
	opacity: 1;
}
.news-list a:hover .news-txt {
	text-decoration: underline;
	text-underline-offset: 4px;
}
.news-list time {
	flex-shrink: 0;
	font-size: 1.8rem;
	font-weight: 700;
	letter-spacing: .06em;
}
.news-list .news-txt {
	font-size: 1.8rem;
	font-weight: 400;
	color: #6b5346;
}
.news .news-btn {
	margin-top: 50px;
}

/* =========================================================
   cta
========================================================= */
.cta {
	background: var(--pink2);
	padding: 40px 0 80px;
	margin-top: 150px;
}
.cta .inner {
	max-width: 930px;
	position: relative;
	padding-top: 70px;
	margin-top: -200px;
}
.cta-img {
	width: 100%;
}
.cta-img img {
	width: 100%;
	vertical-align: bottom;
}
.cta-copy {
	position: absolute;
	top: 0;
	left: 12%;
	writing-mode: vertical-rl;
	font-size: 2.6rem;
	font-weight: 500;
	line-height: 1.9;
	letter-spacing: .16em;
	color: var(--brown);
}

/* =========================================================
   footer
========================================================= */
.footer {
	background: var(--pink2);
	padding: 30px 0 40px;
}
.footer .inner {
	max-width: 1100px;
	text-align: center;
}
.footer .logo {
	width: 200px;
	margin: 0 auto 26px;
}
.footer .logo a:hover {
	opacity: .7;
}
.footer .footer-bottom {
	border-top: 1px solid #cbb0b4;
	padding-top: 26px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 60px;
	position: relative;
}
.footer-nav {
	display: flex;
	align-items: center;
	gap: 26px;
}
.footer-nav li {
	position: relative;
}
.footer-nav li + li::before {
	content: "";
	position: absolute;
	left: -13px;
	top: 50%;
	transform: translateY(-50%);
	width: 1px;
	height: 14px;
	background: #cbb0b4;
}
.footer-nav a {
	font-size: 1.5rem;
	font-weight: 500;
	letter-spacing: .04em;
	color: var(--brown);
}
.footer-sns {
	display: flex;
	align-items: center;
	gap: 20px;
}
.footer-sns li {
	width: 34px;
}
.footer .copy {
	margin-top: 24px;
	font-size: 1.1rem;
	letter-spacing: .04em;
	color: var(--brown);
}

/* =========================================================
   responsive : tablet
========================================================= */
@media screen and (max-width: 1080px) {
	.header .inner {
		flex-wrap: wrap;
		height: auto;
		padding: 16px 0 16px 20px;
		justify-content: space-between;
	}
	.header .gnav {
		order: 3;
		width: 100%;
		margin: 14px 0 0;
	}
	.header .gnav ul {
		flex-wrap: wrap;
		gap: 10px 22px;
	}
	.header .gnav a {
		font-size: 1.5rem;
	}
	.header .header-btn {
		height: 72px;
	}
	.concept-body {
		position: static;
		width: 100%;
		margin-top: 30px;
	}
	.concept .inner {
		text-align: center;
	}
	.concept-body .lead {
		display: inline-block;
	}
}

/* =========================================================
   responsive : sp
========================================================= */
@media screen and (max-width: 768px) {
	.pc {
		display: none;
	}
	.sp {
		display: block;
	}

	.lead-block .ttl {
		font-size: 2.1rem;
	}
	.lead-block .lead {
		font-size: 1.4rem;
	}
	.btn a {
		width: 280px;
		height: 50px;
		font-size: 1.4rem;
	}

	.header {
		padding-bottom: 0px;
	}

	/* header (hamburger) */
	.header .inner {
		height: 64px;
		padding: 5px 16px;
		align-items: center;
		flex-wrap: nowrap;
	}
	.header .logo {
		width: 100px;
	}

	/* hamburger icon */
	.hamburger {
		display: block;
		position: relative;
		margin-left: auto;
		width: 34px;
		height: 24px;
		padding: 0;
		border: 0;
		background: transparent;
		cursor: pointer;
		z-index: 30;
	}
	.hamburger span {
		position: absolute;
		left: 0;
		width: 100%;
		height: 1px;
		background: var(--brown);
		transition: transform .3s, opacity .3s, top .3s;
	}
	.hamburger span:nth-child(1) { top: 1px; }
	.hamburger span:nth-child(2) { top: 11px; }
	.hamburger span:nth-child(3) { top: 21px; }
	.header.is-open .hamburger span:nth-child(1) { top: 11px; transform: rotate(45deg); }
	.header.is-open .hamburger span:nth-child(2) { opacity: 0; }
	.header.is-open .hamburger span:nth-child(3) { top: 11px; transform: rotate(-45deg); }

	/* drawer */
	.header-menu {
		display: block;
		position: absolute;
		top: 64px;
		left: 0;
		right: 0;
		background: var(--pink);
		padding: 6px 20px 30px;
		box-shadow: 0 12px 20px rgba(140, 82, 51, .1);
		opacity: 0;
		visibility: hidden;
		transform: translateY(-12px);
		transition: opacity .3s, transform .3s, visibility .3s;
		z-index: 20;
	}
	.header.is-open .header-menu {
		opacity: 1;
		visibility: visible;
		transform: translateY(0);
	}
	.header .gnav {
		margin: 0;
	}
	.header .gnav ul {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}
	.header .gnav li {
		border-bottom: 1px solid rgba(140, 82, 51, .16);
	}
	.header .gnav a {
		display: block;
		padding: 15px 4px;
		font-size: 1.5rem;
		text-align: center;
	}
	.header .gnav a::after {
		display: none;
	}

	/* buttons */
	.header .header-btn {
		display: none;
	}
	.header-btn-sp {
		display: block;
		width: 240px;
		margin: 26px auto 0;
	}
	.header-btn-sp a:hover {
		opacity: .8;
	}

	/* visual */
	.visual {
		min-height: 500px;
		background: url(../img/index/fv_bg_sp@2x.png) no-repeat center center;
		background-size: cover;
	}

	/* concept */
	.concept {
		padding: 56px 0 64px;
	}
	.concept-body .en-ttl {
		font-size: 2rem;
		padding-bottom: 5px;
		flex-direction: row;
		align-items: flex-start;
	}
	.concept-body .lead {
		margin-top: 10px;
		padding-top: 0px;
		font-size: 1.4rem;
		text-align: left;
	}
	.concept-body .en-ttl span + span {
  margin-top: 0px;
  padding-left: 10px;
}
	.concept .btn {
		margin-top: 30px;
	}

	.concept-img {
		margin-top: -70px;
	}

	/* features */
	.features-head {
		padding: 52px 0 200px;
	}
	.features-head .ttl {
		font-size: 2.1rem;
	}
	.features-head .lead {
		font-size: 1.4rem;
	}
	.features-body {
		margin-top: -180px;
		padding-bottom: 64px;
	}
	.features-body .btn {
		margin-top: 40px;
	}

	/* program */
	.program {
		padding: 60px 0 72px;
	}
	.program .lead-block .ttl {
		font-size: 2.1rem;
	}
	.slider {
		margin-top: 44px;
	}
	.slide-inner {
		padding: 10px;
	}
	.slide {
		padding: 30px 16px 0;
	}
	.slide-num img {
		width: 110px;
	}
	.slide-caption {
		flex-direction: column;
		align-items: flex-start;
		gap: 7px;
		padding: 10px;
	}
	.slide-ttl {
		width: 100%;
		border-right: 0;
		border-bottom: 1px solid rgba(255, 255, 255, .5);
		padding-bottom: 5px;
		font-size: 1.4rem;
	}
	.slide-arrow.prev {
		left: -10px;
	}
	.slide-arrow.next {
		right: -10px;
	}
	.slide-arrow {
		
	}
	.program > .inner > .btn {
		margin-top: 48px;
	}

	.slide-txt {
		font-size: 1.2rem;
		border: none;
		padding: 0;
	}

	/* lounge */
	.lounge {
		padding: 60px 0 68px;
		background-position: right;
	}
	.lounge-gallery {
		flex-wrap: wrap;
		gap: 12px;
		max-width: 320px;
	}
	.lounge-gallery .ph {
		width: calc(50% - 6px);
	}

	/* news */
	.news {
		padding: 60px 0 68px;
	}
	.sec-head .en-ttl {
		font-size: 3rem;
	}
	.news-list a {
		flex-direction: column;
		gap: 6px;
		padding: 14px 4px;
	}
	.news-list .news-txt {
		font-size: 1.4rem;
	}

	/* cta */
	.cta {
		margin-top: 70px;
		padding-bottom: 30px;
	}
	.cta .inner {
		padding-top: 20px;
		margin-top: -100px;
	}
	.cta-copy {
		top: -20px;
    font-size: 1.6rem;
	}

	/* footer */
	.footer .footer-bottom {
		flex-direction: column;
		gap: 20px;
	}

	.footer .logo {
		max-width: 120px;
	}

	.footer-nav a {
		font-size: 1.2rem;
	}
}


/* #########################################################
   lower pages
######################################################### */

/* =========================================================
   lower pages common
========================================================= */
.lower .header {
	background: transparent;
	padding-bottom: 34px;
}
.page-concept .header,
.page-features .header,
.page-lesson .header {
	background: var(--pink);
}
.page-price #wrapper,
.page-contact #wrapper,
.page-company #wrapper,
.page-privacy #wrapper {
	background: var(--gray);
}
.bg-grad #wrapper {
	/*background: linear-gradient(115deg, #efece8 0%, #f8f7f5 18%, #fefefe 32%, #f1eeea 48%, #f9f8f6 62%, #fdfdfc 76%, #efece8 100%) repeat-y 0 0 / 100% 1600px;*/
	background: #f7f6f4;
}

/* current nav */
.header .gnav a.is-current::after {
	transform: scaleX(1);
}

.l-inner {
	width: 100%;
	max-width: 1048px;
	margin: 0 auto;
	padding: 0 24px;
}

/* page heading */
.page-head {
	padding: 52px 0 0;
	text-align: center;
}
.page-ttl {
	font-family: "Josefin Sans", sans-serif;
	font-size: 7.2rem;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: .2em;
	text-indent: .2em;
	color: var(--brown);
}
.page-ttl-ja {
	margin-top: 6px;
	font-size: 2rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-indent: .16em;
}
.page-lead {
	margin-top: 24px;
	font-size: 2rem;
	font-weight: 700;
	line-height: 2.6;
	letter-spacing: .14em;
}
.page-head-line {
	margin-top: 66px;
	border-top: 1px solid #e0dcd6;
}

/* hero with photo (features / lesson) */
.page-hero {
	background: var(--pink);
	padding: 53px 0 138px;
}
.page-hero .inner {
	max-width: 1048px;
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	position: relative;
}
.page-hero-body {
	position: relative;
	z-index: 2;
	width: 372px;
	padding-top: 60px;
}
.page-hero-ttl {
	font-family: "Josefin Sans", sans-serif;
	font-size: 7.6rem;
	font-weight: 600;
	line-height: 1;
	letter-spacing: .14em;
	white-space: nowrap;
	color: var(--red);
}
.page-hero-lead {
	margin-top: 56px;
	font-size: 2rem;
	font-weight: 500;
	line-height: 2.2;
	letter-spacing: .1em;
	font-feature-settings: "palt";
}
.page-hero-img {
	width: 640px;
	flex-shrink: 0;
	margin-right: -73px;
}
.page-hero-img img {
	border-radius: 30px;
}

/* cta area (white gap before the pink band) */
.cta-area {
	background: #fff;
	padding-top: 272px;
}
.lower .cta {
	margin-top: 0;
}

/* slider arrows placed outside */
.slider-arrow-out .slide-arrow.prev {
	left: -56px;
}
.slider-arrow-out .slide-arrow.next {
	right: -56px;
}

/* =========================================================
   concept
========================================================= */
.concept-hero {
	background: url(../img/concept/concept_hero@2x.png) no-repeat center / cover;
	min-height: 542px;
	padding: 100px 24px 80px;
	text-align: center;
	color: #fff;
}
.concept-hero-ttl {
	font-family: "Josefin Sans", sans-serif;
	font-size: 4.8rem;
	font-weight: 500;
	letter-spacing: .14em;
	text-indent: .14em;
}
.concept-hero-lead {
	margin-top: 40px;
	font-size: 2rem;
	font-weight: 500;
	line-height: 2.45;
	letter-spacing: .06em;
}
.concept-catch {
	padding: 124px 24px 128px;
	text-align: center;
	font-size: 4rem;
	font-weight: 700;
	line-height: 1.8;
	letter-spacing: .1em;
	color: var(--red);
}
.concept-block + .concept-block {
	margin-top: 135px;
}
.concept-visual {
	position: relative;
	height: 694px;
	background: no-repeat center / cover;
}
.concept-block.beauty .concept-visual {
	background-image: url(../img/concept/concept_bg01@2x.png);
	background-position: top center;
}
.concept-block.fitness .concept-visual {
	background-image: url(../img/concept/concept_bg02@2x.png);
}
.concept-visual .l-inner {
	position: relative;
	height: 100%;
}
.concept-visual-ttl {
	position: absolute;
	top: 280px;
	left: -6px;
	width: 634px;
}
.concept-block.fitness .concept-visual-ttl {
	top: 268px;
	left: auto;
	right: -6px;
	width: 662px;
}
.concept-detail {
	background: var(--gray);
	padding-bottom: 104px;
}
.concept-detail .l-inner {
	display: flex;
	align-items: flex-start;
	gap: 30px;
}
.concept-block.fitness .concept-detail .l-inner {
	flex-direction: row-reverse;
	justify-content: space-between;
}
/* photo png has a built-in shadow margin (30px) */
.concept-photo {
	width: 432px;
	flex-shrink: 0;
	margin: -130px 0 0 -30px;
	position: relative;
	z-index: 2;
}
.concept-block.fitness .concept-photo {
	margin: -130px -30px 0 0;
}
.concept-text {
	padding-top: 86px;
	flex: 1;
	max-width: 552px;
}
.concept-block.fitness .concept-text {
	padding-top: 100px;
	max-width: 560px;
}
.concept-text-ttl {
	font-size: 3.4rem;
	font-weight: 700;
	line-height: 2.05;
	letter-spacing: .07em;
}
.concept-text-txt {
	margin-top: 22px;
	font-size: 2rem;
	font-weight: 500;
	line-height: 2.2;
	letter-spacing: .08em;
}

/* =========================================================
   features
========================================================= */
.feature-list {
	padding: 100px 0 135px;
}
.feature + .feature {
	margin-top: 135px;
}
.feature-bar {
	display: flex;
	background: var(--gray);
	min-height: 104px;
}
.feature-num {
	flex-shrink: 0;
	width: calc(50% - 251px);
	min-width: 280px;
	background: var(--red);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 16px;
	padding-right: 50px;
	font-family: "Josefin Sans", sans-serif;
}
.feature-num .en {
	font-size: 2.2rem;
	font-weight: 600;
	letter-spacing: .16em;
	padding-top: 4px;
}
.feature-num .num {
	font-size: 5.2rem;
	font-weight: 500;
	letter-spacing: .1em;
	padding-top: 8px;
}
.feature-bar-ttl {
	display: flex;
	align-items: center;
	padding: 20px 40px;
	font-size: 3.2rem;
	font-weight: 700;
	letter-spacing: .08em;
}
.feature-body {
	display: flex;
	align-items: center;
	gap: 52px;
	margin-top: 60px;
}
.feature-img {
	width: 450px;
	flex-shrink: 0;
}
.feature-img img {
	border-radius: 30px;
}
.feature-ttl {
	font-size: 2.6rem;
	font-weight: 700;
	line-height: 2;
	letter-spacing: .08em;
}
.feature-txt {
	margin-top: 20px;
	font-size: 1.7rem;
	font-weight: 500;
	line-height: 2.35;
	letter-spacing: .1em;
}

/* voice */
.voice {
	background: var(--gray);
	padding: 90px 0 135px;
}
.voice-ttl {
	text-align: center;
	font-size: 3.8rem;
	font-weight: 700;
	line-height: 2;
	letter-spacing: .08em;
	color: var(--red);
}
.voice .slider {
	max-width: 1290px;
	margin: 64px auto 0;
	padding: 0 12px;
}
.voice .slide-viewport {
	padding: 0 12px 20px;
	margin: 0 -12px -20px;
}
.voice .slide-track {
	gap: 0;
}
.voice .slide {
	flex: 0 0 33.3333%;
	width: 33.3333%;
	padding: 0 12px;
}
.voice-card {
	height: 100%;
	background: #fff;
	padding: 19px;
	box-shadow: 0 4px 12px rgba(0, 0, 0, .08);
}
.voice-card-inner {
	height: 100%;
	background: var(--gray);
	padding: 54px 34px 44px;
}
.voice-card-ttl {
	font-size: 2.2rem;
	font-weight: 700;
	line-height: 1.9;
	letter-spacing: .06em;
}
.voice-card-txt {
	margin-top: 26px;
	font-size: 1.6rem;
	font-weight: 500;
	line-height: 2.2;
	letter-spacing: .08em;
}
.voice-card-name {
	margin-top: 14px;
	font-size: 1.6rem;
	font-weight: 700;
	color: var(--red);
}
.voice .slide-arrow.prev {
	left: -42px;
}
.voice .slide-arrow.next {
	right: -42px;
}

/* =========================================================
   lesson
========================================================= */
.lesson-item {
	background: #fff;
}
.lesson-head {
	padding: 70px 24px 36px;
	text-align: center;
}
.lesson-item:first-of-type .lesson-head {
	padding-top: 108px;
}
.lesson-head .num {
	display: block;
	font-family: "Josefin Sans", sans-serif;
	font-size: 3.2rem;
	font-weight: 600;
	line-height: 1;
	letter-spacing: .12em;
}
.lesson-head .en {
	display: block;
	margin-top: 8px;
	font-family: "Josefin Sans", sans-serif;
	font-size: 6.4rem;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: .18em;
	text-indent: .18em;
}
.lesson-head .ja {
	display: block;
	margin-top: 4px;
	font-size: 2.2rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-indent: .14em;
}
.lesson-img img {
	width: 100%;
}
.lesson-body {
	background: var(--gray);
	padding: 52px 0 66px;
	text-align: center;
}
.lesson-ttl {
	display: inline-block;
	min-width: 797px;
	max-width: 100%;
	padding: 0 10px 2px;
	border-bottom: 1px solid var(--brown);
	font-size: 3.6rem;
	font-weight: 700;
	line-height: 1.5;
	letter-spacing: .1em;
}
.lesson-txt {
	margin-top: 22px;
	font-size: 2rem;
	font-weight: 500;
	line-height: 2.2;
	letter-spacing: .12em;
}
.menu-slider {
	position: relative;
	max-width: 671px;
	margin: 44px auto 0;
}
.menu-slider .slide-viewport {
	padding: 0;
	margin: 0;
}
.menu-slider .slide {
	padding: 0;
}
.menu-card {
	height: 100%;
	min-height: 338px;
	background: var(--taupe);
	border-radius: 30px;
	padding: 44px 74px 50px;
	color: #fff;
	text-align: center;
}
.menu-card .label {
	font-family: "Josefin Sans", sans-serif;
	font-size: 2rem;
	font-weight: 600;
	letter-spacing: .2em;
	text-indent: .2em;
}
.menu-card-ttl {
	margin-top: 30px;
	font-size: 3rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: -1px;
}
.menu-card-level {
	font-size: 2.2rem;
	font-weight: 700;
	letter-spacing: .04em;
}
.menu-card-txt {
	margin-top: 10px;
	text-align: left;
	font-size: 1.6rem;
	font-weight: 500;
	line-height: 2.15;
	letter-spacing: .08em;
}

/* =========================================================
   price
========================================================= */
.price-main {
	padding-bottom: 135px;
}
.price-box {
	margin-top: 86px;
}
.price-box-head {
	background: var(--taupe);
	color: #fff;
	text-align: center;
	font-size: 2.8rem;
	font-weight: 500;
	line-height: 54px;
	letter-spacing: .06em;
}
.price-box-body {
	background: #fff;
	display: flex;
	align-items: center;
	justify-content: space-around;
	flex-wrap: wrap;
	gap: 20px 40px;
	padding: 48px 40px;
}
.price-row {
	display: flex;
	align-items: center;
	gap: 28px;
}
.price-row .label {
	font-size: 3rem;
	font-weight: 700;
	letter-spacing: .04em;
}
.price-num {
	display: inline-flex;
	align-items: flex-end;
	font-family: "Josefin Sans", sans-serif;
	font-size: 7rem;
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
}
.price-num .num {
	position: relative;
	top: 15px;
}
.price-num .yen {
	position: relative;
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	font-family: "Zen Kaku Gothic New", sans-serif;
	font-size: 3.8rem;
	font-weight: 700;
	line-height: 1;
}
.price-num .yen small {
	font-size: 1.6rem;
	font-weight: 700;
	margin-bottom: 2px;
}
/* 税別を大きく、税込を小さく */
.price-wrap {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-end;
}
.price-tax {
	margin-top: 12px;
	font-size: 1.8rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: .04em;
	white-space: nowrap;
}

/* plan table */
.plan-table {
	margin-top: 60px;
	width: 100%;
	border-collapse: separate;
	border-spacing: 10px;
	margin-left: -10px;
	width: calc(100% + 20px);
	table-layout: fixed;
}
.plan-table th,
.plan-table td {
	background: #fff;
	vertical-align: middle;
	text-align: center;
}
.plan-table thead th {
	height: 54px;
	background: var(--taupe);
	color: #fff;
	font-size: 2.8rem;
	font-weight: 500;
	letter-spacing: .1em;
}
.plan-table thead th.plan-label {
	background: var(--pink2);
	color: var(--brown);
}
.plan-table .col-cat {
	width: 51px;
}
.plan-table .col-item {
	width: 264px;
}
.plan-table .cat {
	background: var(--pink2);
	padding: 16px 0;
	font-size: 2rem;
	font-weight: 700;
	letter-spacing: .1em;
}
.plan-table .cat span {
	writing-mode: vertical-rl;
	display: inline-block;
}
.plan-table .fee-label {
	height: 125px;
	font-size: 1.8rem;
	font-weight: 700;
}
.plan-table .fee {
	text-align: left;
	padding: 14px 36px 18px;
}
.plan-table .fee .per {
	display: block;
	font-size: 2rem;
	font-weight: 700;
}
.plan-table .fee .price-num {
	margin-top: -4px;
}
.plan-table .items {
	text-align: left;
	padding: 32px 20px 32px 24px;
}
.plan-table .items li {
	position: relative;
	padding-left: 22px;
	font-size: 2rem;
	font-weight: 700;
	line-height: 2.2;
	letter-spacing: .04em;
}
.plan-table .items li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .72em;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--brown);
}
.plan-table .items li small {
	display: inline;
	font-size: .8em;
	letter-spacing: 0;
}
.plan-table .val {
	text-align: left;
	padding: 20px 20px 20px 40px;
	font-size: 1.6rem;
	font-weight: 500;
	line-height: 2;
}
.plan-table .val strong {
	display: block;
	font-size: 2.2rem;
	font-weight: 500;
	letter-spacing: .06em;
}
.plan-table .val-lead {
	display: block;
	font-size: 1.6rem;
	font-weight: 700;
	letter-spacing: .06em;
}
.plan-table .val.any {
	text-align: center;
	padding: 30px 20px;
}
.plan-table .val.any strong {
	display: inline;
	font-weight: 700;
}
.plan-table .val.any small {
	display: inline;
	font-size: 1.6rem;
}

/* others */
.price-others {
	background: #fff;
	padding: 130px 0 0;
}
.sub-ttl {
	text-align: center;
	font-family: "Josefin Sans", sans-serif;
	font-size: 5.2rem;
	font-weight: 600;
	letter-spacing: .1em;
	text-indent: .1em;
}
.price-others .price-box {
	margin-top: 34px;
}
.price-others .price-box-body {
	background: var(--gray);
	gap: 20px 60px;
	justify-content: center;
	padding: 42px 40px;
}

/* =========================================================
   facility
========================================================= */
.facility-main {
	padding-bottom: 140px;
}
.area-list {
	margin-top: 130px;
}
.area + .area {
	margin-top: 135px;
}
.area .l-inner {
	position: relative;
	display: flex;
	justify-content: flex-end;
}
.area:nth-child(even) .l-inner {
	justify-content: flex-start;
}
.area-img {
	width: 671px;
}
.area-img img {
	border-radius: 30px;
}
.area-ttl {
	position: absolute;
	left: 24px;
	top: 57%;
	padding: 0 4px 2px 0;
	border-bottom: 1px solid var(--brown);
	font-family: "Josefin Sans", sans-serif;
	font-size: 4.4rem;
	font-weight: 500;
	line-height: 1.2;
	letter-spacing: .2em;
	white-space: nowrap;
	text-shadow: 0 0 8px #fff, 0 0 16px #fff, 0 0 24px rgba(255, 255, 255, .8);
}
.area:nth-child(even) .area-ttl {
	left: auto;
	right: 24px;
	top: 57%;
	min-width: 465px;
	padding: 0 0 2px 4px;
	text-align: right;
	letter-spacing: .2em;
	margin-right: -.2em;
}

/* access */
.access {
	background: #fff;
	padding: 124px 0 100px;
}
.access .sub-ttl {
	font-size: 6.4rem;
	letter-spacing: .12em;
}
.access-body {
	display: flex;
	align-items: flex-start;
	gap: 50px;
	margin-top: 40px;
}
.access-img {
	width: calc(50% - 97px);
	min-width: 360px;
	flex-shrink: 0;
}
.access-img img {
	height: 445px;
	object-fit: cover;
	object-position: right center;
}
.access-info {
	width: 548px;
	padding-top: 52px;
}
.access-info .catch {
	font-size: 2.4rem;
	font-weight: 700;
	letter-spacing: .08em;
}
.access-info .name {
	margin-top: 10px;
	font-size: 3.2rem;
	font-weight: 700;
	letter-spacing: .04em;
}
.access-info dl {
	margin-top: 22px;
	background: var(--gray);
	padding: 20px 30px;
	font-size: 1.9rem;
	font-weight: 500;
	line-height: 2.2;
	letter-spacing: .04em;
}
.access-info dl div {
	display: flex;
	line-height: 1.2;
	margin-bottom: 10px;
}
.access-info dt::after {
	content: "：";
}
.access-tel {
	margin-top: 20px;
	font-family: "Josefin Sans", sans-serif;
	display: flex;
	align-items: baseline;
	gap: 30px;
	padding-left: 4px;
}
.access-tel .label {
	font-size: 2.4rem;
	font-weight: 600;
	letter-spacing: .2em;
}
.access-tel a {
	font-size: 3.8rem;
	font-weight: 600;
	letter-spacing: .08em;
}
.access-map {
	height: 467px;
	background: #d5d5d5;
}
.access-map iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}

/* =========================================================
   faq
========================================================= */
.faq-head {
	padding-bottom: 100px;
}
.faq-nav {
	display: grid;
	grid-template-columns: repeat(2, 322px);
	justify-content: center;
	gap: 22px 24px;
	margin-top: 90px;
}
.faq-nav a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 78px;
	padding: 0 38px;
	border: 1px solid #b08574;
	font-size: 2.2rem;
	font-weight: 700;
	letter-spacing: .08em;
}
.faq-nav a::after {
	content: "";
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 10px 7px 0 7px;
	border-color: var(--brown) transparent transparent transparent;
}
.faq-nav a:hover {
	background: rgba(255, 255, 255, .7);
	opacity: 1;
}
.faq-cat + .faq-cat {
	margin-top: 100px;
}
.faq-cat {
	scroll-margin-top: 20px;
}
.faq-cat-ttl {
	background: var(--red);
	color: #fff;
	text-align: center;
	font-size: 2.4rem;
	font-weight: 700;
	line-height: 70px;
	letter-spacing: .1em;
}
.faq-list {
	background: #fff;
	padding: 60px 0 100px;
}
.faq-item + .faq-item {
	margin-top: 44px;
}
.faq-item dt,
.faq-item dd {
	position: relative;
	padding-left: 51px;
	letter-spacing: .08em;
}
.faq-item dt::before,
.faq-item dd::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	width: 36px;
	height: 36px;
	background: no-repeat center / contain;
}
.faq-item dt::before {
	background-image: url(../img/faq/q@2x.png);
}
.faq-item dd::before {
	background-image: url(../img/faq/a@2x.png);
	top: 2px;
}
.faq-item dt {
	font-size: 2.3rem;
	font-weight: 700;
	line-height: 36px;
	color: var(--red);
}
.faq-item dd {
	margin-top: 16px;
	font-size: 2.1rem;
	font-weight: 500;
	line-height: 2;
}
.faq-item dd a {
	text-decoration: underline;
	text-decoration-color: #cbb0a4;
	text-underline-offset: 6px;
}
.faq-bottom {
	height: 100px;
}

/* =========================================================
   contact
========================================================= */
.form-area {
	padding: 110px 0 135px;
}
.form-intro {
	font-size: 1.8rem;
	letter-spacing: .08em;
	color: #6c6360;
  text-align: center;
}
.form-list {
	margin-top: 50px;
}
.form-item + .form-item {
	margin-top: 26px;
}
.form-item > .form-label,
.form-item > legend {
	display: block;
	margin-bottom: 4px;
	font-size: 1.7rem;
	font-weight: 700;
	letter-spacing: .02em;
}
.form-item .req {
	margin-left: 8px;
	font-size: 1.2rem;
	color: var(--red);
}
.form-list .form-control {
	display: block;
	width: 100%;
	height: 58px;
	padding: 0 20px;
	border: 1px solid transparent;
	border-radius: 0;
	background: #fff;
	font-size: 1.8rem;
	line-height: 1.6;
	color: #555;
	-webkit-appearance: none;
	appearance: none;
	transition: border-color .2s;
}
.form-list .form-control:focus {
	border-color: #cbb0a4;
}
.form-list textarea.form-control {
	height: 200px;
	padding: 16px 20px;
	resize: vertical;
}
.select-wrap {
	position: relative;
}
.select-wrap::before {
	content: "";
	position: absolute;
	left: 20px;
	top: 50%;
	width: 7px;
	height: 7px;
	margin-top: -6px;
	border-right: 1px solid #aaa;
	border-bottom: 1px solid #aaa;
	transform: rotate(45deg);
	pointer-events: none;
}
.select-wrap select {
	padding-left: 44px;
	cursor: pointer;
}
.radio-group {
	display: flex;
	flex-wrap: wrap;
	gap: 12px 44px;
}
.radio,
.check {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 2rem;
	letter-spacing: .06em;
	color: #6c6360;
	cursor: pointer;
}
.radio input,
.check input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
}
.radio .mark {
	position: relative;
	width: 34px;
	height: 34px;
	border: 1px solid #ddd;
	border-radius: 50%;
	background: #fff;
	flex-shrink: 0;
}
.radio .mark::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	width: 18px;
	height: 18px;
	margin: -9px 0 0 -9px;
	border-radius: 50%;
	background: var(--red);
	transform: scale(0);
	transition: transform .2s;
}
.radio input:checked + .mark::after {
	transform: scale(1);
}
.radio input:focus-visible + .mark,
.check input:focus-visible + .mark {
	outline: 2px solid #cbb0a4;
	outline-offset: 2px;
}
.form-agree {
	margin-top: 64px;
	text-align: center;
}
.check {
	font-size: 1.6rem;
	font-weight: 700;
	color: var(--brown);
	gap: 16px;
}
.check .mark {
	position: relative;
	width: 29px;
	height: 29px;
	border: 1px solid #ddd;
	background: #fff;
	flex-shrink: 0;
}
.check .mark::after {
	content: "";
	position: absolute;
	left: 9px;
	top: 3px;
	width: 8px;
	height: 15px;
	border-right: 2px solid var(--red);
	border-bottom: 2px solid var(--red);
	transform: rotate(45deg) scale(0);
	transition: transform .2s;
}
.check input:checked + .mark::after {
	transform: rotate(45deg) scale(1);
}
.check a {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.form-submit {
	margin-top: 64px;
	text-align: center;
}
.form-submit button {
	width: 322px;
	max-width: 100%;
	height: 78px;
	border: 1px solid var(--brown);
	background: transparent;
	font-family: inherit;
	font-size: 2.4rem;
	font-weight: 500;
	letter-spacing: 0.5em;
	text-indent: 1em;
	color: var(--brown);
	cursor: pointer;
	transition: .3s;
}
.form-submit button:hover {
	background: var(--brown);
	color: #fff;
}

/* お問い合わせフォーム：確認画面（CF7生成HTMLに対応） */
.page-contact [hidden] { display: none !important; }
.page-contact .form-submit button:disabled { opacity: .4; cursor: not-allowed; }
.page-contact .form-submit button:disabled:hover { background: transparent; color: var(--brown); }

/* 確認内容はJSが .confirm-row を生成する */
.page-contact .wpcf7 #confirm-details { margin-top: 42px; }
.page-contact .wpcf7 #confirm-details .confirm-row {
  margin: 0;
  padding: 18px 0;
  border-bottom: 1px solid #e0dcd6;
}
.page-contact .wpcf7 #confirm-details .confirm-label {
  display: block;
  margin: 0 0 8px;
  color: var(--brown);
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.5;
}
.page-contact .wpcf7 #confirm-details .confirm-value {
  display: block;
  margin: 0;
  color: #6c6360;
  font-size: 1.8rem;
  line-height: 1.8;
  font-weight: 400;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
/* CF7が自動で挿入するpタグを考慮してボタンを横並びにする */
.page-contact .wpcf7 #confirm-screen .form-actions {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  flex-wrap: nowrap;
  gap: 24px;
  margin: 64px auto 0;
  text-align: center;
}
.page-contact .wpcf7 #confirm-screen .form-actions > p { display: contents; }
.page-contact .wpcf7 #confirm-screen .form-actions .form-back,
.page-contact .wpcf7 #confirm-screen .form-actions input.form-send {
  box-sizing: border-box;
  display: block;
  flex: 0 1 auto;
  max-width: 100%;
  height: 78px;
  margin: 0;
  padding: 0 12px;
  border: 1px solid var(--brown);
  border-radius: 0;
  background: transparent;
  color: var(--brown);
  font-family: inherit;
  font-size: 2.4rem;
  font-weight: 500;
  letter-spacing: .15em;
  text-indent: .15em;
  line-height: 1.4;
  text-align: center;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  transition: background .3s, color .3s;
}
.page-contact .wpcf7 #confirm-screen .form-actions .form-back { width: 220px; }
.page-contact .wpcf7 #confirm-screen .form-actions input.form-send { width: 322px; }
.page-contact .wpcf7 #confirm-screen .form-actions .form-back:hover,
.page-contact .wpcf7 #confirm-screen .form-actions input.form-send:hover {
  background: var(--brown);
  color: #fff;
}
.page-contact .wpcf7 #confirm-screen .form-actions .wpcf7-spinner { display: none; }
@media screen and (max-width: 768px) {
  .page-contact .wpcf7 #confirm-details { margin-top: 26px; }
  .page-contact .wpcf7 #confirm-details .confirm-row { padding: 14px 0; }
  .page-contact .wpcf7 #confirm-details .confirm-label,
  .page-contact .wpcf7 #confirm-details .confirm-value { font-size: 1.4rem; }
  .page-contact .wpcf7 #confirm-screen .form-actions { gap: 12px; margin-top: 40px; }
  .page-contact .wpcf7 #confirm-screen .form-actions .form-back { width: 40%; }
  .page-contact .wpcf7 #confirm-screen .form-actions input.form-send { width: 60%; }
  .page-contact .wpcf7 #confirm-screen .form-actions .form-back,
  .page-contact .wpcf7 #confirm-screen .form-actions input.form-send {
    min-width: 0;
    height: 60px;
    font-size: 1.6rem;
  }
}

.back-top a {
	width: 320px;
	line-height: 50px;
  display: block;
	border: 1px solid var(--brown);
	background: transparent;
	font-family: inherit;
	font-size: 2rem;
	font-weight: 500;
	letter-spacing: 0.2em;
	text-indent: 1em;
	color: var(--brown);
	cursor: pointer;
	transition: .3s;
  margin: 0 auto;
}
.back-top a:hover {
	background: var(--brown);
	color: #fff;
}
@media screen and (max-width: 768px) {
  .back-top a {
    width: 300px;
    max-width: 100%;
    line-height: 40px;
    font-size: 1.8rem;
    margin: 0 auto;
  }
}

/* =========================================================
   company
========================================================= */
.company-main {
	padding-bottom: 134px;
}
.company-table {
	margin-top: 40px;
}
.company-table div {
	display: flex;
	border-bottom: 1px solid #e0dcd6;
	padding: 12px 0 11px;
}
.company-table dt {
	width: 293px;
	flex-shrink: 0;
	font-size: 2.1rem;
	font-weight: 700;
	line-height: 36px;
	letter-spacing: .04em;
	color: var(--red);
}
.company-table dd {
	font-size: 2rem;
	font-weight: 500;
	line-height: 36px;
	letter-spacing: .04em;
	color: #6c6360;
}
.company-table dd p + p {
	margin-top: 24px;
}
.company-table dd a {
	color: #6c6360;
}

/* =========================================================
   privacy
========================================================= */
.privacy-main {
	padding-bottom: 130px;
}
.privacy-body {
	margin-top: 120px;
	font-size: 1.7rem;
	line-height: 1.55;
	letter-spacing: .02em;
	color: #6c6360;
}
.privacy-body p + p {
	margin-top: 26px;
}
.privacy-body h3 {
	margin-top: 22px;
	font-size: 2.2rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: .04em;
	color: var(--red);
}
.privacy-body h3 + p {
	margin-top: 2px;
}
.privacy-body .def {
	display: grid;
	grid-template-columns: 126px 1fr;
	row-gap: 26px;
	margin-top: 2px;
}
.privacy-body .def + h3 {
	margin-top: 46px;
}
.privacy-body .date {
	margin-top: 36px;
	text-align: right;
}

/* =========================================================
   responsive : tablet
========================================================= */
@media screen and (max-width: 1080px) {
	.page-hero .inner {
		flex-direction: column;
		align-items: center;
		gap: 40px;
	}
	.page-hero-body {
		width: 100%;
		max-width: 640px;
		padding-top: 0;
	}
	.page-hero-img {
		width: 100%;
		max-width: 640px;
		margin-right: 0;
	}
	.page-hero-lead {
		margin-top: 30px;
	}
	.concept-visual-ttl,
	.concept-block.fitness .concept-visual-ttl {
		width: 46%;
	}
	.feature-body {
		align-items: flex-start;
	}
	.feature-img {
		width: 40%;
	}
	.area-img {
		width: 70%;
	}
	.area-ttl {
		font-size: 3.4rem;
	}
	.area:nth-child(even) .area-ttl {
		min-width: 0;
	}
	.access-body {
		flex-direction: column;
		align-items: stretch;
	}
	.access-img {
		width: 100%;
		min-width: 0;
	}
	.access-info {
		width: 100%;
		max-width: 1048px;
		margin: 0 auto;
		padding: 0 24px;
	}
	.slider-arrow-out .slide-arrow.prev {
		left: -40px;
	}
	.slider-arrow-out .slide-arrow.next {
		right: -40px;
	}
	.voice .slider {
		padding: 0 40px;
	}
	.voice .slide {
		flex-basis: 50%;
		width: 50%;
	}
	.voice .slide-arrow.prev {
		left: 4px;
	}
	.voice .slide-arrow.next {
		right: 4px;
	}
}

/* =========================================================
   responsive : sp
========================================================= */
@media screen and (max-width: 768px) {
	.cta-area {
		padding-top: 130px;
	}
	.page-head {
		padding-top: 50px;
	}
	.page-ttl {
		font-size: 3.6rem;
		letter-spacing: .14em;
		text-indent: .14em;
	}
	.page-ttl-ja {
		font-size: 1.4rem;
	}
	.page-lead {
		margin-top: 24px;
		font-size: 1.4rem;
		line-height: 2.2;
		letter-spacing: .06em;
		text-align: left;
	}
	.page-head-line {
		margin-top: 40px;
	}
	.page-hero {
		padding: 40px 0 60px;
		padding-top: 0;
	}
	.page-hero-ttl {
		font-size: 3.4rem;
		white-space: normal;
	}
	.page-hero-lead {
		margin-top: 20px;
		font-size: 1.4rem;
		line-height: 2.2;
	}
	.page-hero-img img {
		border-radius: 16px;
	}
	.slider-arrow-out .slide-arrow.prev {
		left: -24px;
	}
	.slider-arrow-out .slide-arrow.next {
		right: -24px;
	}
	.slide-arrow.prev::before {
		border-width: 9px 14px 9px 0;
	}
	.slide-arrow.next::before {
		border-width: 9px 0 9px 14px;
	}

	/* concept */
	.concept-hero {
		min-height: 0;
		padding: 50px 16px;
	}
	.concept-hero-ttl {
		font-size: 2.6rem;
	}
	.concept-hero-lead {
		margin-top: 20px;
		font-size: 1.3rem;
		line-height: 2.1;
		text-align: left;
	}
	.concept-catch {
		padding: 56px 16px;
		font-size: 2.1rem;
	}
	.concept-block + .concept-block {
		margin-top: 60px;
	}
	.concept-visual {
		height: 320px;
	}
	.concept-visual-ttl,
	.concept-block.fitness .concept-visual-ttl {
		top: 90px;
		width: 62%;
		max-width: 400px;
	}
	.concept-visual-ttl {
		left: 4px;
	}
	.concept-block.fitness .concept-visual-ttl {
		right: 4px;
	}
	.concept-detail {
		padding-bottom: 60px;
	}
	.concept-detail .l-inner,
	.concept-block.fitness .concept-detail .l-inner {
		flex-direction: column;
		align-items: center;
		gap: 30px;
	}
	.concept-detail .l-inner {
		align-items: flex-start;
	}

	.concept-detail .l-inner {
		align-items: flex-end;
	}

	.concept-block.fitness .concept-detail .l-inner {
		align-items: flex-start;
	}


	.concept-photo,
	.concept-block.fitness .concept-photo {
		width: 50%;
		max-width: 360px;
		margin: -200px 0 0 0;
	}

	.concept-detail .l-inner .concept-photo {
		margin-right: -40px;
	}

	.concept-block.fitness .concept-detail .l-inner .concept-photo {
		margin-left: -40px;
	}



	.concept-text,
	.concept-block.fitness .concept-text {
		padding-top: 0;
	}
	.concept-text-ttl {
		font-size: 2rem;
		line-height: 1.8;
	}
	.concept-text-txt {
		margin-top: 12px;
		font-size: 1.4rem;
		line-height: 2.1;
	}

	/* features */
	.feature-list {
		padding: 50px 0 60px;
	}
	.feature + .feature {
		margin-top: 60px;
	}
	.feature-bar {
		flex-direction: column;
		min-height: 0;
	}
	.feature-num {
		width: auto;
		min-width: 0;
		justify-content: flex-start;
		padding: 10px 16px 8px;
		gap: 10px;
	}
	.feature-num .en {
		font-size: 1.4rem;
	}
	.feature-num .num {
		font-size: 2.8rem;
	}
	.feature-bar-ttl {
		padding: 12px 16px;
		font-size: 1.7rem;
		line-height: 1.6;
		letter-spacing: -1px;
	}
	.feature-body {
		flex-direction: column;
		gap: 24px;
		margin-top: 30px;
	}
	.feature-img {
		width: 100%;
	}
	.feature-img img {
		border-radius: 16px;
	}
	.feature-ttl {
		font-size: 1.9rem;
		line-height: 1.7;
	}
	.feature-txt {
		margin-top: 12px;
		font-size: 1.4rem;
		line-height: 2.1;
	}
	.voice {
		padding: 50px 0 60px;
	}
	.voice-ttl {
		font-size: 2.1rem;
		line-height: 1.7;
	}
	.voice .slider {
		margin-top: 32px;
		padding: 0 28px;
	}
	.voice .slide {
		flex-basis: 100%;
		width: 100%;
	}
	.voice-card {
		padding: 10px;
	}
	.voice-card-inner {
		padding: 28px 20px;
	}
	.voice-card-ttl {
		font-size: 1.7rem;
	}
	.voice-card-txt {
		margin-top: 14px;
		font-size: 1.4rem;
		line-height: 2;
	}
	.voice-card-name {
		font-size: 1.4rem;
	}
	.voice .slide-arrow.prev {
		left: 0;
	}
	.voice .slide-arrow.next {
		right: 0;
	}

	/* lesson */
	.lesson-head {
		padding: 50px 16px 24px;
	}
	.lesson-head .num {
		font-size: 2rem;
	}
	.lesson-head .en {
		font-size: 3.2rem;
		letter-spacing: .12em;
		text-indent: .12em;
	}
	.lesson-head .ja {
		font-size: 1.4rem;
	}
	.lesson-body {
		padding: 30px 0 44px;
	}
	.lesson-ttl {
		min-width: 0;
		font-size: 1.8rem;
		line-height: 1.7;
		letter-spacing: .04em;
		display: block;
	}
	.lesson-txt {
		margin-top: 16px;
		font-size: 1.4rem;
		line-height: 2.1;
		letter-spacing: .04em;
		text-align: left;
	}
	.menu-slider {
		margin: 30px 24px 0;
	}
	.menu-card {
		min-height: 0;
		border-radius: 16px;
		padding: 26px 20px 30px;
	}
	.menu-card .label {
		font-size: 1.4rem;
	}
	.menu-card-ttl {
		margin-top: 14px;
		font-size: 2rem;
	}
	.menu-card-level {
		font-size: 1.5rem;
	}
	.menu-card-txt {
		font-size: 1.3rem;
		line-height: 2;
	}

	/* price */
	.price-main {
		padding-bottom: 60px;
	}
	.price-box {
		margin-top: 44px;
	}
	.price-box-head {
		font-size: 1.8rem;
		line-height: 44px;
	}
	.price-box-body {
		flex-direction: column;
		gap: 14px;
		padding: 24px 16px;
	}
	.price-row {
		gap: 16px;
	}
	.price-row .label {
		font-size: 1.8rem;
	}
	.price-num {
		font-size: 4rem;
	}
	.price-num .num {
		top: 10px;
	}
	.price-num .yen {
		font-size: 2.4rem;
	}
	.price-num .yen small {
		font-size: 1.1rem;
	}
	.plan-scroll {
		overflow-x: auto;
		margin: 0 -16px;
		padding: 0 16px;
	}
	.plan-table {
		margin-top: 30px;
		min-width: 620px;
		border-spacing: 6px;
		margin-left: -6px;
		width: calc(100% + 12px);
	}
	.plan-table .col-cat {
		width: 34px;
	}
	.plan-table .col-item {
		width: 170px;
	}
	.plan-table thead th {
		height: 40px;
		font-size: 1.6rem;
	}
	.plan-table .cat {
		font-size: 1.4rem;
	}
	.plan-table .fee-label {
		height: 80px;
		font-size: 1.4rem;
	}
	.plan-table .fee {
		padding: 10px 14px;
	}
	.plan-table .fee .per {
		font-size: 1.4rem;
	}
	.plan-table .fee .price-num {
		font-size: 3.2rem;
	}
	.plan-table .fee .price-num .yen {
		font-size: 2rem;
	}
	.plan-table .items {
		padding: 16px 10px;
	}
	.plan-table .items li {
		padding-left: 16px;
		font-size: 1.4rem;
		line-height: 2;
	}
	.plan-table .items li::before {
		width: 12px;
		height: 12px;
		top: .75em;
	}
	.plan-table .val {
		padding: 14px;
		font-size: 1.2rem;
		line-height: 1.7;
	}
	.plan-table .val strong {
		font-size: 1.5rem;
	}
	.plan-table .val-lead {
		font-size: 1.2rem;
	}
	.price-tax {
		margin-top: 6px;
		font-size: 1.3rem;
	}
	.plan-table .val.any small {
		font-size: 1.2rem;
	}
	.price-others {
		padding-top: 60px;
	}
	.sub-ttl,
	.access .sub-ttl {
		font-size: 3rem;
	}
	.price-others .price-box {
		margin-top: 24px;
	}
	.price-others .price-box-body {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 10px 20px;
		padding: 24px 16px;
	}

	/* facility */
	.facility-main {
		padding-bottom: 60px;
	}
	.area-list {
		margin-top: 50px;
	}
	.area + .area {
		margin-top: 50px;
	}
	.area .l-inner {
		flex-direction: column;
	}
	.area-img {
		width: 100%;
	}
	.area-img img {
		border-radius: 16px;
	}
	.area-ttl,
	.area:nth-child(even) .area-ttl {
		position: static;
		order: -1;
		align-self: flex-start;
		margin: 0 0 12px;
		font-size: 2.2rem;
		letter-spacing: .14em;
		text-align: left;
	}
	.access {
		padding: 60px 0 50px;
	}
	.access-body {
		margin-top: 24px;
		gap: 24px;
	}
	.access-img img {
		height: 240px;
	}
	.access-info {
		padding: 0 16px;
	}
	.access-info .catch {
		font-size: 1.6rem;
	}
	.access-info .name {
		font-size: 2.2rem;
		margin-top: 4px;
	}
	.access-info dl {
		padding: 14px 16px;
		font-size: 1.4rem;
		line-height: 2;
	}
	.access-tel {
		gap: 16px;
	}
	.access-tel .label {
		font-size: 1.6rem;
	}
	.access-tel a {
		font-size: 2.6rem;
	}
	.access-map {
		height: 300px;
	}

	/* faq */
	.faq-head {
		padding-bottom: 50px;
	}
	.faq-nav {
		grid-template-columns: 1fr 1fr;
		gap: 10px;
		margin-top: 40px;
	}
	.faq-nav a {
		height: 54px;
		padding: 0 12px;
		font-size: 1.3rem;
		letter-spacing: 0;
	}
	.faq-nav a::after {
		border-width: 7px 5px 0 5px;
		flex-shrink: 0;
	}
	.faq-cat + .faq-cat {
		margin-top: 50px;
	}
	.faq-cat-ttl {
		font-size: 1.7rem;
		line-height: 50px;
	}
	.faq-list {
		padding: 30px 0 50px;
	}
	.faq-item + .faq-item {
		margin-top: 28px;
	}
	.faq-item dt,
	.faq-item dd {
		padding-left: 36px;
		letter-spacing: .02em;
	}
	.faq-item dt::before,
	.faq-item dd::before {
		width: 26px;
		height: 26px;
	}
	.faq-item dt {
		font-size: 1.6rem;
		line-height: 26px;
	}
	.faq-item dd {
		margin-top: 10px;
		font-size: 1.4rem;
		line-height: 1.9;
	}
	.faq-bottom {
		height: 50px;
	}

	/* contact */
	.form-area {
		padding: 50px 0 60px;
	}
	.form-intro {
		font-size: 1.4rem;
	}
	.form-list {
		margin-top: 30px;
	}
	.form-item + .form-item {
		margin-top: 26px;
	}
	.form-item > .form-label,
	.form-item > legend {
		font-size: 1.4rem;
	}
	.form-list .form-control {
		height: 50px;
		padding: 0 14px;
		font-size: 1.6rem;
	}
	.form-list textarea.form-control {
		height: 180px;
		padding: 12px 14px;
	}
	.select-wrap::before {
		left: 14px;
	}
	.select-wrap select {
		padding-left: 36px;
	}
	.radio-group {
		gap: 10px 26px;
	}
	.radio {
		font-size: 1.5rem;
	}
	.radio .mark {
		width: 28px;
		height: 28px;
	}
	.radio .mark::after {
		width: 14px;
		height: 14px;
		margin: -7px 0 0 -7px;
	}
	.check {
		font-size: 1.4rem;
		gap: 10px;
	}
	.form-agree,
	.form-submit {
		margin-top: 40px;
	}
	.form-submit button {
		width: 260px;
		height: 60px;
		font-size: 1.8rem;
	}

	/* company */
	.company-main {
		padding-bottom: 60px;
	}
	.company-table {
		margin-top: 30px;
	}
	.company-table div {
		flex-direction: column;
		padding: 12px 0;
	}
	.company-table dt {
		width: auto;
		font-size: 1.5rem;
		line-height: 1.8;
	}
	.company-table dd {
		font-size: 1.4rem;
		line-height: 1.9;
	}
	.company-table dd p + p {
		margin-top: 4px;
	}

	/* privacy */
	.privacy-main {
		padding-bottom: 60px;
	}
	.privacy-body {
		margin-top: 40px;
		font-size: 1.4rem;
		line-height: 1.8;
	}
	.privacy-body p + p {
		margin-top: 16px;
	}
	.privacy-body h3 {
		margin-top: 28px;
		font-size: 1.7rem;
	}
	.privacy-body .def {
		grid-template-columns: 1fr;
		row-gap: 0;
	}
	.privacy-body .def dd + dt {
		margin-top: 10px;
	}
	.privacy-body .def + h3 {
		margin-top: 36px;
	}
}

/* =========================================================
   news (list / detail)
========================================================= */
.page-news #wrapper {
	background: var(--gray);
}
.news-main {
	padding-bottom: 134px;
}

/* list */
.news-archive {
	margin-top: 60px;
	border-top: 1px solid #e0dcd6;
}
.news-archive li {
	border-bottom: 1px solid #e0dcd6;
}
.news-archive a {
	display: flex;
	align-items: baseline;
	gap: 40px;
	padding: 28px 44px 28px 10px;
	position: relative;
}
.news-archive a::after {
	content: "";
	position: absolute;
	right: 14px;
	top: 50%;
	width: 0;
	height: 0;
	margin-top: -6px;
	border-style: solid;
	border-width: 6px 0 6px 10px;
	border-color: transparent transparent transparent var(--brown);
	transition: transform .3s;
}
.news-archive a:hover {
	opacity: 1;
	background: rgba(255, 255, 255, .6);
}
.news-archive a:hover::after {
	transform: translateX(4px);
}
.news-archive time {
	flex-shrink: 0;
	font-size: 1.8rem;
	font-weight: 600;
	letter-spacing: .06em;
}
.news-archive .cat {
	flex-shrink: 0;
	min-width: 100px;
	padding: 4px 12px 2px;
	background: var(--taupe);
	color: #fff;
	font-size: 1.3rem;
	font-weight: 700;
	text-align: center;
	letter-spacing: .06em;
	align-self: center;
}
.news-archive .ttl {
	font-size: 1.8rem;
	font-weight: 500;
	line-height: 1.8;
	letter-spacing: .04em;
	color: #6b5346;
}

/* pagination (WordPress paginate_links) */
.pagination {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 10px;
	margin-top: 70px;
}
.pagination .page-numbers {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border: 1px solid var(--brown);
	background: #fff;
	font-family: "Josefin Sans", sans-serif;
	font-size: 1.7rem;
	font-weight: 600;
	padding-top: 3px;
}
.pagination .page-numbers.current,
.pagination a.page-numbers:hover {
	background: var(--brown);
	color: #fff;
	opacity: 1;
}
.pagination .page-numbers.dots {
	border: 0;
	background: transparent;
	width: auto;
}
.pagination .prev,
.pagination .next {
	position: relative;
	padding: 0;
}
.pagination .prev::before,
.pagination .next::before {
	content: "";
	width: 0;
	height: 0;
	border-style: solid;
}
.pagination .prev::before {
	border-width: 6px 10px 6px 0;
	border-color: transparent var(--brown) transparent transparent;
}
.pagination .next::before {
	border-width: 6px 0 6px 10px;
	border-color: transparent transparent transparent var(--brown);
}
.pagination .prev:hover::before {
	border-right-color: #fff;
}
.pagination .next:hover::before {
	border-left-color: #fff;
}

/* detail */
.news-article {
	margin-top: 60px;
	background: #fff;
	padding: 60px 70px 70px;
}
.news-article-head {
	padding-bottom: 26px;
	border-bottom: 1px solid #e0dcd6;
}
.news-article-head time {
	display: block;
	font-size: 1.8rem;
	font-weight: 600;
	letter-spacing: .06em;
}
.news-article-ttl {
	margin-top: 10px;
	font-size: 2.8rem;
	font-weight: 700;
	line-height: 1.6;
	letter-spacing: .06em;
	color: var(--red);
}
.entry-content {
	margin-top: 40px;
	font-size: 1.8rem;
	line-height: 2;
	letter-spacing: .04em;
	color: #6c6360;
}
.entry-content > * + * {
	margin-top: 1.6em;
}
.entry-content h2 {
	margin-top: 2.4em;
	padding: 10px 20px 8px;
	border-left: 4px solid var(--red);
	background: var(--gray);
	font-size: 2.4rem;
	font-weight: 700;
	line-height: 1.5;
	color: var(--brown);
}
.entry-content h3 {
	margin-top: 2em;
	padding-bottom: 6px;
	border-bottom: 1px solid var(--brown);
	font-size: 2rem;
	font-weight: 700;
	line-height: 1.5;
	color: var(--brown);
}
.entry-content a {
	color: var(--red);
	text-decoration: underline;
	text-underline-offset: 4px;
}
.entry-content ul {
	padding-left: 1.4em;
	list-style: disc;
}
.entry-content ol {
	padding-left: 1.6em;
	list-style: decimal;
}
.entry-content strong {
	font-weight: 700;
}
.entry-content img {
	width: auto;
	max-width: 100%;
}
.entry-content figure img,
.entry-content .wp-block-image img {
	width: 100%;
}
.entry-content figcaption {
	margin-top: 8px;
	font-size: 1.4rem;
	text-align: center;
}

/* prev / list / next */
.post-nav {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 20px;
	margin-top: 60px;
}
.post-nav a {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-size: 1.6rem;
	font-weight: 700;
	letter-spacing: .06em;
}
.post-nav-prev::before,
.post-nav-next::after {
	content: "";
	width: 0;
	height: 0;
	border-style: solid;
}
.post-nav-prev {
	justify-self: start;
}
.post-nav-prev::before {
	border-width: 6px 10px 6px 0;
	border-color: transparent var(--brown) transparent transparent;
}
.post-nav-next {
	justify-self: end;
}
.post-nav-next::after {
	border-width: 6px 0 6px 10px;
	border-color: transparent transparent transparent var(--brown);
}
.post-nav .post-nav-list {
	justify-content: center;
	width: 280px;
	height: 66px;
	border: 1px solid var(--brown);
	font-size: 1.8rem;
	font-weight: 500;
	letter-spacing: .24em;
	text-indent: .24em;
}
.post-nav .post-nav-list span {
	padding-top: 3px;
}
.post-nav .post-nav-list:hover {
	background: var(--brown);
	color: #fff;
	opacity: 1;
}

@media screen and (max-width: 768px) {
	.news-main {
		padding-bottom: 60px;
	}
	.news-archive {
		margin-top: 30px;
	}
	.news-archive a {
		flex-wrap: wrap;
		gap: 6px 14px;
		padding: 16px 30px 16px 4px;
	}
	.news-archive a::after {
		right: 6px;
	}
	.news-archive time {
		font-size: 1.4rem;
	}
	.news-archive .cat {
		min-width: 0;
		font-size: 1.1rem;
	}
	.news-archive .ttl {
		width: 100%;
		font-size: 1.4rem;
	}
	.pagination {
		gap: 6px;
		margin-top: 40px;
	}
	.pagination .page-numbers {
		width: 36px;
		height: 36px;
		font-size: 1.4rem;
	}
	.news-article {
		margin-top: 30px;
		padding: 30px 18px 40px;
	}
	.news-article-head time {
		font-size: 1.4rem;
	}
	.news-article-ttl {
		font-size: 1.9rem;
	}
	.entry-content {
		margin-top: 24px;
		font-size: 1.5rem;
		line-height: 1.9;
	}
	.entry-content h2 {
		font-size: 1.8rem;
		padding: 8px 12px 6px;
	}
	.entry-content h3 {
		font-size: 1.6rem;
	}
	.post-nav {
		grid-template-columns: 1fr 1fr;
		margin-top: 40px;
	}
	.post-nav .post-nav-list {
		grid-column: 1 / -1;
		grid-row: 2;
		justify-self: center;
		width: 240px;
		height: 50px;
		font-size: 1.4rem;
	}
	.post-nav a {
		font-size: 1.4rem;
	}
}

/* Contact Form 7 */
.page-contact .wpcf7 form {
  width: 100%;
}

.page-contact .wpcf7 .wpcf7-form-control-wrap {
  display: block;
}

.page-contact .wpcf7 .form-control {
  width: 100%;
  box-sizing: border-box;
}

.page-contact .wpcf7 .radio-group .wpcf7-form-control-wrap {
  display: block;
}

.page-contact .wpcf7 .wpcf7-radio {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

.page-contact .wpcf7 .wpcf7-list-item {
  margin: 0;
}

.page-contact .wpcf7 .wpcf7-not-valid-tip {
  margin-top: 8px;
  color: #d33;
  font-size: 14px;
}

/* =========================================================
   Contact Form 7: 元HTMLとの構造差分のみ補正
   既存の .form-list / .radio / .check の指定は再定義しない
========================================================= */
/* CF7 の form に .form-list がない場合も元の入力欄デザインを適用 */
.page-contact .wpcf7 form.wpcf7-form { margin-top: 50px; }
.page-contact .wpcf7 .form-item .wpcf7-form-control-wrap { display: block; width: 100%; }
.page-contact .wpcf7 .form-item input.form-control,
.page-contact .wpcf7 .form-item select.form-control,
.page-contact .wpcf7 .form-item textarea.form-control {
  display: block;
  width: 100%;
  box-sizing: border-box;
  height: 58px;
  padding: 0 20px;
  border: 1px solid transparent;
  border-radius: 0;
  background: #fff;
  box-shadow: none;
  font: inherit;
  font-size: 1.8rem;
  line-height: 1.6;
  color: #555;
  appearance: none;
  -webkit-appearance: none;
}
.page-contact .wpcf7 .form-item textarea.form-control {
  height: 200px;
  padding: 16px 20px;
  resize: vertical;
}
.page-contact .wpcf7 .form-item .form-control:focus { border-color: #cbb0a4; }
/* CF7のradioは label > input + span（元HTMLとは異なる） */
.page-contact .wpcf7 .radio-group .wpcf7-radio { gap: 12px 44px; }
.page-contact .wpcf7 .radio-group .wpcf7-list-item label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 2rem;
  letter-spacing: .06em;
  color: #6c6360;
  cursor: pointer;
}
.page-contact .wpcf7 .radio-group input[type="radio"] {
  position: relative;
  display: inline-grid;
  place-items: center;
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  margin: 0;
  padding: 0;
  border: 1px solid #ddd;
  border-radius: 50%;
  background: #fff;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
}
.page-contact .wpcf7 .radio-group input[type="radio"]::before {
  content: "";
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--red);
  transform: scale(0);
  transition: transform .2s;
}
.page-contact .wpcf7 .radio-group input[type="radio"]:checked::before { transform: scale(1); }
.page-contact .wpcf7 .radio-group input[type="radio"]:focus-visible { outline: 2px solid #cbb0a4; outline-offset: 2px; }
@media screen and (max-width: 768px) {
  .page-contact .wpcf7 form.wpcf7-form { margin-top: 30px; }
  .page-contact .wpcf7 .form-item input.form-control,
  .page-contact .wpcf7 .form-item select.form-control,
  .page-contact .wpcf7 .form-item textarea.form-control { height: 50px; padding: 0 14px; font-size: 1.6rem; }
  .page-contact .wpcf7 .form-item textarea.form-control { height: 180px; padding: 12px 14px; }
  .page-contact .wpcf7 .radio-group .wpcf7-radio { gap: 10px 26px; }
  .page-contact .wpcf7 .radio-group .wpcf7-list-item label { font-size: 1.5rem; }
  .page-contact .wpcf7 .radio-group input[type="radio"] { flex-basis: 28px; width: 28px; height: 28px; }
  .page-contact .wpcf7 .radio-group input[type="radio"]::before { width: 14px; height: 14px; }
}

/* ==========================================
   CF7 プライバシーポリシー（重複整理済み）
   元デザイン：白い四角＋赤いチェック
========================================== */
.page-contact .wpcf7 .form-agree .wpcf7-form-control-wrap,
.page-contact .wpcf7 .form-agree .wpcf7-acceptance {
  display: inline-block;
  width: auto;
}
.page-contact .wpcf7 .form-agree .wpcf7-list-item {
  margin: 0;
}
.page-contact .wpcf7 .form-agree .wpcf7-list-item label {
  display: inline-flex;
  align-items: center;
  gap: 16px;
  color: var(--brown);
  font-size: 1.6rem;
  font-weight: 700;
  cursor: pointer;
}
.page-contact .wpcf7 .form-agree input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  display: inline-block;
  position: relative;
  flex: 0 0 29px;
  width: 29px;
  height: 29px;
  min-width: 29px;
  margin: 0;
  padding: 0;
  border: 1px solid #ddd;
  border-radius: 0;
  background: #fff;
  opacity: 1;
  cursor: pointer;
}
.page-contact .wpcf7 .form-agree input[type="checkbox"]:checked {
  background: #fff;
  border-color: #ddd;
}
.page-contact .wpcf7 .form-agree input[type="checkbox"]:checked::after {
  content: "";
  position: absolute;
  left: 9px;
  top: 3px;
  width: 8px;
  height: 15px;
  border: solid var(--red);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.page-contact .wpcf7 .form-agree input[type="checkbox"]:focus-visible {
  outline: 2px solid #cbb0a4;
  outline-offset: 2px;
}
/* CF7内の旧装飾spanは非表示 */
.page-contact .wpcf7 .form-agree .mark {
  display: none;
}
/* リンク文字列だけに下線を表示 */
.page-contact .wpcf7 .form-agree a {
  color: var(--brown);
  text-decoration: underline;
  text-underline-offset: 4px;
}
@media screen and (max-width: 768px) {
  .page-contact .wpcf7 .form-agree .wpcf7-list-item label {
    gap: 12px;
    font-size: 1.4rem;
  }
}