/* ==========================================================================
   Sections：トップページ・下層ページで使うセクション（template-parts/sections/）
   方針：写真と大きな英字、細い線、余白。カード・アイコン・影は使わない。
   ========================================================================== */

/* Hero
   -------------------------------------------------------------------------- */
.p-hero {
	position: relative;
	padding-top: clamp(24px, 4vw, 48px);
}

.p-hero__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	max-width: calc(var(--container) + var(--gutter) * 2);
	margin-inline: auto;
	padding-left: var(--gutter);
}

.p-hero__body {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: clamp(24px, 4vw, 48px) 0 clamp(32px, 5vw, 56px);
}

.p-hero__meta {
	color: var(--c-muted);
	font-family: var(--font-display);
	font-size: .8rem;
	letter-spacing: .24em;
	text-transform: uppercase;
}

.p-hero__message {
	/* 写真側に少しはみ出させて重ねる */
	margin: clamp(24px, 5vw, 56px) clamp(-120px, -8vw, -40px) 0 0;
	color: var(--c-wine);
	font-family: var(--font-display);
	font-size: clamp(2.75rem, 7.2vw, 6rem);
	line-height: 1.02;
	letter-spacing: -.01em;
}

.p-hero__text {
	display: flex;
	align-items: flex-start;
	gap: clamp(24px, 4vw, 48px);
	margin-top: clamp(32px, 5vw, 64px);
}

.p-hero__catch {
	flex-shrink: 0;
	writing-mode: vertical-rl;
	font-size: clamp(1.25rem, 2.2vw, 1.75rem);
	font-weight: 500;
	line-height: 2;
	letter-spacing: .24em;
}

.p-hero__lead {
	max-width: 300px;
	padding-top: 8px;
	color: var(--c-muted);
	font-size: .9rem;
	line-height: 2.1;
}

.p-hero__photo {
	position: relative;
	min-height: clamp(420px, 62vw, 720px);
	margin: 0;
}

.p-hero__photo .c-photo {
	position: absolute;
	inset: 0;
}

.p-hero__entry {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 20px 40px;
	max-width: calc(var(--container) + var(--gutter) * 2);
	margin-inline: auto;
	padding: 28px var(--gutter) 0;
}

.p-hero__term {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 6px 20px;
}

.p-hero__term-label {
	color: var(--c-muted);
	font-family: var(--font-display);
	font-size: .8rem;
	letter-spacing: .2em;
	text-transform: uppercase;
}

.p-hero__term-value {
	font-family: var(--font-heading);
	font-size: 1.25rem;
	letter-spacing: .08em;
}

.p-hero__deadline {
	color: var(--c-wine);
	font-size: .875rem;
}

.p-hero__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px 32px;
}

@media (max-width: 860px) {
	.p-hero__inner {
		grid-template-columns: minmax(0, 1fr);
		padding-right: var(--gutter);
	}

	.p-hero__photo {
		order: -1;
		min-height: 0;
		aspect-ratio: 4 / 3;
		margin-right: calc(var(--gutter) * -1);
	}

	.p-hero__body {
		padding-top: 24px;
	}

	.p-hero__message {
		margin: 12px 0 0;
	}

	.p-hero__text {
		gap: 20px;
	}

	.p-hero__lead {
		max-width: none;
	}

	.p-hero__entry {
		flex-direction: column;
		align-items: stretch;
		padding-top: 0;
	}

	.p-hero__actions .c-btn {
		justify-content: center;
		flex: 1 1 100%;
	}
}

/* For you：左に見出し、右に一文ずつ
   -------------------------------------------------------------------------- */
.p-for-you__inner {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	gap: clamp(24px, 6vw, 96px);
}

.p-for-you .c-section-head {
	margin-bottom: 0;
}

.p-for-you__list {
	border-top: 1px solid var(--c-ink);
}

.p-for-you__item {
	padding: 22px 0 22px 2.2em;
	border-bottom: 1px solid var(--c-line);
	font-family: var(--font-heading);
	font-size: clamp(1rem, 1.8vw, 1.125rem);
	text-indent: -2.2em;
}

.p-for-you__item::before {
	content: "—";
	display: inline-block;
	width: 2.2em;
	color: var(--c-wine);
	text-indent: 0;
}

@media (max-width: 860px) {
	.p-for-you__inner {
		grid-template-columns: 1fr;
	}
}

/* Features：写真＋番号つきテキスト
   -------------------------------------------------------------------------- */
.p-features {
	background: var(--c-surface);
}

.p-features__inner {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	align-items: start;
	gap: clamp(32px, 6vw, 96px);
}

.p-features__photo {
	position: sticky;
	top: calc(var(--header-h) + 24px);
	aspect-ratio: 4 / 5;
	margin: 0;
}

.p-features__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(32px, 4vw, 56px) clamp(24px, 3vw, 40px);
}

.p-features__item {
	padding-top: 20px;
	border-top: 1px solid var(--c-ink);
}

.p-features__num {
	display: block;
	color: var(--c-wine);
	font-family: var(--font-display);
	font-size: 2.25rem;
	line-height: 1;
}

.p-features__title {
	margin: 18px 0 10px;
	font-size: 1.125rem;
}

.p-features__text {
	color: var(--c-muted);
	font-size: .9rem;
}

@media (max-width: 860px) {
	.p-features__inner {
		grid-template-columns: 1fr;
	}

	.p-features__photo {
		position: static;
		aspect-ratio: 16 / 10;
	}
}

@media (max-width: 560px) {
	.p-features__list {
		grid-template-columns: 1fr;
	}
}

/* Curriculum：目次のような一覧
   -------------------------------------------------------------------------- */
.p-curriculum__basics {
	display: grid;
	grid-template-columns: 200px minmax(0, 1fr);
	gap: 8px 32px;
	margin-bottom: 48px;
	padding: 24px 0;
	border-block: 1px solid var(--c-line);
}

.p-curriculum__basics-label {
	color: var(--c-wine);
	font-family: var(--font-display);
	letter-spacing: .08em;
}

.p-curriculum__basics-text strong {
	font-weight: 500;
	color: var(--c-wine);
}

.p-curriculum__basics-detail {
	grid-column: 2;
	display: grid;
	gap: 8px;
	margin: 8px 0 0;
	font-size: .9rem;
}

.p-curriculum__basics-detail dt {
	font-weight: 500;
}

.p-curriculum__basics-detail dd {
	margin: 0;
	color: var(--c-muted);
}

.p-curriculum__list {
	border-top: 1px solid var(--c-ink);
}

.p-curriculum__item {
	display: grid;
	grid-template-columns: 120px minmax(0, 5fr) minmax(0, 6fr);
	align-items: baseline;
	gap: 8px 32px;
	padding: 26px 0;
	border-bottom: 1px solid var(--c-line);
	transition: background-color .3s;
}

.p-curriculum__item:hover {
	background: linear-gradient(90deg, var(--c-sub-soft), transparent 70%);
}

.p-curriculum__month {
	color: var(--c-ink);
	font-family: var(--font-display);
	font-size: clamp(2rem, 4vw, 2.75rem);
	line-height: 1;
}

.p-curriculum__month small {
	margin-left: 4px;
	font-family: var(--font-body);
	font-size: .8rem;
}

.p-curriculum__item.is-current .p-curriculum__month {
	color: var(--c-wine);
}

.p-curriculum__genre {
	color: var(--c-sub);
	font-size: .8rem;
	letter-spacing: .08em;
}

.p-curriculum__theme {
	font-size: 1.125rem;
	font-weight: 500;
}

.p-curriculum__now {
	margin-left: 10px;
	color: var(--c-wine);
	font-family: var(--font-display);
	font-size: .8rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	vertical-align: middle;
}

.p-curriculum__items {
	color: var(--c-muted);
	font-size: .875rem;
	line-height: 1.8;
}

.p-curriculum__note {
	margin-top: 20px;
	color: var(--c-muted);
	font-size: .8rem;
}

@media (max-width: 860px) {
	.p-curriculum__basics {
		grid-template-columns: 1fr;
	}

	.p-curriculum__basics-detail {
		grid-column: 1;
	}

	.p-curriculum__item {
		grid-template-columns: 72px minmax(0, 1fr);
	}

	.p-curriculum__items {
		grid-column: 2;
	}
}

/* Flow：1本の線と4つの段階
   -------------------------------------------------------------------------- */
.p-flow {
	background: var(--c-sub-soft);
}

.p-flow__list {
	position: relative;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 32px;
	padding-top: 32px;
}

.p-flow__list::before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 1px;
	background: var(--c-ink);
}

.p-flow__item {
	position: relative;
}

.p-flow__item::before {
	content: "";
	position: absolute;
	top: -36px;
	left: 0;
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: var(--c-wine);
}

.p-flow__step {
	color: var(--c-wine);
	font-family: var(--font-display);
	font-size: .85rem;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.p-flow__title {
	margin: 10px 0 8px;
	font-size: 1.05rem;
	font-weight: 500;
}

.p-flow__text {
	color: var(--c-muted);
	font-size: .875rem;
}

@media (max-width: 860px) {
	.p-flow__list {
		grid-template-columns: 1fr;
		gap: 36px;
		padding: 0 0 0 28px;
	}

	.p-flow__list::before {
		top: 6px;
		bottom: 6px;
		left: 4px;
		right: auto;
		width: 1px;
		height: auto;
	}

	.p-flow__item::before {
		top: 8px;
		left: -28px;
	}
}

/* Works：大小をつけたギャラリー
   -------------------------------------------------------------------------- */
.p-works__list {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: clamp(16px, 2.5vw, 32px);
}

.p-works__item:nth-child(1) { grid-column: span 3; grid-row: span 2; }
.p-works__item:nth-child(2),
.p-works__item:nth-child(3) { grid-column: span 3; }
.p-works__item:nth-child(n + 4) { grid-column: span 2; }

.p-works__item figure {
	display: flex;
	flex-direction: column;
	height: 100%;
	margin: 0;
}

.p-works__img {
	flex: 1;
	min-height: 160px;
	aspect-ratio: 4 / 3;
}

.p-works__item:nth-child(1) .p-works__img {
	aspect-ratio: auto;
}

.p-works__item figcaption {
	display: flex;
	align-items: baseline;
	gap: 12px;
	margin-top: 12px;
	font-size: .875rem;
}

.p-works__month {
	color: var(--c-wine);
	font-family: var(--font-display);
}

@media (max-width: 700px) {
	.p-works__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.p-works__item:nth-child(n) {
		grid-column: span 1;
		grid-row: auto;
	}

	.p-works__item:nth-child(1) {
		grid-column: span 2;
	}

	.p-works__item:nth-child(1) .p-works__img {
		aspect-ratio: 4 / 3;
	}
}

/* Instructor ＋ Brand values
   -------------------------------------------------------------------------- */
.p-instructor {
	background: var(--c-surface);
}

.p-instructor__inner {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
	align-items: center;
	gap: clamp(32px, 7vw, 112px);
}

.p-instructor__photo {
	aspect-ratio: 4 / 5;
	margin: 0;
}

.p-instructor__text {
	color: var(--c-muted);
	line-height: 2.1;
}

.p-instructor__tags {
	margin-top: 28px;
	padding-top: 20px;
	border-top: 1px solid var(--c-line);
	color: var(--c-sub);
	font-size: .85rem;
	letter-spacing: .06em;
}

.p-values {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	margin-top: clamp(64px, 9vw, 120px);
	border-top: 1px solid var(--c-ink);
}

.p-values__item {
	padding: 28px 24px 8px;
}

.p-values__item + .p-values__item {
	border-left: 1px solid var(--c-line);
}

.p-values__ja {
	font-family: var(--font-heading);
	font-size: 1.375rem;
	letter-spacing: .14em;
}

.p-values__en {
	color: var(--c-wine);
	font-family: var(--font-display);
	font-size: .85rem;
	letter-spacing: .08em;
}

.p-values__text {
	margin-top: 12px;
	color: var(--c-muted);
	font-size: .85rem;
}

@media (max-width: 860px) {
	.p-instructor__inner {
		grid-template-columns: 1fr;
	}

	.p-instructor__photo {
		aspect-ratio: 16 / 10;
	}

	.p-values {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.p-values__item:nth-child(3) {
		border-left: 0;
	}

	.p-values__item:nth-child(n + 3) {
		border-top: 1px solid var(--c-line);
	}
}

/* Pricing
   -------------------------------------------------------------------------- */
.c-plans {
	gap: 0 clamp(16px, 3vw, 40px);
	max-width: none;
}

.c-plan__action .c-btn {
	justify-content: center;
	width: 100%;
}

/* Schedule
   -------------------------------------------------------------------------- */
.p-schedule {
	background: var(--c-surface);
}

.p-schedule__inner {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	gap: clamp(24px, 6vw, 96px);
}

.p-schedule .c-section-head {
	margin-bottom: 0;
}

.p-schedule__terms {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--c-ink);
	border-bottom: 1px solid var(--c-line);
}

.p-schedule__term {
	position: relative;
	padding: 28px 0 24px;
	text-align: center;
}

.p-schedule__term + .p-schedule__term {
	border-left: 1px solid var(--c-line);
}

.p-schedule__term-month {
	font-family: var(--font-display);
	font-size: clamp(2rem, 4vw, 3rem);
	line-height: 1;
}

.p-schedule__term-month small {
	margin-left: 2px;
	font-family: var(--font-body);
	font-size: .3em;
}

.p-schedule__term.is-next .p-schedule__term-month {
	color: var(--c-wine);
}

.p-schedule__term-label {
	display: block;
	margin-top: 8px;
	color: var(--c-wine);
	font-family: var(--font-display);
	font-size: .75rem;
	letter-spacing: .2em;
	text-transform: uppercase;
}

.p-schedule__info {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 48px;
	margin-top: 24px;
}

.p-schedule__info div {
	display: flex;
	align-items: baseline;
	gap: 16px;
}

.p-schedule__info dt {
	color: var(--c-muted);
	font-size: .85rem;
}

.p-schedule__info dd {
	margin: 0;
	font-family: var(--font-heading);
	font-size: 1.25rem;
}

@media (max-width: 860px) {
	.p-schedule__inner {
		grid-template-columns: 1fr;
	}
}

/* News
   -------------------------------------------------------------------------- */
.p-news .c-news-list {
	border-top-color: var(--c-ink);
}

/* FAQ
   -------------------------------------------------------------------------- */
.p-faq .c-faq {
	max-width: none;
}

/* CTA
   -------------------------------------------------------------------------- */
.p-cta {
	padding-block: clamp(80px, 12vw, 160px);
	background: var(--c-wine);
	color: #fff;
}

.p-cta__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	align-items: end;
	gap: 40px clamp(32px, 6vw, 96px);
}

.p-cta__en {
	color: var(--c-blue-pale);
	font-family: var(--font-display);
	font-size: clamp(2.75rem, 7vw, 5.5rem);
	line-height: 1.02;
}

.p-cta__title {
	font-size: clamp(1.375rem, 3vw, 2rem);
	font-weight: 500;
	line-height: 1.8;
	letter-spacing: .14em;
}

.p-cta__lead {
	margin-top: 16px;
	color: #efe4e3;
}

.p-cta__term {
	margin-top: 4px;
	color: var(--c-blue-pale);
	font-size: .85rem;
}

.p-cta__actions {
	margin-top: 32px;
}

.p-cta .c-btn--primary {
	background: var(--c-surface);
	color: var(--c-wine);
}

.p-cta .c-btn--primary:hover {
	background: var(--c-blue-pale);
	color: var(--c-wine-deep);
}

@media (max-width: 860px) {
	.p-cta__inner {
		grid-template-columns: 1fr;
	}

	.p-cta .c-btn {
		justify-content: center;
		width: 100%;
	}
}

/* Section page（下層ページでセクションを表示するとき）
   -------------------------------------------------------------------------- */
.p-section-page__content {
	padding-top: var(--section-y);
}

.p-section-page__content + section {
	padding-top: clamp(40px, 6vw, 64px);
}

/* Apply（入会申込みページ）
   -------------------------------------------------------------------------- */
.p-apply__term {
	margin-bottom: 32px;
}

.p-apply__content {
	margin-bottom: 32px;
}

.p-apply__steps {
	display: grid;
	gap: 10px;
	margin-bottom: 28px;
	counter-reset: apply;
}

.p-apply__steps li {
	display: flex;
	align-items: baseline;
	gap: 12px;
	counter-increment: apply;
}

.p-apply__steps li::before {
	content: counter(apply);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 28px;
	height: 28px;
	border: 1px solid var(--c-wine);
	border-radius: 50%;
	color: var(--c-wine);
	font-family: var(--font-display);
}

.p-apply__agree {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 20px 24px;
	border: 1px solid var(--c-wine);
	border-radius: var(--radius);
	background: var(--c-surface);
	cursor: pointer;
}

.p-apply__agree input {
	flex-shrink: 0;
	width: 20px;
	height: 20px;
	margin-top: .35em;
	accent-color: var(--c-wine);
}

.p-apply__plans {
	margin-block: 48px;
}

.p-apply__note {
	color: var(--c-muted);
	font-size: .875rem;
	text-align: center;
}

/* Legal
   -------------------------------------------------------------------------- */
.p-legal__updated {
	margin-top: 48px;
	color: var(--c-muted);
	font-size: .875rem;
	text-align: right;
}
