/* ==========================================================================
   サイクランドナカザワ — Components(Hybrid Cool 14セクション)
   ==========================================================================
   セクション順:
   1. Hero        2. Trust Strip   3. Editor's Letter   4. Numbers
   5. Two Generations  6. Pillars  7. Recent Stories    8. Media
   9. Services    10. Customer     11. Service Area     12. Events
   13. Payment    14. Footer(shop-info)
   ========================================================================== */

/* ==========================================================================
   1. HERO
   ========================================================================== */
.hero {
	position: relative;
	padding: var(--s-3) var(--s-3) 0;
}

.hero-stage {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	max-height: 78vh;
	border-radius: 8px;
	overflow: hidden;
	background:
		linear-gradient(180deg,
			rgba(31, 49, 68, 0.05) 0%,
			rgba(38, 88, 115, 0.5) 100%),
		linear-gradient(180deg,
			#DCEDF1 0%,
			#A8D5E0 30%,
			#6BB5C8 50%,
			#B5DD80 75%,
			#6CA340 100%);
	display: flex;
	align-items: flex-end;
	padding: var(--s-6);
}

.hero-stage img,
.hero-stage svg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.hero-overlay {
	position: relative;
	z-index: 2;
	max-width: 700px;
}

.hero-headline {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: clamp(2rem, 4.8vw, 3.4rem);
	line-height: 1.45;
	letter-spacing: 0.06em;
	color: #fff;
	text-shadow: 0 2px 18px rgba(38, 88, 115, 0.5);
}
.hero-headline span { display: block; }
.hero-headline span + span {
	margin-top: 0.4em;
	font-family: var(--f-rounded);
	font-weight: 500;
	font-size: 0.55em;
	letter-spacing: 0.12em;
}

.hero-cta-row {
	margin-top: var(--s-4);
	display: flex;
	gap: var(--s-3);
	flex-wrap: wrap;
}

.hero-cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 20px;
	font-family: var(--f-rounded);
	font-weight: 500;
	font-size: 0.92rem;
	letter-spacing: 0.15em;
	border-radius: 999px;
	transition: transform 0.3s ease, opacity 0.3s ease;
}
.hero-cta:hover { transform: translateY(-2px); opacity: 1; }
.hero-cta-primary {
	background: var(--c-leaf-deep);
	color: #fff;
}
.hero-cta-secondary {
	background: rgba(255, 255, 255, 0.18);
	color: #fff;
	border: 1px solid rgba(255, 255, 255, 0.55);
	backdrop-filter: blur(4px);
}

/* スタンプ風日付 */
.hero-stamp {
	position: absolute;
	top: var(--s-5);
	right: var(--s-5);
	width: 130px;
	height: 130px;
	border-radius: 50%;
	background: var(--c-leaf-pale);
	border: 2px solid var(--c-leaf-deep);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	font-family: var(--f-hand);
	color: var(--c-leaf-dark);
	transform: rotate(-8deg);
	box-shadow: 0 4px 20px rgba(108, 163, 64, 0.3);
	z-index: 4;
}
.hero-stamp-label { font-size: 0.7rem; letter-spacing: 0.3em; margin-bottom: 4px; }
.hero-stamp-date  { font-size: 1.7rem; line-height: 1; }
.hero-stamp-year  { font-size: 0.75rem; margin-top: 4px; letter-spacing: 0.15em; }

@media (max-width: 760px) {
	.hero-stage { aspect-ratio: 4 / 5; padding: var(--s-4); }
	.hero-stamp {
		width: 90px; height: 90px;
		top: var(--s-4); right: var(--s-4);
	}
	.hero-stamp-date { font-size: 1.2rem; }
}

/* Hero entrance animations */
@keyframes cycland-fade-up {
	from { opacity: 0; transform: translateY(14px); }
	to   { opacity: 1; transform: translateY(0); }
}
@keyframes cycland-stamp-in {
	from { opacity: 0; transform: rotate(-25deg) scale(1.4); }
	to   { opacity: 1; transform: rotate(-8deg) scale(1); }
}
.hero-overlay > * { animation: cycland-fade-up 1.1s var(--ease-out) both; }
.hero-overlay > *:nth-child(1) { animation-delay: 0.2s; }
.hero-overlay > *:nth-child(2) { animation-delay: 0.5s; }
.hero-stamp { animation: cycland-stamp-in 0.8s var(--ease-out) 0.9s both; }

/* ==========================================================================
   2. TRUST STRIP
   ========================================================================== */
.trust-strip {
	background: var(--c-navy);
	color: #fff;
	padding: var(--s-4) 0;
	border-bottom: 3px solid var(--c-gold);
}
.trust-strip-grid {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: var(--s-3);
	align-items: center;
}
.trust-item {
	text-align: center;
	padding: 0 var(--s-2);
	border-right: 1px solid rgba(255, 255, 255, 0.18);
	font-size: 0.78rem;
	letter-spacing: 0.06em;
	line-height: 1.55;
}
.trust-item:last-child { border-right: none; }
.trust-item-label {
	display: block;
	font-family: var(--f-latin);
	font-style: italic;
	color: var(--c-gold-pale);
	font-size: 0.7rem;
	letter-spacing: 0.18em;
	margin-bottom: 4px;
}
.trust-item-value {
	font-family: var(--f-mincho);
	font-weight: 500;
	color: #fff;
}
@media (max-width: 900px) {
	.trust-strip-grid { grid-template-columns: repeat(3, 1fr); gap: var(--s-3) var(--s-2); }
	.trust-item:nth-child(3n) { border-right: none; }
	.trust-item { padding: var(--s-2) 0; }
}
@media (max-width: 540px) {
	.trust-strip-grid { grid-template-columns: 1fr 1fr; }
	.trust-item {
		border-right: 1px solid rgba(255, 255, 255, 0.15);
		border-bottom: 1px solid rgba(255, 255, 255, 0.15);
		padding: var(--s-2);
	}
	.trust-item:nth-child(2n) { border-right: none; }
	.trust-item:nth-last-child(-n+2) { border-bottom: none; }
}

/* ==========================================================================
   3. EDITOR'S LETTER
   ========================================================================== */
.editor-letter {
	padding: var(--s-7) 0;
}
.editor-letter-inner {
	max-width: 760px;
	margin: 0 auto;
	background: var(--c-water-pale);
	padding: var(--s-7) var(--s-6);
	position: relative;
	border-radius: 4px;
	box-shadow: 0 6px 24px rgba(58, 123, 145, 0.08);
}
.editor-letter-inner::before {
	content: '';
	position: absolute;
	top: -16px; left: 32px; right: 32px;
	height: 16px;
	background: var(--c-leaf-mid);
	border-radius: 2px 2px 0 0;
}
.editor-letter-inner::after {
	content: '✦';
	position: absolute;
	top: -8px; left: 50%;
	transform: translateX(-50%);
	font-size: 16px;
	color: var(--c-paper);
	z-index: 1;
}
.editor-letter .eyebrow {
	display: block;
	text-align: center;
	color: var(--c-water-deep);
	margin-bottom: var(--s-3);
}
.editor-letter h2 {
	text-align: center;
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: clamp(1.6rem, 3vw, 2.2rem);
	letter-spacing: 0.08em;
	margin-bottom: var(--s-5);
}
.editor-letter-body {
	font-size: 1rem;
	line-height: 2.0;
	color: var(--c-sumi);
}
.editor-letter-body p + p { margin-top: 1.2em; }
.editor-letter-body p:first-of-type::first-letter {
	font-family: var(--f-rounded);
	font-size: 3em;
	font-weight: 700;
	float: left;
	line-height: 1;
	margin: 0.05em 0.12em 0 0;
	color: var(--c-leaf-deep);
}
.editor-signature {
	margin-top: var(--s-5);
	text-align: right;
	font-family: var(--f-hand);
	font-size: 1.1rem;
	color: var(--c-water-deep);
}

/* ==========================================================================
   4. NUMBERS
   ========================================================================== */
.numbers {
	padding: var(--s-8) 0;
	background: var(--c-paper);
	border-top: 1px solid var(--c-mist);
	border-bottom: 1px solid var(--c-mist);
}
.numbers-header {
	text-align: center;
	margin-bottom: var(--s-7);
}
.numbers-header .eyebrow { display: block; margin-bottom: var(--s-2); }
.numbers-header h2 {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: clamp(1.8rem, 3.2vw, 2.6rem);
	letter-spacing: 0.08em;
}

.numbers-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--s-4);
	position: relative;
}
.numbers-grid::before {
	content: '';
	position: absolute;
	top: 24px; bottom: 24px;
	left: 25%; width: 1px;
	background: var(--c-mist);
}
.numbers-grid::after {
	content: '';
	position: absolute;
	top: 24px; bottom: 24px;
	right: 25%; width: 1px;
	background: var(--c-mist);
}
.numbers-grid > .number-card:nth-child(2)::after {
	content: '';
	position: absolute;
	top: 24px; bottom: 24px;
	right: -2px; width: 1px;
	background: var(--c-mist);
}

.number-card {
	text-align: center;
	padding: var(--s-3) var(--s-2);
	position: relative;
}
.number-card-eyebrow {
	font-family: var(--f-latin);
	font-style: italic;
	font-size: 0.78rem;
	color: var(--c-mossy);
	letter-spacing: 0.18em;
	margin-bottom: var(--s-2);
}
.number-card-value {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: clamp(2.8rem, 5.5vw, 4.5rem);
	line-height: 1;
	color: var(--c-water-dark);
	margin-bottom: var(--s-2);
	letter-spacing: -0.02em;
	display: flex;
	align-items: baseline;
	justify-content: center;
	gap: 4px;
}
.number-card-unit {
	font-size: 0.42em;
	font-weight: 500;
	color: var(--c-mossy);
	letter-spacing: 0.05em;
}
.number-card-label {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: 0.95rem;
	letter-spacing: 0.1em;
	color: var(--c-sumi);
	margin-bottom: 4px;
}
.number-card-sub {
	font-size: 0.78rem;
	color: var(--c-mossy);
	letter-spacing: 0.06em;
}
@media (max-width: 800px) {
	.numbers-grid { grid-template-columns: repeat(2, 1fr); gap: var(--s-5) var(--s-3); }
	.numbers-grid::before, .numbers-grid::after,
	.numbers-grid > .number-card:nth-child(2)::after { display: none; }
}

/* ==========================================================================
   5. TWO GENERATIONS
   ========================================================================== */
.generations {
	padding: var(--s-8) 0;
	background: var(--c-paper-cool);
}
.generations-header {
	text-align: center;
	margin-bottom: var(--s-7);
	max-width: 720px;
	margin-left: auto;
	margin-right: auto;
	padding: 0 var(--s-4);
}
.generations-header .eyebrow { display: block; margin-bottom: var(--s-2); }
.generations-header h2 {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: clamp(1.8rem, 3.2vw, 2.4rem);
	letter-spacing: 0.08em;
	margin-bottom: var(--s-3);
}
.generations-header p {
	font-size: 1rem;
	line-height: 2.0;
	color: var(--c-sumi-soft);
}
.generations-header p strong {
	color: var(--c-navy);
	font-weight: 500;
}

.gen-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--s-6);
	align-items: stretch;
}
.gen-card {
	background: var(--c-paper);
	padding: var(--s-5);
	border: 1px solid var(--c-mist);
	border-radius: 8px;
	position: relative;
}
.gen-card-num {
	position: absolute;
	top: -16px;
	left: var(--s-4);
	background: var(--c-leaf-deep);
	color: #fff;
	padding: var(--s-2) var(--s-3);
	font-family: var(--f-latin);
	font-style: italic;
	font-size: 0.85rem;
	letter-spacing: 0.18em;
	border-radius: 2px;
}
.gen-portrait {
	width: 100%;
	aspect-ratio: 4 / 5;
	background:
		linear-gradient(180deg, rgba(31, 49, 68, 0.05), rgba(31, 49, 68, 0.18)),
		repeating-linear-gradient(45deg, var(--c-water-pale) 0, var(--c-water-pale) 8px, var(--c-paper-cool) 8px, var(--c-paper-cool) 16px);
	margin-bottom: var(--s-4);
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 4px;
	overflow: hidden;
}
.gen-portrait img {
	width: 100%; height: 100%;
	object-fit: cover;
}
.gen-portrait.is-placeholder::after {
	content: attr(data-placeholder);
	color: rgba(31, 49, 68, 0.5);
	font-family: var(--f-mincho);
	font-size: 0.85rem;
	letter-spacing: 0.1em;
	text-align: center;
	padding: 0 var(--s-3);
}
.gen-card-role {
	font-family: var(--f-latin);
	font-style: italic;
	color: var(--c-leaf-deep);
	font-size: 0.85rem;
	letter-spacing: 0.18em;
	margin-bottom: var(--s-1);
}
.gen-card-name {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: 1.6rem;
	letter-spacing: 0.1em;
	margin-bottom: var(--s-1);
}
.gen-card-name-en {
	font-family: var(--f-latin);
	font-style: italic;
	font-size: 0.82rem;
	color: var(--c-mossy);
	letter-spacing: 0.18em;
	margin-bottom: var(--s-3);
}
.gen-card-bio {
	font-size: 0.92rem;
	line-height: 2.0;
	color: var(--c-sumi-soft);
	margin-bottom: var(--s-3);
}
.gen-card-quote {
	margin-top: var(--s-4);
	padding: var(--s-3) 0 0;
	border-top: 1px solid var(--c-mist);
	font-family: var(--f-hand);
	font-size: 0.95rem;
	color: var(--c-water-deep);
	line-height: 1.95;
}
.gen-card-quote::before { content: '「'; color: var(--c-leaf-deep); }
.gen-card-quote::after  { content: '」'; color: var(--c-leaf-deep); }

@media (max-width: 800px) {
	.gen-grid { grid-template-columns: 1fr; gap: var(--s-7); }
}

/* ==========================================================================
   6. PILLARS
   ========================================================================== */
.pillars {
	padding: var(--s-7) 0;
	background: var(--c-paper);
}
.pillars-header {
	text-align: center;
	margin-bottom: var(--s-6);
}
.pillars-header .eyebrow { display: block; margin-bottom: var(--s-2); }
.pillars-header h2 {
	font-family: var(--f-rounded);
	font-weight: 700;
	font-size: clamp(1.8rem, 3vw, 2.4rem);
	letter-spacing: 0.06em;
}

.pillar-grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: var(--s-3);
}
.pillar-card {
	position: relative;
	padding: var(--s-5) var(--s-3) var(--s-4);
	text-align: center;
	background: var(--bg, var(--c-water-pale));
	border-radius: 12px;
	transition: transform 0.4s var(--ease-out), box-shadow 0.4s;
	color: var(--c-sumi);
}
.pillar-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 8px 24px rgba(58, 123, 145, 0.15);
	opacity: 1;
}
/* 7段のグラデーション(水色 → 新緑) */
.pillar-card[data-pillar="people"] { --bg: #DCEDF1; }
.pillar-card[data-pillar="town"]   { --bg: #C8E0E5; }
.pillar-card[data-pillar="ride"]   { --bg: #C8E2D5; }
.pillar-card[data-pillar="family"] { --bg: #DCEDC9; }
.pillar-card[data-pillar="tools"]  { --bg: #E8EDC4; }
.pillar-card[data-pillar="repair"] { --bg: #DCE5C0; }
.pillar-card[data-pillar="rain"]   { --bg: #B8D5DD; }

.pillar-icon {
	width: 44px;
	height: 44px;
	margin: 0 auto var(--s-3);
	display: block;
}
.pillar-num {
	font-family: var(--f-latin);
	font-style: italic;
	font-size: 0.78rem;
	color: var(--c-mossy);
	letter-spacing: 0.15em;
	display: block;
	margin-bottom: var(--s-2);
}
.pillar-jp {
	font-family: var(--f-mincho);
	font-size: 1.3rem;
	font-weight: 500;
	letter-spacing: 0.15em;
	text-indent: 0.15em;
	display: block;
	margin-bottom: 4px;
	color: var(--c-sumi);
}
.pillar-en {
	font-family: var(--f-rounded);
	font-weight: 500;
	font-size: 0.75rem;
	color: var(--c-mossy);
	letter-spacing: 0.15em;
}

@media (max-width: 900px) { .pillar-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 540px) { .pillar-grid { grid-template-columns: repeat(2, 1fr); } }

/* ==========================================================================
   7. RECENT STORIES
   ========================================================================== */
.stories {
	padding: var(--s-8) 0;
	background: var(--c-paper);
}
.stories-header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	margin-bottom: var(--s-6);
	flex-wrap: wrap;
	gap: var(--s-3);
}
.stories-header .eyebrow { display: block; margin-bottom: var(--s-1); }
.stories-header h2 {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: clamp(1.8rem, 3vw, 2.4rem);
	letter-spacing: 0.08em;
}
.see-all {
	font-family: var(--f-rounded);
	font-weight: 500;
	font-size: 0.92rem;
	letter-spacing: 0.18em;
	color: var(--c-leaf-deep);
	border-bottom: 1px solid currentColor;
	padding-bottom: 2px;
}

.story-grid {
	display: grid;
	grid-template-columns: 2fr 1fr 1fr;
	grid-template-rows: auto auto;
	gap: var(--s-5);
}
.story-card { position: relative; }
.story-card a { color: var(--c-sumi); display: block; }
.story-card-1 { grid-row: 1 / 3; }
.story-card-2, .story-card-3 { grid-column: 2; }
.story-card-4 { grid-column: 3; grid-row: 1 / 3; display: flex; flex-direction: column; }

.story-image {
	width: 100%;
	aspect-ratio: 4 / 3;
	background: var(--c-water-pale);
	position: relative;
	overflow: hidden;
	border-radius: 6px;
	margin-bottom: var(--s-3);
}
.story-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s var(--ease-out);
}
.story-card:hover .story-image img {
	transform: scale(1.03);
}
.story-card-4 .story-image { aspect-ratio: 3 / 4; flex: 1; }

/* プレースホルダのグラデ(水+緑) */
.story-image.is-placeholder.story-image-1 {
	background:
		radial-gradient(circle at 30% 70%, #B5DD80, transparent 45%),
		radial-gradient(circle at 70% 30%, #DCEDF1, transparent 50%),
		linear-gradient(180deg, #DCEDF1 0%, #C8E2D5 75%, #8FC362 100%);
}
.story-image.is-placeholder.story-image-2 {
	background:
		repeating-linear-gradient(135deg, transparent 0, transparent 16px, rgba(108, 163, 64, 0.18) 16px, rgba(108, 163, 64, 0.18) 18px),
		linear-gradient(135deg, #DCEDC9, #C8E2D5);
}
.story-image.is-placeholder.story-image-3 {
	background:
		radial-gradient(circle at 50% 100%, #8FC362, transparent 50%),
		linear-gradient(180deg, #DCEDF1, #A8D5E0);
}
.story-image.is-placeholder.story-image-4 {
	background:
		radial-gradient(ellipse at 50% 30%, #DCEDC9, transparent 45%),
		linear-gradient(180deg, #3A7B91, #6BB5C8 50%, #6CA340);
}

.story-meta {
	display: flex;
	align-items: center;
	gap: var(--s-3);
	margin-bottom: var(--s-2);
	flex-wrap: wrap;
}
.story-pillar-tag {
	display: inline-block;
	padding: 4px 12px;
	background: var(--c-water);
	color: #fff;
	font-family: var(--f-rounded);
	font-weight: 500;
	font-size: 0.75rem;
	letter-spacing: 0.2em;
	text-indent: 0.2em;
	border-radius: 999px;
}
/* ピラー別タグ色 */
.story-pillar-tag[data-pillar="people"] { background: var(--c-water-mid); color: var(--c-sumi); }
.story-pillar-tag[data-pillar="town"]   { background: var(--c-water-deep); }
.story-pillar-tag[data-pillar="ride"]   { background: var(--c-leaf-deep); }
.story-pillar-tag[data-pillar="family"] { background: var(--c-leaf); }
.story-pillar-tag[data-pillar="tools"]  { background: var(--c-water); }
.story-pillar-tag[data-pillar="repair"] { background: var(--c-leaf-dark); }
.story-pillar-tag[data-pillar="rain"]   { background: var(--c-water-dark); }

.story-date {
	font-family: var(--f-hand);
	font-size: 0.95rem;
	color: var(--c-water-deep);
}

.story-title {
	font-family: var(--f-mincho);
	font-weight: 500;
	letter-spacing: 0.04em;
	line-height: 1.55;
	margin-bottom: var(--s-2);
}
.story-card-1 .story-title { font-size: 1.7rem; }
.story-card-2 .story-title,
.story-card-3 .story-title,
.story-card-4 .story-title { font-size: 1.05rem; }

.story-excerpt {
	font-size: 0.88rem;
	line-height: 1.9;
	color: var(--c-sumi-soft);
}
.story-card-2 .story-excerpt,
.story-card-3 .story-excerpt { display: none; }

@media (max-width: 900px) {
	.story-grid { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
	.story-card-1, .story-card-4 { grid-column: 1 / 3; grid-row: auto; }
	.story-card-4 { flex-direction: row; gap: var(--s-4); }
	.story-card-4 .story-image { width: 40%; aspect-ratio: 4 / 3; flex: 0 0 40%; }
}
@media (max-width: 600px) {
	.story-grid { grid-template-columns: 1fr; }
	.story-card-1, .story-card-2, .story-card-3, .story-card-4 { grid-column: auto; }
	.story-card-4 { flex-direction: column; }
	.story-card-4 .story-image { width: 100%; flex: none; aspect-ratio: 4 / 3; }
}

/* ==========================================================================
   8. MEDIA
   ========================================================================== */
.media {
	padding: var(--s-7) 0;
	background: var(--c-paper);
	border-top: 1px solid var(--c-mist);
}
.media-inner {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: var(--s-7);
	align-items: center;
}
.media-title {
	border-right: 1px solid var(--c-mist);
	padding-right: var(--s-7);
}
.media-title .eyebrow { display: block; margin-bottom: var(--s-2); }
.media-title h2 {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: 1.4rem;
	letter-spacing: 0.1em;
	white-space: nowrap;
}
.media-list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--s-5);
}
.media-item {
	border-left: 2px solid var(--c-leaf-deep);
	padding-left: var(--s-3);
}
.media-item-source {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: 1rem;
	letter-spacing: 0.1em;
	color: var(--c-navy);
	margin-bottom: 4px;
}
.media-item-date {
	font-family: var(--f-latin);
	font-style: italic;
	font-size: 0.78rem;
	color: var(--c-mossy);
	letter-spacing: 0.15em;
	margin-bottom: var(--s-2);
}
.media-item-excerpt {
	font-size: 0.85rem;
	line-height: 1.85;
	color: var(--c-sumi-soft);
}
@media (max-width: 800px) {
	.media-inner { grid-template-columns: 1fr; gap: var(--s-4); }
	.media-title {
		border-right: none;
		padding-right: 0;
		border-bottom: 1px solid var(--c-mist);
		padding-bottom: var(--s-3);
	}
	.media-list { grid-template-columns: 1fr; gap: var(--s-4); }
}

/* ==========================================================================
   9. SERVICES
   ========================================================================== */
.services {
	padding: var(--s-7) 0;
	background: var(--c-water-pale);
	position: relative;
}
.services::before, .services::after {
	content: '';
	position: absolute;
	left: 0; right: 0;
	height: 1px;
	background: var(--c-leaf-deep);
}
.services::before { top: 0; }
.services::after { bottom: 0; }

.services .eyebrow {
	display: block;
	text-align: center;
	margin-bottom: var(--s-2);
}
.services h2 {
	text-align: center;
	font-family: var(--f-rounded);
	font-weight: 700;
	font-size: clamp(1.8rem, 3vw, 2.4rem);
	letter-spacing: 0.06em;
	margin-bottom: var(--s-6);
	color: var(--c-sumi);
}

.service-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--s-4);
}
.service-card {
	background: var(--c-paper);
	padding: var(--s-5);
	border-radius: 8px;
	border: 2px solid var(--c-paper);
	transition: border-color 0.4s;
}
.service-card:hover { border-color: var(--c-leaf); }
.service-num {
	display: inline-block;
	font-family: var(--f-rounded);
	font-weight: 800;
	font-size: 0.85rem;
	letter-spacing: 0.18em;
	color: #fff;
	background: var(--c-leaf-deep);
	padding: 4px 12px;
	border-radius: 999px;
	margin-bottom: var(--s-3);
}
.service-title {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: 1.4rem;
	letter-spacing: 0.06em;
	margin-bottom: var(--s-3);
}
.service-desc {
	font-size: 0.9rem;
	line-height: 1.95;
	color: var(--c-sumi-soft);
	margin-bottom: var(--s-4);
}
.service-link {
	font-family: var(--f-rounded);
	font-weight: 500;
	font-size: 0.9rem;
	letter-spacing: 0.18em;
	color: var(--c-leaf-deep);
	border-bottom: 1px solid currentColor;
	padding-bottom: 2px;
}
@media (max-width: 800px) { .service-grid { grid-template-columns: 1fr; gap: var(--s-3); } }

/* ==========================================================================
   10. CUSTOMER OF THE MONTH
   ========================================================================== */
.customer {
	padding: var(--s-8) 0;
}
.customer-layout {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--s-7);
	align-items: center;
}
.polaroid {
	background: #fff;
	padding: 16px 16px 60px;
	box-shadow: 0 12px 32px rgba(38, 88, 115, 0.18);
	transform: rotate(-3deg);
	position: relative;
	max-width: 420px;
	justify-self: end;
}
.polaroid::after {
	content: '';
	position: absolute;
	top: -8px; left: 50%;
	transform: translateX(-50%);
	width: 80px; height: 24px;
	background: rgba(168, 213, 224, 0.45);
	border: 1px solid rgba(58, 123, 145, 0.3);
	border-radius: 2px;
}
.polaroid-image {
	width: 100%;
	aspect-ratio: 1 / 1;
	background:
		radial-gradient(circle at 60% 40%, #DCEDC9, transparent 50%),
		linear-gradient(160deg, #DCEDF1, #C8E2D5 50%, #8FC362);
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.polaroid-image img {
	width: 100%; height: 100%;
	object-fit: cover;
}
.polaroid-image.is-placeholder::after {
	content: 'お客様の写真';
	color: rgba(31, 49, 68, 0.4);
	font-family: var(--f-mincho);
	font-size: 0.85rem;
	letter-spacing: 0.15em;
}
.polaroid-caption {
	position: absolute;
	bottom: 16px; left: 0; right: 0;
	text-align: center;
	font-family: var(--f-hand);
	color: var(--c-water-deep);
	font-size: 1rem;
}

.customer-content .eyebrow { display: block; margin-bottom: var(--s-2); }
.customer-content h2 {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: clamp(1.6rem, 3vw, 2.2rem);
	letter-spacing: 0.06em;
	line-height: 1.4;
	margin-bottom: var(--s-4);
}
.customer-content .story-meta { margin-bottom: var(--s-4); }
.customer-content p {
	font-size: 0.95rem;
	line-height: 2.0;
	margin-bottom: var(--s-3);
	color: var(--c-sumi-soft);
}
@media (max-width: 800px) {
	.customer-layout { grid-template-columns: 1fr; gap: var(--s-5); }
	.polaroid { justify-self: center; }
}

/* ==========================================================================
   11. SERVICE AREA
   ========================================================================== */
.service-area {
	padding: var(--s-8) 0;
	background: var(--c-navy);
	color: #fff;
}
.area-grid {
	display: grid;
	grid-template-columns: 1fr 1.2fr;
	gap: var(--s-7);
	align-items: center;
}
.area-text .eyebrow {
	display: block;
	color: var(--c-gold-pale);
	margin-bottom: var(--s-2);
}
.area-text h2 {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: clamp(1.6rem, 3vw, 2.2rem);
	letter-spacing: 0.08em;
	margin-bottom: var(--s-4);
	line-height: 1.5;
	color: #fff;
}
.area-text p {
	font-size: 0.95rem;
	line-height: 2.0;
	color: rgba(255, 255, 255, 0.85);
	margin-bottom: var(--s-3);
}
.area-cities {
	margin-top: var(--s-4);
	display: flex;
	flex-wrap: wrap;
	gap: var(--s-2);
}
.area-city {
	display: inline-block;
	padding: 6px 14px;
	border: 1px solid var(--c-gold);
	color: var(--c-gold-pale);
	font-family: var(--f-mincho);
	font-size: 0.88rem;
	letter-spacing: 0.15em;
}
.area-map {
	width: 100%;
	aspect-ratio: 5 / 4;
	background: rgba(255, 255, 255, 0.05);
	border: 1px solid rgba(255, 255, 255, 0.18);
}
.area-map svg { width: 100%; height: 100%; }
@media (max-width: 800px) { .area-grid { grid-template-columns: 1fr; } }

/* ==========================================================================
   12. EVENTS
   ========================================================================== */
.events {
	padding: var(--s-7) 0;
	background: linear-gradient(180deg, var(--c-paper) 0%, var(--c-water-pale) 100%);
}
.events-header {
	text-align: center;
	margin-bottom: var(--s-6);
}
.events-header .eyebrow { display: block; margin-bottom: var(--s-2); }
.events-header h2 {
	font-family: var(--f-rounded);
	font-weight: 700;
	font-size: clamp(1.8rem, 3vw, 2.4rem);
	letter-spacing: 0.06em;
}
.event-list {
	max-width: 920px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	gap: var(--s-4);
}
.event-ticket {
	display: grid;
	grid-template-columns: 160px 1fr auto;
	gap: var(--s-5);
	background: var(--c-paper);
	border-radius: 8px;
	padding: var(--s-4) var(--s-5);
	position: relative;
	align-items: center;
	border: 1px dashed var(--c-mossy);
}
.event-ticket::before {
	content: '';
	position: absolute;
	left: 175px; top: 8px; bottom: 8px;
	width: 1px;
	background: repeating-linear-gradient(180deg,
		var(--c-mossy) 0, var(--c-mossy) 4px,
		transparent 4px, transparent 8px);
}
.event-date {
	font-family: var(--f-mincho);
	text-align: center;
}
.event-date-month {
	display: block;
	font-family: var(--f-rounded);
	font-weight: 700;
	font-size: 0.78rem;
	letter-spacing: 0.25em;
	color: var(--c-leaf-deep);
	margin-bottom: 4px;
}
.event-date-day {
	display: block;
	font-size: 2.6rem;
	font-weight: 500;
	line-height: 1;
}
.event-date-weekday {
	display: block;
	font-family: var(--f-hand);
	font-size: 0.95rem;
	color: var(--c-water-deep);
	margin-top: 4px;
}
.event-title {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: 1.15rem;
	letter-spacing: 0.06em;
	margin-bottom: 4px;
}
.event-meta {
	font-size: 0.82rem;
	color: var(--c-mossy);
	letter-spacing: 0.05em;
}
.event-cta {
	font-family: var(--f-rounded);
	font-weight: 500;
	font-size: 0.85rem;
	letter-spacing: 0.18em;
	color: #fff;
	background: var(--c-leaf-deep);
	padding: 10px 20px;
	border-radius: 999px;
	transition: background 0.3s;
}
.event-cta:hover { background: var(--c-leaf-dark); opacity: 1; }
@media (max-width: 700px) {
	.event-ticket { grid-template-columns: 100px 1fr; gap: var(--s-3); }
	.event-ticket::before { left: 115px; }
	.event-cta { grid-column: 1 / 3; justify-self: start; }
	.event-date-day { font-size: 1.8rem; }
}

/* ==========================================================================
   13. PAYMENT
   ========================================================================== */
.payment {
	padding: var(--s-5) 0;
	background: var(--c-water-pale);
	border-top: 1px solid var(--c-mist);
	border-bottom: 1px solid var(--c-mist);
}
.payment-inner {
	display: flex;
	align-items: center;
	gap: var(--s-5);
	flex-wrap: wrap;
	justify-content: center;
}
.payment-label {
	font-family: var(--f-mincho);
	font-size: 0.95rem;
	letter-spacing: 0.18em;
	color: var(--c-navy);
	border-right: 1px solid var(--c-mossy);
	padding-right: var(--s-5);
}
.payment-list {
	display: flex;
	gap: var(--s-3);
	flex-wrap: wrap;
}
.payment-item {
	background: var(--c-paper);
	padding: 6px 12px;
	font-family: var(--f-latin);
	font-style: italic;
	font-size: 0.78rem;
	letter-spacing: 0.1em;
	color: var(--c-sumi);
	border: 1px solid var(--c-mist);
}
@media (max-width: 700px) {
	.payment-label {
		border-right: none;
		padding-right: 0;
		padding-bottom: var(--s-2);
		border-bottom: 1px solid var(--c-mossy);
	}
}

/* ==========================================================================
   14. FOOTER(shop-info)
   ========================================================================== */
.shop-info {
	padding: var(--s-8) 0 var(--s-6);
	background: linear-gradient(180deg,
		#1F3144 0%,
		#265873 25%,
		#3A7B91 55%,
		#6CA340 85%,
		#8FC362 100%);
	color: #fff;
}
.shop-grid {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1fr;
	gap: var(--s-5);
	margin-bottom: var(--s-6);
}
.shop-brand h3 {
	font-family: var(--f-mincho);
	font-weight: 500;
	font-size: 1.6rem;
	letter-spacing: 0.18em;
	margin-bottom: var(--s-2);
}
.shop-brand p {
	font-size: 0.85rem;
	color: rgba(255, 255, 255, 0.85);
	line-height: 1.95;
}
.shop-since {
	font-family: var(--f-latin);
	font-style: italic;
	color: var(--c-gold-pale);
	letter-spacing: 0.15em;
	display: block;
	margin-top: var(--s-2);
}
.shop-block h4 {
	font-family: var(--f-rounded);
	font-weight: 700;
	font-size: 0.85rem;
	letter-spacing: 0.25em;
	color: var(--c-gold-pale);
	margin-bottom: var(--s-3);
}
.shop-block li {
	font-size: 0.88rem;
	line-height: 2.0;
	color: rgba(255, 255, 255, 0.92);
}
.shop-block a:hover { color: var(--c-gold-pale); opacity: 1; }
.shop-bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.25);
	padding-top: var(--s-4);
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 0.78rem;
	color: rgba(255, 255, 255, 0.7);
	flex-wrap: wrap;
	gap: var(--s-3);
}
.shop-sns { display: flex; gap: var(--s-4); }
.shop-sns a { color: rgba(255, 255, 255, 0.7); }
.shop-sns a:hover { color: var(--c-gold-pale); opacity: 1; }
@media (max-width: 800px) { .shop-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 500px) { .shop-grid { grid-template-columns: 1fr; } }

/* ==========================================================================
   Related Stories(single posts)
   ========================================================================== */
.related-stories {
	padding: var(--s-7) 0;
	background: var(--c-paper-cool);
	margin-top: var(--s-7);
}
.related-stories .stories-header {
	justify-content: center;
	text-align: center;
	margin-bottom: var(--s-5);
}
.related-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--s-5);
}
@media (max-width: 700px) {
	.related-grid { grid-template-columns: 1fr; gap: var(--s-4); }
}

/* ==========================================================================
   Long-form story tweaks
   ========================================================================== */
.is-longform .article-body {
	font-size: 1.08rem;
	line-height: 2.2;
}
.is-longform .article-body p:first-of-type::first-letter {
	font-family: var(--f-mincho);
	font-size: 3.4em;
	font-weight: 500;
	float: left;
	line-height: 0.95;
	margin: 0.08em 0.12em 0 0;
	color: var(--c-leaf-deep);
}
