/* ==========================================================================
   1. Reset
   ========================================================================== */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
	-webkit-text-size-adjust: 100%;
}

body,
h1, h2, h3, h4, h5, h6,
p, ul, ol, dl, dd, figure {
	margin: 0;
	padding: 0;
}

ul, ol {
	list-style: none;
}

img, svg {
	max-width: 100%;
	height: auto;
	display: block;
}

a {
	color: inherit;
	text-decoration: none;
}

button {
	font: inherit;
	color: inherit;
	background: none;
	border: none;
	padding: 0;
	cursor: pointer;
}

address {
	font-style: normal;
}

body {
	font-family: var(--font-serif);
	color: var(--color-text);
	background: #fff;
	line-height: 1.6;
	font-size: 14px;
}

:focus-visible {
	outline: 2px solid var(--color-accent-link);
	outline-offset: 2px;
}

/* ==========================================================================
   2. Variables
   ========================================================================== */
:root {
	--color-text: #2b2b2b;
	--color-accent: #c34646;
	--color-accent-link: #c81528;
	--color-bg-menu: #f8f7f1;
	--font-serif: "Zen Old Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
	--font-sans: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;

	--header-height-sp: 62px;
	--header-height-pc: 70px;
}

/* ==========================================================================
   3. Common
   ========================================================================== */
.l-main {
	padding-top: var(--header-height-sp);
}

@media (min-width: 768px) {
	.l-main {
		padding-top: var(--header-height-pc);
	}
}

.u-hideSp {
	display: none;
}

.u-hidePc {
	display: inline-block;
}

@media (min-width: 768px) {
	.u-hideSp {
		display: inline-block;
	}

	.u-hidePc {
		display: none;
	}
}

/* 下層ページ見出し（縦書き h1）共通の字間。
   venue の2列・contact の2行は h1 が flex コンテナで文字が子 span 側にあり、
   h1 に font-size 指定が無い（UA 既定 2em = 28px）ため、継承だけだと 0.2em が
   28px 基準で解決されて実効値がずれる。子にも直接指定して基準を各要素の
   font-size（24px = 4.8px）に揃える。
   個別の p-*__title 側には letter-spacing を書かない（同一詳細度で後勝ちになるため） */
.c-pageTitle,
.c-pageTitle > * {
	letter-spacing: .2em;
}

/* スクロール連動の上品なフェード表示（JS が html.js-anim を付けた時だけ初期非表示にする） */
.js-anim .js-reveal {
	opacity: 0;
	transform: translateY(14px);
	transition:
		opacity 1.2s cubic-bezier(0.25, 0.1, 0.25, 1),
		transform 1.2s cubic-bezier(0.25, 0.1, 0.25, 1);
}

/* テキスト: 上から下へ静かに現れつつ、わずかに大きめから沈み込む */
.js-anim .js-reveal--fade {
	transform: scale(1.02);
	clip-path: inset(0 0 100% 0);
	transition:
		opacity 1.2s cubic-bezier(0.25, 0.1, 0.25, 1),
		transform 2.2s cubic-bezier(0.33, 0, 0.2, 1),
		clip-path 2.2s cubic-bezier(0.33, 0, 0.2, 1);
}

.js-anim .js-reveal--fade.is-revealed {
	clip-path: inset(-4px -4px -4px -4px);
}

/* フルワイドの見出しコンテナは scale を使わない（発火前の一時的な横はみ出し防止。筆運びの clip リビールは維持） */
.js-anim .p-venue__title.js-reveal--fade,
.js-anim .p-ceremony__title.js-reveal--fade,
.js-anim .p-photo__title.js-reveal--fade,
.js-anim .p-flow__title.js-reveal--fade,
.js-anim .p-voice__title.js-reveal--fade,
.js-anim .p-contact__title.js-reveal--fade {
	transform: none;
}

/* ソフトフォーカスが晴れながらふわっと浮かび上がる（リード文などに使用） */
.js-anim .js-reveal--soft {
	clip-path: none;
	transform: translateY(32px);
	filter: blur(8px);
	transition:
		opacity 2.4s cubic-bezier(0.25, 0.1, 0.25, 1),
		transform 3.4s cubic-bezier(0.22, 0.1, 0.2, 1),
		filter 3s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.js-anim .js-reveal--soft.is-revealed {
	clip-path: none;
	filter: blur(0);
}

/* ヒーロー: コンテナはゆっくりフェード、内部の画像はわずかに沈み込みながら等倍に。ページ読込直後に viewport 内にあるため実質ロードアニメーションとして機能する */
.js-anim .js-reveal--hero {
	overflow: hidden;
	transform: none;
	transition: opacity 1.6s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.js-anim .js-reveal--hero img {
	transform: scale(1.05);
	transition: transform 2.6s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.js-anim .js-reveal--hero.is-revealed img {
	transform: scale(1);
}

.js-anim .js-reveal.is-revealed {
	opacity: 1;
	transform: none;
}

/* モザイクは複数枚が同時に見えるため、時間差でひと呼吸ずつ現す */
.js-anim .p-top__mosaicPhoto--2.js-reveal {
	transition-delay: 0.15s;
}

.js-anim .p-top__mosaicPhoto--3.js-reveal {
	transition-delay: 0.3s;
}

.js-anim .p-top__mosaicPhoto--4.js-reveal {
	transition-delay: 0.45s;
}

.js-anim .p-top__mosaicText.js-reveal {
	transition-delay: 0.35s;
}

@media (prefers-reduced-motion: reduce) {
	.js-anim .js-reveal {
		opacity: 1;
		transform: none;
		clip-path: none;
		filter: none;
		transition: none;
	}

	.js-anim .js-reveal--hero img {
		transform: none;
		transition: none;
	}
}

/* ==========================================================================
   4. Header
   ========================================================================== */
.l-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 100;
	height: var(--header-height-sp);
	background: #fff;
}

@media (min-width: 768px) {
	.l-header {
		height: var(--header-height-pc);
	}
}

.l-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 100%;
	padding-left: 16px;
}

@media (min-width: 768px) {
	.l-header__inner {
		padding-left: 32px;
	}
}

.l-header__logo {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 0 0 auto;
}

.l-header__logoMark {
	width: 36px;
	height: 40px;
}

.l-header__logoText {
	display: flex;
	flex-direction: column;
	line-height: 1.3;
}

.l-header__logoCatch {
	font-size: 8px;
	letter-spacing: .05em;
}

.l-header__logoTitle {
	font-size: 22px;
	letter-spacing: .1em;
}

@media (min-width: 768px) {
	.l-header__logoCatch {
		font-size: 9.5px;
		letter-spacing: .95px;
	}

	.l-header__logoTitle {
		font-size: 26.15px;
		letter-spacing: 2.61px;
	}
}

.l-header__nav {
	display: none;
}

/* グロナビは全項目が1行で収まる幅（実測 1060px〜）まで表示しない。
   768〜1099px はハンバーガー（SPメニュー）で代替 */
@media (min-width: 1100px) {
	.l-header__nav {
		display: block;
		margin-left: auto;
		margin-right: 32px;
	}
}

.l-header__navList {
	display: flex;
	align-items: center;
}

.l-header__navItem {
	position: relative;
	font-size: 14px;
	letter-spacing: 1.4px;
	line-height: 22px;
}

.l-header__navItem + .l-header__navItem {
	margin-left: 28px;
}

.l-header__navItem:not(:last-child)::after {
	content: "";
	position: absolute;
	top: 50%;
	right: -14px;
	transform: translateY(-50%);
	width: 1px;
	height: 13px;
	background: var(--color-text);
}

.l-header__actions {
	display: flex;
	align-items: center;
	height: 100%;
	flex: 0 0 auto;
}

.l-header__reserve {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 6px;
	width: 80px;
	height: 100%;
	background: var(--color-accent);
	color: #fff;
	font-size: 14px;
	white-space: nowrap;
}

@media (min-width: 768px) {
	.l-header__reserve {
		width: 252px;
		gap: 10px;
	}
}

.l-header__menuToggle {
	width: 80px;
	height: 44px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.l-header__menuToggle img {
	width: 30px;
	height: auto;
}

/* グロナビ表示と同じ閾値でハンバーガーを消す（768〜1099px はハンバーガー併用） */
@media (min-width: 1100px) {
	.l-header__menuToggle {
		display: none;
	}
}

/* ==========================================================================
   5. Footer
   ========================================================================== */
.l-footer {
	background: #fff;
}

.l-footer__top {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	gap: 6px;
	height: 29px;
	padding-left: 9.6%;
	background: var(--color-accent);
	color: #fff;
	font-size: 12px;
	letter-spacing: .05em;
}

.l-footer__top img {
	/* icon-arrow-top.svg のパスは下向きのため、上向き矢印に反転させる */
	transform: scaleY(-1);
}

@media (min-width: 768px) {
	.l-footer__top {
		height: 35px;
		justify-content: center;
		padding-left: 0;
	}
}

.l-footer__main {
	padding: 32px 24px 40px;
}

/* 768px〜: 左右 16px。iPad mini 付近は列・gap を詰めてナビの途中改行を防ぐ。
   広め（1000px〜）で PC デザイン（340 / 72 / 最大 936 コンテンツ）に戻す */
@media (min-width: 768px) {
	.l-footer__main {
		display: grid;
		grid-template-columns: minmax(0, 260px) minmax(0, 1fr);
		grid-template-rows: auto auto;
		column-gap: 32px;
		max-width: 968px; /* コンテンツ 936 + 左右 padding 16*2 */
		margin: 0 auto;
		padding: 48px 16px;
	}
}

@media (min-width: 1000px) {
	.l-footer__main {
		grid-template-columns: 340px 1fr;
		column-gap: 72px;
	}
}

.l-footer__brand {
	margin-bottom: 32px;
}

@media (min-width: 768px) {
	.l-footer__brand {
		grid-column: 1;
		grid-row: 1;
		margin-bottom: 0;
	}
}

.l-footer__logo {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 16px;
}

.l-footer__logoMark {
	width: 30px;
	height: 34px;
}

.l-footer__logoText {
	display: flex;
	flex-direction: column;
	line-height: 1.3;
}

.l-footer__logoCatch {
	font-size: 8px;
	letter-spacing: .05em;
}

.l-footer__logoTitle {
	font-size: 22px;
	letter-spacing: .1em;
}

.l-footer__company {
	font-family: var(--font-sans);
}

.l-footer__companyName {
	font-size: 12px;
	margin-bottom: 4px;
}

.l-footer__companyGroup {
	font-size: 10px;
	font-weight: 700;
	line-height: 1.9;
	margin-bottom: 6px;
}

.l-footer__companyAddress {
	font-size: 10px;
	margin-bottom: 4px;
}

.l-footer__companyTel {
	font-size: 12px;
}

@media (min-width: 768px) {
	.l-footer__company {
		grid-column: 1;
		grid-row: 2;
		margin-top: 16px;
	}

	.l-footer__companyName {
		font-size: 13px;
	}

	.l-footer__companyAddress {
		font-size: 12px;
	}
}

.l-footer__nav {
	display: grid;
	grid-template-columns: 1fr 1fr;
	column-gap: 16px;
	margin: 8px 0 32px;
}

.l-footer__navCol {
	font-size: 12px;
	line-height: 36px;
}

.l-footer__navCol--sub {
	grid-column: 1 / -1;
	margin-top: 8px;
	font-size: 10px;
	line-height: 24px;
}

@media (min-width: 768px) {
	.l-footer__nav {
		grid-column: 2;
		grid-row: 1 / span 2;
		display: flex;
		justify-content: space-between;
		gap: 0 20px;
		margin-top: 0;
		margin-bottom: 0;
		min-width: 0;
	}

	.l-footer__navCol {
		flex: 0 0 auto;
		font-family: var(--font-sans);
		font-size: 10px;
		letter-spacing: 1px;
		line-height: 2.2;
	}

	/* 短いラベルの途中改行（セレモ / ニー など）を防ぐ */
	.l-footer__navCol a {
		display: inline-block;
		white-space: nowrap;
	}

	.l-footer__navCol--sub {
		margin-top: 0;
		font-size: 10px;
	}
}

@media (min-width: 1000px) {
	.l-footer__nav {
		gap: 0 72px;
	}
}

.l-footer__bottom {
	height: 29px;
	background: var(--color-accent);
}

@media (min-width: 768px) {
	.l-footer__bottom {
		height: 35px;
	}
}

/* ==========================================================================
   6. SP Menu
   ========================================================================== */
body.is-menuOpen {
	overflow: hidden;
}

.p-spMenu {
	position: fixed;
	inset: 0;
	z-index: 200;
	background: var(--color-bg-menu);
	padding: 64px 35px 40px;
	overflow-y: auto;
	visibility: hidden;
	opacity: 0;
	transform: translateX(100%);
	transition: transform .3s ease, opacity .3s ease, visibility 0s linear .3s;
}

.p-spMenu.is-open {
	visibility: visible;
	opacity: 1;
	transform: translateX(0);
	transition-delay: 0s;
}

.p-spMenu__close {
	position: absolute;
	top: 19px;
	right: 27px;
	width: 22px;
	height: 22px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.p-spMenu__close img {
	width: 22px;
	height: auto;
}

.p-spMenu__logo {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 32px;
}

.p-spMenu__logoMark {
	width: 36px;
	height: 40px;
}

.p-spMenu__logoText {
	display: flex;
	flex-direction: column;
	line-height: 1.3;
}

.p-spMenu__logoCatch {
	font-size: 8px;
	letter-spacing: .05em;
}

.p-spMenu__logoTitle {
	font-size: 22px;
	letter-spacing: .1em;
}

.p-spMenu__list {
	border-top: 0;
}

.p-spMenu__item {
	border-bottom: 1px solid #707070;
}

.p-spMenu__item a {
	display: flex;
	align-items: center;
	height: 50px;
	font-size: 16px;
	letter-spacing: 1.6px;
}

/* ==========================================================================
   7. p-top
   ========================================================================== */
.p-top__hero {
	position: relative;
	width: 100%;
	aspect-ratio: 375 / 667;
	overflow: hidden;
	background: #000;
}

@media (min-width: 768px) {
	.p-top__hero {
		aspect-ratio: 1440 / 811;
	}
}

.p-top__heroVideo {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-top__heroVideo--pc {
	display: none;
}

.p-top__heroVideo--sp {
	display: block;
}

@media (min-width: 768px) {
	.p-top__heroVideo--pc {
		display: block;
	}

	.p-top__heroVideo--sp {
		display: none;
	}
}

.p-top__heroOverlay {
	position: absolute;
	top: 6%;
	right: 6%;
	z-index: 2;
	display: flex;
	flex-direction: row-reverse;
	gap: 5px;
}

@media (min-width: 768px) {
	.p-top__heroOverlay {
		top: 15%;
		right: 12%;
		gap: 10px;
	}

	.p-top__heroOverlayLine:first-child {
		margin-top: 64px;
	}
}

.p-top__heroOverlayLine {
	display: block;
	writing-mode: vertical-rl;
	color: #fff;
	font-size: 24px;
	font-weight: 400;
	line-height: 1.15;
	letter-spacing: .17em;
}

.p-top__heroOverlayLine:nth-child(2) {
	margin-top: 166px;
}

@media (min-width: 768px) {
	/* 動画に焼き込まれた縦書きコピー（画面右側）との重なりを避けるため左寄せに配置 */
	.p-top__heroOverlay {
		top: 12%;
		right: auto;
		left: 6.5%;
		gap: 8px;
	}

	.p-top__heroOverlayLine:first-child {
		margin-top: 0;
	}

	.p-top__heroOverlayLine {
		font-size: 24px;
		line-height: 1.15;
		letter-spacing: .05em;
	}

	.p-top__heroOverlayLine:nth-child(2) {
		margin-top: 154px;
	}
}

.p-top__heroOverlayNum {
	text-combine-upright: all;
	/* Zen Old Mincho の縦中横は合成グリフのインクが右下に寄るため光学補正
	   （left: 中心揃え / top: 前後の字間 10/3px を再均等化） */
	position: relative;
	left: -0.125em;
	top: -0.15em;
}

.p-top__intro {
	padding: 56px 0;
	text-align: center;
}

@media (min-width: 768px) {
	.p-top__intro {
		padding: 80px 0;
	}
}

.p-top__introText {
	max-width: 210px;
	margin: 0 auto;
	font-size: 15px;
	line-height: 35px;
}

@media (min-width: 768px) {
	.p-top__introText {
		max-width: 540px;
	}
}

.p-top__photo {
	width: 100%;
	aspect-ratio: 375 / 211;
	margin-bottom: 80px;
}

.p-top__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (min-width: 768px) {
	.p-top__photo {
		max-width: 766px;
		aspect-ratio: 766 / 482;
		margin: 0 auto 80px;
	}
}

.p-top__cards {
	display: flex;
	flex-direction: column;
	gap: 32px;
	max-width: 540px;
	margin: 0 auto;
	padding: 0 21px 56px;
}

@media (min-width: 768px) {
	.p-top__cards {
		flex-direction: row;
		justify-content: space-between;
		gap: 0;
		max-width: 1100px;
		padding: 0 20px 80px;
	}
}

.p-top__card {
	display: flex;
	flex-direction: column;
	height: 549px;
	border: 1px solid var(--color-text);
	padding: 24px 0 20px;
}

@media (min-width: 768px) {
	.p-top__card {
		width: 334px;
	}
}

.p-top__cardHead {
	padding: 0 20px;
	margin-bottom: 16px;
	font-size: 20px;
	line-height: 30px;
	letter-spacing: 1px;
	font-weight: 400;
}

.p-top__cardPhoto {
	width: 100%;
	aspect-ratio: 333 / 210;
}

.p-top__cardPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-top__cardBody {
	flex: 1;
	padding: 16px 24px 0;
	font-size: 14px;
	line-height: 30px;
}


@media (min-width: 768px) {
	.p-top__cardBody {
		padding-right: 20px;
		padding-left: 20px;
	}
}

.p-top__cardLink {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 4px;
	padding: 12px 20px 0;
	font-size: 12px;
	letter-spacing: .06em;
}

.p-top__cardArrow {
	color: var(--color-accent-link);
}

.p-top__divider {
	width: 0;
	height: 60px;
	margin: 0 auto;
	border-left: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-top__divider {
		height: 93px;
	}
}

.p-top__mosaic {
	position: relative;
	width: 100%;
	aspect-ratio: 375 / 977;
	margin: 48px 0 40px;
}

@media (min-width: 768px) {
	.p-top__mosaic {
		aspect-ratio: 1440 / 1686;
		margin: 80px 0 56px;
	}
}

.p-top__mosaicItem {
	position: absolute;
}

.p-top__mosaicPhoto {
	z-index: 1;
}

.p-top__mosaicPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-top__mosaicBg {
	z-index: 0;
	background: #f8f7f1;
}

.p-top__mosaicText {
	z-index: 2;
	writing-mode: vertical-rl;
	color: var(--color-text);
	font-size: 15px;
	line-height: 1.8;
	letter-spacing: .3em;
}

@media (min-width: 768px) {
	.p-top__mosaicText {
		font-size: 24px;
	}
}

/* mosaic-1: 手紙を読む女性の写真 */
.p-top__mosaicPhoto--1 {
	left: 0;
	top: 0;
	width: 71.47%;
	height: 16.38%;
}

/* mosaic-2: 赤い着物とブーケの写真 */
.p-top__mosaicPhoto--2 {
	left: 16%;
	top: 24.05%;
	width: 84%;
	height: 19.24%;
}

/* mosaic-4: 縦長の家族写真 */
.p-top__mosaicPhoto--3 {
	left: 47.47%;
	top: 49.23%;
	width: 52.53%;
	height: 27.94%;
}

/* mosaic-3: 手紙を書く家族の写真 */
.p-top__mosaicPhoto--4 {
	left: 0;
	top: 83.62%;
	width: 71.47%;
	height: 16.38%;
}

.p-top__mosaicBg--1 {
	left: 0;
	top: 11.57%;
	width: 88.8%;
	height: 21.8%;
}

.p-top__mosaicBg--2 {
	left: 17.6%;
	top: 71.85%;
	width: 68%;
	height: 18.32%;
}

.p-top__mosaicText--1 {
	left: 82.13%;
	top: 1.64%;
}

.p-top__mosaicText--2 {
	left: 19.6%;
	top: 49.23%;
}

@media (min-width: 768px) {
	.p-top__mosaicPhoto--1 {
		left: 0;
		top: 0;
		width: 49.24%;
		height: 25.09%;
	}

	.p-top__mosaicPhoto--2 {
		left: 50.69%;
		top: 32.27%;
		width: 49.31%;
		height: 25.15%;
	}

	.p-top__mosaicPhoto--3 {
		left: 11.81%;
		top: 57.18%;
		width: 22.36%;
		height: 26.45%;
	}

	.p-top__mosaicPhoto--4 {
		left: 43.13%;
		top: 80.01%;
		width: 39.17%;
		height: 19.99%;
	}

	.p-top__mosaicBg--1 {
		left: 35.9%;
		top: 16.49%;
		width: 46.39%;
		height: 31.49%;
	}

	.p-top__mosaicBg--2 {
		left: 18.96%;
		top: 70.05%;
		width: 30.21%;
		height: 20.46%;
	}

	.p-top__mosaicText--1 {
		left: 74.17%;
		top: 3.5%;
	}

	.p-top__mosaicText--2 {
		left: 23.4%;
		top: 32.27%;
	}
}

.p-top__notice {
	padding: 56px 0 96px;
}

@media (min-width: 768px) {
	.p-top__notice {
		padding: 80px 0 120px;
	}
}

.p-top__noticeItem {
	max-width: 268px;
	margin: 0 auto;
	text-align: center;
}

.p-top__noticeItem + .p-top__noticeItem {
	margin-top: 70px;
}

@media (min-width: 768px) {
	.p-top__noticeItem {
		max-width: 523px;
	}

	.p-top__noticeItem + .p-top__noticeItem {
		margin-top: 56px;
	}
}

.p-top__noticeHead {
	margin-bottom: 16px;
	font-size: 20px;
	line-height: 30px;
	letter-spacing: 1px;
	font-weight: 400;
}

.p-top__noticeBody {
	margin-bottom: 12px;
	font-size: 14px;
	line-height: 30px;
	text-align: left;
}

.p-top__noticeLink {
	display: block;
	text-align: right;
	font-size: 12px;
	letter-spacing: .06em;
}

.p-top__noticeLink span {
	margin-left: 4px;
	color: var(--color-accent-link);
}

.p-top__linkCards {
	display: flex;
	flex-direction: column;
	gap: 24px;
	max-width: 306px;
	margin: 0 auto;
	padding: 0 0 56px;
}

@media (min-width: 768px) {
	.p-top__linkCards {
		flex-direction: row;
		justify-content: space-between;
		gap: 0;
		max-width: 978px;
		padding: 0 20px 80px;
	}
}

.p-top__linkCard {
	display: flex;
	align-items: center;
	height: 123px;
	border: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-top__linkCard {
		width: 306px;
	}
}

.p-top__linkCardPhoto {
	flex: 0 0 auto;
	width: 153px;
	height: 123px;
}

.p-top__linkCardPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-top__linkCardLabel {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: space-between;
	flex: 1;
	align-self: stretch;
	padding: 14px;
	font-size: 16px;
}

.p-top__linkCardArrow {
	/* arrow-card.svg は下向き矢印のため、右向きに-90度回転させる */
	width: 9px;
	transform: rotate(-90deg);
}

/* ==========================================================================
   9. p-venue
   ========================================================================== */
.p-venue__hero {
	width: 100%;
	aspect-ratio: 375 / 200;
}

.p-venue__hero img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (min-width: 768px) {
	.p-venue__hero {
		max-width: 1100px;
		aspect-ratio: 1100 / 330;
		margin: 32px auto 0;
	}
}

.p-venue__title {
	display: flex;
	flex-direction: row-reverse;
	justify-content: center;
	align-items: flex-start;
	gap: 14px;
	margin: 40px auto 32px;
}

.p-venue__titleMain {
	writing-mode: vertical-rl;
	text-orientation: mixed;
	font-size: 24px;
	line-height: 1.3;
	font-weight: 500;
}

.p-venue__titleSub {
	writing-mode: vertical-rl;
	text-orientation: mixed;
	font-size: 24px;
	line-height: 1.3;
	font-weight: 500;
	/* 縦書き「（」の字形余白でインクが約15px下がるため上面を光学補正（デザインは両列ほぼ揃い） */
	margin-top: -12px;
}

@media (min-width: 768px) {
	.p-venue__title {
		/* 縦書きは右から左: 「式場」(第1子) を右に置くため base の row-reverse を維持 */
		align-items: flex-start;
		margin-top: 72px;
	}

	.p-venue__titleMain {
		writing-mode: vertical-rl;
		text-orientation: mixed;
	}
}

.p-venue__lead {
	max-width: 267px;
	margin: 0 auto 80px;
	font-size: 14px;
	line-height: 28px;
	text-align: center;
}

@media (min-width: 768px) {
	.p-venue__lead {
		max-width: 630px;
		margin-bottom: 140px;
	}
}

.p-venue__jump {
	display: flex;
	flex-direction: column;
	gap: 16px;
	max-width: 306px;
	margin: 0 auto;
	padding: 0;
}

@media (min-width: 768px) {
	.p-venue__jump {
		display: grid;
		grid-template-columns: repeat(3, 306px);
		grid-template-rows: repeat(2, auto);
		grid-auto-flow: column;
		gap: 20px 40px;
		max-width: 998px;
	}
}

.p-venue__jumpItem {
	position: relative;
	display: flex;
	align-items: center;
	width: 100%;
	min-height: 103px;
	border: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-venue__jumpItem {
		width: 306px;
	}
}

.p-venue__jumpPhoto {
	flex: 0 0 auto;
	width: 153px;
	height: 103px;
}

.p-venue__jumpPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-venue__jumpText {
	display: flex;
	flex-direction: column;
	gap: 6px;
	flex: 1;
	min-width: 0;
	padding: 0 12px;
	text-align: center;
}

.p-venue__jumpLoc {
	font-size: 12px;
	letter-spacing: .6px;
	line-height: 1.5;
}

.p-venue__jumpName {
	font-size: 15px;
	letter-spacing: .75px;
	line-height: 1.45;
	text-wrap: balance;
}

.p-venue__jumpArrow {
	position: absolute;
	right: 10px;
	bottom: 4px;
	font-size: 14px;
	color: var(--color-accent-link);
}

.p-venue__section {
	margin-top: 132px;
}

@media (min-width: 768px) {
	.p-venue__section {
		margin-top: 100px;
	}
}

.p-venue__divider {
	width: 0;
	height: 85px;
	margin: 0 auto 40px;
	border-left: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-venue__divider {
		height: 93px;
		margin-bottom: 80px;
	}
}

.p-venue__head {
	text-align: center;
	margin-bottom: 32px;
}

@media (min-width: 768px) {
	.p-venue__head {
		margin-bottom: 45px;
	}
}

.p-venue__headLoc {
	font-size: 15px;
	letter-spacing: .75px;
	line-height: 1.6;
}

.p-venue__headName {
	font-size: 25px;
	font-weight: 400;
	letter-spacing: 1.25px;
	line-height: 1.4;
	padding: 0 24px;
	text-wrap: balance;
}

.p-venue__headReading {
	font-size: 15px;
	letter-spacing: .75px;
}

.p-venue__banner {
	display: flex;
	flex-direction: column;
	margin-bottom: 21px;
}

.p-venue__bannerPhoto {
	aspect-ratio: 375 / 217;
}

.p-venue__bannerPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (max-width: 767px) {
	.p-venue__section {
		margin-top: 60px;
	}

	/* 2会場目以降: リンク下端→次見出し 183px（body 下パディング56 + divider 60+32 を含む） */
	.p-venue__section#printemps,
	.p-venue__section#nougakudou,
	.p-venue__section#yoga,
	.p-venue__section#sakura {
		margin-top: 14px;
	}

	.p-venue__banner {
		gap: 20px;
	}

	.p-venue__bannerPhoto,
	.p-venue__bannerPhoto img {
		flex: 0 0 217px;
		height: 217px;
	}
}

@media (min-width: 768px) {
	.p-venue__banner {
		flex-direction: row;
		gap: 0;
		max-width: 1100px;
		margin: 0 auto 92px;
		padding: 0;
	}

	.p-venue__bannerPhoto {
		flex: 1;
		aspect-ratio: 550 / 317;
	}
}

.p-venue__body {
	display: flex;
	flex-direction: column;
	gap: 32px;
	max-width: 327px;
	margin: 0 auto;
	padding: 0 24px 56px;
}

@media (min-width: 768px) {
	.p-venue__body {
		flex-direction: row;
		justify-content: space-between;
		gap: 32px;
		max-width: 883px;
		padding: 0 20px;
	}
}

.p-venue__text {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

@media (min-width: 768px) {
	.p-venue__text {
		width: 450px;
	}
}

.p-venue__catch {
	font-size: 16px;
	line-height: 35px;
	letter-spacing: .8px;
	text-wrap: balance;
}

.p-venue__desc {
	font-size: 14px;
	line-height: 30px;
}

/* SP はキャッチ・会場カードと本文であえて幅を変える（Figma SP の指定）。
   広い側 306px は末尾の関連リンクカード（.p-venue__linkCards の max-width）と同値で、
   親 .p-venue__body の content 279px から左右 13.5px はみ出して左端 34.5px を揃える。
   狭い側 256px はセレモニーページ本文（.p-ceremony__featureBody）と同値。
   PC は別レイアウト（body が row・cardCol は 306px 固定）なので SP 専用クエリに閉じる。 */
@media (max-width: 767px) {

	.p-venue__catch,
	.p-venue__cardCol {
		margin-left: -13.5px;
		margin-right: -13.5px;
	}

	.p-venue__desc {
		max-width: 256px;
		margin-left: auto;
		margin-right: auto;
	}
}

/* ギャラリー: メイン画像 + サムネイル帯 + 次へ矢印（SP はバナー直後・全幅） */
.p-venue__gallery {
	display: flex;
	flex-direction: column;
	gap: 20px;
	order: -1;
	width: 100vw;
	margin: 0 calc(50% - 50vw) 17px;
}

.p-venue__slider {
	position: relative;
	width: 100%;
	aspect-ratio: 900 / 520;
}

.p-venue__slider .swiper-slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-venue__galleryFooter {
	display: flex;
	align-items: center;
	padding-left: 21px;
}

.p-venue__thumbs {
	position: relative;
	flex: 1;
	min-width: 0;
}

.p-venue__thumbs::after {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	width: 76px;
	background: linear-gradient(to right, rgba(255, 255, 255, 0), #fff);
	pointer-events: none;
	z-index: 2;
}

.p-venue__thumbs .swiper-slide {
	width: 82px;
}

.p-venue__thumbBtn {
	display: block;
	width: 100%;
	height: 58px;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.p-venue__thumbBtn img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-venue__galleryNext {
	flex: 0 0 auto;
	width: 32px;
	height: 44px;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	position: relative;
}

.p-venue__galleryNext::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 11px;
	height: 11px;
	border-top: 1px solid var(--color-text);
	border-right: 1px solid var(--color-text);
	transform: translate(-50%, -50%) rotate(45deg);
}

@media (min-width: 768px) {
	.p-venue__gallery {
		gap: 24px;
		order: 0;
		width: 100%;
		/* 本文との間は .p-venue__text の gap 16px + 20px = 36px（チェックバック 260729: +20px アキ広く・全会場共通） */
		margin: 20px 0 0;
	}

	.p-venue__galleryFooter {
		padding-left: 0;
	}

	.p-venue__thumbs .swiper-slide {
		width: 99px;
	}

	.p-venue__thumbBtn {
		height: 70px;
	}
}

.p-venue__cardCol {
	display: flex;
	flex-direction: column;
}

@media (min-width: 768px) {
	.p-venue__cardCol {
		width: 306px;
		flex: 0 0 auto;
		align-self: flex-start;
	}
}

.p-venue__card {
	border: 1px solid #707070;
	padding: 20px;
}

.p-venue__cardName {
	font-size: 20px;
	line-height: 30px;
	margin-bottom: 4px;
}

.p-venue__cardSubtitle {
	font-size: 12px;
	line-height: 30px;
}

.p-venue__cardAddr {
	font-size: 14px;
	line-height: 30px;
	margin-bottom: 12px;
}

.p-venue__cardTags {
	display: flex;
	align-items: stretch;
	flex-wrap: nowrap;
	gap: 8px;
	margin-bottom: 20px;
}

.p-venue__cardTag {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 18px;
	padding: 0 8px;
	border: 1px solid #000;
	background: #fff;
	font-family: var(--font-sans);
	font-size: 10px;
	white-space: nowrap;
}

.p-venue__cardTag--wide {
	height: auto;
	min-height: 50px;
	width: auto;
	flex: 1 1 auto;
	white-space: normal;
	line-height: 1.4;
	padding: 8px;
	text-align: left;
}

.p-venue__cardRow {
	padding-top: 16px;
	margin-bottom: 16px;
}

.p-venue__cardRow--price {
	margin-bottom: 20px;
}

.p-venue__cardLabel {
	display: flex;
	align-items: center;
	gap: 16px;
	font-size: 16px;
	line-height: 30px;
}

.p-venue__cardLabel::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: #707070;
}

.p-venue__cardYear {
	font-size: 16px;
	line-height: 30px;
}

.p-venue__cardDate {
	line-height: 30px;
}

.p-venue__cardDateBig {
	font-size: 20px;
}

.p-venue__cardDateSmall {
	font-size: 16px;
}

.p-venue__cardPrice {
	font-size: 20px;
	line-height: 30px;
	margin-top: 16px;
}

.p-venue__cardPriceUnit {
	font-size: 14px;
}

.p-venue__cardLink {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
	margin-top: 16px;
	font-size: 14px;
}

.p-venue__cardLink span {
	color: var(--color-accent-link);
}

.p-venue__linkCards {
	display: flex;
	flex-direction: column;
	gap: 24px;
	max-width: 306px;
	/* 上の要素との見た目の間隔はサイト共通で PC 120px / SP 96px（トップ基準・2026-07-30 指示）。
	   SP はセクション末尾 CTA の下に既存の白 56px があるため margin-top 40px で計 96px */
	margin: 40px auto 56px;
	padding: 0;
}

@media (min-width: 768px) {
	.p-venue__linkCards {
		flex-direction: row;
		justify-content: center;
		gap: 32px;
		max-width: 644px;
		margin: 120px auto 80px;
	}
}

.p-venue__linkCard {
	display: flex;
	align-items: center;
	height: 123px;
	border: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-venue__linkCard {
		width: 306px;
	}
}

.p-venue__linkCardPhoto {
	flex: 0 0 auto;
	width: 153px;
	height: 123px;
}

.p-venue__linkCardPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-venue__linkCardLabel {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: space-between;
	flex: 1;
	align-self: stretch;
	min-width: 0;
	padding: 14px;
	font-size: 16px;
	white-space: nowrap;
}

.p-venue__linkCardArrow {
	width: 9px;
	transform: rotate(-90deg);
}

/* ==========================================================================
   10. p-ceremony
   ========================================================================== */
.p-ceremony__hero {
	width: 100%;
	aspect-ratio: 375 / 200;
}

.p-ceremony__heroImg {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-ceremony__heroImg--pc {
	display: none;
}

.p-ceremony__heroImg--sp {
	display: block;
}

@media (min-width: 768px) {
	.p-ceremony__hero {
		max-width: 1100px;
		aspect-ratio: 1100 / 330;
		margin: 32px auto 0;
	}

	.p-ceremony__heroImg--pc {
		display: block;
	}

	.p-ceremony__heroImg--sp {
		display: none;
	}
}

.p-ceremony__title {
	width: fit-content;
	margin: 40px auto;
	writing-mode: vertical-rl;
	text-orientation: mixed;
	font-size: 24px;
	line-height: 30px;
	font-weight: 500;
}

@media (min-width: 768px) {
	.p-ceremony__title {
		margin: 56px auto;
	}
}

.p-ceremony__lead {
	max-width: 267px;
	margin: 0 auto 56px;
	font-size: 14px;
	line-height: 28px;
	text-align: center;
}

@media (min-width: 768px) {
	.p-ceremony__lead {
		max-width: 714px;
		margin-bottom: 80px;
	}
}

.p-ceremony__video {
	width: 100%;
	aspect-ratio: 375 / 211;
	margin-bottom: 152px;
}

.p-ceremony__videoEl {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

@media (min-width: 768px) {
	.p-ceremony__video {
		max-width: 766px;
		aspect-ratio: 766 / 430;
		margin: 0 auto 172px;
	}
}

.p-ceremony__feature {
	display: flex;
	flex-direction: column;
	gap: 32px;
	max-width: 327px;
	margin: 0 auto 40px;
	padding: 0 24px;
}

@media (min-width: 768px) {
	.p-ceremony__feature {
		flex-direction: row;
		align-items: center;
		justify-content: center;
		gap: 60px;
		max-width: 1100px;
		margin: 0 auto 112px;
		padding: 0 20px;
	}
}

.p-ceremony__featureText {
	text-align: center;
}

@media (min-width: 768px) {
	.p-ceremony__featureText {
		flex: 0 0 auto;
		text-align: left;
	}
}

.p-ceremony__featureHead {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-start;
	margin-bottom: 40px;
}

.p-ceremony__featureHeadLine {
	font-size: 23px;
	line-height: 30px;
	letter-spacing: 1.15px;
	font-weight: 500;
	white-space: nowrap;
}

.p-ceremony__featureHeadLine--2 {
	margin-top: 4px;
	margin-left: 32px;
}

.p-ceremony__featureBody {
	max-width: 256px;
	margin: 0 auto;
	font-size: 14px;
	line-height: 28px;
	text-align: left;
}

@media (min-width: 768px) {
	.p-ceremony__featureBody {
		margin: 0;
	}
}

.p-ceremony__featurePhoto {
	position: relative;
	left: 48px;
	width: 220px;
	margin-left: auto;
	aspect-ratio: 511 / 663;
}

.p-ceremony__featurePhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

@media (min-width: 768px) {
	.p-ceremony__featurePhoto {
		flex: 0 0 auto;
		left: 56px;
		width: 511px;
		margin-left: 0;
	}
}

.p-ceremony__collage {
	margin: 0 0 0;
}

.p-ceremony__collageImgs {
	position: relative;
	width: 100%;
	aspect-ratio: 375 / 441;
	/* コラージュ配置用の透明領域が後続リンクを覆いクリックを奪うため無効化（画像側で復帰） */
	pointer-events: none;
}

.p-ceremony__collageImg {
	position: absolute;
	pointer-events: auto;
}

.p-ceremony__collageImg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-ceremony__collageImg--1 {
	left: 0;
	top: 0;
	width: 75.7%;
	height: 38.3%;
}

.p-ceremony__collageImg--2 {
	left: 11.5%;
	top: 47.4%;
	width: 88.5%;
	height: 44.9%;
}

.p-ceremony__collageLink {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 4px;
	max-width: 327px;
	margin: 16px auto 0;
	padding: 0 24px;
	font-size: 13px;
}

.p-ceremony__collageLink span {
	color: var(--color-accent-link);
}

@media (min-width: 768px) {
	.p-ceremony__collage {
		margin-bottom: 36px;
	}

	.p-ceremony__collageImgs {
		aspect-ratio: 1440 / 854;
	}

	.p-ceremony__collageImg--1 {
		left: 11.81%;
		top: 0;
		width: 37.29%;
		height: 37.35%;
	}

	.p-ceremony__collageImg--2 {
		left: 41.67%;
		top: 48.83%;
		width: 46.53%;
		height: 46.84%;
	}

	.p-ceremony__collageLink {
		max-width: 1100px;
		margin: -20px auto 0;
		padding: 0 20px;
	}
}

.p-ceremony__divider {
	width: 0;
	height: 60px;
	margin: 0 auto 56px;
	border-left: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-ceremony__divider {
		height: 93px;
		/* Figma: img48 下端→img100 上端の間隔 293px に合わせる */
		margin-bottom: 100px;
	}
}

.p-ceremony__place {
	max-width: 327px;
	margin: 0 auto 56px;
	padding: 0 24px;
	text-align: center;
}

.p-ceremony__placeHead {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-start;
	margin-bottom: 40px;
}

.p-ceremony__placeHeadLine {
	font-size: 23px;
	line-height: 30px;
	letter-spacing: 1.15px;
	font-weight: 500;
	white-space: nowrap;
}

.p-ceremony__placeHeadLine--2 {
	margin-top: 4px;
	margin-left: 32px;
}

.p-ceremony__placeBody {
	max-width: 256px;
	margin: 0 auto 32px;
	font-size: 14px;
	line-height: 28px;
	text-align: left;
}

.p-ceremony__placeImgs {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-bottom: 16px;
}

.p-ceremony__placeImg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-ceremony__placeImg--1 {
	aspect-ratio: 750 / 449;
}

.p-ceremony__placeImg--2 {
	aspect-ratio: 367 / 477;
}

.p-ceremony__placeImg--3 {
	aspect-ratio: 384 / 229;
}

.p-ceremony__placeLink {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 13px;
}

.p-ceremony__placeLink span {
	color: var(--color-accent-link);
}

@media (min-width: 768px) {
	.p-ceremony__place {
		display: grid;
		grid-template-columns: 62% 1fr;
		column-gap: 40px;
		max-width: 1100px;
		margin: 0 auto 140px;
		padding: 0 20px;
		text-align: left;
	}

	.p-ceremony__placeText {
		grid-column: 2;
		grid-row: 1;
		align-self: start;
	}

	.p-ceremony__placeHead {
		margin-bottom: 16px;
	}

	.p-ceremony__placeBody {
		margin: 0;
	}

	.p-ceremony__placeImgs {
		position: relative;
		grid-column: 1;
		grid-row: 1 / span 2;
		display: block;
		aspect-ratio: 1195 / 1017;
		width: min(1195px, calc(100vw - 40px));
		margin-left: min(0px, calc(530px - 50vw));
		margin-bottom: 0;
	}

	.p-ceremony__placeImg {
		position: absolute;
	}

	.p-ceremony__placeImg--1 {
		left: 0;
		top: 0;
		width: 62.76%;
		height: 44.15%;
	}

	.p-ceremony__placeImg--2 {
		left: 69.29%;
		top: 53.1%;
		width: 30.71%;
		height: 46.9%;
	}

	.p-ceremony__placeImg--3 {
		left: 24.27%;
		top: 66.96%;
		width: 32.13%;
		height: 22.5%;
	}

	.p-ceremony__placeLink {
		/* Figma と同じく「写真の下・右端揃え」に置く。
		   以前は col2（テキスト側）に置いて transform で下へ落としていたが、
		   リンクの水平位置がテキスト列基準なのに対し写真は width:min(1195px, 100vw-40px)
		   の別基準で伸縮するため、幅によって写真とのズレが -25〜+295px と大きく振れ、
		   狭い幅では写真に重なって読めなくなっていた。
		   画像と同じ width / margin-left を与えて独立した行に置けば、どの幅でも
		   写真の右端に揃い、必ず写真の下（白余白）に来る。 */
		grid-column: 1 / -1;
		grid-row: 3;
		display: flex;
		justify-content: flex-end;
		width: min(1195px, calc(100vw - 40px));
		margin-left: min(0px, calc(530px - 50vw));
		margin-top: 24px;
	}
}

@media (max-width: 767px) {
	.p-ceremony__collageLink {
		margin-top: -12px;
	}

	.p-ceremony__divider {
		margin-top: 40px;
		margin-bottom: 40px;
		height: 85px;
	}

	.p-ceremony__place {
		margin-bottom: 88px;
	}

	.p-ceremony__placeBody {
		margin-bottom: 76px;
	}

	.p-ceremony__placeImgs {
		position: relative;
		width: 100vw;
		height: 697px;
		margin-left: calc(50% - 50vw);
	}

	.p-ceremony__placeImg {
		position: absolute;
	}

	.p-ceremony__placeImg--1 {
		left: 21.8667%;
		top: 0;
		width: 78.1333%;
		height: 175px;
	}

	.p-ceremony__placeImg--2 {
		left: 10.4%;
		top: 231px;
		width: 48.2667%;
		height: 235px;
	}

	.p-ceremony__placeImg--3 {
		left: 0;
		top: 522px;
		width: 78.1333%;
		height: 175px;
	}

	.p-ceremony__placeLink {
		/* 上の写真撮影リンク（.p-ceremony__collageLink）と同じ右端 x=327 に揃える。
		   base は inline-flex で内容幅のまま中央に置かれていた。親 .p-ceremony__place が
		   すでに max-width:327px + padding:24px を持ちコンテンツ幅が 279px なので、
		   ここで幅や padding を重ねると右端がずれる。flex 化して右寄せするだけでよい */
		display: flex;
		justify-content: flex-end;
		margin-top: 8px;
	}

}

.p-ceremony__options {
	display: flex;
	flex-direction: column;
	gap: 24px;
	max-width: 331px;
	margin: 0 auto 56px;
	padding: 0;
}

@media (min-width: 768px) {
	.p-ceremony__options {
		flex-direction: row;
		justify-content: center;
		gap: 48px;
		max-width: 1100px;
		margin: 0 auto;
		padding: 0 20px;
	}
}

.p-ceremony__optionCard {
	background: var(--color-bg-menu);
	padding: 20px;
}

@media (min-width: 768px) {
	.p-ceremony__optionCard {
		width: 331px;
		flex: 0 0 auto;
		padding: 36px;
	}
}

.p-ceremony__optionHead {
	font-size: 20px;
	font-weight: 500;
	line-height: 35px;
	letter-spacing: 1px;
	margin-bottom: 32px;
}

@media (min-width: 768px) {
	.p-ceremony__optionHead {
		margin-bottom: 24px;
	}
}

.p-ceremony__optionPhoto {
	width: 100%;
	aspect-ratio: 256 / 152;
	margin-bottom: 16px;
}

.p-ceremony__optionPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-ceremony__optionBody {
	font-size: 14px;
	line-height: 26px;
}

@media (max-width: 767px) {
	.p-ceremony__options {
		gap: 30px;
		margin-bottom: 80px;
	}

	.p-ceremony__optionCard {
		padding: 44px 20px 20px;
	}

	.p-ceremony__optionCard:first-child {
		min-height: 473px;
	}

	.p-ceremony__optionCard:last-child {
		min-height: 273px;
	}
}

.p-ceremony__linkCards {
	display: flex;
	flex-direction: column;
	gap: 24px;
	max-width: 306px;
	/* 上の要素との見た目の間隔はサイト共通で PC 120px / SP 96px（トップ基準・2026-07-30 指示）。
	   SP は options の margin-bottom 80px とコラプスし max(80,96)=96px */
	margin: 96px auto 56px;
	padding: 0;
}

@media (min-width: 768px) {
	.p-ceremony__linkCards {
		flex-direction: row;
		justify-content: center;
		gap: 32px;
		max-width: 644px;
		/* Figma 突合値は 160px（img103→img50 間隔 318px）だったが、
		   リンクカード上の間隔をサイト共通 PC 120px に統一する指示（2026-07-30）が優先 */
		margin: 120px auto 80px;
	}
}

.p-ceremony__linkCard {
	display: flex;
	align-items: center;
	height: 123px;
	border: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-ceremony__linkCard {
		width: 306px;
	}
}

.p-ceremony__linkCardPhoto {
	flex: 0 0 auto;
	width: 153px;
	height: 123px;
}

.p-ceremony__linkCardPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-ceremony__linkCardLabel {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: space-between;
	flex: 1;
	align-self: stretch;
	padding: 14px;
	font-size: 16px;
}

.p-ceremony__linkCardArrow {
	width: 9px;
	transform: rotate(-90deg);
}

/* ==========================================================================
   11. p-photo
   ========================================================================== */
.p-photo__hero {
	width: 100%;
	aspect-ratio: 375 / 200;
}

.p-photo__heroImg {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-photo__heroImg--pc {
	display: none;
}

.p-photo__heroImg--sp {
	display: block;
}

@media (min-width: 768px) {
	.p-photo__hero {
		max-width: 1100px;
		aspect-ratio: 1100 / 330;
		margin: 32px auto 0;
	}

	.p-photo__heroImg--pc {
		display: block;
	}

	.p-photo__heroImg--sp {
		display: none;
	}
}

/* venue の見出しと同じ2列構成（主題＋補足）。縦書きは右から左なので
   row-reverse で第1子「家族写真」を右に置く。writing-mode 等は子へ移す。 */
.p-photo__title {
	display: flex;
	flex-direction: row-reverse;
	justify-content: center;
	align-items: flex-start;
	gap: 14px;
	width: fit-content;
	margin: 40px auto;
}

.p-photo__titleMain,
.p-photo__titleSub {
	writing-mode: vertical-rl;
	text-orientation: mixed;
	font-size: 24px;
	line-height: 30px;
	font-weight: 500;
}

.p-photo__titleSub {
	/* 縦書き「（」の字形余白でインクが下がるため上面を光学補正（venue と同値） */
	margin-top: -12px;
}

@media (min-width: 768px) {
	.p-photo__title {
		margin: 56px auto;
	}
}

.p-photo__lead {
	max-width: 267px;
	margin: 0 auto 100px;
	font-size: 14px;
	line-height: 28px;
	text-align: center;
}

@media (min-width: 768px) {
	.p-photo__lead {
		max-width: 630px;
		margin-bottom: 148px;
	}
}

.p-photo__main {
	width: 100%;
	aspect-ratio: 721 / 430;
	margin-bottom: 108px;
}

.p-photo__main img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

@media (min-width: 768px) {
	.p-photo__main {
		max-width: 721px;
		margin: 0 auto 100px;
	}
}

.p-photo__feature {
	display: flex;
	flex-direction: column;
	gap: 32px;
	max-width: 327px;
	margin: 0 auto 40px;
	padding: 0 24px;
}

@media (min-width: 768px) {
	.p-photo__feature {
		flex-direction: row;
		align-items: center;
		justify-content: center;
		gap: 60px;
		max-width: 1100px;
		margin: 0 auto 96px;
		padding: 0 20px;
	}
}

.p-photo__featureText {
	text-align: center;
}

@media (min-width: 768px) {
	.p-photo__featureText {
		flex: 0 0 auto;
		text-align: left;
	}
}

.p-photo__featureHead {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-start;
	margin-bottom: 40px;
}

.p-photo__featureHeadLine {
	font-size: 23px;
	line-height: 30px;
	letter-spacing: 1.15px;
	font-weight: 500;
	white-space: nowrap;
}

.p-photo__featureHeadLine--2 {
	margin-top: 4px;
	margin-left: 32px;
}

.p-photo__featureHeadLine--3 {
	margin-top: 4px;
	margin-left: 64px;
}

.p-photo__featureBody {
	max-width: 256px;
	margin: 0 auto;
	font-size: 14px;
	line-height: 28px;
	text-align: left;
}

@media (min-width: 768px) {
	.p-photo__featureBody {
		margin: 0;
	}
}

.p-photo__featurePhoto {
	position: relative;
	left: 48px;
	width: 244px;
	margin-left: auto;
	min-height: 0;
	aspect-ratio: 465 / 665;
}

.p-photo__featurePhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

@media (min-width: 768px) {
	.p-photo__featurePhoto {
		flex: 0 0 auto;
		left: 52px;
		width: 465px;
		margin-left: 0;
	}
}

.p-photo__collage {
	margin: 0 0 0;
}

.p-photo__collageImgs {
	position: relative;
	width: 100%;
	aspect-ratio: 375 / 441;
}

.p-photo__collageImg {
	position: absolute;
}

.p-photo__collageImg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-photo__collageImg--1 {
	left: 0;
	top: 0;
	width: 75.7%;
	height: 38.3%;
}

.p-photo__collageImg--2 {
	left: 11.5%;
	top: 44.4%;
	width: 88.5%;
	height: 44.9%;
}

.p-photo__collageLink {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 4px;
	max-width: 327px;
	margin: 16px auto 0;
	padding: 0 24px;
	font-size: 13px;
}

.p-photo__collageLink span {
	color: var(--color-accent-link);
}

@media (min-width: 768px) {
	.p-photo__collage {
		margin-bottom: 36px;
	}

	.p-photo__collageImgs {
		aspect-ratio: 1440 / 854;
	}

	.p-photo__collageImg--1 {
		left: 11.81%;
		top: 0;
		width: 37.29%;
		height: 37.35%;
	}

	.p-photo__collageImg--2 {
		left: 41.67%;
		top: 48.83%;
		width: 46.53%;
		height: 46.84%;
	}

	.p-photo__collageLink {
		max-width: 1100px;
		margin: 24px auto 0;
		padding: 0 20px;
	}
}

.p-photo__divider {
	width: 0;
	height: 60px;
	margin: 0 auto 56px;
	border-left: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-photo__divider {
		height: 93px;
		margin-bottom: 80px;
	}
}

.p-photo__place {
	max-width: 327px;
	margin: 0 auto 56px;
	padding: 0 24px;
	text-align: center;
}

.p-photo__placeImgs {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-bottom: 32px;
	/* コラージュ配置用の透明領域（PC で幅 1270px に拡大）が「式場」リンクを覆い
	   クリックを奪うため無効化（画像側で復帰） */
	pointer-events: none;
}

.p-photo__placeImg {
	pointer-events: auto;
}

.p-photo__placeImg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-photo__placeImg--1,
.p-photo__placeImg--2,
.p-photo__placeImg--3 {
	min-height: 0;
	aspect-ratio: 752 / 449;
}

.p-photo__placeHead {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-start;
	margin-bottom: 16px;
}

.p-photo__placeHeadLine {
	font-size: 23px;
	line-height: 30px;
	letter-spacing: 1.15px;
	font-weight: 500;
	white-space: nowrap;
}

.p-photo__placeHeadLine--2 {
	margin-top: 4px;
	margin-left: 32px;
}

.p-photo__placeBody {
	max-width: 256px;
	margin: 0 auto 24px;
	font-size: 14px;
	line-height: 28px;
	text-align: left;
}

.p-photo__placeLink {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 13px;
}

.p-photo__placeLink span {
	color: var(--color-accent-link);
}

@media (max-width: 767px) {
	.p-photo__collageImgs {
		aspect-ratio: 375 / 393;
	}

	.p-photo__collageImg--1 {
		width: 71.47%;
		height: 40.71%;
	}

	.p-photo__collageImg--2 {
		top: 49.87%;
		height: 50.13%;
	}

	.p-photo__divider {
		margin-top: 40px;
		margin-bottom: 40px;
		height: 85px;
	}

	.p-photo__place {
		display: flex;
		flex-direction: column;
		max-width: none;
		margin-bottom: 76px;
		padding: 0;
	}

	.p-photo__placeText {
		order: -1;
		padding: 0 48px;
	}

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

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

	.p-photo__placeImgs {
		gap: 35px;
		margin-bottom: 0;
	}

	.p-photo__placeImg--1 {
		order: 3;
	}

	.p-photo__placeImg--2 {
		order: 2;
	}

	.p-photo__placeImg--3 {
		order: 1;
	}

	.p-photo__placeImg--1,
	.p-photo__placeImg--3 {
		width: 88.5333%;
		margin-left: 11.4667%;
	}

	.p-photo__placeImg--2 {
		width: 88%;
		margin-left: 0;
	}

	.p-photo__placeLink {
		/* 上のセレモニーリンク（.p-photo__collageLink）と同じ右揃え位置に合わせる。
		   親 .p-photo__place は flex-direction: column なので、交差軸に margin auto を
		   置くと stretch が無効になり幅が内容幅に縮む。width: 100% で幅を確定させてから
		   max-width と margin auto を効かせる（親が block のセレモニー側とは事情が違う） */
		display: flex;
		justify-content: flex-end;
		width: 100%;
		max-width: 327px;
		margin: 16px auto 0;
		padding: 0 24px;
	}

}

@media (min-width: 768px) {
	.p-photo__place {
		display: grid;
		/* 78% だと col2 が 1fr でも min-content（本文 max-width 256px）より縮まず、
		   テキストが親の右端を 44px はみ出していた。Figma の本文 x=889〜1145 に合わせて
		   col1 を 63.7% にする（content 1060px 基準で col2 の開始が 889px）。
		   画像側 .p-photo__placeImgs は width を独自に持つのでこの列幅には追随しない */
		grid-template-columns: 63.7% 1fr;
		column-gap: 24px;
		max-width: 1100px;
		margin: 0 auto 180px;
		padding: 0 20px;
		text-align: left;
	}

	.p-photo__placeImgs {
		position: relative;
		grid-column: 1;
		grid-row: 1 / span 2;
		display: block;
		aspect-ratio: 1272 / 1465;
		margin-bottom: 0;
		/* 画像カラムのみビューポート左端までブリード。右端は標準1100pxコンテナの右端に揃える（テキスト側は非対象） */
		margin-left: min(0px, calc(530px - 50vw));
		width: min(calc(50vw + 550px), 100vw);
	}

	.p-photo__placeImg {
		position: absolute;
	}

	.p-photo__placeImg--1 {
		left: 0;
		top: 0;
		width: 59.12%;
		height: 30.65%;
	}

	.p-photo__placeImg--2 {
		left: 40.88%;
		top: 34.68%;
		width: 59.12%;
		height: 30.65%;
	}

	.p-photo__placeImg--3 {
		left: 13.6%;
		top: 69.35%;
		width: 59.12%;
		height: 30.65%;
	}

	.p-photo__placeText {
		grid-column: 2;
		grid-row: 1;
		align-self: start;
	}

	.p-photo__placeHead {
		margin-bottom: 16px;
	}

	.p-photo__placeBody {
		margin: 0;
	}

	.p-photo__placeLink {
		/* ceremony と同じく「写真の下・右端揃え」に置く。
		   テキスト列（col2）に置くとリンクの水平位置がテキスト基準になる一方、
		   写真は width:min(50vw+550px, 100vw) の別基準で伸縮するため、幅によって
		   写真とのズレが -40〜+74px と振れて画像に重なっていた。
		   画像群と同じ width / margin-left を与えたうえで、基準となる placeImg--3 の
		   右端（left 13.6% + width 59.12% = 72.72%）まで padding で内側に寄せる。 */
		grid-column: 1 / -1;
		grid-row: 3;
		display: flex;
		justify-content: flex-end;
		/* 画像群と同じ左端から、placeImg--3 の右端（left 13.6% + width 59.12% = 72.72%）
		   までを幅にする。padding の % は自身でなく親幅が基準になるため使わない */
		width: calc(min(calc(50vw + 550px), 100vw) * 0.7272);
		margin-left: min(0px, calc(530px - 50vw));
		margin-top: 24px;
	}
}

.p-photo__options {
	display: flex;
	flex-direction: column;
	gap: 24px;
	max-width: 339px;
	margin: 0 auto 56px;
	padding: 0;
}

@media (min-width: 768px) {
	.p-photo__options {
		flex-direction: row;
		justify-content: center;
		align-items: stretch;
		gap: 20px;
		max-width: 1100px;
		/* 直後の linkCards との間隔は linkCards 側の margin-top が持つ（サイト共通 120px 統一） */
		margin: 0 auto;
		padding: 0 20px;
	}
}

.p-photo__optionCard {
	position: relative;
	background: var(--color-bg-menu);
	padding: 24px;
}

@media (min-width: 768px) {
	.p-photo__optionCard {
		width: 339px;
		flex: 0 0 auto;
	}
}

.p-photo__optionHead {
	font-size: 20px;
	/* h2 既定の 700 だと太すぎる（チェックバック 260729: 700→500。ceremony 側 optionHead と同値） */
	font-weight: 500;
	line-height: 35px;
	letter-spacing: 1px;
	margin-bottom: 16px;
}

.p-photo__optionPhoto {
	width: 100%;
	aspect-ratio: 290 / 172;
	margin-bottom: 16px;
}

.p-photo__optionPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-photo__optionBody {
	font-size: 14px;
	line-height: 26px;
}

.p-photo__optionLogo {
	display: block;
	width: 93px;
	height: 70px;
	margin: 24px 0 0 auto;
}

.p-photo__optionAlbum {
	position: relative;
	width: 100%;
	aspect-ratio: 290 / 200;
	margin-bottom: 16px;
}

.p-photo__optionAlbumImg {
	position: absolute;
	object-fit: cover;
	box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.25);
}

.p-photo__optionAlbumImg--1 {
	left: 0;
	top: 0;
	width: 51%;
	aspect-ratio: 148 / 147;
}

.p-photo__optionAlbumImg--2 {
	left: 37%;
	top: 25%;
	width: 51%;
	aspect-ratio: 148 / 148;
}

@media (max-width: 767px) {
	.p-photo__options {
		gap: 30px;
		margin-bottom: 80px;
	}

	.p-photo__optionCard {
		padding: 40px 24px 24px;
	}

	.p-photo__optionCard:nth-child(1) {
		min-height: 638px;
	}

	.p-photo__optionCard:nth-child(2) {
		min-height: 540px;
	}

	.p-photo__optionCard:nth-child(3) {
		min-height: 534px;
	}

	.p-photo__optionHead {
		margin-bottom: 30px;
	}
}

.p-photo__linkCards {
	display: flex;
	flex-direction: column;
	gap: 24px;
	max-width: 306px;
	/* 上の要素との見た目の間隔はサイト共通で PC 120px / SP 96px（トップ基準・2026-07-30 指示）。
	   SP は options の margin-bottom 80px とコラプスし max(80,96)=96px */
	margin: 96px auto 56px;
	padding: 0;
}

@media (min-width: 768px) {
	.p-photo__linkCards {
		flex-direction: row;
		justify-content: center;
		gap: 32px;
		max-width: 644px;
		margin: 120px auto 80px;
	}
}

.p-photo__linkCard {
	display: flex;
	align-items: center;
	height: 123px;
	border: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-photo__linkCard {
		width: 306px;
	}
}

.p-photo__linkCardPhoto {
	flex: 0 0 auto;
	width: 153px;
	height: 123px;
}

.p-photo__linkCardPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-photo__linkCardLabel {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: space-between;
	flex: 1;
	align-self: stretch;
	padding: 14px;
	font-size: 16px;
}

.p-photo__linkCardArrow {
	width: 9px;
	transform: rotate(-90deg);
}

/* ==========================================================================
   12. p-flow
   ========================================================================== */
.p-flow__hero {
	width: 100%;
	aspect-ratio: 375 / 200;
}

.p-flow__heroImg {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-flow__heroImg--pc {
	display: none;
}

.p-flow__heroImg--sp {
	display: block;
}

@media (min-width: 768px) {
	.p-flow__hero {
		max-width: 1100px;
		aspect-ratio: 1100 / 330;
		margin: 28px auto 0;
	}

	.p-flow__heroImg--pc {
		display: block;
	}

	.p-flow__heroImg--sp {
		display: none;
	}
}

.p-flow__title {
	width: fit-content;
	margin: 40px auto;
	writing-mode: vertical-rl;
	text-orientation: mixed;
	font-size: 24px;
	line-height: 30px;
	font-weight: 500;
}

@media (min-width: 768px) {
	.p-flow__title {
		margin: 56px auto;
	}
}

.p-flow__lead {
	max-width: 267px;
	margin: 0 auto 56px;
	font-size: 14px;
	line-height: 28px;
	text-align: center;
}

@media (min-width: 768px) {
	.p-flow__lead {
		max-width: 630px;
		margin-bottom: 80px;
	}
}

.p-flow__divider {
	width: 0;
	height: 85px;
	margin: 40px auto;
	border-left: 1px solid var(--color-text);
}

.p-flow__divider--lead {
	margin-top: 40px;
	margin-bottom: 40px;
	height: 85px;
}

@media (min-width: 768px) {
	.p-flow__divider {
		height: 93px;
		margin-bottom: 80px;
	}

	/* step1(写真)直後の縦線は写真に密着していたため上下マージンを Figma 実測に合わせる
	   （写真下端→線 約58px、線→セレモニー 約92px） */
	.p-flow__step--1 + .p-flow__divider {
		margin-top: 92px;
		margin-bottom: 92px;
	}
}

.p-flow__step {
	margin-bottom: 56px;
}

.p-flow__step--1 {
	margin-bottom: 44px;
}

.p-flow__step--2 {
	margin-bottom: 0;
}

.p-flow__step--2 + .p-flow__divider {
	margin-bottom: 108px;
}

.p-flow__step--3 {
	margin-bottom: 0;
}

.p-flow__step--3 .p-flow__stepHead {
	margin-bottom: 76px;
}

@media (min-width: 768px) {
	.p-flow__step {
		margin-bottom: 80px;
	}

	.p-flow__step--1,
	.p-flow__step--2 {
		margin-bottom: 0;
	}

	.p-flow__step--2 + .p-flow__divider {
		margin: 72px auto;
	}

	.p-flow__step--3 {
		margin-bottom: 0;
	}

	.p-flow__step--3 .p-flow__stepHead {
		margin-bottom: 35px;
	}
}

.p-flow__stepInner {
	margin: 0 auto;
}

.p-flow__stepHead {
	text-align: center;
	font-size: 20px;
	line-height: 1.5;
	letter-spacing: 1px;
	font-weight: 500;
	margin-bottom: 40px;
	padding: 0 24px;
}

.p-flow__step--1 .p-flow__stepHead {
	margin-bottom: 40px;
}

.p-flow__stepRow {
	display: flex;
	align-items: flex-start;
	gap: 32px;
}

.p-flow__step--1 .p-flow__stepRow,
.p-flow__step--3 .p-flow__stepRow {
	padding-left: 24px;
}

.p-flow__step--2 .p-flow__stepRow {
	padding-right: 24px;
}

.p-flow__stepBody {
	flex: 0 0 auto;
	width: 189px;
}

.p-flow__stepText {
	font-size: 14px;
	line-height: 26px;
}

.p-flow__stepPhoto {
	flex: 0 0 auto;
	width: 130px;
	aspect-ratio: 130 / 169;
}

.p-flow__stepPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-flow__stepPhotos {
	display: flex;
	flex-direction: column;
	gap: 16px;
	flex: 0 0 auto;
	width: 130px;
}

.p-flow__step--2 .p-flow__stepPhotos {
	gap: 76px;
}

.p-flow__stepPhotosItem {
	aspect-ratio: 130 / 169;
}

.p-flow__stepPhotosItem img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-flow__stepPhotosItem img.p-flow__stepPhotosImg--sp {
	display: block;
}

.p-flow__stepPhotosItem img.p-flow__stepPhotosImg--pc {
	display: none;
}

.p-flow__stepList {
	display: flex;
	flex-direction: column;
	gap: 24px;
	font-size: 14px;
	line-height: 26px;
	margin-bottom: 16px;
}

/* セレモニーの項目間に短い縦線を入れて区切りを示す（Figma には無いがクライアント指示）。
   ページ内の他の区切り線（.p-flow__divider）と同じ 1px 実線で、長さだけ短くする。
   2つ目以降の li の先頭に置くので、末尾には線が出ない。 */
.p-flow__stepList > li + li::before {
	content: "";
	display: block;
	width: 0;
	height: 40px;
	margin: 0 0 24px 40px;
	border-left: 1px solid var(--color-text);
}

/* SP はテキスト幅が狭いぶん、線の左位置も詰める */
@media (max-width: 767px) {
	.p-flow__stepList > li + li::before {
		margin-left: 20px;
	}
}

.p-flow__stepListLabel {
	display: inline;
}

/* 〈家族から新成人へ〉〈新成人から家族へ〉は別の段落として見せる。
   margin-top を効かせるため inline-block にし、ラベル直後にくる1つ目だけ空きを消す。 */
.p-flow__stepListSub {
	display: inline-block;
	margin-top: 16px;
}

.p-flow__stepListLabel + br + .p-flow__stepListSub {
	margin-top: 0;
}

.p-flow__stepNote {
	font-size: 12px;
	line-height: 22px;
}

@media (min-width: 768px) {
	.p-flow__stepInner {
		padding: 0;
	}

	.p-flow__stepHead {
		text-align: left;
		margin-bottom: 35px;
		padding: 0;
	}

	.p-flow__step--1 .p-flow__stepHead {
		margin-bottom: 35px;
	}

	.p-flow__stepRow {
		margin: 0 auto;
	}

	.p-flow__step--1 .p-flow__stepRow,
	.p-flow__step--2 .p-flow__stepRow,
	.p-flow__step--3 .p-flow__stepRow {
		padding-left: 0;
		padding-right: 0;
	}

	.p-flow__stepBody {
		flex: 0 0 auto;
		width: 259px;
	}

	.p-flow__stepPhotos {
		gap: 24px;
	}

	.p-flow__step--2 .p-flow__stepPhotos {
		gap: 24px;
	}

	.p-flow__stepPhotosItem img.p-flow__stepPhotosImg--sp {
		display: none;
	}

	.p-flow__stepPhotosItem img.p-flow__stepPhotosImg--pc {
		display: block;
	}

	.p-flow__step--1 .p-flow__stepInner,
	.p-flow__step--1 .p-flow__stepRow {
		max-width: 770px;
	}

	.p-flow__step--1 .p-flow__stepRow {
		gap: 46px;
	}

	.p-flow__step--1 .p-flow__stepPhoto {
		width: 465px;
		aspect-ratio: 465 / 604;
	}

	.p-flow__step--2 .p-flow__stepInner,
	.p-flow__step--2 .p-flow__stepRow {
		max-width: 691px;
	}

	.p-flow__step--2 .p-flow__stepRow {
		gap: 103px;
	}

	.p-flow__step--2 .p-flow__stepPhotos {
		width: 329px;
	}

	.p-flow__step--2 .p-flow__stepPhotosItem {
		aspect-ratio: 329 / 428;
	}

	.p-flow__step--3 .p-flow__stepInner,
	.p-flow__step--3 .p-flow__stepRow {
		max-width: 693px;
	}

	.p-flow__step--3 .p-flow__stepRow {
		gap: 62px;
	}

	.p-flow__step--3 .p-flow__stepPhoto {
		width: 372px;
		aspect-ratio: 372 / 484;
	}
}

.p-flow__price {
	margin-top: 100px;
	margin-bottom: 56px;
}

.p-flow__priceBand {
	width: 100%;
	height: 100px;
	background: linear-gradient(to bottom, #f8f7f1, #fff);
	margin-bottom: 0;
}

.p-flow__priceItem {
	max-width: 325px;
	margin: 0 auto 60px;
	padding: 0 24px;
}

.p-flow__priceHead {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 16px;
	font-weight: 500;
	margin-bottom: 16px;
}

.p-flow__priceHead::before {
	content: "";
	flex: 0 0 auto;
	width: 6px;
	height: 20px;
	background: #5f5f5f;
}

.p-flow__priceText {
	font-size: 14px;
	line-height: 26px;
	margin-bottom: 12px;
}

.p-flow__priceList {
	display: flex;
	flex-direction: column;
	gap: 8px;
	font-size: 14px;
	line-height: 26px;
	margin-bottom: 16px;
}

.p-flow__priceNote {
	font-size: 12px;
	line-height: 22px;
}

.p-flow__priceTable {
	margin-top: 16px;
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.p-flow__priceTableGroup {
	font-size: 14px;
	line-height: 26px;
	font-weight: 500;
}

.p-flow__priceTableRow {
	display: flex;
	gap: 16px;
	font-size: 14px;
	line-height: 26px;
}

.p-flow__priceTableRow--sub {
	padding-left: 16px;
}

.p-flow__priceTableLabel,
.p-flow__priceTableItemLabel {
	flex: 0 0 auto;
	width: 108px;
}

.p-flow__priceTableItemLabel {
	width: 92px;
}

.p-flow__priceTableValue {
	font-size: 14px;
	line-height: 26px;
}

.p-flow__priceTax {
	font-size: 12px;
}

.p-flow__priceDivider {
	width: 277px;
	margin: 0 auto 60px;
	border: none;
	border-top: 1px solid #d9d9d9;
}



@media (min-width: 768px) {
	.p-flow__price {
		margin-bottom: 80px;
	}

	.p-flow__priceBand {
		margin-bottom: 0;
		height: 80px;
	}

	.p-flow__priceItem {
		max-width: 803px;
		margin: 0 auto 40px;
		padding: 0 20px;
	}

	.p-flow__priceList {
		display: grid;
		grid-template-columns: repeat(3, auto);
		grid-template-rows: repeat(2, auto);
		grid-auto-flow: column;
		column-gap: 56px;
		row-gap: 8px;
	}

	.p-flow__priceTable {
		row-gap: 0;
	}

	.p-flow__priceTableRow {
		gap: 24px;
		line-height: 22px;
	}

	.p-flow__priceTableValue {
		line-height: 22px;
	}

	.p-flow__priceTableLabel,
	.p-flow__priceTableItemLabel {
		width: 120px;
	}

	.p-flow__priceTableItemLabel {
		width: 104px;
	}

	.p-flow__priceDivider {
		width: 763px;
	}

	.p-flow__priceDivider:nth-of-type(1) {
		margin-bottom: 32px;
	}

	.p-flow__priceDivider:nth-of-type(2) {
		margin-bottom: 44px;
	}

	.p-flow__priceDivider:nth-of-type(3) {
		margin-bottom: 72px;
	}

	.p-flow__priceDivider:nth-of-type(4) {
		margin-bottom: 40px;
	}
}

.p-flow__linkCards {
	display: flex;
	flex-direction: column;
	gap: 24px;
	max-width: 306px;
	/* 上の要素との見た目の間隔はサイト共通で PC 120px / SP 96px（トップ基準・2026-07-30 指示）。
	   SP は price の margin-bottom 56px とコラプスし max(56,96)=96px */
	margin: 96px auto 56px;
	padding: 0;
}

@media (min-width: 768px) {
	.p-flow__linkCards {
		flex-direction: row;
		justify-content: center;
		gap: 32px;
		max-width: 982px;
		margin: 120px auto 80px;
	}
}

.p-flow__linkCard {
	display: flex;
	align-items: center;
	height: 123px;
	border: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-flow__linkCard {
		width: 306px;
	}
}

.p-flow__linkCardPhoto {
	flex: 0 0 auto;
	width: 153px;
	height: 123px;
}

.p-flow__linkCardPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-flow__linkCardLabel {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: space-between;
	flex: 1;
	align-self: stretch;
	padding: 14px;
	font-size: 16px;
}

.p-flow__linkCardArrow {
	width: 9px;
	transform: rotate(-90deg);
}

/* ==========================================================================
   13. p-voice
   ========================================================================== */
.p-voice__hero {
	width: 100%;
	aspect-ratio: 375 / 200;
}

.p-voice__heroImg {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-voice__heroImg--pc {
	display: none;
}

.p-voice__heroImg--sp {
	display: block;
}

@media (min-width: 768px) {
	.p-voice__hero {
		max-width: 1100px;
		aspect-ratio: 1100 / 330;
		margin: 32px auto 0;
	}

	.p-voice__heroImg--pc {
		display: block;
	}

	.p-voice__heroImg--sp {
		display: none;
	}
}

.p-voice__title,
.p-voice__qaTitle {
	width: fit-content;
	margin: 40px auto;
	writing-mode: vertical-rl;
	text-orientation: mixed;
	font-size: 24px;
	line-height: 30px;
	font-weight: 500;
}

.p-voice__qaTitle {
	text-orientation: upright;
	margin-top: 56px;
	/* Q&A はページ見出し（.c-pageTitle）ではないので従来の字間を維持する */
	letter-spacing: 1.2px;
}

@media (min-width: 768px) {
	.p-voice__title,
	.p-voice__qaTitle {
		margin: 56px auto;
	}

	.p-voice__qaTitle {
		margin-top: 80px;
	}
}

.p-voice__lead,
.p-voice__qaLead {
	max-width: 267px;
	margin: 0 auto 56px;
	font-size: 14px;
	line-height: 28px;
	text-align: left;
}

.p-voice__lead {
	margin-bottom: 104px;
}

.p-voice__lead br {
	display: none;
}

@media (min-width: 768px) {
	.p-voice__lead,
	.p-voice__qaLead {
		max-width: 630px;
		margin-bottom: 152px;
	}

	.p-voice__qaLead {
		margin-bottom: 80px;
	}

	.p-voice__lead br {
		display: initial;
	}
}

.p-voice__divider,
.p-voice__qaDividerV {
	width: 0;
	height: 50px;
	margin: 0 auto 56px;
	border-left: 1px solid var(--color-text);
}

.p-voice__divider,
.p-voice__qaDividerV {
	display: none;
}

@media (min-width: 768px) {
	.p-voice__divider,
	.p-voice__qaDividerV {
		display: block;
		height: 93px;
		margin-bottom: 80px;
	}
}

.p-voice__voices {
	display: flex;
	flex-direction: column;
	gap: 56px;
	margin-bottom: 56px;
}

.p-voice__voice--2 {
	margin-top: 36px;
}

.p-voice__voice--3 {
	margin-top: 40px;
}

.p-voice__voice--4 {
	margin-top: 44px;
}

.p-voice__voicePhoto {
	width: 100%;
	aspect-ratio: 188 / 137;
}

.p-voice__voice--1 .p-voice__voicePhoto,
.p-voice__voice--3 .p-voice__voicePhoto {
	margin-right: auto;
	max-width: 188px;
}

.p-voice__voice--2 .p-voice__voicePhoto,
.p-voice__voice--4 .p-voice__voicePhoto {
	margin-left: auto;
	max-width: 188px;
}

.p-voice__voicePhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-voice__voiceBody {
	max-width: 256px;
	margin: 24px auto 0;
	text-align: left;
}

.p-voice__voiceHead {
	font-size: 20px;
	line-height: 1.5;
	letter-spacing: 1px;
	font-weight: 500;
	margin-bottom: 16px;
}

.p-voice__voiceText {
	font-size: 14px;
	line-height: 26px;
	text-align: left;
}

.p-voice__voiceAuthor {
	margin-top: 4px;
	font-size: 12px;
	line-height: 22px;
	text-align: left;
}

@media (min-width: 768px) {
	.p-voice__voices {
		gap: 100px;
		max-width: 1100px;
		padding: 0;
		margin: 0 auto 120px;
	}

	.p-voice__voice {
		display: flex;
		align-items: center;
		gap: 83px;
	}

	.p-voice__voice--2,
	.p-voice__voice--4 {
		flex-direction: row-reverse;
	}

	.p-voice__voice--2,
	.p-voice__voice--3,
	.p-voice__voice--4 {
		margin-top: 0;
	}

	.p-voice__voicePhoto,
	.p-voice__voice--1 .p-voice__voicePhoto,
	.p-voice__voice--2 .p-voice__voicePhoto,
	.p-voice__voice--3 .p-voice__voicePhoto,
	.p-voice__voice--4 .p-voice__voicePhoto {
		flex: 0 0 auto;
		width: 670px;
		max-width: none;
		aspect-ratio: 670 / 488;
		margin: 0;
	}

	.p-voice__voiceBody {
		flex: 0 0 auto;
		width: 256px;
		margin: 0;
		text-align: left;
	}

	.p-voice__voiceText {
		text-align: left;
	}
}

@media (min-width: 768px) {
	.p-voice__qaTitle {
		margin-top: 56px;
	}
}

.p-voice__qaTopDivider {
	width: 286px;
	margin: 0 auto 56px;
	border: none;
	border-top: 1px solid #d9d9d9;
}

@media (min-width: 768px) {
	.p-voice__qaTopDivider {
		width: 1098px;
		margin-bottom: 80px;
	}
}

.p-voice__qa {
	padding: 0 24px;
	margin-bottom: 56px;
	/* contact ページの「こちら」から #qa で飛んでくる。固定ヘッダーに Q&A 見出しが
	   隠れないよう、ヘッダー高さ＋余白ぶん手前で止める */
	scroll-margin-top: calc(var(--header-height-sp) + 24px);
}

@media (min-width: 768px) {
	.p-voice__qa {
		padding: 0 20px;
		margin-bottom: 80px;
		scroll-margin-top: calc(var(--header-height-pc) + 24px);
	}
}

.p-voice__qaList {
	display: flex;
	flex-direction: column;
}

@media (min-width: 768px) {
	.p-voice__qaList {
		max-width: 692px;
		margin: 0 auto;
	}
}

.p-voice__qaItem {
	margin-bottom: 24px;
}

.p-voice__qaItem[open] > .p-voice__qaQ .p-voice__qaToggle::after {
	transform: translateY(-50%) rotate(0deg);
	opacity: 0;
}

.p-voice__qaQ {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	list-style: none;
	cursor: pointer;
}

.p-voice__qaQ::-webkit-details-marker {
	display: none;
}

.p-voice__qaQHeading {
	display: flex;
	align-items: baseline;
	gap: 12px;
	font-size: 14px;
	line-height: 28px;
	font-weight: 400;
	margin: 0;
}

.p-voice__qaMark {
	flex: 0 0 auto;
	font-size: 29px;
	line-height: 1;
}

.p-voice__qaToggle {
	position: relative;
	flex: 0 0 auto;
	width: 13px;
	height: 13px;
	margin-top: 8px;
}

.p-voice__qaToggle::before,
.p-voice__qaToggle::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 0;
	width: 13px;
	height: 1px;
	background: var(--color-text);
	transform: translateY(-50%);
	transition: transform .2s ease, opacity .2s ease;
}

.p-voice__qaToggle::after {
	transform: translateY(-50%) rotate(90deg);
}

.p-voice__qaItem:not([open]) .p-voice__qaA {
	display: none;
}

.p-voice__qaA {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-top: 16px;
}

.p-voice__qaAnswer {
	font-size: 14px;
	line-height: 26px;
	/* A の本文の左端を Q の本文に揃える（Q マークのグリフ幅 20.8px ＋ .p-voice__qaQHeading の gap 12px）。
	   A マークは qaA の space-between で右端に置かれるため、この指定では動かない */
	margin-left: 32.8px;
}

.p-voice__qaAnswer p + p {
	margin-top: 8px;
}

.p-voice__qaNote {
	font-size: 12px;
	line-height: 22px;
}

.p-voice__qaLink {
	display: inline-block;
	margin-top: 8px;
	font-size: 14px;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.p-voice__qaMark--a {
	flex: 0 0 auto;
	align-self: flex-start;
}

.p-voice__qaDivider {
	width: 51px;
	margin: 24px auto;
	border: none;
	border-top: 1px solid #999;
}

@media (min-width: 768px) {
	.p-voice__qaQHeading {
		gap: 12px;
		max-width: 620px;
	}

	.p-voice__qaAnswer {
		line-height: 28px;
		max-width: 620px;
	}
}

.p-voice__linkCards {
	display: flex;
	flex-direction: column;
	gap: 24px;
	max-width: 306px;
	/* margin-top は .p-voice__qa の margin-bottom とのマージンコラプス前提の実効値。
	   qa 側の余白や本要素の padding/border を変えるとコラプスが崩れて余白が破綻する。
	   上の要素との見た目の間隔はサイト共通で PC 120px / SP 96px（トップ基準・2026-07-30 指示）。
	   最後の qaItem の margin-bottom 24px（qaList が flex のためコラプスしない）が
	   見た目の間隔に足されるので、margin-top は 24px 引いた値にする（SP 72 / PC 96） */
	margin: 72px auto 56px;
	padding: 0;
}

@media (min-width: 768px) {
	.p-voice__linkCards {
		flex-direction: row;
		justify-content: center;
		gap: 32px;
		max-width: 982px;
		margin: 96px auto 80px;
	}
}

.p-voice__linkCard {
	display: flex;
	align-items: center;
	height: 123px;
	border: 1px solid var(--color-text);
}

@media (min-width: 768px) {
	.p-voice__linkCard {
		width: 306px;
	}
}

.p-voice__linkCardPhoto {
	flex: 0 0 auto;
	width: 153px;
	height: 123px;
}

.p-voice__linkCardPhoto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.p-voice__linkCardLabel {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: space-between;
	flex: 1;
	align-self: stretch;
	padding: 14px;
	font-size: 16px;
}

.p-voice__linkCardArrow {
	width: 9px;
	transform: rotate(-90deg);
}

.p-ceremony__linkCardLabel,
.p-photo__linkCardLabel,
.p-flow__linkCardLabel,
.p-voice__linkCardLabel {
	min-width: 0;
	white-space: nowrap;
}

/* ==========================================================================
   14. p-contact
   ========================================================================== */
.p-contact__hero {
	width: 100%;
	aspect-ratio: 375 / 200;
}

.p-contact__heroImg {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-contact__heroImg--pc {
	display: none;
}

.p-contact__heroImg--sp {
	display: block;
}

@media (min-width: 768px) {
	.p-contact__hero {
		max-width: 1100px;
		aspect-ratio: 1100 / 330;
		margin: 32px auto 0;
	}

	.p-contact__heroImg--pc {
		display: block;
	}

	.p-contact__heroImg--sp {
		display: none;
	}
}

.p-contact__title {
	display: flex;
	flex-direction: row-reverse;
	justify-content: center;
	gap: 16px;
	width: fit-content;
	margin: 40px auto;
}

@media (min-width: 768px) {
	.p-contact__title {
		margin: 56px auto;
	}
}

.p-contact__titleLine {
	writing-mode: vertical-rl;
	text-orientation: mixed;
	font-size: 24px;
	line-height: 30px;
	font-weight: 500;
}

.p-contact__lead {
	max-width: 672px;
	margin: 0 auto 32px;
	padding: 0 24px;
	font-size: 13px;
	line-height: 26px;
	text-align: center;
}

@media (min-width: 768px) {
	.p-contact__lead {
		padding: 0;
		font-size: 14px;
		line-height: 28px;
		margin-bottom: 40px;
	}
}

.p-contact__leadLink {
	text-decoration: underline;
}

/* ご成約までの流れ */
.p-contact__flowBox {
	max-width: 748px;
	margin: 0 32px 100px;
	padding: 24px 20px;
	border: 1px solid #707070;
}

@media (min-width: 768px) {
	.p-contact__flowBox {
		margin: 0 auto 152px;
		padding: 40px 56px;
	}
}

.p-contact__flowBoxHead {
	margin-bottom: 24px;
	font-size: 18px;
	text-align: center;
	letter-spacing: .05em;
}

@media (min-width: 768px) {
	.p-contact__flowBoxHead {
		font-size: 20px;
	}
}

.p-contact__flowStep {
	position: relative;
}

.p-contact__flowStep:not(:last-child) {
	margin-bottom: 48px;
}

.p-contact__flowStepHead {
	margin-bottom: 12px;
	font-size: 15px;
	font-weight: 500;
}

@media (min-width: 768px) {
	.p-contact__flowStepHead {
		font-size: 16px;
	}
}

.p-contact__flowStepText {
	position: relative;
	padding-left: 40px;
	font-size: 13px;
	line-height: 2;
}

/* ステップ番号の下から次ステップへ伸びる縦の連結線（本文左のガター） */
.p-contact__flowStep:not(:last-child) .p-contact__flowStepText::before {
	content: "";
	position: absolute;
	top: 0;
	left: 9px;
	width: 1px;
	height: calc(100% + 24px);
	background: #707070;
}

@media (min-width: 768px) {
	.p-contact__flowStep:not(:last-child) {
		margin-bottom: 50px;
	}

	.p-contact__flowStepText {
		padding-left: 75px;
		font-size: 14px;
	}

	.p-contact__flowStep:not(:last-child) .p-contact__flowStepText::before {
		left: 15px;
		height: calc(100% + 20px);
	}
}

/* フォーム共通 */
.p-contact__formWrap {
	max-width: 321px;
	margin: 0 auto 56px;
	padding: 0 24px;
}

.p-contact__formPrivacyNote {
	margin-top: 72px;
}

@media (min-width: 768px) {
	.p-contact__formWrap {
		max-width: 788px;
		margin-bottom: 92px;
		padding: 0 20px;
	}

	.p-contact__formPrivacyNote {
		margin-top: 20px;
	}
}

.p-contact__formWrap .wpcf7-form {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.p-contact__formField {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.p-contact__formField label,
.p-contact__formField > .p-contact__formLabel {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	font-size: 14px;
	font-weight: 500;
}

.p-contact__formRequired {
	display: inline-block;
	margin-left: 8px;
	padding: 0;
	background: none;
	color: var(--color-accent-link);
	font-size: 11px;
	line-height: 1.4;
	vertical-align: middle;
}

.p-contact__formNote {
	display: block;
	width: 100%;
	margin-top: 4px;
	font-size: 11px;
	color: #767676;
	font-weight: 400;
}

.p-contact__formInput,
.p-contact__formSelect,
.p-contact__formTextarea {
	width: 100%;
	height: 40px;
	padding: 0 12px;
	border: 1px solid #707070;
	border-radius: 0;
	font-size: 14px;
	font-family: inherit;
	background: #fff;
	color: var(--color-text);
}

.p-contact__formSelect {
	font-size: 11px;
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%232b2b2b'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
}

.p-contact__formTextarea {
	height: 160px;
	padding: 12px;
	resize: vertical;
}

@media (min-width: 768px) {
	.p-contact__formTextarea {
		height: 215px;
	}
}

.p-contact__formField--type {
	flex-direction: row;
	align-items: center;
	justify-content: center;
	gap: 16px;
}

.p-contact__formField--type .p-contact__formLabel {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.p-contact__formLabel {
	font-size: 14px;
}

.p-contact__formRadio {
	display: flex;
	gap: 24px;
}

.p-contact__formRadio .wpcf7-list-item {
	margin: 0;
}

.p-contact__formRadio input[type="radio"] {
	accent-color: var(--color-text);
}

.p-contact__formRadio label {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 15px;
}

@media (min-width: 768px) {
	.p-contact__formRadio label {
		font-size: 18px;
	}
}

.p-contact__formVenueHeading {
	margin-top: 28px;
	margin-bottom: 52px;
	font-size: 14px;
	font-weight: 500;
	text-align: center;
}

@media (min-width: 768px) {
	.p-contact__formVenueHeading {
		font-size: 15px;
	}
}

/* 「特別会場リスト」の赤帯見出し（チェックバック 260729 で復元。旧 formVenueListLink と同寸・非リンク）。
   SP は下の会場一覧表（formVenueTable の margin 0 -16px）と左右幅を揃える指示 */
.p-contact__formVenueListHead {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 28px;
	margin: 0 -16px;
	background: var(--color-accent);
	color: #fff;
	font-size: 14px;
	font-weight: 500;
	text-align: center;
}

@media (min-width: 768px) {
	.p-contact__formVenueListHead {
		margin: 0;
	}
}

.p-contact__formVenueTable {
	margin: 0 -16px 36px;
}

.p-contact__formVenueRow {
	position: relative;
	display: flex;
	gap: 12px;
	padding: 16px 0;
	border-bottom: 1px solid #ddd;
}

.p-contact__formVenuePhoto {
	flex: 0 0 auto;
	width: 101px;
	min-width: 101px;
	height: 80px;
	object-fit: cover;
}

@media (min-width: 768px) {
	.p-contact__formVenueTable {
		margin: 0 0 48px;
	}

	.p-contact__formVenueRow {
		padding: 24px 0;
		min-height: 130px;
	}

	.p-contact__formVenuePhoto {
		width: 141px;
		min-width: 141px;
		height: 80px;
	}

	.p-contact__formVenueDate {
		position: absolute;
		left: 447px;
		top: 50%;
		transform: translateY(-50%);
	}
}

.p-contact__formVenueInfo {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 4px;
}

.p-contact__formVenueArea {
	font-size: 11px;
	color: #767676;
}

.p-contact__formVenueName {
	font-size: 14px;
	font-weight: 500;
}

@media (min-width: 768px) {
	.p-contact__formVenueName {
		font-size: 16px;
	}
}

.p-contact__formVenueDate {
	font-size: 13px;
}

@media (min-width: 768px) {
	.p-contact__formVenueDate {
		font-size: 16px;
	}
}

.p-contact__formChoice {
	padding-top: 8px;
	margin-bottom: 68px;
}

@media (min-width: 768px) {
	.p-contact__formChoice {
		margin-bottom: 64px;
	}
}

.p-contact__formChoiceHeading {
	display: flex;
	align-items: center;
	margin-bottom: 12px;
	font-size: 15px;
	font-weight: 500;
}

.p-contact__formChoiceRow {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin-bottom: 16px;
}

.p-contact__formChoiceRow label {
	font-size: 13px;
}

.p-contact__formPrivacyNote {
	font-size: 11px;
	line-height: 22px;
	color: #767676;
	font-weight: 300;
}

.p-contact__formAgree {
	text-align: center;
}

.p-contact__formAgree .wpcf7-list-item {
	margin: 0;
}

.p-contact__formAgree label {
	display: inline-flex;
	align-items: flex-start;
	gap: 8px;
	font-size: 14px;
	line-height: 1.6;
	text-align: left;
}

.p-contact__formAgree a {
	text-decoration: underline;
}

.p-contact__formSubmit {
	position: relative;
	display: flex;
	justify-content: center;
	gap: 16px;
	margin-top: 8px;
}

/* CF7 スピナーが flex の中央計算に幅を持ち込みボタンが左へずれるのを防ぐ */
.p-contact__formSubmit .wpcf7-spinner {
	position: absolute;
	right: 0;
}

.p-contact__formSubmitBtn,
.p-contact__formBackBtn {
	width: 100%;
	max-width: 274px;
	height: 51px;
	font-size: 15px;
	letter-spacing: .05em;
	cursor: pointer;
}

.p-contact__formSubmitBtn {
	background: var(--color-accent);
	color: #fff;
	border: none;
}

.p-contact__formBackBtn {
	background: #fff;
	color: var(--color-text);
	border: 1px solid #707070;
}

/* CF7 バリデーション表示 */
.wpcf7-not-valid-tip {
	display: block;
	margin-top: 6px;
	color: var(--color-accent-link);
	font-size: 12px;
}

.wpcf7-response-output {
	margin: 16px 0 0;
	padding: 12px 16px;
	border: 1px solid var(--color-accent-link) !important;
	color: var(--color-accent-link);
	font-size: 13px;
}

.wpcf7-form.sent .wpcf7-response-output {
	border-color: var(--color-accent) !important;
	color: var(--color-accent);
}

/* 確認ページ: 入力内容の一覧 */
.p-contact__confirmList {
	border-top: 1px solid #ddd;
}

.p-contact__confirmRow {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 16px 0;
	border-bottom: 1px solid #ddd;
}

@media (min-width: 768px) {
	.p-contact__confirmRow {
		flex-direction: row;
		gap: 24px;
	}
}

.p-contact__confirmRow dt {
	flex: 0 0 auto;
	font-size: 13px;
	font-weight: 500;
	color: #767676;
}

@media (min-width: 768px) {
	.p-contact__confirmRow dt {
		width: 180px;
	}
}

.p-contact__confirmRow dd {
	font-size: 14px;
	line-height: 1.7;
	white-space: pre-line;
}

.p-contact__formSubmit--confirm {
	margin-top: 24px;
	flex-direction: column-reverse;
}

@media (min-width: 768px) {
	.p-contact__formSubmit--confirm {
		flex-direction: row;
	}
}

/* 完了ページ */
.p-contact__completeWrap {
	max-width: 748px;
	margin: 0 auto 56px;
	padding: 0 24px;
	text-align: center;
}

.p-contact__completeLead {
	margin-bottom: 24px;
	font-size: 18px;
	font-weight: 500;
}

.p-contact__completeText {
	margin-bottom: 32px;
	font-size: 14px;
	line-height: 1.9;
}

.p-contact__completeTop {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	max-width: 274px;
	height: 51px;
	border: 1px solid var(--color-text);
	font-size: 15px;
}

/* お電話でのお問い合わせ */
.p-contact__telBlock {
	max-width: 746px;
	margin: 0 auto 56px;
	padding: 12px 24px;
	border-top: 1px solid #707070;
	border-bottom: 1px solid #707070;
	text-align: center;
}

@media (min-width: 768px) {
	.p-contact__telBlock {
		padding: 32px 20px;
		margin-bottom: 71px;
	}
}

.p-contact__telHead {
	margin-bottom: 12px;
	font-size: 15px;
}

.p-contact__telName {
	margin-bottom: 8px;
	font-size: 16px;
}

.p-contact__telNumber {
	margin-bottom: 8px;
	font-size: 24px;
	font-weight: 500;
}

@media (min-width: 768px) {
	.p-contact__telNumber {
		font-size: 26px;
	}
}

.p-contact__telNote {
	font-size: 12px;
	color: #767676;
}

/* ==========================================================================
   15. p-company
   ========================================================================== */
.p-company__hero {
	width: 100%;
	aspect-ratio: 375 / 200;
}

.p-company__heroImg {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-company__heroImg--pc {
	display: none;
}

.p-company__heroImg--sp {
	display: block;
}

@media (min-width: 768px) {
	.p-company__hero {
		max-width: 1100px;
		aspect-ratio: 1100 / 330;
		margin: 32px auto 0;
	}

	.p-company__heroImg--pc {
		display: block;
	}

	.p-company__heroImg--sp {
		display: none;
	}
}

.p-company__title {
	margin: 80px 24px 24px;
	font-size: 16px;
	line-height: 26px;
	letter-spacing: .05em;
	font-weight: 500;
	text-align: left;
}

@media (min-width: 768px) {
	.p-company__title {
		max-width: 1100px;
		margin: 96px auto 24px;
		padding-left: 386px;
		font-size: 18px;
		line-height: 30px;
		letter-spacing: .9px;
	}
}

.p-company__body {
	margin: 0 24px 56px;
}

@media (min-width: 768px) {
	.p-company__body {
		max-width: 1100px;
		margin: 0 auto 80px;
		padding-left: 386px;
	}
}

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

.p-company__infoText {
	margin-bottom: 26px;
	font-size: 13px;
	line-height: 26px;
}

.p-company__infoText:last-child {
	margin-bottom: 0;
}

@media (min-width: 768px) {
	.p-company__infoText {
		font-size: 14px;
		line-height: 28px;
		margin-bottom: 28px;
	}
}

.p-company__infoLink {
	text-decoration: none;
	word-break: break-all;
}

.p-company__box {
	max-width: 329px;
	margin-top: 112px;
	padding: 24px;
	border: 1px solid #707070;
}

@media (min-width: 768px) {
	.p-company__box {
		margin-top: 76px;
		padding: 38px 27px;
	}
}

.p-company__boxHead {
	margin-bottom: 24px;
	font-size: 16px;
	line-height: 26px;
}

@media (min-width: 768px) {
	.p-company__boxHead {
		font-size: 18px;
		line-height: 28px;
	}
}

.p-company__boxText {
	font-size: 13px;
	line-height: 24px;
}

@media (min-width: 768px) {
	.p-company__boxText {
		font-size: 14px;
		line-height: 28px;
	}
}

/* ==========================================================================
   16. p-privacy
   ========================================================================== */
.p-privacy__title {
	margin: 60px auto 24px;
	font-size: 16px;
	line-height: 26px;
	letter-spacing: .05em;
	font-weight: 500;
	text-align: center;
}

@media (min-width: 768px) {
	.p-privacy__title {
		margin: 56px auto 32px;
		font-size: 18px;
		line-height: 30px;
		letter-spacing: .9px;
	}
}

.p-privacy__body {
	max-width: 746px;
	margin: 0 auto 56px;
	padding: 0 44px;
}

@media (min-width: 768px) {
	.p-privacy__body {
		margin-bottom: 80px;
		padding: 0 20px;
	}
}

.p-privacy__text,
.p-privacy__contact {
	margin-bottom: 22px;
	font-family: var(--font-sans);
	font-weight: 300;
	font-size: 11px;
	line-height: 22px;
	letter-spacing: .55px;
}

.p-privacy__text:last-of-type {
	margin-bottom: 0;
}

.p-privacy__contact {
	margin-bottom: 0;
	text-align: right;
}

/* ===== 17. p-contact conditional ===== */
#contact-venue-section.is-hidden {
	display: none;
}

.p-contact__confirmRow--choice.is-hidden {
	display: none;
}

.p-contact__formSelect:disabled {
	background-color: #f5f5f5;
	color: #9a9a9a;
	cursor: not-allowed;
}

/* ==========================================================================
   下層リード文の SP 調整（左揃え・手動改行なしで自然折返し）
   PC は中央揃え＋改行を維持。voice は個別 CSS で対応済み。
   ※各ページの base ルール（text-align:center）より後に置いて上書きする
   ========================================================================== */
@media (max-width: 767px) {
	.p-venue__lead,
	.p-ceremony__lead,
	.p-photo__lead,
	.p-flow__lead,
	.p-contact__lead {
		text-align: left;
	}

	.p-flow__lead br,
	.p-contact__lead br {
		display: none;
	}
}
